iptdevs-design-system 3.1.571 → 3.1.573
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/esm2020/lib/cod/steps/cod-form-step-four/cod-form-step-four.component.mjs +1 -1
- package/esm2020/lib/cod-self-managed/cod-form-self-managed/cod-self-managed.component.mjs +1 -1
- package/esm2020/lib/cod-self-managed/cod-self-managed.module.mjs +8 -4
- package/esm2020/lib/cod-self-managed/steps/cod-form-step-three/cod-self-form-step-three.component.mjs +165 -7
- package/esm2020/lib/cod-self-managed/steps/cod-form-step-two/cod-self-form-step-two.component.mjs +4 -4
- package/fesm2015/iptdevs-design-system.mjs +171 -23
- package/fesm2015/iptdevs-design-system.mjs.map +1 -1
- package/fesm2020/iptdevs-design-system.mjs +170 -23
- package/fesm2020/iptdevs-design-system.mjs.map +1 -1
- package/lib/cod-self-managed/cod-self-managed.module.d.ts +2 -1
- package/lib/cod-self-managed/steps/cod-form-step-three/cod-self-form-step-three.component.d.ts +32 -2
- package/package.json +1 -1
|
@@ -1,11 +1,106 @@
|
|
|
1
1
|
import { Component, EventEmitter, Output } from '@angular/core';
|
|
2
2
|
import { CodSelfManagedSteps } from '../../logic/cod-self-managed-steps';
|
|
3
|
+
import { Validators } from '@angular/forms';
|
|
4
|
+
import Swal from 'sweetalert2';
|
|
3
5
|
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "
|
|
6
|
+
import * as i1 from "@angular/forms";
|
|
7
|
+
import * as i2 from "primeng/api";
|
|
8
|
+
import * as i3 from "../../../core/services/commercial-service/comercial.service";
|
|
9
|
+
import * as i4 from "./../../../core/utils/base-service/base.service";
|
|
10
|
+
import * as i5 from "./../../../cod/logic/calculate-quotes.service";
|
|
11
|
+
import * as i6 from "@angular/common";
|
|
12
|
+
import * as i7 from "../../../components/atoms/input/input.component";
|
|
13
|
+
import * as i8 from "../../../components/atoms/loader/loader.component";
|
|
14
|
+
import * as i9 from "../../../components/atoms/select/select.component";
|
|
15
|
+
import * as i10 from "primeng/tooltip";
|
|
16
|
+
import * as i11 from "primeng/button";
|
|
17
|
+
import * as i12 from "primeng/toast";
|
|
18
|
+
import * as i13 from "primeng/table";
|
|
5
19
|
export class CodSelfFormStepThreeComponent extends CodSelfManagedSteps {
|
|
6
|
-
constructor() {
|
|
20
|
+
constructor(fb, messageService, commercialService, baseService, calculateQuotesService) {
|
|
7
21
|
super();
|
|
22
|
+
this.fb = fb;
|
|
23
|
+
this.messageService = messageService;
|
|
24
|
+
this.commercialService = commercialService;
|
|
25
|
+
this.baseService = baseService;
|
|
26
|
+
this.calculateQuotesService = calculateQuotesService;
|
|
8
27
|
this.completed = new EventEmitter();
|
|
28
|
+
this.financingData = new EventEmitter();
|
|
29
|
+
this.messageInfo = "";
|
|
30
|
+
this.visible = false;
|
|
31
|
+
this.paymentMethods = [
|
|
32
|
+
{ code: '1', name: 'Financiado' },
|
|
33
|
+
{ code: '2', name: 'Contado' },
|
|
34
|
+
];
|
|
35
|
+
this.feeResponse = false;
|
|
36
|
+
this.thereArePlans = false;
|
|
37
|
+
this.isFinancing = false;
|
|
38
|
+
this.isCalculateQuotesButtonClicked = false;
|
|
39
|
+
this.dataFinancing = [];
|
|
40
|
+
}
|
|
41
|
+
initForm() {
|
|
42
|
+
this.codSelfFormStepThree = this.fb.group({
|
|
43
|
+
program_price: [{ value: '', disabled: true }, [Validators.required]],
|
|
44
|
+
payment_date: ['', [Validators.required]],
|
|
45
|
+
payment_method: ['', [Validators.required]],
|
|
46
|
+
quota_times: [{ value: '', disabled: true }, [Validators.required]],
|
|
47
|
+
total_price: [{ value: '', disabled: true }, [Validators.required]],
|
|
48
|
+
paid_level: ['', [Validators.required]],
|
|
49
|
+
quota_price: ['', [Validators.required]],
|
|
50
|
+
fee_number: ['', [Validators.required]],
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
onReject() {
|
|
54
|
+
this.messageService.clear('confirm');
|
|
55
|
+
this.visible = false;
|
|
56
|
+
}
|
|
57
|
+
showConfirm() {
|
|
58
|
+
if (!this.visible) {
|
|
59
|
+
this.messageService.add({ key: 'confirm', sticky: true, severity: 'success', summary: 'Can you send me the report?', life: 10000 });
|
|
60
|
+
this.visible = true;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
selectPaymentMethod(paymentMethod) {
|
|
64
|
+
this.feeResponse = true;
|
|
65
|
+
this.thereArePlans = false;
|
|
66
|
+
if (paymentMethod !== '') {
|
|
67
|
+
const request = {
|
|
68
|
+
token: this.baseService.getUserToken(),
|
|
69
|
+
course_type: Number(this.localStorageCOD.getCodFormData(2, 'course_type')),
|
|
70
|
+
agreement: Number(this.localStorageCOD.getCodFormData(2, 'agreement_by_category')),
|
|
71
|
+
course_modality: Number(this.localStorageCOD.getCodFormData(2, 'course_modality')),
|
|
72
|
+
payment_method: parseInt(paymentMethod)
|
|
73
|
+
};
|
|
74
|
+
this.commercialService.ObtainCodPrices(request).subscribe((response) => {
|
|
75
|
+
if (response.data != null) {
|
|
76
|
+
this.dataPrices = response.data;
|
|
77
|
+
this.feeResponse = false;
|
|
78
|
+
this.thereArePlans = true;
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
this.thereArePlans = false;
|
|
82
|
+
this.feeResponse = false;
|
|
83
|
+
Swal.fire({
|
|
84
|
+
position: 'center',
|
|
85
|
+
icon: 'warning',
|
|
86
|
+
title: '<p style="font-family: Poppins"">Oops.. no hay planes de pagos, \n en el curso elegido.</p>',
|
|
87
|
+
showConfirmButton: false,
|
|
88
|
+
timer: 3000,
|
|
89
|
+
});
|
|
90
|
+
this.clearInputPayment();
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
this.codSelfFormStepThree.controls['payment_method'].setValue(paymentMethod);
|
|
94
|
+
// this.getCodPricesByAgreement();
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
this.codSelfFormStepThree.controls['payment_method'].setValue(null);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
clearInputPayment() {
|
|
101
|
+
this.codSelfFormStepThree.controls['program_price'].setValue(null);
|
|
102
|
+
this.codSelfFormStepThree.controls['quota_times'].setValue(null);
|
|
103
|
+
this.codSelfFormStepThree.controls['total_price'].setValue(null);
|
|
9
104
|
}
|
|
10
105
|
back() {
|
|
11
106
|
// Movernos al paso anterior
|
|
@@ -17,13 +112,76 @@ export class CodSelfFormStepThreeComponent extends CodSelfManagedSteps {
|
|
|
17
112
|
// Movernos al paso 3
|
|
18
113
|
this.completed.emit(3);
|
|
19
114
|
}
|
|
115
|
+
showTable() {
|
|
116
|
+
this.isCalculateQuotesButtonClicked = true;
|
|
117
|
+
const total_price = this.codSelfFormStepThree.controls['total_price'].value;
|
|
118
|
+
if ((total_price === 'null') || this.codSelfFormStepThree.invalid) {
|
|
119
|
+
Swal.fire({
|
|
120
|
+
title: 'Error table',
|
|
121
|
+
text: 'Debes ingresar el monto total de la matrícula y la cuota inicial',
|
|
122
|
+
icon: 'error'
|
|
123
|
+
});
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
// Calcular cuotas
|
|
127
|
+
this.dataFinancing = [];
|
|
128
|
+
// const quotaValues = this.codPrices.filter(codPrice => codPrice.code === Number(this.codSelfFormStepThree.controls['quota_times'].value))[0].quota_price;
|
|
129
|
+
// let params: CalculateQuotesParams = {
|
|
130
|
+
// date: new Date(this.codSelfFormStepThree.controls['payment_date'].value),
|
|
131
|
+
// quotaValues,
|
|
132
|
+
// quotaTimes: this.codPrices.filter(codPrice => codPrice.code === Number(this.codSelfFormStepThree.controls['quota_times'].value))[0].fee_number,
|
|
133
|
+
// totalPrice: this.codSelfFormStepThree.controls['total_price'].value,
|
|
134
|
+
// }
|
|
135
|
+
let params = {
|
|
136
|
+
date: new Date(this.codSelfFormStepThree.controls['payment_date'].value),
|
|
137
|
+
quotaValues: Number(this.codSelfFormStepThree.controls['quota_price'].value),
|
|
138
|
+
quotaTimes: Number(this.codSelfFormStepThree.controls['fee_number'].value),
|
|
139
|
+
totalPrice: this.codSelfFormStepThree.controls['total_price'].value,
|
|
140
|
+
};
|
|
141
|
+
this.dataFinancing = this.calculateQuotesService.calculateQuotes(params);
|
|
142
|
+
this.isFinancing = true;
|
|
143
|
+
this.financingData.emit(this.dataFinancing);
|
|
144
|
+
}
|
|
145
|
+
calculateNewQuotes() {
|
|
146
|
+
this.isCalculateQuotesButtonClicked = false;
|
|
147
|
+
this.isFinancing = false;
|
|
148
|
+
this.financingData.emit(null);
|
|
149
|
+
}
|
|
150
|
+
selectLevels(dataPayment) {
|
|
151
|
+
if (this.codSelfFormStepThree.get('payment_method')?.value == 1) {
|
|
152
|
+
this.codSelfFormStepThree.controls['quota_times'].setValue(dataPayment.code);
|
|
153
|
+
this.codSelfFormStepThree.controls['total_price'].setValue(dataPayment.enrollment);
|
|
154
|
+
this.codSelfFormStepThree.controls['program_price'].setValue(dataPayment.financed_price);
|
|
155
|
+
this.codSelfFormStepThree.controls['paid_level'].setValue(dataPayment.paid_level - 1);
|
|
156
|
+
this.codSelfFormStepThree.controls['fee_number'].setValue(dataPayment.fee_number);
|
|
157
|
+
this.codSelfFormStepThree.controls['quota_price'].setValue(dataPayment.quota_price);
|
|
158
|
+
this.updateValueAndValidity();
|
|
159
|
+
}
|
|
160
|
+
else if (this.codSelfFormStepThree.get('payment_method')?.value == 2) {
|
|
161
|
+
this.codSelfFormStepThree.controls['quota_times'].setValue(dataPayment.code);
|
|
162
|
+
this.codSelfFormStepThree.controls['total_price'].setValue(dataPayment.enrollment);
|
|
163
|
+
this.codSelfFormStepThree.controls['program_price'].setValue(dataPayment.normal_price);
|
|
164
|
+
this.codSelfFormStepThree.controls['paid_level'].setValue(dataPayment.paid_level - 1);
|
|
165
|
+
this.codSelfFormStepThree.controls['fee_number'].setValue(dataPayment.fee_number);
|
|
166
|
+
this.codSelfFormStepThree.controls['quota_price'].setValue(dataPayment.quota_price);
|
|
167
|
+
this.updateValueAndValidity();
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
updateValueAndValidity() {
|
|
171
|
+
this.codSelfFormStepThree.controls['program_price'].updateValueAndValidity();
|
|
172
|
+
this.codSelfFormStepThree.controls['payment_date'].updateValueAndValidity();
|
|
173
|
+
this.codSelfFormStepThree.controls['quota_times'].updateValueAndValidity();
|
|
174
|
+
this.codSelfFormStepThree.controls['total_price'].updateValueAndValidity();
|
|
175
|
+
}
|
|
20
176
|
}
|
|
21
|
-
CodSelfFormStepThreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CodSelfFormStepThreeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
22
|
-
CodSelfFormStepThreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: CodSelfFormStepThreeComponent, selector: "app-cod-self-form-step-three", outputs: { completed: "completed" }, usesInheritance: true, ngImport: i0, template: "<span>
|
|
177
|
+
CodSelfFormStepThreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CodSelfFormStepThreeComponent, deps: [{ token: i1.FormBuilder }, { token: i2.MessageService }, { token: i3.CommercialService }, { token: i4.BaseService }, { token: i5.CalculateQuotesService }], target: i0.ɵɵFactoryTarget.Component });
|
|
178
|
+
CodSelfFormStepThreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: CodSelfFormStepThreeComponent, selector: "app-cod-self-form-step-three", outputs: { completed: "completed", financingData: "financingData" }, usesInheritance: true, ngImport: i0, template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Pagos</h2>\n <p-toast position=\"top-center\" key=\"confirm\" (onClose)=\"onReject()\" [baseZIndex]=\"10\">\n <ng-template let-message pTemplate=\"message\">\n <div class=\"flex flex-column align-items-start\" style=\"flex: 1\">\n <div class=\"flex align-items-center gap-2\">\n <img src=\"https://qa.iptdev.com.co/assets/logos/reading.png\" style=\"width: 65px;\" shape=\"circle\" />\n <span class=\"font-bold text-900\">Jacob</span>\n </div>\n <div class=\"font-medium text-lg my-3 text-900\">{{ messageInfo }}</div>\n </div>\n </ng-template>\n </p-toast>\n <i class=\"pi pi-exclamation-circle cursor-pointer w-auto mb-4\" (click)=\"showConfirm()\" pTooltip=\"Mas info.\" tooltipPosition=\"bottom\"></i>\n\n <form autocomplete=\"off\" [formGroup]=\"codSelfFormStepThree\" class=\"grid mt-2\">\n\n <div class=\"col-12\">\n <ipt-select\n [initialValue]=\"codSelfFormStepThree.controls['payment_method'].value\"\n [control]=\"codSelfFormStepThree.controls['payment_method']\"\n (eventSelect)=\"selectPaymentMethod($event)\"\n [data]=\"paymentMethods\"\n [defaultText]=\"'M\u00E9todo de pago'\"\n ></ipt-select>\n <ipt-loader *ngIf=\"feeResponse\"></ipt-loader>\n\n <div class=\"col-12\" *ngIf=\"thereArePlans\">\n <p-table\n [value]=\"dataPrices\"\n [tableStyle]=\"{'min-width': '100%'}\"\n [rowHover]=\"true\"\n >\n <ng-template pTemplate=\"caption\">\n <div class=\"flex align-items-center\">\n Seleccion de niveles a cancelar.\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th class=\"bg-blue-200 text-center font-medium pt-2 pb-2\">Cancelar</th>\n <th class=\"bg-blue-200 text-center font-medium pt-2 pb-2\">Cuotas</th>\n <th class=\"bg-blue-200 text-center font-medium pt-2 pb-2\">Admin</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-data>\n <tr>\n <td>{{ data.paid_level }} Nivel(es)</td>\n <td>{{ data.fee_number }}</td>\n <td class=\"pt-2 pb-2\">\n <button\n pButton\n pRipple\n icon=\"pi pi-money-bill\"\n class=\"p-button-sm p-button-rounded\"\n (click)=\"selectLevels(data)\"\n\n ></button>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n\n\n </div>\n\n <div class=\"col-12\">\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Monto total de la matr\u00EDcula'\"\n [control]=\"codSelfFormStepThree.controls['total_price']\"\n [withPipe]=\"true\"\n ></ipt-input>\n </div>\n\n <div class=\"col-12\">\n <ipt-input\n [withPipe]=\"true\"\n [inputType]=\"'text'\"\n [control]=\"codSelfFormStepThree.controls['program_price']\"\n [placeHolder]=\"'Valor total del programa'\"\n ></ipt-input>\n </div>\n\n <div class=\"col-12\">\n <ipt-input\n onfocus=\"(this.type='date')\"\n [inputType]=\"'date'\"\n [control]=\"codSelfFormStepThree.controls['payment_date']\"\n [placeHolder]=\"'Fecha de pago'\"\n ></ipt-input>\n </div>\n\n <!-- Tabla de financiaci\u00F3n -->\n <div class=\"col-12\" *ngIf=\"isFinancing\">\n <p-table\n [value]=\"dataFinancing\"\n [tableStyle]=\"{'min-width': '100%'}\"\n [rowHover]=\"true\"\n >\n <ng-template pTemplate=\"caption\">\n <div class=\"flex align-items-center\">\n C\u00E1lculo de cuotas\n <button pButton class=\"p-button-sm ml-auto\" label=\"Nuevo c\u00E1lculo\" (click)=\"calculateNewQuotes()\" lab icon=\"pi pi-replay\"></button>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th>#</th>\n <th>Valor</th>\n <th>Fecha</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-data>\n <tr>\n <td>{{ data[0] }}</td>\n <td>{{ data[1] }}</td>\n <td>{{ data[2] }}</td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n <!-- ---------------------- -->\n\n </form>\n </div>\n\n\n<div class=\"flex justify-content-between mt-3 align-items-center gap-3\">\n <!-- <span *ngIf=\"codSelfFormStepOne.invalid && codSelfFormStepOne.touched\" class=\"text-red-500 font-bold text-center mt-1 py-2 bg-red-100 w-full border-round-xl\">{{ errorMessage }}</span> -->\n <button\n pButton\n icon=\"pi pi-arrow-left\"\n type=\"submit\"\n (click)=\"back()\"\n ></button>\n\n <button\n pButton\n icon=\"pi pi-arrow-right\"\n (click)=\"sendForm()\"\n ></button>\n</div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.InputComponent, selector: "ipt-input", inputs: ["inputType", "placeHolder", "validateText", "withPipe", "list", "iconUrl", "control", "prefix", "thousands", "decimal", "disabledSel"], outputs: ["dateSelected"] }, { kind: "component", type: i8.LoaderComponent, selector: "ipt-loader", inputs: ["message", "isDialog"] }, { kind: "component", type: i9.SelectComponent, selector: "ipt-select", inputs: ["isRequired", "data", "defaultText", "selectCode", "disabledSel", "initialValue", "control"], outputs: ["eventSelect"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i10.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "fitContent", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i11.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i12.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i13.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "virtualRowHeight", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["selectAllChange", "selectionChange", "contextMenuSelectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }] });
|
|
23
179
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CodSelfFormStepThreeComponent, decorators: [{
|
|
24
180
|
type: Component,
|
|
25
|
-
args: [{ selector: 'app-cod-self-form-step-three', template: "<span>
|
|
26
|
-
}], ctorParameters: function () { return []; }, propDecorators: { completed: [{
|
|
181
|
+
args: [{ selector: 'app-cod-self-form-step-three', template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Pagos</h2>\n <p-toast position=\"top-center\" key=\"confirm\" (onClose)=\"onReject()\" [baseZIndex]=\"10\">\n <ng-template let-message pTemplate=\"message\">\n <div class=\"flex flex-column align-items-start\" style=\"flex: 1\">\n <div class=\"flex align-items-center gap-2\">\n <img src=\"https://qa.iptdev.com.co/assets/logos/reading.png\" style=\"width: 65px;\" shape=\"circle\" />\n <span class=\"font-bold text-900\">Jacob</span>\n </div>\n <div class=\"font-medium text-lg my-3 text-900\">{{ messageInfo }}</div>\n </div>\n </ng-template>\n </p-toast>\n <i class=\"pi pi-exclamation-circle cursor-pointer w-auto mb-4\" (click)=\"showConfirm()\" pTooltip=\"Mas info.\" tooltipPosition=\"bottom\"></i>\n\n <form autocomplete=\"off\" [formGroup]=\"codSelfFormStepThree\" class=\"grid mt-2\">\n\n <div class=\"col-12\">\n <ipt-select\n [initialValue]=\"codSelfFormStepThree.controls['payment_method'].value\"\n [control]=\"codSelfFormStepThree.controls['payment_method']\"\n (eventSelect)=\"selectPaymentMethod($event)\"\n [data]=\"paymentMethods\"\n [defaultText]=\"'M\u00E9todo de pago'\"\n ></ipt-select>\n <ipt-loader *ngIf=\"feeResponse\"></ipt-loader>\n\n <div class=\"col-12\" *ngIf=\"thereArePlans\">\n <p-table\n [value]=\"dataPrices\"\n [tableStyle]=\"{'min-width': '100%'}\"\n [rowHover]=\"true\"\n >\n <ng-template pTemplate=\"caption\">\n <div class=\"flex align-items-center\">\n Seleccion de niveles a cancelar.\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th class=\"bg-blue-200 text-center font-medium pt-2 pb-2\">Cancelar</th>\n <th class=\"bg-blue-200 text-center font-medium pt-2 pb-2\">Cuotas</th>\n <th class=\"bg-blue-200 text-center font-medium pt-2 pb-2\">Admin</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-data>\n <tr>\n <td>{{ data.paid_level }} Nivel(es)</td>\n <td>{{ data.fee_number }}</td>\n <td class=\"pt-2 pb-2\">\n <button\n pButton\n pRipple\n icon=\"pi pi-money-bill\"\n class=\"p-button-sm p-button-rounded\"\n (click)=\"selectLevels(data)\"\n\n ></button>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n\n\n </div>\n\n <div class=\"col-12\">\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Monto total de la matr\u00EDcula'\"\n [control]=\"codSelfFormStepThree.controls['total_price']\"\n [withPipe]=\"true\"\n ></ipt-input>\n </div>\n\n <div class=\"col-12\">\n <ipt-input\n [withPipe]=\"true\"\n [inputType]=\"'text'\"\n [control]=\"codSelfFormStepThree.controls['program_price']\"\n [placeHolder]=\"'Valor total del programa'\"\n ></ipt-input>\n </div>\n\n <div class=\"col-12\">\n <ipt-input\n onfocus=\"(this.type='date')\"\n [inputType]=\"'date'\"\n [control]=\"codSelfFormStepThree.controls['payment_date']\"\n [placeHolder]=\"'Fecha de pago'\"\n ></ipt-input>\n </div>\n\n <!-- Tabla de financiaci\u00F3n -->\n <div class=\"col-12\" *ngIf=\"isFinancing\">\n <p-table\n [value]=\"dataFinancing\"\n [tableStyle]=\"{'min-width': '100%'}\"\n [rowHover]=\"true\"\n >\n <ng-template pTemplate=\"caption\">\n <div class=\"flex align-items-center\">\n C\u00E1lculo de cuotas\n <button pButton class=\"p-button-sm ml-auto\" label=\"Nuevo c\u00E1lculo\" (click)=\"calculateNewQuotes()\" lab icon=\"pi pi-replay\"></button>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th>#</th>\n <th>Valor</th>\n <th>Fecha</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-data>\n <tr>\n <td>{{ data[0] }}</td>\n <td>{{ data[1] }}</td>\n <td>{{ data[2] }}</td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n <!-- ---------------------- -->\n\n </form>\n </div>\n\n\n<div class=\"flex justify-content-between mt-3 align-items-center gap-3\">\n <!-- <span *ngIf=\"codSelfFormStepOne.invalid && codSelfFormStepOne.touched\" class=\"text-red-500 font-bold text-center mt-1 py-2 bg-red-100 w-full border-round-xl\">{{ errorMessage }}</span> -->\n <button\n pButton\n icon=\"pi pi-arrow-left\"\n type=\"submit\"\n (click)=\"back()\"\n ></button>\n\n <button\n pButton\n icon=\"pi pi-arrow-right\"\n (click)=\"sendForm()\"\n ></button>\n</div>\n</div>\n" }]
|
|
182
|
+
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.MessageService }, { type: i3.CommercialService }, { type: i4.BaseService }, { type: i5.CalculateQuotesService }]; }, propDecorators: { completed: [{
|
|
183
|
+
type: Output
|
|
184
|
+
}], financingData: [{
|
|
27
185
|
type: Output
|
|
28
186
|
}] } });
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLXNlbGYtZm9ybS1zdGVwLXRocmVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2Rlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb2Qtc2VsZi1tYW5hZ2VkL3N0ZXBzL2NvZC1mb3JtLXN0ZXAtdGhyZWUvY29kLXNlbGYtZm9ybS1zdGVwLXRocmVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2Rlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb2Qtc2VsZi1tYW5hZ2VkL3N0ZXBzL2NvZC1mb3JtLXN0ZXAtdGhyZWUvY29kLXNlbGYtZm9ybS1zdGVwLXRocmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7O0FBVXpFLE1BQU0sT0FBTyw2QkFBOEIsU0FBUSxtQkFBbUI7SUFJcEU7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUhBLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBSWpELENBQUM7SUFFRCxJQUFJO1FBQ0YsNEJBQTRCO1FBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxRQUFRO1FBQ04sOENBQThDO1FBQzlDLCtDQUErQztRQUUvQyxxQkFBcUI7UUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekIsQ0FBQzs7MEhBbkJVLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLGdJQ1gxQyw2ZkFpQkE7MkZETmEsNkJBQTZCO2tCQUx6QyxTQUFTOytCQUNFLDhCQUE4QjswRUFNOUIsU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvZFNlbGZNYW5hZ2VkU3RlcHMgfSBmcm9tICcuLi8uLi9sb2dpYy9jb2Qtc2VsZi1tYW5hZ2VkLXN0ZXBzJztcblxuXG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNvZC1zZWxmLWZvcm0tc3RlcC10aHJlZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2Qtc2VsZi1mb3JtLXN0ZXAtdGhyZWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb2Qtc2VsZi1mb3JtLXN0ZXAtdGhyZWUuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDb2RTZWxmRm9ybVN0ZXBUaHJlZUNvbXBvbmVudCBleHRlbmRzIENvZFNlbGZNYW5hZ2VkU3RlcHMge1xuXG4gIEBPdXRwdXQoKSBjb21wbGV0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgYmFjaygpIHtcbiAgICAvLyBNb3Zlcm5vcyBhbCBwYXNvIGFudGVyaW9yXG4gICAgdGhpcy5jb21wbGV0ZWQuZW1pdCgxKTtcbiAgfVxuXG4gIHNlbmRGb3JtKCkge1xuICAgIC8vIHRoaXMuY29kU2VsZkZvcm1TdGVwVHdvLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAvLyBpZiAodGhpcy5jb2RTZWxmRm9ybVN0ZXBUd28uaW52YWxpZCkgcmV0dXJuO1xuXG4gICAgLy8gTW92ZXJub3MgYWwgcGFzbyAzXG4gICAgdGhpcy5jb21wbGV0ZWQuZW1pdCgzKTtcbiAgfVxufVxuIiwiPHNwYW4+c3RlcCAzPC9zcGFuPlxuXG48ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC0zIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICA8IS0tIDxzcGFuICpuZ0lmPVwiY29kU2VsZkZvcm1TdGVwT25lLmludmFsaWQgJiYgY29kU2VsZkZvcm1TdGVwT25lLnRvdWNoZWRcIiBjbGFzcz1cInRleHQtcmVkLTUwMCBmb250LWJvbGQgdGV4dC1jZW50ZXIgbXQtMSBweS0yIGJnLXJlZC0xMDAgdy1mdWxsIGJvcmRlci1yb3VuZC14bFwiPnt7IGVycm9yTWVzc2FnZSB9fTwvc3Bhbj4gLS0+XG4gIDxidXR0b25cbiAgcEJ1dHRvblxuICBpY29uPVwicGkgcGktYXJyb3ctbGVmdFwiXG4gIHR5cGU9XCJzdWJtaXRcIlxuICAoY2xpY2spPVwiYmFjaygpXCJcbiAgPjwvYnV0dG9uPlxuXG4gIDxidXR0b25cbiAgcEJ1dHRvblxuICBpY29uPVwicGkgcGktYXJyb3ctcmlnaHRcIlxuICAoY2xpY2spPVwic2VuZEZvcm0oKVwiXG4gID48L2J1dHRvbj5cbjwvZGl2PlxuIl19
|
|
187
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLXNlbGYtZm9ybS1zdGVwLXRocmVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2Rlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb2Qtc2VsZi1tYW5hZ2VkL3N0ZXBzL2NvZC1mb3JtLXN0ZXAtdGhyZWUvY29kLXNlbGYtZm9ybS1zdGVwLXRocmVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2Rlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb2Qtc2VsZi1tYW5hZ2VkL3N0ZXBzL2NvZC1mb3JtLXN0ZXAtdGhyZWUvY29kLXNlbGYtZm9ybS1zdGVwLXRocmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQWEsVUFBVSxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEUsT0FBTyxJQUFJLE1BQU0sYUFBYSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFPL0IsTUFBTSxPQUFPLDZCQUE4QixTQUFRLG1CQUFtQjtJQW1CcEUsWUFDVSxFQUFlLEVBQ2YsY0FBOEIsRUFDOUIsaUJBQW9DLEVBQ3BDLFdBQXdCLEVBQ3hCLHNCQUE4QztRQUN0RCxLQUFLLEVBQUUsQ0FBQztRQUxBLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBdEI5QyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN2QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFF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QyxVQUFVLENBQUMsQ0FBQztZQUNsRixJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDcEYsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBRUQsc0JBQXNCO1FBQ3BCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM3RSxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDNUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQzNFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUM3RSxDQUFDOzswSEE3S1UsNkJBQTZCOzhHQUE3Qiw2QkFBNkIsZ0tDZjFDLCsrSkFrSkE7MkZEbklhLDZCQUE2QjtrQkFMekMsU0FBUzsrQkFDRSw4QkFBOEI7OE5BTTlCLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENhbGN1bGF0ZVF1b3Rlc1BhcmFtcywgQ2FsY3VsYXRlUXVvdGVzU2VydmljZSB9IGZyb20gJy4vLi4vLi4vLi4vY29kL2xvZ2ljL2NhbGN1bGF0ZS1xdW90ZXMuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlU2VydmljZSB9IGZyb20gJy4vLi4vLi4vLi4vY29yZS91dGlscy9iYXNlLXNlcnZpY2UvYmFzZS5zZXJ2aWNlJztcbmltcG9ydCB7IElPYnRhaW5Db2RQcmljZXNScSB9IGZyb20gJy4vLi4vLi4vLi4vY29yZS9tb2RlbHMvY29tbWVyY2lhbC9jb21tZXJjaWFsLm1vZGVsJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgQ29kU2VsZk1hbmFnZWRTdGVwcyB9IGZyb20gJy4uLy4uL2xvZ2ljL2NvZC1zZWxmLW1hbmFnZWQtc3RlcHMnO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBWYWxpZGF0b3JzLCBGb3JtQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbW1lcmNpYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9jb21tZXJjaWFsLXNlcnZpY2UvY29tZXJjaWFsLnNlcnZpY2UnO1xuaW1wb3J0IFN3YWwgZnJvbSAnc3dlZXRhbGVydDInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY29kLXNlbGYtZm9ybS1zdGVwLXRocmVlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvZC1zZWxmLWZvcm0tc3RlcC10aHJlZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvZC1zZWxmLWZvcm0tc3RlcC10aHJlZS5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENvZFNlbGZGb3JtU3RlcFRocmVlQ29tcG9uZW50IGV4dGVuZHMgQ29kU2VsZk1hbmFnZWRTdGVwcyB7XG5cbiAgQE91dHB1dCgpIGNvbXBsZXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICBAT3V0cHV0KCkgZmluYW5jaW5nRGF0YSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIG1lc3NhZ2VJbmZvOnN0cmluZyA9IFwiXCJcbiAgdmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBjb2RTZWxmRm9ybVN0ZXBUaHJlZSE6IEZvcm1Hcm91cDtcbiAgcGF5bWVudE1ldGhvZHM6IGFueVtdID0gW1xuICAgIHsgY29kZTogJzEnLCBuYW1lOiAnRmluYW5jaWFkbycgfSxcbiAgICB7IGNvZGU6ICcyJywgbmFtZTogJ0NvbnRhZG8nIH0sXG4gIF07XG4gIGZlZVJlc3BvbnNlOiBib29sZWFuID0gZmFsc2U7XG4gIHRoZXJlQXJlUGxhbnM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZGF0YVByaWNlczphbnk7XG4gIGlzRmluYW5jaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIGlzQ2FsY3VsYXRlUXVvdGVzQnV0dG9uQ2xpY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBkYXRhRmluYW5jaW5nOiBhbnlbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29tbWVyY2lhbFNlcnZpY2U6IENvbW1lcmNpYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgYmFzZVNlcnZpY2U6IEJhc2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2FsY3VsYXRlUXVvdGVzU2VydmljZTogQ2FsY3VsYXRlUXVvdGVzU2VydmljZSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBpbml0Rm9ybSgpIHtcbiAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBwcm9ncmFtX3ByaWNlOiBbeyB2YWx1ZTogJycsIGRpc2FibGVkOiB0cnVlIH0sIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBwYXltZW50X2RhdGU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHBheW1lbnRfbWV0aG9kOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBxdW90YV90aW1lczogW3sgdmFsdWU6ICcnLCBkaXNhYmxlZDogdHJ1ZSB9LCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgdG90YWxfcHJpY2U6IFt7IHZhbHVlOiAnJywgZGlzYWJsZWQ6IHRydWUgfSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHBhaWRfbGV2ZWw6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHF1b3RhX3ByaWNlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBmZWVfbnVtYmVyOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgfSk7XG4gIH1cbiAgb25SZWplY3QoKSB7XG4gICAgdGhpcy5tZXNzYWdlU2VydmljZS5jbGVhcignY29uZmlybScpO1xuICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICB9XG5cbiAgc2hvd0NvbmZpcm0oKSB7XG4gICAgaWYgKCF0aGlzLnZpc2libGUpIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBrZXk6ICdjb25maXJtJywgc3RpY2t5OiB0cnVlLCBzZXZlcml0eTogJ3N1Y2Nlc3MnLCBzdW1tYXJ5OiAnQ2FuIHlvdSBzZW5kIG1lIHRoZSByZXBvcnQ/JywgbGlmZTogMTAwMDAgfSk7XG4gICAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0UGF5bWVudE1ldGhvZChwYXltZW50TWV0aG9kOiBhbnkpIHtcbiAgICB0aGlzLmZlZVJlc3BvbnNlID0gdHJ1ZTtcbiAgICB0aGlzLnRoZXJlQXJlUGxhbnMgPSBmYWxzZTtcblxuICAgIGlmIChwYXltZW50TWV0aG9kICE9PSAnJykge1xuICAgICAgY29uc3QgcmVxdWVzdDogSU9idGFpbkNvZFByaWNlc1JxID0ge1xuICAgICAgICB0b2tlbjogICAgICAgICAgICB0aGlzLmJhc2VTZXJ2aWNlLmdldFVzZXJUb2tlbigpLFxuICAgICAgICBjb3Vyc2VfdHlwZTogICAgICBOdW1iZXIodGhpcy5sb2NhbFN0b3JhZ2VDT0QuZ2V0Q29kRm9ybURhdGEoMiwgJ2NvdXJzZV90eXBlJykpLFxuICAgICAgICBhZ3JlZW1lbnQ6ICAgICAgICBOdW1iZXIodGhpcy5sb2NhbFN0b3JhZ2VDT0QuZ2V0Q29kRm9ybURhdGEoMiwgJ2FncmVlbWVudF9ieV9jYXRlZ29yeScpKSxcbiAgICAgICAgY291cnNlX21vZGFsaXR5OiAgTnVtYmVyKHRoaXMubG9jYWxTdG9yYWdlQ09ELmdldENvZEZvcm1EYXRhKDIsICdjb3Vyc2VfbW9kYWxpdHknKSksXG4gICAgICAgIHBheW1lbnRfbWV0aG9kOiAgIHBhcnNlSW50KHBheW1lbnRNZXRob2QpXG4gICAgICB9XG4gICAgICB0aGlzLmNvbW1lcmNpYWxTZXJ2aWNlLk9idGFpbkNvZFByaWNlcyhyZXF1ZXN0KS5zdWJzY3JpYmUoKHJlc3BvbnNlKT0+IHtcbiAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEgIT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuZGF0YVByaWNlcyA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgdGhpcy5mZWVSZXNwb25zZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMudGhlcmVBcmVQbGFucyA9IHRydWU7XG4gICAgICAgIH1lbHNlIHtcbiAgICAgICAgICB0aGlzLnRoZXJlQXJlUGxhbnMgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmZlZVJlc3BvbnNlID0gZmFsc2U7XG4gICAgICAgICAgU3dhbC5maXJlKHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnY2VudGVyJyxcbiAgICAgICAgICAgIGljb246ICd3YXJuaW5nJyxcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAnPHAgc3R5bGU9XCJmb250LWZhbWlseTogUG9wcGluc1wiXCI+T29wcy4uIG5vIGhheSBwbGFuZXMgZGUgcGFnb3MsIFxcbiBlbiBlbCBjdXJzbyBlbGVnaWRvLjwvcD4nLFxuICAgICAgICAgICAgc2hvd0NvbmZpcm1CdXR0b246IGZhbHNlLFxuICAgICAgICAgICAgdGltZXI6IDMwMDAsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5jbGVhcklucHV0UGF5bWVudCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3BheW1lbnRfbWV0aG9kJ10uc2V0VmFsdWUocGF5bWVudE1ldGhvZCk7XG4gICAgICAvLyB0aGlzLmdldENvZFByaWNlc0J5QWdyZWVtZW50KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3BheW1lbnRfbWV0aG9kJ10uc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJJbnB1dFBheW1lbnQoKXtcbiAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydwcm9ncmFtX3ByaWNlJ10uc2V0VmFsdWUobnVsbCk7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sncXVvdGFfdGltZXMnXS5zZXRWYWx1ZShudWxsKTtcbiAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWyd0b3RhbF9wcmljZSddLnNldFZhbHVlKG51bGwpO1xuICB9XG4gIGJhY2soKSB7XG4gICAgLy8gTW92ZXJub3MgYWwgcGFzbyBhbnRlcmlvclxuICAgIHRoaXMuY29tcGxldGVkLmVtaXQoMSk7XG4gIH1cblxuICBzZW5kRm9ybSgpIHtcbiAgICAvLyB0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgLy8gaWYgKHRoaXMuY29kU2VsZkZvcm1TdGVwVHdvLmludmFsaWQpIHJldHVybjtcblxuICAgIC8vIE1vdmVybm9zIGFsIHBhc28gM1xuICAgIHRoaXMuY29tcGxldGVkLmVtaXQoMyk7XG4gIH1cblxuICBzaG93VGFibGUoKSB7XG4gICAgdGhpcy5pc0NhbGN1bGF0ZVF1b3Rlc0J1dHRvbkNsaWNrZWQgPSB0cnVlO1xuICAgIGNvbnN0IHRvdGFsX3ByaWNlID0gdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sndG90YWxfcHJpY2UnXS52YWx1ZTtcbiAgICBpZiAoKHRvdGFsX3ByaWNlID09PSAnbnVsbCcpIHx8IHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuaW52YWxpZCkge1xuICAgICAgU3dhbC5maXJlKHtcbiAgICAgICAgdGl0bGU6ICdFcnJvciB0YWJsZScsXG4gICAgICAgIHRleHQ6ICdEZWJlcyBpbmdyZXNhciBlbCBtb250byB0b3RhbCBkZSBsYSBtYXRyw61jdWxhIHkgbGEgY3VvdGEgaW5pY2lhbCcsXG4gICAgICAgIGljb246ICdlcnJvcidcbiAgICAgIH0pXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ2FsY3VsYXIgY3VvdGFzXG4gICAgdGhpcy5kYXRhRmluYW5jaW5nID0gW107XG4gICAgLy8gY29uc3QgcXVvdGFWYWx1ZXMgPSB0aGlzLmNvZFByaWNlcy5maWx0ZXIoY29kUHJpY2UgPT4gY29kUHJpY2UuY29kZSA9PT0gTnVtYmVyKHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3F1b3RhX3RpbWVzJ10udmFsdWUpKVswXS5xdW90YV9wcmljZTtcbiAgICAvLyBsZXQgcGFyYW1zOiBDYWxjdWxhdGVRdW90ZXNQYXJhbXMgPSB7XG4gICAgLy8gICBkYXRlOiBuZXcgRGF0ZSh0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydwYXltZW50X2RhdGUnXS52YWx1ZSksXG4gICAgLy8gICBxdW90YVZhbHVlcyxcbiAgICAvLyAgIHF1b3RhVGltZXM6IHRoaXMuY29kUHJpY2VzLmZpbHRlcihjb2RQcmljZSA9PiBjb2RQcmljZS5jb2RlID09PSBOdW1iZXIodGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sncXVvdGFfdGltZXMnXS52YWx1ZSkpWzBdLmZlZV9udW1iZXIsXG4gICAgLy8gICB0b3RhbFByaWNlOiB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWyd0b3RhbF9wcmljZSddLnZhbHVlLFxuICAgIC8vIH1cblxuICAgIGxldCBwYXJhbXM6IENhbGN1bGF0ZVF1b3Rlc1BhcmFtcyA9IHtcbiAgICAgIGRhdGU6IG5ldyBEYXRlKHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3BheW1lbnRfZGF0ZSddLnZhbHVlKSxcbiAgICAgIHF1b3RhVmFsdWVzOiBOdW1iZXIodGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sncXVvdGFfcHJpY2UnXS52YWx1ZSksXG4gICAgICBxdW90YVRpbWVzOiBOdW1iZXIodGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1snZmVlX251bWJlciddLnZhbHVlKSxcbiAgICAgIHRvdGFsUHJpY2U6IHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3RvdGFsX3ByaWNlJ10udmFsdWUsXG4gICAgfVxuXG4gICAgdGhpcy5kYXRhRmluYW5jaW5nID0gdGhpcy5jYWxjdWxhdGVRdW90ZXNTZXJ2aWNlLmNhbGN1bGF0ZVF1b3RlcyhwYXJhbXMpO1xuICAgIHRoaXMuaXNGaW5hbmNpbmcgPSB0cnVlO1xuICAgIHRoaXMuZmluYW5jaW5nRGF0YS5lbWl0KHRoaXMuZGF0YUZpbmFuY2luZyk7XG4gIH1cblxuICBjYWxjdWxhdGVOZXdRdW90ZXMoKSB7XG4gICAgdGhpcy5pc0NhbGN1bGF0ZVF1b3Rlc0J1dHRvbkNsaWNrZWQgPSBmYWxzZTtcbiAgICB0aGlzLmlzRmluYW5jaW5nID0gZmFsc2U7XG4gICAgdGhpcy5maW5hbmNpbmdEYXRhLmVtaXQobnVsbCk7XG4gIH1cblxuICBzZWxlY3RMZXZlbHMoZGF0YVBheW1lbnQ6IGFueSl7XG4gICAgaWYgKHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuZ2V0KCdwYXltZW50X21ldGhvZCcpPy52YWx1ZSA9PSAxKSB7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydxdW90YV90aW1lcyddLnNldFZhbHVlKGRhdGFQYXltZW50LmNvZGUpO1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sndG90YWxfcHJpY2UnXS5zZXRWYWx1ZShkYXRhUGF5bWVudC5lbnJvbGxtZW50KTtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3Byb2dyYW1fcHJpY2UnXS5zZXRWYWx1ZShkYXRhUGF5bWVudC5maW5hbmNlZF9wcmljZSk7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydwYWlkX2xldmVsJ10uc2V0VmFsdWUoZGF0YVBheW1lbnQucGFpZF9sZXZlbCAtIDEpO1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1snZmVlX251bWJlciddLnNldFZhbHVlKGRhdGFQYXltZW50LmZlZV9udW1iZXIpO1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sncXVvdGFfcHJpY2UnXS5zZXRWYWx1ZShkYXRhUGF5bWVudC5xdW90YV9wcmljZSk7XG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9IGVsc2UgaWYodGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5nZXQoJ3BheW1lbnRfbWV0aG9kJyk/LnZhbHVlID09IDIpe1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sncXVvdGFfdGltZXMnXS5zZXRWYWx1ZShkYXRhUGF5bWVudC5jb2RlKTtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3RvdGFsX3ByaWNlJ10uc2V0VmFsdWUoZGF0YVBheW1lbnQuZW5yb2xsbWVudCk7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydwcm9ncmFtX3ByaWNlJ10uc2V0VmFsdWUoZGF0YVBheW1lbnQubm9ybWFsX3ByaWNlKTtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3BhaWRfbGV2ZWwnXS5zZXRWYWx1ZShkYXRhUGF5bWVudC5wYWlkX2xldmVsIC0gMSk7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydmZWVfbnVtYmVyJ10uc2V0VmFsdWUoZGF0YVBheW1lbnQuZmVlX251bWJlcik7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydxdW90YV9wcmljZSddLnNldFZhbHVlKGRhdGFQYXltZW50LnF1b3RhX3ByaWNlKTtcbiAgICAgIHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKSB7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sncHJvZ3JhbV9wcmljZSddLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydwYXltZW50X2RhdGUnXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sncXVvdGFfdGltZXMnXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sndG90YWxfcHJpY2UnXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lci1tYWluXCI+XG4gIDxkaXYgY2xhc3M9XCJjb250YWluZXItZm9ybVwiPlxuICAgIDxoMj5QYWdvczwvaDI+XG4gICAgPHAtdG9hc3QgcG9zaXRpb249XCJ0b3AtY2VudGVyXCIga2V5PVwiY29uZmlybVwiIChvbkNsb3NlKT1cIm9uUmVqZWN0KClcIiBbYmFzZVpJbmRleF09XCIxMFwiPlxuICAgICAgPG5nLXRlbXBsYXRlIGxldC1tZXNzYWdlIHBUZW1wbGF0ZT1cIm1lc3NhZ2VcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1zdGFydFwiIHN0eWxlPVwiZmxleDogMVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9xYS5pcHRkZXYuY29tLmNvL2Fzc2V0cy9sb2dvcy9yZWFkaW5nLnBuZ1wiIHN0eWxlPVwid2lkdGg6IDY1cHg7XCIgc2hhcGU9XCJjaXJjbGVcIiAvPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LWJvbGQgdGV4dC05MDBcIj5KYWNvYjwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LW1lZGl1bSB0ZXh0LWxnIG15LTMgdGV4dC05MDBcIj57eyBtZXNzYWdlSW5mbyB9fTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9wLXRvYXN0PlxuICA8aSBjbGFzcz1cInBpIHBpLWV4Y2xhbWF0aW9uLWNpcmNsZSBjdXJzb3ItcG9pbnRlciB3LWF1dG8gbWItNFwiIChjbGljayk9XCJzaG93Q29uZmlybSgpXCIgcFRvb2x0aXA9XCJNYXMgaW5mby5cIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIj48L2k+XG5cbiAgPGZvcm0gYXV0b2NvbXBsZXRlPVwib2ZmXCIgW2Zvcm1Hcm91cF09XCJjb2RTZWxmRm9ybVN0ZXBUaHJlZVwiIGNsYXNzPVwiZ3JpZCBtdC0yXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICA8aXB0LXNlbGVjdFxuICAgICAgICBbaW5pdGlhbFZhbHVlXT1cImNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydwYXltZW50X21ldGhvZCddLnZhbHVlXCJcbiAgICAgICAgW2NvbnRyb2xdPVwiY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3BheW1lbnRfbWV0aG9kJ11cIlxuICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0UGF5bWVudE1ldGhvZCgkZXZlbnQpXCJcbiAgICAgICAgW2RhdGFdPVwicGF5bWVudE1ldGhvZHNcIlxuICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ03DqXRvZG8gZGUgcGFnbydcIlxuICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgIDxpcHQtbG9hZGVyICpuZ0lmPVwiZmVlUmVzcG9uc2VcIj48L2lwdC1sb2FkZXI+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIiAqbmdJZj1cInRoZXJlQXJlUGxhbnNcIj5cbiAgICAgICAgPHAtdGFibGVcbiAgICAgICAgICBbdmFsdWVdPVwiZGF0YVByaWNlc1wiXG4gICAgICAgICAgW3RhYmxlU3R5bGVdPVwieydtaW4td2lkdGgnOiAnMTAwJSd9XCJcbiAgICAgICAgICBbcm93SG92ZXJdPVwidHJ1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY2FwdGlvblwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICBTZWxlY2Npb24gZGUgbml2ZWxlcyBhIGNhbmNlbGFyLlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cImJnLWJsdWUtMjAwIHRleHQtY2VudGVyIGZvbnQtbWVkaXVtIHB0LTIgcGItMlwiPkNhbmNlbGFyPC90aD5cbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiYmctYmx1ZS0yMDAgdGV4dC1jZW50ZXIgZm9udC1tZWRpdW0gcHQtMiBwYi0yXCI+Q3VvdGFzPC90aD5cbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiYmctYmx1ZS0yMDAgdGV4dC1jZW50ZXIgZm9udC1tZWRpdW0gcHQtMiBwYi0yXCI+QWRtaW48L3RoPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LWRhdGE+XG4gICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgIDx0ZD57eyBkYXRhLnBhaWRfbGV2ZWwgfX0gTml2ZWwoZXMpPC90ZD5cbiAgICAgICAgICAgICAgPHRkPnt7IGRhdGEuZmVlX251bWJlciB9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInB0LTIgcGItMlwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICAgIGljb249XCJwaSBwaS1tb25leS1iaWxsXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tc20gcC1idXR0b24tcm91bmRlZFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0TGV2ZWxzKGRhdGEpXCJcblxuICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9wLXRhYmxlPlxuICAgICAgPC9kaXY+XG5cblxuICAgICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICA8aXB0LWlucHV0XG4gICAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidNb250byB0b3RhbCBkZSBsYSBtYXRyw61jdWxhJ1wiXG4gICAgICAgIFtjb250cm9sXT1cImNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWyd0b3RhbF9wcmljZSddXCJcbiAgICAgICAgW3dpdGhQaXBlXT1cInRydWVcIlxuICAgICAgPjwvaXB0LWlucHV0PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgPGlwdC1pbnB1dFxuICAgICAgICBbd2l0aFBpcGVdPVwidHJ1ZVwiXG4gICAgICAgIFtpbnB1dFR5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgW2NvbnRyb2xdPVwiY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3Byb2dyYW1fcHJpY2UnXVwiXG4gICAgICAgIFtwbGFjZUhvbGRlcl09XCInVmFsb3IgdG90YWwgZGVsIHByb2dyYW1hJ1wiXG4gICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICA8aXB0LWlucHV0XG4gICAgICAgIG9uZm9jdXM9XCIodGhpcy50eXBlPSdkYXRlJylcIlxuICAgICAgICBbaW5wdXRUeXBlXT1cIidkYXRlJ1wiXG4gICAgICAgIFtjb250cm9sXT1cImNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydwYXltZW50X2RhdGUnXVwiXG4gICAgICAgIFtwbGFjZUhvbGRlcl09XCInRmVjaGEgZGUgcGFnbydcIlxuICAgICAgPjwvaXB0LWlucHV0PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBUYWJsYSBkZSBmaW5hbmNpYWNpw7NuIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIiAqbmdJZj1cImlzRmluYW5jaW5nXCI+XG4gICAgICA8cC10YWJsZVxuICAgICAgICBbdmFsdWVdPVwiZGF0YUZpbmFuY2luZ1wiXG4gICAgICAgIFt0YWJsZVN0eWxlXT1cInsnbWluLXdpZHRoJzogJzEwMCUnfVwiXG4gICAgICAgIFtyb3dIb3Zlcl09XCJ0cnVlXCJcbiAgICAgID5cbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNhcHRpb25cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIEPDoWxjdWxvIGRlIGN1b3Rhc1xuICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIGNsYXNzPVwicC1idXR0b24tc20gbWwtYXV0b1wiIGxhYmVsPVwiTnVldm8gY8OhbGN1bG9cIiAoY2xpY2spPVwiY2FsY3VsYXRlTmV3UXVvdGVzKClcIiBsYWIgaWNvbj1cInBpIHBpLXJlcGxheVwiPjwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRoPiM8L3RoPlxuICAgICAgICAgICAgPHRoPlZhbG9yPC90aD5cbiAgICAgICAgICAgIDx0aD5GZWNoYTwvdGg+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIiBsZXQtZGF0YT5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGQ+e3sgZGF0YVswXSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQ+e3sgZGF0YVsxXSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQ+e3sgZGF0YVsyXSB9fTwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvcC10YWJsZT5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XG5cbiAgPC9mb3JtPlxuICA8L2Rpdj5cblxuXG48ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC0zIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICA8IS0tIDxzcGFuICpuZ0lmPVwiY29kU2VsZkZvcm1TdGVwT25lLmludmFsaWQgJiYgY29kU2VsZkZvcm1TdGVwT25lLnRvdWNoZWRcIiBjbGFzcz1cInRleHQtcmVkLTUwMCBmb250LWJvbGQgdGV4dC1jZW50ZXIgbXQtMSBweS0yIGJnLXJlZC0xMDAgdy1mdWxsIGJvcmRlci1yb3VuZC14bFwiPnt7IGVycm9yTWVzc2FnZSB9fTwvc3Bhbj4gLS0+XG4gIDxidXR0b25cbiAgcEJ1dHRvblxuICBpY29uPVwicGkgcGktYXJyb3ctbGVmdFwiXG4gIHR5cGU9XCJzdWJtaXRcIlxuICAoY2xpY2spPVwiYmFjaygpXCJcbiAgPjwvYnV0dG9uPlxuXG4gIDxidXR0b25cbiAgcEJ1dHRvblxuICBpY29uPVwicGkgcGktYXJyb3ctcmlnaHRcIlxuICAoY2xpY2spPVwic2VuZEZvcm0oKVwiXG4gID48L2J1dHRvbj5cbjwvZGl2PlxuPC9kaXY+XG4iXX0=
|
package/esm2020/lib/cod-self-managed/steps/cod-form-step-two/cod-self-form-step-two.component.mjs
CHANGED
|
@@ -110,9 +110,9 @@ export class CodSelfFormStepTwoComponent extends CodSelfManagedSteps {
|
|
|
110
110
|
}
|
|
111
111
|
searchAvalaibleCourse() {
|
|
112
112
|
this.isLoading = true;
|
|
113
|
-
const age =
|
|
114
|
-
const grade =
|
|
115
|
-
const agreement =
|
|
113
|
+
const age = Number(this.localStorageCOD.getCodFormData(1, 'age'));
|
|
114
|
+
const grade = Number(this.localStorageCOD.getCodFormData(1, 'grade'));
|
|
115
|
+
const agreement = Number(this.localStorageCOD.getCodFormData(1, 'agreement_by_category'));
|
|
116
116
|
const userCode = this.baseService.getUserCode();
|
|
117
117
|
console.log(this.scorePlacementTest);
|
|
118
118
|
console.log(this.codPrevious);
|
|
@@ -214,4 +214,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImpor
|
|
|
214
214
|
}], codPrevious: [{
|
|
215
215
|
type: Input
|
|
216
216
|
}] } });
|
|
217
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLXNlbGYtZm9ybS1zdGVwLXR3by5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29kLXNlbGYtbWFuYWdlZC9zdGVwcy9jb2QtZm9ybS1zdGVwLXR3by9jb2Qtc2VsZi1mb3JtLXN0ZXAtdHdvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2Rlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb2Qtc2VsZi1tYW5hZ2VkL3N0ZXBzL2NvZC1mb3JtLXN0ZXAtdHdvL2NvZC1zZWxmLWZvcm0tc3RlcC10d28uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFtRCxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUFFLG1CQUFtQixFQUF5QixNQUFNLG9DQUFvQyxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQy9FLE9BQU8sRUFBYSxVQUFVLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVNwRSxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsbUJBQW1CO0lBc0NsRSxZQUNVLEVBQWUsRUFDZixLQUF3QixFQUN4QixjQUE4QixFQUM5QixXQUF3QixFQUN4QixlQUFnQztRQUV4QyxLQUFLLEVBQUUsQ0FBQztRQU5BLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBekNoQyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQU1qRCxhQUFRLEdBQUcsSUFBSSxzQkFBc0IsRUFBRSxD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QUksQ0FBQyxDQUFDO1FBQ3RHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2RixJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZHLENBQUM7SUFHRCxnQkFBZ0I7UUFDZCxNQUFNLENBQUMsSUFBSSxDQUFDLHNDQUFzQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7O3dIQW5OVSwyQkFBMkI7NEdBQTNCLDJCQUEyQixxT0NkeEMsMDVPQTJLQTsyRkQ3SmEsMkJBQTJCO2tCQUx2QyxTQUFTOytCQUNFLDRCQUE0Qjt1TkFNNUIsU0FBUztzQkFBbEIsTUFBTTtnQkFFRSxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjYWRlbWljU2VydmljZSB9IGZyb20gJy4vLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9hY2FkZW1pYy1zZXJ2aWNlL2FjYWRlbWljLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFzZVNlcnZpY2UgfSBmcm9tICcuLy4uLy4uLy4uL2NvcmUvdXRpbHMvYmFzZS1zZXJ2aWNlL2Jhc2Uuc2VydmljZSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkNoYW5nZXMsIENoYW5nZURldGVjdG9yUmVmLCBPbkluaXQsIE9uRGVzdHJveSwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvZFNlbGZNYW5hZ2VkU3RlcHMsIGxvY2FsU3RvcmFnZVZhbHVlc1R3byB9IGZyb20gJy4uLy4uL2xvZ2ljL2NvZC1zZWxmLW1hbmFnZWQtc3RlcHMnO1xuaW1wb3J0IHsgQ29kU2VsZk1hbmFnZWRDb250cm9scyB9IGZyb20gJy4uLy4uL2xvZ2ljL2NvZC1zZWxmLW1hbmFnZWQtY29udHJvbHMnO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBWYWxpZGF0b3JzLCBGb3JtQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgSXdlZWtEYXlzUnEgfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscy9hY2FkZW1pYy9hY2FkZW1pYy5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY29kLXNlbGYtZm9ybS1zdGVwLXR3bycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2Qtc2VsZi1mb3JtLXN0ZXAtdHdvLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29kLXNlbGYtZm9ybS1zdGVwLXR3by5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENvZFNlbGZGb3JtU3RlcFR3b0NvbXBvbmVudCBleHRlbmRzIENvZFNlbGZNYW5hZ2VkU3RlcHMgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCB7XG5cbiAgQE91dHB1dCgpIGNvbXBsZXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIEBJbnB1dCgpIHNjb3JlUGxhY2VtZW50VGVzdD86YW55O1xuICBASW5wdXQoKSBjb2RQcmV2aW91cz86YW55O1xuXG4gIGNvZFNlbGZGb3JtU3RlcFR3byE6IEZvcm1Hcm91cDtcbiAgY29udHJvbHMgPSBuZXcgQ29kU2VsZk1hbmFnZWRDb250cm9scygpLmNvbnRyb2xzWzFdO1xuICBzdGFydERhdGUxITogc3RyaW5nO1xuICB2aXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIG1lc3NhZ2VJbmZvOnN0cmluZyA9ICdCdXNjYSB1biBwbGFuIGRlIGFjdWVyZG8gYSB0dSBkaXNwb25pYmlsaWRhZC4nO1xuICBzdGF0ZU9wdGlvbnNNb2RhbGl0eTogYW55W10gPSBbXG4gICAgeyBjb2RlOiAxLCBrZXk6ICdwcicsICBuYW1lOiAnUHJlc2VuY2lhbCd9LFxuICAgIHsgY29kZTogMiwga2V5OiAndmknLCBuYW1lOiAnVmlydHVhbCd9LFxuICBdO1xuICBzY2hlZHVsZXM6IEl3ZWVrRGF5c1JxW10gPSBbXG4gICAge2NvZGU6IDEsIG5hbWU6ICdNYcOxYW5hJywga2V5OiAnbWEnIH0sXG4gICAge2NvZGU6IDIsIG5hbWU6ICdUYXJkZScsIGtleTogJ3RhJyB9LFxuICAgIHtjb2RlOiAzLCBuYW1lOiAnTm9jaGUnLCBrZXk6ICdubycgfSxcbiAgXTtcbiAgT3B0aW9uUGxhY2VtZW50VGVzdDogYW55W109W1xuICAgIHtjb2RlOiAxLCBrZXk6ICdzaScsICBuYW1lOiAnU2knfSxcbiAgICB7Y29kZTogMiwga2V5OiAnbmknLCAgbmFtZTogJ05vJ30sXG4gIF07XG4gIHNlbGVjdGVkU2NoZWR1bGVzOiBJd2Vla0RheXNScVtdID0gW107XG4gIGRpc2FibGV3ZWVrZGF5czogYm9vbGVhbltdID0gW107XG4gIHNlbGVjdGVkTW9kYWxpdHk6SXdlZWtEYXlzUnFbXT1bXVxuICBzZWxlY3RlZE9wdGlvblBsYWNlbWVudFRlc3Q6SXdlZWtEYXlzUnFbXT1bXVxuICBtZXNzYWdlQWxlcnRTY2hlZHVsZXMgPSBmYWxzZTtcbiAgbWVzc2FnZUFsZXJ0TW9kYWxpdHk9IGZhbHNlO1xuICBtZXNzYWdlQWxlcnRQbGFjZW1lbnRUZXN0PSBmYWxzZTtcbiAgU2VhcmNoRGF0YSA9IHRydWU7XG4gIGRhdGFDb3Vyc2U6IGFueVtdID0gW107XG4gIGlzTG9hZGluZz10cnVlO1xuICBjb3Vyc2VTZWxlY3Q/OmFueTtcbiAgdmlzaWJsZUdyb3VwUmV2aWV3ID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYXNlU2VydmljZTogQmFzZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY2FkZW1pY1NlcnZpY2U6IEFjYWRlbWljU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3RhcnRMb2NhbFN0b3JhZ2VXb3JrKCk7XG4gICAgLy8gdGhpcy52YWx1ZXNJbml0aWFsU2NoZWR1bGUoKTtcbiAgICB0aGlzLmlzTG9hZGluZz10cnVlO1xuICB9XG4gIG5nT25DaGFuZ2VzKCl7XG4gICAgLy8gdGhpcy5pbml0Rm9ybSgpO1xuICAgIC8vIHRoaXMuc3RhcnRMb2NhbFN0b3JhZ2VXb3JrKCk7XG4gIH1cblxuICBpbml0Rm9ybSgpIHtcblxuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVHdvID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICAvLyBzY2hlZHVsZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgLy8gdG9fc3RhcnQ6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIC8vIG1vZGFsaXR5OiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgYWNhZGVtaWNfcGxhbjogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgY291cnNlX3R5cGU6WycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgYWdyZWVtZW50X2J5X2NhdGVnb3J5OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxdLFxuICAgICAgZW5nbGlzaF9sZXZlbDogW3t2YWx1ZTogJycsIGRpc2FibGVkOiB0cnVlfSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDUpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyMCldXSxcbiAgICAgIGF2YWlsaWJsZV9jb3Vyc2VzOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBjb3Vyc2VfbW9kYWxpdHk6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdLF0sXG5cbiAgICB9KTtcbiAgfVxuICAvLyB2YWx1ZXNJbml0aWFsU2NoZWR1bGUoKSB7XG4gIC8vICAgY29uc3Qgc2NoZWR1bGVWYWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdDT0QgU0VMRiAtIHN0ZXAyKHNjaGVkdWxlKScpO1xuICAvLyAgIGNvbnN0IGNvdXJzZU1vZGFsaXR5ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0NPRCBTRUxGIC0gc3RlcDIobW9kYWxpdHkpJyk7XG5cbiAgLy8gICBpZiAoc2NoZWR1bGVWYWx1ZSAmJiBzY2hlZHVsZVZhbHVlLnRyaW0oKSAhPSAnJykge1xuICAvLyAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUd28uY29udHJvbHNbJ3NjaGVkdWxlJ10uc2V0VmFsdWUobmV3IERhdGUoc2NoZWR1bGVWYWx1ZSkpO1xuICAvLyAgIH0gZWxzZSB7XG4gIC8vICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5jb250cm9sc1snc2NoZWR1bGUnXS5zZXRWYWx1ZShuZXcgRGF0ZSgpKTtcbiAgLy8gICB9XG5cbiAgLy8gICBpZiAoY291cnNlTW9kYWxpdHkgJiYgY291cnNlTW9kYWxpdHkudHJpbSgpICE9PSAnJykge1xuICAvLyAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUd28uY29udHJvbHNbJ21vZGFsaXR5J10uc2V0VmFsdWUocGFyc2VJbnQoY291cnNlTW9kYWxpdHkpKTtcbiAgLy8gICB9IGVsc2Uge1xuICAvLyAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUd28uY29udHJvbHNbJ21vZGFsaXR5J10uc2V0VmFsdWUobnVsbCk7XG4gIC8vICAgfVxuICAvLyB9XG4gIGJhY2soKSB7XG4gICAgLy8gTW92ZXJub3MgYWwgcGFzbyBhbnRlcmlvclxuICAgIHRoaXMuY29tcGxldGVkLmVtaXQoMCk7XG4gIH1cbiAgc2VuZEZvcm0oKSB7XG4gICAgLy8gdGhpcy5jb2RTZWxmRm9ybVN0ZXBUd28ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgIC8vIGlmICh0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5pbnZhbGlkKSByZXR1cm47XG5cbiAgICAvLyBNb3Zlcm5vcyBhbCBwYXNvIDNcbiAgICB0aGlzLmNvbXBsZXRlZC5lbWl0KDIpO1xuICB9XG5cbiAgc3RhcnRMb2NhbFN0b3JhZ2VXb3JrKCkge1xuICAgIHRoaXMuY29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IHtcbiAgICAgIGxldCBsb2NhbFN0b3JhZ2VWYWx1ZTogbG9jYWxTdG9yYWdlVmFsdWVzVHdvID0gdGhpcy5yZWFkQW5kV3JpdGVMUygyLCBjb250cm9sLm5hbWUpO1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUd28uY29udHJvbHNbY29udHJvbC5uYW1lXS5zZXRWYWx1ZShsb2NhbFN0b3JhZ2VWYWx1ZS52YWx1ZSk7XG4gICAgICB0aGlzLmxpc3RlbkZvcm1DaGFuZ2VzKDIsIGNvbnRyb2wubmFtZSwgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUd28uY29udHJvbHNbY29udHJvbC5uYW1lXS52YWx1ZUNoYW5nZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgc2VhcmNoQXZhbGFpYmxlQ291cnNlKCl7XG4gICAgdGhpcy5pc0xvYWRpbmc9dHJ1ZTtcbiAgICBjb25zdCBhZ2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnQ09EIFNFTEYgLSBzdGVwMShhZ2UpJylcbiAgICBjb25zdCBncmFkZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdDT0QgU0VMRiAtIHN0ZXAxKGdyYWRlKScpXG4gICAgY29uc3QgYWdyZWVtZW50ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0NPRCBTRUxGIC0gc3RlcDEoYWdyZWVtZW50X2J5X2NhdGVnb3J5KScpXG4gICAgY29uc3QgdXNlckNvZGUgPSB0aGlzLmJhc2VTZXJ2aWNlLmdldFVzZXJDb2RlKCk7XG5cbiAgICBjb25zb2xlLmxvZyh0aGlzLnNjb3JlUGxhY2VtZW50VGVzdCk7XG4gICAgY29uc29sZS5sb2codGhpcy5jb2RQcmV2aW91cyk7XG5cbiAgICBjb25zdCByZXF1ZXN0OiBhbnkgPSB7XG4gICAgICBjb2RlX3VzZXI6IHVzZXJDb2RlLFxuICAgICAgY29kUHJldmlvdXM6IHRoaXMuY29kUHJldmlvdXMsXG4gICAgICBzY29yZVBsYWNlbWVudFRlc3Q6IHRoaXMuc2NvcmVQbGFjZW1lbnRUZXN0LFxuICAgICAgYWdlOiBhZ2UsXG4gICAgICBncmFkZTogZ3JhZGUsXG4gICAgICBhZ3JlZW1lbnQ6IGFncmVlbWVudCxcbiAgICAgIG1vZGFsaXR5OiB0aGlzLnNlbGVjdGVkTW9kYWxpdHksXG4gICAgICBzY2hlZHVsZXM6IHRoaXMuc2VsZWN0ZWRTY2hlZHVsZXMsXG4gICAgICBkZWNpdGlvblBsYWNlbWVudFRlc3Q6IHRoaXMuc2VsZWN0ZWRPcHRpb25QbGFjZW1lbnRUZXN0LFxuICAgICAgdG9rZW46IHRoaXMuYmFzZVNlcnZpY2UuZ2V0VXNlclRva2VuKClcbiAgICAgIC8vIHNjaGVkdWxlOiB0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5nZXQoJ3NjaGVkdWxlJyk/LnZhbHVlLFxuICAgICAgLy8gcG9zc2libGVfc3RhcnQ6IHRoaXMuY29kU2VsZkZvcm1TdGVwVHdvLmdldCgndG9fc3RhcnQnKT8udmFsdWUsXG4gICAgICAvLyBtb2RhbGl0eTogdGhpcy5jb2RTZWxmRm9ybVN0ZXBUd28uZ2V0KCdtb2RhbGl0eScpPy52YWx1ZVxuICAgIH1cbiAgICBjb25zb2xlLmxvZyhyZXF1ZXN0KTtcbiAgICB0aGlzLmFjYWRlbWljU2VydmljZS5vYnRhaW5QbGFuc0NvdXJzZUF2YWxhaWJsZUZvclBvc2libGVTdHVkZW50QnlBZ2VBbmRHcmFkZShyZXF1ZXN0KS5zdWJzY3JpYmUoKHJlc3BvbnNlKT0+e1xuICAgICAgdGhpcy5TZWFyY2hEYXRhID0gZmFsc2U7XG4gICAgICBjb25zb2xlLmxvZyhyZXNwb25zZSk7XG4gICAgICB0aGlzLmRhdGFDb3Vyc2UgPSByZXNwb25zZS5kYXRhO1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMudmlzaWJsZUdyb3VwUmV2aWV3ID0gdHJ1ZVxuICAgIH0pXG4gIH1cblxuICBvblJlamVjdCgpIHtcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmNsZWFyKCdjb25maXJtJyk7XG4gICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gIH1cblxuICBzaG93Q29uZmlybSgpIHtcbiAgICBpZiAoIXRoaXMudmlzaWJsZSkge1xuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IGtleTogJ2NvbmZpcm0nLCBzdGlja3k6IHRydWUsIHNldmVyaXR5OiAnc3VjY2VzcycsIHN1bW1hcnk6ICdDYW4geW91IHNlbmQgbWUgdGhlIHJlcG9ydD8nLCBsaWZlOiAxMDAwMCB9KTtcbiAgICAgICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RTY2hlZHVsZXMoZXZlOiBJd2Vla0RheXNScVtdKSB7XG4gICAgdGhpcy5zZWxlY3RlZFNjaGVkdWxlcyA9IGV2ZVxuICAgIGNvbnNvbGUubG9nKHRoaXMuc2VsZWN0ZWRTY2hlZHVsZXMpO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkU2NoZWR1bGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5tZXNzYWdlQWxlcnRTY2hlZHVsZXMgPSB0cnVlO1xuICAgIH1lbHNle1xuICAgICAgdGhpcy5tZXNzYWdlQWxlcnRTY2hlZHVsZXMgPSBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIHNlbGVjdE1vZGFsaXR5KGV2ZTogSXdlZWtEYXlzUnFbXSl7XG4gICAgdGhpcy5zZWxlY3RlZE1vZGFsaXR5ID0gZXZlXG4gICAgY29uc29sZS5sb2codGhpcy5zZWxlY3RlZE1vZGFsaXR5KTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZE1vZGFsaXR5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5tZXNzYWdlQWxlcnRNb2RhbGl0eSA9IHRydWU7XG4gICAgfWVsc2V7XG4gICAgICB0aGlzLm1lc3NhZ2VBbGVydE1vZGFsaXR5ID0gZmFsc2VcbiAgICB9XG4gIH1cbiAgc2VsZWN0T3BjaW9uc1BsYWNlbWVudFRlc3QoZXZlOiBJd2Vla0RheXNScVtdKXtcbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9uUGxhY2VtZW50VGVzdCA9IGV2ZVxuICAgIGNvbnNvbGUubG9nKHRoaXMuc2VsZWN0ZWRPcHRpb25QbGFjZW1lbnRUZXN0KTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZE9wdGlvblBsYWNlbWVudFRlc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLm1lc3NhZ2VBbGVydFBsYWNlbWVudFRlc3QgPSB0cnVlO1xuICAgIH1lbHNle1xuICAgICAgdGhpcy5tZXNzYWdlQWxlcnRQbGFjZW1lbnRUZXN0ID0gZmFsc2VcbiAgICB9XG4gIH1cblxuICBmaWx0ZXJBZ2Fpbigpe1xuICAgIHRoaXMuU2VhcmNoRGF0YSA9IHRydWVcblxuICB9XG5cbiAgY291cnNlQ29kZShjb2RlQ291cnNlOiBhbnkpe1xuICAgIHRoaXMuY291cnNlU2VsZWN0ID0gY29kZUNvdXJzZTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLmNvdXJzZVNlbGVjdCk7XG4gICAgdGhpcy52aXNpYmxlR3JvdXBSZXZpZXcgPSBmYWxzZTtcbiAgICB0aGlzLlNlYXJjaERhdGEgPSBmYWxzZTtcbiAgICB0aGlzLnNldFZhbHVlc0Zvcm0oKTtcbiAgfVxuXG4gIHNldFZhbHVlc0Zvcm0oKXtcbiAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5jb250cm9sc1snYWNhZGVtaWNfcGxhbiddLnNldFZhbHVlKHRoaXMuY291cnNlU2VsZWN0LmNvdXJzZV90eXBlLmFjYWRlbWljX3BsYW4uY29kZSk7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUd28uY29udHJvbHNbJ2NvdXJzZV90eXBlJ10uc2V0VmFsdWUodGhpcy5jb3Vyc2VTZWxlY3QuY291cnNlX3R5cGU/LmNvZGUpO1xuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVHdvLmNvbnRyb2xzWydhZ3JlZW1lbnRfYnlfY2F0ZWdvcnknXS5zZXRWYWx1ZSh0aGlzLmNvdXJzZVNlbGVjdC5hZ3JlZW1lbnQ/LmNvZGUpO1xuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVHdvLmNvbnRyb2xzWydlbmdsaXNoX2xldmVsJ10uc2V0VmFsdWUodGhpcy5jb3Vyc2VTZWxlY3QuZW5nbGlzaF9sZXZlbD8uY29kZSk7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUd28uY29udHJvbHNbJ2F2YWlsaWJsZV9jb3Vyc2VzJ10uc2V0VmFsdWUodGhpcy5jb3Vyc2VTZWxlY3QuY29kZSk7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUd28uY29udHJvbHNbJ2NvdXJzZV9tb2RhbGl0eSddLnNldFZhbHVlKHRoaXMuY291cnNlU2VsZWN0LmNvdXJzZV9tb2RhbGl0eS5jb2RlKTtcbiAgfVxuXG5cbiAgb3BlblRlc3RJbk5ld1RhYigpOiB2b2lkIHtcbiAgICB3aW5kb3cub3BlbignaHR0cHM6Ly90ZXN0LmluZ2xlc3BhcmF0b2Rvcy5lZHUuY28vJywgJ19ibGFuaycpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyLW1haW5cIj5cbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mb3JtXCI+XG4gICAgPGgyPlBsYW5lczwvaDI+XG4gICAgICA8cC10b2FzdCBwb3NpdGlvbj1cInRvcC1jZW50ZXJcIiBrZXk9XCJjb25maXJtXCIgKG9uQ2xvc2UpPVwib25SZWplY3QoKVwiIFtiYXNlWkluZGV4XT1cIjEwXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtbWVzc2FnZSBwVGVtcGxhdGU9XCJtZXNzYWdlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1zdGFydFwiIHN0eWxlPVwiZmxleDogMVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vcWEuaXB0ZGV2LmNvbS5jby9hc3NldHMvbG9nb3MvcmVhZGluZy5wbmdcIiBzdHlsZT1cIndpZHRoOiA2NXB4O1wiIHNoYXBlPVwiY2lyY2xlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LWJvbGQgdGV4dC05MDBcIj5KYWNvYjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1tZWRpdW0gdGV4dC1sZyBteS0zIHRleHQtOTAwXCI+e3sgbWVzc2FnZUluZm8gfX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvcC10b2FzdD5cblxuICAgIDxpIGNsYXNzPVwicGkgcGktZXhjbGFtYXRpb24tY2lyY2xlIGN1cnNvci1wb2ludGVyIHctYXV0byBtYi00XCIgKGNsaWNrKT1cInNob3dDb25maXJtKClcIiBwVG9vbHRpcD1cIk1hcyBpbmZvLlwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiPjwvaT5cbiAgICA8IS0tIDxmb3JtIFtmb3JtR3JvdXBdPVwiY29kU2VsZkZvcm1TdGVwVHdvXCI+IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1idXR0b25cIiAqbmdJZj1cIiFTZWFyY2hEYXRhXCI+XG4gICAgICAgIDxpcHQtYnV0dG9uXG4gICAgICAgICAgW2xhYmVsXT1cIidGaWx0cmFyJ1wiXG4gICAgICAgICAgKG9uQ2xpY2spPVwiZmlsdGVyQWdhaW4oKVwiXG4gICAgICAgICAgW3ByaW1hcnldPVwidHJ1ZVwiPlxuICAgICAgICA8L2lwdC1idXR0b24+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiAqbmdJZj1cIlNlYXJjaERhdGFcIj5cbiAgICAgICAgPHAtYWNjb3JkaW9uIFttdWx0aXBsZV09XCJ0cnVlXCIgW2FjdGl2ZUluZGV4XT1cIlswXVwiPlxuICAgICAgICAgIDxwLWFjY29yZGlvblRhYiBoZWFkZXI9XCJKb3JuYWRhXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyRGF5XCI+XG4gICAgICAgICAgICAgIDwhLS0gPGgzPkhvcmFyaW88L2gzPiAtLT5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrQm94IGZsZXggZmxleC13cmFwIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG0tMyBnYXAtM1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRheVcgb2Ygc2NoZWR1bGVzOyBpbmRleCBhcyBpbmRcIiBjbGFzcz1cImZpZWxkLWNoZWNrYm94XCI+XG4gICAgICAgICAgICAgICAgICA8cC1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZ3JvdXAyXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJjYXRlZ29yeVwiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJkYXlXXCJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFNjaGVkdWxlc1wiXG4gICAgICAgICAgICAgICAgICAgIFtpbnB1dElkXT1cImRheVcua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGV3ZWVrZGF5c1tpbmRdXCJcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSB9XCJcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tib3hJY29uPVwicGkgcGktY2hlY2stY2lyY2xlXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VsZWN0U2NoZWR1bGVzKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgPjwvcC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cImRheVcua2V5XCI+e3sgZGF5Vy5uYW1lIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibWVzc2FnZUFsZXJ0U2NoZWR1bGVzXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5Qb3IgZmF2b3Igc2VsZWNjaW9uYSB1bmEgb3BjaW9uPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9wLWFjY29yZGlvblRhYj5cbiAgICAgICAgICA8cC1hY2NvcmRpb25UYWIgaGVhZGVyPVwiTW9kYWxpZGFkXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyRGF5XCI+XG4gICAgICAgICAgICAgIDwhLS0gPGgzPkhvcmFyaW88L2gzPiAtLT5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrQm94IGZsZXggZmxleC13cmFwIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG0tMyBnYXAtM1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRheVcgb2Ygc3RhdGVPcHRpb25zTW9kYWxpdHk7IGluZGV4IGFzIGluZFwiIGNsYXNzPVwiZmllbGQtY2hlY2tib3hcIj5cbiAgICAgICAgICAgICAgICAgIDxwLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJncm91cDJcIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cImNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRheVdcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkTW9kYWxpdHlcIlxuICAgICAgICAgICAgICAgICAgICBbaW5wdXRJZF09XCJkYXlXLmtleVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxld2Vla2RheXNbaW5kXVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrYm94SWNvbj1cInBpIHBpLWNoZWNrLWNpcmNsZVwiXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlbGVjdE1vZGFsaXR5KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgPjwvcC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cImRheVcua2V5XCI+e3sgZGF5Vy5uYW1lIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibWVzc2FnZUFsZXJ0TW9kYWxpdHlcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlBvciBmYXZvciBzZWxlY2Npb25hIHVuYSBvcGNpb248L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3AtYWNjb3JkaW9uVGFiPlxuICAgICAgICAgIDxwLWFjY29yZGlvblRhYiAqbmdJZj1cInNjb3JlUGxhY2VtZW50VGVzdCAhPSBudWxsXCIgaGVhZGVyPVwiUGxhY2VtZW50IHRlc3RcIj5cbiAgICAgICAgICAgIDxzcGFuPlRpZW5lcyB1biBQbGFjZW1lbnQgVGVzdCByZWFsaXphZG8uIFB1ZWRlcyBjb21lbnphciBjb24gZWwgbml2ZWw8L3NwYW4+PGgzPnt7IHNjb3JlUGxhY2VtZW50VGVzdD8ubGV2ZWxfaW5nbGlzaF9uZXh0Lm5hbWUgfX08L2gzPlxuICAgICAgICAgICAgPHNwYW4+XCJOTyBBUExJQ0EgUExBQ0VNRU5UIFRFU1QgUEFSQSBQTEFORVMgVEVDTklDT1NcIjwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJEYXkgbXQtM1wiPlxuICAgICAgICAgICAgICA8aDM+wr9EZXNlYXMgaW5pY2lhciBlbiBlc3RlIG5pdmVsIHt7IHNjb3JlUGxhY2VtZW50VGVzdD8ubGV2ZWxfaW5nbGlzaF9uZXh0Lm5hbWUgfX0/PC9oMz5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2x1bW4gZ2FwLTNcIj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY2F0ZWdvcnkgb2YgT3B0aW9uUGxhY2VtZW50VGVzdDsgaW5kZXggYXMgaW5kXCIgY2xhc3M9XCJmaWVsZC1jaGVja2JveFwiPlxuICAgICAgICAgICAgICAgICAgPHAtcmFkaW9CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRJZF09XCJjYXRlZ29yeS5rZXlcIlxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJjYXRlZ29yeVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkT3B0aW9uUGxhY2VtZW50VGVzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGV3ZWVrZGF5c1tpbmRdXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxuICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlbGVjdE9wY2lvbnNQbGFjZW1lbnRUZXN0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgID48L3AtcmFkaW9CdXR0b24+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJjYXRlZ29yeS5rZXlcIiBjbGFzcz1cIm1sLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBjYXRlZ29yeS5uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3AtYWNjb3JkaW9uVGFiPlxuICAgICAgICAgIDxwLWFjY29yZGlvblRhYiAqbmdJZj1cInNjb3JlUGxhY2VtZW50VGVzdCA9PSBudWxsXCIgaGVhZGVyPVwiUHJ1ZWJhIGRpYWduw7NzdGljbyBQbGFjZW1lbnQgVGVzdFwiPlxuICAgICAgICAgICAgPHNwYW4+UHJlc2VudGEgdG90YWxtZW50ZSBncmF0aXMgZXN0YSBwcnVlYmEgcGFyYSBjb25vY2VyIHR1IG5pdmVsIGRlIGluZ2zDqXMgeSBudWVzdHJhcyBvZmVydGFzIHBhcmEgdGkuPC9zcGFuPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lckRheSBtdC0zXCI+XG4gICAgICAgICAgICAgIDwhLS0gPGgzPsK/RGVzZWFzIGluaWNpYXIgZW4gZXN0ZSBuaXZlbCB7eyBzY29yZVBsYWNlbWVudFRlc3Q/LmxldmVsX2luZ2xpc2hfbmV4dC5uYW1lIH19PzwvaDM+IC0tPlxuICAgICAgICAgICAgICA8aXB0LWJ1dHRvblxuICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1ByZXNlbnRhciBUZXN0J1wiXG4gICAgICAgICAgICAgIChvbkNsaWNrKT1cIm9wZW5UZXN0SW5OZXdUYWIoKVwiXG4gICAgICAgICAgICAgIFtwcmltYXJ5XT1cInRydWVcIj5cbiAgICAgICAgICAgIDwvaXB0LWJ1dHRvbj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2x1bW4gZ2FwLTNcIj5cblxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvcC1hY2NvcmRpb25UYWI+XG5cbiAgICAgICAgPC9wLWFjY29yZGlvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtbm9uZSBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtZW5kIG0tMlwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHBUb29sdGlwPVwiQnVzY2FyIFBsYW5lc1wiXG4gICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJsZWZ0XCJcbiAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgIFJpcHBsZVxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBpY29uPVwicGkgcGktc2VhcmNoXCJcbiAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi1vdXRsaW5lZFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwic2VsZWN0ZWRTY2hlZHVsZXMubGVuZ3RoID09PSAwIHx8IHNlbGVjdGVkTW9kYWxpdHkubGVuZ3RoID09PSAwIHx8IHNjb3JlUGxhY2VtZW50VGVzdCAhPSBudWxsICYmIHNlbGVjdGVkT3B0aW9uUGxhY2VtZW50VGVzdC5sZW5ndGggPT09IDAgXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWFyY2hBdmFsYWlibGVDb3Vyc2UoKVwiXG4gICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgXG4gICAgICA8aXB0LWNhcmQtc2VsZWN0LWNvdXJzZS1zZWxmLWNvZC1tYW5hZ2VkXG4gICAgICAqbmdJZj1cImNvdXJzZVNlbGVjdCAhPSBudWxsXCJcbiAgICAgIFtjb3Vyc2VTZWxlY3RdPVwiY291cnNlU2VsZWN0XCI+XG4gICAgICA8L2lwdC1jYXJkLXNlbGVjdC1jb3Vyc2Utc2VsZi1jb2QtbWFuYWdlZD5cblxuICAgICAgPGFydGljbGUgKm5nSWY9XCJ2aXNpYmxlR3JvdXBSZXZpZXdcIiBjbGFzcz1cImNhcmRzLWNvbnRhaW5lclwiPlxuXG4gICAgICAgIDxpcHQtY2FyZC1jb3Vyc2Utc2VsZi1jb2QtbWFuYWdlZFxuICAgICAgICAgIFtDb3Vyc2VEYXRhXT1cImRhdGFDb3Vyc2VcIlxuICAgICAgICAgIChjb2RlQ291cnNlKT1cImNvdXJzZUNvZGUoJGV2ZW50KVwiXG4gICAgICAgICAgW2lzTG9hZGluZ109XCJpc0xvYWRpbmdcIj5cbiAgICAgICAgPC9pcHQtY2FyZC1jb3Vyc2Utc2VsZi1jb2QtbWFuYWdlZD5cbiAgICAgIDwvYXJ0aWNsZT5cbiAgICA8IS0tIDwvZm9ybT4gLS0+XG4gICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtMyBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgIDwhLS0gPHNwYW4gKm5nSWY9XCJjb2RTZWxmRm9ybVN0ZXBPbmUuaW52YWxpZCAmJiBjb2RTZWxmRm9ybVN0ZXBPbmUudG91Y2hlZFwiIGNsYXNzPVwidGV4dC1yZWQtNTAwIGZvbnQtYm9sZCB0ZXh0LWNlbnRlciBtdC0xIHB5LTIgYmctcmVkLTEwMCB3LWZ1bGwgYm9yZGVyLXJvdW5kLXhsXCI+e3sgZXJyb3JNZXNzYWdlIH19PC9zcGFuPiAtLT5cbiAgICAgIDxidXR0b25cbiAgICAgIHBCdXR0b25cbiAgICAgIGljb249XCJwaSBwaS1hcnJvdy1sZWZ0XCJcbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgKGNsaWNrKT1cImJhY2soKVwiXG4gICAgICA+PC9idXR0b24+XG5cbiAgICAgIDxidXR0b25cbiAgICAgIHBCdXR0b25cbiAgICAgIGljb249XCJwaSBwaS1hcnJvdy1yaWdodFwiXG4gICAgICBbZGlzYWJsZWRdPVwiIWNvZFNlbGZGb3JtU3RlcFR3by52YWxpZFwiXG4gICAgICAoY2xpY2spPVwic2VuZEZvcm0oKVwiXG4gICAgICA+PC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXY+XG4gIDxwcmU+e3sgY29kU2VsZkZvcm1TdGVwVHdvLnZhbHVlIHwganNvbiB9fTwvcHJlPlxuICA8ZGl2PlxuICAgIDxwcmU+e3sgY29kU2VsZkZvcm1TdGVwVHdvLnZhbGlkIHwganNvbiB9fTwvcHJlPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG4iXX0=
|
|
217
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLXNlbGYtZm9ybS1zdGVwLXR3by5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29kLXNlbGYtbWFuYWdlZC9zdGVwcy9jb2QtZm9ybS1zdGVwLXR3by9jb2Qtc2VsZi1mb3JtLXN0ZXAtdHdvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2Rlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb2Qtc2VsZi1tYW5hZ2VkL3N0ZXBzL2NvZC1mb3JtLXN0ZXAtdHdvL2NvZC1zZWxmLWZvcm0tc3RlcC10d28uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFtRCxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUFFLG1CQUFtQixFQUF5QixNQUFNLG9DQUFvQyxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQy9FLE9BQU8sRUFBYSxVQUFVLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVNwRSxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsbUJBQW1CO0lBc0NsRSxZQUNVLEVBQWUsRUFDZixLQUF3QixFQUN4QixjQUE4QixFQUM5QixXQUF3QixFQUN4QixlQUFnQztRQUV4QyxLQUFLLEVBQUUsQ0FBQztRQU5BLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBekNoQyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQU1qRCxhQUFRLEdBQUcsSUFBSSxzQkFBc0IsRUFBRSxD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QUFDO1FBQzlGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdEcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkcsQ0FBQztJQUdELGdCQUFnQjtRQUNkLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0NBQXNDLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDaEUsQ0FBQzs7d0hBbk5VLDJCQUEyQjs0R0FBM0IsMkJBQTJCLHFPQ2R4QywwNU9BMktBOzJGRDdKYSwyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0UsNEJBQTRCO3VOQU01QixTQUFTO3NCQUFsQixNQUFNO2dCQUVFLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWNhZGVtaWNTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2FjYWRlbWljLXNlcnZpY2UvYWNhZGVtaWMuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlU2VydmljZSB9IGZyb20gJy4vLi4vLi4vLi4vY29yZS91dGlscy9iYXNlLXNlcnZpY2UvYmFzZS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbXBvbmVudCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uQ2hhbmdlcywgQ2hhbmdlRGV0ZWN0b3JSZWYsIE9uSW5pdCwgT25EZXN0cm95LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29kU2VsZk1hbmFnZWRTdGVwcywgbG9jYWxTdG9yYWdlVmFsdWVzVHdvIH0gZnJvbSAnLi4vLi4vbG9naWMvY29kLXNlbGYtbWFuYWdlZC1zdGVwcyc7XG5pbXBvcnQgeyBDb2RTZWxmTWFuYWdlZENvbnRyb2xzIH0gZnJvbSAnLi4vLi4vbG9naWMvY29kLXNlbGYtbWFuYWdlZC1jb250cm9scyc7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIFZhbGlkYXRvcnMsIEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBJd2Vla0RheXNScSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWxzL2FjYWRlbWljL2FjYWRlbWljLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jb2Qtc2VsZi1mb3JtLXN0ZXAtdHdvJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvZC1zZWxmLWZvcm0tc3RlcC10d28uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb2Qtc2VsZi1mb3JtLXN0ZXAtdHdvLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29kU2VsZkZvcm1TdGVwVHdvQ29tcG9uZW50IGV4dGVuZHMgQ29kU2VsZk1hbmFnZWRTdGVwcyBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0IHtcblxuICBAT3V0cHV0KCkgY29tcGxldGVkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgQElucHV0KCkgc2NvcmVQbGFjZW1lbnRUZXN0Pzphbnk7XG4gIEBJbnB1dCgpIGNvZFByZXZpb3VzPzphbnk7XG5cbiAgY29kU2VsZkZvcm1TdGVwVHdvITogRm9ybUdyb3VwO1xuICBjb250cm9scyA9IG5ldyBDb2RTZWxmTWFuYWdlZENvbnRyb2xzKCkuY29udHJvbHNbMV07XG4gIHN0YXJ0RGF0ZTEhOiBzdHJpbmc7XG4gIHZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbWVzc2FnZUluZm86c3RyaW5nID0gJ0J1c2NhIHVuIHBsYW4gZGUgYWN1ZXJkbyBhIHR1IGRpc3BvbmliaWxpZGFkLic7XG4gIHN0YXRlT3B0aW9uc01vZGFsaXR5OiBhbnlbXSA9IFtcbiAgICB7IGNvZGU6IDEsIGtleTogJ3ByJywgIG5hbWU6ICdQcmVzZW5jaWFsJ30sXG4gICAgeyBjb2RlOiAyLCBrZXk6ICd2aScsIG5hbWU6ICdWaXJ0dWFsJ30sXG4gIF07XG4gIHNjaGVkdWxlczogSXdlZWtEYXlzUnFbXSA9IFtcbiAgICB7Y29kZTogMSwgbmFtZTogJ01hw7FhbmEnLCBrZXk6ICdtYScgfSxcbiAgICB7Y29kZTogMiwgbmFtZTogJ1RhcmRlJywga2V5OiAndGEnIH0sXG4gICAge2NvZGU6IDMsIG5hbWU6ICdOb2NoZScsIGtleTogJ25vJyB9LFxuICBdO1xuICBPcHRpb25QbGFjZW1lbnRUZXN0OiBhbnlbXT1bXG4gICAge2NvZGU6IDEsIGtleTogJ3NpJywgIG5hbWU6ICdTaSd9LFxuICAgIHtjb2RlOiAyLCBrZXk6ICduaScsICBuYW1lOiAnTm8nfSxcbiAgXTtcbiAgc2VsZWN0ZWRTY2hlZHVsZXM6IEl3ZWVrRGF5c1JxW10gPSBbXTtcbiAgZGlzYWJsZXdlZWtkYXlzOiBib29sZWFuW10gPSBbXTtcbiAgc2VsZWN0ZWRNb2RhbGl0eTpJd2Vla0RheXNScVtdPVtdXG4gIHNlbGVjdGVkT3B0aW9uUGxhY2VtZW50VGVzdDpJd2Vla0RheXNScVtdPVtdXG4gIG1lc3NhZ2VBbGVydFNjaGVkdWxlcyA9IGZhbHNlO1xuICBtZXNzYWdlQWxlcnRNb2RhbGl0eT0gZmFsc2U7XG4gIG1lc3NhZ2VBbGVydFBsYWNlbWVudFRlc3Q9IGZhbHNlO1xuICBTZWFyY2hEYXRhID0gdHJ1ZTtcbiAgZGF0YUNvdXJzZTogYW55W10gPSBbXTtcbiAgaXNMb2FkaW5nPXRydWU7XG4gIGNvdXJzZVNlbGVjdD86YW55O1xuICB2aXNpYmxlR3JvdXBSZXZpZXcgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcbiAgICBwcml2YXRlIGJhc2VTZXJ2aWNlOiBCYXNlU2VydmljZSxcbiAgICBwcml2YXRlIGFjYWRlbWljU2VydmljZTogQWNhZGVtaWNTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5pbml0Rm9ybSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdGFydExvY2FsU3RvcmFnZVdvcmsoKTtcbiAgICAvLyB0aGlzLnZhbHVlc0luaXRpYWxTY2hlZHVsZSgpO1xuICAgIHRoaXMuaXNMb2FkaW5nPXRydWU7XG4gIH1cbiAgbmdPbkNoYW5nZXMoKXtcbiAgICAvLyB0aGlzLmluaXRGb3JtKCk7XG4gICAgLy8gdGhpcy5zdGFydExvY2FsU3RvcmFnZVdvcmsoKTtcbiAgfVxuXG4gIGluaXRGb3JtKCkge1xuXG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUd28gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIC8vIHNjaGVkdWxlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAvLyB0b19zdGFydDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgLy8gbW9kYWxpdHk6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBhY2FkZW1pY19wbGFuOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBjb3Vyc2VfdHlwZTpbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBhZ3JlZW1lbnRfYnlfY2F0ZWdvcnk6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdLF0sXG4gICAgICBlbmdsaXNoX2xldmVsOiBbe3ZhbHVlOiAnJywgZGlzYWJsZWQ6IHRydWV9LCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoNSksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDIwKV1dLFxuICAgICAgYXZhaWxpYmxlX2NvdXJzZXM6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIGNvdXJzZV9tb2RhbGl0eTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXSxcblxuICAgIH0pO1xuICB9XG4gIC8vIHZhbHVlc0luaXRpYWxTY2hlZHVsZSgpIHtcbiAgLy8gICBjb25zdCBzY2hlZHVsZVZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0NPRCBTRUxGIC0gc3RlcDIoc2NoZWR1bGUpJyk7XG4gIC8vICAgY29uc3QgY291cnNlTW9kYWxpdHkgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnQ09EIFNFTEYgLSBzdGVwMihtb2RhbGl0eSknKTtcblxuICAvLyAgIGlmIChzY2hlZHVsZVZhbHVlICYmIHNjaGVkdWxlVmFsdWUudHJpbSgpICE9ICcnKSB7XG4gIC8vICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5jb250cm9sc1snc2NoZWR1bGUnXS5zZXRWYWx1ZShuZXcgRGF0ZShzY2hlZHVsZVZhbHVlKSk7XG4gIC8vICAgfSBlbHNlIHtcbiAgLy8gICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVHdvLmNvbnRyb2xzWydzY2hlZHVsZSddLnNldFZhbHVlKG5ldyBEYXRlKCkpO1xuICAvLyAgIH1cblxuICAvLyAgIGlmIChjb3Vyc2VNb2RhbGl0eSAmJiBjb3Vyc2VNb2RhbGl0eS50cmltKCkgIT09ICcnKSB7XG4gIC8vICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5jb250cm9sc1snbW9kYWxpdHknXS5zZXRWYWx1ZShwYXJzZUludChjb3Vyc2VNb2RhbGl0eSkpO1xuICAvLyAgIH0gZWxzZSB7XG4gIC8vICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5jb250cm9sc1snbW9kYWxpdHknXS5zZXRWYWx1ZShudWxsKTtcbiAgLy8gICB9XG4gIC8vIH1cbiAgYmFjaygpIHtcbiAgICAvLyBNb3Zlcm5vcyBhbCBwYXNvIGFudGVyaW9yXG4gICAgdGhpcy5jb21wbGV0ZWQuZW1pdCgwKTtcbiAgfVxuICBzZW5kRm9ybSgpIHtcbiAgICAvLyB0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgLy8gaWYgKHRoaXMuY29kU2VsZkZvcm1TdGVwVHdvLmludmFsaWQpIHJldHVybjtcblxuICAgIC8vIE1vdmVybm9zIGFsIHBhc28gM1xuICAgIHRoaXMuY29tcGxldGVkLmVtaXQoMik7XG4gIH1cblxuICBzdGFydExvY2FsU3RvcmFnZVdvcmsoKSB7XG4gICAgdGhpcy5jb250cm9scy5mb3JFYWNoKGNvbnRyb2wgPT4ge1xuICAgICAgbGV0IGxvY2FsU3RvcmFnZVZhbHVlOiBsb2NhbFN0b3JhZ2VWYWx1ZXNUd28gPSB0aGlzLnJlYWRBbmRXcml0ZUxTKDIsIGNvbnRyb2wubmFtZSk7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5jb250cm9sc1tjb250cm9sLm5hbWVdLnNldFZhbHVlKGxvY2FsU3RvcmFnZVZhbHVlLnZhbHVlKTtcbiAgICAgIHRoaXMubGlzdGVuRm9ybUNoYW5nZXMoMiwgY29udHJvbC5uYW1lLCB0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5jb250cm9sc1tjb250cm9sLm5hbWVdLnZhbHVlQ2hhbmdlcyk7XG4gICAgfSk7XG4gIH1cblxuICBzZWFyY2hBdmFsYWlibGVDb3Vyc2UoKXtcbiAgICB0aGlzLmlzTG9hZGluZz10cnVlO1xuICAgIGNvbnN0IGFnZSA9IE51bWJlcih0aGlzLmxvY2FsU3RvcmFnZUNPRC5nZXRDb2RGb3JtRGF0YSgxLCAnYWdlJykpXG4gICAgY29uc3QgZ3JhZGUgPSBOdW1iZXIodGhpcy5sb2NhbFN0b3JhZ2VDT0QuZ2V0Q29kRm9ybURhdGEoMSwgJ2dyYWRlJykpXG4gICAgY29uc3QgYWdyZWVtZW50ID0gTnVtYmVyKHRoaXMubG9jYWxTdG9yYWdlQ09ELmdldENvZEZvcm1EYXRhKDEsICdhZ3JlZW1lbnRfYnlfY2F0ZWdvcnknKSlcbiAgICBjb25zdCB1c2VyQ29kZSA9IHRoaXMuYmFzZVNlcnZpY2UuZ2V0VXNlckNvZGUoKTtcblxuICAgIGNvbnNvbGUubG9nKHRoaXMuc2NvcmVQbGFjZW1lbnRUZXN0KTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLmNvZFByZXZpb3VzKTtcblxuICAgIGNvbnN0IHJlcXVlc3Q6IGFueSA9IHtcbiAgICAgIGNvZGVfdXNlcjogdXNlckNvZGUsXG4gICAgICBjb2RQcmV2aW91czogdGhpcy5jb2RQcmV2aW91cyxcbiAgICAgIHNjb3JlUGxhY2VtZW50VGVzdDogdGhpcy5zY29yZVBsYWNlbWVudFRlc3QsXG4gICAgICBhZ2U6IGFnZSxcbiAgICAgIGdyYWRlOiBncmFkZSxcbiAgICAgIGFncmVlbWVudDogYWdyZWVtZW50LFxuICAgICAgbW9kYWxpdHk6IHRoaXMuc2VsZWN0ZWRNb2RhbGl0eSxcbiAgICAgIHNjaGVkdWxlczogdGhpcy5zZWxlY3RlZFNjaGVkdWxlcyxcbiAgICAgIGRlY2l0aW9uUGxhY2VtZW50VGVzdDogdGhpcy5zZWxlY3RlZE9wdGlvblBsYWNlbWVudFRlc3QsXG4gICAgICB0b2tlbjogdGhpcy5iYXNlU2VydmljZS5nZXRVc2VyVG9rZW4oKVxuICAgICAgLy8gc2NoZWR1bGU6IHRoaXMuY29kU2VsZkZvcm1TdGVwVHdvLmdldCgnc2NoZWR1bGUnKT8udmFsdWUsXG4gICAgICAvLyBwb3NzaWJsZV9zdGFydDogdGhpcy5jb2RTZWxmRm9ybVN0ZXBUd28uZ2V0KCd0b19zdGFydCcpPy52YWx1ZSxcbiAgICAgIC8vIG1vZGFsaXR5OiB0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5nZXQoJ21vZGFsaXR5Jyk/LnZhbHVlXG4gICAgfVxuICAgIGNvbnNvbGUubG9nKHJlcXVlc3QpO1xuICAgIHRoaXMuYWNhZGVtaWNTZXJ2aWNlLm9idGFpblBsYW5zQ291cnNlQXZhbGFpYmxlRm9yUG9zaWJsZVN0dWRlbnRCeUFnZUFuZEdyYWRlKHJlcXVlc3QpLnN1YnNjcmliZSgocmVzcG9uc2UpPT57XG4gICAgICB0aGlzLlNlYXJjaERhdGEgPSBmYWxzZTtcbiAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKTtcbiAgICAgIHRoaXMuZGF0YUNvdXJzZSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy52aXNpYmxlR3JvdXBSZXZpZXcgPSB0cnVlXG4gICAgfSlcbiAgfVxuXG4gIG9uUmVqZWN0KCkge1xuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuY2xlYXIoJ2NvbmZpcm0nKTtcbiAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgfVxuXG4gIHNob3dDb25maXJtKCkge1xuICAgIGlmICghdGhpcy52aXNpYmxlKSB7XG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsga2V5OiAnY29uZmlybScsIHN0aWNreTogdHJ1ZSwgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogJ0NhbiB5b3Ugc2VuZCBtZSB0aGUgcmVwb3J0PycsIGxpZmU6IDEwMDAwIH0pO1xuICAgICAgICB0aGlzLnZpc2libGUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFNjaGVkdWxlcyhldmU6IEl3ZWVrRGF5c1JxW10pIHtcbiAgICB0aGlzLnNlbGVjdGVkU2NoZWR1bGVzID0gZXZlXG4gICAgY29uc29sZS5sb2codGhpcy5zZWxlY3RlZFNjaGVkdWxlcyk7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRTY2hlZHVsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLm1lc3NhZ2VBbGVydFNjaGVkdWxlcyA9IHRydWU7XG4gICAgfWVsc2V7XG4gICAgICB0aGlzLm1lc3NhZ2VBbGVydFNjaGVkdWxlcyA9IGZhbHNlXG4gICAgfVxuICB9XG5cbiAgc2VsZWN0TW9kYWxpdHkoZXZlOiBJd2Vla0RheXNScVtdKXtcbiAgICB0aGlzLnNlbGVjdGVkTW9kYWxpdHkgPSBldmVcbiAgICBjb25zb2xlLmxvZyh0aGlzLnNlbGVjdGVkTW9kYWxpdHkpO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkTW9kYWxpdHkubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLm1lc3NhZ2VBbGVydE1vZGFsaXR5ID0gdHJ1ZTtcbiAgICB9ZWxzZXtcbiAgICAgIHRoaXMubWVzc2FnZUFsZXJ0TW9kYWxpdHkgPSBmYWxzZVxuICAgIH1cbiAgfVxuICBzZWxlY3RPcGNpb25zUGxhY2VtZW50VGVzdChldmU6IEl3ZWVrRGF5c1JxW10pe1xuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25QbGFjZW1lbnRUZXN0ID0gZXZlXG4gICAgY29uc29sZS5sb2codGhpcy5zZWxlY3RlZE9wdGlvblBsYWNlbWVudFRlc3QpO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkT3B0aW9uUGxhY2VtZW50VGVzdC5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMubWVzc2FnZUFsZXJ0UGxhY2VtZW50VGVzdCA9IHRydWU7XG4gICAgfWVsc2V7XG4gICAgICB0aGlzLm1lc3NhZ2VBbGVydFBsYWNlbWVudFRlc3QgPSBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIGZpbHRlckFnYWluKCl7XG4gICAgdGhpcy5TZWFyY2hEYXRhID0gdHJ1ZVxuXG4gIH1cblxuICBjb3Vyc2VDb2RlKGNvZGVDb3Vyc2U6IGFueSl7XG4gICAgdGhpcy5jb3Vyc2VTZWxlY3QgPSBjb2RlQ291cnNlO1xuICAgIGNvbnNvbGUubG9nKHRoaXMuY291cnNlU2VsZWN0KTtcbiAgICB0aGlzLnZpc2libGVHcm91cFJldmlldyA9IGZhbHNlO1xuICAgIHRoaXMuU2VhcmNoRGF0YSA9IGZhbHNlO1xuICAgIHRoaXMuc2V0VmFsdWVzRm9ybSgpO1xuICB9XG5cbiAgc2V0VmFsdWVzRm9ybSgpe1xuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVHdvLmNvbnRyb2xzWydhY2FkZW1pY19wbGFuJ10uc2V0VmFsdWUodGhpcy5jb3Vyc2VTZWxlY3QuY291cnNlX3R5cGUuYWNhZGVtaWNfcGxhbi5jb2RlKTtcbiAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5jb250cm9sc1snY291cnNlX3R5cGUnXS5zZXRWYWx1ZSh0aGlzLmNvdXJzZVNlbGVjdC5jb3Vyc2VfdHlwZT8uY29kZSk7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUd28uY29udHJvbHNbJ2FncmVlbWVudF9ieV9jYXRlZ29yeSddLnNldFZhbHVlKHRoaXMuY291cnNlU2VsZWN0LmFncmVlbWVudD8uY29kZSk7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUd28uY29udHJvbHNbJ2VuZ2xpc2hfbGV2ZWwnXS5zZXRWYWx1ZSh0aGlzLmNvdXJzZVNlbGVjdC5lbmdsaXNoX2xldmVsPy5jb2RlKTtcbiAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5jb250cm9sc1snYXZhaWxpYmxlX2NvdXJzZXMnXS5zZXRWYWx1ZSh0aGlzLmNvdXJzZVNlbGVjdC5jb2RlKTtcbiAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5jb250cm9sc1snY291cnNlX21vZGFsaXR5J10uc2V0VmFsdWUodGhpcy5jb3Vyc2VTZWxlY3QuY291cnNlX21vZGFsaXR5LmNvZGUpO1xuICB9XG5cblxuICBvcGVuVGVzdEluTmV3VGFiKCk6IHZvaWQge1xuICAgIHdpbmRvdy5vcGVuKCdodHRwczovL3Rlc3QuaW5nbGVzcGFyYXRvZG9zLmVkdS5jby8nLCAnX2JsYW5rJyk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb250YWluZXItbWFpblwiPlxuICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZvcm1cIj5cbiAgICA8aDI+UGxhbmVzPC9oMj5cbiAgICAgIDxwLXRvYXN0IHBvc2l0aW9uPVwidG9wLWNlbnRlclwiIGtleT1cImNvbmZpcm1cIiAob25DbG9zZSk9XCJvblJlamVjdCgpXCIgW2Jhc2VaSW5kZXhdPVwiMTBcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1tZXNzYWdlIHBUZW1wbGF0ZT1cIm1lc3NhZ2VcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLXN0YXJ0XCIgc3R5bGU9XCJmbGV4OiAxXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9xYS5pcHRkZXYuY29tLmNvL2Fzc2V0cy9sb2dvcy9yZWFkaW5nLnBuZ1wiIHN0eWxlPVwid2lkdGg6IDY1cHg7XCIgc2hhcGU9XCJjaXJjbGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LTkwMFwiPkphY29iPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LW1lZGl1bSB0ZXh0LWxnIG15LTMgdGV4dC05MDBcIj57eyBtZXNzYWdlSW5mbyB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9wLXRvYXN0PlxuXG4gICAgPGkgY2xhc3M9XCJwaSBwaS1leGNsYW1hdGlvbi1jaXJjbGUgY3Vyc29yLXBvaW50ZXIgdy1hdXRvIG1iLTRcIiAoY2xpY2spPVwic2hvd0NvbmZpcm0oKVwiIHBUb29sdGlwPVwiTWFzIGluZm8uXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCI+PC9pPlxuICAgIDwhLS0gPGZvcm0gW2Zvcm1Hcm91cF09XCJjb2RTZWxmRm9ybVN0ZXBUd29cIj4gLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWJ1dHRvblwiICpuZ0lmPVwiIVNlYXJjaERhdGFcIj5cbiAgICAgICAgPGlwdC1idXR0b25cbiAgICAgICAgICBbbGFiZWxdPVwiJ0ZpbHRyYXInXCJcbiAgICAgICAgICAob25DbGljayk9XCJmaWx0ZXJBZ2FpbigpXCJcbiAgICAgICAgICBbcHJpbWFyeV09XCJ0cnVlXCI+XG4gICAgICAgIDwvaXB0LWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwiU2VhcmNoRGF0YVwiPlxuICAgICAgICA8cC1hY2NvcmRpb24gW211bHRpcGxlXT1cInRydWVcIiBbYWN0aXZlSW5kZXhdPVwiWzBdXCI+XG4gICAgICAgICAgPHAtYWNjb3JkaW9uVGFiIGhlYWRlcj1cIkpvcm5hZGFcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJEYXlcIj5cbiAgICAgICAgICAgICAgPCEtLSA8aDM+SG9yYXJpbzwvaDM+IC0tPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tCb3ggZmxleCBmbGV4LXdyYXAganVzdGlmeS1jb250ZW50LWJldHdlZW4gbS0zIGdhcC0zXCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZGF5VyBvZiBzY2hlZHVsZXM7IGluZGV4IGFzIGluZFwiIGNsYXNzPVwiZmllbGQtY2hlY2tib3hcIj5cbiAgICAgICAgICAgICAgICAgIDxwLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJncm91cDJcIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cImNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRheVdcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkU2NoZWR1bGVzXCJcbiAgICAgICAgICAgICAgICAgICAgW2lucHV0SWRdPVwiZGF5Vy5rZXlcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZXdlZWtkYXlzW2luZF1cIlxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxuICAgICAgICAgICAgICAgICAgICBjaGVja2JveEljb249XCJwaSBwaS1jaGVjay1jaXJjbGVcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWxlY3RTY2hlZHVsZXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICA+PC9wLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiZGF5Vy5rZXlcIj57eyBkYXlXLm5hbWUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJtZXNzYWdlQWxlcnRTY2hlZHVsZXNcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlBvciBmYXZvciBzZWxlY2Npb25hIHVuYSBvcGNpb248L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3AtYWNjb3JkaW9uVGFiPlxuICAgICAgICAgIDxwLWFjY29yZGlvblRhYiBoZWFkZXI9XCJNb2RhbGlkYWRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJEYXlcIj5cbiAgICAgICAgICAgICAgPCEtLSA8aDM+SG9yYXJpbzwvaDM+IC0tPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tCb3ggZmxleCBmbGV4LXdyYXAganVzdGlmeS1jb250ZW50LWJldHdlZW4gbS0zIGdhcC0zXCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZGF5VyBvZiBzdGF0ZU9wdGlvbnNNb2RhbGl0eTsgaW5kZXggYXMgaW5kXCIgY2xhc3M9XCJmaWVsZC1jaGVja2JveFwiPlxuICAgICAgICAgICAgICAgICAgPHAtY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cImdyb3VwMlwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPVwiY2F0ZWdvcnlcIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZGF5V1wiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRNb2RhbGl0eVwiXG4gICAgICAgICAgICAgICAgICAgIFtpbnB1dElkXT1cImRheVcua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGV3ZWVrZGF5c1tpbmRdXCJcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSB9XCJcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tib3hJY29uPVwicGkgcGktY2hlY2stY2lyY2xlXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VsZWN0TW9kYWxpdHkoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICA+PC9wLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiZGF5Vy5rZXlcIj57eyBkYXlXLm5hbWUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJtZXNzYWdlQWxlcnRNb2RhbGl0eVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+UG9yIGZhdm9yIHNlbGVjY2lvbmEgdW5hIG9wY2lvbjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvcC1hY2NvcmRpb25UYWI+XG4gICAgICAgICAgPHAtYWNjb3JkaW9uVGFiICpuZ0lmPVwic2NvcmVQbGFjZW1lbnRUZXN0ICE9IG51bGxcIiBoZWFkZXI9XCJQbGFjZW1lbnQgdGVzdFwiPlxuICAgICAgICAgICAgPHNwYW4+VGllbmVzIHVuIFBsYWNlbWVudCBUZXN0IHJlYWxpemFkby4gUHVlZGVzIGNvbWVuemFyIGNvbiBlbCBuaXZlbDwvc3Bhbj48aDM+e3sgc2NvcmVQbGFjZW1lbnRUZXN0Py5sZXZlbF9pbmdsaXNoX25leHQubmFtZSB9fTwvaDM+XG4gICAgICAgICAgICA8c3Bhbj5cIk5PIEFQTElDQSBQTEFDRU1FTlQgVEVTVCBQQVJBIFBMQU5FUyBURUNOSUNPU1wiPC9zcGFuPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lckRheSBtdC0zXCI+XG4gICAgICAgICAgICAgIDxoMz7Cv0Rlc2VhcyBpbmljaWFyIGVuIGVzdGUgbml2ZWwge3sgc2NvcmVQbGFjZW1lbnRUZXN0Py5sZXZlbF9pbmdsaXNoX25leHQubmFtZSB9fT88L2gzPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtbiBnYXAtM1wiPlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBPcHRpb25QbGFjZW1lbnRUZXN0OyBpbmRleCBhcyBpbmRcIiBjbGFzcz1cImZpZWxkLWNoZWNrYm94XCI+XG4gICAgICAgICAgICAgICAgICA8cC1yYWRpb0J1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dElkXT1cImNhdGVnb3J5LmtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiY2F0ZWdvcnlcIlxuICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRPcHRpb25QbGFjZW1lbnRUZXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZXdlZWtkYXlzW2luZF1cIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VsZWN0T3BjaW9uc1BsYWNlbWVudFRlc3QoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvcC1yYWRpb0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cImNhdGVnb3J5LmtleVwiIGNsYXNzPVwibWwtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IGNhdGVnb3J5Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvcC1hY2NvcmRpb25UYWI+XG4gICAgICAgICAgPHAtYWNjb3JkaW9uVGFiICpuZ0lmPVwic2NvcmVQbGFjZW1lbnRUZXN0ID09IG51bGxcIiBoZWFkZXI9XCJQcnVlYmEgZGlhZ27Ds3N0aWNvIFBsYWNlbWVudCBUZXN0XCI+XG4gICAgICAgICAgICA8c3Bhbj5QcmVzZW50YSB0b3RhbG1lbnRlIGdyYXRpcyBlc3RhIHBydWViYSBwYXJhIGNvbm9jZXIgdHUgbml2ZWwgZGUgaW5nbMOpcyB5IG51ZXN0cmFzIG9mZXJ0YXMgcGFyYSB0aS48L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyRGF5IG10LTNcIj5cbiAgICAgICAgICAgICAgPCEtLSA8aDM+wr9EZXNlYXMgaW5pY2lhciBlbiBlc3RlIG5pdmVsIHt7IHNjb3JlUGxhY2VtZW50VGVzdD8ubGV2ZWxfaW5nbGlzaF9uZXh0Lm5hbWUgfX0/PC9oMz4gLS0+XG4gICAgICAgICAgICAgIDxpcHQtYnV0dG9uXG4gICAgICAgICAgICAgIFtsYWJlbF09XCInUHJlc2VudGFyIFRlc3QnXCJcbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwib3BlblRlc3RJbk5ld1RhYigpXCJcbiAgICAgICAgICAgICAgW3ByaW1hcnldPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPC9pcHQtYnV0dG9uPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtbiBnYXAtM1wiPlxuXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9wLWFjY29yZGlvblRhYj5cblxuICAgICAgICA8L3AtYWNjb3JkaW9uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ub25lIGZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1lbmQgbS0yXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgcFRvb2x0aXA9XCJCdXNjYXIgUGxhbmVzXCJcbiAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImxlZnRcIlxuICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgUmlwcGxlXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGljb249XCJwaSBwaS1zZWFyY2hcIlxuICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLW91dGxpbmVkXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzZWxlY3RlZFNjaGVkdWxlcy5sZW5ndGggPT09IDAgfHwgc2VsZWN0ZWRNb2RhbGl0eS5sZW5ndGggPT09IDAgfHwgc2NvcmVQbGFjZW1lbnRUZXN0ICE9IG51bGwgJiYgc2VsZWN0ZWRPcHRpb25QbGFjZW1lbnRUZXN0Lmxlbmd0aCA9PT0gMCBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlYXJjaEF2YWxhaWJsZUNvdXJzZSgpXCJcbiAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICBcbiAgICAgIDxpcHQtY2FyZC1zZWxlY3QtY291cnNlLXNlbGYtY29kLW1hbmFnZWRcbiAgICAgICpuZ0lmPVwiY291cnNlU2VsZWN0ICE9IG51bGxcIlxuICAgICAgW2NvdXJzZVNlbGVjdF09XCJjb3Vyc2VTZWxlY3RcIj5cbiAgICAgIDwvaXB0LWNhcmQtc2VsZWN0LWNvdXJzZS1zZWxmLWNvZC1tYW5hZ2VkPlxuXG4gICAgICA8YXJ0aWNsZSAqbmdJZj1cInZpc2libGVHcm91cFJldmlld1wiIGNsYXNzPVwiY2FyZHMtY29udGFpbmVyXCI+XG5cbiAgICAgICAgPGlwdC1jYXJkLWNvdXJzZS1zZWxmLWNvZC1tYW5hZ2VkXG4gICAgICAgICAgW0NvdXJzZURhdGFdPVwiZGF0YUNvdXJzZVwiXG4gICAgICAgICAgKGNvZGVDb3Vyc2UpPVwiY291cnNlQ29kZSgkZXZlbnQpXCJcbiAgICAgICAgICBbaXNMb2FkaW5nXT1cImlzTG9hZGluZ1wiPlxuICAgICAgICA8L2lwdC1jYXJkLWNvdXJzZS1zZWxmLWNvZC1tYW5hZ2VkPlxuICAgICAgPC9hcnRpY2xlPlxuICAgIDwhLS0gPC9mb3JtPiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC0zIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgPCEtLSA8c3BhbiAqbmdJZj1cImNvZFNlbGZGb3JtU3RlcE9uZS5pbnZhbGlkICYmIGNvZFNlbGZGb3JtU3RlcE9uZS50b3VjaGVkXCIgY2xhc3M9XCJ0ZXh0LXJlZC01MDAgZm9udC1ib2xkIHRleHQtY2VudGVyIG10LTEgcHktMiBiZy1yZWQtMTAwIHctZnVsbCBib3JkZXItcm91bmQteGxcIj57eyBlcnJvck1lc3NhZ2UgfX08L3NwYW4+IC0tPlxuICAgICAgPGJ1dHRvblxuICAgICAgcEJ1dHRvblxuICAgICAgaWNvbj1cInBpIHBpLWFycm93LWxlZnRcIlxuICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAoY2xpY2spPVwiYmFjaygpXCJcbiAgICAgID48L2J1dHRvbj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgcEJ1dHRvblxuICAgICAgaWNvbj1cInBpIHBpLWFycm93LXJpZ2h0XCJcbiAgICAgIFtkaXNhYmxlZF09XCIhY29kU2VsZkZvcm1TdGVwVHdvLnZhbGlkXCJcbiAgICAgIChjbGljayk9XCJzZW5kRm9ybSgpXCJcbiAgICAgID48L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdj5cbiAgPHByZT57eyBjb2RTZWxmRm9ybVN0ZXBUd28udmFsdWUgfCBqc29uIH19PC9wcmU+XG4gIDxkaXY+XG4gICAgPHByZT57eyBjb2RTZWxmRm9ybVN0ZXBUd28udmFsaWQgfCBqc29uIH19PC9wcmU+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbiJdfQ==
|