iptdevs-design-system 3.1.692 → 3.1.694
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 -23
- package/esm2020/lib/cod-self-managed/cod-form-self-managed/cod-self-managed.component.mjs +1 -3
- package/esm2020/lib/cod-self-managed/steps/cod-form-step-four/cod-self-form-step-four.component.mjs +3 -10
- package/esm2020/lib/cod-self-managed/steps/cod-form-step-one/cod-self-form-step-one.component.mjs +1 -16
- package/esm2020/lib/cod-self-managed/steps/cod-form-step-three/cod-self-form-step-three.component.mjs +4 -26
- package/esm2020/lib/cod-self-managed/steps/cod-form-step-two/cod-self-form-step-two.component.mjs +2 -40
- package/esm2020/lib/components/molecules/card-select-course/card-select-course.component.mjs +3 -8
- package/fesm2015/iptdevs-design-system.mjs +8 -119
- package/fesm2015/iptdevs-design-system.mjs.map +1 -1
- package/fesm2020/iptdevs-design-system.mjs +8 -119
- package/fesm2020/iptdevs-design-system.mjs.map +1 -1
- package/lib/cod-self-managed/steps/cod-form-step-two/cod-self-form-step-two.component.d.ts +2 -3
- package/lib/components/molecules/card-select-course/card-select-course.component.d.ts +0 -1
- package/package.json +1 -1
|
@@ -72,7 +72,6 @@ export class CodSelfFormStepThreeComponent extends CodSelfManagedSteps {
|
|
|
72
72
|
this.codSelfFormStepThree.controls['fee_number'].setValue(null);
|
|
73
73
|
this.codSelfFormStepThree.controls['quota_price'].setValue(null);
|
|
74
74
|
this.codSelfFormStepThree.controls['paid_level'].setValue(null);
|
|
75
|
-
// this.codSelfFormStepThree.controls['payment_date'].setValue(null);
|
|
76
75
|
this.codSelfFormStepThree.controls['selectedRow'].setValue(null);
|
|
77
76
|
});
|
|
78
77
|
}
|
|
@@ -93,9 +92,7 @@ export class CodSelfFormStepThreeComponent extends CodSelfManagedSteps {
|
|
|
93
92
|
this.codSelfFormStepThree.controls['payment_date'].setValidators([Validators.required]);
|
|
94
93
|
this.codSelfFormStepThree.controls['quota_times'].setValidators([Validators.required]);
|
|
95
94
|
this.codSelfFormStepThree.controls['total_price'].setValidators([Validators.required]);
|
|
96
|
-
// Actualizar para que se tomen los cambios
|
|
97
95
|
this.updateValueAndValidity();
|
|
98
|
-
// Actualizar los controls globales
|
|
99
96
|
this.updateGlobalControls(change);
|
|
100
97
|
}
|
|
101
98
|
// de contado
|
|
@@ -105,9 +102,7 @@ export class CodSelfFormStepThreeComponent extends CodSelfManagedSteps {
|
|
|
105
102
|
this.codSelfFormStepThree.controls['payment_date'].setValidators([Validators.required]);
|
|
106
103
|
this.codSelfFormStepThree.controls['quota_times'].clearValidators();
|
|
107
104
|
this.codSelfFormStepThree.controls['total_price'].setValidators([Validators.required]);
|
|
108
|
-
// Actualizar para que se tomen los cambios
|
|
109
105
|
this.updateValueAndValidity();
|
|
110
|
-
// Actualizar los controls globales
|
|
111
106
|
this.updateGlobalControls(change);
|
|
112
107
|
}
|
|
113
108
|
});
|
|
@@ -144,9 +139,7 @@ export class CodSelfFormStepThreeComponent extends CodSelfManagedSteps {
|
|
|
144
139
|
course_modality: Number(this.localStorageCOD.getCodFormData(2, 'course_modality')),
|
|
145
140
|
payment_method: parseInt(paymentMethod)
|
|
146
141
|
};
|
|
147
|
-
console.log("lineal_81", request);
|
|
148
142
|
this.commercialService.ObtainCodPricesCodSelfManaged(request).subscribe((response) => {
|
|
149
|
-
console.log(response);
|
|
150
143
|
if (response.data != null) {
|
|
151
144
|
this.dataPrices = response.data;
|
|
152
145
|
this.feeResponse = false;
|
|
@@ -166,7 +159,6 @@ export class CodSelfFormStepThreeComponent extends CodSelfManagedSteps {
|
|
|
166
159
|
}
|
|
167
160
|
});
|
|
168
161
|
this.codSelfFormStepThree.controls['payment_method'].setValue(paymentMethod);
|
|
169
|
-
// this.getCodPricesByAgreement();
|
|
170
162
|
}
|
|
171
163
|
else {
|
|
172
164
|
this.codSelfFormStepThree.controls['payment_method'].setValue(null);
|
|
@@ -178,13 +170,9 @@ export class CodSelfFormStepThreeComponent extends CodSelfManagedSteps {
|
|
|
178
170
|
this.codSelfFormStepThree.controls['total_price'].setValue(null);
|
|
179
171
|
}
|
|
180
172
|
back() {
|
|
181
|
-
// Movernos al paso anterior
|
|
182
173
|
this.completed.emit(1);
|
|
183
174
|
}
|
|
184
175
|
sendForm() {
|
|
185
|
-
// this.codSelfFormStepTwo.markAllAsTouched();
|
|
186
|
-
// if (this.codSelfFormStepTwo.invalid) return;
|
|
187
|
-
// Movernos al paso 3
|
|
188
176
|
this.completed.emit(3);
|
|
189
177
|
}
|
|
190
178
|
showTable() {
|
|
@@ -213,32 +201,22 @@ export class CodSelfFormStepThreeComponent extends CodSelfManagedSteps {
|
|
|
213
201
|
const enrollmentValue = this.dataFinancingMaster[0][1];
|
|
214
202
|
const firstQuotaValue = this.dataFinancingMaster[1][1];
|
|
215
203
|
this.totalInitialPaymentSpan = parseFloat(enrollmentValue.replace(/[^\d.-]/g, '')) + parseFloat(firstQuotaValue.replace(/[^\d.-]/g, ''));
|
|
216
|
-
console.log('linea, 237', this.totalInitialPaymentSpan);
|
|
217
204
|
const enrollmentValueTwo = parseFloat(this.dataFinancingMaster[0][1].replace(/[^\d.-]/g, ''));
|
|
218
205
|
const firstQuotaValueTwo = parseFloat(this.dataFinancingMaster[1][1].replace(/[^\d.-]/g, ''));
|
|
219
206
|
this.totalInitialPayment = enrollmentValueTwo + firstQuotaValueTwo;
|
|
220
|
-
console.log('linea, 246', this.totalInitialPayment);
|
|
221
207
|
const totalInitialPaymentInteger = Math.round(this.totalInitialPayment);
|
|
222
208
|
const formattedTotalInitialPayment = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD', minimumFractionDigits: 0 }).format(totalInitialPaymentInteger);
|
|
223
|
-
console.log('linea, 246', formattedTotalInitialPayment);
|
|
224
209
|
const combinedRecord = [
|
|
225
210
|
this.dataFinancingMaster[0][0],
|
|
226
211
|
formattedTotalInitialPayment,
|
|
227
|
-
this.dataFinancingMaster[0][2]
|
|
212
|
+
this.dataFinancingMaster[0][2]
|
|
228
213
|
];
|
|
229
|
-
console.log('linea, 253', combinedRecord);
|
|
230
214
|
this.dataFinancing = [combinedRecord, ...this.dataFinancingMaster.slice(2)];
|
|
231
|
-
console.log('inea, 255', this.dataFinancing);
|
|
232
215
|
}
|
|
233
216
|
this.isFinancing = true;
|
|
234
217
|
this.financingData.emit(this.dataFinancingMaster);
|
|
235
218
|
this.isLoadingSelectLevels = false;
|
|
236
219
|
}
|
|
237
|
-
// calculateNewQuotes() {
|
|
238
|
-
// this.isFinancing = false;
|
|
239
|
-
// this.financingData.emit(null);
|
|
240
|
-
// this.showTable();
|
|
241
|
-
// }
|
|
242
220
|
selectLevels(dataPayment, rowIndex) {
|
|
243
221
|
rowIndex;
|
|
244
222
|
if (this.codSelfFormStepThree.get('payment_method')?.value == 1) {
|
|
@@ -273,13 +251,13 @@ export class CodSelfFormStepThreeComponent extends CodSelfManagedSteps {
|
|
|
273
251
|
}
|
|
274
252
|
}
|
|
275
253
|
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.CodSelfManagedControls }, { token: i6.CalculateQuotesService }], target: i0.ɵɵFactoryTarget.Component });
|
|
276
|
-
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 animate__animated animate__slideInRight ng-star-inserted\">\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\" (click)=\"showConfirm()\" pTooltip=\"Mas info.\" tooltipPosition=\"bottom\"></i>\n <div class=\"animate__animated animate__slideInRight ng-star-inserted\">\n <div class=\"container__body__select flex justify-content-center flex-wrap\">\n\n <form autocomplete=\"off\" [formGroup]=\"codSelfFormStepThree\" class=\"grid mt-2 flex flex-column align-items-center\">\n\n <div class=\"container_selects 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 Click en 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\"></th>\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 </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-data let-rowIndex=\"rowIndex\">\n <tr [class.selected-row]=\"selectedRow === rowIndex\" (click)=\"selectLevels(data, rowIndex)\">\n <td class=\"pt-0 pb-0 text-center\">\n <p-radioButton [value]=\"rowIndex\" formControlName=\"selectedRow\"></p-radioButton>\n </td>\n <td class=\"pt-1 pb-1\">{{ data.paid_level }} {{ data.paid_level == 1 ? \"Nivel\" : \"Niveles\"}}</td>\n <td class=\"pt-1 pb-1 text-center\">{{ data.fee_number }}</td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n </div>\n\n <div class=\"container_selects 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=\"container_selects 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=\"flex justify-content-center flex-wrap m-2\">\n </div>\n\n <!-- Tabla de financiaci\u00F3n -->\n <div class=\"col-12\" *ngIf=\"codSelfFormStepThree.controls['payment_method'].value === '1' && isFinancing\">\n <div class=\"flex gap-1 md:gap-4 xl:gap-8 m-1 p-2 border-round bg-blue-500 text-white\">\n <div class=\"container_icon flex mr-4 justify-content-center align-items-start mt-1\">\n <i class=\"pi pi-info-circle cursor-pointer w-auto mb-4\" pTooltip=\"Mas info.\" tooltipPosition=\"bottom\"></i>\n </div>\n <div class=\"flex flex-column container_info_span flex align-items-center justify-content-center\">\n <span><strong>NOTA:</strong> Deber\u00E1 pagar la matr\u00EDcula y la primera cuota <strong>(total: ${{ totalInitialPaymentSpan }})</strong> para completar el proceso de inscripci\u00F3n.</span><br>\n <span>Recuerda que las fechas cambian de acuerdo a la fecha que comienza el plan</span>\n </div>\n </div>\n\n <p-table\n *ngIf=\"!isLoadingSelectLevels\"\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 </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\">#</th>\n <th class=\"bg-blue-200 text-center font-medium pt-2 pb-2\">Valor</th>\n <th class=\"bg-blue-200 text-center font-medium pt-2 pb-2\">Fecha</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-data>\n <tr>\n <td class=\"p-0 text-center text-sm\">{{ data[0] }}</td>\n <td class=\"p-0 text-center text-sm\">{{ data[1] }}</td>\n <td class=\"p-0 text-center text-sm\">{{ data[2] }}</td>\n </tr>\n </ng-template>\n </p-table>\n <ipt-loader *ngIf=\"isLoadingSelectLevels\"></ipt-loader>\n </div>\n\n <!-- ---------------------- -->\n\n </form>\n </div>\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 [disabled]=\"!codSelfFormStepThree.valid\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n </div>\n</div>\n", styles: [".error-message{font-size:x-small;color:red}:host ::ng-deep .p-toast{width:20rem!important}.container-form{margin:5%;border-radius:6px;border:1px solid #2563eb;box-shadow:#3c40434d 0 1px 2px,#3c404326 0 2px 6px 2px;padding:1rem}:host ::ng-deep .p-datatable.p-datatable-hoverable-rows .p-datatable-tbody>tr:not(.p-highlight):hover{color:#1c77f7!important}.selected-row{background-color:#bfdbfe!important;color:#1c77f7!important}tr{cursor:pointer}td,.header-reports-advisers{font-family:Poppins,sans-serif}:host ::ng-deep .p-datatable .p-datatable-header{background:#f8f9fa;color:#f8f9fa;border:none;padding:1rem;font-weight:700;background-color:#1c77f7;border-radius:10px 10px 0 0}:host ::ng-deep .p-datatable{position:relative;border-radius:10px;border:1px solid #1c77f7}:host ::ng-deep .p-datatable>.p-datatable-wrapper{border-radius:0 0 10px 10px}.container_selects{width:16rem}.p-datatable .p-datatable-tbody>tr>td{padding:.1rem .5rem}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td{padding:0rem!important}\n"], dependencies: [{ kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.InputComponent, selector: "ipt-input", inputs: ["inputType", "placeHolder", "validateText", "withPipe", "list", "iconUrl", "control", "prefix", "thousands", "decimal", "disabledSel"], outputs: ["dateSelected"] }, { kind: "component", type: i9.LoaderComponent, selector: "ipt-loader", inputs: ["message", "isDialog"] }, { kind: "component", type: i10.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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { 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: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i11.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "fitContent", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i12.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i13.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: i14.RadioButton, selector: "p-radioButton", inputs: ["value", "formControlName", "name", "disabled", "label", "tabindex", "inputId", "ariaLabelledBy", "ariaLabel", "style", "styleClass", "labelStyleClass"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i15.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"] }] });
|
|
254
|
+
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\" (click)=\"showConfirm()\" pTooltip=\"Mas info.\" tooltipPosition=\"bottom\"></i>\n <div class=\"animate__animated animate__slideInRight ng-star-inserted\">\n <div class=\"container__body__select flex justify-content-center flex-wrap\">\n\n <form autocomplete=\"off\" [formGroup]=\"codSelfFormStepThree\" class=\"grid mt-2 flex flex-column align-items-center\">\n\n <div class=\"container_selects 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 Click en 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\"></th>\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 </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-data let-rowIndex=\"rowIndex\">\n <tr [class.selected-row]=\"selectedRow === rowIndex\" (click)=\"selectLevels(data, rowIndex)\">\n <td class=\"pt-0 pb-0 text-center\">\n <p-radioButton [value]=\"rowIndex\" formControlName=\"selectedRow\"></p-radioButton>\n </td>\n <td class=\"pt-1 pb-1\">{{ data.paid_level }} {{ data.paid_level == 1 ? \"Nivel\" : \"Niveles\"}}</td>\n <td class=\"pt-1 pb-1 text-center\">{{ data.fee_number }}</td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n </div>\n\n <div class=\"container_selects 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=\"container_selects 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=\"flex justify-content-center flex-wrap m-2\">\n </div>\n\n <!-- Tabla de financiaci\u00F3n -->\n <div class=\"col-12\" *ngIf=\"codSelfFormStepThree.controls['payment_method'].value === '1' && isFinancing\">\n <div class=\"flex gap-1 md:gap-4 xl:gap-8 m-1 p-2 border-round bg-blue-500 text-white\">\n <div class=\"container_icon flex mr-4 justify-content-center align-items-start mt-1\">\n <i class=\"pi pi-info-circle cursor-pointer w-auto mb-4\" pTooltip=\"Mas info.\" tooltipPosition=\"bottom\"></i>\n </div>\n <div class=\"flex flex-column container_info_span flex align-items-center justify-content-center\">\n <span><strong>NOTA:</strong> Deber\u00E1 pagar la matr\u00EDcula y la primera cuota <strong>(total: ${{ totalInitialPaymentSpan }})</strong> para completar el proceso de inscripci\u00F3n.</span><br>\n <span>Recuerda que las fechas cambian de acuerdo a la fecha que comienza el plan</span>\n </div>\n </div>\n\n <p-table\n *ngIf=\"!isLoadingSelectLevels\"\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 </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\">#</th>\n <th class=\"bg-blue-200 text-center font-medium pt-2 pb-2\">Valor</th>\n <th class=\"bg-blue-200 text-center font-medium pt-2 pb-2\">Fecha</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-data>\n <tr>\n <td class=\"p-0 text-center text-sm\">{{ data[0] }}</td>\n <td class=\"p-0 text-center text-sm\">{{ data[1] }}</td>\n <td class=\"p-0 text-center text-sm\">{{ data[2] }}</td>\n </tr>\n </ng-template>\n </p-table>\n <ipt-loader *ngIf=\"isLoadingSelectLevels\"></ipt-loader>\n </div>\n\n <!-- ---------------------- -->\n\n </form>\n </div>\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 [disabled]=\"!codSelfFormStepThree.valid\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n </div>\n</div>\n", styles: [".error-message{font-size:x-small;color:red}:host ::ng-deep .p-toast{width:20rem!important}.container-form{margin:5%;border-radius:6px;border:1px solid #2563eb;box-shadow:#3c40434d 0 1px 2px,#3c404326 0 2px 6px 2px;padding:1rem}:host ::ng-deep .p-datatable.p-datatable-hoverable-rows .p-datatable-tbody>tr:not(.p-highlight):hover{color:#1c77f7!important}.selected-row{background-color:#bfdbfe!important;color:#1c77f7!important}tr{cursor:pointer}td,.header-reports-advisers{font-family:Poppins,sans-serif}:host ::ng-deep .p-datatable .p-datatable-header{background:#f8f9fa;color:#f8f9fa;border:none;padding:1rem;font-weight:700;background-color:#1c77f7;border-radius:10px 10px 0 0}:host ::ng-deep .p-datatable{position:relative;border-radius:10px;border:1px solid #1c77f7}:host ::ng-deep .p-datatable>.p-datatable-wrapper{border-radius:0 0 10px 10px}.container_selects{width:16rem}.p-datatable .p-datatable-tbody>tr>td{padding:.1rem .5rem}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td{padding:0rem!important}\n"], dependencies: [{ kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.InputComponent, selector: "ipt-input", inputs: ["inputType", "placeHolder", "validateText", "withPipe", "list", "iconUrl", "control", "prefix", "thousands", "decimal", "disabledSel"], outputs: ["dateSelected"] }, { kind: "component", type: i9.LoaderComponent, selector: "ipt-loader", inputs: ["message", "isDialog"] }, { kind: "component", type: i10.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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { 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: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i11.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "fitContent", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i12.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i13.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: i14.RadioButton, selector: "p-radioButton", inputs: ["value", "formControlName", "name", "disabled", "label", "tabindex", "inputId", "ariaLabelledBy", "ariaLabel", "style", "styleClass", "labelStyleClass"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i15.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"] }] });
|
|
277
255
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CodSelfFormStepThreeComponent, decorators: [{
|
|
278
256
|
type: Component,
|
|
279
|
-
args: [{ selector: 'app-cod-self-form-step-three', template: "<div class=\"container-main
|
|
257
|
+
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\" (click)=\"showConfirm()\" pTooltip=\"Mas info.\" tooltipPosition=\"bottom\"></i>\n <div class=\"animate__animated animate__slideInRight ng-star-inserted\">\n <div class=\"container__body__select flex justify-content-center flex-wrap\">\n\n <form autocomplete=\"off\" [formGroup]=\"codSelfFormStepThree\" class=\"grid mt-2 flex flex-column align-items-center\">\n\n <div class=\"container_selects 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 Click en 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\"></th>\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 </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-data let-rowIndex=\"rowIndex\">\n <tr [class.selected-row]=\"selectedRow === rowIndex\" (click)=\"selectLevels(data, rowIndex)\">\n <td class=\"pt-0 pb-0 text-center\">\n <p-radioButton [value]=\"rowIndex\" formControlName=\"selectedRow\"></p-radioButton>\n </td>\n <td class=\"pt-1 pb-1\">{{ data.paid_level }} {{ data.paid_level == 1 ? \"Nivel\" : \"Niveles\"}}</td>\n <td class=\"pt-1 pb-1 text-center\">{{ data.fee_number }}</td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n </div>\n\n <div class=\"container_selects 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=\"container_selects 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=\"flex justify-content-center flex-wrap m-2\">\n </div>\n\n <!-- Tabla de financiaci\u00F3n -->\n <div class=\"col-12\" *ngIf=\"codSelfFormStepThree.controls['payment_method'].value === '1' && isFinancing\">\n <div class=\"flex gap-1 md:gap-4 xl:gap-8 m-1 p-2 border-round bg-blue-500 text-white\">\n <div class=\"container_icon flex mr-4 justify-content-center align-items-start mt-1\">\n <i class=\"pi pi-info-circle cursor-pointer w-auto mb-4\" pTooltip=\"Mas info.\" tooltipPosition=\"bottom\"></i>\n </div>\n <div class=\"flex flex-column container_info_span flex align-items-center justify-content-center\">\n <span><strong>NOTA:</strong> Deber\u00E1 pagar la matr\u00EDcula y la primera cuota <strong>(total: ${{ totalInitialPaymentSpan }})</strong> para completar el proceso de inscripci\u00F3n.</span><br>\n <span>Recuerda que las fechas cambian de acuerdo a la fecha que comienza el plan</span>\n </div>\n </div>\n\n <p-table\n *ngIf=\"!isLoadingSelectLevels\"\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 </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\">#</th>\n <th class=\"bg-blue-200 text-center font-medium pt-2 pb-2\">Valor</th>\n <th class=\"bg-blue-200 text-center font-medium pt-2 pb-2\">Fecha</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-data>\n <tr>\n <td class=\"p-0 text-center text-sm\">{{ data[0] }}</td>\n <td class=\"p-0 text-center text-sm\">{{ data[1] }}</td>\n <td class=\"p-0 text-center text-sm\">{{ data[2] }}</td>\n </tr>\n </ng-template>\n </p-table>\n <ipt-loader *ngIf=\"isLoadingSelectLevels\"></ipt-loader>\n </div>\n\n <!-- ---------------------- -->\n\n </form>\n </div>\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 [disabled]=\"!codSelfFormStepThree.valid\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n </div>\n</div>\n", styles: [".error-message{font-size:x-small;color:red}:host ::ng-deep .p-toast{width:20rem!important}.container-form{margin:5%;border-radius:6px;border:1px solid #2563eb;box-shadow:#3c40434d 0 1px 2px,#3c404326 0 2px 6px 2px;padding:1rem}:host ::ng-deep .p-datatable.p-datatable-hoverable-rows .p-datatable-tbody>tr:not(.p-highlight):hover{color:#1c77f7!important}.selected-row{background-color:#bfdbfe!important;color:#1c77f7!important}tr{cursor:pointer}td,.header-reports-advisers{font-family:Poppins,sans-serif}:host ::ng-deep .p-datatable .p-datatable-header{background:#f8f9fa;color:#f8f9fa;border:none;padding:1rem;font-weight:700;background-color:#1c77f7;border-radius:10px 10px 0 0}:host ::ng-deep .p-datatable{position:relative;border-radius:10px;border:1px solid #1c77f7}:host ::ng-deep .p-datatable>.p-datatable-wrapper{border-radius:0 0 10px 10px}.container_selects{width:16rem}.p-datatable .p-datatable-tbody>tr>td{padding:.1rem .5rem}:host ::ng-deep .p-datatable .p-datatable-tbody>tr>td{padding:0rem!important}\n"] }]
|
|
280
258
|
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.MessageService }, { type: i3.CommercialService }, { type: i4.BaseService }, { type: i5.CodSelfManagedControls }, { type: i6.CalculateQuotesService }]; }, propDecorators: { completed: [{
|
|
281
259
|
type: Output
|
|
282
260
|
}], financingData: [{
|
|
283
261
|
type: Output
|
|
284
262
|
}] } });
|
|
285
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLXNlbGYtZm9ybS1zdGVwLXRocmVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2Rlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb2Qtc2VsZi1tYW5hZ2VkL3N0ZXBzL2NvZC1mb3JtLXN0ZXAtdGhyZWUvY29kLXNlbGYtZm9ybS1zdGVwLXRocmVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2Rlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb2Qtc2VsZi1tYW5hZ2VkL3N0ZXBzL2NvZC1mb3JtLXN0ZXAtdGhyZWUvY29kLXNlbGYtZm9ybS1zdGVwLXRocmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQWEsVUFBVSxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEUsaUJBQWlCO0FBQ2pCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBS2pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBS3pFLE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPL0IsTUFBTSxPQUFPLDZCQUE4QixTQUFRLG1CQUFtQjtJQXlCcEUsWUFDVSxFQUFlLEVBQ2YsY0FBOEIsRUFDOUIsaUJBQW9DLEVBQ3BDLFdBQXdCLEVBQ3hCLGVBQXVDLEVBQ3ZDLHNCQUE4QztRQUN0RCxLQUFLLEVBQUUsQ0FBQztRQU5BLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixvQkFBZSxHQUFmLGVBQWUsQ0FBd0I7UUFDdkMsMkJB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RSxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDN0UsQ0FBQzs7MEhBelJVLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLGdLQ3JCMUMscTdOQW1KQTsyRkQ5SGEsNkJBQTZCO2tCQUx6QyxTQUFTOytCQUNFLDhCQUE4QjttUUFNOUIsU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIFZhbGlkYXRvcnMsIEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vL2ltcG9ydCBzZXJ2aWNlc1xuaW1wb3J0IHsgQ29kU2VsZk1hbmFnZWRDb250cm9scyB9IGZyb20gJy4vLi4vLi4vbG9naWMvY29kLXNlbGYtbWFuYWdlZC1jb250cm9scyc7XG5pbXBvcnQgeyBsb2NhbFN0b3JhZ2VWYWx1ZXNUd28gfSBmcm9tICcuLy4uLy4uL2xvZ2ljL2NvZC1zZWxmLW1hbmFnZWQtc3RlcHMnO1xuaW1wb3J0IHsgQ2FsY3VsYXRlUXVvdGVzUGFyYW1zLCBDYWxjdWxhdGVRdW90ZXNTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi8uLi9jb2QvbG9naWMvY2FsY3VsYXRlLXF1b3Rlcy5zZXJ2aWNlJztcbmltcG9ydCB7IEJhc2VTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi8uLi9jb3JlL3V0aWxzL2Jhc2Utc2VydmljZS9iYXNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSU9idGFpbkNvZFByaWNlc1JxIH0gZnJvbSAnLi8uLi8uLi8uLi9jb3JlL21vZGVscy9jb21tZXJjaWFsL2NvbW1lcmNpYWwubW9kZWwnO1xuaW1wb3J0IHsgQ29kU2VsZk1hbmFnZWRTdGVwcyB9IGZyb20gJy4uLy4uL2xvZ2ljL2NvZC1zZWxmLW1hbmFnZWQtc3RlcHMnO1xuaW1wb3J0IHsgQ29tbWVyY2lhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2NvbW1lcmNpYWwtc2VydmljZS9jb21lcmNpYWwuc2VydmljZSc7XG5cbi8vaW1wb3J0IFByaW1lIG5nIGFuZCBMaWJyYXJ5IEFsZXJ0XG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCBTd2FsIGZyb20gJ3N3ZWV0YWxlcnQyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNvZC1zZWxmLWZvcm0tc3RlcC10aHJlZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2Qtc2VsZi1mb3JtLXN0ZXAtdGhyZWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb2Qtc2VsZi1mb3JtLXN0ZXAtdGhyZWUuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDb2RTZWxmRm9ybVN0ZXBUaHJlZUNvbXBvbmVudCBleHRlbmRzIENvZFNlbGZNYW5hZ2VkU3RlcHMgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBPdXRwdXQoKSBjb21wbGV0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgQE91dHB1dCgpIGZpbmFuY2luZ0RhdGEgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBjb250cm9scyA9IG5ldyBDb2RTZWxmTWFuYWdlZENvbnRyb2xzKCkuY29udHJvbHNbMl07XG4gIG1lc3NhZ2VJbmZvOnN0cmluZyA9IFwiU2VsZWNjaW9uYSB1biBwbGFuIGRlIHBhZ29zXCI7XG4gIHZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY29kU2VsZkZvcm1TdGVwVGhyZWUhOiBGb3JtR3JvdXA7XG4gIHBheW1lbnRNZXRob2RzOiBhbnlbXSA9IFtcbiAgICB7IGNvZGU6ICcxJywgbmFtZTogJ0ZpbmFuY2lhZG8nIH0sXG4gICAgeyBjb2RlOiAnMicsIG5hbWU6ICdDb250YWRvJyB9LFxuICBdO1xuICBmZWVSZXNwb25zZTogYm9vbGVhbiA9IGZhbHNlO1xuICB0aGVyZUFyZVBsYW5zOiBib29sZWFuID0gZmFsc2U7XG4gIGRhdGFQcmljZXM6YW55O1xuICBpc0ZpbmFuY2luZzogYm9vbGVhbiA9IGZhbHNlO1xuICBkYXRhRmluYW5jaW5nTWFzdGVyOiBhbnlbXSA9IFtdO1xuICBkYXRhRmluYW5jaW5nOiBhbnlbXSA9IFtdO1xuICBzZWxlY3RlZFJvdzogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIGVycm9yTWVzc2FnZTogc3RyaW5nID0gJ0ZhbHRhbiBjYW1wb3MgcG9yIGxsZW5hci4nO1xuICB0b3RhbEluaXRpYWxQYXltZW50U3Bhbj86IG51bWJlcjtcbiAgaXNMb2FkaW5nU2VsZWN0TGV2ZWxzID0gZmFsc2U7XG4gIHRvdGFsSW5pdGlhbFBheW1lbnQ/OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb21tZXJjaWFsU2VydmljZTogQ29tbWVyY2lhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYXNlU2VydmljZTogQmFzZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb2RGb3JtQ29udHJvbHM6IENvZFNlbGZNYW5hZ2VkQ29udHJvbHMsXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVRdW90ZXNTZXJ2aWNlOiBDYWxjdWxhdGVRdW90ZXNTZXJ2aWNlKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmluaXRGb3JtKCk7XG4gIH1cblxuICBpbml0Rm9ybSgpIHtcbiAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBwcm9ncmFtX3ByaWNlOiBbeyB2YWx1ZTogJycsIGRpc2FibGVkOiB0cnVlIH0sIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBwYXltZW50X2RhdGU6IFsnJyAsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBwYXltZW50X21ldGhvZDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgcXVvdGFfdGltZXM6IFt7IHZhbHVlOiAnJywgZGlzYWJsZWQ6IHRydWUgfSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHRvdGFsX3ByaWNlOiBbeyB2YWx1ZTogJycsIGRpc2FibGVkOiB0cnVlIH0sIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBwYWlkX2xldmVsOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBxdW90YV9wcmljZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgZmVlX251bWJlcjogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgc2VsZWN0ZWRSb3c6IFtudWxsXSxcbiAgICB9KTtcbiAgICB0aGlzLmxpc3RlblBheW1lbnRNZXRob2RGaWVsZCgpO1xuICB9XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3RhcnRMb2NhbFN0b3JhZ2VXb3JrKCk7XG4gICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXTtcbiAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydwYXltZW50X2RhdGUnXS5zZXRWYWx1ZShjdXJyZW50RGF0ZSlcblxuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuZ2V0KCdwYXltZW50X21ldGhvZCcpPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3cgPSBudWxsO1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1snc2VsZWN0ZWRSb3cnXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ2ZlZV9udW1iZXInXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3F1b3RhX3ByaWNlJ10uc2V0VmFsdWUobnVsbCk7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydwYWlkX2xldmVsJ10uc2V0VmFsdWUobnVsbCk7XG4gICAgICAvLyB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydwYXltZW50X2RhdGUnXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3NlbGVjdGVkUm93J10uc2V0VmFsdWUobnVsbCk7XG4gICAgfSk7XG4gIH1cbiAgc3RhcnRMb2NhbFN0b3JhZ2VXb3JrKCkge1xuICAgIHRoaXMuY29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IHtcbiAgICAgIGxldCBsb2NhbFN0b3JhZ2VWYWx1ZTogbG9jYWxTdG9yYWdlVmFsdWVzVHdvID0gdGhpcy5yZWFkQW5kV3JpdGVMUygzLCBjb250cm9sLm5hbWUpO1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1tjb250cm9sLm5hbWVdLnNldFZhbHVlKGxvY2FsU3RvcmFnZVZhbHVlLnZhbHVlKTtcbiAgICAgIHRoaXMubGlzdGVuRm9ybUNoYW5nZXMoMywgY29udHJvbC5uYW1lLCB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzW2NvbnRyb2wubmFtZV0udmFsdWVDaGFuZ2VzKTtcbiAgICB9KTtcbiAgfVxuXG4gIGxpc3RlblBheW1lbnRNZXRob2RGaWVsZCgpIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5nZXQoJ3BheW1lbnRfbWV0aG9kJyk7XG4gICAgY29udHJvbD8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoY2hhbmdlKSA9PiB7XG4gICAgICAvLyBGaW5hbmNpYWRvXG4gICAgICBpZiAoY2hhbmdlID09PSAnMScpIHtcbiAgICAgICAgLy8gUG9uZXIgdmFsaWRhY2lvbmVzXG4gICAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3Byb2dyYW1fcHJpY2UnXS5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XG4gICAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3BheW1lbnRfZGF0ZSddLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcbiAgICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sncXVvdGFfdGltZXMnXS5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XG4gICAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3RvdGFsX3ByaWNlJ10uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xuXG4gICAgICAgIC8vIEFjdHVhbGl6YXIgcGFyYSBxdWUgc2UgdG9tZW4gbG9zIGNhbWJpb3NcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG5cbiAgICAgICAgLy8gQWN0dWFsaXphciBsb3MgY29udHJvbHMgZ2xvYmFsZXNcbiAgICAgICAgdGhpcy51cGRhdGVHbG9iYWxDb250cm9scyhjaGFuZ2UpXG4gICAgICB9XG5cbiAgICAgIC8vIGRlIGNvbnRhZG9cbiAgICAgIGlmIChjaGFuZ2UgPT09ICcyJykge1xuICAgICAgICAvLyBRdWl0YXIgbGFzIHZhbGlkYWNpb25lc1xuICAgICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydwcm9ncmFtX3ByaWNlJ10uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xuICAgICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydwYXltZW50X2RhdGUnXS5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XG4gICAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3F1b3RhX3RpbWVzJ10uY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3RvdGFsX3ByaWNlJ10uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xuXG4gICAgICAgIC8vIEFjdHVhbGl6YXIgcGFyYSBxdWUgc2UgdG9tZW4gbG9zIGNhbWJpb3NcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG5cbiAgICAgICAgLy8gQWN0dWFsaXphciBsb3MgY29udHJvbHMgZ2xvYmFsZXNcbiAgICAgICAgdGhpcy51cGRhdGVHbG9iYWxDb250cm9scyhjaGFuZ2UpXG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgdXBkYXRlR2xvYmFsQ29udHJvbHMoY2hhbmdlOiBzdHJpbmcpIHtcbiAgICBsZXQgY29udHJvbHMgPSB0aGlzLmNvbnRyb2xzLmZpbHRlcihjb250cm9sID0+IGNvbnRyb2wubmFtZSAhPT0gJ3BheW1lbnRfbWV0aG9kJyk7XG4gICAgY29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IHtcbiAgICAgIGlmIChjaGFuZ2UgPT09ICcxJykgdGhpcy5jb2RGb3JtQ29udHJvbHMuY2hhbmdlVmFsdWUoMywgY29udHJvbC5uYW1lLCB0cnVlKVxuICAgICAgaWYgKGNoYW5nZSA9PT0gJzInKSB7XG4gICAgICAgIGlmIChjb250cm9sLm5hbWUgPT09ICdxdW90YV90aW1lcycpIHRoaXMuY29kRm9ybUNvbnRyb2xzLmNoYW5nZVZhbHVlKDMsIGNvbnRyb2wubmFtZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIG9uUmVqZWN0KCkge1xuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuY2xlYXIoJ2NvbmZpcm0nKTtcbiAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgfVxuXG4gIHNob3dDb25maXJtKCkge1xuICAgIGlmICghdGhpcy52aXNpYmxlKSB7XG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsga2V5OiAnY29uZmlybScsIHN0aWNreTogdHJ1ZSwgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogJ0NhbiB5b3Ugc2VuZCBtZSB0aGUgcmVwb3J0PycsIGxpZmU6IDEwMDAwIH0pO1xuICAgICAgICB0aGlzLnZpc2libGUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFBheW1lbnRNZXRob2QocGF5bWVudE1ldGhvZDogYW55KSB7XG4gICAgdGhpcy5mZWVSZXNwb25zZSA9IHRydWU7XG4gICAgdGhpcy50aGVyZUFyZVBsYW5zID0gZmFsc2U7XG5cbiAgICBpZiAocGF5bWVudE1ldGhvZCAhPT0gJycpIHtcbiAgICAgIGNvbnN0IHJlcXVlc3Q6IElPYnRhaW5Db2RQcmljZXNScSA9IHtcbiAgICAgICAgdG9rZW46ICAgICAgICAgICAgdGhpcy5iYXNlU2VydmljZS5nZXRVc2VyVG9rZW4oKSxcbiAgICAgICAgY291cnNlX3R5cGU6ICAgICAgTnVtYmVyKHRoaXMubG9jYWxTdG9yYWdlQ09ELmdldENvZEZvcm1EYXRhKDIsICdjb3Vyc2VfdHlwZScpKSxcbiAgICAgICAgYWdyZWVtZW50OiAgICAgICAgTnVtYmVyKHRoaXMubG9jYWxTdG9yYWdlQ09ELmdldENvZEZvcm1EYXRhKDEsICdhZ3JlZW1lbnRfYnlfY2F0ZWdvcnknKSksXG4gICAgICAgIGNvdXJzZV9tb2RhbGl0eTogIE51bWJlcih0aGlzLmxvY2FsU3RvcmFnZUNPRC5nZXRDb2RGb3JtRGF0YSgyLCAnY291cnNlX21vZGFsaXR5JykpLFxuICAgICAgICBwYXltZW50X21ldGhvZDogICBwYXJzZUludChwYXltZW50TWV0aG9kKVxuICAgICAgfVxuICAgICAgY29uc29sZS5sb2coXCJsaW5lYWxfODFcIixyZXF1ZXN0KTtcbiAgICAgIHRoaXMuY29tbWVyY2lhbFNlcnZpY2UuT2J0YWluQ29kUHJpY2VzQ29kU2VsZk1hbmFnZWQocmVxdWVzdCkuc3Vic2NyaWJlKChyZXNwb25zZSk9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKTtcbiAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEgIT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuZGF0YVByaWNlcyA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgdGhpcy5mZWVSZXNwb25zZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMudGhlcmVBcmVQbGFucyA9IHRydWU7XG4gICAgICAgIH1lbHNlIHtcbiAgICAgICAgICB0aGlzLnRoZXJlQXJlUGxhbnMgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmZlZVJlc3BvbnNlID0gZmFsc2U7XG4gICAgICAgICAgU3dhbC5maXJlKHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnY2VudGVyJyxcbiAgICAgICAgICAgIGljb246ICd3YXJuaW5nJyxcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAnPHAgc3R5bGU9XCJmb250LWZhbWlseTogUG9wcGluc1wiXCI+T29wcy4uIG5vIGhheSBwbGFuZXMgZGUgcGFnb3MsIFxcbiBlbiBlbCBjdXJzbyBlbGVnaWRvLjwvcD4nLFxuICAgICAgICAgICAgc2hvd0NvbmZpcm1CdXR0b246IGZhbHNlLFxuICAgICAgICAgICAgdGltZXI6IDMwMDAsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5jbGVhcklucHV0UGF5bWVudCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3BheW1lbnRfbWV0aG9kJ10uc2V0VmFsdWUocGF5bWVudE1ldGhvZCk7XG4gICAgICAvLyB0aGlzLmdldENvZFByaWNlc0J5QWdyZWVtZW50KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3BheW1lbnRfbWV0aG9kJ10uc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJJbnB1dFBheW1lbnQoKXtcbiAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydwcm9ncmFtX3ByaWNlJ10uc2V0VmFsdWUobnVsbCk7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sncXVvdGFfdGltZXMnXS5zZXRWYWx1ZShudWxsKTtcbiAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWyd0b3RhbF9wcmljZSddLnNldFZhbHVlKG51bGwpO1xuICB9XG4gIGJhY2soKSB7XG4gICAgLy8gTW92ZXJub3MgYWwgcGFzbyBhbnRlcmlvclxuICAgIHRoaXMuY29tcGxldGVkLmVtaXQoMSk7XG4gIH1cblxuICBzZW5kRm9ybSgpIHtcbiAgICAvLyB0aGlzLmNvZFNlbGZGb3JtU3RlcFR3by5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgLy8gaWYgKHRoaXMuY29kU2VsZkZvcm1TdGVwVHdvLmludmFsaWQpIHJldHVybjtcblxuICAgIC8vIE1vdmVybm9zIGFsIHBhc28gM1xuICAgIHRoaXMuY29tcGxldGVkLmVtaXQoMyk7XG4gIH1cblxuICBzaG93VGFibGUoKSB7XG4gICAgdGhpcy5pc0xvYWRpbmdTZWxlY3RMZXZlbHMgPSB0cnVlO1xuICAgIHRoaXMuaXNGaW5hbmNpbmcgPSB0cnVlO1xuICAgIHRoaXMuZmluYW5jaW5nRGF0YS5lbWl0KG51bGwpO1xuICAgIGNvbnN0IHRvdGFsX3ByaWNlID0gdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sndG90YWxfcHJpY2UnXS52YWx1ZTtcbiAgICBpZiAoKHRvdGFsX3ByaWNlID09PSAnbnVsbCcpIHx8IHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuaW52YWxpZCkge1xuICAgICAgU3dhbC5maXJlKHtcbiAgICAgICAgdGl0bGU6ICdFcnJvciB0YWJsZScsXG4gICAgICAgIHRleHQ6ICdEZWJlcyBpbmdyZXNhciBlbCBtb250byB0b3RhbCBkZSBsYSBtYXRyw61jdWxhIHkgbGEgY3VvdGEgaW5pY2lhbCcsXG4gICAgICAgIGljb246ICdlcnJvcidcbiAgICAgIH0pXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ2FsY3VsYXIgY3VvdGFzXG4gICAgdGhpcy5kYXRhRmluYW5jaW5nID0gW107XG5cbiAgICBsZXQgcGFyYW1zOiBDYWxjdWxhdGVRdW90ZXNQYXJhbXMgPSB7XG4gICAgICBkYXRlOiBuZXcgRGF0ZSh0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydwYXltZW50X2RhdGUnXS52YWx1ZSksXG4gICAgICBxdW90YVZhbHVlczogTnVtYmVyKHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3F1b3RhX3ByaWNlJ10udmFsdWUpLFxuICAgICAgcXVvdGFUaW1lczogTnVtYmVyKHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ2ZlZV9udW1iZXInXS52YWx1ZSksXG4gICAgICB0b3RhbFByaWNlOiB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWyd0b3RhbF9wcmljZSddLnZhbHVlLFxuICAgIH1cblxuICAgIHRoaXMuZGF0YUZpbmFuY2luZ01hc3RlciA9IHRoaXMuY2FsY3VsYXRlUXVvdGVzU2VydmljZS5jYWxjdWxhdGVRdW90ZXMocGFyYW1zKTtcbiAgICBpZiAodGhpcy5kYXRhRmluYW5jaW5nTWFzdGVyLmxlbmd0aCA+IDEpIHtcblxuICAgICAgY29uc3QgZW5yb2xsbWVudFZhbHVlID0gdGhpcy5kYXRhRmluYW5jaW5nTWFzdGVyWzBdWzFdO1xuICAgICAgY29uc3QgZmlyc3RRdW90YVZhbHVlID0gdGhpcy5kYXRhRmluYW5jaW5nTWFzdGVyWzFdWzFdO1xuICAgICAgdGhpcy50b3RhbEluaXRpYWxQYXltZW50U3BhbiA9IHBhcnNlRmxvYXQoZW5yb2xsbWVudFZhbHVlLnJlcGxhY2UoL1teXFxkLi1dL2csICcnKSkgKyBwYXJzZUZsb2F0KGZpcnN0UXVvdGFWYWx1ZS5yZXBsYWNlKC9bXlxcZC4tXS9nLCAnJykpO1xuXG4gICAgICBjb25zb2xlLmxvZygnbGluZWEsIDIzNycsIHRoaXMudG90YWxJbml0aWFsUGF5bWVudFNwYW4pO1xuXG4gICAgICBjb25zdCBlbnJvbGxtZW50VmFsdWVUd28gPSBwYXJzZUZsb2F0KHRoaXMuZGF0YUZpbmFuY2luZ01hc3RlclswXVsxXS5yZXBsYWNlKC9bXlxcZC4tXS9nLCAnJykpO1xuICAgICAgY29uc3QgZmlyc3RRdW90YVZhbHVlVHdvID0gcGFyc2VGbG9hdCh0aGlzLmRhdGFGaW5hbmNpbmdNYXN0ZXJbMV1bMV0ucmVwbGFjZSgvW15cXGQuLV0vZywgJycpKTtcbiAgICAgIHRoaXMudG90YWxJbml0aWFsUGF5bWVudCA9IGVucm9sbG1lbnRWYWx1ZVR3byArIGZpcnN0UXVvdGFWYWx1ZVR3bztcblxuICAgICAgY29uc29sZS5sb2coJ2xpbmVhLCAyNDYnLCB0aGlzLnRvdGFsSW5pdGlhbFBheW1lbnQpO1xuXG4gICAgICBjb25zdCB0b3RhbEluaXRpYWxQYXltZW50SW50ZWdlciA9IE1hdGgucm91bmQodGhpcy50b3RhbEluaXRpYWxQYXltZW50KTtcblxuICAgICAgY29uc3QgZm9ybWF0dGVkVG90YWxJbml0aWFsUGF5bWVudCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgnZW4tVVMnLCB7IHN0eWxlOiAnY3VycmVuY3knLCBjdXJyZW5jeTogJ1VTRCcsbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwIH0pLmZvcm1hdCh0b3RhbEluaXRpYWxQYXltZW50SW50ZWdlcik7XG4gICAgICBjb25zb2xlLmxvZygnbGluZWEsIDI0NicsIGZvcm1hdHRlZFRvdGFsSW5pdGlhbFBheW1lbnQpO1xuXG4gICAgICBjb25zdCBjb21iaW5lZFJlY29yZCA9IFtcbiAgICAgICAgdGhpcy5kYXRhRmluYW5jaW5nTWFzdGVyWzBdWzBdLCAvLyBNYW50ZW5lciBlbCDDrW5kaWNlIGRlbCBwcmltZXIgcmVnaXN0cm9cbiAgICAgICAgZm9ybWF0dGVkVG90YWxJbml0aWFsUGF5bWVudCwgLy8gU3VtYXIgbG9zIHZhbG9yZXNcbiAgICAgICAgdGhpcy5kYXRhRmluYW5jaW5nTWFzdGVyWzBdWzJdIC8vIE1hbnRlbmVyIGxhIGZlY2hhIGRlbCBwcmltZXIgcmVnaXN0cm9cbiAgICAgIF07XG4gICAgICBjb25zb2xlLmxvZygnbGluZWEsIDI1MycsIGNvbWJpbmVkUmVjb3JkKTtcbiAgICAgIHRoaXMuZGF0YUZpbmFuY2luZyA9IFtjb21iaW5lZFJlY29yZCwgLi4udGhpcy5kYXRhRmluYW5jaW5nTWFzdGVyLnNsaWNlKDIpXTtcbiAgICAgIGNvbnNvbGUubG9nKCdpbmVhLCAyNTUnLCB0aGlzLmRhdGFGaW5hbmNpbmcpO1xuICAgIH1cbiAgICB0aGlzLmlzRmluYW5jaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmZpbmFuY2luZ0RhdGEuZW1pdCh0aGlzLmRhdGFGaW5hbmNpbmdNYXN0ZXIpO1xuICAgIHRoaXMuaXNMb2FkaW5nU2VsZWN0TGV2ZWxzID0gZmFsc2U7XG4gIH1cblxuICAvLyBjYWxjdWxhdGVOZXdRdW90ZXMoKSB7XG4gIC8vICAgdGhpcy5pc0ZpbmFuY2luZyA9IGZhbHNlO1xuICAvLyAgIHRoaXMuZmluYW5jaW5nRGF0YS5lbWl0KG51bGwpO1xuICAvLyAgIHRoaXMuc2hvd1RhYmxlKCk7XG4gIC8vIH1cblxuICBzZWxlY3RMZXZlbHMoZGF0YVBheW1lbnQ6IGFueSwgcm93SW5kZXg6IG51bWJlcil7XG4gICAgcm93SW5kZXhcbiAgICBpZiAodGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5nZXQoJ3BheW1lbnRfbWV0aG9kJyk/LnZhbHVlID09IDEpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3cgPSByb3dJbmRleDtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3NlbGVjdGVkUm93J10uc2V0VmFsdWUocm93SW5kZXgpO1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sncXVvdGFfdGltZXMnXS5zZXRWYWx1ZShkYXRhUGF5bWVudC5jb2RlKTtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3RvdGFsX3ByaWNlJ10uc2V0VmFsdWUoZGF0YVBheW1lbnQuZW5yb2xsbWVudCk7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydwcm9ncmFtX3ByaWNlJ10uc2V0VmFsdWUoZGF0YVBheW1lbnQuZmluYW5jZWRfcHJpY2UpO1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sncGFpZF9sZXZlbCddLnNldFZhbHVlKGRhdGFQYXltZW50LnBhaWRfbGV2ZWwgLSAxKTtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ2ZlZV9udW1iZXInXS5zZXRWYWx1ZShkYXRhUGF5bWVudC5mZWVfbnVtYmVyKTtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3F1b3RhX3ByaWNlJ10uc2V0VmFsdWUoZGF0YVBheW1lbnQucXVvdGFfcHJpY2UpO1xuICAgICAgdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICB0aGlzLnNob3dUYWJsZSgpO1xuICAgIH0gZWxzZSBpZih0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmdldCgncGF5bWVudF9tZXRob2QnKT8udmFsdWUgPT0gMil7XG4gICAgICB0aGlzLnNlbGVjdGVkUm93ID0gcm93SW5kZXg7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydzZWxlY3RlZFJvdyddLnNldFZhbHVlKHJvd0luZGV4KTtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3F1b3RhX3RpbWVzJ10uc2V0VmFsdWUoZGF0YVBheW1lbnQuY29kZSk7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWyd0b3RhbF9wcmljZSddLnNldFZhbHVlKGRhdGFQYXltZW50LmVucm9sbG1lbnQpO1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sncHJvZ3JhbV9wcmljZSddLnNldFZhbHVlKGRhdGFQYXltZW50Lm5vcm1hbF9wcmljZSk7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydwYWlkX2xldmVsJ10uc2V0VmFsdWUoZGF0YVBheW1lbnQucGFpZF9sZXZlbCAtIDEpO1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1snZmVlX251bWJlciddLnNldFZhbHVlKGRhdGFQYXltZW50LmZlZV9udW1iZXIpO1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sncXVvdGFfcHJpY2UnXS5zZXRWYWx1ZShkYXRhUGF5bWVudC5xdW90YV9wcmljZSk7XG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCkge1xuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3Byb2dyYW1fcHJpY2UnXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sncGF5bWVudF9kYXRlJ10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3F1b3RhX3RpbWVzJ10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3RvdGFsX3ByaWNlJ10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb250YWluZXItbWFpbiBhbmltYXRlX19hbmltYXRlZCBhbmltYXRlX19zbGlkZUluUmlnaHQgbmctc3Rhci1pbnNlcnRlZFwiPlxuICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZvcm1cIj5cbiAgICA8aDI+UGFnb3M8L2gyPlxuICAgIDxwLXRvYXN0IHBvc2l0aW9uPVwidG9wLWNlbnRlclwiIGtleT1cImNvbmZpcm1cIiAob25DbG9zZSk9XCJvblJlamVjdCgpXCIgW2Jhc2VaSW5kZXhdPVwiMTBcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtbWVzc2FnZSBwVGVtcGxhdGU9XCJtZXNzYWdlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtc3RhcnRcIiBzdHlsZT1cImZsZXg6IDFcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vcWEuaXB0ZGV2LmNvbS5jby9hc3NldHMvbG9nb3MvcmVhZGluZy5wbmdcIiBzdHlsZT1cIndpZHRoOiA2NXB4O1wiIHNoYXBlPVwiY2lyY2xlXCIgLz5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtOTAwXCI+SmFjb2I8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1tZWRpdW0gdGV4dC1sZyBteS0zIHRleHQtOTAwXCI+e3sgbWVzc2FnZUluZm8gfX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9wLXRvYXN0PlxuICAgIDxpIGNsYXNzPVwicGkgcGktZXhjbGFtYXRpb24tY2lyY2xlIGN1cnNvci1wb2ludGVyIHctYXV0b1wiIChjbGljayk9XCJzaG93Q29uZmlybSgpXCIgcFRvb2x0aXA9XCJNYXMgaW5mby5cIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIj48L2k+XG4gICAgPGRpdiBjbGFzcz1cImFuaW1hdGVfX2FuaW1hdGVkIGFuaW1hdGVfX3NsaWRlSW5SaWdodCBuZy1zdGFyLWluc2VydGVkXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyX19ib2R5X19zZWxlY3QgZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGZsZXgtd3JhcFwiPlxuXG4gICAgICAgIDxmb3JtIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFtmb3JtR3JvdXBdPVwiY29kU2VsZkZvcm1TdGVwVGhyZWVcIiBjbGFzcz1cImdyaWQgbXQtMiBmbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lcl9zZWxlY3RzIGNvbC0xMlwiPlxuICAgICAgICAgICAgPGlwdC1zZWxlY3RcbiAgICAgICAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJjb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sncGF5bWVudF9tZXRob2QnXS52YWx1ZVwiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cImNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydwYXltZW50X21ldGhvZCddXCJcbiAgICAgICAgICAgICAgKGV2ZW50U2VsZWN0KT1cInNlbGVjdFBheW1lbnRNZXRob2QoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtkYXRhXT1cInBheW1lbnRNZXRob2RzXCJcbiAgICAgICAgICAgICAgW2RlZmF1bHRUZXh0XT1cIidNw6l0b2RvIGRlIHBhZ28nXCJcbiAgICAgICAgICAgID48L2lwdC1zZWxlY3Q+XG4gICAgICAgICAgICA8aXB0LWxvYWRlciAqbmdJZj1cImZlZVJlc3BvbnNlXCI+PC9pcHQtbG9hZGVyPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCIgKm5nSWY9XCJ0aGVyZUFyZVBsYW5zXCI+XG4gICAgICAgICAgICAgIDxwLXRhYmxlXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGFQcmljZXNcIlxuICAgICAgICAgICAgICAgIFt0YWJsZVN0eWxlXT1cInsnbWluLXdpZHRoJzogJzEwMCUnfVwiXG4gICAgICAgICAgICAgICAgW3Jvd0hvdmVyXT1cInRydWVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNhcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICBDbGljayBlbiBuaXZlbGVzIGEgY2FuY2VsYXJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJiZy1ibHVlLTIwMCB0ZXh0LWNlbnRlciBmb250LW1lZGl1bSBwdC0yIHBiLTJcIj48L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJiZy1ibHVlLTIwMCB0ZXh0LWNlbnRlciBmb250LW1lZGl1bSBwdC0yIHBiLTJcIj5DYW5jZWxhcjwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImJnLWJsdWUtMjAwIHRleHQtY2VudGVyIGZvbnQtbWVkaXVtIHB0LTIgcGItMlwiPkN1b3RhczwvdGg+XG4gICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIiBsZXQtZGF0YSBsZXQtcm93SW5kZXg9XCJyb3dJbmRleFwiPlxuICAgICAgICAgICAgICAgICAgPHRyIFtjbGFzcy5zZWxlY3RlZC1yb3ddPVwic2VsZWN0ZWRSb3cgPT09IHJvd0luZGV4XCIgKGNsaWNrKT1cInNlbGVjdExldmVscyhkYXRhLCByb3dJbmRleClcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicHQtMCBwYi0wIHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHAtcmFkaW9CdXR0b24gW3ZhbHVlXT1cInJvd0luZGV4XCIgZm9ybUNvbnRyb2xOYW1lPVwic2VsZWN0ZWRSb3dcIj48L3AtcmFkaW9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInB0LTEgcGItMVwiPnt7IGRhdGEucGFpZF9sZXZlbCB9fSB7eyBkYXRhLnBhaWRfbGV2ZWwgPT0gMSA/IFwiTml2ZWxcIiA6IFwiTml2ZWxlc1wifX08L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJwdC0xIHBiLTEgdGV4dC1jZW50ZXJcIj57eyBkYXRhLmZlZV9udW1iZXIgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8L3AtdGFibGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJfc2VsZWN0cyBjb2wtMTJcIj5cbiAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ01vbnRvIHRvdGFsIGRlIGxhIG1hdHLDrWN1bGEnXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3RvdGFsX3ByaWNlJ11cIlxuICAgICAgICAgICAgICBbd2l0aFBpcGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyX3NlbGVjdHMgY29sLTEyXCI+XG4gICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgIFt3aXRoUGlwZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJjb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sncHJvZ3JhbV9wcmljZSddXCJcbiAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidWYWxvciB0b3RhbCBkZWwgcHJvZ3JhbWEnXCJcbiAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC13cmFwIG0tMlwiPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBUYWJsYSBkZSBmaW5hbmNpYWNpw7NuIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIiAqbmdJZj1cImNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydwYXltZW50X21ldGhvZCddLnZhbHVlID09PSAnMScgJiYgaXNGaW5hbmNpbmdcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0xIG1kOmdhcC00IHhsOmdhcC04IG0tMSBwLTIgYm9yZGVyLXJvdW5kIGJnLWJsdWUtNTAwIHRleHQtd2hpdGVcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lcl9pY29uIGZsZXggbXItNCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLXN0YXJ0IG10LTFcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWluZm8tY2lyY2xlIGN1cnNvci1wb2ludGVyIHctYXV0byBtYi00XCIgcFRvb2x0aXA9XCJNYXMgaW5mby5cIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIj48L2k+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtbiBjb250YWluZXJfaW5mb19zcGFuIGZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj48c3Ryb25nPk5PVEE6PC9zdHJvbmc+IERlYmVyw6EgcGFnYXIgbGEgbWF0csOtY3VsYSB5IGxhIHByaW1lcmEgY3VvdGEgPHN0cm9uZz4odG90YWw6ICR7eyB0b3RhbEluaXRpYWxQYXltZW50U3BhbiB9fSk8L3N0cm9uZz4gcGFyYSBjb21wbGV0YXIgZWwgcHJvY2VzbyBkZSBpbnNjcmlwY2nDs24uPC9zcGFuPjxicj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5SZWN1ZXJkYSBxdWUgbGFzIGZlY2hhcyBjYW1iaWFuIGRlIGFjdWVyZG8gYSBsYSBmZWNoYSBxdWUgY29taWVuemEgZWwgcGxhbjwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPHAtdGFibGVcbiAgICAgICAgICAgICAgKm5nSWY9XCIhaXNMb2FkaW5nU2VsZWN0TGV2ZWxzXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGFGaW5hbmNpbmdcIlxuICAgICAgICAgICAgICBbdGFibGVTdHlsZV09XCJ7J21pbi13aWR0aCc6ICcxMDAlJ31cIlxuICAgICAgICAgICAgICBbcm93SG92ZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjYXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICBDw6FsY3VsbyBkZSBjdW90YXNcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImJnLWJsdWUtMjAwIHRleHQtY2VudGVyIGZvbnQtbWVkaXVtIHB0LTIgcGItMlwiPiM8L3RoPlxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiYmctYmx1ZS0yMDAgdGV4dC1jZW50ZXIgZm9udC1tZWRpdW0gcHQtMiBwYi0yXCI+VmFsb3I8L3RoPlxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiYmctYmx1ZS0yMDAgdGV4dC1jZW50ZXIgZm9udC1tZWRpdW0gcHQtMiBwYi0yXCI+RmVjaGE8L3RoPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LWRhdGE+XG4gICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicC0wIHRleHQtY2VudGVyIHRleHQtc21cIj57eyBkYXRhWzBdIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInAtMCB0ZXh0LWNlbnRlciB0ZXh0LXNtXCI+e3sgZGF0YVsxXSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJwLTAgdGV4dC1jZW50ZXIgdGV4dC1zbVwiPnt7IGRhdGFbMl0gfX08L3RkPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3AtdGFibGU+XG4gICAgICAgICAgICA8aXB0LWxvYWRlciAqbmdJZj1cImlzTG9hZGluZ1NlbGVjdExldmVsc1wiPjwvaXB0LWxvYWRlcj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cblxuICAgICAgICA8L2Zvcm0+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtMyBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgICAgPCEtLSA8c3BhbiAqbmdJZj1cImNvZFNlbGZGb3JtU3RlcE9uZS5pbnZhbGlkICYmIGNvZFNlbGZGb3JtU3RlcE9uZS50b3VjaGVkXCIgY2xhc3M9XCJ0ZXh0LXJlZC01MDAgZm9udC1ib2xkIHRleHQtY2VudGVyIG10LTEgcHktMiBiZy1yZWQtMTAwIHctZnVsbCBib3JkZXItcm91bmQteGxcIj57eyBlcnJvck1lc3NhZ2UgfX08L3NwYW4+IC0tPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgIHBCdXR0b25cbiAgICAgICAgaWNvbj1cInBpIHBpLWFycm93LWxlZnRcIlxuICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgKGNsaWNrKT1cImJhY2soKVwiXG4gICAgICAgID48L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgIHBCdXR0b25cbiAgICAgICAgaWNvbj1cInBpIHBpLWFycm93LXJpZ2h0XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFjb2RTZWxmRm9ybVN0ZXBUaHJlZS52YWxpZFwiXG4gICAgICAgIChjbGljayk9XCJzZW5kRm9ybSgpXCJcbiAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
263
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLXNlbGYtZm9ybS1zdGVwLXRocmVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2Rlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb2Qtc2VsZi1tYW5hZ2VkL3N0ZXBzL2NvZC1mb3JtLXN0ZXAtdGhyZWUvY29kLXNlbGYtZm9ybS1zdGVwLXRocmVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2Rlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb2Qtc2VsZi1tYW5hZ2VkL3N0ZXBzL2NvZC1mb3JtLXN0ZXAtdGhyZWUvY29kLXNlbGYtZm9ybS1zdGVwLXRocmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQWEsVUFBVSxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEUsaUJBQWlCO0FBQ2pCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBS2pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBS3pFLE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPL0IsTUFBTSxPQUFPLDZCQUE4QixTQUFRLG1CQUFtQjtJQXlCcEUsWUFDVSxFQUFlLEVBQ2YsY0FBOEIsRUFDOUIsaUJBQW9DLEVBQ3BDLFdBQXdCLEVBQ3hCLGVBQXVDLEVBQ3ZDLHNCQUE4QztRQUN0RCxLQUFLLEVBQUUsQ0FBQztRQU5BLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixvQkFBZSxHQUFmLGVBQWUsQ0FBd0I7UUFDdkMsMkJB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QVEsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDcEYsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBRUQsc0JBQXNCO1FBQ3BCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM3RSxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDNUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQzNFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUM3RSxDQUFDOzswSEE5UFUsNkJBQTZCOzhHQUE3Qiw2QkFBNkIsZ0tDckIxQyw0M05BbUpBOzJGRDlIYSw2QkFBNkI7a0JBTHpDLFNBQVM7K0JBQ0UsOEJBQThCO21RQU05QixTQUFTO3NCQUFsQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgVmFsaWRhdG9ycywgRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbi8vaW1wb3J0IHNlcnZpY2VzXG5pbXBvcnQgeyBDb2RTZWxmTWFuYWdlZENvbnRyb2xzIH0gZnJvbSAnLi8uLi8uLi9sb2dpYy9jb2Qtc2VsZi1tYW5hZ2VkLWNvbnRyb2xzJztcbmltcG9ydCB7IGxvY2FsU3RvcmFnZVZhbHVlc1R3byB9IGZyb20gJy4vLi4vLi4vbG9naWMvY29kLXNlbGYtbWFuYWdlZC1zdGVwcyc7XG5pbXBvcnQgeyBDYWxjdWxhdGVRdW90ZXNQYXJhbXMsIENhbGN1bGF0ZVF1b3Rlc1NlcnZpY2UgfSBmcm9tICcuLy4uLy4uLy4uL2NvZC9sb2dpYy9jYWxjdWxhdGUtcXVvdGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFzZVNlcnZpY2UgfSBmcm9tICcuLy4uLy4uLy4uL2NvcmUvdXRpbHMvYmFzZS1zZXJ2aWNlL2Jhc2Uuc2VydmljZSc7XG5pbXBvcnQgeyBJT2J0YWluQ29kUHJpY2VzUnEgfSBmcm9tICcuLy4uLy4uLy4uL2NvcmUvbW9kZWxzL2NvbW1lcmNpYWwvY29tbWVyY2lhbC5tb2RlbCc7XG5pbXBvcnQgeyBDb2RTZWxmTWFuYWdlZFN0ZXBzIH0gZnJvbSAnLi4vLi4vbG9naWMvY29kLXNlbGYtbWFuYWdlZC1zdGVwcyc7XG5pbXBvcnQgeyBDb21tZXJjaWFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvY29tbWVyY2lhbC1zZXJ2aWNlL2NvbWVyY2lhbC5zZXJ2aWNlJztcblxuLy9pbXBvcnQgUHJpbWUgbmcgYW5kIExpYnJhcnkgQWxlcnRcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IFN3YWwgZnJvbSAnc3dlZXRhbGVydDInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY29kLXNlbGYtZm9ybS1zdGVwLXRocmVlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvZC1zZWxmLWZvcm0tc3RlcC10aHJlZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvZC1zZWxmLWZvcm0tc3RlcC10aHJlZS5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENvZFNlbGZGb3JtU3RlcFRocmVlQ29tcG9uZW50IGV4dGVuZHMgQ29kU2VsZk1hbmFnZWRTdGVwcyBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQE91dHB1dCgpIGNvbXBsZXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICBAT3V0cHV0KCkgZmluYW5jaW5nRGF0YSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGNvbnRyb2xzID0gbmV3IENvZFNlbGZNYW5hZ2VkQ29udHJvbHMoKS5jb250cm9sc1syXTtcbiAgbWVzc2FnZUluZm86c3RyaW5nID0gXCJTZWxlY2Npb25hIHVuIHBsYW4gZGUgcGFnb3NcIjtcbiAgdmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBjb2RTZWxmRm9ybVN0ZXBUaHJlZSE6IEZvcm1Hcm91cDtcbiAgcGF5bWVudE1ldGhvZHM6IGFueVtdID0gW1xuICAgIHsgY29kZTogJzEnLCBuYW1lOiAnRmluYW5jaWFkbycgfSxcbiAgICB7IGNvZGU6ICcyJywgbmFtZTogJ0NvbnRhZG8nIH0sXG4gIF07XG4gIGZlZVJlc3BvbnNlOiBib29sZWFuID0gZmFsc2U7XG4gIHRoZXJlQXJlUGxhbnM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZGF0YVByaWNlczphbnk7XG4gIGlzRmluYW5jaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIGRhdGFGaW5hbmNpbmdNYXN0ZXI6IGFueVtdID0gW107XG4gIGRhdGFGaW5hbmNpbmc6IGFueVtdID0gW107XG4gIHNlbGVjdGVkUm93OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmcgPSAnRmFsdGFuIGNhbXBvcyBwb3IgbGxlbmFyLic7XG4gIHRvdGFsSW5pdGlhbFBheW1lbnRTcGFuPzogbnVtYmVyO1xuICBpc0xvYWRpbmdTZWxlY3RMZXZlbHMgPSBmYWxzZTtcbiAgdG90YWxJbml0aWFsUGF5bWVudD86IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcbiAgICBwcml2YXRlIGNvbW1lcmNpYWxTZXJ2aWNlOiBDb21tZXJjaWFsU2VydmljZSxcbiAgICBwcml2YXRlIGJhc2VTZXJ2aWNlOiBCYXNlU2VydmljZSxcbiAgICBwcml2YXRlIGNvZEZvcm1Db250cm9sczogQ29kU2VsZk1hbmFnZWRDb250cm9scyxcbiAgICBwcml2YXRlIGNhbGN1bGF0ZVF1b3Rlc1NlcnZpY2U6IENhbGN1bGF0ZVF1b3Rlc1NlcnZpY2UpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgfVxuXG4gIGluaXRGb3JtKCkge1xuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUgPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIHByb2dyYW1fcHJpY2U6IFt7IHZhbHVlOiAnJywgZGlzYWJsZWQ6IHRydWUgfSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHBheW1lbnRfZGF0ZTogWycnICwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHBheW1lbnRfbWV0aG9kOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBxdW90YV90aW1lczogW3sgdmFsdWU6ICcnLCBkaXNhYmxlZDogdHJ1ZSB9LCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgdG90YWxfcHJpY2U6IFt7IHZhbHVlOiAnJywgZGlzYWJsZWQ6IHRydWUgfSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHBhaWRfbGV2ZWw6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHF1b3RhX3ByaWNlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBmZWVfbnVtYmVyOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBzZWxlY3RlZFJvdzogW251bGxdLFxuICAgIH0pO1xuICAgIHRoaXMubGlzdGVuUGF5bWVudE1ldGhvZEZpZWxkKCk7XG4gIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdGFydExvY2FsU3RvcmFnZVdvcmsoKTtcbiAgICBjb25zdCBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdO1xuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3BheW1lbnRfZGF0ZSddLnNldFZhbHVlKGN1cnJlbnREYXRlKVxuXG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5nZXQoJ3BheW1lbnRfbWV0aG9kJyk/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvdyA9IG51bGw7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydzZWxlY3RlZFJvdyddLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1snZmVlX251bWJlciddLnNldFZhbHVlKG51bGwpO1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sncXVvdGFfcHJpY2UnXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3BhaWRfbGV2ZWwnXS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3NlbGVjdGVkUm93J10uc2V0VmFsdWUobnVsbCk7XG4gICAgfSk7XG4gIH1cbiAgc3RhcnRMb2NhbFN0b3JhZ2VXb3JrKCkge1xuICAgIHRoaXMuY29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IHtcbiAgICAgIGxldCBsb2NhbFN0b3JhZ2VWYWx1ZTogbG9jYWxTdG9yYWdlVmFsdWVzVHdvID0gdGhpcy5yZWFkQW5kV3JpdGVMUygzLCBjb250cm9sLm5hbWUpO1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1tjb250cm9sLm5hbWVdLnNldFZhbHVlKGxvY2FsU3RvcmFnZVZhbHVlLnZhbHVlKTtcbiAgICAgIHRoaXMubGlzdGVuRm9ybUNoYW5nZXMoMywgY29udHJvbC5uYW1lLCB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzW2NvbnRyb2wubmFtZV0udmFsdWVDaGFuZ2VzKTtcbiAgICB9KTtcbiAgfVxuXG4gIGxpc3RlblBheW1lbnRNZXRob2RGaWVsZCgpIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5nZXQoJ3BheW1lbnRfbWV0aG9kJyk7XG4gICAgY29udHJvbD8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoY2hhbmdlKSA9PiB7XG4gICAgICAvLyBGaW5hbmNpYWRvXG4gICAgICBpZiAoY2hhbmdlID09PSAnMScpIHtcbiAgICAgICAgLy8gUG9uZXIgdmFsaWRhY2lvbmVzXG4gICAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3Byb2dyYW1fcHJpY2UnXS5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XG4gICAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3BheW1lbnRfZGF0ZSddLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcbiAgICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sncXVvdGFfdGltZXMnXS5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XG4gICAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3RvdGFsX3ByaWNlJ10uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xuXG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICB0aGlzLnVwZGF0ZUdsb2JhbENvbnRyb2xzKGNoYW5nZSlcbiAgICAgIH1cblxuICAgICAgLy8gZGUgY29udGFkb1xuICAgICAgaWYgKGNoYW5nZSA9PT0gJzInKSB7XG4gICAgICAgIC8vIFF1aXRhciBsYXMgdmFsaWRhY2lvbmVzXG4gICAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3Byb2dyYW1fcHJpY2UnXS5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XG4gICAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3BheW1lbnRfZGF0ZSddLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcbiAgICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sncXVvdGFfdGltZXMnXS5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sndG90YWxfcHJpY2UnXS5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgIHRoaXMudXBkYXRlR2xvYmFsQ29udHJvbHMoY2hhbmdlKVxuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIHVwZGF0ZUdsb2JhbENvbnRyb2xzKGNoYW5nZTogc3RyaW5nKSB7XG4gICAgbGV0IGNvbnRyb2xzID0gdGhpcy5jb250cm9scy5maWx0ZXIoY29udHJvbCA9PiBjb250cm9sLm5hbWUgIT09ICdwYXltZW50X21ldGhvZCcpO1xuICAgIGNvbnRyb2xzLmZvckVhY2goY29udHJvbCA9PiB7XG4gICAgICBpZiAoY2hhbmdlID09PSAnMScpIHRoaXMuY29kRm9ybUNvbnRyb2xzLmNoYW5nZVZhbHVlKDMsIGNvbnRyb2wubmFtZSwgdHJ1ZSlcbiAgICAgIGlmIChjaGFuZ2UgPT09ICcyJykge1xuICAgICAgICBpZiAoY29udHJvbC5uYW1lID09PSAncXVvdGFfdGltZXMnKSB0aGlzLmNvZEZvcm1Db250cm9scy5jaGFuZ2VWYWx1ZSgzLCBjb250cm9sLm5hbWUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBvblJlamVjdCgpIHtcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmNsZWFyKCdjb25maXJtJyk7XG4gICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gIH1cblxuICBzaG93Q29uZmlybSgpIHtcbiAgICBpZiAoIXRoaXMudmlzaWJsZSkge1xuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IGtleTogJ2NvbmZpcm0nLCBzdGlja3k6IHRydWUsIHNldmVyaXR5OiAnc3VjY2VzcycsIHN1bW1hcnk6ICdDYW4geW91IHNlbmQgbWUgdGhlIHJlcG9ydD8nLCBsaWZlOiAxMDAwMCB9KTtcbiAgICAgICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RQYXltZW50TWV0aG9kKHBheW1lbnRNZXRob2Q6IGFueSkge1xuICAgIHRoaXMuZmVlUmVzcG9uc2UgPSB0cnVlO1xuICAgIHRoaXMudGhlcmVBcmVQbGFucyA9IGZhbHNlO1xuXG4gICAgaWYgKHBheW1lbnRNZXRob2QgIT09ICcnKSB7XG4gICAgICBjb25zdCByZXF1ZXN0OiBJT2J0YWluQ29kUHJpY2VzUnEgPSB7XG4gICAgICAgIHRva2VuOiAgICAgICAgICAgIHRoaXMuYmFzZVNlcnZpY2UuZ2V0VXNlclRva2VuKCksXG4gICAgICAgIGNvdXJzZV90eXBlOiAgICAgIE51bWJlcih0aGlzLmxvY2FsU3RvcmFnZUNPRC5nZXRDb2RGb3JtRGF0YSgyLCAnY291cnNlX3R5cGUnKSksXG4gICAgICAgIGFncmVlbWVudDogICAgICAgIE51bWJlcih0aGlzLmxvY2FsU3RvcmFnZUNPRC5nZXRDb2RGb3JtRGF0YSgxLCAnYWdyZWVtZW50X2J5X2NhdGVnb3J5JykpLFxuICAgICAgICBjb3Vyc2VfbW9kYWxpdHk6ICBOdW1iZXIodGhpcy5sb2NhbFN0b3JhZ2VDT0QuZ2V0Q29kRm9ybURhdGEoMiwgJ2NvdXJzZV9tb2RhbGl0eScpKSxcbiAgICAgICAgcGF5bWVudF9tZXRob2Q6ICAgcGFyc2VJbnQocGF5bWVudE1ldGhvZClcbiAgICAgIH1cbiAgICAgIHRoaXMuY29tbWVyY2lhbFNlcnZpY2UuT2J0YWluQ29kUHJpY2VzQ29kU2VsZk1hbmFnZWQocmVxdWVzdCkuc3Vic2NyaWJlKChyZXNwb25zZSk9PiB7XG4gICAgICAgIGlmIChyZXNwb25zZS5kYXRhICE9IG51bGwpIHtcbiAgICAgICAgICB0aGlzLmRhdGFQcmljZXMgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgIHRoaXMuZmVlUmVzcG9uc2UgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnRoZXJlQXJlUGxhbnMgPSB0cnVlO1xuICAgICAgICB9ZWxzZSB7XG4gICAgICAgICAgdGhpcy50aGVyZUFyZVBsYW5zID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5mZWVSZXNwb25zZSA9IGZhbHNlO1xuICAgICAgICAgIFN3YWwuZmlyZSh7XG4gICAgICAgICAgICBwb3NpdGlvbjogJ2NlbnRlcicsXG4gICAgICAgICAgICBpY29uOiAnd2FybmluZycsXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgJzxwIHN0eWxlPVwiZm9udC1mYW1pbHk6IFBvcHBpbnNcIlwiPk9vcHMuLiBubyBoYXkgcGxhbmVzIGRlIHBhZ29zLCBcXG4gZW4gZWwgY3Vyc28gZWxlZ2lkby48L3A+JyxcbiAgICAgICAgICAgIHNob3dDb25maXJtQnV0dG9uOiBmYWxzZSxcbiAgICAgICAgICAgIHRpbWVyOiAzMDAwLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuY2xlYXJJbnB1dFBheW1lbnQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydwYXltZW50X21ldGhvZCddLnNldFZhbHVlKHBheW1lbnRNZXRob2QpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydwYXltZW50X21ldGhvZCddLnNldFZhbHVlKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFySW5wdXRQYXltZW50KCl7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sncHJvZ3JhbV9wcmljZSddLnNldFZhbHVlKG51bGwpO1xuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3F1b3RhX3RpbWVzJ10uc2V0VmFsdWUobnVsbCk7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sndG90YWxfcHJpY2UnXS5zZXRWYWx1ZShudWxsKTtcbiAgfVxuICBiYWNrKCkge1xuICAgIHRoaXMuY29tcGxldGVkLmVtaXQoMSk7XG4gIH1cblxuICBzZW5kRm9ybSgpIHtcblxuICAgIHRoaXMuY29tcGxldGVkLmVtaXQoMyk7XG4gIH1cblxuICBzaG93VGFibGUoKSB7XG4gICAgdGhpcy5pc0xvYWRpbmdTZWxlY3RMZXZlbHMgPSB0cnVlO1xuICAgIHRoaXMuaXNGaW5hbmNpbmcgPSB0cnVlO1xuICAgIHRoaXMuZmluYW5jaW5nRGF0YS5lbWl0KG51bGwpO1xuICAgIGNvbnN0IHRvdGFsX3ByaWNlID0gdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sndG90YWxfcHJpY2UnXS52YWx1ZTtcbiAgICBpZiAoKHRvdGFsX3ByaWNlID09PSAnbnVsbCcpIHx8IHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuaW52YWxpZCkge1xuICAgICAgU3dhbC5maXJlKHtcbiAgICAgICAgdGl0bGU6ICdFcnJvciB0YWJsZScsXG4gICAgICAgIHRleHQ6ICdEZWJlcyBpbmdyZXNhciBlbCBtb250byB0b3RhbCBkZSBsYSBtYXRyw61jdWxhIHkgbGEgY3VvdGEgaW5pY2lhbCcsXG4gICAgICAgIGljb246ICdlcnJvcidcbiAgICAgIH0pXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ2FsY3VsYXIgY3VvdGFzXG4gICAgdGhpcy5kYXRhRmluYW5jaW5nID0gW107XG5cbiAgICBsZXQgcGFyYW1zOiBDYWxjdWxhdGVRdW90ZXNQYXJhbXMgPSB7XG4gICAgICBkYXRlOiBuZXcgRGF0ZSh0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydwYXltZW50X2RhdGUnXS52YWx1ZSksXG4gICAgICBxdW90YVZhbHVlczogTnVtYmVyKHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3F1b3RhX3ByaWNlJ10udmFsdWUpLFxuICAgICAgcXVvdGFUaW1lczogTnVtYmVyKHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ2ZlZV9udW1iZXInXS52YWx1ZSksXG4gICAgICB0b3RhbFByaWNlOiB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWyd0b3RhbF9wcmljZSddLnZhbHVlLFxuICAgIH1cblxuICAgIHRoaXMuZGF0YUZpbmFuY2luZ01hc3RlciA9IHRoaXMuY2FsY3VsYXRlUXVvdGVzU2VydmljZS5jYWxjdWxhdGVRdW90ZXMocGFyYW1zKTtcbiAgICBpZiAodGhpcy5kYXRhRmluYW5jaW5nTWFzdGVyLmxlbmd0aCA+IDEpIHtcblxuICAgICAgY29uc3QgZW5yb2xsbWVudFZhbHVlID0gdGhpcy5kYXRhRmluYW5jaW5nTWFzdGVyWzBdWzFdO1xuICAgICAgY29uc3QgZmlyc3RRdW90YVZhbHVlID0gdGhpcy5kYXRhRmluYW5jaW5nTWFzdGVyWzFdWzFdO1xuICAgICAgdGhpcy50b3RhbEluaXRpYWxQYXltZW50U3BhbiA9IHBhcnNlRmxvYXQoZW5yb2xsbWVudFZhbHVlLnJlcGxhY2UoL1teXFxkLi1dL2csICcnKSkgKyBwYXJzZUZsb2F0KGZpcnN0UXVvdGFWYWx1ZS5yZXBsYWNlKC9bXlxcZC4tXS9nLCAnJykpO1xuXG4gICAgICBjb25zdCBlbnJvbGxtZW50VmFsdWVUd28gPSBwYXJzZUZsb2F0KHRoaXMuZGF0YUZpbmFuY2luZ01hc3RlclswXVsxXS5yZXBsYWNlKC9bXlxcZC4tXS9nLCAnJykpO1xuICAgICAgY29uc3QgZmlyc3RRdW90YVZhbHVlVHdvID0gcGFyc2VGbG9hdCh0aGlzLmRhdGFGaW5hbmNpbmdNYXN0ZXJbMV1bMV0ucmVwbGFjZSgvW15cXGQuLV0vZywgJycpKTtcbiAgICAgIHRoaXMudG90YWxJbml0aWFsUGF5bWVudCA9IGVucm9sbG1lbnRWYWx1ZVR3byArIGZpcnN0UXVvdGFWYWx1ZVR3bztcblxuICAgICAgY29uc3QgdG90YWxJbml0aWFsUGF5bWVudEludGVnZXIgPSBNYXRoLnJvdW5kKHRoaXMudG90YWxJbml0aWFsUGF5bWVudCk7XG5cbiAgICAgIGNvbnN0IGZvcm1hdHRlZFRvdGFsSW5pdGlhbFBheW1lbnQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoJ2VuLVVTJywgeyBzdHlsZTogJ2N1cnJlbmN5JywgY3VycmVuY3k6ICdVU0QnLG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMCB9KS5mb3JtYXQodG90YWxJbml0aWFsUGF5bWVudEludGVnZXIpO1xuXG4gICAgICBjb25zdCBjb21iaW5lZFJlY29yZCA9IFtcbiAgICAgICAgdGhpcy5kYXRhRmluYW5jaW5nTWFzdGVyWzBdWzBdLFxuICAgICAgICBmb3JtYXR0ZWRUb3RhbEluaXRpYWxQYXltZW50LFxuICAgICAgICB0aGlzLmRhdGFGaW5hbmNpbmdNYXN0ZXJbMF1bMl1cbiAgICAgIF07XG4gICAgICB0aGlzLmRhdGFGaW5hbmNpbmcgPSBbY29tYmluZWRSZWNvcmQsIC4uLnRoaXMuZGF0YUZpbmFuY2luZ01hc3Rlci5zbGljZSgyKV07XG4gICAgfVxuICAgIHRoaXMuaXNGaW5hbmNpbmcgPSB0cnVlO1xuICAgIHRoaXMuZmluYW5jaW5nRGF0YS5lbWl0KHRoaXMuZGF0YUZpbmFuY2luZ01hc3Rlcik7XG4gICAgdGhpcy5pc0xvYWRpbmdTZWxlY3RMZXZlbHMgPSBmYWxzZTtcbiAgfVxuXG4gIHNlbGVjdExldmVscyhkYXRhUGF5bWVudDogYW55LCByb3dJbmRleDogbnVtYmVyKXtcbiAgICByb3dJbmRleFxuICAgIGlmICh0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmdldCgncGF5bWVudF9tZXRob2QnKT8udmFsdWUgPT0gMSkge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvdyA9IHJvd0luZGV4O1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1snc2VsZWN0ZWRSb3cnXS5zZXRWYWx1ZShyb3dJbmRleCk7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydxdW90YV90aW1lcyddLnNldFZhbHVlKGRhdGFQYXltZW50LmNvZGUpO1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sndG90YWxfcHJpY2UnXS5zZXRWYWx1ZShkYXRhUGF5bWVudC5lbnJvbGxtZW50KTtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3Byb2dyYW1fcHJpY2UnXS5zZXRWYWx1ZShkYXRhUGF5bWVudC5maW5hbmNlZF9wcmljZSk7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydwYWlkX2xldmVsJ10uc2V0VmFsdWUoZGF0YVBheW1lbnQucGFpZF9sZXZlbCAtIDEpO1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1snZmVlX251bWJlciddLnNldFZhbHVlKGRhdGFQYXltZW50LmZlZV9udW1iZXIpO1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sncXVvdGFfcHJpY2UnXS5zZXRWYWx1ZShkYXRhUGF5bWVudC5xdW90YV9wcmljZSk7XG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgIHRoaXMuc2hvd1RhYmxlKCk7XG4gICAgfSBlbHNlIGlmKHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuZ2V0KCdwYXltZW50X21ldGhvZCcpPy52YWx1ZSA9PSAyKXtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3cgPSByb3dJbmRleDtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3NlbGVjdGVkUm93J10uc2V0VmFsdWUocm93SW5kZXgpO1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sncXVvdGFfdGltZXMnXS5zZXRWYWx1ZShkYXRhUGF5bWVudC5jb2RlKTtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3RvdGFsX3ByaWNlJ10uc2V0VmFsdWUoZGF0YVBheW1lbnQuZW5yb2xsbWVudCk7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydwcm9ncmFtX3ByaWNlJ10uc2V0VmFsdWUoZGF0YVBheW1lbnQubm9ybWFsX3ByaWNlKTtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3BhaWRfbGV2ZWwnXS5zZXRWYWx1ZShkYXRhUGF5bWVudC5wYWlkX2xldmVsIC0gMSk7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydmZWVfbnVtYmVyJ10uc2V0VmFsdWUoZGF0YVBheW1lbnQuZmVlX251bWJlcik7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydxdW90YV9wcmljZSddLnNldFZhbHVlKGRhdGFQYXltZW50LnF1b3RhX3ByaWNlKTtcbiAgICAgIHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKSB7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sncHJvZ3JhbV9wcmljZSddLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydwYXltZW50X2RhdGUnXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sncXVvdGFfdGltZXMnXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sndG90YWxfcHJpY2UnXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lci1tYWluXCI+XG4gIDxkaXYgY2xhc3M9XCJjb250YWluZXItZm9ybVwiPlxuICAgIDxoMj5QYWdvczwvaDI+XG4gICAgPHAtdG9hc3QgcG9zaXRpb249XCJ0b3AtY2VudGVyXCIga2V5PVwiY29uZmlybVwiIChvbkNsb3NlKT1cIm9uUmVqZWN0KClcIiBbYmFzZVpJbmRleF09XCIxMFwiPlxuICAgICAgPG5nLXRlbXBsYXRlIGxldC1tZXNzYWdlIHBUZW1wbGF0ZT1cIm1lc3NhZ2VcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1zdGFydFwiIHN0eWxlPVwiZmxleDogMVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9xYS5pcHRkZXYuY29tLmNvL2Fzc2V0cy9sb2dvcy9yZWFkaW5nLnBuZ1wiIHN0eWxlPVwid2lkdGg6IDY1cHg7XCIgc2hhcGU9XCJjaXJjbGVcIiAvPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LWJvbGQgdGV4dC05MDBcIj5KYWNvYjwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LW1lZGl1bSB0ZXh0LWxnIG15LTMgdGV4dC05MDBcIj57eyBtZXNzYWdlSW5mbyB9fTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3AtdG9hc3Q+XG4gICAgPGkgY2xhc3M9XCJwaSBwaS1leGNsYW1hdGlvbi1jaXJjbGUgY3Vyc29yLXBvaW50ZXIgdy1hdXRvXCIgKGNsaWNrKT1cInNob3dDb25maXJtKClcIiBwVG9vbHRpcD1cIk1hcyBpbmZvLlwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiPjwvaT5cbiAgICA8ZGl2IGNsYXNzPVwiYW5pbWF0ZV9fYW5pbWF0ZWQgYW5pbWF0ZV9fc2xpZGVJblJpZ2h0IG5nLXN0YXItaW5zZXJ0ZWRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJfX2JvZHlfX3NlbGVjdCBmbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgZmxleC13cmFwXCI+XG5cbiAgICAgICAgPGZvcm0gYXV0b2NvbXBsZXRlPVwib2ZmXCIgW2Zvcm1Hcm91cF09XCJjb2RTZWxmRm9ybVN0ZXBUaHJlZVwiIGNsYXNzPVwiZ3JpZCBtdC0yIGZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyX3NlbGVjdHMgY29sLTEyXCI+XG4gICAgICAgICAgICA8aXB0LXNlbGVjdFxuICAgICAgICAgICAgICBbaW5pdGlhbFZhbHVlXT1cImNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydwYXltZW50X21ldGhvZCddLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3BheW1lbnRfbWV0aG9kJ11cIlxuICAgICAgICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0UGF5bWVudE1ldGhvZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW2RhdGFdPVwicGF5bWVudE1ldGhvZHNcIlxuICAgICAgICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ03DqXRvZG8gZGUgcGFnbydcIlxuICAgICAgICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgICAgICAgIDxpcHQtbG9hZGVyICpuZ0lmPVwiZmVlUmVzcG9uc2VcIj48L2lwdC1sb2FkZXI+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIiAqbmdJZj1cInRoZXJlQXJlUGxhbnNcIj5cbiAgICAgICAgICAgICAgPHAtdGFibGVcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZGF0YVByaWNlc1wiXG4gICAgICAgICAgICAgICAgW3RhYmxlU3R5bGVdPVwieydtaW4td2lkdGgnOiAnMTAwJSd9XCJcbiAgICAgICAgICAgICAgICBbcm93SG92ZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY2FwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIENsaWNrIGVuIG5pdmVsZXMgYSBjYW5jZWxhclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImJnLWJsdWUtMjAwIHRleHQtY2VudGVyIGZvbnQtbWVkaXVtIHB0LTIgcGItMlwiPjwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImJnLWJsdWUtMjAwIHRleHQtY2VudGVyIGZvbnQtbWVkaXVtIHB0LTIgcGItMlwiPkNhbmNlbGFyPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiYmctYmx1ZS0yMDAgdGV4dC1jZW50ZXIgZm9udC1tZWRpdW0gcHQtMiBwYi0yXCI+Q3VvdGFzPC90aD5cbiAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1kYXRhIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCI+XG4gICAgICAgICAgICAgICAgICA8dHIgW2NsYXNzLnNlbGVjdGVkLXJvd109XCJzZWxlY3RlZFJvdyA9PT0gcm93SW5kZXhcIiAoY2xpY2spPVwic2VsZWN0TGV2ZWxzKGRhdGEsIHJvd0luZGV4KVwiPlxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJwdC0wIHBiLTAgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8cC1yYWRpb0J1dHRvbiBbdmFsdWVdPVwicm93SW5kZXhcIiBmb3JtQ29udHJvbE5hbWU9XCJzZWxlY3RlZFJvd1wiPjwvcC1yYWRpb0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicHQtMSBwYi0xXCI+e3sgZGF0YS5wYWlkX2xldmVsIH19IHt7IGRhdGEucGFpZF9sZXZlbCA9PSAxID8gXCJOaXZlbFwiIDogXCJOaXZlbGVzXCJ9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInB0LTEgcGItMSB0ZXh0LWNlbnRlclwiPnt7IGRhdGEuZmVlX251bWJlciB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDwvcC10YWJsZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lcl9zZWxlY3RzIGNvbC0xMlwiPlxuICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInTW9udG8gdG90YWwgZGUgbGEgbWF0csOtY3VsYSdcIlxuICAgICAgICAgICAgICBbY29udHJvbF09XCJjb2RTZWxmRm9ybVN0ZXBUaHJlZS5jb250cm9sc1sndG90YWxfcHJpY2UnXVwiXG4gICAgICAgICAgICAgIFt3aXRoUGlwZV09XCJ0cnVlXCJcbiAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJfc2VsZWN0cyBjb2wtMTJcIj5cbiAgICAgICAgICAgIDxpcHQtaW5wdXRcbiAgICAgICAgICAgICAgW3dpdGhQaXBlXT1cInRydWVcIlxuICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgICAgIFtjb250cm9sXT1cImNvZFNlbGZGb3JtU3RlcFRocmVlLmNvbnRyb2xzWydwcm9ncmFtX3ByaWNlJ11cIlxuICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ1ZhbG9yIHRvdGFsIGRlbCBwcm9ncmFtYSdcIlxuICAgICAgICAgICAgPjwvaXB0LWlucHV0PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LXdyYXAgbS0yXCI+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIFRhYmxhIGRlIGZpbmFuY2lhY2nDs24gLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiICpuZ0lmPVwiY29kU2VsZkZvcm1TdGVwVGhyZWUuY29udHJvbHNbJ3BheW1lbnRfbWV0aG9kJ10udmFsdWUgPT09ICcxJyAmJiBpc0ZpbmFuY2luZ1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTEgbWQ6Z2FwLTQgeGw6Z2FwLTggbS0xIHAtMiBib3JkZXItcm91bmQgYmctYmx1ZS01MDAgdGV4dC13aGl0ZVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyX2ljb24gZmxleCBtci00IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtc3RhcnQgbXQtMVwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktaW5mby1jaXJjbGUgY3Vyc29yLXBvaW50ZXIgdy1hdXRvIG1iLTRcIiBwVG9vbHRpcD1cIk1hcyBpbmZvLlwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiPjwvaT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sdW1uIGNvbnRhaW5lcl9pbmZvX3NwYW4gZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPjxzdHJvbmc+Tk9UQTo8L3N0cm9uZz4gRGViZXLDoSBwYWdhciBsYSBtYXRyw61jdWxhIHkgbGEgcHJpbWVyYSBjdW90YSA8c3Ryb25nPih0b3RhbDogJHt7IHRvdGFsSW5pdGlhbFBheW1lbnRTcGFuIH19KTwvc3Ryb25nPiBwYXJhIGNvbXBsZXRhciBlbCBwcm9jZXNvIGRlIGluc2NyaXBjacOzbi48L3NwYW4+PGJyPlxuICAgICAgICAgICAgICAgIDxzcGFuPlJlY3VlcmRhIHF1ZSBsYXMgZmVjaGFzIGNhbWJpYW4gZGUgYWN1ZXJkbyBhIGxhIGZlY2hhIHF1ZSBjb21pZW56YSBlbCBwbGFuPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8cC10YWJsZVxuICAgICAgICAgICAgICAqbmdJZj1cIiFpc0xvYWRpbmdTZWxlY3RMZXZlbHNcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwiZGF0YUZpbmFuY2luZ1wiXG4gICAgICAgICAgICAgIFt0YWJsZVN0eWxlXT1cInsnbWluLXdpZHRoJzogJzEwMCUnfVwiXG4gICAgICAgICAgICAgIFtyb3dIb3Zlcl09XCJ0cnVlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNhcHRpb25cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgIEPDoWxjdWxvIGRlIGN1b3Rhc1xuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiYmctYmx1ZS0yMDAgdGV4dC1jZW50ZXIgZm9udC1tZWRpdW0gcHQtMiBwYi0yXCI+IzwvdGg+XG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJiZy1ibHVlLTIwMCB0ZXh0LWNlbnRlciBmb250LW1lZGl1bSBwdC0yIHBiLTJcIj5WYWxvcjwvdGg+XG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJiZy1ibHVlLTIwMCB0ZXh0LWNlbnRlciBmb250LW1lZGl1bSBwdC0yIHBiLTJcIj5GZWNoYTwvdGg+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIiBsZXQtZGF0YT5cbiAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJwLTAgdGV4dC1jZW50ZXIgdGV4dC1zbVwiPnt7IGRhdGFbMF0gfX08L3RkPlxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicC0wIHRleHQtY2VudGVyIHRleHQtc21cIj57eyBkYXRhWzFdIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInAtMCB0ZXh0LWNlbnRlciB0ZXh0LXNtXCI+e3sgZGF0YVsyXSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvcC10YWJsZT5cbiAgICAgICAgICAgIDxpcHQtbG9hZGVyICpuZ0lmPVwiaXNMb2FkaW5nU2VsZWN0TGV2ZWxzXCI+PC9pcHQtbG9hZGVyPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxuXG4gICAgICAgIDwvZm9ybT5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC0zIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgICA8IS0tIDxzcGFuICpuZ0lmPVwiY29kU2VsZkZvcm1TdGVwT25lLmludmFsaWQgJiYgY29kU2VsZkZvcm1TdGVwT25lLnRvdWNoZWRcIiBjbGFzcz1cInRleHQtcmVkLTUwMCBmb250LWJvbGQgdGV4dC1jZW50ZXIgbXQtMSBweS0yIGJnLXJlZC0xMDAgdy1mdWxsIGJvcmRlci1yb3VuZC14bFwiPnt7IGVycm9yTWVzc2FnZSB9fTwvc3Bhbj4gLS0+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgcEJ1dHRvblxuICAgICAgICBpY29uPVwicGkgcGktYXJyb3ctbGVmdFwiXG4gICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAoY2xpY2spPVwiYmFjaygpXCJcbiAgICAgICAgPjwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgcEJ1dHRvblxuICAgICAgICBpY29uPVwicGkgcGktYXJyb3ctcmlnaHRcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIWNvZFNlbGZGb3JtU3RlcFRocmVlLnZhbGlkXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbmRGb3JtKClcIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|