@eqproject/eqp-dynamic-module 2.10.99 → 2.10.101
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/README.md +887 -876
- package/esm2020/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.mjs +25 -25
- package/esm2020/lib/components/private/action-button-creator/action-button-creator.component.mjs +3 -3
- package/esm2020/lib/components/private/add-form-field/add-form-field.component.mjs +14 -14
- package/esm2020/lib/components/private/add-formula-field/add-formula-field.component.mjs +7 -7
- package/esm2020/lib/components/private/dbg-templates/list-value-dbg-template/list-value-dbg-template.component.mjs +3 -3
- package/esm2020/lib/components/private/dbgetter/dbgetter.component.mjs +5 -5
- package/esm2020/lib/components/private/dynamic-module-field-extra-fix/dynamic-module-field-extra-fix.component.mjs +5 -5
- package/esm2020/lib/components/private/field-templates/action-button-field-template/action-button-field-template.component.mjs +5 -5
- package/esm2020/lib/components/private/field-templates/attachment-field-template/attachment-field-template.component.mjs +10 -10
- package/esm2020/lib/components/private/field-templates/date-field-template/date-field-template.component.mjs +2 -2
- package/esm2020/lib/components/private/field-templates/list-value-field-template/list-value-field-template.component.mjs +3 -3
- package/esm2020/lib/components/private/field-templates/numeric-field-template/numeric-field-template.component.mjs +16 -9
- package/esm2020/lib/components/private/field-templates/text-field-template/text-field-template.component.mjs +6 -6
- package/esm2020/lib/components/private/field-templates/textarea-field-template/textarea-field-template.component.mjs +6 -6
- package/esm2020/lib/components/private/form-records/add-form-record/add-form-record.component.mjs +5 -5
- package/esm2020/lib/components/private/form-records/hlist-form-record/hlist-form-record.component.mjs +5 -5
- package/esm2020/lib/components/private/form-records/list-form-record/list-form-record.component.mjs +10 -10
- package/esm2020/lib/components/private/form-records/list-view-form-record/list-view-form-record.component.mjs +10 -10
- package/esm2020/lib/components/private/form-statistics/filter-form-statistic/filter-form-statistic.component.mjs +32 -9
- package/esm2020/lib/components/private/form-statistics/filter-templates/boolean-filter-template/boolean-filter-template.component.mjs +7 -7
- package/esm2020/lib/components/private/form-statistics/filter-templates/date-filter-template/date-filter-template.component.mjs +8 -8
- package/esm2020/lib/components/private/form-statistics/filter-templates/image-selector-filter-template/image-selector-filter-template.component.mjs +3 -3
- package/esm2020/lib/components/private/form-statistics/filter-templates/list-value-filter-template/list-value-filter-template.component.mjs +6 -6
- package/esm2020/lib/components/private/form-statistics/filter-templates/numeric-filter-template/numeric-filter-template.component.mjs +17 -10
- package/esm2020/lib/components/private/form-statistics/filter-templates/text-filter-template/text-filter-template.component.mjs +7 -7
- package/esm2020/lib/components/private/form-statistics/filter-templates/textarea-filter-template/textarea-filter-template.component.mjs +7 -7
- package/esm2020/lib/components/private/graphs/graphs.component.mjs +3 -3
- package/esm2020/lib/components/private/tmw-image-drawer/tmw-image-drawer.component.mjs +5 -5
- package/esm2020/lib/components/private/tmw-image-marker/tmw-image-marker.component.mjs +6 -6
- package/esm2020/lib/components/private/trigger-creator/trigger-creator.component.mjs +8 -10
- package/esm2020/lib/components/private/trigger-creator/trigger-templates/boolean-trigger-template/boolean-trigger-template.component.mjs +3 -3
- package/esm2020/lib/components/private/trigger-creator/trigger-templates/date-trigger-template/date-trigger-template.component.mjs +4 -4
- package/esm2020/lib/components/private/trigger-creator/trigger-templates/list-value-trigger-template/list-value-trigger-template.component.mjs +3 -3
- package/esm2020/lib/components/private/trigger-creator/trigger-templates/numeric-trigger-template/numeric-trigger-template.component.mjs +13 -6
- package/esm2020/lib/components/private/trigger-creator/trigger-templates/text-trigger-template/text-trigger-template.component.mjs +7 -7
- package/esm2020/lib/components/private/trigger-creator/trigger-templates/textarea-trigger-template/textarea-trigger-template.component.mjs +7 -7
- package/esm2020/lib/eqp-dynamic-module.module.mjs +18 -40
- package/esm2020/lib/models/dynAttachment.mjs +1 -1
- package/esm2020/lib/utils/google-fonts-injector.mjs +1 -1
- package/fesm2015/eqproject-eqp-dynamic-module.mjs +227 -205
- package/fesm2015/eqproject-eqp-dynamic-module.mjs.map +1 -1
- package/fesm2020/eqproject-eqp-dynamic-module.mjs +226 -205
- package/fesm2020/eqproject-eqp-dynamic-module.mjs.map +1 -1
- package/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.d.ts +8 -8
- package/lib/components/private/add-form-field/add-form-field.component.d.ts +9 -9
- package/lib/components/private/field-templates/attachment-field-template/attachment-field-template.component.d.ts +2 -2
- package/lib/components/private/field-templates/date-field-template/date-field-template.component.d.ts +1 -1
- package/lib/components/private/field-templates/numeric-field-template/numeric-field-template.component.d.ts +2 -2
- package/lib/components/private/form-records/hlist-form-record/hlist-form-record.component.d.ts +2 -2
- package/lib/components/private/form-records/list-form-record/list-form-record.component.d.ts +2 -2
- package/lib/components/private/form-records/list-view-form-record/list-view-form-record.component.d.ts +2 -2
- package/lib/components/private/form-statistics/filter-form-statistic/filter-form-statistic.component.d.ts +4 -3
- package/lib/components/private/form-statistics/filter-templates/date-filter-template/date-filter-template.component.d.ts +1 -1
- package/lib/components/private/form-statistics/filter-templates/numeric-filter-template/numeric-filter-template.component.d.ts +2 -2
- package/lib/components/private/trigger-creator/trigger-creator.component.d.ts +0 -2
- package/lib/components/private/trigger-creator/trigger-templates/date-trigger-template/date-trigger-template.component.d.ts +1 -1
- package/lib/components/private/trigger-creator/trigger-templates/numeric-trigger-template/numeric-trigger-template.component.d.ts +2 -2
- package/lib/eqp-dynamic-module.module.d.ts +8 -25
- package/lib/models/dynAttachment.d.ts +2 -2
- package/package.json +6 -13
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// import { ThrowStmt } from '@angular/compiler';
|
|
2
2
|
import { Component, EventEmitter, Input, Output, ViewChild, } from "@angular/core";
|
|
3
3
|
import { UntypedFormControl, Validators, } from "@angular/forms";
|
|
4
|
-
import { CellAlignmentEnum, TypeColumn, } from "
|
|
4
|
+
import { CellAlignmentEnum, TypeColumn, } from "tmw-table";
|
|
5
5
|
import { BaseField, DataGetter, DataGetterTypeEnum, FieldInvisibilityEnum, FieldTypeEnum } from '../../../models/baseField.model';
|
|
6
6
|
import { Context } from "../../../models/context.model";
|
|
7
7
|
import { ParamTypeEnum, } from "../../../models/endPointConfiguration.model";
|
|
@@ -13,7 +13,7 @@ import { DynamicModuleCompileConfig } from "../../../models/dynamicModuleCompile
|
|
|
13
13
|
import { DynamicModuleConfiguratorConfig } from "../../../models/dynamicModuleConfiguratorConfig.model";
|
|
14
14
|
import { GlobalService } from "../../../services/global.service";
|
|
15
15
|
import { ActionFlagEnum } from '../../../models/trigger.model';
|
|
16
|
-
import { AttachmentType } from "
|
|
16
|
+
import { AttachmentType } from "tmw-attachments";
|
|
17
17
|
import { DynAttachment } from "../../../models/dynAttachment";
|
|
18
18
|
import { moveItemInArray } from '@angular/cdk/drag-drop';
|
|
19
19
|
import { injectGoogleFontsFromForm } from '../../../utils/google-fonts-injector';
|
|
@@ -34,14 +34,14 @@ import * as i12 from "@angular/material/divider";
|
|
|
34
34
|
import * as i13 from "@angular/material/card";
|
|
35
35
|
import * as i14 from "@angular/material/stepper";
|
|
36
36
|
import * as i15 from "@angular/material/expansion";
|
|
37
|
-
import * as i16 from "@angular/material/
|
|
38
|
-
import * as i17 from "@angular/material/progress-
|
|
39
|
-
import * as i18 from "@angular/material/
|
|
40
|
-
import * as i19 from "@angular/
|
|
41
|
-
import * as i20 from "
|
|
42
|
-
import * as i21 from "
|
|
43
|
-
import * as i22 from "
|
|
44
|
-
import * as i23 from "tmw-
|
|
37
|
+
import * as i16 from "@angular/material/progress-spinner";
|
|
38
|
+
import * as i17 from "@angular/material/progress-bar";
|
|
39
|
+
import * as i18 from "@angular/material/tooltip";
|
|
40
|
+
import * as i19 from "@angular/common";
|
|
41
|
+
import * as i20 from "tmw-table";
|
|
42
|
+
import * as i21 from "tmw-attachments";
|
|
43
|
+
import * as i22 from "tmw-select";
|
|
44
|
+
import * as i23 from "tmw-icons";
|
|
45
45
|
import * as i24 from "@angular/cdk/drag-drop";
|
|
46
46
|
import * as i25 from "../../private/add-form-field/add-form-field.component";
|
|
47
47
|
import * as i26 from "../../private/form-records/add-form-record/add-form-record.component";
|
|
@@ -1251,7 +1251,7 @@ export class EqpDynamicModuleConfiguratorComponent {
|
|
|
1251
1251
|
key: "action",
|
|
1252
1252
|
display: "",
|
|
1253
1253
|
type: TypeColumn.MenuAction,
|
|
1254
|
-
buttonMenuIcon: "
|
|
1254
|
+
buttonMenuIcon: "dots-vertical",
|
|
1255
1255
|
styles: { flex: "0 0 4rem" },
|
|
1256
1256
|
actions: [
|
|
1257
1257
|
{
|
|
@@ -1261,17 +1261,17 @@ export class EqpDynamicModuleConfiguratorComponent {
|
|
|
1261
1261
|
},
|
|
1262
1262
|
{
|
|
1263
1263
|
name: "Duplica sotto",
|
|
1264
|
-
icon: "
|
|
1264
|
+
icon: "copy",
|
|
1265
1265
|
fn: (element, index, col) => this.duplicateField(element, element.OrdinalPosition + 1),
|
|
1266
1266
|
},
|
|
1267
1267
|
{
|
|
1268
1268
|
name: "Duplica in fondo",
|
|
1269
|
-
icon: "
|
|
1269
|
+
icon: "copy",
|
|
1270
1270
|
fn: (element, index, col) => this.duplicateField(element),
|
|
1271
1271
|
},
|
|
1272
1272
|
{
|
|
1273
1273
|
name: "Elimina",
|
|
1274
|
-
icon: "
|
|
1274
|
+
icon: "trash",
|
|
1275
1275
|
fn: (element, index, col) => this.deleteElement(element, "Fields"),
|
|
1276
1276
|
},
|
|
1277
1277
|
// {
|
|
@@ -1402,7 +1402,7 @@ export class EqpDynamicModuleConfiguratorComponent {
|
|
|
1402
1402
|
key: "action",
|
|
1403
1403
|
display: "",
|
|
1404
1404
|
type: TypeColumn.MenuAction,
|
|
1405
|
-
buttonMenuIcon: "
|
|
1405
|
+
buttonMenuIcon: "dots-vertical",
|
|
1406
1406
|
styles: { flex: "0 0 6%" },
|
|
1407
1407
|
actions: [
|
|
1408
1408
|
{
|
|
@@ -1412,7 +1412,7 @@ export class EqpDynamicModuleConfiguratorComponent {
|
|
|
1412
1412
|
},
|
|
1413
1413
|
{
|
|
1414
1414
|
name: "Elimina",
|
|
1415
|
-
icon: "
|
|
1415
|
+
icon: "trash",
|
|
1416
1416
|
fn: (element, index, col) => this.deleteActionButton(element),
|
|
1417
1417
|
}
|
|
1418
1418
|
],
|
|
@@ -1449,7 +1449,7 @@ export class EqpDynamicModuleConfiguratorComponent {
|
|
|
1449
1449
|
key: "action",
|
|
1450
1450
|
display: "",
|
|
1451
1451
|
type: TypeColumn.MenuAction,
|
|
1452
|
-
buttonMenuIcon: "
|
|
1452
|
+
buttonMenuIcon: "dots-vertical",
|
|
1453
1453
|
styles: { flex: "0 0 6%" },
|
|
1454
1454
|
actions: [
|
|
1455
1455
|
{
|
|
@@ -1459,18 +1459,18 @@ export class EqpDynamicModuleConfiguratorComponent {
|
|
|
1459
1459
|
},
|
|
1460
1460
|
{
|
|
1461
1461
|
name: "Elimina",
|
|
1462
|
-
icon: "
|
|
1462
|
+
icon: "trash",
|
|
1463
1463
|
fn: (element, index, col) => this.deleteElement(element, "ActionsOnRecord"),
|
|
1464
1464
|
},
|
|
1465
1465
|
{
|
|
1466
1466
|
name: "Sposta su",
|
|
1467
|
-
icon: "
|
|
1467
|
+
icon: "arrow-up",
|
|
1468
1468
|
fn: (element, index, col) => this.moveElement(element, true, "ActionsOnRecord"),
|
|
1469
1469
|
disabled: (element) => this.form.ActionsOnRecord.indexOf(element) === 0,
|
|
1470
1470
|
},
|
|
1471
1471
|
{
|
|
1472
1472
|
name: "Sposta giù",
|
|
1473
|
-
icon: "
|
|
1473
|
+
icon: "arrow-down",
|
|
1474
1474
|
fn: (element, index, col) => this.moveElement(element, false, "ActionsOnRecord"),
|
|
1475
1475
|
disabled: (element) => this.form.ActionsOnRecord.indexOf(element) >=
|
|
1476
1476
|
this.form.ActionsOnRecord.length - 1,
|
|
@@ -1486,7 +1486,7 @@ export class EqpDynamicModuleConfiguratorComponent {
|
|
|
1486
1486
|
key: "action",
|
|
1487
1487
|
display: "",
|
|
1488
1488
|
type: TypeColumn.MenuAction,
|
|
1489
|
-
buttonMenuIcon: "
|
|
1489
|
+
buttonMenuIcon: "dots-vertical",
|
|
1490
1490
|
styles: { flex: "0 0 6%" },
|
|
1491
1491
|
actions: [
|
|
1492
1492
|
{
|
|
@@ -1496,7 +1496,7 @@ export class EqpDynamicModuleConfiguratorComponent {
|
|
|
1496
1496
|
},
|
|
1497
1497
|
{
|
|
1498
1498
|
name: "Elimina",
|
|
1499
|
-
icon: "
|
|
1499
|
+
icon: "trash",
|
|
1500
1500
|
fn: (element, index, col) => this.deleteTrigger(element),
|
|
1501
1501
|
}
|
|
1502
1502
|
],
|
|
@@ -2449,10 +2449,10 @@ EqpDynamicModuleConfiguratorComponent.HINT_ADJECTIVES = [
|
|
|
2449
2449
|
'rustico', 'moderno', 'vintage', 'armonioso', 'sorprendente',
|
|
2450
2450
|
];
|
|
2451
2451
|
EqpDynamicModuleConfiguratorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EqpDynamicModuleConfiguratorComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.MatDialog }, { token: i3.UtilityHelperService }, { token: i4.DomSanitizer }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
2452
|
-
EqpDynamicModuleConfiguratorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: EqpDynamicModuleConfiguratorComponent, selector: "eqp-dynamic-module-configurator", inputs: { debugMode: "debugMode", fieldsExtraConfig: "fieldsExtraConfig", configurations: "configurations", formID: "formID", viewMode: "viewMode", QueryEditorComponent: "QueryEditorComponent", triggers: "triggers", actionButtons: "actionButtons", contestualization: "contestualization", formulaObject: "formulaObject", configuratorTheme: "configuratorTheme", configuratorThemeCss: "configuratorThemeCss" }, outputs: { fireTrigger: "fireTrigger", saveFormEvent: "saveFormEvent", afterSaveFormEvent: "afterSaveFormEvent", out: "out" }, viewQueries: [{ propertyName: "dialogImport", first: true, predicate: ["dialogImport"], descendants: true, static: true }, { propertyName: "fieldsTable", first: true, predicate: ["fieldsTable"], descendants: true }, { propertyName: "dialogField", first: true, predicate: ["dialogField"], descendants: true, static: true }, { propertyName: "fieldSectionColumnTemplate", first: true, predicate: ["fieldSectionColumnTemplate"], descendants: true, static: true }, { propertyName: "dialogInnerForm", first: true, predicate: ["dialogInnerForm"], descendants: true, static: true }, { propertyName: "actionsOnRecordTable", first: true, predicate: ["actionsOnRecordTable"], descendants: true }, { propertyName: "dialogActionOnRecord", first: true, predicate: ["dialogActionOnRecord"], descendants: true, static: true }, { propertyName: "actionButtonsTable", first: true, predicate: ["actionButtonsTable"], descendants: true }, { propertyName: "dialogActionButton", first: true, predicate: ["dialogActionButton"], descendants: true, static: true }, { propertyName: "dialogTriggers", first: true, predicate: ["dialogTriggers"], descendants: true, static: true }, { propertyName: "triggersTable", first: true, predicate: ["triggersTable"], descendants: true }, { propertyName: "dialogAiEdit", first: true, predicate: ["dialogAiEdit"], descendants: true, static: true }, { propertyName: "dialogAiHistory", first: true, predicate: ["dialogAiHistory"], descendants: true, static: true }, { propertyName: "dialogContestualization", first: true, predicate: ["dialogContestualization"], descendants: true, static: true }, { propertyName: "dialogVeTooltip", first: true, predicate: ["dialogVeTooltip"], descendants: true, static: true }, { propertyName: "dialogVeReorder", first: true, predicate: ["dialogVeReorder"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<eqp-dynamic-module-spinner></eqp-dynamic-module-spinner>\n\n\n<div class=\"dynamic-module-configurator-header row title p-1\" *ngIf=\"innerFormManagment\">\n <div class=\"col-md-10\">\n <div class=\"header-title-standard\">Aggiunta form di dettaglio</div>\n </div>\n <div class=\"col-md-2 text-right\">\n <mat-icon class=\"close\" (click)=\"closeDialogInnerForm()\">close</mat-icon>\n </div>\n</div>\n\n<!--#region EXPORT MODULE -->\n<div class=\"dynamic-module-configurator-exporter\" *ngIf=\"loader && viewMode == 'Export'\" class=\"p-3\">\n\n <button mat-raised-button class=\"btn btn-primary\" (click)=\"export()\">Esporta</button>\n\n <!--<a\n class=\"btn btn-clear\"\n mat-raised-button\n color=\"primary\"\n title=\"Download JSON\"\n [href]=\"downloadJsonHref\"\n download=\"{{ downloadName }}.json\"\n >Export</a>-->\n\n</div>\n<!--#endregion EXPORT MODULE -->\n\n<mat-horizontal-stepper *ngIf=\"loader && formFormGroup && viewMode == 'addOrEdit'\" linear #stepper\n [ngClass]=\"{ outerForm: true, 'innerFormManagment-stepper': innerFormManagment }\"\n class=\"dynamic-module-configurator-stepper {{ 'last-edited-step-' + stepper.selectedIndex }}\">\n <!--#region DATI GENERALI DELLA FORM -->\n <mat-step class=\"dynamic-module-configurator-general-data\" [stepControl]=\"formFormGroup\">\n <form [formGroup]=\"formFormGroup\" (keydown.enter)=\"(false)\">\n <ng-template matStepLabel>\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\n Dati generali della form\n </ng-template>\n\n <div class=\"row justify-content-start addButtons\">\n <div class=\"col\">\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\n (click)=\"openAiEditDialog()\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\">\n <mat-icon>auto_fix_high</mat-icon>\n <span style=\"margin-left: 10px\">{{ isNewForm ? 'Crea con AI' : 'Modifica con AI' }}</span>\n </button>\n </div>\n </div>\n\n <!-- Ultimo prompt AI + accesso allo storico -->\n <div *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint && aiPromptHistory.length > 0\"\n class=\"ai-last-prompt-bar\">\n <div class=\"ai-last-prompt-icon-wrap\">\n <mat-icon>auto_fix_high</mat-icon>\n </div>\n <div class=\"ai-last-prompt-content\">\n <div class=\"ai-last-prompt-label\">Richiesta AI iniziale</div>\n <div class=\"ai-last-prompt-text\">{{ aiPromptHistory[0] }}</div>\n </div>\n <button mat-icon-button type=\"button\" class=\"ai-last-prompt-history-btn\" matTooltip=\"Vedi storico completo\"\n (click)=\"openAiHistoryDialog()\">\n <mat-icon>history</mat-icon>\n </button>\n </div>\n\n <div class=\"row firstRow\">\n <!--\n <div class=\"col-md-6\">\n <mat-label\n [matTooltip]=\"'Va inserito per essere utilizzato come riferimento nei template. non accetta caratteri speciali ne spazi.'\"\n >\n Codice Univoco\n </mat-label>\n <mat-form-field class=\"name\">\n <input\n matInput\n [matTooltip]=\"'Va inserito per essere utilizzato come riferimento nei template. non accetta caratteri speciali ne spazi.'\"\n formControlName=\"Code\"\n [(ngModel)]=\"form.Code\"\n required\n (focusout)=\"setCode(form.Code)\"\n disabled=\"true\"\n readonly=\"true\"\n />\n </mat-form-field>\n </div>\n <div class=\"col-md-6\"></div>\n -->\n <div class=\"col-md-4\">\n <mat-form-field class=\"name\" appearance=\"outline\">\n <mat-label>Nome</mat-label>\n <input placeholder=\"Nome\" matInput formControlName=\"Name\" [(ngModel)]=\"form.Name\" required\n (focusout)=\"setName(form.Name)\" />\n </mat-form-field>\n </div>\n\n <div class=\"col-md-4\">\n <!-- <mat-label>Tipo di visualizzazione</mat-label> -->\n <tmw-select class=\"nameSection\" [enumData]=\"FormScalarTypeEnum\" [(ngModelInput)]=\"form.FormScalarType\"\n [isRequired]=\"false\" required [showCancelButton]=\"false\" [formGroupInput]=\"formFormGroup\"\n [formControlNameInput]=\"'FormScalarType'\" (ngModelInputChange)=\"onChangeFormScalarType()\"\n placeholder=\"Tipo di visualizzazione\">\n </tmw-select>\n </div>\n\n <div class=\"col-md-6\">\n <mat-form-field class=\"name\" appearance=\"outline\">\n <mat-label>Descrizione</mat-label>\n <input matInput formControlName=\"Description\" [(ngModel)]=\"form.Description\"\n (focusout)=\"stringSanitizer(form.Name)\" placeholder=\"Descrizione\" />\n </mat-form-field>\n </div>\n </div>\n <div class=\"row inserted\" *ngIf=\"\n form.FormScalarType &&\n form.FormScalarType != FormScalarTypeEnum.Semplice\n \">\n <div class=\"col-md-4\">\n <mat-form-field class=\"nameSection\" appearance=\"outline\">\n <mat-label> Nome sezione (invio per confermare) </mat-label>\n\n <input matInput [(ngModel)]=\"formFieldGroupName\" [ngModelOptions]=\"{ standalone: true }\"\n (keyup)=\"onFormFieldGroupNameKeyUp($event)\" placeholder=\"Nome sezione (invio per confermare)\" />\n </mat-form-field>\n </div>\n <div class=\"col-md-8\">\n <span class=\"mr-3\">Sezioni inserite:</span>\n <ul class=\"section-list\">\n <li *ngFor=\"let groupName of form.FormFieldsGroups; let i = index\">\n <span class=\"sectionInsert\">\n <mat-icon class=\"mr-1\" (click)=\"onDeleteFormFieldGroupName(groupName.Name)\">close</mat-icon>\n <mat-icon class=\"mr-1 icon-black\" (click)=\"onEditFormFieldGroupName(groupName)\">edit</mat-icon>\n {{ groupName.Name }}\n </span>\n </li>\n </ul>\n </div>\n </div>\n\n <div class=\"mt-2 d-flex justify-content-end\">\n <!-- IMPORT -->\n <button *ngIf=\"!this.formID\" class=\"btn btn-clear button-next me-2\" mat-raised-button color=\"primary\"\n (click)=\"importModule()\">\n Importa\n </button>\n <!-- END IMPORT -->\n\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"formFormGroup.invalid\">\n Successivo\n </button>\n </div>\n </form>\n </mat-step>\n <!--#endregion DATI GENERALI DELLA FORM -->\n\n <!--#region AGGIUNTA DEI CAMPI DELLA FORM -->\n <mat-step class=\"dynamic-module-configurator-add-field\" [completed]=\"isFieldStepCompleted()\">\n <ng-template matStepLabel>\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\n <mat-label>Campi da inserire</mat-label>\n </ng-template>\n\n <div class=\"row justify-content-start addButtons\">\n <div class=\"col\">\n <button class=\"btn btn-primary me-2\" mat-raised-button color=\"primary\" type=\"button\"\n (click)=\"openFieldDialog()\">\n <mat-icon>add</mat-icon>\n <span style=\"margin-left: 10px\">Aggiungi campo</span>\n </button>\n\n <!-- <button\n class=\"btn btn-outlined me-2\"\n mat-raised-button\n color=\"primary\"\n type=\"button\"\n (click)=\"openInnerFormDialog()\"\n *ngIf=\"!innerFormManagment\"\n >\n <mat-icon>add</mat-icon>\n <span style=\"margin-left: 10px\">Aggiungi form di dettaglio</span>\n </button> -->\n\n <button class=\"btn btn-outlined btn-outlined-red me-2\" mat-raised-button color=\"red\" type=\"button\"\n (click)=\"deleteSelectedFields('Fields')\" *ngIf=\"showDeleteButton\">\n <mat-icon>clear</mat-icon>\n <span style=\"margin-left: 10px\">Elimina campi selezionati</span>\n </button>\n\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\n (click)=\"openAiEditDialog()\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\">\n <mat-icon>auto_fix_high</mat-icon>\n <span style=\"margin-left: 10px\">{{ isNewForm ? 'Crea con AI' : 'Modifica con AI' }}</span>\n </button>\n </div>\n </div>\n\n <eqp-table class=\"table\" #fieldsTable [createMatCard]=\"false\" [columns]=\"fieldsColumns\" [enableDragAndDrop]=\"false\"\n [enableDragColumn]=\"true\" [changeDragRowPosition]=\"true\" [isMultipleSelection]=\"true\" [data]=\"form.Fields\"\n [emptyTableMessage]=\"'Nessun campo inserito'\" (dragReleasedEvent)=\"onDragReleased($event)\"\n (dragEndedEvent)=\"onDragEnded($event)\" (checkboxInfo)=\"toggleDeleteButton($event)\" [searchText]=\"''\"\n [paginatorVisible]=\"false\">\n </eqp-table>\n\n <div class=\"mt-2 d-flex justify-content-end\">\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\n Precedente\n </button>\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"!isFieldStepCompleted()\"\n [ngClass]=\"{ disabled: formFormGroup.invalid }\" (click)=\"setFormStatus(false)\">\n Successivo\n </button>\n </div>\n </mat-step>\n <!--#endregion AGGIUNTA DEI CAMPI DELLA FORM -->\n\n <ng-template matStepperIcon=\"edit\" let-index=\"index\">\n <mat-label>{{ index + 1 }}</mat-label>\n </ng-template>\n\n <!--#region AGGIUNTA DELLE OPERAZIONI SUI RECORD -->\n <!--#<mat-step>\n <ng-template matStepLabel>\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\n Azioni aggiuntive sui record\n </ng-template>\n\n <div class=\"row justify-content-start addButtons\">\n <div class=\"col\">\n <button\n class=\"btn btn-primary\"\n mat-raised-button\n color=\"primary\"\n type=\"button\"\n (click)=\"openActionOnRecordDialog()\"\n >\n <mat-icon>add</mat-icon>\n <span style=\"margin-left: 10px\">Aggiungi azione</span>\n </button>\n </div>\n </div>\n <eqp-table\n class=\"table\"\n #actionsOnRecordTable\n [createMatCard]=\"false\"\n [columns]=\"actionsOnRecordColumns\"\n [data]=\"form.ActionsOnRecord\"\n [emptyTableMessage]=\"'Nessuna action inserita'\"\n [searchText]=\"''\"\n >\n </eqp-table>\n\n <div class=\"mt-2 d-flex justify-content-end buttonsNextDiv\">\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\n Precedente\n </button>\n <button\n class=\"button-next\"\n mat-raised-button\n color=\"primary\"\n matStepperNext\n (click)=\"setFormStatus(false)\"\n >\n Successivo\n </button>\n </div>\n </mat-step>-->\n <!--#endregion AGGIUNTA DELLE OPERAZIONI SUI RECORD -->\n\n\n\n <!--#region AGGIUNTA DEI BOTTONI AZIONE -->\n <mat-step>\n <ng-template matStepLabel>\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\n Bottoni Azione\n </ng-template>\n\n <div class=\"row justify-content-start addButtons\">\n <div class=\"col\">\n <button class=\"btn btn-primary\" mat-raised-button color=\"primary\" type=\"button\"\n (click)=\"openActionButtonDialog()\">\n <mat-icon>add</mat-icon>\n <span style=\"margin-left: 10px\">Aggiungi bottone azione</span>\n </button>\n </div>\n </div>\n <eqp-table class=\"table\" #actionButtonsTable [createMatCard]=\"false\" [columns]=\"actionButtonsColumns\"\n [data]=\"form.ActionButtons\" [emptyTableMessage]=\"'Nessun bottone azione inserito'\" [searchText]=\"''\"\n [enableDragAndDrop]=\"false\" [enableDragColumn]=\"true\" [changeDragRowPosition]=\"true\"\n (dragReleasedEvent)=\"onDragReleased($event)\" (dragEndedEvent)=\"onDragEnded($event)\">\n </eqp-table>\n\n <div class=\"mt-2 d-flex justify-content-end buttonsNextDiv\">\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\n Precedente\n </button>\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext (click)=\"setFormStatus(false)\">\n Successivo\n </button>\n </div>\n </mat-step>\n <!--#endregion AGGIUNTA DEI BOTTONI AZIONE -->\n\n\n\n <!--#region TRIGGERS-->\n <mat-step>\n <ng-template matStepLabel>\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\n Triggers\n </ng-template>\n\n <div class=\"row justify-content-start addButtons\">\n <div class=\"col\">\n <button class=\"btn btn-primary\" mat-raised-button color=\"primary\" type=\"button\" (click)=\"openTriggersDialog()\">\n <mat-icon>add</mat-icon>\n <span style=\"margin-left: 10px\">Aggiungi trigger</span>\n </button>\n </div>\n </div>\n\n <eqp-table class=\"table\" #triggersTable [createMatCard]=\"false\" [columns]=\"triggersColumns\" [data]=\"form.Triggers\"\n [emptyTableMessage]=\"'Nessuna action inserita'\" [searchText]=\"''\">\n </eqp-table>\n\n <div class=\"mt-2 d-flex justify-content-end\">\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\n Precedente\n </button>\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"!isFieldStepCompleted()\"\n [ngClass]=\"{ disabled: formFormGroup.invalid }\" (click)=\"setFormStatus(true)\">\n Successivo\n </button>\n </div>\n\n </mat-step>\n <!--#endregion TRIGGERS-->\n\n <!--#region VISUALIZZAZIONE FORM CREATA -->\n <mat-step class=\"dynamic-module-configurator-preview\">\n <ng-template matStepLabel>\n <div class=\"stepper-header-overlay\"\n (click)=\"setFormStatus( formFormGroup.valid && form.Fields && form.Fields.length > 0 )\"></div>\n Anteprima\n </ng-template>\n\n <div class=\"row align-items-center addButtons\">\n <div class=\"col-auto\">\n <button class=\"btn btn-outlined me-2\" [class.active]=\"showAllFields\" mat-raised-button color=\"primary\"\n type=\"button\" (click)=\"showAllFields = !showAllFields\">\n <mat-icon>{{ showAllFields ? 'visibility_off' : 'visibility' }}</mat-icon>\n <span style=\"margin-left: 10px\">Mostra anche i campi invisibili</span>\n </button>\n </div>\n <div class=\"col-auto\" *ngIf=\"contestualization && contestualization.length > 0\">\n <button class=\"btn btn-outlined me-2\" [class.active]=\"selectedContestualization != null\" mat-raised-button\n color=\"primary\" type=\"button\" (click)=\"openContestualizationDialog()\">\n <mat-icon>tune</mat-icon>\n <span style=\"margin-left: 10px\">Contestualizzazione</span>\n </button>\n </div>\n <div class=\"col-auto\">\n <button class=\"btn btn-outlined me-2\" [class.active]=\"showGraficaPanel\" mat-raised-button color=\"accent\"\n type=\"button\" (click)=\"showGraficaPanel = !showGraficaPanel\">\n <mat-icon>palette</mat-icon>\n <span style=\"margin-left: 10px\">Grafica</span>\n </button>\n </div>\n <div class=\"col-auto\">\n <button class=\"btn btn-outlined me-2\" [class.active]=\"visualEditorActive\" mat-raised-button color=\"accent\"\n type=\"button\" (click)=\"toggleVisualEditor()\">\n <mat-icon>grid_view</mat-icon>\n <span style=\"margin-left: 10px\">Visual Editor</span>\n </button>\n </div>\n <div class=\"col-auto\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormSpeechToFormEditEndPointEndPoint\">\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\n (click)=\"openAiEditDialog()\">\n <mat-icon>auto_fix_high</mat-icon>\n <span style=\"margin-left: 10px\">Modifica con AI</span>\n </button>\n </div>\n </div>\n\n <div *ngIf=\"veSwapField\" class=\"ve-swap-banner\">\n <mat-icon class=\"ve-swap-banner-icon\">swap_horiz</mat-icon>\n <span>Clicca sul campo con cui vuoi scambiare la posizione</span>\n <button mat-stroked-button color=\"warn\" type=\"button\" (click)=\"veCancelSwap()\" class=\"ve-swap-banner-cancel\">\n <mat-icon>close</mat-icon>\n Annulla\n </button>\n </div>\n\n <div *ngIf=\"showGraficaPanel\" class=\"mt-2\">\n <mat-accordion class=\"configurator-accordion\" [multi]=\"true\" displayMode=\"flat\">\n <mat-expansion-panel class=\"configurator-panel\" [expanded]=\"true\">\n <mat-expansion-panel-header>\n <mat-panel-title>Grafica</mat-panel-title>\n </mat-expansion-panel-header>\n <div class=\"form-grafica-ai-row\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToGraphicsEndPoint\">\n <button mat-stroked-button type=\"button\" class=\"btn-form-graphic-suggest\"\n [disabled]=\"formGraphicSuggestLoading\" (click)=\"toggleFormGraphicSuggestInput()\">\n <mat-spinner *ngIf=\"formGraphicSuggestLoading\" diameter=\"14\"\n style=\"display:inline-block;vertical-align:middle;margin-right:4px\"></mat-spinner>\n <mat-icon *ngIf=\"!formGraphicSuggestLoading\">palette</mat-icon>\n {{ formGraphicSuggestLoading ? 'Elaborazione...' : 'Suggerisci Grafica Completa' }}\n </button>\n <div class=\"form-hint-input-group\" *ngIf=\"showFormGraphicSuggestInput && !formGraphicSuggestLoading\">\n <select class=\"form-graphic-scope-select\" [(ngModel)]=\"formGraphicScope\"\n [ngModelOptions]=\"{standalone: true}\">\n <option value=\"all\">Tutto</option>\n <option value=\"main\">Principale</option>\n <option *ngFor=\"let opt of presentFieldTypeOptions\" [value]=\"opt.value\">{{ opt.label }}</option>\n </select>\n <button type=\"button\" class=\"btn-hint-randomize\" (click)=\"randomizeHint()\"\n matTooltip=\"Suggerimento casuale\">\n <mat-icon>tips_and_updates</mat-icon>\n </button>\n <button type=\"button\" class=\"btn-generate-bg\" [class.active]=\"generateBackground\"\n (click)=\"generateBackground = !generateBackground\"\n [matTooltip]=\"generateBackground ? 'Sfondo AI: attivo' : 'Genera anche sfondo AI'\">\n <mat-icon>image</mat-icon>\n </button>\n <input type=\"text\" class=\"form-graphic-hint-input\" [(ngModel)]=\"formGraphicSuggestHint\"\n [ngModelOptions]=\"{standalone: true}\"\n placeholder=\"es. toni di blu scuro, stile professionale, sfondo sfumato...\" />\n <button type=\"button\" class=\"btn-form-graphic-send\" (click)=\"onFormGraphicSuggest()\"\n matTooltip=\"Applica suggerimento grafico al form\">\n <mat-icon>auto_fix_high</mat-icon>\n </button>\n </div>\n </div>\n <hr class=\"grafica-ai-separator\" />\n <div class=\"row align-items-start grafica-row\">\n <div class=\"col-md-4\">\n <p class=\"grafica-field-label\">Immagine di sfondo</p>\n <eqp-attachments [attachmentsList]=\"bgAttachmentList\" [showMatCard]=\"false\" [allowOnlyImages]=\"true\"\n [isDisabled]=\"false\" [showInlinePreview]=\"true\" [multipleAttachment]=\"false\" [showHeader]=\"false\"\n [allowedTypes]=\"[AttachmentType.FILE]\" (localEditedAttachments)=\"onBgImageChange($event)\"\n (onDeleteAttachment)=\"onBgImageDelete()\">\n </eqp-attachments>\n </div>\n <div class=\"col-md-4\">\n <mat-form-field class=\"w-100\" appearance=\"outline\">\n <mat-label>CSS Principale</mat-label>\n <textarea matInput [(ngModel)]=\"form.ThemeCSS\" [ngModelOptions]=\"{ standalone: true }\"\n placeholder=\"es. max-width: 800px; padding: 16px; background: #f5f5f5;\" rows=\"5\"></textarea>\n </mat-form-field>\n </div>\n <div class=\"col-md-4\">\n <mat-form-field class=\"w-100\" appearance=\"outline\">\n <mat-label>CSS Titolo</mat-label>\n <textarea matInput [(ngModel)]=\"form.TitleCSS\"\n (ngModelChange)=\"previewForm && (previewForm.TitleCSS = $event)\"\n [ngModelOptions]=\"{ standalone: true }\"\n placeholder=\"es. font-size: 2rem; font-weight: 700; color: #fff;\" rows=\"5\"></textarea>\n </mat-form-field>\n </div>\n </div>\n </mat-expansion-panel>\n </mat-accordion>\n </div>\n\n <hr />\n\n <div class=\"dynamic-module-preview\" [style]=\"previewBgStyle\">\n <div [style]=\"previewThemeStyle\">\n <add-form-record *ngIf=\"previewForm && formCompleted\" [form]=\"previewForm\" [userID]=\"UserID\" [orgaID]=\"orgaID\"\n [formulaObject]=\"formulaObject\" [configurations]=\"viewConfig\" [showAllFields]=\"showAllFields\"\n [QueryEditorComponent]=\"QueryEditorComponent\" [endPointConfiguration]=\"endPointConfiguration\"\n [visualEditorMode]=\"visualEditorActive\" [veSwapFieldCode]=\"veSwapField?.Label ?? null\"\n (veFieldClick)=\"onVeFieldClick($event)\" (out)=\"onExternalComponentOut($event)\"\n (fireTrigger)=\"onFireTrigger($event)\" [inConfig]=\"true\">\n </add-form-record>\n </div>\n </div>\n\n <div class=\"mt-2 d-flex justify-content-end button-nextDiv\">\n <button class=\"mr-2 button-exit\" mat-raised-button matStepperPrevious (click)=\"setFormStatus(false)\">\n Precedente\n </button>\n <button class=\"button-next\" mat-raised-button color=\"primary\" (click)=\"saveForm()\">\n Salva form\n </button>\n </div>\n </mat-step>\n <!--#endregion VISUALIZZAZIONE FORM CREATA -->\n\n</mat-horizontal-stepper>\n\n<!-- DIALOG AGGIUNTA/MODIFICA CAMPO -->\n<ng-template #dialogField>\n <eqp-dynamic-module-add-form-field [form]=\"form\" [endPointConfiguration]=\"endPointConfiguration\"\n [field]=\"selectedField\" [formulaObject]=\"formulaObject\" [indexField]=\"indexSelectedField\"\n [availableFields]=\"form.Fields\" [contestualization]=\"contestualization\"\n [QueryEditorComponent]=\"QueryEditorComponent\" [fieldsExtraConfig]=\"fieldsExtraConfig\"\n [actionButtons]=\"actionButtons\" [aiFieldSuggestLoading]=\"aiFieldSuggestLoading\" [formFieldsGroups]=\"\n form.FormScalarType != FormScalarTypeEnum.Semplice\n ? form.FormFieldsGroups\n : null\n \" (openAiEditForFieldEvent)=\"onAiEditForField($event)\" (openAiGraphicSuggestEvent)=\"onAiGraphicSuggest($event)\"\n (saveFieldEvent)=\"onSaveField($event)\" (out)=\"onExternalComponentOut($event)\">\n </eqp-dynamic-module-add-form-field>\n</ng-template>\n\n<!-- TEMPLATE PER VISUALIZZARE LA COLONNA DELLA SEZIONE NELLA TABELLA DEI FIELDS -->\n<ng-template #fieldSectionColumnTemplate let-row=\"row\">\n <tmw-select [arrayData]=\"form.FormFieldsGroups\" [(ngModelInput)]=\"row.FieldGroup\" [arrayKeyProperty]=\"'Name'\"\n [arrayValueProperty]=\"'Name'\" placeholder=\"Sezione\" [isRequired]=\"true\" [includeFullObject]=\"false\">\n </tmw-select>\n</ng-template>\n\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE UNA ACTION SUI RECORD DELLA FORM -->\n<ng-template #dialogActionOnRecord>\n\n <div class=\"container-fluid third-modal\" style=\"max-height: 70vh !important; overflow-x: hidden; overflow-y: auto\">\n <form [formGroup]=\"actionOnRecordFormGroup\">\n <div class=\"row title\">\n <div class=\"header-title-standard\">\n {{\n indexSelectedAction != null && indexSelectedAction >= 0\n ? \"Modifica\"\n : \"Aggiungi\"\n }}\n azione sul record\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-12 col-md-4 mt-2\">\n <mat-label> Nome </mat-label>\n <mat-form-field>\n <input formControlName=\"Name\" required matInput [(ngModel)]=\"selectedAction.Name\" />\n </mat-form-field>\n </div>\n <div class=\"col-sm-12 col-md-4 mt-2\">\n <mat-label> Icona </mat-label>\n <mat-form-field>\n <input formControlName=\"Icon\" required matInput [(ngModel)]=\"selectedAction.Icon\" />\n </mat-form-field>\n </div>\n\n <div class=\"col-12 mt-2\">\n <mat-label>Azione (Javascript)</mat-label>\n <mat-form-field>\n <textarea matInput [rows]=\"3\" formControlName=\"Action\" required [(ngModel)]=\"selectedAction.Action\"\n [matAutocomplete]=\"actionAutocomplete\" (keyup)=\"setActionAutocompleteOptions($event)\"\n (focus)=\"setActionAutocompleteOptions(null)\" style=\"\n border: 1px solid lightgray !important;\n border-radius: 10px !important;\n \"></textarea>\n <mat-autocomplete #actionAutocomplete=\"matAutocomplete\">\n <mat-option *ngFor=\"let option of actionAutocompleteOptions\" [value]=\"option.value\">\n {{ option.label }}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n </div>\n </div>\n\n <div class=\"d-flex justify-content-end mt-2 mb-1\">\n <div class=\"buttonsForm\">\n <button class=\"btn mat-raised-button cancel\" (click)=\"closeDialogActionOnRecord()\" type=\"button\">\n Annulla\n </button>\n <button class=\"mr-2 save\" mat-raised-button color=\"primary\" (click)=\"saveActionOnRecord()\"\n [disabled]=\"actionOnRecordFormGroup.invalid\" type=\"button\">\n Salva\n </button>\n </div>\n </div>\n </form>\n </div>\n</ng-template>\n\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE UN BOTTONE AZIONE -->\n<ng-template #dialogActionButton>\n <action-button-creator [endPointConfiguration]=\"endPointConfiguration\" [form]=\"form\" [formulas]=\"actionButtons\"\n [actionButton]=\"selectedActionButton\" (onSaveRecord)=\"saveActionButtons($event)\"></action-button-creator>\n</ng-template>\n\n<!-- TEMPLATE PER CONFIGURARE LE FORM DI DETTAGLIO -->\n<ng-template #dialogInnerForm>\n <!-- [form]=\"selectedInnerForm\"\n [innerFormManagment]=\"true\"\n [innerFormRef]=\"dialogInnerFormRef\" -->\n <eqp-dynamic-module-configurator [configurations]=\"innerFormConfig\" (saveFormEvent)=\"onSaveOrExitInnerForm($event)\">\n </eqp-dynamic-module-configurator>\n</ng-template>\n\n<!-- TEMPLATE PER IMPORT -->\n<ng-template #dialogImport>\n <mat-card class=\"importDialog\">\n <mat-card-header class=\"p-2 justify-content-around\">\n <mat-card-title>\n Import\n </mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"p-2\">\n <input type=\"file\" class=\"input-file-btn pb-2\" (change)=\"onImport($event)\" />\n </mat-card-content>\n <mat-card-footer class=\"p-2 d-flex justify-content-end\">\n <button class=\"btn btn-clear button-back me-2\" mat-raised-button color=\"disabled\" (click)=\"closeImport()\">\n Annulla\n </button>\n </mat-card-footer>\n </mat-card>\n</ng-template>\n\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE I TRIGGERS -->\n<ng-template #dialogTriggers>\n <trigger-creator [endPointConfiguration]=\"endPointConfiguration\" [form]=\"form\" [formulas]=\"triggers\"\n [trigger]=\"selectedTrigger\" (onSaveRecord)=\"saveTrigger($event)\"></trigger-creator>\n</ng-template>\n\n<!-- DIALOG MODIFICA CON AI -->\n<ng-template #dialogAiEdit>\n <mat-card style=\"min-width: 480px\">\n <div class=\"ai-dialog-header\">\n <mat-icon>auto_fix_high</mat-icon>\n <span>{{ isNewForm ? 'Crea form con AI' : 'Modifica form con AI' }}</span>\n <button *ngIf=\"aiPromptHistory.length > 0\" mat-icon-button type=\"button\" class=\"ai-history-toggle-btn\"\n [class.active]=\"showAiPromptHistory\"\n [matTooltip]=\"showAiPromptHistory ? 'Nascondi storico richieste' : 'Mostra storico richieste'\"\n (click)=\"showAiPromptHistory = !showAiPromptHistory\">\n <mat-icon>{{ showAiPromptHistory ? 'history_toggle_off' : 'history' }}</mat-icon>\n </button>\n </div>\n\n <div class=\"ai-dialog-body-flex\">\n <mat-card-content class=\"p-3 ai-dialog-main-content\">\n <!-- Prompt textarea + microfono -->\n <div style=\"position: relative\">\n <mat-form-field appearance=\"outline\" style=\"width: 100%\">\n <mat-label>{{ isNewForm ? 'Descrivi il form da creare' : 'Descrivi la modifica da apportare' }}</mat-label>\n <textarea matInput [(ngModel)]=\"aiEditPrompt\" rows=\"5\" [disabled]=\"aiEditLoading\"\n [placeholder]=\"isNewForm ? 'Es: crea un form per la registrazione pazienti con campi nome, cognome, data di nascita e codice fiscale...' : 'Es: aggiungi un campo data di nascita, rimuovi il campo email, rendi obbligatorio il campo telefono...'\"></textarea>\n </mat-form-field>\n <mat-icon *ngIf=\"true\" SpeechToText [(bindedText)]=\"aiEditPrompt\"\n style=\"position: absolute; right: 12px; top: 12px; cursor: pointer; color: #666\"\n [matTooltip]=\"isNewForm ? 'Parla per descrivere il form' : 'Parla per dettare la modifica'\">keyboard_voice</mat-icon>\n </div>\n\n <!-- Allegati + genera sfondo -->\n <div class=\"mb-2 mt-1\" style=\"display:flex;align-items:center;gap:8px;flex-wrap:wrap\">\n <button mat-stroked-button type=\"button\" [disabled]=\"aiEditLoading\" (click)=\"aiEditFileInput.click()\">\n <mat-icon>attach_file</mat-icon>\n <span style=\"margin-left: 6px\">Aggiungi allegati (PDF o immagini)</span>\n </button>\n <input #aiEditFileInput type=\"file\" multiple accept=\"image/*,application/pdf\" style=\"display: none\"\n (change)=\"onAiEditFileChange($event)\" />\n <button *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\" type=\"button\" class=\"btn-generate-bg\"\n [class.active]=\"aiGenerateBackground\" [disabled]=\"aiEditLoading\"\n (click)=\"aiGenerateBackground = !aiGenerateBackground\"\n [matTooltip]=\"aiGenerateBackground ? 'Sfondo AI: attivo' : 'Genera anche sfondo AI'\">\n <mat-icon>image</mat-icon>\n </button>\n </div>\n <ul *ngIf=\"aiEditAttachments.length > 0\" style=\"list-style: none; padding: 0; margin: 0 0 12px\">\n <li *ngFor=\"let att of aiEditAttachments; let i = index\"\n style=\"display: flex; align-items: center; gap: 6px; margin-bottom: 4px\">\n <mat-icon style=\"font-size: 18px\">insert_drive_file</mat-icon>\n <span>{{ att.fileName }}</span>\n <mat-icon style=\"font-size: 18px; cursor: pointer; color: #999\"\n (click)=\"removeAiEditAttachment(i)\">close</mat-icon>\n </li>\n </ul>\n\n <!-- Autosave -->\n <mat-slide-toggle [(ngModel)]=\"aiEditAutosave\" [disabled]=\"aiEditLoading\" color=\"primary\">\n {{ isNewForm ? 'Salva automaticamente dopo la creazione' : 'Salva automaticamente dopo la modifica' }}\n </mat-slide-toggle>\n\n <!-- Conto alla rovescia mostrato mentre AI elabora -->\n <div *ngIf=\"aiEditLoading && aiEditEstimatedSec > 0\" class=\"mt-3 mb-1\">\n <!-- Fase normale: countdown in corso -->\n <ng-container *ngIf=\"!aiEditIsOvertime\">\n <mat-progress-bar mode=\"determinate\" [value]=\"(1 - aiEditCountdown / aiEditEstimatedSec) * 100\"\n color=\"accent\">\n </mat-progress-bar>\n <div style=\"text-align: center; margin-top: 4px\">\n <small class=\"text-muted\">\n Operazione in corso \u2014 tempo stimato rimanente: <b>{{ aiEditCountdown }}s</b>\n </small>\n </div>\n </ng-container>\n <!-- Fase overtime: il server impiega pi\u00F9 del previsto -->\n <ng-container *ngIf=\"aiEditIsOvertime\">\n <mat-progress-bar mode=\"indeterminate\" color=\"warn\"></mat-progress-bar>\n <div style=\"display: flex; align-items: center; justify-content: center; gap: 12px; margin-top: 6px\">\n <small class=\"text-muted\">\n Sembra che ci voglia pi\u00F9 del previsto \u2014 <b>+{{ -aiEditCountdown }}s</b>\n </small>\n <button mat-stroked-button type=\"button\" color=\"warn\" (click)=\"cancelAiEdit()\"\n style=\"height: 26px; line-height: 26px; font-size: 12px; padding: 0 10px; min-width: unset\">\n Annulla\n </button>\n </div>\n </ng-container>\n </div>\n\n <!-- Stima costo AI (aggiornata in tempo reale al variare del prompt, del modello citato,\n degli allegati e del numero di split ipotizzato) -->\n <div class=\"ai-cost-panel mt-3\" *ngIf=\"!aiEditLoading\">\n <div class=\"ai-cost-panel-icon\">\n <mat-icon>payments</mat-icon>\n </div>\n\n <div class=\"ai-cost-panel-body\">\n <div class=\"ai-cost-panel-header\">\n <span class=\"ai-cost-panel-title\">Costo stimato uso AI</span>\n <span class=\"ai-cost-panel-model\">{{ aiEditDetectedModelLabel }}</span>\n </div>\n\n <ng-container *ngIf=\"aiEditSplitCount <= 1; else aiCostSplitLines\">\n <div class=\"ai-cost-panel-line\">\n <span class=\"ai-cost-panel-line-label\">Primo uso</span>\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostFirstEur) }} \u20AC</span>\n </div>\n <div class=\"ai-cost-panel-line\">\n <span class=\"ai-cost-panel-line-label\">Usi successivi</span>\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostSubsequentEur) }}\n \u20AC</span>\n </div>\n </ng-container>\n <ng-template #aiCostSplitLines>\n <div class=\"ai-cost-panel-line\">\n <span class=\"ai-cost-panel-line-label\">{{ aiEditSplitCount }} parti parallele</span>\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostFirstEur) }} \u20AC</span>\n </div>\n <div class=\"ai-cost-panel-hint\">{{ aiEditSplitWarmUpApplies\n ? 'Il server scalda la cache prima dello split: risparmio su ' + aiEditSplitCount + ' chiamate'\n : 'Split troppo piccolo per la cache: nessun beneficio, prezzo pieno su ' + aiEditSplitCount + '\n chiamate' }}</div>\n </ng-template>\n </div>\n\n <div class=\"ai-cost-panel-split\"\n matTooltip=\"Numero di split ipotizzati per la stima (1 = nessuno split, altrimenti 3-12: il server non usa mai 2 split)\">\n <span class=\"ai-cost-panel-split-label\">Split</span>\n <div class=\"ai-cost-panel-split-stepper\">\n <button type=\"button\" class=\"ai-cost-split-btn\" [disabled]=\"aiEditSplitCount <= 1\"\n (click)=\"decrementAiEditSplitCount()\">\n <mat-icon>remove</mat-icon>\n </button>\n <input type=\"number\" class=\"ai-cost-split-input\" [(ngModel)]=\"aiEditSplitCount\" min=\"1\" max=\"12\" />\n <button type=\"button\" class=\"ai-cost-split-btn\" [disabled]=\"aiEditSplitCount >= 12\"\n (click)=\"incrementAiEditSplitCount()\">\n <mat-icon>add</mat-icon>\n </button>\n </div>\n </div>\n </div>\n </mat-card-content>\n\n <!-- Pannello storico richieste -->\n <div *ngIf=\"showAiPromptHistory && aiPromptHistory.length > 0\" class=\"ai-history-panel\">\n <div class=\"ai-history-panel-title\">\n <mat-icon style=\"font-size: 16px; width: 16px; height: 16px\">history</mat-icon>\n <span>Storico richieste</span>\n </div>\n <div class=\"ai-history-list\">\n <div *ngFor=\"let prompt of aiPromptHistory; let i = index\" class=\"ai-history-item\">\n <span class=\"ai-history-index\">{{ i + 1 }}</span>\n <span class=\"ai-history-text\">{{ prompt }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\n <button mat-raised-button type=\"button\" [disabled]=\"aiEditLoading\" (click)=\"closeAiEditDialog()\">\n Annulla\n </button>\n <button mat-raised-button color=\"primary\" type=\"button\" [disabled]=\"!aiEditPrompt?.trim() || aiEditLoading\"\n (click)=\"sendAiEdit()\">\n <mat-spinner *ngIf=\"aiEditLoading\" diameter=\"18\"\n style=\"display: inline-block; margin-right: 6px; vertical-align: middle\"></mat-spinner>\n <span>{{ aiEditLoading ? 'Elaborazione...' : (isNewForm ? 'Crea con AI' : 'Modifica con AI') }}</span>\n </button>\n </mat-card-footer>\n </mat-card>\n</ng-template>\n\n<!-- VISUAL EDITOR \u2014 Tooltip azioni campo -->\n<ng-template #dialogVeTooltip>\n <div class=\"ve-tooltip-panel\">\n <div class=\"ve-tooltip-header\">\n <mat-icon class=\"ve-tooltip-icon\">edit_square</mat-icon>\n <span class=\"ve-tooltip-title\">{{ veSelectedField?.Description }}</span>\n <button mat-icon-button (click)=\"dialogVeTooltipRef?.close()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <ng-container *ngIf=\"!veShowGraphicInput\">\n <button mat-menu-item (click)=\"veEditField()\">\n <mat-icon>settings</mat-icon>\n Modifica campo\n </button>\n <button mat-menu-item *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\" (click)=\"veAiEdit()\">\n <mat-icon>auto_fix_high</mat-icon>\n Modifica con IA\n </button>\n <button mat-menu-item *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\"\n (click)=\"veShowGraphicInput = true\">\n <mat-icon>palette</mat-icon>\n Suggerisci Grafica\n </button>\n <button mat-menu-item (click)=\"veOpenReorder()\">\n <mat-icon>drag_indicator</mat-icon>\n Riordina\n </button>\n <button mat-menu-item (click)=\"veStartSwap()\">\n <mat-icon>swap_horiz</mat-icon>\n Scambia\n </button>\n <mat-divider></mat-divider>\n <button mat-menu-item (click)=\"veDeleteField()\" style=\"color: #e53935;\">\n <mat-icon style=\"color: #e53935;\">delete</mat-icon>\n Elimina campo\n </button>\n </ng-container>\n\n <div class=\"ve-tooltip-graphic\" *ngIf=\"veShowGraphicInput\">\n <div class=\"ve-tooltip-graphic-header\">\n <button mat-icon-button (click)=\"veShowGraphicInput = false; veApplyToAllOfType = false\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n <span style=\"flex:1\">Grafica per \"{{ veSelectedField?.Label }}\"</span>\n <button type=\"button\" class=\"btn-hint-randomize\" (click)=\"randomizeVeHint()\" matTooltip=\"Suggerimento casuale\">\n <mat-icon>tips_and_updates</mat-icon>\n </button>\n </div>\n <mat-form-field appearance=\"outline\" class=\"w-100\">\n <mat-label>Suggerimento grafico</mat-label>\n <textarea matInput [(ngModel)]=\"veGraphicHint\" [ngModelOptions]=\"{standalone: true}\" rows=\"3\"\n placeholder=\"es. bordo blu, sfondo semi-trasparente, etichetta in grassetto...\"></textarea>\n </mat-form-field>\n <div class=\"ve-apply-all-row\">\n <mat-slide-toggle [(ngModel)]=\"veApplyToAllOfType\" [ngModelOptions]=\"{standalone: true}\" color=\"primary\">\n Applica a tutti i <strong>{{ veSelectedFieldTypeName }}</strong>\n </mat-slide-toggle>\n </div>\n <div class=\"ve-tooltip-graphic-actions\">\n <button mat-button (click)=\"veShowGraphicInput = false; veApplyToAllOfType = false\">Annulla</button>\n <button mat-raised-button color=\"primary\" (click)=\"veSendGraphic()\">\n <mat-icon>auto_fix_high</mat-icon>\n Invia\n </button>\n </div>\n </div>\n </div>\n</ng-template>\n\n<!-- VISUAL EDITOR \u2014 Riordina campi -->\n<ng-template #dialogVeReorder>\n <mat-card class=\"ve-reorder-card\">\n <div class=\"ve-reorder-header\">\n <mat-icon>drag_indicator</mat-icon>\n <span>Riordina campi</span>\n </div>\n <mat-card-content>\n <div cdkDropList (cdkDropListDropped)=\"onVeDragDropReorder($event)\" class=\"ve-reorder-list\">\n <div *ngFor=\"let field of veReorderFields\" cdkDrag class=\"ve-reorder-item\">\n <mat-icon cdkDragHandle class=\"ve-drag-handle\">drag_indicator</mat-icon>\n <span>{{ field.Description }}</span>\n <div class=\"ve-drag-placeholder\" *cdkDragPlaceholder></div>\n </div>\n </div>\n </mat-card-content>\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\n <button mat-button (click)=\"dialogVeReorderRef?.close()\">Annulla</button>\n <button mat-raised-button color=\"primary\" (click)=\"veApplyReorder()\">OK</button>\n </mat-card-footer>\n </mat-card>\n</ng-template>\n\n<!-- DIALOG CONTESTUALIZZAZIONE DBGETTER -->\n<ng-template #dialogContestualization>\n <mat-card style=\"min-width: 420px\">\n <mat-card-header class=\"p-2\">\n <mat-card-title>Contestualizzazione del DBGetter</mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"p-3\">\n <tmw-select [arrayData]=\"contestualization\" [(ngModelInput)]=\"selectedContestualization\"\n [arrayKeyProperty]=\"'entityTableName'\" [arrayValueProperty]=\"'entityTableName'\"\n (ngModelInputChange)=\"onContestualizationSelect()\" [placeholder]=\"'Contestualizzazione del DBGetter'\"\n [includeFullObject]=\"false\"></tmw-select>\n <div *ngIf=\"selectedContestualization != null\" class=\"mt-2\">\n <input matInput class=\"form-control\" [(ngModel)]=\"selectedContestualizationValue\"\n (change)=\"onContestualizationSelectValue()\">\n </div>\n </mat-card-content>\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\n <button class=\"btn btn-danger\"\n (click)=\"applyContestualization(null); closeContestualizationDialog()\">Rimuovi</button>\n <button class=\"btn btn-primary\"\n (click)=\"applyContestualization(contestualization); closeContestualizationDialog()\">Applica</button>\n </mat-card-footer>\n </mat-card>\n</ng-template>\n\n<!-- MODALE STORICO PROMPT AI -->\n<ng-template #dialogAiHistory>\n <div class=\"ai-history-dialog\">\n <div class=\"ai-dialog-header\">\n <mat-icon>history</mat-icon>\n <span>Storico richieste AI</span>\n <button mat-icon-button type=\"button\" class=\"ai-history-toggle-btn\" (click)=\"dialogAiHistoryRef?.close()\"\n matTooltip=\"Chiudi\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <div class=\"ai-history-dialog-body\">\n <div *ngFor=\"let prompt of aiPromptHistory; let i = index\" class=\"ai-history-dialog-item\"\n [class.ai-history-dialog-item--last]=\"i === aiPromptHistory.length - 1\">\n <div class=\"ai-history-dialog-badge\">{{ i + 1 }}</div>\n <div class=\"ai-history-dialog-prompt\">\n <span class=\"ai-history-dialog-prompt-label\" *ngIf=\"i === aiPromptHistory.length - 1\">Pi\u00F9 recente</span>\n <span class=\"ai-history-dialog-prompt-text\">{{ prompt }}</span>\n </div>\n </div>\n </div>\n <div class=\"ai-history-dialog-footer\">\n <button mat-raised-button color=\"primary\" type=\"button\" (click)=\"dialogAiHistoryRef?.close()\">Chiudi</button>\n </div>\n </div>\n</ng-template>\n\n<!-- AI DataGetter: caricamento silent del QueryEditor per popolare DataGetterValue via prompt -->\n<div *ngIf=\"aiDataGetterLoading\" style=\"display:none; position:absolute; width:0; height:0; overflow:hidden\"\n aria-hidden=\"true\">\n <ng-template [appDynamicLoader] [data]=\"QueryEditorComponent\" (out)=\"onAiDataGetterOut($event)\"></ng-template>\n</div>", styles: ["@charset \"UTF-8\";.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.mat-mdc-card{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f;--mdc-elevated-card-container-color: #fff}.mat-mdc-card-outlined{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f;--mdc-outlined-card-outline-color: #e0e0e0}.mat-mdc-card-subtitle{color:#0000008a}.mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color: #1e31eb}.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(30, 49, 235, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar .mdc-linear-progress__buffer-bar{background-color:#1e31eb40}.mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color: #ff5252}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(255, 82, 82, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-bar{background-color:#ff525240}.mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color: #c40000}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(196, 0, 0, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-bar{background-color:#c4000040}.mat-mdc-tooltip{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: white}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-floating-label{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input{color:#000000de}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:#0009}}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:#0009}}.mdc-text-field .mdc-text-field__input{caret-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field-character-counter,.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--leading{color:#0000008a}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:#0000008a}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--prefix{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--suffix{color:#0009}.mdc-text-field--filled .mdc-text-field__ripple:before,.mdc-text-field--filled .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, rgba(0, 0, 0, .87))}.mdc-text-field--filled:hover .mdc-text-field__ripple:before,.mdc-text-field--filled.mdc-ripple-surface--hover .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-hover-opacity, .04)}.mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple:before,.mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-focus-opacity, .12)}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#f5f5f5}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:#0000006b}.mdc-text-field--filled:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:#000000de}.mdc-text-field--filled .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:#00000061}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#000000de}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field--outlined .mdc-text-field__ripple:before,.mdc-text-field--outlined .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, transparent)}.mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#1e31ebde}.mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--disabled .mdc-text-field__input{color:#00000061}@media all{.mdc-text-field--disabled .mdc-text-field__input::-moz-placeholder{color:#00000061}.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:#00000061}}@media all{.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:#00000061}}.mdc-text-field--disabled .mdc-floating-label{color:#00000061}.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#00000061}.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#00000061}.mdc-text-field--disabled .mdc-text-field__icon--leading,.mdc-text-field--disabled .mdc-text-field__icon--trailing{color:#0000004d}.mdc-text-field--disabled .mdc-text-field__affix--prefix,.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:#00000061}.mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:#0000000f}.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:#0000000f}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input::-moz-placeholder{color:GrayText}.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:GrayText}.mdc-text-field--disabled .mdc-floating-label{color:GrayText}.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:GrayText}.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:GrayText}.mdc-text-field--disabled .mdc-text-field__icon--leading,.mdc-text-field--disabled .mdc-text-field__icon--trailing,.mdc-text-field--disabled .mdc-text-field__affix--prefix,.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:GrayText}.mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:GrayText}.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:GrayText}}.mdc-text-field--disabled.mdc-text-field--filled{background-color:#fafafa}.mat-mdc-form-field-error{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field-focus-overlay{background-color:#000000de}.mat-mdc-form-field:hover .mat-mdc-form-field-focus-overlay{opacity:.04}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:.12}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix:after{color:#0000008a}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-primary .mat-mdc-form-field-infix:after{color:#1e31ebde}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-accent .mat-mdc-form-field-infix:after{color:#ff5252de}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-warn .mat-mdc-form-field-infix:after{color:#c40000de}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix:after{color:#00000061}.mat-mdc-form-field.mat-accent .mdc-text-field__input{caret-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-accent:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-accent .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#ff5252de}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-warn .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#c40000de}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid transparent}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid transparent}.mat-mdc-form-field-infix{min-height:56px}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:28px}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -34.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:24px;padding-bottom:8px}.mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-select-value{color:#000000de}.mat-mdc-select-placeholder{color:#0009}.mat-mdc-select-disabled .mat-mdc-select-value{color:#00000061}.mat-mdc-select-arrow{color:#0000008a}.mat-mdc-form-field.mat-focused.mat-primary .mat-mdc-select-arrow{color:#1e31ebde}.mat-mdc-form-field.mat-focused.mat-accent .mat-mdc-select-arrow{color:#ff5252de}.mat-mdc-form-field.mat-focused.mat-warn .mat-mdc-select-arrow,.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow{color:#c40000de}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:#00000061}.mat-mdc-dialog-container{--mdc-dialog-container-color: white;--mdc-dialog-with-divider-divider-color: rgba(0, 0, 0, .12);--mdc-dialog-subhead-color: rgba(0, 0, 0, .87);--mdc-dialog-supporting-text-color: rgba(0, 0, 0, .6)}.mat-mdc-standard-chip{--mdc-chip-elevated-container-color: #e0e0e0;--mdc-chip-elevated-disabled-container-color: #e0e0e0;--mdc-chip-label-text-color: #212121;--mdc-chip-disabled-label-text-color: #212121;--mdc-chip-with-icon-icon-color: #212121;--mdc-chip-with-icon-disabled-icon-color: #212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #212121;--mdc-chip-with-trailing-icon-trailing-icon-color: #212121;--mdc-chip-with-icon-selected-icon-color: #212121}.mat-mdc-standard-chip.mat-primary.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-primary.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #1e31eb;--mdc-chip-elevated-disabled-container-color: #1e31eb;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.mat-mdc-standard-chip.mat-accent.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-accent.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #ff5252;--mdc-chip-elevated-disabled-container-color: #ff5252;--mdc-chip-label-text-color: rgba(0, 0, 0, .87);--mdc-chip-disabled-label-text-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-disabled-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-trailing-icon-trailing-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-selected-icon-color: rgba(0, 0, 0, .87)}.mat-mdc-standard-chip.mat-warn.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-warn.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #c40000;--mdc-chip-elevated-disabled-container-color: #c40000;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.mat-mdc-chip-focus-overlay{background:black}.mat-mdc-chip{height:32px}.mat-mdc-slide-toggle{--mdc-switch-disabled-selected-handle-color: #424242;--mdc-switch-disabled-unselected-handle-color: #424242;--mdc-switch-disabled-selected-track-color: #424242;--mdc-switch-disabled-unselected-track-color: #424242;--mdc-switch-unselected-focus-state-layer-color: #424242;--mdc-switch-unselected-pressed-state-layer-color: #424242;--mdc-switch-unselected-hover-state-layer-color: #424242;--mdc-switch-unselected-focus-track-color: #e0e0e0;--mdc-switch-unselected-hover-track-color: #e0e0e0;--mdc-switch-unselected-pressed-track-color: #e0e0e0;--mdc-switch-unselected-track-color: #e0e0e0;--mdc-switch-unselected-focus-handle-color: #212121;--mdc-switch-unselected-hover-handle-color: #212121;--mdc-switch-unselected-pressed-handle-color: #212121;--mdc-switch-handle-surface-color: var(--mdc-theme-surface, #fff);--mdc-switch-unselected-handle-color: #616161;--mdc-switch-selected-icon-color: #fff;--mdc-switch-disabled-selected-icon-color: #fff;--mdc-switch-disabled-unselected-icon-color: #fff;--mdc-switch-unselected-icon-color: #fff}.mat-mdc-slide-toggle .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:#00000061}.mat-mdc-slide-toggle.mat-primary{--mdc-switch-selected-focus-state-layer-color: #3949ab;--mdc-switch-selected-handle-color: #3949ab;--mdc-switch-selected-hover-state-layer-color: #3949ab;--mdc-switch-selected-pressed-state-layer-color: #3949ab;--mdc-switch-selected-focus-handle-color: #1a237e;--mdc-switch-selected-hover-handle-color: #1a237e;--mdc-switch-selected-pressed-handle-color: #1a237e;--mdc-switch-selected-focus-track-color: #7986cb;--mdc-switch-selected-hover-track-color: #7986cb;--mdc-switch-selected-pressed-track-color: #7986cb;--mdc-switch-selected-track-color: #7986cb}.mat-mdc-slide-toggle.mat-accent,.mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color: #e53935;--mdc-switch-selected-handle-color: #e53935;--mdc-switch-selected-hover-state-layer-color: #e53935;--mdc-switch-selected-pressed-state-layer-color: #e53935;--mdc-switch-selected-focus-handle-color: #b71c1c;--mdc-switch-selected-hover-handle-color: #b71c1c;--mdc-switch-selected-pressed-handle-color: #b71c1c;--mdc-switch-selected-focus-track-color: #e57373;--mdc-switch-selected-hover-track-color: #e57373;--mdc-switch-selected-pressed-track-color: #e57373;--mdc-switch-selected-track-color: #e57373}.mat-mdc-slide-toggle{--mdc-switch-state-layer-size: 48px}.mat-mdc-radio-button .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #1e31eb;--mdc-radio-selected-hover-icon-color: #1e31eb;--mdc-radio-selected-icon-color: #1e31eb;--mdc-radio-selected-pressed-icon-color: #1e31eb;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #1e31eb}.mat-mdc-radio-button.mat-primary .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff5252;--mdc-radio-selected-hover-icon-color: #ff5252;--mdc-radio-selected-icon-color: #ff5252;--mdc-radio-selected-pressed-icon-color: #ff5252;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #ff5252}.mat-mdc-radio-button.mat-accent .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #c40000;--mdc-radio-selected-hover-icon-color: #c40000;--mdc-radio-selected-icon-color: #c40000;--mdc-radio-selected-pressed-icon-color: #c40000;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #c40000}.mat-mdc-radio-button.mat-warn .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button .mdc-radio{padding:10px}.mat-mdc-radio-button .mdc-radio .mdc-radio__background:before{top:-10px;left:-10px;width:40px;height:40px}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control{top:0;right:0;left:0;width:40px;height:40px}.mat-mdc-slider{--mdc-slider-label-container-color: black;--mdc-slider-label-label-text-color: white;--mdc-slider-disabled-handle-color: #000;--mdc-slider-disabled-active-track-color: #000;--mdc-slider-disabled-inactive-track-color: #000;--mdc-slider-with-tick-marks-disabled-container-color: #000;--mat-mdc-slider-value-indicator-opacity: .6}.mat-mdc-slider.mat-primary{--mdc-slider-handle-color: #1e31eb;--mdc-slider-focus-handle-color: #1e31eb;--mdc-slider-hover-handle-color: #1e31eb;--mdc-slider-active-track-color: #1e31eb;--mdc-slider-inactive-track-color: #1e31eb;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #1e31eb;--mat-mdc-slider-ripple-color: #1e31eb;--mat-mdc-slider-hover-ripple-color: rgba(30, 49, 235, .05);--mat-mdc-slider-focus-ripple-color: rgba(30, 49, 235, .2)}.mat-mdc-slider.mat-accent{--mdc-slider-handle-color: #ff5252;--mdc-slider-focus-handle-color: #ff5252;--mdc-slider-hover-handle-color: #ff5252;--mdc-slider-active-track-color: #ff5252;--mdc-slider-inactive-track-color: #ff5252;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #ff5252;--mat-mdc-slider-ripple-color: #ff5252;--mat-mdc-slider-hover-ripple-color: rgba(255, 82, 82, .05);--mat-mdc-slider-focus-ripple-color: rgba(255, 82, 82, .2)}.mat-mdc-slider.mat-warn{--mdc-slider-handle-color: #c40000;--mdc-slider-focus-handle-color: #c40000;--mdc-slider-hover-handle-color: #c40000;--mdc-slider-active-track-color: #c40000;--mdc-slider-inactive-track-color: #c40000;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #c40000;--mat-mdc-slider-ripple-color: #c40000;--mat-mdc-slider-hover-ripple-color: rgba(196, 0, 0, .05);--mat-mdc-slider-focus-ripple-color: rgba(196, 0, 0, .2)}.mdc-menu-surface{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;background-color:var(--mdc-theme-surface, #fff);color:var(--mdc-theme-on-surface, #000)}.mdc-list-item__primary-text{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mdc-list-item__secondary-text{color:var(--mdc-theme-text-secondary-on-background, rgba(0, 0, 0, .54))}.mdc-list-item__overline-text{color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, .38))}.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-trailing-icon .mdc-list-item__end{background-color:transparent}.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-trailing-icon .mdc-list-item__end{color:var(--mdc-theme-text-icon-on-background, rgba(0, 0, 0, .38))}.mdc-list-item__end{color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, .38))}.mdc-list-item--disabled .mdc-list-item__start,.mdc-list-item--disabled .mdc-list-item__content,.mdc-list-item--disabled .mdc-list-item__end{opacity:.38}.mdc-list-item--disabled .mdc-list-item__primary-text,.mdc-list-item--disabled .mdc-list-item__secondary-text,.mdc-list-item--disabled .mdc-list-item__overline-text,.mdc-list-item--disabled.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--disabled.mdc-list-item--with-trailing-icon .mdc-list-item__end,.mdc-list-item--disabled.mdc-list-item--with-trailing-meta .mdc-list-item__end{color:var(--mdc-theme-on-surface, #000)}.mdc-list-item--selected .mdc-list-item__primary-text,.mdc-list-item--activated .mdc-list-item__primary-text,.mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:var(--mdc-theme-primary, #1e31eb)}.mdc-deprecated-list-group__subheader{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mdc-list-divider:after{border-bottom-color:#fff}.mdc-list-divider{background-color:#0000001f}.mat-mdc-menu-item[disabled],.mat-mdc-menu-item[disabled] .mat-mdc-menu-submenu-icon,.mat-mdc-menu-item[disabled] .mat-icon-no-color{color:var(--mdc-theme-text-disabled-on-background, rgba(0, 0, 0, .38))}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-submenu-icon{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-menu-item:hover:not([disabled]),.mat-mdc-menu-item.cdk-program-focused:not([disabled]),.mat-mdc-menu-item.cdk-keyboard-focused:not([disabled]),.mat-mdc-menu-item-highlighted:not([disabled]){background:rgba(0,0,0,.04)}.mat-mdc-list-base{--mdc-list-list-item-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-supporting-text-color: rgba(0, 0, 0, .54);--mdc-list-list-item-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-supporting-text-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-selected-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-disabled-label-text-color: black;--mdc-list-list-item-disabled-leading-icon-color: black;--mdc-list-list-item-disabled-trailing-icon-color: black;--mdc-list-list-item-hover-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-hover-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-focus-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-state-layer-color: black;--mdc-list-list-item-hover-state-layer-opacity: .04;--mdc-list-list-item-focus-state-layer-color: black;--mdc-list-list-item-focus-state-layer-opacity: .12}.mat-mdc-list-option .mdc-list-item__start,.mat-mdc-list-option .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #1e31eb;--mdc-checkbox-selected-hover-icon-color: #1e31eb;--mdc-checkbox-selected-icon-color: #1e31eb;--mdc-checkbox-selected-pressed-icon-color: #1e31eb;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option .mdc-list-item__start,.mat-mdc-list-option .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #1e31eb;--mdc-radio-selected-hover-icon-color: #1e31eb;--mdc-radio-selected-icon-color: #1e31eb;--mdc-radio-selected-pressed-icon-color: #1e31eb;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #1e31eb}.mat-mdc-list-option .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-option.mat-accent .mdc-list-item__start,.mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff5252;--mdc-checkbox-selected-hover-icon-color: #ff5252;--mdc-checkbox-selected-icon-color: #ff5252;--mdc-checkbox-selected-pressed-icon-color: #ff5252;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option.mat-accent .mdc-list-item__start,.mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff5252;--mdc-radio-selected-hover-icon-color: #ff5252;--mdc-radio-selected-icon-color: #ff5252;--mdc-radio-selected-pressed-icon-color: #ff5252;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #ff5252}.mat-mdc-list-option.mat-accent .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option.mat-accent .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-option.mat-warn .mdc-list-item__start,.mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #c40000;--mdc-checkbox-selected-hover-icon-color: #c40000;--mdc-checkbox-selected-icon-color: #c40000;--mdc-checkbox-selected-pressed-icon-color: #c40000;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option.mat-warn .mdc-list-item__start,.mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #c40000;--mdc-radio-selected-hover-icon-color: #c40000;--mdc-radio-selected-icon-color: #c40000;--mdc-radio-selected-pressed-icon-color: #c40000;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #c40000}.mat-mdc-list-option.mat-warn .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option.mat-warn .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:#1e31eb}.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end{opacity:1}.mat-mdc-list-base{--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}.mat-mdc-paginator{background:white;color:#000000de}.mat-mdc-paginator-icon{fill:#0000008a}.mat-mdc-paginator-decrement,.mat-mdc-paginator-increment{border-top:2px solid rgba(0,0,0,.54);border-right:2px solid rgba(0,0,0,.54)}.mat-mdc-paginator-first,.mat-mdc-paginator-last{border-top:2px solid rgba(0,0,0,.54)}.mat-mdc-icon-button[disabled] .mat-mdc-paginator-decrement,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-increment,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-first,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-last{border-color:#0000001f}.mat-mdc-icon-button[disabled] .mat-mdc-paginator-icon{fill:#0000001f}.mat-mdc-paginator .mat-mdc-form-field-infix{min-height:40px}.mat-mdc-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:20px}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -26.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label{display:none}.mat-mdc-paginator-container{min-height:56px}.mat-mdc-tab,.mat-mdc-tab-link{background-color:transparent}.mat-mdc-tab .mdc-tab__text-label,.mat-mdc-tab-link .mdc-tab__text-label{color:#0009}.mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__ripple:before,.mat-mdc-tab.mat-mdc-tab-disabled .mat-ripple-element,.mat-mdc-tab-link.mat-mdc-tab-disabled .mdc-tab__ripple:before,.mat-mdc-tab-link.mat-mdc-tab-disabled .mat-ripple-element{background-color:#00000061}.mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#1e31eb}.mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #1e31eb)}.mdc-tab__ripple:before,.mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-link .mat-ripple-element{background-color:#1e31eb}.mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#ff5252}.mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #ff5252)}.mat-mdc-tab-group.mat-accent .mdc-tab__ripple:before,.mat-mdc-tab-group.mat-accent .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mdc-tab__ripple:before,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link .mat-ripple-element{background-color:#ff5252}.mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#c40000}.mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #c40000)}.mat-mdc-tab-group.mat-warn .mdc-tab__ripple:before,.mat-mdc-tab-group.mat-warn .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mdc-tab__ripple:before,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link .mat-ripple-element{background-color:#c40000}.mat-mdc-tab-group.mat-background-primary,.mat-mdc-tab-nav-bar.mat-background-primary{--mat-mdc-tab-header-with-background-background-color: #1e31eb;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-group.mat-background-accent,.mat-mdc-tab-nav-bar.mat-background-accent{--mat-mdc-tab-header-with-background-background-color: #ff5252;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-group.mat-background-warn,.mat-mdc-tab-nav-bar.mat-background-warn{--mat-mdc-tab-header-with-background-background-color: #c40000;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-header-pagination-chevron{border-color:var(--mdc-theme-on-surface, #000)}.mat-mdc-tab-header .mdc-tab{height:48px}.mat-mdc-checkbox .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-checkbox .mat-ripple-element{background-color:#0000001a}.mat-mdc-checkbox .mdc-checkbox__ripple{background:#000}.mat-mdc-checkbox.mat-primary{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #1e31eb;--mdc-checkbox-selected-hover-icon-color: #1e31eb;--mdc-checkbox-selected-icon-color: #1e31eb;--mdc-checkbox-selected-pressed-icon-color: #1e31eb;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#1e31eb1a}.mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#1e31eb}.mat-mdc-checkbox.mat-accent{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff5252;--mdc-checkbox-selected-hover-icon-color: #ff5252;--mdc-checkbox-selected-icon-color: #ff5252;--mdc-checkbox-selected-pressed-icon-color: #ff5252;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#ff52521a}.mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#ff5252}.mat-mdc-checkbox.mat-warn{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #c40000;--mdc-checkbox-selected-hover-icon-color: #c40000;--mdc-checkbox-selected-icon-color: #c40000;--mdc-checkbox-selected-pressed-icon-color: #c40000;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#c400001a}.mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#c40000}.mat-mdc-checkbox-disabled label{color:#00000061}.mat-mdc-checkbox .mdc-checkbox{padding:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);margin:calc((var(--mdc-checkbox-touch-target-size, 40px) - 40px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__background{top:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);left:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control{top:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);right:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);left:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);width:var(--mdc-checkbox-touch-target-size, 40px);height:var(--mdc-checkbox-touch-target-size, 40px)}.mat-mdc-button.mat-unthemed{--mdc-text-button-label-text-color: #000}.mat-mdc-button.mat-primary{--mdc-text-button-label-text-color: #1e31eb}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: #ff5252}.mat-mdc-button.mat-warn{--mdc-text-button-label-text-color: #c40000}.mat-mdc-button[disabled][disabled]{--mdc-text-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-text-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-unelevated-button.mat-unthemed{--mdc-filled-button-container-color: #fff;--mdc-filled-button-label-text-color: #000}.mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color: #1e31eb;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color: #ff5252;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color: #c40000;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button[disabled][disabled]{--mdc-filled-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-button-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-raised-button.mat-unthemed{--mdc-protected-button-container-color: #fff;--mdc-protected-button-label-text-color: #000}.mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color: #1e31eb;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color: #ff5252;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color: #c40000;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button[disabled][disabled]{--mdc-protected-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-elevation: 0}.mat-mdc-outlined-button{--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-unthemed{--mdc-outlined-button-label-text-color: #000}.mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color: #1e31eb}.mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color: #ff5252}.mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color: #c40000}.mat-mdc-outlined-button[disabled][disabled]{--mdc-outlined-button-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-button-disabled-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button.mat-primary,.mat-mdc-outlined-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #1e31eb;--mat-mdc-button-ripple-color: rgba(30, 49, 235, .1)}.mat-mdc-button.mat-accent,.mat-mdc-outlined-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff5252;--mat-mdc-button-ripple-color: rgba(255, 82, 82, .1)}.mat-mdc-button.mat-warn,.mat-mdc-outlined-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #c40000;--mat-mdc-button-ripple-color: rgba(196, 0, 0, .1)}.mat-mdc-raised-button,.mat-mdc-unelevated-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button.mat-primary,.mat-mdc-unelevated-button.mat-primary,.mat-mdc-raised-button.mat-accent,.mat-mdc-unelevated-button.mat-accent,.mat-mdc-raised-button.mat-warn,.mat-mdc-unelevated-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-button.mat-mdc-button-base,.mat-mdc-raised-button.mat-mdc-button-base,.mat-mdc-unelevated-button.mat-mdc-button-base,.mat-mdc-outlined-button.mat-mdc-button-base{height:36px}.mat-mdc-icon-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #1e31eb;--mat-mdc-button-ripple-color: rgba(30, 49, 235, .1)}.mat-mdc-icon-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff5252;--mat-mdc-button-ripple-color: rgba(255, 82, 82, .1)}.mat-mdc-icon-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #c40000;--mat-mdc-button-ripple-color: rgba(196, 0, 0, .1)}.mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color: #1e31eb}.mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color: #ff5252}.mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color: #c40000}.mat-mdc-icon-button[disabled][disabled]{--mdc-icon-button-icon-color: rgba(0, 0, 0, .38);--mdc-icon-button-disabled-icon-color: rgba(0, 0, 0, .38)}.mat-mdc-icon-button.mat-mdc-button-base{width:48px;height:48px;padding:12px}.mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:4px}.mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%,-50%)}.mat-mdc-fab,.mat-mdc-mini-fab{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-fab:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary,.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent,.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-fab.mat-unthemed,.mat-mdc-mini-fab.mat-unthemed{--mdc-fab-container-color: #fff;--mdc-fab-icon-color: #000;--mat-mdc-fab-color: #000}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary{--mdc-fab-container-color: #1e31eb;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent{--mdc-fab-container-color: #ff5252;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mdc-fab-container-color: #c40000;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab[disabled][disabled],.mat-mdc-mini-fab[disabled][disabled]{--mdc-fab-container-color: rgba(0, 0, 0, .12);--mdc-fab-icon-color: rgba(0, 0, 0, .38);--mat-mdc-fab-color: rgba(0, 0, 0, .38)}.mat-mdc-snack-bar-container{--mat-mdc-snack-bar-button-color: #ff5252;--mdc-snackbar-container-color: #333333;--mdc-snackbar-supporting-text-color: rgba(255, 255, 255, .87)}.mdc-data-table{background-color:var(--mdc-theme-surface, #fff);border-color:#0000001f}.mdc-data-table__row{background-color:inherit}.mdc-data-table__header-cell{background-color:var(--mdc-theme-surface, #fff)}.mdc-data-table__row--selected{background-color:#1e31eb0a}.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__leading,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__notch,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__trailing{border-color:#0000001f}.mdc-data-table__cell,.mdc-data-table__header-cell{border-bottom-color:#0000001f}.mdc-data-table__pagination{border-top-color:#0000001f}.mdc-data-table__row:not(.mdc-data-table__row--selected):hover{background-color:#0000000a}.mdc-data-table__header-cell,.mdc-data-table__pagination-total,.mdc-data-table__pagination-rows-per-page-label,.mdc-data-table__cell{color:#000000de}.mat-mdc-table{background:white}.mat-mdc-table .mdc-data-table__row{height:52px}.mat-mdc-table .mdc-data-table__pagination{min-height:52px}.mat-mdc-table .mdc-data-table__header-row{height:56px}.mat-mdc-progress-spinner{--mdc-circular-progress-active-indicator-color: #1e31eb}.mat-mdc-progress-spinner.mat-accent{--mdc-circular-progress-active-indicator-color: #ff5252}.mat-mdc-progress-spinner.mat-warn{--mdc-circular-progress-active-indicator-color: #c40000}.mat-badge{position:relative}.mat-badge.mat-badge{overflow:visible}.mat-badge-hidden .mat-badge-content{display:none}.mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform .2s ease-in-out;transform:scale(.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none}.ng-animate-disabled .mat-badge-content,.mat-badge-content._mat-animation-noopable{transition:none}.mat-badge-content.mat-badge-active{transform:none}.mat-badge-small .mat-badge-content{width:16px;height:16px;line-height:16px}.mat-badge-small.mat-badge-above .mat-badge-content{top:-8px}.mat-badge-small.mat-badge-below .mat-badge-content{bottom:-8px}.mat-badge-small.mat-badge-before .mat-badge-content{left:-16px}[dir=rtl] .mat-badge-small.mat-badge-before .mat-badge-content{left:auto;right:-16px}.mat-badge-small.mat-badge-after .mat-badge-content{right:-16px}[dir=rtl] .mat-badge-small.mat-badge-after .mat-badge-content{right:auto;left:-16px}.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-8px}.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-8px}.mat-badge-medium .mat-badge-content{width:22px;height:22px;line-height:22px}.mat-badge-medium.mat-badge-above .mat-badge-content{top:-11px}.mat-badge-medium.mat-badge-below .mat-badge-content{bottom:-11px}.mat-badge-medium.mat-badge-before .mat-badge-content{left:-22px}[dir=rtl] .mat-badge-medium.mat-badge-before .mat-badge-content{left:auto;right:-22px}.mat-badge-medium.mat-badge-after .mat-badge-content{right:-22px}[dir=rtl] .mat-badge-medium.mat-badge-after .mat-badge-content{right:auto;left:-22px}.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-11px}.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-11px}.mat-badge-large .mat-badge-content{width:28px;height:28px;line-height:28px}.mat-badge-large.mat-badge-above .mat-badge-content{top:-14px}.mat-badge-large.mat-badge-below .mat-badge-content{bottom:-14px}.mat-badge-large.mat-badge-before .mat-badge-content{left:-28px}[dir=rtl] .mat-badge-large.mat-badge-before .mat-badge-content{left:auto;right:-28px}.mat-badge-large.mat-badge-after .mat-badge-content{right:-28px}[dir=rtl] .mat-badge-large.mat-badge-after .mat-badge-content{right:auto;left:-28px}.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-14px}.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-14px}.mat-badge-content{color:#fff;background:#1e31eb}.cdk-high-contrast-active .mat-badge-content{outline:solid 1px;border-radius:0}.mat-badge-accent .mat-badge-content{background:#ff5252;color:#000000de}.mat-badge-warn .mat-badge-content{color:#fff;background:#c40000}.mat-badge-disabled .mat-badge-content{background:#b9b9b9;color:#00000061}.mat-bottom-sheet-container{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f;background:white;color:#000000de}.mat-button-toggle-standalone:not([class*=mat-elevation-z]),.mat-button-toggle-group:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard:not([class*=mat-elevation-z]),.mat-button-toggle-group-appearance-standard:not([class*=mat-elevation-z]){box-shadow:none}.mat-button-toggle{color:#00000061}.mat-button-toggle .mat-button-toggle-focus-overlay{background-color:#0000001f}.mat-button-toggle-appearance-standard{color:#000000de;background:white}.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{background-color:#000}.mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:solid 1px #e0e0e0}[dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:solid 1px #e0e0e0}.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:none;border-top:solid 1px #e0e0e0}.mat-button-toggle-checked{background-color:#e0e0e0;color:#0000008a}.mat-button-toggle-checked.mat-button-toggle-appearance-standard{color:#000000de}.mat-button-toggle-disabled{color:#00000042;background-color:#eee}.mat-button-toggle-disabled.mat-button-toggle-appearance-standard{background:white}.mat-button-toggle-disabled.mat-button-toggle-checked{background-color:#bdbdbd}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border:solid 1px #e0e0e0}.mat-button-toggle-appearance-standard .mat-button-toggle-label-content{line-height:48px}.mat-calendar-arrow{fill:#0000008a}.mat-datepicker-toggle,.mat-datepicker-content .mat-calendar-next-button,.mat-datepicker-content .mat-calendar-previous-button{color:#0000008a}.mat-calendar-table-header-divider:after{background:rgba(0,0,0,.12)}.mat-calendar-table-header,.mat-calendar-body-label{color:#0000008a}.mat-calendar-body-cell-content,.mat-date-range-input-separator{color:#000000de;border-color:transparent}.mat-calendar-body-disabled>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){color:#00000061}.mat-form-field-disabled .mat-date-range-input-separator{color:#00000061}.mat-calendar-body-in-preview{color:#0000003d}.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#00000061}.mat-calendar-body-disabled>.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#0000002e}.mat-calendar-body-in-range:before{background:rgba(30,49,235,.2)}.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-calendar-body-comparison-bridge-start:before,[dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(30,49,235,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-calendar-body-comparison-bridge-end:before,[dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(30,49,235,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-calendar-body-selected{background-color:#1e31eb;color:#fff}.mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#1e31eb66}.mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#1e31eb4d}@media (hover: hover){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#1e31eb4d}}.mat-datepicker-content{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f;background-color:#fff;color:#000000de}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range:before{background:rgba(255,82,82,.2)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-start:before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(255,82,82,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-end:before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(255,82,82,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-accent .mat-calendar-body-selected{background-color:#ff5252;color:#000000de}.mat-datepicker-content.mat-accent .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#ff525266}.mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #000000de}.mat-datepicker-content.mat-accent .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#ff52524d}@media (hover: hover){.mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#ff52524d}}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range:before{background:rgba(196,0,0,.2)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-start:before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(196,0,0,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-end:before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(196,0,0,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-warn .mat-calendar-body-selected{background-color:#c40000;color:#fff}.mat-datepicker-content.mat-warn .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#c4000066}.mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#c400004d}@media (hover: hover){.mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#c400004d}}.mat-datepicker-content-touch{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-datepicker-toggle-active{color:#1e31eb}.mat-datepicker-toggle-active.mat-accent{color:#ff5252}.mat-datepicker-toggle-active.mat-warn{color:#c40000}.mat-date-range-input-inner[disabled]{color:#00000061}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{width:40px;height:40px;padding:8px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:0}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:40px;left:50%;width:40px;transform:translate(-50%,-50%)}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target{display:none}.mat-divider{border-top-color:#0000001f}.mat-divider-vertical{border-right-color:#0000001f}.mat-expansion-panel{background:white;color:#000000de}.mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-action-row{border-top-color:#0000001f}.mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled=true]),.mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled=true]),.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true]){background:rgba(0,0,0,.04)}@media (hover: none){.mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover{background:white}}.mat-expansion-panel-header-title{color:#000000de}.mat-expansion-panel-header-description,.mat-expansion-indicator:after{color:#0000008a}.mat-expansion-panel-header[aria-disabled=true]{color:#00000042}.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description{color:inherit}.mat-expansion-panel-header{height:48px}.mat-expansion-panel-header.mat-expanded{height:64px}.mat-icon.mat-primary{color:#1e31eb}.mat-icon.mat-accent{color:#ff5252}.mat-icon.mat-warn{color:#c40000}.mat-drawer-container{background-color:#fafafa;color:#000000de}.mat-drawer{background-color:#fff;color:#000000de}.mat-drawer.mat-drawer-push{background-color:#fff}.mat-drawer:not(.mat-drawer-side){box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-drawer-side{border-right:solid 1px rgba(0,0,0,.12)}.mat-drawer-side.mat-drawer-end,[dir=rtl] .mat-drawer-side{border-left:solid 1px rgba(0,0,0,.12);border-right:none}[dir=rtl] .mat-drawer-side.mat-drawer-end{border-left:none;border-right:solid 1px rgba(0,0,0,.12)}.mat-drawer-backdrop.mat-drawer-shown{background-color:#0009}.mat-step-header.cdk-keyboard-focused,.mat-step-header.cdk-program-focused,.mat-step-header:hover:not([aria-disabled]),.mat-step-header:hover[aria-disabled=false]{background-color:#0000000a}.mat-step-header:hover[aria-disabled=true]{cursor:default}@media (hover: none){.mat-step-header:hover{background:none}}.mat-step-header .mat-step-label,.mat-step-header .mat-step-optional{color:#0000008a}.mat-step-header .mat-step-icon{background-color:#0000008a;color:#fff}.mat-step-header .mat-step-icon-selected,.mat-step-header .mat-step-icon-state-done,.mat-step-header .mat-step-icon-state-edit{background-color:#1e31eb;color:#fff}.mat-step-header.mat-accent .mat-step-icon{color:#000000de}.mat-step-header.mat-accent .mat-step-icon-selected,.mat-step-header.mat-accent .mat-step-icon-state-done,.mat-step-header.mat-accent .mat-step-icon-state-edit{background-color:#ff5252;color:#000000de}.mat-step-header.mat-warn .mat-step-icon{color:#fff}.mat-step-header.mat-warn .mat-step-icon-selected,.mat-step-header.mat-warn .mat-step-icon-state-done,.mat-step-header.mat-warn .mat-step-icon-state-edit{background-color:#c40000;color:#fff}.mat-step-header .mat-step-icon-state-error{background-color:transparent;color:#c40000}.mat-step-header .mat-step-label.mat-step-label-active{color:#000000de}.mat-step-header .mat-step-label.mat-step-label-error{color:#c40000}.mat-stepper-horizontal,.mat-stepper-vertical{background-color:#fff}.mat-stepper-vertical-line:before{border-left-color:#0000001f}.mat-horizontal-stepper-header:before,.mat-horizontal-stepper-header:after,.mat-stepper-horizontal-line{border-top-color:#0000001f}.mat-horizontal-stepper-header{height:72px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header,.mat-vertical-stepper-header{padding:24px}.mat-stepper-vertical-line:before{top:-16px;bottom:-16px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:after,.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:before{top:36px}.mat-stepper-label-position-bottom .mat-stepper-horizontal-line{top:36px}.mat-sort-header-arrow{color:#757575}.mat-toolbar{background:whitesmoke;color:#000000de}.mat-toolbar.mat-primary{background:#1e31eb;color:#fff}.mat-toolbar.mat-accent{background:#ff5252;color:#000000de}.mat-toolbar.mat-warn{background:#c40000;color:#fff}.mat-toolbar .mat-form-field-underline,.mat-toolbar .mat-form-field-ripple,.mat-toolbar .mat-focused .mat-form-field-ripple{background-color:currentColor}.mat-toolbar .mat-form-field-label,.mat-toolbar .mat-focused .mat-form-field-label,.mat-toolbar .mat-select-value,.mat-toolbar .mat-select-arrow,.mat-toolbar .mat-form-field.mat-focused .mat-select-arrow{color:inherit}.mat-toolbar .mat-input-element{caret-color:currentColor}.mat-toolbar-multiple-rows{min-height:64px}.mat-toolbar-row,.mat-toolbar-single-row{height:64px}@media (max-width: 599px){.mat-toolbar-multiple-rows{min-height:56px}.mat-toolbar-row,.mat-toolbar-single-row{height:56px}}.mat-tree{background:white}.mat-tree-node,.mat-nested-tree-node{color:#000000de}.mat-tree-node{min-height:48px}.mat-ripple-element{background-color:#0000001a}.mat-mdc-option{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-option:hover:not(.mdc-list-item--disabled),.mat-mdc-option:focus:not(.mdc-list-item--disabled),.mat-mdc-option.mat-mdc-option-active,.mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple):not(.mdc-list-item--disabled){background:rgba(0,0,0,.04)}.mat-primary .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-primary, #1e31eb)}.mat-accent .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-secondary, #ff5252)}.mat-warn .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-error, #c40000)}.mat-mdc-optgroup-label{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-pseudo-checkbox-full{color:#0000008a}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{color:#b0b0b0}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#1e31eb}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#1e31eb}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff5252}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff5252}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff5252}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff5252}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#c40000}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#c40000}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#b0b0b0}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#b0b0b0}.mat-app-background{background-color:#fafafa;color:#000000de}.mat-elevation-z0,.mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.mat-elevation-z1,.mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.mat-elevation-z2,.mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-elevation-z3,.mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-elevation-z4,.mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.mat-elevation-z5,.mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.mat-elevation-z6,.mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.mat-elevation-z7,.mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.mat-elevation-z8,.mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mat-elevation-z9,.mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.mat-elevation-z10,.mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.mat-elevation-z11,.mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.mat-elevation-z12,.mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.mat-elevation-z13,.mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.mat-elevation-z14,.mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.mat-elevation-z15,.mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.mat-elevation-z16,.mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-elevation-z17,.mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.mat-elevation-z18,.mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.mat-elevation-z19,.mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.mat-elevation-z20,.mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.mat-elevation-z21,.mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.mat-elevation-z22,.mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.mat-elevation-z23,.mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.mat-elevation-z24,.mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-theme-loaded-marker{display:none}:host{--conf-gradient: linear-gradient(to right, #1E31EB, #693DDA);--conf-bg-page: #F9F9FA;--conf-radius: 10px;--conf-modal-radius: 10px;--conf-accent: #693DDA;--conf-accent-rgb: 105, 61, 218;--conf-primary: #1E31EB;--conf-primary-rgb: 30, 49, 235;--conf-step-selected: #643cda;--conf-step-edit: #3034e7;--conf-table-header-bg: #EBEBEB;--conf-search-bg: #EBEBEB;--conf-table-bg: #ffffff;--conf-card-bg: #ffffff;--conf-font-family: inherit;--conf-stepper-header-bg: var(--conf-bg-page);--conf-stepper-content-bg: var(--conf-bg-page);--conf-step-icon-edit-bg: var(--conf-step-edit);--conf-hint-btn-bg: #2563eb;--conf-hint-btn-hover-bg: #1d4ed8;--conf-btn-color: #ffffff;--conf-step-icon-bg: linear-gradient(.33turn, #BFBFBF, #606060);--conf-step-icon-color: #ffffff;--conf-step-connector-bg: #ebebeb;--conf-addbtn-bg: #ebebeb;--conf-input-bg: #ffffff;--conf-input-color: rgba(0, 0, 0, .87);--conf-tmwselect-bg: #ffffff;--conf-tmwselect-color: rgba(0, 0, 0, .87);font-family:var(--conf-font-family)}.dynamic-module-preview{--conf-gradient: linear-gradient(to right, #1E31EB, #693DDA);--conf-bg-page: #F9F9FA;--conf-radius: 10px;--conf-modal-radius: 10px;--conf-accent: #693DDA;--conf-accent-rgb: 105, 61, 218;--conf-primary: #1E31EB;--conf-primary-rgb: 30, 49, 235;--conf-step-selected: #643cda;--conf-step-edit: #3034e7;--conf-table-header-bg: #EBEBEB;--conf-search-bg: #EBEBEB;--conf-table-bg: #ffffff;--conf-card-bg: #ffffff;--conf-font-family: inherit;--conf-stepper-header-bg: var(--conf-bg-page);--conf-stepper-content-bg: var(--conf-bg-page);--conf-step-icon-edit-bg: var(--conf-step-edit);--conf-hint-btn-bg: #2563eb;--conf-hint-btn-hover-bg: #1d4ed8;--conf-btn-color: #ffffff;--conf-step-icon-bg: linear-gradient(.33turn, #BFBFBF, #606060);--conf-step-icon-color: #ffffff;--conf-step-connector-bg: #ebebeb;--conf-addbtn-bg: #ebebeb;--conf-input-bg: #ffffff;--conf-input-color: rgba(0, 0, 0, .87);--conf-tmwselect-bg: #ffffff;--conf-tmwselect-color: rgba(0, 0, 0, .87);--tmw-select-add-modal-bg: var(--conf-tmwselect-bg);--tmw-select-arrow-bg: initial;--tmw-select-arrow-border-radius: initial;--tmw-select-arrow-color: initial;--tmw-select-arrow-height: initial;--tmw-select-bg: var(--conf-tmwselect-bg);--tmw-select-border-color: initial;--tmw-select-border-color-hover: initial;--tmw-select-border-radius: initial;--tmw-select-border-width: initial;--tmw-select-clear-border-radius: initial;--tmw-select-clear-color: initial;--tmw-select-clear-color-bg: initial;--tmw-select-clear-height: initial;--tmw-select-disabled-bg: initial;--tmw-select-disabled-border-color: initial;--tmw-select-disabled-color: initial;--tmw-select-focus-border-color: initial;--tmw-select-focus-label-color: initial;--tmw-select-font-family: initial;--tmw-select-font-size-label: initial;--tmw-select-font-size-value: initial;--tmw-select-height: initial;--tmw-select-label-bg: var(--conf-tmwselect-bg);--tmw-select-label-color: var(--conf-tmwselect-color);--tmw-select-option-bg: var(--conf-tmwselect-bg);--tmw-select-option-check-color: initial;--tmw-select-option-color: var(--conf-tmwselect-color);--tmw-select-option-highlighted-bg: initial;--tmw-select-option-hover-bg: initial;--tmw-select-option-hover-color: initial;--tmw-select-option-selected-bg: initial;--tmw-select-option-selected-color: initial;--tmw-select-padding-x: initial;--tmw-select-panel-bg: var(--conf-tmwselect-bg);--tmw-select-panel-border-radius: initial;--tmw-select-panel-max-height: initial;--tmw-select-panel-shadow: initial;--tmw-select-panel-z-index: initial;--tmw-select-required-color: initial;--tmw-select-search-bg: var(--conf-tmwselect-bg);--tmw-select-search-color: var(--conf-tmwselect-color);--tmw-select-toolbar-bg: initial;--tmw-select-toolbar-border-color: initial;--tmw-select-toolbar-border-radius: initial;--tmw-select-toolbar-border-width: initial;--tmw-select-toolbar-btn-active-bg: initial;--tmw-select-toolbar-btn-bg: initial;--tmw-select-toolbar-btn-border-color: initial;--tmw-select-toolbar-btn-border-radius: initial;--tmw-select-toolbar-btn-border-width: initial;--tmw-select-toolbar-btn-color: initial;--tmw-select-toolbar-btn-disabled-opacity: initial;--tmw-select-toolbar-btn-hover-bg: initial;--tmw-select-toolbar-btn-margin-right: initial;--tmw-select-toolbar-btn-size: initial;--tmw-select-toolbar-gap: initial;--tmw-select-toolbar-icon-size: initial;--tmw-select-value-color: var(--conf-tmwselect-color);font-family:initial}.importDialog .mat-card-header-text{font-size:1.3em;font-weight:700}.importDialog .input-file-btn{color:#6f79fb}.importDialog .input-file-btn::-webkit-file-upload-button,.importDialog .input-file-btn::file-selector-button{padding:7px 40px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-radius);border:1px solid #1E31EB}.importDialog .input-file-btn:before{content:\"Select some files\";display:inline-block;background:linear-gradient(top,#f9f9f9,#e3e3e3);border:1px solid #999;border-radius:3px;padding:5px 8px;outline:none;white-space:nowrap;-webkit-user-select:none;cursor:pointer;text-shadow:1px 1px #fff;font-weight:700;font-size:10pt}.importDialog .input-file-btn:hover:before,.importDialog .input-file-btn::file-selector-button:hover:before{border-color:#000}.importDialog .input-file-btn:active:before,.importDialog .input-file-btn::file-selector-button:active:before{background:-webkit-linear-gradient(top,#e3e3e3,#f9f9f9)}.importDialog .button-back{border-radius:var(--conf-radius);padding:7px 40px;font-size:14px;background:#DBDBDC;color:#000}.configurator-accordion ::ng-deep .configurator-panel{box-shadow:none!important;background:transparent!important;border-radius:0!important}.configurator-accordion ::ng-deep .configurator-panel.mat-expanded,.configurator-accordion ::ng-deep .configurator-panel{margin:0!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header{height:36px!important;min-height:36px!important;padding:0 12px;margin-top:14px;border-radius:6px!important;border-left:3px solid var(--conf-accent);background:linear-gradient(to right,rgba(var(--conf-primary-rgb),.06),rgba(var(--conf-accent-rgb),.02))!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header:hover,.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header:focus{background:linear-gradient(to right,rgba(var(--conf-primary-rgb),.11),rgba(var(--conf-accent-rgb),.05))!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header .mat-panel-title{font-size:.72rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:#555}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header .mat-expansion-indicator:after{color:var(--conf-accent);border-width:0 1.5px 1.5px 0;padding:2.5px}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-body{padding:12px 0 0}.configurator-accordion ::ng-deep .configurator-panel .firstRow{margin-top:0}.grafica-row{margin-bottom:8px}.grafica-row .grafica-field-label{font-size:.85rem;color:#555;margin-bottom:6px}.grafica-row eqp-attachments ::ng-deep .eqp-attachments-link-btn{display:none!important}.grafica-ai-separator{border:none;border-top:1px solid #e0e0e0;margin:10px 0 4px}.form-grafica-ai-row{display:flex;align-items:center;gap:8px;margin-top:4px;margin-bottom:8px;flex-wrap:wrap}.btn-form-graphic-suggest{background:var(--conf-gradient);color:var(--conf-btn-color)!important;font-size:12px;height:30px;min-width:unset;padding:0 12px;border:none!important;border-radius:6px;display:inline-flex;align-items:center;gap:4px}.btn-form-graphic-suggest mat-icon{font-size:16px;width:16px;height:16px}.btn-form-graphic-suggest[disabled]{opacity:.7;cursor:not-allowed}.form-hint-input-group{display:flex;align-items:center;gap:6px;flex:1;min-width:220px}.form-graphic-scope-select{height:30px;padding:0 6px;border:1px solid #ccc;border-radius:4px;font-size:12px;background:#fff;cursor:pointer;outline:none;flex-shrink:0}.form-graphic-scope-select:focus{border-color:var(--conf-accent)}.btn-hint-randomize{width:28px;height:28px;border:none;border-radius:5px;background:var(--conf-hint-btn-bg);color:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s}.btn-hint-randomize mat-icon{font-size:16px;width:16px;height:16px}.btn-hint-randomize:hover{background:var(--conf-hint-btn-hover-bg)}.btn-generate-bg{width:28px;height:28px;border:1px solid var(--conf-hint-btn-bg);border-radius:5px;background:transparent;color:var(--conf-hint-btn-bg);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s,color .15s,border-color .15s}.btn-generate-bg mat-icon{font-size:16px;width:16px;height:16px}.btn-generate-bg:hover{background:var(--conf-hint-btn-bg);color:#fff}.btn-generate-bg.active{background:var(--conf-gradient);border-color:transparent;color:var(--conf-btn-color, #fff)}.form-graphic-hint-input{flex:1;height:30px;padding:0 8px;border:1px solid #ccc;border-radius:4px;font-size:12px;outline:none}.form-graphic-hint-input:focus{border-color:var(--conf-accent)}.btn-form-graphic-send{background:var(--conf-gradient);color:var(--conf-btn-color)!important;border:none;border-radius:4px;width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.btn-form-graphic-send mat-icon{font-size:16px;width:16px;height:16px}.btn-form-graphic-send:hover{opacity:.9}.row.title{margin:0;justify-content:flex-start}.row.title mat-icon.add{background:#fff;color:#7b7b7b;height:40px;width:40px;border-radius:var(--conf-radius);font-size:27px;padding:7px 6px 6px 7px;margin:0 7px 0 0;cursor:pointer}.row.title mat-icon.close{background:#7B7B7B;color:#fff;height:40px;width:40px;border-radius:var(--conf-radius);font-size:27px;padding:7px 6px 6px 7px;margin:0 7px 0 0;cursor:pointer}.row.title .header-title-standard{display:flex;align-items:center;font-size:19px;font-weight:700;color:gray}.firstRow{margin-top:20px}::ng-deep mat-form-field{width:100%}:host ::ng-deep .mat-mdc-text-field-wrapper{background:var(--conf-input-bg, #ffffff)!important}:host ::ng-deep .mat-mdc-form-field .mat-mdc-input-element,:host ::ng-deep .mat-mdc-form-field .mdc-text-field__input,:host ::ng-deep .mat-mdc-form-field textarea{color:var(--conf-input-color, rgba(0, 0, 0, .87))!important}hr{border:none;height:50px;box-shadow:0 20px 20px -20px #dfdfdf}.inserted{margin-top:45px}::ng-deep .mat-form-field-appearance-legacy .mat-form-field-underline{display:none}::ng-deep .mat-form-field-flex .mat-form-field-infix input{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0 15px 20px!important;margin-top:10px;background-color:#fff}::ng-deep .mat-form-field-flex .mat-form-field-infix input:focus{border:1px solid #1a39ed}::ng-deep .mat-form-field-flex .mat-form-field-infix{padding:0;margin:0}::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=minute],::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=hour]{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0!important;background-color:#fff}::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=minute]:focus,::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=hour]:focus{border:1px solid #1a39ed}::ng-deep .ngx-mat-timepicker form .table .tbody tr td.spacer{vertical-align:middle!important}.textarea ::ng-deep .mat-form-field-wrapper{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0 15px 20px!important}.textarea ::ng-deep .mat-form-field-wrapper .mat-form-field-flex{border:none;padding:0;margin:0;height:0}::ng-deep .nameSection{width:99%}::ng-deep .mat-select-arrow{color:transparent}::ng-deep .mat-form-field.mat-focused.mat-primary .mat-select-arrow{color:transparent}::ng-deep .mat-select-value-text{font-size:15px}::ng-deep .cdk-overlay-pane{transform:none!important}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap{margin:37px 0 0 -18px}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap .ng-trigger{border-radius:10px}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap .ng-trigger mat-option{border-radius:10px}::ng-deep .mat-autocomplete.visible{margin:0!important}::ng-deep .mat-select-panel{box-shadow:0 0 2px #0003,0 0 2px #00000024,0 0 2px #0000001f!important;min-width:calc(100% + 19px)!important}.stepper-header-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.section-list{list-style:none;padding:0;display:flex;flex-wrap:wrap;flex-direction:row}.section-list li{margin-top:36px}.section-list li .sectionInsert{border:1px solid #9171E3;padding:14px 17px;border-radius:10px;margin-right:10px;font-size:16px}.section-list li .sectionInsert mat-icon{vertical-align:middle;font-size:20px!important;height:20px!important;width:40px!important;color:#c40101!important;cursor:pointer}.section-list li .sectionInsert mat-icon.icon-black{color:#000!important}.danger-color{color:#c40101}::ng-deep .mat-elevation-z8{box-shadow:none}::ng-deep mat-horizontal-stepper.outerForm{background-color:var(--conf-bg-page)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:0 20%;background-color:var(--conf-stepper-header-bg)!important;box-shadow:0 20px 20px -20px #dfdfdf}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label{white-space:normal;margin:7px 0 0;min-width:100px;overflow:visible;text-align:center}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container mat-step-header:hover{background-color:transparent}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header{display:flex;flex-direction:column;height:96px;padding:20px 50px}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon{margin-right:0!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line{width:100%;padding-bottom:1px;margin-bottom:46.5px}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .cdk-focused{background-color:transparent}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:before{content:\"\";position:absolute!important;left:-25px!important;bottom:13px!important;border-left:30px solid var(--conf-step-connector-bg, #ebebeb)!important;border-top:12px solid transparent!important;border-bottom:12px solid transparent!important;transform:rotate(180deg)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:after{content:\"\"!important;position:absolute!important;right:-25px!important;bottom:13px!important;border-left:30px solid var(--conf-step-connector-bg, #ebebeb)!important;border-top:12px solid transparent!important;border-bottom:12px solid transparent!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:after:last-child{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected){background:var(--conf-step-icon-bg, linear-gradient(.33turn, #BFBFBF, #606060))!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected) .mat-step-icon-content span{color:var(--conf-step-icon-color, #ffffff)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number.mat-step-icon-selected:before{border-left-color:var(--conf-step-selected)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number.mat-step-icon-selected:after{display:none!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit{background-color:var(--conf-step-icon-edit-bg)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit:before{border-left-color:var(--conf-step-selected)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit:after{border-left-color:var(--conf-step-edit)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container :first-child :before{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container :last-child :after{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-content-container{padding:20px 10%;background-color:var(--conf-stepper-content-bg)!important}::ng-deep mat-horizontal-stepper.innerForm{background-color:var(--conf-bg-page)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:10px 130px;background-color:var(--conf-stepper-header-bg)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon{margin-right:0!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected){background:var(--conf-step-icon-bg, linear-gradient(.33turn, #BFBFBF, #606060))!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected) .mat-step-icon-content span{color:var(--conf-step-icon-color, #ffffff)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container mat-step-header:hover{background-color:transparent}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(2){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(4){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(6){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .cdk-focused{background-color:transparent}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label mat-label{margin-left:5px}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-content-container{background-color:var(--conf-stepper-content-bg)!important}.button-nextDiv{margin:50px 0 0!important}.button-nextDiv .button-exit{margin:0 10px 0 0!important;border:1px solid #1E31EB;padding:7px 40px;border-radius:var(--conf-radius);font-size:14px;box-shadow:none!important}.button-nextDiv .button-exit:hover{background:white!important}div.addButtons{margin:40px 0 0!important}div.addButtons .btn-primary{border-radius:var(--conf-radius);box-shadow:none;padding:6px 25px 6px 9px;font-size:14px;background:var(--conf-gradient);color:var(--conf-btn-color)!important}div.addButtons .btn-primary mat-icon{background:#fff;color:#1e31eb;height:30px;width:31px;border-radius:var(--conf-radius);font-size:27px;padding:2px 0 0;margin:0 7px 0 0}div.addButtons .btn-outlined{box-shadow:none;padding:6px 25px 6px 9px;font-size:14px;border-radius:var(--conf-radius);background:var(--conf-addbtn-bg, #ebebeb);color:#3b3a3b}div.addButtons .btn-outlined mat-icon{background-color:inherit;color:#bdbdbd;height:30px;width:31px;border-radius:var(--conf-radius);font-size:27px;padding:2px 0 0;margin:0 7px 0 0}div.addButtons .btn-outlined:hover,div.addButtons .btn-outlined.active{background:var(--conf-gradient);color:var(--conf-btn-color)!important;border-radius:var(--conf-radius)}div.addButtons .btn-outlined:hover mat-icon,div.addButtons .btn-outlined.active mat-icon{color:var(--conf-btn-color)}div.addButtons .btn-outlined-red{background:linear-gradient(to right,#eb1e1e,#da3d3d)!important;color:#fff!important}div.addButtons .btn-outlined-red:hover mat-icon{color:#eb1e1e}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper{margin-top:-74px}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper input{background-color:var(--conf-search-bg)!important;background:url(data:image/png;base64,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) no-repeat;background-size:19px;background-position:19px;padding:15px 0 15px 53px!important}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper input:focus{background-color:#fff!important;border:1px solid #e7e7e9}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper .mat-form-field-label-wrapper label{margin-top:21px;margin-left:55px}.table ::ng-deep mat-header-row{background-color:var(--conf-table-header-bg)!important;border-bottom-width:0px}.table ::ng-deep mat-header-row .mat-column-Required{flex:none!important}.table ::ng-deep .mat-sort-header-button{color:#3b3a3b;font-size:15px}.table ::ng-deep table#eqp-table{background-color:var(--conf-table-bg)!important}.table ::ng-deep .mat-row{background-color:var(--conf-table-bg)!important;margin:10px 0;box-shadow:0 3px 7px -3px #0003;padding:5px 0}.table ::ng-deep .mat-row .mat-column-Required{flex:0 0 8%!important}.table ::ng-deep .mat-row mat-cell eqp-select{margin-top:16px}.table ::ng-deep .mat-row mat-cell eqp-select .mat-form-field-wrapper{padding-bottom:0}.table ::ng-deep .mat-row .mat-cell span i.success-color{background-color:var(--conf-primary);color:#fff!important;padding:6px;border-radius:3px}::ng-deep .mat-paginator-page-size{margin:0 30px 0 0!important}::ng-deep .mat-paginator-page-size .mat-form-field-flex{padding:0 21px 7px!important;width:100px!important;margin:10px!important;background-color:#fff;border-radius:10px;border:1px solid lightgrey;height:40px}::ng-deep .mat-paginator-range-label{margin:0 20px 0 52px!important}::ng-deep .mat-dialog-container{padding:0!important;border-radius:var(--conf-modal-radius)!important;font-family:var(--conf-font-family)!important}::ng-deep .mat-mdc-dialog-surface.mdc-dialog__surface{border-radius:var(--conf-modal-radius)!important;font-family:var(--conf-font-family)!important}::ng-deep .mat-paginator-container{display:flex;justify-content:flex-start!important}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container{margin:5px 0 0 2px}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container .mat-slide-toggle-thumb{background-color:#fff!important}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-bar{background-color:#2532ea!important;height:100%!important;width:40px!important;border-radius:20px!important}::ng-deep .mat-slide-toggle .mat-slide-toggle-thumb-container{margin:5px 0 0 2px}::ng-deep .mat-slide-toggle .mat-slide-toggle-bar{height:100%!important;width:40px!important;border-radius:20px!important}.container-fluid.third-modal{padding:0 0 10px}.container-fluid.third-modal form{margin:25px 40px 10px}.container-fluid.third-modal form .buttonsForm{padding:0}.button-next{border-radius:var(--conf-radius);padding:7px 40px;font-size:14px}button.button-next:not([disabled]){background:var(--conf-gradient)!important;padding:7px 40px;border-radius:var(--conf-radius);color:var(--conf-btn-color)!important;font-size:14px}button.previous{box-shadow:none!important;margin:0 10px 0 0!important;border:1px solid #1E31EB;padding:7px 40px;border-radius:var(--conf-radius);font-size:14px}.rowButtonsModal{background-color:var(--conf-bg-page)}@media screen and (max-width: 1200px){.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select){width:30%!important}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper{margin-top:-98px}.table ::ng-deep .mat-row .mat-column-FieldGroup eqp-select{margin-bottom:-25px}.table ::ng-deep .mat-row .mat-column-FieldGroup .mat-form-field-flex{width:auto}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:25px 0 0}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-content-container{padding:0 3% 24px!important}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:10px 0}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header{display:flex;flex-direction:column;justify-content:space-between}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line{margin:-21px 0 0}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-content-container{padding:0 3% 24px!important}form{padding:0}div.addButtons{padding:15px 0 24px!important}}@media screen and (max-width: 960px){::ng-deep mat-table mat-row{box-shadow:0 3px 7px -3px #0003!important}::ng-deep mat-table mat-row .mat-column-FieldGroup{padding-top:15px;padding-bottom:47px}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label{width:150%!important}}@media screen and (max-width: 766px){.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select){width:40%!important;margin-top:60px}}@media screen and (max-width: 589px){div.addButtons button{margin:0 10px 10px 0!important}}::ng-deep .mat-input-element{width:100%;width:-moz-available;width:-webkit-fill-available;width:fill-available}:host ::ng-deep .mat-input-element{width:100%;width:-moz-available;width:-webkit-fill-available;width:fill-available}.innerFormManagment-stepper{max-height:80vh;overflow:scroll}.ai-dialog-header{display:flex;align-items:center;gap:10px;padding:16px 20px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0}.ai-dialog-header mat-icon{font-size:22px;width:22px;height:22px;opacity:.9}.ai-dialog-header span{font-size:1rem;font-weight:600;letter-spacing:.02em}.ai-dialog-header .ai-history-toggle-btn{margin-left:auto;color:#ffffffd9}.ai-dialog-header .ai-history-toggle-btn:hover{color:#fff}.ai-dialog-header .ai-history-toggle-btn.active{color:#fff;background:rgba(255,255,255,.2);border-radius:50%}.ai-dialog-body-flex{display:flex;align-items:stretch;overflow:hidden}.ai-dialog-main-content{flex:1;min-width:0}.ai-history-panel{width:240px;flex-shrink:0;border-left:1px solid rgba(0,0,0,.1);display:flex;flex-direction:column;background:#fafafa}.ai-history-panel .ai-history-panel-title{display:flex;align-items:center;gap:6px;padding:12px 12px 8px;font-size:.78rem;font-weight:700;color:#555;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid rgba(0,0,0,.08);flex-shrink:0}.ai-history-panel .ai-history-list{overflow-y:auto;flex:1;padding:8px 0}.ai-history-panel .ai-history-item{display:flex;align-items:flex-start;gap:8px;padding:8px 12px;border-bottom:1px solid rgba(0,0,0,.05)}.ai-history-panel .ai-history-item:last-child{border-bottom:none}.ai-history-panel .ai-history-item .ai-history-index{font-size:.7rem;font-weight:700;color:#fff;background:#888;border-radius:50%;width:18px;height:18px;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px}.ai-history-panel .ai-history-item .ai-history-text{font-size:.8rem;color:#444;line-height:1.4;word-break:break-word}.ai-last-prompt-bar{display:flex;align-items:center;gap:14px;margin:10px 0 18px;padding:14px 16px;background:#fff;border-radius:10px;box-shadow:0 1px 3px #1e31eb14,0 0 0 1px #1e31eb1a;position:relative;overflow:hidden}.ai-last-prompt-bar:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--conf-gradient)}.ai-last-prompt-bar .ai-last-prompt-icon-wrap{flex-shrink:0;width:36px;height:36px;border-radius:9px;background:var(--conf-gradient);display:flex;align-items:center;justify-content:center}.ai-last-prompt-bar .ai-last-prompt-icon-wrap mat-icon{font-size:18px;width:18px;height:18px;color:#fff}.ai-last-prompt-bar .ai-last-prompt-content{flex:1;min-width:0}.ai-last-prompt-bar .ai-last-prompt-content .ai-last-prompt-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#aaa;margin-bottom:3px}.ai-last-prompt-bar .ai-last-prompt-content .ai-last-prompt-text{font-size:13px;font-weight:600;color:#1a1a2e;line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ai-last-prompt-bar .ai-last-prompt-history-btn{flex-shrink:0;width:34px;height:34px;border-radius:8px;color:var(--conf-primary, #1E31EB);opacity:.5;transition:opacity .15s,background .15s;display:flex;align-items:center;justify-content:center}.ai-last-prompt-bar .ai-last-prompt-history-btn:hover{opacity:1;background:rgba(30,49,235,.07)}.ai-last-prompt-bar .ai-last-prompt-history-btn mat-icon{font-size:20px;width:20px;height:20px;line-height:20px}.ai-cost-panel{display:flex;align-items:center;gap:12px;padding:10px 14px;background:#fff;border-radius:10px;box-shadow:0 1px 3px #1e31eb14,0 0 0 1px #1e31eb1a;position:relative;overflow:hidden}.ai-cost-panel:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--conf-gradient)}.ai-cost-panel .ai-cost-panel-icon{flex-shrink:0;width:30px;height:30px;border-radius:8px;background:var(--conf-gradient);display:flex;align-items:center;justify-content:center}.ai-cost-panel .ai-cost-panel-icon mat-icon{font-size:16px;width:16px;height:16px;color:#fff}.ai-cost-panel .ai-cost-panel-body{flex:1;min-width:0}.ai-cost-panel .ai-cost-panel-header{display:flex;align-items:center;gap:8px;margin-bottom:3px}.ai-cost-panel .ai-cost-panel-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#aaa}.ai-cost-panel .ai-cost-panel-model{font-size:10px;font-weight:700;padding:1px 8px;border-radius:20px;background:rgba(30,49,235,.08);color:var(--conf-primary, #1E31EB);letter-spacing:.03em}.ai-cost-panel .ai-cost-panel-line{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:12.5px;color:#444;line-height:1.5}.ai-cost-panel .ai-cost-panel-line .ai-cost-panel-line-label{color:#777}.ai-cost-panel .ai-cost-panel-line .ai-cost-panel-line-value{font-weight:600;color:#1a1a2e;white-space:nowrap}.ai-cost-panel .ai-cost-panel-hint{font-size:11px;color:#b45309;margin-top:1px}.ai-cost-panel .ai-cost-panel-split{flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:4px;padding-left:12px;border-left:1px solid rgba(0,0,0,.08)}.ai-cost-panel .ai-cost-panel-split-label{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#aaa}.ai-cost-panel .ai-cost-panel-split-stepper{display:flex;align-items:center;gap:2px;background:var(--conf-bg-page, #f4f4f8);border-radius:8px;padding:2px}.ai-cost-panel .ai-cost-split-btn{width:20px;height:20px;border:none;border-radius:5px;background:transparent;color:var(--conf-primary, #1E31EB);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s,color .15s}.ai-cost-panel .ai-cost-split-btn mat-icon{font-size:14px;width:14px;height:14px}.ai-cost-panel .ai-cost-split-btn:hover:not(:disabled){background:rgba(30,49,235,.12)}.ai-cost-panel .ai-cost-split-btn:disabled{color:#ccc;cursor:not-allowed}.ai-cost-panel .ai-cost-split-input{width:22px;text-align:center;border:none;background:transparent;font-size:13px;font-weight:700;color:#1a1a2e;-moz-appearance:textfield}.ai-cost-panel .ai-cost-split-input::-webkit-outer-spin-button,.ai-cost-panel .ai-cost-split-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.ai-cost-panel .ai-cost-split-input:focus{outline:none}.ai-history-dialog{min-width:520px;max-width:660px;display:flex;flex-direction:column;overflow:hidden}.ai-history-dialog .ai-history-dialog-body{overflow-y:auto;max-height:55vh;padding:8px 0 4px}.ai-history-dialog .ai-history-dialog-item{display:flex;align-items:flex-start;gap:16px;padding:14px 24px;border-bottom:1px solid rgba(0,0,0,.06);transition:background .12s}.ai-history-dialog .ai-history-dialog-item:last-child{border-bottom:none}.ai-history-dialog .ai-history-dialog-item:hover{background:rgba(30,49,235,.03)}.ai-history-dialog .ai-history-dialog-item--last{background:rgba(30,49,235,.04)}.ai-history-dialog .ai-history-dialog-item--last .ai-history-dialog-badge{background:var(--conf-gradient);box-shadow:0 2px 6px #1e31eb59}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-badge{flex-shrink:0;width:26px;height:26px;border-radius:50%;background:#dde0f5;color:var(--conf-primary, #1E31EB);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:1px}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt .ai-history-dialog-prompt-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;background:var(--conf-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt .ai-history-dialog-prompt-text{font-size:13.5px;color:#2a2a2a;line-height:1.55;word-break:break-word}.ai-history-dialog .ai-history-dialog-footer{display:flex;justify-content:flex-end;align-items:center;padding:12px 20px;border-top:1px solid rgba(0,0,0,.07);background:var(--conf-bg-page, #f9f9fa)}.ve-tooltip-panel{padding:0;min-width:280px}.ve-tooltip-header{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0}.ve-tooltip-header .ve-tooltip-icon{font-size:20px;width:20px;height:20px}.ve-tooltip-header .ve-tooltip-title{font-size:.9rem;font-weight:600;flex:1;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.3}.ve-tooltip-graphic{padding:12px 16px}.ve-tooltip-graphic .ve-tooltip-graphic-header{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:.85rem;color:#555}.ve-tooltip-graphic .ve-apply-all-row{display:flex;align-items:center;margin-bottom:8px;font-size:.8rem}.ve-tooltip-graphic .ve-apply-all-row mat-slide-toggle{font-size:.8rem}.ve-tooltip-graphic .ve-tooltip-graphic-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}.ve-swap-banner{display:flex;align-items:center;justify-content:center;gap:12px;margin:12px 0 4px;padding:12px 24px;background:rgba(245,158,11,.1);border:2px dashed #f59e0b;border-radius:10px;animation:ve-swap-pulse 1.2s infinite;font-size:.95rem;font-weight:600;color:#92400e}.ve-swap-banner .ve-swap-banner-icon{color:#f59e0b;font-size:24px;width:24px;height:24px;flex-shrink:0}.ve-swap-banner .ve-swap-banner-cancel{margin-left:16px;border-color:#f59e0b!important;color:#92400e!important;border-radius:6px;font-size:.85rem}@keyframes ve-swap-pulse{0%,to{background-color:#f59e0b1a}50%{background-color:#f59e0b38}}.ve-reorder-card{min-width:360px}.ve-reorder-header{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0;font-size:.95rem;font-weight:600}.ve-reorder-list{padding:8px 0}.ve-reorder-item{display:flex;align-items:center;gap:8px;padding:8px 16px;background:#fff;border-bottom:1px solid rgba(0,0,0,.08);cursor:move}.ve-reorder-item:last-child{border-bottom:none}.ve-drag-handle{color:#aaa;cursor:grab}.ve-drag-handle:active{cursor:grabbing}.ve-drag-placeholder{height:40px;background:rgba(99,102,241,.08);border:2px dashed rgba(99,102,241,.35);border-radius:4px}\n"], dependencies: [{ kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "component", type: i8.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i9.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i8.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i10.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i11.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "component", type: i12.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i13.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i13.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i13.MatCardFooter, selector: "mat-card-footer" }, { kind: "component", type: i13.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i13.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: i14.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "directive", type: i14.MatStepLabel, selector: "[matStepLabel]" }, { kind: "component", type: i14.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["selectedIndex", "disableRipple", "color", "labelPosition", "headerPosition", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "directive", type: i14.MatStepperNext, selector: "button[matStepperNext]", inputs: ["type"] }, { kind: "directive", type: i14.MatStepperPrevious, selector: "button[matStepperPrevious]", inputs: ["type"] }, { kind: "directive", type: i14.MatStepperIcon, selector: "ng-template[matStepperIcon]", inputs: ["matStepperIcon"] }, { kind: "directive", type: i15.MatAccordion, selector: "mat-accordion", inputs: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i15.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i15.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "directive", type: i15.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "component", type: i16.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i17.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i18.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i19.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i20.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i20.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i20.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i21.EqpTableComponent, selector: "eqp-table" }, { kind: "component", type: i22.EqpAttachmentsComponent, selector: "eqp-attachments", inputs: ["disableAction", "showHeader", "headerTitle", "attachmentsList", "showMatCard", "multipleAttachment", "loadMultipleFiles", "attachmentsColumns", "emptyTableMessage", "allowOnlyImages", "acceptedFileTypes", "isDisabled", "showInlinePreview", "getAttachmentEndpoint", "productionBaseUrl", "compressionOptions", "allowedTypes", "isEqpTableMultiLanguage", "tablePaginatorVisible", "isTableSearcheable", "tablePaginatorSize", "separatedUploadButtons", "showPreview", "singleAttachmentDragAndDrop", "cropOptions", "cropDialogClass", "downloadTooltipPosition", "openLinkLabel", "addButtonLabel", "downloadLabel", "deleteLabel", "fileNameLabel", "previewLabel", "uploadFileLabel", "confirmLabel", "abortLabel", "saveLabel", "exitLabel", "uploadWithDropboxLabel", "cropLabel", "eqpTableSearchText", "deleteDialogTitle", "deleteDialogMessage", "noImageSelectedErrorMessage", "wrongTypeSelectedErrorMessage", "videoPreviewErrorMessage", "flipHorinzontalLabel", "flipVerticalLabel", "rotateRightLabel", "rotateLeftLabel"], outputs: ["localEditedAttachments", "abortAddAttachment", "downloadAttachment", "onDeleteAttachment"] }, { kind: "component", type: i23.TmwSelectComponent, selector: "tmw-select", inputs: ["placeholder", "arrayData", "arrayKeyProperty", "arrayValueProperty", "includeFullObject", "enumData", "enumDataToExclude", "isMultiLanguage", "multilanguagePrefixKey", "isMultiSelect", "isRequired", "isDisabled", "showCancelButton", "isSearchable", "searchText", "noResultSearchText", "toolbarButtons", "showAddButton", "ngModelOptions", "ngModelInput", "formGroupInput", "formControlNameInput"], outputs: ["ngModelInputChange"] }, { kind: "directive", type: i24.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i24.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i24.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i24.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "component", type: EqpDynamicModuleConfiguratorComponent, selector: "eqp-dynamic-module-configurator", inputs: ["debugMode", "fieldsExtraConfig", "configurations", "formID", "viewMode", "QueryEditorComponent", "triggers", "actionButtons", "contestualization", "formulaObject", "configuratorTheme", "configuratorThemeCss"], outputs: ["fireTrigger", "saveFormEvent", "afterSaveFormEvent", "out"] }, { kind: "component", type: i25.AddFormFieldComponent, selector: "eqp-dynamic-module-add-form-field", inputs: ["fieldsExtraConfig", "form", "endPointConfiguration", "field", "indexField", "formFieldsGroups", "availableFields", "fieldTypesToExclude", "QueryEditorComponent", "contestualization", "actionButtons", "formulaObject", "aiFieldSuggestLoading"], outputs: ["out", "saveFieldEvent", "openAiEditForFieldEvent", "openAiGraphicSuggestEvent"] }, { kind: "component", type: i26.AddFormRecordComponent, selector: "add-form-record", inputs: ["configurations", "endPointConfiguration", "userID", "orgaID", "formID", "form", "record", "formulaObject", "onlyView", "isDuplicate", "inConfig", "showAllFields", "showTitle", "actionButtons", "QueryEditorComponent", "visualEditorMode", "veSwapFieldCode"], outputs: ["saveRecordEvent", "afterSaveRecordEvent", "out", "fireTrigger", "veFieldClick"] }, { kind: "component", type: i27.SpinnerComponent, selector: "eqp-dynamic-module-spinner" }, { kind: "directive", type: i28.DynamicLoaderDirective, selector: "[appDynamicLoader]", inputs: ["data"], outputs: ["out"] }, { kind: "component", type: i29.TriggerCreatorComponent, selector: "trigger-creator", inputs: ["form", "trigger", "formulas", "endPointConfiguration"], outputs: ["onSaveRecord"] }, { kind: "directive", type: i30.SpeechToTextDirective, selector: "[SpeechToText]", inputs: ["bindedText"], outputs: ["bindedTextChange"] }, { kind: "component", type: i31.ActionButtonCreatorComponent, selector: "action-button-creator", inputs: ["form", "actionButton", "actionButtonField", "formulas", "endPointConfiguration", "InField", "formulaObject"], outputs: ["onSaveRecord", "onChangeSomething"] }] });
|
|
2452
|
+
EqpDynamicModuleConfiguratorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: EqpDynamicModuleConfiguratorComponent, selector: "eqp-dynamic-module-configurator", inputs: { debugMode: "debugMode", fieldsExtraConfig: "fieldsExtraConfig", configurations: "configurations", formID: "formID", viewMode: "viewMode", QueryEditorComponent: "QueryEditorComponent", triggers: "triggers", actionButtons: "actionButtons", contestualization: "contestualization", formulaObject: "formulaObject", configuratorTheme: "configuratorTheme", configuratorThemeCss: "configuratorThemeCss" }, outputs: { fireTrigger: "fireTrigger", saveFormEvent: "saveFormEvent", afterSaveFormEvent: "afterSaveFormEvent", out: "out" }, viewQueries: [{ propertyName: "dialogImport", first: true, predicate: ["dialogImport"], descendants: true, static: true }, { propertyName: "fieldsTable", first: true, predicate: ["fieldsTable"], descendants: true }, { propertyName: "dialogField", first: true, predicate: ["dialogField"], descendants: true, static: true }, { propertyName: "fieldSectionColumnTemplate", first: true, predicate: ["fieldSectionColumnTemplate"], descendants: true, static: true }, { propertyName: "dialogInnerForm", first: true, predicate: ["dialogInnerForm"], descendants: true, static: true }, { propertyName: "actionsOnRecordTable", first: true, predicate: ["actionsOnRecordTable"], descendants: true }, { propertyName: "dialogActionOnRecord", first: true, predicate: ["dialogActionOnRecord"], descendants: true, static: true }, { propertyName: "actionButtonsTable", first: true, predicate: ["actionButtonsTable"], descendants: true }, { propertyName: "dialogActionButton", first: true, predicate: ["dialogActionButton"], descendants: true, static: true }, { propertyName: "dialogTriggers", first: true, predicate: ["dialogTriggers"], descendants: true, static: true }, { propertyName: "triggersTable", first: true, predicate: ["triggersTable"], descendants: true }, { propertyName: "dialogAiEdit", first: true, predicate: ["dialogAiEdit"], descendants: true, static: true }, { propertyName: "dialogAiHistory", first: true, predicate: ["dialogAiHistory"], descendants: true, static: true }, { propertyName: "dialogContestualization", first: true, predicate: ["dialogContestualization"], descendants: true, static: true }, { propertyName: "dialogVeTooltip", first: true, predicate: ["dialogVeTooltip"], descendants: true, static: true }, { propertyName: "dialogVeReorder", first: true, predicate: ["dialogVeReorder"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<eqp-dynamic-module-spinner></eqp-dynamic-module-spinner>\r\n\r\n\r\n<div class=\"dynamic-module-configurator-header row title p-1\" *ngIf=\"innerFormManagment\">\r\n <div class=\"col-md-10\">\r\n <div class=\"header-title-standard\">Aggiunta form di dettaglio</div>\r\n </div>\r\n <div class=\"col-md-2 text-right\">\r\n <tmw-icon class=\"mat-icon close\" (click)=\"closeDialogInnerForm()\" name=\"x\"></tmw-icon>\r\n </div>\r\n</div>\r\n\r\n<!--#region EXPORT MODULE -->\r\n<div class=\"dynamic-module-configurator-exporter\" *ngIf=\"loader && viewMode == 'Export'\" class=\"p-3\">\r\n\r\n <button mat-raised-button class=\"btn btn-primary\" (click)=\"export()\">Esporta</button>\r\n\r\n <!--<a\r\n class=\"btn btn-clear\"\r\n mat-raised-button\r\n color=\"primary\"\r\n title=\"Download JSON\"\r\n [href]=\"downloadJsonHref\"\r\n download=\"{{ downloadName }}.json\"\r\n >Export</a>-->\r\n\r\n</div>\r\n<!--#endregion EXPORT MODULE -->\r\n\r\n<mat-horizontal-stepper *ngIf=\"loader && formFormGroup && viewMode == 'addOrEdit'\" linear #stepper\r\n [ngClass]=\"{ outerForm: true, 'innerFormManagment-stepper': innerFormManagment }\"\r\n class=\"dynamic-module-configurator-stepper {{ 'last-edited-step-' + stepper.selectedIndex }}\">\r\n <!--#region DATI GENERALI DELLA FORM -->\r\n <mat-step class=\"dynamic-module-configurator-general-data\" [stepControl]=\"formFormGroup\">\r\n <form [formGroup]=\"formFormGroup\" (keydown.enter)=\"(false)\">\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Dati generali della form\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\r\n (click)=\"openAiEditDialog()\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">{{ isNewForm ? 'Crea con AI' : 'Modifica con AI' }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Ultimo prompt AI + accesso allo storico -->\r\n <div *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint && aiPromptHistory.length > 0\"\r\n class=\"ai-last-prompt-bar\">\r\n <div class=\"ai-last-prompt-icon-wrap\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n </div>\r\n <div class=\"ai-last-prompt-content\">\r\n <div class=\"ai-last-prompt-label\">Richiesta AI iniziale</div>\r\n <div class=\"ai-last-prompt-text\">{{ aiPromptHistory[0] }}</div>\r\n </div>\r\n <button mat-icon-button type=\"button\" class=\"ai-last-prompt-history-btn\" matTooltip=\"Vedi storico completo\"\r\n (click)=\"openAiHistoryDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"history\"></tmw-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"row firstRow\">\r\n <!--\r\n <div class=\"col-md-6\">\r\n <mat-label\r\n [matTooltip]=\"'Va inserito per essere utilizzato come riferimento nei template. non accetta caratteri speciali ne spazi.'\"\r\n >\r\n Codice Univoco\r\n </mat-label>\r\n <mat-form-field class=\"name\">\r\n <input\r\n matInput\r\n [matTooltip]=\"'Va inserito per essere utilizzato come riferimento nei template. non accetta caratteri speciali ne spazi.'\"\r\n formControlName=\"Code\"\r\n [(ngModel)]=\"form.Code\"\r\n required\r\n (focusout)=\"setCode(form.Code)\"\r\n disabled=\"true\"\r\n readonly=\"true\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-md-6\"></div>\r\n -->\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"name\" appearance=\"outline\">\r\n <mat-label>Nome</mat-label>\r\n <input placeholder=\"Nome\" matInput formControlName=\"Name\" [(ngModel)]=\"form.Name\" required\r\n (focusout)=\"setName(form.Name)\" />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"col-md-4\">\r\n <!-- <mat-label>Tipo di visualizzazione</mat-label> -->\r\n <tmw-select class=\"nameSection\" [enumData]=\"FormScalarTypeEnum\" [(ngModelInput)]=\"form.FormScalarType\"\r\n [isRequired]=\"false\" required [showCancelButton]=\"false\" [formGroupInput]=\"formFormGroup\"\r\n [formControlNameInput]=\"'FormScalarType'\" (ngModelInputChange)=\"onChangeFormScalarType()\"\r\n placeholder=\"Tipo di visualizzazione\">\r\n </tmw-select>\r\n </div>\r\n\r\n <div class=\"col-md-6\">\r\n <mat-form-field class=\"name\" appearance=\"outline\">\r\n <mat-label>Descrizione</mat-label>\r\n <input matInput formControlName=\"Description\" [(ngModel)]=\"form.Description\"\r\n (focusout)=\"stringSanitizer(form.Name)\" placeholder=\"Descrizione\" />\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"row inserted\" *ngIf=\"\r\n form.FormScalarType &&\r\n form.FormScalarType != FormScalarTypeEnum.Semplice\r\n \">\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"nameSection\" appearance=\"outline\">\r\n <mat-label> Nome sezione (invio per confermare) </mat-label>\r\n\r\n <input matInput [(ngModel)]=\"formFieldGroupName\" [ngModelOptions]=\"{ standalone: true }\"\r\n (keyup)=\"onFormFieldGroupNameKeyUp($event)\" placeholder=\"Nome sezione (invio per confermare)\" />\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-md-8\">\r\n <span class=\"mr-3\">Sezioni inserite:</span>\r\n <ul class=\"section-list\">\r\n <li *ngFor=\"let groupName of form.FormFieldsGroups; let i = index\">\r\n <span class=\"sectionInsert\">\r\n <tmw-icon class=\"mat-icon mr-1\" (click)=\"onDeleteFormFieldGroupName(groupName.Name)\" name=\"x\"></tmw-icon>\r\n <tmw-icon class=\"mat-icon mr-1 icon-black\" (click)=\"onEditFormFieldGroupName(groupName)\" name=\"edit\"></tmw-icon>\r\n {{ groupName.Name }}\r\n </span>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end\">\r\n <!-- IMPORT -->\r\n <button *ngIf=\"!this.formID\" class=\"btn btn-clear button-next me-2\" mat-raised-button color=\"primary\"\r\n (click)=\"importModule()\">\r\n Importa\r\n </button>\r\n <!-- END IMPORT -->\r\n\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"formFormGroup.invalid\">\r\n Successivo\r\n </button>\r\n </div>\r\n </form>\r\n </mat-step>\r\n <!--#endregion DATI GENERALI DELLA FORM -->\r\n\r\n <!--#region AGGIUNTA DEI CAMPI DELLA FORM -->\r\n <mat-step class=\"dynamic-module-configurator-add-field\" [completed]=\"isFieldStepCompleted()\">\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n <mat-label>Campi da inserire</mat-label>\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-primary me-2\" mat-raised-button color=\"primary\" type=\"button\"\r\n (click)=\"openFieldDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi campo</span>\r\n </button>\r\n\r\n <!-- <button\r\n class=\"btn btn-outlined me-2\"\r\n mat-raised-button\r\n color=\"primary\"\r\n type=\"button\"\r\n (click)=\"openInnerFormDialog()\"\r\n *ngIf=\"!innerFormManagment\"\r\n >\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi form di dettaglio</span>\r\n </button> -->\r\n\r\n <button class=\"btn btn-outlined btn-outlined-red me-2\" mat-raised-button color=\"red\" type=\"button\"\r\n (click)=\"deleteSelectedFields('Fields')\" *ngIf=\"showDeleteButton\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Elimina campi selezionati</span>\r\n </button>\r\n\r\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\r\n (click)=\"openAiEditDialog()\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">{{ isNewForm ? 'Crea con AI' : 'Modifica con AI' }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <tmw-table class=\"table\" #fieldsTable [createMatCard]=\"false\" [columns]=\"fieldsColumns\" [enableDragAndDrop]=\"false\"\r\n [enableDragColumn]=\"true\" [changeDragRowPosition]=\"true\" [isMultipleSelection]=\"true\" [data]=\"form.Fields\"\r\n [emptyTableMessage]=\"'Nessun campo inserito'\" (dragReleasedEvent)=\"onDragReleased($event)\"\r\n (dragEndedEvent)=\"onDragEnded($event)\" (checkboxInfo)=\"toggleDeleteButton($event)\" [searchText]=\"''\"\r\n [paginatorVisible]=\"false\">\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"!isFieldStepCompleted()\"\r\n [ngClass]=\"{ disabled: formFormGroup.invalid }\" (click)=\"setFormStatus(false)\">\r\n Successivo\r\n </button>\r\n </div>\r\n </mat-step>\r\n <!--#endregion AGGIUNTA DEI CAMPI DELLA FORM -->\r\n\r\n <ng-template matStepperIcon=\"edit\" let-index=\"index\">\r\n <mat-label>{{ index + 1 }}</mat-label>\r\n </ng-template>\r\n\r\n <!--#region AGGIUNTA DELLE OPERAZIONI SUI RECORD -->\r\n <!--#<mat-step>\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Azioni aggiuntive sui record\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button\r\n class=\"btn btn-primary\"\r\n mat-raised-button\r\n color=\"primary\"\r\n type=\"button\"\r\n (click)=\"openActionOnRecordDialog()\"\r\n >\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi azione</span>\r\n </button>\r\n </div>\r\n </div>\r\n <eqp-table\r\n class=\"table\"\r\n #actionsOnRecordTable\r\n [createMatCard]=\"false\"\r\n [columns]=\"actionsOnRecordColumns\"\r\n [data]=\"form.ActionsOnRecord\"\r\n [emptyTableMessage]=\"'Nessuna action inserita'\"\r\n [searchText]=\"''\"\r\n >\r\n </eqp-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end buttonsNextDiv\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button\r\n class=\"button-next\"\r\n mat-raised-button\r\n color=\"primary\"\r\n matStepperNext\r\n (click)=\"setFormStatus(false)\"\r\n >\r\n Successivo\r\n </button>\r\n </div>\r\n </mat-step>-->\r\n <!--#endregion AGGIUNTA DELLE OPERAZIONI SUI RECORD -->\r\n\r\n\r\n\r\n <!--#region AGGIUNTA DEI BOTTONI AZIONE -->\r\n <mat-step>\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Bottoni Azione\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-primary\" mat-raised-button color=\"primary\" type=\"button\"\r\n (click)=\"openActionButtonDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi bottone azione</span>\r\n </button>\r\n </div>\r\n </div>\r\n <tmw-table class=\"table\" #actionButtonsTable [createMatCard]=\"false\" [columns]=\"actionButtonsColumns\"\r\n [data]=\"form.ActionButtons\" [emptyTableMessage]=\"'Nessun bottone azione inserito'\" [searchText]=\"''\"\r\n [enableDragAndDrop]=\"false\" [enableDragColumn]=\"true\" [changeDragRowPosition]=\"true\"\r\n (dragReleasedEvent)=\"onDragReleased($event)\" (dragEndedEvent)=\"onDragEnded($event)\">\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end buttonsNextDiv\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext (click)=\"setFormStatus(false)\">\r\n Successivo\r\n </button>\r\n </div>\r\n </mat-step>\r\n <!--#endregion AGGIUNTA DEI BOTTONI AZIONE -->\r\n\r\n\r\n\r\n <!--#region TRIGGERS-->\r\n <mat-step>\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Triggers\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-primary\" mat-raised-button color=\"primary\" type=\"button\" (click)=\"openTriggersDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi trigger</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <tmw-table class=\"table\" #triggersTable [createMatCard]=\"false\" [columns]=\"triggersColumns\" [data]=\"form.Triggers\"\r\n [emptyTableMessage]=\"'Nessuna action inserita'\" [searchText]=\"''\">\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"!isFieldStepCompleted()\"\r\n [ngClass]=\"{ disabled: formFormGroup.invalid }\" (click)=\"setFormStatus(true)\">\r\n Successivo\r\n </button>\r\n </div>\r\n\r\n </mat-step>\r\n <!--#endregion TRIGGERS-->\r\n\r\n <!--#region VISUALIZZAZIONE FORM CREATA -->\r\n <mat-step class=\"dynamic-module-configurator-preview\">\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\"\r\n (click)=\"setFormStatus( formFormGroup.valid && form.Fields && form.Fields.length > 0 )\"></div>\r\n Anteprima\r\n </ng-template>\r\n\r\n <div class=\"row align-items-center addButtons\">\r\n <div class=\"col-auto\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"showAllFields\" mat-raised-button color=\"primary\"\r\n type=\"button\" (click)=\"showAllFields = !showAllFields\">\r\n <tmw-icon class=\"mat-icon\" [name]=\"showAllFields ? 'eye-off' : 'eye'\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Mostra anche i campi invisibili</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\" *ngIf=\"contestualization && contestualization.length > 0\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"selectedContestualization != null\" mat-raised-button\r\n color=\"primary\" type=\"button\" (click)=\"openContestualizationDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"adjustments-horizontal\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Contestualizzazione</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"showGraficaPanel\" mat-raised-button color=\"accent\"\r\n type=\"button\" (click)=\"showGraficaPanel = !showGraficaPanel\">\r\n <tmw-icon class=\"mat-icon\" name=\"palette\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Grafica</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"visualEditorActive\" mat-raised-button color=\"accent\"\r\n type=\"button\" (click)=\"toggleVisualEditor()\">\r\n <tmw-icon class=\"mat-icon\" name=\"layout-grid\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Visual Editor</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormSpeechToFormEditEndPointEndPoint\">\r\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\r\n (click)=\"openAiEditDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Modifica con AI</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"veSwapField\" class=\"ve-swap-banner\">\r\n <tmw-icon class=\"mat-icon ve-swap-banner-icon\" name=\"arrows-left-right\"></tmw-icon>\r\n <span>Clicca sul campo con cui vuoi scambiare la posizione</span>\r\n <button mat-stroked-button color=\"warn\" type=\"button\" (click)=\"veCancelSwap()\" class=\"ve-swap-banner-cancel\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n Annulla\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"showGraficaPanel\" class=\"mt-2\">\r\n <mat-accordion class=\"configurator-accordion\" [multi]=\"true\" displayMode=\"flat\">\r\n <mat-expansion-panel class=\"configurator-panel\" [expanded]=\"true\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>Grafica</mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div class=\"form-grafica-ai-row\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToGraphicsEndPoint\">\r\n <button mat-stroked-button type=\"button\" class=\"btn-form-graphic-suggest\"\r\n [disabled]=\"formGraphicSuggestLoading\" (click)=\"toggleFormGraphicSuggestInput()\">\r\n <mat-spinner *ngIf=\"formGraphicSuggestLoading\" diameter=\"14\"\r\n style=\"display:inline-block;vertical-align:middle;margin-right:4px\"></mat-spinner>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"!formGraphicSuggestLoading\" name=\"palette\"></tmw-icon>\r\n {{ formGraphicSuggestLoading ? 'Elaborazione...' : 'Suggerisci Grafica Completa' }}\r\n </button>\r\n <div class=\"form-hint-input-group\" *ngIf=\"showFormGraphicSuggestInput && !formGraphicSuggestLoading\">\r\n <select class=\"form-graphic-scope-select\" [(ngModel)]=\"formGraphicScope\"\r\n [ngModelOptions]=\"{standalone: true}\">\r\n <option value=\"all\">Tutto</option>\r\n <option value=\"main\">Principale</option>\r\n <option *ngFor=\"let opt of presentFieldTypeOptions\" [value]=\"opt.value\">{{ opt.label }}</option>\r\n </select>\r\n <button type=\"button\" class=\"btn-hint-randomize\" (click)=\"randomizeHint()\"\r\n matTooltip=\"Suggerimento casuale\">\r\n <tmw-icon class=\"mat-icon\" name=\"bulb\"></tmw-icon>\r\n </button>\r\n <button type=\"button\" class=\"btn-generate-bg\" [class.active]=\"generateBackground\"\r\n (click)=\"generateBackground = !generateBackground\"\r\n [matTooltip]=\"generateBackground ? 'Sfondo AI: attivo' : 'Genera anche sfondo AI'\">\r\n <tmw-icon class=\"mat-icon\" name=\"photo\"></tmw-icon>\r\n </button>\r\n <input type=\"text\" class=\"form-graphic-hint-input\" [(ngModel)]=\"formGraphicSuggestHint\"\r\n [ngModelOptions]=\"{standalone: true}\"\r\n placeholder=\"es. toni di blu scuro, stile professionale, sfondo sfumato...\" />\r\n <button type=\"button\" class=\"btn-form-graphic-send\" (click)=\"onFormGraphicSuggest()\"\r\n matTooltip=\"Applica suggerimento grafico al form\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n </button>\r\n </div>\r\n </div>\r\n <hr class=\"grafica-ai-separator\" />\r\n <div class=\"row align-items-start grafica-row\">\r\n <div class=\"col-md-4\">\r\n <p class=\"grafica-field-label\">Immagine di sfondo</p>\r\n <tmw-attachments [attachmentsList]=\"bgAttachmentList\" [showMatCard]=\"false\" [allowOnlyImages]=\"true\"\r\n [isDisabled]=\"false\" [showInlinePreview]=\"true\" [multipleAttachment]=\"false\" [showHeader]=\"false\"\r\n [allowedTypes]=\"[AttachmentType.FILE]\" (localEditedAttachments)=\"onBgImageChange($event)\"\r\n (onDeleteAttachment)=\"onBgImageDelete()\">\r\n </tmw-attachments>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"w-100\" appearance=\"outline\">\r\n <mat-label>CSS Principale</mat-label>\r\n <textarea matInput [(ngModel)]=\"form.ThemeCSS\" [ngModelOptions]=\"{ standalone: true }\"\r\n placeholder=\"es. max-width: 800px; padding: 16px; background: #f5f5f5;\" rows=\"5\"></textarea>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"w-100\" appearance=\"outline\">\r\n <mat-label>CSS Titolo</mat-label>\r\n <textarea matInput [(ngModel)]=\"form.TitleCSS\"\r\n (ngModelChange)=\"previewForm && (previewForm.TitleCSS = $event)\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n placeholder=\"es. font-size: 2rem; font-weight: 700; color: #fff;\" rows=\"5\"></textarea>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n </div>\r\n\r\n <hr />\r\n\r\n <div class=\"dynamic-module-preview\" [style]=\"previewBgStyle\">\r\n <div [style]=\"previewThemeStyle\">\r\n <add-form-record *ngIf=\"previewForm && formCompleted\" [form]=\"previewForm\" [userID]=\"UserID\" [orgaID]=\"orgaID\"\r\n [formulaObject]=\"formulaObject\" [configurations]=\"viewConfig\" [showAllFields]=\"showAllFields\"\r\n [QueryEditorComponent]=\"QueryEditorComponent\" [endPointConfiguration]=\"endPointConfiguration\"\r\n [visualEditorMode]=\"visualEditorActive\" [veSwapFieldCode]=\"veSwapField?.Label ?? null\"\r\n (veFieldClick)=\"onVeFieldClick($event)\" (out)=\"onExternalComponentOut($event)\"\r\n (fireTrigger)=\"onFireTrigger($event)\" [inConfig]=\"true\">\r\n </add-form-record>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end button-nextDiv\">\r\n <button class=\"mr-2 button-exit\" mat-raised-button matStepperPrevious (click)=\"setFormStatus(false)\">\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" (click)=\"saveForm()\">\r\n Salva form\r\n </button>\r\n </div>\r\n </mat-step>\r\n <!--#endregion VISUALIZZAZIONE FORM CREATA -->\r\n\r\n</mat-horizontal-stepper>\r\n\r\n<!-- DIALOG AGGIUNTA/MODIFICA CAMPO -->\r\n<ng-template #dialogField>\r\n <eqp-dynamic-module-add-form-field [form]=\"form\" [endPointConfiguration]=\"endPointConfiguration\"\r\n [field]=\"selectedField\" [formulaObject]=\"formulaObject\" [indexField]=\"indexSelectedField\"\r\n [availableFields]=\"form.Fields\" [contestualization]=\"contestualization\"\r\n [QueryEditorComponent]=\"QueryEditorComponent\" [fieldsExtraConfig]=\"fieldsExtraConfig\"\r\n [actionButtons]=\"actionButtons\" [aiFieldSuggestLoading]=\"aiFieldSuggestLoading\" [formFieldsGroups]=\"\r\n form.FormScalarType != FormScalarTypeEnum.Semplice\r\n ? form.FormFieldsGroups\r\n : null\r\n \" (openAiEditForFieldEvent)=\"onAiEditForField($event)\" (openAiGraphicSuggestEvent)=\"onAiGraphicSuggest($event)\"\r\n (saveFieldEvent)=\"onSaveField($event)\" (out)=\"onExternalComponentOut($event)\">\r\n </eqp-dynamic-module-add-form-field>\r\n</ng-template>\r\n\r\n<!-- TEMPLATE PER VISUALIZZARE LA COLONNA DELLA SEZIONE NELLA TABELLA DEI FIELDS -->\r\n<ng-template #fieldSectionColumnTemplate let-row=\"row\">\r\n <tmw-select [arrayData]=\"form.FormFieldsGroups\" [(ngModelInput)]=\"row.FieldGroup\" [arrayKeyProperty]=\"'Name'\"\r\n [arrayValueProperty]=\"'Name'\" placeholder=\"Sezione\" [isRequired]=\"true\" [includeFullObject]=\"false\">\r\n </tmw-select>\r\n</ng-template>\r\n\r\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE UNA ACTION SUI RECORD DELLA FORM -->\r\n<ng-template #dialogActionOnRecord>\r\n\r\n <div class=\"container-fluid third-modal\" style=\"max-height: 70vh !important; overflow-x: hidden; overflow-y: auto\">\r\n <form [formGroup]=\"actionOnRecordFormGroup\">\r\n <div class=\"row title\">\r\n <div class=\"header-title-standard\">\r\n {{\r\n indexSelectedAction != null && indexSelectedAction >= 0\r\n ? \"Modifica\"\r\n : \"Aggiungi\"\r\n }}\r\n azione sul record\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 col-md-4 mt-2\">\r\n <mat-label> Nome </mat-label>\r\n <mat-form-field>\r\n <input formControlName=\"Name\" required matInput [(ngModel)]=\"selectedAction.Name\" />\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-sm-12 col-md-4 mt-2\">\r\n <mat-label> Icona </mat-label>\r\n <mat-form-field>\r\n <input formControlName=\"Icon\" required matInput [(ngModel)]=\"selectedAction.Icon\" />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"col-12 mt-2\">\r\n <mat-label>Azione (Javascript)</mat-label>\r\n <mat-form-field>\r\n <textarea matInput [rows]=\"3\" formControlName=\"Action\" required [(ngModel)]=\"selectedAction.Action\"\r\n [matAutocomplete]=\"actionAutocomplete\" (keyup)=\"setActionAutocompleteOptions($event)\"\r\n (focus)=\"setActionAutocompleteOptions(null)\" style=\"\r\n border: 1px solid lightgray !important;\r\n border-radius: 10px !important;\r\n \"></textarea>\r\n <mat-autocomplete #actionAutocomplete=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let option of actionAutocompleteOptions\" [value]=\"option.value\">\r\n {{ option.label }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end mt-2 mb-1\">\r\n <div class=\"buttonsForm\">\r\n <button class=\"btn mat-raised-button cancel\" (click)=\"closeDialogActionOnRecord()\" type=\"button\">\r\n Annulla\r\n </button>\r\n <button class=\"mr-2 save\" mat-raised-button color=\"primary\" (click)=\"saveActionOnRecord()\"\r\n [disabled]=\"actionOnRecordFormGroup.invalid\" type=\"button\">\r\n Salva\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE UN BOTTONE AZIONE -->\r\n<ng-template #dialogActionButton>\r\n <action-button-creator [endPointConfiguration]=\"endPointConfiguration\" [form]=\"form\" [formulas]=\"actionButtons\"\r\n [actionButton]=\"selectedActionButton\" (onSaveRecord)=\"saveActionButtons($event)\"></action-button-creator>\r\n</ng-template>\r\n\r\n<!-- TEMPLATE PER CONFIGURARE LE FORM DI DETTAGLIO -->\r\n<ng-template #dialogInnerForm>\r\n <!-- [form]=\"selectedInnerForm\"\r\n [innerFormManagment]=\"true\"\r\n [innerFormRef]=\"dialogInnerFormRef\" -->\r\n <eqp-dynamic-module-configurator [configurations]=\"innerFormConfig\" (saveFormEvent)=\"onSaveOrExitInnerForm($event)\">\r\n </eqp-dynamic-module-configurator>\r\n</ng-template>\r\n\r\n<!-- TEMPLATE PER IMPORT -->\r\n<ng-template #dialogImport>\r\n <mat-card class=\"importDialog\">\r\n <mat-card-header class=\"p-2 justify-content-around\">\r\n <mat-card-title>\r\n Import\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"p-2\">\r\n <input type=\"file\" class=\"input-file-btn pb-2\" (change)=\"onImport($event)\" />\r\n </mat-card-content>\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\">\r\n <button class=\"btn btn-clear button-back me-2\" mat-raised-button color=\"disabled\" (click)=\"closeImport()\">\r\n Annulla\r\n </button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE I TRIGGERS -->\r\n<ng-template #dialogTriggers>\r\n <trigger-creator [endPointConfiguration]=\"endPointConfiguration\" [form]=\"form\" [formulas]=\"triggers\"\r\n [trigger]=\"selectedTrigger\" (onSaveRecord)=\"saveTrigger($event)\"></trigger-creator>\r\n</ng-template>\r\n\r\n<!-- DIALOG MODIFICA CON AI -->\r\n<ng-template #dialogAiEdit>\r\n <mat-card style=\"min-width: 480px\">\r\n <div class=\"ai-dialog-header\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span>{{ isNewForm ? 'Crea form con AI' : 'Modifica form con AI' }}</span>\r\n <button *ngIf=\"aiPromptHistory.length > 0\" mat-icon-button type=\"button\" class=\"ai-history-toggle-btn\"\r\n [class.active]=\"showAiPromptHistory\"\r\n [matTooltip]=\"showAiPromptHistory ? 'Nascondi storico richieste' : 'Mostra storico richieste'\"\r\n (click)=\"showAiPromptHistory = !showAiPromptHistory\">\r\n <tmw-icon class=\"mat-icon\" [name]=\"showAiPromptHistory ? 'history-off' : 'history'\"></tmw-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"ai-dialog-body-flex\">\r\n <mat-card-content class=\"p-3 ai-dialog-main-content\">\r\n <!-- Prompt textarea + microfono -->\r\n <div style=\"position: relative\">\r\n <mat-form-field appearance=\"outline\" style=\"width: 100%\">\r\n <mat-label>{{ isNewForm ? 'Descrivi il form da creare' : 'Descrivi la modifica da apportare' }}</mat-label>\r\n <textarea matInput [(ngModel)]=\"aiEditPrompt\" rows=\"5\" [disabled]=\"aiEditLoading\"\r\n [placeholder]=\"isNewForm ? 'Es: crea un form per la registrazione pazienti con campi nome, cognome, data di nascita e codice fiscale...' : 'Es: aggiungi un campo data di nascita, rimuovi il campo email, rendi obbligatorio il campo telefono...'\"></textarea>\r\n </mat-form-field>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"true\" SpeechToText [(bindedText)]=\"aiEditPrompt\"\r\n style=\"position: absolute; right: 12px; top: 12px; cursor: pointer; color: #666\"\r\n [matTooltip]=\"isNewForm ? 'Parla per descrivere il form' : 'Parla per dettare la modifica'\" name=\"microphone\"></tmw-icon>\r\n </div>\r\n\r\n <!-- Allegati + genera sfondo -->\r\n <div class=\"mb-2 mt-1\" style=\"display:flex;align-items:center;gap:8px;flex-wrap:wrap\">\r\n <button mat-stroked-button type=\"button\" [disabled]=\"aiEditLoading\" (click)=\"aiEditFileInput.click()\">\r\n <tmw-icon class=\"mat-icon\" name=\"paperclip\"></tmw-icon>\r\n <span style=\"margin-left: 6px\">Aggiungi allegati (PDF o immagini)</span>\r\n </button>\r\n <input #aiEditFileInput type=\"file\" multiple accept=\"image/*,application/pdf\" style=\"display: none\"\r\n (change)=\"onAiEditFileChange($event)\" />\r\n <button *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\" type=\"button\" class=\"btn-generate-bg\"\r\n [class.active]=\"aiGenerateBackground\" [disabled]=\"aiEditLoading\"\r\n (click)=\"aiGenerateBackground = !aiGenerateBackground\"\r\n [matTooltip]=\"aiGenerateBackground ? 'Sfondo AI: attivo' : 'Genera anche sfondo AI'\">\r\n <tmw-icon class=\"mat-icon\" name=\"photo\"></tmw-icon>\r\n </button>\r\n </div>\r\n <ul *ngIf=\"aiEditAttachments.length > 0\" style=\"list-style: none; padding: 0; margin: 0 0 12px\">\r\n <li *ngFor=\"let att of aiEditAttachments; let i = index\"\r\n style=\"display: flex; align-items: center; gap: 6px; margin-bottom: 4px\">\r\n <tmw-icon class=\"mat-icon\" style=\"font-size: 18px\" name=\"file\"></tmw-icon>\r\n <span>{{ att.fileName }}</span>\r\n <tmw-icon class=\"mat-icon\" style=\"font-size: 18px; cursor: pointer; color: #999\"\r\n (click)=\"removeAiEditAttachment(i)\" name=\"x\"></tmw-icon>\r\n </li>\r\n </ul>\r\n\r\n <!-- Autosave -->\r\n <mat-slide-toggle [(ngModel)]=\"aiEditAutosave\" [disabled]=\"aiEditLoading\" color=\"primary\">\r\n {{ isNewForm ? 'Salva automaticamente dopo la creazione' : 'Salva automaticamente dopo la modifica' }}\r\n </mat-slide-toggle>\r\n\r\n <!-- Conto alla rovescia mostrato mentre AI elabora -->\r\n <div *ngIf=\"aiEditLoading && aiEditEstimatedSec > 0\" class=\"mt-3 mb-1\">\r\n <!-- Fase normale: countdown in corso -->\r\n <ng-container *ngIf=\"!aiEditIsOvertime\">\r\n <mat-progress-bar mode=\"determinate\" [value]=\"(1 - aiEditCountdown / aiEditEstimatedSec) * 100\"\r\n color=\"accent\">\r\n </mat-progress-bar>\r\n <div style=\"text-align: center; margin-top: 4px\">\r\n <small class=\"text-muted\">\r\n Operazione in corso \u2014 tempo stimato rimanente: <b>{{ aiEditCountdown }}s</b>\r\n </small>\r\n </div>\r\n </ng-container>\r\n <!-- Fase overtime: il server impiega pi\u00F9 del previsto -->\r\n <ng-container *ngIf=\"aiEditIsOvertime\">\r\n <mat-progress-bar mode=\"indeterminate\" color=\"warn\"></mat-progress-bar>\r\n <div style=\"display: flex; align-items: center; justify-content: center; gap: 12px; margin-top: 6px\">\r\n <small class=\"text-muted\">\r\n Sembra che ci voglia pi\u00F9 del previsto \u2014 <b>+{{ -aiEditCountdown }}s</b>\r\n </small>\r\n <button mat-stroked-button type=\"button\" color=\"warn\" (click)=\"cancelAiEdit()\"\r\n style=\"height: 26px; line-height: 26px; font-size: 12px; padding: 0 10px; min-width: unset\">\r\n Annulla\r\n </button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- Stima costo AI (aggiornata in tempo reale al variare del prompt, del modello citato,\r\n degli allegati e del numero di split ipotizzato) -->\r\n <div class=\"ai-cost-panel mt-3\" *ngIf=\"!aiEditLoading\">\r\n <div class=\"ai-cost-panel-icon\">\r\n <tmw-icon class=\"mat-icon\" name=\"cash\"></tmw-icon>\r\n </div>\r\n\r\n <div class=\"ai-cost-panel-body\">\r\n <div class=\"ai-cost-panel-header\">\r\n <span class=\"ai-cost-panel-title\">Costo stimato uso AI</span>\r\n <span class=\"ai-cost-panel-model\">{{ aiEditDetectedModelLabel }}</span>\r\n </div>\r\n\r\n <ng-container *ngIf=\"aiEditSplitCount <= 1; else aiCostSplitLines\">\r\n <div class=\"ai-cost-panel-line\">\r\n <span class=\"ai-cost-panel-line-label\">Primo uso</span>\r\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostFirstEur) }} \u20AC</span>\r\n </div>\r\n <div class=\"ai-cost-panel-line\">\r\n <span class=\"ai-cost-panel-line-label\">Usi successivi</span>\r\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostSubsequentEur) }}\r\n \u20AC</span>\r\n </div>\r\n </ng-container>\r\n <ng-template #aiCostSplitLines>\r\n <div class=\"ai-cost-panel-line\">\r\n <span class=\"ai-cost-panel-line-label\">{{ aiEditSplitCount }} parti parallele</span>\r\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostFirstEur) }} \u20AC</span>\r\n </div>\r\n <div class=\"ai-cost-panel-hint\">{{ aiEditSplitWarmUpApplies\r\n ? 'Il server scalda la cache prima dello split: risparmio su ' + aiEditSplitCount + ' chiamate'\r\n : 'Split troppo piccolo per la cache: nessun beneficio, prezzo pieno su ' + aiEditSplitCount + '\r\n chiamate' }}</div>\r\n </ng-template>\r\n </div>\r\n\r\n <div class=\"ai-cost-panel-split\"\r\n matTooltip=\"Numero di split ipotizzati per la stima (1 = nessuno split, altrimenti 3-12: il server non usa mai 2 split)\">\r\n <span class=\"ai-cost-panel-split-label\">Split</span>\r\n <div class=\"ai-cost-panel-split-stepper\">\r\n <button type=\"button\" class=\"ai-cost-split-btn\" [disabled]=\"aiEditSplitCount <= 1\"\r\n (click)=\"decrementAiEditSplitCount()\">\r\n <tmw-icon class=\"mat-icon\" name=\"minus\"></tmw-icon>\r\n </button>\r\n <input type=\"number\" class=\"ai-cost-split-input\" [(ngModel)]=\"aiEditSplitCount\" min=\"1\" max=\"12\" />\r\n <button type=\"button\" class=\"ai-cost-split-btn\" [disabled]=\"aiEditSplitCount >= 12\"\r\n (click)=\"incrementAiEditSplitCount()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n\r\n <!-- Pannello storico richieste -->\r\n <div *ngIf=\"showAiPromptHistory && aiPromptHistory.length > 0\" class=\"ai-history-panel\">\r\n <div class=\"ai-history-panel-title\">\r\n <tmw-icon class=\"mat-icon\" style=\"font-size: 16px; width: 16px; height: 16px\" name=\"history\"></tmw-icon>\r\n <span>Storico richieste</span>\r\n </div>\r\n <div class=\"ai-history-list\">\r\n <div *ngFor=\"let prompt of aiPromptHistory; let i = index\" class=\"ai-history-item\">\r\n <span class=\"ai-history-index\">{{ i + 1 }}</span>\r\n <span class=\"ai-history-text\">{{ prompt }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\r\n <button mat-raised-button type=\"button\" [disabled]=\"aiEditLoading\" (click)=\"closeAiEditDialog()\">\r\n Annulla\r\n </button>\r\n <button mat-raised-button color=\"primary\" type=\"button\" [disabled]=\"!aiEditPrompt?.trim() || aiEditLoading\"\r\n (click)=\"sendAiEdit()\">\r\n <mat-spinner *ngIf=\"aiEditLoading\" diameter=\"18\"\r\n style=\"display: inline-block; margin-right: 6px; vertical-align: middle\"></mat-spinner>\r\n <span>{{ aiEditLoading ? 'Elaborazione...' : (isNewForm ? 'Crea con AI' : 'Modifica con AI') }}</span>\r\n </button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- VISUAL EDITOR \u2014 Tooltip azioni campo -->\r\n<ng-template #dialogVeTooltip>\r\n <div class=\"ve-tooltip-panel\">\r\n <div class=\"ve-tooltip-header\">\r\n <tmw-icon class=\"mat-icon ve-tooltip-icon\" name=\"edit\"></tmw-icon>\r\n <span class=\"ve-tooltip-title\">{{ veSelectedField?.Description }}</span>\r\n <button mat-icon-button (click)=\"dialogVeTooltipRef?.close()\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n </button>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!veShowGraphicInput\">\r\n <button mat-menu-item (click)=\"veEditField()\">\r\n <tmw-icon class=\"mat-icon\" name=\"settings\"></tmw-icon>\r\n Modifica campo\r\n </button>\r\n <button mat-menu-item *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\" (click)=\"veAiEdit()\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n Modifica con IA\r\n </button>\r\n <button mat-menu-item *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\"\r\n (click)=\"veShowGraphicInput = true\">\r\n <tmw-icon class=\"mat-icon\" name=\"palette\"></tmw-icon>\r\n Suggerisci Grafica\r\n </button>\r\n <button mat-menu-item (click)=\"veOpenReorder()\">\r\n <tmw-icon class=\"mat-icon\" name=\"grip-vertical\"></tmw-icon>\r\n Riordina\r\n </button>\r\n <button mat-menu-item (click)=\"veStartSwap()\">\r\n <tmw-icon class=\"mat-icon\" name=\"arrows-left-right\"></tmw-icon>\r\n Scambia\r\n </button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"veDeleteField()\" style=\"color: #e53935;\">\r\n <tmw-icon class=\"mat-icon\" style=\"color: #e53935;\" name=\"trash\"></tmw-icon>\r\n Elimina campo\r\n </button>\r\n </ng-container>\r\n\r\n <div class=\"ve-tooltip-graphic\" *ngIf=\"veShowGraphicInput\">\r\n <div class=\"ve-tooltip-graphic-header\">\r\n <button mat-icon-button (click)=\"veShowGraphicInput = false; veApplyToAllOfType = false\">\r\n <tmw-icon class=\"mat-icon\" name=\"arrow-left\"></tmw-icon>\r\n </button>\r\n <span style=\"flex:1\">Grafica per \"{{ veSelectedField?.Label }}\"</span>\r\n <button type=\"button\" class=\"btn-hint-randomize\" (click)=\"randomizeVeHint()\" matTooltip=\"Suggerimento casuale\">\r\n <tmw-icon class=\"mat-icon\" name=\"bulb\"></tmw-icon>\r\n </button>\r\n </div>\r\n <mat-form-field appearance=\"outline\" class=\"w-100\">\r\n <mat-label>Suggerimento grafico</mat-label>\r\n <textarea matInput [(ngModel)]=\"veGraphicHint\" [ngModelOptions]=\"{standalone: true}\" rows=\"3\"\r\n placeholder=\"es. bordo blu, sfondo semi-trasparente, etichetta in grassetto...\"></textarea>\r\n </mat-form-field>\r\n <div class=\"ve-apply-all-row\">\r\n <mat-slide-toggle [(ngModel)]=\"veApplyToAllOfType\" [ngModelOptions]=\"{standalone: true}\" color=\"primary\">\r\n Applica a tutti i <strong>{{ veSelectedFieldTypeName }}</strong>\r\n </mat-slide-toggle>\r\n </div>\r\n <div class=\"ve-tooltip-graphic-actions\">\r\n <button mat-button (click)=\"veShowGraphicInput = false; veApplyToAllOfType = false\">Annulla</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"veSendGraphic()\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n Invia\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- VISUAL EDITOR \u2014 Riordina campi -->\r\n<ng-template #dialogVeReorder>\r\n <mat-card class=\"ve-reorder-card\">\r\n <div class=\"ve-reorder-header\">\r\n <tmw-icon class=\"mat-icon\" name=\"grip-vertical\"></tmw-icon>\r\n <span>Riordina campi</span>\r\n </div>\r\n <mat-card-content>\r\n <div cdkDropList (cdkDropListDropped)=\"onVeDragDropReorder($event)\" class=\"ve-reorder-list\">\r\n <div *ngFor=\"let field of veReorderFields\" cdkDrag class=\"ve-reorder-item\">\r\n <tmw-icon class=\"mat-icon ve-drag-handle\" cdkDragHandle name=\"grip-vertical\"></tmw-icon>\r\n <span>{{ field.Description }}</span>\r\n <div class=\"ve-drag-placeholder\" *cdkDragPlaceholder></div>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\r\n <button mat-button (click)=\"dialogVeReorderRef?.close()\">Annulla</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"veApplyReorder()\">OK</button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- DIALOG CONTESTUALIZZAZIONE DBGETTER -->\r\n<ng-template #dialogContestualization>\r\n <mat-card style=\"min-width: 420px\">\r\n <mat-card-header class=\"p-2\">\r\n <mat-card-title>Contestualizzazione del DBGetter</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"p-3\">\r\n <tmw-select [arrayData]=\"contestualization\" [(ngModelInput)]=\"selectedContestualization\"\r\n [arrayKeyProperty]=\"'entityTableName'\" [arrayValueProperty]=\"'entityTableName'\"\r\n (ngModelInputChange)=\"onContestualizationSelect()\" [placeholder]=\"'Contestualizzazione del DBGetter'\"\r\n [includeFullObject]=\"false\"></tmw-select>\r\n <div *ngIf=\"selectedContestualization != null\" class=\"mt-2\">\r\n <input matInput class=\"form-control\" [(ngModel)]=\"selectedContestualizationValue\"\r\n (change)=\"onContestualizationSelectValue()\">\r\n </div>\r\n </mat-card-content>\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\r\n <button class=\"btn btn-danger\"\r\n (click)=\"applyContestualization(null); closeContestualizationDialog()\">Rimuovi</button>\r\n <button class=\"btn btn-primary\"\r\n (click)=\"applyContestualization(contestualization); closeContestualizationDialog()\">Applica</button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- MODALE STORICO PROMPT AI -->\r\n<ng-template #dialogAiHistory>\r\n <div class=\"ai-history-dialog\">\r\n <div class=\"ai-dialog-header\">\r\n <tmw-icon class=\"mat-icon\" name=\"history\"></tmw-icon>\r\n <span>Storico richieste AI</span>\r\n <button mat-icon-button type=\"button\" class=\"ai-history-toggle-btn\" (click)=\"dialogAiHistoryRef?.close()\"\r\n matTooltip=\"Chiudi\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n </button>\r\n </div>\r\n <div class=\"ai-history-dialog-body\">\r\n <div *ngFor=\"let prompt of aiPromptHistory; let i = index\" class=\"ai-history-dialog-item\"\r\n [class.ai-history-dialog-item--last]=\"i === aiPromptHistory.length - 1\">\r\n <div class=\"ai-history-dialog-badge\">{{ i + 1 }}</div>\r\n <div class=\"ai-history-dialog-prompt\">\r\n <span class=\"ai-history-dialog-prompt-label\" *ngIf=\"i === aiPromptHistory.length - 1\">Pi\u00F9 recente</span>\r\n <span class=\"ai-history-dialog-prompt-text\">{{ prompt }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"ai-history-dialog-footer\">\r\n <button mat-raised-button color=\"primary\" type=\"button\" (click)=\"dialogAiHistoryRef?.close()\">Chiudi</button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- AI DataGetter: caricamento silent del QueryEditor per popolare DataGetterValue via prompt -->\r\n<div *ngIf=\"aiDataGetterLoading\" style=\"display:none; position:absolute; width:0; height:0; overflow:hidden\"\r\n aria-hidden=\"true\">\r\n <ng-template [appDynamicLoader] [data]=\"QueryEditorComponent\" (out)=\"onAiDataGetterOut($event)\"></ng-template>\r\n</div>", styles: ["@charset \"UTF-8\";.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.mat-mdc-card{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f;--mdc-elevated-card-container-color: #fff}.mat-mdc-card-outlined{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f;--mdc-outlined-card-outline-color: #e0e0e0}.mat-mdc-card-subtitle{color:#0000008a}.mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color: #1e31eb}.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(30, 49, 235, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar .mdc-linear-progress__buffer-bar{background-color:#1e31eb40}.mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color: #ff5252}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(255, 82, 82, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-bar{background-color:#ff525240}.mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color: #c40000}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(196, 0, 0, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-bar{background-color:#c4000040}.mat-mdc-tooltip{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: white}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-floating-label{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input{color:#000000de}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:#0009}}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:#0009}}.mdc-text-field .mdc-text-field__input{caret-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field-character-counter,.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--leading{color:#0000008a}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:#0000008a}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--prefix{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--suffix{color:#0009}.mdc-text-field--filled .mdc-text-field__ripple:before,.mdc-text-field--filled .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, rgba(0, 0, 0, .87))}.mdc-text-field--filled:hover .mdc-text-field__ripple:before,.mdc-text-field--filled.mdc-ripple-surface--hover .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-hover-opacity, .04)}.mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple:before,.mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-focus-opacity, .12)}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#f5f5f5}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:#0000006b}.mdc-text-field--filled:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:#000000de}.mdc-text-field--filled .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:#00000061}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#000000de}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field--outlined .mdc-text-field__ripple:before,.mdc-text-field--outlined .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, transparent)}.mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#1e31ebde}.mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--disabled .mdc-text-field__input{color:#00000061}@media all{.mdc-text-field--disabled .mdc-text-field__input::-moz-placeholder{color:#00000061}.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:#00000061}}@media all{.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:#00000061}}.mdc-text-field--disabled .mdc-floating-label{color:#00000061}.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#00000061}.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#00000061}.mdc-text-field--disabled .mdc-text-field__icon--leading,.mdc-text-field--disabled .mdc-text-field__icon--trailing{color:#0000004d}.mdc-text-field--disabled .mdc-text-field__affix--prefix,.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:#00000061}.mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:#0000000f}.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:#0000000f}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input::-moz-placeholder{color:GrayText}.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:GrayText}.mdc-text-field--disabled .mdc-floating-label{color:GrayText}.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:GrayText}.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:GrayText}.mdc-text-field--disabled .mdc-text-field__icon--leading,.mdc-text-field--disabled .mdc-text-field__icon--trailing,.mdc-text-field--disabled .mdc-text-field__affix--prefix,.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:GrayText}.mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:GrayText}.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:GrayText}}.mdc-text-field--disabled.mdc-text-field--filled{background-color:#fafafa}.mat-mdc-form-field-error{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field-focus-overlay{background-color:#000000de}.mat-mdc-form-field:hover .mat-mdc-form-field-focus-overlay{opacity:.04}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:.12}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix:after{color:#0000008a}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-primary .mat-mdc-form-field-infix:after{color:#1e31ebde}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-accent .mat-mdc-form-field-infix:after{color:#ff5252de}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-warn .mat-mdc-form-field-infix:after{color:#c40000de}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix:after{color:#00000061}.mat-mdc-form-field.mat-accent .mdc-text-field__input{caret-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-accent:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-accent .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#ff5252de}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-warn .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#c40000de}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid transparent}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid transparent}.mat-mdc-form-field-infix{min-height:56px}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:28px}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -34.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:24px;padding-bottom:8px}.mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-select-value{color:#000000de}.mat-mdc-select-placeholder{color:#0009}.mat-mdc-select-disabled .mat-mdc-select-value{color:#00000061}.mat-mdc-select-arrow{color:#0000008a}.mat-mdc-form-field.mat-focused.mat-primary .mat-mdc-select-arrow{color:#1e31ebde}.mat-mdc-form-field.mat-focused.mat-accent .mat-mdc-select-arrow{color:#ff5252de}.mat-mdc-form-field.mat-focused.mat-warn .mat-mdc-select-arrow,.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow{color:#c40000de}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:#00000061}.mat-mdc-dialog-container{--mdc-dialog-container-color: white;--mdc-dialog-with-divider-divider-color: rgba(0, 0, 0, .12);--mdc-dialog-subhead-color: rgba(0, 0, 0, .87);--mdc-dialog-supporting-text-color: rgba(0, 0, 0, .6)}.mat-mdc-standard-chip{--mdc-chip-elevated-container-color: #e0e0e0;--mdc-chip-elevated-disabled-container-color: #e0e0e0;--mdc-chip-label-text-color: #212121;--mdc-chip-disabled-label-text-color: #212121;--mdc-chip-with-icon-icon-color: #212121;--mdc-chip-with-icon-disabled-icon-color: #212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #212121;--mdc-chip-with-trailing-icon-trailing-icon-color: #212121;--mdc-chip-with-icon-selected-icon-color: #212121}.mat-mdc-standard-chip.mat-primary.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-primary.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #1e31eb;--mdc-chip-elevated-disabled-container-color: #1e31eb;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.mat-mdc-standard-chip.mat-accent.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-accent.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #ff5252;--mdc-chip-elevated-disabled-container-color: #ff5252;--mdc-chip-label-text-color: rgba(0, 0, 0, .87);--mdc-chip-disabled-label-text-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-disabled-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-trailing-icon-trailing-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-selected-icon-color: rgba(0, 0, 0, .87)}.mat-mdc-standard-chip.mat-warn.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-warn.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #c40000;--mdc-chip-elevated-disabled-container-color: #c40000;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.mat-mdc-chip-focus-overlay{background:black}.mat-mdc-chip{height:32px}.mat-mdc-slide-toggle{--mdc-switch-disabled-selected-handle-color: #424242;--mdc-switch-disabled-unselected-handle-color: #424242;--mdc-switch-disabled-selected-track-color: #424242;--mdc-switch-disabled-unselected-track-color: #424242;--mdc-switch-unselected-focus-state-layer-color: #424242;--mdc-switch-unselected-pressed-state-layer-color: #424242;--mdc-switch-unselected-hover-state-layer-color: #424242;--mdc-switch-unselected-focus-track-color: #e0e0e0;--mdc-switch-unselected-hover-track-color: #e0e0e0;--mdc-switch-unselected-pressed-track-color: #e0e0e0;--mdc-switch-unselected-track-color: #e0e0e0;--mdc-switch-unselected-focus-handle-color: #212121;--mdc-switch-unselected-hover-handle-color: #212121;--mdc-switch-unselected-pressed-handle-color: #212121;--mdc-switch-handle-surface-color: var(--mdc-theme-surface, #fff);--mdc-switch-unselected-handle-color: #616161;--mdc-switch-selected-icon-color: #fff;--mdc-switch-disabled-selected-icon-color: #fff;--mdc-switch-disabled-unselected-icon-color: #fff;--mdc-switch-unselected-icon-color: #fff}.mat-mdc-slide-toggle .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:#00000061}.mat-mdc-slide-toggle.mat-primary{--mdc-switch-selected-focus-state-layer-color: #3949ab;--mdc-switch-selected-handle-color: #3949ab;--mdc-switch-selected-hover-state-layer-color: #3949ab;--mdc-switch-selected-pressed-state-layer-color: #3949ab;--mdc-switch-selected-focus-handle-color: #1a237e;--mdc-switch-selected-hover-handle-color: #1a237e;--mdc-switch-selected-pressed-handle-color: #1a237e;--mdc-switch-selected-focus-track-color: #7986cb;--mdc-switch-selected-hover-track-color: #7986cb;--mdc-switch-selected-pressed-track-color: #7986cb;--mdc-switch-selected-track-color: #7986cb}.mat-mdc-slide-toggle.mat-accent,.mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color: #e53935;--mdc-switch-selected-handle-color: #e53935;--mdc-switch-selected-hover-state-layer-color: #e53935;--mdc-switch-selected-pressed-state-layer-color: #e53935;--mdc-switch-selected-focus-handle-color: #b71c1c;--mdc-switch-selected-hover-handle-color: #b71c1c;--mdc-switch-selected-pressed-handle-color: #b71c1c;--mdc-switch-selected-focus-track-color: #e57373;--mdc-switch-selected-hover-track-color: #e57373;--mdc-switch-selected-pressed-track-color: #e57373;--mdc-switch-selected-track-color: #e57373}.mat-mdc-slide-toggle{--mdc-switch-state-layer-size: 48px}.mat-mdc-radio-button .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #1e31eb;--mdc-radio-selected-hover-icon-color: #1e31eb;--mdc-radio-selected-icon-color: #1e31eb;--mdc-radio-selected-pressed-icon-color: #1e31eb;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #1e31eb}.mat-mdc-radio-button.mat-primary .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff5252;--mdc-radio-selected-hover-icon-color: #ff5252;--mdc-radio-selected-icon-color: #ff5252;--mdc-radio-selected-pressed-icon-color: #ff5252;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #ff5252}.mat-mdc-radio-button.mat-accent .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #c40000;--mdc-radio-selected-hover-icon-color: #c40000;--mdc-radio-selected-icon-color: #c40000;--mdc-radio-selected-pressed-icon-color: #c40000;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #c40000}.mat-mdc-radio-button.mat-warn .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button .mdc-radio{padding:10px}.mat-mdc-radio-button .mdc-radio .mdc-radio__background:before{top:-10px;left:-10px;width:40px;height:40px}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control{top:0;right:0;left:0;width:40px;height:40px}.mat-mdc-slider{--mdc-slider-label-container-color: black;--mdc-slider-label-label-text-color: white;--mdc-slider-disabled-handle-color: #000;--mdc-slider-disabled-active-track-color: #000;--mdc-slider-disabled-inactive-track-color: #000;--mdc-slider-with-tick-marks-disabled-container-color: #000;--mat-mdc-slider-value-indicator-opacity: .6}.mat-mdc-slider.mat-primary{--mdc-slider-handle-color: #1e31eb;--mdc-slider-focus-handle-color: #1e31eb;--mdc-slider-hover-handle-color: #1e31eb;--mdc-slider-active-track-color: #1e31eb;--mdc-slider-inactive-track-color: #1e31eb;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #1e31eb;--mat-mdc-slider-ripple-color: #1e31eb;--mat-mdc-slider-hover-ripple-color: rgba(30, 49, 235, .05);--mat-mdc-slider-focus-ripple-color: rgba(30, 49, 235, .2)}.mat-mdc-slider.mat-accent{--mdc-slider-handle-color: #ff5252;--mdc-slider-focus-handle-color: #ff5252;--mdc-slider-hover-handle-color: #ff5252;--mdc-slider-active-track-color: #ff5252;--mdc-slider-inactive-track-color: #ff5252;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #ff5252;--mat-mdc-slider-ripple-color: #ff5252;--mat-mdc-slider-hover-ripple-color: rgba(255, 82, 82, .05);--mat-mdc-slider-focus-ripple-color: rgba(255, 82, 82, .2)}.mat-mdc-slider.mat-warn{--mdc-slider-handle-color: #c40000;--mdc-slider-focus-handle-color: #c40000;--mdc-slider-hover-handle-color: #c40000;--mdc-slider-active-track-color: #c40000;--mdc-slider-inactive-track-color: #c40000;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #c40000;--mat-mdc-slider-ripple-color: #c40000;--mat-mdc-slider-hover-ripple-color: rgba(196, 0, 0, .05);--mat-mdc-slider-focus-ripple-color: rgba(196, 0, 0, .2)}.mdc-menu-surface{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;background-color:var(--mdc-theme-surface, #fff);color:var(--mdc-theme-on-surface, #000)}.mdc-list-item__primary-text{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mdc-list-item__secondary-text{color:var(--mdc-theme-text-secondary-on-background, rgba(0, 0, 0, .54))}.mdc-list-item__overline-text{color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, .38))}.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-trailing-icon .mdc-list-item__end{background-color:transparent}.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-trailing-icon .mdc-list-item__end{color:var(--mdc-theme-text-icon-on-background, rgba(0, 0, 0, .38))}.mdc-list-item__end{color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, .38))}.mdc-list-item--disabled .mdc-list-item__start,.mdc-list-item--disabled .mdc-list-item__content,.mdc-list-item--disabled .mdc-list-item__end{opacity:.38}.mdc-list-item--disabled .mdc-list-item__primary-text,.mdc-list-item--disabled .mdc-list-item__secondary-text,.mdc-list-item--disabled .mdc-list-item__overline-text,.mdc-list-item--disabled.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--disabled.mdc-list-item--with-trailing-icon .mdc-list-item__end,.mdc-list-item--disabled.mdc-list-item--with-trailing-meta .mdc-list-item__end{color:var(--mdc-theme-on-surface, #000)}.mdc-list-item--selected .mdc-list-item__primary-text,.mdc-list-item--activated .mdc-list-item__primary-text,.mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:var(--mdc-theme-primary, #1e31eb)}.mdc-deprecated-list-group__subheader{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mdc-list-divider:after{border-bottom-color:#fff}.mdc-list-divider{background-color:#0000001f}.mat-mdc-menu-item[disabled],.mat-mdc-menu-item[disabled] .mat-mdc-menu-submenu-icon,.mat-mdc-menu-item[disabled] .mat-icon-no-color{color:var(--mdc-theme-text-disabled-on-background, rgba(0, 0, 0, .38))}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-submenu-icon{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-menu-item:hover:not([disabled]),.mat-mdc-menu-item.cdk-program-focused:not([disabled]),.mat-mdc-menu-item.cdk-keyboard-focused:not([disabled]),.mat-mdc-menu-item-highlighted:not([disabled]){background:rgba(0,0,0,.04)}.mat-mdc-list-base{--mdc-list-list-item-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-supporting-text-color: rgba(0, 0, 0, .54);--mdc-list-list-item-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-supporting-text-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-selected-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-disabled-label-text-color: black;--mdc-list-list-item-disabled-leading-icon-color: black;--mdc-list-list-item-disabled-trailing-icon-color: black;--mdc-list-list-item-hover-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-hover-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-focus-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-state-layer-color: black;--mdc-list-list-item-hover-state-layer-opacity: .04;--mdc-list-list-item-focus-state-layer-color: black;--mdc-list-list-item-focus-state-layer-opacity: .12}.mat-mdc-list-option .mdc-list-item__start,.mat-mdc-list-option .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #1e31eb;--mdc-checkbox-selected-hover-icon-color: #1e31eb;--mdc-checkbox-selected-icon-color: #1e31eb;--mdc-checkbox-selected-pressed-icon-color: #1e31eb;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option .mdc-list-item__start,.mat-mdc-list-option .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #1e31eb;--mdc-radio-selected-hover-icon-color: #1e31eb;--mdc-radio-selected-icon-color: #1e31eb;--mdc-radio-selected-pressed-icon-color: #1e31eb;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #1e31eb}.mat-mdc-list-option .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-option.mat-accent .mdc-list-item__start,.mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff5252;--mdc-checkbox-selected-hover-icon-color: #ff5252;--mdc-checkbox-selected-icon-color: #ff5252;--mdc-checkbox-selected-pressed-icon-color: #ff5252;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option.mat-accent .mdc-list-item__start,.mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff5252;--mdc-radio-selected-hover-icon-color: #ff5252;--mdc-radio-selected-icon-color: #ff5252;--mdc-radio-selected-pressed-icon-color: #ff5252;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #ff5252}.mat-mdc-list-option.mat-accent .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option.mat-accent .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-option.mat-warn .mdc-list-item__start,.mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #c40000;--mdc-checkbox-selected-hover-icon-color: #c40000;--mdc-checkbox-selected-icon-color: #c40000;--mdc-checkbox-selected-pressed-icon-color: #c40000;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option.mat-warn .mdc-list-item__start,.mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #c40000;--mdc-radio-selected-hover-icon-color: #c40000;--mdc-radio-selected-icon-color: #c40000;--mdc-radio-selected-pressed-icon-color: #c40000;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #c40000}.mat-mdc-list-option.mat-warn .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option.mat-warn .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:#1e31eb}.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end{opacity:1}.mat-mdc-list-base{--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}.mat-mdc-paginator{background:white;color:#000000de}.mat-mdc-paginator-icon{fill:#0000008a}.mat-mdc-paginator-decrement,.mat-mdc-paginator-increment{border-top:2px solid rgba(0,0,0,.54);border-right:2px solid rgba(0,0,0,.54)}.mat-mdc-paginator-first,.mat-mdc-paginator-last{border-top:2px solid rgba(0,0,0,.54)}.mat-mdc-icon-button[disabled] .mat-mdc-paginator-decrement,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-increment,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-first,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-last{border-color:#0000001f}.mat-mdc-icon-button[disabled] .mat-mdc-paginator-icon{fill:#0000001f}.mat-mdc-paginator .mat-mdc-form-field-infix{min-height:40px}.mat-mdc-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:20px}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -26.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label{display:none}.mat-mdc-paginator-container{min-height:56px}.mat-mdc-tab,.mat-mdc-tab-link{background-color:transparent}.mat-mdc-tab .mdc-tab__text-label,.mat-mdc-tab-link .mdc-tab__text-label{color:#0009}.mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__ripple:before,.mat-mdc-tab.mat-mdc-tab-disabled .mat-ripple-element,.mat-mdc-tab-link.mat-mdc-tab-disabled .mdc-tab__ripple:before,.mat-mdc-tab-link.mat-mdc-tab-disabled .mat-ripple-element{background-color:#00000061}.mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#1e31eb}.mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #1e31eb)}.mdc-tab__ripple:before,.mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-link .mat-ripple-element{background-color:#1e31eb}.mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#ff5252}.mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #ff5252)}.mat-mdc-tab-group.mat-accent .mdc-tab__ripple:before,.mat-mdc-tab-group.mat-accent .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mdc-tab__ripple:before,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link .mat-ripple-element{background-color:#ff5252}.mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#c40000}.mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #c40000)}.mat-mdc-tab-group.mat-warn .mdc-tab__ripple:before,.mat-mdc-tab-group.mat-warn .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mdc-tab__ripple:before,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link .mat-ripple-element{background-color:#c40000}.mat-mdc-tab-group.mat-background-primary,.mat-mdc-tab-nav-bar.mat-background-primary{--mat-mdc-tab-header-with-background-background-color: #1e31eb;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-group.mat-background-accent,.mat-mdc-tab-nav-bar.mat-background-accent{--mat-mdc-tab-header-with-background-background-color: #ff5252;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-group.mat-background-warn,.mat-mdc-tab-nav-bar.mat-background-warn{--mat-mdc-tab-header-with-background-background-color: #c40000;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-header-pagination-chevron{border-color:var(--mdc-theme-on-surface, #000)}.mat-mdc-tab-header .mdc-tab{height:48px}.mat-mdc-checkbox .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-checkbox .mat-ripple-element{background-color:#0000001a}.mat-mdc-checkbox .mdc-checkbox__ripple{background:#000}.mat-mdc-checkbox.mat-primary{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #1e31eb;--mdc-checkbox-selected-hover-icon-color: #1e31eb;--mdc-checkbox-selected-icon-color: #1e31eb;--mdc-checkbox-selected-pressed-icon-color: #1e31eb;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#1e31eb1a}.mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#1e31eb}.mat-mdc-checkbox.mat-accent{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff5252;--mdc-checkbox-selected-hover-icon-color: #ff5252;--mdc-checkbox-selected-icon-color: #ff5252;--mdc-checkbox-selected-pressed-icon-color: #ff5252;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#ff52521a}.mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#ff5252}.mat-mdc-checkbox.mat-warn{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #c40000;--mdc-checkbox-selected-hover-icon-color: #c40000;--mdc-checkbox-selected-icon-color: #c40000;--mdc-checkbox-selected-pressed-icon-color: #c40000;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#c400001a}.mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#c40000}.mat-mdc-checkbox-disabled label{color:#00000061}.mat-mdc-checkbox .mdc-checkbox{padding:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);margin:calc((var(--mdc-checkbox-touch-target-size, 40px) - 40px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__background{top:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);left:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control{top:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);right:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);left:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);width:var(--mdc-checkbox-touch-target-size, 40px);height:var(--mdc-checkbox-touch-target-size, 40px)}.mat-mdc-button.mat-unthemed{--mdc-text-button-label-text-color: #000}.mat-mdc-button.mat-primary{--mdc-text-button-label-text-color: #1e31eb}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: #ff5252}.mat-mdc-button.mat-warn{--mdc-text-button-label-text-color: #c40000}.mat-mdc-button[disabled][disabled]{--mdc-text-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-text-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-unelevated-button.mat-unthemed{--mdc-filled-button-container-color: #fff;--mdc-filled-button-label-text-color: #000}.mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color: #1e31eb;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color: #ff5252;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color: #c40000;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button[disabled][disabled]{--mdc-filled-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-button-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-raised-button.mat-unthemed{--mdc-protected-button-container-color: #fff;--mdc-protected-button-label-text-color: #000}.mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color: #1e31eb;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color: #ff5252;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color: #c40000;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button[disabled][disabled]{--mdc-protected-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-elevation: 0}.mat-mdc-outlined-button{--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-unthemed{--mdc-outlined-button-label-text-color: #000}.mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color: #1e31eb}.mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color: #ff5252}.mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color: #c40000}.mat-mdc-outlined-button[disabled][disabled]{--mdc-outlined-button-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-button-disabled-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button.mat-primary,.mat-mdc-outlined-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #1e31eb;--mat-mdc-button-ripple-color: rgba(30, 49, 235, .1)}.mat-mdc-button.mat-accent,.mat-mdc-outlined-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff5252;--mat-mdc-button-ripple-color: rgba(255, 82, 82, .1)}.mat-mdc-button.mat-warn,.mat-mdc-outlined-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #c40000;--mat-mdc-button-ripple-color: rgba(196, 0, 0, .1)}.mat-mdc-raised-button,.mat-mdc-unelevated-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button.mat-primary,.mat-mdc-unelevated-button.mat-primary,.mat-mdc-raised-button.mat-accent,.mat-mdc-unelevated-button.mat-accent,.mat-mdc-raised-button.mat-warn,.mat-mdc-unelevated-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-button.mat-mdc-button-base,.mat-mdc-raised-button.mat-mdc-button-base,.mat-mdc-unelevated-button.mat-mdc-button-base,.mat-mdc-outlined-button.mat-mdc-button-base{height:36px}.mat-mdc-icon-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #1e31eb;--mat-mdc-button-ripple-color: rgba(30, 49, 235, .1)}.mat-mdc-icon-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff5252;--mat-mdc-button-ripple-color: rgba(255, 82, 82, .1)}.mat-mdc-icon-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #c40000;--mat-mdc-button-ripple-color: rgba(196, 0, 0, .1)}.mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color: #1e31eb}.mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color: #ff5252}.mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color: #c40000}.mat-mdc-icon-button[disabled][disabled]{--mdc-icon-button-icon-color: rgba(0, 0, 0, .38);--mdc-icon-button-disabled-icon-color: rgba(0, 0, 0, .38)}.mat-mdc-icon-button.mat-mdc-button-base{width:48px;height:48px;padding:12px}.mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:4px}.mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%,-50%)}.mat-mdc-fab,.mat-mdc-mini-fab{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-fab:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary,.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent,.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-fab.mat-unthemed,.mat-mdc-mini-fab.mat-unthemed{--mdc-fab-container-color: #fff;--mdc-fab-icon-color: #000;--mat-mdc-fab-color: #000}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary{--mdc-fab-container-color: #1e31eb;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent{--mdc-fab-container-color: #ff5252;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mdc-fab-container-color: #c40000;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab[disabled][disabled],.mat-mdc-mini-fab[disabled][disabled]{--mdc-fab-container-color: rgba(0, 0, 0, .12);--mdc-fab-icon-color: rgba(0, 0, 0, .38);--mat-mdc-fab-color: rgba(0, 0, 0, .38)}.mat-mdc-snack-bar-container{--mat-mdc-snack-bar-button-color: #ff5252;--mdc-snackbar-container-color: #333333;--mdc-snackbar-supporting-text-color: rgba(255, 255, 255, .87)}.mdc-data-table{background-color:var(--mdc-theme-surface, #fff);border-color:#0000001f}.mdc-data-table__row{background-color:inherit}.mdc-data-table__header-cell{background-color:var(--mdc-theme-surface, #fff)}.mdc-data-table__row--selected{background-color:#1e31eb0a}.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__leading,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__notch,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__trailing{border-color:#0000001f}.mdc-data-table__cell,.mdc-data-table__header-cell{border-bottom-color:#0000001f}.mdc-data-table__pagination{border-top-color:#0000001f}.mdc-data-table__row:not(.mdc-data-table__row--selected):hover{background-color:#0000000a}.mdc-data-table__header-cell,.mdc-data-table__pagination-total,.mdc-data-table__pagination-rows-per-page-label,.mdc-data-table__cell{color:#000000de}.mat-mdc-table{background:white}.mat-mdc-table .mdc-data-table__row{height:52px}.mat-mdc-table .mdc-data-table__pagination{min-height:52px}.mat-mdc-table .mdc-data-table__header-row{height:56px}.mat-mdc-progress-spinner{--mdc-circular-progress-active-indicator-color: #1e31eb}.mat-mdc-progress-spinner.mat-accent{--mdc-circular-progress-active-indicator-color: #ff5252}.mat-mdc-progress-spinner.mat-warn{--mdc-circular-progress-active-indicator-color: #c40000}.mat-badge{position:relative}.mat-badge.mat-badge{overflow:visible}.mat-badge-hidden .mat-badge-content{display:none}.mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform .2s ease-in-out;transform:scale(.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none}.ng-animate-disabled .mat-badge-content,.mat-badge-content._mat-animation-noopable{transition:none}.mat-badge-content.mat-badge-active{transform:none}.mat-badge-small .mat-badge-content{width:16px;height:16px;line-height:16px}.mat-badge-small.mat-badge-above .mat-badge-content{top:-8px}.mat-badge-small.mat-badge-below .mat-badge-content{bottom:-8px}.mat-badge-small.mat-badge-before .mat-badge-content{left:-16px}[dir=rtl] .mat-badge-small.mat-badge-before .mat-badge-content{left:auto;right:-16px}.mat-badge-small.mat-badge-after .mat-badge-content{right:-16px}[dir=rtl] .mat-badge-small.mat-badge-after .mat-badge-content{right:auto;left:-16px}.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-8px}.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-8px}.mat-badge-medium .mat-badge-content{width:22px;height:22px;line-height:22px}.mat-badge-medium.mat-badge-above .mat-badge-content{top:-11px}.mat-badge-medium.mat-badge-below .mat-badge-content{bottom:-11px}.mat-badge-medium.mat-badge-before .mat-badge-content{left:-22px}[dir=rtl] .mat-badge-medium.mat-badge-before .mat-badge-content{left:auto;right:-22px}.mat-badge-medium.mat-badge-after .mat-badge-content{right:-22px}[dir=rtl] .mat-badge-medium.mat-badge-after .mat-badge-content{right:auto;left:-22px}.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-11px}.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-11px}.mat-badge-large .mat-badge-content{width:28px;height:28px;line-height:28px}.mat-badge-large.mat-badge-above .mat-badge-content{top:-14px}.mat-badge-large.mat-badge-below .mat-badge-content{bottom:-14px}.mat-badge-large.mat-badge-before .mat-badge-content{left:-28px}[dir=rtl] .mat-badge-large.mat-badge-before .mat-badge-content{left:auto;right:-28px}.mat-badge-large.mat-badge-after .mat-badge-content{right:-28px}[dir=rtl] .mat-badge-large.mat-badge-after .mat-badge-content{right:auto;left:-28px}.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-14px}.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-14px}.mat-badge-content{color:#fff;background:#1e31eb}.cdk-high-contrast-active .mat-badge-content{outline:solid 1px;border-radius:0}.mat-badge-accent .mat-badge-content{background:#ff5252;color:#000000de}.mat-badge-warn .mat-badge-content{color:#fff;background:#c40000}.mat-badge-disabled .mat-badge-content{background:#b9b9b9;color:#00000061}.mat-bottom-sheet-container{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f;background:white;color:#000000de}.mat-button-toggle-standalone:not([class*=mat-elevation-z]),.mat-button-toggle-group:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard:not([class*=mat-elevation-z]),.mat-button-toggle-group-appearance-standard:not([class*=mat-elevation-z]){box-shadow:none}.mat-button-toggle{color:#00000061}.mat-button-toggle .mat-button-toggle-focus-overlay{background-color:#0000001f}.mat-button-toggle-appearance-standard{color:#000000de;background:white}.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{background-color:#000}.mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:solid 1px #e0e0e0}[dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:solid 1px #e0e0e0}.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:none;border-top:solid 1px #e0e0e0}.mat-button-toggle-checked{background-color:#e0e0e0;color:#0000008a}.mat-button-toggle-checked.mat-button-toggle-appearance-standard{color:#000000de}.mat-button-toggle-disabled{color:#00000042;background-color:#eee}.mat-button-toggle-disabled.mat-button-toggle-appearance-standard{background:white}.mat-button-toggle-disabled.mat-button-toggle-checked{background-color:#bdbdbd}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border:solid 1px #e0e0e0}.mat-button-toggle-appearance-standard .mat-button-toggle-label-content{line-height:48px}.mat-calendar-arrow{fill:#0000008a}.mat-datepicker-toggle,.mat-datepicker-content .mat-calendar-next-button,.mat-datepicker-content .mat-calendar-previous-button{color:#0000008a}.mat-calendar-table-header-divider:after{background:rgba(0,0,0,.12)}.mat-calendar-table-header,.mat-calendar-body-label{color:#0000008a}.mat-calendar-body-cell-content,.mat-date-range-input-separator{color:#000000de;border-color:transparent}.mat-calendar-body-disabled>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){color:#00000061}.mat-form-field-disabled .mat-date-range-input-separator{color:#00000061}.mat-calendar-body-in-preview{color:#0000003d}.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#00000061}.mat-calendar-body-disabled>.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#0000002e}.mat-calendar-body-in-range:before{background:rgba(30,49,235,.2)}.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-calendar-body-comparison-bridge-start:before,[dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(30,49,235,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-calendar-body-comparison-bridge-end:before,[dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(30,49,235,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-calendar-body-selected{background-color:#1e31eb;color:#fff}.mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#1e31eb66}.mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#1e31eb4d}@media (hover: hover){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#1e31eb4d}}.mat-datepicker-content{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f;background-color:#fff;color:#000000de}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range:before{background:rgba(255,82,82,.2)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-start:before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(255,82,82,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-end:before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(255,82,82,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-accent .mat-calendar-body-selected{background-color:#ff5252;color:#000000de}.mat-datepicker-content.mat-accent .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#ff525266}.mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #000000de}.mat-datepicker-content.mat-accent .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#ff52524d}@media (hover: hover){.mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#ff52524d}}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range:before{background:rgba(196,0,0,.2)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-start:before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(196,0,0,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-end:before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(196,0,0,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-warn .mat-calendar-body-selected{background-color:#c40000;color:#fff}.mat-datepicker-content.mat-warn .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#c4000066}.mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#c400004d}@media (hover: hover){.mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#c400004d}}.mat-datepicker-content-touch{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-datepicker-toggle-active{color:#1e31eb}.mat-datepicker-toggle-active.mat-accent{color:#ff5252}.mat-datepicker-toggle-active.mat-warn{color:#c40000}.mat-date-range-input-inner[disabled]{color:#00000061}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{width:40px;height:40px;padding:8px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:0}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:40px;left:50%;width:40px;transform:translate(-50%,-50%)}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target{display:none}.mat-divider{border-top-color:#0000001f}.mat-divider-vertical{border-right-color:#0000001f}.mat-expansion-panel{background:white;color:#000000de}.mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-action-row{border-top-color:#0000001f}.mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled=true]),.mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled=true]),.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true]){background:rgba(0,0,0,.04)}@media (hover: none){.mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover{background:white}}.mat-expansion-panel-header-title{color:#000000de}.mat-expansion-panel-header-description,.mat-expansion-indicator:after{color:#0000008a}.mat-expansion-panel-header[aria-disabled=true]{color:#00000042}.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description{color:inherit}.mat-expansion-panel-header{height:48px}.mat-expansion-panel-header.mat-expanded{height:64px}.mat-icon.mat-primary{color:#1e31eb}.mat-icon.mat-accent{color:#ff5252}.mat-icon.mat-warn{color:#c40000}.mat-drawer-container{background-color:#fafafa;color:#000000de}.mat-drawer{background-color:#fff;color:#000000de}.mat-drawer.mat-drawer-push{background-color:#fff}.mat-drawer:not(.mat-drawer-side){box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-drawer-side{border-right:solid 1px rgba(0,0,0,.12)}.mat-drawer-side.mat-drawer-end,[dir=rtl] .mat-drawer-side{border-left:solid 1px rgba(0,0,0,.12);border-right:none}[dir=rtl] .mat-drawer-side.mat-drawer-end{border-left:none;border-right:solid 1px rgba(0,0,0,.12)}.mat-drawer-backdrop.mat-drawer-shown{background-color:#0009}.mat-step-header.cdk-keyboard-focused,.mat-step-header.cdk-program-focused,.mat-step-header:hover:not([aria-disabled]),.mat-step-header:hover[aria-disabled=false]{background-color:#0000000a}.mat-step-header:hover[aria-disabled=true]{cursor:default}@media (hover: none){.mat-step-header:hover{background:none}}.mat-step-header .mat-step-label,.mat-step-header .mat-step-optional{color:#0000008a}.mat-step-header .mat-step-icon{background-color:#0000008a;color:#fff}.mat-step-header .mat-step-icon-selected,.mat-step-header .mat-step-icon-state-done,.mat-step-header .mat-step-icon-state-edit{background-color:#1e31eb;color:#fff}.mat-step-header.mat-accent .mat-step-icon{color:#000000de}.mat-step-header.mat-accent .mat-step-icon-selected,.mat-step-header.mat-accent .mat-step-icon-state-done,.mat-step-header.mat-accent .mat-step-icon-state-edit{background-color:#ff5252;color:#000000de}.mat-step-header.mat-warn .mat-step-icon{color:#fff}.mat-step-header.mat-warn .mat-step-icon-selected,.mat-step-header.mat-warn .mat-step-icon-state-done,.mat-step-header.mat-warn .mat-step-icon-state-edit{background-color:#c40000;color:#fff}.mat-step-header .mat-step-icon-state-error{background-color:transparent;color:#c40000}.mat-step-header .mat-step-label.mat-step-label-active{color:#000000de}.mat-step-header .mat-step-label.mat-step-label-error{color:#c40000}.mat-stepper-horizontal,.mat-stepper-vertical{background-color:#fff}.mat-stepper-vertical-line:before{border-left-color:#0000001f}.mat-horizontal-stepper-header:before,.mat-horizontal-stepper-header:after,.mat-stepper-horizontal-line{border-top-color:#0000001f}.mat-horizontal-stepper-header{height:72px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header,.mat-vertical-stepper-header{padding:24px}.mat-stepper-vertical-line:before{top:-16px;bottom:-16px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:after,.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:before{top:36px}.mat-stepper-label-position-bottom .mat-stepper-horizontal-line{top:36px}.mat-sort-header-arrow{color:#757575}.mat-toolbar{background:whitesmoke;color:#000000de}.mat-toolbar.mat-primary{background:#1e31eb;color:#fff}.mat-toolbar.mat-accent{background:#ff5252;color:#000000de}.mat-toolbar.mat-warn{background:#c40000;color:#fff}.mat-toolbar .mat-form-field-underline,.mat-toolbar .mat-form-field-ripple,.mat-toolbar .mat-focused .mat-form-field-ripple{background-color:currentColor}.mat-toolbar .mat-form-field-label,.mat-toolbar .mat-focused .mat-form-field-label,.mat-toolbar .mat-select-value,.mat-toolbar .mat-select-arrow,.mat-toolbar .mat-form-field.mat-focused .mat-select-arrow{color:inherit}.mat-toolbar .mat-input-element{caret-color:currentColor}.mat-toolbar-multiple-rows{min-height:64px}.mat-toolbar-row,.mat-toolbar-single-row{height:64px}@media (max-width: 599px){.mat-toolbar-multiple-rows{min-height:56px}.mat-toolbar-row,.mat-toolbar-single-row{height:56px}}.mat-tree{background:white}.mat-tree-node,.mat-nested-tree-node{color:#000000de}.mat-tree-node{min-height:48px}.mat-ripple-element{background-color:#0000001a}.mat-mdc-option{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-option:hover:not(.mdc-list-item--disabled),.mat-mdc-option:focus:not(.mdc-list-item--disabled),.mat-mdc-option.mat-mdc-option-active,.mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple):not(.mdc-list-item--disabled){background:rgba(0,0,0,.04)}.mat-primary .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-primary, #1e31eb)}.mat-accent .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-secondary, #ff5252)}.mat-warn .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-error, #c40000)}.mat-mdc-optgroup-label{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-pseudo-checkbox-full{color:#0000008a}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{color:#b0b0b0}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#1e31eb}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#1e31eb}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff5252}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff5252}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff5252}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff5252}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#c40000}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#c40000}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#b0b0b0}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#b0b0b0}.mat-app-background{background-color:#fafafa;color:#000000de}.mat-elevation-z0,.mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.mat-elevation-z1,.mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.mat-elevation-z2,.mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-elevation-z3,.mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-elevation-z4,.mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.mat-elevation-z5,.mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.mat-elevation-z6,.mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.mat-elevation-z7,.mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.mat-elevation-z8,.mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mat-elevation-z9,.mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.mat-elevation-z10,.mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.mat-elevation-z11,.mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.mat-elevation-z12,.mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.mat-elevation-z13,.mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.mat-elevation-z14,.mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.mat-elevation-z15,.mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.mat-elevation-z16,.mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-elevation-z17,.mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.mat-elevation-z18,.mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.mat-elevation-z19,.mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.mat-elevation-z20,.mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.mat-elevation-z21,.mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.mat-elevation-z22,.mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.mat-elevation-z23,.mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.mat-elevation-z24,.mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-theme-loaded-marker{display:none}:host{--conf-gradient: linear-gradient(to right, #1E31EB, #693DDA);--conf-bg-page: #F9F9FA;--conf-radius: 10px;--conf-modal-radius: 10px;--conf-accent: #693DDA;--conf-accent-rgb: 105, 61, 218;--conf-primary: #1E31EB;--conf-primary-rgb: 30, 49, 235;--conf-step-selected: #643cda;--conf-step-edit: #3034e7;--conf-table-header-bg: #EBEBEB;--conf-search-bg: #EBEBEB;--conf-table-bg: #ffffff;--conf-card-bg: #ffffff;--conf-font-family: inherit;--conf-stepper-header-bg: var(--conf-bg-page);--conf-stepper-content-bg: var(--conf-bg-page);--conf-step-icon-edit-bg: var(--conf-step-edit);--conf-hint-btn-bg: #2563eb;--conf-hint-btn-hover-bg: #1d4ed8;--conf-btn-color: #ffffff;--conf-step-icon-bg: linear-gradient(.33turn, #BFBFBF, #606060);--conf-step-icon-color: #ffffff;--conf-step-connector-bg: #ebebeb;--conf-addbtn-bg: #ebebeb;--conf-input-bg: #ffffff;--conf-input-color: rgba(0, 0, 0, .87);--conf-tmwselect-bg: #ffffff;--conf-tmwselect-color: rgba(0, 0, 0, .87);font-family:var(--conf-font-family)}.dynamic-module-preview{--conf-gradient: linear-gradient(to right, #1E31EB, #693DDA);--conf-bg-page: #F9F9FA;--conf-radius: 10px;--conf-modal-radius: 10px;--conf-accent: #693DDA;--conf-accent-rgb: 105, 61, 218;--conf-primary: #1E31EB;--conf-primary-rgb: 30, 49, 235;--conf-step-selected: #643cda;--conf-step-edit: #3034e7;--conf-table-header-bg: #EBEBEB;--conf-search-bg: #EBEBEB;--conf-table-bg: #ffffff;--conf-card-bg: #ffffff;--conf-font-family: inherit;--conf-stepper-header-bg: var(--conf-bg-page);--conf-stepper-content-bg: var(--conf-bg-page);--conf-step-icon-edit-bg: var(--conf-step-edit);--conf-hint-btn-bg: #2563eb;--conf-hint-btn-hover-bg: #1d4ed8;--conf-btn-color: #ffffff;--conf-step-icon-bg: linear-gradient(.33turn, #BFBFBF, #606060);--conf-step-icon-color: #ffffff;--conf-step-connector-bg: #ebebeb;--conf-addbtn-bg: #ebebeb;--conf-input-bg: #ffffff;--conf-input-color: rgba(0, 0, 0, .87);--conf-tmwselect-bg: #ffffff;--conf-tmwselect-color: rgba(0, 0, 0, .87);--tmw-select-add-modal-bg: var(--conf-tmwselect-bg);--tmw-select-arrow-bg: initial;--tmw-select-arrow-border-radius: initial;--tmw-select-arrow-color: initial;--tmw-select-arrow-height: initial;--tmw-select-bg: var(--conf-tmwselect-bg);--tmw-select-border-color: initial;--tmw-select-border-color-hover: initial;--tmw-select-border-radius: initial;--tmw-select-border-width: initial;--tmw-select-clear-border-radius: initial;--tmw-select-clear-color: initial;--tmw-select-clear-color-bg: initial;--tmw-select-clear-height: initial;--tmw-select-disabled-bg: initial;--tmw-select-disabled-border-color: initial;--tmw-select-disabled-color: initial;--tmw-select-focus-border-color: initial;--tmw-select-focus-label-color: initial;--tmw-select-font-family: initial;--tmw-select-font-size-label: initial;--tmw-select-font-size-value: initial;--tmw-select-height: initial;--tmw-select-label-bg: var(--conf-tmwselect-bg);--tmw-select-label-color: var(--conf-tmwselect-color);--tmw-select-option-bg: var(--conf-tmwselect-bg);--tmw-select-option-check-color: initial;--tmw-select-option-color: var(--conf-tmwselect-color);--tmw-select-option-highlighted-bg: initial;--tmw-select-option-hover-bg: initial;--tmw-select-option-hover-color: initial;--tmw-select-option-selected-bg: initial;--tmw-select-option-selected-color: initial;--tmw-select-padding-x: initial;--tmw-select-panel-bg: var(--conf-tmwselect-bg);--tmw-select-panel-border-radius: initial;--tmw-select-panel-max-height: initial;--tmw-select-panel-shadow: initial;--tmw-select-panel-z-index: initial;--tmw-select-required-color: initial;--tmw-select-search-bg: var(--conf-tmwselect-bg);--tmw-select-search-color: var(--conf-tmwselect-color);--tmw-select-toolbar-bg: initial;--tmw-select-toolbar-border-color: initial;--tmw-select-toolbar-border-radius: initial;--tmw-select-toolbar-border-width: initial;--tmw-select-toolbar-btn-active-bg: initial;--tmw-select-toolbar-btn-bg: initial;--tmw-select-toolbar-btn-border-color: initial;--tmw-select-toolbar-btn-border-radius: initial;--tmw-select-toolbar-btn-border-width: initial;--tmw-select-toolbar-btn-color: initial;--tmw-select-toolbar-btn-disabled-opacity: initial;--tmw-select-toolbar-btn-hover-bg: initial;--tmw-select-toolbar-btn-margin-right: initial;--tmw-select-toolbar-btn-size: initial;--tmw-select-toolbar-gap: initial;--tmw-select-toolbar-icon-size: initial;--tmw-select-value-color: var(--conf-tmwselect-color);--tmw-table-accent-color: initial;--tmw-table-border-color: initial;--tmw-table-bulk-bar-bg: initial;--tmw-table-bulk-bar-color: initial;--tmw-table-cell-padding: initial;--tmw-table-grid-template: initial;--tmw-table-header-bg: initial;--tmw-table-header-border-width: initial;--tmw-table-header-color: initial;--tmw-table-header-font-family: initial;--tmw-table-header-font-size: initial;--tmw-table-outer-border-width: initial;--tmw-table-radius: initial;--tmw-table-row-bg: initial;--tmw-table-row-hover-bg: initial;--tmw-table-scrollbar-size: initial;--tmw-table-scrollbar-thumb-bg: initial;--tmw-table-scrollbar-thumb-border-color: initial;--tmw-table-scrollbar-thumb-border-width: initial;--tmw-table-scrollbar-thumb-hover-bg: initial;--tmw-table-scrollbar-thumb-radius: initial;--tmw-table-scrollbar-track-bg: initial;--tmw-table-scrollbar-track-radius: initial;--tmw-table-search-bg: initial;--tmw-table-search-border-color: initial;--tmw-table-search-color: initial;--tmw-table-toolbar-bg: initial;--tmw-table-toolbar-btn-bg: initial;--tmw-table-toolbar-btn-border-color: initial;--tmw-table-toolbar-btn-color: initial;--tmw-table-toolbar-btn-hover-bg: initial;--tmw-table-toolbar-btn-radius: initial;--tmw-table-toolbar-radius: initial;--tmw-attachments-backdrop-bg: initial;--tmw-attachments-btn-border-radius: initial;--tmw-attachments-btn-border-width: initial;--tmw-attachments-btn-danger-bg: initial;--tmw-attachments-btn-danger-color: initial;--tmw-attachments-btn-danger-hover-bg: initial;--tmw-attachments-btn-default-bg: initial;--tmw-attachments-btn-default-color: initial;--tmw-attachments-btn-default-hover-bg: initial;--tmw-attachments-btn-disabled-opacity: initial;--tmw-attachments-btn-font-size: initial;--tmw-attachments-btn-padding-x: initial;--tmw-attachments-btn-padding-y: initial;--tmw-attachments-btn-primary-bg: initial;--tmw-attachments-btn-primary-color: initial;--tmw-attachments-btn-primary-hover-bg: initial;--tmw-attachments-card-bg: initial;--tmw-attachments-card-border-color: initial;--tmw-attachments-card-border-radius: initial;--tmw-attachments-card-border-width: initial;--tmw-attachments-card-padding: initial;--tmw-attachments-card-padding-mobile: initial;--tmw-attachments-card-shadow: initial;--tmw-attachments-dropzone-active-bg: initial;--tmw-attachments-dropzone-active-border-color: initial;--tmw-attachments-dropzone-bg: initial;--tmw-attachments-dropzone-border-color: initial;--tmw-attachments-dropzone-border-radius: initial;--tmw-attachments-dropzone-border-width: initial;--tmw-attachments-dropzone-gap: initial;--tmw-attachments-dropzone-icon-color: initial;--tmw-attachments-dropzone-icon-size: initial;--tmw-attachments-dropzone-padding: initial;--tmw-attachments-dropzone-padding-mobile: initial;--tmw-attachments-dropzone-text-color: initial;--tmw-attachments-font-family: initial;--tmw-attachments-header-margin-bottom: initial;--tmw-attachments-header-title-color: initial;--tmw-attachments-header-title-font-size: initial;--tmw-attachments-header-title-font-weight: initial;--tmw-attachments-icon-size: initial;--tmw-attachments-input-bg: initial;--tmw-attachments-input-border-color: initial;--tmw-attachments-input-border-radius: initial;--tmw-attachments-input-border-width: initial;--tmw-attachments-input-color: initial;--tmw-attachments-label-color: initial;--tmw-attachments-menu-bg: initial;--tmw-attachments-menu-border-color: initial;--tmw-attachments-menu-border-radius: initial;--tmw-attachments-menu-item-color: initial;--tmw-attachments-menu-item-hover-bg: initial;--tmw-attachments-menu-shadow: initial;--tmw-attachments-modal-bg: initial;--tmw-attachments-modal-border-radius: initial;--tmw-attachments-modal-max-width: initial;--tmw-attachments-modal-padding: initial;--tmw-attachments-modal-padding-mobile: initial;--tmw-attachments-modal-shadow: initial;--tmw-attachments-modal-z-index: initial;--tmw-attachments-thumb-border-radius: initial;--tmw-attachments-thumb-icon-color: initial;--tmw-attachments-thumb-size: initial;font-family:initial}:host-context([data-dm-styles-penetration=si]) .dynamic-module-preview{--tmw-select-add-modal-bg: unset;--tmw-select-arrow-bg: unset;--tmw-select-arrow-border-radius: unset;--tmw-select-arrow-color: unset;--tmw-select-arrow-height: unset;--tmw-select-bg: unset;--tmw-select-border-color: unset;--tmw-select-border-color-hover: unset;--tmw-select-border-radius: unset;--tmw-select-border-width: unset;--tmw-select-clear-border-radius: unset;--tmw-select-clear-color: unset;--tmw-select-clear-color-bg: unset;--tmw-select-clear-height: unset;--tmw-select-disabled-bg: unset;--tmw-select-disabled-border-color: unset;--tmw-select-disabled-color: unset;--tmw-select-focus-border-color: unset;--tmw-select-focus-label-color: unset;--tmw-select-font-family: unset;--tmw-select-font-size-label: unset;--tmw-select-font-size-value: unset;--tmw-select-height: unset;--tmw-select-label-bg: unset;--tmw-select-label-color: unset;--tmw-select-option-bg: unset;--tmw-select-option-check-color: unset;--tmw-select-option-color: unset;--tmw-select-option-highlighted-bg: unset;--tmw-select-option-hover-bg: unset;--tmw-select-option-hover-color: unset;--tmw-select-option-selected-bg: unset;--tmw-select-option-selected-color: unset;--tmw-select-padding-x: unset;--tmw-select-panel-bg: unset;--tmw-select-panel-border-radius: unset;--tmw-select-panel-max-height: unset;--tmw-select-panel-shadow: unset;--tmw-select-panel-z-index: unset;--tmw-select-required-color: unset;--tmw-select-search-bg: unset;--tmw-select-search-color: unset;--tmw-select-toolbar-bg: unset;--tmw-select-toolbar-border-color: unset;--tmw-select-toolbar-border-radius: unset;--tmw-select-toolbar-border-width: unset;--tmw-select-toolbar-btn-active-bg: unset;--tmw-select-toolbar-btn-bg: unset;--tmw-select-toolbar-btn-border-color: unset;--tmw-select-toolbar-btn-border-radius: unset;--tmw-select-toolbar-btn-border-width: unset;--tmw-select-toolbar-btn-color: unset;--tmw-select-toolbar-btn-disabled-opacity: unset;--tmw-select-toolbar-btn-hover-bg: unset;--tmw-select-toolbar-btn-margin-right: unset;--tmw-select-toolbar-btn-size: unset;--tmw-select-toolbar-gap: unset;--tmw-select-toolbar-icon-size: unset;--tmw-select-value-color: unset;--tmw-table-accent-color: unset;--tmw-table-border-color: unset;--tmw-table-bulk-bar-bg: unset;--tmw-table-bulk-bar-color: unset;--tmw-table-cell-padding: unset;--tmw-table-grid-template: unset;--tmw-table-header-bg: unset;--tmw-table-header-border-width: unset;--tmw-table-header-color: unset;--tmw-table-header-font-family: unset;--tmw-table-header-font-size: unset;--tmw-table-outer-border-width: unset;--tmw-table-radius: unset;--tmw-table-row-bg: unset;--tmw-table-row-hover-bg: unset;--tmw-table-scrollbar-size: unset;--tmw-table-scrollbar-thumb-bg: unset;--tmw-table-scrollbar-thumb-border-color: unset;--tmw-table-scrollbar-thumb-border-width: unset;--tmw-table-scrollbar-thumb-hover-bg: unset;--tmw-table-scrollbar-thumb-radius: unset;--tmw-table-scrollbar-track-bg: unset;--tmw-table-scrollbar-track-radius: unset;--tmw-table-search-bg: unset;--tmw-table-search-border-color: unset;--tmw-table-search-color: unset;--tmw-table-toolbar-bg: unset;--tmw-table-toolbar-btn-bg: unset;--tmw-table-toolbar-btn-border-color: unset;--tmw-table-toolbar-btn-color: unset;--tmw-table-toolbar-btn-hover-bg: unset;--tmw-table-toolbar-btn-radius: unset;--tmw-table-toolbar-radius: unset;--tmw-attachments-backdrop-bg: unset;--tmw-attachments-btn-border-radius: unset;--tmw-attachments-btn-border-width: unset;--tmw-attachments-btn-danger-bg: unset;--tmw-attachments-btn-danger-color: unset;--tmw-attachments-btn-danger-hover-bg: unset;--tmw-attachments-btn-default-bg: unset;--tmw-attachments-btn-default-color: unset;--tmw-attachments-btn-default-hover-bg: unset;--tmw-attachments-btn-disabled-opacity: unset;--tmw-attachments-btn-font-size: unset;--tmw-attachments-btn-padding-x: unset;--tmw-attachments-btn-padding-y: unset;--tmw-attachments-btn-primary-bg: unset;--tmw-attachments-btn-primary-color: unset;--tmw-attachments-btn-primary-hover-bg: unset;--tmw-attachments-card-bg: unset;--tmw-attachments-card-border-color: unset;--tmw-attachments-card-border-radius: unset;--tmw-attachments-card-border-width: unset;--tmw-attachments-card-padding: unset;--tmw-attachments-card-padding-mobile: unset;--tmw-attachments-card-shadow: unset;--tmw-attachments-dropzone-active-bg: unset;--tmw-attachments-dropzone-active-border-color: unset;--tmw-attachments-dropzone-bg: unset;--tmw-attachments-dropzone-border-color: unset;--tmw-attachments-dropzone-border-radius: unset;--tmw-attachments-dropzone-border-width: unset;--tmw-attachments-dropzone-gap: unset;--tmw-attachments-dropzone-icon-color: unset;--tmw-attachments-dropzone-icon-size: unset;--tmw-attachments-dropzone-padding: unset;--tmw-attachments-dropzone-padding-mobile: unset;--tmw-attachments-dropzone-text-color: unset;--tmw-attachments-font-family: unset;--tmw-attachments-header-margin-bottom: unset;--tmw-attachments-header-title-color: unset;--tmw-attachments-header-title-font-size: unset;--tmw-attachments-header-title-font-weight: unset;--tmw-attachments-icon-size: unset;--tmw-attachments-input-bg: unset;--tmw-attachments-input-border-color: unset;--tmw-attachments-input-border-radius: unset;--tmw-attachments-input-border-width: unset;--tmw-attachments-input-color: unset;--tmw-attachments-label-color: unset;--tmw-attachments-menu-bg: unset;--tmw-attachments-menu-border-color: unset;--tmw-attachments-menu-border-radius: unset;--tmw-attachments-menu-item-color: unset;--tmw-attachments-menu-item-hover-bg: unset;--tmw-attachments-menu-shadow: unset;--tmw-attachments-modal-bg: unset;--tmw-attachments-modal-border-radius: unset;--tmw-attachments-modal-max-width: unset;--tmw-attachments-modal-padding: unset;--tmw-attachments-modal-padding-mobile: unset;--tmw-attachments-modal-shadow: unset;--tmw-attachments-modal-z-index: unset;--tmw-attachments-thumb-border-radius: unset;--tmw-attachments-thumb-icon-color: unset;--tmw-attachments-thumb-size: unset;font-family:unset}.importDialog .mat-card-header-text{font-size:1.3em;font-weight:700}.importDialog .input-file-btn{color:#6f79fb}.importDialog .input-file-btn::-webkit-file-upload-button,.importDialog .input-file-btn::file-selector-button{padding:7px 40px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-radius);border:1px solid #1E31EB}.importDialog .input-file-btn:before{content:\"Select some files\";display:inline-block;background:linear-gradient(top,#f9f9f9,#e3e3e3);border:1px solid #999;border-radius:3px;padding:5px 8px;outline:none;white-space:nowrap;-webkit-user-select:none;cursor:pointer;text-shadow:1px 1px #fff;font-weight:700;font-size:10pt}.importDialog .input-file-btn:hover:before,.importDialog .input-file-btn::file-selector-button:hover:before{border-color:#000}.importDialog .input-file-btn:active:before,.importDialog .input-file-btn::file-selector-button:active:before{background:-webkit-linear-gradient(top,#e3e3e3,#f9f9f9)}.importDialog .button-back{border-radius:var(--conf-radius);padding:7px 40px;font-size:14px;background:#DBDBDC;color:#000}.configurator-accordion ::ng-deep .configurator-panel{box-shadow:none!important;background:transparent!important;border-radius:0!important}.configurator-accordion ::ng-deep .configurator-panel.mat-expanded,.configurator-accordion ::ng-deep .configurator-panel{margin:0!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header{height:36px!important;min-height:36px!important;padding:0 12px;margin-top:14px;border-radius:6px!important;border-left:3px solid var(--conf-accent);background:linear-gradient(to right,rgba(var(--conf-primary-rgb),.06),rgba(var(--conf-accent-rgb),.02))!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header:hover,.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header:focus{background:linear-gradient(to right,rgba(var(--conf-primary-rgb),.11),rgba(var(--conf-accent-rgb),.05))!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header .mat-panel-title{font-size:.72rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:#555}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header .mat-expansion-indicator:after{color:var(--conf-accent);border-width:0 1.5px 1.5px 0;padding:2.5px}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-body{padding:12px 0 0}.configurator-accordion ::ng-deep .configurator-panel .firstRow{margin-top:0}.grafica-row{margin-bottom:8px}.grafica-row .grafica-field-label{font-size:.85rem;color:#555;margin-bottom:6px}.grafica-row tmw-attachments ::ng-deep .tmw-attachments-add-link-btn{display:none!important}.grafica-ai-separator{border:none;border-top:1px solid #e0e0e0;margin:10px 0 4px}.form-grafica-ai-row{display:flex;align-items:center;gap:8px;margin-top:4px;margin-bottom:8px;flex-wrap:wrap}.btn-form-graphic-suggest{background:var(--conf-gradient);color:var(--conf-btn-color)!important;font-size:12px;height:30px;min-width:unset;padding:0 12px;border:none!important;border-radius:6px;display:inline-flex;align-items:center;gap:4px}.btn-form-graphic-suggest mat-icon{font-size:16px;width:16px;height:16px}.btn-form-graphic-suggest[disabled]{opacity:.7;cursor:not-allowed}.form-hint-input-group{display:flex;align-items:center;gap:6px;flex:1;min-width:220px}.form-graphic-scope-select{height:30px;padding:0 6px;border:1px solid #ccc;border-radius:4px;font-size:12px;background:#fff;cursor:pointer;outline:none;flex-shrink:0}.form-graphic-scope-select:focus{border-color:var(--conf-accent)}.btn-hint-randomize{width:28px;height:28px;border:none;border-radius:5px;background:var(--conf-hint-btn-bg);color:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s}.btn-hint-randomize mat-icon{font-size:16px;width:16px;height:16px}.btn-hint-randomize:hover{background:var(--conf-hint-btn-hover-bg)}.btn-generate-bg{width:28px;height:28px;border:1px solid var(--conf-hint-btn-bg);border-radius:5px;background:transparent;color:var(--conf-hint-btn-bg);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s,color .15s,border-color .15s}.btn-generate-bg mat-icon{font-size:16px;width:16px;height:16px}.btn-generate-bg:hover{background:var(--conf-hint-btn-bg);color:#fff}.btn-generate-bg.active{background:var(--conf-gradient);border-color:transparent;color:var(--conf-btn-color, #fff)}.form-graphic-hint-input{flex:1;height:30px;padding:0 8px;border:1px solid #ccc;border-radius:4px;font-size:12px;outline:none}.form-graphic-hint-input:focus{border-color:var(--conf-accent)}.btn-form-graphic-send{background:var(--conf-gradient);color:var(--conf-btn-color)!important;border:none;border-radius:4px;width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.btn-form-graphic-send mat-icon{font-size:16px;width:16px;height:16px}.btn-form-graphic-send:hover{opacity:.9}.row.title{margin:0;justify-content:flex-start}.row.title mat-icon.add{background:#fff;color:#7b7b7b;height:40px;width:40px;border-radius:var(--conf-radius);font-size:27px;padding:7px 6px 6px 7px;margin:0 7px 0 0;cursor:pointer}.row.title mat-icon.close{background:#7B7B7B;color:#fff;height:40px;width:40px;border-radius:var(--conf-radius);font-size:27px;padding:7px 6px 6px 7px;margin:0 7px 0 0;cursor:pointer}.row.title .header-title-standard{display:flex;align-items:center;font-size:19px;font-weight:700;color:gray}.firstRow{margin-top:20px}::ng-deep mat-form-field{width:100%}:host ::ng-deep .mat-mdc-text-field-wrapper{background:var(--conf-input-bg, #ffffff)!important}:host ::ng-deep .mat-mdc-form-field .mat-mdc-input-element,:host ::ng-deep .mat-mdc-form-field .mdc-text-field__input,:host ::ng-deep .mat-mdc-form-field textarea{color:var(--conf-input-color, rgba(0, 0, 0, .87))!important}hr{border:none;height:50px;box-shadow:0 20px 20px -20px #dfdfdf}.inserted{margin-top:45px}::ng-deep .mat-form-field-appearance-legacy .mat-form-field-underline{display:none}::ng-deep .mat-form-field-flex .mat-form-field-infix input{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0 15px 20px!important;margin-top:10px;background-color:#fff}::ng-deep .mat-form-field-flex .mat-form-field-infix input:focus{border:1px solid #1a39ed}::ng-deep .mat-form-field-flex .mat-form-field-infix{padding:0;margin:0}::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=minute],::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=hour]{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0!important;background-color:#fff}::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=minute]:focus,::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=hour]:focus{border:1px solid #1a39ed}::ng-deep .ngx-mat-timepicker form .table .tbody tr td.spacer{vertical-align:middle!important}.textarea ::ng-deep .mat-form-field-wrapper{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0 15px 20px!important}.textarea ::ng-deep .mat-form-field-wrapper .mat-form-field-flex{border:none;padding:0;margin:0;height:0}::ng-deep .nameSection{width:99%}::ng-deep .mat-select-arrow{color:transparent}::ng-deep .mat-form-field.mat-focused.mat-primary .mat-select-arrow{color:transparent}::ng-deep .mat-select-value-text{font-size:15px}::ng-deep .cdk-overlay-pane{transform:none!important}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap{margin:37px 0 0 -18px}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap .ng-trigger{border-radius:10px}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap .ng-trigger mat-option{border-radius:10px}::ng-deep .mat-autocomplete.visible{margin:0!important}::ng-deep .mat-select-panel{box-shadow:0 0 2px #0003,0 0 2px #00000024,0 0 2px #0000001f!important;min-width:calc(100% + 19px)!important}.stepper-header-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.section-list{list-style:none;padding:0;display:flex;flex-wrap:wrap;flex-direction:row}.section-list li{margin-top:36px}.section-list li .sectionInsert{border:1px solid #9171E3;padding:14px 17px;border-radius:10px;margin-right:10px;font-size:16px}.section-list li .sectionInsert mat-icon{vertical-align:middle;font-size:20px!important;height:20px!important;width:40px!important;color:#c40101!important;cursor:pointer}.section-list li .sectionInsert mat-icon.icon-black{color:#000!important}.danger-color{color:#c40101}::ng-deep .mat-elevation-z8{box-shadow:none}::ng-deep mat-horizontal-stepper.outerForm{background-color:var(--conf-bg-page)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:0 20%;background-color:var(--conf-stepper-header-bg)!important;box-shadow:0 20px 20px -20px #dfdfdf}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label{white-space:normal;margin:7px 0 0;min-width:100px;overflow:visible;text-align:center}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container mat-step-header:hover{background-color:transparent}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header{display:flex;flex-direction:column;height:96px;padding:20px 50px}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon{margin-right:0!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line{width:100%;padding-bottom:1px;margin-bottom:46.5px}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .cdk-focused{background-color:transparent}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:before{content:\"\";position:absolute!important;left:-25px!important;bottom:13px!important;border-left:30px solid var(--conf-step-connector-bg, #ebebeb)!important;border-top:12px solid transparent!important;border-bottom:12px solid transparent!important;transform:rotate(180deg)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:after{content:\"\"!important;position:absolute!important;right:-25px!important;bottom:13px!important;border-left:30px solid var(--conf-step-connector-bg, #ebebeb)!important;border-top:12px solid transparent!important;border-bottom:12px solid transparent!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:after:last-child{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected){background:var(--conf-step-icon-bg, linear-gradient(.33turn, #BFBFBF, #606060))!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected) .mat-step-icon-content span{color:var(--conf-step-icon-color, #ffffff)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number.mat-step-icon-selected:before{border-left-color:var(--conf-step-selected)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number.mat-step-icon-selected:after{display:none!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit{background-color:var(--conf-step-icon-edit-bg)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit:before{border-left-color:var(--conf-step-selected)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit:after{border-left-color:var(--conf-step-edit)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container :first-child :before{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container :last-child :after{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-content-container{padding:20px 10%;background-color:var(--conf-stepper-content-bg)!important}::ng-deep mat-horizontal-stepper.innerForm{background-color:var(--conf-bg-page)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:10px 130px;background-color:var(--conf-stepper-header-bg)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon{margin-right:0!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected){background:var(--conf-step-icon-bg, linear-gradient(.33turn, #BFBFBF, #606060))!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected) .mat-step-icon-content span{color:var(--conf-step-icon-color, #ffffff)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container mat-step-header:hover{background-color:transparent}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(2){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(4){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(6){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .cdk-focused{background-color:transparent}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label mat-label{margin-left:5px}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-content-container{background-color:var(--conf-stepper-content-bg)!important}.button-nextDiv{margin:50px 0 0!important}.button-nextDiv .button-exit{margin:0 10px 0 0!important;border:1px solid #1E31EB;padding:7px 40px;border-radius:var(--conf-radius);font-size:14px;box-shadow:none!important}.button-nextDiv .button-exit:hover{background:white!important}div.addButtons{margin:40px 0 0!important}div.addButtons .btn-primary{border-radius:var(--conf-radius);box-shadow:none;padding:6px 25px 6px 9px;font-size:14px;background:var(--conf-gradient);color:var(--conf-btn-color)!important}div.addButtons .btn-primary mat-icon{background:#fff;color:#1e31eb;height:30px;width:31px;border-radius:var(--conf-radius);font-size:27px;padding:2px 0 0;margin:0 7px 0 0}div.addButtons .btn-outlined{box-shadow:none;padding:6px 25px 6px 9px;font-size:14px;border-radius:var(--conf-radius);background:var(--conf-addbtn-bg, #ebebeb);color:#3b3a3b}div.addButtons .btn-outlined mat-icon{background-color:inherit;color:#bdbdbd;height:30px;width:31px;border-radius:var(--conf-radius);font-size:27px;padding:2px 0 0;margin:0 7px 0 0}div.addButtons .btn-outlined:hover,div.addButtons .btn-outlined.active{background:var(--conf-gradient);color:var(--conf-btn-color)!important;border-radius:var(--conf-radius)}div.addButtons .btn-outlined:hover mat-icon,div.addButtons .btn-outlined.active mat-icon{color:var(--conf-btn-color)}div.addButtons .btn-outlined-red{background:linear-gradient(to right,#eb1e1e,#da3d3d)!important;color:#fff!important}div.addButtons .btn-outlined-red:hover mat-icon{color:#eb1e1e}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper{margin-top:-74px}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper input{background-color:var(--conf-search-bg)!important;background:url(data:image/png;base64,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) no-repeat;background-size:19px;background-position:19px;padding:15px 0 15px 53px!important}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper input:focus{background-color:#fff!important;border:1px solid #e7e7e9}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper .mat-form-field-label-wrapper label{margin-top:21px;margin-left:55px}.table ::ng-deep mat-header-row{background-color:var(--conf-table-header-bg)!important;border-bottom-width:0px}.table ::ng-deep mat-header-row .mat-column-Required{flex:none!important}.table ::ng-deep .mat-sort-header-button{color:#3b3a3b;font-size:15px}.table ::ng-deep table#eqp-table{background-color:var(--conf-table-bg)!important}.table ::ng-deep .mat-row{background-color:var(--conf-table-bg)!important;margin:10px 0;box-shadow:0 3px 7px -3px #0003;padding:5px 0}.table ::ng-deep .mat-row .mat-column-Required{flex:0 0 8%!important}.table ::ng-deep .mat-row mat-cell eqp-select{margin-top:16px}.table ::ng-deep .mat-row mat-cell eqp-select .mat-form-field-wrapper{padding-bottom:0}.table ::ng-deep .mat-row .mat-cell span i.success-color{background-color:var(--conf-primary);color:#fff!important;padding:6px;border-radius:3px}::ng-deep .mat-paginator-page-size{margin:0 30px 0 0!important}::ng-deep .mat-paginator-page-size .mat-form-field-flex{padding:0 21px 7px!important;width:100px!important;margin:10px!important;background-color:#fff;border-radius:10px;border:1px solid lightgrey;height:40px}::ng-deep .mat-paginator-range-label{margin:0 20px 0 52px!important}::ng-deep .mat-dialog-container{padding:0!important;border-radius:var(--conf-modal-radius)!important;font-family:var(--conf-font-family)!important}::ng-deep .mat-mdc-dialog-surface.mdc-dialog__surface{border-radius:var(--conf-modal-radius)!important;font-family:var(--conf-font-family)!important}::ng-deep .mat-paginator-container{display:flex;justify-content:flex-start!important}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container{margin:5px 0 0 2px}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container .mat-slide-toggle-thumb{background-color:#fff!important}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-bar{background-color:#2532ea!important;height:100%!important;width:40px!important;border-radius:20px!important}::ng-deep .mat-slide-toggle .mat-slide-toggle-thumb-container{margin:5px 0 0 2px}::ng-deep .mat-slide-toggle .mat-slide-toggle-bar{height:100%!important;width:40px!important;border-radius:20px!important}.container-fluid.third-modal{padding:0 0 10px}.container-fluid.third-modal form{margin:25px 40px 10px}.container-fluid.third-modal form .buttonsForm{padding:0}.button-next{border-radius:var(--conf-radius);padding:7px 40px;font-size:14px}button.button-next:not([disabled]){background:var(--conf-gradient)!important;padding:7px 40px;border-radius:var(--conf-radius);color:var(--conf-btn-color)!important;font-size:14px}button.previous{box-shadow:none!important;margin:0 10px 0 0!important;border:1px solid #1E31EB;padding:7px 40px;border-radius:var(--conf-radius);font-size:14px}.rowButtonsModal{background-color:var(--conf-bg-page)}@media screen and (max-width: 1200px){.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select){width:30%!important}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper{margin-top:-98px}.table ::ng-deep .mat-row .mat-column-FieldGroup eqp-select{margin-bottom:-25px}.table ::ng-deep .mat-row .mat-column-FieldGroup .mat-form-field-flex{width:auto}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:25px 0 0}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-content-container{padding:0 3% 24px!important}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:10px 0}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header{display:flex;flex-direction:column;justify-content:space-between}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line{margin:-21px 0 0}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-content-container{padding:0 3% 24px!important}form{padding:0}div.addButtons{padding:15px 0 24px!important}}@media screen and (max-width: 960px){::ng-deep mat-table mat-row{box-shadow:0 3px 7px -3px #0003!important}::ng-deep mat-table mat-row .mat-column-FieldGroup{padding-top:15px;padding-bottom:47px}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label{width:150%!important}}@media screen and (max-width: 766px){.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select){width:40%!important;margin-top:60px}}@media screen and (max-width: 589px){div.addButtons button{margin:0 10px 10px 0!important}}::ng-deep .mat-input-element{width:100%;width:-moz-available;width:-webkit-fill-available;width:fill-available}:host ::ng-deep .mat-input-element{width:100%;width:-moz-available;width:-webkit-fill-available;width:fill-available}.innerFormManagment-stepper{max-height:80vh;overflow:scroll}.ai-dialog-header{display:flex;align-items:center;gap:10px;padding:16px 20px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0}.ai-dialog-header mat-icon{font-size:22px;width:22px;height:22px;opacity:.9}.ai-dialog-header span{font-size:1rem;font-weight:600;letter-spacing:.02em}.ai-dialog-header .ai-history-toggle-btn{margin-left:auto;color:#ffffffd9}.ai-dialog-header .ai-history-toggle-btn:hover{color:#fff}.ai-dialog-header .ai-history-toggle-btn.active{color:#fff;background:rgba(255,255,255,.2);border-radius:50%}.ai-dialog-body-flex{display:flex;align-items:stretch;overflow:hidden}.ai-dialog-main-content{flex:1;min-width:0}.ai-history-panel{width:240px;flex-shrink:0;border-left:1px solid rgba(0,0,0,.1);display:flex;flex-direction:column;background:#fafafa}.ai-history-panel .ai-history-panel-title{display:flex;align-items:center;gap:6px;padding:12px 12px 8px;font-size:.78rem;font-weight:700;color:#555;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid rgba(0,0,0,.08);flex-shrink:0}.ai-history-panel .ai-history-list{overflow-y:auto;flex:1;padding:8px 0}.ai-history-panel .ai-history-item{display:flex;align-items:flex-start;gap:8px;padding:8px 12px;border-bottom:1px solid rgba(0,0,0,.05)}.ai-history-panel .ai-history-item:last-child{border-bottom:none}.ai-history-panel .ai-history-item .ai-history-index{font-size:.7rem;font-weight:700;color:#fff;background:#888;border-radius:50%;width:18px;height:18px;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px}.ai-history-panel .ai-history-item .ai-history-text{font-size:.8rem;color:#444;line-height:1.4;word-break:break-word}.ai-last-prompt-bar{display:flex;align-items:center;gap:14px;margin:10px 0 18px;padding:14px 16px;background:#fff;border-radius:10px;box-shadow:0 1px 3px #1e31eb14,0 0 0 1px #1e31eb1a;position:relative;overflow:hidden}.ai-last-prompt-bar:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--conf-gradient)}.ai-last-prompt-bar .ai-last-prompt-icon-wrap{flex-shrink:0;width:36px;height:36px;border-radius:9px;background:var(--conf-gradient);display:flex;align-items:center;justify-content:center}.ai-last-prompt-bar .ai-last-prompt-icon-wrap mat-icon{font-size:18px;width:18px;height:18px;color:#fff}.ai-last-prompt-bar .ai-last-prompt-content{flex:1;min-width:0}.ai-last-prompt-bar .ai-last-prompt-content .ai-last-prompt-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#aaa;margin-bottom:3px}.ai-last-prompt-bar .ai-last-prompt-content .ai-last-prompt-text{font-size:13px;font-weight:600;color:#1a1a2e;line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ai-last-prompt-bar .ai-last-prompt-history-btn{flex-shrink:0;width:34px;height:34px;border-radius:8px;color:var(--conf-primary, #1E31EB);opacity:.5;transition:opacity .15s,background .15s;display:flex;align-items:center;justify-content:center}.ai-last-prompt-bar .ai-last-prompt-history-btn:hover{opacity:1;background:rgba(30,49,235,.07)}.ai-last-prompt-bar .ai-last-prompt-history-btn mat-icon{font-size:20px;width:20px;height:20px;line-height:20px}.ai-cost-panel{display:flex;align-items:center;gap:12px;padding:10px 14px;background:#fff;border-radius:10px;box-shadow:0 1px 3px #1e31eb14,0 0 0 1px #1e31eb1a;position:relative;overflow:hidden}.ai-cost-panel:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--conf-gradient)}.ai-cost-panel .ai-cost-panel-icon{flex-shrink:0;width:30px;height:30px;border-radius:8px;background:var(--conf-gradient);display:flex;align-items:center;justify-content:center}.ai-cost-panel .ai-cost-panel-icon mat-icon{font-size:16px;width:16px;height:16px;color:#fff}.ai-cost-panel .ai-cost-panel-body{flex:1;min-width:0}.ai-cost-panel .ai-cost-panel-header{display:flex;align-items:center;gap:8px;margin-bottom:3px}.ai-cost-panel .ai-cost-panel-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#aaa}.ai-cost-panel .ai-cost-panel-model{font-size:10px;font-weight:700;padding:1px 8px;border-radius:20px;background:rgba(30,49,235,.08);color:var(--conf-primary, #1E31EB);letter-spacing:.03em}.ai-cost-panel .ai-cost-panel-line{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:12.5px;color:#444;line-height:1.5}.ai-cost-panel .ai-cost-panel-line .ai-cost-panel-line-label{color:#777}.ai-cost-panel .ai-cost-panel-line .ai-cost-panel-line-value{font-weight:600;color:#1a1a2e;white-space:nowrap}.ai-cost-panel .ai-cost-panel-hint{font-size:11px;color:#b45309;margin-top:1px}.ai-cost-panel .ai-cost-panel-split{flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:4px;padding-left:12px;border-left:1px solid rgba(0,0,0,.08)}.ai-cost-panel .ai-cost-panel-split-label{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#aaa}.ai-cost-panel .ai-cost-panel-split-stepper{display:flex;align-items:center;gap:2px;background:var(--conf-bg-page, #f4f4f8);border-radius:8px;padding:2px}.ai-cost-panel .ai-cost-split-btn{width:20px;height:20px;border:none;border-radius:5px;background:transparent;color:var(--conf-primary, #1E31EB);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s,color .15s}.ai-cost-panel .ai-cost-split-btn mat-icon{font-size:14px;width:14px;height:14px}.ai-cost-panel .ai-cost-split-btn:hover:not(:disabled){background:rgba(30,49,235,.12)}.ai-cost-panel .ai-cost-split-btn:disabled{color:#ccc;cursor:not-allowed}.ai-cost-panel .ai-cost-split-input{width:22px;text-align:center;border:none;background:transparent;font-size:13px;font-weight:700;color:#1a1a2e;-moz-appearance:textfield}.ai-cost-panel .ai-cost-split-input::-webkit-outer-spin-button,.ai-cost-panel .ai-cost-split-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.ai-cost-panel .ai-cost-split-input:focus{outline:none}.ai-history-dialog{min-width:520px;max-width:660px;display:flex;flex-direction:column;overflow:hidden}.ai-history-dialog .ai-history-dialog-body{overflow-y:auto;max-height:55vh;padding:8px 0 4px}.ai-history-dialog .ai-history-dialog-item{display:flex;align-items:flex-start;gap:16px;padding:14px 24px;border-bottom:1px solid rgba(0,0,0,.06);transition:background .12s}.ai-history-dialog .ai-history-dialog-item:last-child{border-bottom:none}.ai-history-dialog .ai-history-dialog-item:hover{background:rgba(30,49,235,.03)}.ai-history-dialog .ai-history-dialog-item--last{background:rgba(30,49,235,.04)}.ai-history-dialog .ai-history-dialog-item--last .ai-history-dialog-badge{background:var(--conf-gradient);box-shadow:0 2px 6px #1e31eb59}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-badge{flex-shrink:0;width:26px;height:26px;border-radius:50%;background:#dde0f5;color:var(--conf-primary, #1E31EB);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:1px}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt .ai-history-dialog-prompt-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;background:var(--conf-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt .ai-history-dialog-prompt-text{font-size:13.5px;color:#2a2a2a;line-height:1.55;word-break:break-word}.ai-history-dialog .ai-history-dialog-footer{display:flex;justify-content:flex-end;align-items:center;padding:12px 20px;border-top:1px solid rgba(0,0,0,.07);background:var(--conf-bg-page, #f9f9fa)}.ve-tooltip-panel{padding:0;min-width:280px}.ve-tooltip-header{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0}.ve-tooltip-header .ve-tooltip-icon{font-size:20px;width:20px;height:20px}.ve-tooltip-header .ve-tooltip-title{font-size:.9rem;font-weight:600;flex:1;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.3}.ve-tooltip-graphic{padding:12px 16px}.ve-tooltip-graphic .ve-tooltip-graphic-header{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:.85rem;color:#555}.ve-tooltip-graphic .ve-apply-all-row{display:flex;align-items:center;margin-bottom:8px;font-size:.8rem}.ve-tooltip-graphic .ve-apply-all-row mat-slide-toggle{font-size:.8rem}.ve-tooltip-graphic .ve-tooltip-graphic-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}.ve-swap-banner{display:flex;align-items:center;justify-content:center;gap:12px;margin:12px 0 4px;padding:12px 24px;background:rgba(245,158,11,.1);border:2px dashed #f59e0b;border-radius:10px;animation:ve-swap-pulse 1.2s infinite;font-size:.95rem;font-weight:600;color:#92400e}.ve-swap-banner .ve-swap-banner-icon{color:#f59e0b;font-size:24px;width:24px;height:24px;flex-shrink:0}.ve-swap-banner .ve-swap-banner-cancel{margin-left:16px;border-color:#f59e0b!important;color:#92400e!important;border-radius:6px;font-size:.85rem}@keyframes ve-swap-pulse{0%,to{background-color:#f59e0b1a}50%{background-color:#f59e0b38}}.ve-reorder-card{min-width:360px}.ve-reorder-header{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0;font-size:.95rem;font-weight:600}.ve-reorder-list{padding:8px 0}.ve-reorder-item{display:flex;align-items:center;gap:8px;padding:8px 16px;background:#fff;border-bottom:1px solid rgba(0,0,0,.08);cursor:move}.ve-reorder-item:last-child{border-bottom:none}.ve-drag-handle{color:#aaa;cursor:grab}.ve-drag-handle:active{cursor:grabbing}.ve-drag-placeholder{height:40px;background:rgba(99,102,241,.08);border:2px dashed rgba(99,102,241,.35);border-radius:4px}\n"], dependencies: [{ kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "component", type: i8.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i9.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i8.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i10.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i11.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "component", type: i12.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i13.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i13.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i13.MatCardFooter, selector: "mat-card-footer" }, { kind: "component", type: i13.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i13.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: i14.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "directive", type: i14.MatStepLabel, selector: "[matStepLabel]" }, { kind: "component", type: i14.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["selectedIndex", "disableRipple", "color", "labelPosition", "headerPosition", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "directive", type: i14.MatStepperNext, selector: "button[matStepperNext]", inputs: ["type"] }, { kind: "directive", type: i14.MatStepperPrevious, selector: "button[matStepperPrevious]", inputs: ["type"] }, { kind: "directive", type: i14.MatStepperIcon, selector: "ng-template[matStepperIcon]", inputs: ["matStepperIcon"] }, { kind: "directive", type: i15.MatAccordion, selector: "mat-accordion", inputs: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i15.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i15.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "directive", type: i15.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "component", type: i16.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i17.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i18.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i19.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i19.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i19.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i20.TmwTableComponent, selector: "tmw-table", inputs: ["data", "columns", "headerTitle", "emptyTableMessage", "tableColor", "createMatCard", "createMatCardHeader", "isMultiLanguage", "cultureInfo", "rowHeightMode", "rowHeight", "rowExpandable", "enableMultiSort", "isTableSearcheable", "searchText", "isSingleColumnFilter", "showSingleFilterButton", "switchFilterType", "switchFilterToGenericText", "switchFilterToSingleText", "showFilterText", "hideFilterText", "singleFilterColumnVisible", "currencyFilterToReplace", "currencyFilterToUse", "serverSideSort", "serverSideFilter", "selection", "isMultipleSelection", "disableRow", "disableRowColor", "isHighlight", "highlightColor", "rowCssClass", "cellCssClass", "headerCellCssClass", "rowIdentity", "isSelectedPropertyName", "paginatorVisible", "matPaginatorLength", "matPaginatorSize", "matPaginatorIndex", "matPaginatorCount", "disablePageStorageSave", "tableName", "disableColumnStateStorageSave", "showFirstLastButtons", "serverSidePagination", "serverPagination", "loading", "antiFreeze", "antiFreezeThreshold", "virtualScroll", "estimatedRowHeight", "virtualScrollBuffer", "enableDragAndDrop", "enableDragColumn", "changeDragRowPosition", "enableDragDrop", "isStickyHeader", "columnOverflowMode", "maxBodyHeight", "allowNewLine", "cardBreakpoint", "forceCardLayout", "chooseColumnsToShow", "chooseColumnsToShowText", "customButtons", "enableColumnReorder", "bulkActions", "showAggregationRow", "exportEqpTable", "notPaginatedExport", "notPaginatedFunctionType", "notPaginatedFunctionPath", "notPaginatedFunctionPostData", "notPaginatedFunctionReturnParameter", "notPaginatedFunctionReturnIsJson", "notPaginatedMergeController", "notPaginatedMergePostData", "suppressRenderDataUpdate"], outputs: ["antiFreezeChange", "columnResize", "columnReorder", "sortChange", "multiSortChange", "filteredColumns", "filterChange", "checkboxInfo", "checkboxJustSelectedInfo", "highlightSelected", "highlightDeselected", "pageChange", "dragStartedEvent", "dragReleasedEvent", "dragEndedEvent", "dragDropEvent", "eqpExportStarted", "eqpExportCompleted", "eqpExportEnded", "exportAllRequested"] }, { kind: "component", type: i21.TmwAttachmentsComponent, selector: "tmw-attachments", inputs: ["disableAction", "showHeader", "headerTitle", "attachmentsList", "showMatCard", "multipleAttachment", "loadMultipleFiles", "attachmentsColumns", "emptyTableMessage", "allowOnlyImages", "acceptedFileTypes", "isDisabled", "showInlinePreview", "getAttachmentEndpoint", "productionBaseUrl", "compressionOptions", "allowedTypes", "isEqpTableMultiLanguage", "tablePaginatorVisible", "tablePaginatorSize", "allowVideo", "allowVideoCompression", "videoFormatsNotAllowed", "allowedMBForFile", "downloadTooltipPosition", "openLinkLabel", "addButtonLabel", "downloadLabel", "deleteLabel", "fileNameLabel", "fileSizeLabel", "previewLabel", "uploadFileLabel", "confirmLabel", "abortLabel", "saveLabel", "exitLabel", "eqpTableSearchText", "deletedMessageLabel", "undoDeleteLabel", "undoDeleteTimeoutMs", "noImageSelectedErrorMessage", "wrongTypeSelectedErrorMessage", "videoPreviewErrorMessage", "audioPreviewErrorMessage", "uploadMode", "quickMode", "allowClipboardPaste", "allowCameraCapture", "pdfWorkerSrc", "dragDropTooManyFilesErrorMessage", "cropDialogClass"], outputs: ["localEditedAttachments", "abortAddAttachment", "downloadAttachment", "onDeleteAttachment", "onComponentLoaded"] }, { kind: "component", type: i22.TmwSelectComponent, selector: "tmw-select", inputs: ["placeholder", "arrayData", "arrayKeyProperty", "arrayValueProperty", "includeFullObject", "enumData", "enumDataToExclude", "isMultiLanguage", "multilanguagePrefixKey", "isMultiSelect", "isRequired", "isDisabled", "showCancelButton", "isSearchable", "searchText", "noResultSearchText", "toolbarButtons", "showAddButton", "ngModelOptions", "ngModelInput", "formGroupInput", "formControlNameInput"], outputs: ["ngModelInputChange"] }, { kind: "component", type: i23.TmwIconComponent, selector: "tmw-icon", inputs: ["name", "size", "ariaLabel", "variant", "strokeWidth"] }, { kind: "directive", type: i24.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i24.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i24.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i24.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "component", type: EqpDynamicModuleConfiguratorComponent, selector: "eqp-dynamic-module-configurator", inputs: ["debugMode", "fieldsExtraConfig", "configurations", "formID", "viewMode", "QueryEditorComponent", "triggers", "actionButtons", "contestualization", "formulaObject", "configuratorTheme", "configuratorThemeCss"], outputs: ["fireTrigger", "saveFormEvent", "afterSaveFormEvent", "out"] }, { kind: "component", type: i25.AddFormFieldComponent, selector: "eqp-dynamic-module-add-form-field", inputs: ["fieldsExtraConfig", "form", "endPointConfiguration", "field", "indexField", "formFieldsGroups", "availableFields", "fieldTypesToExclude", "QueryEditorComponent", "contestualization", "actionButtons", "formulaObject", "aiFieldSuggestLoading"], outputs: ["out", "saveFieldEvent", "openAiEditForFieldEvent", "openAiGraphicSuggestEvent"] }, { kind: "component", type: i26.AddFormRecordComponent, selector: "add-form-record", inputs: ["configurations", "endPointConfiguration", "userID", "orgaID", "formID", "form", "record", "formulaObject", "onlyView", "isDuplicate", "inConfig", "showAllFields", "showTitle", "actionButtons", "QueryEditorComponent", "visualEditorMode", "veSwapFieldCode"], outputs: ["saveRecordEvent", "afterSaveRecordEvent", "out", "fireTrigger", "veFieldClick"] }, { kind: "component", type: i27.SpinnerComponent, selector: "eqp-dynamic-module-spinner" }, { kind: "directive", type: i28.DynamicLoaderDirective, selector: "[appDynamicLoader]", inputs: ["data"], outputs: ["out"] }, { kind: "component", type: i29.TriggerCreatorComponent, selector: "trigger-creator", inputs: ["form", "trigger", "formulas", "endPointConfiguration"], outputs: ["onSaveRecord"] }, { kind: "directive", type: i30.SpeechToTextDirective, selector: "[SpeechToText]", inputs: ["bindedText"], outputs: ["bindedTextChange"] }, { kind: "component", type: i31.ActionButtonCreatorComponent, selector: "action-button-creator", inputs: ["form", "actionButton", "actionButtonField", "formulas", "endPointConfiguration", "InField", "formulaObject"], outputs: ["onSaveRecord", "onChangeSomething"] }] });
|
|
2453
2453
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EqpDynamicModuleConfiguratorComponent, decorators: [{
|
|
2454
2454
|
type: Component,
|
|
2455
|
-
args: [{ selector: "eqp-dynamic-module-configurator", template: "<eqp-dynamic-module-spinner></eqp-dynamic-module-spinner>\n\n\n<div class=\"dynamic-module-configurator-header row title p-1\" *ngIf=\"innerFormManagment\">\n <div class=\"col-md-10\">\n <div class=\"header-title-standard\">Aggiunta form di dettaglio</div>\n </div>\n <div class=\"col-md-2 text-right\">\n <mat-icon class=\"close\" (click)=\"closeDialogInnerForm()\">close</mat-icon>\n </div>\n</div>\n\n<!--#region EXPORT MODULE -->\n<div class=\"dynamic-module-configurator-exporter\" *ngIf=\"loader && viewMode == 'Export'\" class=\"p-3\">\n\n <button mat-raised-button class=\"btn btn-primary\" (click)=\"export()\">Esporta</button>\n\n <!--<a\n class=\"btn btn-clear\"\n mat-raised-button\n color=\"primary\"\n title=\"Download JSON\"\n [href]=\"downloadJsonHref\"\n download=\"{{ downloadName }}.json\"\n >Export</a>-->\n\n</div>\n<!--#endregion EXPORT MODULE -->\n\n<mat-horizontal-stepper *ngIf=\"loader && formFormGroup && viewMode == 'addOrEdit'\" linear #stepper\n [ngClass]=\"{ outerForm: true, 'innerFormManagment-stepper': innerFormManagment }\"\n class=\"dynamic-module-configurator-stepper {{ 'last-edited-step-' + stepper.selectedIndex }}\">\n <!--#region DATI GENERALI DELLA FORM -->\n <mat-step class=\"dynamic-module-configurator-general-data\" [stepControl]=\"formFormGroup\">\n <form [formGroup]=\"formFormGroup\" (keydown.enter)=\"(false)\">\n <ng-template matStepLabel>\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\n Dati generali della form\n </ng-template>\n\n <div class=\"row justify-content-start addButtons\">\n <div class=\"col\">\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\n (click)=\"openAiEditDialog()\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\">\n <mat-icon>auto_fix_high</mat-icon>\n <span style=\"margin-left: 10px\">{{ isNewForm ? 'Crea con AI' : 'Modifica con AI' }}</span>\n </button>\n </div>\n </div>\n\n <!-- Ultimo prompt AI + accesso allo storico -->\n <div *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint && aiPromptHistory.length > 0\"\n class=\"ai-last-prompt-bar\">\n <div class=\"ai-last-prompt-icon-wrap\">\n <mat-icon>auto_fix_high</mat-icon>\n </div>\n <div class=\"ai-last-prompt-content\">\n <div class=\"ai-last-prompt-label\">Richiesta AI iniziale</div>\n <div class=\"ai-last-prompt-text\">{{ aiPromptHistory[0] }}</div>\n </div>\n <button mat-icon-button type=\"button\" class=\"ai-last-prompt-history-btn\" matTooltip=\"Vedi storico completo\"\n (click)=\"openAiHistoryDialog()\">\n <mat-icon>history</mat-icon>\n </button>\n </div>\n\n <div class=\"row firstRow\">\n <!--\n <div class=\"col-md-6\">\n <mat-label\n [matTooltip]=\"'Va inserito per essere utilizzato come riferimento nei template. non accetta caratteri speciali ne spazi.'\"\n >\n Codice Univoco\n </mat-label>\n <mat-form-field class=\"name\">\n <input\n matInput\n [matTooltip]=\"'Va inserito per essere utilizzato come riferimento nei template. non accetta caratteri speciali ne spazi.'\"\n formControlName=\"Code\"\n [(ngModel)]=\"form.Code\"\n required\n (focusout)=\"setCode(form.Code)\"\n disabled=\"true\"\n readonly=\"true\"\n />\n </mat-form-field>\n </div>\n <div class=\"col-md-6\"></div>\n -->\n <div class=\"col-md-4\">\n <mat-form-field class=\"name\" appearance=\"outline\">\n <mat-label>Nome</mat-label>\n <input placeholder=\"Nome\" matInput formControlName=\"Name\" [(ngModel)]=\"form.Name\" required\n (focusout)=\"setName(form.Name)\" />\n </mat-form-field>\n </div>\n\n <div class=\"col-md-4\">\n <!-- <mat-label>Tipo di visualizzazione</mat-label> -->\n <tmw-select class=\"nameSection\" [enumData]=\"FormScalarTypeEnum\" [(ngModelInput)]=\"form.FormScalarType\"\n [isRequired]=\"false\" required [showCancelButton]=\"false\" [formGroupInput]=\"formFormGroup\"\n [formControlNameInput]=\"'FormScalarType'\" (ngModelInputChange)=\"onChangeFormScalarType()\"\n placeholder=\"Tipo di visualizzazione\">\n </tmw-select>\n </div>\n\n <div class=\"col-md-6\">\n <mat-form-field class=\"name\" appearance=\"outline\">\n <mat-label>Descrizione</mat-label>\n <input matInput formControlName=\"Description\" [(ngModel)]=\"form.Description\"\n (focusout)=\"stringSanitizer(form.Name)\" placeholder=\"Descrizione\" />\n </mat-form-field>\n </div>\n </div>\n <div class=\"row inserted\" *ngIf=\"\n form.FormScalarType &&\n form.FormScalarType != FormScalarTypeEnum.Semplice\n \">\n <div class=\"col-md-4\">\n <mat-form-field class=\"nameSection\" appearance=\"outline\">\n <mat-label> Nome sezione (invio per confermare) </mat-label>\n\n <input matInput [(ngModel)]=\"formFieldGroupName\" [ngModelOptions]=\"{ standalone: true }\"\n (keyup)=\"onFormFieldGroupNameKeyUp($event)\" placeholder=\"Nome sezione (invio per confermare)\" />\n </mat-form-field>\n </div>\n <div class=\"col-md-8\">\n <span class=\"mr-3\">Sezioni inserite:</span>\n <ul class=\"section-list\">\n <li *ngFor=\"let groupName of form.FormFieldsGroups; let i = index\">\n <span class=\"sectionInsert\">\n <mat-icon class=\"mr-1\" (click)=\"onDeleteFormFieldGroupName(groupName.Name)\">close</mat-icon>\n <mat-icon class=\"mr-1 icon-black\" (click)=\"onEditFormFieldGroupName(groupName)\">edit</mat-icon>\n {{ groupName.Name }}\n </span>\n </li>\n </ul>\n </div>\n </div>\n\n <div class=\"mt-2 d-flex justify-content-end\">\n <!-- IMPORT -->\n <button *ngIf=\"!this.formID\" class=\"btn btn-clear button-next me-2\" mat-raised-button color=\"primary\"\n (click)=\"importModule()\">\n Importa\n </button>\n <!-- END IMPORT -->\n\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"formFormGroup.invalid\">\n Successivo\n </button>\n </div>\n </form>\n </mat-step>\n <!--#endregion DATI GENERALI DELLA FORM -->\n\n <!--#region AGGIUNTA DEI CAMPI DELLA FORM -->\n <mat-step class=\"dynamic-module-configurator-add-field\" [completed]=\"isFieldStepCompleted()\">\n <ng-template matStepLabel>\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\n <mat-label>Campi da inserire</mat-label>\n </ng-template>\n\n <div class=\"row justify-content-start addButtons\">\n <div class=\"col\">\n <button class=\"btn btn-primary me-2\" mat-raised-button color=\"primary\" type=\"button\"\n (click)=\"openFieldDialog()\">\n <mat-icon>add</mat-icon>\n <span style=\"margin-left: 10px\">Aggiungi campo</span>\n </button>\n\n <!-- <button\n class=\"btn btn-outlined me-2\"\n mat-raised-button\n color=\"primary\"\n type=\"button\"\n (click)=\"openInnerFormDialog()\"\n *ngIf=\"!innerFormManagment\"\n >\n <mat-icon>add</mat-icon>\n <span style=\"margin-left: 10px\">Aggiungi form di dettaglio</span>\n </button> -->\n\n <button class=\"btn btn-outlined btn-outlined-red me-2\" mat-raised-button color=\"red\" type=\"button\"\n (click)=\"deleteSelectedFields('Fields')\" *ngIf=\"showDeleteButton\">\n <mat-icon>clear</mat-icon>\n <span style=\"margin-left: 10px\">Elimina campi selezionati</span>\n </button>\n\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\n (click)=\"openAiEditDialog()\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\">\n <mat-icon>auto_fix_high</mat-icon>\n <span style=\"margin-left: 10px\">{{ isNewForm ? 'Crea con AI' : 'Modifica con AI' }}</span>\n </button>\n </div>\n </div>\n\n <eqp-table class=\"table\" #fieldsTable [createMatCard]=\"false\" [columns]=\"fieldsColumns\" [enableDragAndDrop]=\"false\"\n [enableDragColumn]=\"true\" [changeDragRowPosition]=\"true\" [isMultipleSelection]=\"true\" [data]=\"form.Fields\"\n [emptyTableMessage]=\"'Nessun campo inserito'\" (dragReleasedEvent)=\"onDragReleased($event)\"\n (dragEndedEvent)=\"onDragEnded($event)\" (checkboxInfo)=\"toggleDeleteButton($event)\" [searchText]=\"''\"\n [paginatorVisible]=\"false\">\n </eqp-table>\n\n <div class=\"mt-2 d-flex justify-content-end\">\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\n Precedente\n </button>\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"!isFieldStepCompleted()\"\n [ngClass]=\"{ disabled: formFormGroup.invalid }\" (click)=\"setFormStatus(false)\">\n Successivo\n </button>\n </div>\n </mat-step>\n <!--#endregion AGGIUNTA DEI CAMPI DELLA FORM -->\n\n <ng-template matStepperIcon=\"edit\" let-index=\"index\">\n <mat-label>{{ index + 1 }}</mat-label>\n </ng-template>\n\n <!--#region AGGIUNTA DELLE OPERAZIONI SUI RECORD -->\n <!--#<mat-step>\n <ng-template matStepLabel>\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\n Azioni aggiuntive sui record\n </ng-template>\n\n <div class=\"row justify-content-start addButtons\">\n <div class=\"col\">\n <button\n class=\"btn btn-primary\"\n mat-raised-button\n color=\"primary\"\n type=\"button\"\n (click)=\"openActionOnRecordDialog()\"\n >\n <mat-icon>add</mat-icon>\n <span style=\"margin-left: 10px\">Aggiungi azione</span>\n </button>\n </div>\n </div>\n <eqp-table\n class=\"table\"\n #actionsOnRecordTable\n [createMatCard]=\"false\"\n [columns]=\"actionsOnRecordColumns\"\n [data]=\"form.ActionsOnRecord\"\n [emptyTableMessage]=\"'Nessuna action inserita'\"\n [searchText]=\"''\"\n >\n </eqp-table>\n\n <div class=\"mt-2 d-flex justify-content-end buttonsNextDiv\">\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\n Precedente\n </button>\n <button\n class=\"button-next\"\n mat-raised-button\n color=\"primary\"\n matStepperNext\n (click)=\"setFormStatus(false)\"\n >\n Successivo\n </button>\n </div>\n </mat-step>-->\n <!--#endregion AGGIUNTA DELLE OPERAZIONI SUI RECORD -->\n\n\n\n <!--#region AGGIUNTA DEI BOTTONI AZIONE -->\n <mat-step>\n <ng-template matStepLabel>\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\n Bottoni Azione\n </ng-template>\n\n <div class=\"row justify-content-start addButtons\">\n <div class=\"col\">\n <button class=\"btn btn-primary\" mat-raised-button color=\"primary\" type=\"button\"\n (click)=\"openActionButtonDialog()\">\n <mat-icon>add</mat-icon>\n <span style=\"margin-left: 10px\">Aggiungi bottone azione</span>\n </button>\n </div>\n </div>\n <eqp-table class=\"table\" #actionButtonsTable [createMatCard]=\"false\" [columns]=\"actionButtonsColumns\"\n [data]=\"form.ActionButtons\" [emptyTableMessage]=\"'Nessun bottone azione inserito'\" [searchText]=\"''\"\n [enableDragAndDrop]=\"false\" [enableDragColumn]=\"true\" [changeDragRowPosition]=\"true\"\n (dragReleasedEvent)=\"onDragReleased($event)\" (dragEndedEvent)=\"onDragEnded($event)\">\n </eqp-table>\n\n <div class=\"mt-2 d-flex justify-content-end buttonsNextDiv\">\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\n Precedente\n </button>\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext (click)=\"setFormStatus(false)\">\n Successivo\n </button>\n </div>\n </mat-step>\n <!--#endregion AGGIUNTA DEI BOTTONI AZIONE -->\n\n\n\n <!--#region TRIGGERS-->\n <mat-step>\n <ng-template matStepLabel>\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\n Triggers\n </ng-template>\n\n <div class=\"row justify-content-start addButtons\">\n <div class=\"col\">\n <button class=\"btn btn-primary\" mat-raised-button color=\"primary\" type=\"button\" (click)=\"openTriggersDialog()\">\n <mat-icon>add</mat-icon>\n <span style=\"margin-left: 10px\">Aggiungi trigger</span>\n </button>\n </div>\n </div>\n\n <eqp-table class=\"table\" #triggersTable [createMatCard]=\"false\" [columns]=\"triggersColumns\" [data]=\"form.Triggers\"\n [emptyTableMessage]=\"'Nessuna action inserita'\" [searchText]=\"''\">\n </eqp-table>\n\n <div class=\"mt-2 d-flex justify-content-end\">\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\n Precedente\n </button>\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"!isFieldStepCompleted()\"\n [ngClass]=\"{ disabled: formFormGroup.invalid }\" (click)=\"setFormStatus(true)\">\n Successivo\n </button>\n </div>\n\n </mat-step>\n <!--#endregion TRIGGERS-->\n\n <!--#region VISUALIZZAZIONE FORM CREATA -->\n <mat-step class=\"dynamic-module-configurator-preview\">\n <ng-template matStepLabel>\n <div class=\"stepper-header-overlay\"\n (click)=\"setFormStatus( formFormGroup.valid && form.Fields && form.Fields.length > 0 )\"></div>\n Anteprima\n </ng-template>\n\n <div class=\"row align-items-center addButtons\">\n <div class=\"col-auto\">\n <button class=\"btn btn-outlined me-2\" [class.active]=\"showAllFields\" mat-raised-button color=\"primary\"\n type=\"button\" (click)=\"showAllFields = !showAllFields\">\n <mat-icon>{{ showAllFields ? 'visibility_off' : 'visibility' }}</mat-icon>\n <span style=\"margin-left: 10px\">Mostra anche i campi invisibili</span>\n </button>\n </div>\n <div class=\"col-auto\" *ngIf=\"contestualization && contestualization.length > 0\">\n <button class=\"btn btn-outlined me-2\" [class.active]=\"selectedContestualization != null\" mat-raised-button\n color=\"primary\" type=\"button\" (click)=\"openContestualizationDialog()\">\n <mat-icon>tune</mat-icon>\n <span style=\"margin-left: 10px\">Contestualizzazione</span>\n </button>\n </div>\n <div class=\"col-auto\">\n <button class=\"btn btn-outlined me-2\" [class.active]=\"showGraficaPanel\" mat-raised-button color=\"accent\"\n type=\"button\" (click)=\"showGraficaPanel = !showGraficaPanel\">\n <mat-icon>palette</mat-icon>\n <span style=\"margin-left: 10px\">Grafica</span>\n </button>\n </div>\n <div class=\"col-auto\">\n <button class=\"btn btn-outlined me-2\" [class.active]=\"visualEditorActive\" mat-raised-button color=\"accent\"\n type=\"button\" (click)=\"toggleVisualEditor()\">\n <mat-icon>grid_view</mat-icon>\n <span style=\"margin-left: 10px\">Visual Editor</span>\n </button>\n </div>\n <div class=\"col-auto\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormSpeechToFormEditEndPointEndPoint\">\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\n (click)=\"openAiEditDialog()\">\n <mat-icon>auto_fix_high</mat-icon>\n <span style=\"margin-left: 10px\">Modifica con AI</span>\n </button>\n </div>\n </div>\n\n <div *ngIf=\"veSwapField\" class=\"ve-swap-banner\">\n <mat-icon class=\"ve-swap-banner-icon\">swap_horiz</mat-icon>\n <span>Clicca sul campo con cui vuoi scambiare la posizione</span>\n <button mat-stroked-button color=\"warn\" type=\"button\" (click)=\"veCancelSwap()\" class=\"ve-swap-banner-cancel\">\n <mat-icon>close</mat-icon>\n Annulla\n </button>\n </div>\n\n <div *ngIf=\"showGraficaPanel\" class=\"mt-2\">\n <mat-accordion class=\"configurator-accordion\" [multi]=\"true\" displayMode=\"flat\">\n <mat-expansion-panel class=\"configurator-panel\" [expanded]=\"true\">\n <mat-expansion-panel-header>\n <mat-panel-title>Grafica</mat-panel-title>\n </mat-expansion-panel-header>\n <div class=\"form-grafica-ai-row\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToGraphicsEndPoint\">\n <button mat-stroked-button type=\"button\" class=\"btn-form-graphic-suggest\"\n [disabled]=\"formGraphicSuggestLoading\" (click)=\"toggleFormGraphicSuggestInput()\">\n <mat-spinner *ngIf=\"formGraphicSuggestLoading\" diameter=\"14\"\n style=\"display:inline-block;vertical-align:middle;margin-right:4px\"></mat-spinner>\n <mat-icon *ngIf=\"!formGraphicSuggestLoading\">palette</mat-icon>\n {{ formGraphicSuggestLoading ? 'Elaborazione...' : 'Suggerisci Grafica Completa' }}\n </button>\n <div class=\"form-hint-input-group\" *ngIf=\"showFormGraphicSuggestInput && !formGraphicSuggestLoading\">\n <select class=\"form-graphic-scope-select\" [(ngModel)]=\"formGraphicScope\"\n [ngModelOptions]=\"{standalone: true}\">\n <option value=\"all\">Tutto</option>\n <option value=\"main\">Principale</option>\n <option *ngFor=\"let opt of presentFieldTypeOptions\" [value]=\"opt.value\">{{ opt.label }}</option>\n </select>\n <button type=\"button\" class=\"btn-hint-randomize\" (click)=\"randomizeHint()\"\n matTooltip=\"Suggerimento casuale\">\n <mat-icon>tips_and_updates</mat-icon>\n </button>\n <button type=\"button\" class=\"btn-generate-bg\" [class.active]=\"generateBackground\"\n (click)=\"generateBackground = !generateBackground\"\n [matTooltip]=\"generateBackground ? 'Sfondo AI: attivo' : 'Genera anche sfondo AI'\">\n <mat-icon>image</mat-icon>\n </button>\n <input type=\"text\" class=\"form-graphic-hint-input\" [(ngModel)]=\"formGraphicSuggestHint\"\n [ngModelOptions]=\"{standalone: true}\"\n placeholder=\"es. toni di blu scuro, stile professionale, sfondo sfumato...\" />\n <button type=\"button\" class=\"btn-form-graphic-send\" (click)=\"onFormGraphicSuggest()\"\n matTooltip=\"Applica suggerimento grafico al form\">\n <mat-icon>auto_fix_high</mat-icon>\n </button>\n </div>\n </div>\n <hr class=\"grafica-ai-separator\" />\n <div class=\"row align-items-start grafica-row\">\n <div class=\"col-md-4\">\n <p class=\"grafica-field-label\">Immagine di sfondo</p>\n <eqp-attachments [attachmentsList]=\"bgAttachmentList\" [showMatCard]=\"false\" [allowOnlyImages]=\"true\"\n [isDisabled]=\"false\" [showInlinePreview]=\"true\" [multipleAttachment]=\"false\" [showHeader]=\"false\"\n [allowedTypes]=\"[AttachmentType.FILE]\" (localEditedAttachments)=\"onBgImageChange($event)\"\n (onDeleteAttachment)=\"onBgImageDelete()\">\n </eqp-attachments>\n </div>\n <div class=\"col-md-4\">\n <mat-form-field class=\"w-100\" appearance=\"outline\">\n <mat-label>CSS Principale</mat-label>\n <textarea matInput [(ngModel)]=\"form.ThemeCSS\" [ngModelOptions]=\"{ standalone: true }\"\n placeholder=\"es. max-width: 800px; padding: 16px; background: #f5f5f5;\" rows=\"5\"></textarea>\n </mat-form-field>\n </div>\n <div class=\"col-md-4\">\n <mat-form-field class=\"w-100\" appearance=\"outline\">\n <mat-label>CSS Titolo</mat-label>\n <textarea matInput [(ngModel)]=\"form.TitleCSS\"\n (ngModelChange)=\"previewForm && (previewForm.TitleCSS = $event)\"\n [ngModelOptions]=\"{ standalone: true }\"\n placeholder=\"es. font-size: 2rem; font-weight: 700; color: #fff;\" rows=\"5\"></textarea>\n </mat-form-field>\n </div>\n </div>\n </mat-expansion-panel>\n </mat-accordion>\n </div>\n\n <hr />\n\n <div class=\"dynamic-module-preview\" [style]=\"previewBgStyle\">\n <div [style]=\"previewThemeStyle\">\n <add-form-record *ngIf=\"previewForm && formCompleted\" [form]=\"previewForm\" [userID]=\"UserID\" [orgaID]=\"orgaID\"\n [formulaObject]=\"formulaObject\" [configurations]=\"viewConfig\" [showAllFields]=\"showAllFields\"\n [QueryEditorComponent]=\"QueryEditorComponent\" [endPointConfiguration]=\"endPointConfiguration\"\n [visualEditorMode]=\"visualEditorActive\" [veSwapFieldCode]=\"veSwapField?.Label ?? null\"\n (veFieldClick)=\"onVeFieldClick($event)\" (out)=\"onExternalComponentOut($event)\"\n (fireTrigger)=\"onFireTrigger($event)\" [inConfig]=\"true\">\n </add-form-record>\n </div>\n </div>\n\n <div class=\"mt-2 d-flex justify-content-end button-nextDiv\">\n <button class=\"mr-2 button-exit\" mat-raised-button matStepperPrevious (click)=\"setFormStatus(false)\">\n Precedente\n </button>\n <button class=\"button-next\" mat-raised-button color=\"primary\" (click)=\"saveForm()\">\n Salva form\n </button>\n </div>\n </mat-step>\n <!--#endregion VISUALIZZAZIONE FORM CREATA -->\n\n</mat-horizontal-stepper>\n\n<!-- DIALOG AGGIUNTA/MODIFICA CAMPO -->\n<ng-template #dialogField>\n <eqp-dynamic-module-add-form-field [form]=\"form\" [endPointConfiguration]=\"endPointConfiguration\"\n [field]=\"selectedField\" [formulaObject]=\"formulaObject\" [indexField]=\"indexSelectedField\"\n [availableFields]=\"form.Fields\" [contestualization]=\"contestualization\"\n [QueryEditorComponent]=\"QueryEditorComponent\" [fieldsExtraConfig]=\"fieldsExtraConfig\"\n [actionButtons]=\"actionButtons\" [aiFieldSuggestLoading]=\"aiFieldSuggestLoading\" [formFieldsGroups]=\"\n form.FormScalarType != FormScalarTypeEnum.Semplice\n ? form.FormFieldsGroups\n : null\n \" (openAiEditForFieldEvent)=\"onAiEditForField($event)\" (openAiGraphicSuggestEvent)=\"onAiGraphicSuggest($event)\"\n (saveFieldEvent)=\"onSaveField($event)\" (out)=\"onExternalComponentOut($event)\">\n </eqp-dynamic-module-add-form-field>\n</ng-template>\n\n<!-- TEMPLATE PER VISUALIZZARE LA COLONNA DELLA SEZIONE NELLA TABELLA DEI FIELDS -->\n<ng-template #fieldSectionColumnTemplate let-row=\"row\">\n <tmw-select [arrayData]=\"form.FormFieldsGroups\" [(ngModelInput)]=\"row.FieldGroup\" [arrayKeyProperty]=\"'Name'\"\n [arrayValueProperty]=\"'Name'\" placeholder=\"Sezione\" [isRequired]=\"true\" [includeFullObject]=\"false\">\n </tmw-select>\n</ng-template>\n\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE UNA ACTION SUI RECORD DELLA FORM -->\n<ng-template #dialogActionOnRecord>\n\n <div class=\"container-fluid third-modal\" style=\"max-height: 70vh !important; overflow-x: hidden; overflow-y: auto\">\n <form [formGroup]=\"actionOnRecordFormGroup\">\n <div class=\"row title\">\n <div class=\"header-title-standard\">\n {{\n indexSelectedAction != null && indexSelectedAction >= 0\n ? \"Modifica\"\n : \"Aggiungi\"\n }}\n azione sul record\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-12 col-md-4 mt-2\">\n <mat-label> Nome </mat-label>\n <mat-form-field>\n <input formControlName=\"Name\" required matInput [(ngModel)]=\"selectedAction.Name\" />\n </mat-form-field>\n </div>\n <div class=\"col-sm-12 col-md-4 mt-2\">\n <mat-label> Icona </mat-label>\n <mat-form-field>\n <input formControlName=\"Icon\" required matInput [(ngModel)]=\"selectedAction.Icon\" />\n </mat-form-field>\n </div>\n\n <div class=\"col-12 mt-2\">\n <mat-label>Azione (Javascript)</mat-label>\n <mat-form-field>\n <textarea matInput [rows]=\"3\" formControlName=\"Action\" required [(ngModel)]=\"selectedAction.Action\"\n [matAutocomplete]=\"actionAutocomplete\" (keyup)=\"setActionAutocompleteOptions($event)\"\n (focus)=\"setActionAutocompleteOptions(null)\" style=\"\n border: 1px solid lightgray !important;\n border-radius: 10px !important;\n \"></textarea>\n <mat-autocomplete #actionAutocomplete=\"matAutocomplete\">\n <mat-option *ngFor=\"let option of actionAutocompleteOptions\" [value]=\"option.value\">\n {{ option.label }}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n </div>\n </div>\n\n <div class=\"d-flex justify-content-end mt-2 mb-1\">\n <div class=\"buttonsForm\">\n <button class=\"btn mat-raised-button cancel\" (click)=\"closeDialogActionOnRecord()\" type=\"button\">\n Annulla\n </button>\n <button class=\"mr-2 save\" mat-raised-button color=\"primary\" (click)=\"saveActionOnRecord()\"\n [disabled]=\"actionOnRecordFormGroup.invalid\" type=\"button\">\n Salva\n </button>\n </div>\n </div>\n </form>\n </div>\n</ng-template>\n\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE UN BOTTONE AZIONE -->\n<ng-template #dialogActionButton>\n <action-button-creator [endPointConfiguration]=\"endPointConfiguration\" [form]=\"form\" [formulas]=\"actionButtons\"\n [actionButton]=\"selectedActionButton\" (onSaveRecord)=\"saveActionButtons($event)\"></action-button-creator>\n</ng-template>\n\n<!-- TEMPLATE PER CONFIGURARE LE FORM DI DETTAGLIO -->\n<ng-template #dialogInnerForm>\n <!-- [form]=\"selectedInnerForm\"\n [innerFormManagment]=\"true\"\n [innerFormRef]=\"dialogInnerFormRef\" -->\n <eqp-dynamic-module-configurator [configurations]=\"innerFormConfig\" (saveFormEvent)=\"onSaveOrExitInnerForm($event)\">\n </eqp-dynamic-module-configurator>\n</ng-template>\n\n<!-- TEMPLATE PER IMPORT -->\n<ng-template #dialogImport>\n <mat-card class=\"importDialog\">\n <mat-card-header class=\"p-2 justify-content-around\">\n <mat-card-title>\n Import\n </mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"p-2\">\n <input type=\"file\" class=\"input-file-btn pb-2\" (change)=\"onImport($event)\" />\n </mat-card-content>\n <mat-card-footer class=\"p-2 d-flex justify-content-end\">\n <button class=\"btn btn-clear button-back me-2\" mat-raised-button color=\"disabled\" (click)=\"closeImport()\">\n Annulla\n </button>\n </mat-card-footer>\n </mat-card>\n</ng-template>\n\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE I TRIGGERS -->\n<ng-template #dialogTriggers>\n <trigger-creator [endPointConfiguration]=\"endPointConfiguration\" [form]=\"form\" [formulas]=\"triggers\"\n [trigger]=\"selectedTrigger\" (onSaveRecord)=\"saveTrigger($event)\"></trigger-creator>\n</ng-template>\n\n<!-- DIALOG MODIFICA CON AI -->\n<ng-template #dialogAiEdit>\n <mat-card style=\"min-width: 480px\">\n <div class=\"ai-dialog-header\">\n <mat-icon>auto_fix_high</mat-icon>\n <span>{{ isNewForm ? 'Crea form con AI' : 'Modifica form con AI' }}</span>\n <button *ngIf=\"aiPromptHistory.length > 0\" mat-icon-button type=\"button\" class=\"ai-history-toggle-btn\"\n [class.active]=\"showAiPromptHistory\"\n [matTooltip]=\"showAiPromptHistory ? 'Nascondi storico richieste' : 'Mostra storico richieste'\"\n (click)=\"showAiPromptHistory = !showAiPromptHistory\">\n <mat-icon>{{ showAiPromptHistory ? 'history_toggle_off' : 'history' }}</mat-icon>\n </button>\n </div>\n\n <div class=\"ai-dialog-body-flex\">\n <mat-card-content class=\"p-3 ai-dialog-main-content\">\n <!-- Prompt textarea + microfono -->\n <div style=\"position: relative\">\n <mat-form-field appearance=\"outline\" style=\"width: 100%\">\n <mat-label>{{ isNewForm ? 'Descrivi il form da creare' : 'Descrivi la modifica da apportare' }}</mat-label>\n <textarea matInput [(ngModel)]=\"aiEditPrompt\" rows=\"5\" [disabled]=\"aiEditLoading\"\n [placeholder]=\"isNewForm ? 'Es: crea un form per la registrazione pazienti con campi nome, cognome, data di nascita e codice fiscale...' : 'Es: aggiungi un campo data di nascita, rimuovi il campo email, rendi obbligatorio il campo telefono...'\"></textarea>\n </mat-form-field>\n <mat-icon *ngIf=\"true\" SpeechToText [(bindedText)]=\"aiEditPrompt\"\n style=\"position: absolute; right: 12px; top: 12px; cursor: pointer; color: #666\"\n [matTooltip]=\"isNewForm ? 'Parla per descrivere il form' : 'Parla per dettare la modifica'\">keyboard_voice</mat-icon>\n </div>\n\n <!-- Allegati + genera sfondo -->\n <div class=\"mb-2 mt-1\" style=\"display:flex;align-items:center;gap:8px;flex-wrap:wrap\">\n <button mat-stroked-button type=\"button\" [disabled]=\"aiEditLoading\" (click)=\"aiEditFileInput.click()\">\n <mat-icon>attach_file</mat-icon>\n <span style=\"margin-left: 6px\">Aggiungi allegati (PDF o immagini)</span>\n </button>\n <input #aiEditFileInput type=\"file\" multiple accept=\"image/*,application/pdf\" style=\"display: none\"\n (change)=\"onAiEditFileChange($event)\" />\n <button *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\" type=\"button\" class=\"btn-generate-bg\"\n [class.active]=\"aiGenerateBackground\" [disabled]=\"aiEditLoading\"\n (click)=\"aiGenerateBackground = !aiGenerateBackground\"\n [matTooltip]=\"aiGenerateBackground ? 'Sfondo AI: attivo' : 'Genera anche sfondo AI'\">\n <mat-icon>image</mat-icon>\n </button>\n </div>\n <ul *ngIf=\"aiEditAttachments.length > 0\" style=\"list-style: none; padding: 0; margin: 0 0 12px\">\n <li *ngFor=\"let att of aiEditAttachments; let i = index\"\n style=\"display: flex; align-items: center; gap: 6px; margin-bottom: 4px\">\n <mat-icon style=\"font-size: 18px\">insert_drive_file</mat-icon>\n <span>{{ att.fileName }}</span>\n <mat-icon style=\"font-size: 18px; cursor: pointer; color: #999\"\n (click)=\"removeAiEditAttachment(i)\">close</mat-icon>\n </li>\n </ul>\n\n <!-- Autosave -->\n <mat-slide-toggle [(ngModel)]=\"aiEditAutosave\" [disabled]=\"aiEditLoading\" color=\"primary\">\n {{ isNewForm ? 'Salva automaticamente dopo la creazione' : 'Salva automaticamente dopo la modifica' }}\n </mat-slide-toggle>\n\n <!-- Conto alla rovescia mostrato mentre AI elabora -->\n <div *ngIf=\"aiEditLoading && aiEditEstimatedSec > 0\" class=\"mt-3 mb-1\">\n <!-- Fase normale: countdown in corso -->\n <ng-container *ngIf=\"!aiEditIsOvertime\">\n <mat-progress-bar mode=\"determinate\" [value]=\"(1 - aiEditCountdown / aiEditEstimatedSec) * 100\"\n color=\"accent\">\n </mat-progress-bar>\n <div style=\"text-align: center; margin-top: 4px\">\n <small class=\"text-muted\">\n Operazione in corso \u2014 tempo stimato rimanente: <b>{{ aiEditCountdown }}s</b>\n </small>\n </div>\n </ng-container>\n <!-- Fase overtime: il server impiega pi\u00F9 del previsto -->\n <ng-container *ngIf=\"aiEditIsOvertime\">\n <mat-progress-bar mode=\"indeterminate\" color=\"warn\"></mat-progress-bar>\n <div style=\"display: flex; align-items: center; justify-content: center; gap: 12px; margin-top: 6px\">\n <small class=\"text-muted\">\n Sembra che ci voglia pi\u00F9 del previsto \u2014 <b>+{{ -aiEditCountdown }}s</b>\n </small>\n <button mat-stroked-button type=\"button\" color=\"warn\" (click)=\"cancelAiEdit()\"\n style=\"height: 26px; line-height: 26px; font-size: 12px; padding: 0 10px; min-width: unset\">\n Annulla\n </button>\n </div>\n </ng-container>\n </div>\n\n <!-- Stima costo AI (aggiornata in tempo reale al variare del prompt, del modello citato,\n degli allegati e del numero di split ipotizzato) -->\n <div class=\"ai-cost-panel mt-3\" *ngIf=\"!aiEditLoading\">\n <div class=\"ai-cost-panel-icon\">\n <mat-icon>payments</mat-icon>\n </div>\n\n <div class=\"ai-cost-panel-body\">\n <div class=\"ai-cost-panel-header\">\n <span class=\"ai-cost-panel-title\">Costo stimato uso AI</span>\n <span class=\"ai-cost-panel-model\">{{ aiEditDetectedModelLabel }}</span>\n </div>\n\n <ng-container *ngIf=\"aiEditSplitCount <= 1; else aiCostSplitLines\">\n <div class=\"ai-cost-panel-line\">\n <span class=\"ai-cost-panel-line-label\">Primo uso</span>\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostFirstEur) }} \u20AC</span>\n </div>\n <div class=\"ai-cost-panel-line\">\n <span class=\"ai-cost-panel-line-label\">Usi successivi</span>\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostSubsequentEur) }}\n \u20AC</span>\n </div>\n </ng-container>\n <ng-template #aiCostSplitLines>\n <div class=\"ai-cost-panel-line\">\n <span class=\"ai-cost-panel-line-label\">{{ aiEditSplitCount }} parti parallele</span>\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostFirstEur) }} \u20AC</span>\n </div>\n <div class=\"ai-cost-panel-hint\">{{ aiEditSplitWarmUpApplies\n ? 'Il server scalda la cache prima dello split: risparmio su ' + aiEditSplitCount + ' chiamate'\n : 'Split troppo piccolo per la cache: nessun beneficio, prezzo pieno su ' + aiEditSplitCount + '\n chiamate' }}</div>\n </ng-template>\n </div>\n\n <div class=\"ai-cost-panel-split\"\n matTooltip=\"Numero di split ipotizzati per la stima (1 = nessuno split, altrimenti 3-12: il server non usa mai 2 split)\">\n <span class=\"ai-cost-panel-split-label\">Split</span>\n <div class=\"ai-cost-panel-split-stepper\">\n <button type=\"button\" class=\"ai-cost-split-btn\" [disabled]=\"aiEditSplitCount <= 1\"\n (click)=\"decrementAiEditSplitCount()\">\n <mat-icon>remove</mat-icon>\n </button>\n <input type=\"number\" class=\"ai-cost-split-input\" [(ngModel)]=\"aiEditSplitCount\" min=\"1\" max=\"12\" />\n <button type=\"button\" class=\"ai-cost-split-btn\" [disabled]=\"aiEditSplitCount >= 12\"\n (click)=\"incrementAiEditSplitCount()\">\n <mat-icon>add</mat-icon>\n </button>\n </div>\n </div>\n </div>\n </mat-card-content>\n\n <!-- Pannello storico richieste -->\n <div *ngIf=\"showAiPromptHistory && aiPromptHistory.length > 0\" class=\"ai-history-panel\">\n <div class=\"ai-history-panel-title\">\n <mat-icon style=\"font-size: 16px; width: 16px; height: 16px\">history</mat-icon>\n <span>Storico richieste</span>\n </div>\n <div class=\"ai-history-list\">\n <div *ngFor=\"let prompt of aiPromptHistory; let i = index\" class=\"ai-history-item\">\n <span class=\"ai-history-index\">{{ i + 1 }}</span>\n <span class=\"ai-history-text\">{{ prompt }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\n <button mat-raised-button type=\"button\" [disabled]=\"aiEditLoading\" (click)=\"closeAiEditDialog()\">\n Annulla\n </button>\n <button mat-raised-button color=\"primary\" type=\"button\" [disabled]=\"!aiEditPrompt?.trim() || aiEditLoading\"\n (click)=\"sendAiEdit()\">\n <mat-spinner *ngIf=\"aiEditLoading\" diameter=\"18\"\n style=\"display: inline-block; margin-right: 6px; vertical-align: middle\"></mat-spinner>\n <span>{{ aiEditLoading ? 'Elaborazione...' : (isNewForm ? 'Crea con AI' : 'Modifica con AI') }}</span>\n </button>\n </mat-card-footer>\n </mat-card>\n</ng-template>\n\n<!-- VISUAL EDITOR \u2014 Tooltip azioni campo -->\n<ng-template #dialogVeTooltip>\n <div class=\"ve-tooltip-panel\">\n <div class=\"ve-tooltip-header\">\n <mat-icon class=\"ve-tooltip-icon\">edit_square</mat-icon>\n <span class=\"ve-tooltip-title\">{{ veSelectedField?.Description }}</span>\n <button mat-icon-button (click)=\"dialogVeTooltipRef?.close()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <ng-container *ngIf=\"!veShowGraphicInput\">\n <button mat-menu-item (click)=\"veEditField()\">\n <mat-icon>settings</mat-icon>\n Modifica campo\n </button>\n <button mat-menu-item *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\" (click)=\"veAiEdit()\">\n <mat-icon>auto_fix_high</mat-icon>\n Modifica con IA\n </button>\n <button mat-menu-item *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\"\n (click)=\"veShowGraphicInput = true\">\n <mat-icon>palette</mat-icon>\n Suggerisci Grafica\n </button>\n <button mat-menu-item (click)=\"veOpenReorder()\">\n <mat-icon>drag_indicator</mat-icon>\n Riordina\n </button>\n <button mat-menu-item (click)=\"veStartSwap()\">\n <mat-icon>swap_horiz</mat-icon>\n Scambia\n </button>\n <mat-divider></mat-divider>\n <button mat-menu-item (click)=\"veDeleteField()\" style=\"color: #e53935;\">\n <mat-icon style=\"color: #e53935;\">delete</mat-icon>\n Elimina campo\n </button>\n </ng-container>\n\n <div class=\"ve-tooltip-graphic\" *ngIf=\"veShowGraphicInput\">\n <div class=\"ve-tooltip-graphic-header\">\n <button mat-icon-button (click)=\"veShowGraphicInput = false; veApplyToAllOfType = false\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n <span style=\"flex:1\">Grafica per \"{{ veSelectedField?.Label }}\"</span>\n <button type=\"button\" class=\"btn-hint-randomize\" (click)=\"randomizeVeHint()\" matTooltip=\"Suggerimento casuale\">\n <mat-icon>tips_and_updates</mat-icon>\n </button>\n </div>\n <mat-form-field appearance=\"outline\" class=\"w-100\">\n <mat-label>Suggerimento grafico</mat-label>\n <textarea matInput [(ngModel)]=\"veGraphicHint\" [ngModelOptions]=\"{standalone: true}\" rows=\"3\"\n placeholder=\"es. bordo blu, sfondo semi-trasparente, etichetta in grassetto...\"></textarea>\n </mat-form-field>\n <div class=\"ve-apply-all-row\">\n <mat-slide-toggle [(ngModel)]=\"veApplyToAllOfType\" [ngModelOptions]=\"{standalone: true}\" color=\"primary\">\n Applica a tutti i <strong>{{ veSelectedFieldTypeName }}</strong>\n </mat-slide-toggle>\n </div>\n <div class=\"ve-tooltip-graphic-actions\">\n <button mat-button (click)=\"veShowGraphicInput = false; veApplyToAllOfType = false\">Annulla</button>\n <button mat-raised-button color=\"primary\" (click)=\"veSendGraphic()\">\n <mat-icon>auto_fix_high</mat-icon>\n Invia\n </button>\n </div>\n </div>\n </div>\n</ng-template>\n\n<!-- VISUAL EDITOR \u2014 Riordina campi -->\n<ng-template #dialogVeReorder>\n <mat-card class=\"ve-reorder-card\">\n <div class=\"ve-reorder-header\">\n <mat-icon>drag_indicator</mat-icon>\n <span>Riordina campi</span>\n </div>\n <mat-card-content>\n <div cdkDropList (cdkDropListDropped)=\"onVeDragDropReorder($event)\" class=\"ve-reorder-list\">\n <div *ngFor=\"let field of veReorderFields\" cdkDrag class=\"ve-reorder-item\">\n <mat-icon cdkDragHandle class=\"ve-drag-handle\">drag_indicator</mat-icon>\n <span>{{ field.Description }}</span>\n <div class=\"ve-drag-placeholder\" *cdkDragPlaceholder></div>\n </div>\n </div>\n </mat-card-content>\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\n <button mat-button (click)=\"dialogVeReorderRef?.close()\">Annulla</button>\n <button mat-raised-button color=\"primary\" (click)=\"veApplyReorder()\">OK</button>\n </mat-card-footer>\n </mat-card>\n</ng-template>\n\n<!-- DIALOG CONTESTUALIZZAZIONE DBGETTER -->\n<ng-template #dialogContestualization>\n <mat-card style=\"min-width: 420px\">\n <mat-card-header class=\"p-2\">\n <mat-card-title>Contestualizzazione del DBGetter</mat-card-title>\n </mat-card-header>\n <mat-card-content class=\"p-3\">\n <tmw-select [arrayData]=\"contestualization\" [(ngModelInput)]=\"selectedContestualization\"\n [arrayKeyProperty]=\"'entityTableName'\" [arrayValueProperty]=\"'entityTableName'\"\n (ngModelInputChange)=\"onContestualizationSelect()\" [placeholder]=\"'Contestualizzazione del DBGetter'\"\n [includeFullObject]=\"false\"></tmw-select>\n <div *ngIf=\"selectedContestualization != null\" class=\"mt-2\">\n <input matInput class=\"form-control\" [(ngModel)]=\"selectedContestualizationValue\"\n (change)=\"onContestualizationSelectValue()\">\n </div>\n </mat-card-content>\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\n <button class=\"btn btn-danger\"\n (click)=\"applyContestualization(null); closeContestualizationDialog()\">Rimuovi</button>\n <button class=\"btn btn-primary\"\n (click)=\"applyContestualization(contestualization); closeContestualizationDialog()\">Applica</button>\n </mat-card-footer>\n </mat-card>\n</ng-template>\n\n<!-- MODALE STORICO PROMPT AI -->\n<ng-template #dialogAiHistory>\n <div class=\"ai-history-dialog\">\n <div class=\"ai-dialog-header\">\n <mat-icon>history</mat-icon>\n <span>Storico richieste AI</span>\n <button mat-icon-button type=\"button\" class=\"ai-history-toggle-btn\" (click)=\"dialogAiHistoryRef?.close()\"\n matTooltip=\"Chiudi\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <div class=\"ai-history-dialog-body\">\n <div *ngFor=\"let prompt of aiPromptHistory; let i = index\" class=\"ai-history-dialog-item\"\n [class.ai-history-dialog-item--last]=\"i === aiPromptHistory.length - 1\">\n <div class=\"ai-history-dialog-badge\">{{ i + 1 }}</div>\n <div class=\"ai-history-dialog-prompt\">\n <span class=\"ai-history-dialog-prompt-label\" *ngIf=\"i === aiPromptHistory.length - 1\">Pi\u00F9 recente</span>\n <span class=\"ai-history-dialog-prompt-text\">{{ prompt }}</span>\n </div>\n </div>\n </div>\n <div class=\"ai-history-dialog-footer\">\n <button mat-raised-button color=\"primary\" type=\"button\" (click)=\"dialogAiHistoryRef?.close()\">Chiudi</button>\n </div>\n </div>\n</ng-template>\n\n<!-- AI DataGetter: caricamento silent del QueryEditor per popolare DataGetterValue via prompt -->\n<div *ngIf=\"aiDataGetterLoading\" style=\"display:none; position:absolute; width:0; height:0; overflow:hidden\"\n aria-hidden=\"true\">\n <ng-template [appDynamicLoader] [data]=\"QueryEditorComponent\" (out)=\"onAiDataGetterOut($event)\"></ng-template>\n</div>", styles: ["@charset \"UTF-8\";.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.mat-mdc-card{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f;--mdc-elevated-card-container-color: #fff}.mat-mdc-card-outlined{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f;--mdc-outlined-card-outline-color: #e0e0e0}.mat-mdc-card-subtitle{color:#0000008a}.mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color: #1e31eb}.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(30, 49, 235, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar .mdc-linear-progress__buffer-bar{background-color:#1e31eb40}.mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color: #ff5252}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(255, 82, 82, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-bar{background-color:#ff525240}.mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color: #c40000}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(196, 0, 0, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-bar{background-color:#c4000040}.mat-mdc-tooltip{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: white}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-floating-label{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input{color:#000000de}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:#0009}}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:#0009}}.mdc-text-field .mdc-text-field__input{caret-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field-character-counter,.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--leading{color:#0000008a}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:#0000008a}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--prefix{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--suffix{color:#0009}.mdc-text-field--filled .mdc-text-field__ripple:before,.mdc-text-field--filled .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, rgba(0, 0, 0, .87))}.mdc-text-field--filled:hover .mdc-text-field__ripple:before,.mdc-text-field--filled.mdc-ripple-surface--hover .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-hover-opacity, .04)}.mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple:before,.mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-focus-opacity, .12)}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#f5f5f5}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:#0000006b}.mdc-text-field--filled:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:#000000de}.mdc-text-field--filled .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:#00000061}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#000000de}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field--outlined .mdc-text-field__ripple:before,.mdc-text-field--outlined .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, transparent)}.mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#1e31ebde}.mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--disabled .mdc-text-field__input{color:#00000061}@media all{.mdc-text-field--disabled .mdc-text-field__input::-moz-placeholder{color:#00000061}.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:#00000061}}@media all{.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:#00000061}}.mdc-text-field--disabled .mdc-floating-label{color:#00000061}.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#00000061}.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#00000061}.mdc-text-field--disabled .mdc-text-field__icon--leading,.mdc-text-field--disabled .mdc-text-field__icon--trailing{color:#0000004d}.mdc-text-field--disabled .mdc-text-field__affix--prefix,.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:#00000061}.mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:#0000000f}.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:#0000000f}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input::-moz-placeholder{color:GrayText}.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:GrayText}.mdc-text-field--disabled .mdc-floating-label{color:GrayText}.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:GrayText}.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:GrayText}.mdc-text-field--disabled .mdc-text-field__icon--leading,.mdc-text-field--disabled .mdc-text-field__icon--trailing,.mdc-text-field--disabled .mdc-text-field__affix--prefix,.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:GrayText}.mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:GrayText}.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:GrayText}}.mdc-text-field--disabled.mdc-text-field--filled{background-color:#fafafa}.mat-mdc-form-field-error{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field-focus-overlay{background-color:#000000de}.mat-mdc-form-field:hover .mat-mdc-form-field-focus-overlay{opacity:.04}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:.12}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix:after{color:#0000008a}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-primary .mat-mdc-form-field-infix:after{color:#1e31ebde}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-accent .mat-mdc-form-field-infix:after{color:#ff5252de}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-warn .mat-mdc-form-field-infix:after{color:#c40000de}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix:after{color:#00000061}.mat-mdc-form-field.mat-accent .mdc-text-field__input{caret-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-accent:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-accent .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#ff5252de}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-warn .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#c40000de}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid transparent}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid transparent}.mat-mdc-form-field-infix{min-height:56px}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:28px}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -34.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:24px;padding-bottom:8px}.mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-select-value{color:#000000de}.mat-mdc-select-placeholder{color:#0009}.mat-mdc-select-disabled .mat-mdc-select-value{color:#00000061}.mat-mdc-select-arrow{color:#0000008a}.mat-mdc-form-field.mat-focused.mat-primary .mat-mdc-select-arrow{color:#1e31ebde}.mat-mdc-form-field.mat-focused.mat-accent .mat-mdc-select-arrow{color:#ff5252de}.mat-mdc-form-field.mat-focused.mat-warn .mat-mdc-select-arrow,.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow{color:#c40000de}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:#00000061}.mat-mdc-dialog-container{--mdc-dialog-container-color: white;--mdc-dialog-with-divider-divider-color: rgba(0, 0, 0, .12);--mdc-dialog-subhead-color: rgba(0, 0, 0, .87);--mdc-dialog-supporting-text-color: rgba(0, 0, 0, .6)}.mat-mdc-standard-chip{--mdc-chip-elevated-container-color: #e0e0e0;--mdc-chip-elevated-disabled-container-color: #e0e0e0;--mdc-chip-label-text-color: #212121;--mdc-chip-disabled-label-text-color: #212121;--mdc-chip-with-icon-icon-color: #212121;--mdc-chip-with-icon-disabled-icon-color: #212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #212121;--mdc-chip-with-trailing-icon-trailing-icon-color: #212121;--mdc-chip-with-icon-selected-icon-color: #212121}.mat-mdc-standard-chip.mat-primary.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-primary.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #1e31eb;--mdc-chip-elevated-disabled-container-color: #1e31eb;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.mat-mdc-standard-chip.mat-accent.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-accent.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #ff5252;--mdc-chip-elevated-disabled-container-color: #ff5252;--mdc-chip-label-text-color: rgba(0, 0, 0, .87);--mdc-chip-disabled-label-text-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-disabled-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-trailing-icon-trailing-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-selected-icon-color: rgba(0, 0, 0, .87)}.mat-mdc-standard-chip.mat-warn.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-warn.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #c40000;--mdc-chip-elevated-disabled-container-color: #c40000;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.mat-mdc-chip-focus-overlay{background:black}.mat-mdc-chip{height:32px}.mat-mdc-slide-toggle{--mdc-switch-disabled-selected-handle-color: #424242;--mdc-switch-disabled-unselected-handle-color: #424242;--mdc-switch-disabled-selected-track-color: #424242;--mdc-switch-disabled-unselected-track-color: #424242;--mdc-switch-unselected-focus-state-layer-color: #424242;--mdc-switch-unselected-pressed-state-layer-color: #424242;--mdc-switch-unselected-hover-state-layer-color: #424242;--mdc-switch-unselected-focus-track-color: #e0e0e0;--mdc-switch-unselected-hover-track-color: #e0e0e0;--mdc-switch-unselected-pressed-track-color: #e0e0e0;--mdc-switch-unselected-track-color: #e0e0e0;--mdc-switch-unselected-focus-handle-color: #212121;--mdc-switch-unselected-hover-handle-color: #212121;--mdc-switch-unselected-pressed-handle-color: #212121;--mdc-switch-handle-surface-color: var(--mdc-theme-surface, #fff);--mdc-switch-unselected-handle-color: #616161;--mdc-switch-selected-icon-color: #fff;--mdc-switch-disabled-selected-icon-color: #fff;--mdc-switch-disabled-unselected-icon-color: #fff;--mdc-switch-unselected-icon-color: #fff}.mat-mdc-slide-toggle .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:#00000061}.mat-mdc-slide-toggle.mat-primary{--mdc-switch-selected-focus-state-layer-color: #3949ab;--mdc-switch-selected-handle-color: #3949ab;--mdc-switch-selected-hover-state-layer-color: #3949ab;--mdc-switch-selected-pressed-state-layer-color: #3949ab;--mdc-switch-selected-focus-handle-color: #1a237e;--mdc-switch-selected-hover-handle-color: #1a237e;--mdc-switch-selected-pressed-handle-color: #1a237e;--mdc-switch-selected-focus-track-color: #7986cb;--mdc-switch-selected-hover-track-color: #7986cb;--mdc-switch-selected-pressed-track-color: #7986cb;--mdc-switch-selected-track-color: #7986cb}.mat-mdc-slide-toggle.mat-accent,.mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color: #e53935;--mdc-switch-selected-handle-color: #e53935;--mdc-switch-selected-hover-state-layer-color: #e53935;--mdc-switch-selected-pressed-state-layer-color: #e53935;--mdc-switch-selected-focus-handle-color: #b71c1c;--mdc-switch-selected-hover-handle-color: #b71c1c;--mdc-switch-selected-pressed-handle-color: #b71c1c;--mdc-switch-selected-focus-track-color: #e57373;--mdc-switch-selected-hover-track-color: #e57373;--mdc-switch-selected-pressed-track-color: #e57373;--mdc-switch-selected-track-color: #e57373}.mat-mdc-slide-toggle{--mdc-switch-state-layer-size: 48px}.mat-mdc-radio-button .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #1e31eb;--mdc-radio-selected-hover-icon-color: #1e31eb;--mdc-radio-selected-icon-color: #1e31eb;--mdc-radio-selected-pressed-icon-color: #1e31eb;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #1e31eb}.mat-mdc-radio-button.mat-primary .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff5252;--mdc-radio-selected-hover-icon-color: #ff5252;--mdc-radio-selected-icon-color: #ff5252;--mdc-radio-selected-pressed-icon-color: #ff5252;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #ff5252}.mat-mdc-radio-button.mat-accent .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #c40000;--mdc-radio-selected-hover-icon-color: #c40000;--mdc-radio-selected-icon-color: #c40000;--mdc-radio-selected-pressed-icon-color: #c40000;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #c40000}.mat-mdc-radio-button.mat-warn .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button .mdc-radio{padding:10px}.mat-mdc-radio-button .mdc-radio .mdc-radio__background:before{top:-10px;left:-10px;width:40px;height:40px}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control{top:0;right:0;left:0;width:40px;height:40px}.mat-mdc-slider{--mdc-slider-label-container-color: black;--mdc-slider-label-label-text-color: white;--mdc-slider-disabled-handle-color: #000;--mdc-slider-disabled-active-track-color: #000;--mdc-slider-disabled-inactive-track-color: #000;--mdc-slider-with-tick-marks-disabled-container-color: #000;--mat-mdc-slider-value-indicator-opacity: .6}.mat-mdc-slider.mat-primary{--mdc-slider-handle-color: #1e31eb;--mdc-slider-focus-handle-color: #1e31eb;--mdc-slider-hover-handle-color: #1e31eb;--mdc-slider-active-track-color: #1e31eb;--mdc-slider-inactive-track-color: #1e31eb;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #1e31eb;--mat-mdc-slider-ripple-color: #1e31eb;--mat-mdc-slider-hover-ripple-color: rgba(30, 49, 235, .05);--mat-mdc-slider-focus-ripple-color: rgba(30, 49, 235, .2)}.mat-mdc-slider.mat-accent{--mdc-slider-handle-color: #ff5252;--mdc-slider-focus-handle-color: #ff5252;--mdc-slider-hover-handle-color: #ff5252;--mdc-slider-active-track-color: #ff5252;--mdc-slider-inactive-track-color: #ff5252;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #ff5252;--mat-mdc-slider-ripple-color: #ff5252;--mat-mdc-slider-hover-ripple-color: rgba(255, 82, 82, .05);--mat-mdc-slider-focus-ripple-color: rgba(255, 82, 82, .2)}.mat-mdc-slider.mat-warn{--mdc-slider-handle-color: #c40000;--mdc-slider-focus-handle-color: #c40000;--mdc-slider-hover-handle-color: #c40000;--mdc-slider-active-track-color: #c40000;--mdc-slider-inactive-track-color: #c40000;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #c40000;--mat-mdc-slider-ripple-color: #c40000;--mat-mdc-slider-hover-ripple-color: rgba(196, 0, 0, .05);--mat-mdc-slider-focus-ripple-color: rgba(196, 0, 0, .2)}.mdc-menu-surface{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;background-color:var(--mdc-theme-surface, #fff);color:var(--mdc-theme-on-surface, #000)}.mdc-list-item__primary-text{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mdc-list-item__secondary-text{color:var(--mdc-theme-text-secondary-on-background, rgba(0, 0, 0, .54))}.mdc-list-item__overline-text{color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, .38))}.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-trailing-icon .mdc-list-item__end{background-color:transparent}.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-trailing-icon .mdc-list-item__end{color:var(--mdc-theme-text-icon-on-background, rgba(0, 0, 0, .38))}.mdc-list-item__end{color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, .38))}.mdc-list-item--disabled .mdc-list-item__start,.mdc-list-item--disabled .mdc-list-item__content,.mdc-list-item--disabled .mdc-list-item__end{opacity:.38}.mdc-list-item--disabled .mdc-list-item__primary-text,.mdc-list-item--disabled .mdc-list-item__secondary-text,.mdc-list-item--disabled .mdc-list-item__overline-text,.mdc-list-item--disabled.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--disabled.mdc-list-item--with-trailing-icon .mdc-list-item__end,.mdc-list-item--disabled.mdc-list-item--with-trailing-meta .mdc-list-item__end{color:var(--mdc-theme-on-surface, #000)}.mdc-list-item--selected .mdc-list-item__primary-text,.mdc-list-item--activated .mdc-list-item__primary-text,.mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:var(--mdc-theme-primary, #1e31eb)}.mdc-deprecated-list-group__subheader{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mdc-list-divider:after{border-bottom-color:#fff}.mdc-list-divider{background-color:#0000001f}.mat-mdc-menu-item[disabled],.mat-mdc-menu-item[disabled] .mat-mdc-menu-submenu-icon,.mat-mdc-menu-item[disabled] .mat-icon-no-color{color:var(--mdc-theme-text-disabled-on-background, rgba(0, 0, 0, .38))}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-submenu-icon{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-menu-item:hover:not([disabled]),.mat-mdc-menu-item.cdk-program-focused:not([disabled]),.mat-mdc-menu-item.cdk-keyboard-focused:not([disabled]),.mat-mdc-menu-item-highlighted:not([disabled]){background:rgba(0,0,0,.04)}.mat-mdc-list-base{--mdc-list-list-item-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-supporting-text-color: rgba(0, 0, 0, .54);--mdc-list-list-item-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-supporting-text-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-selected-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-disabled-label-text-color: black;--mdc-list-list-item-disabled-leading-icon-color: black;--mdc-list-list-item-disabled-trailing-icon-color: black;--mdc-list-list-item-hover-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-hover-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-focus-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-state-layer-color: black;--mdc-list-list-item-hover-state-layer-opacity: .04;--mdc-list-list-item-focus-state-layer-color: black;--mdc-list-list-item-focus-state-layer-opacity: .12}.mat-mdc-list-option .mdc-list-item__start,.mat-mdc-list-option .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #1e31eb;--mdc-checkbox-selected-hover-icon-color: #1e31eb;--mdc-checkbox-selected-icon-color: #1e31eb;--mdc-checkbox-selected-pressed-icon-color: #1e31eb;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option .mdc-list-item__start,.mat-mdc-list-option .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #1e31eb;--mdc-radio-selected-hover-icon-color: #1e31eb;--mdc-radio-selected-icon-color: #1e31eb;--mdc-radio-selected-pressed-icon-color: #1e31eb;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #1e31eb}.mat-mdc-list-option .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-option.mat-accent .mdc-list-item__start,.mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff5252;--mdc-checkbox-selected-hover-icon-color: #ff5252;--mdc-checkbox-selected-icon-color: #ff5252;--mdc-checkbox-selected-pressed-icon-color: #ff5252;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option.mat-accent .mdc-list-item__start,.mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff5252;--mdc-radio-selected-hover-icon-color: #ff5252;--mdc-radio-selected-icon-color: #ff5252;--mdc-radio-selected-pressed-icon-color: #ff5252;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #ff5252}.mat-mdc-list-option.mat-accent .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option.mat-accent .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-option.mat-warn .mdc-list-item__start,.mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #c40000;--mdc-checkbox-selected-hover-icon-color: #c40000;--mdc-checkbox-selected-icon-color: #c40000;--mdc-checkbox-selected-pressed-icon-color: #c40000;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option.mat-warn .mdc-list-item__start,.mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #c40000;--mdc-radio-selected-hover-icon-color: #c40000;--mdc-radio-selected-icon-color: #c40000;--mdc-radio-selected-pressed-icon-color: #c40000;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #c40000}.mat-mdc-list-option.mat-warn .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option.mat-warn .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:#1e31eb}.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end{opacity:1}.mat-mdc-list-base{--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}.mat-mdc-paginator{background:white;color:#000000de}.mat-mdc-paginator-icon{fill:#0000008a}.mat-mdc-paginator-decrement,.mat-mdc-paginator-increment{border-top:2px solid rgba(0,0,0,.54);border-right:2px solid rgba(0,0,0,.54)}.mat-mdc-paginator-first,.mat-mdc-paginator-last{border-top:2px solid rgba(0,0,0,.54)}.mat-mdc-icon-button[disabled] .mat-mdc-paginator-decrement,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-increment,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-first,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-last{border-color:#0000001f}.mat-mdc-icon-button[disabled] .mat-mdc-paginator-icon{fill:#0000001f}.mat-mdc-paginator .mat-mdc-form-field-infix{min-height:40px}.mat-mdc-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:20px}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -26.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label{display:none}.mat-mdc-paginator-container{min-height:56px}.mat-mdc-tab,.mat-mdc-tab-link{background-color:transparent}.mat-mdc-tab .mdc-tab__text-label,.mat-mdc-tab-link .mdc-tab__text-label{color:#0009}.mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__ripple:before,.mat-mdc-tab.mat-mdc-tab-disabled .mat-ripple-element,.mat-mdc-tab-link.mat-mdc-tab-disabled .mdc-tab__ripple:before,.mat-mdc-tab-link.mat-mdc-tab-disabled .mat-ripple-element{background-color:#00000061}.mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#1e31eb}.mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #1e31eb)}.mdc-tab__ripple:before,.mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-link .mat-ripple-element{background-color:#1e31eb}.mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#ff5252}.mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #ff5252)}.mat-mdc-tab-group.mat-accent .mdc-tab__ripple:before,.mat-mdc-tab-group.mat-accent .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mdc-tab__ripple:before,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link .mat-ripple-element{background-color:#ff5252}.mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#c40000}.mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #c40000)}.mat-mdc-tab-group.mat-warn .mdc-tab__ripple:before,.mat-mdc-tab-group.mat-warn .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mdc-tab__ripple:before,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link .mat-ripple-element{background-color:#c40000}.mat-mdc-tab-group.mat-background-primary,.mat-mdc-tab-nav-bar.mat-background-primary{--mat-mdc-tab-header-with-background-background-color: #1e31eb;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-group.mat-background-accent,.mat-mdc-tab-nav-bar.mat-background-accent{--mat-mdc-tab-header-with-background-background-color: #ff5252;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-group.mat-background-warn,.mat-mdc-tab-nav-bar.mat-background-warn{--mat-mdc-tab-header-with-background-background-color: #c40000;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-header-pagination-chevron{border-color:var(--mdc-theme-on-surface, #000)}.mat-mdc-tab-header .mdc-tab{height:48px}.mat-mdc-checkbox .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-checkbox .mat-ripple-element{background-color:#0000001a}.mat-mdc-checkbox .mdc-checkbox__ripple{background:#000}.mat-mdc-checkbox.mat-primary{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #1e31eb;--mdc-checkbox-selected-hover-icon-color: #1e31eb;--mdc-checkbox-selected-icon-color: #1e31eb;--mdc-checkbox-selected-pressed-icon-color: #1e31eb;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#1e31eb1a}.mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#1e31eb}.mat-mdc-checkbox.mat-accent{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff5252;--mdc-checkbox-selected-hover-icon-color: #ff5252;--mdc-checkbox-selected-icon-color: #ff5252;--mdc-checkbox-selected-pressed-icon-color: #ff5252;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#ff52521a}.mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#ff5252}.mat-mdc-checkbox.mat-warn{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #c40000;--mdc-checkbox-selected-hover-icon-color: #c40000;--mdc-checkbox-selected-icon-color: #c40000;--mdc-checkbox-selected-pressed-icon-color: #c40000;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#c400001a}.mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#c40000}.mat-mdc-checkbox-disabled label{color:#00000061}.mat-mdc-checkbox .mdc-checkbox{padding:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);margin:calc((var(--mdc-checkbox-touch-target-size, 40px) - 40px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__background{top:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);left:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control{top:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);right:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);left:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);width:var(--mdc-checkbox-touch-target-size, 40px);height:var(--mdc-checkbox-touch-target-size, 40px)}.mat-mdc-button.mat-unthemed{--mdc-text-button-label-text-color: #000}.mat-mdc-button.mat-primary{--mdc-text-button-label-text-color: #1e31eb}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: #ff5252}.mat-mdc-button.mat-warn{--mdc-text-button-label-text-color: #c40000}.mat-mdc-button[disabled][disabled]{--mdc-text-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-text-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-unelevated-button.mat-unthemed{--mdc-filled-button-container-color: #fff;--mdc-filled-button-label-text-color: #000}.mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color: #1e31eb;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color: #ff5252;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color: #c40000;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button[disabled][disabled]{--mdc-filled-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-button-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-raised-button.mat-unthemed{--mdc-protected-button-container-color: #fff;--mdc-protected-button-label-text-color: #000}.mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color: #1e31eb;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color: #ff5252;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color: #c40000;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button[disabled][disabled]{--mdc-protected-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-elevation: 0}.mat-mdc-outlined-button{--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-unthemed{--mdc-outlined-button-label-text-color: #000}.mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color: #1e31eb}.mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color: #ff5252}.mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color: #c40000}.mat-mdc-outlined-button[disabled][disabled]{--mdc-outlined-button-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-button-disabled-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button.mat-primary,.mat-mdc-outlined-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #1e31eb;--mat-mdc-button-ripple-color: rgba(30, 49, 235, .1)}.mat-mdc-button.mat-accent,.mat-mdc-outlined-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff5252;--mat-mdc-button-ripple-color: rgba(255, 82, 82, .1)}.mat-mdc-button.mat-warn,.mat-mdc-outlined-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #c40000;--mat-mdc-button-ripple-color: rgba(196, 0, 0, .1)}.mat-mdc-raised-button,.mat-mdc-unelevated-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button.mat-primary,.mat-mdc-unelevated-button.mat-primary,.mat-mdc-raised-button.mat-accent,.mat-mdc-unelevated-button.mat-accent,.mat-mdc-raised-button.mat-warn,.mat-mdc-unelevated-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-button.mat-mdc-button-base,.mat-mdc-raised-button.mat-mdc-button-base,.mat-mdc-unelevated-button.mat-mdc-button-base,.mat-mdc-outlined-button.mat-mdc-button-base{height:36px}.mat-mdc-icon-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #1e31eb;--mat-mdc-button-ripple-color: rgba(30, 49, 235, .1)}.mat-mdc-icon-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff5252;--mat-mdc-button-ripple-color: rgba(255, 82, 82, .1)}.mat-mdc-icon-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #c40000;--mat-mdc-button-ripple-color: rgba(196, 0, 0, .1)}.mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color: #1e31eb}.mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color: #ff5252}.mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color: #c40000}.mat-mdc-icon-button[disabled][disabled]{--mdc-icon-button-icon-color: rgba(0, 0, 0, .38);--mdc-icon-button-disabled-icon-color: rgba(0, 0, 0, .38)}.mat-mdc-icon-button.mat-mdc-button-base{width:48px;height:48px;padding:12px}.mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:4px}.mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%,-50%)}.mat-mdc-fab,.mat-mdc-mini-fab{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-fab:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary,.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent,.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-fab.mat-unthemed,.mat-mdc-mini-fab.mat-unthemed{--mdc-fab-container-color: #fff;--mdc-fab-icon-color: #000;--mat-mdc-fab-color: #000}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary{--mdc-fab-container-color: #1e31eb;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent{--mdc-fab-container-color: #ff5252;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mdc-fab-container-color: #c40000;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab[disabled][disabled],.mat-mdc-mini-fab[disabled][disabled]{--mdc-fab-container-color: rgba(0, 0, 0, .12);--mdc-fab-icon-color: rgba(0, 0, 0, .38);--mat-mdc-fab-color: rgba(0, 0, 0, .38)}.mat-mdc-snack-bar-container{--mat-mdc-snack-bar-button-color: #ff5252;--mdc-snackbar-container-color: #333333;--mdc-snackbar-supporting-text-color: rgba(255, 255, 255, .87)}.mdc-data-table{background-color:var(--mdc-theme-surface, #fff);border-color:#0000001f}.mdc-data-table__row{background-color:inherit}.mdc-data-table__header-cell{background-color:var(--mdc-theme-surface, #fff)}.mdc-data-table__row--selected{background-color:#1e31eb0a}.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__leading,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__notch,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__trailing{border-color:#0000001f}.mdc-data-table__cell,.mdc-data-table__header-cell{border-bottom-color:#0000001f}.mdc-data-table__pagination{border-top-color:#0000001f}.mdc-data-table__row:not(.mdc-data-table__row--selected):hover{background-color:#0000000a}.mdc-data-table__header-cell,.mdc-data-table__pagination-total,.mdc-data-table__pagination-rows-per-page-label,.mdc-data-table__cell{color:#000000de}.mat-mdc-table{background:white}.mat-mdc-table .mdc-data-table__row{height:52px}.mat-mdc-table .mdc-data-table__pagination{min-height:52px}.mat-mdc-table .mdc-data-table__header-row{height:56px}.mat-mdc-progress-spinner{--mdc-circular-progress-active-indicator-color: #1e31eb}.mat-mdc-progress-spinner.mat-accent{--mdc-circular-progress-active-indicator-color: #ff5252}.mat-mdc-progress-spinner.mat-warn{--mdc-circular-progress-active-indicator-color: #c40000}.mat-badge{position:relative}.mat-badge.mat-badge{overflow:visible}.mat-badge-hidden .mat-badge-content{display:none}.mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform .2s ease-in-out;transform:scale(.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none}.ng-animate-disabled .mat-badge-content,.mat-badge-content._mat-animation-noopable{transition:none}.mat-badge-content.mat-badge-active{transform:none}.mat-badge-small .mat-badge-content{width:16px;height:16px;line-height:16px}.mat-badge-small.mat-badge-above .mat-badge-content{top:-8px}.mat-badge-small.mat-badge-below .mat-badge-content{bottom:-8px}.mat-badge-small.mat-badge-before .mat-badge-content{left:-16px}[dir=rtl] .mat-badge-small.mat-badge-before .mat-badge-content{left:auto;right:-16px}.mat-badge-small.mat-badge-after .mat-badge-content{right:-16px}[dir=rtl] .mat-badge-small.mat-badge-after .mat-badge-content{right:auto;left:-16px}.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-8px}.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-8px}.mat-badge-medium .mat-badge-content{width:22px;height:22px;line-height:22px}.mat-badge-medium.mat-badge-above .mat-badge-content{top:-11px}.mat-badge-medium.mat-badge-below .mat-badge-content{bottom:-11px}.mat-badge-medium.mat-badge-before .mat-badge-content{left:-22px}[dir=rtl] .mat-badge-medium.mat-badge-before .mat-badge-content{left:auto;right:-22px}.mat-badge-medium.mat-badge-after .mat-badge-content{right:-22px}[dir=rtl] .mat-badge-medium.mat-badge-after .mat-badge-content{right:auto;left:-22px}.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-11px}.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-11px}.mat-badge-large .mat-badge-content{width:28px;height:28px;line-height:28px}.mat-badge-large.mat-badge-above .mat-badge-content{top:-14px}.mat-badge-large.mat-badge-below .mat-badge-content{bottom:-14px}.mat-badge-large.mat-badge-before .mat-badge-content{left:-28px}[dir=rtl] .mat-badge-large.mat-badge-before .mat-badge-content{left:auto;right:-28px}.mat-badge-large.mat-badge-after .mat-badge-content{right:-28px}[dir=rtl] .mat-badge-large.mat-badge-after .mat-badge-content{right:auto;left:-28px}.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-14px}.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-14px}.mat-badge-content{color:#fff;background:#1e31eb}.cdk-high-contrast-active .mat-badge-content{outline:solid 1px;border-radius:0}.mat-badge-accent .mat-badge-content{background:#ff5252;color:#000000de}.mat-badge-warn .mat-badge-content{color:#fff;background:#c40000}.mat-badge-disabled .mat-badge-content{background:#b9b9b9;color:#00000061}.mat-bottom-sheet-container{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f;background:white;color:#000000de}.mat-button-toggle-standalone:not([class*=mat-elevation-z]),.mat-button-toggle-group:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard:not([class*=mat-elevation-z]),.mat-button-toggle-group-appearance-standard:not([class*=mat-elevation-z]){box-shadow:none}.mat-button-toggle{color:#00000061}.mat-button-toggle .mat-button-toggle-focus-overlay{background-color:#0000001f}.mat-button-toggle-appearance-standard{color:#000000de;background:white}.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{background-color:#000}.mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:solid 1px #e0e0e0}[dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:solid 1px #e0e0e0}.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:none;border-top:solid 1px #e0e0e0}.mat-button-toggle-checked{background-color:#e0e0e0;color:#0000008a}.mat-button-toggle-checked.mat-button-toggle-appearance-standard{color:#000000de}.mat-button-toggle-disabled{color:#00000042;background-color:#eee}.mat-button-toggle-disabled.mat-button-toggle-appearance-standard{background:white}.mat-button-toggle-disabled.mat-button-toggle-checked{background-color:#bdbdbd}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border:solid 1px #e0e0e0}.mat-button-toggle-appearance-standard .mat-button-toggle-label-content{line-height:48px}.mat-calendar-arrow{fill:#0000008a}.mat-datepicker-toggle,.mat-datepicker-content .mat-calendar-next-button,.mat-datepicker-content .mat-calendar-previous-button{color:#0000008a}.mat-calendar-table-header-divider:after{background:rgba(0,0,0,.12)}.mat-calendar-table-header,.mat-calendar-body-label{color:#0000008a}.mat-calendar-body-cell-content,.mat-date-range-input-separator{color:#000000de;border-color:transparent}.mat-calendar-body-disabled>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){color:#00000061}.mat-form-field-disabled .mat-date-range-input-separator{color:#00000061}.mat-calendar-body-in-preview{color:#0000003d}.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#00000061}.mat-calendar-body-disabled>.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#0000002e}.mat-calendar-body-in-range:before{background:rgba(30,49,235,.2)}.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-calendar-body-comparison-bridge-start:before,[dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(30,49,235,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-calendar-body-comparison-bridge-end:before,[dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(30,49,235,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-calendar-body-selected{background-color:#1e31eb;color:#fff}.mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#1e31eb66}.mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#1e31eb4d}@media (hover: hover){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#1e31eb4d}}.mat-datepicker-content{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f;background-color:#fff;color:#000000de}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range:before{background:rgba(255,82,82,.2)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-start:before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(255,82,82,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-end:before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(255,82,82,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-accent .mat-calendar-body-selected{background-color:#ff5252;color:#000000de}.mat-datepicker-content.mat-accent .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#ff525266}.mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #000000de}.mat-datepicker-content.mat-accent .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#ff52524d}@media (hover: hover){.mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#ff52524d}}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range:before{background:rgba(196,0,0,.2)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-start:before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(196,0,0,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-end:before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(196,0,0,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-warn .mat-calendar-body-selected{background-color:#c40000;color:#fff}.mat-datepicker-content.mat-warn .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#c4000066}.mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#c400004d}@media (hover: hover){.mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#c400004d}}.mat-datepicker-content-touch{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-datepicker-toggle-active{color:#1e31eb}.mat-datepicker-toggle-active.mat-accent{color:#ff5252}.mat-datepicker-toggle-active.mat-warn{color:#c40000}.mat-date-range-input-inner[disabled]{color:#00000061}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{width:40px;height:40px;padding:8px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:0}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:40px;left:50%;width:40px;transform:translate(-50%,-50%)}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target{display:none}.mat-divider{border-top-color:#0000001f}.mat-divider-vertical{border-right-color:#0000001f}.mat-expansion-panel{background:white;color:#000000de}.mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-action-row{border-top-color:#0000001f}.mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled=true]),.mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled=true]),.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true]){background:rgba(0,0,0,.04)}@media (hover: none){.mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover{background:white}}.mat-expansion-panel-header-title{color:#000000de}.mat-expansion-panel-header-description,.mat-expansion-indicator:after{color:#0000008a}.mat-expansion-panel-header[aria-disabled=true]{color:#00000042}.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description{color:inherit}.mat-expansion-panel-header{height:48px}.mat-expansion-panel-header.mat-expanded{height:64px}.mat-icon.mat-primary{color:#1e31eb}.mat-icon.mat-accent{color:#ff5252}.mat-icon.mat-warn{color:#c40000}.mat-drawer-container{background-color:#fafafa;color:#000000de}.mat-drawer{background-color:#fff;color:#000000de}.mat-drawer.mat-drawer-push{background-color:#fff}.mat-drawer:not(.mat-drawer-side){box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-drawer-side{border-right:solid 1px rgba(0,0,0,.12)}.mat-drawer-side.mat-drawer-end,[dir=rtl] .mat-drawer-side{border-left:solid 1px rgba(0,0,0,.12);border-right:none}[dir=rtl] .mat-drawer-side.mat-drawer-end{border-left:none;border-right:solid 1px rgba(0,0,0,.12)}.mat-drawer-backdrop.mat-drawer-shown{background-color:#0009}.mat-step-header.cdk-keyboard-focused,.mat-step-header.cdk-program-focused,.mat-step-header:hover:not([aria-disabled]),.mat-step-header:hover[aria-disabled=false]{background-color:#0000000a}.mat-step-header:hover[aria-disabled=true]{cursor:default}@media (hover: none){.mat-step-header:hover{background:none}}.mat-step-header .mat-step-label,.mat-step-header .mat-step-optional{color:#0000008a}.mat-step-header .mat-step-icon{background-color:#0000008a;color:#fff}.mat-step-header .mat-step-icon-selected,.mat-step-header .mat-step-icon-state-done,.mat-step-header .mat-step-icon-state-edit{background-color:#1e31eb;color:#fff}.mat-step-header.mat-accent .mat-step-icon{color:#000000de}.mat-step-header.mat-accent .mat-step-icon-selected,.mat-step-header.mat-accent .mat-step-icon-state-done,.mat-step-header.mat-accent .mat-step-icon-state-edit{background-color:#ff5252;color:#000000de}.mat-step-header.mat-warn .mat-step-icon{color:#fff}.mat-step-header.mat-warn .mat-step-icon-selected,.mat-step-header.mat-warn .mat-step-icon-state-done,.mat-step-header.mat-warn .mat-step-icon-state-edit{background-color:#c40000;color:#fff}.mat-step-header .mat-step-icon-state-error{background-color:transparent;color:#c40000}.mat-step-header .mat-step-label.mat-step-label-active{color:#000000de}.mat-step-header .mat-step-label.mat-step-label-error{color:#c40000}.mat-stepper-horizontal,.mat-stepper-vertical{background-color:#fff}.mat-stepper-vertical-line:before{border-left-color:#0000001f}.mat-horizontal-stepper-header:before,.mat-horizontal-stepper-header:after,.mat-stepper-horizontal-line{border-top-color:#0000001f}.mat-horizontal-stepper-header{height:72px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header,.mat-vertical-stepper-header{padding:24px}.mat-stepper-vertical-line:before{top:-16px;bottom:-16px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:after,.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:before{top:36px}.mat-stepper-label-position-bottom .mat-stepper-horizontal-line{top:36px}.mat-sort-header-arrow{color:#757575}.mat-toolbar{background:whitesmoke;color:#000000de}.mat-toolbar.mat-primary{background:#1e31eb;color:#fff}.mat-toolbar.mat-accent{background:#ff5252;color:#000000de}.mat-toolbar.mat-warn{background:#c40000;color:#fff}.mat-toolbar .mat-form-field-underline,.mat-toolbar .mat-form-field-ripple,.mat-toolbar .mat-focused .mat-form-field-ripple{background-color:currentColor}.mat-toolbar .mat-form-field-label,.mat-toolbar .mat-focused .mat-form-field-label,.mat-toolbar .mat-select-value,.mat-toolbar .mat-select-arrow,.mat-toolbar .mat-form-field.mat-focused .mat-select-arrow{color:inherit}.mat-toolbar .mat-input-element{caret-color:currentColor}.mat-toolbar-multiple-rows{min-height:64px}.mat-toolbar-row,.mat-toolbar-single-row{height:64px}@media (max-width: 599px){.mat-toolbar-multiple-rows{min-height:56px}.mat-toolbar-row,.mat-toolbar-single-row{height:56px}}.mat-tree{background:white}.mat-tree-node,.mat-nested-tree-node{color:#000000de}.mat-tree-node{min-height:48px}.mat-ripple-element{background-color:#0000001a}.mat-mdc-option{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-option:hover:not(.mdc-list-item--disabled),.mat-mdc-option:focus:not(.mdc-list-item--disabled),.mat-mdc-option.mat-mdc-option-active,.mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple):not(.mdc-list-item--disabled){background:rgba(0,0,0,.04)}.mat-primary .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-primary, #1e31eb)}.mat-accent .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-secondary, #ff5252)}.mat-warn .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-error, #c40000)}.mat-mdc-optgroup-label{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-pseudo-checkbox-full{color:#0000008a}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{color:#b0b0b0}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#1e31eb}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#1e31eb}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff5252}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff5252}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff5252}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff5252}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#c40000}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#c40000}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#b0b0b0}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#b0b0b0}.mat-app-background{background-color:#fafafa;color:#000000de}.mat-elevation-z0,.mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.mat-elevation-z1,.mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.mat-elevation-z2,.mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-elevation-z3,.mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-elevation-z4,.mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.mat-elevation-z5,.mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.mat-elevation-z6,.mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.mat-elevation-z7,.mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.mat-elevation-z8,.mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mat-elevation-z9,.mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.mat-elevation-z10,.mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.mat-elevation-z11,.mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.mat-elevation-z12,.mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.mat-elevation-z13,.mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.mat-elevation-z14,.mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.mat-elevation-z15,.mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.mat-elevation-z16,.mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-elevation-z17,.mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.mat-elevation-z18,.mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.mat-elevation-z19,.mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.mat-elevation-z20,.mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.mat-elevation-z21,.mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.mat-elevation-z22,.mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.mat-elevation-z23,.mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.mat-elevation-z24,.mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-theme-loaded-marker{display:none}:host{--conf-gradient: linear-gradient(to right, #1E31EB, #693DDA);--conf-bg-page: #F9F9FA;--conf-radius: 10px;--conf-modal-radius: 10px;--conf-accent: #693DDA;--conf-accent-rgb: 105, 61, 218;--conf-primary: #1E31EB;--conf-primary-rgb: 30, 49, 235;--conf-step-selected: #643cda;--conf-step-edit: #3034e7;--conf-table-header-bg: #EBEBEB;--conf-search-bg: #EBEBEB;--conf-table-bg: #ffffff;--conf-card-bg: #ffffff;--conf-font-family: inherit;--conf-stepper-header-bg: var(--conf-bg-page);--conf-stepper-content-bg: var(--conf-bg-page);--conf-step-icon-edit-bg: var(--conf-step-edit);--conf-hint-btn-bg: #2563eb;--conf-hint-btn-hover-bg: #1d4ed8;--conf-btn-color: #ffffff;--conf-step-icon-bg: linear-gradient(.33turn, #BFBFBF, #606060);--conf-step-icon-color: #ffffff;--conf-step-connector-bg: #ebebeb;--conf-addbtn-bg: #ebebeb;--conf-input-bg: #ffffff;--conf-input-color: rgba(0, 0, 0, .87);--conf-tmwselect-bg: #ffffff;--conf-tmwselect-color: rgba(0, 0, 0, .87);font-family:var(--conf-font-family)}.dynamic-module-preview{--conf-gradient: linear-gradient(to right, #1E31EB, #693DDA);--conf-bg-page: #F9F9FA;--conf-radius: 10px;--conf-modal-radius: 10px;--conf-accent: #693DDA;--conf-accent-rgb: 105, 61, 218;--conf-primary: #1E31EB;--conf-primary-rgb: 30, 49, 235;--conf-step-selected: #643cda;--conf-step-edit: #3034e7;--conf-table-header-bg: #EBEBEB;--conf-search-bg: #EBEBEB;--conf-table-bg: #ffffff;--conf-card-bg: #ffffff;--conf-font-family: inherit;--conf-stepper-header-bg: var(--conf-bg-page);--conf-stepper-content-bg: var(--conf-bg-page);--conf-step-icon-edit-bg: var(--conf-step-edit);--conf-hint-btn-bg: #2563eb;--conf-hint-btn-hover-bg: #1d4ed8;--conf-btn-color: #ffffff;--conf-step-icon-bg: linear-gradient(.33turn, #BFBFBF, #606060);--conf-step-icon-color: #ffffff;--conf-step-connector-bg: #ebebeb;--conf-addbtn-bg: #ebebeb;--conf-input-bg: #ffffff;--conf-input-color: rgba(0, 0, 0, .87);--conf-tmwselect-bg: #ffffff;--conf-tmwselect-color: rgba(0, 0, 0, .87);--tmw-select-add-modal-bg: var(--conf-tmwselect-bg);--tmw-select-arrow-bg: initial;--tmw-select-arrow-border-radius: initial;--tmw-select-arrow-color: initial;--tmw-select-arrow-height: initial;--tmw-select-bg: var(--conf-tmwselect-bg);--tmw-select-border-color: initial;--tmw-select-border-color-hover: initial;--tmw-select-border-radius: initial;--tmw-select-border-width: initial;--tmw-select-clear-border-radius: initial;--tmw-select-clear-color: initial;--tmw-select-clear-color-bg: initial;--tmw-select-clear-height: initial;--tmw-select-disabled-bg: initial;--tmw-select-disabled-border-color: initial;--tmw-select-disabled-color: initial;--tmw-select-focus-border-color: initial;--tmw-select-focus-label-color: initial;--tmw-select-font-family: initial;--tmw-select-font-size-label: initial;--tmw-select-font-size-value: initial;--tmw-select-height: initial;--tmw-select-label-bg: var(--conf-tmwselect-bg);--tmw-select-label-color: var(--conf-tmwselect-color);--tmw-select-option-bg: var(--conf-tmwselect-bg);--tmw-select-option-check-color: initial;--tmw-select-option-color: var(--conf-tmwselect-color);--tmw-select-option-highlighted-bg: initial;--tmw-select-option-hover-bg: initial;--tmw-select-option-hover-color: initial;--tmw-select-option-selected-bg: initial;--tmw-select-option-selected-color: initial;--tmw-select-padding-x: initial;--tmw-select-panel-bg: var(--conf-tmwselect-bg);--tmw-select-panel-border-radius: initial;--tmw-select-panel-max-height: initial;--tmw-select-panel-shadow: initial;--tmw-select-panel-z-index: initial;--tmw-select-required-color: initial;--tmw-select-search-bg: var(--conf-tmwselect-bg);--tmw-select-search-color: var(--conf-tmwselect-color);--tmw-select-toolbar-bg: initial;--tmw-select-toolbar-border-color: initial;--tmw-select-toolbar-border-radius: initial;--tmw-select-toolbar-border-width: initial;--tmw-select-toolbar-btn-active-bg: initial;--tmw-select-toolbar-btn-bg: initial;--tmw-select-toolbar-btn-border-color: initial;--tmw-select-toolbar-btn-border-radius: initial;--tmw-select-toolbar-btn-border-width: initial;--tmw-select-toolbar-btn-color: initial;--tmw-select-toolbar-btn-disabled-opacity: initial;--tmw-select-toolbar-btn-hover-bg: initial;--tmw-select-toolbar-btn-margin-right: initial;--tmw-select-toolbar-btn-size: initial;--tmw-select-toolbar-gap: initial;--tmw-select-toolbar-icon-size: initial;--tmw-select-value-color: var(--conf-tmwselect-color);font-family:initial}.importDialog .mat-card-header-text{font-size:1.3em;font-weight:700}.importDialog .input-file-btn{color:#6f79fb}.importDialog .input-file-btn::-webkit-file-upload-button,.importDialog .input-file-btn::file-selector-button{padding:7px 40px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-radius);border:1px solid #1E31EB}.importDialog .input-file-btn:before{content:\"Select some files\";display:inline-block;background:linear-gradient(top,#f9f9f9,#e3e3e3);border:1px solid #999;border-radius:3px;padding:5px 8px;outline:none;white-space:nowrap;-webkit-user-select:none;cursor:pointer;text-shadow:1px 1px #fff;font-weight:700;font-size:10pt}.importDialog .input-file-btn:hover:before,.importDialog .input-file-btn::file-selector-button:hover:before{border-color:#000}.importDialog .input-file-btn:active:before,.importDialog .input-file-btn::file-selector-button:active:before{background:-webkit-linear-gradient(top,#e3e3e3,#f9f9f9)}.importDialog .button-back{border-radius:var(--conf-radius);padding:7px 40px;font-size:14px;background:#DBDBDC;color:#000}.configurator-accordion ::ng-deep .configurator-panel{box-shadow:none!important;background:transparent!important;border-radius:0!important}.configurator-accordion ::ng-deep .configurator-panel.mat-expanded,.configurator-accordion ::ng-deep .configurator-panel{margin:0!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header{height:36px!important;min-height:36px!important;padding:0 12px;margin-top:14px;border-radius:6px!important;border-left:3px solid var(--conf-accent);background:linear-gradient(to right,rgba(var(--conf-primary-rgb),.06),rgba(var(--conf-accent-rgb),.02))!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header:hover,.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header:focus{background:linear-gradient(to right,rgba(var(--conf-primary-rgb),.11),rgba(var(--conf-accent-rgb),.05))!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header .mat-panel-title{font-size:.72rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:#555}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header .mat-expansion-indicator:after{color:var(--conf-accent);border-width:0 1.5px 1.5px 0;padding:2.5px}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-body{padding:12px 0 0}.configurator-accordion ::ng-deep .configurator-panel .firstRow{margin-top:0}.grafica-row{margin-bottom:8px}.grafica-row .grafica-field-label{font-size:.85rem;color:#555;margin-bottom:6px}.grafica-row eqp-attachments ::ng-deep .eqp-attachments-link-btn{display:none!important}.grafica-ai-separator{border:none;border-top:1px solid #e0e0e0;margin:10px 0 4px}.form-grafica-ai-row{display:flex;align-items:center;gap:8px;margin-top:4px;margin-bottom:8px;flex-wrap:wrap}.btn-form-graphic-suggest{background:var(--conf-gradient);color:var(--conf-btn-color)!important;font-size:12px;height:30px;min-width:unset;padding:0 12px;border:none!important;border-radius:6px;display:inline-flex;align-items:center;gap:4px}.btn-form-graphic-suggest mat-icon{font-size:16px;width:16px;height:16px}.btn-form-graphic-suggest[disabled]{opacity:.7;cursor:not-allowed}.form-hint-input-group{display:flex;align-items:center;gap:6px;flex:1;min-width:220px}.form-graphic-scope-select{height:30px;padding:0 6px;border:1px solid #ccc;border-radius:4px;font-size:12px;background:#fff;cursor:pointer;outline:none;flex-shrink:0}.form-graphic-scope-select:focus{border-color:var(--conf-accent)}.btn-hint-randomize{width:28px;height:28px;border:none;border-radius:5px;background:var(--conf-hint-btn-bg);color:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s}.btn-hint-randomize mat-icon{font-size:16px;width:16px;height:16px}.btn-hint-randomize:hover{background:var(--conf-hint-btn-hover-bg)}.btn-generate-bg{width:28px;height:28px;border:1px solid var(--conf-hint-btn-bg);border-radius:5px;background:transparent;color:var(--conf-hint-btn-bg);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s,color .15s,border-color .15s}.btn-generate-bg mat-icon{font-size:16px;width:16px;height:16px}.btn-generate-bg:hover{background:var(--conf-hint-btn-bg);color:#fff}.btn-generate-bg.active{background:var(--conf-gradient);border-color:transparent;color:var(--conf-btn-color, #fff)}.form-graphic-hint-input{flex:1;height:30px;padding:0 8px;border:1px solid #ccc;border-radius:4px;font-size:12px;outline:none}.form-graphic-hint-input:focus{border-color:var(--conf-accent)}.btn-form-graphic-send{background:var(--conf-gradient);color:var(--conf-btn-color)!important;border:none;border-radius:4px;width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.btn-form-graphic-send mat-icon{font-size:16px;width:16px;height:16px}.btn-form-graphic-send:hover{opacity:.9}.row.title{margin:0;justify-content:flex-start}.row.title mat-icon.add{background:#fff;color:#7b7b7b;height:40px;width:40px;border-radius:var(--conf-radius);font-size:27px;padding:7px 6px 6px 7px;margin:0 7px 0 0;cursor:pointer}.row.title mat-icon.close{background:#7B7B7B;color:#fff;height:40px;width:40px;border-radius:var(--conf-radius);font-size:27px;padding:7px 6px 6px 7px;margin:0 7px 0 0;cursor:pointer}.row.title .header-title-standard{display:flex;align-items:center;font-size:19px;font-weight:700;color:gray}.firstRow{margin-top:20px}::ng-deep mat-form-field{width:100%}:host ::ng-deep .mat-mdc-text-field-wrapper{background:var(--conf-input-bg, #ffffff)!important}:host ::ng-deep .mat-mdc-form-field .mat-mdc-input-element,:host ::ng-deep .mat-mdc-form-field .mdc-text-field__input,:host ::ng-deep .mat-mdc-form-field textarea{color:var(--conf-input-color, rgba(0, 0, 0, .87))!important}hr{border:none;height:50px;box-shadow:0 20px 20px -20px #dfdfdf}.inserted{margin-top:45px}::ng-deep .mat-form-field-appearance-legacy .mat-form-field-underline{display:none}::ng-deep .mat-form-field-flex .mat-form-field-infix input{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0 15px 20px!important;margin-top:10px;background-color:#fff}::ng-deep .mat-form-field-flex .mat-form-field-infix input:focus{border:1px solid #1a39ed}::ng-deep .mat-form-field-flex .mat-form-field-infix{padding:0;margin:0}::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=minute],::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=hour]{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0!important;background-color:#fff}::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=minute]:focus,::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=hour]:focus{border:1px solid #1a39ed}::ng-deep .ngx-mat-timepicker form .table .tbody tr td.spacer{vertical-align:middle!important}.textarea ::ng-deep .mat-form-field-wrapper{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0 15px 20px!important}.textarea ::ng-deep .mat-form-field-wrapper .mat-form-field-flex{border:none;padding:0;margin:0;height:0}::ng-deep .nameSection{width:99%}::ng-deep .mat-select-arrow{color:transparent}::ng-deep .mat-form-field.mat-focused.mat-primary .mat-select-arrow{color:transparent}::ng-deep .mat-select-value-text{font-size:15px}::ng-deep .cdk-overlay-pane{transform:none!important}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap{margin:37px 0 0 -18px}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap .ng-trigger{border-radius:10px}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap .ng-trigger mat-option{border-radius:10px}::ng-deep .mat-autocomplete.visible{margin:0!important}::ng-deep .mat-select-panel{box-shadow:0 0 2px #0003,0 0 2px #00000024,0 0 2px #0000001f!important;min-width:calc(100% + 19px)!important}.stepper-header-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.section-list{list-style:none;padding:0;display:flex;flex-wrap:wrap;flex-direction:row}.section-list li{margin-top:36px}.section-list li .sectionInsert{border:1px solid #9171E3;padding:14px 17px;border-radius:10px;margin-right:10px;font-size:16px}.section-list li .sectionInsert mat-icon{vertical-align:middle;font-size:20px!important;height:20px!important;width:40px!important;color:#c40101!important;cursor:pointer}.section-list li .sectionInsert mat-icon.icon-black{color:#000!important}.danger-color{color:#c40101}::ng-deep .mat-elevation-z8{box-shadow:none}::ng-deep mat-horizontal-stepper.outerForm{background-color:var(--conf-bg-page)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:0 20%;background-color:var(--conf-stepper-header-bg)!important;box-shadow:0 20px 20px -20px #dfdfdf}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label{white-space:normal;margin:7px 0 0;min-width:100px;overflow:visible;text-align:center}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container mat-step-header:hover{background-color:transparent}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header{display:flex;flex-direction:column;height:96px;padding:20px 50px}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon{margin-right:0!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line{width:100%;padding-bottom:1px;margin-bottom:46.5px}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .cdk-focused{background-color:transparent}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:before{content:\"\";position:absolute!important;left:-25px!important;bottom:13px!important;border-left:30px solid var(--conf-step-connector-bg, #ebebeb)!important;border-top:12px solid transparent!important;border-bottom:12px solid transparent!important;transform:rotate(180deg)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:after{content:\"\"!important;position:absolute!important;right:-25px!important;bottom:13px!important;border-left:30px solid var(--conf-step-connector-bg, #ebebeb)!important;border-top:12px solid transparent!important;border-bottom:12px solid transparent!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:after:last-child{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected){background:var(--conf-step-icon-bg, linear-gradient(.33turn, #BFBFBF, #606060))!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected) .mat-step-icon-content span{color:var(--conf-step-icon-color, #ffffff)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number.mat-step-icon-selected:before{border-left-color:var(--conf-step-selected)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number.mat-step-icon-selected:after{display:none!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit{background-color:var(--conf-step-icon-edit-bg)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit:before{border-left-color:var(--conf-step-selected)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit:after{border-left-color:var(--conf-step-edit)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container :first-child :before{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container :last-child :after{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-content-container{padding:20px 10%;background-color:var(--conf-stepper-content-bg)!important}::ng-deep mat-horizontal-stepper.innerForm{background-color:var(--conf-bg-page)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:10px 130px;background-color:var(--conf-stepper-header-bg)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon{margin-right:0!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected){background:var(--conf-step-icon-bg, linear-gradient(.33turn, #BFBFBF, #606060))!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected) .mat-step-icon-content span{color:var(--conf-step-icon-color, #ffffff)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container mat-step-header:hover{background-color:transparent}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(2){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(4){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(6){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .cdk-focused{background-color:transparent}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label mat-label{margin-left:5px}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-content-container{background-color:var(--conf-stepper-content-bg)!important}.button-nextDiv{margin:50px 0 0!important}.button-nextDiv .button-exit{margin:0 10px 0 0!important;border:1px solid #1E31EB;padding:7px 40px;border-radius:var(--conf-radius);font-size:14px;box-shadow:none!important}.button-nextDiv .button-exit:hover{background:white!important}div.addButtons{margin:40px 0 0!important}div.addButtons .btn-primary{border-radius:var(--conf-radius);box-shadow:none;padding:6px 25px 6px 9px;font-size:14px;background:var(--conf-gradient);color:var(--conf-btn-color)!important}div.addButtons .btn-primary mat-icon{background:#fff;color:#1e31eb;height:30px;width:31px;border-radius:var(--conf-radius);font-size:27px;padding:2px 0 0;margin:0 7px 0 0}div.addButtons .btn-outlined{box-shadow:none;padding:6px 25px 6px 9px;font-size:14px;border-radius:var(--conf-radius);background:var(--conf-addbtn-bg, #ebebeb);color:#3b3a3b}div.addButtons .btn-outlined mat-icon{background-color:inherit;color:#bdbdbd;height:30px;width:31px;border-radius:var(--conf-radius);font-size:27px;padding:2px 0 0;margin:0 7px 0 0}div.addButtons .btn-outlined:hover,div.addButtons .btn-outlined.active{background:var(--conf-gradient);color:var(--conf-btn-color)!important;border-radius:var(--conf-radius)}div.addButtons .btn-outlined:hover mat-icon,div.addButtons .btn-outlined.active mat-icon{color:var(--conf-btn-color)}div.addButtons .btn-outlined-red{background:linear-gradient(to right,#eb1e1e,#da3d3d)!important;color:#fff!important}div.addButtons .btn-outlined-red:hover mat-icon{color:#eb1e1e}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper{margin-top:-74px}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper input{background-color:var(--conf-search-bg)!important;background:url(data:image/png;base64,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) no-repeat;background-size:19px;background-position:19px;padding:15px 0 15px 53px!important}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper input:focus{background-color:#fff!important;border:1px solid #e7e7e9}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper .mat-form-field-label-wrapper label{margin-top:21px;margin-left:55px}.table ::ng-deep mat-header-row{background-color:var(--conf-table-header-bg)!important;border-bottom-width:0px}.table ::ng-deep mat-header-row .mat-column-Required{flex:none!important}.table ::ng-deep .mat-sort-header-button{color:#3b3a3b;font-size:15px}.table ::ng-deep table#eqp-table{background-color:var(--conf-table-bg)!important}.table ::ng-deep .mat-row{background-color:var(--conf-table-bg)!important;margin:10px 0;box-shadow:0 3px 7px -3px #0003;padding:5px 0}.table ::ng-deep .mat-row .mat-column-Required{flex:0 0 8%!important}.table ::ng-deep .mat-row mat-cell eqp-select{margin-top:16px}.table ::ng-deep .mat-row mat-cell eqp-select .mat-form-field-wrapper{padding-bottom:0}.table ::ng-deep .mat-row .mat-cell span i.success-color{background-color:var(--conf-primary);color:#fff!important;padding:6px;border-radius:3px}::ng-deep .mat-paginator-page-size{margin:0 30px 0 0!important}::ng-deep .mat-paginator-page-size .mat-form-field-flex{padding:0 21px 7px!important;width:100px!important;margin:10px!important;background-color:#fff;border-radius:10px;border:1px solid lightgrey;height:40px}::ng-deep .mat-paginator-range-label{margin:0 20px 0 52px!important}::ng-deep .mat-dialog-container{padding:0!important;border-radius:var(--conf-modal-radius)!important;font-family:var(--conf-font-family)!important}::ng-deep .mat-mdc-dialog-surface.mdc-dialog__surface{border-radius:var(--conf-modal-radius)!important;font-family:var(--conf-font-family)!important}::ng-deep .mat-paginator-container{display:flex;justify-content:flex-start!important}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container{margin:5px 0 0 2px}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container .mat-slide-toggle-thumb{background-color:#fff!important}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-bar{background-color:#2532ea!important;height:100%!important;width:40px!important;border-radius:20px!important}::ng-deep .mat-slide-toggle .mat-slide-toggle-thumb-container{margin:5px 0 0 2px}::ng-deep .mat-slide-toggle .mat-slide-toggle-bar{height:100%!important;width:40px!important;border-radius:20px!important}.container-fluid.third-modal{padding:0 0 10px}.container-fluid.third-modal form{margin:25px 40px 10px}.container-fluid.third-modal form .buttonsForm{padding:0}.button-next{border-radius:var(--conf-radius);padding:7px 40px;font-size:14px}button.button-next:not([disabled]){background:var(--conf-gradient)!important;padding:7px 40px;border-radius:var(--conf-radius);color:var(--conf-btn-color)!important;font-size:14px}button.previous{box-shadow:none!important;margin:0 10px 0 0!important;border:1px solid #1E31EB;padding:7px 40px;border-radius:var(--conf-radius);font-size:14px}.rowButtonsModal{background-color:var(--conf-bg-page)}@media screen and (max-width: 1200px){.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select){width:30%!important}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper{margin-top:-98px}.table ::ng-deep .mat-row .mat-column-FieldGroup eqp-select{margin-bottom:-25px}.table ::ng-deep .mat-row .mat-column-FieldGroup .mat-form-field-flex{width:auto}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:25px 0 0}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-content-container{padding:0 3% 24px!important}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:10px 0}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header{display:flex;flex-direction:column;justify-content:space-between}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line{margin:-21px 0 0}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-content-container{padding:0 3% 24px!important}form{padding:0}div.addButtons{padding:15px 0 24px!important}}@media screen and (max-width: 960px){::ng-deep mat-table mat-row{box-shadow:0 3px 7px -3px #0003!important}::ng-deep mat-table mat-row .mat-column-FieldGroup{padding-top:15px;padding-bottom:47px}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label{width:150%!important}}@media screen and (max-width: 766px){.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select){width:40%!important;margin-top:60px}}@media screen and (max-width: 589px){div.addButtons button{margin:0 10px 10px 0!important}}::ng-deep .mat-input-element{width:100%;width:-moz-available;width:-webkit-fill-available;width:fill-available}:host ::ng-deep .mat-input-element{width:100%;width:-moz-available;width:-webkit-fill-available;width:fill-available}.innerFormManagment-stepper{max-height:80vh;overflow:scroll}.ai-dialog-header{display:flex;align-items:center;gap:10px;padding:16px 20px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0}.ai-dialog-header mat-icon{font-size:22px;width:22px;height:22px;opacity:.9}.ai-dialog-header span{font-size:1rem;font-weight:600;letter-spacing:.02em}.ai-dialog-header .ai-history-toggle-btn{margin-left:auto;color:#ffffffd9}.ai-dialog-header .ai-history-toggle-btn:hover{color:#fff}.ai-dialog-header .ai-history-toggle-btn.active{color:#fff;background:rgba(255,255,255,.2);border-radius:50%}.ai-dialog-body-flex{display:flex;align-items:stretch;overflow:hidden}.ai-dialog-main-content{flex:1;min-width:0}.ai-history-panel{width:240px;flex-shrink:0;border-left:1px solid rgba(0,0,0,.1);display:flex;flex-direction:column;background:#fafafa}.ai-history-panel .ai-history-panel-title{display:flex;align-items:center;gap:6px;padding:12px 12px 8px;font-size:.78rem;font-weight:700;color:#555;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid rgba(0,0,0,.08);flex-shrink:0}.ai-history-panel .ai-history-list{overflow-y:auto;flex:1;padding:8px 0}.ai-history-panel .ai-history-item{display:flex;align-items:flex-start;gap:8px;padding:8px 12px;border-bottom:1px solid rgba(0,0,0,.05)}.ai-history-panel .ai-history-item:last-child{border-bottom:none}.ai-history-panel .ai-history-item .ai-history-index{font-size:.7rem;font-weight:700;color:#fff;background:#888;border-radius:50%;width:18px;height:18px;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px}.ai-history-panel .ai-history-item .ai-history-text{font-size:.8rem;color:#444;line-height:1.4;word-break:break-word}.ai-last-prompt-bar{display:flex;align-items:center;gap:14px;margin:10px 0 18px;padding:14px 16px;background:#fff;border-radius:10px;box-shadow:0 1px 3px #1e31eb14,0 0 0 1px #1e31eb1a;position:relative;overflow:hidden}.ai-last-prompt-bar:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--conf-gradient)}.ai-last-prompt-bar .ai-last-prompt-icon-wrap{flex-shrink:0;width:36px;height:36px;border-radius:9px;background:var(--conf-gradient);display:flex;align-items:center;justify-content:center}.ai-last-prompt-bar .ai-last-prompt-icon-wrap mat-icon{font-size:18px;width:18px;height:18px;color:#fff}.ai-last-prompt-bar .ai-last-prompt-content{flex:1;min-width:0}.ai-last-prompt-bar .ai-last-prompt-content .ai-last-prompt-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#aaa;margin-bottom:3px}.ai-last-prompt-bar .ai-last-prompt-content .ai-last-prompt-text{font-size:13px;font-weight:600;color:#1a1a2e;line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ai-last-prompt-bar .ai-last-prompt-history-btn{flex-shrink:0;width:34px;height:34px;border-radius:8px;color:var(--conf-primary, #1E31EB);opacity:.5;transition:opacity .15s,background .15s;display:flex;align-items:center;justify-content:center}.ai-last-prompt-bar .ai-last-prompt-history-btn:hover{opacity:1;background:rgba(30,49,235,.07)}.ai-last-prompt-bar .ai-last-prompt-history-btn mat-icon{font-size:20px;width:20px;height:20px;line-height:20px}.ai-cost-panel{display:flex;align-items:center;gap:12px;padding:10px 14px;background:#fff;border-radius:10px;box-shadow:0 1px 3px #1e31eb14,0 0 0 1px #1e31eb1a;position:relative;overflow:hidden}.ai-cost-panel:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--conf-gradient)}.ai-cost-panel .ai-cost-panel-icon{flex-shrink:0;width:30px;height:30px;border-radius:8px;background:var(--conf-gradient);display:flex;align-items:center;justify-content:center}.ai-cost-panel .ai-cost-panel-icon mat-icon{font-size:16px;width:16px;height:16px;color:#fff}.ai-cost-panel .ai-cost-panel-body{flex:1;min-width:0}.ai-cost-panel .ai-cost-panel-header{display:flex;align-items:center;gap:8px;margin-bottom:3px}.ai-cost-panel .ai-cost-panel-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#aaa}.ai-cost-panel .ai-cost-panel-model{font-size:10px;font-weight:700;padding:1px 8px;border-radius:20px;background:rgba(30,49,235,.08);color:var(--conf-primary, #1E31EB);letter-spacing:.03em}.ai-cost-panel .ai-cost-panel-line{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:12.5px;color:#444;line-height:1.5}.ai-cost-panel .ai-cost-panel-line .ai-cost-panel-line-label{color:#777}.ai-cost-panel .ai-cost-panel-line .ai-cost-panel-line-value{font-weight:600;color:#1a1a2e;white-space:nowrap}.ai-cost-panel .ai-cost-panel-hint{font-size:11px;color:#b45309;margin-top:1px}.ai-cost-panel .ai-cost-panel-split{flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:4px;padding-left:12px;border-left:1px solid rgba(0,0,0,.08)}.ai-cost-panel .ai-cost-panel-split-label{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#aaa}.ai-cost-panel .ai-cost-panel-split-stepper{display:flex;align-items:center;gap:2px;background:var(--conf-bg-page, #f4f4f8);border-radius:8px;padding:2px}.ai-cost-panel .ai-cost-split-btn{width:20px;height:20px;border:none;border-radius:5px;background:transparent;color:var(--conf-primary, #1E31EB);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s,color .15s}.ai-cost-panel .ai-cost-split-btn mat-icon{font-size:14px;width:14px;height:14px}.ai-cost-panel .ai-cost-split-btn:hover:not(:disabled){background:rgba(30,49,235,.12)}.ai-cost-panel .ai-cost-split-btn:disabled{color:#ccc;cursor:not-allowed}.ai-cost-panel .ai-cost-split-input{width:22px;text-align:center;border:none;background:transparent;font-size:13px;font-weight:700;color:#1a1a2e;-moz-appearance:textfield}.ai-cost-panel .ai-cost-split-input::-webkit-outer-spin-button,.ai-cost-panel .ai-cost-split-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.ai-cost-panel .ai-cost-split-input:focus{outline:none}.ai-history-dialog{min-width:520px;max-width:660px;display:flex;flex-direction:column;overflow:hidden}.ai-history-dialog .ai-history-dialog-body{overflow-y:auto;max-height:55vh;padding:8px 0 4px}.ai-history-dialog .ai-history-dialog-item{display:flex;align-items:flex-start;gap:16px;padding:14px 24px;border-bottom:1px solid rgba(0,0,0,.06);transition:background .12s}.ai-history-dialog .ai-history-dialog-item:last-child{border-bottom:none}.ai-history-dialog .ai-history-dialog-item:hover{background:rgba(30,49,235,.03)}.ai-history-dialog .ai-history-dialog-item--last{background:rgba(30,49,235,.04)}.ai-history-dialog .ai-history-dialog-item--last .ai-history-dialog-badge{background:var(--conf-gradient);box-shadow:0 2px 6px #1e31eb59}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-badge{flex-shrink:0;width:26px;height:26px;border-radius:50%;background:#dde0f5;color:var(--conf-primary, #1E31EB);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:1px}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt .ai-history-dialog-prompt-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;background:var(--conf-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt .ai-history-dialog-prompt-text{font-size:13.5px;color:#2a2a2a;line-height:1.55;word-break:break-word}.ai-history-dialog .ai-history-dialog-footer{display:flex;justify-content:flex-end;align-items:center;padding:12px 20px;border-top:1px solid rgba(0,0,0,.07);background:var(--conf-bg-page, #f9f9fa)}.ve-tooltip-panel{padding:0;min-width:280px}.ve-tooltip-header{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0}.ve-tooltip-header .ve-tooltip-icon{font-size:20px;width:20px;height:20px}.ve-tooltip-header .ve-tooltip-title{font-size:.9rem;font-weight:600;flex:1;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.3}.ve-tooltip-graphic{padding:12px 16px}.ve-tooltip-graphic .ve-tooltip-graphic-header{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:.85rem;color:#555}.ve-tooltip-graphic .ve-apply-all-row{display:flex;align-items:center;margin-bottom:8px;font-size:.8rem}.ve-tooltip-graphic .ve-apply-all-row mat-slide-toggle{font-size:.8rem}.ve-tooltip-graphic .ve-tooltip-graphic-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}.ve-swap-banner{display:flex;align-items:center;justify-content:center;gap:12px;margin:12px 0 4px;padding:12px 24px;background:rgba(245,158,11,.1);border:2px dashed #f59e0b;border-radius:10px;animation:ve-swap-pulse 1.2s infinite;font-size:.95rem;font-weight:600;color:#92400e}.ve-swap-banner .ve-swap-banner-icon{color:#f59e0b;font-size:24px;width:24px;height:24px;flex-shrink:0}.ve-swap-banner .ve-swap-banner-cancel{margin-left:16px;border-color:#f59e0b!important;color:#92400e!important;border-radius:6px;font-size:.85rem}@keyframes ve-swap-pulse{0%,to{background-color:#f59e0b1a}50%{background-color:#f59e0b38}}.ve-reorder-card{min-width:360px}.ve-reorder-header{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0;font-size:.95rem;font-weight:600}.ve-reorder-list{padding:8px 0}.ve-reorder-item{display:flex;align-items:center;gap:8px;padding:8px 16px;background:#fff;border-bottom:1px solid rgba(0,0,0,.08);cursor:move}.ve-reorder-item:last-child{border-bottom:none}.ve-drag-handle{color:#aaa;cursor:grab}.ve-drag-handle:active{cursor:grabbing}.ve-drag-placeholder{height:40px;background:rgba(99,102,241,.08);border:2px dashed rgba(99,102,241,.35);border-radius:4px}\n"] }]
|
|
2455
|
+
args: [{ selector: "eqp-dynamic-module-configurator", template: "<eqp-dynamic-module-spinner></eqp-dynamic-module-spinner>\r\n\r\n\r\n<div class=\"dynamic-module-configurator-header row title p-1\" *ngIf=\"innerFormManagment\">\r\n <div class=\"col-md-10\">\r\n <div class=\"header-title-standard\">Aggiunta form di dettaglio</div>\r\n </div>\r\n <div class=\"col-md-2 text-right\">\r\n <tmw-icon class=\"mat-icon close\" (click)=\"closeDialogInnerForm()\" name=\"x\"></tmw-icon>\r\n </div>\r\n</div>\r\n\r\n<!--#region EXPORT MODULE -->\r\n<div class=\"dynamic-module-configurator-exporter\" *ngIf=\"loader && viewMode == 'Export'\" class=\"p-3\">\r\n\r\n <button mat-raised-button class=\"btn btn-primary\" (click)=\"export()\">Esporta</button>\r\n\r\n <!--<a\r\n class=\"btn btn-clear\"\r\n mat-raised-button\r\n color=\"primary\"\r\n title=\"Download JSON\"\r\n [href]=\"downloadJsonHref\"\r\n download=\"{{ downloadName }}.json\"\r\n >Export</a>-->\r\n\r\n</div>\r\n<!--#endregion EXPORT MODULE -->\r\n\r\n<mat-horizontal-stepper *ngIf=\"loader && formFormGroup && viewMode == 'addOrEdit'\" linear #stepper\r\n [ngClass]=\"{ outerForm: true, 'innerFormManagment-stepper': innerFormManagment }\"\r\n class=\"dynamic-module-configurator-stepper {{ 'last-edited-step-' + stepper.selectedIndex }}\">\r\n <!--#region DATI GENERALI DELLA FORM -->\r\n <mat-step class=\"dynamic-module-configurator-general-data\" [stepControl]=\"formFormGroup\">\r\n <form [formGroup]=\"formFormGroup\" (keydown.enter)=\"(false)\">\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Dati generali della form\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\r\n (click)=\"openAiEditDialog()\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">{{ isNewForm ? 'Crea con AI' : 'Modifica con AI' }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Ultimo prompt AI + accesso allo storico -->\r\n <div *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint && aiPromptHistory.length > 0\"\r\n class=\"ai-last-prompt-bar\">\r\n <div class=\"ai-last-prompt-icon-wrap\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n </div>\r\n <div class=\"ai-last-prompt-content\">\r\n <div class=\"ai-last-prompt-label\">Richiesta AI iniziale</div>\r\n <div class=\"ai-last-prompt-text\">{{ aiPromptHistory[0] }}</div>\r\n </div>\r\n <button mat-icon-button type=\"button\" class=\"ai-last-prompt-history-btn\" matTooltip=\"Vedi storico completo\"\r\n (click)=\"openAiHistoryDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"history\"></tmw-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"row firstRow\">\r\n <!--\r\n <div class=\"col-md-6\">\r\n <mat-label\r\n [matTooltip]=\"'Va inserito per essere utilizzato come riferimento nei template. non accetta caratteri speciali ne spazi.'\"\r\n >\r\n Codice Univoco\r\n </mat-label>\r\n <mat-form-field class=\"name\">\r\n <input\r\n matInput\r\n [matTooltip]=\"'Va inserito per essere utilizzato come riferimento nei template. non accetta caratteri speciali ne spazi.'\"\r\n formControlName=\"Code\"\r\n [(ngModel)]=\"form.Code\"\r\n required\r\n (focusout)=\"setCode(form.Code)\"\r\n disabled=\"true\"\r\n readonly=\"true\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-md-6\"></div>\r\n -->\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"name\" appearance=\"outline\">\r\n <mat-label>Nome</mat-label>\r\n <input placeholder=\"Nome\" matInput formControlName=\"Name\" [(ngModel)]=\"form.Name\" required\r\n (focusout)=\"setName(form.Name)\" />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"col-md-4\">\r\n <!-- <mat-label>Tipo di visualizzazione</mat-label> -->\r\n <tmw-select class=\"nameSection\" [enumData]=\"FormScalarTypeEnum\" [(ngModelInput)]=\"form.FormScalarType\"\r\n [isRequired]=\"false\" required [showCancelButton]=\"false\" [formGroupInput]=\"formFormGroup\"\r\n [formControlNameInput]=\"'FormScalarType'\" (ngModelInputChange)=\"onChangeFormScalarType()\"\r\n placeholder=\"Tipo di visualizzazione\">\r\n </tmw-select>\r\n </div>\r\n\r\n <div class=\"col-md-6\">\r\n <mat-form-field class=\"name\" appearance=\"outline\">\r\n <mat-label>Descrizione</mat-label>\r\n <input matInput formControlName=\"Description\" [(ngModel)]=\"form.Description\"\r\n (focusout)=\"stringSanitizer(form.Name)\" placeholder=\"Descrizione\" />\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"row inserted\" *ngIf=\"\r\n form.FormScalarType &&\r\n form.FormScalarType != FormScalarTypeEnum.Semplice\r\n \">\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"nameSection\" appearance=\"outline\">\r\n <mat-label> Nome sezione (invio per confermare) </mat-label>\r\n\r\n <input matInput [(ngModel)]=\"formFieldGroupName\" [ngModelOptions]=\"{ standalone: true }\"\r\n (keyup)=\"onFormFieldGroupNameKeyUp($event)\" placeholder=\"Nome sezione (invio per confermare)\" />\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-md-8\">\r\n <span class=\"mr-3\">Sezioni inserite:</span>\r\n <ul class=\"section-list\">\r\n <li *ngFor=\"let groupName of form.FormFieldsGroups; let i = index\">\r\n <span class=\"sectionInsert\">\r\n <tmw-icon class=\"mat-icon mr-1\" (click)=\"onDeleteFormFieldGroupName(groupName.Name)\" name=\"x\"></tmw-icon>\r\n <tmw-icon class=\"mat-icon mr-1 icon-black\" (click)=\"onEditFormFieldGroupName(groupName)\" name=\"edit\"></tmw-icon>\r\n {{ groupName.Name }}\r\n </span>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end\">\r\n <!-- IMPORT -->\r\n <button *ngIf=\"!this.formID\" class=\"btn btn-clear button-next me-2\" mat-raised-button color=\"primary\"\r\n (click)=\"importModule()\">\r\n Importa\r\n </button>\r\n <!-- END IMPORT -->\r\n\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"formFormGroup.invalid\">\r\n Successivo\r\n </button>\r\n </div>\r\n </form>\r\n </mat-step>\r\n <!--#endregion DATI GENERALI DELLA FORM -->\r\n\r\n <!--#region AGGIUNTA DEI CAMPI DELLA FORM -->\r\n <mat-step class=\"dynamic-module-configurator-add-field\" [completed]=\"isFieldStepCompleted()\">\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n <mat-label>Campi da inserire</mat-label>\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-primary me-2\" mat-raised-button color=\"primary\" type=\"button\"\r\n (click)=\"openFieldDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi campo</span>\r\n </button>\r\n\r\n <!-- <button\r\n class=\"btn btn-outlined me-2\"\r\n mat-raised-button\r\n color=\"primary\"\r\n type=\"button\"\r\n (click)=\"openInnerFormDialog()\"\r\n *ngIf=\"!innerFormManagment\"\r\n >\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi form di dettaglio</span>\r\n </button> -->\r\n\r\n <button class=\"btn btn-outlined btn-outlined-red me-2\" mat-raised-button color=\"red\" type=\"button\"\r\n (click)=\"deleteSelectedFields('Fields')\" *ngIf=\"showDeleteButton\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Elimina campi selezionati</span>\r\n </button>\r\n\r\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\r\n (click)=\"openAiEditDialog()\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">{{ isNewForm ? 'Crea con AI' : 'Modifica con AI' }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <tmw-table class=\"table\" #fieldsTable [createMatCard]=\"false\" [columns]=\"fieldsColumns\" [enableDragAndDrop]=\"false\"\r\n [enableDragColumn]=\"true\" [changeDragRowPosition]=\"true\" [isMultipleSelection]=\"true\" [data]=\"form.Fields\"\r\n [emptyTableMessage]=\"'Nessun campo inserito'\" (dragReleasedEvent)=\"onDragReleased($event)\"\r\n (dragEndedEvent)=\"onDragEnded($event)\" (checkboxInfo)=\"toggleDeleteButton($event)\" [searchText]=\"''\"\r\n [paginatorVisible]=\"false\">\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"!isFieldStepCompleted()\"\r\n [ngClass]=\"{ disabled: formFormGroup.invalid }\" (click)=\"setFormStatus(false)\">\r\n Successivo\r\n </button>\r\n </div>\r\n </mat-step>\r\n <!--#endregion AGGIUNTA DEI CAMPI DELLA FORM -->\r\n\r\n <ng-template matStepperIcon=\"edit\" let-index=\"index\">\r\n <mat-label>{{ index + 1 }}</mat-label>\r\n </ng-template>\r\n\r\n <!--#region AGGIUNTA DELLE OPERAZIONI SUI RECORD -->\r\n <!--#<mat-step>\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Azioni aggiuntive sui record\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button\r\n class=\"btn btn-primary\"\r\n mat-raised-button\r\n color=\"primary\"\r\n type=\"button\"\r\n (click)=\"openActionOnRecordDialog()\"\r\n >\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi azione</span>\r\n </button>\r\n </div>\r\n </div>\r\n <eqp-table\r\n class=\"table\"\r\n #actionsOnRecordTable\r\n [createMatCard]=\"false\"\r\n [columns]=\"actionsOnRecordColumns\"\r\n [data]=\"form.ActionsOnRecord\"\r\n [emptyTableMessage]=\"'Nessuna action inserita'\"\r\n [searchText]=\"''\"\r\n >\r\n </eqp-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end buttonsNextDiv\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button\r\n class=\"button-next\"\r\n mat-raised-button\r\n color=\"primary\"\r\n matStepperNext\r\n (click)=\"setFormStatus(false)\"\r\n >\r\n Successivo\r\n </button>\r\n </div>\r\n </mat-step>-->\r\n <!--#endregion AGGIUNTA DELLE OPERAZIONI SUI RECORD -->\r\n\r\n\r\n\r\n <!--#region AGGIUNTA DEI BOTTONI AZIONE -->\r\n <mat-step>\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Bottoni Azione\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-primary\" mat-raised-button color=\"primary\" type=\"button\"\r\n (click)=\"openActionButtonDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi bottone azione</span>\r\n </button>\r\n </div>\r\n </div>\r\n <tmw-table class=\"table\" #actionButtonsTable [createMatCard]=\"false\" [columns]=\"actionButtonsColumns\"\r\n [data]=\"form.ActionButtons\" [emptyTableMessage]=\"'Nessun bottone azione inserito'\" [searchText]=\"''\"\r\n [enableDragAndDrop]=\"false\" [enableDragColumn]=\"true\" [changeDragRowPosition]=\"true\"\r\n (dragReleasedEvent)=\"onDragReleased($event)\" (dragEndedEvent)=\"onDragEnded($event)\">\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end buttonsNextDiv\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext (click)=\"setFormStatus(false)\">\r\n Successivo\r\n </button>\r\n </div>\r\n </mat-step>\r\n <!--#endregion AGGIUNTA DEI BOTTONI AZIONE -->\r\n\r\n\r\n\r\n <!--#region TRIGGERS-->\r\n <mat-step>\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\" (click)=\"setFormStatus(false)\"></div>\r\n Triggers\r\n </ng-template>\r\n\r\n <div class=\"row justify-content-start addButtons\">\r\n <div class=\"col\">\r\n <button class=\"btn btn-primary\" mat-raised-button color=\"primary\" type=\"button\" (click)=\"openTriggersDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Aggiungi trigger</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <tmw-table class=\"table\" #triggersTable [createMatCard]=\"false\" [columns]=\"triggersColumns\" [data]=\"form.Triggers\"\r\n [emptyTableMessage]=\"'Nessuna action inserita'\" [searchText]=\"''\">\r\n </tmw-table>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end\">\r\n <button class=\"mr-2 previous\" mat-raised-button matStepperPrevious>\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" matStepperNext [disabled]=\"!isFieldStepCompleted()\"\r\n [ngClass]=\"{ disabled: formFormGroup.invalid }\" (click)=\"setFormStatus(true)\">\r\n Successivo\r\n </button>\r\n </div>\r\n\r\n </mat-step>\r\n <!--#endregion TRIGGERS-->\r\n\r\n <!--#region VISUALIZZAZIONE FORM CREATA -->\r\n <mat-step class=\"dynamic-module-configurator-preview\">\r\n <ng-template matStepLabel>\r\n <div class=\"stepper-header-overlay\"\r\n (click)=\"setFormStatus( formFormGroup.valid && form.Fields && form.Fields.length > 0 )\"></div>\r\n Anteprima\r\n </ng-template>\r\n\r\n <div class=\"row align-items-center addButtons\">\r\n <div class=\"col-auto\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"showAllFields\" mat-raised-button color=\"primary\"\r\n type=\"button\" (click)=\"showAllFields = !showAllFields\">\r\n <tmw-icon class=\"mat-icon\" [name]=\"showAllFields ? 'eye-off' : 'eye'\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Mostra anche i campi invisibili</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\" *ngIf=\"contestualization && contestualization.length > 0\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"selectedContestualization != null\" mat-raised-button\r\n color=\"primary\" type=\"button\" (click)=\"openContestualizationDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"adjustments-horizontal\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Contestualizzazione</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"showGraficaPanel\" mat-raised-button color=\"accent\"\r\n type=\"button\" (click)=\"showGraficaPanel = !showGraficaPanel\">\r\n <tmw-icon class=\"mat-icon\" name=\"palette\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Grafica</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\">\r\n <button class=\"btn btn-outlined me-2\" [class.active]=\"visualEditorActive\" mat-raised-button color=\"accent\"\r\n type=\"button\" (click)=\"toggleVisualEditor()\">\r\n <tmw-icon class=\"mat-icon\" name=\"layout-grid\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Visual Editor</span>\r\n </button>\r\n </div>\r\n <div class=\"col-auto\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormSpeechToFormEditEndPointEndPoint\">\r\n <button class=\"btn btn-outlined me-2\" mat-raised-button color=\"accent\" type=\"button\"\r\n (click)=\"openAiEditDialog()\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span style=\"margin-left: 10px\">Modifica con AI</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"veSwapField\" class=\"ve-swap-banner\">\r\n <tmw-icon class=\"mat-icon ve-swap-banner-icon\" name=\"arrows-left-right\"></tmw-icon>\r\n <span>Clicca sul campo con cui vuoi scambiare la posizione</span>\r\n <button mat-stroked-button color=\"warn\" type=\"button\" (click)=\"veCancelSwap()\" class=\"ve-swap-banner-cancel\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n Annulla\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"showGraficaPanel\" class=\"mt-2\">\r\n <mat-accordion class=\"configurator-accordion\" [multi]=\"true\" displayMode=\"flat\">\r\n <mat-expansion-panel class=\"configurator-panel\" [expanded]=\"true\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>Grafica</mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div class=\"form-grafica-ai-row\" *ngIf=\"endPointConfiguration?.Forms?.SpeechToGraphicsEndPoint\">\r\n <button mat-stroked-button type=\"button\" class=\"btn-form-graphic-suggest\"\r\n [disabled]=\"formGraphicSuggestLoading\" (click)=\"toggleFormGraphicSuggestInput()\">\r\n <mat-spinner *ngIf=\"formGraphicSuggestLoading\" diameter=\"14\"\r\n style=\"display:inline-block;vertical-align:middle;margin-right:4px\"></mat-spinner>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"!formGraphicSuggestLoading\" name=\"palette\"></tmw-icon>\r\n {{ formGraphicSuggestLoading ? 'Elaborazione...' : 'Suggerisci Grafica Completa' }}\r\n </button>\r\n <div class=\"form-hint-input-group\" *ngIf=\"showFormGraphicSuggestInput && !formGraphicSuggestLoading\">\r\n <select class=\"form-graphic-scope-select\" [(ngModel)]=\"formGraphicScope\"\r\n [ngModelOptions]=\"{standalone: true}\">\r\n <option value=\"all\">Tutto</option>\r\n <option value=\"main\">Principale</option>\r\n <option *ngFor=\"let opt of presentFieldTypeOptions\" [value]=\"opt.value\">{{ opt.label }}</option>\r\n </select>\r\n <button type=\"button\" class=\"btn-hint-randomize\" (click)=\"randomizeHint()\"\r\n matTooltip=\"Suggerimento casuale\">\r\n <tmw-icon class=\"mat-icon\" name=\"bulb\"></tmw-icon>\r\n </button>\r\n <button type=\"button\" class=\"btn-generate-bg\" [class.active]=\"generateBackground\"\r\n (click)=\"generateBackground = !generateBackground\"\r\n [matTooltip]=\"generateBackground ? 'Sfondo AI: attivo' : 'Genera anche sfondo AI'\">\r\n <tmw-icon class=\"mat-icon\" name=\"photo\"></tmw-icon>\r\n </button>\r\n <input type=\"text\" class=\"form-graphic-hint-input\" [(ngModel)]=\"formGraphicSuggestHint\"\r\n [ngModelOptions]=\"{standalone: true}\"\r\n placeholder=\"es. toni di blu scuro, stile professionale, sfondo sfumato...\" />\r\n <button type=\"button\" class=\"btn-form-graphic-send\" (click)=\"onFormGraphicSuggest()\"\r\n matTooltip=\"Applica suggerimento grafico al form\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n </button>\r\n </div>\r\n </div>\r\n <hr class=\"grafica-ai-separator\" />\r\n <div class=\"row align-items-start grafica-row\">\r\n <div class=\"col-md-4\">\r\n <p class=\"grafica-field-label\">Immagine di sfondo</p>\r\n <tmw-attachments [attachmentsList]=\"bgAttachmentList\" [showMatCard]=\"false\" [allowOnlyImages]=\"true\"\r\n [isDisabled]=\"false\" [showInlinePreview]=\"true\" [multipleAttachment]=\"false\" [showHeader]=\"false\"\r\n [allowedTypes]=\"[AttachmentType.FILE]\" (localEditedAttachments)=\"onBgImageChange($event)\"\r\n (onDeleteAttachment)=\"onBgImageDelete()\">\r\n </tmw-attachments>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"w-100\" appearance=\"outline\">\r\n <mat-label>CSS Principale</mat-label>\r\n <textarea matInput [(ngModel)]=\"form.ThemeCSS\" [ngModelOptions]=\"{ standalone: true }\"\r\n placeholder=\"es. max-width: 800px; padding: 16px; background: #f5f5f5;\" rows=\"5\"></textarea>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-md-4\">\r\n <mat-form-field class=\"w-100\" appearance=\"outline\">\r\n <mat-label>CSS Titolo</mat-label>\r\n <textarea matInput [(ngModel)]=\"form.TitleCSS\"\r\n (ngModelChange)=\"previewForm && (previewForm.TitleCSS = $event)\"\r\n [ngModelOptions]=\"{ standalone: true }\"\r\n placeholder=\"es. font-size: 2rem; font-weight: 700; color: #fff;\" rows=\"5\"></textarea>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n </div>\r\n\r\n <hr />\r\n\r\n <div class=\"dynamic-module-preview\" [style]=\"previewBgStyle\">\r\n <div [style]=\"previewThemeStyle\">\r\n <add-form-record *ngIf=\"previewForm && formCompleted\" [form]=\"previewForm\" [userID]=\"UserID\" [orgaID]=\"orgaID\"\r\n [formulaObject]=\"formulaObject\" [configurations]=\"viewConfig\" [showAllFields]=\"showAllFields\"\r\n [QueryEditorComponent]=\"QueryEditorComponent\" [endPointConfiguration]=\"endPointConfiguration\"\r\n [visualEditorMode]=\"visualEditorActive\" [veSwapFieldCode]=\"veSwapField?.Label ?? null\"\r\n (veFieldClick)=\"onVeFieldClick($event)\" (out)=\"onExternalComponentOut($event)\"\r\n (fireTrigger)=\"onFireTrigger($event)\" [inConfig]=\"true\">\r\n </add-form-record>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-2 d-flex justify-content-end button-nextDiv\">\r\n <button class=\"mr-2 button-exit\" mat-raised-button matStepperPrevious (click)=\"setFormStatus(false)\">\r\n Precedente\r\n </button>\r\n <button class=\"button-next\" mat-raised-button color=\"primary\" (click)=\"saveForm()\">\r\n Salva form\r\n </button>\r\n </div>\r\n </mat-step>\r\n <!--#endregion VISUALIZZAZIONE FORM CREATA -->\r\n\r\n</mat-horizontal-stepper>\r\n\r\n<!-- DIALOG AGGIUNTA/MODIFICA CAMPO -->\r\n<ng-template #dialogField>\r\n <eqp-dynamic-module-add-form-field [form]=\"form\" [endPointConfiguration]=\"endPointConfiguration\"\r\n [field]=\"selectedField\" [formulaObject]=\"formulaObject\" [indexField]=\"indexSelectedField\"\r\n [availableFields]=\"form.Fields\" [contestualization]=\"contestualization\"\r\n [QueryEditorComponent]=\"QueryEditorComponent\" [fieldsExtraConfig]=\"fieldsExtraConfig\"\r\n [actionButtons]=\"actionButtons\" [aiFieldSuggestLoading]=\"aiFieldSuggestLoading\" [formFieldsGroups]=\"\r\n form.FormScalarType != FormScalarTypeEnum.Semplice\r\n ? form.FormFieldsGroups\r\n : null\r\n \" (openAiEditForFieldEvent)=\"onAiEditForField($event)\" (openAiGraphicSuggestEvent)=\"onAiGraphicSuggest($event)\"\r\n (saveFieldEvent)=\"onSaveField($event)\" (out)=\"onExternalComponentOut($event)\">\r\n </eqp-dynamic-module-add-form-field>\r\n</ng-template>\r\n\r\n<!-- TEMPLATE PER VISUALIZZARE LA COLONNA DELLA SEZIONE NELLA TABELLA DEI FIELDS -->\r\n<ng-template #fieldSectionColumnTemplate let-row=\"row\">\r\n <tmw-select [arrayData]=\"form.FormFieldsGroups\" [(ngModelInput)]=\"row.FieldGroup\" [arrayKeyProperty]=\"'Name'\"\r\n [arrayValueProperty]=\"'Name'\" placeholder=\"Sezione\" [isRequired]=\"true\" [includeFullObject]=\"false\">\r\n </tmw-select>\r\n</ng-template>\r\n\r\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE UNA ACTION SUI RECORD DELLA FORM -->\r\n<ng-template #dialogActionOnRecord>\r\n\r\n <div class=\"container-fluid third-modal\" style=\"max-height: 70vh !important; overflow-x: hidden; overflow-y: auto\">\r\n <form [formGroup]=\"actionOnRecordFormGroup\">\r\n <div class=\"row title\">\r\n <div class=\"header-title-standard\">\r\n {{\r\n indexSelectedAction != null && indexSelectedAction >= 0\r\n ? \"Modifica\"\r\n : \"Aggiungi\"\r\n }}\r\n azione sul record\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 col-md-4 mt-2\">\r\n <mat-label> Nome </mat-label>\r\n <mat-form-field>\r\n <input formControlName=\"Name\" required matInput [(ngModel)]=\"selectedAction.Name\" />\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-sm-12 col-md-4 mt-2\">\r\n <mat-label> Icona </mat-label>\r\n <mat-form-field>\r\n <input formControlName=\"Icon\" required matInput [(ngModel)]=\"selectedAction.Icon\" />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"col-12 mt-2\">\r\n <mat-label>Azione (Javascript)</mat-label>\r\n <mat-form-field>\r\n <textarea matInput [rows]=\"3\" formControlName=\"Action\" required [(ngModel)]=\"selectedAction.Action\"\r\n [matAutocomplete]=\"actionAutocomplete\" (keyup)=\"setActionAutocompleteOptions($event)\"\r\n (focus)=\"setActionAutocompleteOptions(null)\" style=\"\r\n border: 1px solid lightgray !important;\r\n border-radius: 10px !important;\r\n \"></textarea>\r\n <mat-autocomplete #actionAutocomplete=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let option of actionAutocompleteOptions\" [value]=\"option.value\">\r\n {{ option.label }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end mt-2 mb-1\">\r\n <div class=\"buttonsForm\">\r\n <button class=\"btn mat-raised-button cancel\" (click)=\"closeDialogActionOnRecord()\" type=\"button\">\r\n Annulla\r\n </button>\r\n <button class=\"mr-2 save\" mat-raised-button color=\"primary\" (click)=\"saveActionOnRecord()\"\r\n [disabled]=\"actionOnRecordFormGroup.invalid\" type=\"button\">\r\n Salva\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE UN BOTTONE AZIONE -->\r\n<ng-template #dialogActionButton>\r\n <action-button-creator [endPointConfiguration]=\"endPointConfiguration\" [form]=\"form\" [formulas]=\"actionButtons\"\r\n [actionButton]=\"selectedActionButton\" (onSaveRecord)=\"saveActionButtons($event)\"></action-button-creator>\r\n</ng-template>\r\n\r\n<!-- TEMPLATE PER CONFIGURARE LE FORM DI DETTAGLIO -->\r\n<ng-template #dialogInnerForm>\r\n <!-- [form]=\"selectedInnerForm\"\r\n [innerFormManagment]=\"true\"\r\n [innerFormRef]=\"dialogInnerFormRef\" -->\r\n <eqp-dynamic-module-configurator [configurations]=\"innerFormConfig\" (saveFormEvent)=\"onSaveOrExitInnerForm($event)\">\r\n </eqp-dynamic-module-configurator>\r\n</ng-template>\r\n\r\n<!-- TEMPLATE PER IMPORT -->\r\n<ng-template #dialogImport>\r\n <mat-card class=\"importDialog\">\r\n <mat-card-header class=\"p-2 justify-content-around\">\r\n <mat-card-title>\r\n Import\r\n </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"p-2\">\r\n <input type=\"file\" class=\"input-file-btn pb-2\" (change)=\"onImport($event)\" />\r\n </mat-card-content>\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\">\r\n <button class=\"btn btn-clear button-back me-2\" mat-raised-button color=\"disabled\" (click)=\"closeImport()\">\r\n Annulla\r\n </button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE I TRIGGERS -->\r\n<ng-template #dialogTriggers>\r\n <trigger-creator [endPointConfiguration]=\"endPointConfiguration\" [form]=\"form\" [formulas]=\"triggers\"\r\n [trigger]=\"selectedTrigger\" (onSaveRecord)=\"saveTrigger($event)\"></trigger-creator>\r\n</ng-template>\r\n\r\n<!-- DIALOG MODIFICA CON AI -->\r\n<ng-template #dialogAiEdit>\r\n <mat-card style=\"min-width: 480px\">\r\n <div class=\"ai-dialog-header\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n <span>{{ isNewForm ? 'Crea form con AI' : 'Modifica form con AI' }}</span>\r\n <button *ngIf=\"aiPromptHistory.length > 0\" mat-icon-button type=\"button\" class=\"ai-history-toggle-btn\"\r\n [class.active]=\"showAiPromptHistory\"\r\n [matTooltip]=\"showAiPromptHistory ? 'Nascondi storico richieste' : 'Mostra storico richieste'\"\r\n (click)=\"showAiPromptHistory = !showAiPromptHistory\">\r\n <tmw-icon class=\"mat-icon\" [name]=\"showAiPromptHistory ? 'history-off' : 'history'\"></tmw-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"ai-dialog-body-flex\">\r\n <mat-card-content class=\"p-3 ai-dialog-main-content\">\r\n <!-- Prompt textarea + microfono -->\r\n <div style=\"position: relative\">\r\n <mat-form-field appearance=\"outline\" style=\"width: 100%\">\r\n <mat-label>{{ isNewForm ? 'Descrivi il form da creare' : 'Descrivi la modifica da apportare' }}</mat-label>\r\n <textarea matInput [(ngModel)]=\"aiEditPrompt\" rows=\"5\" [disabled]=\"aiEditLoading\"\r\n [placeholder]=\"isNewForm ? 'Es: crea un form per la registrazione pazienti con campi nome, cognome, data di nascita e codice fiscale...' : 'Es: aggiungi un campo data di nascita, rimuovi il campo email, rendi obbligatorio il campo telefono...'\"></textarea>\r\n </mat-form-field>\r\n <tmw-icon class=\"mat-icon\" *ngIf=\"true\" SpeechToText [(bindedText)]=\"aiEditPrompt\"\r\n style=\"position: absolute; right: 12px; top: 12px; cursor: pointer; color: #666\"\r\n [matTooltip]=\"isNewForm ? 'Parla per descrivere il form' : 'Parla per dettare la modifica'\" name=\"microphone\"></tmw-icon>\r\n </div>\r\n\r\n <!-- Allegati + genera sfondo -->\r\n <div class=\"mb-2 mt-1\" style=\"display:flex;align-items:center;gap:8px;flex-wrap:wrap\">\r\n <button mat-stroked-button type=\"button\" [disabled]=\"aiEditLoading\" (click)=\"aiEditFileInput.click()\">\r\n <tmw-icon class=\"mat-icon\" name=\"paperclip\"></tmw-icon>\r\n <span style=\"margin-left: 6px\">Aggiungi allegati (PDF o immagini)</span>\r\n </button>\r\n <input #aiEditFileInput type=\"file\" multiple accept=\"image/*,application/pdf\" style=\"display: none\"\r\n (change)=\"onAiEditFileChange($event)\" />\r\n <button *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\" type=\"button\" class=\"btn-generate-bg\"\r\n [class.active]=\"aiGenerateBackground\" [disabled]=\"aiEditLoading\"\r\n (click)=\"aiGenerateBackground = !aiGenerateBackground\"\r\n [matTooltip]=\"aiGenerateBackground ? 'Sfondo AI: attivo' : 'Genera anche sfondo AI'\">\r\n <tmw-icon class=\"mat-icon\" name=\"photo\"></tmw-icon>\r\n </button>\r\n </div>\r\n <ul *ngIf=\"aiEditAttachments.length > 0\" style=\"list-style: none; padding: 0; margin: 0 0 12px\">\r\n <li *ngFor=\"let att of aiEditAttachments; let i = index\"\r\n style=\"display: flex; align-items: center; gap: 6px; margin-bottom: 4px\">\r\n <tmw-icon class=\"mat-icon\" style=\"font-size: 18px\" name=\"file\"></tmw-icon>\r\n <span>{{ att.fileName }}</span>\r\n <tmw-icon class=\"mat-icon\" style=\"font-size: 18px; cursor: pointer; color: #999\"\r\n (click)=\"removeAiEditAttachment(i)\" name=\"x\"></tmw-icon>\r\n </li>\r\n </ul>\r\n\r\n <!-- Autosave -->\r\n <mat-slide-toggle [(ngModel)]=\"aiEditAutosave\" [disabled]=\"aiEditLoading\" color=\"primary\">\r\n {{ isNewForm ? 'Salva automaticamente dopo la creazione' : 'Salva automaticamente dopo la modifica' }}\r\n </mat-slide-toggle>\r\n\r\n <!-- Conto alla rovescia mostrato mentre AI elabora -->\r\n <div *ngIf=\"aiEditLoading && aiEditEstimatedSec > 0\" class=\"mt-3 mb-1\">\r\n <!-- Fase normale: countdown in corso -->\r\n <ng-container *ngIf=\"!aiEditIsOvertime\">\r\n <mat-progress-bar mode=\"determinate\" [value]=\"(1 - aiEditCountdown / aiEditEstimatedSec) * 100\"\r\n color=\"accent\">\r\n </mat-progress-bar>\r\n <div style=\"text-align: center; margin-top: 4px\">\r\n <small class=\"text-muted\">\r\n Operazione in corso \u2014 tempo stimato rimanente: <b>{{ aiEditCountdown }}s</b>\r\n </small>\r\n </div>\r\n </ng-container>\r\n <!-- Fase overtime: il server impiega pi\u00F9 del previsto -->\r\n <ng-container *ngIf=\"aiEditIsOvertime\">\r\n <mat-progress-bar mode=\"indeterminate\" color=\"warn\"></mat-progress-bar>\r\n <div style=\"display: flex; align-items: center; justify-content: center; gap: 12px; margin-top: 6px\">\r\n <small class=\"text-muted\">\r\n Sembra che ci voglia pi\u00F9 del previsto \u2014 <b>+{{ -aiEditCountdown }}s</b>\r\n </small>\r\n <button mat-stroked-button type=\"button\" color=\"warn\" (click)=\"cancelAiEdit()\"\r\n style=\"height: 26px; line-height: 26px; font-size: 12px; padding: 0 10px; min-width: unset\">\r\n Annulla\r\n </button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- Stima costo AI (aggiornata in tempo reale al variare del prompt, del modello citato,\r\n degli allegati e del numero di split ipotizzato) -->\r\n <div class=\"ai-cost-panel mt-3\" *ngIf=\"!aiEditLoading\">\r\n <div class=\"ai-cost-panel-icon\">\r\n <tmw-icon class=\"mat-icon\" name=\"cash\"></tmw-icon>\r\n </div>\r\n\r\n <div class=\"ai-cost-panel-body\">\r\n <div class=\"ai-cost-panel-header\">\r\n <span class=\"ai-cost-panel-title\">Costo stimato uso AI</span>\r\n <span class=\"ai-cost-panel-model\">{{ aiEditDetectedModelLabel }}</span>\r\n </div>\r\n\r\n <ng-container *ngIf=\"aiEditSplitCount <= 1; else aiCostSplitLines\">\r\n <div class=\"ai-cost-panel-line\">\r\n <span class=\"ai-cost-panel-line-label\">Primo uso</span>\r\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostFirstEur) }} \u20AC</span>\r\n </div>\r\n <div class=\"ai-cost-panel-line\">\r\n <span class=\"ai-cost-panel-line-label\">Usi successivi</span>\r\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostSubsequentEur) }}\r\n \u20AC</span>\r\n </div>\r\n </ng-container>\r\n <ng-template #aiCostSplitLines>\r\n <div class=\"ai-cost-panel-line\">\r\n <span class=\"ai-cost-panel-line-label\">{{ aiEditSplitCount }} parti parallele</span>\r\n <span class=\"ai-cost-panel-line-value\">al massimo {{ formatAiEditCost(aiEditCostFirstEur) }} \u20AC</span>\r\n </div>\r\n <div class=\"ai-cost-panel-hint\">{{ aiEditSplitWarmUpApplies\r\n ? 'Il server scalda la cache prima dello split: risparmio su ' + aiEditSplitCount + ' chiamate'\r\n : 'Split troppo piccolo per la cache: nessun beneficio, prezzo pieno su ' + aiEditSplitCount + '\r\n chiamate' }}</div>\r\n </ng-template>\r\n </div>\r\n\r\n <div class=\"ai-cost-panel-split\"\r\n matTooltip=\"Numero di split ipotizzati per la stima (1 = nessuno split, altrimenti 3-12: il server non usa mai 2 split)\">\r\n <span class=\"ai-cost-panel-split-label\">Split</span>\r\n <div class=\"ai-cost-panel-split-stepper\">\r\n <button type=\"button\" class=\"ai-cost-split-btn\" [disabled]=\"aiEditSplitCount <= 1\"\r\n (click)=\"decrementAiEditSplitCount()\">\r\n <tmw-icon class=\"mat-icon\" name=\"minus\"></tmw-icon>\r\n </button>\r\n <input type=\"number\" class=\"ai-cost-split-input\" [(ngModel)]=\"aiEditSplitCount\" min=\"1\" max=\"12\" />\r\n <button type=\"button\" class=\"ai-cost-split-btn\" [disabled]=\"aiEditSplitCount >= 12\"\r\n (click)=\"incrementAiEditSplitCount()\">\r\n <tmw-icon class=\"mat-icon\" name=\"plus\"></tmw-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n\r\n <!-- Pannello storico richieste -->\r\n <div *ngIf=\"showAiPromptHistory && aiPromptHistory.length > 0\" class=\"ai-history-panel\">\r\n <div class=\"ai-history-panel-title\">\r\n <tmw-icon class=\"mat-icon\" style=\"font-size: 16px; width: 16px; height: 16px\" name=\"history\"></tmw-icon>\r\n <span>Storico richieste</span>\r\n </div>\r\n <div class=\"ai-history-list\">\r\n <div *ngFor=\"let prompt of aiPromptHistory; let i = index\" class=\"ai-history-item\">\r\n <span class=\"ai-history-index\">{{ i + 1 }}</span>\r\n <span class=\"ai-history-text\">{{ prompt }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\r\n <button mat-raised-button type=\"button\" [disabled]=\"aiEditLoading\" (click)=\"closeAiEditDialog()\">\r\n Annulla\r\n </button>\r\n <button mat-raised-button color=\"primary\" type=\"button\" [disabled]=\"!aiEditPrompt?.trim() || aiEditLoading\"\r\n (click)=\"sendAiEdit()\">\r\n <mat-spinner *ngIf=\"aiEditLoading\" diameter=\"18\"\r\n style=\"display: inline-block; margin-right: 6px; vertical-align: middle\"></mat-spinner>\r\n <span>{{ aiEditLoading ? 'Elaborazione...' : (isNewForm ? 'Crea con AI' : 'Modifica con AI') }}</span>\r\n </button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- VISUAL EDITOR \u2014 Tooltip azioni campo -->\r\n<ng-template #dialogVeTooltip>\r\n <div class=\"ve-tooltip-panel\">\r\n <div class=\"ve-tooltip-header\">\r\n <tmw-icon class=\"mat-icon ve-tooltip-icon\" name=\"edit\"></tmw-icon>\r\n <span class=\"ve-tooltip-title\">{{ veSelectedField?.Description }}</span>\r\n <button mat-icon-button (click)=\"dialogVeTooltipRef?.close()\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n </button>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!veShowGraphicInput\">\r\n <button mat-menu-item (click)=\"veEditField()\">\r\n <tmw-icon class=\"mat-icon\" name=\"settings\"></tmw-icon>\r\n Modifica campo\r\n </button>\r\n <button mat-menu-item *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\" (click)=\"veAiEdit()\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n Modifica con IA\r\n </button>\r\n <button mat-menu-item *ngIf=\"endPointConfiguration?.Forms?.SpeechToFormEditEndPoint\"\r\n (click)=\"veShowGraphicInput = true\">\r\n <tmw-icon class=\"mat-icon\" name=\"palette\"></tmw-icon>\r\n Suggerisci Grafica\r\n </button>\r\n <button mat-menu-item (click)=\"veOpenReorder()\">\r\n <tmw-icon class=\"mat-icon\" name=\"grip-vertical\"></tmw-icon>\r\n Riordina\r\n </button>\r\n <button mat-menu-item (click)=\"veStartSwap()\">\r\n <tmw-icon class=\"mat-icon\" name=\"arrows-left-right\"></tmw-icon>\r\n Scambia\r\n </button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"veDeleteField()\" style=\"color: #e53935;\">\r\n <tmw-icon class=\"mat-icon\" style=\"color: #e53935;\" name=\"trash\"></tmw-icon>\r\n Elimina campo\r\n </button>\r\n </ng-container>\r\n\r\n <div class=\"ve-tooltip-graphic\" *ngIf=\"veShowGraphicInput\">\r\n <div class=\"ve-tooltip-graphic-header\">\r\n <button mat-icon-button (click)=\"veShowGraphicInput = false; veApplyToAllOfType = false\">\r\n <tmw-icon class=\"mat-icon\" name=\"arrow-left\"></tmw-icon>\r\n </button>\r\n <span style=\"flex:1\">Grafica per \"{{ veSelectedField?.Label }}\"</span>\r\n <button type=\"button\" class=\"btn-hint-randomize\" (click)=\"randomizeVeHint()\" matTooltip=\"Suggerimento casuale\">\r\n <tmw-icon class=\"mat-icon\" name=\"bulb\"></tmw-icon>\r\n </button>\r\n </div>\r\n <mat-form-field appearance=\"outline\" class=\"w-100\">\r\n <mat-label>Suggerimento grafico</mat-label>\r\n <textarea matInput [(ngModel)]=\"veGraphicHint\" [ngModelOptions]=\"{standalone: true}\" rows=\"3\"\r\n placeholder=\"es. bordo blu, sfondo semi-trasparente, etichetta in grassetto...\"></textarea>\r\n </mat-form-field>\r\n <div class=\"ve-apply-all-row\">\r\n <mat-slide-toggle [(ngModel)]=\"veApplyToAllOfType\" [ngModelOptions]=\"{standalone: true}\" color=\"primary\">\r\n Applica a tutti i <strong>{{ veSelectedFieldTypeName }}</strong>\r\n </mat-slide-toggle>\r\n </div>\r\n <div class=\"ve-tooltip-graphic-actions\">\r\n <button mat-button (click)=\"veShowGraphicInput = false; veApplyToAllOfType = false\">Annulla</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"veSendGraphic()\">\r\n <tmw-icon class=\"mat-icon\" name=\"wand\"></tmw-icon>\r\n Invia\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- VISUAL EDITOR \u2014 Riordina campi -->\r\n<ng-template #dialogVeReorder>\r\n <mat-card class=\"ve-reorder-card\">\r\n <div class=\"ve-reorder-header\">\r\n <tmw-icon class=\"mat-icon\" name=\"grip-vertical\"></tmw-icon>\r\n <span>Riordina campi</span>\r\n </div>\r\n <mat-card-content>\r\n <div cdkDropList (cdkDropListDropped)=\"onVeDragDropReorder($event)\" class=\"ve-reorder-list\">\r\n <div *ngFor=\"let field of veReorderFields\" cdkDrag class=\"ve-reorder-item\">\r\n <tmw-icon class=\"mat-icon ve-drag-handle\" cdkDragHandle name=\"grip-vertical\"></tmw-icon>\r\n <span>{{ field.Description }}</span>\r\n <div class=\"ve-drag-placeholder\" *cdkDragPlaceholder></div>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\r\n <button mat-button (click)=\"dialogVeReorderRef?.close()\">Annulla</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"veApplyReorder()\">OK</button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- DIALOG CONTESTUALIZZAZIONE DBGETTER -->\r\n<ng-template #dialogContestualization>\r\n <mat-card style=\"min-width: 420px\">\r\n <mat-card-header class=\"p-2\">\r\n <mat-card-title>Contestualizzazione del DBGetter</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content class=\"p-3\">\r\n <tmw-select [arrayData]=\"contestualization\" [(ngModelInput)]=\"selectedContestualization\"\r\n [arrayKeyProperty]=\"'entityTableName'\" [arrayValueProperty]=\"'entityTableName'\"\r\n (ngModelInputChange)=\"onContestualizationSelect()\" [placeholder]=\"'Contestualizzazione del DBGetter'\"\r\n [includeFullObject]=\"false\"></tmw-select>\r\n <div *ngIf=\"selectedContestualization != null\" class=\"mt-2\">\r\n <input matInput class=\"form-control\" [(ngModel)]=\"selectedContestualizationValue\"\r\n (change)=\"onContestualizationSelectValue()\">\r\n </div>\r\n </mat-card-content>\r\n <mat-card-footer class=\"p-2 d-flex justify-content-end\" style=\"gap: 8px\">\r\n <button class=\"btn btn-danger\"\r\n (click)=\"applyContestualization(null); closeContestualizationDialog()\">Rimuovi</button>\r\n <button class=\"btn btn-primary\"\r\n (click)=\"applyContestualization(contestualization); closeContestualizationDialog()\">Applica</button>\r\n </mat-card-footer>\r\n </mat-card>\r\n</ng-template>\r\n\r\n<!-- MODALE STORICO PROMPT AI -->\r\n<ng-template #dialogAiHistory>\r\n <div class=\"ai-history-dialog\">\r\n <div class=\"ai-dialog-header\">\r\n <tmw-icon class=\"mat-icon\" name=\"history\"></tmw-icon>\r\n <span>Storico richieste AI</span>\r\n <button mat-icon-button type=\"button\" class=\"ai-history-toggle-btn\" (click)=\"dialogAiHistoryRef?.close()\"\r\n matTooltip=\"Chiudi\">\r\n <tmw-icon class=\"mat-icon\" name=\"x\"></tmw-icon>\r\n </button>\r\n </div>\r\n <div class=\"ai-history-dialog-body\">\r\n <div *ngFor=\"let prompt of aiPromptHistory; let i = index\" class=\"ai-history-dialog-item\"\r\n [class.ai-history-dialog-item--last]=\"i === aiPromptHistory.length - 1\">\r\n <div class=\"ai-history-dialog-badge\">{{ i + 1 }}</div>\r\n <div class=\"ai-history-dialog-prompt\">\r\n <span class=\"ai-history-dialog-prompt-label\" *ngIf=\"i === aiPromptHistory.length - 1\">Pi\u00F9 recente</span>\r\n <span class=\"ai-history-dialog-prompt-text\">{{ prompt }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"ai-history-dialog-footer\">\r\n <button mat-raised-button color=\"primary\" type=\"button\" (click)=\"dialogAiHistoryRef?.close()\">Chiudi</button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- AI DataGetter: caricamento silent del QueryEditor per popolare DataGetterValue via prompt -->\r\n<div *ngIf=\"aiDataGetterLoading\" style=\"display:none; position:absolute; width:0; height:0; overflow:hidden\"\r\n aria-hidden=\"true\">\r\n <ng-template [appDynamicLoader] [data]=\"QueryEditorComponent\" (out)=\"onAiDataGetterOut($event)\"></ng-template>\r\n</div>", styles: ["@charset \"UTF-8\";.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.mat-mdc-card{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f;--mdc-elevated-card-container-color: #fff}.mat-mdc-card-outlined{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f;--mdc-outlined-card-outline-color: #e0e0e0}.mat-mdc-card-subtitle{color:#0000008a}.mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color: #1e31eb}.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(30, 49, 235, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar .mdc-linear-progress__buffer-bar{background-color:#1e31eb40}.mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color: #ff5252}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(255, 82, 82, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-bar{background-color:#ff525240}.mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color: #c40000}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(196, 0, 0, 0.25)'/%3E%3C/svg%3E\")}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-bar{background-color:#c4000040}.mat-mdc-tooltip{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: white}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-floating-label{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input{color:#000000de}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::-moz-placeholder{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:#0009}}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:#0009}}.mdc-text-field .mdc-text-field__input{caret-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field-character-counter,.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--leading{color:#0000008a}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:#0000008a}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--prefix{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--suffix{color:#0009}.mdc-text-field--filled .mdc-text-field__ripple:before,.mdc-text-field--filled .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, rgba(0, 0, 0, .87))}.mdc-text-field--filled:hover .mdc-text-field__ripple:before,.mdc-text-field--filled.mdc-ripple-surface--hover .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-hover-opacity, .04)}.mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple:before,.mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-focus-opacity, .12)}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#f5f5f5}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:#0000006b}.mdc-text-field--filled:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:#000000de}.mdc-text-field--filled .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:#00000061}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#000000de}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-primary, #1e31eb)}.mdc-text-field--outlined .mdc-text-field__ripple:before,.mdc-text-field--outlined .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, transparent)}.mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#1e31ebde}.mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mdc-text-field--disabled .mdc-text-field__input{color:#00000061}@media all{.mdc-text-field--disabled .mdc-text-field__input::-moz-placeholder{color:#00000061}.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:#00000061}}@media all{.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:#00000061}}.mdc-text-field--disabled .mdc-floating-label{color:#00000061}.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#00000061}.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#00000061}.mdc-text-field--disabled .mdc-text-field__icon--leading,.mdc-text-field--disabled .mdc-text-field__icon--trailing{color:#0000004d}.mdc-text-field--disabled .mdc-text-field__affix--prefix,.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:#00000061}.mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:#0000000f}.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:#0000000f}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input::-moz-placeholder{color:GrayText}.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:GrayText}.mdc-text-field--disabled .mdc-floating-label{color:GrayText}.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:GrayText}.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:GrayText}.mdc-text-field--disabled .mdc-text-field__icon--leading,.mdc-text-field--disabled .mdc-text-field__icon--trailing,.mdc-text-field--disabled .mdc-text-field__affix--prefix,.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:GrayText}.mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:GrayText}.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:GrayText}}.mdc-text-field--disabled.mdc-text-field--filled{background-color:#fafafa}.mat-mdc-form-field-error{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field-focus-overlay{background-color:#000000de}.mat-mdc-form-field:hover .mat-mdc-form-field-focus-overlay{opacity:.04}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:.12}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix:after{color:#0000008a}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-primary .mat-mdc-form-field-infix:after{color:#1e31ebde}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-accent .mat-mdc-form-field-infix:after{color:#ff5252de}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-warn .mat-mdc-form-field-infix:after{color:#c40000de}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix:after{color:#00000061}.mat-mdc-form-field.mat-accent .mdc-text-field__input{caret-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-accent:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-accent .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#ff5252de}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-secondary, #ff5252)}.mat-mdc-form-field.mat-warn .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#c40000de}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #c40000)}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid transparent}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid transparent}.mat-mdc-form-field-infix{min-height:56px}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:28px}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -34.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:24px;padding-bottom:8px}.mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-select-value{color:#000000de}.mat-mdc-select-placeholder{color:#0009}.mat-mdc-select-disabled .mat-mdc-select-value{color:#00000061}.mat-mdc-select-arrow{color:#0000008a}.mat-mdc-form-field.mat-focused.mat-primary .mat-mdc-select-arrow{color:#1e31ebde}.mat-mdc-form-field.mat-focused.mat-accent .mat-mdc-select-arrow{color:#ff5252de}.mat-mdc-form-field.mat-focused.mat-warn .mat-mdc-select-arrow,.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow{color:#c40000de}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:#00000061}.mat-mdc-dialog-container{--mdc-dialog-container-color: white;--mdc-dialog-with-divider-divider-color: rgba(0, 0, 0, .12);--mdc-dialog-subhead-color: rgba(0, 0, 0, .87);--mdc-dialog-supporting-text-color: rgba(0, 0, 0, .6)}.mat-mdc-standard-chip{--mdc-chip-elevated-container-color: #e0e0e0;--mdc-chip-elevated-disabled-container-color: #e0e0e0;--mdc-chip-label-text-color: #212121;--mdc-chip-disabled-label-text-color: #212121;--mdc-chip-with-icon-icon-color: #212121;--mdc-chip-with-icon-disabled-icon-color: #212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #212121;--mdc-chip-with-trailing-icon-trailing-icon-color: #212121;--mdc-chip-with-icon-selected-icon-color: #212121}.mat-mdc-standard-chip.mat-primary.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-primary.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #1e31eb;--mdc-chip-elevated-disabled-container-color: #1e31eb;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.mat-mdc-standard-chip.mat-accent.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-accent.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #ff5252;--mdc-chip-elevated-disabled-container-color: #ff5252;--mdc-chip-label-text-color: rgba(0, 0, 0, .87);--mdc-chip-disabled-label-text-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-disabled-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-trailing-icon-trailing-icon-color: rgba(0, 0, 0, .87);--mdc-chip-with-icon-selected-icon-color: rgba(0, 0, 0, .87)}.mat-mdc-standard-chip.mat-warn.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-warn.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #c40000;--mdc-chip-elevated-disabled-container-color: #c40000;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.mat-mdc-chip-focus-overlay{background:black}.mat-mdc-chip{height:32px}.mat-mdc-slide-toggle{--mdc-switch-disabled-selected-handle-color: #424242;--mdc-switch-disabled-unselected-handle-color: #424242;--mdc-switch-disabled-selected-track-color: #424242;--mdc-switch-disabled-unselected-track-color: #424242;--mdc-switch-unselected-focus-state-layer-color: #424242;--mdc-switch-unselected-pressed-state-layer-color: #424242;--mdc-switch-unselected-hover-state-layer-color: #424242;--mdc-switch-unselected-focus-track-color: #e0e0e0;--mdc-switch-unselected-hover-track-color: #e0e0e0;--mdc-switch-unselected-pressed-track-color: #e0e0e0;--mdc-switch-unselected-track-color: #e0e0e0;--mdc-switch-unselected-focus-handle-color: #212121;--mdc-switch-unselected-hover-handle-color: #212121;--mdc-switch-unselected-pressed-handle-color: #212121;--mdc-switch-handle-surface-color: var(--mdc-theme-surface, #fff);--mdc-switch-unselected-handle-color: #616161;--mdc-switch-selected-icon-color: #fff;--mdc-switch-disabled-selected-icon-color: #fff;--mdc-switch-disabled-unselected-icon-color: #fff;--mdc-switch-unselected-icon-color: #fff}.mat-mdc-slide-toggle .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:#00000061}.mat-mdc-slide-toggle.mat-primary{--mdc-switch-selected-focus-state-layer-color: #3949ab;--mdc-switch-selected-handle-color: #3949ab;--mdc-switch-selected-hover-state-layer-color: #3949ab;--mdc-switch-selected-pressed-state-layer-color: #3949ab;--mdc-switch-selected-focus-handle-color: #1a237e;--mdc-switch-selected-hover-handle-color: #1a237e;--mdc-switch-selected-pressed-handle-color: #1a237e;--mdc-switch-selected-focus-track-color: #7986cb;--mdc-switch-selected-hover-track-color: #7986cb;--mdc-switch-selected-pressed-track-color: #7986cb;--mdc-switch-selected-track-color: #7986cb}.mat-mdc-slide-toggle.mat-accent,.mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color: #e53935;--mdc-switch-selected-handle-color: #e53935;--mdc-switch-selected-hover-state-layer-color: #e53935;--mdc-switch-selected-pressed-state-layer-color: #e53935;--mdc-switch-selected-focus-handle-color: #b71c1c;--mdc-switch-selected-hover-handle-color: #b71c1c;--mdc-switch-selected-pressed-handle-color: #b71c1c;--mdc-switch-selected-focus-track-color: #e57373;--mdc-switch-selected-hover-track-color: #e57373;--mdc-switch-selected-pressed-track-color: #e57373;--mdc-switch-selected-track-color: #e57373}.mat-mdc-slide-toggle{--mdc-switch-state-layer-size: 48px}.mat-mdc-radio-button .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #1e31eb;--mdc-radio-selected-hover-icon-color: #1e31eb;--mdc-radio-selected-icon-color: #1e31eb;--mdc-radio-selected-pressed-icon-color: #1e31eb;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #1e31eb}.mat-mdc-radio-button.mat-primary .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff5252;--mdc-radio-selected-hover-icon-color: #ff5252;--mdc-radio-selected-icon-color: #ff5252;--mdc-radio-selected-pressed-icon-color: #ff5252;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #ff5252}.mat-mdc-radio-button.mat-accent .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #c40000;--mdc-radio-selected-hover-icon-color: #c40000;--mdc-radio-selected-icon-color: #c40000;--mdc-radio-selected-pressed-icon-color: #c40000;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #c40000}.mat-mdc-radio-button.mat-warn .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button .mdc-radio{padding:10px}.mat-mdc-radio-button .mdc-radio .mdc-radio__background:before{top:-10px;left:-10px;width:40px;height:40px}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control{top:0;right:0;left:0;width:40px;height:40px}.mat-mdc-slider{--mdc-slider-label-container-color: black;--mdc-slider-label-label-text-color: white;--mdc-slider-disabled-handle-color: #000;--mdc-slider-disabled-active-track-color: #000;--mdc-slider-disabled-inactive-track-color: #000;--mdc-slider-with-tick-marks-disabled-container-color: #000;--mat-mdc-slider-value-indicator-opacity: .6}.mat-mdc-slider.mat-primary{--mdc-slider-handle-color: #1e31eb;--mdc-slider-focus-handle-color: #1e31eb;--mdc-slider-hover-handle-color: #1e31eb;--mdc-slider-active-track-color: #1e31eb;--mdc-slider-inactive-track-color: #1e31eb;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #1e31eb;--mat-mdc-slider-ripple-color: #1e31eb;--mat-mdc-slider-hover-ripple-color: rgba(30, 49, 235, .05);--mat-mdc-slider-focus-ripple-color: rgba(30, 49, 235, .2)}.mat-mdc-slider.mat-accent{--mdc-slider-handle-color: #ff5252;--mdc-slider-focus-handle-color: #ff5252;--mdc-slider-hover-handle-color: #ff5252;--mdc-slider-active-track-color: #ff5252;--mdc-slider-inactive-track-color: #ff5252;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #ff5252;--mat-mdc-slider-ripple-color: #ff5252;--mat-mdc-slider-hover-ripple-color: rgba(255, 82, 82, .05);--mat-mdc-slider-focus-ripple-color: rgba(255, 82, 82, .2)}.mat-mdc-slider.mat-warn{--mdc-slider-handle-color: #c40000;--mdc-slider-focus-handle-color: #c40000;--mdc-slider-hover-handle-color: #c40000;--mdc-slider-active-track-color: #c40000;--mdc-slider-inactive-track-color: #c40000;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #c40000;--mat-mdc-slider-ripple-color: #c40000;--mat-mdc-slider-hover-ripple-color: rgba(196, 0, 0, .05);--mat-mdc-slider-focus-ripple-color: rgba(196, 0, 0, .2)}.mdc-menu-surface{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;background-color:var(--mdc-theme-surface, #fff);color:var(--mdc-theme-on-surface, #000)}.mdc-list-item__primary-text{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mdc-list-item__secondary-text{color:var(--mdc-theme-text-secondary-on-background, rgba(0, 0, 0, .54))}.mdc-list-item__overline-text{color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, .38))}.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-trailing-icon .mdc-list-item__end{background-color:transparent}.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-trailing-icon .mdc-list-item__end{color:var(--mdc-theme-text-icon-on-background, rgba(0, 0, 0, .38))}.mdc-list-item__end{color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, .38))}.mdc-list-item--disabled .mdc-list-item__start,.mdc-list-item--disabled .mdc-list-item__content,.mdc-list-item--disabled .mdc-list-item__end{opacity:.38}.mdc-list-item--disabled .mdc-list-item__primary-text,.mdc-list-item--disabled .mdc-list-item__secondary-text,.mdc-list-item--disabled .mdc-list-item__overline-text,.mdc-list-item--disabled.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--disabled.mdc-list-item--with-trailing-icon .mdc-list-item__end,.mdc-list-item--disabled.mdc-list-item--with-trailing-meta .mdc-list-item__end{color:var(--mdc-theme-on-surface, #000)}.mdc-list-item--selected .mdc-list-item__primary-text,.mdc-list-item--activated .mdc-list-item__primary-text,.mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:var(--mdc-theme-primary, #1e31eb)}.mdc-deprecated-list-group__subheader{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mdc-list-divider:after{border-bottom-color:#fff}.mdc-list-divider{background-color:#0000001f}.mat-mdc-menu-item[disabled],.mat-mdc-menu-item[disabled] .mat-mdc-menu-submenu-icon,.mat-mdc-menu-item[disabled] .mat-icon-no-color{color:var(--mdc-theme-text-disabled-on-background, rgba(0, 0, 0, .38))}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-submenu-icon{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-menu-item:hover:not([disabled]),.mat-mdc-menu-item.cdk-program-focused:not([disabled]),.mat-mdc-menu-item.cdk-keyboard-focused:not([disabled]),.mat-mdc-menu-item-highlighted:not([disabled]){background:rgba(0,0,0,.04)}.mat-mdc-list-base{--mdc-list-list-item-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-supporting-text-color: rgba(0, 0, 0, .54);--mdc-list-list-item-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-supporting-text-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-selected-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-disabled-label-text-color: black;--mdc-list-list-item-disabled-leading-icon-color: black;--mdc-list-list-item-disabled-trailing-icon-color: black;--mdc-list-list-item-hover-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-hover-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-focus-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-state-layer-color: black;--mdc-list-list-item-hover-state-layer-opacity: .04;--mdc-list-list-item-focus-state-layer-color: black;--mdc-list-list-item-focus-state-layer-opacity: .12}.mat-mdc-list-option .mdc-list-item__start,.mat-mdc-list-option .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #1e31eb;--mdc-checkbox-selected-hover-icon-color: #1e31eb;--mdc-checkbox-selected-icon-color: #1e31eb;--mdc-checkbox-selected-pressed-icon-color: #1e31eb;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option .mdc-list-item__start,.mat-mdc-list-option .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #1e31eb;--mdc-radio-selected-hover-icon-color: #1e31eb;--mdc-radio-selected-icon-color: #1e31eb;--mdc-radio-selected-pressed-icon-color: #1e31eb;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #1e31eb}.mat-mdc-list-option .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-option.mat-accent .mdc-list-item__start,.mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff5252;--mdc-checkbox-selected-hover-icon-color: #ff5252;--mdc-checkbox-selected-icon-color: #ff5252;--mdc-checkbox-selected-pressed-icon-color: #ff5252;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option.mat-accent .mdc-list-item__start,.mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff5252;--mdc-radio-selected-hover-icon-color: #ff5252;--mdc-radio-selected-icon-color: #ff5252;--mdc-radio-selected-pressed-icon-color: #ff5252;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #ff5252}.mat-mdc-list-option.mat-accent .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option.mat-accent .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-option.mat-warn .mdc-list-item__start,.mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #c40000;--mdc-checkbox-selected-hover-icon-color: #c40000;--mdc-checkbox-selected-icon-color: #c40000;--mdc-checkbox-selected-pressed-icon-color: #c40000;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option.mat-warn .mdc-list-item__start,.mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #c40000;--mdc-radio-selected-hover-icon-color: #c40000;--mdc-radio-selected-icon-color: #c40000;--mdc-radio-selected-pressed-icon-color: #c40000;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #c40000}.mat-mdc-list-option.mat-warn .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option.mat-warn .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:#1e31eb}.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end{opacity:1}.mat-mdc-list-base{--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}.mat-mdc-paginator{background:white;color:#000000de}.mat-mdc-paginator-icon{fill:#0000008a}.mat-mdc-paginator-decrement,.mat-mdc-paginator-increment{border-top:2px solid rgba(0,0,0,.54);border-right:2px solid rgba(0,0,0,.54)}.mat-mdc-paginator-first,.mat-mdc-paginator-last{border-top:2px solid rgba(0,0,0,.54)}.mat-mdc-icon-button[disabled] .mat-mdc-paginator-decrement,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-increment,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-first,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-last{border-color:#0000001f}.mat-mdc-icon-button[disabled] .mat-mdc-paginator-icon{fill:#0000001f}.mat-mdc-paginator .mat-mdc-form-field-infix{min-height:40px}.mat-mdc-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:20px}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -26.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label{display:none}.mat-mdc-paginator-container{min-height:56px}.mat-mdc-tab,.mat-mdc-tab-link{background-color:transparent}.mat-mdc-tab .mdc-tab__text-label,.mat-mdc-tab-link .mdc-tab__text-label{color:#0009}.mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__ripple:before,.mat-mdc-tab.mat-mdc-tab-disabled .mat-ripple-element,.mat-mdc-tab-link.mat-mdc-tab-disabled .mdc-tab__ripple:before,.mat-mdc-tab-link.mat-mdc-tab-disabled .mat-ripple-element{background-color:#00000061}.mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#1e31eb}.mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #1e31eb)}.mdc-tab__ripple:before,.mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-link .mat-ripple-element{background-color:#1e31eb}.mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#ff5252}.mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #ff5252)}.mat-mdc-tab-group.mat-accent .mdc-tab__ripple:before,.mat-mdc-tab-group.mat-accent .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mdc-tab__ripple:before,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link .mat-ripple-element{background-color:#ff5252}.mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#c40000}.mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #c40000)}.mat-mdc-tab-group.mat-warn .mdc-tab__ripple:before,.mat-mdc-tab-group.mat-warn .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mdc-tab__ripple:before,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link .mat-ripple-element{background-color:#c40000}.mat-mdc-tab-group.mat-background-primary,.mat-mdc-tab-nav-bar.mat-background-primary{--mat-mdc-tab-header-with-background-background-color: #1e31eb;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-group.mat-background-accent,.mat-mdc-tab-nav-bar.mat-background-accent{--mat-mdc-tab-header-with-background-background-color: #ff5252;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-group.mat-background-warn,.mat-mdc-tab-nav-bar.mat-background-warn{--mat-mdc-tab-header-with-background-background-color: #c40000;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-header-pagination-chevron{border-color:var(--mdc-theme-on-surface, #000)}.mat-mdc-tab-header .mdc-tab{height:48px}.mat-mdc-checkbox .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-checkbox .mat-ripple-element{background-color:#0000001a}.mat-mdc-checkbox .mdc-checkbox__ripple{background:#000}.mat-mdc-checkbox.mat-primary{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #1e31eb;--mdc-checkbox-selected-hover-icon-color: #1e31eb;--mdc-checkbox-selected-icon-color: #1e31eb;--mdc-checkbox-selected-pressed-icon-color: #1e31eb;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#1e31eb1a}.mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#1e31eb}.mat-mdc-checkbox.mat-accent{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff5252;--mdc-checkbox-selected-hover-icon-color: #ff5252;--mdc-checkbox-selected-icon-color: #ff5252;--mdc-checkbox-selected-pressed-icon-color: #ff5252;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#ff52521a}.mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#ff5252}.mat-mdc-checkbox.mat-warn{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #c40000;--mdc-checkbox-selected-hover-icon-color: #c40000;--mdc-checkbox-selected-icon-color: #c40000;--mdc-checkbox-selected-pressed-icon-color: #c40000;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#c400001a}.mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#c40000}.mat-mdc-checkbox-disabled label{color:#00000061}.mat-mdc-checkbox .mdc-checkbox{padding:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);margin:calc((var(--mdc-checkbox-touch-target-size, 40px) - 40px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__background{top:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);left:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control{top:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);right:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);left:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);width:var(--mdc-checkbox-touch-target-size, 40px);height:var(--mdc-checkbox-touch-target-size, 40px)}.mat-mdc-button.mat-unthemed{--mdc-text-button-label-text-color: #000}.mat-mdc-button.mat-primary{--mdc-text-button-label-text-color: #1e31eb}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: #ff5252}.mat-mdc-button.mat-warn{--mdc-text-button-label-text-color: #c40000}.mat-mdc-button[disabled][disabled]{--mdc-text-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-text-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-unelevated-button.mat-unthemed{--mdc-filled-button-container-color: #fff;--mdc-filled-button-label-text-color: #000}.mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color: #1e31eb;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color: #ff5252;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color: #c40000;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button[disabled][disabled]{--mdc-filled-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-button-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-raised-button.mat-unthemed{--mdc-protected-button-container-color: #fff;--mdc-protected-button-label-text-color: #000}.mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color: #1e31eb;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color: #ff5252;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color: #c40000;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button[disabled][disabled]{--mdc-protected-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-elevation: 0}.mat-mdc-outlined-button{--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-unthemed{--mdc-outlined-button-label-text-color: #000}.mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color: #1e31eb}.mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color: #ff5252}.mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color: #c40000}.mat-mdc-outlined-button[disabled][disabled]{--mdc-outlined-button-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-button-disabled-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button.mat-primary,.mat-mdc-outlined-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #1e31eb;--mat-mdc-button-ripple-color: rgba(30, 49, 235, .1)}.mat-mdc-button.mat-accent,.mat-mdc-outlined-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff5252;--mat-mdc-button-ripple-color: rgba(255, 82, 82, .1)}.mat-mdc-button.mat-warn,.mat-mdc-outlined-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #c40000;--mat-mdc-button-ripple-color: rgba(196, 0, 0, .1)}.mat-mdc-raised-button,.mat-mdc-unelevated-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button.mat-primary,.mat-mdc-unelevated-button.mat-primary,.mat-mdc-raised-button.mat-accent,.mat-mdc-unelevated-button.mat-accent,.mat-mdc-raised-button.mat-warn,.mat-mdc-unelevated-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-button.mat-mdc-button-base,.mat-mdc-raised-button.mat-mdc-button-base,.mat-mdc-unelevated-button.mat-mdc-button-base,.mat-mdc-outlined-button.mat-mdc-button-base{height:36px}.mat-mdc-icon-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #1e31eb;--mat-mdc-button-ripple-color: rgba(30, 49, 235, .1)}.mat-mdc-icon-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff5252;--mat-mdc-button-ripple-color: rgba(255, 82, 82, .1)}.mat-mdc-icon-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #c40000;--mat-mdc-button-ripple-color: rgba(196, 0, 0, .1)}.mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color: #1e31eb}.mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color: #ff5252}.mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color: #c40000}.mat-mdc-icon-button[disabled][disabled]{--mdc-icon-button-icon-color: rgba(0, 0, 0, .38);--mdc-icon-button-disabled-icon-color: rgba(0, 0, 0, .38)}.mat-mdc-icon-button.mat-mdc-button-base{width:48px;height:48px;padding:12px}.mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:4px}.mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%,-50%)}.mat-mdc-fab,.mat-mdc-mini-fab{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-fab:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary,.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent,.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-fab.mat-unthemed,.mat-mdc-mini-fab.mat-unthemed{--mdc-fab-container-color: #fff;--mdc-fab-icon-color: #000;--mat-mdc-fab-color: #000}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary{--mdc-fab-container-color: #1e31eb;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent{--mdc-fab-container-color: #ff5252;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mdc-fab-container-color: #c40000;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab[disabled][disabled],.mat-mdc-mini-fab[disabled][disabled]{--mdc-fab-container-color: rgba(0, 0, 0, .12);--mdc-fab-icon-color: rgba(0, 0, 0, .38);--mat-mdc-fab-color: rgba(0, 0, 0, .38)}.mat-mdc-snack-bar-container{--mat-mdc-snack-bar-button-color: #ff5252;--mdc-snackbar-container-color: #333333;--mdc-snackbar-supporting-text-color: rgba(255, 255, 255, .87)}.mdc-data-table{background-color:var(--mdc-theme-surface, #fff);border-color:#0000001f}.mdc-data-table__row{background-color:inherit}.mdc-data-table__header-cell{background-color:var(--mdc-theme-surface, #fff)}.mdc-data-table__row--selected{background-color:#1e31eb0a}.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__leading,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__notch,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__trailing{border-color:#0000001f}.mdc-data-table__cell,.mdc-data-table__header-cell{border-bottom-color:#0000001f}.mdc-data-table__pagination{border-top-color:#0000001f}.mdc-data-table__row:not(.mdc-data-table__row--selected):hover{background-color:#0000000a}.mdc-data-table__header-cell,.mdc-data-table__pagination-total,.mdc-data-table__pagination-rows-per-page-label,.mdc-data-table__cell{color:#000000de}.mat-mdc-table{background:white}.mat-mdc-table .mdc-data-table__row{height:52px}.mat-mdc-table .mdc-data-table__pagination{min-height:52px}.mat-mdc-table .mdc-data-table__header-row{height:56px}.mat-mdc-progress-spinner{--mdc-circular-progress-active-indicator-color: #1e31eb}.mat-mdc-progress-spinner.mat-accent{--mdc-circular-progress-active-indicator-color: #ff5252}.mat-mdc-progress-spinner.mat-warn{--mdc-circular-progress-active-indicator-color: #c40000}.mat-badge{position:relative}.mat-badge.mat-badge{overflow:visible}.mat-badge-hidden .mat-badge-content{display:none}.mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform .2s ease-in-out;transform:scale(.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none}.ng-animate-disabled .mat-badge-content,.mat-badge-content._mat-animation-noopable{transition:none}.mat-badge-content.mat-badge-active{transform:none}.mat-badge-small .mat-badge-content{width:16px;height:16px;line-height:16px}.mat-badge-small.mat-badge-above .mat-badge-content{top:-8px}.mat-badge-small.mat-badge-below .mat-badge-content{bottom:-8px}.mat-badge-small.mat-badge-before .mat-badge-content{left:-16px}[dir=rtl] .mat-badge-small.mat-badge-before .mat-badge-content{left:auto;right:-16px}.mat-badge-small.mat-badge-after .mat-badge-content{right:-16px}[dir=rtl] .mat-badge-small.mat-badge-after .mat-badge-content{right:auto;left:-16px}.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-8px}.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-8px}.mat-badge-medium .mat-badge-content{width:22px;height:22px;line-height:22px}.mat-badge-medium.mat-badge-above .mat-badge-content{top:-11px}.mat-badge-medium.mat-badge-below .mat-badge-content{bottom:-11px}.mat-badge-medium.mat-badge-before .mat-badge-content{left:-22px}[dir=rtl] .mat-badge-medium.mat-badge-before .mat-badge-content{left:auto;right:-22px}.mat-badge-medium.mat-badge-after .mat-badge-content{right:-22px}[dir=rtl] .mat-badge-medium.mat-badge-after .mat-badge-content{right:auto;left:-22px}.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-11px}.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-11px}.mat-badge-large .mat-badge-content{width:28px;height:28px;line-height:28px}.mat-badge-large.mat-badge-above .mat-badge-content{top:-14px}.mat-badge-large.mat-badge-below .mat-badge-content{bottom:-14px}.mat-badge-large.mat-badge-before .mat-badge-content{left:-28px}[dir=rtl] .mat-badge-large.mat-badge-before .mat-badge-content{left:auto;right:-28px}.mat-badge-large.mat-badge-after .mat-badge-content{right:-28px}[dir=rtl] .mat-badge-large.mat-badge-after .mat-badge-content{right:auto;left:-28px}.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-14px}.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-14px}.mat-badge-content{color:#fff;background:#1e31eb}.cdk-high-contrast-active .mat-badge-content{outline:solid 1px;border-radius:0}.mat-badge-accent .mat-badge-content{background:#ff5252;color:#000000de}.mat-badge-warn .mat-badge-content{color:#fff;background:#c40000}.mat-badge-disabled .mat-badge-content{background:#b9b9b9;color:#00000061}.mat-bottom-sheet-container{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f;background:white;color:#000000de}.mat-button-toggle-standalone:not([class*=mat-elevation-z]),.mat-button-toggle-group:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard:not([class*=mat-elevation-z]),.mat-button-toggle-group-appearance-standard:not([class*=mat-elevation-z]){box-shadow:none}.mat-button-toggle{color:#00000061}.mat-button-toggle .mat-button-toggle-focus-overlay{background-color:#0000001f}.mat-button-toggle-appearance-standard{color:#000000de;background:white}.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{background-color:#000}.mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:solid 1px #e0e0e0}[dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:solid 1px #e0e0e0}.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:none;border-top:solid 1px #e0e0e0}.mat-button-toggle-checked{background-color:#e0e0e0;color:#0000008a}.mat-button-toggle-checked.mat-button-toggle-appearance-standard{color:#000000de}.mat-button-toggle-disabled{color:#00000042;background-color:#eee}.mat-button-toggle-disabled.mat-button-toggle-appearance-standard{background:white}.mat-button-toggle-disabled.mat-button-toggle-checked{background-color:#bdbdbd}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border:solid 1px #e0e0e0}.mat-button-toggle-appearance-standard .mat-button-toggle-label-content{line-height:48px}.mat-calendar-arrow{fill:#0000008a}.mat-datepicker-toggle,.mat-datepicker-content .mat-calendar-next-button,.mat-datepicker-content .mat-calendar-previous-button{color:#0000008a}.mat-calendar-table-header-divider:after{background:rgba(0,0,0,.12)}.mat-calendar-table-header,.mat-calendar-body-label{color:#0000008a}.mat-calendar-body-cell-content,.mat-date-range-input-separator{color:#000000de;border-color:transparent}.mat-calendar-body-disabled>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){color:#00000061}.mat-form-field-disabled .mat-date-range-input-separator{color:#00000061}.mat-calendar-body-in-preview{color:#0000003d}.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#00000061}.mat-calendar-body-disabled>.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#0000002e}.mat-calendar-body-in-range:before{background:rgba(30,49,235,.2)}.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-calendar-body-comparison-bridge-start:before,[dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(30,49,235,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-calendar-body-comparison-bridge-end:before,[dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(30,49,235,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-calendar-body-selected{background-color:#1e31eb;color:#fff}.mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#1e31eb66}.mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#1e31eb4d}@media (hover: hover){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#1e31eb4d}}.mat-datepicker-content{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f;background-color:#fff;color:#000000de}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range:before{background:rgba(255,82,82,.2)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-start:before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(255,82,82,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-end:before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(255,82,82,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-accent .mat-calendar-body-selected{background-color:#ff5252;color:#000000de}.mat-datepicker-content.mat-accent .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#ff525266}.mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #000000de}.mat-datepicker-content.mat-accent .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#ff52524d}@media (hover: hover){.mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#ff52524d}}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range:before{background:rgba(196,0,0,.2)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-start:before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(196,0,0,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-end:before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(196,0,0,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-warn .mat-calendar-body-selected{background-color:#c40000;color:#fff}.mat-datepicker-content.mat-warn .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#c4000066}.mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#c400004d}@media (hover: hover){.mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#c400004d}}.mat-datepicker-content-touch{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-datepicker-toggle-active{color:#1e31eb}.mat-datepicker-toggle-active.mat-accent{color:#ff5252}.mat-datepicker-toggle-active.mat-warn{color:#c40000}.mat-date-range-input-inner[disabled]{color:#00000061}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{width:40px;height:40px;padding:8px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:0}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:40px;left:50%;width:40px;transform:translate(-50%,-50%)}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target{display:none}.mat-divider{border-top-color:#0000001f}.mat-divider-vertical{border-right-color:#0000001f}.mat-expansion-panel{background:white;color:#000000de}.mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-action-row{border-top-color:#0000001f}.mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled=true]),.mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled=true]),.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true]){background:rgba(0,0,0,.04)}@media (hover: none){.mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover{background:white}}.mat-expansion-panel-header-title{color:#000000de}.mat-expansion-panel-header-description,.mat-expansion-indicator:after{color:#0000008a}.mat-expansion-panel-header[aria-disabled=true]{color:#00000042}.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description{color:inherit}.mat-expansion-panel-header{height:48px}.mat-expansion-panel-header.mat-expanded{height:64px}.mat-icon.mat-primary{color:#1e31eb}.mat-icon.mat-accent{color:#ff5252}.mat-icon.mat-warn{color:#c40000}.mat-drawer-container{background-color:#fafafa;color:#000000de}.mat-drawer{background-color:#fff;color:#000000de}.mat-drawer.mat-drawer-push{background-color:#fff}.mat-drawer:not(.mat-drawer-side){box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-drawer-side{border-right:solid 1px rgba(0,0,0,.12)}.mat-drawer-side.mat-drawer-end,[dir=rtl] .mat-drawer-side{border-left:solid 1px rgba(0,0,0,.12);border-right:none}[dir=rtl] .mat-drawer-side.mat-drawer-end{border-left:none;border-right:solid 1px rgba(0,0,0,.12)}.mat-drawer-backdrop.mat-drawer-shown{background-color:#0009}.mat-step-header.cdk-keyboard-focused,.mat-step-header.cdk-program-focused,.mat-step-header:hover:not([aria-disabled]),.mat-step-header:hover[aria-disabled=false]{background-color:#0000000a}.mat-step-header:hover[aria-disabled=true]{cursor:default}@media (hover: none){.mat-step-header:hover{background:none}}.mat-step-header .mat-step-label,.mat-step-header .mat-step-optional{color:#0000008a}.mat-step-header .mat-step-icon{background-color:#0000008a;color:#fff}.mat-step-header .mat-step-icon-selected,.mat-step-header .mat-step-icon-state-done,.mat-step-header .mat-step-icon-state-edit{background-color:#1e31eb;color:#fff}.mat-step-header.mat-accent .mat-step-icon{color:#000000de}.mat-step-header.mat-accent .mat-step-icon-selected,.mat-step-header.mat-accent .mat-step-icon-state-done,.mat-step-header.mat-accent .mat-step-icon-state-edit{background-color:#ff5252;color:#000000de}.mat-step-header.mat-warn .mat-step-icon{color:#fff}.mat-step-header.mat-warn .mat-step-icon-selected,.mat-step-header.mat-warn .mat-step-icon-state-done,.mat-step-header.mat-warn .mat-step-icon-state-edit{background-color:#c40000;color:#fff}.mat-step-header .mat-step-icon-state-error{background-color:transparent;color:#c40000}.mat-step-header .mat-step-label.mat-step-label-active{color:#000000de}.mat-step-header .mat-step-label.mat-step-label-error{color:#c40000}.mat-stepper-horizontal,.mat-stepper-vertical{background-color:#fff}.mat-stepper-vertical-line:before{border-left-color:#0000001f}.mat-horizontal-stepper-header:before,.mat-horizontal-stepper-header:after,.mat-stepper-horizontal-line{border-top-color:#0000001f}.mat-horizontal-stepper-header{height:72px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header,.mat-vertical-stepper-header{padding:24px}.mat-stepper-vertical-line:before{top:-16px;bottom:-16px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:after,.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:before{top:36px}.mat-stepper-label-position-bottom .mat-stepper-horizontal-line{top:36px}.mat-sort-header-arrow{color:#757575}.mat-toolbar{background:whitesmoke;color:#000000de}.mat-toolbar.mat-primary{background:#1e31eb;color:#fff}.mat-toolbar.mat-accent{background:#ff5252;color:#000000de}.mat-toolbar.mat-warn{background:#c40000;color:#fff}.mat-toolbar .mat-form-field-underline,.mat-toolbar .mat-form-field-ripple,.mat-toolbar .mat-focused .mat-form-field-ripple{background-color:currentColor}.mat-toolbar .mat-form-field-label,.mat-toolbar .mat-focused .mat-form-field-label,.mat-toolbar .mat-select-value,.mat-toolbar .mat-select-arrow,.mat-toolbar .mat-form-field.mat-focused .mat-select-arrow{color:inherit}.mat-toolbar .mat-input-element{caret-color:currentColor}.mat-toolbar-multiple-rows{min-height:64px}.mat-toolbar-row,.mat-toolbar-single-row{height:64px}@media (max-width: 599px){.mat-toolbar-multiple-rows{min-height:56px}.mat-toolbar-row,.mat-toolbar-single-row{height:56px}}.mat-tree{background:white}.mat-tree-node,.mat-nested-tree-node{color:#000000de}.mat-tree-node{min-height:48px}.mat-ripple-element{background-color:#0000001a}.mat-mdc-option{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-option:hover:not(.mdc-list-item--disabled),.mat-mdc-option:focus:not(.mdc-list-item--disabled),.mat-mdc-option.mat-mdc-option-active,.mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple):not(.mdc-list-item--disabled){background:rgba(0,0,0,.04)}.mat-primary .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-primary, #1e31eb)}.mat-accent .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-secondary, #ff5252)}.mat-warn .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-error, #c40000)}.mat-mdc-optgroup-label{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-pseudo-checkbox-full{color:#0000008a}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{color:#b0b0b0}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#1e31eb}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#1e31eb}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff5252}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff5252}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff5252}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff5252}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#c40000}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#c40000}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#b0b0b0}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#b0b0b0}.mat-app-background{background-color:#fafafa;color:#000000de}.mat-elevation-z0,.mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.mat-elevation-z1,.mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.mat-elevation-z2,.mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-elevation-z3,.mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-elevation-z4,.mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.mat-elevation-z5,.mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.mat-elevation-z6,.mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.mat-elevation-z7,.mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.mat-elevation-z8,.mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mat-elevation-z9,.mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.mat-elevation-z10,.mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.mat-elevation-z11,.mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.mat-elevation-z12,.mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.mat-elevation-z13,.mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.mat-elevation-z14,.mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.mat-elevation-z15,.mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.mat-elevation-z16,.mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-elevation-z17,.mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.mat-elevation-z18,.mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.mat-elevation-z19,.mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.mat-elevation-z20,.mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.mat-elevation-z21,.mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.mat-elevation-z22,.mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.mat-elevation-z23,.mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.mat-elevation-z24,.mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-theme-loaded-marker{display:none}:host{--conf-gradient: linear-gradient(to right, #1E31EB, #693DDA);--conf-bg-page: #F9F9FA;--conf-radius: 10px;--conf-modal-radius: 10px;--conf-accent: #693DDA;--conf-accent-rgb: 105, 61, 218;--conf-primary: #1E31EB;--conf-primary-rgb: 30, 49, 235;--conf-step-selected: #643cda;--conf-step-edit: #3034e7;--conf-table-header-bg: #EBEBEB;--conf-search-bg: #EBEBEB;--conf-table-bg: #ffffff;--conf-card-bg: #ffffff;--conf-font-family: inherit;--conf-stepper-header-bg: var(--conf-bg-page);--conf-stepper-content-bg: var(--conf-bg-page);--conf-step-icon-edit-bg: var(--conf-step-edit);--conf-hint-btn-bg: #2563eb;--conf-hint-btn-hover-bg: #1d4ed8;--conf-btn-color: #ffffff;--conf-step-icon-bg: linear-gradient(.33turn, #BFBFBF, #606060);--conf-step-icon-color: #ffffff;--conf-step-connector-bg: #ebebeb;--conf-addbtn-bg: #ebebeb;--conf-input-bg: #ffffff;--conf-input-color: rgba(0, 0, 0, .87);--conf-tmwselect-bg: #ffffff;--conf-tmwselect-color: rgba(0, 0, 0, .87);font-family:var(--conf-font-family)}.dynamic-module-preview{--conf-gradient: linear-gradient(to right, #1E31EB, #693DDA);--conf-bg-page: #F9F9FA;--conf-radius: 10px;--conf-modal-radius: 10px;--conf-accent: #693DDA;--conf-accent-rgb: 105, 61, 218;--conf-primary: #1E31EB;--conf-primary-rgb: 30, 49, 235;--conf-step-selected: #643cda;--conf-step-edit: #3034e7;--conf-table-header-bg: #EBEBEB;--conf-search-bg: #EBEBEB;--conf-table-bg: #ffffff;--conf-card-bg: #ffffff;--conf-font-family: inherit;--conf-stepper-header-bg: var(--conf-bg-page);--conf-stepper-content-bg: var(--conf-bg-page);--conf-step-icon-edit-bg: var(--conf-step-edit);--conf-hint-btn-bg: #2563eb;--conf-hint-btn-hover-bg: #1d4ed8;--conf-btn-color: #ffffff;--conf-step-icon-bg: linear-gradient(.33turn, #BFBFBF, #606060);--conf-step-icon-color: #ffffff;--conf-step-connector-bg: #ebebeb;--conf-addbtn-bg: #ebebeb;--conf-input-bg: #ffffff;--conf-input-color: rgba(0, 0, 0, .87);--conf-tmwselect-bg: #ffffff;--conf-tmwselect-color: rgba(0, 0, 0, .87);--tmw-select-add-modal-bg: var(--conf-tmwselect-bg);--tmw-select-arrow-bg: initial;--tmw-select-arrow-border-radius: initial;--tmw-select-arrow-color: initial;--tmw-select-arrow-height: initial;--tmw-select-bg: var(--conf-tmwselect-bg);--tmw-select-border-color: initial;--tmw-select-border-color-hover: initial;--tmw-select-border-radius: initial;--tmw-select-border-width: initial;--tmw-select-clear-border-radius: initial;--tmw-select-clear-color: initial;--tmw-select-clear-color-bg: initial;--tmw-select-clear-height: initial;--tmw-select-disabled-bg: initial;--tmw-select-disabled-border-color: initial;--tmw-select-disabled-color: initial;--tmw-select-focus-border-color: initial;--tmw-select-focus-label-color: initial;--tmw-select-font-family: initial;--tmw-select-font-size-label: initial;--tmw-select-font-size-value: initial;--tmw-select-height: initial;--tmw-select-label-bg: var(--conf-tmwselect-bg);--tmw-select-label-color: var(--conf-tmwselect-color);--tmw-select-option-bg: var(--conf-tmwselect-bg);--tmw-select-option-check-color: initial;--tmw-select-option-color: var(--conf-tmwselect-color);--tmw-select-option-highlighted-bg: initial;--tmw-select-option-hover-bg: initial;--tmw-select-option-hover-color: initial;--tmw-select-option-selected-bg: initial;--tmw-select-option-selected-color: initial;--tmw-select-padding-x: initial;--tmw-select-panel-bg: var(--conf-tmwselect-bg);--tmw-select-panel-border-radius: initial;--tmw-select-panel-max-height: initial;--tmw-select-panel-shadow: initial;--tmw-select-panel-z-index: initial;--tmw-select-required-color: initial;--tmw-select-search-bg: var(--conf-tmwselect-bg);--tmw-select-search-color: var(--conf-tmwselect-color);--tmw-select-toolbar-bg: initial;--tmw-select-toolbar-border-color: initial;--tmw-select-toolbar-border-radius: initial;--tmw-select-toolbar-border-width: initial;--tmw-select-toolbar-btn-active-bg: initial;--tmw-select-toolbar-btn-bg: initial;--tmw-select-toolbar-btn-border-color: initial;--tmw-select-toolbar-btn-border-radius: initial;--tmw-select-toolbar-btn-border-width: initial;--tmw-select-toolbar-btn-color: initial;--tmw-select-toolbar-btn-disabled-opacity: initial;--tmw-select-toolbar-btn-hover-bg: initial;--tmw-select-toolbar-btn-margin-right: initial;--tmw-select-toolbar-btn-size: initial;--tmw-select-toolbar-gap: initial;--tmw-select-toolbar-icon-size: initial;--tmw-select-value-color: var(--conf-tmwselect-color);--tmw-table-accent-color: initial;--tmw-table-border-color: initial;--tmw-table-bulk-bar-bg: initial;--tmw-table-bulk-bar-color: initial;--tmw-table-cell-padding: initial;--tmw-table-grid-template: initial;--tmw-table-header-bg: initial;--tmw-table-header-border-width: initial;--tmw-table-header-color: initial;--tmw-table-header-font-family: initial;--tmw-table-header-font-size: initial;--tmw-table-outer-border-width: initial;--tmw-table-radius: initial;--tmw-table-row-bg: initial;--tmw-table-row-hover-bg: initial;--tmw-table-scrollbar-size: initial;--tmw-table-scrollbar-thumb-bg: initial;--tmw-table-scrollbar-thumb-border-color: initial;--tmw-table-scrollbar-thumb-border-width: initial;--tmw-table-scrollbar-thumb-hover-bg: initial;--tmw-table-scrollbar-thumb-radius: initial;--tmw-table-scrollbar-track-bg: initial;--tmw-table-scrollbar-track-radius: initial;--tmw-table-search-bg: initial;--tmw-table-search-border-color: initial;--tmw-table-search-color: initial;--tmw-table-toolbar-bg: initial;--tmw-table-toolbar-btn-bg: initial;--tmw-table-toolbar-btn-border-color: initial;--tmw-table-toolbar-btn-color: initial;--tmw-table-toolbar-btn-hover-bg: initial;--tmw-table-toolbar-btn-radius: initial;--tmw-table-toolbar-radius: initial;--tmw-attachments-backdrop-bg: initial;--tmw-attachments-btn-border-radius: initial;--tmw-attachments-btn-border-width: initial;--tmw-attachments-btn-danger-bg: initial;--tmw-attachments-btn-danger-color: initial;--tmw-attachments-btn-danger-hover-bg: initial;--tmw-attachments-btn-default-bg: initial;--tmw-attachments-btn-default-color: initial;--tmw-attachments-btn-default-hover-bg: initial;--tmw-attachments-btn-disabled-opacity: initial;--tmw-attachments-btn-font-size: initial;--tmw-attachments-btn-padding-x: initial;--tmw-attachments-btn-padding-y: initial;--tmw-attachments-btn-primary-bg: initial;--tmw-attachments-btn-primary-color: initial;--tmw-attachments-btn-primary-hover-bg: initial;--tmw-attachments-card-bg: initial;--tmw-attachments-card-border-color: initial;--tmw-attachments-card-border-radius: initial;--tmw-attachments-card-border-width: initial;--tmw-attachments-card-padding: initial;--tmw-attachments-card-padding-mobile: initial;--tmw-attachments-card-shadow: initial;--tmw-attachments-dropzone-active-bg: initial;--tmw-attachments-dropzone-active-border-color: initial;--tmw-attachments-dropzone-bg: initial;--tmw-attachments-dropzone-border-color: initial;--tmw-attachments-dropzone-border-radius: initial;--tmw-attachments-dropzone-border-width: initial;--tmw-attachments-dropzone-gap: initial;--tmw-attachments-dropzone-icon-color: initial;--tmw-attachments-dropzone-icon-size: initial;--tmw-attachments-dropzone-padding: initial;--tmw-attachments-dropzone-padding-mobile: initial;--tmw-attachments-dropzone-text-color: initial;--tmw-attachments-font-family: initial;--tmw-attachments-header-margin-bottom: initial;--tmw-attachments-header-title-color: initial;--tmw-attachments-header-title-font-size: initial;--tmw-attachments-header-title-font-weight: initial;--tmw-attachments-icon-size: initial;--tmw-attachments-input-bg: initial;--tmw-attachments-input-border-color: initial;--tmw-attachments-input-border-radius: initial;--tmw-attachments-input-border-width: initial;--tmw-attachments-input-color: initial;--tmw-attachments-label-color: initial;--tmw-attachments-menu-bg: initial;--tmw-attachments-menu-border-color: initial;--tmw-attachments-menu-border-radius: initial;--tmw-attachments-menu-item-color: initial;--tmw-attachments-menu-item-hover-bg: initial;--tmw-attachments-menu-shadow: initial;--tmw-attachments-modal-bg: initial;--tmw-attachments-modal-border-radius: initial;--tmw-attachments-modal-max-width: initial;--tmw-attachments-modal-padding: initial;--tmw-attachments-modal-padding-mobile: initial;--tmw-attachments-modal-shadow: initial;--tmw-attachments-modal-z-index: initial;--tmw-attachments-thumb-border-radius: initial;--tmw-attachments-thumb-icon-color: initial;--tmw-attachments-thumb-size: initial;font-family:initial}:host-context([data-dm-styles-penetration=si]) .dynamic-module-preview{--tmw-select-add-modal-bg: unset;--tmw-select-arrow-bg: unset;--tmw-select-arrow-border-radius: unset;--tmw-select-arrow-color: unset;--tmw-select-arrow-height: unset;--tmw-select-bg: unset;--tmw-select-border-color: unset;--tmw-select-border-color-hover: unset;--tmw-select-border-radius: unset;--tmw-select-border-width: unset;--tmw-select-clear-border-radius: unset;--tmw-select-clear-color: unset;--tmw-select-clear-color-bg: unset;--tmw-select-clear-height: unset;--tmw-select-disabled-bg: unset;--tmw-select-disabled-border-color: unset;--tmw-select-disabled-color: unset;--tmw-select-focus-border-color: unset;--tmw-select-focus-label-color: unset;--tmw-select-font-family: unset;--tmw-select-font-size-label: unset;--tmw-select-font-size-value: unset;--tmw-select-height: unset;--tmw-select-label-bg: unset;--tmw-select-label-color: unset;--tmw-select-option-bg: unset;--tmw-select-option-check-color: unset;--tmw-select-option-color: unset;--tmw-select-option-highlighted-bg: unset;--tmw-select-option-hover-bg: unset;--tmw-select-option-hover-color: unset;--tmw-select-option-selected-bg: unset;--tmw-select-option-selected-color: unset;--tmw-select-padding-x: unset;--tmw-select-panel-bg: unset;--tmw-select-panel-border-radius: unset;--tmw-select-panel-max-height: unset;--tmw-select-panel-shadow: unset;--tmw-select-panel-z-index: unset;--tmw-select-required-color: unset;--tmw-select-search-bg: unset;--tmw-select-search-color: unset;--tmw-select-toolbar-bg: unset;--tmw-select-toolbar-border-color: unset;--tmw-select-toolbar-border-radius: unset;--tmw-select-toolbar-border-width: unset;--tmw-select-toolbar-btn-active-bg: unset;--tmw-select-toolbar-btn-bg: unset;--tmw-select-toolbar-btn-border-color: unset;--tmw-select-toolbar-btn-border-radius: unset;--tmw-select-toolbar-btn-border-width: unset;--tmw-select-toolbar-btn-color: unset;--tmw-select-toolbar-btn-disabled-opacity: unset;--tmw-select-toolbar-btn-hover-bg: unset;--tmw-select-toolbar-btn-margin-right: unset;--tmw-select-toolbar-btn-size: unset;--tmw-select-toolbar-gap: unset;--tmw-select-toolbar-icon-size: unset;--tmw-select-value-color: unset;--tmw-table-accent-color: unset;--tmw-table-border-color: unset;--tmw-table-bulk-bar-bg: unset;--tmw-table-bulk-bar-color: unset;--tmw-table-cell-padding: unset;--tmw-table-grid-template: unset;--tmw-table-header-bg: unset;--tmw-table-header-border-width: unset;--tmw-table-header-color: unset;--tmw-table-header-font-family: unset;--tmw-table-header-font-size: unset;--tmw-table-outer-border-width: unset;--tmw-table-radius: unset;--tmw-table-row-bg: unset;--tmw-table-row-hover-bg: unset;--tmw-table-scrollbar-size: unset;--tmw-table-scrollbar-thumb-bg: unset;--tmw-table-scrollbar-thumb-border-color: unset;--tmw-table-scrollbar-thumb-border-width: unset;--tmw-table-scrollbar-thumb-hover-bg: unset;--tmw-table-scrollbar-thumb-radius: unset;--tmw-table-scrollbar-track-bg: unset;--tmw-table-scrollbar-track-radius: unset;--tmw-table-search-bg: unset;--tmw-table-search-border-color: unset;--tmw-table-search-color: unset;--tmw-table-toolbar-bg: unset;--tmw-table-toolbar-btn-bg: unset;--tmw-table-toolbar-btn-border-color: unset;--tmw-table-toolbar-btn-color: unset;--tmw-table-toolbar-btn-hover-bg: unset;--tmw-table-toolbar-btn-radius: unset;--tmw-table-toolbar-radius: unset;--tmw-attachments-backdrop-bg: unset;--tmw-attachments-btn-border-radius: unset;--tmw-attachments-btn-border-width: unset;--tmw-attachments-btn-danger-bg: unset;--tmw-attachments-btn-danger-color: unset;--tmw-attachments-btn-danger-hover-bg: unset;--tmw-attachments-btn-default-bg: unset;--tmw-attachments-btn-default-color: unset;--tmw-attachments-btn-default-hover-bg: unset;--tmw-attachments-btn-disabled-opacity: unset;--tmw-attachments-btn-font-size: unset;--tmw-attachments-btn-padding-x: unset;--tmw-attachments-btn-padding-y: unset;--tmw-attachments-btn-primary-bg: unset;--tmw-attachments-btn-primary-color: unset;--tmw-attachments-btn-primary-hover-bg: unset;--tmw-attachments-card-bg: unset;--tmw-attachments-card-border-color: unset;--tmw-attachments-card-border-radius: unset;--tmw-attachments-card-border-width: unset;--tmw-attachments-card-padding: unset;--tmw-attachments-card-padding-mobile: unset;--tmw-attachments-card-shadow: unset;--tmw-attachments-dropzone-active-bg: unset;--tmw-attachments-dropzone-active-border-color: unset;--tmw-attachments-dropzone-bg: unset;--tmw-attachments-dropzone-border-color: unset;--tmw-attachments-dropzone-border-radius: unset;--tmw-attachments-dropzone-border-width: unset;--tmw-attachments-dropzone-gap: unset;--tmw-attachments-dropzone-icon-color: unset;--tmw-attachments-dropzone-icon-size: unset;--tmw-attachments-dropzone-padding: unset;--tmw-attachments-dropzone-padding-mobile: unset;--tmw-attachments-dropzone-text-color: unset;--tmw-attachments-font-family: unset;--tmw-attachments-header-margin-bottom: unset;--tmw-attachments-header-title-color: unset;--tmw-attachments-header-title-font-size: unset;--tmw-attachments-header-title-font-weight: unset;--tmw-attachments-icon-size: unset;--tmw-attachments-input-bg: unset;--tmw-attachments-input-border-color: unset;--tmw-attachments-input-border-radius: unset;--tmw-attachments-input-border-width: unset;--tmw-attachments-input-color: unset;--tmw-attachments-label-color: unset;--tmw-attachments-menu-bg: unset;--tmw-attachments-menu-border-color: unset;--tmw-attachments-menu-border-radius: unset;--tmw-attachments-menu-item-color: unset;--tmw-attachments-menu-item-hover-bg: unset;--tmw-attachments-menu-shadow: unset;--tmw-attachments-modal-bg: unset;--tmw-attachments-modal-border-radius: unset;--tmw-attachments-modal-max-width: unset;--tmw-attachments-modal-padding: unset;--tmw-attachments-modal-padding-mobile: unset;--tmw-attachments-modal-shadow: unset;--tmw-attachments-modal-z-index: unset;--tmw-attachments-thumb-border-radius: unset;--tmw-attachments-thumb-icon-color: unset;--tmw-attachments-thumb-size: unset;font-family:unset}.importDialog .mat-card-header-text{font-size:1.3em;font-weight:700}.importDialog .input-file-btn{color:#6f79fb}.importDialog .input-file-btn::-webkit-file-upload-button,.importDialog .input-file-btn::file-selector-button{padding:7px 40px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-radius);border:1px solid #1E31EB}.importDialog .input-file-btn:before{content:\"Select some files\";display:inline-block;background:linear-gradient(top,#f9f9f9,#e3e3e3);border:1px solid #999;border-radius:3px;padding:5px 8px;outline:none;white-space:nowrap;-webkit-user-select:none;cursor:pointer;text-shadow:1px 1px #fff;font-weight:700;font-size:10pt}.importDialog .input-file-btn:hover:before,.importDialog .input-file-btn::file-selector-button:hover:before{border-color:#000}.importDialog .input-file-btn:active:before,.importDialog .input-file-btn::file-selector-button:active:before{background:-webkit-linear-gradient(top,#e3e3e3,#f9f9f9)}.importDialog .button-back{border-radius:var(--conf-radius);padding:7px 40px;font-size:14px;background:#DBDBDC;color:#000}.configurator-accordion ::ng-deep .configurator-panel{box-shadow:none!important;background:transparent!important;border-radius:0!important}.configurator-accordion ::ng-deep .configurator-panel.mat-expanded,.configurator-accordion ::ng-deep .configurator-panel{margin:0!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header{height:36px!important;min-height:36px!important;padding:0 12px;margin-top:14px;border-radius:6px!important;border-left:3px solid var(--conf-accent);background:linear-gradient(to right,rgba(var(--conf-primary-rgb),.06),rgba(var(--conf-accent-rgb),.02))!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header:hover,.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header:focus{background:linear-gradient(to right,rgba(var(--conf-primary-rgb),.11),rgba(var(--conf-accent-rgb),.05))!important}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header .mat-panel-title{font-size:.72rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:#555}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-header .mat-expansion-indicator:after{color:var(--conf-accent);border-width:0 1.5px 1.5px 0;padding:2.5px}.configurator-accordion ::ng-deep .configurator-panel .mat-expansion-panel-body{padding:12px 0 0}.configurator-accordion ::ng-deep .configurator-panel .firstRow{margin-top:0}.grafica-row{margin-bottom:8px}.grafica-row .grafica-field-label{font-size:.85rem;color:#555;margin-bottom:6px}.grafica-row tmw-attachments ::ng-deep .tmw-attachments-add-link-btn{display:none!important}.grafica-ai-separator{border:none;border-top:1px solid #e0e0e0;margin:10px 0 4px}.form-grafica-ai-row{display:flex;align-items:center;gap:8px;margin-top:4px;margin-bottom:8px;flex-wrap:wrap}.btn-form-graphic-suggest{background:var(--conf-gradient);color:var(--conf-btn-color)!important;font-size:12px;height:30px;min-width:unset;padding:0 12px;border:none!important;border-radius:6px;display:inline-flex;align-items:center;gap:4px}.btn-form-graphic-suggest mat-icon{font-size:16px;width:16px;height:16px}.btn-form-graphic-suggest[disabled]{opacity:.7;cursor:not-allowed}.form-hint-input-group{display:flex;align-items:center;gap:6px;flex:1;min-width:220px}.form-graphic-scope-select{height:30px;padding:0 6px;border:1px solid #ccc;border-radius:4px;font-size:12px;background:#fff;cursor:pointer;outline:none;flex-shrink:0}.form-graphic-scope-select:focus{border-color:var(--conf-accent)}.btn-hint-randomize{width:28px;height:28px;border:none;border-radius:5px;background:var(--conf-hint-btn-bg);color:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s}.btn-hint-randomize mat-icon{font-size:16px;width:16px;height:16px}.btn-hint-randomize:hover{background:var(--conf-hint-btn-hover-bg)}.btn-generate-bg{width:28px;height:28px;border:1px solid var(--conf-hint-btn-bg);border-radius:5px;background:transparent;color:var(--conf-hint-btn-bg);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s,color .15s,border-color .15s}.btn-generate-bg mat-icon{font-size:16px;width:16px;height:16px}.btn-generate-bg:hover{background:var(--conf-hint-btn-bg);color:#fff}.btn-generate-bg.active{background:var(--conf-gradient);border-color:transparent;color:var(--conf-btn-color, #fff)}.form-graphic-hint-input{flex:1;height:30px;padding:0 8px;border:1px solid #ccc;border-radius:4px;font-size:12px;outline:none}.form-graphic-hint-input:focus{border-color:var(--conf-accent)}.btn-form-graphic-send{background:var(--conf-gradient);color:var(--conf-btn-color)!important;border:none;border-radius:4px;width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.btn-form-graphic-send mat-icon{font-size:16px;width:16px;height:16px}.btn-form-graphic-send:hover{opacity:.9}.row.title{margin:0;justify-content:flex-start}.row.title mat-icon.add{background:#fff;color:#7b7b7b;height:40px;width:40px;border-radius:var(--conf-radius);font-size:27px;padding:7px 6px 6px 7px;margin:0 7px 0 0;cursor:pointer}.row.title mat-icon.close{background:#7B7B7B;color:#fff;height:40px;width:40px;border-radius:var(--conf-radius);font-size:27px;padding:7px 6px 6px 7px;margin:0 7px 0 0;cursor:pointer}.row.title .header-title-standard{display:flex;align-items:center;font-size:19px;font-weight:700;color:gray}.firstRow{margin-top:20px}::ng-deep mat-form-field{width:100%}:host ::ng-deep .mat-mdc-text-field-wrapper{background:var(--conf-input-bg, #ffffff)!important}:host ::ng-deep .mat-mdc-form-field .mat-mdc-input-element,:host ::ng-deep .mat-mdc-form-field .mdc-text-field__input,:host ::ng-deep .mat-mdc-form-field textarea{color:var(--conf-input-color, rgba(0, 0, 0, .87))!important}hr{border:none;height:50px;box-shadow:0 20px 20px -20px #dfdfdf}.inserted{margin-top:45px}::ng-deep .mat-form-field-appearance-legacy .mat-form-field-underline{display:none}::ng-deep .mat-form-field-flex .mat-form-field-infix input{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0 15px 20px!important;margin-top:10px;background-color:#fff}::ng-deep .mat-form-field-flex .mat-form-field-infix input:focus{border:1px solid #1a39ed}::ng-deep .mat-form-field-flex .mat-form-field-infix{padding:0;margin:0}::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=minute],::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=hour]{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0!important;background-color:#fff}::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=minute]:focus,::ng-deep .mat-form-field-flex .mat-form-field-infix input[formcontrolname=hour]:focus{border:1px solid #1a39ed}::ng-deep .ngx-mat-timepicker form .table .tbody tr td.spacer{vertical-align:middle!important}.textarea ::ng-deep .mat-form-field-wrapper{border:1px solid #e7e7e9;border-radius:10px;padding:15px 0 15px 20px!important}.textarea ::ng-deep .mat-form-field-wrapper .mat-form-field-flex{border:none;padding:0;margin:0;height:0}::ng-deep .nameSection{width:99%}::ng-deep .mat-select-arrow{color:transparent}::ng-deep .mat-form-field.mat-focused.mat-primary .mat-select-arrow{color:transparent}::ng-deep .mat-select-value-text{font-size:15px}::ng-deep .cdk-overlay-pane{transform:none!important}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap{margin:37px 0 0 -18px}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap .ng-trigger{border-radius:10px}::ng-deep .cdk-overlay-pane .mat-select-panel-wrap .ng-trigger mat-option{border-radius:10px}::ng-deep .mat-autocomplete.visible{margin:0!important}::ng-deep .mat-select-panel{box-shadow:0 0 2px #0003,0 0 2px #00000024,0 0 2px #0000001f!important;min-width:calc(100% + 19px)!important}.stepper-header-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.section-list{list-style:none;padding:0;display:flex;flex-wrap:wrap;flex-direction:row}.section-list li{margin-top:36px}.section-list li .sectionInsert{border:1px solid #9171E3;padding:14px 17px;border-radius:10px;margin-right:10px;font-size:16px}.section-list li .sectionInsert mat-icon{vertical-align:middle;font-size:20px!important;height:20px!important;width:40px!important;color:#c40101!important;cursor:pointer}.section-list li .sectionInsert mat-icon.icon-black{color:#000!important}.danger-color{color:#c40101}::ng-deep .mat-elevation-z8{box-shadow:none}::ng-deep mat-horizontal-stepper.outerForm{background-color:var(--conf-bg-page)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:0 20%;background-color:var(--conf-stepper-header-bg)!important;box-shadow:0 20px 20px -20px #dfdfdf}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label{white-space:normal;margin:7px 0 0;min-width:100px;overflow:visible;text-align:center}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container mat-step-header:hover{background-color:transparent}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header{display:flex;flex-direction:column;height:96px;padding:20px 50px}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon{margin-right:0!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line{width:100%;padding-bottom:1px;margin-bottom:46.5px}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .cdk-focused{background-color:transparent}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:before{content:\"\";position:absolute!important;left:-25px!important;bottom:13px!important;border-left:30px solid var(--conf-step-connector-bg, #ebebeb)!important;border-top:12px solid transparent!important;border-bottom:12px solid transparent!important;transform:rotate(180deg)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:after{content:\"\"!important;position:absolute!important;right:-25px!important;bottom:13px!important;border-left:30px solid var(--conf-step-connector-bg, #ebebeb)!important;border-top:12px solid transparent!important;border-bottom:12px solid transparent!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon:after:last-child{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected){background:var(--conf-step-icon-bg, linear-gradient(.33turn, #BFBFBF, #606060))!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected) .mat-step-icon-content span{color:var(--conf-step-icon-color, #ffffff)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number.mat-step-icon-selected:before{border-left-color:var(--conf-step-selected)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-number.mat-step-icon-selected:after{display:none!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit{background-color:var(--conf-step-icon-edit-bg)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit:before{border-left-color:var(--conf-step-selected)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-icon.mat-step-icon-state-edit:after{border-left-color:var(--conf-step-edit)!important}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container :first-child :before{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container :last-child :after{display:none}::ng-deep mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-content-container{padding:20px 10%;background-color:var(--conf-stepper-content-bg)!important}::ng-deep mat-horizontal-stepper.innerForm{background-color:var(--conf-bg-page)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:10px 130px;background-color:var(--conf-stepper-header-bg)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon{margin-right:0!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected){background:var(--conf-step-icon-bg, linear-gradient(.33turn, #BFBFBF, #606060))!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header .mat-step-icon.mat-step-icon-state-number:not(.mat-step-icon-selected) .mat-step-icon-content span{color:var(--conf-step-icon-color, #ffffff)!important}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container mat-step-header:hover{background-color:transparent}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(2){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(4){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line:nth-child(6){transform:none}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .cdk-focused{background-color:transparent}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label mat-label{margin-left:5px}::ng-deep mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-content-container{background-color:var(--conf-stepper-content-bg)!important}.button-nextDiv{margin:50px 0 0!important}.button-nextDiv .button-exit{margin:0 10px 0 0!important;border:1px solid #1E31EB;padding:7px 40px;border-radius:var(--conf-radius);font-size:14px;box-shadow:none!important}.button-nextDiv .button-exit:hover{background:white!important}div.addButtons{margin:40px 0 0!important}div.addButtons .btn-primary{border-radius:var(--conf-radius);box-shadow:none;padding:6px 25px 6px 9px;font-size:14px;background:var(--conf-gradient);color:var(--conf-btn-color)!important}div.addButtons .btn-primary mat-icon{background:#fff;color:#1e31eb;height:30px;width:31px;border-radius:var(--conf-radius);font-size:27px;padding:2px 0 0;margin:0 7px 0 0}div.addButtons .btn-outlined{box-shadow:none;padding:6px 25px 6px 9px;font-size:14px;border-radius:var(--conf-radius);background:var(--conf-addbtn-bg, #ebebeb);color:#3b3a3b}div.addButtons .btn-outlined mat-icon{background-color:inherit;color:#bdbdbd;height:30px;width:31px;border-radius:var(--conf-radius);font-size:27px;padding:2px 0 0;margin:0 7px 0 0}div.addButtons .btn-outlined:hover,div.addButtons .btn-outlined.active{background:var(--conf-gradient);color:var(--conf-btn-color)!important;border-radius:var(--conf-radius)}div.addButtons .btn-outlined:hover mat-icon,div.addButtons .btn-outlined.active mat-icon{color:var(--conf-btn-color)}div.addButtons .btn-outlined-red{background:linear-gradient(to right,#eb1e1e,#da3d3d)!important;color:#fff!important}div.addButtons .btn-outlined-red:hover mat-icon{color:#eb1e1e}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper{margin-top:-74px}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper input{background-color:var(--conf-search-bg)!important;background:url(data:image/png;base64,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) no-repeat;background-size:19px;background-position:19px;padding:15px 0 15px 53px!important}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper input:focus{background-color:#fff!important;border:1px solid #e7e7e9}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper .mat-form-field-label-wrapper label{margin-top:21px;margin-left:55px}.table ::ng-deep mat-header-row{background-color:var(--conf-table-header-bg)!important;border-bottom-width:0px}.table ::ng-deep mat-header-row .mat-column-Required{flex:none!important}.table ::ng-deep .mat-sort-header-button{color:#3b3a3b;font-size:15px}.table ::ng-deep table#eqp-table{background-color:var(--conf-table-bg)!important}.table ::ng-deep .mat-row{background-color:var(--conf-table-bg)!important;margin:10px 0;box-shadow:0 3px 7px -3px #0003;padding:5px 0}.table ::ng-deep .mat-row .mat-column-Required{flex:0 0 8%!important}.table ::ng-deep .mat-row mat-cell eqp-select{margin-top:16px}.table ::ng-deep .mat-row mat-cell eqp-select .mat-form-field-wrapper{padding-bottom:0}.table ::ng-deep .mat-row .mat-cell span i.success-color{background-color:var(--conf-primary);color:#fff!important;padding:6px;border-radius:3px}::ng-deep .mat-paginator-page-size{margin:0 30px 0 0!important}::ng-deep .mat-paginator-page-size .mat-form-field-flex{padding:0 21px 7px!important;width:100px!important;margin:10px!important;background-color:#fff;border-radius:10px;border:1px solid lightgrey;height:40px}::ng-deep .mat-paginator-range-label{margin:0 20px 0 52px!important}::ng-deep .mat-dialog-container{padding:0!important;border-radius:var(--conf-modal-radius)!important;font-family:var(--conf-font-family)!important}::ng-deep .mat-mdc-dialog-surface.mdc-dialog__surface{border-radius:var(--conf-modal-radius)!important;font-family:var(--conf-font-family)!important}::ng-deep .mat-paginator-container{display:flex;justify-content:flex-start!important}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container{margin:5px 0 0 2px}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container .mat-slide-toggle-thumb{background-color:#fff!important}::ng-deep .mat-slide-toggle.mat-checked .mat-slide-toggle-bar{background-color:#2532ea!important;height:100%!important;width:40px!important;border-radius:20px!important}::ng-deep .mat-slide-toggle .mat-slide-toggle-thumb-container{margin:5px 0 0 2px}::ng-deep .mat-slide-toggle .mat-slide-toggle-bar{height:100%!important;width:40px!important;border-radius:20px!important}.container-fluid.third-modal{padding:0 0 10px}.container-fluid.third-modal form{margin:25px 40px 10px}.container-fluid.third-modal form .buttonsForm{padding:0}.button-next{border-radius:var(--conf-radius);padding:7px 40px;font-size:14px}button.button-next:not([disabled]){background:var(--conf-gradient)!important;padding:7px 40px;border-radius:var(--conf-radius);color:var(--conf-btn-color)!important;font-size:14px}button.previous{box-shadow:none!important;margin:0 10px 0 0!important;border:1px solid #1E31EB;padding:7px 40px;border-radius:var(--conf-radius);font-size:14px}.rowButtonsModal{background-color:var(--conf-bg-page)}@media screen and (max-width: 1200px){.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select){width:30%!important}.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select) .mat-form-field-wrapper{margin-top:-98px}.table ::ng-deep .mat-row .mat-column-FieldGroup eqp-select{margin-bottom:-25px}.table ::ng-deep .mat-row .mat-column-FieldGroup .mat-form-field-flex{width:auto}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:25px 0 0}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-content-container{padding:0 3% 24px!important}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container{padding:10px 0}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-horizontal-stepper-header{display:flex;flex-direction:column;justify-content:space-between}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-stepper-horizontal-line{margin:-21px 0 0}mat-horizontal-stepper.innerForm ::ng-deep .mat-horizontal-content-container{padding:0 3% 24px!important}form{padding:0}div.addButtons{padding:15px 0 24px!important}}@media screen and (max-width: 960px){::ng-deep mat-table mat-row{box-shadow:0 3px 7px -3px #0003!important}::ng-deep mat-table mat-row .mat-column-FieldGroup{padding-top:15px;padding-bottom:47px}mat-horizontal-stepper.outerForm ::ng-deep .mat-horizontal-stepper-header-container .mat-step-label{width:150%!important}}@media screen and (max-width: 766px){.table ::ng-deep mat-form-field:not(.mat-paginator-page-size-select){width:40%!important;margin-top:60px}}@media screen and (max-width: 589px){div.addButtons button{margin:0 10px 10px 0!important}}::ng-deep .mat-input-element{width:100%;width:-moz-available;width:-webkit-fill-available;width:fill-available}:host ::ng-deep .mat-input-element{width:100%;width:-moz-available;width:-webkit-fill-available;width:fill-available}.innerFormManagment-stepper{max-height:80vh;overflow:scroll}.ai-dialog-header{display:flex;align-items:center;gap:10px;padding:16px 20px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0}.ai-dialog-header mat-icon{font-size:22px;width:22px;height:22px;opacity:.9}.ai-dialog-header span{font-size:1rem;font-weight:600;letter-spacing:.02em}.ai-dialog-header .ai-history-toggle-btn{margin-left:auto;color:#ffffffd9}.ai-dialog-header .ai-history-toggle-btn:hover{color:#fff}.ai-dialog-header .ai-history-toggle-btn.active{color:#fff;background:rgba(255,255,255,.2);border-radius:50%}.ai-dialog-body-flex{display:flex;align-items:stretch;overflow:hidden}.ai-dialog-main-content{flex:1;min-width:0}.ai-history-panel{width:240px;flex-shrink:0;border-left:1px solid rgba(0,0,0,.1);display:flex;flex-direction:column;background:#fafafa}.ai-history-panel .ai-history-panel-title{display:flex;align-items:center;gap:6px;padding:12px 12px 8px;font-size:.78rem;font-weight:700;color:#555;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid rgba(0,0,0,.08);flex-shrink:0}.ai-history-panel .ai-history-list{overflow-y:auto;flex:1;padding:8px 0}.ai-history-panel .ai-history-item{display:flex;align-items:flex-start;gap:8px;padding:8px 12px;border-bottom:1px solid rgba(0,0,0,.05)}.ai-history-panel .ai-history-item:last-child{border-bottom:none}.ai-history-panel .ai-history-item .ai-history-index{font-size:.7rem;font-weight:700;color:#fff;background:#888;border-radius:50%;width:18px;height:18px;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px}.ai-history-panel .ai-history-item .ai-history-text{font-size:.8rem;color:#444;line-height:1.4;word-break:break-word}.ai-last-prompt-bar{display:flex;align-items:center;gap:14px;margin:10px 0 18px;padding:14px 16px;background:#fff;border-radius:10px;box-shadow:0 1px 3px #1e31eb14,0 0 0 1px #1e31eb1a;position:relative;overflow:hidden}.ai-last-prompt-bar:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--conf-gradient)}.ai-last-prompt-bar .ai-last-prompt-icon-wrap{flex-shrink:0;width:36px;height:36px;border-radius:9px;background:var(--conf-gradient);display:flex;align-items:center;justify-content:center}.ai-last-prompt-bar .ai-last-prompt-icon-wrap mat-icon{font-size:18px;width:18px;height:18px;color:#fff}.ai-last-prompt-bar .ai-last-prompt-content{flex:1;min-width:0}.ai-last-prompt-bar .ai-last-prompt-content .ai-last-prompt-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#aaa;margin-bottom:3px}.ai-last-prompt-bar .ai-last-prompt-content .ai-last-prompt-text{font-size:13px;font-weight:600;color:#1a1a2e;line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ai-last-prompt-bar .ai-last-prompt-history-btn{flex-shrink:0;width:34px;height:34px;border-radius:8px;color:var(--conf-primary, #1E31EB);opacity:.5;transition:opacity .15s,background .15s;display:flex;align-items:center;justify-content:center}.ai-last-prompt-bar .ai-last-prompt-history-btn:hover{opacity:1;background:rgba(30,49,235,.07)}.ai-last-prompt-bar .ai-last-prompt-history-btn mat-icon{font-size:20px;width:20px;height:20px;line-height:20px}.ai-cost-panel{display:flex;align-items:center;gap:12px;padding:10px 14px;background:#fff;border-radius:10px;box-shadow:0 1px 3px #1e31eb14,0 0 0 1px #1e31eb1a;position:relative;overflow:hidden}.ai-cost-panel:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--conf-gradient)}.ai-cost-panel .ai-cost-panel-icon{flex-shrink:0;width:30px;height:30px;border-radius:8px;background:var(--conf-gradient);display:flex;align-items:center;justify-content:center}.ai-cost-panel .ai-cost-panel-icon mat-icon{font-size:16px;width:16px;height:16px;color:#fff}.ai-cost-panel .ai-cost-panel-body{flex:1;min-width:0}.ai-cost-panel .ai-cost-panel-header{display:flex;align-items:center;gap:8px;margin-bottom:3px}.ai-cost-panel .ai-cost-panel-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#aaa}.ai-cost-panel .ai-cost-panel-model{font-size:10px;font-weight:700;padding:1px 8px;border-radius:20px;background:rgba(30,49,235,.08);color:var(--conf-primary, #1E31EB);letter-spacing:.03em}.ai-cost-panel .ai-cost-panel-line{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:12.5px;color:#444;line-height:1.5}.ai-cost-panel .ai-cost-panel-line .ai-cost-panel-line-label{color:#777}.ai-cost-panel .ai-cost-panel-line .ai-cost-panel-line-value{font-weight:600;color:#1a1a2e;white-space:nowrap}.ai-cost-panel .ai-cost-panel-hint{font-size:11px;color:#b45309;margin-top:1px}.ai-cost-panel .ai-cost-panel-split{flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:4px;padding-left:12px;border-left:1px solid rgba(0,0,0,.08)}.ai-cost-panel .ai-cost-panel-split-label{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#aaa}.ai-cost-panel .ai-cost-panel-split-stepper{display:flex;align-items:center;gap:2px;background:var(--conf-bg-page, #f4f4f8);border-radius:8px;padding:2px}.ai-cost-panel .ai-cost-split-btn{width:20px;height:20px;border:none;border-radius:5px;background:transparent;color:var(--conf-primary, #1E31EB);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s,color .15s}.ai-cost-panel .ai-cost-split-btn mat-icon{font-size:14px;width:14px;height:14px}.ai-cost-panel .ai-cost-split-btn:hover:not(:disabled){background:rgba(30,49,235,.12)}.ai-cost-panel .ai-cost-split-btn:disabled{color:#ccc;cursor:not-allowed}.ai-cost-panel .ai-cost-split-input{width:22px;text-align:center;border:none;background:transparent;font-size:13px;font-weight:700;color:#1a1a2e;-moz-appearance:textfield}.ai-cost-panel .ai-cost-split-input::-webkit-outer-spin-button,.ai-cost-panel .ai-cost-split-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.ai-cost-panel .ai-cost-split-input:focus{outline:none}.ai-history-dialog{min-width:520px;max-width:660px;display:flex;flex-direction:column;overflow:hidden}.ai-history-dialog .ai-history-dialog-body{overflow-y:auto;max-height:55vh;padding:8px 0 4px}.ai-history-dialog .ai-history-dialog-item{display:flex;align-items:flex-start;gap:16px;padding:14px 24px;border-bottom:1px solid rgba(0,0,0,.06);transition:background .12s}.ai-history-dialog .ai-history-dialog-item:last-child{border-bottom:none}.ai-history-dialog .ai-history-dialog-item:hover{background:rgba(30,49,235,.03)}.ai-history-dialog .ai-history-dialog-item--last{background:rgba(30,49,235,.04)}.ai-history-dialog .ai-history-dialog-item--last .ai-history-dialog-badge{background:var(--conf-gradient);box-shadow:0 2px 6px #1e31eb59}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-badge{flex-shrink:0;width:26px;height:26px;border-radius:50%;background:#dde0f5;color:var(--conf-primary, #1E31EB);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:1px}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt .ai-history-dialog-prompt-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;background:var(--conf-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.ai-history-dialog .ai-history-dialog-item .ai-history-dialog-prompt .ai-history-dialog-prompt-text{font-size:13.5px;color:#2a2a2a;line-height:1.55;word-break:break-word}.ai-history-dialog .ai-history-dialog-footer{display:flex;justify-content:flex-end;align-items:center;padding:12px 20px;border-top:1px solid rgba(0,0,0,.07);background:var(--conf-bg-page, #f9f9fa)}.ve-tooltip-panel{padding:0;min-width:280px}.ve-tooltip-header{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0}.ve-tooltip-header .ve-tooltip-icon{font-size:20px;width:20px;height:20px}.ve-tooltip-header .ve-tooltip-title{font-size:.9rem;font-weight:600;flex:1;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.3}.ve-tooltip-graphic{padding:12px 16px}.ve-tooltip-graphic .ve-tooltip-graphic-header{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:.85rem;color:#555}.ve-tooltip-graphic .ve-apply-all-row{display:flex;align-items:center;margin-bottom:8px;font-size:.8rem}.ve-tooltip-graphic .ve-apply-all-row mat-slide-toggle{font-size:.8rem}.ve-tooltip-graphic .ve-tooltip-graphic-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}.ve-swap-banner{display:flex;align-items:center;justify-content:center;gap:12px;margin:12px 0 4px;padding:12px 24px;background:rgba(245,158,11,.1);border:2px dashed #f59e0b;border-radius:10px;animation:ve-swap-pulse 1.2s infinite;font-size:.95rem;font-weight:600;color:#92400e}.ve-swap-banner .ve-swap-banner-icon{color:#f59e0b;font-size:24px;width:24px;height:24px;flex-shrink:0}.ve-swap-banner .ve-swap-banner-cancel{margin-left:16px;border-color:#f59e0b!important;color:#92400e!important;border-radius:6px;font-size:.85rem}@keyframes ve-swap-pulse{0%,to{background-color:#f59e0b1a}50%{background-color:#f59e0b38}}.ve-reorder-card{min-width:360px}.ve-reorder-header{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--conf-gradient);color:#fff;border-radius:var(--conf-modal-radius) var(--conf-modal-radius) 0 0;font-size:.95rem;font-weight:600}.ve-reorder-list{padding:8px 0}.ve-reorder-item{display:flex;align-items:center;gap:8px;padding:8px 16px;background:#fff;border-bottom:1px solid rgba(0,0,0,.08);cursor:move}.ve-reorder-item:last-child{border-bottom:none}.ve-drag-handle{color:#aaa;cursor:grab}.ve-drag-handle:active{cursor:grabbing}.ve-drag-placeholder{height:40px;background:rgba(99,102,241,.08);border:2px dashed rgba(99,102,241,.35);border-radius:4px}\n"] }]
|
|
2456
2456
|
}], ctorParameters: function () { return [{ type: i1.UntypedFormBuilder }, { type: i2.MatDialog }, { type: i3.UtilityHelperService }, { type: i4.DomSanitizer }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { debugMode: [{
|
|
2457
2457
|
type: Input
|
|
2458
2458
|
}], fieldsExtraConfig: [{
|
|
@@ -2534,4 +2534,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
2534
2534
|
type: ViewChild,
|
|
2535
2535
|
args: ["dialogVeReorder", { static: true }]
|
|
2536
2536
|
}] } });
|
|
2537
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXFwLWR5bmFtaWMtbW9kdWxlLWNvbmZpZ3VyYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL2V4cG9ydGVkL2VxcC1keW5hbWljLW1vZHVsZS1jb25maWd1cmF0b3IvZXFwLWR5bmFtaWMtbW9kdWxlLWNvbmZpZ3VyYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL2V4cG9ydGVkL2VxcC1keW5hbWljLW1vZHVsZS1jb25maWd1cmF0b3IvZXFwLWR5bmFtaWMtbW9kdWxlLWNvbmZpZ3VyYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpREFBaUQ7QUFDakQsT0FBTyxFQUdMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFHTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLGtCQUFrQixFQUVsQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0wsaUJBQWlCLEVBR2pCLFVBQVUsR0FDWCxNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xJLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN4RCxPQUFPLEVBR0wsYUFBYSxHQUNkLE1BQU0sNkNBQTZDLENBQUM7QUFDckQsT0FBTyxFQUNMLGNBQWMsRUFDZCxJQUFJLEVBRUosa0JBQWtCLEVBQ2xCLFlBQVksR0FDYixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFB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QUFDLENBQUM7WUFDekksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQUUsT0FBTyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTVMLE1BQU0sY0FBYyxHQUF5QjtZQUMzQyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxhQUFhLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDdEYsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLEVBQUUsU0FBUyxFQUFFLGFBQWEsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUM1RyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksRUFBRSxTQUFTLEVBQUUsYUFBYSxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3RHLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxFQUFFLFNBQVMsRUFBRSxhQUFhLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDdEcsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVB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c0JBQTlELFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNFLGVBQWU7c0JBQTlELFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaW1wb3J0IHsgVGhyb3dTdG10IH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xyXG5pbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1xyXG4gIFVudHlwZWRGb3JtQnVpbGRlcixcclxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXHJcbiAgVW50eXBlZEZvcm1Hcm91cCxcclxuICBWYWxpZGF0b3JzLFxyXG59IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcclxuaW1wb3J0IHtcclxuICBDZWxsQWxpZ25tZW50RW51bSxcclxuICBDb25maWdDb2x1bW4sXHJcbiAgRXFwVGFibGVDb21wb25lbnQsXHJcbiAgVHlwZUNvbHVtbixcclxufSBmcm9tIFwiQGVxcHJvamVjdC9lcXAtdGFibGVcIjtcclxuaW1wb3J0IHsgTnVtZXJpY0ZpZWxkIH0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9maWVsZHMvbnVtZXJpY0ZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7IEJhc2VGaWVsZCwgRGF0YUdldHRlciwgRGF0YUdldHRlclR5cGVFbnVtLCBGaWVsZEludmlzaWJpbGl0eUVudW0sIEZpZWxkVHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvYmFzZUZpZWxkLm1vZGVsJztcclxuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvY29udGV4dC5tb2RlbFwiO1xyXG5pbXBvcnQge1xyXG4gIEVuZFBvaW50Q29uZmlndXJhdGlvbixcclxuICBFbmRQb2ludERhdGFQYXJhbXMsXHJcbiAgUGFyYW1UeXBlRW51bSxcclxufSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2VuZFBvaW50Q29uZmlndXJhdGlvbi5tb2RlbFwiO1xyXG5pbXBvcnQge1xyXG4gIEFjdGlvbk9uUmVjb3JkLFxyXG4gIEZvcm0sXHJcbiAgRm9ybUZpZWxkR3JvdXAsXHJcbiAgRm9ybVNjYWxhclR5cGVFbnVtLFxyXG4gIEZvcm1UeXBlRW51bSxcclxufSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2Zvcm0ubW9kZWxcIjtcclxuaW1wb3J0IHsgQXJyYXlWYWxpZGF0b3JzIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL2N1c3RvbS1mb3JtLXZhbGlkYXRvcnMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9lcXAtZHluYW1pYy1tb2R1bGUtZGlhbG9nLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVXRpbGl0eUhlbHBlclNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvdXRpbGl0eUhlbHBlci5zZXJ2aWNlc1wiO1xyXG5pbXBvcnQgeyBEeW5hbWljTW9kdWxlQ29tcGlsZUNvbmZpZyB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZHluYW1pY01vZHVsZUNvbXBpbGVDb25maWcubW9kZWxcIjtcclxuaW1wb3J0IHsgRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbmZpZyB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbmZpZy5tb2RlbFwiO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVTdHlsZSB9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XHJcbmltcG9ydCB7IEdsb2JhbFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvZ2xvYmFsLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRHluYW1pY0xvYWRlckRpcmVjdGl2ZURhdGEsIGV2ZW50T3V0IH0gZnJvbSBcIi4uLy4uLy4uL2RpcmVjdGl2ZXMvZHluYW1pYy1sb2FkZXIvZHluYW1pYy1sb2FkZXIuZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7IFRyaWdnZXIsIEFjdGlvbkJ1dHRvbiwgQWN0aW9uRmxhZ0VudW0sIEZpcmVUcmlnZ2VyIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3RyaWdnZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBDb250ZXN0dWFsaXphdGlvbiB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZ2V0dGVyLm1vZGVsXCI7XHJcbmltcG9ydCB7IEltYWdlU2VsZWN0b3JGaWVsZCB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZmllbGRzL2ltYWdlU2VsZWN0b3JGaWVsZC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBGaWVsZEV4dHJhQ29uZmlnIH0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9maWVsZEV4dHJhQ29uZmlnLm1vZGVsXCI7XHJcbmltcG9ydCB7IEF0dGFjaG1lbnRUeXBlLCBJQXR0YWNobWVudERUTyB9IGZyb20gXCJAZXFwcm9qZWN0L2VxcC1hdHRhY2htZW50c1wiO1xyXG5pbXBvcnQgeyBEeW5BdHRhY2htZW50IH0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9keW5BdHRhY2htZW50XCI7XHJcbmltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgaW5qZWN0R29vZ2xlRm9udHNGcm9tRm9ybSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2dvb2dsZS1mb250cy1pbmplY3Rvcic7XHJcbmltcG9ydCB7IFF1ZXJ5RWRpdG9yTW9kZUVudW0gfSBmcm9tIFwiLi4vLi4vcHJpdmF0ZS9kYmdldHRlci9kYmdldHRlci5jb21wb25lbnRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImVxcC1keW5hbWljLW1vZHVsZS1jb25maWd1cmF0b3JcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2VxcC1keW5hbWljLW1vZHVsZS1jb25maWd1cmF0b3IuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vZXFwLWR5bmFtaWMtbW9kdWxlLWNvbmZpZ3VyYXRvci5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEVxcER5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuXHJcbiAgQElucHV0KCkgZGVidWdNb2RlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIGZpZWxkc0V4dHJhQ29uZmlnOiBBcnJheTxGaWVsZEV4dHJhQ29uZmlnPjtcclxuICBASW5wdXQoKSBjb25maWd1cmF0aW9uczogRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbmZpZyA9XHJcbiAgICBuZXcgRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbmZpZygpO1xyXG4gIEBJbnB1dCgpIGZvcm1JRDogc3RyaW5nID0gbnVsbDtcclxuICBASW5wdXQoKSB2aWV3TW9kZTogc3RyaW5nID0gXCJhZGRPckVkaXRcIjsgLy8gRXhwb3J0XHJcbiAgQElucHV0KCkgUXVlcnlFZGl0b3JDb21wb25lbnQ6IER5bmFtaWNMb2FkZXJEaXJlY3RpdmVEYXRhOyAvLyBMJ2ludGVybyBjb21wb25lbnRlIHF1ZXJ5IEVkaXRvclxyXG4gIEBJbnB1dCgpIHRyaWdnZXJzOiBhbnk7XHJcbiAgQElucHV0KCkgYWN0aW9uQnV0dG9uczogYW55O1xyXG4gIEBJbnB1dCgpIGNvbnRlc3R1YWxpemF0aW9uOiBBcnJheTxDb250ZXN0dWFsaXphdGlvbj47XHJcbiAgQElucHV0KCkgZm9ybXVsYU9iamVjdDogYW55OyAvLyBFc2VtcGlvOiB7Y3Vycm9sZTogcm9sZSwgdXNlcjogdXNlciwgbWVkaWNhbDogbWVkaWNhbGV4YW1pbmF0aW9ufVxyXG4gIEBJbnB1dCgpIGNvbmZpZ3VyYXRvclRoZW1lOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgY29uZmlndXJhdG9yVGhlbWVDc3M6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBAT3V0cHV0KCkgZmlyZVRyaWdnZXI6IEV2ZW50RW1pdHRlcjxGaXJlVHJpZ2dlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPEZpcmVUcmlnZ2VyPigpO1xyXG5cclxuICBsb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvKipcclxuICAgKiBUb2tlbiBkYSB1c2FyZSBuZWdsaSBlbmRwb2ludCBkYSBjaGlhbWFyZSBwZXIgcmVjdXBlcmFyZSBvIHNhbHZhcmUgaSByZWNvcmQuXHJcbiAgICogVXNhdG8gc29sbyBzZSB2aWVuZSBwb3BvbGF0YSBsYSBwcm9wcmlldMOgIFwiYmFzZVNlcnZlclVybFwiLlxyXG4gICAqL1xyXG4gIHVzZXJUb2tlbjogc3RyaW5nID0gbnVsbDtcclxuICAvKipcclxuICAgKiBDb25maWd1cmF6aW9uZSBkZWdsaSBlbmRwb2ludCBkYSBjaGlhbWFyZSBwZXIgcmVjdXBlcmFyZSBvIHNhbHZhcmUgaSBkYXRpLlxyXG4gICAqIFB1w7IgZXNzZXJlIGRlZmluaXRhIGRhbGwndXRlbnRlIG9wcHVyZSBsYXNjaWF0YSBudWxsLCB2aWVuZSBwb3BvbGF0YSBjb24gZGVpXHJcbiAgICogdmFsb3JpIGRpIGRlZmF1bHQgc2UgdmllbmUgdmFsb3JpenphdGEgbGEgcHJvcHJpZXTDoCBcImJhc2VTZXJ2ZXJVcmxcIiBhbHRyaW1lbnRpXHJcbiAgICogdmllbmUgbGFzY2lhdGEgbnVsbCBlIG5vbiB2aWVuZSBlc2VndWl0YSBuZXNzdW5hIGNoaWFtYXRhIGFsIHNlcnZlci5cclxuICAgKi9cclxuICBlbmRQb2ludENvbmZpZ3VyYXRpb246IEVuZFBvaW50Q29uZmlndXJhdGlvbiA9IG51bGw7XHJcbiAgLyoqXHJcbiAgICogVXJsIGRlbCBzZXJ2ZXIgZGEgY2hpYW1hcmUgcGVyIHJlY3VlcmFyZSwgc2FsdmFyZSBvIGVsaW1pbmFyZSBpIHJlY29yZC5cclxuICAgKiBVc2F0byBwZXIgY3JlYXJlIGxhIGNvbmZpZ3VyYXppb25lIGRpIGRlZmF1bHQgZGVnbGkgZW5kcG9pbnQgZGEgY2hpYW1hcmUuXHJcbiAgICovXHJcbiAgYmFzZVNlcnZlclVybDogc3RyaW5nID0gbnVsbDtcclxuICBjb250ZXh0OiBDb250ZXh0ID0gbmV3IENvbnRleHQoKTtcclxuXHJcbiAgLyogZXhwb3J0IHZhcmlhYmxlcyAqL1xyXG4gIGRvd25sb2FkTmFtZTogc3RyaW5nO1xyXG4gIGRvd25sb2FkSnNvbkhyZWY6IGFueTtcclxuICBzdHJpbmdpZmllZEZvcm06IHN0cmluZztcclxuXHJcbiAgLyogaW1wb3J0IHZhcmlhYmxlcyAqL1xyXG4gIGltcG9ydGVkTW9kdWxlOiBzdHJpbmcgPSBudWxsOyAvLyBqc29uIG9iamVjdFxyXG4gIGRpYWxvZ0ltcG9ydFJlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG4gIEBWaWV3Q2hpbGQoXCJkaWFsb2dJbXBvcnRcIiwgeyBzdGF0aWM6IHRydWUgfSkgZGlhbG9nSW1wb3J0OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBmb3JtOiBGb3JtID0gbmV3IEZvcm0oKTtcclxuICBiYWNrdXBGb3JtOiBGb3JtID0gbnVsbDtcclxuICBzYXZlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG9yZ2FJRDogc3RyaW5nID0gbnVsbDtcclxuICBVc2VySUQ6IG51bWJlciA9IDM2O1xyXG4gIGlubmVyRm9ybU1hbmFnbWVudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlubmVyRm9ybVJlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG5cclxuICAvKiBDT05GSUdVUkFaSU9ORSBQRVIgVklTVUFMSVpaQVpJT05FIEZPUk0gQ1JFQVRBICovXHJcbiAgdmlld0NvbmZpZzogRHluYW1pY01vZHVsZUNvbXBpbGVDb25maWcgPSBuZXcgRHluYW1pY01vZHVsZUNvbXBpbGVDb25maWcoXHJcbiAgICB0cnVlLFxyXG4gICAgZmFsc2UsXHJcbiAgICBmYWxzZSxcclxuICAgIFwiMFwiXHJcbiAgKTtcclxuXHJcbiAgZm9ybUZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCA9IG51bGw7XHJcbiAgZm9ybUNvbXBsZXRlZCA9IGZhbHNlO1xyXG4gIHByZXZpZXdGb3JtOiBGb3JtO1xyXG4gIGZvcm1GaWVsZEdyb3VwTmFtZTogc3RyaW5nO1xyXG5cclxuICBhY3Rpb25BdXRvY29tcGxldGVPcHRpb25zOiBBcnJheTx7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT47XHJcblxyXG4gIC8vI3JlZ2lvbiBFbnVtZXJhdG9yaSB1c2F0aSBuZWxsJ2h0bWxcclxuICBGb3JtVHlwZUVudW0gPSBGb3JtVHlwZUVudW07XHJcbiAgRm9ybVNjYWxhclR5cGVFbnVtID0gRm9ybVNjYWxhclR5cGVFbnVtO1xyXG4gIEF0dGFjaG1lbnRUeXBlID0gQXR0YWNobWVudFR5cGU7XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBHZXN0aW9uZSBzZm9uZG8gZm9ybVxyXG4gIGdldCBwcmV2aWV3QmdTdHlsZSgpOiBTYWZlU3R5bGUgfCBudWxsIHtcclxuICAgIGlmICghdGhpcy5mb3JtPy5CZ0ltYWdlQmFzZTY0KSByZXR1cm4gbnVsbDtcclxuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUoW1xyXG4gICAgICBgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsJHt0aGlzLmZvcm0uQmdJbWFnZUJhc2U2NH0nKWAsXHJcbiAgICAgICdiYWNrZ3JvdW5kLXNpemU6IGNvdmVyJyxcclxuICAgICAgJ2JhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcicsXHJcbiAgICAgICdiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0JyxcclxuICAgIF0uam9pbignOyAnKSk7XHJcbiAgfVxyXG5cclxuICBnZXQgcHJldmlld1RoZW1lU3R5bGUoKTogU2FmZVN0eWxlIHwgbnVsbCB7XHJcbiAgICBpZiAoIXRoaXMuZm9ybT8uVGhlbWVDU1MpIHJldHVybiBudWxsO1xyXG4gICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZSh0aGlzLmZvcm0uVGhlbWVDU1MudHJpbSgpLnJlcGxhY2UoLzskLywgJycpKTtcclxuICB9XHJcblxyXG4gIGdldCBiZ0F0dGFjaG1lbnRMaXN0KCk6IElBdHRhY2htZW50RFRPW10ge1xyXG4gICAgaWYgKCF0aGlzLmZvcm0/LkJnSW1hZ2VCYXNlNjQpIHJldHVybiBbXTtcclxuICAgIGNvbnN0IGF0dCA9IG5ldyBEeW5BdHRhY2htZW50KCk7XHJcbiAgICBhdHQuSUQgPSAwO1xyXG4gICAgYXR0LkZpbGVEYXRhQmFzZTY0ID0gdGhpcy5mb3JtLkJnSW1hZ2VCYXNlNjQ7XHJcbiAgICBhdHQuSXNJbWFnZSA9IHRydWU7XHJcbiAgICBhdHQuRmlsZUNvbnRlbnRUeXBlID0gJ2ltYWdlL3BuZyc7XHJcbiAgICByZXR1cm4gW2F0dF07XHJcbiAgfVxyXG5cclxuICBvbkJnSW1hZ2VDaGFuZ2UoYXR0YWNobWVudHM6IElBdHRhY2htZW50RFRPW10pOiB2b2lkIHtcclxuICAgIGNvbnN0IHZhbHVlID0gYXR0YWNobWVudHM/Lmxlbmd0aCA+IDAgPyBhdHRhY2htZW50c1swXS5GaWxlRGF0YUJhc2U2NCA6IG51bGw7XHJcbiAgICB0aGlzLmZvcm0uQmdJbWFnZUJhc2U2NCA9IHZhbHVlO1xyXG4gICAgaWYgKHRoaXMucHJldmlld0Zvcm0pIHRoaXMucHJldmlld0Zvcm0uQmdJbWFnZUJhc2U2NCA9IHZhbHVlO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgb25CZ0ltYWdlRGVsZXRlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtLkJnSW1hZ2VCYXNlNjQgPSBudWxsO1xyXG4gICAgaWYgKHRoaXMucHJldmlld0Zvcm0pIHRoaXMucHJldmlld0Zvcm0uQmdJbWFnZUJhc2U2NCA9IG51bGw7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBGSUVMRF9UWVBFX0xBQkVMUzogUmVjb3JkPG51bWJlciwgc3RyaW5nPiA9IHtcclxuICAgIDE6ICdDYW1wbyBkaSB0ZXN0bycsXHJcbiAgICAyOiAnVGVzdG8gbHVuZ28nLFxyXG4gICAgMzogJ0Jvb2xlYW5vJyxcclxuICAgIDQ6ICdEYXRhJyxcclxuICAgIDU6ICdOdW1lcmljbycsXHJcbiAgICA2OiAnQWxsZWdhdG8nLFxyXG4gICAgNzogJ0ltbWFnaW5lJyxcclxuICAgIDg6ICdFbGVuY28nLFxyXG4gICAgMTE6ICdTZWxldHRvcmUgaW1tYWdpbmknLFxyXG4gICAgMTI6ICdFdGljaGV0dGEnLFxyXG4gICAgMTM6ICdJbW1hZ2luZSBjb24gbWFyY2F0b3JpJyxcclxuICAgIDE0OiAnQm90dG9uZSBhemlvbmUnLFxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEZJRUxEX1RZUEVfQ1NTX0NMQVNTOiBSZWNvcmQ8bnVtYmVyLCBzdHJpbmc+ID0ge1xyXG4gICAgMTogJ1RleHRGaWVsZFN0eWxlQ1NTJyxcclxuICAgIDI6ICdUZXh0YXJlYUZpZWxkU3R5bGVDU1MnLFxyXG4gICAgMzogJ0Jvb2xlYW5GaWVsZFN0eWxlQ1NTJyxcclxuICAgIDQ6ICdEYXRlRmllbGRTdHlsZUNTUycsXHJcbiAgICA1OiAnTnVtZXJpY0ZpZWxkU3R5bGVDU1MnLFxyXG4gICAgNjogJ0F0dGFjaG1lbnRGaWVsZFN0eWxlQ1NTJyxcclxuICAgIDc6ICdJbWFnZUZpZWxkU3R5bGVDU1MnLFxyXG4gICAgODogJ0xpc3RWYWx1ZUZpZWxkU3R5bGVDU1MnLFxyXG4gICAgMTE6ICdJbWFnZVNlbGVjdG9yRmllbGRTdHlsZUNTUycsXHJcbiAgICAxMjogJ0xhYmVsRmllbGRTdHlsZUNTUycsXHJcbiAgICAxMzogJ0ltYWdlV2l0aE1hcmtlcnNGaWVsZFN0eWxlQ1NTJyxcclxuICAgIDE0OiAnQWN0aW9uQnV0dG9uRmllbGRTdHlsZUNTUycsXHJcbiAgfTtcclxuXHJcbiAgLy8gTWFwcGEgYWxpYXMgbW9kZWxsbyDihpIgSUQgQ2xhdWRlIHBpw7kgcmVjZW50ZTsgbCdvcmRpbmUgZGkgY2hlY2sgw6ggcmlsZXZhbnRlIChGYWJsZSBlIE9wdXMgcHJpbWEgZGkgU29ubmV0L0hhaWt1KVxyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IE1PREVMX01BUDogQXJyYXk8eyBwYXR0ZXJuOiBSZWdFeHA7IGlkOiBzdHJpbmcgfT4gPSBbXHJcbiAgICB7IHBhdHRlcm46IC9cXGIoPzooPzp1c2F8dXNlfGNvbnx1c2luZylcXHMrKT9mYWJsZVxcYi9naSwgaWQ6ICdjbGF1ZGUtZmFibGUtNScgfSxcclxuICAgIHsgcGF0dGVybjogL1xcYig/Oig/OnVzYXx1c2V8Y29ufHVzaW5nKVxccyspP29wdXNcXGIvZ2ksIGlkOiAnY2xhdWRlLW9wdXMtNC03JyB9LFxyXG4gICAgeyBwYXR0ZXJuOiAvXFxiKD86KD86dXNhfHVzZXxjb258dXNpbmcpXFxzKyk/c29ubmV0XFxiL2dpLCBpZDogJ2NsYXVkZS1zb25uZXQtNC02JyB9LFxyXG4gICAgeyBwYXR0ZXJuOiAvXFxiKD86KD86dXNhfHVzZXxjb258dXNpbmcpXFxzKyk/aGFpa3VcXGIvZ2ksIGlkOiAnY2xhdWRlLWhhaWt1LTQtNS0yMDI1MTAwMScgfSxcclxuICBdO1xyXG5cclxuICAvLyBQcmV6emkgdWZmaWNpYWxpIEFudGhyb3BpYyBVU0QvTVRvayBwZXIgbW9kZWxsbyAocGFnaW5hIFwiUHJlenppIGRlaSBtb2RlbGxpXCIsIHZlcmlmaWNhdGEgMjAyNi0wNykuXHJcbiAgLy8gY2FjaGVXcml0ZSDDqCBpbCBwcmV6em8gZGkgc2NyaXR0dXJhIGNhY2hlIGEgMSBPUkE6IMOoIGlsIENhY2hlVHRsIGNvbmZpZ3VyYXRvIHN1IHF1YXNpIHR1dHRpIGdsaVxyXG4gIC8vIGFtYmllbnRpIHJlYWxpIChUYWtlY2FyZSwgTW9zYWljbywgVGVsZW1lZHdhcmUsIGVjYy4g4oCUIHNvbG8gRGV2ZWxvcG1lbnQgdXNhIFwibm9uZVwiLCBUZXN0IHVzYSBcIjFoXCJcclxuICAvLyBhbmNoJ2Vzc28pLCBxdWluZGkgw6ggbGEgc3RpbWEgcmVhbGlzdGljYSBhbmNoZSBzZSBsZWdnZXJtZW50ZSBwacO5IGFsdGEgZGVpIDUgbWludXRpLiBUZW5lcmVcclxuICAvLyBhbGxpbmVhdGkgYSBEeW5hbWljTW9kdWxlLkFwaVxcU2tpbGxzXFxETUFJX1NLSUxMRk9SSy5tZCBlIGFpIHNlcnZpemkgQ2xhdWRlKlNlcnZpY2UuY3MgbGF0byBzZXJ2ZXIuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQUlfTU9ERUxfUFJJQ0lORzogUmVjb3JkPHN0cmluZywgeyBpbnB1dDogbnVtYmVyOyBvdXRwdXQ6IG51bWJlcjsgY2FjaGVXcml0ZTogbnVtYmVyOyBjYWNoZVJlYWQ6IG51bWJlcjsgbGFiZWw6IHN0cmluZyB9PiA9IHtcclxuICAgICdjbGF1ZGUtaGFpa3UtNC01LTIwMjUxMDAxJzogeyBpbnB1dDogMS4wMCwgb3V0cHV0OiA1LjAwLCBjYWNoZVdyaXRlOiAyLjAwLCBjYWNoZVJlYWQ6IDAuMTAsIGxhYmVsOiAnSGFpa3UnIH0sXHJcbiAgICAnY2xhdWRlLXNvbm5ldC00LTYnOiB7IGlucHV0OiAzLjAwLCBvdXRwdXQ6IDE1LjAwLCBjYWNoZVdyaXRlOiA2LjAwLCBjYWNoZVJlYWQ6IDAuMzAsIGxhYmVsOiAnU29ubmV0JyB9LFxyXG4gICAgJ2NsYXVkZS1vcHVzLTQtNyc6IHsgaW5wdXQ6IDUuMDAsIG91dHB1dDogMjUuMDAsIGNhY2hlV3JpdGU6IDEwLjAwLCBjYWNoZVJlYWQ6IDAuNTAsIGxhYmVsOiAnT3B1cycgfSxcclxuICAgICdjbGF1ZGUtZmFibGUtNSc6IHsgaW5wdXQ6IDEwLjAwLCBvdXRwdXQ6IDUwLjAwLCBjYWNoZVdyaXRlOiAyMC4wMCwgY2FjaGVSZWFkOiAxLjAwLCBsYWJlbDogJ0ZhYmxlJyB9LFxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgZXh0cmFjdE1vZGVsRnJvbVRleHQodGV4dDogc3RyaW5nKTogeyBjbGVhblRleHQ6IHN0cmluZzsgbW9kZWxJZDogc3RyaW5nIHwgbnVsbCB9IHtcclxuICAgIGZvciAoY29uc3QgZW50cnkgb2YgRXFwRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbXBvbmVudC5NT0RFTF9NQVApIHtcclxuICAgICAgZW50cnkucGF0dGVybi5sYXN0SW5kZXggPSAwO1xyXG4gICAgICBpZiAoZW50cnkucGF0dGVybi50ZXN0KHRleHQpKSB7XHJcbiAgICAgICAgZW50cnkucGF0dGVybi5sYXN0SW5kZXggPSAwO1xyXG4gICAgICAgIGNvbnN0IGNsZWFuVGV4dCA9IHRleHRcclxuICAgICAgICAgIC5yZXBsYWNlKGVudHJ5LnBhdHRlcm4sICcnKVxyXG4gICAgICAgICAgLnJlcGxhY2UoL1sgXFx0XSsvZywgJyAnKVxyXG4gICAgICAgICAgLnJlcGxhY2UoL1xccypbLiw7XVxccyokLywgJycpXHJcbiAgICAgICAgICAudHJpbSgpO1xyXG4gICAgICAgIGVudHJ5LnBhdHRlcm4ubGFzdEluZGV4ID0gMDtcclxuICAgICAgICByZXR1cm4geyBjbGVhblRleHQsIG1vZGVsSWQ6IGVudHJ5LmlkIH07XHJcbiAgICAgIH1cclxuICAgICAgZW50cnkucGF0dGVybi5sYXN0SW5kZXggPSAwO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgY2xlYW5UZXh0OiB0ZXh0LCBtb2RlbElkOiBudWxsIH07XHJcbiAgfVxyXG5cclxuICBvbkZvcm1HcmFwaGljU3VnZ2VzdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHJhd0hpbnQgPSB0aGlzLmZvcm1HcmFwaGljU3VnZ2VzdEhpbnQ/LnRyaW0oKTtcclxuICAgIGlmICghdGhpcy5mb3JtIHx8ICF0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbj8uRm9ybXM/LlNwZWVjaFRvR3JhcGhpY3NFbmRQb2ludCkgcmV0dXJuO1xyXG4gICAgY29uc3QgeyBjbGVhblRleHQ6IGhpbnQsIG1vZGVsSWQ6IGFpTW9kZWxJZCB9ID0gdGhpcy5leHRyYWN0TW9kZWxGcm9tVGV4dChyYXdIaW50KTtcclxuICAgIGNvbnN0IHNjb3BlID0gdGhpcy5mb3JtR3JhcGhpY1Njb3BlO1xyXG5cclxuICAgIC8vIFNjb3BlIHRpcG8gc3BlY2lmaWNvOiB2YWxpZGEgZXNpc3RlbnphIGRlbCBjYW1wbyBwcmltYSBkaSBwYXJ0aXJlXHJcbiAgICBsZXQgc2NvcGVGaWVsZFR5cGU6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gICAgaWYgKHNjb3BlLnN0YXJ0c1dpdGgoJ3R5cGVfJykpIHtcclxuICAgICAgc2NvcGVGaWVsZFR5cGUgPSBwYXJzZUludChzY29wZS5yZXBsYWNlKCd0eXBlXycsICcnKSwgMTApO1xyXG4gICAgICBjb25zdCBleGlzdHMgPSAodGhpcy5mb3JtLkZpZWxkcyA/PyBbXSkuc29tZShmID0+IGYuRmllbGRUeXBlID09PSBzY29wZUZpZWxkVHlwZSk7XHJcbiAgICAgIGlmICghZXhpc3RzKSB7XHJcbiAgICAgICAgRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UuRXJyb3IoJ05lc3N1biBjYW1wbyBkaSBxdWVzdG8gdGlwbyBwcmVzZW50ZSBuZWwgZm9ybS4nKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZvcm1HcmFwaGljU3VnZ2VzdExvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIC8vIENhbXBpIGRhIGludmlhcmU6IHVuIHJhcHByZXNlbnRhbnRlIHBlciB0aXBvIChhbGwvbWFpbikgb3BwdXJlIHNvbG8gaWwgcHJpbW8gZGVsIHRpcG8gc2NlbHRvICh0aXBvIHNwZWNpZmljbylcclxuICAgIGNvbnN0IHNlZW5UeXBlcyA9IG5ldyBTZXQ8bnVtYmVyPigpO1xyXG4gICAgY29uc3QgZmllbGRzVG9TZW5kID0gc2NvcGVGaWVsZFR5cGUgIT0gbnVsbFxyXG4gICAgICA/ICh0aGlzLmZvcm0uRmllbGRzID8/IFtdKS5maWx0ZXIoZiA9PiBmLkZpZWxkVHlwZSA9PT0gc2NvcGVGaWVsZFR5cGUpLnNsaWNlKDAsIDEpLm1hcChmID0+ICh7IExhYmVsOiBmLkxhYmVsLCBGaWVsZFR5cGU6IGYuRmllbGRUeXBlIH0pKVxyXG4gICAgICA6ICh0aGlzLmZvcm0uRmllbGRzID8/IFtdKS5maWx0ZXIoZiA9PiB7IGlmIChzZWVuVHlwZXMuaGFzKGYuRmllbGRUeXBlKSkgcmV0dXJuIGZhbHNlOyBzZWVuVHlwZXMuYWRkKGYuRmllbGRUeXBlKTsgcmV0dXJuIHRydWU7IH0pLm1hcChmID0+ICh7IExhYmVsOiBmLkxhYmVsLCBGaWVsZFR5cGU6IGYuRmllbGRUeXBlIH0pKTtcclxuXHJcbiAgICBjb25zdCBncmFwaGljc1BhcmFtczogRW5kUG9pbnREYXRhUGFyYW1zW10gPSBbXHJcbiAgICAgIHsgUGFyYW1OYW1lOiAnTmFtZScsIFBhcmFtVmFsdWU6IHRoaXMuZm9ybS5OYW1lLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bJ0luIEJvZHknXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogJ0Rlc2NyaXB0aW9uJywgUGFyYW1WYWx1ZTogdGhpcy5mb3JtLkRlc2NyaXB0aW9uID8/IG51bGwsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVsnSW4gQm9keSddIH0sXHJcbiAgICAgIHsgUGFyYW1OYW1lOiAnVGhlbWVDU1MnLCBQYXJhbVZhbHVlOiB0aGlzLmZvcm0uVGhlbWVDU1MgPz8gbnVsbCwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtWydJbiBCb2R5J10gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6ICdUaXRsZUNTUycsIFBhcmFtVmFsdWU6IHRoaXMuZm9ybS5UaXRsZUNTUyA/PyBudWxsLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bJ0luIEJvZHknXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogJ0ZpZWxkcycsIFBhcmFtVmFsdWU6IGZpZWxkc1RvU2VuZCwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtWydJbiBCb2R5J10gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6ICdIaW50JywgUGFyYW1WYWx1ZTogaGludCB8fCB0aGlzLmJ1aWxkUmFuZG9tR3JhcGhpY0hpbnQoKSwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtWydJbiBCb2R5J10gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6ICdNb2RlbElkJywgUGFyYW1WYWx1ZTogYWlNb2RlbElkLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bJ0luIEJvZHknXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogJ0dlbmVyYXRlQmFja2dyb3VuZCcsIFBhcmFtVmFsdWU6IHRoaXMuZ2VuZXJhdGVCYWNrZ3JvdW5kICYmIHNjb3BlID09PSAnYWxsJywgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtWydJbiBCb2R5J10gfSxcclxuICAgICAgLi4uKHNjb3BlID09PSAnbWFpbicgPyBbeyBQYXJhbU5hbWU6ICdNYWluT25seScsIFBhcmFtVmFsdWU6IHRydWUsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVsnSW4gQm9keSddIH1dIDogW10pLFxyXG4gICAgICAuLi4oc2NvcGVGaWVsZFR5cGUgIT0gbnVsbCA/IFt7IFBhcmFtTmFtZTogJ1NpbmdsZUZpZWxkTW9kZScsIFBhcmFtVmFsdWU6IHRydWUsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVsnSW4gQm9keSddIH1dIDogW10pLFxyXG4gICAgXTtcclxuXHJcbiAgICB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uRm9ybXMuU3BlZWNoVG9HcmFwaGljc0VuZFBvaW50LFxyXG4gICAgICBncmFwaGljc1BhcmFtcyxcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgciA9IHJlcyBhcyB7IFRoZW1lQ1NTPzogc3RyaW5nOyBUaXRsZUNTUz86IHN0cmluZzsgQmdJbWFnZUJhc2U2ND86IHN0cmluZzsgRmllbGRTdHlsZXM/OiB7IFtjc3NDbGFzc05hbWU6IHN0cmluZ106IHsgW3Byb3A6IHN0cmluZ106IHN0cmluZyB9IH07IFdhcm5pbmdzPzogc3RyaW5nW107IERhbGxFRWxhcHNlZFNlYz86IG51bWJlciB9O1xyXG4gICAgICAgIHRoaXMuZm9ybUdyYXBoaWNTdWdnZXN0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2hvd0Zvcm1HcmFwaGljU3VnZ2VzdElucHV0ID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGlmIChzY29wZSA9PT0gJ21haW4nKSB7XHJcbiAgICAgICAgICAvLyBTb2xvIFRoZW1lQ1NTIGUgVGl0bGVDU1NcclxuICAgICAgICAgIGlmIChyLlRoZW1lQ1NTICE9PSB1bmRlZmluZWQpIHRoaXMuZm9ybS5UaGVtZUNTUyA9IHIuVGhlbWVDU1MgPz8gbnVsbDtcclxuICAgICAgICAgIGlmIChyLlRpdGxlQ1NTICE9PSB1bmRlZmluZWQpIHRoaXMuZm9ybS5UaXRsZUNTUyA9IHIuVGl0bGVDU1MgPz8gbnVsbDtcclxuICAgICAgICB9IGVsc2UgaWYgKHNjb3BlRmllbGRUeXBlICE9IG51bGwpIHtcclxuICAgICAgICAgIC8vIEZpZWxkU3R5bGVzIGRlbCB0aXBvIHNjZWx0byBhcHBsaWNhdGkgYSBUVVRUSSBpIGNhbXBpIGRpIHF1ZWwgdGlwbyBuZWwgZm9ybS5cclxuICAgICAgICAgIC8vIE9nbmkgY2FtcG8gcmljZXZlIHVuYSBjb3BpYSBkaXN0aW50YTogc2FmZUNsb25lIHVzYSBXZWFrU2V0IGUgc2FsdGEgb2dnZXR0aSBnacOgIHZpc3RpLlxyXG4gICAgICAgICAgaWYgKHIuRmllbGRTdHlsZXMpIHtcclxuICAgICAgICAgICAgY29uc3QgY3NzQ2xhc3NOYW1lID0gKEVxcER5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JDb21wb25lbnQuRklFTERfVFlQRV9DU1NfQ0xBU1MgYXMgYW55KVtzY29wZUZpZWxkVHlwZV07XHJcbiAgICAgICAgICAgIGlmIChjc3NDbGFzc05hbWUgJiYgci5GaWVsZFN0eWxlc1tjc3NDbGFzc05hbWVdKSB7XHJcbiAgICAgICAgICAgICAgKHRoaXMuZm9ybS5GaWVsZHMgPz8gW10pLmZpbHRlcihmID0+IGYuRmllbGRUeXBlID09PSBzY29wZUZpZWxkVHlwZSkuZm9yRWFjaChmID0+IHtcclxuICAgICAgICAgICAgICAgIChmIGFzIGFueSlbY3NzQ2xhc3NOYW1lXSA9IHsgLi4uci5GaWVsZFN0eWxlcyFbY3NzQ2xhc3NOYW1lXSB9O1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIFR1dHRvXHJcbiAgICAgICAgICBpZiAoci5UaGVtZUNTUyAhPT0gdW5kZWZpbmVkKSB0aGlzLmZvcm0uVGhlbWVDU1MgPSByLlRoZW1lQ1NTID8/IG51bGw7XHJcbiAgICAgICAgICBpZiAoci5UaXRsZUNTUyAhPT0gdW5kZWZpbmVkKSB0aGlzLmZvcm0uVGl0bGVDU1MgPSByLlRpdGxlQ1NTID8/IG51bGw7XHJcbiAgICAgICAgICBpZiAoci5CZ0ltYWdlQmFzZTY0ICE9PSB1bmRlZmluZWQpIHRoaXMuZm9ybS5CZ0ltYWdlQmFzZTY0ID0gci5CZ0ltYWdlQmFzZTY0ID8/IG51bGw7XHJcbiAgICAgICAgICBpZiAoci5GaWVsZFN0eWxlcykge1xyXG4gICAgICAgICAgICAodGhpcy5mb3JtLkZpZWxkcyA/PyBbXSkuZm9yRWFjaChmID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBjc3NDbGFzc05hbWUgPSAoRXFwRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbXBvbmVudC5GSUVMRF9UWVBFX0NTU19DTEFTUyBhcyBhbnkpW2YuRmllbGRUeXBlXTtcclxuICAgICAgICAgICAgICBpZiAoIWNzc0NsYXNzTmFtZSkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGNzc09iaiA9IHIuRmllbGRTdHlsZXMhW2Nzc0NsYXNzTmFtZV07XHJcbiAgICAgICAgICAgICAgaWYgKGNzc09iaiAmJiB0eXBlb2YgY3NzT2JqID09PSAnb2JqZWN0JykgKGYgYXMgYW55KVtjc3NDbGFzc05hbWVdID0geyAuLi5jc3NPYmogfTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5mb3JtQ29tcGxldGVkKSB7XHJcbiAgICAgICAgICB0aGlzLmZvcm1Db21wbGV0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucHJldmlld0Zvcm0gPSBudWxsO1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNldEZvcm1TdGF0dXModHJ1ZSksIDUwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgICAgICBjb25zdCBiZ1RpbWVQYXJ0ID0gci5EYWxsRUVsYXBzZWRTZWMgIT0gbnVsbCA/IGAgKHNmb25kbyBnZW5lcmF0byBpbiAke3IuRGFsbEVFbGFwc2VkU2VjLnRvRml4ZWQoMSl9cylgIDogJyc7XHJcbiAgICAgICAgY29uc3Qgc3VjY2Vzc01zZyA9IHNjb3BlID09PSAnbWFpbidcclxuICAgICAgICAgID8gYEdyYWZpY2EgcHJpbmNpcGFsZSBhcHBsaWNhdGEhJHtiZ1RpbWVQYXJ0fWBcclxuICAgICAgICAgIDogc2NvcGVGaWVsZFR5cGUgIT0gbnVsbFxyXG4gICAgICAgICAgICA/IGBHcmFmaWNhIGFwcGxpY2F0YSBhIHR1dHRpIGkgY2FtcGkgZGVsIHRpcG8gc2VsZXppb25hdG8hJHtiZ1RpbWVQYXJ0fWBcclxuICAgICAgICAgICAgOiBgR3JhZmljYSBhcHBsaWNhdGEgYWwgZm9ybSEke2JnVGltZVBhcnR9YDtcclxuICAgICAgICBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5TdWNjZXNzKHN1Y2Nlc3NNc2cpO1xyXG4gICAgICAgIGlmIChyLldhcm5pbmdzPy5sZW5ndGggPiAwKSBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5XYXJuaW5nKHIuV2FybmluZ3MpO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICB0aGlzLmZvcm1HcmFwaGljU3VnZ2VzdExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBjb25zdCBtc2cgPSAoZXJyb3IgYXMgYW55KT8uZXJyb3I7XHJcbiAgICAgICAgRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UuRXJyb3IodHlwZW9mIG1zZyA9PT0gJ3N0cmluZycgJiYgbXNnLnRyaW0oKSA/IG1zZyA6ICdFcnJvcmUgbmVsbGEgZ2VuZXJhemlvbmUgZGVsbGEgZ3JhZmljYScpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIFByb3ByaWV0w6AgcGVyIGNyZWF6aW9uZS9tb2RpZmljYSBjYW1wb1xyXG4gIGZpZWxkc0NvbHVtbnM6IEFycmF5PENvbmZpZ0NvbHVtbj47XHJcbiAgQFZpZXdDaGlsZChcImZpZWxkc1RhYmxlXCIsIHsgc3RhdGljOiBmYWxzZSB9KSBmaWVsZHNUYWJsZTogRXFwVGFibGVDb21wb25lbnQ7XHJcbiAgc2VsZWN0ZWRGaWVsZDogQmFzZUZpZWxkO1xyXG4gIGluZGV4U2VsZWN0ZWRGaWVsZDogbnVtYmVyO1xyXG4gIGFjdGlvbk9uUmVjb3JkRm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG4gIGRpYWxvZ0ZpZWxkUmVmOiBNYXREaWFsb2dSZWY8VGVtcGxhdGVSZWY8YW55Pj47XHJcbiAgQFZpZXdDaGlsZChcImRpYWxvZ0ZpZWxkXCIsIHsgc3RhdGljOiB0cnVlIH0pIGRpYWxvZ0ZpZWxkOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoXCJmaWVsZFNlY3Rpb25Db2x1bW5UZW1wbGF0ZVwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGZpZWxkU2VjdGlvbkNvbHVtblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gUHJvcHJpZXTDoCBwZXIgY3JlYXJlL21vZGlmaWNhcmUgdW5hIEZvcm0gZGkgZGV0dGFnbGlvXHJcbiAgc2VsZWN0ZWRJbm5lckZvcm06IEZvcm07XHJcbiAgaW5kZXhTZWxlY3RlZElubmVyRm9ybTogbnVtYmVyO1xyXG4gIGRpYWxvZ0lubmVyRm9ybVJlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG4gIEBWaWV3Q2hpbGQoXCJkaWFsb2dJbm5lckZvcm1cIiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBkaWFsb2dJbm5lckZvcm06IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgaW5uZXJGb3JtQ29uZmlnOiBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29uZmlnO1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gUHJvcHJpZXTDoCBwZXIgY3JlYXJlL21vZGlmaWNhcmUgdW5hIGFjdGlvbiBzdWkgcmVjb3JkIGRpIHVuYSBGb3JtXHJcbiAgYWN0aW9uc09uUmVjb3JkQ29sdW1uczogQXJyYXk8Q29uZmlnQ29sdW1uPjtcclxuICBAVmlld0NoaWxkKFwiYWN0aW9uc09uUmVjb3JkVGFibGVcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgYWN0aW9uc09uUmVjb3JkVGFibGU6IEVxcFRhYmxlQ29tcG9uZW50O1xyXG4gIHNlbGVjdGVkQWN0aW9uOiBBY3Rpb25PblJlY29yZDtcclxuICBpbmRleFNlbGVjdGVkQWN0aW9uOiBudW1iZXI7XHJcbiAgZGlhbG9nQWN0aW9uT25SZWNvcmRSZWY6IE1hdERpYWxvZ1JlZjxUZW1wbGF0ZVJlZjxhbnk+PjtcclxuICBAVmlld0NoaWxkKFwiZGlhbG9nQWN0aW9uT25SZWNvcmRcIiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBkaWFsb2dBY3Rpb25PblJlY29yZDogVGVtcGxhdGVSZWY8YW55PjtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIFByb3ByaWV0w6AgcGVyIGNyZWFyZS9tb2RpZmljYXJlIGRlaSBib3R0b25pIGF6aW9uZVxyXG4gIGFjdGlvbkJ1dHRvbnNDb2x1bW5zOiBBcnJheTxDb25maWdDb2x1bW4+O1xyXG4gIEBWaWV3Q2hpbGQoXCJhY3Rpb25CdXR0b25zVGFibGVcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgYWN0aW9uQnV0dG9uc1RhYmxlOiBFcXBUYWJsZUNvbXBvbmVudDtcclxuICBzZWxlY3RlZEFjdGlvbkJ1dHRvbjogQWN0aW9uQnV0dG9uO1xyXG4gIGluZGV4U2VsZWN0ZWRBY3Rpb25CdXR0b246IG51bWJlcjtcclxuICBkaWFsb2dBY3Rpb25CdXR0b25SZWY6IE1hdERpYWxvZ1JlZjxUZW1wbGF0ZVJlZjxhbnk+PjtcclxuICBAVmlld0NoaWxkKFwiZGlhbG9nQWN0aW9uQnV0dG9uXCIsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgZGlhbG9nQWN0aW9uQnV0dG9uOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBhY3Rpb25CdXR0b25zRm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG4gIGFjdGlvbnNGbGFnID0gQWN0aW9uRmxhZ0VudW07XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8qKlxyXG4gICAqIEV2ZW50byBlbWVzc28gcXVhbmRvIHNpIHNhbHZhIHVuYSBmb3JtIGUgbm9uIMOoIHN0YXRvIHNwZWNpZmljYXRvIHVuIGVuZHBvaW50IGRhIGNoaWFtYXJlLlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBzYXZlRm9ybUV2ZW50OiBFdmVudEVtaXR0ZXI8Rm9ybT4gPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm0+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEV2ZW50byBlbWVzc28gRE9QTyBhdmVyIGVzZWd1aXRvIHVuYSBjaGlhbWF0YSBhbCBzZXJ2ZXIgcGVyIGlsIHNhbHZhdGFnZ2lvZGkgdW5hIGZvcm0gYWxsJ2VuZHBvaW50IHNwZWNpZmljYXRvLlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBhZnRlclNhdmVGb3JtRXZlbnQ6IEV2ZW50RW1pdHRlcjxGb3JtPiA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybT4oKTtcclxuXHJcbiAgLy8gT3V0IGNvbXBvbmVudGUgZXN0ZXJub1xyXG4gIEBPdXRwdXQoKSBvdXQ6IEV2ZW50RW1pdHRlcjxldmVudE91dD4gPSBuZXcgRXZlbnRFbWl0dGVyPGV2ZW50T3V0PigpO1xyXG5cclxuICAvLyBUcmlnZ2Vyc1xyXG4gIGRpYWxvZ1RyaWdnZXJzUmVmOiBNYXREaWFsb2dSZWY8VGVtcGxhdGVSZWY8YW55Pj47XHJcbiAgQFZpZXdDaGlsZChcImRpYWxvZ1RyaWdnZXJzXCIsIHsgc3RhdGljOiB0cnVlIH0pIGRpYWxvZ1RyaWdnZXJzOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIHNlbGVjdGVkVHJpZ2dlcjogVHJpZ2dlcjtcclxuICB0cmlnZ2Vyc0NvbHVtbnM6IEFycmF5PENvbmZpZ0NvbHVtbj47XHJcbiAgQFZpZXdDaGlsZChcInRyaWdnZXJzVGFibGVcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIHRyaWdnZXJzVGFibGU6IEVxcFRhYmxlQ29tcG9uZW50O1xyXG5cclxuICBzaG93QWxsRmllbGRzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd0dyYWZpY2FQYW5lbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLyBDb250ZXN0dWFsaXphdGlvblxyXG4gIHNlbGVjdGVkQ29udGVzdHVhbGl6YXRpb246IHN0cmluZyA9IG51bGw7XHJcbiAgc2VsZWN0ZWRDb250ZXN0dWFsaXphdGlvblZhbHVlOiBudW1iZXIgPSBudWxsO1xyXG5cclxuICBzaG93RGVsZXRlQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2VsZWN0ZWRGaWVsZHM6IEFycmF5PEJhc2VGaWVsZD4gPSBuZXcgQXJyYXk8QmFzZUZpZWxkPigpO1xyXG5cclxuICAvLyBBSSBFZGl0IGRpYWxvZ1xyXG4gIGRpYWxvZ0FpRWRpdFJlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG4gIEBWaWV3Q2hpbGQoXCJkaWFsb2dBaUVkaXRcIiwgeyBzdGF0aWM6IHRydWUgfSkgZGlhbG9nQWlFZGl0OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIGRpYWxvZ0FpSGlzdG9yeVJlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG4gIEBWaWV3Q2hpbGQoXCJkaWFsb2dBaUhpc3RvcnlcIiwgeyBzdGF0aWM6IHRydWUgfSkgZGlhbG9nQWlIaXN0b3J5OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAvLyBDb250ZXN0dWFsaXp6YXppb25lIGRpYWxvZ1xyXG4gIGRpYWxvZ0NvbnRlc3R1YWxpemF0aW9uUmVmOiBNYXREaWFsb2dSZWY8VGVtcGxhdGVSZWY8YW55Pj47XHJcbiAgQFZpZXdDaGlsZChcImRpYWxvZ0NvbnRlc3R1YWxpemF0aW9uXCIsIHsgc3RhdGljOiB0cnVlIH0pIGRpYWxvZ0NvbnRlc3R1YWxpemF0aW9uOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAvLyBWaXN1YWwgRWRpdG9yXHJcbiAgQFZpZXdDaGlsZChcImRpYWxvZ1ZlVG9vbHRpcFwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBkaWFsb2dWZVRvb2x0aXA6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZChcImRpYWxvZ1ZlUmVvcmRlclwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBkaWFsb2dWZVJlb3JkZXI6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgdmlzdWFsRWRpdG9yQWN0aXZlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdmVTZWxlY3RlZEZpZWxkOiBCYXNlRmllbGQgfCBudWxsID0gbnVsbDtcclxuICB2ZVN3YXBGaWVsZDogQmFzZUZpZWxkIHwgbnVsbCA9IG51bGw7XHJcbiAgZGlhbG9nVmVUb29sdGlwUmVmOiBNYXREaWFsb2dSZWY8VGVtcGxhdGVSZWY8YW55Pj47XHJcbiAgZGlhbG9nVmVSZW9yZGVyUmVmOiBNYXREaWFsb2dSZWY8VGVtcGxhdGVSZWY8YW55Pj47XHJcbiAgdmVTaG93R3JhcGhpY0lucHV0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgdmVHcmFwaGljSGludDogc3RyaW5nID0gJyc7XHJcbiAgdmVBcHBseVRvQWxsT2ZUeXBlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdmVSZW9yZGVyRmllbGRzOiBCYXNlRmllbGRbXSA9IFtdO1xyXG4gIHByaXZhdGUgdmVHcmFwaGljU3VnZ2VzdEFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBnZXQgdmVTZWxlY3RlZEZpZWxkVHlwZU5hbWUoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGZ0ID0gdGhpcy52ZVNlbGVjdGVkRmllbGQ/LkZpZWxkVHlwZTtcclxuICAgIGlmIChmdCA9PSBudWxsKSByZXR1cm4gJyc7XHJcbiAgICByZXR1cm4gKEVxcER5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JDb21wb25lbnQuRklFTERfVFlQRV9MQUJFTFMgYXMgYW55KVtmdF0gPz8gYFRpcG8gJHtmdH1gO1xyXG4gIH1cclxuXHJcbiAgYWlFZGl0UHJvbXB0OiBzdHJpbmcgPSBcIlwiO1xyXG4gIGFpRWRpdEF0dGFjaG1lbnRzOiBBcnJheTx7IGZpbGVOYW1lOiBzdHJpbmc7IGJhc2U2NENvbnRlbnQ6IHN0cmluZzsgbWVkaWFUeXBlOiBzdHJpbmcgfT4gPSBbXTtcclxuICBhaUVkaXRBdXRvc2F2ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGFpRWRpdExvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBhaUVkaXRDb3VudGRvd246IG51bWJlciA9IDA7XHJcbiAgYWlFZGl0RXN0aW1hdGVkU2VjOiBudW1iZXIgPSAwO1xyXG4gIHByaXZhdGUgX2FpQ291bnRkb3duUmVmOiBhbnkgPSBudWxsO1xyXG4gIHByaXZhdGUgX2FpRWRpdENhbmNlbGxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGFpRWRpdElzT3ZlcnRpbWU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93QWlQcm9tcHRIaXN0b3J5OiBib29sZWFuID0gdHJ1ZTtcclxuICBhaUVkaXRGaWVsZENvbnRleHQ6IHsgY29kZTogc3RyaW5nIH0gfCBudWxsID0gbnVsbDtcclxuICAvLyBTZXppb25pIGluIGN1aSDDqCBzdGF0byBzdWRkaXZpc28gbCd1bHRpbW8gcHJvbXB0IGRpIGNyZWF6aW9uZSAoZ2VuZXJhemlvbmUgcGFyYWxsZWxhKTtcclxuICAvLyB2dW90byBxdWFuZG8gbCd1bHRpbWEgY2hpYW1hdGEgQUkgbm9uIGhhIHJpY2hpZXN0byBzcGxpdC5cclxuICBsYXN0UHJvbXB0U3BsaXRzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAvLyBOdW1lcm8gZGkgc3BsaXQgaXBvdGl6emF0aSBkYWxsJ3V0ZW50ZSBwZXIgbGEgc3RpbWEgY29zdG8gbGl2ZSAoMSA9IG5lc3N1bm8gc3BsaXQpLlxyXG4gIC8vIENvbiBzcGxpdCA+IDEgbGUgY2hpYW1hdGUgcGFydG9ubyB0dXR0ZSBpbiBwYXJhbGxlbG86IG5lc3N1bmEgYmVuZWZpY2lhIGRlbGxhIGNhY2hlXHJcbiAgLy8gZGVsIHN5c3RlbSBwcm9tcHQgKHNraWxsKSwgcXVpbmRpIG9nbnVuYSBwYWdhIHBlciBpbnRlcm8gaSB0b2tlbiBza2lsbCArIHByb21wdC5cclxuICAvLyBSYW5nZSByZWFsZSBsYXRvIHNlcnZlciAoRE1BSV9TS0lMTEZPUksubWQsIGZsb29yIDIwMjYtMDcpOiAxIChuZXNzdW5vIHNwbGl0KSBvcHB1cmUgMy0xMiDigJRcclxuICAvLyAyIG5vbiDDqCBwacO5IHVuIHZhbG9yZSBwb3NzaWJpbGUgKHNvdHRvIGxlIDMgc2V6aW9uaSBpbCB3YXJtLXVwIGNhY2hlIG5vbiBjb252aWVuZSBtYWksIHZlZGlcclxuICAvLyBTaG91bGRXYXJtVXBDYWNoZSksIHF1aW5kaSBxdWkgbG8gc2FsdGlhbW8gcGVyIG5vbiBmYXIgc3RpbWFyZSB1biBjb3N0byBwZXIgdW5vIHNjZW5hcmlvIGNoZVxyXG4gIC8vIGlsIHNlcnZlciBub24gcHJvZHVjZSBtYWkuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQUlfTUlOX1NQTElUX0NPVU5UID0gMztcclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBSV9NQVhfU1BMSVRfQ09VTlQgPSAxMjtcclxuICBwcml2YXRlIF9haUVkaXRTcGxpdENvdW50ID0gMTtcclxuICBnZXQgYWlFZGl0U3BsaXRDb3VudCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FpRWRpdFNwbGl0Q291bnQ7XHJcbiAgfVxyXG4gIHNldCBhaUVkaXRTcGxpdENvdW50KHZhbHVlOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IG4gPSBNYXRoLnJvdW5kKE51bWJlcih2YWx1ZSkpO1xyXG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUobikgfHwgbiA8PSAxKSB7XHJcbiAgICAgIHRoaXMuX2FpRWRpdFNwbGl0Q291bnQgPSAxO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBjbGFtcGVkID0gTWF0aC5taW4oRXFwRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbXBvbmVudC5BSV9NQVhfU1BMSVRfQ09VTlQsIG4pO1xyXG4gICAgdGhpcy5fYWlFZGl0U3BsaXRDb3VudCA9IGNsYW1wZWQgPCBFcXBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29tcG9uZW50LkFJX01JTl9TUExJVF9DT1VOVFxyXG4gICAgICA/IEVxcER5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JDb21wb25lbnQuQUlfTUlOX1NQTElUX0NPVU5UXHJcbiAgICAgIDogY2xhbXBlZDtcclxuICB9XHJcblxyXG4gIGluY3JlbWVudEFpRWRpdFNwbGl0Q291bnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFpRWRpdFNwbGl0Q291bnQgPSB0aGlzLmFpRWRpdFNwbGl0Q291bnQgPT09IDFcclxuICAgICAgPyBFcXBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29tcG9uZW50LkFJX01JTl9TUExJVF9DT1VOVFxyXG4gICAgICA6IHRoaXMuYWlFZGl0U3BsaXRDb3VudCArIDE7XHJcbiAgfVxyXG5cclxuICBkZWNyZW1lbnRBaUVkaXRTcGxpdENvdW50KCk6IHZvaWQge1xyXG4gICAgdGhpcy5haUVkaXRTcGxpdENvdW50ID0gdGhpcy5haUVkaXRTcGxpdENvdW50IDw9IEVxcER5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JDb21wb25lbnQuQUlfTUlOX1NQTElUX0NPVU5UXHJcbiAgICAgID8gMVxyXG4gICAgICA6IHRoaXMuYWlFZGl0U3BsaXRDb3VudCAtIDE7XHJcbiAgfVxyXG4gIGFpRmllbGRTdWdnZXN0TG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGZvcm1HcmFwaGljU3VnZ2VzdExvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBmb3JtR3JhcGhpY1N1Z2dlc3RIaW50OiBzdHJpbmcgPSAnJztcclxuICBzaG93Rm9ybUdyYXBoaWNTdWdnZXN0SW5wdXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBmb3JtR3JhcGhpY1Njb3BlOiBzdHJpbmcgPSAnYWxsJztcclxuICBnZW5lcmF0ZUJhY2tncm91bmQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBhaUdlbmVyYXRlQmFja2dyb3VuZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByZXNlbnRGaWVsZFR5cGVPcHRpb25zOiB7IHZhbHVlOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfVtdID0gW107XHJcblxyXG4gIC8vIEFJIERhdGFHZXR0ZXIgc2lsZW50IGxvYWRpbmdcclxuICBwZW5kaW5nQWlEYXRhR2V0dGVyRmllbGRzOiBCYXNlRmllbGRbXSA9IFtdO1xyXG4gIGN1cnJlbnRBaURhdGFHZXR0ZXJGaWVsZDogQmFzZUZpZWxkIHwgbnVsbCA9IG51bGw7XHJcbiAgYWlEYXRhR2V0dGVyTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBnZXQgYWlQcm9tcHRIaXN0b3J5KCk6IHN0cmluZ1tdIHtcclxuICAgIGlmICghdGhpcy5mb3JtPy5BSVByb21wdHMpIHJldHVybiBbXTtcclxuICAgIHRyeSB7IHJldHVybiBKU09OLnBhcnNlKHRoaXMuZm9ybS5BSVByb21wdHMpOyB9IGNhdGNoIHsgcmV0dXJuIFtdOyB9XHJcbiAgfVxyXG5cclxuICAvLyBDb3N0YW50aSBwZXIgbGEgc3RpbWEgZGVsIGNvc3RvIEFJICh0b2tlbiBzdGltYXRpIHBlciB1biBwcm9tcHQgZGkgbWVkaWEgY29tcGxlc3NpdMOgIC8gb3V0cHV0IG1lZGlvO1xyXG4gIC8vIGlsIHByZXp6byBwZXIgdG9rZW4gdmFyaWEgaW52ZWNlIGluIGJhc2UgYWwgbW9kZWxsbyByaWxldmF0byBuZWwgcHJvbXB0LCB2ZWRpIEFJX01PREVMX1BSSUNJTkcpXHJcbiAgLy8gVG9rZW4gZmlzc2kgZGVpIG1vZHVsaSBza2lsbCAoQ09SRSArIENBTVBPKi9HUkFGSUNBKiBjYXJpY2F0aSB2aWEgU0tJTExGT1JLKSBpbnZpYXRpIGNvbWUgc3lzdGVtXHJcbiAgLy8gcHJvbXB0IGFkIE9HTkkgY2hpYW1hdGEgKHVuYSBwZXIgc3BsaXQpLiBTdGltYSBcImFsIG1hc3NpbW9cIjogc29tbWEgZGkgdHV0dGkgaSAyNiBmaWxlXHJcbiAgLy8gRE1BSV9GbGRKc29uXyoubWQgKH40MksgdG9rZW4sIGJ5dGVzLzQsIGRvcG8gbGEgY29tcHJlc3Npb25lIGRpIENPUkUvTU9ESUZJQ0EvR1JBRklDQV9DT1JFIGRlbFxyXG4gIC8vIDIwMjYtMDcpIOKAlCBTS0lMTEZPUksgbm9uIGxpIGNhcmljYSBtYWkgdHV0dGkgaW5zaWVtZSwgbWEgw6ggaWwgbGltaXRlIHN1cGVyaW9yZSByZWFsaXN0aWNvIHZpc3RvXHJcbiAgLy8gY2hlIGlsIGNsaWVudCBub24gc2EgcXVhbGUgc290dG9pbnNpZW1lIHZlcnLDoCBzZWxlemlvbmF0by5cclxuICAvLyBOQjogMTMyLjAwMCAodmFsb3JlIGFuY29yYSBwcmVjZWRlbnRlKSBlcmEgaW4gcmVhbHTDoCBNYWluSW5wdXRUb2tlbnMgc29tbWF0byBzdSA1IGNoaWFtYXRlXHJcbiAgLy8gcGFyYWxsZWxlICh+MjZLL2NoaWFtYXRhKSBlIG5vbiBhbmRhdmEgdXNhdG8gY29tZSBjb3N0YW50ZSBwZXIgc2luZ29sYSBjaGlhbWF0YS5cclxuICBwcml2YXRlIHJlYWRvbmx5IEFJX1NLSUxMX1RPS0VOUyA9IDQyXzAwMDtcclxuICBwcml2YXRlIHJlYWRvbmx5IEFJX1RPS0VOU19QRVJfRklFTEQgPSAxMDA7ICAgIC8vIHN0aW1hIHRva2VuIHBlciBjYW1wbyBkZWwgZm9ybSBzZXJpYWxpenphdG9cclxuICBwcml2YXRlIHJlYWRvbmx5IEFJX09VVFBVVF9UT0tFTlMgPSAzXzUwMDsgIC8vIHN0aW1hIGNvbnNlcnZhdGl2YSBvdXRwdXQgSlNPTiBtb2RpZmljYXRvXHJcbiAgcHJpdmF0ZSByZWFkb25seSBBSV9QREZfQ0hBUlMgPSAxNV8wNjA7IC8vIGZpbmVzdHJhIG1heCBlc3RyYXR0YSBwZXIgYWxsZWdhdG8gUERGXHJcbiAgcHJpdmF0ZSByZWFkb25seSBBSV9DSEFSU19QRVJfVE9LRU4gPSA0OyAgICAgIC8vIGNoYXIvdG9rZW4gbWVkaSBwZXIgdGVzdG8gaXRhbGlhbm9cclxuICBwcml2YXRlIHJlYWRvbmx5IEFJX0VVUl9VU0RfUkFURSA9IDEuMTA7ICAgLy8gdGFzc28gRVVSL1VTRCBhcHByb3NzaW1hdG9cclxuXHJcbiAgLy8gTW9kZWxsbyByaWxldmF0byBpbiB0ZW1wbyByZWFsZSBkYWwgdGVzdG8gZGVsIHByb21wdCBBSSAoXCJIYWlrdVwiL1wiU29ubmV0XCIvXCJPcHVzXCIvXCJGYWJsZVwiKTtcclxuICAvLyBIYWlrdSDDqCBpbCBkZWZhdWx0IHF1YW5kbyBuZWwgcHJvbXB0IG5vbiDDqCBjaXRhdG8gZXNwbGljaXRhbWVudGUgYWxjdW4gbW9kZWxsb1xyXG4gIGdldCBhaUVkaXREZXRlY3RlZE1vZGVsSWQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmV4dHJhY3RNb2RlbEZyb21UZXh0KHRoaXMuYWlFZGl0UHJvbXB0ID8/ICcnKS5tb2RlbElkID8/ICdjbGF1ZGUtaGFpa3UtNC01LTIwMjUxMDAxJztcclxuICB9XHJcblxyXG4gIGdldCBhaUVkaXREZXRlY3RlZE1vZGVsTGFiZWwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBFcXBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29tcG9uZW50LkFJX01PREVMX1BSSUNJTkdbdGhpcy5haUVkaXREZXRlY3RlZE1vZGVsSWRdPy5sYWJlbCA/PyAnSGFpa3UnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgYWlFZGl0UHJpY2luZygpIHtcclxuICAgIHJldHVybiBFcXBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29tcG9uZW50LkFJX01PREVMX1BSSUNJTkdbdGhpcy5haUVkaXREZXRlY3RlZE1vZGVsSWRdXHJcbiAgICAgID8/IEVxcER5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JDb21wb25lbnQuQUlfTU9ERUxfUFJJQ0lOR1snY2xhdWRlLWhhaWt1LTQtNS0yMDI1MTAwMSddO1xyXG4gIH1cclxuXHJcbiAgLy8gQ29uIHNwbGl0ID4gMSBpbCBzZXJ2ZXIgdmFsdXRhIHNlIGNvbnZpZW5lIFwic2NhbGRhcmVcIiBsYSBjYWNoZSBjb24gdW5hIGNoaWFtYXRhIGEgdnVvdG9cclxuICAvLyBwcmltYSBkaSBsYW5jaWFyZSBsZSBOIGNoaWFtYXRlIHBhcmFsbGVsZSAodmVkaSBTaG91bGRXYXJtVXBDYWNoZSBpblxyXG4gIC8vIENsYXVkZUZvcm1HZW5lcmF0b3JTZXJ2aWNlLmNzKTogY29udmllbmUgc29sbyBzZSBjYWNoZVdyaXRlICsgTsOXY2FjaGVSZWFkIDwgTsOXaW5wdXQg4oCUIGNpb8OoXHJcbiAgLy8gc2UgaWwgcmlzcGFybWlvIHN1bGxlIE4gbGV0dHVyZSBzdXBlcmEgaWwgc292cmFwcHJlenpvIGRlbGxhIHNjcml0dHVyYSBpbml6aWFsZS4gUXVpXHJcbiAgLy8gcmVwbGljaGlhbW8gbGEgc3Rlc3NhIGRpc3VndWFnbGlhbnphIGUgdXNpYW1vIGlsIG1pbm9yZSBkZWkgZHVlIGNvc3RpLCBlc2F0dGFtZW50ZSBjb21lIGZhXHJcbiAgLy8gaWwgc2VydmVyIChjaGUgcXVpbmRpIG5vbiBzY2VnbGllIG1haSBsJ29wemlvbmUgcGVnZ2lvcmUpLiBJbCBwcm9tcHQvZm9ybSAoYSBkaWZmZXJlbnphIGRlaVxyXG4gIC8vIHRva2VuIHNraWxsKSBub24gYmVuZWZpY2lhIG1haSBkZWxsYSBjYWNoZTogdmllbmUgcmlmYXR0dXJhdG8gcGVyIGludGVybyBhZCBvZ25pIHNwbGl0LlxyXG4gIHByaXZhdGUgY29tcHV0ZUFpRWRpdFNwbGl0Q29zdHMoKTogeyBub1dhcm11cENvc3Q6IG51bWJlcjsgd2FybVVwQ29zdDogbnVtYmVyOyBvdXRwdXRDb3N0OiBudW1iZXIgfSB7XHJcbiAgICBjb25zdCBwcmljaW5nID0gdGhpcy5haUVkaXRQcmljaW5nO1xyXG4gICAgY29uc3QgZm9ybVRva2VucyA9ICh0aGlzLmZvcm0/LkZpZWxkcz8ubGVuZ3RoID8/IDApICogdGhpcy5BSV9UT0tFTlNfUEVSX0ZJRUxEO1xyXG4gICAgY29uc3QgdmFySW5wdXQgPSAodGhpcy5haUVkaXRQcm9tcHQ/Lmxlbmd0aCA/PyAwKSAvIHRoaXMuQUlfQ0hBUlNfUEVSX1RPS0VOXHJcbiAgICAgICsgdGhpcy5haUVkaXRBdHRhY2htZW50cy5sZW5ndGggKiAodGhpcy5BSV9QREZfQ0hBUlMgLyB0aGlzLkFJX0NIQVJTX1BFUl9UT0tFTik7XHJcbiAgICBjb25zdCBuID0gdGhpcy5haUVkaXRTcGxpdENvdW50O1xyXG4gICAgY29uc3QgcHJvbXB0VG9rZW5zUGVyQ2FsbCA9IGZvcm1Ub2tlbnMgKyB2YXJJbnB1dDtcclxuXHJcbiAgICBjb25zdCBub1dhcm11cENvc3QgPSBuICogKHRoaXMuQUlfU0tJTExfVE9LRU5TICsgcHJvbXB0VG9rZW5zUGVyQ2FsbCkgKiBwcmljaW5nLmlucHV0O1xyXG4gICAgY29uc3Qgd2FybVVwQ29zdCA9IHRoaXMuQUlfU0tJTExfVE9LRU5TICogcHJpY2luZy5jYWNoZVdyaXRlXHJcbiAgICAgICsgbiAqICh0aGlzLkFJX1NLSUxMX1RPS0VOUyAqIHByaWNpbmcuY2FjaGVSZWFkICsgcHJvbXB0VG9rZW5zUGVyQ2FsbCAqIHByaWNpbmcuaW5wdXQpO1xyXG5cclxuICAgIHJldHVybiB7IG5vV2FybXVwQ29zdCwgd2FybVVwQ29zdCwgb3V0cHV0Q29zdDogdGhpcy5BSV9PVVRQVVRfVE9LRU5TICogcHJpY2luZy5vdXRwdXQgfTtcclxuICB9XHJcblxyXG4gIC8vIHRydWUgcXVhbmRvLCBwZXIgbG8gc3BsaXQgaXBvdGl6emF0bywgaWwgd2FybS11cCBjb3N0ZXJlYmJlIG1lbm8gZGVsIHByZXp6byBwaWVubyDigJQgY2lvw6hcclxuICAvLyBxdWFuZG8gaWwgc2VydmVyIChTaG91bGRXYXJtVXBDYWNoZSkgZmFyZWJiZSBkYXZ2ZXJvIHBhcnRpcmUgbGEgY2hpYW1hdGEgYSB2dW90by5cclxuICBnZXQgYWlFZGl0U3BsaXRXYXJtVXBBcHBsaWVzKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuYWlFZGl0U3BsaXRDb3VudCA8PSAxKSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCB7IG5vV2FybXVwQ29zdCwgd2FybVVwQ29zdCB9ID0gdGhpcy5jb21wdXRlQWlFZGl0U3BsaXRDb3N0cygpO1xyXG4gICAgcmV0dXJuIHdhcm1VcENvc3QgPCBub1dhcm11cENvc3Q7XHJcbiAgfVxyXG5cclxuICAvLyBDYWxjb2xhIGlsIGNvc3RvIChVU0QpIGRlbGxhIGNoaWFtYXRhIHByaW5jaXBhbGUgZGF0byBpbCBwcmV6em8gZGEgYXBwbGljYXJlIGFpIHRva2VuIHNraWxsXHJcbiAgLy8gaW4gYXNzZW56YSBkaSBzcGxpdCAoY2FjaGVXcml0ZSBwZXIgaWwgcHJpbW8gdXNvLCBjYWNoZVJlYWQgcGVyIGdsaSB1c2kgc3VjY2Vzc2l2aSkuIENvblxyXG4gIC8vIHNwbGl0ID4gMSB1c2EgaWwgbWlub3JlIHRyYSBjb3N0by1jb24td2FybXVwIGUgY29zdG8tc2VuemEgKHZlZGkgY29tcHV0ZUFpRWRpdFNwbGl0Q29zdHMpLlxyXG4gIHByaXZhdGUgY29tcHV0ZUFpRWRpdENvc3RVc2Qoc2tpbGxUb2tlblByaWNlOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgY29uc3QgbiA9IHRoaXMuYWlFZGl0U3BsaXRDb3VudDtcclxuXHJcbiAgICBpZiAobiA8PSAxKSB7XHJcbiAgICAgIGNvbnN0IHByaWNpbmcgPSB0aGlzLmFpRWRpdFByaWNpbmc7XHJcbiAgICAgIGNvbnN0IGZvcm1Ub2tlbnMgPSAodGhpcy5mb3JtPy5GaWVsZHM/Lmxlbmd0aCA/PyAwKSAqIHRoaXMuQUlfVE9LRU5TX1BFUl9GSUVMRDtcclxuICAgICAgY29uc3QgdmFySW5wdXQgPSAodGhpcy5haUVkaXRQcm9tcHQ/Lmxlbmd0aCA/PyAwKSAvIHRoaXMuQUlfQ0hBUlNfUEVSX1RPS0VOXHJcbiAgICAgICAgKyB0aGlzLmFpRWRpdEF0dGFjaG1lbnRzLmxlbmd0aCAqICh0aGlzLkFJX1BERl9DSEFSUyAvIHRoaXMuQUlfQ0hBUlNfUEVSX1RPS0VOKTtcclxuICAgICAgcmV0dXJuICh0aGlzLkFJX1NLSUxMX1RPS0VOUyAqIHNraWxsVG9rZW5QcmljZSArIChmb3JtVG9rZW5zICsgdmFySW5wdXQpICogcHJpY2luZy5pbnB1dCArIHRoaXMuQUlfT1VUUFVUX1RPS0VOUyAqIHByaWNpbmcub3V0cHV0KSAvIDFfMDAwXzAwMDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB7IG5vV2FybXVwQ29zdCwgd2FybVVwQ29zdCwgb3V0cHV0Q29zdCB9ID0gdGhpcy5jb21wdXRlQWlFZGl0U3BsaXRDb3N0cygpO1xyXG4gICAgcmV0dXJuIChNYXRoLm1pbihub1dhcm11cENvc3QsIHdhcm1VcENvc3QpICsgb3V0cHV0Q29zdCkgLyAxXzAwMF8wMDA7XHJcbiAgfVxyXG5cclxuICBnZXQgYWlFZGl0Q29zdEZpcnN0RXVyKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21wdXRlQWlFZGl0Q29zdFVzZCh0aGlzLmFpRWRpdFByaWNpbmcuY2FjaGVXcml0ZSkgLyB0aGlzLkFJX0VVUl9VU0RfUkFURTtcclxuICB9XHJcblxyXG4gIGdldCBhaUVkaXRDb3N0U3Vic2VxdWVudEV1cigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tcHV0ZUFpRWRpdENvc3RVc2QodGhpcy5haUVkaXRQcmljaW5nLmNhY2hlUmVhZCkgLyB0aGlzLkFJX0VVUl9VU0RfUkFURTtcclxuICB9XHJcblxyXG4gIGZvcm1hdEFpRWRpdENvc3QoZXVyOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGV1ci50b0ZpeGVkKDYpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzTmV3Rm9ybSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5mb3JtPy5JRDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgdXRpbGl0eUhlbHBlclNlcnZpY2U6IFV0aWxpdHlIZWxwZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcclxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZlxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydjb25maWd1cmF0b3JUaGVtZSddIHx8IGNoYW5nZXNbJ2NvbmZpZ3VyYXRvclRoZW1lQ3NzJ10pIHtcclxuICAgICAgdGhpcy5hcHBseVRoZW1lKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGx5VGhlbWUoKTogdm9pZCB7XHJcbiAgICBjb25zdCBlbCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgY29uc3Qgcm9vdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcclxuXHJcbiAgICAvLyBSaW11b3ZlIHZhcnMgcHJlY2VkZW50aSBkYWwgaG9zdCBlIGRhIDpyb290XHJcbiAgICBBcnJheS5mcm9tKGVsLnN0eWxlKS5maWx0ZXIocCA9PiBwLnN0YXJ0c1dpdGgoJy0tY29uZi0nKSkuZm9yRWFjaChwID0+IGVsLnN0eWxlLnJlbW92ZVByb3BlcnR5KHApKTtcclxuICAgIEFycmF5LmZyb20ocm9vdC5zdHlsZSkuZmlsdGVyKHAgPT4gcC5zdGFydHNXaXRoKCctLWNvbmYtJykpLmZvckVhY2gocCA9PiByb290LnN0eWxlLnJlbW92ZVByb3BlcnR5KHApKTtcclxuXHJcbiAgICBjb25zdCBwYXJzZWRGcm9tQ3NzID0gdGhpcy5jb25maWd1cmF0b3JUaGVtZUNzcyA/IHRoaXMucGFyc2VDc3NUaGVtZSh0aGlzLmNvbmZpZ3VyYXRvclRoZW1lQ3NzKSA6IG51bGw7XHJcbiAgICBjb25zdCBtZXJnZWQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCBudWxsID0gKHBhcnNlZEZyb21Dc3MgfHwgdGhpcy5jb25maWd1cmF0b3JUaGVtZSlcclxuICAgICAgPyB7IC4uLihwYXJzZWRGcm9tQ3NzID8/IHt9KSwgLi4uKHRoaXMuY29uZmlndXJhdG9yVGhlbWUgPz8ge30pIH1cclxuICAgICAgOiBudWxsO1xyXG5cclxuICAgIGlmIChtZXJnZWQpIHtcclxuICAgICAgT2JqZWN0LmVudHJpZXMobWVyZ2VkKS5mb3JFYWNoKChbaywgdl0pID0+IGVsLnN0eWxlLnNldFByb3BlcnR5KGssIHYsICdpbXBvcnRhbnQnKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUHJvcGFnYSBpIHZhbG9yaSBlZmZldHRpdmkgKFNDU1MgZGVmYXVsdCArIG92ZXJyaWRlIHRlbWEpIHN1IDpyb290IHBlcmNow6kgaSBkaWFsb2dzXHJcbiAgICAvLyBNYXRlcmlhbCByZW5kZXJpenphbm8gbmVsIGNkay1vdmVybGF5IGZ1b3JpIGRhbGwnaG9zdCBlIG5vbiBlcmVkaXRhbm8gbGUgdmFyIGRpIDpob3N0XHJcbiAgICBjb25zdCBjb21wdXRlZCA9IGdldENvbXB1dGVkU3R5bGUoZWwpO1xyXG4gICAgWyctLWNvbmYtZ3JhZGllbnQnLCAnLS1jb25mLWJnLXBhZ2UnLCAnLS1jb25mLXJhZGl1cycsICctLWNvbmYtbW9kYWwtcmFkaXVzJyxcclxuICAgICAgJy0tY29uZi1hY2NlbnQnLCAnLS1jb25mLWFjY2VudC1yZ2InLCAnLS1jb25mLXByaW1hcnknLCAnLS1jb25mLXByaW1hcnktcmdiJyxcclxuICAgICAgJy0tY29uZi1zdGVwLXNlbGVjdGVkJywgJy0tY29uZi1zdGVwLWVkaXQnLCAnLS1jb25mLXRhYmxlLWhlYWRlci1iZycsXHJcbiAgICAgICctLWNvbmYtc2VhcmNoLWJnJywgJy0tY29uZi10YWJsZS1iZycsICctLWNvbmYtY2FyZC1iZycsICctLWNvbmYtZm9udC1mYW1pbHknLFxyXG4gICAgICAnLS1jb25mLXN0ZXBwZXItaGVhZGVyLWJnJywgJy0tY29uZi1zdGVwcGVyLWNvbnRlbnQtYmcnLCAnLS1jb25mLXN0ZXAtaWNvbi1lZGl0LWJnJyxcclxuICAgICAgJy0tY29uZi1oaW50LWJ0bi1iZycsICctLWNvbmYtaGludC1idG4taG92ZXItYmcnLCAnLS1jb25mLWJ0bi1jb2xvcidcclxuICAgIF0uZm9yRWFjaCh2YXJOYW1lID0+IHtcclxuICAgICAgY29uc3QgdmFsdWUgPSBjb21wdXRlZC5nZXRQcm9wZXJ0eVZhbHVlKHZhck5hbWUpLnRyaW0oKTtcclxuICAgICAgaWYgKHZhbHVlKSByb290LnN0eWxlLnNldFByb3BlcnR5KHZhck5hbWUsIHZhbHVlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwYXJzZUNzc1RoZW1lKGNzczogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XHJcbiAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcclxuICAgIGNvbnN0IHJlZ2V4ID0gLygtLWNvbmYtW146XFxzXSspXFxzKjpcXHMqKFteO31dKykvZztcclxuICAgIGxldCBtYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbDtcclxuICAgIHdoaWxlICgobWF0Y2ggPSByZWdleC5leGVjKGNzcykpICE9PSBudWxsKSB7XHJcbiAgICAgIHJlc3VsdFttYXRjaFsxXS50cmltKCldID0gbWF0Y2hbMl0udHJpbSgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIEdhcmFudGlzY2UgY2hlIGxlIHZhcmlhYmlsaSBDU1MgZGkgZGVmYXVsdCAoZGVmaW5pdGUgaW4gOmhvc3QgU0NTUykgdmVuZ2Fub1xyXG4gICAgLy8gcHJvcGFnYXRlIHN1IDpyb290IGFuY2hlIHF1YW5kbyBjb25maWd1cmF0b3JUaGVtZSBub24gw6ggZm9ybml0b1xyXG4gICAgdGhpcy5hcHBseVRoZW1lKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XHJcbiAgICBBcnJheS5mcm9tKHJvb3Quc3R5bGUpLmZpbHRlcihwID0+IHAuc3RhcnRzV2l0aCgnLS1jb25mLScpKS5mb3JFYWNoKHAgPT4gcm9vdC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShwKSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdNb2RlID0gdGhpcy5kZWJ1Z01vZGU7XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKCduZ09uSW5pdCAtIGNvbmZpZ3VyYXRpb25zJywgdGhpcy5jb25maWd1cmF0aW9ucyk7XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKCduZ09uSW5pdCAtIGZvcm1JRCcsIHRoaXMuZm9ybUlEKTtcclxuXHJcbiAgICB0aGlzLmJhc2VTZXJ2ZXJVcmwgPVxyXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb25zLmR5bmFtaWNNb2R1bGVHZW5lcmFsQ29uZmlnLmJhc2VTZXJ2ZXJVcmw7XHJcbiAgICB0aGlzLmNvbnRleHQgPSB0aGlzLmNvbmZpZ3VyYXRpb25zLmR5bmFtaWNNb2R1bGVHZW5lcmFsQ29uZmlnLmNvbnRleHQ7XHJcbiAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbiA9XHJcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbnMuZHluYW1pY01vZHVsZUdlbmVyYWxDb25maWcuZW5kUG9pbnRDb25maWd1cmF0aW9uO1xyXG4gICAgLy8gdGhpcy5mb3JtSUQgPSB0aGlzLmNvbmZpZ3VyYXRpb25zLmR5bmFtaWNNb2R1bGVHZW5lcmFsQ29uZmlnLmZvcm1JRDtcclxuICAgIHRoaXMudXNlclRva2VuID0gdGhpcy5jb25maWd1cmF0aW9ucy5keW5hbWljTW9kdWxlR2VuZXJhbENvbmZpZy51c2VyVG9rZW47XHJcblxyXG4gICAgdGhpcy5mb3JtID1cclxuICAgICAgdGhpcy5jb25maWd1cmF0aW9ucy5keW5hbWljTW9kdWxlQ29uZmlndXJhdG9yU3BlY2lmaWNDb25maWcuZm9ybTtcclxuICAgIHRoaXMub3JnYUlEID1cclxuICAgICAgdGhpcy5jb25maWd1cmF0aW9ucy5keW5hbWljTW9kdWxlQ29uZmlndXJhdG9yU3BlY2lmaWNDb25maWcub3JnYUlEO1xyXG4gICAgdGhpcy5Vc2VySUQgPVxyXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb25zLmR5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JTcGVjaWZpY0NvbmZpZy5Vc2VySUQ7XHJcbiAgICB0aGlzLmlubmVyRm9ybU1hbmFnbWVudCA9XHJcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbnMuZHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvclNwZWNpZmljQ29uZmlnLmlubmVyRm9ybU1hbmFnbWVudDtcclxuICAgIHRoaXMuaW5uZXJGb3JtUmVmID1cclxuICAgICAgdGhpcy5jb25maWd1cmF0aW9ucy5keW5hbWljTW9kdWxlQ29uZmlndXJhdG9yU3BlY2lmaWNDb25maWcuaW5uZXJGb3JtUmVmO1xyXG5cclxuICAgIHRoaXMuZm9ybS5PcmdhSUQgPSB0aGlzLm9yZ2FJRDtcclxuXHJcbiAgICB0aGlzLmNvbmZpZ3VyZURlZmF1bHRFbmRQb2ludHMoKTtcclxuICAgIHRoaXMuZ2V0Rm9ybUJ5SUQoKTtcclxuICAgIGlmICh0aGlzLmNvbnRleHQpIHtcclxuICAgICAgVXRpbGl0eUhlbHBlclNlcnZpY2UuU2V0Q29udGV4dCh0aGlzLmNvbnRleHQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBjb25maWd1cmFyZSBnbGkgZW5kcG9pbnQgZGEgdXNhcmUgZGkgZGVmYXVsdCBhIHBhcnRpcmUgZGFsbCd1cmwgYmFzZSBkZWwgc2VydmVyXHJcbiAgICogYSBjdWkgc2kgZGV2ZSBjb25uZXR0ZXJlIGUgYWwgdG9rZW4gZGEgcGFzc2FyZSBwZXIgYXV0ZW50aWNhcnNpLlxyXG4gICAqIFNlIGxhIHByb3ByaWV0w6AgYmFzZVNlcnZlclVybCDDqCBudWxsIGUgbm9uIHNvbm8gc3RhdGkgY29uZmlndXJhdGkgaSB2YXJpIGVuZHBvaW50IGFsbG9yYVxyXG4gICAqIG5vbiB2aWVuZSBlc2VndWl0YSBuZXNzdW5hIGNoaWFtYXRhIGh0dHAgcGVyIHJlY3VwZXJhcmUvc2FsdmFyZSBpIGRhdGkuXHJcbiAgICovXHJcbiAgY29uZmlndXJlRGVmYXVsdEVuZFBvaW50cygpIHtcclxuICAgIGlmICghdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24gJiYgdGhpcy5iYXNlU2VydmVyVXJsKSB7XHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uID1cclxuICAgICAgICB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLkNvbmZpZ3VyZURlZmF1bHRFbmRQb2ludHMoXHJcbiAgICAgICAgICB0aGlzLmJhc2VTZXJ2ZXJVcmwsXHJcbiAgICAgICAgICB0aGlzLnVzZXJUb2tlblxyXG4gICAgICAgICk7XHJcbiAgICAgIGlmICh0aGlzLmZvcm1JRCkge1xyXG4gICAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLkZvcm1zLkdldEJ5SURFbmRQb2ludC5QYXJhbXMgPSBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIFBhcmFtTmFtZTogXCJpZFwiLFxyXG4gICAgICAgICAgICBQYXJhbVZhbHVlOiB0aGlzLmZvcm1JRCxcclxuICAgICAgICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgc3RyaW5nU2FuaXRpemVyKHZhbHVlKSB7XHJcbiAgICBpZiAoIVV0aWxpdHlIZWxwZXJTZXJ2aWNlLnN0cmluZ0NoZWNrUGFyZW50ZXNpcyh2YWx1ZSkpIHtcclxuICAgICAgYWxlcnQoXCJlcnJvcmUhIGVyYW5vIHByZXNlbnRpIGRlbGxlIHBhcmVudGVzaS5cIik7XHJcbiAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuICB9XHJcbiAgc2V0TmFtZShOYW1lOiBzdHJpbmcpIHtcclxuICAgIGlmICghdGhpcy5zdHJpbmdTYW5pdGl6ZXIoTmFtZSkpIHtcclxuICAgICAgY29uc3QgUmVnRXhwUGFyZXRlc2lzID0gL1tcXChcXClcXFtcXF1cXHtcXH1dL2c7XHJcbiAgICAgIC8vIFJpbXVvdmkgdHV0dGUgbGUgcGFyZW50ZXNpIG5vbiBiaWxhbmNpYXRlXHJcbiAgICAgIHRoaXMuZm9ybS5OYW1lID0gTmFtZS5yZXBsYWNlKFJlZ0V4cFBhcmV0ZXNpcywgJycpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZm9ybS5JRCA9PSBudWxsKSB7IC8vIHRoaXMuZm9ybS5Db2RlID09IG51bGwgfHwgdGhpcy5mb3JtLkNvZGUgPT0gdW5kZWZpbmVkIHx8IHRoaXMuZm9ybS5Db2RlID09IFwiXCIgKXtcclxuICAgICAgdGhpcy5zZXRDb2RlKHRoaXMuZm9ybS5OYW1lKTtcclxuICAgIH1cclxuICB9XHJcbiAgc2V0Q29kZShDb2RlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc3RyaW5nU2FuaXRpemVyKENvZGUpO1xyXG5cclxuICAgIGNvbnN0IFJlZ0V4cFBsYWluID0gL1teXFx3XS9nO1xyXG4gICAgdGhpcy5mb3JtLkNvZGUgPSBDb2RlLnRvVXBwZXJDYXNlKCkucmVwbGFjZShSZWdFeHBQbGFpbiwgXCJcIik7XHJcbiAgfVxyXG4gIG9taXRfc3BlY2lhbF9jaGFyKGV2ZW50KSB7XHJcbiAgICB2YXIgaztcclxuICAgIGsgPSBldmVudC5rZXlDb2RlOyAvLyAgICAgICAgIGsgPSBldmVudC5rZXlDb2RlOyAgKEJvdGggY2FuIGJlIHVzZWQpXHJcbiAgICBpZiAoayA9PSAzNCkge1xyXG4gICAgICBldmVudC5rZXlDb2RlID0gMDtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyogSU1QT1JUIEZVTkNUSU9OICovXHJcbiAgb25JbXBvcnQoZXZlbnQpIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkRmlsZSA9IGV2ZW50LnRhcmdldC5maWxlc1swXTtcclxuICAgIGNvbnN0IGZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgZmlsZVJlYWRlci5yZWFkQXNUZXh0KHNlbGVjdGVkRmlsZSwgXCJVVEYtOFwiKTtcclxuICAgIGZpbGVSZWFkZXIub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKCdvbkltcG9ydCAtIGZpbGVSZWFkZXIucmVzdWx0LnRvU3RyaW5nKCknLCBmaWxlUmVhZGVyLnJlc3VsdC50b1N0cmluZygpKTtcclxuICAgICAgdGhpcy5pbXBvcnRlZE1vZHVsZSA9IGZpbGVSZWFkZXIucmVzdWx0LnRvU3RyaW5nKCk7XHJcblxyXG4gICAgICBpZiAodGhpcy5pbXBvcnRlZE1vZHVsZSAhPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKGNvbmZpcm0oXCJzdGFpIHBlciBzb3ZyYXNjcml2ZXJlIGlsIG1vZHVsb1wiKSkge1xyXG4gICAgICAgICAgLy8gY2hpYW1vIGlsIHBhcnNlIGNvc8OsIGRhIG5vbiBjcmVhcmUgdW4gcmVmZXJlbmNlQmluZGluZ1xyXG4gICAgICAgICAgdmFyIGltcG9ydGVkRm9ybTogRm9ybSA9IEpTT04ucGFyc2UodGhpcy5pbXBvcnRlZE1vZHVsZSk7XHJcbiAgICAgICAgICBpbXBvcnRlZEZvcm0uSUQgPSBcIlwiO1xyXG4gICAgICAgICAgaW1wb3J0ZWRGb3JtLk5hbWUgPSBpbXBvcnRlZEZvcm0uTmFtZSArIFwiIChJbXBvcnRhdG8pXCI7XHJcblxyXG4gICAgICAgICAgaW1wb3J0ZWRGb3JtID0gdGhpcy5zZXRJbXBvcnRlZEZvcm0oaW1wb3J0ZWRGb3JtKTtcclxuICAgICAgICAgIHRoaXMuc2V0Rm9ybUFuZENvbmZpZ3VyZShpbXBvcnRlZEZvcm0pO1xyXG4gICAgICAgICAgdGhpcy5zZXROYW1lKGltcG9ydGVkRm9ybS5OYW1lKTtcclxuXHJcbiAgICAgICAgICB0aGlzLmNsb3NlSW1wb3J0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGFsZXJ0KFwic2VsZXppb25hIHVuIGZpbGVcIik7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBmaWxlUmVhZGVyLm9uZXJyb3IgPSAoZXJyb3IpID0+IHtcclxuICAgICAgYWxlcnQoXCJzZWxlemlvbmEgdW4gZmlsZSB2YWxpZG8gbyBjb250cm9sbGEgY2hlIG5vbiBzaWEgY29ycm90dG9cIik7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHNldEltcG9ydGVkRm9ybShmb3JtOiBGb3JtKSB7XHJcblxyXG4gICAgLy8gTW9kaWZpY2EgZGVsIGNyZWF0aW9uIHVzZXIgc3UgSW1wb3J0XHJcbiAgICBmb3JtLkNyZWF0aW9uVXNlciA9IHRoaXMuVXNlcklEO1xyXG5cclxuICAgIC8vIE1vZGlmaWNhIGRlaSBGaWVsZCBzdSBJbXBvcnRcclxuICAgIGZvcm0uRmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgIGlmIChmaWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVtcIkVsZW5jbyBpbW1hZ2luaVwiXSkge1xyXG4gICAgICAgIChmaWVsZCBhcyBJbWFnZVNlbGVjdG9yRmllbGQpLkF0dGFjaG1lbnRMaXN0LmZvckVhY2goKGF0dGFjaG1lbnQpID0+IHtcclxuICAgICAgICAgIGF0dGFjaG1lbnQuSUQgPSAwO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGZvcm07XHJcbiAgfVxyXG5cclxuICBpbXBvcnRNb2R1bGUoKSB7XHJcbiAgICB0aGlzLmRpYWxvZ0ltcG9ydFJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dJbXBvcnQsIHtcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgLy8gd2lkdGg6IFwiNzUlXCIsXHJcbiAgICAgIC8vIG1heEhlaWdodDogXCI4MCVcIixcclxuICAgICAgLy8gaGVpZ2h0OiBcIjgwJVwiLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjbG9zZUltcG9ydCgpIHtcclxuICAgIHRoaXMuZGlhbG9nSW1wb3J0UmVmLmNsb3NlKCk7XHJcbiAgfVxyXG4gIC8qIEVORCBJTVBPUlQgRlVOQ1RJT04gKi9cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIEZ1bnppb25lIGRpIGVzcG9ydGF6aW9uZSBtb2R1bG9cclxuICAgKi9cclxuXHJcbiAgZXhwb3J0KCkge1xyXG5cclxuICAgIGNvbnN0IGR5bmFtaWNNb2R1bGVQYXJhbXM6IEFycmF5PEVuZFBvaW50RGF0YVBhcmFtcz4gPVxyXG4gICAgICBuZXcgQXJyYXk8RW5kUG9pbnREYXRhUGFyYW1zPigpO1xyXG4gICAgZHluYW1pY01vZHVsZVBhcmFtcy5wdXNoKHtcclxuICAgICAgUGFyYW1OYW1lOiBcImlkXCIsXHJcbiAgICAgIFBhcmFtVmFsdWU6IHRoaXMuZm9ybUlELFxyXG4gICAgICBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJRdWVyeSBwYXJhbVwiXSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy51dGlsaXR5SGVscGVyU2VydmljZS5SdW5FbmRQb2ludENhbGwoXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLkZvcm1zLkV4cG9ydEJ5SURFbmRQb2ludCxcclxuICAgICAgZHluYW1pY01vZHVsZVBhcmFtcyxcclxuICAgICAgKGJhc2U2NHJlczogc3RyaW5nKSA9PiB7XHJcblxyXG4gICAgICAgIGNvbnN0IG5ld0Jsb2IgPSBuZXcgQmxvYihbYmFzZTY0cmVzXSwgeyB0eXBlOiBcInRleHQvcGxhaW5cIiB9KTtcclxuICAgICAgICBjb25zdCBkYXRhID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwobmV3QmxvYik7XHJcbiAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xyXG4gICAgICAgIGxpbmsuaHJlZiA9IGRhdGE7XHJcbiAgICAgICAgbGluay5kb3dubG9hZCA9IFwiZXhwb3J0X1wiICsgdGhpcy5mb3JtSUQgKyBcIl9mb3JtLnR4dFwiOyAvLyBzZXQgYSBuYW1lIGZvciB0aGUgZmlsZVxyXG4gICAgICAgIGxpbmsuY2xpY2soKTtcclxuXHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHtcclxuICAgICAgICB0aGlzLnNldEZvcm1BbmRDb25maWd1cmUobmV3IEZvcm0oKSk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciByZWN1cGVyYXJlIHR1dHRpIGkgcmVjb3JkIHNhbHZhdGkgcGVyIHVuYSBwYXJ0aWNvbGFyZSBGb3JtLlxyXG4gICAqIExhIGNoaWFtYXRhIHZpZW5lIGVmZmV0dHVhdGEgc29sbyBzZSDDqCBzdGF0byBjb25maWd1cmF0byBsJ2VuZFBvaW50IGRhIHVzYXJlLlxyXG4gICAqL1xyXG4gIGdldEZvcm1CeUlEKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmZvcm1JRCAmJlxyXG4gICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbiAmJlxyXG4gICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5Gb3JtcyAmJlxyXG4gICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5Gb3Jtcy5HZXRCeUlERW5kUG9pbnRcclxuICAgICkge1xyXG4gICAgICBjb25zdCBkeW5hbWljTW9kdWxlUGFyYW1zOiBBcnJheTxFbmRQb2ludERhdGFQYXJhbXM+ID1cclxuICAgICAgICBuZXcgQXJyYXk8RW5kUG9pbnREYXRhUGFyYW1zPigpO1xyXG4gICAgICBkeW5hbWljTW9kdWxlUGFyYW1zLnB1c2goe1xyXG4gICAgICAgIFBhcmFtTmFtZTogXCJpZFwiLFxyXG4gICAgICAgIFBhcmFtVmFsdWU6IHRoaXMuZm9ybUlELFxyXG4gICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy51dGlsaXR5SGVscGVyU2VydmljZS5SdW5FbmRQb2ludENhbGwoXHJcbiAgICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uRm9ybXMuR2V0QnlJREVuZFBvaW50LFxyXG4gICAgICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMsXHJcbiAgICAgICAgKHJlczogRm9ybSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zZXRGb3JtQW5kQ29uZmlndXJlKHJlcyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNldEZvcm1BbmRDb25maWd1cmUobmV3IEZvcm0oKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRGb3JtQW5kQ29uZmlndXJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb25maWd1cm8gbCdleHBvcnQgZGVsIGZvcm1cclxuICAgKi9cclxuXHJcbiAgY29uZmlndXJlRXhwb3J0KHJlczogRm9ybSkge1xyXG5cclxuICAgIC8qIGdldHRpbmcgcmVhZHkgZm9yIGV4cG9ydCAqL1xyXG4gICAgbGV0IGNsb25lID0gbmV3IEZvcm0oKTtcclxuICAgIGNsb25lLkNvZGUgPSBcIklNUE9SVF9cIiArIHJlcy5Db2RlO1xyXG4gICAgY2xvbmUuTmFtZSA9IFwiaW1wb3J0X1wiICsgcmVzLk5hbWU7XHJcbiAgICBjbG9uZS5EZXNjcmlwdGlvbiA9IHJlcy5EZXNjcmlwdGlvbjtcclxuICAgIGNsb25lLkZvcm1TY2FsYXJUeXBlID0gcmVzLkZvcm1TY2FsYXJUeXBlO1xyXG4gICAgY2xvbmUuRm9ybUZpZWxkc0dyb3VwcyA9IHJlcy5Gb3JtRmllbGRzR3JvdXBzO1xyXG4gICAgY2xvbmUuQWN0aW9uc09uUmVjb3JkID0gcmVzLkFjdGlvbnNPblJlY29yZDtcclxuICAgIGNsb25lLkZpZWxkcyA9IHJlcy5GaWVsZHM7XHJcbiAgICBjbG9uZS5PYmplY3RGaWVsZHMgPSByZXMuT2JqZWN0RmllbGRzO1xyXG4gICAgY2xvbmUuSW5uZXJGb3JtcyA9IHJlcy5Jbm5lckZvcm1zO1xyXG4gICAgY2xvbmUuUm9vdEVudGl0eUlEID0gcmVzLlJvb3RFbnRpdHlJRDtcclxuICAgIGNsb25lLk9yZ2FJRCA9IHJlcy5PcmdhSUQ7XHJcblxyXG4gICAgdGhpcy5kb3dubG9hZE5hbWUgPSBcImV4cG9ydF9cIiArIHJlcy5OYW1lO1xyXG4gICAgdGhpcy5zdHJpbmdpZmllZEZvcm0gPSBKU09OLnN0cmluZ2lmeShjbG9uZSk7XHJcbiAgICB0aGlzLmRvd25sb2FkSnNvbkhyZWYgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKFxyXG4gICAgICBcImRhdGE6dGV4dC9qc29uO2NoYXJzZXQ9VVRGLTgsXCIgK1xyXG4gICAgICBlbmNvZGVVUklDb21wb25lbnQodGhpcy5zdHJpbmdpZmllZEZvcm0pXHJcbiAgICApO1xyXG5cclxuICAgIC8qIGVuZCBleHBvcnQgKi9cclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gaW52b2NhdG8gYWwgY2FtYmlvIGRlbCB0aXBvIGRpIHZpc3VhbGl6emF6aW9uZSBkZWxsYSBmb3JtLlxyXG4gICAqIFNlIGwndXRlbnRlIHNjZWdsaWUgdW5hIHZpc3VhbGl6emF6aW9uZSByYWdncnVwcGF0YSBpbCBtZXRvZG8gYWdnaXVuZ2UgYWwgRm9ybUdyb3VwIHVuIG51b3ZvXHJcbiAgICogY29udHJvbGxvIHBlciBsJ2FycmF5IGRlaSBub21pIGRlbGxlIHNlemlvbmkgZGEgY3JlYXJlLlxyXG4gICAqL1xyXG4gIG9uQ2hhbmdlRm9ybVNjYWxhclR5cGUoKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtLkZvcm1TY2FsYXJUeXBlICE9IEZvcm1TY2FsYXJUeXBlRW51bS5TZW1wbGljZSkge1xyXG4gICAgICBpZiAoIXRoaXMuZm9ybUZvcm1Hcm91cC5jb250YWlucyhcIkZvcm1GaWVsZHNHcm91cHNcIikpIHtcclxuICAgICAgICB0aGlzLmZvcm1Gb3JtR3JvdXAucmVtb3ZlQ29udHJvbChcIkZvcm1GaWVsZHNHcm91cHNcIik7XHJcbiAgICAgICAgdGhpcy5mb3JtRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIkZvcm1GaWVsZHNHcm91cHNcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wodGhpcy5mb3JtLkZvcm1GaWVsZHNHcm91cHMsIFtcclxuICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgQXJyYXlWYWxpZGF0b3JzLm1pbkxlbmdodCgxKSxcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5mb3JtLkZvcm1GaWVsZHNHcm91cHMgPSBudWxsO1xyXG4gICAgICBpZiAodGhpcy5mb3JtRm9ybUdyb3VwLmNvbnRhaW5zKFwiRm9ybUZpZWxkc0dyb3Vwc1wiKSlcclxuICAgICAgICB0aGlzLmZvcm1Gb3JtR3JvdXAucmVtb3ZlQ29udHJvbChcIkZvcm1GaWVsZHNHcm91cHNcIik7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZvcm1Gb3JtR3JvdXAudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy5jb25maWd1cmVDb2x1bW5zKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFdmVudG8gaW52b2NhdG8gYWwga2V5dXAgbmVsbCdpbnB1dCBwZXIgaW5zZXJpcmUgaSBub21pIGRlbGxlIHNlemlvbmkgcGVyIGxhIHZpc3VhbGl6emF6aW9uZVxyXG4gICAqIHJhZ2dydXBwYXRhIGRlbGxhIGZvcm0uIFF1YW50byBsJ3V0ZW50ZSBwcmVtZSBpbCB0YXN0byBpbnZpbyB2aWVuZSBhZ2dpdW50byBpbCBudW92byBub21lIGFsbGVcclxuICAgKiBzZXppb25pIGRpc3BvYmlsaSBzZSBub24gbmUgZXNpc3RlIHVuYSBjb24gbG8gc3Rlc3NvIG5vbWUuXHJcbiAgICogQHBhcmFtIGV2ZW50IEV2ZW50byBjaGUgcmFwcHJlc2VudGEgaWwga2V5dXAgc3VsbGEgdGFzdGllcmEuXHJcbiAgICovXHJcbiAgb25Gb3JtRmllbGRHcm91cE5hbWVLZXlVcChldmVudCkge1xyXG4gICAgaWYgKGV2ZW50LmNvZGUgPT09IFwiRW50ZXJcIiB8fCBldmVudC5jb2RlID09PSBcIk51bXBhZEVudGVyXCIpIHtcclxuICAgICAgaWYgKCF0aGlzLmZvcm0uRm9ybUZpZWxkc0dyb3Vwcykge1xyXG4gICAgICAgIHRoaXMuZm9ybS5Gb3JtRmllbGRzR3JvdXBzID0gbmV3IEFycmF5PEZvcm1GaWVsZEdyb3VwPigpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChcclxuICAgICAgICAhdGhpcy5mb3JtLkZvcm1GaWVsZHNHcm91cHMuZmluZChcclxuICAgICAgICAgIChuKSA9PiBuLk5hbWUgPT0gdGhpcy5mb3JtRmllbGRHcm91cE5hbWVcclxuICAgICAgICApXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuZm9ybS5Gb3JtRmllbGRzR3JvdXBzLnB1c2goeyBOYW1lOiB0aGlzLmZvcm1GaWVsZEdyb3VwTmFtZSB9KTtcclxuICAgICAgfVxyXG4gICAgICAvLyBJbXBvc3RvIGlsIG51b3ZvIHZhbG9yZSBkZWwgRm9ybUNvbnRyb2wgcGVyIGFnZ2lvcm5hcmUgbG8gc3RhdG8gZGVsbGEgZm9ybS5cclxuICAgICAgdGhpcy5mb3JtRm9ybUdyb3VwLmNvbnRyb2xzW1wiRm9ybUZpZWxkc0dyb3Vwc1wiXS5zZXRWYWx1ZShcclxuICAgICAgICB0aGlzLmZvcm0uRm9ybUZpZWxkc0dyb3Vwc1xyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmZvcm1GaWVsZEdyb3VwTmFtZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkR3JvdXBPcmRpbmFsUG9zaXRpb24oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgcmltdW92ZXJlIGxhIHNlemlvbmUgc2VsZXppb25hdGEgZGEgcXVlbGxlIGRpc3BvbmliaWxpIHBlciBsYSBmb3JtLlxyXG4gICAqIEBwYXJhbSBncm91cE5hbWUgTm9tZSBkZWxsYSBzZXppb25lIGRhIGVsaW1pbmFyZS5cclxuICAgKi9cclxuICBvbkRlbGV0ZUZvcm1GaWVsZEdyb3VwTmFtZShncm91cE5hbWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5mb3JtLkZvcm1GaWVsZHNHcm91cHMuc3BsaWNlKFxyXG4gICAgICB0aGlzLmZvcm0uRm9ybUZpZWxkc0dyb3Vwcy5maW5kSW5kZXgoKGcpID0+IGcuTmFtZSA9PT0gZ3JvdXBOYW1lKSxcclxuICAgICAgMVxyXG4gICAgKTtcclxuICAgIC8vIEltcG9zdG8gaWwgbnVvdm8gdmFsb3JlIGRlbCBGb3JtQ29udHJvbCBwZXIgYWdnaW9ybmFyZSBsbyBzdGF0byBkZWxsYSBmb3JtLlxyXG4gICAgdGhpcy5mb3JtRm9ybUdyb3VwLmNvbnRyb2xzW1wiRm9ybUZpZWxkc0dyb3Vwc1wiXS5zZXRWYWx1ZShcclxuICAgICAgdGhpcy5mb3JtLkZvcm1GaWVsZHNHcm91cHNcclxuICAgICk7XHJcbiAgICAvLyBTZSBlc2lzdG9ubyBGaWVsZCBsZWdhdGkgYWxsYSBzZXppb25lIGNoZSBzaSB2dW9sZSBlbGltaW5hcmUgYWxsb3JhIHJvbXBvIGlsIGxlZ2FtZS5cclxuICAgIGlmICh0aGlzLmZvcm0uRmllbGRzLmZpbmQoKGYpID0+IGYuRmllbGRHcm91cCA9PSBncm91cE5hbWUpKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5GaWVsZHMuZmlsdGVyKChmKSA9PiBmLkZpZWxkR3JvdXAgPT0gZ3JvdXBOYW1lKS5mb3JFYWNoKFxyXG4gICAgICAgIChmKSA9PiAoZi5GaWVsZEdyb3VwID0gbnVsbClcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0Rm9ybUZpZWxkR3JvdXBPcmRpbmFsUG9zaXRpb24oKTtcclxuICB9XHJcblxyXG5cclxuICBvbkVkaXRGb3JtRmllbGRHcm91cE5hbWUoZm9ybUZpZWxkR3JvdXA6IEZvcm1GaWVsZEdyb3VwKSB7XHJcblxyXG4gICAgRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UuUHJvbXB0KFxyXG4gICAgICBcIk1vZGlmaWNhIGlsIG5vbWVcIixcclxuICAgICAgKG5hbWUpID0+IHtcclxuICAgICAgICBmb3JtRmllbGRHcm91cC5OYW1lID0gbmFtZTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgfVxyXG5cclxuICAvKiogQ2xvbmEgdW4gb2dnZXR0byBlc2NsdWRlbmRvIHJpZmVyaW1lbnRpIGNpcmNvbGFyaSBlIEZvcm1Gb3JtR3JvdXAgKi9cclxuICBwcml2YXRlIHNhZmVDbG9uZTxUPihvYmo6IFQpOiBUIHtcclxuICAgIGNvbnN0IHNlZW4gPSBuZXcgV2Vha1NldCgpO1xyXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqLCAoa2V5LCB2YWx1ZSkgPT4ge1xyXG4gICAgICBpZiAoa2V5ID09PSAnRm9ybUZvcm1Hcm91cCcpIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHNlZW4uaGFzKHZhbHVlKSkgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICBzZWVuLmFkZCh2YWx1ZSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGNoaWFtYXRvIHF1YW5kbyBzaSB2dW9sZSBhZ2dpdW5nZXJlIHVuIG51b3ZvIGNhbXBvIG8gc2kgdnVvbGUgbW9kaWZpY2FyZSB1bm8gZXNpc3RlbnRlLlxyXG4gICAqIE1lbW9yaXp6YSBsJ2V2ZW50dWFsZSBGaWVsZCBzY2VsdG8gb25lIGNyZWEgdW5vIG51b3ZvIHByaW1hIGRpIGFwcmlyZSBpbCBkaWFsb2cgcGVyIG1vZGlmaWNhcmxvL2FnZ2l1bmdlcmxvLlxyXG4gICAqIEBwYXJhbSBmaWVsZCBPZ2dldHRvIEJhc2VGaWVsZCBkYSBtb2RpZmljYXJlLiBTZSBudWxsIG5lIHZpZW5lIGNyZWF0YSB1bmEgbnVvdmEgaXN0YW56YSBwZXIgbCdhZ2dpdW50YS5cclxuICAgKi9cclxuICBvcGVuRmllbGREaWFsb2coZmllbGQ6IEJhc2VGaWVsZCA9IG51bGwpIHtcclxuXHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwib3BlbkZpZWxkRGlhbG9nXCIsIGZpZWxkKTtcclxuXHJcbiAgICBpZiAoZmllbGQpIHtcclxuICAgICAgdGhpcy5pbmRleFNlbGVjdGVkRmllbGQgPSB0aGlzLmZvcm0uRmllbGRzLmluZGV4T2YoZmllbGQpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRmllbGQgPSB0aGlzLnNhZmVDbG9uZShmaWVsZCk7XHJcblxyXG4gICAgICAvLyBEYXRvIGNoZSBjb24gaWwgSlNPTi5wYXJzZSBzaSBwZXJkZSBwZXIgc3RyYWRhIGxhIGZvcm11bGEsIGxhIHJpbWV0dG8gZG9wby5cclxuICAgICAgLy8gVGFudG8gb3JhbWFpIGlsIHJpZmVyaW1lbnRvIGNvbiBcImZpZWxkXCIgw6ggc3RhdG8gcGVyc28gZSBzdGlhbW8gcGFzc2FuZG8gdW5hIHN0cmluZ2FcclxuICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkLkZvcm11bGEgPSBmaWVsZC5Gb3JtdWxhO1xyXG5cclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRGaWVsZC5BbnN3ZXJTdHlsZSA9PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkLkFuc3dlclN0eWxlID0geyBJbkxpc3RWaWV3OiB0cnVlLCBWaXNpYmxlSWY6IG51bGwsIEZpZWxkc3R5bGVDU1M6IFwiXCIsIExhYmVsc3R5bGVDU1M6IFwiXCIsIENvbFNwYW5TaXplczogW10sIEludmlzaWJpbGl0eTogRmllbGRJbnZpc2liaWxpdHlFbnVtLk5BU0NPU1RPIH07XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZCA9IG5ldyBCYXNlRmllbGQoKTtcclxuICAgICAgdGhpcy5pbmRleFNlbGVjdGVkRmllbGQgPSBudWxsO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRpYWxvZ0ZpZWxkUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ0ZpZWxkLCB7XHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgIHdpZHRoOiBcIjc1JVwiLFxyXG4gICAgICBoZWlnaHQ6IFwiODAlXCIsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBjaGUgc2FsdmEgaWwgY2FtcG8gYXBwZW5hIGNyZWF0byBvIG1vZGlmaWNhdG8uXHJcbiAgICogUHJpbWEgZGVsIHNhbHZhdGFnZ2lvIGNvbnRyb2xsYSBzZSBlc2lzdGUgdW4gYWx0cm8gY2FtcG8gY29uIGxhIHN0ZXNzYSBsYWJlbCwgaW4gcXVlc3RvXHJcbiAgICogY2FzZSBnZW5lcmUgdW4gZXJyb3JlIChpIGNhbXBpIGRldm9ubyBhdmVyZSBub21pLCBlIHF1aW5kaSBsYWJlbCwgdW5pdm9jaGUgLSBpIG5vbWkgdmVuZ29ub1xyXG4gICAqIHJpY2F2YXRpIHVuZW5kbyBsZSBwYXJvbGUgY2hlIGZvcm1hbm8gbGEgbGFiZWwgdHJhbWl0ZSBcIl9cIikuXHJcbiAgICogQHBhcmFtIGZpZWxkIENhbXBvIGRhIHNhbHZhcmVcclxuICAgKiBAcGFyYW0gcmVvcGVuIHNlIHByZXNlbnRlIHJpYXByZSBsYSBkaWFsb2cgZGkgbW9kaWZpY2EgZGVsIGNhbXBvIHBlc2NhbmRvIGRhbGxhIGxpc3RhIGlsIHByb3NzaW1vIGluIGNhc28gZGkgdmFsb3JlIFsxXSBvIGlsIHByZWNlZGVudGUgaW4gY2FzbyBkaSB2YWxvcmUgWy0xXVxyXG4gICAqL1xyXG4gIG9uU2F2ZUZpZWxkKGV2OiB7IGZpZWxkOiBCYXNlRmllbGQsIHJlb3BlbjogbnVtYmVyIH0pIHtcclxuICAgIGxldCBmaWVsZCA9IGV2LmZpZWxkO1xyXG4gICAgbGV0IHJlb3BlbiA9IGV2LnJlb3BlbjtcclxuXHJcbiAgICAvLyBzZSBjJ8OoIGlsIGNhbXBvXHJcbiAgICBpZiAoZmllbGQpIHtcclxuICAgICAgLy8gY29udHJvbGxvIGNoZSBub24gY2kgc2lhIHVuIGFsdHJvIGNhbXBvIGNvbiBsbyBzdGVzc28gY29kZSAobGFiZWwpIGUgbm9uIHNpYSBlc3NvIHN0ZXNzb1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5mb3JtLkZpZWxkcyAmJlxyXG4gICAgICAgIHRoaXMuZm9ybS5GaWVsZHMuZmluZChcclxuICAgICAgICAgIChmLCBpKSA9PlxyXG4gICAgICAgICAgICBmLkxhYmVsID09PSBmaWVsZC5MYWJlbCAmJlxyXG4gICAgICAgICAgICAodGhpcy5pbmRleFNlbGVjdGVkRmllbGQgPT0gbnVsbFxyXG4gICAgICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgICAgIDogdGhpcy5pbmRleFNlbGVjdGVkRmllbGQgIT09IGkpXHJcbiAgICAgICAgKVxyXG4gICAgICApIHtcclxuICAgICAgICBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5XYXJuaW5nKFxyXG4gICAgICAgICAgXCJJbXBvc3NpYmlsZSBpbnNlcmlyZSBkdWUgY2FtcGkgY29uIGxvIHN0ZXNzbyBDb2RpY2UuXCJcclxuICAgICAgICApO1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkltcG9zc2liaWxlIGluc2VyaXJlIGR1ZSBjYW1waSBjb24gbG8gc3Rlc3NvIENvZGljZS5cIik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIHNlIGhvIHVuIGluZGljZSBpbiBjdWkgaW5zZXJpcmUgaWwgY2FtcG8gKHZlcm9zaW1pbG1lbnRlIHNvbm8gaW4gbW9kaWZpY2EpXHJcbiAgICAgIGlmICh0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZCAhPSBudWxsICYmIHRoaXMuaW5kZXhTZWxlY3RlZEZpZWxkID49IDApIHtcclxuICAgICAgICB0aGlzLmZvcm0uRmllbGRzW3RoaXMuaW5kZXhTZWxlY3RlZEZpZWxkXSA9IGZpZWxkO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIMOoIHVuIGNhbXBvIG51b3ZvXHJcbiAgICAgICAgaWYgKCF0aGlzLmZvcm0uRmllbGRzKSB7XHJcbiAgICAgICAgICAvLyBzZSDDqCBpbCBwcmltbyBjYW1wbyBjaGUgc3RvIGluc2VyZW5kbyBwcmVwYXJvIHVuIGFycmF5XHJcbiAgICAgICAgICB0aGlzLmZvcm0uRmllbGRzID0gbmV3IEFycmF5PEJhc2VGaWVsZD4oKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5mb3JtLkZpZWxkcy5wdXNoKGZpZWxkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJvblNhdmVGaWVsZFwiLCB0aGlzLmZvcm0pXHJcbiAgICB0aGlzLmNsb3NlRmllbGREaWFsb2coKTtcclxuICAgIHRoaXMuc2V0RmllbGRPcmRpbmFsUG9zaXRpb24oKTtcclxuICAgIHRoaXMucmVsb2FkRmllbGRzVGFibGUoKTtcclxuICAgIHRoaXMucmVmcmVzaEZpZWxkVHlwZU9wdGlvbnMoKTtcclxuXHJcbiAgICBpZiAocmVvcGVuICE9IDApIHtcclxuICAgICAgbGV0IG5ld0ZpZWxkID0gdGhpcy5mb3JtLkZpZWxkc1t0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZCArIHJlb3Blbl07XHJcbiAgICAgIHRoaXMub3BlbkZpZWxkRGlhbG9nKG5ld0ZpZWxkKVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnZpc3VhbEVkaXRvckFjdGl2ZSkge1xyXG4gICAgICB0aGlzLnJlZnJlc2hQcmV2aWV3KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gY2hlIGNvbnRyb2xsYSBzZSBsbyBzdGVwIHBlciBsJ2FnZ2l1bnRhIGRlaSBjYW1waSBuZWxsYSBmb3JtIMOoIGNvbmNsdXNvLlxyXG4gICAqIEByZXR1cm5zIFNlIFRSVUUgbG8gc3RlcCB2aWVuZSBjb25zaWRlcmF0byBjb21wbGV0YXRvIGVkIMOoIHBvc3NiaWxlIHBhc3NhcmUgYWwgc3VjY2Vzc2l2by5cclxuICAgKi9cclxuICBpc0ZpZWxkU3RlcENvbXBsZXRlZCgpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5mb3JtLkZpZWxkcykge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuZm9ybS5Gb3JtU2NhbGFyVHlwZSAhPSBGb3JtU2NhbGFyVHlwZUVudW0uU2VtcGxpY2UgJiZcclxuICAgICAgdGhpcy5mb3JtLkZpZWxkcy5maW5kKChmKSA9PiAhZi5GaWVsZEdyb3VwKVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmZvcm0uRmllbGRzLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGFwcmlyZSBpbCBkaWFsb2cgZGkgY3JlYXppb25lL21vZGlmaWNhIGRlbGxlIGZvcm0gZGkgZGV0dGFnbGlvLlxyXG4gICAqIFNlIGlsIHBhcmFtZXRybyBwYXNzYXRvIMOoIG51bGwgc29ubyBpbiBhZ2dpdW50YSBhbHRyaW1lbnRpIHNvbm8gaW4gbW9kaWZpY2EuXHJcbiAgICogQHBhcmFtIGlubmVuckZvcm0gRm9ybSBkaSBkZXR0YWdsaW8gZGEgbW9kaWZpY2FyZSAoc2UgbnVsbCBhbGxvcmEgdmFkbyBpbiBhZGQpLlxyXG4gICAqL1xyXG4gIG9wZW5Jbm5lckZvcm1EaWFsb2coaW5uZW5yRm9ybTogRm9ybSA9IG51bGwpIHtcclxuICAgIHRoaXMuaW5uZXJGb3JtQ29uZmlnID0gbmV3IER5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JDb25maWcoKTtcclxuICAgIHRoaXMuaW5uZXJGb3JtQ29uZmlnLmR5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JTcGVjaWZpY0NvbmZpZy5pbm5lckZvcm1NYW5hZ21lbnQgPVxyXG4gICAgICB0cnVlO1xyXG4gICAgLy8gdGhpcy5pbm5lckZvcm1Db25maWcuZHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvclNwZWNpZmljQ29uZmlnLmZvcm1cclxuICAgIC8vIHRoaXMuaW5uZXJGb3JtQ29uZmlnLmR5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JTcGVjaWZpY0NvbmZpZy5mb3JtLk9sZE5hbWVcclxuICAgIC8vIHRoaXMuaW5uZXJGb3JtQ29uZmlnLmR5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JTcGVjaWZpY0NvbmZpZy5pbm5lckZvcm1SZWZcclxuICAgIC8vIFtmb3JtXT1cInNlbGVjdGVkSW5uZXJGb3JtXCJcclxuICAgIC8vIFtpbm5lckZvcm1NYW5hZ21lbnRdPVwidHJ1ZVwiXHJcbiAgICAvLyBbaW5uZXJGb3JtUmVmXT1cImRpYWxvZ0lubmVyRm9ybVJlZlwiXHJcblxyXG4gICAgaWYgKGlubmVuckZvcm0pIHtcclxuICAgICAgdGhpcy5pbmRleFNlbGVjdGVkSW5uZXJGb3JtID0gdGhpcy5mb3JtLklubmVyRm9ybXMuaW5kZXhPZihpbm5lbnJGb3JtKTtcclxuXHJcbiAgICAgIC8vIHRoaXMuc2VsZWN0ZWRJbm5lckZvcm0gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGlubmVuckZvcm0pKTtcclxuICAgICAgLy8gdGhpcy5zZWxlY3RlZElubmVyRm9ybS5PbGROYW1lID0gaW5uZW5yRm9ybS5OYW1lO1xyXG4gICAgICB0aGlzLmlubmVyRm9ybUNvbmZpZy5keW5hbWljTW9kdWxlQ29uZmlndXJhdG9yU3BlY2lmaWNDb25maWcuZm9ybSA9XHJcbiAgICAgICAgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShpbm5lbnJGb3JtKSk7XHJcbiAgICAgIHRoaXMuaW5uZXJGb3JtQ29uZmlnLmR5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JTcGVjaWZpY0NvbmZpZy5mb3JtLk9sZE5hbWUgPVxyXG4gICAgICAgIGlubmVuckZvcm0uTmFtZTtcclxuXHJcbiAgICAgIHRoaXMuaW5kZXhTZWxlY3RlZEZpZWxkID0gdGhpcy5mb3JtLkZpZWxkcy5maW5kSW5kZXgoXHJcbiAgICAgICAgKGYpID0+IGYuTGFiZWwgPT09IGlubmVuckZvcm0uTmFtZVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gdGhpcy5zZWxlY3RlZElubmVyRm9ybSA9IG5ldyBGb3JtKCk7XHJcbiAgICAgIHRoaXMuaW5uZXJGb3JtQ29uZmlnLmR5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JTcGVjaWZpY0NvbmZpZy5mb3JtID1cclxuICAgICAgICBuZXcgRm9ybSgpO1xyXG4gICAgICB0aGlzLmluZGV4U2VsZWN0ZWRJbm5lckZvcm0gPSBudWxsO1xyXG4gICAgICB0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLmRpYWxvZ0lubmVyRm9ybVJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dJbm5lckZvcm0sIHtcclxuXHJcbiAgICB0aGlzLmlubmVyRm9ybUNvbmZpZy5keW5hbWljTW9kdWxlQ29uZmlndXJhdG9yU3BlY2lmaWNDb25maWcuaW5uZXJGb3JtUmVmID1cclxuICAgICAgdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ0lubmVyRm9ybSwge1xyXG4gICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgICB3aWR0aDogXCI4NSVcIixcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gc2NhdGVuYXRvIGFsIHNhbHZhdGFnZ2lvIGRpIHVuYSBmb3JtIGRpIGRldHRhZ2xpby5cclxuICAgKiBAcGFyYW0gZXZlbnQgRm9ybSBjcmVhdGEvbW9kaWZpY2F0YSBkYWxsJ3V0ZW50ZS4gU2Ugw6ggbnVsbCBhbGxvcmEgbCd1dGVudGUgaGEgYWJiYW5kb25hdG8gbGEgY29uZmlndXJhemlvbmUuXHJcbiAgICovXHJcbiAgb25TYXZlT3JFeGl0SW5uZXJGb3JtKGV2ZW50OiBGb3JtKSB7XHJcbiAgICBpZiAoZXZlbnQgIT0gbnVsbCkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5mb3JtLk5hbWUgPT09IGV2ZW50Lk5hbWUgfHxcclxuICAgICAgICAodGhpcy5mb3JtLklubmVyRm9ybXMgJiZcclxuICAgICAgICAgIHRoaXMuZm9ybS5Jbm5lckZvcm1zLmZpbmQoXHJcbiAgICAgICAgICAgIChhLCBpKSA9PlxyXG4gICAgICAgICAgICAgIGEuTmFtZSA9PT0gZXZlbnQuTmFtZSAmJlxyXG4gICAgICAgICAgICAgICh0aGlzLmluZGV4U2VsZWN0ZWRJbm5lckZvcm0gPT0gbnVsbFxyXG4gICAgICAgICAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgICAgICAgICA6IHRoaXMuaW5kZXhTZWxlY3RlZElubmVyRm9ybSAhPT0gaSlcclxuICAgICAgICAgICkpIHx8XHJcbiAgICAgICAgKHRoaXMuZm9ybS5GaWVsZHMgJiZcclxuICAgICAgICAgIHRoaXMuaW5kZXhTZWxlY3RlZElubmVyRm9ybSA9PSBudWxsICYmXHJcbiAgICAgICAgICB0aGlzLmZvcm0uRmllbGRzLmZpbmQoXHJcbiAgICAgICAgICAgIChmLCBpKSA9PlxyXG4gICAgICAgICAgICAgIGYuTGFiZWwgPT09IGV2ZW50Lk5hbWUgJiZcclxuICAgICAgICAgICAgICAodGhpcy5pbmRleFNlbGVjdGVkRmllbGQgPT0gbnVsbFxyXG4gICAgICAgICAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgICAgICAgICA6IHRoaXMuaW5kZXhTZWxlY3RlZEZpZWxkICE9PSBpKVxyXG4gICAgICAgICAgKSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UuV2FybmluZyhcclxuICAgICAgICAgIFwiSW1wb3NzaWJpbGUgaW5zZXJpcmUgZHVlIGZvcm0gZGkgZGV0dGFnbGlvIGNvbiBsbyBzdGVzc28gbm9tZS5cIlxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICAgXCJJbXBvc3NpYmlsZSBpbnNlcmlyZSBkdWUgZm9ybSBkaSBkZXR0YWdsaW8gY29uIGxvIHN0ZXNzbyBub21lLlwiXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgaW5uZXJGb3JtRmllbGQ6IEJhc2VGaWVsZCA9IG5ldyBCYXNlRmllbGQoKTtcclxuICAgICAgaW5uZXJGb3JtRmllbGQuTmFtZSA9IGV2ZW50Lk5hbWUuc3BsaXQoXCIgXCIpLmpvaW4oXCJfXCIpO1xyXG4gICAgICBpbm5lckZvcm1GaWVsZC5MYWJlbCA9IGV2ZW50Lk5hbWU7XHJcbiAgICAgIGlubmVyRm9ybUZpZWxkLkZpZWxkVHlwZSA9IEZpZWxkVHlwZUVudW1bXCJGb3JtIGRpIGRldHRhZ2xpb1wiXTtcclxuICAgICAgaW5uZXJGb3JtRmllbGQuRmllbGRHcm91cCA9XHJcbiAgICAgICAgdGhpcy5pbmRleFNlbGVjdGVkRmllbGQgIT0gbnVsbFxyXG4gICAgICAgICAgPyB0aGlzLmZvcm0uRmllbGRzW3RoaXMuaW5kZXhTZWxlY3RlZEZpZWxkXS5GaWVsZEdyb3VwXHJcbiAgICAgICAgICA6IG51bGw7XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5pbmRleFNlbGVjdGVkSW5uZXJGb3JtICE9IG51bGwgJiZcclxuICAgICAgICB0aGlzLmluZGV4U2VsZWN0ZWRJbm5lckZvcm0gPj0gMFxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmZvcm0uSW5uZXJGb3Jtc1t0aGlzLmluZGV4U2VsZWN0ZWRJbm5lckZvcm1dID0gZXZlbnQ7XHJcbiAgICAgICAgdGhpcy5mb3JtLkZpZWxkc1t0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZF0gPSBpbm5lckZvcm1GaWVsZDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoIXRoaXMuZm9ybS5Jbm5lckZvcm1zKSB7XHJcbiAgICAgICAgICB0aGlzLmZvcm0uSW5uZXJGb3JtcyA9IG5ldyBBcnJheTxGb3JtPigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZvcm0uSW5uZXJGb3Jtcy5wdXNoKGV2ZW50KTtcclxuICAgICAgICB0aGlzLmZvcm0uRmllbGRzLnB1c2goaW5uZXJGb3JtRmllbGQpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVsb2FkRmllbGRzVGFibGUoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZGlhbG9nSW5uZXJGb3JtUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGFwcmlyZSBpbCBkaWFsb2cgZGkgY3JlYXppb25lL21vZGlmaWNhIGRlbGxlIGFjdGlvbi5cclxuICAgKiBTZSBpbCBwYXJhbWV0cm8gcGFzc2F0byDDqCBudWxsIHNvbm8gaW4gYWdnaXVudGEgYWx0cmltZW50aSBzb25vIGluIG1vZGlmaWNhLlxyXG4gICAqIEBwYXJhbSBhY3Rpb24gQWN0aW9uT25SZWNvcmQgZGEgbW9kaWZpY2FyZSAoc2UgbnVsbCBhbGxvcmEgdmFkbyBpbiBhZGQpLlxyXG4gICAqL1xyXG4gIG9wZW5BY3Rpb25PblJlY29yZERpYWxvZyhhY3Rpb246IEFjdGlvbk9uUmVjb3JkID0gbnVsbCkge1xyXG4gICAgaWYgKGFjdGlvbikge1xyXG4gICAgICB0aGlzLmluZGV4U2VsZWN0ZWRBY3Rpb24gPSB0aGlzLmZvcm0uQWN0aW9uc09uUmVjb3JkLmluZGV4T2YoYWN0aW9uKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEFjdGlvbiA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoYWN0aW9uKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQWN0aW9uID0gbmV3IEFjdGlvbk9uUmVjb3JkKCk7XHJcbiAgICAgIHRoaXMuaW5kZXhTZWxlY3RlZEFjdGlvbiA9IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNyZWF0ZUFjdGlvbk9uUmVjb3JkRm9ybSgpO1xyXG4gICAgdGhpcy5kaWFsb2dBY3Rpb25PblJlY29yZFJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dBY3Rpb25PblJlY29yZCwge1xyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICB3aWR0aDogXCI3NSVcIixcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBhcHJpcmUgaWwgZGlhbG9nIGRpIGNyZWF6aW9uZS9tb2RpZmljYSBkZWkgYm90dG9uaSBhemlvbmUuXHJcbiAgICogU2UgaWwgcGFyYW1ldHJvIHBhc3NhdG8gw6ggbnVsbCBzb25vIGluIGFnZ2l1bnRhIGFsdHJpbWVudGkgc29ubyBpbiBtb2RpZmljYS5cclxuICAgKiBAcGFyYW0gYWN0aW9uIEFjdGlvbkJ1dHRvbiBkYSBtb2RpZmljYXJlIChzZSBudWxsIGFsbG9yYSB2YWRvIGluIGFkZCkuXHJcbiAgICovXHJcbiAgb3BlbkFjdGlvbkJ1dHRvbkRpYWxvZyhldjogQWN0aW9uQnV0dG9uID0gbnVsbCkge1xyXG5cclxuICAgIGlmIChldiAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRBY3Rpb25CdXR0b24gPSBldjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRBY3Rpb25CdXR0b24gPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGlhbG9nQWN0aW9uQnV0dG9uUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ0FjdGlvbkJ1dHRvbiwge1xyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICB3aWR0aDogXCI3NSVcIixcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBpbXBvc3RhcmUgaSB2YWxvcmkgZGEgc3VnZ2VyaXJlIG5lbGwnYXV0b2NvbXBsZXRlIGRlbCBjYW1wbyBGb3JtdWxhLlxyXG4gICAqIFZpZW5lIHNjYXRlbmF0byBhbCBmb2N1cyAoaW4gcXVlc3RvIGNhc28gdmllbmUgcGFzc2F0byBpbCBwYXJhbWV0cm8gYSBudWxsIHBlciBkaWZmZXJlbnppYXJsb1xyXG4gICAqIGRhbGwnZXZlbnRvIGRpIGNsaWNrIHN1bGxhIHRhc3RpZXJhKSBlIGFsIGtleXVwIHN1bGwnaW5wdXQgKGlsIHBhcmFtZXRybyDDqCBkaXZlcnNvIGRhIG51bGwpLlxyXG4gICAqIEBwYXJhbSBrZXlib2FyZEV2ZW50IEV2ZW50byBzY2F0ZW5hdG8gYWwga2V5dXAgc3VsbGEgdGFzdGllcmEuIFNlIG51bGwgYWxsb3JhIGlsIG1ldG9kbyDDqCBzdGF0byBpbnZvY2F0byBkYWwgZm9jdXMgc3VsbCdpbnB1dC5cclxuICAgKiBAc3VtbWFyeSBBZ2dpb3JuYSBsJ2VsZW5jbyBkZWkgc3VnZ2VyaW1lbnRpIHBlciBsJ2F1dG9jb21wbGV0ZSBzZSBsJ3V0ZW50ZSBlc2VndWUgaWwgZm9jdXMgc3VsbCdpbnB1dFxyXG4gICAqIG9wcHVyZSBhbCBrZXl1cCBzdWxsYSB0YXN0aWVyYSBkaSB1biB0YXN0byBkaXZlcnNvIGRhbGxlIGZyZWNjZS5cclxuICAgKi9cclxuICBzZXRBY3Rpb25BdXRvY29tcGxldGVPcHRpb25zKGtleWJvYXJkRXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIC8vIENyZW8gbCdhcnJheSBwZXIgbCdhdXRvY29tcGxldGUgc29sbyBzZSBzdG8gZmFjZW5kbyBpbCBmb2N1cyBzdWxsJ2lucHV0IG8gc2Ugc3RvIHByZW1lbmRvIHVuIHRhc3RvXHJcbiAgICAvLyBzdWxsYSB0YXN0aWVyYSBkaXZlcnNvIGRhbGxlIGZyZWNjZSAoaW4gcXVlc3QndWx0aW1vIGNhc28sIHNlIG5vbiB2aWVuZSBlc2VndWl0byBpbCBmaWx0cm8gc3VsbCdldmVudG8sXHJcbiAgICAvLyBub24gc2kgcHXDsiBzZWxlemlvbmFyZSB1biBzdWdnZXJpbWVudG8gZGVsbCdhdXRvY29tcGxldGUgcGVyY2jDqCBhbCBjbGljayB2ZXJyZWJiZSByaWNhcmljYXRvIGwnYXJyYXkgZVxyXG4gICAgLy8gc2kgcHJlZGVyZWJiZSBsYSBzZWxlemlvbmUgYXBwZW5hIGZhdHRhKS5cclxuICAgIGlmICgha2V5Ym9hcmRFdmVudCB8fCAha2V5Ym9hcmRFdmVudC5jb2RlLmluY2x1ZGVzKFwiQXJyb3dcIikpIHtcclxuICAgICAgdGhpcy5hY3Rpb25BdXRvY29tcGxldGVPcHRpb25zID1cclxuICAgICAgICBVdGlsaXR5SGVscGVyU2VydmljZS5HZXRBdXRvY29tcGxldGVPcHRpb25zKFxyXG4gICAgICAgICAgdGhpcy5mb3JtLkZpZWxkcyxcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRBY3Rpb24uQWN0aW9uXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBzYWx2YXJlIGwnYXppb25lIGNyZWF0YS9tb2RpZmljYXRlLlxyXG4gICAqL1xyXG4gIHNhdmVBY3Rpb25PblJlY29yZCgpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5mb3JtLkFjdGlvbnNPblJlY29yZCAmJlxyXG4gICAgICB0aGlzLmZvcm0uQWN0aW9uc09uUmVjb3JkLmZpbmQoXHJcbiAgICAgICAgKGEsIGkpID0+XHJcbiAgICAgICAgICBhLk5hbWUgPT09IHRoaXMuc2VsZWN0ZWRBY3Rpb24uTmFtZSAmJlxyXG4gICAgICAgICAgKHRoaXMuaW5kZXhTZWxlY3RlZEFjdGlvbiA9PSBudWxsXHJcbiAgICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgICA6IHRoaXMuaW5kZXhTZWxlY3RlZEFjdGlvbiAhPT0gaSlcclxuICAgICAgKVxyXG4gICAgKSB7XHJcbiAgICAgIEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLldhcm5pbmcoXHJcbiAgICAgICAgXCJJbXBvc3NpYmlsZSBpbnNlcmlyZSBkdWUgYWN0aW9uIGNvbiBsbyBzdGVzc28gbm9tZS5cIlxyXG4gICAgICApO1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbXBvc3NpYmlsZSBpbnNlcmlyZSBkdWUgYWN0aW9uIGNvbiBsbyBzdGVzc28gbm9tZS5cIik7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaW5kZXhTZWxlY3RlZEFjdGlvbiAhPSBudWxsICYmIHRoaXMuaW5kZXhTZWxlY3RlZEFjdGlvbiA+PSAwKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5BY3Rpb25zT25SZWNvcmRbdGhpcy5pbmRleFNlbGVjdGVkQWN0aW9uXSA9IHRoaXMuc2VsZWN0ZWRBY3Rpb247XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoIXRoaXMuZm9ybS5BY3Rpb25zT25SZWNvcmQpIHtcclxuICAgICAgICB0aGlzLmZvcm0uQWN0aW9uc09uUmVjb3JkID0gbmV3IEFycmF5PEFjdGlvbk9uUmVjb3JkPigpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZm9ybS5BY3Rpb25zT25SZWNvcmQucHVzaCh0aGlzLnNlbGVjdGVkQWN0aW9uKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2xvc2VEaWFsb2dBY3Rpb25PblJlY29yZCgpO1xyXG4gICAgdGhpcy5zZXRBY3Rpb25PcmRpbmFsUG9zaXRpb24oKTtcclxuICAgIHRoaXMucmVsb2FkQWN0aW9uc09uUmVjb3JkVGFibGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgc2FsdmFyZSBsJ2F6aW9uZSBjcmVhdGEvbW9kaWZpY2F0ZS5cclxuICAgKi9cclxuICBzYXZlQWN0aW9uQnV0dG9ucyhlbGVtZW50OiBBY3Rpb25CdXR0b24pIHtcclxuXHJcbiAgICBpZiAoZWxlbWVudCAhPSBudWxsKSB7XHJcbiAgICAgIGlmICh0aGlzLmZvcm0uQWN0aW9uQnV0dG9ucyAhPSBudWxsKSB7XHJcbiAgICAgICAgdmFyIGV4aXN0c0FjdGlvbkJ1dHRvbnMgPSB0aGlzLmZvcm0uQWN0aW9uQnV0dG9ucy5maW5kKHggPT4geC5CdXR0b25VbmlxdWVJZCA9PSBlbGVtZW50LkJ1dHRvblVuaXF1ZUlkKTtcclxuICAgICAgICBpZiAoZXhpc3RzQWN0aW9uQnV0dG9ucyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAvLyBOdW92byB0cmlnZ2VyXHJcbiAgICAgICAgICB0aGlzLmZvcm0uQWN0aW9uQnV0dG9ucy5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBleGlzdHNBY3Rpb25CdXR0b25zID0gZWxlbWVudDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLkFjdGlvbkJ1dHRvbnMgPSBuZXcgQXJyYXk8QWN0aW9uQnV0dG9uPigpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5BY3Rpb25CdXR0b25zLnB1c2goZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hY3Rpb25CdXR0b25zVGFibGUucmVsb2FkRGF0YXRhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kaWFsb2dBY3Rpb25CdXR0b25SZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgY2hpdWRlcmUgaWwgZGlhbG9nIGRlbGxhIGlubmVyIGZvcm0uXHJcbiAgICovXHJcbiAgY2xvc2VEaWFsb2dJbm5lckZvcm0oKSB7XHJcbiAgICB0aGlzLmlubmVyRm9ybVJlZi5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBjaGl1ZGVyZSBpbCBkaWFsb2cgZGkgZ2VzdGlvbmUgZGVsbGUgYWN0aW9uLlxyXG4gICAqL1xyXG4gIGNsb3NlRGlhbG9nQWN0aW9uT25SZWNvcmQoKSB7XHJcbiAgICB0aGlzLmRpYWxvZ0FjdGlvbk9uUmVjb3JkUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGNoaXVkZXJlIGlsIGRpYWxvZyBkaSBnZXN0aW9uZSBkZWxsZSBhY3Rpb24gYnV0dG9ucy5cclxuICAgKi9cclxuICBjbG9zZURpYWxvZ0FjdGlvbkJ1dHRvbnMoKSB7XHJcbiAgICB0aGlzLmRpYWxvZ0FjdGlvbkJ1dHRvblJlZi5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBzZWduYXJlIGNvbWUgY29uY2x1c2EgbGEgY3JlYXppb25lIGRlbGxhIGZvcm0gZSBwZXIgY3JlYXJuZSB1bmEgY29waWFcclxuICAgKiBkYSB2aXNhbGl6emFyZSBjb21lIGFudGVwcmltYS5cclxuICAgKiBAcGFyYW0gY29tcGxldGVkIFNlIFRSVUUgc2VnbmEgbGEgZm9ybSBjb21lIGNvbmNsdXNhIGUgbmUgY3JlYSB1bmEgY29waWEgZGEgdmlzdWFsaXp6YXJlXHJcbiAgICovXHJcbiAgc2V0Rm9ybVN0YXR1cyhjb21wbGV0ZWQ6IGJvb2xlYW4pIHtcclxuICAgIGlmIChjb21wbGV0ZWQpIHtcclxuICAgICAgdGhpcy5mb3JtQ29tcGxldGVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5wcmV2aWV3Rm9ybSA9IHRoaXMuc2FmZUNsb25lKHRoaXMuZm9ybSk7XHJcbiAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJwcmV2aWV3Rm9ybVwiLCB0aGlzLnByZXZpZXdGb3JtKVxyXG5cclxuICAgICAgLy8gUGVyIHZpc3VhbGl6emFyZSBjb3JyZXR0YW1lbnRlIGwnb2FudGVwcmltYSBkZWxsYSBmb3JtIGFwcGVuYSBjcmVhdGFcclxuICAgICAgLy8gYmlzb2duYSB2YWxvcml6emFyZSBsYSBwcm9wcmlldMOgIE5hbWUgZGVpIGNhbXBpIGRlbGxhIGZvcm0gZSBkZWxsZSBJbm5lckZvcm1zLlxyXG4gICAgICB0aGlzLnByZXZpZXdGb3JtLkZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICAgIGZpZWxkLk5hbWUgPSBmaWVsZC5MYWJlbC5zcGxpdChcIiBcIikuam9pbihcIl9cIik7XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5wcmV2aWV3Rm9ybS5Jbm5lckZvcm1zICYmXHJcbiAgICAgICAgdGhpcy5wcmV2aWV3Rm9ybS5Jbm5lckZvcm1zLmxlbmd0aCA+IDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5wcmV2aWV3Rm9ybS5Jbm5lckZvcm1zLmZvckVhY2goKGZvcm0pID0+IHtcclxuICAgICAgICAgIGZvcm0uRmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgICAgIGZpZWxkLk5hbWUgPSBmaWVsZC5MYWJlbC5zcGxpdChcIiBcIikuam9pbihcIl9cIik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5mb3JtQ29tcGxldGVkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucHJldmlld0Zvcm0gPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBzYWx2YXJlIGxhIGZvcm0gY3JlYXRhIGFsbGEgZmluZSBkZWwgd2l6YXJkLlxyXG4gICAqIFNlIMOoIHN0YXRvIGNvbmZpZ3VyYXRvIHVuIGVuZFBvaW50IHBlciBpbCBzYWx2YXRhZ2dpbyB2aWVuZSBlZmZldHR1YXRhIHVuYSBjaGlhbWF0YSBhbCBzZXJ2ZXIgcGFzc2FuZG8gbCdvZ2dldG8gZGEgc2FsdmFyZVxyXG4gICAqIG5lbCBib2R5IGRlbGxhIGNoaWFtYXRhLCBhbHRyaW1lbnRpIHNjYXRlbmEgbCdldmVudG8gXCJzYXZlRm9ybUV2ZW50XCIuXHJcbiAgICovXHJcbiAgc2F2ZUZvcm0oKSB7XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbiAhPSBudWxsICYmXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLkZvcm1zLlNhdmVFbmRQb2ludFxyXG4gICAgKSB7XHJcblxyXG4gICAgICBpZiAoIXRoaXMuc2F2ZWQpIHtcclxuICAgICAgICB0aGlzLmJhY2t1cEZvcm0gPSB0aGlzLnNhZmVDbG9uZSh0aGlzLmZvcm0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuc2FmZUNsb25lKHRoaXMuYmFja3VwRm9ybSk7XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgICAvLyBQZXIgZmFyIGFycml2YXJlIGFsIHNlcnZlciBsJ2FycmF5IGRpIEZpZWxkIGJpc29nbmEgcGFzc2FybGkgc3UgQW55XHJcbiAgICAgIHRoaXMuZm9ybS5PYmplY3RGaWVsZHMgPSBbXTtcclxuICAgICAgdGhpcy5mb3JtLk9iamVjdEZsZEV4dHJhQ29uZmlnVmFsdWVzID0gW107XHJcblxyXG4gICAgICBpZiAodGhpcy5mb3JtLkZsZEV4dHJhQ29uZmlnVmFsdWVzICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLmZvcm0uT2JqZWN0RmxkRXh0cmFDb25maWdWYWx1ZXMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5GbGRFeHRyYUNvbmZpZ1ZhbHVlcykpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmZvcm0uRmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcblxyXG4gICAgICAgIC8vIFJpbXVvdm8gaWwgRm9ybUdyb3VwIGRpIHByZXZpZXcgKHByb3ByaWV0w6AgY2xpZW50LW9ubHksIGNyZWEgcmlmZXJpbWVudG8gY2lyY29sYXJlIGluIEpTT04uc3RyaW5naWZ5KVxyXG4gICAgICAgIGZpZWxkLkZvcm1Gb3JtR3JvdXAgPSBudWxsO1xyXG5cclxuICAgICAgICAvLyBUcmFzZm9ybW8gaWwgZGF0YWdldHRlciBpbiBCYXNlNjRcclxuICAgICAgICBmaWVsZC5EYXRhR2V0dGVyVmFsdWVCYXNlNjRTdHJpbmcgPSBidG9hKEpTT04uc3RyaW5naWZ5KGZpZWxkLkRhdGFHZXR0ZXIpKTtcclxuICAgICAgICBmaWVsZC5EYXRhR2V0dGVyID0gbnVsbDtcclxuXHJcbiAgICAgICAgaWYgKGZpZWxkLkZpZWxkVHlwZSA9PSBGaWVsZFR5cGVFbnVtLkFsbGVnYXRvKSB7XHJcbiAgICAgICAgICBjb25zdCBmbGRBOiBhbnkgPSBmaWVsZDtcclxuICAgICAgICAgIGZsZEEuTWV0YWRhdGFPYmplY3RGaWVsZHMgPSBmbGRBLk1ldGFkYXRhRmllbGRzO1xyXG4gICAgICAgICAgZmxkQS5NZXRhZGF0YUZpZWxkcyA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5mb3JtLk9iamVjdEZpZWxkcy5wdXNoKGZsZEEpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bXCJDYW1wbyBudW1lcmljb1wiXSkge1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgKDxOdW1lcmljRmllbGQ+ZmllbGQpLk1heFZhbHVlID09IHVuZGVmaW5lZCB8fFxyXG4gICAgICAgICAgICAgICg8TnVtZXJpY0ZpZWxkPmZpZWxkKS5NYXhWYWx1ZSA9PSBudWxsXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICg8TnVtZXJpY0ZpZWxkPmZpZWxkKS5NYXhWYWx1ZSA9IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAoPE51bWVyaWNGaWVsZD5maWVsZCkuTWluVmFsdWUgPT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgICAgICAgKDxOdW1lcmljRmllbGQ+ZmllbGQpLk1pblZhbHVlID09IG51bGxcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgKDxOdW1lcmljRmllbGQ+ZmllbGQpLk1pblZhbHVlID0gMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5mb3JtLk9iamVjdEZpZWxkcy5wdXNoKGZpZWxkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmZvcm0uRmllbGRzID0gbnVsbDtcclxuICAgICAgdGhpcy5mb3JtLk9yZ2FJRCA9IHRoaXMub3JnYUlEO1xyXG4gICAgICBpZiAodGhpcy5mb3JtLkNyZWF0aW9uRGF0ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLkNyZWF0aW9uRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgdGhpcy5mb3JtLkNyZWF0aW9uVXNlciA9IHRoaXMuVXNlcklEO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZm9ybS5Nb2RpZnlVc2VyID0gdGhpcy5Vc2VySUQ7XHJcblxyXG4gICAgICB0aGlzLmZvcm0uT2JqZWN0VHJpZ2dlcnMgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm0uVHJpZ2dlcnMpO1xyXG4gICAgICB0aGlzLmZvcm0uVHJpZ2dlcnMgPSBudWxsO1xyXG5cclxuICAgICAgdGhpcy5mb3JtLk9iamVjdEFjdGlvbkJ1dHRvbnMgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm0uQWN0aW9uQnV0dG9ucyk7XHJcbiAgICAgIHRoaXMuZm9ybS5BY3Rpb25CdXR0b25zID0gbnVsbDtcclxuXHJcbiAgICAgIGlmICh0aGlzLmZvcm0uQ29kZSA9PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5zZXRDb2RlKHRoaXMuZm9ybS5OYW1lKTtcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICAgIC8vIGNoaWFtYXRhIGVmZmV0dGl2YVxyXG4gICAgICBjb25zdCBkeW5hbWljTW9kdWxlUGFyYW1zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIFBhcmFtTmFtZTogXCJGb3JtXCIsXHJcbiAgICAgICAgICBQYXJhbVZhbHVlOiB0aGlzLmZvcm0sXHJcbiAgICAgICAgICBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJJbiBCb2R5XCJdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF07XHJcblxyXG4gICAgICB0aGlzLnNhdmVkID0gdHJ1ZTtcclxuXHJcblxyXG5cclxuICAgICAgdGhpcy51dGlsaXR5SGVscGVyU2VydmljZS5SdW5FbmRQb2ludENhbGwoXHJcbiAgICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uRm9ybXMuU2F2ZUVuZFBvaW50LFxyXG4gICAgICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMsXHJcbiAgICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgICAgRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UuU3VjY2VzcyhcIkZvcm0gc2FsdmF0YSBjb24gc3VjY2Vzc28hXCIpO1xyXG4gICAgICAgICAgdGhpcy5hZnRlclNhdmVGb3JtRXZlbnQuZW1pdCh0aGlzLmZvcm0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5FcnJvcihcIkVycm9yZSBuZWwgc2FsdmF0YWdnaW8gZGVsbGEgZm9ybVwiKTtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvcmUgbmVsIHNhbHZhdGFnZ2lvIGRlbGxhIGZvcm1cIiwgZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2F2ZUZvcm1FdmVudC5lbWl0KHRoaXMuZm9ybSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gRlVOWklPTkkgUFJJVkFURVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGltcG9zdGFyZSBsYSBmb3JtIGUgY29uZmlndXJhcmUgY29sb25uZS9Gb3JtR291cnAuXHJcbiAgICogQHBhcmFtIGZvcm0gRm9ybSBkYSB1dGlsaXp6YXJlLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0Rm9ybUFuZENvbmZpZ3VyZShmb3JtOiBGb3JtID0gbnVsbCkge1xyXG5cclxuICAgIGlmIChmb3JtICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5mb3JtID0gZm9ybTtcclxuICAgICAgdGhpcy5mb3JtLk9yZ2FJRCA9IHRoaXMub3JnYUlEO1xyXG4gICAgICBpZiAodGhpcy5mb3JtLk9iamVjdFRyaWdnZXJzICE9IG51bGwgJiYgdGhpcy5mb3JtLk9iamVjdFRyaWdnZXJzICE9IFwiXCIpIHtcclxuICAgICAgICB0aGlzLmZvcm0uVHJpZ2dlcnMgPSBKU09OLnBhcnNlKHRoaXMuZm9ybS5PYmplY3RUcmlnZ2Vycyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLlRyaWdnZXJzID0gbmV3IEFycmF5PFRyaWdnZXI+KCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmZvcm0uT2JqZWN0QWN0aW9uQnV0dG9ucyAhPSBudWxsICYmIHRoaXMuZm9ybS5PYmplY3RBY3Rpb25CdXR0b25zICE9IFwiXCIpIHtcclxuICAgICAgICB0aGlzLmZvcm0uQWN0aW9uQnV0dG9ucyA9IEpTT04ucGFyc2UodGhpcy5mb3JtLk9iamVjdEFjdGlvbkJ1dHRvbnMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZm9ybS5BY3Rpb25CdXR0b25zID0gbmV3IEFycmF5PEFjdGlvbkJ1dHRvbj4oKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmZvcm0uRmllbGRzICE9IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgICB0aGlzLmZvcm0uRmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcblxyXG4gICAgICAgICAgLy8gVHJhc2Zvcm1vIGlsIEJhc2U2NFN0cmluZyBkZWwgRGF0YWdldHRlciBuZWwgRGF0YWdldHRlciB2ZXJvIGUgcHJvcHJpb1xyXG4gICAgICAgICAgaWYgKGZpZWxkLkRhdGFHZXR0ZXJWYWx1ZUJhc2U2NFN0cmluZyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGZpZWxkLkRhdGFHZXR0ZXIgPSBKU09OLnBhcnNlKGF0b2IoZmllbGQuRGF0YUdldHRlclZhbHVlQmFzZTY0U3RyaW5nKSk7XHJcbiAgICAgICAgICAgIGlmIChmaWVsZC5EYXRhR2V0dGVyID09IG51bGwpIHsgZmllbGQuRGF0YUdldHRlciA9IG5ldyBEYXRhR2V0dGVyKCk7IH1cclxuICAgICAgICAgICAgZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVHlwZSA9IGZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclR5cGUgPT0gbnVsbCA/IERhdGFHZXR0ZXJUeXBlRW51bS5NYW51YWxlIDogZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVHlwZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGZpZWxkLkRhdGFHZXR0ZXIgPSBuZXcgRGF0YUdldHRlcigpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGZpZWxkLkRhdGFHZXR0ZXJWYWx1ZUJhc2U2NFN0cmluZyA9IG51bGw7XHJcblxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyBDYW1waSBjb24gRGF0YUdldHRlclNwZWVjaFRleHQ6IGNhcmljYXJlIGlsIFF1ZXJ5RWRpdG9yIGluIHNpbGVudCBwZXIgcG9wb2xhcmUgaWwgRGF0YUdldHRlclZhbHVlIHZpYSBBSVxyXG4gICAgICAgIHRoaXMucGVuZGluZ0FpRGF0YUdldHRlckZpZWxkcyA9IHRoaXMuZm9ybS5GaWVsZHMuZmlsdGVyKGYgPT5cclxuICAgICAgICAgIGYuRGF0YUdldHRlci5EYXRhR2V0dGVyVHlwZSA9PT0gRGF0YUdldHRlclR5cGVFbnVtWydEYSBkYXRhYmFzZSddICYmXHJcbiAgICAgICAgICAhIWYuRGF0YUdldHRlci5EYXRhR2V0dGVyU3BlZWNoVGV4dCAmJlxyXG4gICAgICAgICAgIWYuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWVcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aGlzLnBlbmRpbmdBaURhdGFHZXR0ZXJGaWVsZHMubGVuZ3RoID4gMCAmJiB0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50ICE9IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMucHJvY2Vzc05leHRBaURhdGFHZXR0ZXJGaWVsZCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5jb25maWd1cmVDb2x1bW5zKCk7XHJcbiAgICB0aGlzLmNyZWF0ZUZvcm1Gb3JtKCk7XHJcbiAgICBpbmplY3RHb29nbGVGb250c0Zyb21Gb3JtKHRoaXMuZm9ybSk7XHJcbiAgICB0aGlzLnJlZnJlc2hGaWVsZFR5cGVPcHRpb25zKCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVGb3JtR3JhcGhpY1N1Z2dlc3RJbnB1dCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd0Zvcm1HcmFwaGljU3VnZ2VzdElucHV0ID0gIXRoaXMuc2hvd0Zvcm1HcmFwaGljU3VnZ2VzdElucHV0O1xyXG4gICAgaWYgKCF0aGlzLnNob3dGb3JtR3JhcGhpY1N1Z2dlc3RJbnB1dCkgdGhpcy5mb3JtR3JhcGhpY1Njb3BlID0gJ2FsbCc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlZnJlc2hGaWVsZFR5cGVPcHRpb25zKCk6IHZvaWQge1xyXG4gICAgY29uc3Qgc2VlblR5cGVzID0gbmV3IFNldDxudW1iZXI+KCk7XHJcbiAgICBjb25zdCBvcHRpb25zOiB7IHZhbHVlOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfVtdID0gW107XHJcbiAgICBmb3IgKGNvbnN0IGYgb2YgKHRoaXMuZm9ybT8uRmllbGRzID8/IFtdKSkge1xyXG4gICAgICBpZiAoc2VlblR5cGVzLmhhcyhmLkZpZWxkVHlwZSkpIGNvbnRpbnVlO1xyXG4gICAgICBzZWVuVHlwZXMuYWRkKGYuRmllbGRUeXBlKTtcclxuICAgICAgY29uc3QgbGFiZWwgPSAoRXFwRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbXBvbmVudC5GSUVMRF9UWVBFX0xBQkVMUyBhcyBhbnkpW2YuRmllbGRUeXBlXSA/PyBgVGlwbyAke2YuRmllbGRUeXBlfWA7XHJcbiAgICAgIG9wdGlvbnMucHVzaCh7IHZhbHVlOiBgdHlwZV8ke2YuRmllbGRUeXBlfWAsIGxhYmVsIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wcmVzZW50RmllbGRUeXBlT3B0aW9ucyA9IG9wdGlvbnM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb25maWd1cmEgbGUgY29sb25uZSBwZXIgbGUgdGFiZWxsZSBuZWNlc3NhcmllIGFsbGEgY3JlYXppb25lIGRlbGxhIGZvcm06XHJcbiAgICogIC0gcGVyIGxhIHZpc3VhbGl6emF6aW9uZSBkZWkgY2FtcGkgaW5zZXJpdGlcclxuICAgKiAgLSBwZXIgbGUgZm9ybSBkaSBkZXR0YWdsaW8gY3JlYXRlXHJcbiAgICogIC0gcGVyIGxlIGF6aW9uaSBjb25maWd1cmF0ZSBzdWkgcmVjb3JkIGRlbGxhIGZvcm1cclxuICAgKi9cclxuXHJcblxyXG5cclxuXHJcbiAgcHJpdmF0ZSBjb25maWd1cmVDb2x1bW5zKCkge1xyXG4gICAgdGhpcy5maWVsZHNDb2x1bW5zID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAga2V5OiBcImFjdGlvblwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiXCIsXHJcbiAgICAgICAgdHlwZTogVHlwZUNvbHVtbi5NZW51QWN0aW9uLFxyXG4gICAgICAgIGJ1dHRvbk1lbnVJY29uOiBcIm1vcmVfdmVydFwiLFxyXG4gICAgICAgIHN0eWxlczogeyBmbGV4OiBcIjAgMCA0cmVtXCIgfSxcclxuICAgICAgICBhY3Rpb25zOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6IFwiTW9kaWZpY2FcIixcclxuICAgICAgICAgICAgaWNvbjogXCJlZGl0XCIsXHJcbiAgICAgICAgICAgIGZuOiAoZWxlbWVudCwgaW5kZXgsIGNvbCkgPT4gdGhpcy5lZGl0RmllbGQoZWxlbWVudCksXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiBcIkR1cGxpY2Egc290dG9cIixcclxuICAgICAgICAgICAgaWNvbjogXCJmaWxlX2NvcHlcIixcclxuICAgICAgICAgICAgZm46IChlbGVtZW50LCBpbmRleCwgY29sKSA9PiB0aGlzLmR1cGxpY2F0ZUZpZWxkKGVsZW1lbnQsIGVsZW1lbnQuT3JkaW5hbFBvc2l0aW9uICsgMSksXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiBcIkR1cGxpY2EgaW4gZm9uZG9cIixcclxuICAgICAgICAgICAgaWNvbjogXCJmaWxlX2NvcHlcIixcclxuICAgICAgICAgICAgZm46IChlbGVtZW50LCBpbmRleCwgY29sKSA9PiB0aGlzLmR1cGxpY2F0ZUZpZWxkKGVsZW1lbnQpLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogXCJFbGltaW5hXCIsXHJcbiAgICAgICAgICAgIGljb246IFwiZGVsZXRlXCIsXHJcbiAgICAgICAgICAgIGZuOiAoZWxlbWVudCwgaW5kZXgsIGNvbCkgPT4gdGhpcy5kZWxldGVFbGVtZW50KGVsZW1lbnQsIFwiRmllbGRzXCIpLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC8vIHtcclxuICAgICAgICAgIC8vICAgbmFtZTogXCJTcG9zdGEgc3VcIixcclxuICAgICAgICAgIC8vICAgaWNvbjogXCJhcnJvd191cHdhcmRcIixcclxuICAgICAgICAgIC8vICAgZm46IChlbGVtZW50LCBpbmRleCwgY29sKSA9PlxyXG4gICAgICAgICAgLy8gICAgIHRoaXMubW92ZUVsZW1lbnQoZWxlbWVudCwgdHJ1ZSwgXCJGaWVsZHNcIiksXHJcbiAgICAgICAgICAvLyAgIGRpc2FibGVkOiAoZWxlbWVudCkgPT4gdGhpcy5mb3JtLkZpZWxkcy5pbmRleE9mKGVsZW1lbnQpID09PSAwLFxyXG4gICAgICAgICAgLy8gfSxcclxuICAgICAgICAgIC8vIHtcclxuICAgICAgICAgIC8vICAgbmFtZTogXCJTcG9zdGEgZ2nDuVwiLFxyXG4gICAgICAgICAgLy8gICBpY29uOiBcImFycm93X2Rvd253YXJkXCIsXHJcbiAgICAgICAgICAvLyAgIGZuOiAoZWxlbWVudCwgaW5kZXgsIGNvbCkgPT5cclxuICAgICAgICAgIC8vICAgICB0aGlzLm1vdmVFbGVtZW50KGVsZW1lbnQsIGZhbHNlLCBcIkZpZWxkc1wiKSxcclxuICAgICAgICAgIC8vICAgZGlzYWJsZWQ6IChlbGVtZW50KSA9PlxyXG4gICAgICAgICAgLy8gICAgIHRoaXMuZm9ybS5GaWVsZHMuaW5kZXhPZihlbGVtZW50KSA+PSB0aGlzLmZvcm0uRmllbGRzLmxlbmd0aCAtIDEsXHJcbiAgICAgICAgICAvLyB9LFxyXG4gICAgICAgIF0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBrZXk6IFwiRmllbGRUeXBlXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJUaXBvbG9naWFcIixcclxuICAgICAgICB0eXBlOiBUeXBlQ29sdW1uLkVudW0sXHJcbiAgICAgICAgZW51bU1vZGVsOiBGaWVsZFR5cGVFbnVtLFxyXG4gICAgICAgIHN0eWxlczogeyBmbGV4OiBcIjAgMCAxMnJlbVwiIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHsga2V5OiBcIkxhYmVsXCIsIGRpc3BsYXk6IFwiTGFiZWxcIiwgc3R5bGVzOiB7IGZsZXg6IFwiMCAwIDhyZW1cIiB9IH0sXHJcbiAgICAgIHtcclxuICAgICAgICBrZXk6IFwiRGVzY3JpcHRpb25cIixcclxuICAgICAgICBkaXNwbGF5OiBcIkRlc2NyaXppb25lXCIsXHJcbiAgICAgICAgc3R5bGVzOiB7IGZsZXg6IFwiMCAwIDEycmVtXCIgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGtleTogXCJEYXRhR2V0dGVyLkRhdGFHZXR0ZXJUeXBlXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJUaXBvIFJlY3VwZXJvIERhdGlcIixcclxuICAgICAgICB0eXBlOiBUeXBlQ29sdW1uLkVudW0sXHJcbiAgICAgICAgZW51bU1vZGVsOiBEYXRhR2V0dGVyVHlwZUVudW0sXHJcbiAgICAgICAgc3R5bGVzOiB7IGZsZXg6IFwiMCAwIDEycmVtXCIgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGtleTogXCJSZXF1aXJlZFwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiT2JibGlnYXRvcmlvXCIsXHJcbiAgICAgICAgdmFsdWU6IChlbGVtZW50KSA9PiBlbGVtZW50LlJlcXVpcmVkLFxyXG4gICAgICAgIHR5cGU6IFR5cGVDb2x1bW4uQm9vbGVhbixcclxuICAgICAgICBib29sZWFuVmFsdWVzOiB7XHJcbiAgICAgICAgICB0cnVlOiAnPGkgY2xhc3M9XCJmYSBmYS1jaGVjayBzdWNjZXNzLWNvbG9yXCI+PC9pPicsXHJcbiAgICAgICAgICBmYWxzZTogJzxpIGNsYXNzPVwiZmEgZmEtY2xvc2UgZXJyb3ItY29sb3JcIj48L2k+JyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHN0eWxlczogeyBmbGV4OiBcIjAgMCA1cmVtXCIsIGNlbGxBbGlnbm1lbnQ6IENlbGxBbGlnbm1lbnRFbnVtLkNFTlRFUiB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAga2V5OiBcIkZvcm11bGFcIixcclxuICAgICAgICBkaXNwbGF5OiBcIkNhbGNvbGF0b1wiLFxyXG4gICAgICAgIHZhbHVlOiAoZWxlbWVudCkgPT4gZWxlbWVudC5Gb3JtdWxhICE9IG51bGwgJiYgZWxlbWVudC5Gb3JtdWxhICE9ICcnLFxyXG4gICAgICAgIHR5cGU6IFR5cGVDb2x1bW4uQm9vbGVhbixcclxuICAgICAgICBib29sZWFuVmFsdWVzOiB7XHJcbiAgICAgICAgICB0cnVlOiAnPGkgY2xhc3M9XCJmYSBmYS1jaGVjayBzdWNjZXNzLWNvbG9yXCI+PC9pPicsXHJcbiAgICAgICAgICBmYWxzZTogJzxpIGNsYXNzPVwiZmEgZmEtY2xvc2UgZXJyb3ItY29sb3JcIj48L2k+JyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHN0eWxlczogeyBmbGV4OiBcIjAgMCA1cmVtXCIsIGNlbGxBbGlnbm1lbnQ6IENlbGxBbGlnbm1lbnRFbnVtLkNFTlRFUiB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAga2V5OiBcIkluTGlzdFZpZXdcIixcclxuICAgICAgICBkaXNwbGF5OiBcIlZpc2liaWxlIGluIENvbXBpbGF6aW9uZVwiLFxyXG4gICAgICAgIHZhbHVlOiAoZWxlbWVudCkgPT4gZWxlbWVudC5Jbkxpc3RWaWV3LFxyXG4gICAgICAgIHR5cGU6IFR5cGVDb2x1bW4uQm9vbGVhbixcclxuICAgICAgICBib29sZWFuVmFsdWVzOiB7XHJcbiAgICAgICAgICB0cnVlOiAnPGkgY2xhc3M9XCJmYSBmYS1jaGVjayBzdWNjZXNzLWNvbG9yXCI+PC9pPicsXHJcbiAgICAgICAgICBmYWxzZTogJzxpIGNsYXNzPVwiZmEgZmEtY2xvc2UgZXJyb3ItY29sb3JcIj48L2k+JyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHN0eWxlczogeyBmbGV4OiBcIjAgMCA3cmVtXCIsIGNlbGxBbGlnbm1lbnQ6IENlbGxBbGlnbm1lbnRFbnVtLkNFTlRFUiB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAga2V5OiBcIkludmlzaWJpbGl0eVwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiT2NjdXBhIHNwYXppbz9cIixcclxuICAgICAgICB2YWx1ZTogKGVsZW1lbnQpID0+IGVsZW1lbnQuSW5MaXN0VmlldyB8fCBlbGVtZW50LkludmlzaWJpbGl0eSA9PSBGaWVsZEludmlzaWJpbGl0eUVudW1bXCJOQVNDT1NUTyBDT04gQVJFQSBWSVNJQklMRVwiXSxcclxuICAgICAgICB0eXBlOiBUeXBlQ29sdW1uLkJvb2xlYW4sXHJcbiAgICAgICAgYm9vbGVhblZhbHVlczoge1xyXG4gICAgICAgICAgdHJ1ZTogJzxpIGNsYXNzPVwiZmEgZmEtY2hlY2sgc3VjY2Vzcy1jb2xvclwiPjwvaT4nLFxyXG4gICAgICAgICAgZmFsc2U6ICc8aSBjbGFzcz1cImZhIGZhLWNsb3NlIGVycm9yLWNvbG9yXCI+PC9pPicsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzdHlsZXM6IHsgZmxleDogXCIwIDAgN3JlbVwiLCBjZWxsQWxpZ25tZW50OiBDZWxsQWxpZ25tZW50RW51bS5DRU5URVIgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGtleTogXCJWaXNpYmxlSWZcIixcclxuICAgICAgICBkaXNwbGF5OiBcIlZpc2liaWxpdMOgIGNvbmRpemlvbmF0YVwiLFxyXG4gICAgICAgIHZhbHVlOiAoZWxlbWVudCkgPT4gZWxlbWVudC5WaXNpYmxlSWYgIT0gbnVsbCAmJiBlbGVtZW50LlZpc2libGVJZiAhPSBcIlwiLFxyXG4gICAgICAgIHR5cGU6IFR5cGVDb2x1bW4uQm9vbGVhbixcclxuICAgICAgICBib29sZWFuVmFsdWVzOiB7XHJcbiAgICAgICAgICB0cnVlOiAnPGkgY2xhc3M9XCJmYSBmYS1jaGVjayBzdWNjZXNzLWNvbG9yXCI+PC9pPicsXHJcbiAgICAgICAgICBmYWxzZTogJzxpIGNsYXNzPVwiZmEgZmEtY2xvc2UgZXJyb3ItY29sb3JcIj48L2k+JyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHN0eWxlczogeyBmbGV4OiBcIjAgMCA3cmVtXCIsIGNlbGxBbGlnbm1lbnQ6IENlbGxBbGlnbm1lbnRFbnVtLkNFTlRFUiB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAga2V5OiBcIkFuc3dlclN0eWxlLkluTGlzdFZpZXdcIixcclxuICAgICAgICBkaXNwbGF5OiBcIlZpc2liaWxlIG5lbGxhIHJpc3Bvc3RhXCIsXHJcbiAgICAgICAgdmFsdWU6IChlbGVtZW50KSA9PiAhZWxlbWVudC5BbnN3ZXJTdHlsZSB8fCBlbGVtZW50LkFuc3dlclN0eWxlICYmIGVsZW1lbnQuQW5zd2VyU3R5bGUuSW5MaXN0VmlldyxcclxuICAgICAgICB0eXBlOiBUeXBlQ29sdW1uLkJvb2xlYW4sXHJcbiAgICAgICAgYm9vbGVhblZhbHVlczoge1xyXG4gICAgICAgICAgdHJ1ZTogJzxpIGNsYXNzPVwiZmEgZmEtY2hlY2sgc3VjY2Vzcy1jb2xvclwiPjwvaT4nLFxyXG4gICAgICAgICAgZmFsc2U6ICc8aSBjbGFzcz1cImZhIGZhLWNsb3NlIGVycm9yLWNvbG9yXCI+PC9pPicsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzdHlsZXM6IHsgZmxleDogXCIwIDAgNXJlbVwiLCBjZWxsQWxpZ25tZW50OiBDZWxsQWxpZ25tZW50RW51bS5DRU5URVIgfSxcclxuICAgICAgfSxcclxuICAgIF07XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmZvcm0uRm9ybVNjYWxhclR5cGUgJiZcclxuICAgICAgdGhpcy5mb3JtLkZvcm1TY2FsYXJUeXBlICE9IEZvcm1TY2FsYXJUeXBlRW51bS5TZW1wbGljZVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuZmllbGRzQ29sdW1ucy5zcGxpY2UoMSwgMCwge1xyXG4gICAgICAgIGtleTogXCJGaWVsZEdyb3VwXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJTZXppb25lXCIsXHJcbiAgICAgICAgdHlwZTogVHlwZUNvbHVtbi5FeHRlcm5hbFRlbXBsYXRlLFxyXG4gICAgICAgIGV4dGVybmFsVGVtcGxhdGU6IHRoaXMuZmllbGRTZWN0aW9uQ29sdW1uVGVtcGxhdGUsXHJcbiAgICAgICAgc3R5bGVzOiB7IGZsZXg6IFwiMCAwIDE0cmVtXCIgfSxcclxuICAgICAgfSk7XHJcbiAgICAgIC8vIHRoaXMuZmllbGRzQ29sdW1ucy5wdXNoKFxyXG4gICAgICAvLyAgIHtcclxuICAgICAgLy8gICAgIGtleTogXCJGaWVsZEdyb3VwXCIsXHJcbiAgICAgIC8vICAgICBkaXNwbGF5OiBcIlNlemlvbmVcIixcclxuICAgICAgLy8gICAgIHR5cGU6IFR5cGVDb2x1bW4uRXh0ZXJuYWxUZW1wbGF0ZSxcclxuICAgICAgLy8gICAgIGV4dGVybmFsVGVtcGxhdGU6IHRoaXMuZmllbGRTZWN0aW9uQ29sdW1uVGVtcGxhdGUsXHJcbiAgICAgIC8vICAgICBzdHlsZXM6IHsgZmxleDogXCIwIDAgMTRyZW1cIiB9XHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyApO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYWN0aW9uQnV0dG9uc0NvbHVtbnMgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBrZXk6IFwiYWN0aW9uXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJcIixcclxuICAgICAgICB0eXBlOiBUeXBlQ29sdW1uLk1lbnVBY3Rpb24sXHJcbiAgICAgICAgYnV0dG9uTWVudUljb246IFwibW9yZV92ZXJ0XCIsXHJcbiAgICAgICAgc3R5bGVzOiB7IGZsZXg6IFwiMCAwIDYlXCIgfSxcclxuICAgICAgICBhY3Rpb25zOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6IFwiTW9kaWZpY2FcIixcclxuICAgICAgICAgICAgaWNvbjogXCJlZGl0XCIsXHJcbiAgICAgICAgICAgIGZuOiAoZWxlbWVudCwgaW5kZXgsIGNvbCkgPT4gdGhpcy5vcGVuQWN0aW9uQnV0dG9uRGlhbG9nKGVsZW1lbnQpLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogXCJFbGltaW5hXCIsXHJcbiAgICAgICAgICAgIGljb246IFwiZGVsZXRlXCIsXHJcbiAgICAgICAgICAgIGZuOiAoZWxlbWVudCwgaW5kZXgsIGNvbCkgPT5cclxuICAgICAgICAgICAgICB0aGlzLmRlbGV0ZUFjdGlvbkJ1dHRvbihlbGVtZW50KSxcclxuICAgICAgICAgIH1cclxuICAgICAgICBdLFxyXG4gICAgICB9LFxyXG4gICAgICB7IGtleTogXCJCdXR0b25MYWJlbFwiLCBkaXNwbGF5OiBcIkV0aWNoZXR0YVwiLCBzdHlsZXM6IHsgZmxleDogXCIwIDAgMzAlXCIgfSB9LFxyXG4gICAgICB7XHJcbiAgICAgICAga2V5OiBcIkJ1dHRvbkNvZGVcIixcclxuICAgICAgICBkaXNwbGF5OiBcIkNvZGljZVwiLFxyXG4gICAgICAgIHN0eWxlczogeyBmbGV4OiBcIjAgMCAyMCVcIiB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAga2V5OiBcIkljb25cIixcclxuICAgICAgICBkaXNwbGF5OiBcIkljb25hXCIsXHJcbiAgICAgICAgc3R5bGVzOiB7IGZsZXg6IFwiMCAwIDEwJVwiIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBrZXk6IFwiU2hvd0luXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJTZXppb25pXCIsXHJcbiAgICAgICAgdmFsdWU6IChlbCkgPT4ge1xyXG4gICAgICAgICAgdmFyIGZpbmFsVGV4dCA9IFwiXCI7XHJcbiAgICAgICAgICBpZiAoZWwuU2hvd0luID09IG51bGwgfHwgZWwuU2hvd0luLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcIk5lc3N1bmFcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsLlNob3dJbi5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICBmaW5hbFRleHQgKz0gQWN0aW9uRmxhZ0VudW1bZWxlbWVudF0gKyBcIiAvIFwiO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICByZXR1cm4gZmluYWxUZXh0O1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc3R5bGVzOiB7IGZsZXg6IFwiMCAwIDIwJVwiIH0sXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG5cclxuICAgIHRoaXMuYWN0aW9uc09uUmVjb3JkQ29sdW1ucyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIGtleTogXCJhY3Rpb25cIixcclxuICAgICAgICBkaXNwbGF5OiBcIlwiLFxyXG4gICAgICAgIHR5cGU6IFR5cGVDb2x1bW4uTWVudUFjdGlvbixcclxuICAgICAgICBidXR0b25NZW51SWNvbjogXCJtb3JlX3ZlcnRcIixcclxuICAgICAgICBzdHlsZXM6IHsgZmxleDogXCIwIDAgNiVcIiB9LFxyXG4gICAgICAgIGFjdGlvbnM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogXCJNb2RpZmljYVwiLFxyXG4gICAgICAgICAgICBpY29uOiBcImVkaXRcIixcclxuICAgICAgICAgICAgZm46IChlbGVtZW50LCBpbmRleCwgY29sKSA9PiB0aGlzLm9wZW5BY3Rpb25PblJlY29yZERpYWxvZyhlbGVtZW50KSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6IFwiRWxpbWluYVwiLFxyXG4gICAgICAgICAgICBpY29uOiBcImRlbGV0ZVwiLFxyXG4gICAgICAgICAgICBmbjogKGVsZW1lbnQsIGluZGV4LCBjb2wpID0+XHJcbiAgICAgICAgICAgICAgdGhpcy5kZWxldGVFbGVtZW50KGVsZW1lbnQsIFwiQWN0aW9uc09uUmVjb3JkXCIpLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogXCJTcG9zdGEgc3VcIixcclxuICAgICAgICAgICAgaWNvbjogXCJhcnJvd191cHdhcmRcIixcclxuICAgICAgICAgICAgZm46IChlbGVtZW50LCBpbmRleCwgY29sKSA9PlxyXG4gICAgICAgICAgICAgIHRoaXMubW92ZUVsZW1lbnQoZWxlbWVudCwgdHJ1ZSwgXCJBY3Rpb25zT25SZWNvcmRcIiksXHJcbiAgICAgICAgICAgIGRpc2FibGVkOiAoZWxlbWVudCkgPT5cclxuICAgICAgICAgICAgICB0aGlzLmZvcm0uQWN0aW9uc09uUmVjb3JkLmluZGV4T2YoZWxlbWVudCkgPT09IDAsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiBcIlNwb3N0YSBnacO5XCIsXHJcbiAgICAgICAgICAgIGljb246IFwiYXJyb3dfZG93bndhcmRcIixcclxuICAgICAgICAgICAgZm46IChlbGVtZW50LCBpbmRleCwgY29sKSA9PlxyXG4gICAgICAgICAgICAgIHRoaXMubW92ZUVsZW1lbnQoZWxlbWVudCwgZmFsc2UsIFwiQWN0aW9uc09uUmVjb3JkXCIpLFxyXG4gICAgICAgICAgICBkaXNhYmxlZDogKGVsZW1lbnQpID0+XHJcbiAgICAgICAgICAgICAgdGhpcy5mb3JtLkFjdGlvbnNPblJlY29yZC5pbmRleE9mKGVsZW1lbnQpID49XHJcbiAgICAgICAgICAgICAgdGhpcy5mb3JtLkFjdGlvbnNPblJlY29yZC5sZW5ndGggLSAxLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdLFxyXG4gICAgICB9LFxyXG4gICAgICB7IGtleTogXCJJY29uXCIsIGRpc3BsYXk6IFwiSWNvbmFcIiwgc3R5bGVzOiB7IGZsZXg6IFwiIDAgMCAxNSVcIiB9IH0sXHJcbiAgICAgIHsga2V5OiBcIk5hbWVcIiwgZGlzcGxheTogXCJOb21lXCIsIHN0eWxlczogeyBmbGV4OiBcIiAwIDAgMjAlXCIgfSB9LFxyXG4gICAgICB7IGtleTogXCJBY3Rpb25cIiwgZGlzcGxheTogXCJBemlvbmVcIiB9LFxyXG4gICAgXTtcclxuXHJcbiAgICB0aGlzLnRyaWdnZXJzQ29sdW1ucyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIGtleTogXCJhY3Rpb25cIixcclxuICAgICAgICBkaXNwbGF5OiBcIlwiLFxyXG4gICAgICAgIHR5cGU6IFR5cGVDb2x1bW4uTWVudUFjdGlvbixcclxuICAgICAgICBidXR0b25NZW51SWNvbjogXCJtb3JlX3ZlcnRcIixcclxuICAgICAgICBzdHlsZXM6IHsgZmxleDogXCIwIDAgNiVcIiB9LFxyXG4gICAgICAgIGFjdGlvbnM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogXCJNb2RpZmljYVwiLFxyXG4gICAgICAgICAgICBpY29uOiBcImVkaXRcIixcclxuICAgICAgICAgICAgZm46IChlbGVtZW50LCBpbmRleCwgY29sKSA9PiB0aGlzLm9wZW5UcmlnZ2Vyc0RpYWxvZyhlbGVtZW50KSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6IFwiRWxpbWluYVwiLFxyXG4gICAgICAgICAgICBpY29uOiBcImRlbGV0ZVwiLFxyXG4gICAgICAgICAgICBmbjogKGVsZW1lbnQsIGluZGV4LCBjb2wpID0+XHJcbiAgICAgICAgICAgICAgdGhpcy5kZWxldGVUcmlnZ2VyKGVsZW1lbnQpLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHsga2V5OiBcImRlc2NyaXB0aW9uXCIsIGRpc3BsYXk6IFwiRGVzY3JpemlvbmVcIiwgc3R5bGVzOiB7IGZsZXg6IFwiIDAgMCAxNSVcIiB9IH0sXHJcbiAgICAgIHsga2V5OiBcImV4ZWN1dGlvblwiLCBkaXNwbGF5OiBcIkNvc2EgZXNlZ3VlXCIsIHN0eWxlczogeyBmbGV4OiBcIiAwIDAgMTUlXCIgfSB9LFxyXG4gICAgXTtcclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhIGlsIEZvcm1Hcm91cCBwZXIgbCdvZ2dldHRvIEZvcm1cclxuICAgKi9cclxuICBwcml2YXRlIGNyZWF0ZUZvcm1Gb3JtKCkge1xyXG4gICAgdGhpcy5mb3JtRm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIENvZGU6IFt0aGlzLmZvcm0uQ29kZV0sXHJcbiAgICAgIE5hbWU6IFt0aGlzLmZvcm0uTmFtZSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIERlc2NyaXB0aW9uOiBbdGhpcy5mb3JtLkRlc2NyaXB0aW9uXSxcclxuICAgICAgRm9ybVNjYWxhclR5cGU6IFt0aGlzLmZvcm0uRm9ybVNjYWxhclR5cGUsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlRm9ybVNjYWxhclR5cGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERyYWcgYW5kIERyb3AgZGVsbGUgY29sb25uZSBkZWwgZm9ybVxyXG4gICAqL1xyXG5cclxuICBvbkRyYWdSZWxlYXNlZChldmVudCkge1xyXG5cclxuICB9XHJcblxyXG4gIG9uRHJhZ0VuZGVkKGV2ZW50KSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5zZXRGaWVsZE9yZGluYWxQb3NpdGlvbigpO1xyXG4gICAgICB0aGlzLnJlbG9hZEZpZWxkc1RhYmxlKCk7XHJcbiAgICB9LCAxMDAwKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWEgaWwgRm9ybUdyb3VwIGVwciBsJ2FnZ2l1bnRhIG8gbGEgbW9kaWZpY2EgZGkgdW5hIGFjdGlvbiBzdWkgcmVjb3JkIGRlbGxhIEZvcm0uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjcmVhdGVBY3Rpb25PblJlY29yZEZvcm0oKSB7XHJcbiAgICB0aGlzLmFjdGlvbk9uUmVjb3JkRm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIE5hbWU6IFt0aGlzLnNlbGVjdGVkQWN0aW9uLk5hbWUsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBJY29uOiBbdGhpcy5zZWxlY3RlZEFjdGlvbi5JY29uLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgQWN0aW9uOiBbdGhpcy5zZWxlY3RlZEFjdGlvbi5BY3Rpb24sIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGl1ZGUgaWwgZGlhbG9nIHBlciBhZ2dpdW5nZXJlL21vZGlmaWNhcmUgdW4gRmllbGQgc2VuemEgc2FsdmFyZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgY2xvc2VGaWVsZERpYWxvZygpIHtcclxuICAgIGlmICh0aGlzLmRpYWxvZ0ZpZWxkUmVmICE9IHVuZGVmaW5lZCkgdGhpcy5kaWFsb2dGaWVsZFJlZi5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBnZXN0aXJlIGwnYXBlcnR1cmEgZGVsIGRpYWxvZyBwZXIgbGEgbW9kaWZpY2EgZGkgdW4gRmllbGQuXHJcbiAgICogU2UgaWwgZmllbGQgw6ggZGkgdGlwbyBcIkZvcm0gZGkgZGV0dGFnbGlvXCIgYXByZSBpbCBkaWFsb2cgcGVyIGxhIG1vZGlmaWNhIGRpIHVuYVxyXG4gICAqIElubmVyRm9ybSBhbHRyaW1lbnRpIGFwcmUgcXVlbGxvIHBlciBsYSBtb2RpZmljYSBkaSB1biBGaWVsZC5cclxuICAgKiBAcGFyYW0gZmllbGQgQ2FtcG8gZGEgbW9kaWZpY2FyZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgZWRpdEZpZWxkKGZpZWxkOiBCYXNlRmllbGQpIHtcclxuICAgIGlmIChmaWVsZC5GaWVsZFR5cGUgIT0gRmllbGRUeXBlRW51bVtcIkZvcm0gZGkgZGV0dGFnbGlvXCJdKSB7XHJcbiAgICAgIHRoaXMub3BlbkZpZWxkRGlhbG9nKGZpZWxkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMub3BlbklubmVyRm9ybURpYWxvZyhcclxuICAgICAgICB0aGlzLmZvcm0uSW5uZXJGb3Jtcy5maW5kKChmKSA9PiBmLk5hbWUgPT0gZmllbGQuTGFiZWwpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGdlc3RpcmUgbGEgZHVwbGljYXppb25lIGRpIHVuIEZpZWxkLlxyXG4gICAqIEBwYXJhbSBmaWVsZCBDYW1wbyBkYSBtb2RpZmljYXJlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBkdXBsaWNhdGVGaWVsZChmaWVsZDogQmFzZUZpZWxkLCBvcmRpbmFsUG9zaXRpb24gPSBudWxsKSB7XHJcbiAgICBpZiAoZmllbGQuRmllbGRUeXBlICE9IEZpZWxkVHlwZUVudW1bXCJGb3JtIGRpIGRldHRhZ2xpb1wiXSkge1xyXG4gICAgICAvLyByaWNyZW8gbCdvZ2dldHRvIHBhc3NhbmRvIHBlciB1biBqc29uXHJcbiAgICAgIGxldCBjbG9uZUZpZWxkOiBCYXNlRmllbGQgPSB0aGlzLnNhZmVDbG9uZShmaWVsZCk7XHJcblxyXG4gICAgICBjbG9uZUZpZWxkLkxhYmVsID0gZmllbGRbXCJMYWJlbFwiXSArIFwiQ29weVwiO1xyXG4gICAgICBjbG9uZUZpZWxkLklEID0gdGhpcy5nZW5lcmF0ZUdVSUQoKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkID0gbmV3IEJhc2VGaWVsZCgpO1xyXG4gICAgICBpZiAob3JkaW5hbFBvc2l0aW9uID09IG51bGwpIHtcclxuICAgICAgICBjbG9uZUZpZWxkLk9yZGluYWxQb3NpdGlvbiA9IHRoaXMuZm9ybS5GaWVsZHMubGVuZ3RoICsgMTtcclxuICAgICAgICB0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZCA9IG51bGw7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY2xvbmVGaWVsZC5PcmRpbmFsUG9zaXRpb24gPSBvcmRpbmFsUG9zaXRpb247XHJcbiAgICAgICAgdGhpcy5pbmRleFNlbGVjdGVkRmllbGQgPSBvcmRpbmFsUG9zaXRpb247XHJcbiAgICAgICAgLy8gdXRpbGl6em8gb3JkaW5hbCBwb3NpdGlvbiBwZXIgaW5maWxhcmUgaWwgY2FtcG8gY29ycmV0dGFtZXRuZSBuZWxsYSBsaXN0YVxyXG4gICAgICAgIC8vIHBlciBmYXJsbyBzZSBub24gw6ggbnVsbG8gZGV2byBjcmVhcmUgbG8gc3BhemlvXHJcbiAgICAgICAgdGhpcy5PcmRpbmF0ZWRJbnNlcnRGaWVsZChmaWVsZCwgb3JkaW5hbFBvc2l0aW9uKVxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgY2xvbmVGaWVsZFN0cnVjdHVyZSA9IHsgZmllbGQ6IGNsb25lRmllbGQsIHJlb3BlbjogMCB9XHJcbiAgICAgIHRoaXMub25TYXZlRmllbGQoY2xvbmVGaWVsZFN0cnVjdHVyZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhbGVydChcIm5vbiDDqCBwb3NzaWJpbGUgZHVwbGljYXJlIHVuYSBmb3JtIGRpIGRldHRhZ2xpb1wiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgT3JkaW5hdGVkSW5zZXJ0RmllbGQoZmllbGQ6IEJhc2VGaWVsZCwgb3JkaW5hbFBvc2l0aW9uID0gMCkge1xyXG4gICAgdGhpcy5mb3JtLkZpZWxkcy5zcGxpY2Uob3JkaW5hbFBvc2l0aW9uLCAwLCBmaWVsZCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBvc2l0aW9uRXhjaGFuZ2VGaWVsZHMoZmllbGQxOiBCYXNlRmllbGQsIGZpZWxkMjogQmFzZUZpZWxkKSB7XHJcbiAgICBjb25zdCB0ZW1wID0gZmllbGQxO1xyXG4gICAgdGhpcy5mb3JtLkZpZWxkc1tmaWVsZDEuT3JkaW5hbFBvc2l0aW9uXSA9IGZpZWxkMjtcclxuICAgIHRoaXMuZm9ybS5GaWVsZHNbZmllbGQyLk9yZGluYWxQb3NpdGlvbl0gPSB0ZW1wO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGNoZSBnZW5lcmEgdW5hIG51b3ZhIEdVSURcclxuICAgKi9cclxuICBwcml2YXRlIGdlbmVyYXRlR1VJRCgpIHtcclxuICAgIHJldHVybiAneHh4eC14eHh4LXh4eHgteHh4eCcucmVwbGFjZSgvW3h5XS9nLCBmdW5jdGlvbiAoYykge1xyXG4gICAgICB2YXIgciA9IE1hdGgucmFuZG9tKCkgKiAxNiB8IDAsXHJcbiAgICAgICAgdiA9IGMgPT0gJ3gnID8gciA6IChyICYgMHgzIHwgMHg4KTtcclxuICAgICAgcmV0dXJuIHYudG9TdHJpbmcoMTYpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHJpbXVvdmVyZSB1biBGaWVsZCBhbGwnaW50ZXJubyBkaSB1bmEgRm9ybS5cclxuICAgKiBSaWNoaWVkZSBjb25mZXJtYSBhbGwndXRlbnRlIHByaW1hIGRpIHJpbXVvdmVybG8uXHJcbiAgICogQHBhcmFtIGZpZWxkIEJhc2VGaWVsZCBkYSByaW11b3ZlcmVcclxuICAgKi9cclxuICBwcml2YXRlIGRlbGV0ZUVsZW1lbnQoXHJcbiAgICBlbGVtZW50OiBCYXNlRmllbGQgfCBBY3Rpb25PblJlY29yZCB8IEZvcm0sXHJcbiAgICBwcm9wZXJ0eU5hbWU6IHN0cmluZ1xyXG4gICkge1xyXG4gICAgRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UuQ29uZmlybShcclxuICAgICAgXCJFbGltaW5hcmUgbCdlbGVtZW50byBzZWxlemlvbmF0bz9cIixcclxuICAgICAgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZm9ybVtwcm9wZXJ0eU5hbWVdLnNwbGljZShcclxuICAgICAgICAgIHRoaXMuZm9ybVtwcm9wZXJ0eU5hbWVdLmluZGV4T2YoZWxlbWVudCksXHJcbiAgICAgICAgICAxXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAocHJvcGVydHlOYW1lID09PSBcIkZpZWxkc1wiKSB7XHJcbiAgICAgICAgICB0aGlzLnNldEZpZWxkT3JkaW5hbFBvc2l0aW9uKCk7XHJcbiAgICAgICAgICB0aGlzLnJlbG9hZEZpZWxkc1RhYmxlKCk7XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hGaWVsZFR5cGVPcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hQcmV2aWV3KCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eU5hbWUgPT09IFwiQWN0aW9uc09uUmVjb3JkXCIpIHtcclxuICAgICAgICAgIHRoaXMuc2V0QWN0aW9uT3JkaW5hbFBvc2l0aW9uKCk7XHJcbiAgICAgICAgICB0aGlzLnJlbG9hZEFjdGlvbnNPblJlY29yZFRhYmxlKCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eU5hbWUgPT09IFwiQWN0aW9uQnV0dG9uc1wiKSB7XHJcbiAgICAgICAgICB0aGlzLnNldEFjdGlvbkJ1dHRvbk9yZGluYWxQb3NpdGlvbigpO1xyXG4gICAgICAgICAgdGhpcy5yZWxvYWRBY3Rpb25CdXR0b25zT25SZWNvcmRUYWJsZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZmFsc2UsXHJcbiAgICAgIFwiUmljaGllc3RhIGNvbmZlcm1hXCJcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHNwb3N0YXJlIHVuIGNhbXBvIGFsbCdpbnRlcm5vIGRlbGxhIGZvcm0uXHJcbiAgICogQHBhcmFtIGZpZWxkIE9nZ2V0dG8gZGkgdGlwbyBCYXNlRmllbGQgZGEgc3Bvc3RhcmUuXHJcbiAgICogQHBhcmFtIG1vdmVVcCBTZSBUUlVFIGFsbG9yYSBzcG9zdGEgdmVyc28gbCdhbHRvIGlsIGNhbXBvIChhYmJhc3NhIGwnaW5kaWNlKSBhbHRyaW1lbnRpIGlsIGNvbnRyYXJpby5cclxuICAgKi9cclxuICBwcml2YXRlIG1vdmVFbGVtZW50KFxyXG4gICAgZWxlbWVudDogQmFzZUZpZWxkIHwgQWN0aW9uT25SZWNvcmQsXHJcbiAgICBtb3ZlVXA6IGJvb2xlYW4sXHJcbiAgICBwcm9wZXJ0eU5hbWU6IHN0cmluZ1xyXG4gICkge1xyXG4gICAgY29uc3Qgc3RhcnRpbmdJbmRleCA9IHRoaXMuZm9ybVtwcm9wZXJ0eU5hbWVdLmluZGV4T2YoZWxlbWVudCk7XHJcbiAgICBjb25zdCBlbmRpbmdJbmRleCA9IHN0YXJ0aW5nSW5kZXggKyAobW92ZVVwID8gLTEgOiAxKTtcclxuXHJcbiAgICB0aGlzLmZvcm1bcHJvcGVydHlOYW1lXS5zcGxpY2Uoc3RhcnRpbmdJbmRleCwgMSk7XHJcbiAgICB0aGlzLmZvcm1bcHJvcGVydHlOYW1lXS5zcGxpY2UoZW5kaW5nSW5kZXgsIDAsIGVsZW1lbnQpO1xyXG5cclxuICAgIGlmIChwcm9wZXJ0eU5hbWUgPT09IFwiRmllbGRzXCIpIHtcclxuICAgICAgdGhpcy5zZXRGaWVsZE9yZGluYWxQb3NpdGlvbigpO1xyXG4gICAgICB0aGlzLnJlbG9hZEZpZWxkc1RhYmxlKCk7XHJcbiAgICB9IGVsc2UgaWYgKHByb3BlcnR5TmFtZSA9PT0gXCJBY3Rpb25zT25SZWNvcmRcIikge1xyXG4gICAgICB0aGlzLnNldEFjdGlvbk9yZGluYWxQb3NpdGlvbigpO1xyXG4gICAgICB0aGlzLnJlbG9hZEFjdGlvbnNPblJlY29yZFRhYmxlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbXBvc3RhIGwnb3JkaW5hbWVudG8gZGVsbGUgc2V6aW9uaSBjaGUgY29tcG9uZ29ubyBsYSBmb3JtLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0Rm9ybUZpZWxkR3JvdXBPcmRpbmFsUG9zaXRpb24oKSB7XHJcbiAgICB0aGlzLmZvcm0uRm9ybUZpZWxkc0dyb3Vwcy5mb3JFYWNoKChnLCBpKSA9PiAoZy5PcmRpbmFsUG9zaXRpb24gPSBpKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbXBvc3RhIGwnb3JkaW5hbWVudG8gZGVpIGNhbXBpIGFsbCdpbnRlcm5vIGRlbGxhIGZvcm0gaW4gYmFzZSBhbGwnb3JkaW5lIGNoZSBsJ3V0ZW50ZVxyXG4gICAqIGhhIGRlZmluaXRvIG5lbGxhIHRhYmVsbGEgaW4gY3VpIHNvbm8gbW9zdHJhdGlcclxuICAgKi9cclxuICBwcml2YXRlIHNldEZpZWxkT3JkaW5hbFBvc2l0aW9uKCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybS5GaWVsZHMpIHtcclxuICAgICAgdGhpcy5mb3JtLkZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICAgIGZpZWxkLk9yZGluYWxQb3NpdGlvbiA9IHRoaXMuZm9ybS5GaWVsZHMuaW5kZXhPZihmaWVsZCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciByaWNhcmljYXJlIGkgZGF0aSBkZWxsYSB0YWJlbGxhIGRlaSBjYW1waSBhZ2dpdW50aSBpbiB1bmEgZm9ybVxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVsb2FkRmllbGRzVGFibGUoKSB7XHJcbiAgICBpZiAodGhpcy5maWVsZHNUYWJsZSkge1xyXG4gICAgICB0aGlzLmZpZWxkc1RhYmxlLnJlbG9hZERhdGF0YWJsZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW1wb3N0YSBsJ29yZGluYW1lbnRvIGRlaSBjYW1waSBhbGwnaW50ZXJubyBkZWxsYSBmb3JtIGluIGJhc2UgYWxsJ29yZGluZSBjaGUgbCd1dGVudGVcclxuICAgKiBoYSBkZWZpbml0byBuZWxsYSB0YWJlbGxhIGluIGN1aSBzb25vIG1vc3RyYXRpXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRBY3Rpb25PcmRpbmFsUG9zaXRpb24oKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtLkFjdGlvbnNPblJlY29yZCkge1xyXG4gICAgICB0aGlzLmZvcm0uQWN0aW9uc09uUmVjb3JkLmZvckVhY2goKGFjdGlvbikgPT4ge1xyXG4gICAgICAgIGFjdGlvbi5PcmRpbmFsUG9zaXRpb24gPSB0aGlzLmZvcm0uQWN0aW9uc09uUmVjb3JkLmluZGV4T2YoYWN0aW9uKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbXBvc3RhIGwnb3JkaW5hbWVudG8gZGVpIGNhbXBpIGFsbCdpbnRlcm5vIGRlbGxhIGZvcm0gaW4gYmFzZSBhbGwnb3JkaW5lIGNoZSBsJ3V0ZW50ZVxyXG4gICAqIGhhIGRlZmluaXRvIG5lbGxhIHRhYmVsbGEgaW4gY3VpIHNvbm8gbW9zdHJhdGlcclxuICAgKi9cclxuICBwcml2YXRlIHNldEFjdGlvbkJ1dHRvbk9yZGluYWxQb3NpdGlvbigpIHtcclxuICAgIGlmICh0aGlzLmZvcm0uQWN0aW9uQnV0dG9ucykge1xyXG4gICAgICB0aGlzLmZvcm0uQWN0aW9uQnV0dG9ucy5mb3JFYWNoKChhY3Rpb24pID0+IHtcclxuICAgICAgICBhY3Rpb24uT3JkaW5hbFBvc2l0aW9uID0gdGhpcy5mb3JtLkFjdGlvbkJ1dHRvbnMuaW5kZXhPZihhY3Rpb24pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgcmljYXJpY2FyZSBpIGRhdGkgZGVsbGEgdGFiZWxsYSBkZWxsZSBhemlvbmkgYWdnaXVudGl2ZSBzdWkgcmVjb3JkIGRlbGxhIEZvcm0uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZWxvYWRBY3Rpb25zT25SZWNvcmRUYWJsZSgpIHtcclxuICAgIGlmICh0aGlzLmFjdGlvbnNPblJlY29yZFRhYmxlKSB7XHJcbiAgICAgIHRoaXMuYWN0aW9uc09uUmVjb3JkVGFibGUucmVsb2FkRGF0YXRhYmxlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHJpY2FyaWNhcmUgaSBkYXRpIGRlbGxhIHRhYmVsbGEgZGVsbGUgYXppb25pIGFnZ2l1bnRpdmUgc3VpIHJlY29yZCBkZWxsYSBGb3JtLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVsb2FkQWN0aW9uQnV0dG9uc09uUmVjb3JkVGFibGUoKSB7XHJcbiAgICBpZiAodGhpcy5hY3Rpb25CdXR0b25zVGFibGUpIHtcclxuICAgICAgdGhpcy5hY3Rpb25CdXR0b25zVGFibGUucmVsb2FkRGF0YXRhYmxlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgb25FeHRlcm5hbENvbXBvbmVudE91dChldjogZXZlbnRPdXQpIHtcclxuICAgIHRoaXMub3V0LmVtaXQoZXYpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcm9jZXNzTmV4dEFpRGF0YUdldHRlckZpZWxkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jdXJyZW50QWlEYXRhR2V0dGVyRmllbGQgPSB0aGlzLnBlbmRpbmdBaURhdGFHZXR0ZXJGaWVsZHMuc2hpZnQoKTtcclxuICAgIHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQuaW5wdXRQYXJhbXMuY29uZmlnLm1vZGUgPSBRdWVyeUVkaXRvck1vZGVFbnVtLkNPTVBPU0VSO1xyXG4gICAgdGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudC5pbnB1dFBhcmFtcy5jb25maWcubG9hZFF1ZXJ5U3RhdHVzZXMgPSBudWxsO1xyXG4gICAgdGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudC5pbnB1dFBhcmFtcy5jb25maWcuRGF0YUdldHRlclNwZWVjaFRleHQgPSB0aGlzLmN1cnJlbnRBaURhdGFHZXR0ZXJGaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJTcGVlY2hUZXh0O1xyXG4gICAgLy8gRm9yemEgbGEgKHJpKWNyZWF6aW9uZSBkZWwgY29tcG9uZW50ZSBhenplcmFuZG8gcHJpbWEgaWwgZmxhZ1xyXG4gICAgdGhpcy5haURhdGFHZXR0ZXJMb2FkaW5nID0gZmFsc2U7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHsgdGhpcy5haURhdGFHZXR0ZXJMb2FkaW5nID0gdHJ1ZTsgfSk7XHJcbiAgfVxyXG5cclxuICBvbkFpRGF0YUdldHRlck91dChldjogZXZlbnRPdXQpOiB2b2lkIHtcclxuICAgIGlmIChldi5CZWhhdmlvdXJzLmluZGV4T2YoXCJzYXZlLXF1ZXJ5XCIpID09PSAtMSB8fCAhdGhpcy5jdXJyZW50QWlEYXRhR2V0dGVyRmllbGQpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBkYXRhID0gZXYuUGFyYW1zO1xyXG4gICAgdGhpcy5jdXJyZW50QWlEYXRhR2V0dGVyRmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUgPSBkYXRhO1xyXG4gICAgdGhpcy5jdXJyZW50QWlEYXRhR2V0dGVyRmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ2FyZGluYWxpdHkgPSAxO1xyXG4gICAgdGhpcy5jdXJyZW50QWlEYXRhR2V0dGVyRmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVySGFzUmVzZXRCdXR0b24gPSB0cnVlO1xyXG5cclxuICAgIC8vIERhdGFHZXR0ZXJDb2x1bW5Gb3JjZSBkZXZlIGVzc2VyZSBsYSBzdHJpbmdhIGNoaWF2ZSAobm9uIGwnb2dnZXR0bykgcGVyIGZ1bnppb25hcmUgY29uIGVxcC1zZWxlY3RcclxuICAgIGNvbnN0IGNvbHVtbkZvcmNlID0gZGF0YT8uRGF0YUdldHRlckNvbHVtbkZvcmNlO1xyXG4gICAgaWYgKGNvbHVtbkZvcmNlKSB7XHJcbiAgICAgIC8vIFYyIHNlcnZlciByZXN0aXR1aXNjZSB7IGtleSwgdmFsdWUsIGtleVByb3BlcnR5IH0g4oCUIGVzdHJhaWFtbyBzb2xvIGlsIGtleSBzdHJpbmdcclxuICAgICAgdGhpcy5jdXJyZW50QWlEYXRhR2V0dGVyRmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgPVxyXG4gICAgICAgIHR5cGVvZiBjb2x1bW5Gb3JjZSA9PT0gJ29iamVjdCcgPyBjb2x1bW5Gb3JjZS5rZXkgOiBjb2x1bW5Gb3JjZTtcclxuICAgIH0gZWxzZSBpZiAoZGF0YT8uc2VsZWN0ZWRGaWVsZHM/Lmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICBjb25zdCBzZiA9IGRhdGEuc2VsZWN0ZWRGaWVsZHNbMF07XHJcbiAgICAgIHRoaXMuY3VycmVudEFpRGF0YUdldHRlckZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlID1cclxuICAgICAgICBzZi5EYXRhYmFzZVRhYmxlTmFtZSArIFwiX1wiICsgc2YuUHJvcGVydHlOYW1lICsgXCJfX1wiICsgc2YuQ3VycmVudFRyYW5zbGF0ZS5yZXBsYWNlKC8gL2csICdfJyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jdXJyZW50QWlEYXRhR2V0dGVyRmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyU3BlZWNoVGV4dCA9IG51bGw7XHJcbiAgICAvLyBBenplcmEgRGF0YUdldHRlclNwZWVjaFRleHQgZGFsIGNvbmZpZyBvYmplY3QgcGVyIGV2aXRhcmUgY2hlIFwiTW9kaWZpY2FcIiBsbyByaWxhbmNpXHJcbiAgICB0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50LmlucHV0UGFyYW1zLmNvbmZpZy5EYXRhR2V0dGVyU3BlZWNoVGV4dCA9IG51bGw7XHJcbiAgICB0aGlzLmN1cnJlbnRBaURhdGFHZXR0ZXJGaWVsZCA9IG51bGw7XHJcbiAgICB0aGlzLmFpRGF0YUdldHRlckxvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAodGhpcy5wZW5kaW5nQWlEYXRhR2V0dGVyRmllbGRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5wcm9jZXNzTmV4dEFpRGF0YUdldHRlckZpZWxkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUUklHR0VSU1xyXG4gICAqL1xyXG5cclxuICBvcGVuVHJpZ2dlcnNEaWFsb2coZXY6IFRyaWdnZXIgPSBudWxsKSB7XHJcblxyXG4gICAgaWYgKGV2ICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFRyaWdnZXIgPSBldjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRUcmlnZ2VyID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRpYWxvZ1RyaWdnZXJzUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ1RyaWdnZXJzLCB7XHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgIHdpZHRoOiBcIjc1JVwiLFxyXG4gICAgICBoZWlnaHQ6IFwiODAlXCIsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNhdmVUcmlnZ2VyKGVsZW1lbnQ6IFRyaWdnZXIpIHtcclxuXHJcbiAgICBpZiAoZWxlbWVudCAhPSBudWxsKSB7XHJcbiAgICAgIGlmICh0aGlzLmZvcm0uVHJpZ2dlcnMgIT0gbnVsbCkge1xyXG4gICAgICAgIHZhciBleGlzdHNUcmlnZ2VyID0gdGhpcy5mb3JtLlRyaWdnZXJzLmZpbmQoeCA9PiB4LkNJRCA9PSBlbGVtZW50LkNJRCk7XHJcbiAgICAgICAgaWYgKGV4aXN0c1RyaWdnZXIgPT0gbnVsbCkge1xyXG4gICAgICAgICAgLy8gTnVvdm8gdHJpZ2dlclxyXG4gICAgICAgICAgdGhpcy5mb3JtLlRyaWdnZXJzLnB1c2goZWxlbWVudCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGV4aXN0c1RyaWdnZXIgPSBlbGVtZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmZvcm0uVHJpZ2dlcnMgPSBuZXcgQXJyYXk8VHJpZ2dlcj4oKTtcclxuICAgICAgICB0aGlzLmZvcm0uVHJpZ2dlcnMucHVzaChlbGVtZW50KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRyaWdnZXJzVGFibGUucmVsb2FkRGF0YXRhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kaWFsb2dUcmlnZ2Vyc1JlZi5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlVHJpZ2dlcihlbGVtZW50OiBUcmlnZ2VyKSB7XHJcbiAgICB2YXIgaW5kZXggPSB0aGlzLmZvcm0uVHJpZ2dlcnMuZmluZEluZGV4KHggPT4geC5DSUQgPT0gZWxlbWVudC5DSUQpO1xyXG4gICAgdGhpcy5mb3JtLlRyaWdnZXJzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB0aGlzLnRyaWdnZXJzVGFibGUucmVsb2FkRGF0YXRhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVBY3Rpb25CdXR0b24oZWxlbWVudDogQWN0aW9uQnV0dG9uKSB7XHJcbiAgICB2YXIgaW5kZXggPSB0aGlzLmZvcm0uQWN0aW9uQnV0dG9ucy5maW5kSW5kZXgoeCA9PiB4LkJ1dHRvbkNvZGUgPT0gZWxlbWVudC5CdXR0b25Db2RlKTtcclxuICAgIHRoaXMuZm9ybS5BY3Rpb25CdXR0b25zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB0aGlzLmFjdGlvbkJ1dHRvbnNUYWJsZS5yZWxvYWREYXRhdGFibGUoKTtcclxuICB9XHJcblxyXG4gIG9wZW5BaUVkaXREaWFsb2coKSB7XHJcbiAgICB0aGlzLmFpRWRpdFByb21wdCA9IFwiXCI7XHJcbiAgICB0aGlzLmFpRWRpdEF0dGFjaG1lbnRzID0gW107XHJcbiAgICB0aGlzLmFpRWRpdEF1dG9zYXZlID0gZmFsc2U7XHJcbiAgICB0aGlzLmFpRWRpdExvYWRpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0FpUHJvbXB0SGlzdG9yeSA9IHRydWU7XHJcbiAgICB0aGlzLmRpYWxvZ0FpRWRpdFJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dBaUVkaXQsIHtcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IFwiNjAlXCIsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsb3NlQWlFZGl0RGlhbG9nKCkge1xyXG4gICAgdGhpcy5fc3RvcEFpQ291bnRkb3duKCk7XHJcbiAgICB0aGlzLmRpYWxvZ0FpRWRpdFJlZi5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgb3BlbkFpSGlzdG9yeURpYWxvZygpIHtcclxuICAgIHRoaXMuZGlhbG9nQWlIaXN0b3J5UmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ0FpSGlzdG9yeSwge1xyXG4gICAgICBkaXNhYmxlQ2xvc2U6IGZhbHNlLFxyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgbWF4SGVpZ2h0OiAnODB2aCcsXHJcbiAgICAgIHBvc2l0aW9uOiB7IHRvcDogJzQwcHgnIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3N0b3BBaUNvdW50ZG93bigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9haUNvdW50ZG93blJlZikge1xyXG4gICAgICBjbGVhckludGVydmFsKHRoaXMuX2FpQ291bnRkb3duUmVmKTtcclxuICAgICAgdGhpcy5fYWlDb3VudGRvd25SZWYgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgdGhpcy5haUVkaXRDb3VudGRvd24gPSAwO1xyXG4gICAgdGhpcy5haUVkaXRFc3RpbWF0ZWRTZWMgPSAwO1xyXG4gICAgdGhpcy5haUVkaXRJc092ZXJ0aW1lID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zdGFydEFpQ291bnRkb3duKGVzdGltYXRlZFNlY29uZHM6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5fc3RvcEFpQ291bnRkb3duKCk7XHJcbiAgICB0aGlzLmFpRWRpdEVzdGltYXRlZFNlYyA9IE1hdGguY2VpbChlc3RpbWF0ZWRTZWNvbmRzICogMS4yKTtcclxuICAgIHRoaXMuYWlFZGl0Q291bnRkb3duID0gdGhpcy5haUVkaXRFc3RpbWF0ZWRTZWM7XHJcbiAgICB0aGlzLl9haUNvdW50ZG93blJlZiA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgdGhpcy5haUVkaXRDb3VudGRvd24tLTtcclxuICAgICAgaWYgKHRoaXMuYWlFZGl0Q291bnRkb3duIDwgMCAmJiAhdGhpcy5haUVkaXRJc092ZXJ0aW1lKSB7XHJcbiAgICAgICAgdGhpcy5haUVkaXRJc092ZXJ0aW1lID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSwgMTAwMCk7XHJcbiAgfVxyXG5cclxuICBjYW5jZWxBaUVkaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9haUVkaXRDYW5jZWxsZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5fc3RvcEFpQ291bnRkb3duKCk7XHJcbiAgICB0aGlzLmFpRWRpdExvYWRpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuYWlGaWVsZFN1Z2dlc3RMb2FkaW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLmRpYWxvZ0FpRWRpdFJlZj8uY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIG9uQWlFZGl0Rm9yRmllbGQoZmllbGRDb2RlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuYWlFZGl0RmllbGRDb250ZXh0ID0geyBjb2RlOiBmaWVsZENvZGUgfTtcclxuICAgIHRoaXMub3BlbkFpRWRpdERpYWxvZygpO1xyXG4gIH1cclxuXHJcbiAgb25BaUdyYXBoaWNTdWdnZXN0KGRhdGE6IHsgY29kZTogc3RyaW5nOyBoaW50OiBzdHJpbmcgfSk6IHZvaWQge1xyXG4gICAgY29uc3QgcmF3SGludCA9IGRhdGEuaGludD8udHJpbSgpID8/ICcnO1xyXG4gICAgY29uc3QgZmllbGRMYWJlbCA9IGRhdGEuY29kZT8udHJpbSgpIHx8ICdfY2FtcG9zZW56YW5vbWVfJztcclxuXHJcbiAgICBpZiAoIXRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uPy5Gb3Jtcz8uU3BlZWNoVG9HcmFwaGljc0VuZFBvaW50KSB7XHJcbiAgICAgIC8vIEZhbGxiYWNrOiBwYXNzYSBpbCByYXdIaW50IG5lbGwnaW5qZWN0ZWRQcm9tcHQ7IHNlbmRBaUVkaXQgZXN0cmFycsOgIGlsIG1vZGVsbG8gZGEgZXNzb1xyXG4gICAgICBjb25zdCBpbmplY3RlZFByb21wdCA9IHJhd0hpbnRcclxuICAgICAgICA/IGBWb2dsaW8gbW9kaWZpY2FyZSBpbiBtYW5pZXJhIGNvbXBsZXRhIGxhIGdyYWZpY2EgZGVsIGNhbXBvICcke2ZpZWxkTGFiZWx9JyBzZWd1ZW5kbyBpbiBtYW5pZXJhIGluY29udGVzdGFiaWxlIHF1ZXN0YSBpbmRpY2F6aW9uZTogJyR7cmF3SGludH0nYFxyXG4gICAgICAgIDogYFZvZ2xpbyBtb2RpZmljYXJlIGluIG1hbmllcmEgY29tcGxldGEgbGEgZ3JhZmljYSBkZWwgY2FtcG8gJyR7ZmllbGRMYWJlbH0nIGNvbiB1bm8gc3RpbGUgY3JlYXRpdm8gZSBvcmlnaW5hbGUgYSB0dWEgc2NlbHRhYDtcclxuICAgICAgdGhpcy5haUVkaXRGaWVsZENvbnRleHQgPSB7IGNvZGU6IGRhdGEuY29kZSB9O1xyXG4gICAgICB0aGlzLmFpRmllbGRTdWdnZXN0TG9hZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2VuZEFpRWRpdChpbmplY3RlZFByb21wdCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB7IGNsZWFuVGV4dDogaGludCwgbW9kZWxJZDogYWlNb2RlbElkIH0gPSB0aGlzLmV4dHJhY3RNb2RlbEZyb21UZXh0KHJhd0hpbnQpO1xyXG5cclxuICAgIC8vIFRyb3ZhIGlsIGNhbXBvOiBnacOgIHNhbHZhdG8gbmVsIGZvcm0gb3BwdXJlIG51b3ZvIGFuY29yYSBuZWwgZGlhbG9nXHJcbiAgICBjb25zdCBmaWVsZEluRm9ybSA9IHRoaXMuZm9ybT8uRmllbGRzPy5maW5kKGYgPT4gZi5MYWJlbCA9PT0gZmllbGRMYWJlbCkgPz8gbnVsbDtcclxuICAgIGNvbnN0IGN1cnJlbnRGaWVsZCA9IGZpZWxkSW5Gb3JtID8/IHRoaXMuc2VsZWN0ZWRGaWVsZDtcclxuICAgIGlmICghY3VycmVudEZpZWxkKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5haUZpZWxkU3VnZ2VzdExvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIC8vIFN0ZXNzbyBwYXlsb2FkIGRpIG9uRm9ybUdyYXBoaWNTdWdnZXN0LCBtYSBGaWVsZHMgY29uIHNvbG8gaWwgY2FtcG8gY29ycmVudGVcclxuICAgIGNvbnN0IGdyYXBoaWNzUGFyYW1zOiBFbmRQb2ludERhdGFQYXJhbXNbXSA9IFtcclxuICAgICAgeyBQYXJhbU5hbWU6ICdOYW1lJywgUGFyYW1WYWx1ZTogdGhpcy5mb3JtPy5OYW1lID8/IGZpZWxkTGFiZWwsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVsnSW4gQm9keSddIH0sXHJcbiAgICAgIHsgUGFyYW1OYW1lOiAnRGVzY3JpcHRpb24nLCBQYXJhbVZhbHVlOiB0aGlzLmZvcm0/LkRlc2NyaXB0aW9uID8/IG51bGwsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVsnSW4gQm9keSddIH0sXHJcbiAgICAgIHsgUGFyYW1OYW1lOiAnVGhlbWVDU1MnLCBQYXJhbVZhbHVlOiB0aGlzLmZvcm0/LlRoZW1lQ1NTID8/IG51bGwsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVsnSW4gQm9keSddIH0sXHJcbiAgICAgIHsgUGFyYW1OYW1lOiAnVGl0bGVDU1MnLCBQYXJhbVZhbHVlOiB0aGlzLmZvcm0/LlRpdGxlQ1NTID8/IG51bGwsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVsnSW4gQm9keSddIH0sXHJcbiAgICAgIHsgUGFyYW1OYW1lOiAnRmllbGRzJywgUGFyYW1WYWx1ZTogW3sgTGFiZWw6IGN1cnJlbnRGaWVsZC5MYWJlbCwgRmllbGRUeXBlOiBjdXJyZW50RmllbGQuRmllbGRUeXBlIH1dLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bJ0luIEJvZHknXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogJ0hpbnQnLCBQYXJhbVZhbHVlOiBoaW50IHx8IHRoaXMuYnVpbGRSYW5kb21HcmFwaGljSGludCgpLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bJ0luIEJvZHknXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogJ01vZGVsSWQnLCBQYXJhbVZhbHVlOiBhaU1vZGVsSWQsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVsnSW4gQm9keSddIH0sXHJcbiAgICAgIHsgUGFyYW1OYW1lOiAnU2luZ2xlRmllbGRNb2RlJywgUGFyYW1WYWx1ZTogdHJ1ZSwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtWydJbiBCb2R5J10gfSxcclxuICAgIF07XHJcblxyXG4gICAgdGhpcy51dGlsaXR5SGVscGVyU2VydmljZS5SdW5FbmRQb2ludENhbGwoXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLkZvcm1zLlNwZWVjaFRvR3JhcGhpY3NFbmRQb2ludCxcclxuICAgICAgZ3JhcGhpY3NQYXJhbXMsXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuYWlGaWVsZFN1Z2dlc3RMb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGNvbnN0IHIgPSByZXMgYXMgeyBGaWVsZFN0eWxlcz86IHsgW2Nzc0NsYXNzTmFtZTogc3RyaW5nXTogeyBbcHJvcDogc3RyaW5nXTogc3RyaW5nIH0gfTsgV2FybmluZ3M/OiBzdHJpbmdbXSB9O1xyXG5cclxuICAgICAgICAvLyBBcHBsaWNhIEZpZWxkU3R5bGVzIGFsIGNhbXBvIHRhcmdldDsgc2UgdmVBcHBseVRvQWxsT2ZUeXBlIMOoIGF0dGl2bywgcHJvcGFnYSBhIHR1dHRpIGkgY2FtcGkgZGVsbG8gc3Rlc3NvIHRpcG9cclxuICAgICAgICBpZiAoci5GaWVsZFN0eWxlcykge1xyXG4gICAgICAgICAgY29uc3QgY3NzQ2xhc3NOYW1lID0gKEVxcER5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JDb21wb25lbnQuRklFTERfVFlQRV9DU1NfQ0xBU1MgYXMgYW55KVtjdXJyZW50RmllbGQuRmllbGRUeXBlXTtcclxuICAgICAgICAgIGlmIChjc3NDbGFzc05hbWUgJiYgci5GaWVsZFN0eWxlc1tjc3NDbGFzc05hbWVdICYmIHR5cGVvZiByLkZpZWxkU3R5bGVzW2Nzc0NsYXNzTmFtZV0gPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnZlQXBwbHlUb0FsbE9mVHlwZSkge1xyXG4gICAgICAgICAgICAgICh0aGlzLmZvcm0uRmllbGRzID8/IFtdKS5maWx0ZXIoZiA9PiBmLkZpZWxkVHlwZSA9PT0gY3VycmVudEZpZWxkLkZpZWxkVHlwZSkuZm9yRWFjaChmID0+IHtcclxuICAgICAgICAgICAgICAgIChmIGFzIGFueSlbY3NzQ2xhc3NOYW1lXSA9IHsgLi4uci5GaWVsZFN0eWxlcyFbY3NzQ2xhc3NOYW1lXSB9O1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIChjdXJyZW50RmllbGQgYXMgYW55KVtjc3NDbGFzc05hbWVdID0gci5GaWVsZFN0eWxlc1tjc3NDbGFzc05hbWVdO1xyXG4gICAgICAgICAgICAgIGlmIChmaWVsZEluRm9ybSkgKGZpZWxkSW5Gb3JtIGFzIGFueSlbY3NzQ2xhc3NOYW1lXSA9IHIuRmllbGRTdHlsZXNbY3NzQ2xhc3NOYW1lXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnZlQXBwbHlUb0FsbE9mVHlwZSA9IGZhbHNlO1xyXG5cclxuICAgICAgICAvLyBBZ2dpb3JuYSBzZWxlY3RlZEZpZWxkIHBlciBpbCBkaWFsb2dcclxuICAgICAgICBjb25zdCBhcHBseVRhcmdldCA9IGZpZWxkSW5Gb3JtID8/IGN1cnJlbnRGaWVsZDtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRmllbGQgPSB0aGlzLnNhZmVDbG9uZShhcHBseVRhcmdldCk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkLkZvcm11bGEgPSBhcHBseVRhcmdldC5Gb3JtdWxhO1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRmllbGQuQW5zd2VyU3R5bGUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkLkFuc3dlclN0eWxlID0geyBJbkxpc3RWaWV3OiB0cnVlLCBWaXNpYmxlSWY6IG51bGwsIEZpZWxkc3R5bGVDU1M6ICcnLCBMYWJlbHN0eWxlQ1NTOiAnJywgQ29sU3BhblNpemVzOiBbXSwgSW52aXNpYmlsaXR5OiBGaWVsZEludmlzaWJpbGl0eUVudW0uTkFTQ09TVE8gfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZpZWxkSW5Gb3JtKSB0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZCA9IHRoaXMuZm9ybS5GaWVsZHMuaW5kZXhPZihmaWVsZEluRm9ybSk7XHJcblxyXG4gICAgICAgIC8vIFJpYXByaSBpbCBkaWFsb2cgY2FtcG8gKHNhbHZvIFZpc3VhbCBFZGl0b3IgZ3JhcGhpYyBzdWdnZXN0IG1vZGUpXHJcbiAgICAgICAgaWYgKCF0aGlzLnZlR3JhcGhpY1N1Z2dlc3RBY3RpdmUpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmRpYWxvZ0ZpZWxkUmVmKSB0aGlzLmRpYWxvZ0ZpZWxkUmVmLmNsb3NlKCk7XHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ0ZpZWxkUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ0ZpZWxkLCB7XHJcbiAgICAgICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSwgaGFzQmFja2Ryb3A6IHRydWUsIHdpZHRoOiAnNzUlJywgaGVpZ2h0OiAnODAlJyxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQWdnaW9ybmEgcHJldmlldyBzZSBlcmEgYXBlcnRhXHJcbiAgICAgICAgY29uc3Qgd2FzT25QcmV2aWV3ID0gdGhpcy5mb3JtQ29tcGxldGVkO1xyXG4gICAgICAgIGlmICh3YXNPblByZXZpZXcpIHtcclxuICAgICAgICAgIHRoaXMuZm9ybUNvbXBsZXRlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5wcmV2aWV3Rm9ybSA9IG51bGw7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2V0Rm9ybVN0YXR1cyh0cnVlKSwgNTApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy52ZUdyYXBoaWNTdWdnZXN0QWN0aXZlID0gZmFsc2U7XHJcblxyXG4gICAgICAgIEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLlN1Y2Nlc3MoJ0dyYWZpY2EgY2FtcG8gYXBwbGljYXRhIScpO1xyXG4gICAgICAgIGlmIChyLldhcm5pbmdzPy5sZW5ndGggPiAwKSBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5XYXJuaW5nKHIuV2FybmluZ3MpO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICB0aGlzLmFpRmllbGRTdWdnZXN0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudmVHcmFwaGljU3VnZ2VzdEFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudmVBcHBseVRvQWxsT2ZUeXBlID0gZmFsc2U7XHJcbiAgICAgICAgY29uc3QgbXNnID0gKGVycm9yIGFzIGFueSk/LmVycm9yO1xyXG4gICAgICAgIEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLkVycm9yKHR5cGVvZiBtc2cgPT09ICdzdHJpbmcnICYmIG1zZy50cmltKCkgPyBtc2cgOiAnRXJyb3JlIG5lbGxhIGdlbmVyYXppb25lIGRlbGxhIGdyYWZpY2EgZGVsIGNhbXBvJyk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBvbkFpRWRpdEZpbGVDaGFuZ2UoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgaWYgKCFpbnB1dC5maWxlcz8ubGVuZ3RoKSByZXR1cm47XHJcbiAgICBBcnJheS5mcm9tKGlucHV0LmZpbGVzKS5mb3JFYWNoKGZpbGUgPT4ge1xyXG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGJhc2U2NCA9IChyZWFkZXIucmVzdWx0IGFzIHN0cmluZykuc3BsaXQoJywnKVsxXTtcclxuICAgICAgICB0aGlzLmFpRWRpdEF0dGFjaG1lbnRzLnB1c2goeyBmaWxlTmFtZTogZmlsZS5uYW1lLCBiYXNlNjRDb250ZW50OiBiYXNlNjQsIG1lZGlhVHlwZTogZmlsZS50eXBlIH0pO1xyXG4gICAgICB9O1xyXG4gICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcclxuICAgIH0pO1xyXG4gICAgaW5wdXQudmFsdWUgPSAnJztcclxuICB9XHJcblxyXG4gIHJlbW92ZUFpRWRpdEF0dGFjaG1lbnQoaW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5haUVkaXRBdHRhY2htZW50cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gIH1cclxuXHJcbiAgc2VuZEFpRWRpdChkaXJlY3RQcm9tcHQ/OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHVzZXJQcm9tcHRSYXcgPSBkaXJlY3RQcm9tcHQgPz8gdGhpcy5haUVkaXRQcm9tcHQ7XHJcbiAgICBpZiAoIXVzZXJQcm9tcHRSYXc/LnRyaW0oKSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuYWlFZGl0TG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgLy8gQWdnaW9ybmEgbG8gc3RvcmljbyBwcm9tcHQgcHJpbWEgZGkgaW52aWFyZVxyXG4gICAgY29uc3QgY3VycmVudEhpc3Rvcnk6IHN0cmluZ1tdID0gdGhpcy5mb3JtPy5BSVByb21wdHMgPyBKU09OLnBhcnNlKHRoaXMuZm9ybS5BSVByb21wdHMpIDogW107XHJcbiAgICBjdXJyZW50SGlzdG9yeS5wdXNoKHVzZXJQcm9tcHRSYXcudHJpbSgpKTtcclxuICAgIGNvbnN0IHVwZGF0ZWRQcm9tcHRzSnNvbiA9IEpTT04uc3RyaW5naWZ5KGN1cnJlbnRIaXN0b3J5KTtcclxuXHJcbiAgICAvLyBJbiBmaWVsZC1jb250ZXh0IG1vZGUgKGRpYWxvZyBBSSBvIGdyYXBoaWMgc3VnZ2VzdCk6IHByZW5kaSBpbCBjYW1wbyBkYWxsYSBtb2RhbGVcclxuICAgIGxldCBmaWVsZENsb25lRm9yU2VuZDogQmFzZUZpZWxkIHwgbnVsbCA9IG51bGw7XHJcbiAgICBsZXQgZmllbGRDb2RlRm9yUmVmcmVzaDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgICBsZXQgaXNOZXdVbnNhdmVkRmllbGQgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAodGhpcy5haUVkaXRGaWVsZENvbnRleHQgIT09IG51bGwpIHtcclxuICAgICAgZmllbGRDbG9uZUZvclNlbmQgPSB0aGlzLnNhZmVDbG9uZSh0aGlzLnNlbGVjdGVkRmllbGQpO1xyXG4gICAgICBpZiAoIWZpZWxkQ2xvbmVGb3JTZW5kLkxhYmVsPy50cmltKCkpIHtcclxuICAgICAgICBmaWVsZENsb25lRm9yU2VuZC5MYWJlbCA9ICdfY2FtcG9zZW56YW5vbWVfJztcclxuICAgICAgfVxyXG4gICAgICBpZiAoIWZpZWxkQ2xvbmVGb3JTZW5kLkZpZWxkVHlwZSkge1xyXG4gICAgICAgIGZpZWxkQ2xvbmVGb3JTZW5kLkZpZWxkVHlwZSA9IEZpZWxkVHlwZUVudW1bXCJDYW1wbyBkaSB0ZXN0b1wiXTtcclxuICAgICAgfVxyXG4gICAgICBmaWVsZENvZGVGb3JSZWZyZXNoID0gZmllbGRDbG9uZUZvclNlbmQuTGFiZWw7XHJcbiAgICAgIGlzTmV3VW5zYXZlZEZpZWxkID0gISh0aGlzLmZvcm0/LkZpZWxkcz8uc29tZShmID0+IGYuTGFiZWwgPT09IGZpZWxkQ29kZUZvclJlZnJlc2gpID8/IGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBJbmllemlvbmUgY29udGVzdHVhbGU6IGluIG1vZGFsaXTDoCBkaWFsb2cgKG5vIGRpcmVjdFByb21wdCkgc2kgcHJlcGVuZGUgaWwgY29udGVzdG8gZGVsIGNhbXBvXHJcbiAgICBsZXQgc3BlZWNoVGV4dCA9IHVzZXJQcm9tcHRSYXc7XHJcbiAgICBpZiAoZGlyZWN0UHJvbXB0ID09PSB1bmRlZmluZWQgJiYgdGhpcy5haUVkaXRGaWVsZENvbnRleHQpIHtcclxuICAgICAgc3BlZWNoVGV4dCA9IGBWb2dsaW8gbW9kaWZpY2FyZSBpbCBjYW1wbyAnJHtmaWVsZENvZGVGb3JSZWZyZXNoID8/IHRoaXMuYWlFZGl0RmllbGRDb250ZXh0LmNvZGV9JywgZGkgc2VndWl0byB0aSBkw7IgbGUgaXN0cnV6aW9uaS4gU2UgcXVlbGxvIGNoZSB0aSBzY3Jpdm8gbm9uIHJpZ3VhcmRhIGxhIG1vZGlmaWNhIGRlbCBjYW1wbywgY29uc2lkZXJhIHR1dHRvIGNvbWUgaW5jb2VyZW50ZS4gJHt1c2VyUHJvbXB0UmF3fWA7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5haUVkaXRGaWVsZENvbnRleHQgPSBudWxsO1xyXG5cclxuICAgIC8vIEVzdHJhZSBpbCBtb2RlbGxvIEFJIGRhbCB0ZXN0byAoZXMuIFwiVXNhIFNvbm5ldFwiKSBlIHB1bGlzY2UgaWwgcHJvbXB0IHByaW1hIGRpIGludmlhcmxvXHJcbiAgICBjb25zdCB7IGNsZWFuVGV4dDogY2xlYW5TcGVlY2hUZXh0LCBtb2RlbElkOiBhaU1vZGVsSWQgfSA9IHRoaXMuZXh0cmFjdE1vZGVsRnJvbVRleHQoc3BlZWNoVGV4dCk7XHJcbiAgICBzcGVlY2hUZXh0ID0gY2xlYW5TcGVlY2hUZXh0O1xyXG5cclxuICAgIC8vIFByZXBhcmEgaWwgZm9ybSBjb21lIGluIHNhdmVGb3JtOiBGaWVsZHMg4oaSIE9iamVjdEZpZWxkc1xyXG4gICAgY29uc3QgZm9ybVRvU2VuZCA9IHRoaXMuc2FmZUNsb25lKHRoaXMuZm9ybSk7XHJcbiAgICBmb3JtVG9TZW5kLkFJUHJvbXB0cyA9IHVwZGF0ZWRQcm9tcHRzSnNvbjtcclxuICAgIGZvcm1Ub1NlbmQuT2JqZWN0RmllbGRzID0gW107XHJcbiAgICBmb3JtVG9TZW5kLk9iamVjdEZsZEV4dHJhQ29uZmlnVmFsdWVzID0gW107XHJcblxyXG4gICAgaWYgKGZvcm1Ub1NlbmQuRmxkRXh0cmFDb25maWdWYWx1ZXMgIT0gbnVsbCkge1xyXG4gICAgICBmb3JtVG9TZW5kLk9iamVjdEZsZEV4dHJhQ29uZmlnVmFsdWVzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShmb3JtVG9TZW5kLkZsZEV4dHJhQ29uZmlnVmFsdWVzKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSW4gZmllbGQtY29udGV4dDogc29zdGl0dWlzY2UgKG1vZGlmaWNhKSBvIGFnZ2l1bmdlIChudW92byBjYW1wbykgaWwgY2FtcG8gY29uIGlsIGNvbnRlbnV0byBjb3JyZW50ZSBkZWxsYSBtb2RhbGVcclxuICAgIGlmIChmaWVsZENsb25lRm9yU2VuZCkge1xyXG4gICAgICBpZiAoIWZvcm1Ub1NlbmQuRmllbGRzKSBmb3JtVG9TZW5kLkZpZWxkcyA9IFtdO1xyXG4gICAgICBmb3JtVG9TZW5kLkZpZWxkcyA9IGZvcm1Ub1NlbmQuRmllbGRzLmZpbHRlcihmID0+IGYuTGFiZWwgIT09IGZpZWxkQ29kZUZvclJlZnJlc2gpO1xyXG4gICAgICBmb3JtVG9TZW5kLkZpZWxkcy5wdXNoKGZpZWxkQ2xvbmVGb3JTZW5kKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZm9ybVRvU2VuZC5GaWVsZHMpIHtcclxuICAgICAgZm9ybVRvU2VuZC5GaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICBpZiAoZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW0uQWxsZWdhdG8pIHtcclxuICAgICAgICAgIGNvbnN0IGZsZEE6IGFueSA9IGZpZWxkO1xyXG4gICAgICAgICAgZmxkQS5NZXRhZGF0YU9iamVjdEZpZWxkcyA9IGZsZEEuTWV0YWRhdGFGaWVsZHM7XHJcbiAgICAgICAgICBmbGRBLk1ldGFkYXRhRmllbGRzID0gW107XHJcbiAgICAgICAgICBmbGRBLkRhdGFHZXR0ZXJWYWx1ZUJhc2U2NFN0cmluZyA9IGJ0b2EoSlNPTi5zdHJpbmdpZnkoZmxkQS5EYXRhR2V0dGVyID8/IHt9KSk7XHJcbiAgICAgICAgICBmbGRBLkRhdGFHZXR0ZXIgPSBudWxsO1xyXG4gICAgICAgICAgZm9ybVRvU2VuZC5PYmplY3RGaWVsZHMucHVzaChmbGRBKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZmllbGQuRGF0YUdldHRlclZhbHVlQmFzZTY0U3RyaW5nID0gYnRvYShKU09OLnN0cmluZ2lmeShmaWVsZC5EYXRhR2V0dGVyID8/IHt9KSk7XHJcbiAgICAgICAgICBmaWVsZC5EYXRhR2V0dGVyID0gbnVsbDtcclxuICAgICAgICAgIGZvcm1Ub1NlbmQuT2JqZWN0RmllbGRzLnB1c2goZmllbGQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBmb3JtVG9TZW5kLkZpZWxkcyA9IG51bGw7XHJcbiAgICBmb3JtVG9TZW5kLk9iamVjdFRyaWdnZXJzID0gSlNPTi5zdHJpbmdpZnkoZm9ybVRvU2VuZC5UcmlnZ2VycyA/PyBbXSk7XHJcbiAgICBmb3JtVG9TZW5kLlRyaWdnZXJzID0gbnVsbDtcclxuICAgIGZvcm1Ub1NlbmQuT2JqZWN0QWN0aW9uQnV0dG9ucyA9IEpTT04uc3RyaW5naWZ5KGZvcm1Ub1NlbmQuQWN0aW9uQnV0dG9ucyA/PyBbXSk7XHJcbiAgICBmb3JtVG9TZW5kLkFjdGlvbkJ1dHRvbnMgPSBudWxsO1xyXG5cclxuICAgIGNvbnN0IGR5bmFtaWNNb2R1bGVQYXJhbXMgPSBbXHJcbiAgICAgIHsgUGFyYW1OYW1lOiBcIkZvcm1cIiwgUGFyYW1WYWx1ZTogZm9ybVRvU2VuZCwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiSW4gQm9keVwiXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogXCJTcGVlY2hUZXh0XCIsIFBhcmFtVmFsdWU6IHNwZWVjaFRleHQsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIkluIEJvZHlcIl0gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6IFwiT3JnYUlEXCIsIFBhcmFtVmFsdWU6IHBhcnNlSW50KHRoaXMub3JnYUlEKSB8fCAwLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJJbiBCb2R5XCJdIH0sXHJcbiAgICAgIHsgUGFyYW1OYW1lOiBcIk1vZGlmeVVzZXJcIiwgUGFyYW1WYWx1ZTogdGhpcy5Vc2VySUQsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIkluIEJvZHlcIl0gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6IFwiQXV0b3NhdmVcIiwgUGFyYW1WYWx1ZTogdGhpcy5haUVkaXRBdXRvc2F2ZSwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiSW4gQm9keVwiXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogXCJBdHRhY2htZW50c1wiLCBQYXJhbVZhbHVlOiB0aGlzLmFpRWRpdEF0dGFjaG1lbnRzLm1hcChhID0+ICh7IEZpbGVOYW1lOiBhLmZpbGVOYW1lLCBCYXNlNjRDb250ZW50OiBhLmJhc2U2NENvbnRlbnQsIE1lZGlhVHlwZTogYS5tZWRpYVR5cGUgfSkpLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJJbiBCb2R5XCJdIH0sXHJcbiAgICAgIHsgUGFyYW1OYW1lOiBcIlRyaWdnZXJEZWZpbml0aW9uc1wiLCBQYXJhbVZhbHVlOiB0aGlzLnRyaWdnZXJzID8/IG51bGwsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIkluIEJvZHlcIl0gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6IFwiQWN0aW9uQnV0dG9uRGVmaW5pdGlvbnNcIiwgUGFyYW1WYWx1ZTogdGhpcy5hY3Rpb25CdXR0b25zID8/IG51bGwsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIkluIEJvZHlcIl0gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6IFwiTW9kZWxJZFwiLCBQYXJhbVZhbHVlOiBhaU1vZGVsSWQsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIkluIEJvZHlcIl0gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6IFwiR2VuZXJhdGVCYWNrZ3JvdW5kXCIsIFBhcmFtVmFsdWU6IHRoaXMuYWlHZW5lcmF0ZUJhY2tncm91bmQsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIkluIEJvZHlcIl0gfSxcclxuICAgIF07XHJcblxyXG4gICAgdGhpcy51dGlsaXR5SGVscGVyU2VydmljZS5SdW5Tc2VFbmRQb2ludENhbGwoXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLkZvcm1zLlNwZWVjaFRvRm9ybUVkaXRFbmRQb2ludCxcclxuICAgICAgZHluYW1pY01vZHVsZVBhcmFtcyxcclxuICAgICAgKGVzdGltYXRlZFNlY29uZHM6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIHRoaXMuX3N0YXJ0QWlDb3VudGRvd24oZXN0aW1hdGVkU2Vjb25kcyk7XHJcbiAgICAgIH0sXHJcbiAgICAgIChyZXM6IHsgRm9ybTogRm9ybSwgV2FybmluZ3M6IHN0cmluZ1tdLCBDb3N0Q2VudHM6IG51bWJlciwgRWxhcHNlZE1zOiBudW1iZXIsIERhbGxFRWxhcHNlZFNlYz86IG51bWJlciwgUHJvbXB0U3BsaXRzPzogc3RyaW5nW10gfSkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLl9haUVkaXRDYW5jZWxsZWQpIHsgdGhpcy5fYWlFZGl0Q2FuY2VsbGVkID0gZmFsc2U7IHJldHVybjsgfVxyXG4gICAgICAgIHRoaXMuX3N0b3BBaUNvdW50ZG93bigpO1xyXG4gICAgICAgIHRoaXMuYWlFZGl0TG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAoZGlyZWN0UHJvbXB0ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHRoaXMuY2xvc2VBaUVkaXREaWFsb2coKTtcclxuXHJcbiAgICAgICAgICBpZiAoaXNOZXdVbnNhdmVkRmllbGQpIHtcclxuICAgICAgICAgICAgLy8gQ2FtcG8gbnVvdm8gbm9uIHNhbHZhdG86IGVsYWJvcmEgaWwgZm9ybSB0b3JuYXRvIGUgcmlhcHJpIGlsIGRpYWxvZyBjYW1wbyBjb24gaSB2YWxvcmkgYWdnaW9ybmF0aVxyXG4gICAgICAgICAgICB0aGlzLnNldEZvcm1BbmRDb25maWd1cmUocmVzLkZvcm0pO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtKSB0aGlzLmZvcm0uQUlQcm9tcHRzID0gdXBkYXRlZFByb21wdHNKc29uO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgdXBkYXRlZEZpZWxkSWR4ID0gdGhpcy5mb3JtPy5GaWVsZHM/LmZpbmRJbmRleChmID0+IGYuTGFiZWwgPT09IGZpZWxkQ29kZUZvclJlZnJlc2gpID8/IC0xO1xyXG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkRmllbGQgPSB1cGRhdGVkRmllbGRJZHggPj0gMCA/IHRoaXMuZm9ybS5GaWVsZHNbdXBkYXRlZEZpZWxkSWR4XSA6IG51bGw7XHJcbiAgICAgICAgICAgIGlmICh1cGRhdGVkRmllbGQgJiYgdGhpcy5mb3JtPy5GaWVsZHMpIHtcclxuICAgICAgICAgICAgICB0aGlzLmZvcm0uRmllbGRzLnNwbGljZSh1cGRhdGVkRmllbGRJZHgsIDEpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0RmllbGRPcmRpbmFsUG9zaXRpb24oKTtcclxuICAgICAgICAgICAgICB0aGlzLnJlbG9hZEZpZWxkc1RhYmxlKCk7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuaW5kZXhTZWxlY3RlZEZpZWxkID0gbnVsbDtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRmllbGQgPSB0aGlzLnNhZmVDbG9uZSh1cGRhdGVkRmllbGQpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZC5Gb3JtdWxhID0gdXBkYXRlZEZpZWxkLkZvcm11bGE7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRGaWVsZC5BbnN3ZXJTdHlsZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRmllbGQuQW5zd2VyU3R5bGUgPSB7IEluTGlzdFZpZXc6IHRydWUsIFZpc2libGVJZjogbnVsbCwgRmllbGRzdHlsZUNTUzogJycsIExhYmVsc3R5bGVDU1M6ICcnLCBDb2xTcGFuU2l6ZXM6IFtdLCBJbnZpc2liaWxpdHk6IEZpZWxkSW52aXNpYmlsaXR5RW51bS5OQVNDT1NUTyB9O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAodGhpcy5kaWFsb2dGaWVsZFJlZikgdGhpcy5kaWFsb2dGaWVsZFJlZi5jbG9zZSgpO1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlhbG9nRmllbGRSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nRmllbGQsIHtcclxuICAgICAgICAgICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSwgaGFzQmFja2Ryb3A6IHRydWUsIHdpZHRoOiAnNzUlJywgaGVpZ2h0OiAnODAlJyxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gQ2FtcG8gZ2nDoCBlc2lzdGVudGUgbyBuZXNzdW4gY29udGVzdG8gY2FtcG9cclxuICAgICAgICAgICAgY29uc3Qgd2FzT25QcmV2aWV3ID0gdGhpcy5mb3JtQ29tcGxldGVkO1xyXG4gICAgICAgICAgICBpZiAod2FzT25QcmV2aWV3KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5mb3JtQ29tcGxldGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3Rm9ybSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zZXRGb3JtQW5kQ29uZmlndXJlKHJlcy5Gb3JtKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybSkgdGhpcy5mb3JtLkFJUHJvbXB0cyA9IHVwZGF0ZWRQcm9tcHRzSnNvbjtcclxuXHJcbiAgICAgICAgICAgIC8vIFNlIGMnZXJhIHVuIGNvbnRlc3RvIGNhbXBvLCBhZ2dpb3JuYSBzZWxlY3RlZEZpZWxkIGUgcmlhcHJpIGlsIGRpYWxvZ1xyXG4gICAgICAgICAgICAvLyBwZXIgcmlmbGV0dGVyZSBsZSBtb2RpZmljaGUgQUkgKGVzLiBUZXh0RmllbGRTdHlsZUNTUykgbmVsbCdlZGl0b3JcclxuICAgICAgICAgICAgaWYgKGZpZWxkQ29kZUZvclJlZnJlc2ggJiYgdGhpcy5mb3JtPy5GaWVsZHMpIHtcclxuICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkRmllbGQgPSB0aGlzLmZvcm0uRmllbGRzLmZpbmQoZiA9PiBmLkxhYmVsID09PSBmaWVsZENvZGVGb3JSZWZyZXNoKTtcclxuICAgICAgICAgICAgICBpZiAodXBkYXRlZEZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZCA9IHRoaXMuZm9ybS5GaWVsZHMuaW5kZXhPZih1cGRhdGVkRmllbGQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkID0gdGhpcy5zYWZlQ2xvbmUodXBkYXRlZEZpZWxkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZC5Gb3JtdWxhID0gdXBkYXRlZEZpZWxkLkZvcm11bGE7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEZpZWxkLkFuc3dlclN0eWxlID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkLkFuc3dlclN0eWxlID0geyBJbkxpc3RWaWV3OiB0cnVlLCBWaXNpYmxlSWY6IG51bGwsIEZpZWxkc3R5bGVDU1M6ICcnLCBMYWJlbHN0eWxlQ1NTOiAnJywgQ29sU3BhblNpemVzOiBbXSwgSW52aXNpYmlsaXR5OiBGaWVsZEludmlzaWJpbGl0eUVudW0uTkFTQ09TVE8gfTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRpYWxvZ0ZpZWxkUmVmKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nRmllbGRSZWYuY2xvc2UoKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dGaWVsZFJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dGaWVsZCwge1xyXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSwgaGFzQmFja2Ryb3A6IHRydWUsIHdpZHRoOiAnNzUlJywgaGVpZ2h0OiAnODAlJyxcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAod2FzT25QcmV2aWV3KSB7XHJcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNldEZvcm1TdGF0dXModHJ1ZSksIDUwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyBcIlN1Z2dlcmlzY2kgZ3JhZmljYVwiOiBzdGVzc28gZmx1c3NvIGZpZWxkLWNvbnRleHQgKG51b3ZvIG8gZXNpc3RlbnRlKVxyXG4gICAgICAgICAgdGhpcy5haUZpZWxkU3VnZ2VzdExvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICBpZiAoaXNOZXdVbnNhdmVkRmllbGQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRGb3JtQW5kQ29uZmlndXJlKHJlcy5Gb3JtKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybSkgdGhpcy5mb3JtLkFJUHJvbXB0cyA9IHVwZGF0ZWRQcm9tcHRzSnNvbjtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRGaWVsZElkeCA9IHRoaXMuZm9ybT8uRmllbGRzPy5maW5kSW5kZXgoZiA9PiBmLkxhYmVsID09PSBmaWVsZENvZGVGb3JSZWZyZXNoKSA/PyAtMTtcclxuICAgICAgICAgICAgY29uc3QgdXBkYXRlZEZpZWxkID0gdXBkYXRlZEZpZWxkSWR4ID49IDAgPyB0aGlzLmZvcm0uRmllbGRzW3VwZGF0ZWRGaWVsZElkeF0gOiBudWxsO1xyXG4gICAgICAgICAgICBpZiAodXBkYXRlZEZpZWxkICYmIHRoaXMuZm9ybT8uRmllbGRzKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5mb3JtLkZpZWxkcy5zcGxpY2UodXBkYXRlZEZpZWxkSWR4LCAxKTtcclxuICAgICAgICAgICAgICB0aGlzLnNldEZpZWxkT3JkaW5hbFBvc2l0aW9uKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZWxvYWRGaWVsZHNUYWJsZSgpO1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkID0gdGhpcy5zYWZlQ2xvbmUodXBkYXRlZEZpZWxkKTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRmllbGQuRm9ybXVsYSA9IHVwZGF0ZWRGaWVsZC5Gb3JtdWxhO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRmllbGQuQW5zd2VyU3R5bGUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkLkFuc3dlclN0eWxlID0geyBJbkxpc3RWaWV3OiB0cnVlLCBWaXNpYmxlSWY6IG51bGwsIEZpZWxkc3R5bGVDU1M6ICcnLCBMYWJlbHN0eWxlQ1NTOiAnJywgQ29sU3BhblNpemVzOiBbXSwgSW52aXNpYmlsaXR5OiBGaWVsZEludmlzaWJpbGl0eUVudW0uTkFTQ09TVE8gfTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLnZlR3JhcGhpY1N1Z2dlc3RBY3RpdmUpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRpYWxvZ0ZpZWxkUmVmKSB0aGlzLmRpYWxvZ0ZpZWxkUmVmLmNsb3NlKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ0ZpZWxkUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ0ZpZWxkLCB7XHJcbiAgICAgICAgICAgICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSwgaGFzQmFja2Ryb3A6IHRydWUsIHdpZHRoOiAnNzUlJywgaGVpZ2h0OiAnODAlJyxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3Qgd2FzT25QcmV2aWV3ID0gdGhpcy5mb3JtQ29tcGxldGVkO1xyXG4gICAgICAgICAgICBpZiAod2FzT25QcmV2aWV3KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5mb3JtQ29tcGxldGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3Rm9ybSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zZXRGb3JtQW5kQ29uZmlndXJlKHJlcy5Gb3JtKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybSkgdGhpcy5mb3JtLkFJUHJvbXB0cyA9IHVwZGF0ZWRQcm9tcHRzSnNvbjtcclxuXHJcbiAgICAgICAgICAgIGlmIChmaWVsZENvZGVGb3JSZWZyZXNoICYmIHRoaXMuZm9ybT8uRmllbGRzKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZEZpZWxkID0gdGhpcy5mb3JtLkZpZWxkcy5maW5kKGYgPT4gZi5MYWJlbCA9PT0gZmllbGRDb2RlRm9yUmVmcmVzaCk7XHJcbiAgICAgICAgICAgICAgaWYgKHVwZGF0ZWRGaWVsZCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZElkeCA9IHRoaXMuZm9ybS5GaWVsZHMuaW5kZXhPZih1cGRhdGVkRmllbGQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkID0gdGhpcy5zYWZlQ2xvbmUodXBkYXRlZEZpZWxkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZC5Gb3JtdWxhID0gdXBkYXRlZEZpZWxkLkZvcm11bGE7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEZpZWxkLkFuc3dlclN0eWxlID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkLkFuc3dlclN0eWxlID0geyBJbkxpc3RWaWV3OiB0cnVlLCBWaXNpYmxlSWY6IG51bGwsIEZpZWxkc3R5bGVDU1M6ICcnLCBMYWJlbHN0eWxlQ1NTOiAnJywgQ29sU3BhblNpemVzOiBbXSwgSW52aXNpYmlsaXR5OiBGaWVsZEludmlzaWJpbGl0eUVudW0uTkFTQ09TVE8gfTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuaW5kZXhTZWxlY3RlZEZpZWxkID0gdXBkYXRlZElkeDtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy52ZUdyYXBoaWNTdWdnZXN0QWN0aXZlKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRpYWxvZ0ZpZWxkUmVmKSB0aGlzLmRpYWxvZ0ZpZWxkUmVmLmNsb3NlKCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nRmllbGRSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nRmllbGQsIHtcclxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsIGhhc0JhY2tkcm9wOiB0cnVlLCB3aWR0aDogJzc1JScsIGhlaWdodDogJzgwJScsXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHdhc09uUHJldmlldykge1xyXG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zZXRGb3JtU3RhdHVzKHRydWUpLCA1MCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMudmVHcmFwaGljU3VnZ2VzdEFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5sYXN0UHJvbXB0U3BsaXRzID0gcmVzLlByb21wdFNwbGl0cyA/PyBbXTtcclxuXHJcbiAgICAgICAgY29uc3QgZGFsbEVQYXJ0ID0gcmVzLkRhbGxFRWxhcHNlZFNlYyAhPSBudWxsID8gYCAoc2ZvbmRvIGdlbmVyYXRvIGluICR7cmVzLkRhbGxFRWxhcHNlZFNlYy50b0ZpeGVkKDEpfXMpYCA6ICcnO1xyXG4gICAgICAgIEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLlN1Y2Nlc3MoYEZvcm0gbW9kaWZpY2F0YSBjb24gQUkhJHtkYWxsRVBhcnR9YCk7XHJcbiAgICAgICAgaWYgKHJlcy5XYXJuaW5ncyAmJiByZXMuV2FybmluZ3MubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UuV2FybmluZyhyZXMuV2FybmluZ3MpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5sYXN0UHJvbXB0U3BsaXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLkluZm8odGhpcy5sYXN0UHJvbXB0U3BsaXRzLm1hcCgocywgaSkgPT4gYCR7aSArIDF9LiAke3N9YCkuam9pbignPGJyPicpLCAnRm9ybSBnZW5lcmF0byBpbiBwYXJ0aSBwYXJhbGxlbGUnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLl9haUVkaXRDYW5jZWxsZWQpIHsgdGhpcy5fYWlFZGl0Q2FuY2VsbGVkID0gZmFsc2U7IHJldHVybjsgfVxyXG4gICAgICAgIHRoaXMuX3N0b3BBaUNvdW50ZG93bigpO1xyXG4gICAgICAgIHRoaXMuYWlFZGl0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChkaXJlY3RQcm9tcHQgIT09IHVuZGVmaW5lZCkgdGhpcy5haUZpZWxkU3VnZ2VzdExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBjb25zdCBzZXJ2ZXJNc2cgPSAoZXJyb3IgYXMgYW55KT8uZXJyb3IgPz8gKGVycm9yIGFzIGFueSk/Lm1lc3NhZ2U7XHJcbiAgICAgICAgY29uc3QgZGlzcGxheU1zZyA9IHR5cGVvZiBzZXJ2ZXJNc2cgPT09ICdzdHJpbmcnICYmIHNlcnZlck1zZy50cmltKClcclxuICAgICAgICAgID8gc2VydmVyTXNnXHJcbiAgICAgICAgICA6ICdFcnJvcmUgbmVsbGEgbW9kaWZpY2EgZGVsbGEgZm9ybSBjb24gQUknO1xyXG4gICAgICAgIEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLkVycm9yKGRpc3BsYXlNc2cpO1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvcmUgbmVsbGEgbW9kaWZpY2EgZGVsbGEgZm9ybSBjb24gQUlcIiwgZXJyb3IpO1xyXG4gICAgICB9LFxyXG4gICAgICB0cnVlXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb25Db250ZXN0dWFsaXphdGlvblNlbGVjdCgpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRDb250ZXN0dWFsaXphdGlvblZhbHVlID0gdGhpcy5jb250ZXN0dWFsaXphdGlvbi5maW5kKHggPT4geC5lbnRpdHlUYWJsZU5hbWUgPT0gdGhpcy5zZWxlY3RlZENvbnRlc3R1YWxpemF0aW9uKS5lbnRpdHlJRDtcclxuICB9XHJcblxyXG4gIG9uQ29udGVzdHVhbGl6YXRpb25TZWxlY3RWYWx1ZSgpIHtcclxuICAgIHRoaXMuY29udGVzdHVhbGl6YXRpb24uZmluZCh4ID0+IHguZW50aXR5VGFibGVOYW1lID09IHRoaXMuc2VsZWN0ZWRDb250ZXN0dWFsaXphdGlvbikuZW50aXR5SUQgPSB0aGlzLnNlbGVjdGVkQ29udGVzdHVhbGl6YXRpb25WYWx1ZTtcclxuICB9XHJcblxyXG4gIGFwcGx5Q29udGVzdHVhbGl6YXRpb24oZWxlbWVudCkge1xyXG4gICAgdGhpcy5mb3JtQ29tcGxldGVkID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50LmlucHV0UGFyYW1zLmNvbmZpZy5jb250ZXN0dWFsaXphdGlvbiA9IGVsZW1lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZm9ybUNvbXBsZXRlZCA9IHRydWU7XHJcbiAgICB9LCA1MCk7XHJcbiAgfVxyXG5cclxuICBvcGVuQ29udGVzdHVhbGl6YXRpb25EaWFsb2coKSB7XHJcbiAgICB0aGlzLmRpYWxvZ0NvbnRlc3R1YWxpemF0aW9uUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ0NvbnRlc3R1YWxpemF0aW9uLCB7XHJcbiAgICAgIGRpc2FibGVDbG9zZTogZmFsc2UsXHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICB3aWR0aDogJzQ4MHB4JyxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VDb250ZXN0dWFsaXphdGlvbkRpYWxvZygpIHtcclxuICAgIHRoaXMuZGlhbG9nQ29udGVzdHVhbGl6YXRpb25SZWY/LmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBvbkZpcmVUcmlnZ2VyKGV2OiBGaXJlVHJpZ2dlcikge1xyXG4gICAgdGhpcy5maXJlVHJpZ2dlci5lbWl0KGV2KTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZURlbGV0ZUJ1dHRvbihldmVudDogQXJyYXk8QmFzZUZpZWxkPikge1xyXG4gICAgdGhpcy5zaG93RGVsZXRlQnV0dG9uID0gZXZlbnQubGVuZ3RoID4gMDtcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWVsZHMgPSBldmVudDtcclxuICB9XHJcblxyXG4gIGRlbGV0ZVNlbGVjdGVkRmllbGRzKHByb3BlcnR5TmFtZTogc3RyaW5nKSB7XHJcblxyXG5cclxuICAgIEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLkNvbmZpcm0oXHJcbiAgICAgIFwiRWxpbWluYXJlIGdsaSBlbGVtZW50aSBzZWxlemlvbmF0aT9cIixcclxuICAgICAgKCkgPT4ge1xyXG5cclxuICAgICAgICB0aGlzLnNlbGVjdGVkRmllbGRzLmZvckVhY2goKHNlbGVjdGVkRmllbGQpID0+IHtcclxuICAgICAgICAgIHRoaXMuZm9ybVtwcm9wZXJ0eU5hbWVdLnNwbGljZSh0aGlzLmZvcm1bcHJvcGVydHlOYW1lXS5pbmRleE9mKHNlbGVjdGVkRmllbGQpLCAxKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXRGaWVsZE9yZGluYWxQb3NpdGlvbigpO1xyXG4gICAgICAgIHRoaXMucmVsb2FkRmllbGRzVGFibGUoKTtcclxuXHJcbiAgICAgIH0sXHJcbiAgICAgIGZhbHNlLFxyXG4gICAgICBcIlJpY2hpZXN0YSBjb25mZXJtYVwiXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIFZpc3VhbCBFZGl0b3JcclxuXHJcbiAgdG9nZ2xlVmlzdWFsRWRpdG9yKCk6IHZvaWQge1xyXG4gICAgdGhpcy52aXN1YWxFZGl0b3JBY3RpdmUgPSAhdGhpcy52aXN1YWxFZGl0b3JBY3RpdmU7XHJcbiAgICBpZiAoIXRoaXMudmlzdWFsRWRpdG9yQWN0aXZlKSB7XHJcbiAgICAgIHRoaXMudmVTd2FwRmllbGQgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25WZUZpZWxkQ2xpY2soZXY6IHsgZmllbGQ6IEJhc2VGaWVsZDsgZXZlbnQ6IE1vdXNlRXZlbnQgfSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudmVTd2FwRmllbGQpIHtcclxuICAgICAgaWYgKHRoaXMudmVTd2FwRmllbGQuTGFiZWwgIT09IGV2LmZpZWxkLkxhYmVsKSB7XHJcbiAgICAgICAgdGhpcy52ZURvU3dhcChldi5maWVsZCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy52ZVNlbGVjdGVkRmllbGQgPSB0aGlzLmZvcm0uRmllbGRzPy5maW5kKGYgPT4gZi5MYWJlbCA9PT0gZXYuZmllbGQuTGFiZWwpID8/IGV2LmZpZWxkO1xyXG4gICAgdGhpcy52ZVNob3dHcmFwaGljSW5wdXQgPSBmYWxzZTtcclxuICAgIHRoaXMudmVHcmFwaGljSGludCA9ICcnO1xyXG4gICAgdGhpcy5kaWFsb2dWZVRvb2x0aXBSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nVmVUb29sdGlwLCB7XHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICB3aWR0aDogJzMyMHB4JyxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdmVFZGl0RmllbGQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpYWxvZ1ZlVG9vbHRpcFJlZj8uY2xvc2UoKTtcclxuICAgIGlmICghdGhpcy52ZVNlbGVjdGVkRmllbGQpIHJldHVybjtcclxuICAgIHRoaXMub3BlbkZpZWxkRGlhbG9nKHRoaXMudmVTZWxlY3RlZEZpZWxkKTtcclxuICB9XHJcblxyXG4gIHZlQWlFZGl0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaWFsb2dWZVRvb2x0aXBSZWY/LmNsb3NlKCk7XHJcbiAgICBpZiAoIXRoaXMudmVTZWxlY3RlZEZpZWxkKSByZXR1cm47XHJcbiAgICAvLyBSZXBsaWNhIGNpw7IgY2hlIGZhIG9wZW5GaWVsZERpYWxvZzogcG9wb2xhIHNlbGVjdGVkRmllbGQgZSBpbmRleFNlbGVjdGVkRmllbGRcclxuICAgIC8vIGNvc8OsIHNlbmRBaUVkaXQgcHXDsiBjbG9uYXJlIGNvcnJldHRhbWVudGUgaWwgY2FtcG9cclxuICAgIHRoaXMuaW5kZXhTZWxlY3RlZEZpZWxkID0gdGhpcy5mb3JtLkZpZWxkcz8uaW5kZXhPZih0aGlzLnZlU2VsZWN0ZWRGaWVsZCkgPz8gbnVsbDtcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWVsZCA9IHRoaXMuc2FmZUNsb25lKHRoaXMudmVTZWxlY3RlZEZpZWxkKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWVsZC5Gb3JtdWxhID0gdGhpcy52ZVNlbGVjdGVkRmllbGQuRm9ybXVsYTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRmllbGQuQW5zd2VyU3R5bGUgPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRmllbGQuQW5zd2VyU3R5bGUgPSB7IEluTGlzdFZpZXc6IHRydWUsIFZpc2libGVJZjogbnVsbCwgRmllbGRzdHlsZUNTUzogJycsIExhYmVsc3R5bGVDU1M6ICcnLCBDb2xTcGFuU2l6ZXM6IFtdLCBJbnZpc2liaWxpdHk6IEZpZWxkSW52aXNpYmlsaXR5RW51bS5OQVNDT1NUTyB9O1xyXG4gICAgfVxyXG4gICAgdGhpcy5vbkFpRWRpdEZvckZpZWxkKHRoaXMudmVTZWxlY3RlZEZpZWxkLkxhYmVsKTtcclxuICB9XHJcblxyXG4gIHZlU2VuZEdyYXBoaWMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpYWxvZ1ZlVG9vbHRpcFJlZj8uY2xvc2UoKTtcclxuICAgIGlmICghdGhpcy52ZVNlbGVjdGVkRmllbGQpIHJldHVybjtcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWVsZCA9IHRoaXMuZm9ybT8uRmllbGRzPy5maW5kKGYgPT4gZi5MYWJlbCA9PT0gdGhpcy52ZVNlbGVjdGVkRmllbGQuTGFiZWwpID8/IHRoaXMudmVTZWxlY3RlZEZpZWxkIGFzIGFueTtcclxuICAgIHRoaXMudmVHcmFwaGljU3VnZ2VzdEFjdGl2ZSA9IHRydWU7XHJcbiAgICB0aGlzLm9uQWlHcmFwaGljU3VnZ2VzdCh7IGNvZGU6IHRoaXMudmVTZWxlY3RlZEZpZWxkLkxhYmVsLCBoaW50OiB0aGlzLnZlR3JhcGhpY0hpbnQgfSk7XHJcbiAgICB0aGlzLnZlU2hvd0dyYXBoaWNJbnB1dCA9IGZhbHNlO1xyXG4gICAgdGhpcy52ZUdyYXBoaWNIaW50ID0gJyc7XHJcbiAgfVxyXG5cclxuICB2ZU9wZW5SZW9yZGVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaWFsb2dWZVRvb2x0aXBSZWY/LmNsb3NlKCk7XHJcbiAgICB0aGlzLnZlUmVvcmRlckZpZWxkcyA9IFsuLi4odGhpcy5mb3JtLkZpZWxkcyA/PyBbXSldO1xyXG4gICAgdGhpcy5kaWFsb2dWZVJlb3JkZXJSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nVmVSZW9yZGVyLCB7XHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICB3aWR0aDogJzQwMHB4JyxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdmVBcHBseVJlb3JkZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm0uRmllbGRzID0gWy4uLnRoaXMudmVSZW9yZGVyRmllbGRzXTtcclxuICAgIHRoaXMuc2V0RmllbGRPcmRpbmFsUG9zaXRpb24oKTtcclxuICAgIHRoaXMucmVsb2FkRmllbGRzVGFibGUoKTtcclxuICAgIHRoaXMuZGlhbG9nVmVSZW9yZGVyUmVmPy5jbG9zZSgpO1xyXG4gICAgdGhpcy5yZWZyZXNoUHJldmlldygpO1xyXG4gIH1cclxuXHJcbiAgb25WZURyYWdEcm9wUmVvcmRlcihldmVudDogQ2RrRHJhZ0Ryb3A8QmFzZUZpZWxkW10+KTogdm9pZCB7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy52ZVJlb3JkZXJGaWVsZHMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XHJcbiAgfVxyXG5cclxuICB2ZVN0YXJ0U3dhcCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlhbG9nVmVUb29sdGlwUmVmPy5jbG9zZSgpO1xyXG4gICAgdGhpcy52ZVN3YXBGaWVsZCA9IHRoaXMudmVTZWxlY3RlZEZpZWxkO1xyXG4gIH1cclxuXHJcbiAgdmVEb1N3YXAodGFyZ2V0RmllbGQ6IEJhc2VGaWVsZCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnZlU3dhcEZpZWxkIHx8ICF0aGlzLmZvcm0uRmllbGRzKSByZXR1cm47XHJcbiAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmZvcm0uRmllbGRzO1xyXG4gICAgY29uc3QgaWR4QSA9IGZpZWxkcy5maW5kSW5kZXgoZiA9PiBmLkxhYmVsID09PSB0aGlzLnZlU3dhcEZpZWxkIS5MYWJlbCk7XHJcbiAgICBjb25zdCBpZHhCID0gZmllbGRzLmZpbmRJbmRleChmID0+IGYuTGFiZWwgPT09IHRhcmdldEZpZWxkLkxhYmVsKTtcclxuICAgIGlmIChpZHhBID49IDAgJiYgaWR4QiA+PSAwKSB7XHJcbiAgICAgIFtmaWVsZHNbaWR4QV0sIGZpZWxkc1tpZHhCXV0gPSBbZmllbGRzW2lkeEJdLCBmaWVsZHNbaWR4QV1dO1xyXG4gICAgICB0aGlzLnNldEZpZWxkT3JkaW5hbFBvc2l0aW9uKCk7XHJcbiAgICAgIHRoaXMucmVsb2FkRmllbGRzVGFibGUoKTtcclxuICAgICAgdGhpcy5yZWZyZXNoUHJldmlldygpO1xyXG4gICAgfVxyXG4gICAgdGhpcy52ZVN3YXBGaWVsZCA9IG51bGw7XHJcbiAgfVxyXG5cclxuICB2ZUNhbmNlbFN3YXAoKTogdm9pZCB7XHJcbiAgICB0aGlzLnZlU3dhcEZpZWxkID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHZlRGVsZXRlRmllbGQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMudmVTZWxlY3RlZEZpZWxkKSByZXR1cm47XHJcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuZm9ybT8uRmllbGRzPy5maW5kKGYgPT4gZi5MYWJlbCA9PT0gdGhpcy52ZVNlbGVjdGVkRmllbGQuTGFiZWwpO1xyXG4gICAgaWYgKCFmaWVsZCkgcmV0dXJuO1xyXG4gICAgdGhpcy5kaWFsb2dWZVRvb2x0aXBSZWY/LmNsb3NlKCk7XHJcbiAgICAvLyBzZXRUaW1lb3V0IG5lY2Vzc2FyaW86IFN3ZWV0QWxlcnQgbm9uIHNpIGFwcmUgY29ycmV0dGFtZW50ZSBzZSBpbCBNYXRlcmlhbCBEaWFsb2cgw6ggYW5jb3JhIGluIGZhc2UgZGkgY2hpdXN1cmFcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5kZWxldGVFbGVtZW50KGZpZWxkLCAnRmllbGRzJyksIDIwMCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBISU5UX1BBTEVUVEVTID0gW1xyXG4gICAgJ21vbm9jcm9tYXRpY28gdmlicmFudGUnLCAnY29tcGxlbWVudGFyZScsICd0cmlhZGljbycsICdhbmFsb2dvIGNhbGRvJywgJ2FuYWxvZ28gZnJlZGRvJyxcclxuICAgICdwYXN0ZWxsbyBkZWxpY2F0bycsICduZW9uIHN1IHNjdXJvJywgJ2VhcnRoIHRvbmVzJywgJ29jZWFubyBwcm9mb25kbycsICd0cmFtb250byBjb2xvcmF0bycsXHJcbiAgICAnZm9yZXN0YSBhdXR1bm5hbGUnLCAnbGF2YW5kYSBlIG9ybycsICdjb3JhbGxvIGUgdHVyY2hlc2UnLCAncm9zc28gZSBhbnRyYWNpdGUnLCAndmVyZGUgYWNxdWEgZSBzYWJiaWEnLFxyXG4gICAgJ3Zpb2xhIGVsZXR0cmljbyBlIGdpYWxsbyBsaW1vbmUnLCAncm9zYSBjaXByaWEgZSBncmlnaW8gcGVybGEnLCAnYmx1IGNvYmFsdG8gZSBhcmFuY2lvIGJydWNpYXRvJyxcclxuICAgICdvcm8gYW50aWNvIGUgYm9yZGVhdXgnLCAnbWVudGEgZnJlc2NhIGUgY2lvY2NvbGF0bycsICdhcmdlbnRvIGUgYmx1IGFjY2lhaW8nLCAncGVzY2EgZSBpbmRhY28nLFxyXG4gICAgJ3Jvc3NvIGNpbGllZ2lhIGUgYXZvcmlvJywgJ3RlYWwgc2N1cm8gZSByYW1lJywgJ2xpbWUgZSBibHUgbmF2eScsICdsaWxsYSBlIHZlcmRlIHNhbHZpYScsXHJcbiAgICAnYXp6dXJybyBnaGlhY2NpbyBlIGdyaWdpbyBhcmRlc2lhJywgJ2FtYnJhIGUgcGV0cm9saW8nLCAnc21lcmFsZG8gZSByb3NhIGFudGljbycsICdiaWFuY28gZSBuZXJvIGNvbiBhY2NlbnRvIHJvc3NvIGZ1b2NvJyxcclxuICBdO1xyXG5cclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBISU5UX1NUWUxFUyA9IFtcclxuICAgICdtaW5pbWFsaXN0YScsICdib2xkIGUgdml2YWNlJywgJ2VsZWdhbnRlIGUgc29icmlvJywgJ2dpb2Nvc28gZSBkaW5hbWljbycsICdpbmR1c3RyaWFsZScsXHJcbiAgICAncmV0cm9mdXR1cmlzdGEnLCAnb3JnYW5pY28gZSBuYXR1cmFsZScsICd0ZWNoL2RpZ2l0YWxlJywgJ2x1eHVyeSBwcmVtaXVtJywgJ3ZpbnRhZ2UgbW9yYmlkbycsXHJcbiAgICAnZmxhdCBkZXNpZ24gcHVsaXRvJywgJ2dsYXNzbW9ycGhpc20nLCAnbmV1bW9yZmlzbW8nLCAnZGFyayBtb2RlIHJhZmZpbmF0bycsXHJcbiAgICAnYnJ1dGFsaXN0IGNvbiBib3JkaSBzcGVzc2knLCAnc2NhbmRpbmF2byBwdWxpdG8nLCAnYXJ0IGTDqWNvIGdlb21ldHJpY28nLCAnY3liZXJwdW5rIGRpc3RvcGljbycsXHJcbiAgICAncG9wIGFydCBhIHRpbnRlIHBpYXR0ZScsICd3YXRlcmNvbG9yIHBhc3RlbGxvIHNmdW1hdG8nLCAnbmVvbiBhbm5pIG90dGFudGEnLCAnbWF0ZXJpYWwgZGVzaWduIGNvbiBvbWJyZScsXHJcbiAgICAnYXVyb3JhIGJvcmVhbGUnLCAnc3dpc3Mgc3R5bGUgdGlwb2dyYWZpY28nLCAndHJvcGljYWxlIHZpdmFjZScsICdtb25vY3JvbW8gY29uIGFjY2VudG8gc2luZ29sbycsXHJcbiAgICAnYXVyb3JhIG5vdHR1cm5hIHNjdXJhJywgJ2NvdHRhZ2Vjb3JlIGNhbGRvJyxcclxuICBdO1xyXG5cclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBISU5UX0FESkVDVElWRVMgPSBbXHJcbiAgICAnb3JpZ2luYWxlJywgJ2ltcHJldmVkaWJpbGUnLCAnYWNjYXR0aXZhbnRlJywgJ3NwZXR0YWNvbGFyZScsICdkZWxpY2F0bycsXHJcbiAgICAnYXVkYWNlJywgJ3JhZmZpbmF0bycsICdnaW9jb3NvJywgJ3ZpdmFjZScsICdtaXN0ZXJpb3NvJyxcclxuICAgICdjYWxkbycsICdmcmVzY28nLCAncm9tYW50aWNvJywgJ2Z1dHVyaXN0aWNvJywgJ2VsZWdhbnRlJyxcclxuICAgICdydXN0aWNvJywgJ21vZGVybm8nLCAndmludGFnZScsICdhcm1vbmlvc28nLCAnc29ycHJlbmRlbnRlJyxcclxuICBdO1xyXG5cclxuICBwcml2YXRlIGJ1aWxkSGludFRleHQoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHBpY2sgPSA8VD4oYXJyOiBUW10pOiBUID0+IGFycltNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBhcnIubGVuZ3RoKV07XHJcbiAgICBjb25zdCBwYWxldHRlID0gcGljayhFcXBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29tcG9uZW50LkhJTlRfUEFMRVRURVMpO1xyXG4gICAgY29uc3Qgc3R5bGUgPSBwaWNrKEVxcER5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JDb21wb25lbnQuSElOVF9TVFlMRVMpO1xyXG4gICAgY29uc3QgYWRqMSA9IHBpY2soRXFwRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbXBvbmVudC5ISU5UX0FESkVDVElWRVMpO1xyXG4gICAgY29uc3QgdXNlVHdvID0gTWF0aC5yYW5kb20oKSA8IDAuNTtcclxuICAgIGNvbnN0IGFkajIgPSB1c2VUd28gPyBwaWNrKEVxcER5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JDb21wb25lbnQuSElOVF9BREpFQ1RJVkVTLmZpbHRlcihhID0+IGEgIT09IGFkajEpKSA6IG51bGw7XHJcbiAgICBjb25zdCBhZGpUZXh0ID0gYWRqMiA/IGAke2FkajF9IGUgJHthZGoyfWAgOiBhZGoxO1xyXG4gICAgcmV0dXJuIGBQYWxldHRlICR7cGFsZXR0ZX0sIHN0aWxlICR7c3R5bGV9LCAke2FkalRleHR9YDtcclxuICB9XHJcblxyXG4gIHJhbmRvbWl6ZUhpbnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm1HcmFwaGljU3VnZ2VzdEhpbnQgPSB0aGlzLmJ1aWxkSGludFRleHQoKTtcclxuICB9XHJcblxyXG4gIHJhbmRvbWl6ZVZlSGludCgpOiB2b2lkIHtcclxuICAgIHRoaXMudmVHcmFwaGljSGludCA9IHRoaXMuYnVpbGRIaW50VGV4dCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZFJhbmRvbUdyYXBoaWNIaW50KCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBwaWNrID0gPFQ+KGFycjogVFtdKTogVCA9PiBhcnJbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogYXJyLmxlbmd0aCldO1xyXG4gICAgY29uc3QgcmFkaXVzID0gWydib3JkZXItcmFkaXVzIHBpY2NvbG8gKDItNHB4KScsICdib3JkZXItcmFkaXVzIG1lZGlvICg4LTEwcHgpJywgJ2JvcmRlci1yYWRpdXMgZ3JhbmRlICgxNi0yMHB4KScsICdib3JkZXItcmFkaXVzIHBpbGxvbGEgKDk5OTlweCknXTtcclxuICAgIHJldHVybiBgQ0FTVUFMRTogcGFsZXR0ZSBcIiR7cGljayhFcXBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29tcG9uZW50LkhJTlRfUEFMRVRURVMpfVwiLCBzdGlsZSBcIiR7cGljayhFcXBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29tcG9uZW50LkhJTlRfU1RZTEVTKX1cIiwgJHtwaWNrKHJhZGl1cyl9LiBJZ25vcmEgbGEgdGFiZWxsYSBwcmVzZXQgc2V0dG9yaWFsaSBlIGNyZWEgdW5hIGdyYWZpY2Egb3JpZ2luYWxlIGUgaW1wcmV2ZWRpYmlsZS5gO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWZyZXNoUHJldmlldygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmZvcm1Db21wbGV0ZWQpIHtcclxuICAgICAgdGhpcy5mb3JtQ29tcGxldGVkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucHJldmlld0Zvcm0gPSBudWxsO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2V0Rm9ybVN0YXR1cyh0cnVlKSwgNTApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8jZW5kcmVnaW9uIFZpc3VhbCBFZGl0b3JcclxuXHJcbn1cclxuIiwiPGVxcC1keW5hbWljLW1vZHVsZS1zcGlubmVyPjwvZXFwLWR5bmFtaWMtbW9kdWxlLXNwaW5uZXI+XG5cblxuPGRpdiBjbGFzcz1cImR5bmFtaWMtbW9kdWxlLWNvbmZpZ3VyYXRvci1oZWFkZXIgcm93IHRpdGxlIHAtMVwiICpuZ0lmPVwiaW5uZXJGb3JtTWFuYWdtZW50XCI+XG4gIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXRpdGxlLXN0YW5kYXJkXCI+QWdnaXVudGEgZm9ybSBkaSBkZXR0YWdsaW88L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiB0ZXh0LXJpZ2h0XCI+XG4gICAgPG1hdC1pY29uIGNsYXNzPVwiY2xvc2VcIiAoY2xpY2spPVwiY2xvc2VEaWFsb2dJbm5lckZvcm0oKVwiPmNsb3NlPC9tYXQtaWNvbj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSNyZWdpb24gRVhQT1JUIE1PRFVMRSAtLT5cbjxkaXYgY2xhc3M9XCJkeW5hbWljLW1vZHVsZS1jb25maWd1cmF0b3ItZXhwb3J0ZXJcIiAqbmdJZj1cImxvYWRlciAmJiB2aWV3TW9kZSA9PSAnRXhwb3J0J1wiIGNsYXNzPVwicC0zXCI+XG5cbiAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJleHBvcnQoKVwiPkVzcG9ydGE8L2J1dHRvbj5cblxuICA8IS0tPGFcbiAgICBjbGFzcz1cImJ0biBidG4tY2xlYXJcIlxuICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICB0aXRsZT1cIkRvd25sb2FkIEpTT05cIlxuICAgIFtocmVmXT1cImRvd25sb2FkSnNvbkhyZWZcIlxuICAgIGRvd25sb2FkPVwie3sgZG93bmxvYWROYW1lIH19Lmpzb25cIlxuICAgID5FeHBvcnQ8L2E+LS0+XG5cbjwvZGl2PlxuPCEtLSNlbmRyZWdpb24gRVhQT1JUIE1PRFVMRSAtLT5cblxuPG1hdC1ob3Jpem9udGFsLXN0ZXBwZXIgKm5nSWY9XCJsb2FkZXIgJiYgZm9ybUZvcm1Hcm91cCAmJiB2aWV3TW9kZSA9PSAnYWRkT3JFZGl0J1wiIGxpbmVhciAjc3RlcHBlclxuICBbbmdDbGFzc109XCJ7IG91dGVyRm9ybTogdHJ1ZSwgJ2lubmVyRm9ybU1hbmFnbWVudC1zdGVwcGVyJzogaW5uZXJGb3JtTWFuYWdtZW50ICB9XCJcbiAgY2xhc3M9XCJkeW5hbWljLW1vZHVsZS1jb25maWd1cmF0b3Itc3RlcHBlciB7eyAnbGFzdC1lZGl0ZWQtc3RlcC0nICsgc3RlcHBlci5zZWxlY3RlZEluZGV4IH19XCI+XG4gIDwhLS0jcmVnaW9uIERBVEkgR0VORVJBTEkgREVMTEEgRk9STSAtLT5cbiAgPG1hdC1zdGVwIGNsYXNzPVwiZHluYW1pYy1tb2R1bGUtY29uZmlndXJhdG9yLWdlbmVyYWwtZGF0YVwiIFtzdGVwQ29udHJvbF09XCJmb3JtRm9ybUdyb3VwXCI+XG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtRm9ybUdyb3VwXCIgKGtleWRvd24uZW50ZXIpPVwiKGZhbHNlKVwiPlxuICAgICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBMYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItaGVhZGVyLW92ZXJsYXlcIiAoY2xpY2spPVwic2V0Rm9ybVN0YXR1cyhmYWxzZSlcIj48L2Rpdj5cbiAgICAgICAgRGF0aSBnZW5lcmFsaSBkZWxsYSBmb3JtXG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1zdGFydCBhZGRCdXR0b25zXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lZCBtZS0yXCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJhY2NlbnRcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuQWlFZGl0RGlhbG9nKClcIiAqbmdJZj1cImVuZFBvaW50Q29uZmlndXJhdGlvbj8uRm9ybXM/LlNwZWVjaFRvRm9ybUVkaXRFbmRQb2ludFwiPlxuICAgICAgICAgICAgPG1hdC1pY29uPmF1dG9fZml4X2hpZ2g8L21hdC1pY29uPlxuICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweFwiPnt7IGlzTmV3Rm9ybSA/ICdDcmVhIGNvbiBBSScgOiAnTW9kaWZpY2EgY29uIEFJJyB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBVbHRpbW8gcHJvbXB0IEFJICsgYWNjZXNzbyBhbGxvIHN0b3JpY28gLS0+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZW5kUG9pbnRDb25maWd1cmF0aW9uPy5Gb3Jtcz8uU3BlZWNoVG9Gb3JtRWRpdEVuZFBvaW50ICYmIGFpUHJvbXB0SGlzdG9yeS5sZW5ndGggPiAwXCJcbiAgICAgICAgY2xhc3M9XCJhaS1sYXN0LXByb21wdC1iYXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFpLWxhc3QtcHJvbXB0LWljb24td3JhcFwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5hdXRvX2ZpeF9oaWdoPC9tYXQtaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhaS1sYXN0LXByb21wdC1jb250ZW50XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFpLWxhc3QtcHJvbXB0LWxhYmVsXCI+UmljaGllc3RhIEFJIGluaXppYWxlPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFpLWxhc3QtcHJvbXB0LXRleHRcIj57eyBhaVByb21wdEhpc3RvcnlbMF0gfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImFpLWxhc3QtcHJvbXB0LWhpc3RvcnktYnRuXCIgbWF0VG9vbHRpcD1cIlZlZGkgc3RvcmljbyBjb21wbGV0b1wiXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5BaUhpc3RvcnlEaWFsb2coKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5oaXN0b3J5PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBmaXJzdFJvd1wiPlxuICAgICAgICA8IS0tXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICAgICAgICAgICAgPG1hdC1sYWJlbFxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCInVmEgaW5zZXJpdG8gcGVyIGVzc2VyZSB1dGlsaXp6YXRvIGNvbWUgcmlmZXJpbWVudG8gbmVpIHRlbXBsYXRlLiBub24gYWNjZXR0YSBjYXJhdHRlcmkgc3BlY2lhbGkgbmUgc3BhemkuJ1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBDb2RpY2UgVW5pdm9jb1xuICAgICAgICAgICAgICA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibmFtZVwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIidWYSBpbnNlcml0byBwZXIgZXNzZXJlIHV0aWxpenphdG8gY29tZSByaWZlcmltZW50byBuZWkgdGVtcGxhdGUuIG5vbiBhY2NldHRhIGNhcmF0dGVyaSBzcGVjaWFsaSBuZSBzcGF6aS4nXCJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIkNvZGVcIlxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmb3JtLkNvZGVcIlxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzZXRDb2RlKGZvcm0uQ29kZSlcIlxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIHJlYWRvbmx5PVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+PC9kaXY+XG4gICAgICAgICAgICAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibmFtZVwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPk5vbWU8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBwbGFjZWhvbGRlcj1cIk5vbWVcIiBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJOYW1lXCIgWyhuZ01vZGVsKV09XCJmb3JtLk5hbWVcIiByZXF1aXJlZFxuICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic2V0TmFtZShmb3JtLk5hbWUpXCIgLz5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cbiAgICAgICAgICA8IS0tIDxtYXQtbGFiZWw+VGlwbyBkaSB2aXN1YWxpenphemlvbmU8L21hdC1sYWJlbD4gLS0+XG4gICAgICAgICAgPHRtdy1zZWxlY3QgY2xhc3M9XCJuYW1lU2VjdGlvblwiIFtlbnVtRGF0YV09XCJGb3JtU2NhbGFyVHlwZUVudW1cIiBbKG5nTW9kZWxJbnB1dCldPVwiZm9ybS5Gb3JtU2NhbGFyVHlwZVwiXG4gICAgICAgICAgICBbaXNSZXF1aXJlZF09XCJmYWxzZVwiIHJlcXVpcmVkIFtzaG93Q2FuY2VsQnV0dG9uXT1cImZhbHNlXCIgW2Zvcm1Hcm91cElucHV0XT1cImZvcm1Gb3JtR3JvdXBcIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidGb3JtU2NhbGFyVHlwZSdcIiAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uQ2hhbmdlRm9ybVNjYWxhclR5cGUoKVwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlRpcG8gZGkgdmlzdWFsaXp6YXppb25lXCI+XG4gICAgICAgICAgPC90bXctc2VsZWN0PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJuYW1lXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+RGVzY3JpemlvbmU8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJEZXNjcmlwdGlvblwiIFsobmdNb2RlbCldPVwiZm9ybS5EZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZm9ybS5OYW1lKVwiIHBsYWNlaG9sZGVyPVwiRGVzY3JpemlvbmVcIiAvPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93IGluc2VydGVkXCIgKm5nSWY9XCJcbiAgICAgICAgICBmb3JtLkZvcm1TY2FsYXJUeXBlICYmXG4gICAgICAgICAgZm9ybS5Gb3JtU2NhbGFyVHlwZSAhPSBGb3JtU2NhbGFyVHlwZUVudW0uU2VtcGxpY2VcbiAgICAgICAgXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm5hbWVTZWN0aW9uXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+IE5vbWUgc2V6aW9uZSAoaW52aW8gcGVyIGNvbmZlcm1hcmUpIDwvbWF0LWxhYmVsPlxuXG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmb3JtRmllbGRHcm91cE5hbWVcIiBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxuICAgICAgICAgICAgICAoa2V5dXApPVwib25Gb3JtRmllbGRHcm91cE5hbWVLZXlVcCgkZXZlbnQpXCIgcGxhY2Vob2xkZXI9XCJOb21lIHNlemlvbmUgKGludmlvIHBlciBjb25mZXJtYXJlKVwiIC8+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOFwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXItM1wiPlNlemlvbmkgaW5zZXJpdGU6PC9zcGFuPlxuICAgICAgICAgIDx1bCBjbGFzcz1cInNlY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBncm91cE5hbWUgb2YgZm9ybS5Gb3JtRmllbGRzR3JvdXBzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VjdGlvbkluc2VydFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1yLTFcIiAoY2xpY2spPVwib25EZWxldGVGb3JtRmllbGRHcm91cE5hbWUoZ3JvdXBOYW1lLk5hbWUpXCI+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1yLTEgaWNvbi1ibGFja1wiIChjbGljayk9XCJvbkVkaXRGb3JtRmllbGRHcm91cE5hbWUoZ3JvdXBOYW1lKVwiPmVkaXQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIHt7IGdyb3VwTmFtZS5OYW1lIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm10LTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cbiAgICAgICAgPCEtLSBJTVBPUlQgLS0+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCIhdGhpcy5mb3JtSURcIiBjbGFzcz1cImJ0biBidG4tY2xlYXIgYnV0dG9uLW5leHQgbWUtMlwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgKGNsaWNrKT1cImltcG9ydE1vZHVsZSgpXCI+XG4gICAgICAgICAgSW1wb3J0YVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPCEtLSBFTkQgSU1QT1JUIC0tPlxuXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24tbmV4dFwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIG1hdFN0ZXBwZXJOZXh0IFtkaXNhYmxlZF09XCJmb3JtRm9ybUdyb3VwLmludmFsaWRcIj5cbiAgICAgICAgICBTdWNjZXNzaXZvXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICA8L21hdC1zdGVwPlxuICA8IS0tI2VuZHJlZ2lvbiBEQVRJIEdFTkVSQUxJIERFTExBIEZPUk0gLS0+XG5cbiAgPCEtLSNyZWdpb24gQUdHSVVOVEEgREVJIENBTVBJIERFTExBIEZPUk0gLS0+XG4gIDxtYXQtc3RlcCBjbGFzcz1cImR5bmFtaWMtbW9kdWxlLWNvbmZpZ3VyYXRvci1hZGQtZmllbGRcIiBbY29tcGxldGVkXT1cImlzRmllbGRTdGVwQ29tcGxldGVkKClcIj5cbiAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsPlxuICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItaGVhZGVyLW92ZXJsYXlcIiAoY2xpY2spPVwic2V0Rm9ybVN0YXR1cyhmYWxzZSlcIj48L2Rpdj5cbiAgICAgIDxtYXQtbGFiZWw+Q2FtcGkgZGEgaW5zZXJpcmU8L21hdC1sYWJlbD5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWRkQnV0dG9uc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG1lLTJcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwib3BlbkZpZWxkRGlhbG9nKClcIj5cbiAgICAgICAgICA8bWF0LWljb24+YWRkPC9tYXQtaWNvbj5cbiAgICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMHB4XCI+QWdnaXVuZ2kgY2FtcG88L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDwhLS0gPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lZCBtZS0yXCJcbiAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5Jbm5lckZvcm1EaWFsb2coKVwiXG4gICAgICAgICAgKm5nSWY9XCIhaW5uZXJGb3JtTWFuYWdtZW50XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxtYXQtaWNvbj5hZGQ8L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwcHhcIj5BZ2dpdW5naSBmb3JtIGRpIGRldHRhZ2xpbzwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+IC0tPlxuXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVkIGJ0bi1vdXRsaW5lZC1yZWQgbWUtMlwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicmVkXCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZVNlbGVjdGVkRmllbGRzKCdGaWVsZHMnKVwiICpuZ0lmPVwic2hvd0RlbGV0ZUJ1dHRvblwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XG4gICAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweFwiPkVsaW1pbmEgY2FtcGkgc2VsZXppb25hdGk8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVkIG1lLTJcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cImFjY2VudFwiIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJvcGVuQWlFZGl0RGlhbG9nKClcIiAqbmdJZj1cImVuZFBvaW50Q29uZmlndXJhdGlvbj8uRm9ybXM/LlNwZWVjaFRvRm9ybUVkaXRFbmRQb2ludFwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5hdXRvX2ZpeF9oaWdoPC9tYXQtaWNvbj5cbiAgICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMHB4XCI+e3sgaXNOZXdGb3JtID8gJ0NyZWEgY29uIEFJJyA6ICdNb2RpZmljYSBjb24gQUknIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGVxcC10YWJsZSBjbGFzcz1cInRhYmxlXCIgI2ZpZWxkc1RhYmxlIFtjcmVhdGVNYXRDYXJkXT1cImZhbHNlXCIgW2NvbHVtbnNdPVwiZmllbGRzQ29sdW1uc1wiIFtlbmFibGVEcmFnQW5kRHJvcF09XCJmYWxzZVwiXG4gICAgICBbZW5hYmxlRHJhZ0NvbHVtbl09XCJ0cnVlXCIgW2NoYW5nZURyYWdSb3dQb3NpdGlvbl09XCJ0cnVlXCIgW2lzTXVsdGlwbGVTZWxlY3Rpb25dPVwidHJ1ZVwiIFtkYXRhXT1cImZvcm0uRmllbGRzXCJcbiAgICAgIFtlbXB0eVRhYmxlTWVzc2FnZV09XCInTmVzc3VuIGNhbXBvIGluc2VyaXRvJ1wiIChkcmFnUmVsZWFzZWRFdmVudCk9XCJvbkRyYWdSZWxlYXNlZCgkZXZlbnQpXCJcbiAgICAgIChkcmFnRW5kZWRFdmVudCk9XCJvbkRyYWdFbmRlZCgkZXZlbnQpXCIgKGNoZWNrYm94SW5mbyk9XCJ0b2dnbGVEZWxldGVCdXR0b24oJGV2ZW50KVwiIFtzZWFyY2hUZXh0XT1cIicnXCJcbiAgICAgIFtwYWdpbmF0b3JWaXNpYmxlXT1cImZhbHNlXCI+XG4gICAgPC9lcXAtdGFibGU+XG5cbiAgICA8ZGl2IGNsYXNzPVwibXQtMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1yLTIgcHJldmlvdXNcIiBtYXQtcmFpc2VkLWJ1dHRvbiBtYXRTdGVwcGVyUHJldmlvdXM+XG4gICAgICAgIFByZWNlZGVudGVcbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbi1uZXh0XCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgbWF0U3RlcHBlck5leHQgW2Rpc2FibGVkXT1cIiFpc0ZpZWxkU3RlcENvbXBsZXRlZCgpXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogZm9ybUZvcm1Hcm91cC5pbnZhbGlkIH1cIiAoY2xpY2spPVwic2V0Rm9ybVN0YXR1cyhmYWxzZSlcIj5cbiAgICAgICAgU3VjY2Vzc2l2b1xuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvbWF0LXN0ZXA+XG4gIDwhLS0jZW5kcmVnaW9uIEFHR0lVTlRBIERFSSBDQU1QSSBERUxMQSBGT1JNIC0tPlxuXG4gIDxuZy10ZW1wbGF0ZSBtYXRTdGVwcGVySWNvbj1cImVkaXRcIiBsZXQtaW5kZXg9XCJpbmRleFwiPlxuICAgIDxtYXQtbGFiZWw+e3sgaW5kZXggKyAxIH19PC9tYXQtbGFiZWw+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPCEtLSNyZWdpb24gQUdHSVVOVEEgREVMTEUgT1BFUkFaSU9OSSBTVUkgUkVDT1JEIC0tPlxuICA8IS0tIzxtYXQtc3RlcD5cbiAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsPlxuICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItaGVhZGVyLW92ZXJsYXlcIiAoY2xpY2spPVwic2V0Rm9ybVN0YXR1cyhmYWxzZSlcIj48L2Rpdj5cbiAgICAgIEF6aW9uaSBhZ2dpdW50aXZlIHN1aSByZWNvcmRcbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWRkQnV0dG9uc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwib3BlbkFjdGlvbk9uUmVjb3JkRGlhbG9nKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPG1hdC1pY29uPmFkZDwvbWF0LWljb24+XG4gICAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweFwiPkFnZ2l1bmdpIGF6aW9uZTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZXFwLXRhYmxlXG4gICAgICBjbGFzcz1cInRhYmxlXCJcbiAgICAgICNhY3Rpb25zT25SZWNvcmRUYWJsZVxuICAgICAgW2NyZWF0ZU1hdENhcmRdPVwiZmFsc2VcIlxuICAgICAgW2NvbHVtbnNdPVwiYWN0aW9uc09uUmVjb3JkQ29sdW1uc1wiXG4gICAgICBbZGF0YV09XCJmb3JtLkFjdGlvbnNPblJlY29yZFwiXG4gICAgICBbZW1wdHlUYWJsZU1lc3NhZ2VdPVwiJ05lc3N1bmEgYWN0aW9uIGluc2VyaXRhJ1wiXG4gICAgICBbc2VhcmNoVGV4dF09XCInJ1wiXG4gICAgPlxuICAgIDwvZXFwLXRhYmxlPlxuXG4gICAgPGRpdiBjbGFzcz1cIm10LTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgYnV0dG9uc05leHREaXZcIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJtci0yIHByZXZpb3VzXCIgbWF0LXJhaXNlZC1idXR0b24gbWF0U3RlcHBlclByZXZpb3VzPlxuICAgICAgICBQcmVjZWRlbnRlXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJidXR0b24tbmV4dFwiXG4gICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgIG1hdFN0ZXBwZXJOZXh0XG4gICAgICAgIChjbGljayk9XCJzZXRGb3JtU3RhdHVzKGZhbHNlKVwiXG4gICAgICA+XG4gICAgICAgIFN1Y2Nlc3Npdm9cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L21hdC1zdGVwPi0tPlxuICA8IS0tI2VuZHJlZ2lvbiBBR0dJVU5UQSBERUxMRSBPUEVSQVpJT05JIFNVSSBSRUNPUkQgLS0+XG5cblxuXG4gIDwhLS0jcmVnaW9uIEFHR0lVTlRBIERFSSBCT1RUT05JIEFaSU9ORSAtLT5cbiAgPG1hdC1zdGVwPlxuICAgIDxuZy10ZW1wbGF0ZSBtYXRTdGVwTGFiZWw+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1oZWFkZXItb3ZlcmxheVwiIChjbGljayk9XCJzZXRGb3JtU3RhdHVzKGZhbHNlKVwiPjwvZGl2PlxuICAgICAgQm90dG9uaSBBemlvbmVcbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWRkQnV0dG9uc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5BY3Rpb25CdXR0b25EaWFsb2coKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5hZGQ8L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwcHhcIj5BZ2dpdW5naSBib3R0b25lIGF6aW9uZTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZXFwLXRhYmxlIGNsYXNzPVwidGFibGVcIiAjYWN0aW9uQnV0dG9uc1RhYmxlIFtjcmVhdGVNYXRDYXJkXT1cImZhbHNlXCIgW2NvbHVtbnNdPVwiYWN0aW9uQnV0dG9uc0NvbHVtbnNcIlxuICAgICAgW2RhdGFdPVwiZm9ybS5BY3Rpb25CdXR0b25zXCIgW2VtcHR5VGFibGVNZXNzYWdlXT1cIidOZXNzdW4gYm90dG9uZSBhemlvbmUgaW5zZXJpdG8nXCIgW3NlYXJjaFRleHRdPVwiJydcIlxuICAgICAgW2VuYWJsZURyYWdBbmREcm9wXT1cImZhbHNlXCIgW2VuYWJsZURyYWdDb2x1bW5dPVwidHJ1ZVwiIFtjaGFuZ2VEcmFnUm93UG9zaXRpb25dPVwidHJ1ZVwiXG4gICAgICAoZHJhZ1JlbGVhc2VkRXZlbnQpPVwib25EcmFnUmVsZWFzZWQoJGV2ZW50KVwiIChkcmFnRW5kZWRFdmVudCk9XCJvbkRyYWdFbmRlZCgkZXZlbnQpXCI+XG4gICAgPC9lcXAtdGFibGU+XG5cbiAgICA8ZGl2IGNsYXNzPVwibXQtMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBidXR0b25zTmV4dERpdlwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1yLTIgcHJldmlvdXNcIiBtYXQtcmFpc2VkLWJ1dHRvbiBtYXRTdGVwcGVyUHJldmlvdXM+XG4gICAgICAgIFByZWNlZGVudGVcbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbi1uZXh0XCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgbWF0U3RlcHBlck5leHQgKGNsaWNrKT1cInNldEZvcm1TdGF0dXMoZmFsc2UpXCI+XG4gICAgICAgIFN1Y2Nlc3Npdm9cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L21hdC1zdGVwPlxuICA8IS0tI2VuZHJlZ2lvbiBBR0dJVU5UQSBERUkgQk9UVE9OSSBBWklPTkUgLS0+XG5cblxuXG4gIDwhLS0jcmVnaW9uIFRSSUdHRVJTLS0+XG4gIDxtYXQtc3RlcD5cbiAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsPlxuICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItaGVhZGVyLW92ZXJsYXlcIiAoY2xpY2spPVwic2V0Rm9ybVN0YXR1cyhmYWxzZSlcIj48L2Rpdj5cbiAgICAgIFRyaWdnZXJzXG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LXN0YXJ0IGFkZEJ1dHRvbnNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib3BlblRyaWdnZXJzRGlhbG9nKClcIj5cbiAgICAgICAgICA8bWF0LWljb24+YWRkPC9tYXQtaWNvbj5cbiAgICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMHB4XCI+QWdnaXVuZ2kgdHJpZ2dlcjwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxlcXAtdGFibGUgY2xhc3M9XCJ0YWJsZVwiICN0cmlnZ2Vyc1RhYmxlIFtjcmVhdGVNYXRDYXJkXT1cImZhbHNlXCIgW2NvbHVtbnNdPVwidHJpZ2dlcnNDb2x1bW5zXCIgW2RhdGFdPVwiZm9ybS5UcmlnZ2Vyc1wiXG4gICAgICBbZW1wdHlUYWJsZU1lc3NhZ2VdPVwiJ05lc3N1bmEgYWN0aW9uIGluc2VyaXRhJ1wiIFtzZWFyY2hUZXh0XT1cIicnXCI+XG4gICAgPC9lcXAtdGFibGU+XG5cbiAgICA8ZGl2IGNsYXNzPVwibXQtMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1yLTIgcHJldmlvdXNcIiBtYXQtcmFpc2VkLWJ1dHRvbiBtYXRTdGVwcGVyUHJldmlvdXM+XG4gICAgICAgIFByZWNlZGVudGVcbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbi1uZXh0XCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgbWF0U3RlcHBlck5leHQgW2Rpc2FibGVkXT1cIiFpc0ZpZWxkU3RlcENvbXBsZXRlZCgpXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogZm9ybUZvcm1Hcm91cC5pbnZhbGlkIH1cIiAoY2xpY2spPVwic2V0Rm9ybVN0YXR1cyh0cnVlKVwiPlxuICAgICAgICBTdWNjZXNzaXZvXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICA8L21hdC1zdGVwPlxuICA8IS0tI2VuZHJlZ2lvbiBUUklHR0VSUy0tPlxuXG4gIDwhLS0jcmVnaW9uIFZJU1VBTElaWkFaSU9ORSBGT1JNIENSRUFUQSAtLT5cbiAgPG1hdC1zdGVwIGNsYXNzPVwiZHluYW1pYy1tb2R1bGUtY29uZmlndXJhdG9yLXByZXZpZXdcIj5cbiAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsPlxuICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItaGVhZGVyLW92ZXJsYXlcIlxuICAgICAgICAoY2xpY2spPVwic2V0Rm9ybVN0YXR1cyggZm9ybUZvcm1Hcm91cC52YWxpZCAmJiBmb3JtLkZpZWxkcyAmJiBmb3JtLkZpZWxkcy5sZW5ndGggPiAwIClcIj48L2Rpdj5cbiAgICAgIEFudGVwcmltYVxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlciBhZGRCdXR0b25zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG9cIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZWQgbWUtMlwiIFtjbGFzcy5hY3RpdmVdPVwic2hvd0FsbEZpZWxkc1wiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzaG93QWxsRmllbGRzID0gIXNob3dBbGxGaWVsZHNcIj5cbiAgICAgICAgICA8bWF0LWljb24+e3sgc2hvd0FsbEZpZWxkcyA/ICd2aXNpYmlsaXR5X29mZicgOiAndmlzaWJpbGl0eScgfX08L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwcHhcIj5Nb3N0cmEgYW5jaGUgaSBjYW1waSBpbnZpc2liaWxpPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvXCIgKm5nSWY9XCJjb250ZXN0dWFsaXphdGlvbiAmJiBjb250ZXN0dWFsaXphdGlvbi5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVkIG1lLTJcIiBbY2xhc3MuYWN0aXZlXT1cInNlbGVjdGVkQ29udGVzdHVhbGl6YXRpb24gIT0gbnVsbFwiIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvcGVuQ29udGVzdHVhbGl6YXRpb25EaWFsb2coKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbj50dW5lPC9tYXQtaWNvbj5cbiAgICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMHB4XCI+Q29udGVzdHVhbGl6emF6aW9uZTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0b1wiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lZCBtZS0yXCIgW2NsYXNzLmFjdGl2ZV09XCJzaG93R3JhZmljYVBhbmVsXCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJhY2NlbnRcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic2hvd0dyYWZpY2FQYW5lbCA9ICFzaG93R3JhZmljYVBhbmVsXCI+XG4gICAgICAgICAgPG1hdC1pY29uPnBhbGV0dGU8L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwcHhcIj5HcmFmaWNhPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVkIG1lLTJcIiBbY2xhc3MuYWN0aXZlXT1cInZpc3VhbEVkaXRvckFjdGl2ZVwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwiYWNjZW50XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInRvZ2dsZVZpc3VhbEVkaXRvcigpXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmdyaWRfdmlldzwvbWF0LWljb24+XG4gICAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweFwiPlZpc3VhbCBFZGl0b3I8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG9cIiAqbmdJZj1cImVuZFBvaW50Q29uZmlndXJhdGlvbj8uRm9ybXM/LlNwZWVjaFRvRm9ybVNwZWVjaFRvRm9ybUVkaXRFbmRQb2ludEVuZFBvaW50XCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVkIG1lLTJcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cImFjY2VudFwiIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJvcGVuQWlFZGl0RGlhbG9nKClcIj5cbiAgICAgICAgICA8bWF0LWljb24+YXV0b19maXhfaGlnaDwvbWF0LWljb24+XG4gICAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweFwiPk1vZGlmaWNhIGNvbiBBSTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJ2ZVN3YXBGaWVsZFwiIGNsYXNzPVwidmUtc3dhcC1iYW5uZXJcIj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInZlLXN3YXAtYmFubmVyLWljb25cIj5zd2FwX2hvcml6PC9tYXQtaWNvbj5cbiAgICAgIDxzcGFuPkNsaWNjYSBzdWwgY2FtcG8gY29uIGN1aSB2dW9pIHNjYW1iaWFyZSBsYSBwb3NpemlvbmU8L3NwYW4+XG4gICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjb2xvcj1cIndhcm5cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInZlQ2FuY2VsU3dhcCgpXCIgY2xhc3M9XCJ2ZS1zd2FwLWJhbm5lci1jYW5jZWxcIj5cbiAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgQW5udWxsYVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwic2hvd0dyYWZpY2FQYW5lbFwiIGNsYXNzPVwibXQtMlwiPlxuICAgICAgPG1hdC1hY2NvcmRpb24gY2xhc3M9XCJjb25maWd1cmF0b3ItYWNjb3JkaW9uXCIgW211bHRpXT1cInRydWVcIiBkaXNwbGF5TW9kZT1cImZsYXRcIj5cbiAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwgY2xhc3M9XCJjb25maWd1cmF0b3ItcGFuZWxcIiBbZXhwYW5kZWRdPVwidHJ1ZVwiPlxuICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+R3JhZmljYTwvbWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JhZmljYS1haS1yb3dcIiAqbmdJZj1cImVuZFBvaW50Q29uZmlndXJhdGlvbj8uRm9ybXM/LlNwZWVjaFRvR3JhcGhpY3NFbmRQb2ludFwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWZvcm0tZ3JhcGhpYy1zdWdnZXN0XCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZvcm1HcmFwaGljU3VnZ2VzdExvYWRpbmdcIiAoY2xpY2spPVwidG9nZ2xlRm9ybUdyYXBoaWNTdWdnZXN0SW5wdXQoKVwiPlxuICAgICAgICAgICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJmb3JtR3JhcGhpY1N1Z2dlc3RMb2FkaW5nXCIgZGlhbWV0ZXI9XCIxNFwiXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luLXJpZ2h0OjRweFwiPjwvbWF0LXNwaW5uZXI+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIiFmb3JtR3JhcGhpY1N1Z2dlc3RMb2FkaW5nXCI+cGFsZXR0ZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgIHt7IGZvcm1HcmFwaGljU3VnZ2VzdExvYWRpbmcgPyAnRWxhYm9yYXppb25lLi4uJyA6ICdTdWdnZXJpc2NpIEdyYWZpY2EgQ29tcGxldGEnIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWhpbnQtaW5wdXQtZ3JvdXBcIiAqbmdJZj1cInNob3dGb3JtR3JhcGhpY1N1Z2dlc3RJbnB1dCAmJiAhZm9ybUdyYXBoaWNTdWdnZXN0TG9hZGluZ1wiPlxuICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1ncmFwaGljLXNjb3BlLXNlbGVjdFwiIFsobmdNb2RlbCldPVwiZm9ybUdyYXBoaWNTY29wZVwiXG4gICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhbGxcIj5UdXR0bzwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJtYWluXCI+UHJpbmNpcGFsZTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdCBvZiBwcmVzZW50RmllbGRUeXBlT3B0aW9uc1wiIFt2YWx1ZV09XCJvcHQudmFsdWVcIj57eyBvcHQubGFiZWwgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWhpbnQtcmFuZG9taXplXCIgKGNsaWNrKT1cInJhbmRvbWl6ZUhpbnQoKVwiXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIlN1Z2dlcmltZW50byBjYXN1YWxlXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPnRpcHNfYW5kX3VwZGF0ZXM8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ2VuZXJhdGUtYmdcIiBbY2xhc3MuYWN0aXZlXT1cImdlbmVyYXRlQmFja2dyb3VuZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImdlbmVyYXRlQmFja2dyb3VuZCA9ICFnZW5lcmF0ZUJhY2tncm91bmRcIlxuICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImdlbmVyYXRlQmFja2dyb3VuZCA/ICdTZm9uZG8gQUk6IGF0dGl2bycgOiAnR2VuZXJhIGFuY2hlIHNmb25kbyBBSSdcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+aW1hZ2U8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWdyYXBoaWMtaGludC1pbnB1dFwiIFsobmdNb2RlbCldPVwiZm9ybUdyYXBoaWNTdWdnZXN0SGludFwiXG4gICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJlcy4gdG9uaSBkaSBibHUgc2N1cm8sIHN0aWxlIHByb2Zlc3Npb25hbGUsIHNmb25kbyBzZnVtYXRvLi4uXCIgLz5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZm9ybS1ncmFwaGljLXNlbmRcIiAoY2xpY2spPVwib25Gb3JtR3JhcGhpY1N1Z2dlc3QoKVwiXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkFwcGxpY2Egc3VnZ2VyaW1lbnRvIGdyYWZpY28gYWwgZm9ybVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hdXRvX2ZpeF9oaWdoPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8aHIgY2xhc3M9XCJncmFmaWNhLWFpLXNlcGFyYXRvclwiIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1zdGFydCBncmFmaWNhLXJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiZ3JhZmljYS1maWVsZC1sYWJlbFwiPkltbWFnaW5lIGRpIHNmb25kbzwvcD5cbiAgICAgICAgICAgICAgPGVxcC1hdHRhY2htZW50cyBbYXR0YWNobWVudHNMaXN0XT1cImJnQXR0YWNobWVudExpc3RcIiBbc2hvd01hdENhcmRdPVwiZmFsc2VcIiBbYWxsb3dPbmx5SW1hZ2VzXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtpc0Rpc2FibGVkXT1cImZhbHNlXCIgW3Nob3dJbmxpbmVQcmV2aWV3XT1cInRydWVcIiBbbXVsdGlwbGVBdHRhY2htZW50XT1cImZhbHNlXCIgW3Nob3dIZWFkZXJdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIFthbGxvd2VkVHlwZXNdPVwiW0F0dGFjaG1lbnRUeXBlLkZJTEVdXCIgKGxvY2FsRWRpdGVkQXR0YWNobWVudHMpPVwib25CZ0ltYWdlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChvbkRlbGV0ZUF0dGFjaG1lbnQpPVwib25CZ0ltYWdlRGVsZXRlKClcIj5cbiAgICAgICAgICAgICAgPC9lcXAtYXR0YWNobWVudHM+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5DU1MgUHJpbmNpcGFsZTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZvcm0uVGhlbWVDU1NcIiBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJlcy4gbWF4LXdpZHRoOiA4MDBweDsgcGFkZGluZzogMTZweDsgYmFja2dyb3VuZDogI2Y1ZjVmNTtcIiByb3dzPVwiNVwiPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5DU1MgVGl0b2xvPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPHRleHRhcmVhIG1hdElucHV0IFsobmdNb2RlbCldPVwiZm9ybS5UaXRsZUNTU1wiXG4gICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJwcmV2aWV3Rm9ybSAmJiAocHJldmlld0Zvcm0uVGl0bGVDU1MgPSAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImVzLiBmb250LXNpemU6IDJyZW07IGZvbnQtd2VpZ2h0OiA3MDA7IGNvbG9yOiAjZmZmO1wiIHJvd3M9XCI1XCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XG4gICAgICA8L21hdC1hY2NvcmRpb24+XG4gICAgPC9kaXY+XG5cbiAgICA8aHIgLz5cblxuICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLW1vZHVsZS1wcmV2aWV3XCIgW3N0eWxlXT1cInByZXZpZXdCZ1N0eWxlXCI+XG4gICAgICA8ZGl2IFtzdHlsZV09XCJwcmV2aWV3VGhlbWVTdHlsZVwiPlxuICAgICAgICA8YWRkLWZvcm0tcmVjb3JkICpuZ0lmPVwicHJldmlld0Zvcm0gJiYgZm9ybUNvbXBsZXRlZFwiIFtmb3JtXT1cInByZXZpZXdGb3JtXCIgW3VzZXJJRF09XCJVc2VySURcIiBbb3JnYUlEXT1cIm9yZ2FJRFwiXG4gICAgICAgICAgW2Zvcm11bGFPYmplY3RdPVwiZm9ybXVsYU9iamVjdFwiIFtjb25maWd1cmF0aW9uc109XCJ2aWV3Q29uZmlnXCIgW3Nob3dBbGxGaWVsZHNdPVwic2hvd0FsbEZpZWxkc1wiXG4gICAgICAgICAgW1F1ZXJ5RWRpdG9yQ29tcG9uZW50XT1cIlF1ZXJ5RWRpdG9yQ29tcG9uZW50XCIgW2VuZFBvaW50Q29uZmlndXJhdGlvbl09XCJlbmRQb2ludENvbmZpZ3VyYXRpb25cIlxuICAgICAgICAgIFt2aXN1YWxFZGl0b3JNb2RlXT1cInZpc3VhbEVkaXRvckFjdGl2ZVwiIFt2ZVN3YXBGaWVsZENvZGVdPVwidmVTd2FwRmllbGQ/LkxhYmVsID8/IG51bGxcIlxuICAgICAgICAgICh2ZUZpZWxkQ2xpY2spPVwib25WZUZpZWxkQ2xpY2soJGV2ZW50KVwiIChvdXQpPVwib25FeHRlcm5hbENvbXBvbmVudE91dCgkZXZlbnQpXCJcbiAgICAgICAgICAoZmlyZVRyaWdnZXIpPVwib25GaXJlVHJpZ2dlcigkZXZlbnQpXCIgW2luQ29uZmlnXT1cInRydWVcIj5cbiAgICAgICAgPC9hZGQtZm9ybS1yZWNvcmQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJtdC0yIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGJ1dHRvbi1uZXh0RGl2XCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwibXItMiBidXR0b24tZXhpdFwiIG1hdC1yYWlzZWQtYnV0dG9uIG1hdFN0ZXBwZXJQcmV2aW91cyAoY2xpY2spPVwic2V0Rm9ybVN0YXR1cyhmYWxzZSlcIj5cbiAgICAgICAgUHJlY2VkZW50ZVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uLW5leHRcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwic2F2ZUZvcm0oKVwiPlxuICAgICAgICBTYWx2YSBmb3JtXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtc3RlcD5cbiAgPCEtLSNlbmRyZWdpb24gVklTVUFMSVpaQVpJT05FIEZPUk0gQ1JFQVRBIC0tPlxuXG48L21hdC1ob3Jpem9udGFsLXN0ZXBwZXI+XG5cbjwhLS0gRElBTE9HIEFHR0lVTlRBL01PRElGSUNBIENBTVBPIC0tPlxuPG5nLXRlbXBsYXRlICNkaWFsb2dGaWVsZD5cbiAgPGVxcC1keW5hbWljLW1vZHVsZS1hZGQtZm9ybS1maWVsZCBbZm9ybV09XCJmb3JtXCIgW2VuZFBvaW50Q29uZmlndXJhdGlvbl09XCJlbmRQb2ludENvbmZpZ3VyYXRpb25cIlxuICAgIFtmaWVsZF09XCJzZWxlY3RlZEZpZWxkXCIgW2Zvcm11bGFPYmplY3RdPVwiZm9ybXVsYU9iamVjdFwiIFtpbmRleEZpZWxkXT1cImluZGV4U2VsZWN0ZWRGaWVsZFwiXG4gICAgW2F2YWlsYWJsZUZpZWxkc109XCJmb3JtLkZpZWxkc1wiIFtjb250ZXN0dWFsaXphdGlvbl09XCJjb250ZXN0dWFsaXphdGlvblwiXG4gICAgW1F1ZXJ5RWRpdG9yQ29tcG9uZW50XT1cIlF1ZXJ5RWRpdG9yQ29tcG9uZW50XCIgW2ZpZWxkc0V4dHJhQ29uZmlnXT1cImZpZWxkc0V4dHJhQ29uZmlnXCJcbiAgICBbYWN0aW9uQnV0dG9uc109XCJhY3Rpb25CdXR0b25zXCIgW2FpRmllbGRTdWdnZXN0TG9hZGluZ109XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIiBbZm9ybUZpZWxkc0dyb3Vwc109XCJcbiAgICAgIGZvcm0uRm9ybVNjYWxhclR5cGUgIT0gRm9ybVNjYWxhclR5cGVFbnVtLlNlbXBsaWNlXG4gICAgICA/IGZvcm0uRm9ybUZpZWxkc0dyb3Vwc1xuICAgICAgOiBudWxsXG4gICAgICBcIiAob3BlbkFpRWRpdEZvckZpZWxkRXZlbnQpPVwib25BaUVkaXRGb3JGaWVsZCgkZXZlbnQpXCIgKG9wZW5BaUdyYXBoaWNTdWdnZXN0RXZlbnQpPVwib25BaUdyYXBoaWNTdWdnZXN0KCRldmVudClcIlxuICAgIChzYXZlRmllbGRFdmVudCk9XCJvblNhdmVGaWVsZCgkZXZlbnQpXCIgKG91dCk9XCJvbkV4dGVybmFsQ29tcG9uZW50T3V0KCRldmVudClcIj5cbiAgPC9lcXAtZHluYW1pYy1tb2R1bGUtYWRkLWZvcm0tZmllbGQ+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIFRFTVBMQVRFIFBFUiBWSVNVQUxJWlpBUkUgTEEgQ09MT05OQSBERUxMQSBTRVpJT05FIE5FTExBIFRBQkVMTEEgREVJIEZJRUxEUyAtLT5cbjxuZy10ZW1wbGF0ZSAjZmllbGRTZWN0aW9uQ29sdW1uVGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiPlxuICA8dG13LXNlbGVjdCBbYXJyYXlEYXRhXT1cImZvcm0uRm9ybUZpZWxkc0dyb3Vwc1wiIFsobmdNb2RlbElucHV0KV09XCJyb3cuRmllbGRHcm91cFwiIFthcnJheUtleVByb3BlcnR5XT1cIidOYW1lJ1wiXG4gICAgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInTmFtZSdcIiBwbGFjZWhvbGRlcj1cIlNlemlvbmVcIiBbaXNSZXF1aXJlZF09XCJ0cnVlXCIgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCI+XG4gIDwvdG13LXNlbGVjdD5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gRElBTE9HIFBFUiBBR0dJVU5HRVJFL01PRElGSUNBUkUgVU5BIEFDVElPTiBTVUkgUkVDT1JEIERFTExBIEZPUk0gLS0+XG48bmctdGVtcGxhdGUgI2RpYWxvZ0FjdGlvbk9uUmVjb3JkPlxuXG4gIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWQgdGhpcmQtbW9kYWxcIiBzdHlsZT1cIm1heC1oZWlnaHQ6IDcwdmggIWltcG9ydGFudDsgb3ZlcmZsb3cteDogaGlkZGVuOyBvdmVyZmxvdy15OiBhdXRvXCI+XG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJhY3Rpb25PblJlY29yZEZvcm1Hcm91cFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvdyB0aXRsZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXRpdGxlLXN0YW5kYXJkXCI+XG4gICAgICAgICAge3tcbiAgICAgICAgICBpbmRleFNlbGVjdGVkQWN0aW9uICE9IG51bGwgJiYgaW5kZXhTZWxlY3RlZEFjdGlvbiA+PSAwXG4gICAgICAgICAgPyBcIk1vZGlmaWNhXCJcbiAgICAgICAgICA6IFwiQWdnaXVuZ2lcIlxuICAgICAgICAgIH19XG4gICAgICAgICAgYXppb25lIHN1bCByZWNvcmRcbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBtdC0yXCI+XG4gICAgICAgICAgPG1hdC1sYWJlbD4gTm9tZSA8L21hdC1sYWJlbD5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiTmFtZVwiIHJlcXVpcmVkIG1hdElucHV0IFsobmdNb2RlbCldPVwic2VsZWN0ZWRBY3Rpb24uTmFtZVwiIC8+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTQgbXQtMlwiPlxuICAgICAgICAgIDxtYXQtbGFiZWw+IEljb25hIDwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJJY29uXCIgcmVxdWlyZWQgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEFjdGlvbi5JY29uXCIgLz5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG10LTJcIj5cbiAgICAgICAgICA8bWF0LWxhYmVsPkF6aW9uZSAoSmF2YXNjcmlwdCk8L21hdC1sYWJlbD5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgW3Jvd3NdPVwiM1wiIGZvcm1Db250cm9sTmFtZT1cIkFjdGlvblwiIHJlcXVpcmVkIFsobmdNb2RlbCldPVwic2VsZWN0ZWRBY3Rpb24uQWN0aW9uXCJcbiAgICAgICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhY3Rpb25BdXRvY29tcGxldGVcIiAoa2V5dXApPVwic2V0QWN0aW9uQXV0b2NvbXBsZXRlT3B0aW9ucygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKGZvY3VzKT1cInNldEFjdGlvbkF1dG9jb21wbGV0ZU9wdGlvbnMobnVsbClcIiBzdHlsZT1cIlxuICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGxpZ2h0Z3JheSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHggIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNhY3Rpb25BdXRvY29tcGxldGU9XCJtYXRBdXRvY29tcGxldGVcIj5cbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBhY3Rpb25BdXRvY29tcGxldGVPcHRpb25zXCIgW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiPlxuICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1hdXRvY29tcGxldGU+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIG10LTIgbWItMVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uc0Zvcm1cIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIG1hdC1yYWlzZWQtYnV0dG9uIGNhbmNlbFwiIChjbGljayk9XCJjbG9zZURpYWxvZ0FjdGlvbk9uUmVjb3JkKClcIiB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICAgICAgICBBbm51bGxhXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1yLTIgc2F2ZVwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJzYXZlQWN0aW9uT25SZWNvcmQoKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWN0aW9uT25SZWNvcmRGb3JtR3JvdXAuaW52YWxpZFwiIHR5cGU9XCJidXR0b25cIj5cbiAgICAgICAgICAgIFNhbHZhXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gRElBTE9HIFBFUiBBR0dJVU5HRVJFL01PRElGSUNBUkUgVU4gQk9UVE9ORSBBWklPTkUgLS0+XG48bmctdGVtcGxhdGUgI2RpYWxvZ0FjdGlvbkJ1dHRvbj5cbiAgPGFjdGlvbi1idXR0b24tY3JlYXRvciBbZW5kUG9pbnRDb25maWd1cmF0aW9uXT1cImVuZFBvaW50Q29uZmlndXJhdGlvblwiIFtmb3JtXT1cImZvcm1cIiBbZm9ybXVsYXNdPVwiYWN0aW9uQnV0dG9uc1wiXG4gICAgW2FjdGlvbkJ1dHRvbl09XCJzZWxlY3RlZEFjdGlvbkJ1dHRvblwiIChvblNhdmVSZWNvcmQpPVwic2F2ZUFjdGlvbkJ1dHRvbnMoJGV2ZW50KVwiPjwvYWN0aW9uLWJ1dHRvbi1jcmVhdG9yPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBURU1QTEFURSBQRVIgQ09ORklHVVJBUkUgTEUgRk9STSBESSBERVRUQUdMSU8gLS0+XG48bmctdGVtcGxhdGUgI2RpYWxvZ0lubmVyRm9ybT5cbiAgPCEtLSBbZm9ybV09XCJzZWxlY3RlZElubmVyRm9ybVwiXG4gICAgW2lubmVyRm9ybU1hbmFnbWVudF09XCJ0cnVlXCJcbiAgICBbaW5uZXJGb3JtUmVmXT1cImRpYWxvZ0lubmVyRm9ybVJlZlwiIC0tPlxuICA8ZXFwLWR5bmFtaWMtbW9kdWxlLWNvbmZpZ3VyYXRvciBbY29uZmlndXJhdGlvbnNdPVwiaW5uZXJGb3JtQ29uZmlnXCIgKHNhdmVGb3JtRXZlbnQpPVwib25TYXZlT3JFeGl0SW5uZXJGb3JtKCRldmVudClcIj5cbiAgPC9lcXAtZHluYW1pYy1tb2R1bGUtY29uZmlndXJhdG9yPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBURU1QTEFURSBQRVIgSU1QT1JUIC0tPlxuPG5nLXRlbXBsYXRlICNkaWFsb2dJbXBvcnQ+XG4gIDxtYXQtY2FyZCBjbGFzcz1cImltcG9ydERpYWxvZ1wiPlxuICAgIDxtYXQtY2FyZC1oZWFkZXIgY2xhc3M9XCJwLTIganVzdGlmeS1jb250ZW50LWFyb3VuZFwiPlxuICAgICAgPG1hdC1jYXJkLXRpdGxlPlxuICAgICAgICBJbXBvcnRcbiAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XG4gICAgPC9tYXQtY2FyZC1oZWFkZXI+XG4gICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJwLTJcIj5cbiAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIGNsYXNzPVwiaW5wdXQtZmlsZS1idG4gcGItMlwiIChjaGFuZ2UpPVwib25JbXBvcnQoJGV2ZW50KVwiIC8+XG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgIDxtYXQtY2FyZC1mb290ZXIgY2xhc3M9XCJwLTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWNsZWFyIGJ1dHRvbi1iYWNrIG1lLTJcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cImRpc2FibGVkXCIgKGNsaWNrKT1cImNsb3NlSW1wb3J0KClcIj5cbiAgICAgICAgQW5udWxsYVxuICAgICAgPC9idXR0b24+XG4gICAgPC9tYXQtY2FyZC1mb290ZXI+XG4gIDwvbWF0LWNhcmQ+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIERJQUxPRyBQRVIgQUdHSVVOR0VSRS9NT0RJRklDQVJFIEkgVFJJR0dFUlMgLS0+XG48bmctdGVtcGxhdGUgI2RpYWxvZ1RyaWdnZXJzPlxuICA8dHJpZ2dlci1jcmVhdG9yIFtlbmRQb2ludENvbmZpZ3VyYXRpb25dPVwiZW5kUG9pbnRDb25maWd1cmF0aW9uXCIgW2Zvcm1dPVwiZm9ybVwiIFtmb3JtdWxhc109XCJ0cmlnZ2Vyc1wiXG4gICAgW3RyaWdnZXJdPVwic2VsZWN0ZWRUcmlnZ2VyXCIgKG9uU2F2ZVJlY29yZCk9XCJzYXZlVHJpZ2dlcigkZXZlbnQpXCI+PC90cmlnZ2VyLWNyZWF0b3I+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIERJQUxPRyBNT0RJRklDQSBDT04gQUkgLS0+XG48bmctdGVtcGxhdGUgI2RpYWxvZ0FpRWRpdD5cbiAgPG1hdC1jYXJkIHN0eWxlPVwibWluLXdpZHRoOiA0ODBweFwiPlxuICAgIDxkaXYgY2xhc3M9XCJhaS1kaWFsb2ctaGVhZGVyXCI+XG4gICAgICA8bWF0LWljb24+YXV0b19maXhfaGlnaDwvbWF0LWljb24+XG4gICAgICA8c3Bhbj57eyBpc05ld0Zvcm0gPyAnQ3JlYSBmb3JtIGNvbiBBSScgOiAnTW9kaWZpY2EgZm9ybSBjb24gQUknIH19PC9zcGFuPlxuICAgICAgPGJ1dHRvbiAqbmdJZj1cImFpUHJvbXB0SGlzdG9yeS5sZW5ndGggPiAwXCIgbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImFpLWhpc3RvcnktdG9nZ2xlLWJ0blwiXG4gICAgICAgIFtjbGFzcy5hY3RpdmVdPVwic2hvd0FpUHJvbXB0SGlzdG9yeVwiXG4gICAgICAgIFttYXRUb29sdGlwXT1cInNob3dBaVByb21wdEhpc3RvcnkgPyAnTmFzY29uZGkgc3RvcmljbyByaWNoaWVzdGUnIDogJ01vc3RyYSBzdG9yaWNvIHJpY2hpZXN0ZSdcIlxuICAgICAgICAoY2xpY2spPVwic2hvd0FpUHJvbXB0SGlzdG9yeSA9ICFzaG93QWlQcm9tcHRIaXN0b3J5XCI+XG4gICAgICAgIDxtYXQtaWNvbj57eyBzaG93QWlQcm9tcHRIaXN0b3J5ID8gJ2hpc3RvcnlfdG9nZ2xlX29mZicgOiAnaGlzdG9yeScgfX08L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYWktZGlhbG9nLWJvZHktZmxleFwiPlxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJwLTMgYWktZGlhbG9nLW1haW4tY29udGVudFwiPlxuICAgICAgICA8IS0tIFByb21wdCB0ZXh0YXJlYSArIG1pY3JvZm9ubyAtLT5cbiAgICAgICAgPGRpdiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZVwiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIHN0eWxlPVwid2lkdGg6IDEwMCVcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+e3sgaXNOZXdGb3JtID8gJ0Rlc2NyaXZpIGlsIGZvcm0gZGEgY3JlYXJlJyA6ICdEZXNjcml2aSBsYSBtb2RpZmljYSBkYSBhcHBvcnRhcmUnIH19PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJhaUVkaXRQcm9tcHRcIiByb3dzPVwiNVwiIFtkaXNhYmxlZF09XCJhaUVkaXRMb2FkaW5nXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImlzTmV3Rm9ybSA/ICdFczogY3JlYSB1biBmb3JtIHBlciBsYSByZWdpc3RyYXppb25lIHBhemllbnRpIGNvbiBjYW1waSBub21lLCBjb2dub21lLCBkYXRhIGRpIG5hc2NpdGEgZSBjb2RpY2UgZmlzY2FsZS4uLicgOiAnRXM6IGFnZ2l1bmdpIHVuIGNhbXBvIGRhdGEgZGkgbmFzY2l0YSwgcmltdW92aSBpbCBjYW1wbyBlbWFpbCwgcmVuZGkgb2JibGlnYXRvcmlvIGlsIGNhbXBvIHRlbGVmb25vLi4uJ1wiPjwvdGV4dGFyZWE+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJ0cnVlXCIgU3BlZWNoVG9UZXh0IFsoYmluZGVkVGV4dCldPVwiYWlFZGl0UHJvbXB0XCJcbiAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyByaWdodDogMTJweDsgdG9wOiAxMnB4OyBjdXJzb3I6IHBvaW50ZXI7IGNvbG9yOiAjNjY2XCJcbiAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImlzTmV3Rm9ybSA/ICdQYXJsYSBwZXIgZGVzY3JpdmVyZSBpbCBmb3JtJyA6ICdQYXJsYSBwZXIgZGV0dGFyZSBsYSBtb2RpZmljYSdcIj5rZXlib2FyZF92b2ljZTwvbWF0LWljb24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gQWxsZWdhdGkgKyBnZW5lcmEgc2ZvbmRvIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItMiBtdC0xXCIgc3R5bGU9XCJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHg7ZmxleC13cmFwOndyYXBcIj5cbiAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cImFpRWRpdExvYWRpbmdcIiAoY2xpY2spPVwiYWlFZGl0RmlsZUlucHV0LmNsaWNrKClcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5hdHRhY2hfZmlsZTwvbWF0LWljb24+XG4gICAgICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiA2cHhcIj5BZ2dpdW5naSBhbGxlZ2F0aSAoUERGIG8gaW1tYWdpbmkpPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxpbnB1dCAjYWlFZGl0RmlsZUlucHV0IHR5cGU9XCJmaWxlXCIgbXVsdGlwbGUgYWNjZXB0PVwiaW1hZ2UvKixhcHBsaWNhdGlvbi9wZGZcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkFpRWRpdEZpbGVDaGFuZ2UoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImVuZFBvaW50Q29uZmlndXJhdGlvbj8uRm9ybXM/LlNwZWVjaFRvRm9ybUVkaXRFbmRQb2ludFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1nZW5lcmF0ZS1iZ1wiXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImFpR2VuZXJhdGVCYWNrZ3JvdW5kXCIgW2Rpc2FibGVkXT1cImFpRWRpdExvYWRpbmdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFpR2VuZXJhdGVCYWNrZ3JvdW5kID0gIWFpR2VuZXJhdGVCYWNrZ3JvdW5kXCJcbiAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImFpR2VuZXJhdGVCYWNrZ3JvdW5kID8gJ1Nmb25kbyBBSTogYXR0aXZvJyA6ICdHZW5lcmEgYW5jaGUgc2ZvbmRvIEFJJ1wiPlxuICAgICAgICAgICAgPG1hdC1pY29uPmltYWdlPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDx1bCAqbmdJZj1cImFpRWRpdEF0dGFjaG1lbnRzLmxlbmd0aCA+IDBcIiBzdHlsZT1cImxpc3Qtc3R5bGU6IG5vbmU7IHBhZGRpbmc6IDA7IG1hcmdpbjogMCAwIDEycHhcIj5cbiAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGF0dCBvZiBhaUVkaXRBdHRhY2htZW50czsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNnB4OyBtYXJnaW4tYm90dG9tOiA0cHhcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBzdHlsZT1cImZvbnQtc2l6ZTogMThweFwiPmluc2VydF9kcml2ZV9maWxlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxzcGFuPnt7IGF0dC5maWxlTmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBzdHlsZT1cImZvbnQtc2l6ZTogMThweDsgY3Vyc29yOiBwb2ludGVyOyBjb2xvcjogIzk5OVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVBaUVkaXRBdHRhY2htZW50KGkpXCI+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG5cbiAgICAgICAgPCEtLSBBdXRvc2F2ZSAtLT5cbiAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJhaUVkaXRBdXRvc2F2ZVwiIFtkaXNhYmxlZF09XCJhaUVkaXRMb2FkaW5nXCIgY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgICAgICAge3sgaXNOZXdGb3JtID8gJ1NhbHZhIGF1dG9tYXRpY2FtZW50ZSBkb3BvIGxhIGNyZWF6aW9uZScgOiAnU2FsdmEgYXV0b21hdGljYW1lbnRlIGRvcG8gbGEgbW9kaWZpY2EnIH19XG4gICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cblxuICAgICAgICA8IS0tIENvbnRvIGFsbGEgcm92ZXNjaWEgbW9zdHJhdG8gbWVudHJlIEFJIGVsYWJvcmEgLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJhaUVkaXRMb2FkaW5nICYmIGFpRWRpdEVzdGltYXRlZFNlYyA+IDBcIiBjbGFzcz1cIm10LTMgbWItMVwiPlxuICAgICAgICAgIDwhLS0gRmFzZSBub3JtYWxlOiBjb3VudGRvd24gaW4gY29yc28gLS0+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhaUVkaXRJc092ZXJ0aW1lXCI+XG4gICAgICAgICAgICA8bWF0LXByb2dyZXNzLWJhciBtb2RlPVwiZGV0ZXJtaW5hdGVcIiBbdmFsdWVdPVwiKDEgLSBhaUVkaXRDb3VudGRvd24gLyBhaUVkaXRFc3RpbWF0ZWRTZWMpICogMTAwXCJcbiAgICAgICAgICAgICAgY29sb3I9XCJhY2NlbnRcIj5cbiAgICAgICAgICAgIDwvbWF0LXByb2dyZXNzLWJhcj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbi10b3A6IDRweFwiPlxuICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+XG4gICAgICAgICAgICAgICAgT3BlcmF6aW9uZSBpbiBjb3JzbyDigJQgdGVtcG8gc3RpbWF0byByaW1hbmVudGU6IDxiPnt7IGFpRWRpdENvdW50ZG93biB9fXM8L2I+XG4gICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8IS0tIEZhc2Ugb3ZlcnRpbWU6IGlsIHNlcnZlciBpbXBpZWdhIHBpw7kgZGVsIHByZXZpc3RvIC0tPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhaUVkaXRJc092ZXJ0aW1lXCI+XG4gICAgICAgICAgICA8bWF0LXByb2dyZXNzLWJhciBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiIGNvbG9yPVwid2FyblwiPjwvbWF0LXByb2dyZXNzLWJhcj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgZ2FwOiAxMnB4OyBtYXJnaW4tdG9wOiA2cHhcIj5cbiAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1tdXRlZFwiPlxuICAgICAgICAgICAgICAgIFNlbWJyYSBjaGUgY2kgdm9nbGlhIHBpw7kgZGVsIHByZXZpc3RvIOKAlCA8Yj4re3sgLWFpRWRpdENvdW50ZG93biB9fXM8L2I+XG4gICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjb2xvcj1cIndhcm5cIiAoY2xpY2spPVwiY2FuY2VsQWlFZGl0KClcIlxuICAgICAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAyNnB4OyBsaW5lLWhlaWdodDogMjZweDsgZm9udC1zaXplOiAxMnB4OyBwYWRkaW5nOiAwIDEwcHg7IG1pbi13aWR0aDogdW5zZXRcIj5cbiAgICAgICAgICAgICAgICBBbm51bGxhXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gU3RpbWEgY29zdG8gQUkgKGFnZ2lvcm5hdGEgaW4gdGVtcG8gcmVhbGUgYWwgdmFyaWFyZSBkZWwgcHJvbXB0LCBkZWwgbW9kZWxsbyBjaXRhdG8sXG4gICAgICAgICAgICAgZGVnbGkgYWxsZWdhdGkgZSBkZWwgbnVtZXJvIGRpIHNwbGl0IGlwb3RpenphdG8pIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWktY29zdC1wYW5lbCBtdC0zXCIgKm5nSWY9XCIhYWlFZGl0TG9hZGluZ1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1jb3N0LXBhbmVsLWljb25cIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5wYXltZW50czwvbWF0LWljb24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktY29zdC1wYW5lbC1ib2R5XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktY29zdC1wYW5lbC1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhaS1jb3N0LXBhbmVsLXRpdGxlXCI+Q29zdG8gc3RpbWF0byB1c28gQUk8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktY29zdC1wYW5lbC1tb2RlbFwiPnt7IGFpRWRpdERldGVjdGVkTW9kZWxMYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWlFZGl0U3BsaXRDb3VudCA8PSAxOyBlbHNlIGFpQ29zdFNwbGl0TGluZXNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLWNvc3QtcGFuZWwtbGluZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktY29zdC1wYW5lbC1saW5lLWxhYmVsXCI+UHJpbW8gdXNvPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktY29zdC1wYW5lbC1saW5lLXZhbHVlXCI+YWwgbWFzc2ltbyB7eyBmb3JtYXRBaUVkaXRDb3N0KGFpRWRpdENvc3RGaXJzdEV1cikgfX0g4oKsPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLWNvc3QtcGFuZWwtbGluZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktY29zdC1wYW5lbC1saW5lLWxhYmVsXCI+VXNpIHN1Y2Nlc3Npdmk8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhaS1jb3N0LXBhbmVsLWxpbmUtdmFsdWVcIj5hbCBtYXNzaW1vIHt7IGZvcm1hdEFpRWRpdENvc3QoYWlFZGl0Q29zdFN1YnNlcXVlbnRFdXIpIH19XG4gICAgICAgICAgICAgICAgICDigqw8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2FpQ29zdFNwbGl0TGluZXM+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1jb3N0LXBhbmVsLWxpbmVcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWNvc3QtcGFuZWwtbGluZS1sYWJlbFwiPnt7IGFpRWRpdFNwbGl0Q291bnQgfX0gcGFydGkgcGFyYWxsZWxlPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktY29zdC1wYW5lbC1saW5lLXZhbHVlXCI+YWwgbWFzc2ltbyB7eyBmb3JtYXRBaUVkaXRDb3N0KGFpRWRpdENvc3RGaXJzdEV1cikgfX0g4oKsPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLWNvc3QtcGFuZWwtaGludFwiPnt7IGFpRWRpdFNwbGl0V2FybVVwQXBwbGllc1xuICAgICAgICAgICAgICAgID8gJ0lsIHNlcnZlciBzY2FsZGEgbGEgY2FjaGUgcHJpbWEgZGVsbG8gc3BsaXQ6IHJpc3Bhcm1pbyBzdSAnICsgYWlFZGl0U3BsaXRDb3VudCArICcgY2hpYW1hdGUnXG4gICAgICAgICAgICAgICAgOiAnU3BsaXQgdHJvcHBvIHBpY2NvbG8gcGVyIGxhIGNhY2hlOiBuZXNzdW4gYmVuZWZpY2lvLCBwcmV6em8gcGllbm8gc3UgJyArIGFpRWRpdFNwbGl0Q291bnQgKyAnXG4gICAgICAgICAgICAgICAgY2hpYW1hdGUnIH19PC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFpLWNvc3QtcGFuZWwtc3BsaXRcIlxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cIk51bWVybyBkaSBzcGxpdCBpcG90aXp6YXRpIHBlciBsYSBzdGltYSAoMSA9IG5lc3N1bm8gc3BsaXQsIGFsdHJpbWVudGkgMy0xMjogaWwgc2VydmVyIG5vbiB1c2EgbWFpIDIgc3BsaXQpXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWNvc3QtcGFuZWwtc3BsaXQtbGFiZWxcIj5TcGxpdDwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1jb3N0LXBhbmVsLXNwbGl0LXN0ZXBwZXJcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhaS1jb3N0LXNwbGl0LWJ0blwiIFtkaXNhYmxlZF09XCJhaUVkaXRTcGxpdENvdW50IDw9IDFcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWNyZW1lbnRBaUVkaXRTcGxpdENvdW50KClcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+cmVtb3ZlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJhaS1jb3N0LXNwbGl0LWlucHV0XCIgWyhuZ01vZGVsKV09XCJhaUVkaXRTcGxpdENvdW50XCIgbWluPVwiMVwiIG1heD1cIjEyXCIgLz5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhaS1jb3N0LXNwbGl0LWJ0blwiIFtkaXNhYmxlZF09XCJhaUVkaXRTcGxpdENvdW50ID49IDEyXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiaW5jcmVtZW50QWlFZGl0U3BsaXRDb3VudCgpXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmFkZDwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuXG4gICAgICA8IS0tIFBhbm5lbGxvIHN0b3JpY28gcmljaGllc3RlIC0tPlxuICAgICAgPGRpdiAqbmdJZj1cInNob3dBaVByb21wdEhpc3RvcnkgJiYgYWlQcm9tcHRIaXN0b3J5Lmxlbmd0aCA+IDBcIiBjbGFzcz1cImFpLWhpc3RvcnktcGFuZWxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFpLWhpc3RvcnktcGFuZWwtdGl0bGVcIj5cbiAgICAgICAgICA8bWF0LWljb24gc3R5bGU9XCJmb250LXNpemU6IDE2cHg7IHdpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHhcIj5oaXN0b3J5PC9tYXQtaWNvbj5cbiAgICAgICAgICA8c3Bhbj5TdG9yaWNvIHJpY2hpZXN0ZTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhaS1oaXN0b3J5LWxpc3RcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwcm9tcHQgb2YgYWlQcm9tcHRIaXN0b3J5OyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJhaS1oaXN0b3J5LWl0ZW1cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktaGlzdG9yeS1pbmRleFwiPnt7IGkgKyAxIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhaS1oaXN0b3J5LXRleHRcIj57eyBwcm9tcHQgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8bWF0LWNhcmQtZm9vdGVyIGNsYXNzPVwicC0yIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCIgc3R5bGU9XCJnYXA6IDhweFwiPlxuICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cImFpRWRpdExvYWRpbmdcIiAoY2xpY2spPVwiY2xvc2VBaUVkaXREaWFsb2coKVwiPlxuICAgICAgICBBbm51bGxhXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCIhYWlFZGl0UHJvbXB0Py50cmltKCkgfHwgYWlFZGl0TG9hZGluZ1wiXG4gICAgICAgIChjbGljayk9XCJzZW5kQWlFZGl0KClcIj5cbiAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiYWlFZGl0TG9hZGluZ1wiIGRpYW1ldGVyPVwiMThcIlxuICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrOyBtYXJnaW4tcmlnaHQ6IDZweDsgdmVydGljYWwtYWxpZ246IG1pZGRsZVwiPjwvbWF0LXNwaW5uZXI+XG4gICAgICAgIDxzcGFuPnt7IGFpRWRpdExvYWRpbmcgPyAnRWxhYm9yYXppb25lLi4uJyA6IChpc05ld0Zvcm0gPyAnQ3JlYSBjb24gQUknIDogJ01vZGlmaWNhIGNvbiBBSScpIH19PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9tYXQtY2FyZC1mb290ZXI+XG4gIDwvbWF0LWNhcmQ+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIFZJU1VBTCBFRElUT1Ig4oCUIFRvb2x0aXAgYXppb25pIGNhbXBvIC0tPlxuPG5nLXRlbXBsYXRlICNkaWFsb2dWZVRvb2x0aXA+XG4gIDxkaXYgY2xhc3M9XCJ2ZS10b29sdGlwLXBhbmVsXCI+XG4gICAgPGRpdiBjbGFzcz1cInZlLXRvb2x0aXAtaGVhZGVyXCI+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJ2ZS10b29sdGlwLWljb25cIj5lZGl0X3NxdWFyZTwvbWF0LWljb24+XG4gICAgICA8c3BhbiBjbGFzcz1cInZlLXRvb2x0aXAtdGl0bGVcIj57eyB2ZVNlbGVjdGVkRmllbGQ/LkRlc2NyaXB0aW9uIH19PC9zcGFuPlxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImRpYWxvZ1ZlVG9vbHRpcFJlZj8uY2xvc2UoKVwiPlxuICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXZlU2hvd0dyYXBoaWNJbnB1dFwiPlxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJ2ZUVkaXRGaWVsZCgpXCI+XG4gICAgICAgIDxtYXQtaWNvbj5zZXR0aW5nczwvbWF0LWljb24+XG4gICAgICAgIE1vZGlmaWNhIGNhbXBvXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAqbmdJZj1cImVuZFBvaW50Q29uZmlndXJhdGlvbj8uRm9ybXM/LlNwZWVjaFRvRm9ybUVkaXRFbmRQb2ludFwiIChjbGljayk9XCJ2ZUFpRWRpdCgpXCI+XG4gICAgICAgIDxtYXQtaWNvbj5hdXRvX2ZpeF9oaWdoPC9tYXQtaWNvbj5cbiAgICAgICAgTW9kaWZpY2EgY29uIElBXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAqbmdJZj1cImVuZFBvaW50Q29uZmlndXJhdGlvbj8uRm9ybXM/LlNwZWVjaFRvRm9ybUVkaXRFbmRQb2ludFwiXG4gICAgICAgIChjbGljayk9XCJ2ZVNob3dHcmFwaGljSW5wdXQgPSB0cnVlXCI+XG4gICAgICAgIDxtYXQtaWNvbj5wYWxldHRlPC9tYXQtaWNvbj5cbiAgICAgICAgU3VnZ2VyaXNjaSBHcmFmaWNhXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwidmVPcGVuUmVvcmRlcigpXCI+XG4gICAgICAgIDxtYXQtaWNvbj5kcmFnX2luZGljYXRvcjwvbWF0LWljb24+XG4gICAgICAgIFJpb3JkaW5hXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwidmVTdGFydFN3YXAoKVwiPlxuICAgICAgICA8bWF0LWljb24+c3dhcF9ob3JpejwvbWF0LWljb24+XG4gICAgICAgIFNjYW1iaWFcbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInZlRGVsZXRlRmllbGQoKVwiIHN0eWxlPVwiY29sb3I6ICNlNTM5MzU7XCI+XG4gICAgICAgIDxtYXQtaWNvbiBzdHlsZT1cImNvbG9yOiAjZTUzOTM1O1wiPmRlbGV0ZTwvbWF0LWljb24+XG4gICAgICAgIEVsaW1pbmEgY2FtcG9cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGRpdiBjbGFzcz1cInZlLXRvb2x0aXAtZ3JhcGhpY1wiICpuZ0lmPVwidmVTaG93R3JhcGhpY0lucHV0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidmUtdG9vbHRpcC1ncmFwaGljLWhlYWRlclwiPlxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwidmVTaG93R3JhcGhpY0lucHV0ID0gZmFsc2U7IHZlQXBwbHlUb0FsbE9mVHlwZSA9IGZhbHNlXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmFycm93X2JhY2s8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPHNwYW4gc3R5bGU9XCJmbGV4OjFcIj5HcmFmaWNhIHBlciBcInt7IHZlU2VsZWN0ZWRGaWVsZD8uTGFiZWwgfX1cIjwvc3Bhbj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4taGludC1yYW5kb21pemVcIiAoY2xpY2spPVwicmFuZG9taXplVmVIaW50KClcIiBtYXRUb29sdGlwPVwiU3VnZ2VyaW1lbnRvIGNhc3VhbGVcIj5cbiAgICAgICAgICA8bWF0LWljb24+dGlwc19hbmRfdXBkYXRlczwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgIDxtYXQtbGFiZWw+U3VnZ2VyaW1lbnRvIGdyYWZpY288L21hdC1sYWJlbD5cbiAgICAgICAgPHRleHRhcmVhIG1hdElucHV0IFsobmdNb2RlbCldPVwidmVHcmFwaGljSGludFwiIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIiByb3dzPVwiM1wiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJlcy4gYm9yZG8gYmx1LCBzZm9uZG8gc2VtaS10cmFzcGFyZW50ZSwgZXRpY2hldHRhIGluIGdyYXNzZXR0by4uLlwiPjwvdGV4dGFyZWE+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPGRpdiBjbGFzcz1cInZlLWFwcGx5LWFsbC1yb3dcIj5cbiAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJ2ZUFwcGx5VG9BbGxPZlR5cGVcIiBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCIgY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgICAgICAgQXBwbGljYSBhIHR1dHRpIGkgPHN0cm9uZz57eyB2ZVNlbGVjdGVkRmllbGRUeXBlTmFtZSB9fTwvc3Ryb25nPlxuICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2ZS10b29sdGlwLWdyYXBoaWMtYWN0aW9uc1wiPlxuICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cInZlU2hvd0dyYXBoaWNJbnB1dCA9IGZhbHNlOyB2ZUFwcGx5VG9BbGxPZlR5cGUgPSBmYWxzZVwiPkFubnVsbGE8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwidmVTZW5kR3JhcGhpYygpXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmF1dG9fZml4X2hpZ2g8L21hdC1pY29uPlxuICAgICAgICAgIEludmlhXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBWSVNVQUwgRURJVE9SIOKAlCBSaW9yZGluYSBjYW1waSAtLT5cbjxuZy10ZW1wbGF0ZSAjZGlhbG9nVmVSZW9yZGVyPlxuICA8bWF0LWNhcmQgY2xhc3M9XCJ2ZS1yZW9yZGVyLWNhcmRcIj5cbiAgICA8ZGl2IGNsYXNzPVwidmUtcmVvcmRlci1oZWFkZXJcIj5cbiAgICAgIDxtYXQtaWNvbj5kcmFnX2luZGljYXRvcjwvbWF0LWljb24+XG4gICAgICA8c3Bhbj5SaW9yZGluYSBjYW1waTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8bWF0LWNhcmQtY29udGVudD5cbiAgICAgIDxkaXYgY2RrRHJvcExpc3QgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvblZlRHJhZ0Ryb3BSZW9yZGVyKCRldmVudClcIiBjbGFzcz1cInZlLXJlb3JkZXItbGlzdFwiPlxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBmaWVsZCBvZiB2ZVJlb3JkZXJGaWVsZHNcIiBjZGtEcmFnIGNsYXNzPVwidmUtcmVvcmRlci1pdGVtXCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNka0RyYWdIYW5kbGUgY2xhc3M9XCJ2ZS1kcmFnLWhhbmRsZVwiPmRyYWdfaW5kaWNhdG9yPC9tYXQtaWNvbj5cbiAgICAgICAgICA8c3Bhbj57eyBmaWVsZC5EZXNjcmlwdGlvbiB9fTwvc3Bhbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidmUtZHJhZy1wbGFjZWhvbGRlclwiICpjZGtEcmFnUGxhY2Vob2xkZXI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgIDxtYXQtY2FyZC1mb290ZXIgY2xhc3M9XCJwLTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIiBzdHlsZT1cImdhcDogOHB4XCI+XG4gICAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cImRpYWxvZ1ZlUmVvcmRlclJlZj8uY2xvc2UoKVwiPkFubnVsbGE8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInZlQXBwbHlSZW9yZGVyKClcIj5PSzwvYnV0dG9uPlxuICAgIDwvbWF0LWNhcmQtZm9vdGVyPlxuICA8L21hdC1jYXJkPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBESUFMT0cgQ09OVEVTVFVBTElaWkFaSU9ORSBEQkdFVFRFUiAtLT5cbjxuZy10ZW1wbGF0ZSAjZGlhbG9nQ29udGVzdHVhbGl6YXRpb24+XG4gIDxtYXQtY2FyZCBzdHlsZT1cIm1pbi13aWR0aDogNDIwcHhcIj5cbiAgICA8bWF0LWNhcmQtaGVhZGVyIGNsYXNzPVwicC0yXCI+XG4gICAgICA8bWF0LWNhcmQtdGl0bGU+Q29udGVzdHVhbGl6emF6aW9uZSBkZWwgREJHZXR0ZXI8L21hdC1jYXJkLXRpdGxlPlxuICAgIDwvbWF0LWNhcmQtaGVhZGVyPlxuICAgIDxtYXQtY2FyZC1jb250ZW50IGNsYXNzPVwicC0zXCI+XG4gICAgICA8dG13LXNlbGVjdCBbYXJyYXlEYXRhXT1cImNvbnRlc3R1YWxpemF0aW9uXCIgWyhuZ01vZGVsSW5wdXQpXT1cInNlbGVjdGVkQ29udGVzdHVhbGl6YXRpb25cIlxuICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCInZW50aXR5VGFibGVOYW1lJ1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ2VudGl0eVRhYmxlTmFtZSdcIlxuICAgICAgICAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uQ29udGVzdHVhbGl6YXRpb25TZWxlY3QoKVwiIFtwbGFjZWhvbGRlcl09XCInQ29udGVzdHVhbGl6emF6aW9uZSBkZWwgREJHZXR0ZXInXCJcbiAgICAgICAgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCI+PC90bXctc2VsZWN0PlxuICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkQ29udGVzdHVhbGl6YXRpb24gIT0gbnVsbFwiIGNsYXNzPVwibXQtMlwiPlxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkQ29udGVzdHVhbGl6YXRpb25WYWx1ZVwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJvbkNvbnRlc3R1YWxpemF0aW9uU2VsZWN0VmFsdWUoKVwiPlxuICAgICAgPC9kaXY+XG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgIDxtYXQtY2FyZC1mb290ZXIgY2xhc3M9XCJwLTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIiBzdHlsZT1cImdhcDogOHB4XCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXJcIlxuICAgICAgICAoY2xpY2spPVwiYXBwbHlDb250ZXN0dWFsaXphdGlvbihudWxsKTsgY2xvc2VDb250ZXN0dWFsaXphdGlvbkRpYWxvZygpXCI+UmltdW92aTwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgIChjbGljayk9XCJhcHBseUNvbnRlc3R1YWxpemF0aW9uKGNvbnRlc3R1YWxpemF0aW9uKTsgY2xvc2VDb250ZXN0dWFsaXphdGlvbkRpYWxvZygpXCI+QXBwbGljYTwvYnV0dG9uPlxuICAgIDwvbWF0LWNhcmQtZm9vdGVyPlxuICA8L21hdC1jYXJkPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBNT0RBTEUgU1RPUklDTyBQUk9NUFQgQUkgLS0+XG48bmctdGVtcGxhdGUgI2RpYWxvZ0FpSGlzdG9yeT5cbiAgPGRpdiBjbGFzcz1cImFpLWhpc3RvcnktZGlhbG9nXCI+XG4gICAgPGRpdiBjbGFzcz1cImFpLWRpYWxvZy1oZWFkZXJcIj5cbiAgICAgIDxtYXQtaWNvbj5oaXN0b3J5PC9tYXQtaWNvbj5cbiAgICAgIDxzcGFuPlN0b3JpY28gcmljaGllc3RlIEFJPC9zcGFuPlxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYWktaGlzdG9yeS10b2dnbGUtYnRuXCIgKGNsaWNrKT1cImRpYWxvZ0FpSGlzdG9yeVJlZj8uY2xvc2UoKVwiXG4gICAgICAgIG1hdFRvb2x0aXA9XCJDaGl1ZGlcIj5cbiAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJhaS1oaXN0b3J5LWRpYWxvZy1ib2R5XCI+XG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwcm9tcHQgb2YgYWlQcm9tcHRIaXN0b3J5OyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJhaS1oaXN0b3J5LWRpYWxvZy1pdGVtXCJcbiAgICAgICAgW2NsYXNzLmFpLWhpc3RvcnktZGlhbG9nLWl0ZW0tLWxhc3RdPVwiaSA9PT0gYWlQcm9tcHRIaXN0b3J5Lmxlbmd0aCAtIDFcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFpLWhpc3RvcnktZGlhbG9nLWJhZGdlXCI+e3sgaSArIDEgfX08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFpLWhpc3RvcnktZGlhbG9nLXByb21wdFwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktaGlzdG9yeS1kaWFsb2ctcHJvbXB0LWxhYmVsXCIgKm5nSWY9XCJpID09PSBhaVByb21wdEhpc3RvcnkubGVuZ3RoIC0gMVwiPlBpw7kgcmVjZW50ZTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWhpc3RvcnktZGlhbG9nLXByb21wdC10ZXh0XCI+e3sgcHJvbXB0IH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJhaS1oaXN0b3J5LWRpYWxvZy1mb290ZXJcIj5cbiAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJkaWFsb2dBaUhpc3RvcnlSZWY/LmNsb3NlKClcIj5DaGl1ZGk8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIEFJIERhdGFHZXR0ZXI6IGNhcmljYW1lbnRvIHNpbGVudCBkZWwgUXVlcnlFZGl0b3IgcGVyIHBvcG9sYXJlIERhdGFHZXR0ZXJWYWx1ZSB2aWEgcHJvbXB0IC0tPlxuPGRpdiAqbmdJZj1cImFpRGF0YUdldHRlckxvYWRpbmdcIiBzdHlsZT1cImRpc3BsYXk6bm9uZTsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjA7IGhlaWdodDowOyBvdmVyZmxvdzpoaWRkZW5cIlxuICBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgPG5nLXRlbXBsYXRlIFthcHBEeW5hbWljTG9hZGVyXSBbZGF0YV09XCJRdWVyeUVkaXRvckNvbXBvbmVudFwiIChvdXQpPVwib25BaURhdGFHZXR0ZXJPdXQoJGV2ZW50KVwiPjwvbmctdGVtcGxhdGU+XG48L2Rpdj4iXX0=
|
|
2537
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXFwLWR5bmFtaWMtbW9kdWxlLWNvbmZpZ3VyYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL2V4cG9ydGVkL2VxcC1keW5hbWljLW1vZHVsZS1jb25maWd1cmF0b3IvZXFwLWR5bmFtaWMtbW9kdWxlLWNvbmZpZ3VyYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcXAtZHluYW1pYy1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL2V4cG9ydGVkL2VxcC1keW5hbWljLW1vZHVsZS1jb25maWd1cmF0b3IvZXFwLWR5bmFtaWMtbW9kdWxlLWNvbmZpZ3VyYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpREFBaUQ7QUFDakQsT0FBTyxFQUdMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFHTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLGtCQUFrQixFQUVsQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0wsaUJBQWlCLEVBR2pCLFVBQVUsR0FDWCxNQUFNLFdBQVcsQ0FBQztBQUVuQixPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsSSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDeEQsT0FBTyxFQUdMLGFBQWEsR0FDZCxNQUFNLDZDQUE2QyxDQUFDO0FBQ3JELE9BQU8sRUFDTCxjQUFjLEVBQ2QsSUFBSSxFQUVKLGtCQUFrQixFQUNsQixZQUFZLEdBQ2IsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUs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LFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNFLGVBQWU7c0JBQTlELFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaW1wb3J0IHsgVGhyb3dTdG10IH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xyXG5pbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1xyXG4gIFVudHlwZWRGb3JtQnVpbGRlcixcclxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXHJcbiAgVW50eXBlZEZvcm1Hcm91cCxcclxuICBWYWxpZGF0b3JzLFxyXG59IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcclxuaW1wb3J0IHtcclxuICBDZWxsQWxpZ25tZW50RW51bSxcclxuICBDb25maWdDb2x1bW4sXHJcbiAgVG13VGFibGVDb21wb25lbnQsXHJcbiAgVHlwZUNvbHVtbixcclxufSBmcm9tIFwidG13LXRhYmxlXCI7XHJcbmltcG9ydCB7IE51bWVyaWNGaWVsZCB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZmllbGRzL251bWVyaWNGaWVsZC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBCYXNlRmllbGQsIERhdGFHZXR0ZXIsIERhdGFHZXR0ZXJUeXBlRW51bSwgRmllbGRJbnZpc2liaWxpdHlFbnVtLCBGaWVsZFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Jhc2VGaWVsZC5tb2RlbCc7XHJcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2NvbnRleHQubW9kZWxcIjtcclxuaW1wb3J0IHtcclxuICBFbmRQb2ludENvbmZpZ3VyYXRpb24sXHJcbiAgRW5kUG9pbnREYXRhUGFyYW1zLFxyXG4gIFBhcmFtVHlwZUVudW0sXHJcbn0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9lbmRQb2ludENvbmZpZ3VyYXRpb24ubW9kZWxcIjtcclxuaW1wb3J0IHtcclxuICBBY3Rpb25PblJlY29yZCxcclxuICBGb3JtLFxyXG4gIEZvcm1GaWVsZEdyb3VwLFxyXG4gIEZvcm1TY2FsYXJUeXBlRW51bSxcclxuICBGb3JtVHlwZUVudW0sXHJcbn0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9mb3JtLm1vZGVsXCI7XHJcbmltcG9ydCB7IEFycmF5VmFsaWRhdG9ycyB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9jdXN0b20tZm9ybS12YWxpZGF0b3JzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvZXFwLWR5bmFtaWMtbW9kdWxlLWRpYWxvZy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFV0aWxpdHlIZWxwZXJTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3V0aWxpdHlIZWxwZXIuc2VydmljZXNcIjtcclxuaW1wb3J0IHsgRHluYW1pY01vZHVsZUNvbXBpbGVDb25maWcgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2R5bmFtaWNNb2R1bGVDb21waWxlQ29uZmlnLm1vZGVsXCI7XHJcbmltcG9ydCB7IER5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JDb25maWcgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2R5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JDb25maWcubW9kZWxcIjtcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlU3R5bGUgfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xyXG5pbXBvcnQgeyBHbG9iYWxTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL2dsb2JhbC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IER5bmFtaWNMb2FkZXJEaXJlY3RpdmVEYXRhLCBldmVudE91dCB9IGZyb20gXCIuLi8uLi8uLi9kaXJlY3RpdmVzL2R5bmFtaWMtbG9hZGVyL2R5bmFtaWMtbG9hZGVyLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQgeyBUcmlnZ2VyLCBBY3Rpb25CdXR0b24sIEFjdGlvbkZsYWdFbnVtLCBGaXJlVHJpZ2dlciB9IGZyb20gJy4uLy4uLy4uL21vZGVscy90cmlnZ2VyLm1vZGVsJztcclxuaW1wb3J0IHsgQ29udGVzdHVhbGl6YXRpb24gfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2dldHRlci5tb2RlbFwiO1xyXG5pbXBvcnQgeyBJbWFnZVNlbGVjdG9yRmllbGQgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9pbWFnZVNlbGVjdG9yRmllbGQubW9kZWxcIjtcclxuaW1wb3J0IHsgRmllbGRFeHRyYUNvbmZpZyB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZmllbGRFeHRyYUNvbmZpZy5tb2RlbFwiO1xyXG5pbXBvcnQgeyBBdHRhY2htZW50VHlwZSwgVG13QXR0YWNobWVudERUTyB9IGZyb20gXCJ0bXctYXR0YWNobWVudHNcIjtcclxuaW1wb3J0IHsgRHluQXR0YWNobWVudCB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZHluQXR0YWNobWVudFwiO1xyXG5pbXBvcnQgeyBDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IGluamVjdEdvb2dsZUZvbnRzRnJvbUZvcm0gfSBmcm9tICcuLi8uLi8uLi91dGlscy9nb29nbGUtZm9udHMtaW5qZWN0b3InO1xyXG5pbXBvcnQgeyBRdWVyeUVkaXRvck1vZGVFbnVtIH0gZnJvbSBcIi4uLy4uL3ByaXZhdGUvZGJnZXR0ZXIvZGJnZXR0ZXIuY29tcG9uZW50XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJlcXAtZHluYW1pYy1tb2R1bGUtY29uZmlndXJhdG9yXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9lcXAtZHluYW1pYy1tb2R1bGUtY29uZmlndXJhdG9yLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL2VxcC1keW5hbWljLW1vZHVsZS1jb25maWd1cmF0b3IuY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFcXBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBJbnB1dCgpIGRlYnVnTW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBmaWVsZHNFeHRyYUNvbmZpZzogQXJyYXk8RmllbGRFeHRyYUNvbmZpZz47XHJcbiAgQElucHV0KCkgY29uZmlndXJhdGlvbnM6IER5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JDb25maWcgPVxyXG4gICAgbmV3IER5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JDb25maWcoKTtcclxuICBASW5wdXQoKSBmb3JtSUQ6IHN0cmluZyA9IG51bGw7XHJcbiAgQElucHV0KCkgdmlld01vZGU6IHN0cmluZyA9IFwiYWRkT3JFZGl0XCI7IC8vIEV4cG9ydFxyXG4gIEBJbnB1dCgpIFF1ZXJ5RWRpdG9yQ29tcG9uZW50OiBEeW5hbWljTG9hZGVyRGlyZWN0aXZlRGF0YTsgLy8gTCdpbnRlcm8gY29tcG9uZW50ZSBxdWVyeSBFZGl0b3JcclxuICBASW5wdXQoKSB0cmlnZ2VyczogYW55O1xyXG4gIEBJbnB1dCgpIGFjdGlvbkJ1dHRvbnM6IGFueTtcclxuICBASW5wdXQoKSBjb250ZXN0dWFsaXphdGlvbjogQXJyYXk8Q29udGVzdHVhbGl6YXRpb24+O1xyXG4gIEBJbnB1dCgpIGZvcm11bGFPYmplY3Q6IGFueTsgLy8gRXNlbXBpbzoge2N1cnJvbGU6IHJvbGUsIHVzZXI6IHVzZXIsIG1lZGljYWw6IG1lZGljYWxleGFtaW5hdGlvbn1cclxuICBASW5wdXQoKSBjb25maWd1cmF0b3JUaGVtZTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGNvbmZpZ3VyYXRvclRoZW1lQ3NzOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQE91dHB1dCgpIGZpcmVUcmlnZ2VyOiBFdmVudEVtaXR0ZXI8RmlyZVRyaWdnZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxGaXJlVHJpZ2dlcj4oKTtcclxuXHJcbiAgbG9hZGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLyoqXHJcbiAgICogVG9rZW4gZGEgdXNhcmUgbmVnbGkgZW5kcG9pbnQgZGEgY2hpYW1hcmUgcGVyIHJlY3VwZXJhcmUgbyBzYWx2YXJlIGkgcmVjb3JkLlxyXG4gICAqIFVzYXRvIHNvbG8gc2UgdmllbmUgcG9wb2xhdGEgbGEgcHJvcHJpZXTDoCBcImJhc2VTZXJ2ZXJVcmxcIi5cclxuICAgKi9cclxuICB1c2VyVG9rZW46IHN0cmluZyA9IG51bGw7XHJcbiAgLyoqXHJcbiAgICogQ29uZmlndXJhemlvbmUgZGVnbGkgZW5kcG9pbnQgZGEgY2hpYW1hcmUgcGVyIHJlY3VwZXJhcmUgbyBzYWx2YXJlIGkgZGF0aS5cclxuICAgKiBQdcOyIGVzc2VyZSBkZWZpbml0YSBkYWxsJ3V0ZW50ZSBvcHB1cmUgbGFzY2lhdGEgbnVsbCwgdmllbmUgcG9wb2xhdGEgY29uIGRlaVxyXG4gICAqIHZhbG9yaSBkaSBkZWZhdWx0IHNlIHZpZW5lIHZhbG9yaXp6YXRhIGxhIHByb3ByaWV0w6AgXCJiYXNlU2VydmVyVXJsXCIgYWx0cmltZW50aVxyXG4gICAqIHZpZW5lIGxhc2NpYXRhIG51bGwgZSBub24gdmllbmUgZXNlZ3VpdGEgbmVzc3VuYSBjaGlhbWF0YSBhbCBzZXJ2ZXIuXHJcbiAgICovXHJcbiAgZW5kUG9pbnRDb25maWd1cmF0aW9uOiBFbmRQb2ludENvbmZpZ3VyYXRpb24gPSBudWxsO1xyXG4gIC8qKlxyXG4gICAqIFVybCBkZWwgc2VydmVyIGRhIGNoaWFtYXJlIHBlciByZWN1ZXJhcmUsIHNhbHZhcmUgbyBlbGltaW5hcmUgaSByZWNvcmQuXHJcbiAgICogVXNhdG8gcGVyIGNyZWFyZSBsYSBjb25maWd1cmF6aW9uZSBkaSBkZWZhdWx0IGRlZ2xpIGVuZHBvaW50IGRhIGNoaWFtYXJlLlxyXG4gICAqL1xyXG4gIGJhc2VTZXJ2ZXJVcmw6IHN0cmluZyA9IG51bGw7XHJcbiAgY29udGV4dDogQ29udGV4dCA9IG5ldyBDb250ZXh0KCk7XHJcblxyXG4gIC8qIGV4cG9ydCB2YXJpYWJsZXMgKi9cclxuICBkb3dubG9hZE5hbWU6IHN0cmluZztcclxuICBkb3dubG9hZEpzb25IcmVmOiBhbnk7XHJcbiAgc3RyaW5naWZpZWRGb3JtOiBzdHJpbmc7XHJcblxyXG4gIC8qIGltcG9ydCB2YXJpYWJsZXMgKi9cclxuICBpbXBvcnRlZE1vZHVsZTogc3RyaW5nID0gbnVsbDsgLy8ganNvbiBvYmplY3RcclxuICBkaWFsb2dJbXBvcnRSZWY6IE1hdERpYWxvZ1JlZjxUZW1wbGF0ZVJlZjxhbnk+PjtcclxuICBAVmlld0NoaWxkKFwiZGlhbG9nSW1wb3J0XCIsIHsgc3RhdGljOiB0cnVlIH0pIGRpYWxvZ0ltcG9ydDogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgZm9ybTogRm9ybSA9IG5ldyBGb3JtKCk7XHJcbiAgYmFja3VwRm9ybTogRm9ybSA9IG51bGw7XHJcbiAgc2F2ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBvcmdhSUQ6IHN0cmluZyA9IG51bGw7XHJcbiAgVXNlcklEOiBudW1iZXIgPSAzNjtcclxuICBpbm5lckZvcm1NYW5hZ21lbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpbm5lckZvcm1SZWY6IE1hdERpYWxvZ1JlZjxUZW1wbGF0ZVJlZjxhbnk+PjtcclxuXHJcbiAgLyogQ09ORklHVVJBWklPTkUgUEVSIFZJU1VBTElaWkFaSU9ORSBGT1JNIENSRUFUQSAqL1xyXG4gIHZpZXdDb25maWc6IER5bmFtaWNNb2R1bGVDb21waWxlQ29uZmlnID0gbmV3IER5bmFtaWNNb2R1bGVDb21waWxlQ29uZmlnKFxyXG4gICAgdHJ1ZSxcclxuICAgIGZhbHNlLFxyXG4gICAgZmFsc2UsXHJcbiAgICBcIjBcIlxyXG4gICk7XHJcblxyXG4gIGZvcm1Gb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXAgPSBudWxsO1xyXG4gIGZvcm1Db21wbGV0ZWQgPSBmYWxzZTtcclxuICBwcmV2aWV3Rm9ybTogRm9ybTtcclxuICBmb3JtRmllbGRHcm91cE5hbWU6IHN0cmluZztcclxuXHJcbiAgYWN0aW9uQXV0b2NvbXBsZXRlT3B0aW9uczogQXJyYXk8eyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+O1xyXG5cclxuICAvLyNyZWdpb24gRW51bWVyYXRvcmkgdXNhdGkgbmVsbCdodG1sXHJcbiAgRm9ybVR5cGVFbnVtID0gRm9ybVR5cGVFbnVtO1xyXG4gIEZvcm1TY2FsYXJUeXBlRW51bSA9IEZvcm1TY2FsYXJUeXBlRW51bTtcclxuICBBdHRhY2htZW50VHlwZSA9IEF0dGFjaG1lbnRUeXBlO1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gR2VzdGlvbmUgc2ZvbmRvIGZvcm1cclxuICBnZXQgcHJldmlld0JnU3R5bGUoKTogU2FmZVN0eWxlIHwgbnVsbCB7XHJcbiAgICBpZiAoIXRoaXMuZm9ybT8uQmdJbWFnZUJhc2U2NCkgcmV0dXJuIG51bGw7XHJcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKFtcclxuICAgICAgYGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LCR7dGhpcy5mb3JtLkJnSW1hZ2VCYXNlNjR9JylgLFxyXG4gICAgICAnYmFja2dyb3VuZC1zaXplOiBjb3ZlcicsXHJcbiAgICAgICdiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXInLFxyXG4gICAgICAnYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdCcsXHJcbiAgICBdLmpvaW4oJzsgJykpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHByZXZpZXdUaGVtZVN0eWxlKCk6IFNhZmVTdHlsZSB8IG51bGwge1xyXG4gICAgaWYgKCF0aGlzLmZvcm0/LlRoZW1lQ1NTKSByZXR1cm4gbnVsbDtcclxuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUodGhpcy5mb3JtLlRoZW1lQ1NTLnRyaW0oKS5yZXBsYWNlKC87JC8sICcnKSk7XHJcbiAgfVxyXG5cclxuICBnZXQgYmdBdHRhY2htZW50TGlzdCgpOiBUbXdBdHRhY2htZW50RFRPW10ge1xyXG4gICAgaWYgKCF0aGlzLmZvcm0/LkJnSW1hZ2VCYXNlNjQpIHJldHVybiBbXTtcclxuICAgIGNvbnN0IGF0dCA9IG5ldyBEeW5BdHRhY2htZW50KCk7XHJcbiAgICBhdHQuSUQgPSAwO1xyXG4gICAgYXR0LkZpbGVEYXRhQmFzZTY0ID0gdGhpcy5mb3JtLkJnSW1hZ2VCYXNlNjQ7XHJcbiAgICBhdHQuSXNJbWFnZSA9IHRydWU7XHJcbiAgICBhdHQuRmlsZUNvbnRlbnRUeXBlID0gJ2ltYWdlL3BuZyc7XHJcbiAgICByZXR1cm4gW2F0dF07XHJcbiAgfVxyXG5cclxuICBvbkJnSW1hZ2VDaGFuZ2UoYXR0YWNobWVudHM6IFRtd0F0dGFjaG1lbnREVE9bXSk6IHZvaWQge1xyXG4gICAgY29uc3QgdmFsdWUgPSBhdHRhY2htZW50cz8ubGVuZ3RoID4gMCA/IGF0dGFjaG1lbnRzWzBdLkZpbGVEYXRhQmFzZTY0IDogbnVsbDtcclxuICAgIHRoaXMuZm9ybS5CZ0ltYWdlQmFzZTY0ID0gdmFsdWU7XHJcbiAgICBpZiAodGhpcy5wcmV2aWV3Rm9ybSkgdGhpcy5wcmV2aWV3Rm9ybS5CZ0ltYWdlQmFzZTY0ID0gdmFsdWU7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBvbkJnSW1hZ2VEZWxldGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm0uQmdJbWFnZUJhc2U2NCA9IG51bGw7XHJcbiAgICBpZiAodGhpcy5wcmV2aWV3Rm9ybSkgdGhpcy5wcmV2aWV3Rm9ybS5CZ0ltYWdlQmFzZTY0ID0gbnVsbDtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEZJRUxEX1RZUEVfTEFCRUxTOiBSZWNvcmQ8bnVtYmVyLCBzdHJpbmc+ID0ge1xyXG4gICAgMTogJ0NhbXBvIGRpIHRlc3RvJyxcclxuICAgIDI6ICdUZXN0byBsdW5nbycsXHJcbiAgICAzOiAnQm9vbGVhbm8nLFxyXG4gICAgNDogJ0RhdGEnLFxyXG4gICAgNTogJ051bWVyaWNvJyxcclxuICAgIDY6ICdBbGxlZ2F0bycsXHJcbiAgICA3OiAnSW1tYWdpbmUnLFxyXG4gICAgODogJ0VsZW5jbycsXHJcbiAgICAxMTogJ1NlbGV0dG9yZSBpbW1hZ2luaScsXHJcbiAgICAxMjogJ0V0aWNoZXR0YScsXHJcbiAgICAxMzogJ0ltbWFnaW5lIGNvbiBtYXJjYXRvcmknLFxyXG4gICAgMTQ6ICdCb3R0b25lIGF6aW9uZScsXHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRklFTERfVFlQRV9DU1NfQ0xBU1M6IFJlY29yZDxudW1iZXIsIHN0cmluZz4gPSB7XHJcbiAgICAxOiAnVGV4dEZpZWxkU3R5bGVDU1MnLFxyXG4gICAgMjogJ1RleHRhcmVhRmllbGRTdHlsZUNTUycsXHJcbiAgICAzOiAnQm9vbGVhbkZpZWxkU3R5bGVDU1MnLFxyXG4gICAgNDogJ0RhdGVGaWVsZFN0eWxlQ1NTJyxcclxuICAgIDU6ICdOdW1lcmljRmllbGRTdHlsZUNTUycsXHJcbiAgICA2OiAnQXR0YWNobWVudEZpZWxkU3R5bGVDU1MnLFxyXG4gICAgNzogJ0ltYWdlRmllbGRTdHlsZUNTUycsXHJcbiAgICA4OiAnTGlzdFZhbHVlRmllbGRTdHlsZUNTUycsXHJcbiAgICAxMTogJ0ltYWdlU2VsZWN0b3JGaWVsZFN0eWxlQ1NTJyxcclxuICAgIDEyOiAnTGFiZWxGaWVsZFN0eWxlQ1NTJyxcclxuICAgIDEzOiAnSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkU3R5bGVDU1MnLFxyXG4gICAgMTQ6ICdBY3Rpb25CdXR0b25GaWVsZFN0eWxlQ1NTJyxcclxuICB9O1xyXG5cclxuICAvLyBNYXBwYSBhbGlhcyBtb2RlbGxvIOKGkiBJRCBDbGF1ZGUgcGnDuSByZWNlbnRlOyBsJ29yZGluZSBkaSBjaGVjayDDqCByaWxldmFudGUgKEZhYmxlIGUgT3B1cyBwcmltYSBkaSBTb25uZXQvSGFpa3UpXHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgTU9ERUxfTUFQOiBBcnJheTx7IHBhdHRlcm46IFJlZ0V4cDsgaWQ6IHN0cmluZyB9PiA9IFtcclxuICAgIHsgcGF0dGVybjogL1xcYig/Oig/OnVzYXx1c2V8Y29ufHVzaW5nKVxccyspP2ZhYmxlXFxiL2dpLCBpZDogJ2NsYXVkZS1mYWJsZS01JyB9LFxyXG4gICAgeyBwYXR0ZXJuOiAvXFxiKD86KD86dXNhfHVzZXxjb258dXNpbmcpXFxzKyk/b3B1c1xcYi9naSwgaWQ6ICdjbGF1ZGUtb3B1cy00LTcnIH0sXHJcbiAgICB7IHBhdHRlcm46IC9cXGIoPzooPzp1c2F8dXNlfGNvbnx1c2luZylcXHMrKT9zb25uZXRcXGIvZ2ksIGlkOiAnY2xhdWRlLXNvbm5ldC00LTYnIH0sXHJcbiAgICB7IHBhdHRlcm46IC9cXGIoPzooPzp1c2F8dXNlfGNvbnx1c2luZylcXHMrKT9oYWlrdVxcYi9naSwgaWQ6ICdjbGF1ZGUtaGFpa3UtNC01LTIwMjUxMDAxJyB9LFxyXG4gIF07XHJcblxyXG4gIC8vIFByZXp6aSB1ZmZpY2lhbGkgQW50aHJvcGljIFVTRC9NVG9rIHBlciBtb2RlbGxvIChwYWdpbmEgXCJQcmV6emkgZGVpIG1vZGVsbGlcIiwgdmVyaWZpY2F0YSAyMDI2LTA3KS5cclxuICAvLyBjYWNoZVdyaXRlIMOoIGlsIHByZXp6byBkaSBzY3JpdHR1cmEgY2FjaGUgYSAxIE9SQTogw6ggaWwgQ2FjaGVUdGwgY29uZmlndXJhdG8gc3UgcXVhc2kgdHV0dGkgZ2xpXHJcbiAgLy8gYW1iaWVudGkgcmVhbGkgKFRha2VjYXJlLCBNb3NhaWNvLCBUZWxlbWVkd2FyZSwgZWNjLiDigJQgc29sbyBEZXZlbG9wbWVudCB1c2EgXCJub25lXCIsIFRlc3QgdXNhIFwiMWhcIlxyXG4gIC8vIGFuY2gnZXNzbyksIHF1aW5kaSDDqCBsYSBzdGltYSByZWFsaXN0aWNhIGFuY2hlIHNlIGxlZ2dlcm1lbnRlIHBpw7kgYWx0YSBkZWkgNSBtaW51dGkuIFRlbmVyZVxyXG4gIC8vIGFsbGluZWF0aSBhIER5bmFtaWNNb2R1bGUuQXBpXFxTa2lsbHNcXERNQUlfU0tJTExGT1JLLm1kIGUgYWkgc2Vydml6aSBDbGF1ZGUqU2VydmljZS5jcyBsYXRvIHNlcnZlci5cclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBSV9NT0RFTF9QUklDSU5HOiBSZWNvcmQ8c3RyaW5nLCB7IGlucHV0OiBudW1iZXI7IG91dHB1dDogbnVtYmVyOyBjYWNoZVdyaXRlOiBudW1iZXI7IGNhY2hlUmVhZDogbnVtYmVyOyBsYWJlbDogc3RyaW5nIH0+ID0ge1xyXG4gICAgJ2NsYXVkZS1oYWlrdS00LTUtMjAyNTEwMDEnOiB7IGlucHV0OiAxLjAwLCBvdXRwdXQ6IDUuMDAsIGNhY2hlV3JpdGU6IDIuMDAsIGNhY2hlUmVhZDogMC4xMCwgbGFiZWw6ICdIYWlrdScgfSxcclxuICAgICdjbGF1ZGUtc29ubmV0LTQtNic6IHsgaW5wdXQ6IDMuMDAsIG91dHB1dDogMTUuMDAsIGNhY2hlV3JpdGU6IDYuMDAsIGNhY2hlUmVhZDogMC4zMCwgbGFiZWw6ICdTb25uZXQnIH0sXHJcbiAgICAnY2xhdWRlLW9wdXMtNC03JzogeyBpbnB1dDogNS4wMCwgb3V0cHV0OiAyNS4wMCwgY2FjaGVXcml0ZTogMTAuMDAsIGNhY2hlUmVhZDogMC41MCwgbGFiZWw6ICdPcHVzJyB9LFxyXG4gICAgJ2NsYXVkZS1mYWJsZS01JzogeyBpbnB1dDogMTAuMDAsIG91dHB1dDogNTAuMDAsIGNhY2hlV3JpdGU6IDIwLjAwLCBjYWNoZVJlYWQ6IDEuMDAsIGxhYmVsOiAnRmFibGUnIH0sXHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBleHRyYWN0TW9kZWxGcm9tVGV4dCh0ZXh0OiBzdHJpbmcpOiB7IGNsZWFuVGV4dDogc3RyaW5nOyBtb2RlbElkOiBzdHJpbmcgfCBudWxsIH0ge1xyXG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBFcXBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29tcG9uZW50Lk1PREVMX01BUCkge1xyXG4gICAgICBlbnRyeS5wYXR0ZXJuLmxhc3RJbmRleCA9IDA7XHJcbiAgICAgIGlmIChlbnRyeS5wYXR0ZXJuLnRlc3QodGV4dCkpIHtcclxuICAgICAgICBlbnRyeS5wYXR0ZXJuLmxhc3RJbmRleCA9IDA7XHJcbiAgICAgICAgY29uc3QgY2xlYW5UZXh0ID0gdGV4dFxyXG4gICAgICAgICAgLnJlcGxhY2UoZW50cnkucGF0dGVybiwgJycpXHJcbiAgICAgICAgICAucmVwbGFjZSgvWyBcXHRdKy9nLCAnICcpXHJcbiAgICAgICAgICAucmVwbGFjZSgvXFxzKlsuLDtdXFxzKiQvLCAnJylcclxuICAgICAgICAgIC50cmltKCk7XHJcbiAgICAgICAgZW50cnkucGF0dGVybi5sYXN0SW5kZXggPSAwO1xyXG4gICAgICAgIHJldHVybiB7IGNsZWFuVGV4dCwgbW9kZWxJZDogZW50cnkuaWQgfTtcclxuICAgICAgfVxyXG4gICAgICBlbnRyeS5wYXR0ZXJuLmxhc3RJbmRleCA9IDA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyBjbGVhblRleHQ6IHRleHQsIG1vZGVsSWQ6IG51bGwgfTtcclxuICB9XHJcblxyXG4gIG9uRm9ybUdyYXBoaWNTdWdnZXN0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgcmF3SGludCA9IHRoaXMuZm9ybUdyYXBoaWNTdWdnZXN0SGludD8udHJpbSgpO1xyXG4gICAgaWYgKCF0aGlzLmZvcm0gfHwgIXRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uPy5Gb3Jtcz8uU3BlZWNoVG9HcmFwaGljc0VuZFBvaW50KSByZXR1cm47XHJcbiAgICBjb25zdCB7IGNsZWFuVGV4dDogaGludCwgbW9kZWxJZDogYWlNb2RlbElkIH0gPSB0aGlzLmV4dHJhY3RNb2RlbEZyb21UZXh0KHJhd0hpbnQpO1xyXG4gICAgY29uc3Qgc2NvcGUgPSB0aGlzLmZvcm1HcmFwaGljU2NvcGU7XHJcblxyXG4gICAgLy8gU2NvcGUgdGlwbyBzcGVjaWZpY286IHZhbGlkYSBlc2lzdGVuemEgZGVsIGNhbXBvIHByaW1hIGRpIHBhcnRpcmVcclxuICAgIGxldCBzY29wZUZpZWxkVHlwZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgICBpZiAoc2NvcGUuc3RhcnRzV2l0aCgndHlwZV8nKSkge1xyXG4gICAgICBzY29wZUZpZWxkVHlwZSA9IHBhcnNlSW50KHNjb3BlLnJlcGxhY2UoJ3R5cGVfJywgJycpLCAxMCk7XHJcbiAgICAgIGNvbnN0IGV4aXN0cyA9ICh0aGlzLmZvcm0uRmllbGRzID8/IFtdKS5zb21lKGYgPT4gZi5GaWVsZFR5cGUgPT09IHNjb3BlRmllbGRUeXBlKTtcclxuICAgICAgaWYgKCFleGlzdHMpIHtcclxuICAgICAgICBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5FcnJvcignTmVzc3VuIGNhbXBvIGRpIHF1ZXN0byB0aXBvIHByZXNlbnRlIG5lbCBmb3JtLicpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZm9ybUdyYXBoaWNTdWdnZXN0TG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgLy8gQ2FtcGkgZGEgaW52aWFyZTogdW4gcmFwcHJlc2VudGFudGUgcGVyIHRpcG8gKGFsbC9tYWluKSBvcHB1cmUgc29sbyBpbCBwcmltbyBkZWwgdGlwbyBzY2VsdG8gKHRpcG8gc3BlY2lmaWNvKVxyXG4gICAgY29uc3Qgc2VlblR5cGVzID0gbmV3IFNldDxudW1iZXI+KCk7XHJcbiAgICBjb25zdCBmaWVsZHNUb1NlbmQgPSBzY29wZUZpZWxkVHlwZSAhPSBudWxsXHJcbiAgICAgID8gKHRoaXMuZm9ybS5GaWVsZHMgPz8gW10pLmZpbHRlcihmID0+IGYuRmllbGRUeXBlID09PSBzY29wZUZpZWxkVHlwZSkuc2xpY2UoMCwgMSkubWFwKGYgPT4gKHsgTGFiZWw6IGYuTGFiZWwsIEZpZWxkVHlwZTogZi5GaWVsZFR5cGUgfSkpXHJcbiAgICAgIDogKHRoaXMuZm9ybS5GaWVsZHMgPz8gW10pLmZpbHRlcihmID0+IHsgaWYgKHNlZW5UeXBlcy5oYXMoZi5GaWVsZFR5cGUpKSByZXR1cm4gZmFsc2U7IHNlZW5UeXBlcy5hZGQoZi5GaWVsZFR5cGUpOyByZXR1cm4gdHJ1ZTsgfSkubWFwKGYgPT4gKHsgTGFiZWw6IGYuTGFiZWwsIEZpZWxkVHlwZTogZi5GaWVsZFR5cGUgfSkpO1xyXG5cclxuICAgIGNvbnN0IGdyYXBoaWNzUGFyYW1zOiBFbmRQb2ludERhdGFQYXJhbXNbXSA9IFtcclxuICAgICAgeyBQYXJhbU5hbWU6ICdOYW1lJywgUGFyYW1WYWx1ZTogdGhpcy5mb3JtLk5hbWUsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVsnSW4gQm9keSddIH0sXHJcbiAgICAgIHsgUGFyYW1OYW1lOiAnRGVzY3JpcHRpb24nLCBQYXJhbVZhbHVlOiB0aGlzLmZvcm0uRGVzY3JpcHRpb24gPz8gbnVsbCwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtWydJbiBCb2R5J10gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6ICdUaGVtZUNTUycsIFBhcmFtVmFsdWU6IHRoaXMuZm9ybS5UaGVtZUNTUyA/PyBudWxsLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bJ0luIEJvZHknXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogJ1RpdGxlQ1NTJywgUGFyYW1WYWx1ZTogdGhpcy5mb3JtLlRpdGxlQ1NTID8/IG51bGwsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVsnSW4gQm9keSddIH0sXHJcbiAgICAgIHsgUGFyYW1OYW1lOiAnRmllbGRzJywgUGFyYW1WYWx1ZTogZmllbGRzVG9TZW5kLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bJ0luIEJvZHknXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogJ0hpbnQnLCBQYXJhbVZhbHVlOiBoaW50IHx8IHRoaXMuYnVpbGRSYW5kb21HcmFwaGljSGludCgpLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bJ0luIEJvZHknXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogJ01vZGVsSWQnLCBQYXJhbVZhbHVlOiBhaU1vZGVsSWQsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVsnSW4gQm9keSddIH0sXHJcbiAgICAgIHsgUGFyYW1OYW1lOiAnR2VuZXJhdGVCYWNrZ3JvdW5kJywgUGFyYW1WYWx1ZTogdGhpcy5nZW5lcmF0ZUJhY2tncm91bmQgJiYgc2NvcGUgPT09ICdhbGwnLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bJ0luIEJvZHknXSB9LFxyXG4gICAgICAuLi4oc2NvcGUgPT09ICdtYWluJyA/IFt7IFBhcmFtTmFtZTogJ01haW5Pbmx5JywgUGFyYW1WYWx1ZTogdHJ1ZSwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtWydJbiBCb2R5J10gfV0gOiBbXSksXHJcbiAgICAgIC4uLihzY29wZUZpZWxkVHlwZSAhPSBudWxsID8gW3sgUGFyYW1OYW1lOiAnU2luZ2xlRmllbGRNb2RlJywgUGFyYW1WYWx1ZTogdHJ1ZSwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtWydJbiBCb2R5J10gfV0gOiBbXSksXHJcbiAgICBdO1xyXG5cclxuICAgIHRoaXMudXRpbGl0eUhlbHBlclNlcnZpY2UuUnVuRW5kUG9pbnRDYWxsKFxyXG4gICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5Gb3Jtcy5TcGVlY2hUb0dyYXBoaWNzRW5kUG9pbnQsXHJcbiAgICAgIGdyYXBoaWNzUGFyYW1zLFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCByID0gcmVzIGFzIHsgVGhlbWVDU1M/OiBzdHJpbmc7IFRpdGxlQ1NTPzogc3RyaW5nOyBCZ0ltYWdlQmFzZTY0Pzogc3RyaW5nOyBGaWVsZFN0eWxlcz86IHsgW2Nzc0NsYXNzTmFtZTogc3RyaW5nXTogeyBbcHJvcDogc3RyaW5nXTogc3RyaW5nIH0gfTsgV2FybmluZ3M/OiBzdHJpbmdbXTsgRGFsbEVFbGFwc2VkU2VjPzogbnVtYmVyIH07XHJcbiAgICAgICAgdGhpcy5mb3JtR3JhcGhpY1N1Z2dlc3RMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zaG93Rm9ybUdyYXBoaWNTdWdnZXN0SW5wdXQgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgaWYgKHNjb3BlID09PSAnbWFpbicpIHtcclxuICAgICAgICAgIC8vIFNvbG8gVGhlbWVDU1MgZSBUaXRsZUNTU1xyXG4gICAgICAgICAgaWYgKHIuVGhlbWVDU1MgIT09IHVuZGVmaW5lZCkgdGhpcy5mb3JtLlRoZW1lQ1NTID0gci5UaGVtZUNTUyA/PyBudWxsO1xyXG4gICAgICAgICAgaWYgKHIuVGl0bGVDU1MgIT09IHVuZGVmaW5lZCkgdGhpcy5mb3JtLlRpdGxlQ1NTID0gci5UaXRsZUNTUyA/PyBudWxsO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoc2NvcGVGaWVsZFR5cGUgIT0gbnVsbCkge1xyXG4gICAgICAgICAgLy8gRmllbGRTdHlsZXMgZGVsIHRpcG8gc2NlbHRvIGFwcGxpY2F0aSBhIFRVVFRJIGkgY2FtcGkgZGkgcXVlbCB0aXBvIG5lbCBmb3JtLlxyXG4gICAgICAgICAgLy8gT2duaSBjYW1wbyByaWNldmUgdW5hIGNvcGlhIGRpc3RpbnRhOiBzYWZlQ2xvbmUgdXNhIFdlYWtTZXQgZSBzYWx0YSBvZ2dldHRpIGdpw6AgdmlzdGkuXHJcbiAgICAgICAgICBpZiAoci5GaWVsZFN0eWxlcykge1xyXG4gICAgICAgICAgICBjb25zdCBjc3NDbGFzc05hbWUgPSAoRXFwRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbXBvbmVudC5GSUVMRF9UWVBFX0NTU19DTEFTUyBhcyBhbnkpW3Njb3BlRmllbGRUeXBlXTtcclxuICAgICAgICAgICAgaWYgKGNzc0NsYXNzTmFtZSAmJiByLkZpZWxkU3R5bGVzW2Nzc0NsYXNzTmFtZV0pIHtcclxuICAgICAgICAgICAgICAodGhpcy5mb3JtLkZpZWxkcyA/PyBbXSkuZmlsdGVyKGYgPT4gZi5GaWVsZFR5cGUgPT09IHNjb3BlRmllbGRUeXBlKS5mb3JFYWNoKGYgPT4ge1xyXG4gICAgICAgICAgICAgICAgKGYgYXMgYW55KVtjc3NDbGFzc05hbWVdID0geyAuLi5yLkZpZWxkU3R5bGVzIVtjc3NDbGFzc05hbWVdIH07XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gVHV0dG9cclxuICAgICAgICAgIGlmIChyLlRoZW1lQ1NTICE9PSB1bmRlZmluZWQpIHRoaXMuZm9ybS5UaGVtZUNTUyA9IHIuVGhlbWVDU1MgPz8gbnVsbDtcclxuICAgICAgICAgIGlmIChyLlRpdGxlQ1NTICE9PSB1bmRlZmluZWQpIHRoaXMuZm9ybS5UaXRsZUNTUyA9IHIuVGl0bGVDU1MgPz8gbnVsbDtcclxuICAgICAgICAgIGlmIChyLkJnSW1hZ2VCYXNlNjQgIT09IHVuZGVmaW5lZCkgdGhpcy5mb3JtLkJnSW1hZ2VCYXNlNjQgPSByLkJnSW1hZ2VCYXNlNjQgPz8gbnVsbDtcclxuICAgICAgICAgIGlmIChyLkZpZWxkU3R5bGVzKSB7XHJcbiAgICAgICAgICAgICh0aGlzLmZvcm0uRmllbGRzID8/IFtdKS5mb3JFYWNoKGYgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGNzc0NsYXNzTmFtZSA9IChFcXBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29tcG9uZW50LkZJRUxEX1RZUEVfQ1NTX0NMQVNTIGFzIGFueSlbZi5GaWVsZFR5cGVdO1xyXG4gICAgICAgICAgICAgIGlmICghY3NzQ2xhc3NOYW1lKSByZXR1cm47XHJcbiAgICAgICAgICAgICAgY29uc3QgY3NzT2JqID0gci5GaWVsZFN0eWxlcyFbY3NzQ2xhc3NOYW1lXTtcclxuICAgICAgICAgICAgICBpZiAoY3NzT2JqICYmIHR5cGVvZiBjc3NPYmogPT09ICdvYmplY3QnKSAoZiBhcyBhbnkpW2Nzc0NsYXNzTmFtZV0gPSB7IC4uLmNzc09iaiB9O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmZvcm1Db21wbGV0ZWQpIHtcclxuICAgICAgICAgIHRoaXMuZm9ybUNvbXBsZXRlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5wcmV2aWV3Rm9ybSA9IG51bGw7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2V0Rm9ybVN0YXR1cyh0cnVlKSwgNTApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgICAgIGNvbnN0IGJnVGltZVBhcnQgPSByLkRhbGxFRWxhcHNlZFNlYyAhPSBudWxsID8gYCAoc2ZvbmRvIGdlbmVyYXRvIGluICR7ci5EYWxsRUVsYXBzZWRTZWMudG9GaXhlZCgxKX1zKWAgOiAnJztcclxuICAgICAgICBjb25zdCBzdWNjZXNzTXNnID0gc2NvcGUgPT09ICdtYWluJ1xyXG4gICAgICAgICAgPyBgR3JhZmljYSBwcmluY2lwYWxlIGFwcGxpY2F0YSEke2JnVGltZVBhcnR9YFxyXG4gICAgICAgICAgOiBzY29wZUZpZWxkVHlwZSAhPSBudWxsXHJcbiAgICAgICAgICAgID8gYEdyYWZpY2EgYXBwbGljYXRhIGEgdHV0dGkgaSBjYW1waSBkZWwgdGlwbyBzZWxlemlvbmF0byEke2JnVGltZVBhcnR9YFxyXG4gICAgICAgICAgICA6IGBHcmFmaWNhIGFwcGxpY2F0YSBhbCBmb3JtISR7YmdUaW1lUGFydH1gO1xyXG4gICAgICAgIEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLlN1Y2Nlc3Moc3VjY2Vzc01zZyk7XHJcbiAgICAgICAgaWYgKHIuV2FybmluZ3M/Lmxlbmd0aCA+IDApIEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLldhcm5pbmcoci5XYXJuaW5ncyk7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIHRoaXMuZm9ybUdyYXBoaWNTdWdnZXN0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IG1zZyA9IChlcnJvciBhcyBhbnkpPy5lcnJvcjtcclxuICAgICAgICBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5FcnJvcih0eXBlb2YgbXNnID09PSAnc3RyaW5nJyAmJiBtc2cudHJpbSgpID8gbXNnIDogJ0Vycm9yZSBuZWxsYSBnZW5lcmF6aW9uZSBkZWxsYSBncmFmaWNhJyk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gUHJvcHJpZXTDoCBwZXIgY3JlYXppb25lL21vZGlmaWNhIGNhbXBvXHJcbiAgZmllbGRzQ29sdW1uczogQXJyYXk8Q29uZmlnQ29sdW1uPjtcclxuICBAVmlld0NoaWxkKFwiZmllbGRzVGFibGVcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIGZpZWxkc1RhYmxlOiBUbXdUYWJsZUNvbXBvbmVudDtcclxuICBzZWxlY3RlZEZpZWxkOiBCYXNlRmllbGQ7XHJcbiAgaW5kZXhTZWxlY3RlZEZpZWxkOiBudW1iZXI7XHJcbiAgYWN0aW9uT25SZWNvcmRGb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXA7XHJcbiAgZGlhbG9nRmllbGRSZWY6IE1hdERpYWxvZ1JlZjxUZW1wbGF0ZVJlZjxhbnk+PjtcclxuICBAVmlld0NoaWxkKFwiZGlhbG9nRmllbGRcIiwgeyBzdGF0aWM6IHRydWUgfSkgZGlhbG9nRmllbGQ6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZChcImZpZWxkU2VjdGlvbkNvbHVtblRlbXBsYXRlXCIsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgZmllbGRTZWN0aW9uQ29sdW1uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBQcm9wcmlldMOgIHBlciBjcmVhcmUvbW9kaWZpY2FyZSB1bmEgRm9ybSBkaSBkZXR0YWdsaW9cclxuICBzZWxlY3RlZElubmVyRm9ybTogRm9ybTtcclxuICBpbmRleFNlbGVjdGVkSW5uZXJGb3JtOiBudW1iZXI7XHJcbiAgZGlhbG9nSW5uZXJGb3JtUmVmOiBNYXREaWFsb2dSZWY8VGVtcGxhdGVSZWY8YW55Pj47XHJcbiAgQFZpZXdDaGlsZChcImRpYWxvZ0lubmVyRm9ybVwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGRpYWxvZ0lubmVyRm9ybTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBpbm5lckZvcm1Db25maWc6IER5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JDb25maWc7XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBQcm9wcmlldMOgIHBlciBjcmVhcmUvbW9kaWZpY2FyZSB1bmEgYWN0aW9uIHN1aSByZWNvcmQgZGkgdW5hIEZvcm1cclxuICBhY3Rpb25zT25SZWNvcmRDb2x1bW5zOiBBcnJheTxDb25maWdDb2x1bW4+O1xyXG4gIEBWaWV3Q2hpbGQoXCJhY3Rpb25zT25SZWNvcmRUYWJsZVwiLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBhY3Rpb25zT25SZWNvcmRUYWJsZTogVG13VGFibGVDb21wb25lbnQ7XHJcbiAgc2VsZWN0ZWRBY3Rpb246IEFjdGlvbk9uUmVjb3JkO1xyXG4gIGluZGV4U2VsZWN0ZWRBY3Rpb246IG51bWJlcjtcclxuICBkaWFsb2dBY3Rpb25PblJlY29yZFJlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG4gIEBWaWV3Q2hpbGQoXCJkaWFsb2dBY3Rpb25PblJlY29yZFwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGRpYWxvZ0FjdGlvbk9uUmVjb3JkOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gUHJvcHJpZXTDoCBwZXIgY3JlYXJlL21vZGlmaWNhcmUgZGVpIGJvdHRvbmkgYXppb25lXHJcbiAgYWN0aW9uQnV0dG9uc0NvbHVtbnM6IEFycmF5PENvbmZpZ0NvbHVtbj47XHJcbiAgQFZpZXdDaGlsZChcImFjdGlvbkJ1dHRvbnNUYWJsZVwiLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBhY3Rpb25CdXR0b25zVGFibGU6IFRtd1RhYmxlQ29tcG9uZW50O1xyXG4gIHNlbGVjdGVkQWN0aW9uQnV0dG9uOiBBY3Rpb25CdXR0b247XHJcbiAgaW5kZXhTZWxlY3RlZEFjdGlvbkJ1dHRvbjogbnVtYmVyO1xyXG4gIGRpYWxvZ0FjdGlvbkJ1dHRvblJlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG4gIEBWaWV3Q2hpbGQoXCJkaWFsb2dBY3Rpb25CdXR0b25cIiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBkaWFsb2dBY3Rpb25CdXR0b246IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIGFjdGlvbkJ1dHRvbnNGb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXA7XHJcbiAgYWN0aW9uc0ZsYWcgPSBBY3Rpb25GbGFnRW51bTtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLyoqXHJcbiAgICogRXZlbnRvIGVtZXNzbyBxdWFuZG8gc2kgc2FsdmEgdW5hIGZvcm0gZSBub24gw6ggc3RhdG8gc3BlY2lmaWNhdG8gdW4gZW5kcG9pbnQgZGEgY2hpYW1hcmUuXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIHNhdmVGb3JtRXZlbnQ6IEV2ZW50RW1pdHRlcjxGb3JtPiA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybT4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogRXZlbnRvIGVtZXNzbyBET1BPIGF2ZXIgZXNlZ3VpdG8gdW5hIGNoaWFtYXRhIGFsIHNlcnZlciBwZXIgaWwgc2FsdmF0YWdnaW9kaSB1bmEgZm9ybSBhbGwnZW5kcG9pbnQgc3BlY2lmaWNhdG8uXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIGFmdGVyU2F2ZUZvcm1FdmVudDogRXZlbnRFbWl0dGVyPEZvcm0+ID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtPigpO1xyXG5cclxuICAvLyBPdXQgY29tcG9uZW50ZSBlc3Rlcm5vXHJcbiAgQE91dHB1dCgpIG91dDogRXZlbnRFbWl0dGVyPGV2ZW50T3V0PiA9IG5ldyBFdmVudEVtaXR0ZXI8ZXZlbnRPdXQ+KCk7XHJcblxyXG4gIC8vIFRyaWdnZXJzXHJcbiAgZGlhbG9nVHJpZ2dlcnNSZWY6IE1hdERpYWxvZ1JlZjxUZW1wbGF0ZVJlZjxhbnk+PjtcclxuICBAVmlld0NoaWxkKFwiZGlhbG9nVHJpZ2dlcnNcIiwgeyBzdGF0aWM6IHRydWUgfSkgZGlhbG9nVHJpZ2dlcnM6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgc2VsZWN0ZWRUcmlnZ2VyOiBUcmlnZ2VyO1xyXG4gIHRyaWdnZXJzQ29sdW1uczogQXJyYXk8Q29uZmlnQ29sdW1uPjtcclxuICBAVmlld0NoaWxkKFwidHJpZ2dlcnNUYWJsZVwiLCB7IHN0YXRpYzogZmFsc2UgfSkgdHJpZ2dlcnNUYWJsZTogVG13VGFibGVDb21wb25lbnQ7XHJcblxyXG4gIHNob3dBbGxGaWVsZHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93R3JhZmljYVBhbmVsOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vIENvbnRlc3R1YWxpemF0aW9uXHJcbiAgc2VsZWN0ZWRDb250ZXN0dWFsaXphdGlvbjogc3RyaW5nID0gbnVsbDtcclxuICBzZWxlY3RlZENvbnRlc3R1YWxpemF0aW9uVmFsdWU6IG51bWJlciA9IG51bGw7XHJcblxyXG4gIHNob3dEZWxldGVCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzZWxlY3RlZEZpZWxkczogQXJyYXk8QmFzZUZpZWxkPiA9IG5ldyBBcnJheTxCYXNlRmllbGQ+KCk7XHJcblxyXG4gIC8vIEFJIEVkaXQgZGlhbG9nXHJcbiAgZGlhbG9nQWlFZGl0UmVmOiBNYXREaWFsb2dSZWY8VGVtcGxhdGVSZWY8YW55Pj47XHJcbiAgQFZpZXdDaGlsZChcImRpYWxvZ0FpRWRpdFwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBkaWFsb2dBaUVkaXQ6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgZGlhbG9nQWlIaXN0b3J5UmVmOiBNYXREaWFsb2dSZWY8VGVtcGxhdGVSZWY8YW55Pj47XHJcbiAgQFZpZXdDaGlsZChcImRpYWxvZ0FpSGlzdG9yeVwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBkaWFsb2dBaUhpc3Rvcnk6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIC8vIENvbnRlc3R1YWxpenphemlvbmUgZGlhbG9nXHJcbiAgZGlhbG9nQ29udGVzdHVhbGl6YXRpb25SZWY6IE1hdERpYWxvZ1JlZjxUZW1wbGF0ZVJlZjxhbnk+PjtcclxuICBAVmlld0NoaWxkKFwiZGlhbG9nQ29udGVzdHVhbGl6YXRpb25cIiwgeyBzdGF0aWM6IHRydWUgfSkgZGlhbG9nQ29udGVzdHVhbGl6YXRpb246IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIC8vIFZpc3VhbCBFZGl0b3JcclxuICBAVmlld0NoaWxkKFwiZGlhbG9nVmVUb29sdGlwXCIsIHsgc3RhdGljOiB0cnVlIH0pIGRpYWxvZ1ZlVG9vbHRpcDogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKFwiZGlhbG9nVmVSZW9yZGVyXCIsIHsgc3RhdGljOiB0cnVlIH0pIGRpYWxvZ1ZlUmVvcmRlcjogVGVtcGxhdGVSZWY8YW55PjtcclxuICB2aXN1YWxFZGl0b3JBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB2ZVNlbGVjdGVkRmllbGQ6IEJhc2VGaWVsZCB8IG51bGwgPSBudWxsO1xyXG4gIHZlU3dhcEZpZWxkOiBCYXNlRmllbGQgfCBudWxsID0gbnVsbDtcclxuICBkaWFsb2dWZVRvb2x0aXBSZWY6IE1hdERpYWxvZ1JlZjxUZW1wbGF0ZVJlZjxhbnk+PjtcclxuICBkaWFsb2dWZVJlb3JkZXJSZWY6IE1hdERpYWxvZ1JlZjxUZW1wbGF0ZVJlZjxhbnk+PjtcclxuICB2ZVNob3dHcmFwaGljSW5wdXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB2ZUdyYXBoaWNIaW50OiBzdHJpbmcgPSAnJztcclxuICB2ZUFwcGx5VG9BbGxPZlR5cGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB2ZVJlb3JkZXJGaWVsZHM6IEJhc2VGaWVsZFtdID0gW107XHJcbiAgcHJpdmF0ZSB2ZUdyYXBoaWNTdWdnZXN0QWN0aXZlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGdldCB2ZVNlbGVjdGVkRmllbGRUeXBlTmFtZSgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZnQgPSB0aGlzLnZlU2VsZWN0ZWRGaWVsZD8uRmllbGRUeXBlO1xyXG4gICAgaWYgKGZ0ID09IG51bGwpIHJldHVybiAnJztcclxuICAgIHJldHVybiAoRXFwRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbXBvbmVudC5GSUVMRF9UWVBFX0xBQkVMUyBhcyBhbnkpW2Z0XSA/PyBgVGlwbyAke2Z0fWA7XHJcbiAgfVxyXG5cclxuICBhaUVkaXRQcm9tcHQ6IHN0cmluZyA9IFwiXCI7XHJcbiAgYWlFZGl0QXR0YWNobWVudHM6IEFycmF5PHsgZmlsZU5hbWU6IHN0cmluZzsgYmFzZTY0Q29udGVudDogc3RyaW5nOyBtZWRpYVR5cGU6IHN0cmluZyB9PiA9IFtdO1xyXG4gIGFpRWRpdEF1dG9zYXZlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYWlFZGl0TG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGFpRWRpdENvdW50ZG93bjogbnVtYmVyID0gMDtcclxuICBhaUVkaXRFc3RpbWF0ZWRTZWM6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBfYWlDb3VudGRvd25SZWY6IGFueSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfYWlFZGl0Q2FuY2VsbGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYWlFZGl0SXNPdmVydGltZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dBaVByb21wdEhpc3Rvcnk6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGFpRWRpdEZpZWxkQ29udGV4dDogeyBjb2RlOiBzdHJpbmcgfSB8IG51bGwgPSBudWxsO1xyXG4gIC8vIFNlemlvbmkgaW4gY3VpIMOoIHN0YXRvIHN1ZGRpdmlzbyBsJ3VsdGltbyBwcm9tcHQgZGkgY3JlYXppb25lIChnZW5lcmF6aW9uZSBwYXJhbGxlbGEpO1xyXG4gIC8vIHZ1b3RvIHF1YW5kbyBsJ3VsdGltYSBjaGlhbWF0YSBBSSBub24gaGEgcmljaGllc3RvIHNwbGl0LlxyXG4gIGxhc3RQcm9tcHRTcGxpdHM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIC8vIE51bWVybyBkaSBzcGxpdCBpcG90aXp6YXRpIGRhbGwndXRlbnRlIHBlciBsYSBzdGltYSBjb3N0byBsaXZlICgxID0gbmVzc3VubyBzcGxpdCkuXHJcbiAgLy8gQ29uIHNwbGl0ID4gMSBsZSBjaGlhbWF0ZSBwYXJ0b25vIHR1dHRlIGluIHBhcmFsbGVsbzogbmVzc3VuYSBiZW5lZmljaWEgZGVsbGEgY2FjaGVcclxuICAvLyBkZWwgc3lzdGVtIHByb21wdCAoc2tpbGwpLCBxdWluZGkgb2dudW5hIHBhZ2EgcGVyIGludGVybyBpIHRva2VuIHNraWxsICsgcHJvbXB0LlxyXG4gIC8vIFJhbmdlIHJlYWxlIGxhdG8gc2VydmVyIChETUFJX1NLSUxMRk9SSy5tZCwgZmxvb3IgMjAyNi0wNyk6IDEgKG5lc3N1bm8gc3BsaXQpIG9wcHVyZSAzLTEyIOKAlFxyXG4gIC8vIDIgbm9uIMOoIHBpw7kgdW4gdmFsb3JlIHBvc3NpYmlsZSAoc290dG8gbGUgMyBzZXppb25pIGlsIHdhcm0tdXAgY2FjaGUgbm9uIGNvbnZpZW5lIG1haSwgdmVkaVxyXG4gIC8vIFNob3VsZFdhcm1VcENhY2hlKSwgcXVpbmRpIHF1aSBsbyBzYWx0aWFtbyBwZXIgbm9uIGZhciBzdGltYXJlIHVuIGNvc3RvIHBlciB1bm8gc2NlbmFyaW8gY2hlXHJcbiAgLy8gaWwgc2VydmVyIG5vbiBwcm9kdWNlIG1haS5cclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBSV9NSU5fU1BMSVRfQ09VTlQgPSAzO1xyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEFJX01BWF9TUExJVF9DT1VOVCA9IDEyO1xyXG4gIHByaXZhdGUgX2FpRWRpdFNwbGl0Q291bnQgPSAxO1xyXG4gIGdldCBhaUVkaXRTcGxpdENvdW50KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWlFZGl0U3BsaXRDb3VudDtcclxuICB9XHJcbiAgc2V0IGFpRWRpdFNwbGl0Q291bnQodmFsdWU6IG51bWJlcikge1xyXG4gICAgY29uc3QgbiA9IE1hdGgucm91bmQoTnVtYmVyKHZhbHVlKSk7XHJcbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShuKSB8fCBuIDw9IDEpIHtcclxuICAgICAgdGhpcy5fYWlFZGl0U3BsaXRDb3VudCA9IDE7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGNsYW1wZWQgPSBNYXRoLm1pbihFcXBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29tcG9uZW50LkFJX01BWF9TUExJVF9DT1VOVCwgbik7XHJcbiAgICB0aGlzLl9haUVkaXRTcGxpdENvdW50ID0gY2xhbXBlZCA8IEVxcER5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JDb21wb25lbnQuQUlfTUlOX1NQTElUX0NPVU5UXHJcbiAgICAgID8gRXFwRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbXBvbmVudC5BSV9NSU5fU1BMSVRfQ09VTlRcclxuICAgICAgOiBjbGFtcGVkO1xyXG4gIH1cclxuXHJcbiAgaW5jcmVtZW50QWlFZGl0U3BsaXRDb3VudCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYWlFZGl0U3BsaXRDb3VudCA9IHRoaXMuYWlFZGl0U3BsaXRDb3VudCA9PT0gMVxyXG4gICAgICA/IEVxcER5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JDb21wb25lbnQuQUlfTUlOX1NQTElUX0NPVU5UXHJcbiAgICAgIDogdGhpcy5haUVkaXRTcGxpdENvdW50ICsgMTtcclxuICB9XHJcblxyXG4gIGRlY3JlbWVudEFpRWRpdFNwbGl0Q291bnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFpRWRpdFNwbGl0Q291bnQgPSB0aGlzLmFpRWRpdFNwbGl0Q291bnQgPD0gRXFwRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbXBvbmVudC5BSV9NSU5fU1BMSVRfQ09VTlRcclxuICAgICAgPyAxXHJcbiAgICAgIDogdGhpcy5haUVkaXRTcGxpdENvdW50IC0gMTtcclxuICB9XHJcbiAgYWlGaWVsZFN1Z2dlc3RMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZm9ybUdyYXBoaWNTdWdnZXN0TG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGZvcm1HcmFwaGljU3VnZ2VzdEhpbnQ6IHN0cmluZyA9ICcnO1xyXG4gIHNob3dGb3JtR3JhcGhpY1N1Z2dlc3RJbnB1dDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGZvcm1HcmFwaGljU2NvcGU6IHN0cmluZyA9ICdhbGwnO1xyXG4gIGdlbmVyYXRlQmFja2dyb3VuZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGFpR2VuZXJhdGVCYWNrZ3JvdW5kOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJlc2VudEZpZWxkVHlwZU9wdGlvbnM6IHsgdmFsdWU6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9W10gPSBbXTtcclxuXHJcbiAgLy8gQUkgRGF0YUdldHRlciBzaWxlbnQgbG9hZGluZ1xyXG4gIHBlbmRpbmdBaURhdGFHZXR0ZXJGaWVsZHM6IEJhc2VGaWVsZFtdID0gW107XHJcbiAgY3VycmVudEFpRGF0YUdldHRlckZpZWxkOiBCYXNlRmllbGQgfCBudWxsID0gbnVsbDtcclxuICBhaURhdGFHZXR0ZXJMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGdldCBhaVByb21wdEhpc3RvcnkoKTogc3RyaW5nW10ge1xyXG4gICAgaWYgKCF0aGlzLmZvcm0/LkFJUHJvbXB0cykgcmV0dXJuIFtdO1xyXG4gICAgdHJ5IHsgcmV0dXJuIEpTT04ucGFyc2UodGhpcy5mb3JtLkFJUHJvbXB0cyk7IH0gY2F0Y2ggeyByZXR1cm4gW107IH1cclxuICB9XHJcblxyXG4gIC8vIENvc3RhbnRpIHBlciBsYSBzdGltYSBkZWwgY29zdG8gQUkgKHRva2VuIHN0aW1hdGkgcGVyIHVuIHByb21wdCBkaSBtZWRpYSBjb21wbGVzc2l0w6AgLyBvdXRwdXQgbWVkaW87XHJcbiAgLy8gaWwgcHJlenpvIHBlciB0b2tlbiB2YXJpYSBpbnZlY2UgaW4gYmFzZSBhbCBtb2RlbGxvIHJpbGV2YXRvIG5lbCBwcm9tcHQsIHZlZGkgQUlfTU9ERUxfUFJJQ0lORylcclxuICAvLyBUb2tlbiBmaXNzaSBkZWkgbW9kdWxpIHNraWxsIChDT1JFICsgQ0FNUE8qL0dSQUZJQ0EqIGNhcmljYXRpIHZpYSBTS0lMTEZPUkspIGludmlhdGkgY29tZSBzeXN0ZW1cclxuICAvLyBwcm9tcHQgYWQgT0dOSSBjaGlhbWF0YSAodW5hIHBlciBzcGxpdCkuIFN0aW1hIFwiYWwgbWFzc2ltb1wiOiBzb21tYSBkaSB0dXR0aSBpIDI2IGZpbGVcclxuICAvLyBETUFJX0ZsZEpzb25fKi5tZCAofjQySyB0b2tlbiwgYnl0ZXMvNCwgZG9wbyBsYSBjb21wcmVzc2lvbmUgZGkgQ09SRS9NT0RJRklDQS9HUkFGSUNBX0NPUkUgZGVsXHJcbiAgLy8gMjAyNi0wNykg4oCUIFNLSUxMRk9SSyBub24gbGkgY2FyaWNhIG1haSB0dXR0aSBpbnNpZW1lLCBtYSDDqCBpbCBsaW1pdGUgc3VwZXJpb3JlIHJlYWxpc3RpY28gdmlzdG9cclxuICAvLyBjaGUgaWwgY2xpZW50IG5vbiBzYSBxdWFsZSBzb3R0b2luc2llbWUgdmVycsOgIHNlbGV6aW9uYXRvLlxyXG4gIC8vIE5COiAxMzIuMDAwICh2YWxvcmUgYW5jb3JhIHByZWNlZGVudGUpIGVyYSBpbiByZWFsdMOgIE1haW5JbnB1dFRva2VucyBzb21tYXRvIHN1IDUgY2hpYW1hdGVcclxuICAvLyBwYXJhbGxlbGUgKH4yNksvY2hpYW1hdGEpIGUgbm9uIGFuZGF2YSB1c2F0byBjb21lIGNvc3RhbnRlIHBlciBzaW5nb2xhIGNoaWFtYXRhLlxyXG4gIHByaXZhdGUgcmVhZG9ubHkgQUlfU0tJTExfVE9LRU5TID0gNDJfMDAwO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgQUlfVE9LRU5TX1BFUl9GSUVMRCA9IDEwMDsgICAgLy8gc3RpbWEgdG9rZW4gcGVyIGNhbXBvIGRlbCBmb3JtIHNlcmlhbGl6emF0b1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgQUlfT1VUUFVUX1RPS0VOUyA9IDNfNTAwOyAgLy8gc3RpbWEgY29uc2VydmF0aXZhIG91dHB1dCBKU09OIG1vZGlmaWNhdG9cclxuICBwcml2YXRlIHJlYWRvbmx5IEFJX1BERl9DSEFSUyA9IDE1XzA2MDsgLy8gZmluZXN0cmEgbWF4IGVzdHJhdHRhIHBlciBhbGxlZ2F0byBQREZcclxuICBwcml2YXRlIHJlYWRvbmx5IEFJX0NIQVJTX1BFUl9UT0tFTiA9IDQ7ICAgICAgLy8gY2hhci90b2tlbiBtZWRpIHBlciB0ZXN0byBpdGFsaWFub1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgQUlfRVVSX1VTRF9SQVRFID0gMS4xMDsgICAvLyB0YXNzbyBFVVIvVVNEIGFwcHJvc3NpbWF0b1xyXG5cclxuICAvLyBNb2RlbGxvIHJpbGV2YXRvIGluIHRlbXBvIHJlYWxlIGRhbCB0ZXN0byBkZWwgcHJvbXB0IEFJIChcIkhhaWt1XCIvXCJTb25uZXRcIi9cIk9wdXNcIi9cIkZhYmxlXCIpO1xyXG4gIC8vIEhhaWt1IMOoIGlsIGRlZmF1bHQgcXVhbmRvIG5lbCBwcm9tcHQgbm9uIMOoIGNpdGF0byBlc3BsaWNpdGFtZW50ZSBhbGN1biBtb2RlbGxvXHJcbiAgZ2V0IGFpRWRpdERldGVjdGVkTW9kZWxJZCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZXh0cmFjdE1vZGVsRnJvbVRleHQodGhpcy5haUVkaXRQcm9tcHQgPz8gJycpLm1vZGVsSWQgPz8gJ2NsYXVkZS1oYWlrdS00LTUtMjAyNTEwMDEnO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFpRWRpdERldGVjdGVkTW9kZWxMYWJlbCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIEVxcER5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JDb21wb25lbnQuQUlfTU9ERUxfUFJJQ0lOR1t0aGlzLmFpRWRpdERldGVjdGVkTW9kZWxJZF0/LmxhYmVsID8/ICdIYWlrdSc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldCBhaUVkaXRQcmljaW5nKCkge1xyXG4gICAgcmV0dXJuIEVxcER5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JDb21wb25lbnQuQUlfTU9ERUxfUFJJQ0lOR1t0aGlzLmFpRWRpdERldGVjdGVkTW9kZWxJZF1cclxuICAgICAgPz8gRXFwRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbXBvbmVudC5BSV9NT0RFTF9QUklDSU5HWydjbGF1ZGUtaGFpa3UtNC01LTIwMjUxMDAxJ107XHJcbiAgfVxyXG5cclxuICAvLyBDb24gc3BsaXQgPiAxIGlsIHNlcnZlciB2YWx1dGEgc2UgY29udmllbmUgXCJzY2FsZGFyZVwiIGxhIGNhY2hlIGNvbiB1bmEgY2hpYW1hdGEgYSB2dW90b1xyXG4gIC8vIHByaW1hIGRpIGxhbmNpYXJlIGxlIE4gY2hpYW1hdGUgcGFyYWxsZWxlICh2ZWRpIFNob3VsZFdhcm1VcENhY2hlIGluXHJcbiAgLy8gQ2xhdWRlRm9ybUdlbmVyYXRvclNlcnZpY2UuY3MpOiBjb252aWVuZSBzb2xvIHNlIGNhY2hlV3JpdGUgKyBOw5djYWNoZVJlYWQgPCBOw5dpbnB1dCDigJQgY2lvw6hcclxuICAvLyBzZSBpbCByaXNwYXJtaW8gc3VsbGUgTiBsZXR0dXJlIHN1cGVyYSBpbCBzb3ZyYXBwcmV6em8gZGVsbGEgc2NyaXR0dXJhIGluaXppYWxlLiBRdWlcclxuICAvLyByZXBsaWNoaWFtbyBsYSBzdGVzc2EgZGlzdWd1YWdsaWFuemEgZSB1c2lhbW8gaWwgbWlub3JlIGRlaSBkdWUgY29zdGksIGVzYXR0YW1lbnRlIGNvbWUgZmFcclxuICAvLyBpbCBzZXJ2ZXIgKGNoZSBxdWluZGkgbm9uIHNjZWdsaWUgbWFpIGwnb3B6aW9uZSBwZWdnaW9yZSkuIElsIHByb21wdC9mb3JtIChhIGRpZmZlcmVuemEgZGVpXHJcbiAgLy8gdG9rZW4gc2tpbGwpIG5vbiBiZW5lZmljaWEgbWFpIGRlbGxhIGNhY2hlOiB2aWVuZSByaWZhdHR1cmF0byBwZXIgaW50ZXJvIGFkIG9nbmkgc3BsaXQuXHJcbiAgcHJpdmF0ZSBjb21wdXRlQWlFZGl0U3BsaXRDb3N0cygpOiB7IG5vV2FybXVwQ29zdDogbnVtYmVyOyB3YXJtVXBDb3N0OiBudW1iZXI7IG91dHB1dENvc3Q6IG51bWJlciB9IHtcclxuICAgIGNvbnN0IHByaWNpbmcgPSB0aGlzLmFpRWRpdFByaWNpbmc7XHJcbiAgICBjb25zdCBmb3JtVG9rZW5zID0gKHRoaXMuZm9ybT8uRmllbGRzPy5sZW5ndGggPz8gMCkgKiB0aGlzLkFJX1RPS0VOU19QRVJfRklFTEQ7XHJcbiAgICBjb25zdCB2YXJJbnB1dCA9ICh0aGlzLmFpRWRpdFByb21wdD8ubGVuZ3RoID8/IDApIC8gdGhpcy5BSV9DSEFSU19QRVJfVE9LRU5cclxuICAgICAgKyB0aGlzLmFpRWRpdEF0dGFjaG1lbnRzLmxlbmd0aCAqICh0aGlzLkFJX1BERl9DSEFSUyAvIHRoaXMuQUlfQ0hBUlNfUEVSX1RPS0VOKTtcclxuICAgIGNvbnN0IG4gPSB0aGlzLmFpRWRpdFNwbGl0Q291bnQ7XHJcbiAgICBjb25zdCBwcm9tcHRUb2tlbnNQZXJDYWxsID0gZm9ybVRva2VucyArIHZhcklucHV0O1xyXG5cclxuICAgIGNvbnN0IG5vV2FybXVwQ29zdCA9IG4gKiAodGhpcy5BSV9TS0lMTF9UT0tFTlMgKyBwcm9tcHRUb2tlbnNQZXJDYWxsKSAqIHByaWNpbmcuaW5wdXQ7XHJcbiAgICBjb25zdCB3YXJtVXBDb3N0ID0gdGhpcy5BSV9TS0lMTF9UT0tFTlMgKiBwcmljaW5nLmNhY2hlV3JpdGVcclxuICAgICAgKyBuICogKHRoaXMuQUlfU0tJTExfVE9LRU5TICogcHJpY2luZy5jYWNoZVJlYWQgKyBwcm9tcHRUb2tlbnNQZXJDYWxsICogcHJpY2luZy5pbnB1dCk7XHJcblxyXG4gICAgcmV0dXJuIHsgbm9XYXJtdXBDb3N0LCB3YXJtVXBDb3N0LCBvdXRwdXRDb3N0OiB0aGlzLkFJX09VVFBVVF9UT0tFTlMgKiBwcmljaW5nLm91dHB1dCB9O1xyXG4gIH1cclxuXHJcbiAgLy8gdHJ1ZSBxdWFuZG8sIHBlciBsbyBzcGxpdCBpcG90aXp6YXRvLCBpbCB3YXJtLXVwIGNvc3RlcmViYmUgbWVubyBkZWwgcHJlenpvIHBpZW5vIOKAlCBjaW/DqFxyXG4gIC8vIHF1YW5kbyBpbCBzZXJ2ZXIgKFNob3VsZFdhcm1VcENhY2hlKSBmYXJlYmJlIGRhdnZlcm8gcGFydGlyZSBsYSBjaGlhbWF0YSBhIHZ1b3RvLlxyXG4gIGdldCBhaUVkaXRTcGxpdFdhcm1VcEFwcGxpZXMoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5haUVkaXRTcGxpdENvdW50IDw9IDEpIHJldHVybiBmYWxzZTtcclxuICAgIGNvbnN0IHsgbm9XYXJtdXBDb3N0LCB3YXJtVXBDb3N0IH0gPSB0aGlzLmNvbXB1dGVBaUVkaXRTcGxpdENvc3RzKCk7XHJcbiAgICByZXR1cm4gd2FybVVwQ29zdCA8IG5vV2FybXVwQ29zdDtcclxuICB9XHJcblxyXG4gIC8vIENhbGNvbGEgaWwgY29zdG8gKFVTRCkgZGVsbGEgY2hpYW1hdGEgcHJpbmNpcGFsZSBkYXRvIGlsIHByZXp6byBkYSBhcHBsaWNhcmUgYWkgdG9rZW4gc2tpbGxcclxuICAvLyBpbiBhc3NlbnphIGRpIHNwbGl0IChjYWNoZVdyaXRlIHBlciBpbCBwcmltbyB1c28sIGNhY2hlUmVhZCBwZXIgZ2xpIHVzaSBzdWNjZXNzaXZpKS4gQ29uXHJcbiAgLy8gc3BsaXQgPiAxIHVzYSBpbCBtaW5vcmUgdHJhIGNvc3RvLWNvbi13YXJtdXAgZSBjb3N0by1zZW56YSAodmVkaSBjb21wdXRlQWlFZGl0U3BsaXRDb3N0cykuXHJcbiAgcHJpdmF0ZSBjb21wdXRlQWlFZGl0Q29zdFVzZChza2lsbFRva2VuUHJpY2U6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICBjb25zdCBuID0gdGhpcy5haUVkaXRTcGxpdENvdW50O1xyXG5cclxuICAgIGlmIChuIDw9IDEpIHtcclxuICAgICAgY29uc3QgcHJpY2luZyA9IHRoaXMuYWlFZGl0UHJpY2luZztcclxuICAgICAgY29uc3QgZm9ybVRva2VucyA9ICh0aGlzLmZvcm0/LkZpZWxkcz8ubGVuZ3RoID8/IDApICogdGhpcy5BSV9UT0tFTlNfUEVSX0ZJRUxEO1xyXG4gICAgICBjb25zdCB2YXJJbnB1dCA9ICh0aGlzLmFpRWRpdFByb21wdD8ubGVuZ3RoID8/IDApIC8gdGhpcy5BSV9DSEFSU19QRVJfVE9LRU5cclxuICAgICAgICArIHRoaXMuYWlFZGl0QXR0YWNobWVudHMubGVuZ3RoICogKHRoaXMuQUlfUERGX0NIQVJTIC8gdGhpcy5BSV9DSEFSU19QRVJfVE9LRU4pO1xyXG4gICAgICByZXR1cm4gKHRoaXMuQUlfU0tJTExfVE9LRU5TICogc2tpbGxUb2tlblByaWNlICsgKGZvcm1Ub2tlbnMgKyB2YXJJbnB1dCkgKiBwcmljaW5nLmlucHV0ICsgdGhpcy5BSV9PVVRQVVRfVE9LRU5TICogcHJpY2luZy5vdXRwdXQpIC8gMV8wMDBfMDAwO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHsgbm9XYXJtdXBDb3N0LCB3YXJtVXBDb3N0LCBvdXRwdXRDb3N0IH0gPSB0aGlzLmNvbXB1dGVBaUVkaXRTcGxpdENvc3RzKCk7XHJcbiAgICByZXR1cm4gKE1hdGgubWluKG5vV2FybXVwQ29zdCwgd2FybVVwQ29zdCkgKyBvdXRwdXRDb3N0KSAvIDFfMDAwXzAwMDtcclxuICB9XHJcblxyXG4gIGdldCBhaUVkaXRDb3N0Rmlyc3RFdXIoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmNvbXB1dGVBaUVkaXRDb3N0VXNkKHRoaXMuYWlFZGl0UHJpY2luZy5jYWNoZVdyaXRlKSAvIHRoaXMuQUlfRVVSX1VTRF9SQVRFO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFpRWRpdENvc3RTdWJzZXF1ZW50RXVyKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21wdXRlQWlFZGl0Q29zdFVzZCh0aGlzLmFpRWRpdFByaWNpbmcuY2FjaGVSZWFkKSAvIHRoaXMuQUlfRVVSX1VTRF9SQVRFO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0QWlFZGl0Q29zdChldXI6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gZXVyLnRvRml4ZWQoNik7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNOZXdGb3JtKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLmZvcm0/LklEO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSB1dGlsaXR5SGVscGVyU2VydmljZTogVXRpbGl0eUhlbHBlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2NvbmZpZ3VyYXRvclRoZW1lJ10gfHwgY2hhbmdlc1snY29uZmlndXJhdG9yVGhlbWVDc3MnXSkge1xyXG4gICAgICB0aGlzLmFwcGx5VGhlbWUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlUaGVtZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGVsID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCByb290ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xyXG5cclxuICAgIC8vIFJpbXVvdmUgdmFycyBwcmVjZWRlbnRpIGRhbCBob3N0IGUgZGEgOnJvb3RcclxuICAgIEFycmF5LmZyb20oZWwuc3R5bGUpLmZpbHRlcihwID0+IHAuc3RhcnRzV2l0aCgnLS1jb25mLScpKS5mb3JFYWNoKHAgPT4gZWwuc3R5bGUucmVtb3ZlUHJvcGVydHkocCkpO1xyXG4gICAgQXJyYXkuZnJvbShyb290LnN0eWxlKS5maWx0ZXIocCA9PiBwLnN0YXJ0c1dpdGgoJy0tY29uZi0nKSkuZm9yRWFjaChwID0+IHJvb3Quc3R5bGUucmVtb3ZlUHJvcGVydHkocCkpO1xyXG5cclxuICAgIGNvbnN0IHBhcnNlZEZyb21Dc3MgPSB0aGlzLmNvbmZpZ3VyYXRvclRoZW1lQ3NzID8gdGhpcy5wYXJzZUNzc1RoZW1lKHRoaXMuY29uZmlndXJhdG9yVGhlbWVDc3MpIDogbnVsbDtcclxuICAgIGNvbnN0IG1lcmdlZDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IG51bGwgPSAocGFyc2VkRnJvbUNzcyB8fCB0aGlzLmNvbmZpZ3VyYXRvclRoZW1lKVxyXG4gICAgICA/IHsgLi4uKHBhcnNlZEZyb21Dc3MgPz8ge30pLCAuLi4odGhpcy5jb25maWd1cmF0b3JUaGVtZSA/PyB7fSkgfVxyXG4gICAgICA6IG51bGw7XHJcblxyXG4gICAgaWYgKG1lcmdlZCkge1xyXG4gICAgICBPYmplY3QuZW50cmllcyhtZXJnZWQpLmZvckVhY2goKFtrLCB2XSkgPT4gZWwuc3R5bGUuc2V0UHJvcGVydHkoaywgdiwgJ2ltcG9ydGFudCcpKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBQcm9wYWdhIGkgdmFsb3JpIGVmZmV0dGl2aSAoU0NTUyBkZWZhdWx0ICsgb3ZlcnJpZGUgdGVtYSkgc3UgOnJvb3QgcGVyY2jDqSBpIGRpYWxvZ3NcclxuICAgIC8vIE1hdGVyaWFsIHJlbmRlcml6emFubyBuZWwgY2RrLW92ZXJsYXkgZnVvcmkgZGFsbCdob3N0IGUgbm9uIGVyZWRpdGFubyBsZSB2YXIgZGkgOmhvc3RcclxuICAgIGNvbnN0IGNvbXB1dGVkID0gZ2V0Q29tcHV0ZWRTdHlsZShlbCk7XHJcbiAgICBbJy0tY29uZi1ncmFkaWVudCcsICctLWNvbmYtYmctcGFnZScsICctLWNvbmYtcmFkaXVzJywgJy0tY29uZi1tb2RhbC1yYWRpdXMnLFxyXG4gICAgICAnLS1jb25mLWFjY2VudCcsICctLWNvbmYtYWNjZW50LXJnYicsICctLWNvbmYtcHJpbWFyeScsICctLWNvbmYtcHJpbWFyeS1yZ2InLFxyXG4gICAgICAnLS1jb25mLXN0ZXAtc2VsZWN0ZWQnLCAnLS1jb25mLXN0ZXAtZWRpdCcsICctLWNvbmYtdGFibGUtaGVhZGVyLWJnJyxcclxuICAgICAgJy0tY29uZi1zZWFyY2gtYmcnLCAnLS1jb25mLXRhYmxlLWJnJywgJy0tY29uZi1jYXJkLWJnJywgJy0tY29uZi1mb250LWZhbWlseScsXHJcbiAgICAgICctLWNvbmYtc3RlcHBlci1oZWFkZXItYmcnLCAnLS1jb25mLXN0ZXBwZXItY29udGVudC1iZycsICctLWNvbmYtc3RlcC1pY29uLWVkaXQtYmcnLFxyXG4gICAgICAnLS1jb25mLWhpbnQtYnRuLWJnJywgJy0tY29uZi1oaW50LWJ0bi1ob3Zlci1iZycsICctLWNvbmYtYnRuLWNvbG9yJ1xyXG4gICAgXS5mb3JFYWNoKHZhck5hbWUgPT4ge1xyXG4gICAgICBjb25zdCB2YWx1ZSA9IGNvbXB1dGVkLmdldFByb3BlcnR5VmFsdWUodmFyTmFtZSkudHJpbSgpO1xyXG4gICAgICBpZiAodmFsdWUpIHJvb3Quc3R5bGUuc2V0UHJvcGVydHkodmFyTmFtZSwgdmFsdWUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBhcnNlQ3NzVGhlbWUoY3NzOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xyXG4gICAgY29uc3QgcmVnZXggPSAvKC0tY29uZi1bXjpcXHNdKylcXHMqOlxccyooW147fV0rKS9nO1xyXG4gICAgbGV0IG1hdGNoOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsO1xyXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4LmV4ZWMoY3NzKSkgIT09IG51bGwpIHtcclxuICAgICAgcmVzdWx0W21hdGNoWzFdLnRyaW0oKV0gPSBtYXRjaFsyXS50cmltKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgLy8gR2FyYW50aXNjZSBjaGUgbGUgdmFyaWFiaWxpIENTUyBkaSBkZWZhdWx0IChkZWZpbml0ZSBpbiA6aG9zdCBTQ1NTKSB2ZW5nYW5vXHJcbiAgICAvLyBwcm9wYWdhdGUgc3UgOnJvb3QgYW5jaGUgcXVhbmRvIGNvbmZpZ3VyYXRvclRoZW1lIG5vbiDDqCBmb3JuaXRvXHJcbiAgICB0aGlzLmFwcGx5VGhlbWUoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgY29uc3Qgcm9vdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcclxuICAgIEFycmF5LmZyb20ocm9vdC5zdHlsZSkuZmlsdGVyKHAgPT4gcC5zdGFydHNXaXRoKCctLWNvbmYtJykpLmZvckVhY2gocCA9PiByb290LnN0eWxlLnJlbW92ZVByb3BlcnR5KHApKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z01vZGUgPSB0aGlzLmRlYnVnTW9kZTtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coJ25nT25Jbml0IC0gY29uZmlndXJhdGlvbnMnLCB0aGlzLmNvbmZpZ3VyYXRpb25zKTtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coJ25nT25Jbml0IC0gZm9ybUlEJywgdGhpcy5mb3JtSUQpO1xyXG5cclxuICAgIHRoaXMuYmFzZVNlcnZlclVybCA9XHJcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbnMuZHluYW1pY01vZHVsZUdlbmVyYWxDb25maWcuYmFzZVNlcnZlclVybDtcclxuICAgIHRoaXMuY29udGV4dCA9IHRoaXMuY29uZmlndXJhdGlvbnMuZHluYW1pY01vZHVsZUdlbmVyYWxDb25maWcuY29udGV4dDtcclxuICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uID1cclxuICAgICAgdGhpcy5jb25maWd1cmF0aW9ucy5keW5hbWljTW9kdWxlR2VuZXJhbENvbmZpZy5lbmRQb2ludENvbmZpZ3VyYXRpb247XHJcbiAgICAvLyB0aGlzLmZvcm1JRCA9IHRoaXMuY29uZmlndXJhdGlvbnMuZHluYW1pY01vZHVsZUdlbmVyYWxDb25maWcuZm9ybUlEO1xyXG4gICAgdGhpcy51c2VyVG9rZW4gPSB0aGlzLmNvbmZpZ3VyYXRpb25zLmR5bmFtaWNNb2R1bGVHZW5lcmFsQ29uZmlnLnVzZXJUb2tlbjtcclxuXHJcbiAgICB0aGlzLmZvcm0gPVxyXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb25zLmR5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JTcGVjaWZpY0NvbmZpZy5mb3JtO1xyXG4gICAgdGhpcy5vcmdhSUQgPVxyXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb25zLmR5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JTcGVjaWZpY0NvbmZpZy5vcmdhSUQ7XHJcbiAgICB0aGlzLlVzZXJJRCA9XHJcbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbnMuZHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvclNwZWNpZmljQ29uZmlnLlVzZXJJRDtcclxuICAgIHRoaXMuaW5uZXJGb3JtTWFuYWdtZW50ID1cclxuICAgICAgdGhpcy5jb25maWd1cmF0aW9ucy5keW5hbWljTW9kdWxlQ29uZmlndXJhdG9yU3BlY2lmaWNDb25maWcuaW5uZXJGb3JtTWFuYWdtZW50O1xyXG4gICAgdGhpcy5pbm5lckZvcm1SZWYgPVxyXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb25zLmR5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JTcGVjaWZpY0NvbmZpZy5pbm5lckZvcm1SZWY7XHJcblxyXG4gICAgdGhpcy5mb3JtLk9yZ2FJRCA9IHRoaXMub3JnYUlEO1xyXG5cclxuICAgIHRoaXMuY29uZmlndXJlRGVmYXVsdEVuZFBvaW50cygpO1xyXG4gICAgdGhpcy5nZXRGb3JtQnlJRCgpO1xyXG4gICAgaWYgKHRoaXMuY29udGV4dCkge1xyXG4gICAgICBVdGlsaXR5SGVscGVyU2VydmljZS5TZXRDb250ZXh0KHRoaXMuY29udGV4dCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGNvbmZpZ3VyYXJlIGdsaSBlbmRwb2ludCBkYSB1c2FyZSBkaSBkZWZhdWx0IGEgcGFydGlyZSBkYWxsJ3VybCBiYXNlIGRlbCBzZXJ2ZXJcclxuICAgKiBhIGN1aSBzaSBkZXZlIGNvbm5ldHRlcmUgZSBhbCB0b2tlbiBkYSBwYXNzYXJlIHBlciBhdXRlbnRpY2Fyc2kuXHJcbiAgICogU2UgbGEgcHJvcHJpZXTDoCBiYXNlU2VydmVyVXJsIMOoIG51bGwgZSBub24gc29ubyBzdGF0aSBjb25maWd1cmF0aSBpIHZhcmkgZW5kcG9pbnQgYWxsb3JhXHJcbiAgICogbm9uIHZpZW5lIGVzZWd1aXRhIG5lc3N1bmEgY2hpYW1hdGEgaHR0cCBwZXIgcmVjdXBlcmFyZS9zYWx2YXJlIGkgZGF0aS5cclxuICAgKi9cclxuICBjb25maWd1cmVEZWZhdWx0RW5kUG9pbnRzKCkge1xyXG4gICAgaWYgKCF0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbiAmJiB0aGlzLmJhc2VTZXJ2ZXJVcmwpIHtcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24gPVxyXG4gICAgICAgIHRoaXMudXRpbGl0eUhlbHBlclNlcnZpY2UuQ29uZmlndXJlRGVmYXVsdEVuZFBvaW50cyhcclxuICAgICAgICAgIHRoaXMuYmFzZVNlcnZlclVybCxcclxuICAgICAgICAgIHRoaXMudXNlclRva2VuXHJcbiAgICAgICAgKTtcclxuICAgICAgaWYgKHRoaXMuZm9ybUlEKSB7XHJcbiAgICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uRm9ybXMuR2V0QnlJREVuZFBvaW50LlBhcmFtcyA9IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgUGFyYW1OYW1lOiBcImlkXCIsXHJcbiAgICAgICAgICAgIFBhcmFtVmFsdWU6IHRoaXMuZm9ybUlELFxyXG4gICAgICAgICAgICBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJRdWVyeSBwYXJhbVwiXSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBzdHJpbmdTYW5pdGl6ZXIodmFsdWUpIHtcclxuICAgIGlmICghVXRpbGl0eUhlbHBlclNlcnZpY2Uuc3RyaW5nQ2hlY2tQYXJlbnRlc2lzKHZhbHVlKSkge1xyXG4gICAgICBhbGVydChcImVycm9yZSEgZXJhbm8gcHJlc2VudGkgZGVsbGUgcGFyZW50ZXNpLlwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG4gIH1cclxuICBzZXROYW1lKE5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKCF0aGlzLnN0cmluZ1Nhbml0aXplcihOYW1lKSkge1xyXG4gICAgICBjb25zdCBSZWdFeHBQYXJldGVzaXMgPSAvW1xcKFxcKVxcW1xcXVxce1xcfV0vZztcclxuICAgICAgLy8gUmltdW92aSB0dXR0ZSBsZSBwYXJlbnRlc2kgbm9uIGJpbGFuY2lhdGVcclxuICAgICAgdGhpcy5mb3JtLk5hbWUgPSBOYW1lLnJlcGxhY2UoUmVnRXhwUGFyZXRlc2lzLCAnJyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5mb3JtLklEID09IG51bGwpIHsgLy8gdGhpcy5mb3JtLkNvZGUgPT0gbnVsbCB8fCB0aGlzLmZvcm0uQ29kZSA9PSB1bmRlZmluZWQgfHwgdGhpcy5mb3JtLkNvZGUgPT0gXCJcIiApe1xyXG4gICAgICB0aGlzLnNldENvZGUodGhpcy5mb3JtLk5hbWUpO1xyXG4gICAgfVxyXG4gIH1cclxuICBzZXRDb2RlKENvZGU6IHN0cmluZykge1xyXG4gICAgdGhpcy5zdHJpbmdTYW5pdGl6ZXIoQ29kZSk7XHJcblxyXG4gICAgY29uc3QgUmVnRXhwUGxhaW4gPSAvW15cXHddL2c7XHJcbiAgICB0aGlzLmZvcm0uQ29kZSA9IENvZGUudG9VcHBlckNhc2UoKS5yZXBsYWNlKFJlZ0V4cFBsYWluLCBcIlwiKTtcclxuICB9XHJcbiAgb21pdF9zcGVjaWFsX2NoYXIoZXZlbnQpIHtcclxuICAgIHZhciBrO1xyXG4gICAgayA9IGV2ZW50LmtleUNvZGU7IC8vICAgICAgICAgayA9IGV2ZW50LmtleUNvZGU7ICAoQm90aCBjYW4gYmUgdXNlZClcclxuICAgIGlmIChrID09IDM0KSB7XHJcbiAgICAgIGV2ZW50LmtleUNvZGUgPSAwO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiBJTVBPUlQgRlVOQ1RJT04gKi9cclxuICBvbkltcG9ydChldmVudCkge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRGaWxlID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xyXG4gICAgY29uc3QgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICBmaWxlUmVhZGVyLnJlYWRBc1RleHQoc2VsZWN0ZWRGaWxlLCBcIlVURi04XCIpO1xyXG4gICAgZmlsZVJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coJ29uSW1wb3J0IC0gZmlsZVJlYWRlci5yZXN1bHQudG9TdHJpbmcoKScsIGZpbGVSZWFkZXIucmVzdWx0LnRvU3RyaW5nKCkpO1xyXG4gICAgICB0aGlzLmltcG9ydGVkTW9kdWxlID0gZmlsZVJlYWRlci5yZXN1bHQudG9TdHJpbmcoKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmltcG9ydGVkTW9kdWxlICE9IG51bGwpIHtcclxuICAgICAgICBpZiAoY29uZmlybShcInN0YWkgcGVyIHNvdnJhc2NyaXZlcmUgaWwgbW9kdWxvXCIpKSB7XHJcbiAgICAgICAgICAvLyBjaGlhbW8gaWwgcGFyc2UgY29zw6wgZGEgbm9uIGNyZWFyZSB1biByZWZlcmVuY2VCaW5kaW5nXHJcbiAgICAgICAgICB2YXIgaW1wb3J0ZWRGb3JtOiBGb3JtID0gSlNPTi5wYXJzZSh0aGlzLmltcG9ydGVkTW9kdWxlKTtcclxuICAgICAgICAgIGltcG9ydGVkRm9ybS5JRCA9IFwiXCI7XHJcbiAgICAgICAgICBpbXBvcnRlZEZvcm0uTmFtZSA9IGltcG9ydGVkRm9ybS5OYW1lICsgXCIgKEltcG9ydGF0bylcIjtcclxuXHJcbiAgICAgICAgICBpbXBvcnRlZEZvcm0gPSB0aGlzLnNldEltcG9ydGVkRm9ybShpbXBvcnRlZEZvcm0pO1xyXG4gICAgICAgICAgdGhpcy5zZXRGb3JtQW5kQ29uZmlndXJlKGltcG9ydGVkRm9ybSk7XHJcbiAgICAgICAgICB0aGlzLnNldE5hbWUoaW1wb3J0ZWRGb3JtLk5hbWUpO1xyXG5cclxuICAgICAgICAgIHRoaXMuY2xvc2VJbXBvcnQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYWxlcnQoXCJzZWxlemlvbmEgdW4gZmlsZVwiKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGZpbGVSZWFkZXIub25lcnJvciA9IChlcnJvcikgPT4ge1xyXG4gICAgICBhbGVydChcInNlbGV6aW9uYSB1biBmaWxlIHZhbGlkbyBvIGNvbnRyb2xsYSBjaGUgbm9uIHNpYSBjb3Jyb3R0b1wiKTtcclxuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgc2V0SW1wb3J0ZWRGb3JtKGZvcm06IEZvcm0pIHtcclxuXHJcbiAgICAvLyBNb2RpZmljYSBkZWwgY3JlYXRpb24gdXNlciBzdSBJbXBvcnRcclxuICAgIGZvcm0uQ3JlYXRpb25Vc2VyID0gdGhpcy5Vc2VySUQ7XHJcblxyXG4gICAgLy8gTW9kaWZpY2EgZGVpIEZpZWxkIHN1IEltcG9ydFxyXG4gICAgZm9ybS5GaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgaWYgKGZpZWxkLkZpZWxkVHlwZSA9PSBGaWVsZFR5cGVFbnVtW1wiRWxlbmNvIGltbWFnaW5pXCJdKSB7XHJcbiAgICAgICAgKGZpZWxkIGFzIEltYWdlU2VsZWN0b3JGaWVsZCkuQXR0YWNobWVudExpc3QuZm9yRWFjaCgoYXR0YWNobWVudCkgPT4ge1xyXG4gICAgICAgICAgYXR0YWNobWVudC5JRCA9IDA7XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZm9ybTtcclxuICB9XHJcblxyXG4gIGltcG9ydE1vZHVsZSgpIHtcclxuICAgIHRoaXMuZGlhbG9nSW1wb3J0UmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ0ltcG9ydCwge1xyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICAvLyB3aWR0aDogXCI3NSVcIixcclxuICAgICAgLy8gbWF4SGVpZ2h0OiBcIjgwJVwiLFxyXG4gICAgICAvLyBoZWlnaHQ6IFwiODAlXCIsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsb3NlSW1wb3J0KCkge1xyXG4gICAgdGhpcy5kaWFsb2dJbXBvcnRSZWYuY2xvc2UoKTtcclxuICB9XHJcbiAgLyogRU5EIElNUE9SVCBGVU5DVElPTiAqL1xyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogRnVuemlvbmUgZGkgZXNwb3J0YXppb25lIG1vZHVsb1xyXG4gICAqL1xyXG5cclxuICBleHBvcnQoKSB7XHJcblxyXG4gICAgY29uc3QgZHluYW1pY01vZHVsZVBhcmFtczogQXJyYXk8RW5kUG9pbnREYXRhUGFyYW1zPiA9XHJcbiAgICAgIG5ldyBBcnJheTxFbmRQb2ludERhdGFQYXJhbXM+KCk7XHJcbiAgICBkeW5hbWljTW9kdWxlUGFyYW1zLnB1c2goe1xyXG4gICAgICBQYXJhbU5hbWU6IFwiaWRcIixcclxuICAgICAgUGFyYW1WYWx1ZTogdGhpcy5mb3JtSUQsXHJcbiAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uRm9ybXMuRXhwb3J0QnlJREVuZFBvaW50LFxyXG4gICAgICBkeW5hbWljTW9kdWxlUGFyYW1zLFxyXG4gICAgICAoYmFzZTY0cmVzOiBzdHJpbmcpID0+IHtcclxuXHJcbiAgICAgICAgY29uc3QgbmV3QmxvYiA9IG5ldyBCbG9iKFtiYXNlNjRyZXNdLCB7IHR5cGU6IFwidGV4dC9wbGFpblwiIH0pO1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChuZXdCbG9iKTtcclxuICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XHJcbiAgICAgICAgbGluay5ocmVmID0gZGF0YTtcclxuICAgICAgICBsaW5rLmRvd25sb2FkID0gXCJleHBvcnRfXCIgKyB0aGlzLmZvcm1JRCArIFwiX2Zvcm0udHh0XCI7IC8vIHNldCBhIG5hbWUgZm9yIHRoZSBmaWxlXHJcbiAgICAgICAgbGluay5jbGljaygpO1xyXG5cclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybUFuZENvbmZpZ3VyZShuZXcgRm9ybSgpKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHJlY3VwZXJhcmUgdHV0dGkgaSByZWNvcmQgc2FsdmF0aSBwZXIgdW5hIHBhcnRpY29sYXJlIEZvcm0uXHJcbiAgICogTGEgY2hpYW1hdGEgdmllbmUgZWZmZXR0dWF0YSBzb2xvIHNlIMOoIHN0YXRvIGNvbmZpZ3VyYXRvIGwnZW5kUG9pbnQgZGEgdXNhcmUuXHJcbiAgICovXHJcbiAgZ2V0Rm9ybUJ5SUQoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuZm9ybUlEICYmXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uICYmXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLkZvcm1zICYmXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLkZvcm1zLkdldEJ5SURFbmRQb2ludFxyXG4gICAgKSB7XHJcbiAgICAgIGNvbnN0IGR5bmFtaWNNb2R1bGVQYXJhbXM6IEFycmF5PEVuZFBvaW50RGF0YVBhcmFtcz4gPVxyXG4gICAgICAgIG5ldyBBcnJheTxFbmRQb2ludERhdGFQYXJhbXM+KCk7XHJcbiAgICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMucHVzaCh7XHJcbiAgICAgICAgUGFyYW1OYW1lOiBcImlkXCIsXHJcbiAgICAgICAgUGFyYW1WYWx1ZTogdGhpcy5mb3JtSUQsXHJcbiAgICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0sXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcclxuICAgICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5Gb3Jtcy5HZXRCeUlERW5kUG9pbnQsXHJcbiAgICAgICAgZHluYW1pY01vZHVsZVBhcmFtcyxcclxuICAgICAgICAocmVzOiBGb3JtKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNldEZvcm1BbmRDb25maWd1cmUocmVzKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnIpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2V0Rm9ybUFuZENvbmZpZ3VyZShuZXcgRm9ybSgpKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldEZvcm1BbmRDb25maWd1cmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbmZpZ3VybyBsJ2V4cG9ydCBkZWwgZm9ybVxyXG4gICAqL1xyXG5cclxuICBjb25maWd1cmVFeHBvcnQocmVzOiBGb3JtKSB7XHJcblxyXG4gICAgLyogZ2V0dGluZyByZWFkeSBmb3IgZXhwb3J0ICovXHJcbiAgICBsZXQgY2xvbmUgPSBuZXcgRm9ybSgpO1xyXG4gICAgY2xvbmUuQ29kZSA9IFwiSU1QT1JUX1wiICsgcmVzLkNvZGU7XHJcbiAgICBjbG9uZS5OYW1lID0gXCJpbXBvcnRfXCIgKyByZXMuTmFtZTtcclxuICAgIGNsb25lLkRlc2NyaXB0aW9uID0gcmVzLkRlc2NyaXB0aW9uO1xyXG4gICAgY2xvbmUuRm9ybVNjYWxhclR5cGUgPSByZXMuRm9ybVNjYWxhclR5cGU7XHJcbiAgICBjbG9uZS5Gb3JtRmllbGRzR3JvdXBzID0gcmVzLkZvcm1GaWVsZHNHcm91cHM7XHJcbiAgICBjbG9uZS5BY3Rpb25zT25SZWNvcmQgPSByZXMuQWN0aW9uc09uUmVjb3JkO1xyXG4gICAgY2xvbmUuRmllbGRzID0gcmVzLkZpZWxkcztcclxuICAgIGNsb25lLk9iamVjdEZpZWxkcyA9IHJlcy5PYmplY3RGaWVsZHM7XHJcbiAgICBjbG9uZS5Jbm5lckZvcm1zID0gcmVzLklubmVyRm9ybXM7XHJcbiAgICBjbG9uZS5Sb290RW50aXR5SUQgPSByZXMuUm9vdEVudGl0eUlEO1xyXG4gICAgY2xvbmUuT3JnYUlEID0gcmVzLk9yZ2FJRDtcclxuXHJcbiAgICB0aGlzLmRvd25sb2FkTmFtZSA9IFwiZXhwb3J0X1wiICsgcmVzLk5hbWU7XHJcbiAgICB0aGlzLnN0cmluZ2lmaWVkRm9ybSA9IEpTT04uc3RyaW5naWZ5KGNsb25lKTtcclxuICAgIHRoaXMuZG93bmxvYWRKc29uSHJlZiA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwoXHJcbiAgICAgIFwiZGF0YTp0ZXh0L2pzb247Y2hhcnNldD1VVEYtOCxcIiArXHJcbiAgICAgIGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLnN0cmluZ2lmaWVkRm9ybSlcclxuICAgICk7XHJcblxyXG4gICAgLyogZW5kIGV4cG9ydCAqL1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBpbnZvY2F0byBhbCBjYW1iaW8gZGVsIHRpcG8gZGkgdmlzdWFsaXp6YXppb25lIGRlbGxhIGZvcm0uXHJcbiAgICogU2UgbCd1dGVudGUgc2NlZ2xpZSB1bmEgdmlzdWFsaXp6YXppb25lIHJhZ2dydXBwYXRhIGlsIG1ldG9kbyBhZ2dpdW5nZSBhbCBGb3JtR3JvdXAgdW4gbnVvdm9cclxuICAgKiBjb250cm9sbG8gcGVyIGwnYXJyYXkgZGVpIG5vbWkgZGVsbGUgc2V6aW9uaSBkYSBjcmVhcmUuXHJcbiAgICovXHJcbiAgb25DaGFuZ2VGb3JtU2NhbGFyVHlwZSgpIHtcclxuICAgIGlmICh0aGlzLmZvcm0uRm9ybVNjYWxhclR5cGUgIT0gRm9ybVNjYWxhclR5cGVFbnVtLlNlbXBsaWNlKSB7XHJcbiAgICAgIGlmICghdGhpcy5mb3JtRm9ybUdyb3VwLmNvbnRhaW5zKFwiRm9ybUZpZWxkc0dyb3Vwc1wiKSkge1xyXG4gICAgICAgIHRoaXMuZm9ybUZvcm1Hcm91cC5yZW1vdmVDb250cm9sKFwiRm9ybUZpZWxkc0dyb3Vwc1wiKTtcclxuICAgICAgICB0aGlzLmZvcm1Gb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiRm9ybUZpZWxkc0dyb3Vwc1wiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCh0aGlzLmZvcm0uRm9ybUZpZWxkc0dyb3VwcywgW1xyXG4gICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgICBBcnJheVZhbGlkYXRvcnMubWluTGVuZ2h0KDEpLFxyXG4gICAgICAgICAgXSlcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZvcm0uRm9ybUZpZWxkc0dyb3VwcyA9IG51bGw7XHJcbiAgICAgIGlmICh0aGlzLmZvcm1Gb3JtR3JvdXAuY29udGFpbnMoXCJGb3JtRmllbGRzR3JvdXBzXCIpKVxyXG4gICAgICAgIHRoaXMuZm9ybUZvcm1Hcm91cC5yZW1vdmVDb250cm9sKFwiRm9ybUZpZWxkc0dyb3Vwc1wiKTtcclxuICAgIH1cclxuICAgIHRoaXMuZm9ybUZvcm1Hcm91cC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLmNvbmZpZ3VyZUNvbHVtbnMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV2ZW50byBpbnZvY2F0byBhbCBrZXl1cCBuZWxsJ2lucHV0IHBlciBpbnNlcmlyZSBpIG5vbWkgZGVsbGUgc2V6aW9uaSBwZXIgbGEgdmlzdWFsaXp6YXppb25lXHJcbiAgICogcmFnZ3J1cHBhdGEgZGVsbGEgZm9ybS4gUXVhbnRvIGwndXRlbnRlIHByZW1lIGlsIHRhc3RvIGludmlvIHZpZW5lIGFnZ2l1bnRvIGlsIG51b3ZvIG5vbWUgYWxsZVxyXG4gICAqIHNlemlvbmkgZGlzcG9iaWxpIHNlIG5vbiBuZSBlc2lzdGUgdW5hIGNvbiBsbyBzdGVzc28gbm9tZS5cclxuICAgKiBAcGFyYW0gZXZlbnQgRXZlbnRvIGNoZSByYXBwcmVzZW50YSBpbCBrZXl1cCBzdWxsYSB0YXN0aWVyYS5cclxuICAgKi9cclxuICBvbkZvcm1GaWVsZEdyb3VwTmFtZUtleVVwKGV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQuY29kZSA9PT0gXCJFbnRlclwiIHx8IGV2ZW50LmNvZGUgPT09IFwiTnVtcGFkRW50ZXJcIikge1xyXG4gICAgICBpZiAoIXRoaXMuZm9ybS5Gb3JtRmllbGRzR3JvdXBzKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLkZvcm1GaWVsZHNHcm91cHMgPSBuZXcgQXJyYXk8Rm9ybUZpZWxkR3JvdXA+KCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKFxyXG4gICAgICAgICF0aGlzLmZvcm0uRm9ybUZpZWxkc0dyb3Vwcy5maW5kKFxyXG4gICAgICAgICAgKG4pID0+IG4uTmFtZSA9PSB0aGlzLmZvcm1GaWVsZEdyb3VwTmFtZVxyXG4gICAgICAgIClcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLkZvcm1GaWVsZHNHcm91cHMucHVzaCh7IE5hbWU6IHRoaXMuZm9ybUZpZWxkR3JvdXBOYW1lIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIEltcG9zdG8gaWwgbnVvdm8gdmFsb3JlIGRlbCBGb3JtQ29udHJvbCBwZXIgYWdnaW9ybmFyZSBsbyBzdGF0byBkZWxsYSBmb3JtLlxyXG4gICAgICB0aGlzLmZvcm1Gb3JtR3JvdXAuY29udHJvbHNbXCJGb3JtRmllbGRzR3JvdXBzXCJdLnNldFZhbHVlKFxyXG4gICAgICAgIHRoaXMuZm9ybS5Gb3JtRmllbGRzR3JvdXBzXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZm9ybUZpZWxkR3JvdXBOYW1lID0gbnVsbDtcclxuICAgICAgdGhpcy5zZXRGb3JtRmllbGRHcm91cE9yZGluYWxQb3NpdGlvbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciByaW11b3ZlcmUgbGEgc2V6aW9uZSBzZWxlemlvbmF0YSBkYSBxdWVsbGUgZGlzcG9uaWJpbGkgcGVyIGxhIGZvcm0uXHJcbiAgICogQHBhcmFtIGdyb3VwTmFtZSBOb21lIGRlbGxhIHNlemlvbmUgZGEgZWxpbWluYXJlLlxyXG4gICAqL1xyXG4gIG9uRGVsZXRlRm9ybUZpZWxkR3JvdXBOYW1lKGdyb3VwTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmZvcm0uRm9ybUZpZWxkc0dyb3Vwcy5zcGxpY2UoXHJcbiAgICAgIHRoaXMuZm9ybS5Gb3JtRmllbGRzR3JvdXBzLmZpbmRJbmRleCgoZykgPT4gZy5OYW1lID09PSBncm91cE5hbWUpLFxyXG4gICAgICAxXHJcbiAgICApO1xyXG4gICAgLy8gSW1wb3N0byBpbCBudW92byB2YWxvcmUgZGVsIEZvcm1Db250cm9sIHBlciBhZ2dpb3JuYXJlIGxvIHN0YXRvIGRlbGxhIGZvcm0uXHJcbiAgICB0aGlzLmZvcm1Gb3JtR3JvdXAuY29udHJvbHNbXCJGb3JtRmllbGRzR3JvdXBzXCJdLnNldFZhbHVlKFxyXG4gICAgICB0aGlzLmZvcm0uRm9ybUZpZWxkc0dyb3Vwc1xyXG4gICAgKTtcclxuICAgIC8vIFNlIGVzaXN0b25vIEZpZWxkIGxlZ2F0aSBhbGxhIHNlemlvbmUgY2hlIHNpIHZ1b2xlIGVsaW1pbmFyZSBhbGxvcmEgcm9tcG8gaWwgbGVnYW1lLlxyXG4gICAgaWYgKHRoaXMuZm9ybS5GaWVsZHMuZmluZCgoZikgPT4gZi5GaWVsZEdyb3VwID09IGdyb3VwTmFtZSkpIHtcclxuICAgICAgdGhpcy5mb3JtLkZpZWxkcy5maWx0ZXIoKGYpID0+IGYuRmllbGRHcm91cCA9PSBncm91cE5hbWUpLmZvckVhY2goXHJcbiAgICAgICAgKGYpID0+IChmLkZpZWxkR3JvdXAgPSBudWxsKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRGb3JtRmllbGRHcm91cE9yZGluYWxQb3NpdGlvbigpO1xyXG4gIH1cclxuXHJcblxyXG4gIG9uRWRpdEZvcm1GaWVsZEdyb3VwTmFtZShmb3JtRmllbGRHcm91cDogRm9ybUZpZWxkR3JvdXApIHtcclxuXHJcbiAgICBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5Qcm9tcHQoXHJcbiAgICAgIFwiTW9kaWZpY2EgaWwgbm9tZVwiLFxyXG4gICAgICAobmFtZSkgPT4ge1xyXG4gICAgICAgIGZvcm1GaWVsZEdyb3VwLk5hbWUgPSBuYW1lO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKiBDbG9uYSB1biBvZ2dldHRvIGVzY2x1ZGVuZG8gcmlmZXJpbWVudGkgY2lyY29sYXJpIGUgRm9ybUZvcm1Hcm91cCAqL1xyXG4gIHByaXZhdGUgc2FmZUNsb25lPFQ+KG9iajogVCk6IFQge1xyXG4gICAgY29uc3Qgc2VlbiA9IG5ldyBXZWFrU2V0KCk7XHJcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmosIChrZXksIHZhbHVlKSA9PiB7XHJcbiAgICAgIGlmIChrZXkgPT09ICdGb3JtRm9ybUdyb3VwJykgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHtcclxuICAgICAgICBpZiAoc2Vlbi5oYXModmFsdWUpKSByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIHNlZW4uYWRkKHZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gY2hpYW1hdG8gcXVhbmRvIHNpIHZ1b2xlIGFnZ2l1bmdlcmUgdW4gbnVvdm8gY2FtcG8gbyBzaSB2dW9sZSBtb2RpZmljYXJlIHVubyBlc2lzdGVudGUuXHJcbiAgICogTWVtb3JpenphIGwnZXZlbnR1YWxlIEZpZWxkIHNjZWx0byBvbmUgY3JlYSB1bm8gbnVvdm8gcHJpbWEgZGkgYXByaXJlIGlsIGRpYWxvZyBwZXIgbW9kaWZpY2FybG8vYWdnaXVuZ2VybG8uXHJcbiAgICogQHBhcmFtIGZpZWxkIE9nZ2V0dG8gQmFzZUZpZWxkIGRhIG1vZGlmaWNhcmUuIFNlIG51bGwgbmUgdmllbmUgY3JlYXRhIHVuYSBudW92YSBpc3RhbnphIHBlciBsJ2FnZ2l1bnRhLlxyXG4gICAqL1xyXG4gIG9wZW5GaWVsZERpYWxvZyhmaWVsZDogQmFzZUZpZWxkID0gbnVsbCkge1xyXG5cclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJvcGVuRmllbGREaWFsb2dcIiwgZmllbGQpO1xyXG5cclxuICAgIGlmIChmaWVsZCkge1xyXG4gICAgICB0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZCA9IHRoaXMuZm9ybS5GaWVsZHMuaW5kZXhPZihmaWVsZCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZCA9IHRoaXMuc2FmZUNsb25lKGZpZWxkKTtcclxuXHJcbiAgICAgIC8vIERhdG8gY2hlIGNvbiBpbCBKU09OLnBhcnNlIHNpIHBlcmRlIHBlciBzdHJhZGEgbGEgZm9ybXVsYSwgbGEgcmltZXR0byBkb3BvLlxyXG4gICAgICAvLyBUYW50byBvcmFtYWkgaWwgcmlmZXJpbWVudG8gY29uIFwiZmllbGRcIiDDqCBzdGF0byBwZXJzbyBlIHN0aWFtbyBwYXNzYW5kbyB1bmEgc3RyaW5nYVxyXG4gICAgICB0aGlzLnNlbGVjdGVkRmllbGQuRm9ybXVsYSA9IGZpZWxkLkZvcm11bGE7XHJcblxyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEZpZWxkLkFuc3dlclN0eWxlID09IG51bGwpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRmllbGQuQW5zd2VyU3R5bGUgPSB7IEluTGlzdFZpZXc6IHRydWUsIFZpc2libGVJZjogbnVsbCwgRmllbGRzdHlsZUNTUzogXCJcIiwgTGFiZWxzdHlsZUNTUzogXCJcIiwgQ29sU3BhblNpemVzOiBbXSwgSW52aXNpYmlsaXR5OiBGaWVsZEludmlzaWJpbGl0eUVudW0uTkFTQ09TVE8gfTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkID0gbmV3IEJhc2VGaWVsZCgpO1xyXG4gICAgICB0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZCA9IG51bGw7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGlhbG9nRmllbGRSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nRmllbGQsIHtcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IFwiNzUlXCIsXHJcbiAgICAgIGhlaWdodDogXCI4MCVcIixcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGNoZSBzYWx2YSBpbCBjYW1wbyBhcHBlbmEgY3JlYXRvIG8gbW9kaWZpY2F0by5cclxuICAgKiBQcmltYSBkZWwgc2FsdmF0YWdnaW8gY29udHJvbGxhIHNlIGVzaXN0ZSB1biBhbHRybyBjYW1wbyBjb24gbGEgc3Rlc3NhIGxhYmVsLCBpbiBxdWVzdG9cclxuICAgKiBjYXNlIGdlbmVyZSB1biBlcnJvcmUgKGkgY2FtcGkgZGV2b25vIGF2ZXJlIG5vbWksIGUgcXVpbmRpIGxhYmVsLCB1bml2b2NoZSAtIGkgbm9taSB2ZW5nb25vXHJcbiAgICogcmljYXZhdGkgdW5lbmRvIGxlIHBhcm9sZSBjaGUgZm9ybWFubyBsYSBsYWJlbCB0cmFtaXRlIFwiX1wiKS5cclxuICAgKiBAcGFyYW0gZmllbGQgQ2FtcG8gZGEgc2FsdmFyZVxyXG4gICAqIEBwYXJhbSByZW9wZW4gc2UgcHJlc2VudGUgcmlhcHJlIGxhIGRpYWxvZyBkaSBtb2RpZmljYSBkZWwgY2FtcG8gcGVzY2FuZG8gZGFsbGEgbGlzdGEgaWwgcHJvc3NpbW8gaW4gY2FzbyBkaSB2YWxvcmUgWzFdIG8gaWwgcHJlY2VkZW50ZSBpbiBjYXNvIGRpIHZhbG9yZSBbLTFdXHJcbiAgICovXHJcbiAgb25TYXZlRmllbGQoZXY6IHsgZmllbGQ6IEJhc2VGaWVsZCwgcmVvcGVuOiBudW1iZXIgfSkge1xyXG4gICAgbGV0IGZpZWxkID0gZXYuZmllbGQ7XHJcbiAgICBsZXQgcmVvcGVuID0gZXYucmVvcGVuO1xyXG5cclxuICAgIC8vIHNlIGMnw6ggaWwgY2FtcG9cclxuICAgIGlmIChmaWVsZCkge1xyXG4gICAgICAvLyBjb250cm9sbG8gY2hlIG5vbiBjaSBzaWEgdW4gYWx0cm8gY2FtcG8gY29uIGxvIHN0ZXNzbyBjb2RlIChsYWJlbCkgZSBub24gc2lhIGVzc28gc3Rlc3NvXHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmZvcm0uRmllbGRzICYmXHJcbiAgICAgICAgdGhpcy5mb3JtLkZpZWxkcy5maW5kKFxyXG4gICAgICAgICAgKGYsIGkpID0+XHJcbiAgICAgICAgICAgIGYuTGFiZWwgPT09IGZpZWxkLkxhYmVsICYmXHJcbiAgICAgICAgICAgICh0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZCA9PSBudWxsXHJcbiAgICAgICAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgICAgICAgOiB0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZCAhPT0gaSlcclxuICAgICAgICApXHJcbiAgICAgICkge1xyXG4gICAgICAgIEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLldhcm5pbmcoXHJcbiAgICAgICAgICBcIkltcG9zc2liaWxlIGluc2VyaXJlIGR1ZSBjYW1waSBjb24gbG8gc3Rlc3NvIENvZGljZS5cIlxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW1wb3NzaWJpbGUgaW5zZXJpcmUgZHVlIGNhbXBpIGNvbiBsbyBzdGVzc28gQ29kaWNlLlwiKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gc2UgaG8gdW4gaW5kaWNlIGluIGN1aSBpbnNlcmlyZSBpbCBjYW1wbyAodmVyb3NpbWlsbWVudGUgc29ubyBpbiBtb2RpZmljYSlcclxuICAgICAgaWYgKHRoaXMuaW5kZXhTZWxlY3RlZEZpZWxkICE9IG51bGwgJiYgdGhpcy5pbmRleFNlbGVjdGVkRmllbGQgPj0gMCkge1xyXG4gICAgICAgIHRoaXMuZm9ybS5GaWVsZHNbdGhpcy5pbmRleFNlbGVjdGVkRmllbGRdID0gZmllbGQ7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gw6ggdW4gY2FtcG8gbnVvdm9cclxuICAgICAgICBpZiAoIXRoaXMuZm9ybS5GaWVsZHMpIHtcclxuICAgICAgICAgIC8vIHNlIMOoIGlsIHByaW1vIGNhbXBvIGNoZSBzdG8gaW5zZXJlbmRvIHByZXBhcm8gdW4gYXJyYXlcclxuICAgICAgICAgIHRoaXMuZm9ybS5GaWVsZHMgPSBuZXcgQXJyYXk8QmFzZUZpZWxkPigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZvcm0uRmllbGRzLnB1c2goZmllbGQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIm9uU2F2ZUZpZWxkXCIsIHRoaXMuZm9ybSlcclxuICAgIHRoaXMuY2xvc2VGaWVsZERpYWxvZygpO1xyXG4gICAgdGhpcy5zZXRGaWVsZE9yZGluYWxQb3NpdGlvbigpO1xyXG4gICAgdGhpcy5yZWxvYWRGaWVsZHNUYWJsZSgpO1xyXG4gICAgdGhpcy5yZWZyZXNoRmllbGRUeXBlT3B0aW9ucygpO1xyXG5cclxuICAgIGlmIChyZW9wZW4gIT0gMCkge1xyXG4gICAgICBsZXQgbmV3RmllbGQgPSB0aGlzLmZvcm0uRmllbGRzW3RoaXMuaW5kZXhTZWxlY3RlZEZpZWxkICsgcmVvcGVuXTtcclxuICAgICAgdGhpcy5vcGVuRmllbGREaWFsb2cobmV3RmllbGQpXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMudmlzdWFsRWRpdG9yQWN0aXZlKSB7XHJcbiAgICAgIHRoaXMucmVmcmVzaFByZXZpZXcoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBjaGUgY29udHJvbGxhIHNlIGxvIHN0ZXAgcGVyIGwnYWdnaXVudGEgZGVpIGNhbXBpIG5lbGxhIGZvcm0gw6ggY29uY2x1c28uXHJcbiAgICogQHJldHVybnMgU2UgVFJVRSBsbyBzdGVwIHZpZW5lIGNvbnNpZGVyYXRvIGNvbXBsZXRhdG8gZWQgw6ggcG9zc2JpbGUgcGFzc2FyZSBhbCBzdWNjZXNzaXZvLlxyXG4gICAqL1xyXG4gIGlzRmllbGRTdGVwQ29tcGxldGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLmZvcm0uRmllbGRzKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5mb3JtLkZvcm1TY2FsYXJUeXBlICE9IEZvcm1TY2FsYXJUeXBlRW51bS5TZW1wbGljZSAmJlxyXG4gICAgICB0aGlzLmZvcm0uRmllbGRzLmZpbmQoKGYpID0+ICFmLkZpZWxkR3JvdXApXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZm9ybS5GaWVsZHMubGVuZ3RoID4gMDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgYXByaXJlIGlsIGRpYWxvZyBkaSBjcmVhemlvbmUvbW9kaWZpY2EgZGVsbGUgZm9ybSBkaSBkZXR0YWdsaW8uXHJcbiAgICogU2UgaWwgcGFyYW1ldHJvIHBhc3NhdG8gw6ggbnVsbCBzb25vIGluIGFnZ2l1bnRhIGFsdHJpbWVudGkgc29ubyBpbiBtb2RpZmljYS5cclxuICAgKiBAcGFyYW0gaW5uZW5yRm9ybSBGb3JtIGRpIGRldHRhZ2xpbyBkYSBtb2RpZmljYXJlIChzZSBudWxsIGFsbG9yYSB2YWRvIGluIGFkZCkuXHJcbiAgICovXHJcbiAgb3BlbklubmVyRm9ybURpYWxvZyhpbm5lbnJGb3JtOiBGb3JtID0gbnVsbCkge1xyXG4gICAgdGhpcy5pbm5lckZvcm1Db25maWcgPSBuZXcgRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbmZpZygpO1xyXG4gICAgdGhpcy5pbm5lckZvcm1Db25maWcuZHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvclNwZWNpZmljQ29uZmlnLmlubmVyRm9ybU1hbmFnbWVudCA9XHJcbiAgICAgIHRydWU7XHJcbiAgICAvLyB0aGlzLmlubmVyRm9ybUNvbmZpZy5keW5hbWljTW9kdWxlQ29uZmlndXJhdG9yU3BlY2lmaWNDb25maWcuZm9ybVxyXG4gICAgLy8gdGhpcy5pbm5lckZvcm1Db25maWcuZHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvclNwZWNpZmljQ29uZmlnLmZvcm0uT2xkTmFtZVxyXG4gICAgLy8gdGhpcy5pbm5lckZvcm1Db25maWcuZHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvclNwZWNpZmljQ29uZmlnLmlubmVyRm9ybVJlZlxyXG4gICAgLy8gW2Zvcm1dPVwic2VsZWN0ZWRJbm5lckZvcm1cIlxyXG4gICAgLy8gW2lubmVyRm9ybU1hbmFnbWVudF09XCJ0cnVlXCJcclxuICAgIC8vIFtpbm5lckZvcm1SZWZdPVwiZGlhbG9nSW5uZXJGb3JtUmVmXCJcclxuXHJcbiAgICBpZiAoaW5uZW5yRm9ybSkge1xyXG4gICAgICB0aGlzLmluZGV4U2VsZWN0ZWRJbm5lckZvcm0gPSB0aGlzLmZvcm0uSW5uZXJGb3Jtcy5pbmRleE9mKGlubmVuckZvcm0pO1xyXG5cclxuICAgICAgLy8gdGhpcy5zZWxlY3RlZElubmVyRm9ybSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoaW5uZW5yRm9ybSkpO1xyXG4gICAgICAvLyB0aGlzLnNlbGVjdGVkSW5uZXJGb3JtLk9sZE5hbWUgPSBpbm5lbnJGb3JtLk5hbWU7XHJcbiAgICAgIHRoaXMuaW5uZXJGb3JtQ29uZmlnLmR5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JTcGVjaWZpY0NvbmZpZy5mb3JtID1cclxuICAgICAgICBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGlubmVuckZvcm0pKTtcclxuICAgICAgdGhpcy5pbm5lckZvcm1Db25maWcuZHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvclNwZWNpZmljQ29uZmlnLmZvcm0uT2xkTmFtZSA9XHJcbiAgICAgICAgaW5uZW5yRm9ybS5OYW1lO1xyXG5cclxuICAgICAgdGhpcy5pbmRleFNlbGVjdGVkRmllbGQgPSB0aGlzLmZvcm0uRmllbGRzLmZpbmRJbmRleChcclxuICAgICAgICAoZikgPT4gZi5MYWJlbCA9PT0gaW5uZW5yRm9ybS5OYW1lXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyB0aGlzLnNlbGVjdGVkSW5uZXJGb3JtID0gbmV3IEZvcm0oKTtcclxuICAgICAgdGhpcy5pbm5lckZvcm1Db25maWcuZHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvclNwZWNpZmljQ29uZmlnLmZvcm0gPVxyXG4gICAgICAgIG5ldyBGb3JtKCk7XHJcbiAgICAgIHRoaXMuaW5kZXhTZWxlY3RlZElubmVyRm9ybSA9IG51bGw7XHJcbiAgICAgIHRoaXMuaW5kZXhTZWxlY3RlZEZpZWxkID0gbnVsbDtcclxuICAgIH1cclxuICAgIC8vIHRoaXMuZGlhbG9nSW5uZXJGb3JtUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ0lubmVyRm9ybSwge1xyXG5cclxuICAgIHRoaXMuaW5uZXJGb3JtQ29uZmlnLmR5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JTcGVjaWZpY0NvbmZpZy5pbm5lckZvcm1SZWYgPVxyXG4gICAgICB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nSW5uZXJGb3JtLCB7XHJcbiAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICAgIHdpZHRoOiBcIjg1JVwiLFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBzY2F0ZW5hdG8gYWwgc2FsdmF0YWdnaW8gZGkgdW5hIGZvcm0gZGkgZGV0dGFnbGlvLlxyXG4gICAqIEBwYXJhbSBldmVudCBGb3JtIGNyZWF0YS9tb2RpZmljYXRhIGRhbGwndXRlbnRlLiBTZSDDqCBudWxsIGFsbG9yYSBsJ3V0ZW50ZSBoYSBhYmJhbmRvbmF0byBsYSBjb25maWd1cmF6aW9uZS5cclxuICAgKi9cclxuICBvblNhdmVPckV4aXRJbm5lckZvcm0oZXZlbnQ6IEZvcm0pIHtcclxuICAgIGlmIChldmVudCAhPSBudWxsKSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmZvcm0uTmFtZSA9PT0gZXZlbnQuTmFtZSB8fFxyXG4gICAgICAgICh0aGlzLmZvcm0uSW5uZXJGb3JtcyAmJlxyXG4gICAgICAgICAgdGhpcy5mb3JtLklubmVyRm9ybXMuZmluZChcclxuICAgICAgICAgICAgKGEsIGkpID0+XHJcbiAgICAgICAgICAgICAgYS5OYW1lID09PSBldmVudC5OYW1lICYmXHJcbiAgICAgICAgICAgICAgKHRoaXMuaW5kZXhTZWxlY3RlZElubmVyRm9ybSA9PSBudWxsXHJcbiAgICAgICAgICAgICAgICA/IHRydWVcclxuICAgICAgICAgICAgICAgIDogdGhpcy5pbmRleFNlbGVjdGVkSW5uZXJGb3JtICE9PSBpKVxyXG4gICAgICAgICAgKSkgfHxcclxuICAgICAgICAodGhpcy5mb3JtLkZpZWxkcyAmJlxyXG4gICAgICAgICAgdGhpcy5pbmRleFNlbGVjdGVkSW5uZXJGb3JtID09IG51bGwgJiZcclxuICAgICAgICAgIHRoaXMuZm9ybS5GaWVsZHMuZmluZChcclxuICAgICAgICAgICAgKGYsIGkpID0+XHJcbiAgICAgICAgICAgICAgZi5MYWJlbCA9PT0gZXZlbnQuTmFtZSAmJlxyXG4gICAgICAgICAgICAgICh0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZCA9PSBudWxsXHJcbiAgICAgICAgICAgICAgICA/IHRydWVcclxuICAgICAgICAgICAgICAgIDogdGhpcy5pbmRleFNlbGVjdGVkRmllbGQgIT09IGkpXHJcbiAgICAgICAgICApKVxyXG4gICAgICApIHtcclxuICAgICAgICBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5XYXJuaW5nKFxyXG4gICAgICAgICAgXCJJbXBvc3NpYmlsZSBpbnNlcmlyZSBkdWUgZm9ybSBkaSBkZXR0YWdsaW8gY29uIGxvIHN0ZXNzbyBub21lLlwiXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgICBcIkltcG9zc2liaWxlIGluc2VyaXJlIGR1ZSBmb3JtIGRpIGRldHRhZ2xpbyBjb24gbG8gc3Rlc3NvIG5vbWUuXCJcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBpbm5lckZvcm1GaWVsZDogQmFzZUZpZWxkID0gbmV3IEJhc2VGaWVsZCgpO1xyXG4gICAgICBpbm5lckZvcm1GaWVsZC5OYW1lID0gZXZlbnQuTmFtZS5zcGxpdChcIiBcIikuam9pbihcIl9cIik7XHJcbiAgICAgIGlubmVyRm9ybUZpZWxkLkxhYmVsID0gZXZlbnQuTmFtZTtcclxuICAgICAgaW5uZXJGb3JtRmllbGQuRmllbGRUeXBlID0gRmllbGRUeXBlRW51bVtcIkZvcm0gZGkgZGV0dGFnbGlvXCJdO1xyXG4gICAgICBpbm5lckZvcm1GaWVsZC5GaWVsZEdyb3VwID1cclxuICAgICAgICB0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZCAhPSBudWxsXHJcbiAgICAgICAgICA/IHRoaXMuZm9ybS5GaWVsZHNbdGhpcy5pbmRleFNlbGVjdGVkRmllbGRdLkZpZWxkR3JvdXBcclxuICAgICAgICAgIDogbnVsbDtcclxuXHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmluZGV4U2VsZWN0ZWRJbm5lckZvcm0gIT0gbnVsbCAmJlxyXG4gICAgICAgIHRoaXMuaW5kZXhTZWxlY3RlZElubmVyRm9ybSA+PSAwXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuZm9ybS5Jbm5lckZvcm1zW3RoaXMuaW5kZXhTZWxlY3RlZElubmVyRm9ybV0gPSBldmVudDtcclxuICAgICAgICB0aGlzLmZvcm0uRmllbGRzW3RoaXMuaW5kZXhTZWxlY3RlZEZpZWxkXSA9IGlubmVyRm9ybUZpZWxkO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICghdGhpcy5mb3JtLklubmVyRm9ybXMpIHtcclxuICAgICAgICAgIHRoaXMuZm9ybS5Jbm5lckZvcm1zID0gbmV3IEFycmF5PEZvcm0+KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZm9ybS5Jbm5lckZvcm1zLnB1c2goZXZlbnQpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5GaWVsZHMucHVzaChpbm5lckZvcm1GaWVsZCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZWxvYWRGaWVsZHNUYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kaWFsb2dJbm5lckZvcm1SZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgYXByaXJlIGlsIGRpYWxvZyBkaSBjcmVhemlvbmUvbW9kaWZpY2EgZGVsbGUgYWN0aW9uLlxyXG4gICAqIFNlIGlsIHBhcmFtZXRybyBwYXNzYXRvIMOoIG51bGwgc29ubyBpbiBhZ2dpdW50YSBhbHRyaW1lbnRpIHNvbm8gaW4gbW9kaWZpY2EuXHJcbiAgICogQHBhcmFtIGFjdGlvbiBBY3Rpb25PblJlY29yZCBkYSBtb2RpZmljYXJlIChzZSBudWxsIGFsbG9yYSB2YWRvIGluIGFkZCkuXHJcbiAgICovXHJcbiAgb3BlbkFjdGlvbk9uUmVjb3JkRGlhbG9nKGFjdGlvbjogQWN0aW9uT25SZWNvcmQgPSBudWxsKSB7XHJcbiAgICBpZiAoYWN0aW9uKSB7XHJcbiAgICAgIHRoaXMuaW5kZXhTZWxlY3RlZEFjdGlvbiA9IHRoaXMuZm9ybS5BY3Rpb25zT25SZWNvcmQuaW5kZXhPZihhY3Rpb24pO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQWN0aW9uID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShhY3Rpb24pKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRBY3Rpb24gPSBuZXcgQWN0aW9uT25SZWNvcmQoKTtcclxuICAgICAgdGhpcy5pbmRleFNlbGVjdGVkQWN0aW9uID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMuY3JlYXRlQWN0aW9uT25SZWNvcmRGb3JtKCk7XHJcbiAgICB0aGlzLmRpYWxvZ0FjdGlvbk9uUmVjb3JkUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ0FjdGlvbk9uUmVjb3JkLCB7XHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgIHdpZHRoOiBcIjc1JVwiLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGFwcmlyZSBpbCBkaWFsb2cgZGkgY3JlYXppb25lL21vZGlmaWNhIGRlaSBib3R0b25pIGF6aW9uZS5cclxuICAgKiBTZSBpbCBwYXJhbWV0cm8gcGFzc2F0byDDqCBudWxsIHNvbm8gaW4gYWdnaXVudGEgYWx0cmltZW50aSBzb25vIGluIG1vZGlmaWNhLlxyXG4gICAqIEBwYXJhbSBhY3Rpb24gQWN0aW9uQnV0dG9uIGRhIG1vZGlmaWNhcmUgKHNlIG51bGwgYWxsb3JhIHZhZG8gaW4gYWRkKS5cclxuICAgKi9cclxuICBvcGVuQWN0aW9uQnV0dG9uRGlhbG9nKGV2OiBBY3Rpb25CdXR0b24gPSBudWxsKSB7XHJcblxyXG4gICAgaWYgKGV2ICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEFjdGlvbkJ1dHRvbiA9IGV2O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEFjdGlvbkJ1dHRvbiA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kaWFsb2dBY3Rpb25CdXR0b25SZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nQWN0aW9uQnV0dG9uLCB7XHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgIHdpZHRoOiBcIjc1JVwiLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGltcG9zdGFyZSBpIHZhbG9yaSBkYSBzdWdnZXJpcmUgbmVsbCdhdXRvY29tcGxldGUgZGVsIGNhbXBvIEZvcm11bGEuXHJcbiAgICogVmllbmUgc2NhdGVuYXRvIGFsIGZvY3VzIChpbiBxdWVzdG8gY2FzbyB2aWVuZSBwYXNzYXRvIGlsIHBhcmFtZXRybyBhIG51bGwgcGVyIGRpZmZlcmVuemlhcmxvXHJcbiAgICogZGFsbCdldmVudG8gZGkgY2xpY2sgc3VsbGEgdGFzdGllcmEpIGUgYWwga2V5dXAgc3VsbCdpbnB1dCAoaWwgcGFyYW1ldHJvIMOoIGRpdmVyc28gZGEgbnVsbCkuXHJcbiAgICogQHBhcmFtIGtleWJvYXJkRXZlbnQgRXZlbnRvIHNjYXRlbmF0byBhbCBrZXl1cCBzdWxsYSB0YXN0aWVyYS4gU2UgbnVsbCBhbGxvcmEgaWwgbWV0b2RvIMOoIHN0YXRvIGludm9jYXRvIGRhbCBmb2N1cyBzdWxsJ2lucHV0LlxyXG4gICAqIEBzdW1tYXJ5IEFnZ2lvcm5hIGwnZWxlbmNvIGRlaSBzdWdnZXJpbWVudGkgcGVyIGwnYXV0b2NvbXBsZXRlIHNlIGwndXRlbnRlIGVzZWd1ZSBpbCBmb2N1cyBzdWxsJ2lucHV0XHJcbiAgICogb3BwdXJlIGFsIGtleXVwIHN1bGxhIHRhc3RpZXJhIGRpIHVuIHRhc3RvIGRpdmVyc28gZGFsbGUgZnJlY2NlLlxyXG4gICAqL1xyXG4gIHNldEFjdGlvbkF1dG9jb21wbGV0ZU9wdGlvbnMoa2V5Ym9hcmRFdmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgLy8gQ3JlbyBsJ2FycmF5IHBlciBsJ2F1dG9jb21wbGV0ZSBzb2xvIHNlIHN0byBmYWNlbmRvIGlsIGZvY3VzIHN1bGwnaW5wdXQgbyBzZSBzdG8gcHJlbWVuZG8gdW4gdGFzdG9cclxuICAgIC8vIHN1bGxhIHRhc3RpZXJhIGRpdmVyc28gZGFsbGUgZnJlY2NlIChpbiBxdWVzdCd1bHRpbW8gY2Fzbywgc2Ugbm9uIHZpZW5lIGVzZWd1aXRvIGlsIGZpbHRybyBzdWxsJ2V2ZW50byxcclxuICAgIC8vIG5vbiBzaSBwdcOyIHNlbGV6aW9uYXJlIHVuIHN1Z2dlcmltZW50byBkZWxsJ2F1dG9jb21wbGV0ZSBwZXJjaMOoIGFsIGNsaWNrIHZlcnJlYmJlIHJpY2FyaWNhdG8gbCdhcnJheSBlXHJcbiAgICAvLyBzaSBwcmVkZXJlYmJlIGxhIHNlbGV6aW9uZSBhcHBlbmEgZmF0dGEpLlxyXG4gICAgaWYgKCFrZXlib2FyZEV2ZW50IHx8ICFrZXlib2FyZEV2ZW50LmNvZGUuaW5jbHVkZXMoXCJBcnJvd1wiKSkge1xyXG4gICAgICB0aGlzLmFjdGlvbkF1dG9jb21wbGV0ZU9wdGlvbnMgPVxyXG4gICAgICAgIFV0aWxpdHlIZWxwZXJTZXJ2aWNlLkdldEF1dG9jb21wbGV0ZU9wdGlvbnMoXHJcbiAgICAgICAgICB0aGlzLmZvcm0uRmllbGRzLFxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEFjdGlvbi5BY3Rpb25cclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHNhbHZhcmUgbCdhemlvbmUgY3JlYXRhL21vZGlmaWNhdGUuXHJcbiAgICovXHJcbiAgc2F2ZUFjdGlvbk9uUmVjb3JkKCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmZvcm0uQWN0aW9uc09uUmVjb3JkICYmXHJcbiAgICAgIHRoaXMuZm9ybS5BY3Rpb25zT25SZWNvcmQuZmluZChcclxuICAgICAgICAoYSwgaSkgPT5cclxuICAgICAgICAgIGEuTmFtZSA9PT0gdGhpcy5zZWxlY3RlZEFjdGlvbi5OYW1lICYmXHJcbiAgICAgICAgICAodGhpcy5pbmRleFNlbGVjdGVkQWN0aW9uID09IG51bGxcclxuICAgICAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgICAgIDogdGhpcy5pbmRleFNlbGVjdGVkQWN0aW9uICE9PSBpKVxyXG4gICAgICApXHJcbiAgICApIHtcclxuICAgICAgRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UuV2FybmluZyhcclxuICAgICAgICBcIkltcG9zc2liaWxlIGluc2VyaXJlIGR1ZSBhY3Rpb24gY29uIGxvIHN0ZXNzbyBub21lLlwiXHJcbiAgICAgICk7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkltcG9zc2liaWxlIGluc2VyaXJlIGR1ZSBhY3Rpb24gY29uIGxvIHN0ZXNzbyBub21lLlwiKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pbmRleFNlbGVjdGVkQWN0aW9uICE9IG51bGwgJiYgdGhpcy5pbmRleFNlbGVjdGVkQWN0aW9uID49IDApIHtcclxuICAgICAgdGhpcy5mb3JtLkFjdGlvbnNPblJlY29yZFt0aGlzLmluZGV4U2VsZWN0ZWRBY3Rpb25dID0gdGhpcy5zZWxlY3RlZEFjdGlvbjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICghdGhpcy5mb3JtLkFjdGlvbnNPblJlY29yZCkge1xyXG4gICAgICAgIHRoaXMuZm9ybS5BY3Rpb25zT25SZWNvcmQgPSBuZXcgQXJyYXk8QWN0aW9uT25SZWNvcmQ+KCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5mb3JtLkFjdGlvbnNPblJlY29yZC5wdXNoKHRoaXMuc2VsZWN0ZWRBY3Rpb24pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jbG9zZURpYWxvZ0FjdGlvbk9uUmVjb3JkKCk7XHJcbiAgICB0aGlzLnNldEFjdGlvbk9yZGluYWxQb3NpdGlvbigpO1xyXG4gICAgdGhpcy5yZWxvYWRBY3Rpb25zT25SZWNvcmRUYWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBzYWx2YXJlIGwnYXppb25lIGNyZWF0YS9tb2RpZmljYXRlLlxyXG4gICAqL1xyXG4gIHNhdmVBY3Rpb25CdXR0b25zKGVsZW1lbnQ6IEFjdGlvbkJ1dHRvbikge1xyXG5cclxuICAgIGlmIChlbGVtZW50ICE9IG51bGwpIHtcclxuICAgICAgaWYgKHRoaXMuZm9ybS5BY3Rpb25CdXR0b25zICE9IG51bGwpIHtcclxuICAgICAgICB2YXIgZXhpc3RzQWN0aW9uQnV0dG9ucyA9IHRoaXMuZm9ybS5BY3Rpb25CdXR0b25zLmZpbmQoeCA9PiB4LkJ1dHRvblVuaXF1ZUlkID09IGVsZW1lbnQuQnV0dG9uVW5pcXVlSWQpO1xyXG4gICAgICAgIGlmIChleGlzdHNBY3Rpb25CdXR0b25zID09IG51bGwpIHtcclxuICAgICAgICAgIC8vIE51b3ZvIHRyaWdnZXJcclxuICAgICAgICAgIHRoaXMuZm9ybS5BY3Rpb25CdXR0b25zLnB1c2goZWxlbWVudCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGV4aXN0c0FjdGlvbkJ1dHRvbnMgPSBlbGVtZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmZvcm0uQWN0aW9uQnV0dG9ucyA9IG5ldyBBcnJheTxBY3Rpb25CdXR0b24+KCk7XHJcbiAgICAgICAgdGhpcy5mb3JtLkFjdGlvbkJ1dHRvbnMucHVzaChlbGVtZW50KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFjdGlvbkJ1dHRvbnNUYWJsZS5yZWxvYWREYXRhdGFibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRpYWxvZ0FjdGlvbkJ1dHRvblJlZi5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBjaGl1ZGVyZSBpbCBkaWFsb2cgZGVsbGEgaW5uZXIgZm9ybS5cclxuICAgKi9cclxuICBjbG9zZURpYWxvZ0lubmVyRm9ybSgpIHtcclxuICAgIHRoaXMuaW5uZXJGb3JtUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGNoaXVkZXJlIGlsIGRpYWxvZyBkaSBnZXN0aW9uZSBkZWxsZSBhY3Rpb24uXHJcbiAgICovXHJcbiAgY2xvc2VEaWFsb2dBY3Rpb25PblJlY29yZCgpIHtcclxuICAgIHRoaXMuZGlhbG9nQWN0aW9uT25SZWNvcmRSZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgY2hpdWRlcmUgaWwgZGlhbG9nIGRpIGdlc3Rpb25lIGRlbGxlIGFjdGlvbiBidXR0b25zLlxyXG4gICAqL1xyXG4gIGNsb3NlRGlhbG9nQWN0aW9uQnV0dG9ucygpIHtcclxuICAgIHRoaXMuZGlhbG9nQWN0aW9uQnV0dG9uUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHNlZ25hcmUgY29tZSBjb25jbHVzYSBsYSBjcmVhemlvbmUgZGVsbGEgZm9ybSBlIHBlciBjcmVhcm5lIHVuYSBjb3BpYVxyXG4gICAqIGRhIHZpc2FsaXp6YXJlIGNvbWUgYW50ZXByaW1hLlxyXG4gICAqIEBwYXJhbSBjb21wbGV0ZWQgU2UgVFJVRSBzZWduYSBsYSBmb3JtIGNvbWUgY29uY2x1c2EgZSBuZSBjcmVhIHVuYSBjb3BpYSBkYSB2aXN1YWxpenphcmVcclxuICAgKi9cclxuICBzZXRGb3JtU3RhdHVzKGNvbXBsZXRlZDogYm9vbGVhbikge1xyXG4gICAgaWYgKGNvbXBsZXRlZCkge1xyXG4gICAgICB0aGlzLmZvcm1Db21wbGV0ZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLnByZXZpZXdGb3JtID0gdGhpcy5zYWZlQ2xvbmUodGhpcy5mb3JtKTtcclxuICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcInByZXZpZXdGb3JtXCIsIHRoaXMucHJldmlld0Zvcm0pXHJcblxyXG4gICAgICAvLyBQZXIgdmlzdWFsaXp6YXJlIGNvcnJldHRhbWVudGUgbCdvYW50ZXByaW1hIGRlbGxhIGZvcm0gYXBwZW5hIGNyZWF0YVxyXG4gICAgICAvLyBiaXNvZ25hIHZhbG9yaXp6YXJlIGxhIHByb3ByaWV0w6AgTmFtZSBkZWkgY2FtcGkgZGVsbGEgZm9ybSBlIGRlbGxlIElubmVyRm9ybXMuXHJcbiAgICAgIHRoaXMucHJldmlld0Zvcm0uRmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgZmllbGQuTmFtZSA9IGZpZWxkLkxhYmVsLnNwbGl0KFwiIFwiKS5qb2luKFwiX1wiKTtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLnByZXZpZXdGb3JtLklubmVyRm9ybXMgJiZcclxuICAgICAgICB0aGlzLnByZXZpZXdGb3JtLklubmVyRm9ybXMubGVuZ3RoID4gMFxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnByZXZpZXdGb3JtLklubmVyRm9ybXMuZm9yRWFjaCgoZm9ybSkgPT4ge1xyXG4gICAgICAgICAgZm9ybS5GaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICAgICAgZmllbGQuTmFtZSA9IGZpZWxkLkxhYmVsLnNwbGl0KFwiIFwiKS5qb2luKFwiX1wiKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZvcm1Db21wbGV0ZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5wcmV2aWV3Rm9ybSA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHNhbHZhcmUgbGEgZm9ybSBjcmVhdGEgYWxsYSBmaW5lIGRlbCB3aXphcmQuXHJcbiAgICogU2Ugw6ggc3RhdG8gY29uZmlndXJhdG8gdW4gZW5kUG9pbnQgcGVyIGlsIHNhbHZhdGFnZ2lvIHZpZW5lIGVmZmV0dHVhdGEgdW5hIGNoaWFtYXRhIGFsIHNlcnZlciBwYXNzYW5kbyBsJ29nZ2V0byBkYSBzYWx2YXJlXHJcbiAgICogbmVsIGJvZHkgZGVsbGEgY2hpYW1hdGEsIGFsdHJpbWVudGkgc2NhdGVuYSBsJ2V2ZW50byBcInNhdmVGb3JtRXZlbnRcIi5cclxuICAgKi9cclxuICBzYXZlRm9ybSgpIHtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uICE9IG51bGwgJiZcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uRm9ybXMuU2F2ZUVuZFBvaW50XHJcbiAgICApIHtcclxuXHJcbiAgICAgIGlmICghdGhpcy5zYXZlZCkge1xyXG4gICAgICAgIHRoaXMuYmFja3VwRm9ybSA9IHRoaXMuc2FmZUNsb25lKHRoaXMuZm9ybSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy5zYWZlQ2xvbmUodGhpcy5iYWNrdXBGb3JtKTtcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICAgIC8vIFBlciBmYXIgYXJyaXZhcmUgYWwgc2VydmVyIGwnYXJyYXkgZGkgRmllbGQgYmlzb2duYSBwYXNzYXJsaSBzdSBBbnlcclxuICAgICAgdGhpcy5mb3JtLk9iamVjdEZpZWxkcyA9IFtdO1xyXG4gICAgICB0aGlzLmZvcm0uT2JqZWN0RmxkRXh0cmFDb25maWdWYWx1ZXMgPSBbXTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmZvcm0uRmxkRXh0cmFDb25maWdWYWx1ZXMgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuZm9ybS5PYmplY3RGbGRFeHRyYUNvbmZpZ1ZhbHVlcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtLkZsZEV4dHJhQ29uZmlnVmFsdWVzKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZm9ybS5GaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuXHJcbiAgICAgICAgLy8gUmltdW92byBpbCBGb3JtR3JvdXAgZGkgcHJldmlldyAocHJvcHJpZXTDoCBjbGllbnQtb25seSwgY3JlYSByaWZlcmltZW50byBjaXJjb2xhcmUgaW4gSlNPTi5zdHJpbmdpZnkpXHJcbiAgICAgICAgZmllbGQuRm9ybUZvcm1Hcm91cCA9IG51bGw7XHJcblxyXG4gICAgICAgIC8vIFRyYXNmb3JtbyBpbCBkYXRhZ2V0dGVyIGluIEJhc2U2NFxyXG4gICAgICAgIGZpZWxkLkRhdGFHZXR0ZXJWYWx1ZUJhc2U2NFN0cmluZyA9IGJ0b2EoSlNPTi5zdHJpbmdpZnkoZmllbGQuRGF0YUdldHRlcikpO1xyXG4gICAgICAgIGZpZWxkLkRhdGFHZXR0ZXIgPSBudWxsO1xyXG5cclxuICAgICAgICBpZiAoZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW0uQWxsZWdhdG8pIHtcclxuICAgICAgICAgIGNvbnN0IGZsZEE6IGFueSA9IGZpZWxkO1xyXG4gICAgICAgICAgZmxkQS5NZXRhZGF0YU9iamVjdEZpZWxkcyA9IGZsZEEuTWV0YWRhdGFGaWVsZHM7XHJcbiAgICAgICAgICBmbGRBLk1ldGFkYXRhRmllbGRzID0gW107XHJcbiAgICAgICAgICB0aGlzLmZvcm0uT2JqZWN0RmllbGRzLnB1c2goZmxkQSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChmaWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVtcIkNhbXBvIG51bWVyaWNvXCJdKSB7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAoPE51bWVyaWNGaWVsZD5maWVsZCkuTWF4VmFsdWUgPT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgICAgICAgKDxOdW1lcmljRmllbGQ+ZmllbGQpLk1heFZhbHVlID09IG51bGxcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgKDxOdW1lcmljRmllbGQ+ZmllbGQpLk1heFZhbHVlID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICg8TnVtZXJpY0ZpZWxkPmZpZWxkKS5NaW5WYWx1ZSA9PSB1bmRlZmluZWQgfHxcclxuICAgICAgICAgICAgICAoPE51bWVyaWNGaWVsZD5maWVsZCkuTWluVmFsdWUgPT0gbnVsbFxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAoPE51bWVyaWNGaWVsZD5maWVsZCkuTWluVmFsdWUgPSAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmZvcm0uT2JqZWN0RmllbGRzLnB1c2goZmllbGQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZm9ybS5GaWVsZHMgPSBudWxsO1xyXG4gICAgICB0aGlzLmZvcm0uT3JnYUlEID0gdGhpcy5vcmdhSUQ7XHJcbiAgICAgIGlmICh0aGlzLmZvcm0uQ3JlYXRpb25EYXRlID09IG51bGwpIHtcclxuICAgICAgICB0aGlzLmZvcm0uQ3JlYXRpb25EYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgICB0aGlzLmZvcm0uQ3JlYXRpb25Vc2VyID0gdGhpcy5Vc2VySUQ7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5mb3JtLk1vZGlmeVVzZXIgPSB0aGlzLlVzZXJJRDtcclxuXHJcbiAgICAgIHRoaXMuZm9ybS5PYmplY3RUcmlnZ2VycyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5UcmlnZ2Vycyk7XHJcbiAgICAgIHRoaXMuZm9ybS5UcmlnZ2VycyA9IG51bGw7XHJcblxyXG4gICAgICB0aGlzLmZvcm0uT2JqZWN0QWN0aW9uQnV0dG9ucyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS5BY3Rpb25CdXR0b25zKTtcclxuICAgICAgdGhpcy5mb3JtLkFjdGlvbkJ1dHRvbnMgPSBudWxsO1xyXG5cclxuICAgICAgaWYgKHRoaXMuZm9ybS5Db2RlID09IG51bGwpIHtcclxuICAgICAgICB0aGlzLnNldENvZGUodGhpcy5mb3JtLk5hbWUpO1xyXG4gICAgICB9XHJcblxyXG5cclxuICAgICAgLy8gY2hpYW1hdGEgZWZmZXR0aXZhXHJcbiAgICAgIGNvbnN0IGR5bmFtaWNNb2R1bGVQYXJhbXMgPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgUGFyYW1OYW1lOiBcIkZvcm1cIixcclxuICAgICAgICAgIFBhcmFtVmFsdWU6IHRoaXMuZm9ybSxcclxuICAgICAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIkluIEJvZHlcIl0sXHJcbiAgICAgICAgfSxcclxuICAgICAgXTtcclxuXHJcbiAgICAgIHRoaXMuc2F2ZWQgPSB0cnVlO1xyXG5cclxuXHJcblxyXG4gICAgICB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcclxuICAgICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5Gb3Jtcy5TYXZlRW5kUG9pbnQsXHJcbiAgICAgICAgZHluYW1pY01vZHVsZVBhcmFtcyxcclxuICAgICAgICAocmVzKSA9PiB7XHJcbiAgICAgICAgICBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5TdWNjZXNzKFwiRm9ybSBzYWx2YXRhIGNvbiBzdWNjZXNzbyFcIik7XHJcbiAgICAgICAgICB0aGlzLmFmdGVyU2F2ZUZvcm1FdmVudC5lbWl0KHRoaXMuZm9ybSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLkVycm9yKFwiRXJyb3JlIG5lbCBzYWx2YXRhZ2dpbyBkZWxsYSBmb3JtXCIpO1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yZSBuZWwgc2FsdmF0YWdnaW8gZGVsbGEgZm9ybVwiLCBlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zYXZlRm9ybUV2ZW50LmVtaXQodGhpcy5mb3JtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBGVU5aSU9OSSBQUklWQVRFXHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgaW1wb3N0YXJlIGxhIGZvcm0gZSBjb25maWd1cmFyZSBjb2xvbm5lL0Zvcm1Hb3VycC5cclxuICAgKiBAcGFyYW0gZm9ybSBGb3JtIGRhIHV0aWxpenphcmUuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRGb3JtQW5kQ29uZmlndXJlKGZvcm06IEZvcm0gPSBudWxsKSB7XHJcblxyXG4gICAgaWYgKGZvcm0gIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmZvcm0gPSBmb3JtO1xyXG4gICAgICB0aGlzLmZvcm0uT3JnYUlEID0gdGhpcy5vcmdhSUQ7XHJcbiAgICAgIGlmICh0aGlzLmZvcm0uT2JqZWN0VHJpZ2dlcnMgIT0gbnVsbCAmJiB0aGlzLmZvcm0uT2JqZWN0VHJpZ2dlcnMgIT0gXCJcIikge1xyXG4gICAgICAgIHRoaXMuZm9ybS5UcmlnZ2VycyA9IEpTT04ucGFyc2UodGhpcy5mb3JtLk9iamVjdFRyaWdnZXJzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmZvcm0uVHJpZ2dlcnMgPSBuZXcgQXJyYXk8VHJpZ2dlcj4oKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuZm9ybS5PYmplY3RBY3Rpb25CdXR0b25zICE9IG51bGwgJiYgdGhpcy5mb3JtLk9iamVjdEFjdGlvbkJ1dHRvbnMgIT0gXCJcIikge1xyXG4gICAgICAgIHRoaXMuZm9ybS5BY3Rpb25CdXR0b25zID0gSlNPTi5wYXJzZSh0aGlzLmZvcm0uT2JqZWN0QWN0aW9uQnV0dG9ucyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLkFjdGlvbkJ1dHRvbnMgPSBuZXcgQXJyYXk8QWN0aW9uQnV0dG9uPigpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodHlwZW9mIHRoaXMuZm9ybS5GaWVsZHMgIT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICAgIHRoaXMuZm9ybS5GaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuXHJcbiAgICAgICAgICAvLyBUcmFzZm9ybW8gaWwgQmFzZTY0U3RyaW5nIGRlbCBEYXRhZ2V0dGVyIG5lbCBEYXRhZ2V0dGVyIHZlcm8gZSBwcm9wcmlvXHJcbiAgICAgICAgICBpZiAoZmllbGQuRGF0YUdldHRlclZhbHVlQmFzZTY0U3RyaW5nICE9IG51bGwpIHtcclxuICAgICAgICAgICAgZmllbGQuRGF0YUdldHRlciA9IEpTT04ucGFyc2UoYXRvYihmaWVsZC5EYXRhR2V0dGVyVmFsdWVCYXNlNjRTdHJpbmcpKTtcclxuICAgICAgICAgICAgaWYgKGZpZWxkLkRhdGFHZXR0ZXIgPT0gbnVsbCkgeyBmaWVsZC5EYXRhR2V0dGVyID0gbmV3IERhdGFHZXR0ZXIoKTsgfVxyXG4gICAgICAgICAgICBmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJUeXBlID0gZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVHlwZSA9PSBudWxsID8gRGF0YUdldHRlclR5cGVFbnVtLk1hbnVhbGUgOiBmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJUeXBlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZmllbGQuRGF0YUdldHRlciA9IG5ldyBEYXRhR2V0dGVyKCk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgZmllbGQuRGF0YUdldHRlclZhbHVlQmFzZTY0U3RyaW5nID0gbnVsbDtcclxuXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIENhbXBpIGNvbiBEYXRhR2V0dGVyU3BlZWNoVGV4dDogY2FyaWNhcmUgaWwgUXVlcnlFZGl0b3IgaW4gc2lsZW50IHBlciBwb3BvbGFyZSBpbCBEYXRhR2V0dGVyVmFsdWUgdmlhIEFJXHJcbiAgICAgICAgdGhpcy5wZW5kaW5nQWlEYXRhR2V0dGVyRmllbGRzID0gdGhpcy5mb3JtLkZpZWxkcy5maWx0ZXIoZiA9PlxyXG4gICAgICAgICAgZi5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJUeXBlID09PSBEYXRhR2V0dGVyVHlwZUVudW1bJ0RhIGRhdGFiYXNlJ10gJiZcclxuICAgICAgICAgICEhZi5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJTcGVlY2hUZXh0ICYmXHJcbiAgICAgICAgICAhZi5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMucGVuZGluZ0FpRGF0YUdldHRlckZpZWxkcy5sZW5ndGggPiAwICYmIHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQgIT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5wcm9jZXNzTmV4dEFpRGF0YUdldHRlckZpZWxkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbmZpZ3VyZUNvbHVtbnMoKTtcclxuICAgIHRoaXMuY3JlYXRlRm9ybUZvcm0oKTtcclxuICAgIGluamVjdEdvb2dsZUZvbnRzRnJvbUZvcm0odGhpcy5mb3JtKTtcclxuICAgIHRoaXMucmVmcmVzaEZpZWxkVHlwZU9wdGlvbnMoKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUZvcm1HcmFwaGljU3VnZ2VzdElucHV0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93Rm9ybUdyYXBoaWNTdWdnZXN0SW5wdXQgPSAhdGhpcy5zaG93Rm9ybUdyYXBoaWNTdWdnZXN0SW5wdXQ7XHJcbiAgICBpZiAoIXRoaXMuc2hvd0Zvcm1HcmFwaGljU3VnZ2VzdElucHV0KSB0aGlzLmZvcm1HcmFwaGljU2NvcGUgPSAnYWxsJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVmcmVzaEZpZWxkVHlwZU9wdGlvbnMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBzZWVuVHlwZXMgPSBuZXcgU2V0PG51bWJlcj4oKTtcclxuICAgIGNvbnN0IG9wdGlvbnM6IHsgdmFsdWU6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9W10gPSBbXTtcclxuICAgIGZvciAoY29uc3QgZiBvZiAodGhpcy5mb3JtPy5GaWVsZHMgPz8gW10pKSB7XHJcbiAgICAgIGlmIChzZWVuVHlwZXMuaGFzKGYuRmllbGRUeXBlKSkgY29udGludWU7XHJcbiAgICAgIHNlZW5UeXBlcy5hZGQoZi5GaWVsZFR5cGUpO1xyXG4gICAgICBjb25zdCBsYWJlbCA9IChFcXBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29tcG9uZW50LkZJRUxEX1RZUEVfTEFCRUxTIGFzIGFueSlbZi5GaWVsZFR5cGVdID8/IGBUaXBvICR7Zi5GaWVsZFR5cGV9YDtcclxuICAgICAgb3B0aW9ucy5wdXNoKHsgdmFsdWU6IGB0eXBlXyR7Zi5GaWVsZFR5cGV9YCwgbGFiZWwgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnByZXNlbnRGaWVsZFR5cGVPcHRpb25zID0gb3B0aW9ucztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbmZpZ3VyYSBsZSBjb2xvbm5lIHBlciBsZSB0YWJlbGxlIG5lY2Vzc2FyaWUgYWxsYSBjcmVhemlvbmUgZGVsbGEgZm9ybTpcclxuICAgKiAgLSBwZXIgbGEgdmlzdWFsaXp6YXppb25lIGRlaSBjYW1waSBpbnNlcml0aVxyXG4gICAqICAtIHBlciBsZSBmb3JtIGRpIGRldHRhZ2xpbyBjcmVhdGVcclxuICAgKiAgLSBwZXIgbGUgYXppb25pIGNvbmZpZ3VyYXRlIHN1aSByZWNvcmQgZGVsbGEgZm9ybVxyXG4gICAqL1xyXG5cclxuXHJcblxyXG5cclxuICBwcml2YXRlIGNvbmZpZ3VyZUNvbHVtbnMoKSB7XHJcbiAgICB0aGlzLmZpZWxkc0NvbHVtbnMgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBrZXk6IFwiYWN0aW9uXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJcIixcclxuICAgICAgICB0eXBlOiBUeXBlQ29sdW1uLk1lbnVBY3Rpb24sXHJcbiAgICAgICAgYnV0dG9uTWVudUljb246IFwiZG90cy12ZXJ0aWNhbFwiLFxyXG4gICAgICAgIHN0eWxlczogeyBmbGV4OiBcIjAgMCA0cmVtXCIgfSxcclxuICAgICAgICBhY3Rpb25zOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6IFwiTW9kaWZpY2FcIixcclxuICAgICAgICAgICAgaWNvbjogXCJlZGl0XCIsXHJcbiAgICAgICAgICAgIGZuOiAoZWxlbWVudCwgaW5kZXgsIGNvbCkgPT4gdGhpcy5lZGl0RmllbGQoZWxlbWVudCksXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiBcIkR1cGxpY2Egc290dG9cIixcclxuICAgICAgICAgICAgaWNvbjogXCJjb3B5XCIsXHJcbiAgICAgICAgICAgIGZuOiAoZWxlbWVudCwgaW5kZXgsIGNvbCkgPT4gdGhpcy5kdXBsaWNhdGVGaWVsZChlbGVtZW50LCBlbGVtZW50Lk9yZGluYWxQb3NpdGlvbiArIDEpLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogXCJEdXBsaWNhIGluIGZvbmRvXCIsXHJcbiAgICAgICAgICAgIGljb246IFwiY29weVwiLFxyXG4gICAgICAgICAgICBmbjogKGVsZW1lbnQsIGluZGV4LCBjb2wpID0+IHRoaXMuZHVwbGljYXRlRmllbGQoZWxlbWVudCksXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiBcIkVsaW1pbmFcIixcclxuICAgICAgICAgICAgaWNvbjogXCJ0cmFzaFwiLFxyXG4gICAgICAgICAgICBmbjogKGVsZW1lbnQsIGluZGV4LCBjb2wpID0+IHRoaXMuZGVsZXRlRWxlbWVudChlbGVtZW50LCBcIkZpZWxkc1wiKSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAvLyB7XHJcbiAgICAgICAgICAvLyAgIG5hbWU6IFwiU3Bvc3RhIHN1XCIsXHJcbiAgICAgICAgICAvLyAgIGljb246IFwiYXJyb3dfdXB3YXJkXCIsXHJcbiAgICAgICAgICAvLyAgIGZuOiAoZWxlbWVudCwgaW5kZXgsIGNvbCkgPT5cclxuICAgICAgICAgIC8vICAgICB0aGlzLm1vdmVFbGVtZW50KGVsZW1lbnQsIHRydWUsIFwiRmllbGRzXCIpLFxyXG4gICAgICAgICAgLy8gICBkaXNhYmxlZDogKGVsZW1lbnQpID0+IHRoaXMuZm9ybS5GaWVsZHMuaW5kZXhPZihlbGVtZW50KSA9PT0gMCxcclxuICAgICAgICAgIC8vIH0sXHJcbiAgICAgICAgICAvLyB7XHJcbiAgICAgICAgICAvLyAgIG5hbWU6IFwiU3Bvc3RhIGdpw7lcIixcclxuICAgICAgICAgIC8vICAgaWNvbjogXCJhcnJvd19kb3dud2FyZFwiLFxyXG4gICAgICAgICAgLy8gICBmbjogKGVsZW1lbnQsIGluZGV4LCBjb2wpID0+XHJcbiAgICAgICAgICAvLyAgICAgdGhpcy5tb3ZlRWxlbWVudChlbGVtZW50LCBmYWxzZSwgXCJGaWVsZHNcIiksXHJcbiAgICAgICAgICAvLyAgIGRpc2FibGVkOiAoZWxlbWVudCkgPT5cclxuICAgICAgICAgIC8vICAgICB0aGlzLmZvcm0uRmllbGRzLmluZGV4T2YoZWxlbWVudCkgPj0gdGhpcy5mb3JtLkZpZWxkcy5sZW5ndGggLSAxLFxyXG4gICAgICAgICAgLy8gfSxcclxuICAgICAgICBdLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAga2V5OiBcIkZpZWxkVHlwZVwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiVGlwb2xvZ2lhXCIsXHJcbiAgICAgICAgdHlwZTogVHlwZUNvbHVtbi5FbnVtLFxyXG4gICAgICAgIGVudW1Nb2RlbDogRmllbGRUeXBlRW51bSxcclxuICAgICAgICBzdHlsZXM6IHsgZmxleDogXCIwIDAgMTJyZW1cIiB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7IGtleTogXCJMYWJlbFwiLCBkaXNwbGF5OiBcIkxhYmVsXCIsIHN0eWxlczogeyBmbGV4OiBcIjAgMCA4cmVtXCIgfSB9LFxyXG4gICAgICB7XHJcbiAgICAgICAga2V5OiBcIkRlc2NyaXB0aW9uXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJEZXNjcml6aW9uZVwiLFxyXG4gICAgICAgIHN0eWxlczogeyBmbGV4OiBcIjAgMCAxMnJlbVwiIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBrZXk6IFwiRGF0YUdldHRlci5EYXRhR2V0dGVyVHlwZVwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiVGlwbyBSZWN1cGVybyBEYXRpXCIsXHJcbiAgICAgICAgdHlwZTogVHlwZUNvbHVtbi5FbnVtLFxyXG4gICAgICAgIGVudW1Nb2RlbDogRGF0YUdldHRlclR5cGVFbnVtLFxyXG4gICAgICAgIHN0eWxlczogeyBmbGV4OiBcIjAgMCAxMnJlbVwiIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBrZXk6IFwiUmVxdWlyZWRcIixcclxuICAgICAgICBkaXNwbGF5OiBcIk9iYmxpZ2F0b3Jpb1wiLFxyXG4gICAgICAgIHZhbHVlOiAoZWxlbWVudCkgPT4gZWxlbWVudC5SZXF1aXJlZCxcclxuICAgICAgICB0eXBlOiBUeXBlQ29sdW1uLkJvb2xlYW4sXHJcbiAgICAgICAgYm9vbGVhblZhbHVlczoge1xyXG4gICAgICAgICAgdHJ1ZTogJzxpIGNsYXNzPVwiZmEgZmEtY2hlY2sgc3VjY2Vzcy1jb2xvclwiPjwvaT4nLFxyXG4gICAgICAgICAgZmFsc2U6ICc8aSBjbGFzcz1cImZhIGZhLWNsb3NlIGVycm9yLWNvbG9yXCI+PC9pPicsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzdHlsZXM6IHsgZmxleDogXCIwIDAgNXJlbVwiLCBjZWxsQWxpZ25tZW50OiBDZWxsQWxpZ25tZW50RW51bS5DRU5URVIgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGtleTogXCJGb3JtdWxhXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJDYWxjb2xhdG9cIixcclxuICAgICAgICB2YWx1ZTogKGVsZW1lbnQpID0+IGVsZW1lbnQuRm9ybXVsYSAhPSBudWxsICYmIGVsZW1lbnQuRm9ybXVsYSAhPSAnJyxcclxuICAgICAgICB0eXBlOiBUeXBlQ29sdW1uLkJvb2xlYW4sXHJcbiAgICAgICAgYm9vbGVhblZhbHVlczoge1xyXG4gICAgICAgICAgdHJ1ZTogJzxpIGNsYXNzPVwiZmEgZmEtY2hlY2sgc3VjY2Vzcy1jb2xvclwiPjwvaT4nLFxyXG4gICAgICAgICAgZmFsc2U6ICc8aSBjbGFzcz1cImZhIGZhLWNsb3NlIGVycm9yLWNvbG9yXCI+PC9pPicsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzdHlsZXM6IHsgZmxleDogXCIwIDAgNXJlbVwiLCBjZWxsQWxpZ25tZW50OiBDZWxsQWxpZ25tZW50RW51bS5DRU5URVIgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGtleTogXCJJbkxpc3RWaWV3XCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJWaXNpYmlsZSBpbiBDb21waWxhemlvbmVcIixcclxuICAgICAgICB2YWx1ZTogKGVsZW1lbnQpID0+IGVsZW1lbnQuSW5MaXN0VmlldyxcclxuICAgICAgICB0eXBlOiBUeXBlQ29sdW1uLkJvb2xlYW4sXHJcbiAgICAgICAgYm9vbGVhblZhbHVlczoge1xyXG4gICAgICAgICAgdHJ1ZTogJzxpIGNsYXNzPVwiZmEgZmEtY2hlY2sgc3VjY2Vzcy1jb2xvclwiPjwvaT4nLFxyXG4gICAgICAgICAgZmFsc2U6ICc8aSBjbGFzcz1cImZhIGZhLWNsb3NlIGVycm9yLWNvbG9yXCI+PC9pPicsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzdHlsZXM6IHsgZmxleDogXCIwIDAgN3JlbVwiLCBjZWxsQWxpZ25tZW50OiBDZWxsQWxpZ25tZW50RW51bS5DRU5URVIgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGtleTogXCJJbnZpc2liaWxpdHlcIixcclxuICAgICAgICBkaXNwbGF5OiBcIk9jY3VwYSBzcGF6aW8/XCIsXHJcbiAgICAgICAgdmFsdWU6IChlbGVtZW50KSA9PiBlbGVtZW50LkluTGlzdFZpZXcgfHwgZWxlbWVudC5JbnZpc2liaWxpdHkgPT0gRmllbGRJbnZpc2liaWxpdHlFbnVtW1wiTkFTQ09TVE8gQ09OIEFSRUEgVklTSUJJTEVcIl0sXHJcbiAgICAgICAgdHlwZTogVHlwZUNvbHVtbi5Cb29sZWFuLFxyXG4gICAgICAgIGJvb2xlYW5WYWx1ZXM6IHtcclxuICAgICAgICAgIHRydWU6ICc8aSBjbGFzcz1cImZhIGZhLWNoZWNrIHN1Y2Nlc3MtY29sb3JcIj48L2k+JyxcclxuICAgICAgICAgIGZhbHNlOiAnPGkgY2xhc3M9XCJmYSBmYS1jbG9zZSBlcnJvci1jb2xvclwiPjwvaT4nLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc3R5bGVzOiB7IGZsZXg6IFwiMCAwIDdyZW1cIiwgY2VsbEFsaWdubWVudDogQ2VsbEFsaWdubWVudEVudW0uQ0VOVEVSIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBrZXk6IFwiVmlzaWJsZUlmXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJWaXNpYmlsaXTDoCBjb25kaXppb25hdGFcIixcclxuICAgICAgICB2YWx1ZTogKGVsZW1lbnQpID0+IGVsZW1lbnQuVmlzaWJsZUlmICE9IG51bGwgJiYgZWxlbWVudC5WaXNpYmxlSWYgIT0gXCJcIixcclxuICAgICAgICB0eXBlOiBUeXBlQ29sdW1uLkJvb2xlYW4sXHJcbiAgICAgICAgYm9vbGVhblZhbHVlczoge1xyXG4gICAgICAgICAgdHJ1ZTogJzxpIGNsYXNzPVwiZmEgZmEtY2hlY2sgc3VjY2Vzcy1jb2xvclwiPjwvaT4nLFxyXG4gICAgICAgICAgZmFsc2U6ICc8aSBjbGFzcz1cImZhIGZhLWNsb3NlIGVycm9yLWNvbG9yXCI+PC9pPicsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzdHlsZXM6IHsgZmxleDogXCIwIDAgN3JlbVwiLCBjZWxsQWxpZ25tZW50OiBDZWxsQWxpZ25tZW50RW51bS5DRU5URVIgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGtleTogXCJBbnN3ZXJTdHlsZS5Jbkxpc3RWaWV3XCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJWaXNpYmlsZSBuZWxsYSByaXNwb3N0YVwiLFxyXG4gICAgICAgIHZhbHVlOiAoZWxlbWVudCkgPT4gIWVsZW1lbnQuQW5zd2VyU3R5bGUgfHwgZWxlbWVudC5BbnN3ZXJTdHlsZSAmJiBlbGVtZW50LkFuc3dlclN0eWxlLkluTGlzdFZpZXcsXHJcbiAgICAgICAgdHlwZTogVHlwZUNvbHVtbi5Cb29sZWFuLFxyXG4gICAgICAgIGJvb2xlYW5WYWx1ZXM6IHtcclxuICAgICAgICAgIHRydWU6ICc8aSBjbGFzcz1cImZhIGZhLWNoZWNrIHN1Y2Nlc3MtY29sb3JcIj48L2k+JyxcclxuICAgICAgICAgIGZhbHNlOiAnPGkgY2xhc3M9XCJmYSBmYS1jbG9zZSBlcnJvci1jb2xvclwiPjwvaT4nLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc3R5bGVzOiB7IGZsZXg6IFwiMCAwIDVyZW1cIiwgY2VsbEFsaWdubWVudDogQ2VsbEFsaWdubWVudEVudW0uQ0VOVEVSIH0sXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5mb3JtLkZvcm1TY2FsYXJUeXBlICYmXHJcbiAgICAgIHRoaXMuZm9ybS5Gb3JtU2NhbGFyVHlwZSAhPSBGb3JtU2NhbGFyVHlwZUVudW0uU2VtcGxpY2VcclxuICAgICkge1xyXG4gICAgICB0aGlzLmZpZWxkc0NvbHVtbnMuc3BsaWNlKDEsIDAsIHtcclxuICAgICAgICBrZXk6IFwiRmllbGRHcm91cFwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiU2V6aW9uZVwiLFxyXG4gICAgICAgIHR5cGU6IFR5cGVDb2x1bW4uRXh0ZXJuYWxUZW1wbGF0ZSxcclxuICAgICAgICBleHRlcm5hbFRlbXBsYXRlOiB0aGlzLmZpZWxkU2VjdGlvbkNvbHVtblRlbXBsYXRlLFxyXG4gICAgICAgIHN0eWxlczogeyBmbGV4OiBcIjAgMCAxNHJlbVwiIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgICAvLyB0aGlzLmZpZWxkc0NvbHVtbnMucHVzaChcclxuICAgICAgLy8gICB7XHJcbiAgICAgIC8vICAgICBrZXk6IFwiRmllbGRHcm91cFwiLFxyXG4gICAgICAvLyAgICAgZGlzcGxheTogXCJTZXppb25lXCIsXHJcbiAgICAgIC8vICAgICB0eXBlOiBUeXBlQ29sdW1uLkV4dGVybmFsVGVtcGxhdGUsXHJcbiAgICAgIC8vICAgICBleHRlcm5hbFRlbXBsYXRlOiB0aGlzLmZpZWxkU2VjdGlvbkNvbHVtblRlbXBsYXRlLFxyXG4gICAgICAvLyAgICAgc3R5bGVzOiB7IGZsZXg6IFwiMCAwIDE0cmVtXCIgfVxyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFjdGlvbkJ1dHRvbnNDb2x1bW5zID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAga2V5OiBcImFjdGlvblwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiXCIsXHJcbiAgICAgICAgdHlwZTogVHlwZUNvbHVtbi5NZW51QWN0aW9uLFxyXG4gICAgICAgIGJ1dHRvbk1lbnVJY29uOiBcImRvdHMtdmVydGljYWxcIixcclxuICAgICAgICBzdHlsZXM6IHsgZmxleDogXCIwIDAgNiVcIiB9LFxyXG4gICAgICAgIGFjdGlvbnM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogXCJNb2RpZmljYVwiLFxyXG4gICAgICAgICAgICBpY29uOiBcImVkaXRcIixcclxuICAgICAgICAgICAgZm46IChlbGVtZW50LCBpbmRleCwgY29sKSA9PiB0aGlzLm9wZW5BY3Rpb25CdXR0b25EaWFsb2coZWxlbWVudCksXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiBcIkVsaW1pbmFcIixcclxuICAgICAgICAgICAgaWNvbjogXCJ0cmFzaFwiLFxyXG4gICAgICAgICAgICBmbjogKGVsZW1lbnQsIGluZGV4LCBjb2wpID0+XHJcbiAgICAgICAgICAgICAgdGhpcy5kZWxldGVBY3Rpb25CdXR0b24oZWxlbWVudCksXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXSxcclxuICAgICAgfSxcclxuICAgICAgeyBrZXk6IFwiQnV0dG9uTGFiZWxcIiwgZGlzcGxheTogXCJFdGljaGV0dGFcIiwgc3R5bGVzOiB7IGZsZXg6IFwiMCAwIDMwJVwiIH0gfSxcclxuICAgICAge1xyXG4gICAgICAgIGtleTogXCJCdXR0b25Db2RlXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJDb2RpY2VcIixcclxuICAgICAgICBzdHlsZXM6IHsgZmxleDogXCIwIDAgMjAlXCIgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGtleTogXCJJY29uXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJJY29uYVwiLFxyXG4gICAgICAgIHN0eWxlczogeyBmbGV4OiBcIjAgMCAxMCVcIiB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAga2V5OiBcIlNob3dJblwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiU2V6aW9uaVwiLFxyXG4gICAgICAgIHZhbHVlOiAoZWwpID0+IHtcclxuICAgICAgICAgIHZhciBmaW5hbFRleHQgPSBcIlwiO1xyXG4gICAgICAgICAgaWYgKGVsLlNob3dJbiA9PSBudWxsIHx8IGVsLlNob3dJbi5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJOZXNzdW5hXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbC5TaG93SW4uZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgZmluYWxUZXh0ICs9IEFjdGlvbkZsYWdFbnVtW2VsZW1lbnRdICsgXCIgLyBcIjtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgcmV0dXJuIGZpbmFsVGV4dDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHN0eWxlczogeyBmbGV4OiBcIjAgMCAyMCVcIiB9LFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuXHJcbiAgICB0aGlzLmFjdGlvbnNPblJlY29yZENvbHVtbnMgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBrZXk6IFwiYWN0aW9uXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJcIixcclxuICAgICAgICB0eXBlOiBUeXBlQ29sdW1uLk1lbnVBY3Rpb24sXHJcbiAgICAgICAgYnV0dG9uTWVudUljb246IFwiZG90cy12ZXJ0aWNhbFwiLFxyXG4gICAgICAgIHN0eWxlczogeyBmbGV4OiBcIjAgMCA2JVwiIH0sXHJcbiAgICAgICAgYWN0aW9uczogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiBcIk1vZGlmaWNhXCIsXHJcbiAgICAgICAgICAgIGljb246IFwiZWRpdFwiLFxyXG4gICAgICAgICAgICBmbjogKGVsZW1lbnQsIGluZGV4LCBjb2wpID0+IHRoaXMub3BlbkFjdGlvbk9uUmVjb3JkRGlhbG9nKGVsZW1lbnQpLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogXCJFbGltaW5hXCIsXHJcbiAgICAgICAgICAgIGljb246IFwidHJhc2hcIixcclxuICAgICAgICAgICAgZm46IChlbGVtZW50LCBpbmRleCwgY29sKSA9PlxyXG4gICAgICAgICAgICAgIHRoaXMuZGVsZXRlRWxlbWVudChlbGVtZW50LCBcIkFjdGlvbnNPblJlY29yZFwiKSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6IFwiU3Bvc3RhIHN1XCIsXHJcbiAgICAgICAgICAgIGljb246IFwiYXJyb3ctdXBcIixcclxuICAgICAgICAgICAgZm46IChlbGVtZW50LCBpbmRleCwgY29sKSA9PlxyXG4gICAgICAgICAgICAgIHRoaXMubW92ZUVsZW1lbnQoZWxlbWVudCwgdHJ1ZSwgXCJBY3Rpb25zT25SZWNvcmRcIiksXHJcbiAgICAgICAgICAgIGRpc2FibGVkOiAoZWxlbWVudCkgPT5cclxuICAgICAgICAgICAgICB0aGlzLmZvcm0uQWN0aW9uc09uUmVjb3JkLmluZGV4T2YoZWxlbWVudCkgPT09IDAsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiBcIlNwb3N0YSBnacO5XCIsXHJcbiAgICAgICAgICAgIGljb246IFwiYXJyb3ctZG93blwiLFxyXG4gICAgICAgICAgICBmbjogKGVsZW1lbnQsIGluZGV4LCBjb2wpID0+XHJcbiAgICAgICAgICAgICAgdGhpcy5tb3ZlRWxlbWVudChlbGVtZW50LCBmYWxzZSwgXCJBY3Rpb25zT25SZWNvcmRcIiksXHJcbiAgICAgICAgICAgIGRpc2FibGVkOiAoZWxlbWVudCkgPT5cclxuICAgICAgICAgICAgICB0aGlzLmZvcm0uQWN0aW9uc09uUmVjb3JkLmluZGV4T2YoZWxlbWVudCkgPj1cclxuICAgICAgICAgICAgICB0aGlzLmZvcm0uQWN0aW9uc09uUmVjb3JkLmxlbmd0aCAtIDEsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHsga2V5OiBcIkljb25cIiwgZGlzcGxheTogXCJJY29uYVwiLCBzdHlsZXM6IHsgZmxleDogXCIgMCAwIDE1JVwiIH0gfSxcclxuICAgICAgeyBrZXk6IFwiTmFtZVwiLCBkaXNwbGF5OiBcIk5vbWVcIiwgc3R5bGVzOiB7IGZsZXg6IFwiIDAgMCAyMCVcIiB9IH0sXHJcbiAgICAgIHsga2V5OiBcIkFjdGlvblwiLCBkaXNwbGF5OiBcIkF6aW9uZVwiIH0sXHJcbiAgICBdO1xyXG5cclxuICAgIHRoaXMudHJpZ2dlcnNDb2x1bW5zID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAga2V5OiBcImFjdGlvblwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiXCIsXHJcbiAgICAgICAgdHlwZTogVHlwZUNvbHVtbi5NZW51QWN0aW9uLFxyXG4gICAgICAgIGJ1dHRvbk1lbnVJY29uOiBcImRvdHMtdmVydGljYWxcIixcclxuICAgICAgICBzdHlsZXM6IHsgZmxleDogXCIwIDAgNiVcIiB9LFxyXG4gICAgICAgIGFjdGlvbnM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogXCJNb2RpZmljYVwiLFxyXG4gICAgICAgICAgICBpY29uOiBcImVkaXRcIixcclxuICAgICAgICAgICAgZm46IChlbGVtZW50LCBpbmRleCwgY29sKSA9PiB0aGlzLm9wZW5UcmlnZ2Vyc0RpYWxvZyhlbGVtZW50KSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6IFwiRWxpbWluYVwiLFxyXG4gICAgICAgICAgICBpY29uOiBcInRyYXNoXCIsXHJcbiAgICAgICAgICAgIGZuOiAoZWxlbWVudCwgaW5kZXgsIGNvbCkgPT5cclxuICAgICAgICAgICAgICB0aGlzLmRlbGV0ZVRyaWdnZXIoZWxlbWVudCksXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXSxcclxuICAgICAgfSxcclxuICAgICAgeyBrZXk6IFwiZGVzY3JpcHRpb25cIiwgZGlzcGxheTogXCJEZXNjcml6aW9uZVwiLCBzdHlsZXM6IHsgZmxleDogXCIgMCAwIDE1JVwiIH0gfSxcclxuICAgICAgeyBrZXk6IFwiZXhlY3V0aW9uXCIsIGRpc3BsYXk6IFwiQ29zYSBlc2VndWVcIiwgc3R5bGVzOiB7IGZsZXg6IFwiIDAgMCAxNSVcIiB9IH0sXHJcbiAgICBdO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWEgaWwgRm9ybUdyb3VwIHBlciBsJ29nZ2V0dG8gRm9ybVxyXG4gICAqL1xyXG4gIHByaXZhdGUgY3JlYXRlRm9ybUZvcm0oKSB7XHJcbiAgICB0aGlzLmZvcm1Gb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgQ29kZTogW3RoaXMuZm9ybS5Db2RlXSxcclxuICAgICAgTmFtZTogW3RoaXMuZm9ybS5OYW1lLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgRGVzY3JpcHRpb246IFt0aGlzLmZvcm0uRGVzY3JpcHRpb25dLFxyXG4gICAgICBGb3JtU2NhbGFyVHlwZTogW3RoaXMuZm9ybS5Gb3JtU2NhbGFyVHlwZSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICB9KTtcclxuICAgIHRoaXMub25DaGFuZ2VGb3JtU2NhbGFyVHlwZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRHJhZyBhbmQgRHJvcCBkZWxsZSBjb2xvbm5lIGRlbCBmb3JtXHJcbiAgICovXHJcblxyXG4gIG9uRHJhZ1JlbGVhc2VkKGV2ZW50KSB7XHJcblxyXG4gIH1cclxuXHJcbiAgb25EcmFnRW5kZWQoZXZlbnQpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNldEZpZWxkT3JkaW5hbFBvc2l0aW9uKCk7XHJcbiAgICAgIHRoaXMucmVsb2FkRmllbGRzVGFibGUoKTtcclxuICAgIH0sIDEwMDApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYSBpbCBGb3JtR3JvdXAgZXByIGwnYWdnaXVudGEgbyBsYSBtb2RpZmljYSBkaSB1bmEgYWN0aW9uIHN1aSByZWNvcmQgZGVsbGEgRm9ybS5cclxuICAgKi9cclxuICBwcml2YXRlIGNyZWF0ZUFjdGlvbk9uUmVjb3JkRm9ybSgpIHtcclxuICAgIHRoaXMuYWN0aW9uT25SZWNvcmRGb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgTmFtZTogW3RoaXMuc2VsZWN0ZWRBY3Rpb24uTmFtZSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIEljb246IFt0aGlzLnNlbGVjdGVkQWN0aW9uLkljb24sIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBBY3Rpb246IFt0aGlzLnNlbGVjdGVkQWN0aW9uLkFjdGlvbiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoaXVkZSBpbCBkaWFsb2cgcGVyIGFnZ2l1bmdlcmUvbW9kaWZpY2FyZSB1biBGaWVsZCBzZW56YSBzYWx2YXJlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjbG9zZUZpZWxkRGlhbG9nKCkge1xyXG4gICAgaWYgKHRoaXMuZGlhbG9nRmllbGRSZWYgIT0gdW5kZWZpbmVkKSB0aGlzLmRpYWxvZ0ZpZWxkUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGdlc3RpcmUgbCdhcGVydHVyYSBkZWwgZGlhbG9nIHBlciBsYSBtb2RpZmljYSBkaSB1biBGaWVsZC5cclxuICAgKiBTZSBpbCBmaWVsZCDDqCBkaSB0aXBvIFwiRm9ybSBkaSBkZXR0YWdsaW9cIiBhcHJlIGlsIGRpYWxvZyBwZXIgbGEgbW9kaWZpY2EgZGkgdW5hXHJcbiAgICogSW5uZXJGb3JtIGFsdHJpbWVudGkgYXByZSBxdWVsbG8gcGVyIGxhIG1vZGlmaWNhIGRpIHVuIEZpZWxkLlxyXG4gICAqIEBwYXJhbSBmaWVsZCBDYW1wbyBkYSBtb2RpZmljYXJlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBlZGl0RmllbGQoZmllbGQ6IEJhc2VGaWVsZCkge1xyXG4gICAgaWYgKGZpZWxkLkZpZWxkVHlwZSAhPSBGaWVsZFR5cGVFbnVtW1wiRm9ybSBkaSBkZXR0YWdsaW9cIl0pIHtcclxuICAgICAgdGhpcy5vcGVuRmllbGREaWFsb2coZmllbGQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5vcGVuSW5uZXJGb3JtRGlhbG9nKFxyXG4gICAgICAgIHRoaXMuZm9ybS5Jbm5lckZvcm1zLmZpbmQoKGYpID0+IGYuTmFtZSA9PSBmaWVsZC5MYWJlbClcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgZ2VzdGlyZSBsYSBkdXBsaWNhemlvbmUgZGkgdW4gRmllbGQuXHJcbiAgICogQHBhcmFtIGZpZWxkIENhbXBvIGRhIG1vZGlmaWNhcmVcclxuICAgKi9cclxuICBwcml2YXRlIGR1cGxpY2F0ZUZpZWxkKGZpZWxkOiBCYXNlRmllbGQsIG9yZGluYWxQb3NpdGlvbiA9IG51bGwpIHtcclxuICAgIGlmIChmaWVsZC5GaWVsZFR5cGUgIT0gRmllbGRUeXBlRW51bVtcIkZvcm0gZGkgZGV0dGFnbGlvXCJdKSB7XHJcbiAgICAgIC8vIHJpY3JlbyBsJ29nZ2V0dG8gcGFzc2FuZG8gcGVyIHVuIGpzb25cclxuICAgICAgbGV0IGNsb25lRmllbGQ6IEJhc2VGaWVsZCA9IHRoaXMuc2FmZUNsb25lKGZpZWxkKTtcclxuXHJcbiAgICAgIGNsb25lRmllbGQuTGFiZWwgPSBmaWVsZFtcIkxhYmVsXCJdICsgXCJDb3B5XCI7XHJcbiAgICAgIGNsb25lRmllbGQuSUQgPSB0aGlzLmdlbmVyYXRlR1VJRCgpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRmllbGQgPSBuZXcgQmFzZUZpZWxkKCk7XHJcbiAgICAgIGlmIChvcmRpbmFsUG9zaXRpb24gPT0gbnVsbCkge1xyXG4gICAgICAgIGNsb25lRmllbGQuT3JkaW5hbFBvc2l0aW9uID0gdGhpcy5mb3JtLkZpZWxkcy5sZW5ndGggKyAxO1xyXG4gICAgICAgIHRoaXMuaW5kZXhTZWxlY3RlZEZpZWxkID0gbnVsbDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjbG9uZUZpZWxkLk9yZGluYWxQb3NpdGlvbiA9IG9yZGluYWxQb3NpdGlvbjtcclxuICAgICAgICB0aGlzLmluZGV4U2VsZWN0ZWRGaWVsZCA9IG9yZGluYWxQb3NpdGlvbjtcclxuICAgICAgICAvLyB1dGlsaXp6byBvcmRpbmFsIHBvc2l0aW9uIHBlciBpbmZpbGFyZSBpbCBjYW1wbyBjb3JyZXR0YW1ldG5lIG5lbGxhIGxpc3RhXHJcbiAgICAgICAgLy8gcGVyIGZhcmxvIHNlIG5vbiDDqCBudWxsbyBkZXZvIGNyZWFyZSBsbyBzcGF6aW9cclxuICAgICAgICB0aGlzLk9yZGluYXRlZEluc2VydEZpZWxkKGZpZWxkLCBvcmRpbmFsUG9zaXRpb24pXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBjbG9uZUZpZWxkU3RydWN0dXJlID0geyBmaWVsZDogY2xvbmVGaWVsZCwgcmVvcGVuOiAwIH1cclxuICAgICAgdGhpcy5vblNhdmVGaWVsZChjbG9uZUZpZWxkU3RydWN0dXJlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGFsZXJ0KFwibm9uIMOoIHBvc3NpYmlsZSBkdXBsaWNhcmUgdW5hIGZvcm0gZGkgZGV0dGFnbGlvXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBPcmRpbmF0ZWRJbnNlcnRGaWVsZChmaWVsZDogQmFzZUZpZWxkLCBvcmRpbmFsUG9zaXRpb24gPSAwKSB7XHJcbiAgICB0aGlzLmZvcm0uRmllbGRzLnNwbGljZShvcmRpbmFsUG9zaXRpb24sIDAsIGZpZWxkKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcG9zaXRpb25FeGNoYW5nZUZpZWxkcyhmaWVsZDE6IEJhc2VGaWVsZCwgZmllbGQyOiBCYXNlRmllbGQpIHtcclxuICAgIGNvbnN0IHRlbXAgPSBmaWVsZDE7XHJcbiAgICB0aGlzLmZvcm0uRmllbGRzW2ZpZWxkMS5PcmRpbmFsUG9zaXRpb25dID0gZmllbGQyO1xyXG4gICAgdGhpcy5mb3JtLkZpZWxkc1tmaWVsZDIuT3JkaW5hbFBvc2l0aW9uXSA9IHRlbXA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gY2hlIGdlbmVyYSB1bmEgbnVvdmEgR1VJRFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2VuZXJhdGVHVUlEKCkge1xyXG4gICAgcmV0dXJuICd4eHh4LXh4eHgteHh4eC14eHh4Jy5yZXBsYWNlKC9beHldL2csIGZ1bmN0aW9uIChjKSB7XHJcbiAgICAgIHZhciByID0gTWF0aC5yYW5kb20oKSAqIDE2IHwgMCxcclxuICAgICAgICB2ID0gYyA9PSAneCcgPyByIDogKHIgJiAweDMgfCAweDgpO1xyXG4gICAgICByZXR1cm4gdi50b1N0cmluZygxNik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgcmltdW92ZXJlIHVuIEZpZWxkIGFsbCdpbnRlcm5vIGRpIHVuYSBGb3JtLlxyXG4gICAqIFJpY2hpZWRlIGNvbmZlcm1hIGFsbCd1dGVudGUgcHJpbWEgZGkgcmltdW92ZXJsby5cclxuICAgKiBAcGFyYW0gZmllbGQgQmFzZUZpZWxkIGRhIHJpbXVvdmVyZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgZGVsZXRlRWxlbWVudChcclxuICAgIGVsZW1lbnQ6IEJhc2VGaWVsZCB8IEFjdGlvbk9uUmVjb3JkIHwgRm9ybSxcclxuICAgIHByb3BlcnR5TmFtZTogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5Db25maXJtKFxyXG4gICAgICBcIkVsaW1pbmFyZSBsJ2VsZW1lbnRvIHNlbGV6aW9uYXRvP1wiLFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5mb3JtW3Byb3BlcnR5TmFtZV0uc3BsaWNlKFxyXG4gICAgICAgICAgdGhpcy5mb3JtW3Byb3BlcnR5TmFtZV0uaW5kZXhPZihlbGVtZW50KSxcclxuICAgICAgICAgIDFcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT09IFwiRmllbGRzXCIpIHtcclxuICAgICAgICAgIHRoaXMuc2V0RmllbGRPcmRpbmFsUG9zaXRpb24oKTtcclxuICAgICAgICAgIHRoaXMucmVsb2FkRmllbGRzVGFibGUoKTtcclxuICAgICAgICAgIHRoaXMucmVmcmVzaEZpZWxkVHlwZU9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMucmVmcmVzaFByZXZpZXcoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5TmFtZSA9PT0gXCJBY3Rpb25zT25SZWNvcmRcIikge1xyXG4gICAgICAgICAgdGhpcy5zZXRBY3Rpb25PcmRpbmFsUG9zaXRpb24oKTtcclxuICAgICAgICAgIHRoaXMucmVsb2FkQWN0aW9uc09uUmVjb3JkVGFibGUoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5TmFtZSA9PT0gXCJBY3Rpb25CdXR0b25zXCIpIHtcclxuICAgICAgICAgIHRoaXMuc2V0QWN0aW9uQnV0dG9uT3JkaW5hbFBvc2l0aW9uKCk7XHJcbiAgICAgICAgICB0aGlzLnJlbG9hZEFjdGlvbkJ1dHRvbnNPblJlY29yZFRhYmxlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBmYWxzZSxcclxuICAgICAgXCJSaWNoaWVzdGEgY29uZmVybWFcIlxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgc3Bvc3RhcmUgdW4gY2FtcG8gYWxsJ2ludGVybm8gZGVsbGEgZm9ybS5cclxuICAgKiBAcGFyYW0gZmllbGQgT2dnZXR0byBkaSB0aXBvIEJhc2VGaWVsZCBkYSBzcG9zdGFyZS5cclxuICAgKiBAcGFyYW0gbW92ZVVwIFNlIFRSVUUgYWxsb3JhIHNwb3N0YSB2ZXJzbyBsJ2FsdG8gaWwgY2FtcG8gKGFiYmFzc2EgbCdpbmRpY2UpIGFsdHJpbWVudGkgaWwgY29udHJhcmlvLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgbW92ZUVsZW1lbnQoXHJcbiAgICBlbGVtZW50OiBCYXNlRmllbGQgfCBBY3Rpb25PblJlY29yZCxcclxuICAgIG1vdmVVcDogYm9vbGVhbixcclxuICAgIHByb3BlcnR5TmFtZTogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICBjb25zdCBzdGFydGluZ0luZGV4ID0gdGhpcy5mb3JtW3Byb3BlcnR5TmFtZV0uaW5kZXhPZihlbGVtZW50KTtcclxuICAgIGNvbnN0IGVuZGluZ0luZGV4ID0gc3RhcnRpbmdJbmRleCArIChtb3ZlVXAgPyAtMSA6IDEpO1xyXG5cclxuICAgIHRoaXMuZm9ybVtwcm9wZXJ0eU5hbWVdLnNwbGljZShzdGFydGluZ0luZGV4LCAxKTtcclxuICAgIHRoaXMuZm9ybVtwcm9wZXJ0eU5hbWVdLnNwbGljZShlbmRpbmdJbmRleCwgMCwgZWxlbWVudCk7XHJcblxyXG4gICAgaWYgKHByb3BlcnR5TmFtZSA9PT0gXCJGaWVsZHNcIikge1xyXG4gICAgICB0aGlzLnNldEZpZWxkT3JkaW5hbFBvc2l0aW9uKCk7XHJcbiAgICAgIHRoaXMucmVsb2FkRmllbGRzVGFibGUoKTtcclxuICAgIH0gZWxzZSBpZiAocHJvcGVydHlOYW1lID09PSBcIkFjdGlvbnNPblJlY29yZFwiKSB7XHJcbiAgICAgIHRoaXMuc2V0QWN0aW9uT3JkaW5hbFBvc2l0aW9uKCk7XHJcbiAgICAgIHRoaXMucmVsb2FkQWN0aW9uc09uUmVjb3JkVGFibGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEltcG9zdGEgbCdvcmRpbmFtZW50byBkZWxsZSBzZXppb25pIGNoZSBjb21wb25nb25vIGxhIGZvcm0uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRGb3JtRmllbGRHcm91cE9yZGluYWxQb3NpdGlvbigpIHtcclxuICAgIHRoaXMuZm9ybS5Gb3JtRmllbGRzR3JvdXBzLmZvckVhY2goKGcsIGkpID0+IChnLk9yZGluYWxQb3NpdGlvbiA9IGkpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEltcG9zdGEgbCdvcmRpbmFtZW50byBkZWkgY2FtcGkgYWxsJ2ludGVybm8gZGVsbGEgZm9ybSBpbiBiYXNlIGFsbCdvcmRpbmUgY2hlIGwndXRlbnRlXHJcbiAgICogaGEgZGVmaW5pdG8gbmVsbGEgdGFiZWxsYSBpbiBjdWkgc29ubyBtb3N0cmF0aVxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0RmllbGRPcmRpbmFsUG9zaXRpb24oKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtLkZpZWxkcykge1xyXG4gICAgICB0aGlzLmZvcm0uRmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgZmllbGQuT3JkaW5hbFBvc2l0aW9uID0gdGhpcy5mb3JtLkZpZWxkcy5pbmRleE9mKGZpZWxkKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHJpY2FyaWNhcmUgaSBkYXRpIGRlbGxhIHRhYmVsbGEgZGVpIGNhbXBpIGFnZ2l1bnRpIGluIHVuYSBmb3JtXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZWxvYWRGaWVsZHNUYWJsZSgpIHtcclxuICAgIGlmICh0aGlzLmZpZWxkc1RhYmxlKSB7XHJcbiAgICAgIHRoaXMuZmllbGRzVGFibGUucmVsb2FkRGF0YXRhYmxlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbXBvc3RhIGwnb3JkaW5hbWVudG8gZGVpIGNhbXBpIGFsbCdpbnRlcm5vIGRlbGxhIGZvcm0gaW4gYmFzZSBhbGwnb3JkaW5lIGNoZSBsJ3V0ZW50ZVxyXG4gICAqIGhhIGRlZmluaXRvIG5lbGxhIHRhYmVsbGEgaW4gY3VpIHNvbm8gbW9zdHJhdGlcclxuICAgKi9cclxuICBwcml2YXRlIHNldEFjdGlvbk9yZGluYWxQb3NpdGlvbigpIHtcclxuICAgIGlmICh0aGlzLmZvcm0uQWN0aW9uc09uUmVjb3JkKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5BY3Rpb25zT25SZWNvcmQuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XHJcbiAgICAgICAgYWN0aW9uLk9yZGluYWxQb3NpdGlvbiA9IHRoaXMuZm9ybS5BY3Rpb25zT25SZWNvcmQuaW5kZXhPZihhY3Rpb24pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEltcG9zdGEgbCdvcmRpbmFtZW50byBkZWkgY2FtcGkgYWxsJ2ludGVybm8gZGVsbGEgZm9ybSBpbiBiYXNlIGFsbCdvcmRpbmUgY2hlIGwndXRlbnRlXHJcbiAgICogaGEgZGVmaW5pdG8gbmVsbGEgdGFiZWxsYSBpbiBjdWkgc29ubyBtb3N0cmF0aVxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0QWN0aW9uQnV0dG9uT3JkaW5hbFBvc2l0aW9uKCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybS5BY3Rpb25CdXR0b25zKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5BY3Rpb25CdXR0b25zLmZvckVhY2goKGFjdGlvbikgPT4ge1xyXG4gICAgICAgIGFjdGlvbi5PcmRpbmFsUG9zaXRpb24gPSB0aGlzLmZvcm0uQWN0aW9uQnV0dG9ucy5pbmRleE9mKGFjdGlvbik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciByaWNhcmljYXJlIGkgZGF0aSBkZWxsYSB0YWJlbGxhIGRlbGxlIGF6aW9uaSBhZ2dpdW50aXZlIHN1aSByZWNvcmQgZGVsbGEgRm9ybS5cclxuICAgKi9cclxuICBwcml2YXRlIHJlbG9hZEFjdGlvbnNPblJlY29yZFRhYmxlKCkge1xyXG4gICAgaWYgKHRoaXMuYWN0aW9uc09uUmVjb3JkVGFibGUpIHtcclxuICAgICAgdGhpcy5hY3Rpb25zT25SZWNvcmRUYWJsZS5yZWxvYWREYXRhdGFibGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgcmljYXJpY2FyZSBpIGRhdGkgZGVsbGEgdGFiZWxsYSBkZWxsZSBhemlvbmkgYWdnaXVudGl2ZSBzdWkgcmVjb3JkIGRlbGxhIEZvcm0uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZWxvYWRBY3Rpb25CdXR0b25zT25SZWNvcmRUYWJsZSgpIHtcclxuICAgIGlmICh0aGlzLmFjdGlvbkJ1dHRvbnNUYWJsZSkge1xyXG4gICAgICB0aGlzLmFjdGlvbkJ1dHRvbnNUYWJsZS5yZWxvYWREYXRhdGFibGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBvbkV4dGVybmFsQ29tcG9uZW50T3V0KGV2OiBldmVudE91dCkge1xyXG4gICAgdGhpcy5vdXQuZW1pdChldik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByb2Nlc3NOZXh0QWlEYXRhR2V0dGVyRmllbGQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmN1cnJlbnRBaURhdGFHZXR0ZXJGaWVsZCA9IHRoaXMucGVuZGluZ0FpRGF0YUdldHRlckZpZWxkcy5zaGlmdCgpO1xyXG4gICAgdGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudC5pbnB1dFBhcmFtcy5jb25maWcubW9kZSA9IFF1ZXJ5RWRpdG9yTW9kZUVudW0uQ09NUE9TRVI7XHJcbiAgICB0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50LmlucHV0UGFyYW1zLmNvbmZpZy5sb2FkUXVlcnlTdGF0dXNlcyA9IG51bGw7XHJcbiAgICB0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50LmlucHV0UGFyYW1zLmNvbmZpZy5EYXRhR2V0dGVyU3BlZWNoVGV4dCA9IHRoaXMuY3VycmVudEFpRGF0YUdldHRlckZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclNwZWVjaFRleHQ7XHJcbiAgICAvLyBGb3J6YSBsYSAocmkpY3JlYXppb25lIGRlbCBjb21wb25lbnRlIGF6emVyYW5kbyBwcmltYSBpbCBmbGFnXHJcbiAgICB0aGlzLmFpRGF0YUdldHRlckxvYWRpbmcgPSBmYWxzZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4geyB0aGlzLmFpRGF0YUdldHRlckxvYWRpbmcgPSB0cnVlOyB9KTtcclxuICB9XHJcblxyXG4gIG9uQWlEYXRhR2V0dGVyT3V0KGV2OiBldmVudE91dCk6IHZvaWQge1xyXG4gICAgaWYgKGV2LkJlaGF2aW91cnMuaW5kZXhPZihcInNhdmUtcXVlcnlcIikgPT09IC0xIHx8ICF0aGlzLmN1cnJlbnRBaURhdGFHZXR0ZXJGaWVsZCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGRhdGEgPSBldi5QYXJhbXM7XHJcbiAgICB0aGlzLmN1cnJlbnRBaURhdGFHZXR0ZXJGaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZSA9IGRhdGE7XHJcbiAgICB0aGlzLmN1cnJlbnRBaURhdGFHZXR0ZXJGaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDYXJkaW5hbGl0eSA9IDE7XHJcbiAgICB0aGlzLmN1cnJlbnRBaURhdGFHZXR0ZXJGaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJIYXNSZXNldEJ1dHRvbiA9IHRydWU7XHJcblxyXG4gICAgLy8gRGF0YUdldHRlckNvbHVtbkZvcmNlIGRldmUgZXNzZXJlIGxhIHN0cmluZ2EgY2hpYXZlIChub24gbCdvZ2dldHRvKSBwZXIgZnVuemlvbmFyZSBjb24gZXFwLXNlbGVjdFxyXG4gICAgY29uc3QgY29sdW1uRm9yY2UgPSBkYXRhPy5EYXRhR2V0dGVyQ29sdW1uRm9yY2U7XHJcbiAgICBpZiAoY29sdW1uRm9yY2UpIHtcclxuICAgICAgLy8gVjIgc2VydmVyIHJlc3RpdHVpc2NlIHsga2V5LCB2YWx1ZSwga2V5UHJvcGVydHkgfSDigJQgZXN0cmFpYW1vIHNvbG8gaWwga2V5IHN0cmluZ1xyXG4gICAgICB0aGlzLmN1cnJlbnRBaURhdGFHZXR0ZXJGaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSA9XHJcbiAgICAgICAgdHlwZW9mIGNvbHVtbkZvcmNlID09PSAnb2JqZWN0JyA/IGNvbHVtbkZvcmNlLmtleSA6IGNvbHVtbkZvcmNlO1xyXG4gICAgfSBlbHNlIGlmIChkYXRhPy5zZWxlY3RlZEZpZWxkcz8ubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIGNvbnN0IHNmID0gZGF0YS5zZWxlY3RlZEZpZWxkc1swXTtcclxuICAgICAgdGhpcy5jdXJyZW50QWlEYXRhR2V0dGVyRmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgPVxyXG4gICAgICAgIHNmLkRhdGFiYXNlVGFibGVOYW1lICsgXCJfXCIgKyBzZi5Qcm9wZXJ0eU5hbWUgKyBcIl9fXCIgKyBzZi5DdXJyZW50VHJhbnNsYXRlLnJlcGxhY2UoLyAvZywgJ18nKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmN1cnJlbnRBaURhdGFHZXR0ZXJGaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJTcGVlY2hUZXh0ID0gbnVsbDtcclxuICAgIC8vIEF6emVyYSBEYXRhR2V0dGVyU3BlZWNoVGV4dCBkYWwgY29uZmlnIG9iamVjdCBwZXIgZXZpdGFyZSBjaGUgXCJNb2RpZmljYVwiIGxvIHJpbGFuY2lcclxuICAgIHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQuaW5wdXRQYXJhbXMuY29uZmlnLkRhdGFHZXR0ZXJTcGVlY2hUZXh0ID0gbnVsbDtcclxuICAgIHRoaXMuY3VycmVudEFpRGF0YUdldHRlckZpZWxkID0gbnVsbDtcclxuICAgIHRoaXMuYWlEYXRhR2V0dGVyTG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgIGlmICh0aGlzLnBlbmRpbmdBaURhdGFHZXR0ZXJGaWVsZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnByb2Nlc3NOZXh0QWlEYXRhR2V0dGVyRmllbGQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRSSUdHRVJTXHJcbiAgICovXHJcblxyXG4gIG9wZW5UcmlnZ2Vyc0RpYWxvZyhldjogVHJpZ2dlciA9IG51bGwpIHtcclxuXHJcbiAgICBpZiAoZXYgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVHJpZ2dlciA9IGV2O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFRyaWdnZXIgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGlhbG9nVHJpZ2dlcnNSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nVHJpZ2dlcnMsIHtcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IFwiNzUlXCIsXHJcbiAgICAgIGhlaWdodDogXCI4MCVcIixcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2F2ZVRyaWdnZXIoZWxlbWVudDogVHJpZ2dlcikge1xyXG5cclxuICAgIGlmIChlbGVtZW50ICE9IG51bGwpIHtcclxuICAgICAgaWYgKHRoaXMuZm9ybS5UcmlnZ2VycyAhPSBudWxsKSB7XHJcbiAgICAgICAgdmFyIGV4aXN0c1RyaWdnZXIgPSB0aGlzLmZvcm0uVHJpZ2dlcnMuZmluZCh4ID0+IHguQ0lEID09IGVsZW1lbnQuQ0lEKTtcclxuICAgICAgICBpZiAoZXhpc3RzVHJpZ2dlciA9PSBudWxsKSB7XHJcbiAgICAgICAgICAvLyBOdW92byB0cmlnZ2VyXHJcbiAgICAgICAgICB0aGlzLmZvcm0uVHJpZ2dlcnMucHVzaChlbGVtZW50KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZXhpc3RzVHJpZ2dlciA9IGVsZW1lbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZm9ybS5UcmlnZ2VycyA9IG5ldyBBcnJheTxUcmlnZ2VyPigpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5UcmlnZ2Vycy5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudHJpZ2dlcnNUYWJsZS5yZWxvYWREYXRhdGFibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRpYWxvZ1RyaWdnZXJzUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVUcmlnZ2VyKGVsZW1lbnQ6IFRyaWdnZXIpIHtcclxuICAgIHZhciBpbmRleCA9IHRoaXMuZm9ybS5UcmlnZ2Vycy5maW5kSW5kZXgoeCA9PiB4LkNJRCA9PSBlbGVtZW50LkNJRCk7XHJcbiAgICB0aGlzLmZvcm0uVHJpZ2dlcnMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIHRoaXMudHJpZ2dlcnNUYWJsZS5yZWxvYWREYXRhdGFibGUoKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUFjdGlvbkJ1dHRvbihlbGVtZW50OiBBY3Rpb25CdXR0b24pIHtcclxuICAgIHZhciBpbmRleCA9IHRoaXMuZm9ybS5BY3Rpb25CdXR0b25zLmZpbmRJbmRleCh4ID0+IHguQnV0dG9uQ29kZSA9PSBlbGVtZW50LkJ1dHRvbkNvZGUpO1xyXG4gICAgdGhpcy5mb3JtLkFjdGlvbkJ1dHRvbnMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIHRoaXMuYWN0aW9uQnV0dG9uc1RhYmxlLnJlbG9hZERhdGF0YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgb3BlbkFpRWRpdERpYWxvZygpIHtcclxuICAgIHRoaXMuYWlFZGl0UHJvbXB0ID0gXCJcIjtcclxuICAgIHRoaXMuYWlFZGl0QXR0YWNobWVudHMgPSBbXTtcclxuICAgIHRoaXMuYWlFZGl0QXV0b3NhdmUgPSBmYWxzZTtcclxuICAgIHRoaXMuYWlFZGl0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93QWlQcm9tcHRIaXN0b3J5ID0gdHJ1ZTtcclxuICAgIHRoaXMuZGlhbG9nQWlFZGl0UmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ0FpRWRpdCwge1xyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICB3aWR0aDogXCI2MCVcIixcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VBaUVkaXREaWFsb2coKSB7XHJcbiAgICB0aGlzLl9zdG9wQWlDb3VudGRvd24oKTtcclxuICAgIHRoaXMuZGlhbG9nQWlFZGl0UmVmLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBvcGVuQWlIaXN0b3J5RGlhbG9nKCkge1xyXG4gICAgdGhpcy5kaWFsb2dBaUhpc3RvcnlSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nQWlIaXN0b3J5LCB7XHJcbiAgICAgIGRpc2FibGVDbG9zZTogZmFsc2UsXHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICBtYXhIZWlnaHQ6ICc4MHZoJyxcclxuICAgICAgcG9zaXRpb246IHsgdG9wOiAnNDBweCcgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc3RvcEFpQ291bnRkb3duKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2FpQ291bnRkb3duUmVmKSB7XHJcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5fYWlDb3VudGRvd25SZWYpO1xyXG4gICAgICB0aGlzLl9haUNvdW50ZG93blJlZiA9IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLmFpRWRpdENvdW50ZG93biA9IDA7XHJcbiAgICB0aGlzLmFpRWRpdEVzdGltYXRlZFNlYyA9IDA7XHJcbiAgICB0aGlzLmFpRWRpdElzT3ZlcnRpbWUgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3N0YXJ0QWlDb3VudGRvd24oZXN0aW1hdGVkU2Vjb25kczogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zdG9wQWlDb3VudGRvd24oKTtcclxuICAgIHRoaXMuYWlFZGl0RXN0aW1hdGVkU2VjID0gTWF0aC5jZWlsKGVzdGltYXRlZFNlY29uZHMgKiAxLjIpO1xyXG4gICAgdGhpcy5haUVkaXRDb3VudGRvd24gPSB0aGlzLmFpRWRpdEVzdGltYXRlZFNlYztcclxuICAgIHRoaXMuX2FpQ291bnRkb3duUmVmID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICB0aGlzLmFpRWRpdENvdW50ZG93bi0tO1xyXG4gICAgICBpZiAodGhpcy5haUVkaXRDb3VudGRvd24gPCAwICYmICF0aGlzLmFpRWRpdElzT3ZlcnRpbWUpIHtcclxuICAgICAgICB0aGlzLmFpRWRpdElzT3ZlcnRpbWUgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9LCAxMDAwKTtcclxuICB9XHJcblxyXG4gIGNhbmNlbEFpRWRpdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2FpRWRpdENhbmNlbGxlZCA9IHRydWU7XHJcbiAgICB0aGlzLl9zdG9wQWlDb3VudGRvd24oKTtcclxuICAgIHRoaXMuYWlFZGl0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5haUZpZWxkU3VnZ2VzdExvYWRpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuZGlhbG9nQWlFZGl0UmVmPy5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgb25BaUVkaXRGb3JGaWVsZChmaWVsZENvZGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5haUVkaXRGaWVsZENvbnRleHQgPSB7IGNvZGU6IGZpZWxkQ29kZSB9O1xyXG4gICAgdGhpcy5vcGVuQWlFZGl0RGlhbG9nKCk7XHJcbiAgfVxyXG5cclxuICBvbkFpR3JhcGhpY1N1Z2dlc3QoZGF0YTogeyBjb2RlOiBzdHJpbmc7IGhpbnQ6IHN0cmluZyB9KTogdm9pZCB7XHJcbiAgICBjb25zdCByYXdIaW50ID0gZGF0YS5oaW50Py50cmltKCkgPz8gJyc7XHJcbiAgICBjb25zdCBmaWVsZExhYmVsID0gZGF0YS5jb2RlPy50cmltKCkgfHwgJ19jYW1wb3Nlbnphbm9tZV8nO1xyXG5cclxuICAgIGlmICghdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24/LkZvcm1zPy5TcGVlY2hUb0dyYXBoaWNzRW5kUG9pbnQpIHtcclxuICAgICAgLy8gRmFsbGJhY2s6IHBhc3NhIGlsIHJhd0hpbnQgbmVsbCdpbmplY3RlZFByb21wdDsgc2VuZEFpRWRpdCBlc3RyYXJyw6AgaWwgbW9kZWxsbyBkYSBlc3NvXHJcbiAgICAgIGNvbnN0IGluamVjdGVkUHJvbXB0ID0gcmF3SGludFxyXG4gICAgICAgID8gYFZvZ2xpbyBtb2RpZmljYXJlIGluIG1hbmllcmEgY29tcGxldGEgbGEgZ3JhZmljYSBkZWwgY2FtcG8gJyR7ZmllbGRMYWJlbH0nIHNlZ3VlbmRvIGluIG1hbmllcmEgaW5jb250ZXN0YWJpbGUgcXVlc3RhIGluZGljYXppb25lOiAnJHtyYXdIaW50fSdgXHJcbiAgICAgICAgOiBgVm9nbGlvIG1vZGlmaWNhcmUgaW4gbWFuaWVyYSBjb21wbGV0YSBsYSBncmFmaWNhIGRlbCBjYW1wbyAnJHtmaWVsZExhYmVsfScgY29uIHVubyBzdGlsZSBjcmVhdGl2byBlIG9yaWdpbmFsZSBhIHR1YSBzY2VsdGFgO1xyXG4gICAgICB0aGlzLmFpRWRpdEZpZWxkQ29udGV4dCA9IHsgY29kZTogZGF0YS5jb2RlIH07XHJcbiAgICAgIHRoaXMuYWlGaWVsZFN1Z2dlc3RMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zZW5kQWlFZGl0KGluamVjdGVkUHJvbXB0KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHsgY2xlYW5UZXh0OiBoaW50LCBtb2RlbElkOiBhaU1vZGVsSWQgfSA9IHRoaXMuZXh0cmFjdE1vZGVsRnJvbVRleHQocmF3SGludCk7XHJcblxyXG4gICAgLy8gVHJvdmEgaWwgY2FtcG86IGdpw6Agc2FsdmF0byBuZWwgZm9ybSBvcHB1cmUgbnVvdm8gYW5jb3JhIG5lbCBkaWFsb2dcclxuICAgIGNvbnN0IGZpZWxkSW5Gb3JtID0gdGhpcy5mb3JtPy5GaWVsZHM/LmZpbmQoZiA9PiBmLkxhYmVsID09PSBmaWVsZExhYmVsKSA/PyBudWxsO1xyXG4gICAgY29uc3QgY3VycmVudEZpZWxkID0gZmllbGRJbkZvcm0gPz8gdGhpcy5zZWxlY3RlZEZpZWxkO1xyXG4gICAgaWYgKCFjdXJyZW50RmllbGQpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmFpRmllbGRTdWdnZXN0TG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgLy8gU3Rlc3NvIHBheWxvYWQgZGkgb25Gb3JtR3JhcGhpY1N1Z2dlc3QsIG1hIEZpZWxkcyBjb24gc29sbyBpbCBjYW1wbyBjb3JyZW50ZVxyXG4gICAgY29uc3QgZ3JhcGhpY3NQYXJhbXM6IEVuZFBvaW50RGF0YVBhcmFtc1tdID0gW1xyXG4gICAgICB7IFBhcmFtTmFtZTogJ05hbWUnLCBQYXJhbVZhbHVlOiB0aGlzLmZvcm0/Lk5hbWUgPz8gZmllbGRMYWJlbCwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtWydJbiBCb2R5J10gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6ICdEZXNjcmlwdGlvbicsIFBhcmFtVmFsdWU6IHRoaXMuZm9ybT8uRGVzY3JpcHRpb24gPz8gbnVsbCwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtWydJbiBCb2R5J10gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6ICdUaGVtZUNTUycsIFBhcmFtVmFsdWU6IHRoaXMuZm9ybT8uVGhlbWVDU1MgPz8gbnVsbCwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtWydJbiBCb2R5J10gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6ICdUaXRsZUNTUycsIFBhcmFtVmFsdWU6IHRoaXMuZm9ybT8uVGl0bGVDU1MgPz8gbnVsbCwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtWydJbiBCb2R5J10gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6ICdGaWVsZHMnLCBQYXJhbVZhbHVlOiBbeyBMYWJlbDogY3VycmVudEZpZWxkLkxhYmVsLCBGaWVsZFR5cGU6IGN1cnJlbnRGaWVsZC5GaWVsZFR5cGUgfV0sIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVsnSW4gQm9keSddIH0sXHJcbiAgICAgIHsgUGFyYW1OYW1lOiAnSGludCcsIFBhcmFtVmFsdWU6IGhpbnQgfHwgdGhpcy5idWlsZFJhbmRvbUdyYXBoaWNIaW50KCksIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVsnSW4gQm9keSddIH0sXHJcbiAgICAgIHsgUGFyYW1OYW1lOiAnTW9kZWxJZCcsIFBhcmFtVmFsdWU6IGFpTW9kZWxJZCwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtWydJbiBCb2R5J10gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6ICdTaW5nbGVGaWVsZE1vZGUnLCBQYXJhbVZhbHVlOiB0cnVlLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bJ0luIEJvZHknXSB9LFxyXG4gICAgXTtcclxuXHJcbiAgICB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uRm9ybXMuU3BlZWNoVG9HcmFwaGljc0VuZFBvaW50LFxyXG4gICAgICBncmFwaGljc1BhcmFtcyxcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5haUZpZWxkU3VnZ2VzdExvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgY29uc3QgciA9IHJlcyBhcyB7IEZpZWxkU3R5bGVzPzogeyBbY3NzQ2xhc3NOYW1lOiBzdHJpbmddOiB7IFtwcm9wOiBzdHJpbmddOiBzdHJpbmcgfSB9OyBXYXJuaW5ncz86IHN0cmluZ1tdIH07XHJcblxyXG4gICAgICAgIC8vIEFwcGxpY2EgRmllbGRTdHlsZXMgYWwgY2FtcG8gdGFyZ2V0OyBzZSB2ZUFwcGx5VG9BbGxPZlR5cGUgw6ggYXR0aXZvLCBwcm9wYWdhIGEgdHV0dGkgaSBjYW1waSBkZWxsbyBzdGVzc28gdGlwb1xyXG4gICAgICAgIGlmIChyLkZpZWxkU3R5bGVzKSB7XHJcbiAgICAgICAgICBjb25zdCBjc3NDbGFzc05hbWUgPSAoRXFwRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbXBvbmVudC5GSUVMRF9UWVBFX0NTU19DTEFTUyBhcyBhbnkpW2N1cnJlbnRGaWVsZC5GaWVsZFR5cGVdO1xyXG4gICAgICAgICAgaWYgKGNzc0NsYXNzTmFtZSAmJiByLkZpZWxkU3R5bGVzW2Nzc0NsYXNzTmFtZV0gJiYgdHlwZW9mIHIuRmllbGRTdHlsZXNbY3NzQ2xhc3NOYW1lXSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudmVBcHBseVRvQWxsT2ZUeXBlKSB7XHJcbiAgICAgICAgICAgICAgKHRoaXMuZm9ybS5GaWVsZHMgPz8gW10pLmZpbHRlcihmID0+IGYuRmllbGRUeXBlID09PSBjdXJyZW50RmllbGQuRmllbGRUeXBlKS5mb3JFYWNoKGYgPT4ge1xyXG4gICAgICAgICAgICAgICAgKGYgYXMgYW55KVtjc3NDbGFzc05hbWVdID0geyAuLi5yLkZpZWxkU3R5bGVzIVtjc3NDbGFzc05hbWVdIH07XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgKGN1cnJlbnRGaWVsZCBhcyBhbnkpW2Nzc0NsYXNzTmFtZV0gPSByLkZpZWxkU3R5bGVzW2Nzc0NsYXNzTmFtZV07XHJcbiAgICAgICAgICAgICAgaWYgKGZpZWxkSW5Gb3JtKSAoZmllbGRJbkZvcm0gYXMgYW55KVtjc3NDbGFzc05hbWVdID0gci5GaWVsZFN0eWxlc1tjc3NDbGFzc05hbWVdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudmVBcHBseVRvQWxsT2ZUeXBlID0gZmFsc2U7XHJcblxyXG4gICAgICAgIC8vIEFnZ2lvcm5hIHNlbGVjdGVkRmllbGQgcGVyIGlsIGRpYWxvZ1xyXG4gICAgICAgIGNvbnN0IGFwcGx5VGFyZ2V0ID0gZmllbGRJbkZvcm0gPz8gY3VycmVudEZpZWxkO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZCA9IHRoaXMuc2FmZUNsb25lKGFwcGx5VGFyZ2V0KTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRmllbGQuRm9ybXVsYSA9IGFwcGx5VGFyZ2V0LkZvcm11bGE7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRGaWVsZC5BbnN3ZXJTdHlsZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRmllbGQuQW5zd2VyU3R5bGUgPSB7IEluTGlzdFZpZXc6IHRydWUsIFZpc2libGVJZjogbnVsbCwgRmllbGRzdHlsZUNTUzogJycsIExhYmVsc3R5bGVDU1M6ICcnLCBDb2xTcGFuU2l6ZXM6IFtdLCBJbnZpc2liaWxpdHk6IEZpZWxkSW52aXNpYmlsaXR5RW51bS5OQVNDT1NUTyB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZmllbGRJbkZvcm0pIHRoaXMuaW5kZXhTZWxlY3RlZEZpZWxkID0gdGhpcy5mb3JtLkZpZWxkcy5pbmRleE9mKGZpZWxkSW5Gb3JtKTtcclxuXHJcbiAgICAgICAgLy8gUmlhcHJpIGlsIGRpYWxvZyBjYW1wbyAoc2Fsdm8gVmlzdWFsIEVkaXRvciBncmFwaGljIHN1Z2dlc3QgbW9kZSlcclxuICAgICAgICBpZiAoIXRoaXMudmVHcmFwaGljU3VnZ2VzdEFjdGl2ZSkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuZGlhbG9nRmllbGRSZWYpIHRoaXMuZGlhbG9nRmllbGRSZWYuY2xvc2UoKTtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nRmllbGRSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nRmllbGQsIHtcclxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLCBoYXNCYWNrZHJvcDogdHJ1ZSwgd2lkdGg6ICc3NSUnLCBoZWlnaHQ6ICc4MCUnLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBBZ2dpb3JuYSBwcmV2aWV3IHNlIGVyYSBhcGVydGFcclxuICAgICAgICBjb25zdCB3YXNPblByZXZpZXcgPSB0aGlzLmZvcm1Db21wbGV0ZWQ7XHJcbiAgICAgICAgaWYgKHdhc09uUHJldmlldykge1xyXG4gICAgICAgICAgdGhpcy5mb3JtQ29tcGxldGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnByZXZpZXdGb3JtID0gbnVsbDtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zZXRGb3JtU3RhdHVzKHRydWUpLCA1MCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB0aGlzLnZlR3JhcGhpY1N1Z2dlc3RBY3RpdmUgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UuU3VjY2VzcygnR3JhZmljYSBjYW1wbyBhcHBsaWNhdGEhJyk7XHJcbiAgICAgICAgaWYgKHIuV2FybmluZ3M/Lmxlbmd0aCA+IDApIEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLldhcm5pbmcoci5XYXJuaW5ncyk7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIHRoaXMuYWlGaWVsZFN1Z2dlc3RMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy52ZUdyYXBoaWNTdWdnZXN0QWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy52ZUFwcGx5VG9BbGxPZlR5cGUgPSBmYWxzZTtcclxuICAgICAgICBjb25zdCBtc2cgPSAoZXJyb3IgYXMgYW55KT8uZXJyb3I7XHJcbiAgICAgICAgRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UuRXJyb3IodHlwZW9mIG1zZyA9PT0gJ3N0cmluZycgJiYgbXNnLnRyaW0oKSA/IG1zZyA6ICdFcnJvcmUgbmVsbGEgZ2VuZXJhemlvbmUgZGVsbGEgZ3JhZmljYSBkZWwgY2FtcG8nKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG9uQWlFZGl0RmlsZUNoYW5nZShldmVudDogRXZlbnQpIHtcclxuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBpZiAoIWlucHV0LmZpbGVzPy5sZW5ndGgpIHJldHVybjtcclxuICAgIEFycmF5LmZyb20oaW5wdXQuZmlsZXMpLmZvckVhY2goZmlsZSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgYmFzZTY0ID0gKHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nKS5zcGxpdCgnLCcpWzFdO1xyXG4gICAgICAgIHRoaXMuYWlFZGl0QXR0YWNobWVudHMucHVzaCh7IGZpbGVOYW1lOiBmaWxlLm5hbWUsIGJhc2U2NENvbnRlbnQ6IGJhc2U2NCwgbWVkaWFUeXBlOiBmaWxlLnR5cGUgfSk7XHJcbiAgICAgIH07XHJcbiAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xyXG4gICAgfSk7XHJcbiAgICBpbnB1dC52YWx1ZSA9ICcnO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlQWlFZGl0QXR0YWNobWVudChpbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmFpRWRpdEF0dGFjaG1lbnRzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgfVxyXG5cclxuICBzZW5kQWlFZGl0KGRpcmVjdFByb21wdD86IHN0cmluZykge1xyXG4gICAgY29uc3QgdXNlclByb21wdFJhdyA9IGRpcmVjdFByb21wdCA/PyB0aGlzLmFpRWRpdFByb21wdDtcclxuICAgIGlmICghdXNlclByb21wdFJhdz8udHJpbSgpKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5haUVkaXRMb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAvLyBBZ2dpb3JuYSBsbyBzdG9yaWNvIHByb21wdCBwcmltYSBkaSBpbnZpYXJlXHJcbiAgICBjb25zdCBjdXJyZW50SGlzdG9yeTogc3RyaW5nW10gPSB0aGlzLmZvcm0/LkFJUHJvbXB0cyA/IEpTT04ucGFyc2UodGhpcy5mb3JtLkFJUHJvbXB0cykgOiBbXTtcclxuICAgIGN1cnJlbnRIaXN0b3J5LnB1c2godXNlclByb21wdFJhdy50cmltKCkpO1xyXG4gICAgY29uc3QgdXBkYXRlZFByb21wdHNKc29uID0gSlNPTi5zdHJpbmdpZnkoY3VycmVudEhpc3RvcnkpO1xyXG5cclxuICAgIC8vIEluIGZpZWxkLWNvbnRleHQgbW9kZSAoZGlhbG9nIEFJIG8gZ3JhcGhpYyBzdWdnZXN0KTogcHJlbmRpIGlsIGNhbXBvIGRhbGxhIG1vZGFsZVxyXG4gICAgbGV0IGZpZWxkQ2xvbmVGb3JTZW5kOiBCYXNlRmllbGQgfCBudWxsID0gbnVsbDtcclxuICAgIGxldCBmaWVsZENvZGVGb3JSZWZyZXNoOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICAgIGxldCBpc05ld1Vuc2F2ZWRGaWVsZCA9IGZhbHNlO1xyXG5cclxuICAgIGlmICh0aGlzLmFpRWRpdEZpZWxkQ29udGV4dCAhPT0gbnVsbCkge1xyXG4gICAgICBmaWVsZENsb25lRm9yU2VuZCA9IHRoaXMuc2FmZUNsb25lKHRoaXMuc2VsZWN0ZWRGaWVsZCk7XHJcbiAgICAgIGlmICghZmllbGRDbG9uZUZvclNlbmQuTGFiZWw/LnRyaW0oKSkge1xyXG4gICAgICAgIGZpZWxkQ2xvbmVGb3JTZW5kLkxhYmVsID0gJ19jYW1wb3Nlbnphbm9tZV8nO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghZmllbGRDbG9uZUZvclNlbmQuRmllbGRUeXBlKSB7XHJcbiAgICAgICAgZmllbGRDbG9uZUZvclNlbmQuRmllbGRUeXBlID0gRmllbGRUeXBlRW51bVtcIkNhbXBvIGRpIHRlc3RvXCJdO1xyXG4gICAgICB9XHJcbiAgICAgIGZpZWxkQ29kZUZvclJlZnJlc2ggPSBmaWVsZENsb25lRm9yU2VuZC5MYWJlbDtcclxuICAgICAgaXNOZXdVbnNhdmVkRmllbGQgPSAhKHRoaXMuZm9ybT8uRmllbGRzPy5zb21lKGYgPT4gZi5MYWJlbCA9PT0gZmllbGRDb2RlRm9yUmVmcmVzaCkgPz8gZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEluaWV6aW9uZSBjb250ZXN0dWFsZTogaW4gbW9kYWxpdMOgIGRpYWxvZyAobm8gZGlyZWN0UHJvbXB0KSBzaSBwcmVwZW5kZSBpbCBjb250ZXN0byBkZWwgY2FtcG9cclxuICAgIGxldCBzcGVlY2hUZXh0ID0gdXNlclByb21wdFJhdztcclxuICAgIGlmIChkaXJlY3RQcm9tcHQgPT09IHVuZGVmaW5lZCAmJiB0aGlzLmFpRWRpdEZpZWxkQ29udGV4dCkge1xyXG4gICAgICBzcGVlY2hUZXh0ID0gYFZvZ2xpbyBtb2RpZmljYXJlIGlsIGNhbXBvICcke2ZpZWxkQ29kZUZvclJlZnJlc2ggPz8gdGhpcy5haUVkaXRGaWVsZENvbnRleHQuY29kZX0nLCBkaSBzZWd1aXRvIHRpIGTDsiBsZSBpc3RydXppb25pLiBTZSBxdWVsbG8gY2hlIHRpIHNjcml2byBub24gcmlndWFyZGEgbGEgbW9kaWZpY2EgZGVsIGNhbXBvLCBjb25zaWRlcmEgdHV0dG8gY29tZSBpbmNvZXJlbnRlLiAke3VzZXJQcm9tcHRSYXd9YDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFpRWRpdEZpZWxkQ29udGV4dCA9IG51bGw7XHJcblxyXG4gICAgLy8gRXN0cmFlIGlsIG1vZGVsbG8gQUkgZGFsIHRlc3RvIChlcy4gXCJVc2EgU29ubmV0XCIpIGUgcHVsaXNjZSBpbCBwcm9tcHQgcHJpbWEgZGkgaW52aWFybG9cclxuICAgIGNvbnN0IHsgY2xlYW5UZXh0OiBjbGVhblNwZWVjaFRleHQsIG1vZGVsSWQ6IGFpTW9kZWxJZCB9ID0gdGhpcy5leHRyYWN0TW9kZWxGcm9tVGV4dChzcGVlY2hUZXh0KTtcclxuICAgIHNwZWVjaFRleHQgPSBjbGVhblNwZWVjaFRleHQ7XHJcblxyXG4gICAgLy8gUHJlcGFyYSBpbCBmb3JtIGNvbWUgaW4gc2F2ZUZvcm06IEZpZWxkcyDihpIgT2JqZWN0RmllbGRzXHJcbiAgICBjb25zdCBmb3JtVG9TZW5kID0gdGhpcy5zYWZlQ2xvbmUodGhpcy5mb3JtKTtcclxuICAgIGZvcm1Ub1NlbmQuQUlQcm9tcHRzID0gdXBkYXRlZFByb21wdHNKc29uO1xyXG4gICAgZm9ybVRvU2VuZC5PYmplY3RGaWVsZHMgPSBbXTtcclxuICAgIGZvcm1Ub1NlbmQuT2JqZWN0RmxkRXh0cmFDb25maWdWYWx1ZXMgPSBbXTtcclxuXHJcbiAgICBpZiAoZm9ybVRvU2VuZC5GbGRFeHRyYUNvbmZpZ1ZhbHVlcyAhPSBudWxsKSB7XHJcbiAgICAgIGZvcm1Ub1NlbmQuT2JqZWN0RmxkRXh0cmFDb25maWdWYWx1ZXMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGZvcm1Ub1NlbmQuRmxkRXh0cmFDb25maWdWYWx1ZXMpKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBJbiBmaWVsZC1jb250ZXh0OiBzb3N0aXR1aXNjZSAobW9kaWZpY2EpIG8gYWdnaXVuZ2UgKG51b3ZvIGNhbXBvKSBpbCBjYW1wbyBjb24gaWwgY29udGVudXRvIGNvcnJlbnRlIGRlbGxhIG1vZGFsZVxyXG4gICAgaWYgKGZpZWxkQ2xvbmVGb3JTZW5kKSB7XHJcbiAgICAgIGlmICghZm9ybVRvU2VuZC5GaWVsZHMpIGZvcm1Ub1NlbmQuRmllbGRzID0gW107XHJcbiAgICAgIGZvcm1Ub1NlbmQuRmllbGRzID0gZm9ybVRvU2VuZC5GaWVsZHMuZmlsdGVyKGYgPT4gZi5MYWJlbCAhPT0gZmllbGRDb2RlRm9yUmVmcmVzaCk7XHJcbiAgICAgIGZvcm1Ub1NlbmQuRmllbGRzLnB1c2goZmllbGRDbG9uZUZvclNlbmQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChmb3JtVG9TZW5kLkZpZWxkcykge1xyXG4gICAgICBmb3JtVG9TZW5kLkZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICAgIGlmIChmaWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bS5BbGxlZ2F0bykge1xyXG4gICAgICAgICAgY29uc3QgZmxkQTogYW55ID0gZmllbGQ7XHJcbiAgICAgICAgICBmbGRBLk1ldGFkYXRhT2JqZWN0RmllbGRzID0gZmxkQS5NZXRhZGF0YUZpZWxkcztcclxuICAgICAgICAgIGZsZEEuTWV0YWRhdGFGaWVsZHMgPSBbXTtcclxuICAgICAgICAgIGZsZEEuRGF0YUdldHRlclZhbHVlQmFzZTY0U3RyaW5nID0gYnRvYShKU09OLnN0cmluZ2lmeShmbGRBLkRhdGFHZXR0ZXIgPz8ge30pKTtcclxuICAgICAgICAgIGZsZEEuRGF0YUdldHRlciA9IG51bGw7XHJcbiAgICAgICAgICBmb3JtVG9TZW5kLk9iamVjdEZpZWxkcy5wdXNoKGZsZEEpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBmaWVsZC5EYXRhR2V0dGVyVmFsdWVCYXNlNjRTdHJpbmcgPSBidG9hKEpTT04uc3RyaW5naWZ5KGZpZWxkLkRhdGFHZXR0ZXIgPz8ge30pKTtcclxuICAgICAgICAgIGZpZWxkLkRhdGFHZXR0ZXIgPSBudWxsO1xyXG4gICAgICAgICAgZm9ybVRvU2VuZC5PYmplY3RGaWVsZHMucHVzaChmaWVsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGZvcm1Ub1NlbmQuRmllbGRzID0gbnVsbDtcclxuICAgIGZvcm1Ub1NlbmQuT2JqZWN0VHJpZ2dlcnMgPSBKU09OLnN0cmluZ2lmeShmb3JtVG9TZW5kLlRyaWdnZXJzID8/IFtdKTtcclxuICAgIGZvcm1Ub1NlbmQuVHJpZ2dlcnMgPSBudWxsO1xyXG4gICAgZm9ybVRvU2VuZC5PYmplY3RBY3Rpb25CdXR0b25zID0gSlNPTi5zdHJpbmdpZnkoZm9ybVRvU2VuZC5BY3Rpb25CdXR0b25zID8/IFtdKTtcclxuICAgIGZvcm1Ub1NlbmQuQWN0aW9uQnV0dG9ucyA9IG51bGw7XHJcblxyXG4gICAgY29uc3QgZHluYW1pY01vZHVsZVBhcmFtcyA9IFtcclxuICAgICAgeyBQYXJhbU5hbWU6IFwiRm9ybVwiLCBQYXJhbVZhbHVlOiBmb3JtVG9TZW5kLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJJbiBCb2R5XCJdIH0sXHJcbiAgICAgIHsgUGFyYW1OYW1lOiBcIlNwZWVjaFRleHRcIiwgUGFyYW1WYWx1ZTogc3BlZWNoVGV4dCwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiSW4gQm9keVwiXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogXCJPcmdhSURcIiwgUGFyYW1WYWx1ZTogcGFyc2VJbnQodGhpcy5vcmdhSUQpIHx8IDAsIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIkluIEJvZHlcIl0gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6IFwiTW9kaWZ5VXNlclwiLCBQYXJhbVZhbHVlOiB0aGlzLlVzZXJJRCwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiSW4gQm9keVwiXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogXCJBdXRvc2F2ZVwiLCBQYXJhbVZhbHVlOiB0aGlzLmFpRWRpdEF1dG9zYXZlLCBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJJbiBCb2R5XCJdIH0sXHJcbiAgICAgIHsgUGFyYW1OYW1lOiBcIkF0dGFjaG1lbnRzXCIsIFBhcmFtVmFsdWU6IHRoaXMuYWlFZGl0QXR0YWNobWVudHMubWFwKGEgPT4gKHsgRmlsZU5hbWU6IGEuZmlsZU5hbWUsIEJhc2U2NENvbnRlbnQ6IGEuYmFzZTY0Q29udGVudCwgTWVkaWFUeXBlOiBhLm1lZGlhVHlwZSB9KSksIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIkluIEJvZHlcIl0gfSxcclxuICAgICAgeyBQYXJhbU5hbWU6IFwiVHJpZ2dlckRlZmluaXRpb25zXCIsIFBhcmFtVmFsdWU6IHRoaXMudHJpZ2dlcnMgPz8gbnVsbCwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiSW4gQm9keVwiXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogXCJBY3Rpb25CdXR0b25EZWZpbml0aW9uc1wiLCBQYXJhbVZhbHVlOiB0aGlzLmFjdGlvbkJ1dHRvbnMgPz8gbnVsbCwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiSW4gQm9keVwiXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogXCJNb2RlbElkXCIsIFBhcmFtVmFsdWU6IGFpTW9kZWxJZCwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiSW4gQm9keVwiXSB9LFxyXG4gICAgICB7IFBhcmFtTmFtZTogXCJHZW5lcmF0ZUJhY2tncm91bmRcIiwgUGFyYW1WYWx1ZTogdGhpcy5haUdlbmVyYXRlQmFja2dyb3VuZCwgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiSW4gQm9keVwiXSB9LFxyXG4gICAgXTtcclxuXHJcbiAgICB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLlJ1blNzZUVuZFBvaW50Q2FsbChcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uRm9ybXMuU3BlZWNoVG9Gb3JtRWRpdEVuZFBvaW50LFxyXG4gICAgICBkeW5hbWljTW9kdWxlUGFyYW1zLFxyXG4gICAgICAoZXN0aW1hdGVkU2Vjb25kczogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fc3RhcnRBaUNvdW50ZG93bihlc3RpbWF0ZWRTZWNvbmRzKTtcclxuICAgICAgfSxcclxuICAgICAgKHJlczogeyBGb3JtOiBGb3JtLCBXYXJuaW5nczogc3RyaW5nW10sIENvc3RDZW50czogbnVtYmVyLCBFbGFwc2VkTXM6IG51bWJlciwgRGFsbEVFbGFwc2VkU2VjPzogbnVtYmVyLCBQcm9tcHRTcGxpdHM/OiBzdHJpbmdbXSB9KSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2FpRWRpdENhbmNlbGxlZCkgeyB0aGlzLl9haUVkaXRDYW5jZWxsZWQgPSBmYWxzZTsgcmV0dXJuOyB9XHJcbiAgICAgICAgdGhpcy5fc3RvcEFpQ291bnRkb3duKCk7XHJcbiAgICAgICAgdGhpcy5haUVkaXRMb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGlmIChkaXJlY3RQcm9tcHQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgdGhpcy5jbG9zZUFpRWRpdERpYWxvZygpO1xyXG5cclxuICAgICAgICAgIGlmIChpc05ld1Vuc2F2ZWRGaWVsZCkge1xyXG4gICAgICAgICAgICAvLyBDYW1wbyBudW92byBub24gc2FsdmF0bzogZWxhYm9yYSBpbCBmb3JtIHRvcm5hdG8gZSByaWFwcmkgaWwgZGlhbG9nIGNhbXBvIGNvbiBpIHZhbG9yaSBhZ2dpb3JuYXRpXHJcbiAgICAgICAgICAgIHRoaXMuc2V0Rm9ybUFuZENvbmZpZ3VyZShyZXMuRm9ybSk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm0pIHRoaXMuZm9ybS5BSVByb21wdHMgPSB1cGRhdGVkUHJvbXB0c0pzb247XHJcblxyXG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkRmllbGRJZHggPSB0aGlzLmZvcm0/LkZpZWxkcz8uZmluZEluZGV4KGYgPT4gZi5MYWJlbCA9PT0gZmllbGRDb2RlRm9yUmVmcmVzaCkgPz8gLTE7XHJcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRGaWVsZCA9IHVwZGF0ZWRGaWVsZElkeCA+PSAwID8gdGhpcy5mb3JtLkZpZWxkc1t1cGRhdGVkRmllbGRJZHhdIDogbnVsbDtcclxuICAgICAgICAgICAgaWYgKHVwZGF0ZWRGaWVsZCAmJiB0aGlzLmZvcm0/LkZpZWxkcykge1xyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybS5GaWVsZHMuc3BsaWNlKHVwZGF0ZWRGaWVsZElkeCwgMSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRGaWVsZE9yZGluYWxQb3NpdGlvbigpO1xyXG4gICAgICAgICAgICAgIHRoaXMucmVsb2FkRmllbGRzVGFibGUoKTtcclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5pbmRleFNlbGVjdGVkRmllbGQgPSBudWxsO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZCA9IHRoaXMuc2FmZUNsb25lKHVwZGF0ZWRGaWVsZCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkLkZvcm11bGEgPSB1cGRhdGVkRmllbGQuRm9ybXVsYTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEZpZWxkLkFuc3dlclN0eWxlID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZC5BbnN3ZXJTdHlsZSA9IHsgSW5MaXN0VmlldzogdHJ1ZSwgVmlzaWJsZUlmOiBudWxsLCBGaWVsZHN0eWxlQ1NTOiAnJywgTGFiZWxzdHlsZUNTUzogJycsIENvbFNwYW5TaXplczogW10sIEludmlzaWJpbGl0eTogRmllbGRJbnZpc2liaWxpdHlFbnVtLk5BU0NPU1RPIH07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmRpYWxvZ0ZpZWxkUmVmKSB0aGlzLmRpYWxvZ0ZpZWxkUmVmLmNsb3NlKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5kaWFsb2dGaWVsZFJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dGaWVsZCwge1xyXG4gICAgICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLCBoYXNCYWNrZHJvcDogdHJ1ZSwgd2lkdGg6ICc3NSUnLCBoZWlnaHQ6ICc4MCUnLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBDYW1wbyBnacOgIGVzaXN0ZW50ZSBvIG5lc3N1biBjb250ZXN0byBjYW1wb1xyXG4gICAgICAgICAgICBjb25zdCB3YXNPblByZXZpZXcgPSB0aGlzLmZvcm1Db21wbGV0ZWQ7XHJcbiAgICAgICAgICAgIGlmICh3YXNPblByZXZpZXcpIHtcclxuICAgICAgICAgICAgICB0aGlzLmZvcm1Db21wbGV0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnByZXZpZXdGb3JtID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnNldEZvcm1BbmRDb25maWd1cmUocmVzLkZvcm0pO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtKSB0aGlzLmZvcm0uQUlQcm9tcHRzID0gdXBkYXRlZFByb21wdHNKc29uO1xyXG5cclxuICAgICAgICAgICAgLy8gU2UgYydlcmEgdW4gY29udGVzdG8gY2FtcG8sIGFnZ2lvcm5hIHNlbGVjdGVkRmllbGQgZSByaWFwcmkgaWwgZGlhbG9nXHJcbiAgICAgICAgICAgIC8vIHBlciByaWZsZXR0ZXJlIGxlIG1vZGlmaWNoZSBBSSAoZXMuIFRleHRGaWVsZFN0eWxlQ1NTKSBuZWxsJ2VkaXRvclxyXG4gICAgICAgICAgICBpZiAoZmllbGRDb2RlRm9yUmVmcmVzaCAmJiB0aGlzLmZvcm0/LkZpZWxkcykge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRGaWVsZCA9IHRoaXMuZm9ybS5GaWVsZHMuZmluZChmID0+IGYuTGFiZWwgPT09IGZpZWxkQ29kZUZvclJlZnJlc2gpO1xyXG4gICAgICAgICAgICAgIGlmICh1cGRhdGVkRmllbGQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW5kZXhTZWxlY3RlZEZpZWxkID0gdGhpcy5mb3JtLkZpZWxkcy5pbmRleE9mKHVwZGF0ZWRGaWVsZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRmllbGQgPSB0aGlzLnNhZmVDbG9uZSh1cGRhdGVkRmllbGQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkLkZvcm11bGEgPSB1cGRhdGVkRmllbGQuRm9ybXVsYTtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRmllbGQuQW5zd2VyU3R5bGUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRmllbGQuQW5zd2VyU3R5bGUgPSB7IEluTGlzdFZpZXc6IHRydWUsIFZpc2libGVJZjogbnVsbCwgRmllbGRzdHlsZUNTUzogJycsIExhYmVsc3R5bGVDU1M6ICcnLCBDb2xTcGFuU2l6ZXM6IFtdLCBJbnZpc2liaWxpdHk6IEZpZWxkSW52aXNpYmlsaXR5RW51bS5OQVNDT1NUTyB9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGlhbG9nRmllbGRSZWYpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dGaWVsZFJlZi5jbG9zZSgpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ0ZpZWxkUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ0ZpZWxkLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLCBoYXNCYWNrZHJvcDogdHJ1ZSwgd2lkdGg6ICc3NSUnLCBoZWlnaHQ6ICc4MCUnLFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh3YXNPblByZXZpZXcpIHtcclxuICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2V0Rm9ybVN0YXR1cyh0cnVlKSwgNTApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIFwiU3VnZ2VyaXNjaSBncmFmaWNhXCI6IHN0ZXNzbyBmbHVzc28gZmllbGQtY29udGV4dCAobnVvdm8gbyBlc2lzdGVudGUpXHJcbiAgICAgICAgICB0aGlzLmFpRmllbGRTdWdnZXN0TG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgIGlmIChpc05ld1Vuc2F2ZWRGaWVsZCkge1xyXG4gICAgICAgICAgICB0aGlzLnNldEZvcm1BbmRDb25maWd1cmUocmVzLkZvcm0pO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtKSB0aGlzLmZvcm0uQUlQcm9tcHRzID0gdXBkYXRlZFByb21wdHNKc29uO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgdXBkYXRlZEZpZWxkSWR4ID0gdGhpcy5mb3JtPy5GaWVsZHM/LmZpbmRJbmRleChmID0+IGYuTGFiZWwgPT09IGZpZWxkQ29kZUZvclJlZnJlc2gpID8/IC0xO1xyXG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkRmllbGQgPSB1cGRhdGVkRmllbGRJZHggPj0gMCA/IHRoaXMuZm9ybS5GaWVsZHNbdXBkYXRlZEZpZWxkSWR4XSA6IG51bGw7XHJcbiAgICAgICAgICAgIGlmICh1cGRhdGVkRmllbGQgJiYgdGhpcy5mb3JtPy5GaWVsZHMpIHtcclxuICAgICAgICAgICAgICB0aGlzLmZvcm0uRmllbGRzLnNwbGljZSh1cGRhdGVkRmllbGRJZHgsIDEpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0RmllbGRPcmRpbmFsUG9zaXRpb24oKTtcclxuICAgICAgICAgICAgICB0aGlzLnJlbG9hZEZpZWxkc1RhYmxlKCk7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuaW5kZXhTZWxlY3RlZEZpZWxkID0gbnVsbDtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRmllbGQgPSB0aGlzLnNhZmVDbG9uZSh1cGRhdGVkRmllbGQpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZC5Gb3JtdWxhID0gdXBkYXRlZEZpZWxkLkZvcm11bGE7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRGaWVsZC5BbnN3ZXJTdHlsZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRmllbGQuQW5zd2VyU3R5bGUgPSB7IEluTGlzdFZpZXc6IHRydWUsIFZpc2libGVJZjogbnVsbCwgRmllbGRzdHlsZUNTUzogJycsIExhYmVsc3R5bGVDU1M6ICcnLCBDb2xTcGFuU2l6ZXM6IFtdLCBJbnZpc2liaWxpdHk6IEZpZWxkSW52aXNpYmlsaXR5RW51bS5OQVNDT1NUTyB9O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoIXRoaXMudmVHcmFwaGljU3VnZ2VzdEFjdGl2ZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGlhbG9nRmllbGRSZWYpIHRoaXMuZGlhbG9nRmllbGRSZWYuY2xvc2UoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nRmllbGRSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nRmllbGQsIHtcclxuICAgICAgICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLCBoYXNCYWNrZHJvcDogdHJ1ZSwgd2lkdGg6ICc3NSUnLCBoZWlnaHQ6ICc4MCUnLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCB3YXNPblByZXZpZXcgPSB0aGlzLmZvcm1Db21wbGV0ZWQ7XHJcbiAgICAgICAgICAgIGlmICh3YXNPblByZXZpZXcpIHtcclxuICAgICAgICAgICAgICB0aGlzLmZvcm1Db21wbGV0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnByZXZpZXdGb3JtID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnNldEZvcm1BbmRDb25maWd1cmUocmVzLkZvcm0pO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtKSB0aGlzLmZvcm0uQUlQcm9tcHRzID0gdXBkYXRlZFByb21wdHNKc29uO1xyXG5cclxuICAgICAgICAgICAgaWYgKGZpZWxkQ29kZUZvclJlZnJlc2ggJiYgdGhpcy5mb3JtPy5GaWVsZHMpIHtcclxuICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkRmllbGQgPSB0aGlzLmZvcm0uRmllbGRzLmZpbmQoZiA9PiBmLkxhYmVsID09PSBmaWVsZENvZGVGb3JSZWZyZXNoKTtcclxuICAgICAgICAgICAgICBpZiAodXBkYXRlZEZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkSWR4ID0gdGhpcy5mb3JtLkZpZWxkcy5pbmRleE9mKHVwZGF0ZWRGaWVsZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRmllbGQgPSB0aGlzLnNhZmVDbG9uZSh1cGRhdGVkRmllbGQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkLkZvcm11bGEgPSB1cGRhdGVkRmllbGQuRm9ybXVsYTtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRmllbGQuQW5zd2VyU3R5bGUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRmllbGQuQW5zd2VyU3R5bGUgPSB7IEluTGlzdFZpZXc6IHRydWUsIFZpc2libGVJZjogbnVsbCwgRmllbGRzdHlsZUNTUzogJycsIExhYmVsc3R5bGVDU1M6ICcnLCBDb2xTcGFuU2l6ZXM6IFtdLCBJbnZpc2liaWxpdHk6IEZpZWxkSW52aXNpYmlsaXR5RW51bS5OQVNDT1NUTyB9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5pbmRleFNlbGVjdGVkRmllbGQgPSB1cGRhdGVkSWR4O1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnZlR3JhcGhpY1N1Z2dlc3RBY3RpdmUpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGlhbG9nRmllbGRSZWYpIHRoaXMuZGlhbG9nRmllbGRSZWYuY2xvc2UoKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dGaWVsZFJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dGaWVsZCwge1xyXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSwgaGFzQmFja2Ryb3A6IHRydWUsIHdpZHRoOiAnNzUlJywgaGVpZ2h0OiAnODAlJyxcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAod2FzT25QcmV2aWV3KSB7XHJcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNldEZvcm1TdGF0dXModHJ1ZSksIDUwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy52ZUdyYXBoaWNTdWdnZXN0QWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmxhc3RQcm9tcHRTcGxpdHMgPSByZXMuUHJvbXB0U3BsaXRzID8/IFtdO1xyXG5cclxuICAgICAgICBjb25zdCBkYWxsRVBhcnQgPSByZXMuRGFsbEVFbGFwc2VkU2VjICE9IG51bGwgPyBgIChzZm9uZG8gZ2VuZXJhdG8gaW4gJHtyZXMuRGFsbEVFbGFwc2VkU2VjLnRvRml4ZWQoMSl9cylgIDogJyc7XHJcbiAgICAgICAgRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UuU3VjY2VzcyhgRm9ybSBtb2RpZmljYXRhIGNvbiBBSSEke2RhbGxFUGFydH1gKTtcclxuICAgICAgICBpZiAocmVzLldhcm5pbmdzICYmIHJlcy5XYXJuaW5ncy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5XYXJuaW5nKHJlcy5XYXJuaW5ncyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmxhc3RQcm9tcHRTcGxpdHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UuSW5mbyh0aGlzLmxhc3RQcm9tcHRTcGxpdHMubWFwKChzLCBpKSA9PiBgJHtpICsgMX0uICR7c31gKS5qb2luKCc8YnI+JyksICdGb3JtIGdlbmVyYXRvIGluIHBhcnRpIHBhcmFsbGVsZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2FpRWRpdENhbmNlbGxlZCkgeyB0aGlzLl9haUVkaXRDYW5jZWxsZWQgPSBmYWxzZTsgcmV0dXJuOyB9XHJcbiAgICAgICAgdGhpcy5fc3RvcEFpQ291bnRkb3duKCk7XHJcbiAgICAgICAgdGhpcy5haUVkaXRMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKGRpcmVjdFByb21wdCAhPT0gdW5kZWZpbmVkKSB0aGlzLmFpRmllbGRTdWdnZXN0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IHNlcnZlck1zZyA9IChlcnJvciBhcyBhbnkpPy5lcnJvciA/PyAoZXJyb3IgYXMgYW55KT8ubWVzc2FnZTtcclxuICAgICAgICBjb25zdCBkaXNwbGF5TXNnID0gdHlwZW9mIHNlcnZlck1zZyA9PT0gJ3N0cmluZycgJiYgc2VydmVyTXNnLnRyaW0oKVxyXG4gICAgICAgICAgPyBzZXJ2ZXJNc2dcclxuICAgICAgICAgIDogJ0Vycm9yZSBuZWxsYSBtb2RpZmljYSBkZWxsYSBmb3JtIGNvbiBBSSc7XHJcbiAgICAgICAgRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UuRXJyb3IoZGlzcGxheU1zZyk7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yZSBuZWxsYSBtb2RpZmljYSBkZWxsYSBmb3JtIGNvbiBBSVwiLCBlcnJvcik7XHJcbiAgICAgIH0sXHJcbiAgICAgIHRydWVcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBvbkNvbnRlc3R1YWxpemF0aW9uU2VsZWN0KCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZENvbnRlc3R1YWxpemF0aW9uVmFsdWUgPSB0aGlzLmNvbnRlc3R1YWxpemF0aW9uLmZpbmQoeCA9PiB4LmVudGl0eVRhYmxlTmFtZSA9PSB0aGlzLnNlbGVjdGVkQ29udGVzdHVhbGl6YXRpb24pLmVudGl0eUlEO1xyXG4gIH1cclxuXHJcbiAgb25Db250ZXN0dWFsaXphdGlvblNlbGVjdFZhbHVlKCkge1xyXG4gICAgdGhpcy5jb250ZXN0dWFsaXphdGlvbi5maW5kKHggPT4geC5lbnRpdHlUYWJsZU5hbWUgPT0gdGhpcy5zZWxlY3RlZENvbnRlc3R1YWxpemF0aW9uKS5lbnRpdHlJRCA9IHRoaXMuc2VsZWN0ZWRDb250ZXN0dWFsaXphdGlvblZhbHVlO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlDb250ZXN0dWFsaXphdGlvbihlbGVtZW50KSB7XHJcbiAgICB0aGlzLmZvcm1Db21wbGV0ZWQgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAodGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQuaW5wdXRQYXJhbXMuY29uZmlnLmNvbnRlc3R1YWxpemF0aW9uID0gZWxlbWVudDtcclxuICAgIH1cclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5mb3JtQ29tcGxldGVkID0gdHJ1ZTtcclxuICAgIH0sIDUwKTtcclxuICB9XHJcblxyXG4gIG9wZW5Db250ZXN0dWFsaXphdGlvbkRpYWxvZygpIHtcclxuICAgIHRoaXMuZGlhbG9nQ29udGVzdHVhbGl6YXRpb25SZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nQ29udGVzdHVhbGl6YXRpb24sIHtcclxuICAgICAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcclxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgIHdpZHRoOiAnNDgwcHgnLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjbG9zZUNvbnRlc3R1YWxpemF0aW9uRGlhbG9nKCkge1xyXG4gICAgdGhpcy5kaWFsb2dDb250ZXN0dWFsaXphdGlvblJlZj8uY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIG9uRmlyZVRyaWdnZXIoZXY6IEZpcmVUcmlnZ2VyKSB7XHJcbiAgICB0aGlzLmZpcmVUcmlnZ2VyLmVtaXQoZXYpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlRGVsZXRlQnV0dG9uKGV2ZW50OiBBcnJheTxCYXNlRmllbGQ+KSB7XHJcbiAgICB0aGlzLnNob3dEZWxldGVCdXR0b24gPSBldmVudC5sZW5ndGggPiAwO1xyXG4gICAgdGhpcy5zZWxlY3RlZEZpZWxkcyA9IGV2ZW50O1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlU2VsZWN0ZWRGaWVsZHMocHJvcGVydHlOYW1lOiBzdHJpbmcpIHtcclxuXHJcblxyXG4gICAgRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UuQ29uZmlybShcclxuICAgICAgXCJFbGltaW5hcmUgZ2xpIGVsZW1lbnRpIHNlbGV6aW9uYXRpP1wiLFxyXG4gICAgICAoKSA9PiB7XHJcblxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZHMuZm9yRWFjaCgoc2VsZWN0ZWRGaWVsZCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5mb3JtW3Byb3BlcnR5TmFtZV0uc3BsaWNlKHRoaXMuZm9ybVtwcm9wZXJ0eU5hbWVdLmluZGV4T2Yoc2VsZWN0ZWRGaWVsZCksIDEpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnNldEZpZWxkT3JkaW5hbFBvc2l0aW9uKCk7XHJcbiAgICAgICAgdGhpcy5yZWxvYWRGaWVsZHNUYWJsZSgpO1xyXG5cclxuICAgICAgfSxcclxuICAgICAgZmFsc2UsXHJcbiAgICAgIFwiUmljaGllc3RhIGNvbmZlcm1hXCJcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gVmlzdWFsIEVkaXRvclxyXG5cclxuICB0b2dnbGVWaXN1YWxFZGl0b3IoKTogdm9pZCB7XHJcbiAgICB0aGlzLnZpc3VhbEVkaXRvckFjdGl2ZSA9ICF0aGlzLnZpc3VhbEVkaXRvckFjdGl2ZTtcclxuICAgIGlmICghdGhpcy52aXN1YWxFZGl0b3JBY3RpdmUpIHtcclxuICAgICAgdGhpcy52ZVN3YXBGaWVsZCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblZlRmllbGRDbGljayhldjogeyBmaWVsZDogQmFzZUZpZWxkOyBldmVudDogTW91c2VFdmVudCB9KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy52ZVN3YXBGaWVsZCkge1xyXG4gICAgICBpZiAodGhpcy52ZVN3YXBGaWVsZC5MYWJlbCAhPT0gZXYuZmllbGQuTGFiZWwpIHtcclxuICAgICAgICB0aGlzLnZlRG9Td2FwKGV2LmZpZWxkKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnZlU2VsZWN0ZWRGaWVsZCA9IHRoaXMuZm9ybS5GaWVsZHM/LmZpbmQoZiA9PiBmLkxhYmVsID09PSBldi5maWVsZC5MYWJlbCkgPz8gZXYuZmllbGQ7XHJcbiAgICB0aGlzLnZlU2hvd0dyYXBoaWNJbnB1dCA9IGZhbHNlO1xyXG4gICAgdGhpcy52ZUdyYXBoaWNIaW50ID0gJyc7XHJcbiAgICB0aGlzLmRpYWxvZ1ZlVG9vbHRpcFJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dWZVRvb2x0aXAsIHtcclxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgIHdpZHRoOiAnMzIwcHgnLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB2ZUVkaXRGaWVsZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlhbG9nVmVUb29sdGlwUmVmPy5jbG9zZSgpO1xyXG4gICAgaWYgKCF0aGlzLnZlU2VsZWN0ZWRGaWVsZCkgcmV0dXJuO1xyXG4gICAgdGhpcy5vcGVuRmllbGREaWFsb2codGhpcy52ZVNlbGVjdGVkRmllbGQpO1xyXG4gIH1cclxuXHJcbiAgdmVBaUVkaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpYWxvZ1ZlVG9vbHRpcFJlZj8uY2xvc2UoKTtcclxuICAgIGlmICghdGhpcy52ZVNlbGVjdGVkRmllbGQpIHJldHVybjtcclxuICAgIC8vIFJlcGxpY2EgY2nDsiBjaGUgZmEgb3BlbkZpZWxkRGlhbG9nOiBwb3BvbGEgc2VsZWN0ZWRGaWVsZCBlIGluZGV4U2VsZWN0ZWRGaWVsZFxyXG4gICAgLy8gY29zw6wgc2VuZEFpRWRpdCBwdcOyIGNsb25hcmUgY29ycmV0dGFtZW50ZSBpbCBjYW1wb1xyXG4gICAgdGhpcy5pbmRleFNlbGVjdGVkRmllbGQgPSB0aGlzLmZvcm0uRmllbGRzPy5pbmRleE9mKHRoaXMudmVTZWxlY3RlZEZpZWxkKSA/PyBudWxsO1xyXG4gICAgdGhpcy5zZWxlY3RlZEZpZWxkID0gdGhpcy5zYWZlQ2xvbmUodGhpcy52ZVNlbGVjdGVkRmllbGQpO1xyXG4gICAgdGhpcy5zZWxlY3RlZEZpZWxkLkZvcm11bGEgPSB0aGlzLnZlU2VsZWN0ZWRGaWVsZC5Gb3JtdWxhO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGaWVsZC5BbnN3ZXJTdHlsZSA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZC5BbnN3ZXJTdHlsZSA9IHsgSW5MaXN0VmlldzogdHJ1ZSwgVmlzaWJsZUlmOiBudWxsLCBGaWVsZHN0eWxlQ1NTOiAnJywgTGFiZWxzdHlsZUNTUzogJycsIENvbFNwYW5TaXplczogW10sIEludmlzaWJpbGl0eTogRmllbGRJbnZpc2liaWxpdHlFbnVtLk5BU0NPU1RPIH07XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uQWlFZGl0Rm9yRmllbGQodGhpcy52ZVNlbGVjdGVkRmllbGQuTGFiZWwpO1xyXG4gIH1cclxuXHJcbiAgdmVTZW5kR3JhcGhpYygpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlhbG9nVmVUb29sdGlwUmVmPy5jbG9zZSgpO1xyXG4gICAgaWYgKCF0aGlzLnZlU2VsZWN0ZWRGaWVsZCkgcmV0dXJuO1xyXG4gICAgdGhpcy5zZWxlY3RlZEZpZWxkID0gdGhpcy5mb3JtPy5GaWVsZHM/LmZpbmQoZiA9PiBmLkxhYmVsID09PSB0aGlzLnZlU2VsZWN0ZWRGaWVsZC5MYWJlbCkgPz8gdGhpcy52ZVNlbGVjdGVkRmllbGQgYXMgYW55O1xyXG4gICAgdGhpcy52ZUdyYXBoaWNTdWdnZXN0QWN0aXZlID0gdHJ1ZTtcclxuICAgIHRoaXMub25BaUdyYXBoaWNTdWdnZXN0KHsgY29kZTogdGhpcy52ZVNlbGVjdGVkRmllbGQuTGFiZWwsIGhpbnQ6IHRoaXMudmVHcmFwaGljSGludCB9KTtcclxuICAgIHRoaXMudmVTaG93R3JhcGhpY0lucHV0ID0gZmFsc2U7XHJcbiAgICB0aGlzLnZlR3JhcGhpY0hpbnQgPSAnJztcclxuICB9XHJcblxyXG4gIHZlT3BlblJlb3JkZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpYWxvZ1ZlVG9vbHRpcFJlZj8uY2xvc2UoKTtcclxuICAgIHRoaXMudmVSZW9yZGVyRmllbGRzID0gWy4uLih0aGlzLmZvcm0uRmllbGRzID8/IFtdKV07XHJcbiAgICB0aGlzLmRpYWxvZ1ZlUmVvcmRlclJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dWZVJlb3JkZXIsIHtcclxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgIHdpZHRoOiAnNDAwcHgnLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB2ZUFwcGx5UmVvcmRlcigpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybS5GaWVsZHMgPSBbLi4udGhpcy52ZVJlb3JkZXJGaWVsZHNdO1xyXG4gICAgdGhpcy5zZXRGaWVsZE9yZGluYWxQb3NpdGlvbigpO1xyXG4gICAgdGhpcy5yZWxvYWRGaWVsZHNUYWJsZSgpO1xyXG4gICAgdGhpcy5kaWFsb2dWZVJlb3JkZXJSZWY/LmNsb3NlKCk7XHJcbiAgICB0aGlzLnJlZnJlc2hQcmV2aWV3KCk7XHJcbiAgfVxyXG5cclxuICBvblZlRHJhZ0Ryb3BSZW9yZGVyKGV2ZW50OiBDZGtEcmFnRHJvcDxCYXNlRmllbGRbXT4pOiB2b2lkIHtcclxuICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLnZlUmVvcmRlckZpZWxkcywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcclxuICB9XHJcblxyXG4gIHZlU3RhcnRTd2FwKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaWFsb2dWZVRvb2x0aXBSZWY/LmNsb3NlKCk7XHJcbiAgICB0aGlzLnZlU3dhcEZpZWxkID0gdGhpcy52ZVNlbGVjdGVkRmllbGQ7XHJcbiAgfVxyXG5cclxuICB2ZURvU3dhcCh0YXJnZXRGaWVsZDogQmFzZUZpZWxkKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMudmVTd2FwRmllbGQgfHwgIXRoaXMuZm9ybS5GaWVsZHMpIHJldHVybjtcclxuICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZm9ybS5GaWVsZHM7XHJcbiAgICBjb25zdCBpZHhBID0gZmllbGRzLmZpbmRJbmRleChmID0+IGYuTGFiZWwgPT09IHRoaXMudmVTd2FwRmllbGQhLkxhYmVsKTtcclxuICAgIGNvbnN0IGlkeEIgPSBmaWVsZHMuZmluZEluZGV4KGYgPT4gZi5MYWJlbCA9PT0gdGFyZ2V0RmllbGQuTGFiZWwpO1xyXG4gICAgaWYgKGlkeEEgPj0gMCAmJiBpZHhCID49IDApIHtcclxuICAgICAgW2ZpZWxkc1tpZHhBXSwgZmllbGRzW2lkeEJdXSA9IFtmaWVsZHNbaWR4Ql0sIGZpZWxkc1tpZHhBXV07XHJcbiAgICAgIHRoaXMuc2V0RmllbGRPcmRpbmFsUG9zaXRpb24oKTtcclxuICAgICAgdGhpcy5yZWxvYWRGaWVsZHNUYWJsZSgpO1xyXG4gICAgICB0aGlzLnJlZnJlc2hQcmV2aWV3KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnZlU3dhcEZpZWxkID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHZlQ2FuY2VsU3dhcCgpOiB2b2lkIHtcclxuICAgIHRoaXMudmVTd2FwRmllbGQgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgdmVEZWxldGVGaWVsZCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy52ZVNlbGVjdGVkRmllbGQpIHJldHVybjtcclxuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5mb3JtPy5GaWVsZHM/LmZpbmQoZiA9PiBmLkxhYmVsID09PSB0aGlzLnZlU2VsZWN0ZWRGaWVsZC5MYWJlbCk7XHJcbiAgICBpZiAoIWZpZWxkKSByZXR1cm47XHJcbiAgICB0aGlzLmRpYWxvZ1ZlVG9vbHRpcFJlZj8uY2xvc2UoKTtcclxuICAgIC8vIHNldFRpbWVvdXQgbmVjZXNzYXJpbzogU3dlZXRBbGVydCBub24gc2kgYXByZSBjb3JyZXR0YW1lbnRlIHNlIGlsIE1hdGVyaWFsIERpYWxvZyDDqCBhbmNvcmEgaW4gZmFzZSBkaSBjaGl1c3VyYVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmRlbGV0ZUVsZW1lbnQoZmllbGQsICdGaWVsZHMnKSwgMjAwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEhJTlRfUEFMRVRURVMgPSBbXHJcbiAgICAnbW9ub2Nyb21hdGljbyB2aWJyYW50ZScsICdjb21wbGVtZW50YXJlJywgJ3RyaWFkaWNvJywgJ2FuYWxvZ28gY2FsZG8nLCAnYW5hbG9nbyBmcmVkZG8nLFxyXG4gICAgJ3Bhc3RlbGxvIGRlbGljYXRvJywgJ25lb24gc3Ugc2N1cm8nLCAnZWFydGggdG9uZXMnLCAnb2NlYW5vIHByb2ZvbmRvJywgJ3RyYW1vbnRvIGNvbG9yYXRvJyxcclxuICAgICdmb3Jlc3RhIGF1dHVubmFsZScsICdsYXZhbmRhIGUgb3JvJywgJ2NvcmFsbG8gZSB0dXJjaGVzZScsICdyb3NzbyBlIGFudHJhY2l0ZScsICd2ZXJkZSBhY3F1YSBlIHNhYmJpYScsXHJcbiAgICAndmlvbGEgZWxldHRyaWNvIGUgZ2lhbGxvIGxpbW9uZScsICdyb3NhIGNpcHJpYSBlIGdyaWdpbyBwZXJsYScsICdibHUgY29iYWx0byBlIGFyYW5jaW8gYnJ1Y2lhdG8nLFxyXG4gICAgJ29ybyBhbnRpY28gZSBib3JkZWF1eCcsICdtZW50YSBmcmVzY2EgZSBjaW9jY29sYXRvJywgJ2FyZ2VudG8gZSBibHUgYWNjaWFpbycsICdwZXNjYSBlIGluZGFjbycsXHJcbiAgICAncm9zc28gY2lsaWVnaWEgZSBhdm9yaW8nLCAndGVhbCBzY3VybyBlIHJhbWUnLCAnbGltZSBlIGJsdSBuYXZ5JywgJ2xpbGxhIGUgdmVyZGUgc2FsdmlhJyxcclxuICAgICdhenp1cnJvIGdoaWFjY2lvIGUgZ3JpZ2lvIGFyZGVzaWEnLCAnYW1icmEgZSBwZXRyb2xpbycsICdzbWVyYWxkbyBlIHJvc2EgYW50aWNvJywgJ2JpYW5jbyBlIG5lcm8gY29uIGFjY2VudG8gcm9zc28gZnVvY28nLFxyXG4gIF07XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEhJTlRfU1RZTEVTID0gW1xyXG4gICAgJ21pbmltYWxpc3RhJywgJ2JvbGQgZSB2aXZhY2UnLCAnZWxlZ2FudGUgZSBzb2JyaW8nLCAnZ2lvY29zbyBlIGRpbmFtaWNvJywgJ2luZHVzdHJpYWxlJyxcclxuICAgICdyZXRyb2Z1dHVyaXN0YScsICdvcmdhbmljbyBlIG5hdHVyYWxlJywgJ3RlY2gvZGlnaXRhbGUnLCAnbHV4dXJ5IHByZW1pdW0nLCAndmludGFnZSBtb3JiaWRvJyxcclxuICAgICdmbGF0IGRlc2lnbiBwdWxpdG8nLCAnZ2xhc3Ntb3JwaGlzbScsICduZXVtb3JmaXNtbycsICdkYXJrIG1vZGUgcmFmZmluYXRvJyxcclxuICAgICdicnV0YWxpc3QgY29uIGJvcmRpIHNwZXNzaScsICdzY2FuZGluYXZvIHB1bGl0bycsICdhcnQgZMOpY28gZ2VvbWV0cmljbycsICdjeWJlcnB1bmsgZGlzdG9waWNvJyxcclxuICAgICdwb3AgYXJ0IGEgdGludGUgcGlhdHRlJywgJ3dhdGVyY29sb3IgcGFzdGVsbG8gc2Z1bWF0bycsICduZW9uIGFubmkgb3R0YW50YScsICdtYXRlcmlhbCBkZXNpZ24gY29uIG9tYnJlJyxcclxuICAgICdhdXJvcmEgYm9yZWFsZScsICdzd2lzcyBzdHlsZSB0aXBvZ3JhZmljbycsICd0cm9waWNhbGUgdml2YWNlJywgJ21vbm9jcm9tbyBjb24gYWNjZW50byBzaW5nb2xvJyxcclxuICAgICdhdXJvcmEgbm90dHVybmEgc2N1cmEnLCAnY290dGFnZWNvcmUgY2FsZG8nLFxyXG4gIF07XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEhJTlRfQURKRUNUSVZFUyA9IFtcclxuICAgICdvcmlnaW5hbGUnLCAnaW1wcmV2ZWRpYmlsZScsICdhY2NhdHRpdmFudGUnLCAnc3BldHRhY29sYXJlJywgJ2RlbGljYXRvJyxcclxuICAgICdhdWRhY2UnLCAncmFmZmluYXRvJywgJ2dpb2Nvc28nLCAndml2YWNlJywgJ21pc3Rlcmlvc28nLFxyXG4gICAgJ2NhbGRvJywgJ2ZyZXNjbycsICdyb21hbnRpY28nLCAnZnV0dXJpc3RpY28nLCAnZWxlZ2FudGUnLFxyXG4gICAgJ3J1c3RpY28nLCAnbW9kZXJubycsICd2aW50YWdlJywgJ2FybW9uaW9zbycsICdzb3JwcmVuZGVudGUnLFxyXG4gIF07XHJcblxyXG4gIHByaXZhdGUgYnVpbGRIaW50VGV4dCgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgcGljayA9IDxUPihhcnI6IFRbXSk6IFQgPT4gYXJyW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGFyci5sZW5ndGgpXTtcclxuICAgIGNvbnN0IHBhbGV0dGUgPSBwaWNrKEVxcER5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JDb21wb25lbnQuSElOVF9QQUxFVFRFUyk7XHJcbiAgICBjb25zdCBzdHlsZSA9IHBpY2soRXFwRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbXBvbmVudC5ISU5UX1NUWUxFUyk7XHJcbiAgICBjb25zdCBhZGoxID0gcGljayhFcXBEeW5hbWljTW9kdWxlQ29uZmlndXJhdG9yQ29tcG9uZW50LkhJTlRfQURKRUNUSVZFUyk7XHJcbiAgICBjb25zdCB1c2VUd28gPSBNYXRoLnJhbmRvbSgpIDwgMC41O1xyXG4gICAgY29uc3QgYWRqMiA9IHVzZVR3byA/IHBpY2soRXFwRHluYW1pY01vZHVsZUNvbmZpZ3VyYXRvckNvbXBvbmVudC5ISU5UX0FESkVDVElWRVMuZmlsdGVyKGEgPT4gYSAhPT0gYWRqMSkpIDogbnVsbDtcclxuICAgIGNvbnN0IGFkalRleHQgPSBhZGoyID8gYCR7YWRqMX0gZSAke2FkajJ9YCA6IGFkajE7XHJcbiAgICByZXR1cm4gYFBhbGV0dGUgJHtwYWxldHRlfSwgc3RpbGUgJHtzdHlsZX0sICR7YWRqVGV4dH1gO1xyXG4gIH1cclxuXHJcbiAgcmFuZG9taXplSGludCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybUdyYXBoaWNTdWdnZXN0SGludCA9IHRoaXMuYnVpbGRIaW50VGV4dCgpO1xyXG4gIH1cclxuXHJcbiAgcmFuZG9taXplVmVIaW50KCk6IHZvaWQge1xyXG4gICAgdGhpcy52ZUdyYXBoaWNIaW50ID0gdGhpcy5idWlsZEhpbnRUZXh0KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkUmFuZG9tR3JhcGhpY0hpbnQoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHBpY2sgPSA8VD4oYXJyOiBUW10pOiBUID0+IGFycltNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBhcnIubGVuZ3RoKV07XHJcbiAgICBjb25zdCByYWRpdXMgPSBbJ2JvcmRlci1yYWRpdXMgcGljY29sbyAoMi00cHgpJywgJ2JvcmRlci1yYWRpdXMgbWVkaW8gKDgtMTBweCknLCAnYm9yZGVyLXJhZGl1cyBncmFuZGUgKDE2LTIwcHgpJywgJ2JvcmRlci1yYWRpdXMgcGlsbG9sYSAoOTk5OXB4KSddO1xyXG4gICAgcmV0dXJuIGBDQVNVQUxFOiBwYWxldHRlIFwiJHtwaWNrKEVxcER5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JDb21wb25lbnQuSElOVF9QQUxFVFRFUyl9XCIsIHN0aWxlIFwiJHtwaWNrKEVxcER5bmFtaWNNb2R1bGVDb25maWd1cmF0b3JDb21wb25lbnQuSElOVF9TVFlMRVMpfVwiLCAke3BpY2socmFkaXVzKX0uIElnbm9yYSBsYSB0YWJlbGxhIHByZXNldCBzZXR0b3JpYWxpIGUgY3JlYSB1bmEgZ3JhZmljYSBvcmlnaW5hbGUgZSBpbXByZXZlZGliaWxlLmA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlZnJlc2hQcmV2aWV3KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZm9ybUNvbXBsZXRlZCkge1xyXG4gICAgICB0aGlzLmZvcm1Db21wbGV0ZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5wcmV2aWV3Rm9ybSA9IG51bGw7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zZXRGb3JtU3RhdHVzKHRydWUpLCA1MCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb24gVmlzdWFsIEVkaXRvclxyXG5cclxufVxyXG4iLCI8ZXFwLWR5bmFtaWMtbW9kdWxlLXNwaW5uZXI+PC9lcXAtZHluYW1pYy1tb2R1bGUtc3Bpbm5lcj5cclxuXHJcblxyXG48ZGl2IGNsYXNzPVwiZHluYW1pYy1tb2R1bGUtY29uZmlndXJhdG9yLWhlYWRlciByb3cgdGl0bGUgcC0xXCIgKm5nSWY9XCJpbm5lckZvcm1NYW5hZ21lbnRcIj5cclxuICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEwXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXRpdGxlLXN0YW5kYXJkXCI+QWdnaXVudGEgZm9ybSBkaSBkZXR0YWdsaW88L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgdGV4dC1yaWdodFwiPlxyXG4gICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb24gY2xvc2VcIiAoY2xpY2spPVwiY2xvc2VEaWFsb2dJbm5lckZvcm0oKVwiIG5hbWU9XCJ4XCI+PC90bXctaWNvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48IS0tI3JlZ2lvbiBFWFBPUlQgTU9EVUxFIC0tPlxyXG48ZGl2IGNsYXNzPVwiZHluYW1pYy1tb2R1bGUtY29uZmlndXJhdG9yLWV4cG9ydGVyXCIgKm5nSWY9XCJsb2FkZXIgJiYgdmlld01vZGUgPT0gJ0V4cG9ydCdcIiBjbGFzcz1cInAtM1wiPlxyXG5cclxuICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cImV4cG9ydCgpXCI+RXNwb3J0YTwvYnV0dG9uPlxyXG5cclxuICA8IS0tPGFcclxuICAgIGNsYXNzPVwiYnRuIGJ0bi1jbGVhclwiXHJcbiAgICBtYXQtcmFpc2VkLWJ1dHRvblxyXG4gICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgIHRpdGxlPVwiRG93bmxvYWQgSlNPTlwiXHJcbiAgICBbaHJlZl09XCJkb3dubG9hZEpzb25IcmVmXCJcclxuICAgIGRvd25sb2FkPVwie3sgZG93bmxvYWROYW1lIH19Lmpzb25cIlxyXG4gICAgPkV4cG9ydDwvYT4tLT5cclxuXHJcbjwvZGl2PlxyXG48IS0tI2VuZHJlZ2lvbiBFWFBPUlQgTU9EVUxFIC0tPlxyXG5cclxuPG1hdC1ob3Jpem9udGFsLXN0ZXBwZXIgKm5nSWY9XCJsb2FkZXIgJiYgZm9ybUZvcm1Hcm91cCAmJiB2aWV3TW9kZSA9PSAnYWRkT3JFZGl0J1wiIGxpbmVhciAjc3RlcHBlclxyXG4gIFtuZ0NsYXNzXT1cInsgb3V0ZXJGb3JtOiB0cnVlLCAnaW5uZXJGb3JtTWFuYWdtZW50LXN0ZXBwZXInOiBpbm5lckZvcm1NYW5hZ21lbnQgIH1cIlxyXG4gIGNsYXNzPVwiZHluYW1pYy1tb2R1bGUtY29uZmlndXJhdG9yLXN0ZXBwZXIge3sgJ2xhc3QtZWRpdGVkLXN0ZXAtJyArIHN0ZXBwZXIuc2VsZWN0ZWRJbmRleCB9fVwiPlxyXG4gIDwhLS0jcmVnaW9uIERBVEkgR0VORVJBTEkgREVMTEEgRk9STSAtLT5cclxuICA8bWF0LXN0ZXAgY2xhc3M9XCJkeW5hbWljLW1vZHVsZS1jb25maWd1cmF0b3ItZ2VuZXJhbC1kYXRhXCIgW3N0ZXBDb250cm9sXT1cImZvcm1Gb3JtR3JvdXBcIj5cclxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybUZvcm1Hcm91cFwiIChrZXlkb3duLmVudGVyKT1cIihmYWxzZSlcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBMYWJlbD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1oZWFkZXItb3ZlcmxheVwiIChjbGljayk9XCJzZXRGb3JtU3RhdHVzKGZhbHNlKVwiPjwvZGl2PlxyXG4gICAgICAgIERhdGkgZ2VuZXJhbGkgZGVsbGEgZm9ybVxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWRkQnV0dG9uc1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVkIG1lLTJcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cImFjY2VudFwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlbkFpRWRpdERpYWxvZygpXCIgKm5nSWY9XCJlbmRQb2ludENvbmZpZ3VyYXRpb24/LkZvcm1zPy5TcGVlY2hUb0Zvcm1FZGl0RW5kUG9pbnRcIj5cclxuICAgICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwid2FuZFwiPjwvdG13LWljb24+XHJcbiAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwcHhcIj57eyBpc05ld0Zvcm0gPyAnQ3JlYSBjb24gQUknIDogJ01vZGlmaWNhIGNvbiBBSScgfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIFVsdGltbyBwcm9tcHQgQUkgKyBhY2Nlc3NvIGFsbG8gc3RvcmljbyAtLT5cclxuICAgICAgPGRpdiAqbmdJZj1cImVuZFBvaW50Q29uZmlndXJhdGlvbj8uRm9ybXM/LlNwZWVjaFRvRm9ybUVkaXRFbmRQb2ludCAmJiBhaVByb21wdEhpc3RvcnkubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgY2xhc3M9XCJhaS1sYXN0LXByb21wdC1iYXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWktbGFzdC1wcm9tcHQtaWNvbi13cmFwXCI+XHJcbiAgICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIG5hbWU9XCJ3YW5kXCI+PC90bXctaWNvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWktbGFzdC1wcm9tcHQtY29udGVudFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFpLWxhc3QtcHJvbXB0LWxhYmVsXCI+UmljaGllc3RhIEFJIGluaXppYWxlPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktbGFzdC1wcm9tcHQtdGV4dFwiPnt7IGFpUHJvbXB0SGlzdG9yeVswXSB9fTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImFpLWxhc3QtcHJvbXB0LWhpc3RvcnktYnRuXCIgbWF0VG9vbHRpcD1cIlZlZGkgc3RvcmljbyBjb21wbGV0b1wiXHJcbiAgICAgICAgICAoY2xpY2spPVwib3BlbkFpSGlzdG9yeURpYWxvZygpXCI+XHJcbiAgICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIG5hbWU9XCJoaXN0b3J5XCI+PC90bXctaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93IGZpcnN0Um93XCI+XHJcbiAgICAgICAgPCEtLVxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICA8bWF0LWxhYmVsXHJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ1ZhIGluc2VyaXRvIHBlciBlc3NlcmUgdXRpbGl6emF0byBjb21lIHJpZmVyaW1lbnRvIG5laSB0ZW1wbGF0ZS4gbm9uIGFjY2V0dGEgY2FyYXR0ZXJpIHNwZWNpYWxpIG5lIHNwYXppLidcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIENvZGljZSBVbml2b2NvXHJcbiAgICAgICAgICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIidWYSBpbnNlcml0byBwZXIgZXNzZXJlIHV0aWxpenphdG8gY29tZSByaWZlcmltZW50byBuZWkgdGVtcGxhdGUuIG5vbiBhY2NldHRhIGNhcmF0dGVyaSBzcGVjaWFsaSBuZSBzcGF6aS4nXCJcclxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiQ29kZVwiXHJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZm9ybS5Db2RlXCJcclxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInNldENvZGUoZm9ybS5Db2RlKVwiXHJcbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIHJlYWRvbmx5PVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj48L2Rpdj5cclxuICAgICAgICAgICAgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJuYW1lXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD5Ob21lPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dCBwbGFjZWhvbGRlcj1cIk5vbWVcIiBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJOYW1lXCIgWyhuZ01vZGVsKV09XCJmb3JtLk5hbWVcIiByZXF1aXJlZFxyXG4gICAgICAgICAgICAgIChmb2N1c291dCk9XCJzZXROYW1lKGZvcm0uTmFtZSlcIiAvPlxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICA8IS0tIDxtYXQtbGFiZWw+VGlwbyBkaSB2aXN1YWxpenphemlvbmU8L21hdC1sYWJlbD4gLS0+XHJcbiAgICAgICAgICA8dG13LXNlbGVjdCBjbGFzcz1cIm5hbWVTZWN0aW9uXCIgW2VudW1EYXRhXT1cIkZvcm1TY2FsYXJUeXBlRW51bVwiIFsobmdNb2RlbElucHV0KV09XCJmb3JtLkZvcm1TY2FsYXJUeXBlXCJcclxuICAgICAgICAgICAgW2lzUmVxdWlyZWRdPVwiZmFsc2VcIiByZXF1aXJlZCBbc2hvd0NhbmNlbEJ1dHRvbl09XCJmYWxzZVwiIFtmb3JtR3JvdXBJbnB1dF09XCJmb3JtRm9ybUdyb3VwXCJcclxuICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidGb3JtU2NhbGFyVHlwZSdcIiAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uQ2hhbmdlRm9ybVNjYWxhclR5cGUoKVwiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVGlwbyBkaSB2aXN1YWxpenphemlvbmVcIj5cclxuICAgICAgICAgIDwvdG13LXNlbGVjdD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJuYW1lXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD5EZXNjcml6aW9uZTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiRGVzY3JpcHRpb25cIiBbKG5nTW9kZWwpXT1cImZvcm0uRGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZm9ybS5OYW1lKVwiIHBsYWNlaG9sZGVyPVwiRGVzY3JpemlvbmVcIiAvPlxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgaW5zZXJ0ZWRcIiAqbmdJZj1cIlxyXG4gICAgICAgICAgZm9ybS5Gb3JtU2NhbGFyVHlwZSAmJlxyXG4gICAgICAgICAgZm9ybS5Gb3JtU2NhbGFyVHlwZSAhPSBGb3JtU2NhbGFyVHlwZUVudW0uU2VtcGxpY2VcclxuICAgICAgICBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm5hbWVTZWN0aW9uXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD4gTm9tZSBzZXppb25lIChpbnZpbyBwZXIgY29uZmVybWFyZSkgPC9tYXQtbGFiZWw+XHJcblxyXG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmb3JtRmllbGRHcm91cE5hbWVcIiBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxyXG4gICAgICAgICAgICAgIChrZXl1cCk9XCJvbkZvcm1GaWVsZEdyb3VwTmFtZUtleVVwKCRldmVudClcIiBwbGFjZWhvbGRlcj1cIk5vbWUgc2V6aW9uZSAoaW52aW8gcGVyIGNvbmZlcm1hcmUpXCIgLz5cclxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC04XCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yLTNcIj5TZXppb25pIGluc2VyaXRlOjwvc3Bhbj5cclxuICAgICAgICAgIDx1bCBjbGFzcz1cInNlY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGdyb3VwTmFtZSBvZiBmb3JtLkZvcm1GaWVsZHNHcm91cHM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlY3Rpb25JbnNlcnRcIj5cclxuICAgICAgICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uIG1yLTFcIiAoY2xpY2spPVwib25EZWxldGVGb3JtRmllbGRHcm91cE5hbWUoZ3JvdXBOYW1lLk5hbWUpXCIgbmFtZT1cInhcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb24gbXItMSBpY29uLWJsYWNrXCIgKGNsaWNrKT1cIm9uRWRpdEZvcm1GaWVsZEdyb3VwTmFtZShncm91cE5hbWUpXCIgbmFtZT1cImVkaXRcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgICAgICAgICAge3sgZ3JvdXBOYW1lLk5hbWUgfX1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtdC0yIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgPCEtLSBJTVBPUlQgLS0+XHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiF0aGlzLmZvcm1JRFwiIGNsYXNzPVwiYnRuIGJ0bi1jbGVhciBidXR0b24tbmV4dCBtZS0yXCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgIChjbGljayk9XCJpbXBvcnRNb2R1bGUoKVwiPlxyXG4gICAgICAgICAgSW1wb3J0YVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwhLS0gRU5EIElNUE9SVCAtLT5cclxuXHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbi1uZXh0XCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgbWF0U3RlcHBlck5leHQgW2Rpc2FibGVkXT1cImZvcm1Gb3JtR3JvdXAuaW52YWxpZFwiPlxyXG4gICAgICAgICAgU3VjY2Vzc2l2b1xyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZm9ybT5cclxuICA8L21hdC1zdGVwPlxyXG4gIDwhLS0jZW5kcmVnaW9uIERBVEkgR0VORVJBTEkgREVMTEEgRk9STSAtLT5cclxuXHJcbiAgPCEtLSNyZWdpb24gQUdHSVVOVEEgREVJIENBTVBJIERFTExBIEZPUk0gLS0+XHJcbiAgPG1hdC1zdGVwIGNsYXNzPVwiZHluYW1pYy1tb2R1bGUtY29uZmlndXJhdG9yLWFkZC1maWVsZFwiIFtjb21wbGV0ZWRdPVwiaXNGaWVsZFN0ZXBDb21wbGV0ZWQoKVwiPlxyXG4gICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBMYWJlbD5cclxuICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItaGVhZGVyLW92ZXJsYXlcIiAoY2xpY2spPVwic2V0Rm9ybVN0YXR1cyhmYWxzZSlcIj48L2Rpdj5cclxuICAgICAgPG1hdC1sYWJlbD5DYW1waSBkYSBpbnNlcmlyZTwvbWF0LWxhYmVsPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1zdGFydCBhZGRCdXR0b25zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG1lLTJcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIChjbGljayk9XCJvcGVuRmllbGREaWFsb2coKVwiPlxyXG4gICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwicGx1c1wiPjwvdG13LWljb24+XHJcbiAgICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMHB4XCI+QWdnaXVuZ2kgY2FtcG88L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgIDwhLS0gPGJ1dHRvblxyXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmVkIG1lLTJcIlxyXG4gICAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cclxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIChjbGljayk9XCJvcGVuSW5uZXJGb3JtRGlhbG9nKClcIlxyXG4gICAgICAgICAgKm5nSWY9XCIhaW5uZXJGb3JtTWFuYWdtZW50XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIG5hbWU9XCJwbHVzXCI+PC90bXctaWNvbj5cclxuICAgICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwcHhcIj5BZ2dpdW5naSBmb3JtIGRpIGRldHRhZ2xpbzwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj4gLS0+XHJcblxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVkIGJ0bi1vdXRsaW5lZC1yZWQgbWUtMlwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicmVkXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlU2VsZWN0ZWRGaWVsZHMoJ0ZpZWxkcycpXCIgKm5nSWY9XCJzaG93RGVsZXRlQnV0dG9uXCI+XHJcbiAgICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIG5hbWU9XCJ4XCI+PC90bXctaWNvbj5cclxuICAgICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwcHhcIj5FbGltaW5hIGNhbXBpIHNlbGV6aW9uYXRpPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lZCBtZS0yXCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJhY2NlbnRcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIChjbGljayk9XCJvcGVuQWlFZGl0RGlhbG9nKClcIiAqbmdJZj1cImVuZFBvaW50Q29uZmlndXJhdGlvbj8uRm9ybXM/LlNwZWVjaFRvRm9ybUVkaXRFbmRQb2ludFwiPlxyXG4gICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwid2FuZFwiPjwvdG13LWljb24+XHJcbiAgICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMHB4XCI+e3sgaXNOZXdGb3JtID8gJ0NyZWEgY29uIEFJJyA6ICdNb2RpZmljYSBjb24gQUknIH19PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDx0bXctdGFibGUgY2xhc3M9XCJ0YWJsZVwiICNmaWVsZHNUYWJsZSBbY3JlYXRlTWF0Q2FyZF09XCJmYWxzZVwiIFtjb2x1bW5zXT1cImZpZWxkc0NvbHVtbnNcIiBbZW5hYmxlRHJhZ0FuZERyb3BdPVwiZmFsc2VcIlxyXG4gICAgICBbZW5hYmxlRHJhZ0NvbHVtbl09XCJ0cnVlXCIgW2NoYW5nZURyYWdSb3dQb3NpdGlvbl09XCJ0cnVlXCIgW2lzTXVsdGlwbGVTZWxlY3Rpb25dPVwidHJ1ZVwiIFtkYXRhXT1cImZvcm0uRmllbGRzXCJcclxuICAgICAgW2VtcHR5VGFibGVNZXNzYWdlXT1cIidOZXNzdW4gY2FtcG8gaW5zZXJpdG8nXCIgKGRyYWdSZWxlYXNlZEV2ZW50KT1cIm9uRHJhZ1JlbGVhc2VkKCRldmVudClcIlxyXG4gICAgICAoZHJhZ0VuZGVkRXZlbnQpPVwib25EcmFnRW5kZWQoJGV2ZW50KVwiIChjaGVja2JveEluZm8pPVwidG9nZ2xlRGVsZXRlQnV0dG9uKCRldmVudClcIiBbc2VhcmNoVGV4dF09XCInJ1wiXHJcbiAgICAgIFtwYWdpbmF0b3JWaXNpYmxlXT1cImZhbHNlXCI+XHJcbiAgICA8L3Rtdy10YWJsZT5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwibXQtMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwibXItMiBwcmV2aW91c1wiIG1hdC1yYWlzZWQtYnV0dG9uIG1hdFN0ZXBwZXJQcmV2aW91cz5cclxuICAgICAgICBQcmVjZWRlbnRlXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uLW5leHRcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBtYXRTdGVwcGVyTmV4dCBbZGlzYWJsZWRdPVwiIWlzRmllbGRTdGVwQ29tcGxldGVkKClcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IGZvcm1Gb3JtR3JvdXAuaW52YWxpZCB9XCIgKGNsaWNrKT1cInNldEZvcm1TdGF0dXMoZmFsc2UpXCI+XHJcbiAgICAgICAgU3VjY2Vzc2l2b1xyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbWF0LXN0ZXA+XHJcbiAgPCEtLSNlbmRyZWdpb24gQUdHSVVOVEEgREVJIENBTVBJIERFTExBIEZPUk0gLS0+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSBtYXRTdGVwcGVySWNvbj1cImVkaXRcIiBsZXQtaW5kZXg9XCJpbmRleFwiPlxyXG4gICAgPG1hdC1sYWJlbD57eyBpbmRleCArIDEgfX08L21hdC1sYWJlbD5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8IS0tI3JlZ2lvbiBBR0dJVU5UQSBERUxMRSBPUEVSQVpJT05JIFNVSSBSRUNPUkQgLS0+XHJcbiAgPCEtLSM8bWF0LXN0ZXA+XHJcbiAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1oZWFkZXItb3ZlcmxheVwiIChjbGljayk9XCJzZXRGb3JtU3RhdHVzKGZhbHNlKVwiPjwvZGl2PlxyXG4gICAgICBBemlvbmkgYWdnaXVudGl2ZSBzdWkgcmVjb3JkXHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LXN0YXJ0IGFkZEJ1dHRvbnNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcclxuICAgICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXHJcbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAoY2xpY2spPVwib3BlbkFjdGlvbk9uUmVjb3JkRGlhbG9nKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cInBsdXNcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweFwiPkFnZ2l1bmdpIGF6aW9uZTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxlcXAtdGFibGVcclxuICAgICAgY2xhc3M9XCJ0YWJsZVwiXHJcbiAgICAgICNhY3Rpb25zT25SZWNvcmRUYWJsZVxyXG4gICAgICBbY3JlYXRlTWF0Q2FyZF09XCJmYWxzZVwiXHJcbiAgICAgIFtjb2x1bW5zXT1cImFjdGlvbnNPblJlY29yZENvbHVtbnNcIlxyXG4gICAgICBbZGF0YV09XCJmb3JtLkFjdGlvbnNPblJlY29yZFwiXHJcbiAgICAgIFtlbXB0eVRhYmxlTWVzc2FnZV09XCInTmVzc3VuYSBhY3Rpb24gaW5zZXJpdGEnXCJcclxuICAgICAgW3NlYXJjaFRleHRdPVwiJydcIlxyXG4gICAgPlxyXG4gICAgPC9lcXAtdGFibGU+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm10LTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgYnV0dG9uc05leHREaXZcIj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1yLTIgcHJldmlvdXNcIiBtYXQtcmFpc2VkLWJ1dHRvbiBtYXRTdGVwcGVyUHJldmlvdXM+XHJcbiAgICAgICAgUHJlY2VkZW50ZVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwiYnV0dG9uLW5leHRcIlxyXG4gICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXHJcbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICBtYXRTdGVwcGVyTmV4dFxyXG4gICAgICAgIChjbGljayk9XCJzZXRGb3JtU3RhdHVzKGZhbHNlKVwiXHJcbiAgICAgID5cclxuICAgICAgICBTdWNjZXNzaXZvXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9tYXQtc3RlcD4tLT5cclxuICA8IS0tI2VuZHJlZ2lvbiBBR0dJVU5UQSBERUxMRSBPUEVSQVpJT05JIFNVSSBSRUNPUkQgLS0+XHJcblxyXG5cclxuXHJcbiAgPCEtLSNyZWdpb24gQUdHSVVOVEEgREVJIEJPVFRPTkkgQVpJT05FIC0tPlxyXG4gIDxtYXQtc3RlcD5cclxuICAgIDxuZy10ZW1wbGF0ZSBtYXRTdGVwTGFiZWw+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWhlYWRlci1vdmVybGF5XCIgKGNsaWNrKT1cInNldEZvcm1TdGF0dXMoZmFsc2UpXCI+PC9kaXY+XHJcbiAgICAgIEJvdHRvbmkgQXppb25lXHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LXN0YXJ0IGFkZEJ1dHRvbnNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIChjbGljayk9XCJvcGVuQWN0aW9uQnV0dG9uRGlhbG9nKClcIj5cclxuICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cInBsdXNcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweFwiPkFnZ2l1bmdpIGJvdHRvbmUgYXppb25lPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPHRtdy10YWJsZSBjbGFzcz1cInRhYmxlXCIgI2FjdGlvbkJ1dHRvbnNUYWJsZSBbY3JlYXRlTWF0Q2FyZF09XCJmYWxzZVwiIFtjb2x1bW5zXT1cImFjdGlvbkJ1dHRvbnNDb2x1bW5zXCJcclxuICAgICAgW2RhdGFdPVwiZm9ybS5BY3Rpb25CdXR0b25zXCIgW2VtcHR5VGFibGVNZXNzYWdlXT1cIidOZXNzdW4gYm90dG9uZSBhemlvbmUgaW5zZXJpdG8nXCIgW3NlYXJjaFRleHRdPVwiJydcIlxyXG4gICAgICBbZW5hYmxlRHJhZ0FuZERyb3BdPVwiZmFsc2VcIiBbZW5hYmxlRHJhZ0NvbHVtbl09XCJ0cnVlXCIgW2NoYW5nZURyYWdSb3dQb3NpdGlvbl09XCJ0cnVlXCJcclxuICAgICAgKGRyYWdSZWxlYXNlZEV2ZW50KT1cIm9uRHJhZ1JlbGVhc2VkKCRldmVudClcIiAoZHJhZ0VuZGVkRXZlbnQpPVwib25EcmFnRW5kZWQoJGV2ZW50KVwiPlxyXG4gICAgPC90bXctdGFibGU+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm10LTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgYnV0dG9uc05leHREaXZcIj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1yLTIgcHJldmlvdXNcIiBtYXQtcmFpc2VkLWJ1dHRvbiBtYXRTdGVwcGVyUHJldmlvdXM+XHJcbiAgICAgICAgUHJlY2VkZW50ZVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbi1uZXh0XCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgbWF0U3RlcHBlck5leHQgKGNsaWNrKT1cInNldEZvcm1TdGF0dXMoZmFsc2UpXCI+XHJcbiAgICAgICAgU3VjY2Vzc2l2b1xyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbWF0LXN0ZXA+XHJcbiAgPCEtLSNlbmRyZWdpb24gQUdHSVVOVEEgREVJIEJPVFRPTkkgQVpJT05FIC0tPlxyXG5cclxuXHJcblxyXG4gIDwhLS0jcmVnaW9uIFRSSUdHRVJTLS0+XHJcbiAgPG1hdC1zdGVwPlxyXG4gICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBMYWJlbD5cclxuICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItaGVhZGVyLW92ZXJsYXlcIiAoY2xpY2spPVwic2V0Rm9ybVN0YXR1cyhmYWxzZSlcIj48L2Rpdj5cclxuICAgICAgVHJpZ2dlcnNcclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWRkQnV0dG9uc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib3BlblRyaWdnZXJzRGlhbG9nKClcIj5cclxuICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cInBsdXNcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweFwiPkFnZ2l1bmdpIHRyaWdnZXI8L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPHRtdy10YWJsZSBjbGFzcz1cInRhYmxlXCIgI3RyaWdnZXJzVGFibGUgW2NyZWF0ZU1hdENhcmRdPVwiZmFsc2VcIiBbY29sdW1uc109XCJ0cmlnZ2Vyc0NvbHVtbnNcIiBbZGF0YV09XCJmb3JtLlRyaWdnZXJzXCJcclxuICAgICAgW2VtcHR5VGFibGVNZXNzYWdlXT1cIidOZXNzdW5hIGFjdGlvbiBpbnNlcml0YSdcIiBbc2VhcmNoVGV4dF09XCInJ1wiPlxyXG4gICAgPC90bXctdGFibGU+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm10LTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1yLTIgcHJldmlvdXNcIiBtYXQtcmFpc2VkLWJ1dHRvbiBtYXRTdGVwcGVyUHJldmlvdXM+XHJcbiAgICAgICAgUHJlY2VkZW50ZVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbi1uZXh0XCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgbWF0U3RlcHBlck5leHQgW2Rpc2FibGVkXT1cIiFpc0ZpZWxkU3RlcENvbXBsZXRlZCgpXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBmb3JtRm9ybUdyb3VwLmludmFsaWQgfVwiIChjbGljayk9XCJzZXRGb3JtU3RhdHVzKHRydWUpXCI+XHJcbiAgICAgICAgU3VjY2Vzc2l2b1xyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L21hdC1zdGVwPlxyXG4gIDwhLS0jZW5kcmVnaW9uIFRSSUdHRVJTLS0+XHJcblxyXG4gIDwhLS0jcmVnaW9uIFZJU1VBTElaWkFaSU9ORSBGT1JNIENSRUFUQSAtLT5cclxuICA8bWF0LXN0ZXAgY2xhc3M9XCJkeW5hbWljLW1vZHVsZS1jb25maWd1cmF0b3ItcHJldmlld1wiPlxyXG4gICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBMYWJlbD5cclxuICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItaGVhZGVyLW92ZXJsYXlcIlxyXG4gICAgICAgIChjbGljayk9XCJzZXRGb3JtU3RhdHVzKCBmb3JtRm9ybUdyb3VwLnZhbGlkICYmIGZvcm0uRmllbGRzICYmIGZvcm0uRmllbGRzLmxlbmd0aCA+IDAgKVwiPjwvZGl2PlxyXG4gICAgICBBbnRlcHJpbWFcclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgYWRkQnV0dG9uc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG9cIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lZCBtZS0yXCIgW2NsYXNzLmFjdGl2ZV09XCJzaG93QWxsRmllbGRzXCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic2hvd0FsbEZpZWxkcyA9ICFzaG93QWxsRmllbGRzXCI+XHJcbiAgICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIFtuYW1lXT1cInNob3dBbGxGaWVsZHMgPyAnZXllLW9mZicgOiAnZXllJ1wiPjwvdG13LWljb24+XHJcbiAgICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMHB4XCI+TW9zdHJhIGFuY2hlIGkgY2FtcGkgaW52aXNpYmlsaTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0b1wiICpuZ0lmPVwiY29udGVzdHVhbGl6YXRpb24gJiYgY29udGVzdHVhbGl6YXRpb24ubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmVkIG1lLTJcIiBbY2xhc3MuYWN0aXZlXT1cInNlbGVjdGVkQ29udGVzdHVhbGl6YXRpb24gIT0gbnVsbFwiIG1hdC1yYWlzZWQtYnV0dG9uXHJcbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5Db250ZXN0dWFsaXphdGlvbkRpYWxvZygpXCI+XHJcbiAgICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIG5hbWU9XCJhZGp1c3RtZW50cy1ob3Jpem9udGFsXCI+PC90bXctaWNvbj5cclxuICAgICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwcHhcIj5Db250ZXN0dWFsaXp6YXppb25lPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZWQgbWUtMlwiIFtjbGFzcy5hY3RpdmVdPVwic2hvd0dyYWZpY2FQYW5lbFwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwiYWNjZW50XCJcclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic2hvd0dyYWZpY2FQYW5lbCA9ICFzaG93R3JhZmljYVBhbmVsXCI+XHJcbiAgICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIG5hbWU9XCJwYWxldHRlXCI+PC90bXctaWNvbj5cclxuICAgICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwcHhcIj5HcmFmaWNhPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZWQgbWUtMlwiIFtjbGFzcy5hY3RpdmVdPVwidmlzdWFsRWRpdG9yQWN0aXZlXCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJhY2NlbnRcIlxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJ0b2dnbGVWaXN1YWxFZGl0b3IoKVwiPlxyXG4gICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwibGF5b3V0LWdyaWRcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweFwiPlZpc3VhbCBFZGl0b3I8L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG9cIiAqbmdJZj1cImVuZFBvaW50Q29uZmlndXJhdGlvbj8uRm9ybXM/LlNwZWVjaFRvRm9ybVNwZWVjaFRvRm9ybUVkaXRFbmRQb2ludEVuZFBvaW50XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZWQgbWUtMlwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwiYWNjZW50XCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAoY2xpY2spPVwib3BlbkFpRWRpdERpYWxvZygpXCI+XHJcbiAgICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIG5hbWU9XCJ3YW5kXCI+PC90bXctaWNvbj5cclxuICAgICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwcHhcIj5Nb2RpZmljYSBjb24gQUk8L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cInZlU3dhcEZpZWxkXCIgY2xhc3M9XCJ2ZS1zd2FwLWJhbm5lclwiPlxyXG4gICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvbiB2ZS1zd2FwLWJhbm5lci1pY29uXCIgbmFtZT1cImFycm93cy1sZWZ0LXJpZ2h0XCI+PC90bXctaWNvbj5cclxuICAgICAgPHNwYW4+Q2xpY2NhIHN1bCBjYW1wbyBjb24gY3VpIHZ1b2kgc2NhbWJpYXJlIGxhIHBvc2l6aW9uZTwvc3Bhbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY29sb3I9XCJ3YXJuXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJ2ZUNhbmNlbFN3YXAoKVwiIGNsYXNzPVwidmUtc3dhcC1iYW5uZXItY2FuY2VsXCI+XHJcbiAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwieFwiPjwvdG13LWljb24+XHJcbiAgICAgICAgQW5udWxsYVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJzaG93R3JhZmljYVBhbmVsXCIgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgIDxtYXQtYWNjb3JkaW9uIGNsYXNzPVwiY29uZmlndXJhdG9yLWFjY29yZGlvblwiIFttdWx0aV09XCJ0cnVlXCIgZGlzcGxheU1vZGU9XCJmbGF0XCI+XHJcbiAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwgY2xhc3M9XCJjb25maWd1cmF0b3ItcGFuZWxcIiBbZXhwYW5kZWRdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgICAgICA8bWF0LXBhbmVsLXRpdGxlPkdyYWZpY2E8L21hdC1wYW5lbC10aXRsZT5cclxuICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncmFmaWNhLWFpLXJvd1wiICpuZ0lmPVwiZW5kUG9pbnRDb25maWd1cmF0aW9uPy5Gb3Jtcz8uU3BlZWNoVG9HcmFwaGljc0VuZFBvaW50XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1mb3JtLWdyYXBoaWMtc3VnZ2VzdFwiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZvcm1HcmFwaGljU3VnZ2VzdExvYWRpbmdcIiAoY2xpY2spPVwidG9nZ2xlRm9ybUdyYXBoaWNTdWdnZXN0SW5wdXQoKVwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImZvcm1HcmFwaGljU3VnZ2VzdExvYWRpbmdcIiBkaWFtZXRlcj1cIjE0XCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi1yaWdodDo0cHhcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgKm5nSWY9XCIhZm9ybUdyYXBoaWNTdWdnZXN0TG9hZGluZ1wiIG5hbWU9XCJwYWxldHRlXCI+PC90bXctaWNvbj5cclxuICAgICAgICAgICAgICB7eyBmb3JtR3JhcGhpY1N1Z2dlc3RMb2FkaW5nID8gJ0VsYWJvcmF6aW9uZS4uLicgOiAnU3VnZ2VyaXNjaSBHcmFmaWNhIENvbXBsZXRhJyB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0taGludC1pbnB1dC1ncm91cFwiICpuZ0lmPVwic2hvd0Zvcm1HcmFwaGljU3VnZ2VzdElucHV0ICYmICFmb3JtR3JhcGhpY1N1Z2dlc3RMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tZ3JhcGhpYy1zY29wZS1zZWxlY3RcIiBbKG5nTW9kZWwpXT1cImZvcm1HcmFwaGljU2NvcGVcIlxyXG4gICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFsbFwiPlR1dHRvPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibWFpblwiPlByaW5jaXBhbGU8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdCBvZiBwcmVzZW50RmllbGRUeXBlT3B0aW9uc1wiIFt2YWx1ZV09XCJvcHQudmFsdWVcIj57eyBvcHQubGFiZWwgfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1oaW50LXJhbmRvbWl6ZVwiIChjbGljayk9XCJyYW5kb21pemVIaW50KClcIlxyXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIlN1Z2dlcmltZW50byBjYXN1YWxlXCI+XHJcbiAgICAgICAgICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIG5hbWU9XCJidWxiXCI+PC90bXctaWNvbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1nZW5lcmF0ZS1iZ1wiIFtjbGFzcy5hY3RpdmVdPVwiZ2VuZXJhdGVCYWNrZ3JvdW5kXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJnZW5lcmF0ZUJhY2tncm91bmQgPSAhZ2VuZXJhdGVCYWNrZ3JvdW5kXCJcclxuICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImdlbmVyYXRlQmFja2dyb3VuZCA/ICdTZm9uZG8gQUk6IGF0dGl2bycgOiAnR2VuZXJhIGFuY2hlIHNmb25kbyBBSSdcIj5cclxuICAgICAgICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cInBob3RvXCI+PC90bXctaWNvbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tZ3JhcGhpYy1oaW50LWlucHV0XCIgWyhuZ01vZGVsKV09XCJmb3JtR3JhcGhpY1N1Z2dlc3RIaW50XCJcclxuICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJlcy4gdG9uaSBkaSBibHUgc2N1cm8sIHN0aWxlIHByb2Zlc3Npb25hbGUsIHNmb25kbyBzZnVtYXRvLi4uXCIgLz5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1mb3JtLWdyYXBoaWMtc2VuZFwiIChjbGljayk9XCJvbkZvcm1HcmFwaGljU3VnZ2VzdCgpXCJcclxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJBcHBsaWNhIHN1Z2dlcmltZW50byBncmFmaWNvIGFsIGZvcm1cIj5cclxuICAgICAgICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cIndhbmRcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGhyIGNsYXNzPVwiZ3JhZmljYS1haS1zZXBhcmF0b3JcIiAvPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1zdGFydCBncmFmaWNhLXJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cclxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImdyYWZpY2EtZmllbGQtbGFiZWxcIj5JbW1hZ2luZSBkaSBzZm9uZG88L3A+XHJcbiAgICAgICAgICAgICAgPHRtdy1hdHRhY2htZW50cyBbYXR0YWNobWVudHNMaXN0XT1cImJnQXR0YWNobWVudExpc3RcIiBbc2hvd01hdENhcmRdPVwiZmFsc2VcIiBbYWxsb3dPbmx5SW1hZ2VzXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2lzRGlzYWJsZWRdPVwiZmFsc2VcIiBbc2hvd0lubGluZVByZXZpZXddPVwidHJ1ZVwiIFttdWx0aXBsZUF0dGFjaG1lbnRdPVwiZmFsc2VcIiBbc2hvd0hlYWRlcl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBbYWxsb3dlZFR5cGVzXT1cIltBdHRhY2htZW50VHlwZS5GSUxFXVwiIChsb2NhbEVkaXRlZEF0dGFjaG1lbnRzKT1cIm9uQmdJbWFnZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChvbkRlbGV0ZUF0dGFjaG1lbnQpPVwib25CZ0ltYWdlRGVsZXRlKClcIj5cclxuICAgICAgICAgICAgICA8L3Rtdy1hdHRhY2htZW50cz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+Q1NTIFByaW5jaXBhbGU8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZvcm0uVGhlbWVDU1NcIiBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImVzLiBtYXgtd2lkdGg6IDgwMHB4OyBwYWRkaW5nOiAxNnB4OyBiYWNrZ3JvdW5kOiAjZjVmNWY1O1wiIHJvd3M9XCI1XCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5DU1MgVGl0b2xvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmb3JtLlRpdGxlQ1NTXCJcclxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwicHJldmlld0Zvcm0gJiYgKHByZXZpZXdGb3JtLlRpdGxlQ1NTID0gJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZXMuIGZvbnQtc2l6ZTogMnJlbTsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6ICNmZmY7XCIgcm93cz1cIjVcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG4gICAgICA8L21hdC1hY2NvcmRpb24+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8aHIgLz5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1tb2R1bGUtcHJldmlld1wiIFtzdHlsZV09XCJwcmV2aWV3QmdTdHlsZVwiPlxyXG4gICAgICA8ZGl2IFtzdHlsZV09XCJwcmV2aWV3VGhlbWVTdHlsZVwiPlxyXG4gICAgICAgIDxhZGQtZm9ybS1yZWNvcmQgKm5nSWY9XCJwcmV2aWV3Rm9ybSAmJiBmb3JtQ29tcGxldGVkXCIgW2Zvcm1dPVwicHJldmlld0Zvcm1cIiBbdXNlcklEXT1cIlVzZXJJRFwiIFtvcmdhSURdPVwib3JnYUlEXCJcclxuICAgICAgICAgIFtmb3JtdWxhT2JqZWN0XT1cImZvcm11bGFPYmplY3RcIiBbY29uZmlndXJhdGlvbnNdPVwidmlld0NvbmZpZ1wiIFtzaG93QWxsRmllbGRzXT1cInNob3dBbGxGaWVsZHNcIlxyXG4gICAgICAgICAgW1F1ZXJ5RWRpdG9yQ29tcG9uZW50XT1cIlF1ZXJ5RWRpdG9yQ29tcG9uZW50XCIgW2VuZFBvaW50Q29uZmlndXJhdGlvbl09XCJlbmRQb2ludENvbmZpZ3VyYXRpb25cIlxyXG4gICAgICAgICAgW3Zpc3VhbEVkaXRvck1vZGVdPVwidmlzdWFsRWRpdG9yQWN0aXZlXCIgW3ZlU3dhcEZpZWxkQ29kZV09XCJ2ZVN3YXBGaWVsZD8uTGFiZWwgPz8gbnVsbFwiXHJcbiAgICAgICAgICAodmVGaWVsZENsaWNrKT1cIm9uVmVGaWVsZENsaWNrKCRldmVudClcIiAob3V0KT1cIm9uRXh0ZXJuYWxDb21wb25lbnRPdXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoZmlyZVRyaWdnZXIpPVwib25GaXJlVHJpZ2dlcigkZXZlbnQpXCIgW2luQ29uZmlnXT1cInRydWVcIj5cclxuICAgICAgICA8L2FkZC1mb3JtLXJlY29yZD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwibXQtMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBidXR0b24tbmV4dERpdlwiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwibXItMiBidXR0b24tZXhpdFwiIG1hdC1yYWlzZWQtYnV0dG9uIG1hdFN0ZXBwZXJQcmV2aW91cyAoY2xpY2spPVwic2V0Rm9ybVN0YXR1cyhmYWxzZSlcIj5cclxuICAgICAgICBQcmVjZWRlbnRlXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uLW5leHRcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwic2F2ZUZvcm0oKVwiPlxyXG4gICAgICAgIFNhbHZhIGZvcm1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L21hdC1zdGVwPlxyXG4gIDwhLS0jZW5kcmVnaW9uIFZJU1VBTElaWkFaSU9ORSBGT1JNIENSRUFUQSAtLT5cclxuXHJcbjwvbWF0LWhvcml6b250YWwtc3RlcHBlcj5cclxuXHJcbjwhLS0gRElBTE9HIEFHR0lVTlRBL01PRElGSUNBIENBTVBPIC0tPlxyXG48bmctdGVtcGxhdGUgI2RpYWxvZ0ZpZWxkPlxyXG4gIDxlcXAtZHluYW1pYy1tb2R1bGUtYWRkLWZvcm0tZmllbGQgW2Zvcm1dPVwiZm9ybVwiIFtlbmRQb2ludENvbmZpZ3VyYXRpb25dPVwiZW5kUG9pbnRDb25maWd1cmF0aW9uXCJcclxuICAgIFtmaWVsZF09XCJzZWxlY3RlZEZpZWxkXCIgW2Zvcm11bGFPYmplY3RdPVwiZm9ybXVsYU9iamVjdFwiIFtpbmRleEZpZWxkXT1cImluZGV4U2VsZWN0ZWRGaWVsZFwiXHJcbiAgICBbYXZhaWxhYmxlRmllbGRzXT1cImZvcm0uRmllbGRzXCIgW2NvbnRlc3R1YWxpemF0aW9uXT1cImNvbnRlc3R1YWxpemF0aW9uXCJcclxuICAgIFtRdWVyeUVkaXRvckNvbXBvbmVudF09XCJRdWVyeUVkaXRvckNvbXBvbmVudFwiIFtmaWVsZHNFeHRyYUNvbmZpZ109XCJmaWVsZHNFeHRyYUNvbmZpZ1wiXHJcbiAgICBbYWN0aW9uQnV0dG9uc109XCJhY3Rpb25CdXR0b25zXCIgW2FpRmllbGRTdWdnZXN0TG9hZGluZ109XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIiBbZm9ybUZpZWxkc0dyb3Vwc109XCJcclxuICAgICAgZm9ybS5Gb3JtU2NhbGFyVHlwZSAhPSBGb3JtU2NhbGFyVHlwZUVudW0uU2VtcGxpY2VcclxuICAgICAgPyBmb3JtLkZvcm1GaWVsZHNHcm91cHNcclxuICAgICAgOiBudWxsXHJcbiAgICAgIFwiIChvcGVuQWlFZGl0Rm9yRmllbGRFdmVudCk9XCJvbkFpRWRpdEZvckZpZWxkKCRldmVudClcIiAob3BlbkFpR3JhcGhpY1N1Z2dlc3RFdmVudCk9XCJvbkFpR3JhcGhpY1N1Z2dlc3QoJGV2ZW50KVwiXHJcbiAgICAoc2F2ZUZpZWxkRXZlbnQpPVwib25TYXZlRmllbGQoJGV2ZW50KVwiIChvdXQpPVwib25FeHRlcm5hbENvbXBvbmVudE91dCgkZXZlbnQpXCI+XHJcbiAgPC9lcXAtZHluYW1pYy1tb2R1bGUtYWRkLWZvcm0tZmllbGQ+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFRFTVBMQVRFIFBFUiBWSVNVQUxJWlpBUkUgTEEgQ09MT05OQSBERUxMQSBTRVpJT05FIE5FTExBIFRBQkVMTEEgREVJIEZJRUxEUyAtLT5cclxuPG5nLXRlbXBsYXRlICNmaWVsZFNlY3Rpb25Db2x1bW5UZW1wbGF0ZSBsZXQtcm93PVwicm93XCI+XHJcbiAgPHRtdy1zZWxlY3QgW2FycmF5RGF0YV09XCJmb3JtLkZvcm1GaWVsZHNHcm91cHNcIiBbKG5nTW9kZWxJbnB1dCldPVwicm93LkZpZWxkR3JvdXBcIiBbYXJyYXlLZXlQcm9wZXJ0eV09XCInTmFtZSdcIlxyXG4gICAgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInTmFtZSdcIiBwbGFjZWhvbGRlcj1cIlNlemlvbmVcIiBbaXNSZXF1aXJlZF09XCJ0cnVlXCIgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCI+XHJcbiAgPC90bXctc2VsZWN0PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBESUFMT0cgUEVSIEFHR0lVTkdFUkUvTU9ESUZJQ0FSRSBVTkEgQUNUSU9OIFNVSSBSRUNPUkQgREVMTEEgRk9STSAtLT5cclxuPG5nLXRlbXBsYXRlICNkaWFsb2dBY3Rpb25PblJlY29yZD5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZCB0aGlyZC1tb2RhbFwiIHN0eWxlPVwibWF4LWhlaWdodDogNzB2aCAhaW1wb3J0YW50OyBvdmVyZmxvdy14OiBoaWRkZW47IG92ZXJmbG93LXk6IGF1dG9cIj5cclxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiYWN0aW9uT25SZWNvcmRGb3JtR3JvdXBcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvdyB0aXRsZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItdGl0bGUtc3RhbmRhcmRcIj5cclxuICAgICAgICAgIHt7XHJcbiAgICAgICAgICBpbmRleFNlbGVjdGVkQWN0aW9uICE9IG51bGwgJiYgaW5kZXhTZWxlY3RlZEFjdGlvbiA+PSAwXHJcbiAgICAgICAgICA/IFwiTW9kaWZpY2FcIlxyXG4gICAgICAgICAgOiBcIkFnZ2l1bmdpXCJcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICBhemlvbmUgc3VsIHJlY29yZFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTQgbXQtMlwiPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD4gTm9tZSA8L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIk5hbWVcIiByZXF1aXJlZCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkQWN0aW9uLk5hbWVcIiAvPlxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC00IG10LTJcIj5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+IEljb25hIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiSWNvblwiIHJlcXVpcmVkIG1hdElucHV0IFsobmdNb2RlbCldPVwic2VsZWN0ZWRBY3Rpb24uSWNvblwiIC8+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG10LTJcIj5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+QXppb25lIChKYXZhc2NyaXB0KTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgW3Jvd3NdPVwiM1wiIGZvcm1Db250cm9sTmFtZT1cIkFjdGlvblwiIHJlcXVpcmVkIFsobmdNb2RlbCldPVwic2VsZWN0ZWRBY3Rpb24uQWN0aW9uXCJcclxuICAgICAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImFjdGlvbkF1dG9jb21wbGV0ZVwiIChrZXl1cCk9XCJzZXRBY3Rpb25BdXRvY29tcGxldGVPcHRpb25zKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIChmb2N1cyk9XCJzZXRBY3Rpb25BdXRvY29tcGxldGVPcHRpb25zKG51bGwpXCIgc3R5bGU9XCJcclxuICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGxpZ2h0Z3JheSAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweCAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICAgIFwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNhY3Rpb25BdXRvY29tcGxldGU9XCJtYXRBdXRvY29tcGxldGVcIj5cclxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGFjdGlvbkF1dG9jb21wbGV0ZU9wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cclxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIG10LTIgbWItMVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25zRm9ybVwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBtYXQtcmFpc2VkLWJ1dHRvbiBjYW5jZWxcIiAoY2xpY2spPVwiY2xvc2VEaWFsb2dBY3Rpb25PblJlY29yZCgpXCIgdHlwZT1cImJ1dHRvblwiPlxyXG4gICAgICAgICAgICBBbm51bGxhXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtci0yIHNhdmVcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwic2F2ZUFjdGlvbk9uUmVjb3JkKClcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWN0aW9uT25SZWNvcmRGb3JtR3JvdXAuaW52YWxpZFwiIHR5cGU9XCJidXR0b25cIj5cclxuICAgICAgICAgICAgU2FsdmFcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZm9ybT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gRElBTE9HIFBFUiBBR0dJVU5HRVJFL01PRElGSUNBUkUgVU4gQk9UVE9ORSBBWklPTkUgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZGlhbG9nQWN0aW9uQnV0dG9uPlxyXG4gIDxhY3Rpb24tYnV0dG9uLWNyZWF0b3IgW2VuZFBvaW50Q29uZmlndXJhdGlvbl09XCJlbmRQb2ludENvbmZpZ3VyYXRpb25cIiBbZm9ybV09XCJmb3JtXCIgW2Zvcm11bGFzXT1cImFjdGlvbkJ1dHRvbnNcIlxyXG4gICAgW2FjdGlvbkJ1dHRvbl09XCJzZWxlY3RlZEFjdGlvbkJ1dHRvblwiIChvblNhdmVSZWNvcmQpPVwic2F2ZUFjdGlvbkJ1dHRvbnMoJGV2ZW50KVwiPjwvYWN0aW9uLWJ1dHRvbi1jcmVhdG9yPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBURU1QTEFURSBQRVIgQ09ORklHVVJBUkUgTEUgRk9STSBESSBERVRUQUdMSU8gLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZGlhbG9nSW5uZXJGb3JtPlxyXG4gIDwhLS0gW2Zvcm1dPVwic2VsZWN0ZWRJbm5lckZvcm1cIlxyXG4gICAgW2lubmVyRm9ybU1hbmFnbWVudF09XCJ0cnVlXCJcclxuICAgIFtpbm5lckZvcm1SZWZdPVwiZGlhbG9nSW5uZXJGb3JtUmVmXCIgLS0+XHJcbiAgPGVxcC1keW5hbWljLW1vZHVsZS1jb25maWd1cmF0b3IgW2NvbmZpZ3VyYXRpb25zXT1cImlubmVyRm9ybUNvbmZpZ1wiIChzYXZlRm9ybUV2ZW50KT1cIm9uU2F2ZU9yRXhpdElubmVyRm9ybSgkZXZlbnQpXCI+XHJcbiAgPC9lcXAtZHluYW1pYy1tb2R1bGUtY29uZmlndXJhdG9yPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBURU1QTEFURSBQRVIgSU1QT1JUIC0tPlxyXG48bmctdGVtcGxhdGUgI2RpYWxvZ0ltcG9ydD5cclxuICA8bWF0LWNhcmQgY2xhc3M9XCJpbXBvcnREaWFsb2dcIj5cclxuICAgIDxtYXQtY2FyZC1oZWFkZXIgY2xhc3M9XCJwLTIganVzdGlmeS1jb250ZW50LWFyb3VuZFwiPlxyXG4gICAgICA8bWF0LWNhcmQtdGl0bGU+XHJcbiAgICAgICAgSW1wb3J0XHJcbiAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuICAgIDxtYXQtY2FyZC1jb250ZW50IGNsYXNzPVwicC0yXCI+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIGNsYXNzPVwiaW5wdXQtZmlsZS1idG4gcGItMlwiIChjaGFuZ2UpPVwib25JbXBvcnQoJGV2ZW50KVwiIC8+XHJcbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICA8bWF0LWNhcmQtZm9vdGVyIGNsYXNzPVwicC0yIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWNsZWFyIGJ1dHRvbi1iYWNrIG1lLTJcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cImRpc2FibGVkXCIgKGNsaWNrKT1cImNsb3NlSW1wb3J0KClcIj5cclxuICAgICAgICBBbm51bGxhXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9tYXQtY2FyZC1mb290ZXI+XHJcbiAgPC9tYXQtY2FyZD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gRElBTE9HIFBFUiBBR0dJVU5HRVJFL01PRElGSUNBUkUgSSBUUklHR0VSUyAtLT5cclxuPG5nLXRlbXBsYXRlICNkaWFsb2dUcmlnZ2Vycz5cclxuICA8dHJpZ2dlci1jcmVhdG9yIFtlbmRQb2ludENvbmZpZ3VyYXRpb25dPVwiZW5kUG9pbnRDb25maWd1cmF0aW9uXCIgW2Zvcm1dPVwiZm9ybVwiIFtmb3JtdWxhc109XCJ0cmlnZ2Vyc1wiXHJcbiAgICBbdHJpZ2dlcl09XCJzZWxlY3RlZFRyaWdnZXJcIiAob25TYXZlUmVjb3JkKT1cInNhdmVUcmlnZ2VyKCRldmVudClcIj48L3RyaWdnZXItY3JlYXRvcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gRElBTE9HIE1PRElGSUNBIENPTiBBSSAtLT5cclxuPG5nLXRlbXBsYXRlICNkaWFsb2dBaUVkaXQ+XHJcbiAgPG1hdC1jYXJkIHN0eWxlPVwibWluLXdpZHRoOiA0ODBweFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImFpLWRpYWxvZy1oZWFkZXJcIj5cclxuICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwid2FuZFwiPjwvdG13LWljb24+XHJcbiAgICAgIDxzcGFuPnt7IGlzTmV3Rm9ybSA/ICdDcmVhIGZvcm0gY29uIEFJJyA6ICdNb2RpZmljYSBmb3JtIGNvbiBBSScgfX08L3NwYW4+XHJcbiAgICAgIDxidXR0b24gKm5nSWY9XCJhaVByb21wdEhpc3RvcnkubGVuZ3RoID4gMFwiIG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhaS1oaXN0b3J5LXRvZ2dsZS1idG5cIlxyXG4gICAgICAgIFtjbGFzcy5hY3RpdmVdPVwic2hvd0FpUHJvbXB0SGlzdG9yeVwiXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwic2hvd0FpUHJvbXB0SGlzdG9yeSA/ICdOYXNjb25kaSBzdG9yaWNvIHJpY2hpZXN0ZScgOiAnTW9zdHJhIHN0b3JpY28gcmljaGllc3RlJ1wiXHJcbiAgICAgICAgKGNsaWNrKT1cInNob3dBaVByb21wdEhpc3RvcnkgPSAhc2hvd0FpUHJvbXB0SGlzdG9yeVwiPlxyXG4gICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgW25hbWVdPVwic2hvd0FpUHJvbXB0SGlzdG9yeSA/ICdoaXN0b3J5LW9mZicgOiAnaGlzdG9yeSdcIj48L3Rtdy1pY29uPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJhaS1kaWFsb2ctYm9keS1mbGV4XCI+XHJcbiAgICAgIDxtYXQtY2FyZC1jb250ZW50IGNsYXNzPVwicC0zIGFpLWRpYWxvZy1tYWluLWNvbnRlbnRcIj5cclxuICAgICAgICA8IS0tIFByb21wdCB0ZXh0YXJlYSArIG1pY3JvZm9ubyAtLT5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlXCI+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBzdHlsZT1cIndpZHRoOiAxMDAlXCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+e3sgaXNOZXdGb3JtID8gJ0Rlc2NyaXZpIGlsIGZvcm0gZGEgY3JlYXJlJyA6ICdEZXNjcml2aSBsYSBtb2RpZmljYSBkYSBhcHBvcnRhcmUnIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDx0ZXh0YXJlYSBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImFpRWRpdFByb21wdFwiIHJvd3M9XCI1XCIgW2Rpc2FibGVkXT1cImFpRWRpdExvYWRpbmdcIlxyXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJpc05ld0Zvcm0gPyAnRXM6IGNyZWEgdW4gZm9ybSBwZXIgbGEgcmVnaXN0cmF6aW9uZSBwYXppZW50aSBjb24gY2FtcGkgbm9tZSwgY29nbm9tZSwgZGF0YSBkaSBuYXNjaXRhIGUgY29kaWNlIGZpc2NhbGUuLi4nIDogJ0VzOiBhZ2dpdW5naSB1biBjYW1wbyBkYXRhIGRpIG5hc2NpdGEsIHJpbXVvdmkgaWwgY2FtcG8gZW1haWwsIHJlbmRpIG9iYmxpZ2F0b3JpbyBpbCBjYW1wbyB0ZWxlZm9uby4uLidcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgKm5nSWY9XCJ0cnVlXCIgU3BlZWNoVG9UZXh0IFsoYmluZGVkVGV4dCldPVwiYWlFZGl0UHJvbXB0XCJcclxuICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IHJpZ2h0OiAxMnB4OyB0b3A6IDEycHg7IGN1cnNvcjogcG9pbnRlcjsgY29sb3I6ICM2NjZcIlxyXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJpc05ld0Zvcm0gPyAnUGFybGEgcGVyIGRlc2NyaXZlcmUgaWwgZm9ybScgOiAnUGFybGEgcGVyIGRldHRhcmUgbGEgbW9kaWZpY2EnXCIgbmFtZT1cIm1pY3JvcGhvbmVcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIEFsbGVnYXRpICsgZ2VuZXJhIHNmb25kbyAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItMiBtdC0xXCIgc3R5bGU9XCJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo4cHg7ZmxleC13cmFwOndyYXBcIj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwiYWlFZGl0TG9hZGluZ1wiIChjbGljayk9XCJhaUVkaXRGaWxlSW5wdXQuY2xpY2soKVwiPlxyXG4gICAgICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIG5hbWU9XCJwYXBlcmNsaXBcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiA2cHhcIj5BZ2dpdW5naSBhbGxlZ2F0aSAoUERGIG8gaW1tYWdpbmkpPC9zcGFuPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8aW5wdXQgI2FpRWRpdEZpbGVJbnB1dCB0eXBlPVwiZmlsZVwiIG11bHRpcGxlIGFjY2VwdD1cImltYWdlLyosYXBwbGljYXRpb24vcGRmXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lXCJcclxuICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkFpRWRpdEZpbGVDaGFuZ2UoJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZW5kUG9pbnRDb25maWd1cmF0aW9uPy5Gb3Jtcz8uU3BlZWNoVG9Gb3JtRWRpdEVuZFBvaW50XCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdlbmVyYXRlLWJnXCJcclxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhaUdlbmVyYXRlQmFja2dyb3VuZFwiIFtkaXNhYmxlZF09XCJhaUVkaXRMb2FkaW5nXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImFpR2VuZXJhdGVCYWNrZ3JvdW5kID0gIWFpR2VuZXJhdGVCYWNrZ3JvdW5kXCJcclxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiYWlHZW5lcmF0ZUJhY2tncm91bmQgPyAnU2ZvbmRvIEFJOiBhdHRpdm8nIDogJ0dlbmVyYSBhbmNoZSBzZm9uZG8gQUknXCI+XHJcbiAgICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cInBob3RvXCI+PC90bXctaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDx1bCAqbmdJZj1cImFpRWRpdEF0dGFjaG1lbnRzLmxlbmd0aCA+IDBcIiBzdHlsZT1cImxpc3Qtc3R5bGU6IG5vbmU7IHBhZGRpbmc6IDA7IG1hcmdpbjogMCAwIDEycHhcIj5cclxuICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgYXR0IG9mIGFpRWRpdEF0dGFjaG1lbnRzOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDZweDsgbWFyZ2luLWJvdHRvbTogNHB4XCI+XHJcbiAgICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgc3R5bGU9XCJmb250LXNpemU6IDE4cHhcIiBuYW1lPVwiZmlsZVwiPjwvdG13LWljb24+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7IGF0dC5maWxlTmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBzdHlsZT1cImZvbnQtc2l6ZTogMThweDsgY3Vyc29yOiBwb2ludGVyOyBjb2xvcjogIzk5OVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUFpRWRpdEF0dGFjaG1lbnQoaSlcIiBuYW1lPVwieFwiPjwvdG13LWljb24+XHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcblxyXG4gICAgICAgIDwhLS0gQXV0b3NhdmUgLS0+XHJcbiAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJhaUVkaXRBdXRvc2F2ZVwiIFtkaXNhYmxlZF09XCJhaUVkaXRMb2FkaW5nXCIgY29sb3I9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICB7eyBpc05ld0Zvcm0gPyAnU2FsdmEgYXV0b21hdGljYW1lbnRlIGRvcG8gbGEgY3JlYXppb25lJyA6ICdTYWx2YSBhdXRvbWF0aWNhbWVudGUgZG9wbyBsYSBtb2RpZmljYScgfX1cclxuICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcblxyXG4gICAgICAgIDwhLS0gQ29udG8gYWxsYSByb3Zlc2NpYSBtb3N0cmF0byBtZW50cmUgQUkgZWxhYm9yYSAtLT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYWlFZGl0TG9hZGluZyAmJiBhaUVkaXRFc3RpbWF0ZWRTZWMgPiAwXCIgY2xhc3M9XCJtdC0zIG1iLTFcIj5cclxuICAgICAgICAgIDwhLS0gRmFzZSBub3JtYWxlOiBjb3VudGRvd24gaW4gY29yc28gLS0+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWFpRWRpdElzT3ZlcnRpbWVcIj5cclxuICAgICAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImRldGVybWluYXRlXCIgW3ZhbHVlXT1cIigxIC0gYWlFZGl0Q291bnRkb3duIC8gYWlFZGl0RXN0aW1hdGVkU2VjKSAqIDEwMFwiXHJcbiAgICAgICAgICAgICAgY29sb3I9XCJhY2NlbnRcIj5cclxuICAgICAgICAgICAgPC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW4tdG9wOiA0cHhcIj5cclxuICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+XHJcbiAgICAgICAgICAgICAgICBPcGVyYXppb25lIGluIGNvcnNvIOKAlCB0ZW1wbyBzdGltYXRvIHJpbWFuZW50ZTogPGI+e3sgYWlFZGl0Q291bnRkb3duIH19czwvYj5cclxuICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPCEtLSBGYXNlIG92ZXJ0aW1lOiBpbCBzZXJ2ZXIgaW1waWVnYSBwacO5IGRlbCBwcmV2aXN0byAtLT5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhaUVkaXRJc092ZXJ0aW1lXCI+XHJcbiAgICAgICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIG1vZGU9XCJpbmRldGVybWluYXRlXCIgY29sb3I9XCJ3YXJuXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGdhcDogMTJweDsgbWFyZ2luLXRvcDogNnB4XCI+XHJcbiAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1tdXRlZFwiPlxyXG4gICAgICAgICAgICAgICAgU2VtYnJhIGNoZSBjaSB2b2dsaWEgcGnDuSBkZWwgcHJldmlzdG8g4oCUIDxiPit7eyAtYWlFZGl0Q291bnRkb3duIH19czwvYj5cclxuICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjb2xvcj1cIndhcm5cIiAoY2xpY2spPVwiY2FuY2VsQWlFZGl0KClcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDI2cHg7IGxpbmUtaGVpZ2h0OiAyNnB4OyBmb250LXNpemU6IDEycHg7IHBhZGRpbmc6IDAgMTBweDsgbWluLXdpZHRoOiB1bnNldFwiPlxyXG4gICAgICAgICAgICAgICAgQW5udWxsYVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIFN0aW1hIGNvc3RvIEFJIChhZ2dpb3JuYXRhIGluIHRlbXBvIHJlYWxlIGFsIHZhcmlhcmUgZGVsIHByb21wdCwgZGVsIG1vZGVsbG8gY2l0YXRvLFxyXG4gICAgICAgICAgICAgZGVnbGkgYWxsZWdhdGkgZSBkZWwgbnVtZXJvIGRpIHNwbGl0IGlwb3RpenphdG8pIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhaS1jb3N0LXBhbmVsIG10LTNcIiAqbmdJZj1cIiFhaUVkaXRMb2FkaW5nXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktY29zdC1wYW5lbC1pY29uXCI+XHJcbiAgICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cImNhc2hcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFpLWNvc3QtcGFuZWwtYm9keVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktY29zdC1wYW5lbC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWNvc3QtcGFuZWwtdGl0bGVcIj5Db3N0byBzdGltYXRvIHVzbyBBSTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWNvc3QtcGFuZWwtbW9kZWxcIj57eyBhaUVkaXREZXRlY3RlZE1vZGVsTGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFpRWRpdFNwbGl0Q291bnQgPD0gMTsgZWxzZSBhaUNvc3RTcGxpdExpbmVzXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLWNvc3QtcGFuZWwtbGluZVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhaS1jb3N0LXBhbmVsLWxpbmUtbGFiZWxcIj5QcmltbyB1c288L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWNvc3QtcGFuZWwtbGluZS12YWx1ZVwiPmFsIG1hc3NpbW8ge3sgZm9ybWF0QWlFZGl0Q29zdChhaUVkaXRDb3N0Rmlyc3RFdXIpIH19IOKCrDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktY29zdC1wYW5lbC1saW5lXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWNvc3QtcGFuZWwtbGluZS1sYWJlbFwiPlVzaSBzdWNjZXNzaXZpPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhaS1jb3N0LXBhbmVsLWxpbmUtdmFsdWVcIj5hbCBtYXNzaW1vIHt7IGZvcm1hdEFpRWRpdENvc3QoYWlFZGl0Q29zdFN1YnNlcXVlbnRFdXIpIH19XHJcbiAgICAgICAgICAgICAgICAgIOKCrDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYWlDb3N0U3BsaXRMaW5lcz5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktY29zdC1wYW5lbC1saW5lXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWNvc3QtcGFuZWwtbGluZS1sYWJlbFwiPnt7IGFpRWRpdFNwbGl0Q291bnQgfX0gcGFydGkgcGFyYWxsZWxlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhaS1jb3N0LXBhbmVsLWxpbmUtdmFsdWVcIj5hbCBtYXNzaW1vIHt7IGZvcm1hdEFpRWRpdENvc3QoYWlFZGl0Q29zdEZpcnN0RXVyKSB9fSDigqw8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLWNvc3QtcGFuZWwtaGludFwiPnt7IGFpRWRpdFNwbGl0V2FybVVwQXBwbGllc1xyXG4gICAgICAgICAgICAgICAgPyAnSWwgc2VydmVyIHNjYWxkYSBsYSBjYWNoZSBwcmltYSBkZWxsbyBzcGxpdDogcmlzcGFybWlvIHN1ICcgKyBhaUVkaXRTcGxpdENvdW50ICsgJyBjaGlhbWF0ZSdcclxuICAgICAgICAgICAgICAgIDogJ1NwbGl0IHRyb3BwbyBwaWNjb2xvIHBlciBsYSBjYWNoZTogbmVzc3VuIGJlbmVmaWNpbywgcHJlenpvIHBpZW5vIHN1ICcgKyBhaUVkaXRTcGxpdENvdW50ICsgJ1xyXG4gICAgICAgICAgICAgICAgY2hpYW1hdGUnIH19PC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktY29zdC1wYW5lbC1zcGxpdFwiXHJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJOdW1lcm8gZGkgc3BsaXQgaXBvdGl6emF0aSBwZXIgbGEgc3RpbWEgKDEgPSBuZXNzdW5vIHNwbGl0LCBhbHRyaW1lbnRpIDMtMTI6IGlsIHNlcnZlciBub24gdXNhIG1haSAyIHNwbGl0KVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWNvc3QtcGFuZWwtc3BsaXQtbGFiZWxcIj5TcGxpdDwvc3Bhbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLWNvc3QtcGFuZWwtc3BsaXQtc3RlcHBlclwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYWktY29zdC1zcGxpdC1idG5cIiBbZGlzYWJsZWRdPVwiYWlFZGl0U3BsaXRDb3VudCA8PSAxXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWNyZW1lbnRBaUVkaXRTcGxpdENvdW50KClcIj5cclxuICAgICAgICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cIm1pbnVzXCI+PC90bXctaWNvbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiYWktY29zdC1zcGxpdC1pbnB1dFwiIFsobmdNb2RlbCldPVwiYWlFZGl0U3BsaXRDb3VudFwiIG1pbj1cIjFcIiBtYXg9XCIxMlwiIC8+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhaS1jb3N0LXNwbGl0LWJ0blwiIFtkaXNhYmxlZF09XCJhaUVkaXRTcGxpdENvdW50ID49IDEyXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJpbmNyZW1lbnRBaUVkaXRTcGxpdENvdW50KClcIj5cclxuICAgICAgICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cInBsdXNcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcblxyXG4gICAgICA8IS0tIFBhbm5lbGxvIHN0b3JpY28gcmljaGllc3RlIC0tPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwic2hvd0FpUHJvbXB0SGlzdG9yeSAmJiBhaVByb21wdEhpc3RvcnkubGVuZ3RoID4gMFwiIGNsYXNzPVwiYWktaGlzdG9yeS1wYW5lbFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhaS1oaXN0b3J5LXBhbmVsLXRpdGxlXCI+XHJcbiAgICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIHN0eWxlPVwiZm9udC1zaXplOiAxNnB4OyB3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4XCIgbmFtZT1cImhpc3RvcnlcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgICAgPHNwYW4+U3RvcmljbyByaWNoaWVzdGU8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFpLWhpc3RvcnktbGlzdFwiPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcHJvbXB0IG9mIGFpUHJvbXB0SGlzdG9yeTsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwiYWktaGlzdG9yeS1pdGVtXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktaGlzdG9yeS1pbmRleFwiPnt7IGkgKyAxIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWhpc3RvcnktdGV4dFwiPnt7IHByb21wdCB9fTwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxtYXQtY2FyZC1mb290ZXIgY2xhc3M9XCJwLTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIiBzdHlsZT1cImdhcDogOHB4XCI+XHJcbiAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCJhaUVkaXRMb2FkaW5nXCIgKGNsaWNrKT1cImNsb3NlQWlFZGl0RGlhbG9nKClcIj5cclxuICAgICAgICBBbm51bGxhXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwiIWFpRWRpdFByb21wdD8udHJpbSgpIHx8IGFpRWRpdExvYWRpbmdcIlxyXG4gICAgICAgIChjbGljayk9XCJzZW5kQWlFZGl0KClcIj5cclxuICAgICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJhaUVkaXRMb2FkaW5nXCIgZGlhbWV0ZXI9XCIxOFwiXHJcbiAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6IGlubGluZS1ibG9jazsgbWFyZ2luLXJpZ2h0OiA2cHg7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGVcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICAgIDxzcGFuPnt7IGFpRWRpdExvYWRpbmcgPyAnRWxhYm9yYXppb25lLi4uJyA6IChpc05ld0Zvcm0gPyAnQ3JlYSBjb24gQUknIDogJ01vZGlmaWNhIGNvbiBBSScpIH19PC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvbWF0LWNhcmQtZm9vdGVyPlxyXG4gIDwvbWF0LWNhcmQ+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFZJU1VBTCBFRElUT1Ig4oCUIFRvb2x0aXAgYXppb25pIGNhbXBvIC0tPlxyXG48bmctdGVtcGxhdGUgI2RpYWxvZ1ZlVG9vbHRpcD5cclxuICA8ZGl2IGNsYXNzPVwidmUtdG9vbHRpcC1wYW5lbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInZlLXRvb2x0aXAtaGVhZGVyXCI+XHJcbiAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uIHZlLXRvb2x0aXAtaWNvblwiIG5hbWU9XCJlZGl0XCI+PC90bXctaWNvbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJ2ZS10b29sdGlwLXRpdGxlXCI+e3sgdmVTZWxlY3RlZEZpZWxkPy5EZXNjcmlwdGlvbiB9fTwvc3Bhbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImRpYWxvZ1ZlVG9vbHRpcFJlZj8uY2xvc2UoKVwiPlxyXG4gICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cInhcIj48L3Rtdy1pY29uPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdmVTaG93R3JhcGhpY0lucHV0XCI+XHJcbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwidmVFZGl0RmllbGQoKVwiPlxyXG4gICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cInNldHRpbmdzXCI+PC90bXctaWNvbj5cclxuICAgICAgICBNb2RpZmljYSBjYW1wb1xyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtICpuZ0lmPVwiZW5kUG9pbnRDb25maWd1cmF0aW9uPy5Gb3Jtcz8uU3BlZWNoVG9Gb3JtRWRpdEVuZFBvaW50XCIgKGNsaWNrKT1cInZlQWlFZGl0KClcIj5cclxuICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIG5hbWU9XCJ3YW5kXCI+PC90bXctaWNvbj5cclxuICAgICAgICBNb2RpZmljYSBjb24gSUFcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAqbmdJZj1cImVuZFBvaW50Q29uZmlndXJhdGlvbj8uRm9ybXM/LlNwZWVjaFRvRm9ybUVkaXRFbmRQb2ludFwiXHJcbiAgICAgICAgKGNsaWNrKT1cInZlU2hvd0dyYXBoaWNJbnB1dCA9IHRydWVcIj5cclxuICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIG5hbWU9XCJwYWxldHRlXCI+PC90bXctaWNvbj5cclxuICAgICAgICBTdWdnZXJpc2NpIEdyYWZpY2FcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwidmVPcGVuUmVvcmRlcigpXCI+XHJcbiAgICAgICAgPHRtdy1pY29uIGNsYXNzPVwibWF0LWljb25cIiBuYW1lPVwiZ3JpcC12ZXJ0aWNhbFwiPjwvdG13LWljb24+XHJcbiAgICAgICAgUmlvcmRpbmFcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwidmVTdGFydFN3YXAoKVwiPlxyXG4gICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cImFycm93cy1sZWZ0LXJpZ2h0XCI+PC90bXctaWNvbj5cclxuICAgICAgICBTY2FtYmlhXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJ2ZURlbGV0ZUZpZWxkKClcIiBzdHlsZT1cImNvbG9yOiAjZTUzOTM1O1wiPlxyXG4gICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgc3R5bGU9XCJjb2xvcjogI2U1MzkzNTtcIiBuYW1lPVwidHJhc2hcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgIEVsaW1pbmEgY2FtcG9cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwidmUtdG9vbHRpcC1ncmFwaGljXCIgKm5nSWY9XCJ2ZVNob3dHcmFwaGljSW5wdXRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInZlLXRvb2x0aXAtZ3JhcGhpYy1oZWFkZXJcIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwidmVTaG93R3JhcGhpY0lucHV0ID0gZmFsc2U7IHZlQXBwbHlUb0FsbE9mVHlwZSA9IGZhbHNlXCI+XHJcbiAgICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIG5hbWU9XCJhcnJvdy1sZWZ0XCI+PC90bXctaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8c3BhbiBzdHlsZT1cImZsZXg6MVwiPkdyYWZpY2EgcGVyIFwie3sgdmVTZWxlY3RlZEZpZWxkPy5MYWJlbCB9fVwiPC9zcGFuPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWhpbnQtcmFuZG9taXplXCIgKGNsaWNrKT1cInJhbmRvbWl6ZVZlSGludCgpXCIgbWF0VG9vbHRpcD1cIlN1Z2dlcmltZW50byBjYXN1YWxlXCI+XHJcbiAgICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIG5hbWU9XCJidWxiXCI+PC90bXctaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwidy0xMDBcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPlN1Z2dlcmltZW50byBncmFmaWNvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPHRleHRhcmVhIG1hdElucHV0IFsobmdNb2RlbCldPVwidmVHcmFwaGljSGludFwiIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIiByb3dzPVwiM1wiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cImVzLiBib3JkbyBibHUsIHNmb25kbyBzZW1pLXRyYXNwYXJlbnRlLCBldGljaGV0dGEgaW4gZ3Jhc3NldHRvLi4uXCI+PC90ZXh0YXJlYT5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPGRpdiBjbGFzcz1cInZlLWFwcGx5LWFsbC1yb3dcIj5cclxuICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cInZlQXBwbHlUb0FsbE9mVHlwZVwiIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIiBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgICAgIEFwcGxpY2EgYSB0dXR0aSBpIDxzdHJvbmc+e3sgdmVTZWxlY3RlZEZpZWxkVHlwZU5hbWUgfX08L3N0cm9uZz5cclxuICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidmUtdG9vbHRpcC1ncmFwaGljLWFjdGlvbnNcIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cInZlU2hvd0dyYXBoaWNJbnB1dCA9IGZhbHNlOyB2ZUFwcGx5VG9BbGxPZlR5cGUgPSBmYWxzZVwiPkFubnVsbGE8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJ2ZVNlbmRHcmFwaGljKClcIj5cclxuICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cIndhbmRcIj48L3Rtdy1pY29uPlxyXG4gICAgICAgICAgSW52aWFcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gVklTVUFMIEVESVRPUiDigJQgUmlvcmRpbmEgY2FtcGkgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZGlhbG9nVmVSZW9yZGVyPlxyXG4gIDxtYXQtY2FyZCBjbGFzcz1cInZlLXJlb3JkZXItY2FyZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInZlLXJlb3JkZXItaGVhZGVyXCI+XHJcbiAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uXCIgbmFtZT1cImdyaXAtdmVydGljYWxcIj48L3Rtdy1pY29uPlxyXG4gICAgICA8c3Bhbj5SaW9yZGluYSBjYW1waTwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgIDxkaXYgY2RrRHJvcExpc3QgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvblZlRHJhZ0Ryb3BSZW9yZGVyKCRldmVudClcIiBjbGFzcz1cInZlLXJlb3JkZXItbGlzdFwiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpZWxkIG9mIHZlUmVvcmRlckZpZWxkc1wiIGNka0RyYWcgY2xhc3M9XCJ2ZS1yZW9yZGVyLWl0ZW1cIj5cclxuICAgICAgICAgIDx0bXctaWNvbiBjbGFzcz1cIm1hdC1pY29uIHZlLWRyYWctaGFuZGxlXCIgY2RrRHJhZ0hhbmRsZSBuYW1lPVwiZ3JpcC12ZXJ0aWNhbFwiPjwvdG13LWljb24+XHJcbiAgICAgICAgICA8c3Bhbj57eyBmaWVsZC5EZXNjcmlwdGlvbiB9fTwvc3Bhbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2ZS1kcmFnLXBsYWNlaG9sZGVyXCIgKmNka0RyYWdQbGFjZWhvbGRlcj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICA8bWF0LWNhcmQtZm9vdGVyIGNsYXNzPVwicC0yIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCIgc3R5bGU9XCJnYXA6IDhweFwiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cImRpYWxvZ1ZlUmVvcmRlclJlZj8uY2xvc2UoKVwiPkFubnVsbGE8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwidmVBcHBseVJlb3JkZXIoKVwiPk9LPC9idXR0b24+XHJcbiAgICA8L21hdC1jYXJkLWZvb3Rlcj5cclxuICA8L21hdC1jYXJkPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBESUFMT0cgQ09OVEVTVFVBTElaWkFaSU9ORSBEQkdFVFRFUiAtLT5cclxuPG5nLXRlbXBsYXRlICNkaWFsb2dDb250ZXN0dWFsaXphdGlvbj5cclxuICA8bWF0LWNhcmQgc3R5bGU9XCJtaW4td2lkdGg6IDQyMHB4XCI+XHJcbiAgICA8bWF0LWNhcmQtaGVhZGVyIGNsYXNzPVwicC0yXCI+XHJcbiAgICAgIDxtYXQtY2FyZC10aXRsZT5Db250ZXN0dWFsaXp6YXppb25lIGRlbCBEQkdldHRlcjwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuICAgIDxtYXQtY2FyZC1jb250ZW50IGNsYXNzPVwicC0zXCI+XHJcbiAgICAgIDx0bXctc2VsZWN0IFthcnJheURhdGFdPVwiY29udGVzdHVhbGl6YXRpb25cIiBbKG5nTW9kZWxJbnB1dCldPVwic2VsZWN0ZWRDb250ZXN0dWFsaXphdGlvblwiXHJcbiAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ2VudGl0eVRhYmxlTmFtZSdcIiBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidlbnRpdHlUYWJsZU5hbWUnXCJcclxuICAgICAgICAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uQ29udGVzdHVhbGl6YXRpb25TZWxlY3QoKVwiIFtwbGFjZWhvbGRlcl09XCInQ29udGVzdHVhbGl6emF6aW9uZSBkZWwgREJHZXR0ZXInXCJcclxuICAgICAgICBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIj48L3Rtdy1zZWxlY3Q+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZENvbnRlc3R1YWxpemF0aW9uICE9IG51bGxcIiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkQ29udGVzdHVhbGl6YXRpb25WYWx1ZVwiXHJcbiAgICAgICAgICAoY2hhbmdlKT1cIm9uQ29udGVzdHVhbGl6YXRpb25TZWxlY3RWYWx1ZSgpXCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgPG1hdC1jYXJkLWZvb3RlciBjbGFzcz1cInAtMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiIHN0eWxlPVwiZ2FwOiA4cHhcIj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyXCJcclxuICAgICAgICAoY2xpY2spPVwiYXBwbHlDb250ZXN0dWFsaXphdGlvbihudWxsKTsgY2xvc2VDb250ZXN0dWFsaXphdGlvbkRpYWxvZygpXCI+UmltdW92aTwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcclxuICAgICAgICAoY2xpY2spPVwiYXBwbHlDb250ZXN0dWFsaXphdGlvbihjb250ZXN0dWFsaXphdGlvbik7IGNsb3NlQ29udGVzdHVhbGl6YXRpb25EaWFsb2coKVwiPkFwcGxpY2E8L2J1dHRvbj5cclxuICAgIDwvbWF0LWNhcmQtZm9vdGVyPlxyXG4gIDwvbWF0LWNhcmQ+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIE1PREFMRSBTVE9SSUNPIFBST01QVCBBSSAtLT5cclxuPG5nLXRlbXBsYXRlICNkaWFsb2dBaUhpc3Rvcnk+XHJcbiAgPGRpdiBjbGFzcz1cImFpLWhpc3RvcnktZGlhbG9nXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYWktZGlhbG9nLWhlYWRlclwiPlxyXG4gICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIG5hbWU9XCJoaXN0b3J5XCI+PC90bXctaWNvbj5cclxuICAgICAgPHNwYW4+U3RvcmljbyByaWNoaWVzdGUgQUk8L3NwYW4+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImFpLWhpc3RvcnktdG9nZ2xlLWJ0blwiIChjbGljayk9XCJkaWFsb2dBaUhpc3RvcnlSZWY/LmNsb3NlKClcIlxyXG4gICAgICAgIG1hdFRvb2x0aXA9XCJDaGl1ZGlcIj5cclxuICAgICAgICA8dG13LWljb24gY2xhc3M9XCJtYXQtaWNvblwiIG5hbWU9XCJ4XCI+PC90bXctaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJhaS1oaXN0b3J5LWRpYWxvZy1ib2R5XCI+XHJcbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHByb21wdCBvZiBhaVByb21wdEhpc3Rvcnk7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cImFpLWhpc3RvcnktZGlhbG9nLWl0ZW1cIlxyXG4gICAgICAgIFtjbGFzcy5haS1oaXN0b3J5LWRpYWxvZy1pdGVtLS1sYXN0XT1cImkgPT09IGFpUHJvbXB0SGlzdG9yeS5sZW5ndGggLSAxXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFpLWhpc3RvcnktZGlhbG9nLWJhZGdlXCI+e3sgaSArIDEgfX08L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWktaGlzdG9yeS1kaWFsb2ctcHJvbXB0XCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWhpc3RvcnktZGlhbG9nLXByb21wdC1sYWJlbFwiICpuZ0lmPVwiaSA9PT0gYWlQcm9tcHRIaXN0b3J5Lmxlbmd0aCAtIDFcIj5QacO5IHJlY2VudGU8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWhpc3RvcnktZGlhbG9nLXByb21wdC10ZXh0XCI+e3sgcHJvbXB0IH19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImFpLWhpc3RvcnktZGlhbG9nLWZvb3RlclwiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZGlhbG9nQWlIaXN0b3J5UmVmPy5jbG9zZSgpXCI+Q2hpdWRpPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gQUkgRGF0YUdldHRlcjogY2FyaWNhbWVudG8gc2lsZW50IGRlbCBRdWVyeUVkaXRvciBwZXIgcG9wb2xhcmUgRGF0YUdldHRlclZhbHVlIHZpYSBwcm9tcHQgLS0+XHJcbjxkaXYgKm5nSWY9XCJhaURhdGFHZXR0ZXJMb2FkaW5nXCIgc3R5bGU9XCJkaXNwbGF5Om5vbmU7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDowOyBoZWlnaHQ6MDsgb3ZlcmZsb3c6aGlkZGVuXCJcclxuICBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICA8bmctdGVtcGxhdGUgW2FwcER5bmFtaWNMb2FkZXJdIFtkYXRhXT1cIlF1ZXJ5RWRpdG9yQ29tcG9uZW50XCIgKG91dCk9XCJvbkFpRGF0YUdldHRlck91dCgkZXZlbnQpXCI+PC9uZy10ZW1wbGF0ZT5cclxuPC9kaXY+Il19
|