sf-crud 12.0.5 → 12.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/sf-crud.umd.js +2563 -1306
- package/bundles/sf-crud.umd.js.map +1 -1
- package/esm2015/lib/components/control/control.component.js +285 -73
- package/esm2015/lib/components/file-upload/file-upload.component.js +143 -0
- package/esm2015/lib/components/form/form.component.js +267 -0
- package/esm2015/lib/components/registro/registro.component.js +507 -407
- package/esm2015/lib/components/step/step.component.js +79 -0
- package/esm2015/lib/components/tablero/tablero.component.js +87 -27
- package/esm2015/lib/sf-crud.module.js +27 -15
- package/esm2015/lib/sf-crud.routing.module.js +23 -0
- package/esm2015/lib/sf-crud.service.js +486 -12
- package/esm2015/lib/shared/models/Conditions.model.js +81 -0
- package/esm2015/lib/shared/models/Empresa.model.js +2 -0
- package/esm2015/lib/shared/models/Reason.model.js +7 -0
- package/esm2015/lib/shared/models/crud-config.model.js +36 -13
- package/esm2015/lib/shared/models/shema.model.js +5 -1
- package/esm2015/lib/shared/services/general.service.js +41 -17
- package/esm2015/lib/shared/services/notification.service.js +83 -0
- package/esm2015/lib/shared/services/step.service.js +65 -0
- package/esm2015/public-api.js +7 -1
- package/fesm2015/sf-crud.js +2194 -1151
- package/fesm2015/sf-crud.js.map +1 -1
- package/lib/components/control/control.component.d.ts +39 -10
- package/lib/components/file-upload/file-upload.component.d.ts +34 -0
- package/lib/components/form/form.component.d.ts +58 -0
- package/lib/components/registro/registro.component.d.ts +81 -54
- package/lib/components/step/step.component.d.ts +27 -0
- package/lib/components/tablero/tablero.component.d.ts +15 -5
- package/lib/sf-crud.module.d.ts +80 -76
- package/lib/sf-crud.routing.module.d.ts +7 -0
- package/lib/sf-crud.service.d.ts +115 -5
- package/lib/shared/models/Conditions.model.d.ts +32 -0
- package/lib/shared/models/Empresa.model.d.ts +11 -0
- package/lib/shared/models/Reason.model.d.ts +5 -0
- package/lib/shared/models/crud-config.model.d.ts +76 -24
- package/lib/shared/models/shema.model.d.ts +27 -0
- package/lib/shared/services/general.service.d.ts +8 -1
- package/lib/shared/services/notification.service.d.ts +27 -0
- package/lib/shared/services/step.service.d.ts +27 -0
- package/package.json +9 -2
- package/public-api.d.ts +6 -0
- package/esm2015/lib/components/registro-child/registro-child.component.js +0 -348
- package/esm2015/lib/components/registro-detalle/registro-detalle.component.js +0 -232
- package/esm2015/lib/shared/models/data-temp-crud.model.js +0 -6
- package/lib/components/registro-child/registro-child.component.d.ts +0 -48
- package/lib/components/registro-detalle/registro-detalle.component.d.ts +0 -36
- package/lib/shared/models/data-temp-crud.model.d.ts +0 -4
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import * as moment from 'moment';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "primeng/api";
|
|
5
|
+
import * as i2 from "primeng/button";
|
|
6
|
+
import * as i3 from "primeng/ripple";
|
|
7
|
+
import * as i4 from "@angular/common";
|
|
8
|
+
export class FileUploadComponent {
|
|
9
|
+
constructor(messageSerice) {
|
|
10
|
+
this.messageSerice = messageSerice;
|
|
11
|
+
this.files = [];
|
|
12
|
+
this.loading = false;
|
|
13
|
+
this.accept = "image/*,application/pdf";
|
|
14
|
+
this.onUpload = new EventEmitter();
|
|
15
|
+
this.onDeleteFile = new EventEmitter();
|
|
16
|
+
this.newFiles = [];
|
|
17
|
+
window.addEventListener("paste", (e) => {
|
|
18
|
+
var _a;
|
|
19
|
+
if (((_a = e.clipboardData) === null || _a === void 0 ? void 0 : _a.files) && e.clipboardData.files.length > 0) {
|
|
20
|
+
this.appendFile(e.clipboardData.files[0]);
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
ngOnChanges(changes) {
|
|
25
|
+
}
|
|
26
|
+
ngOnInit() {
|
|
27
|
+
}
|
|
28
|
+
appendFile(file) {
|
|
29
|
+
const allowedTypes = this.accept.split(",");
|
|
30
|
+
const allowedFile = allowedTypes.some(pattern => {
|
|
31
|
+
const regexObj = new RegExp(pattern);
|
|
32
|
+
const match = regexObj.exec(file.type);
|
|
33
|
+
return match ? (match === null || match === void 0 ? void 0 : match.length) > 0 : false;
|
|
34
|
+
});
|
|
35
|
+
if (allowedFile) {
|
|
36
|
+
const newFile = new File([file], this.getName(file), { type: file.type });
|
|
37
|
+
if (this.limit == 1) {
|
|
38
|
+
this.newFiles = [newFile];
|
|
39
|
+
}
|
|
40
|
+
else
|
|
41
|
+
this.newFiles.push(newFile);
|
|
42
|
+
this.files.push({ name: newFile.name, url: window.URL.createObjectURL(newFile) });
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
this.messageSerice.add({ severity: "warn", detail: "Tipo de archivo no válido" });
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
emitFiles() {
|
|
49
|
+
this.loading = true;
|
|
50
|
+
this.onUpload.emit(this.newFiles);
|
|
51
|
+
}
|
|
52
|
+
getName(file) {
|
|
53
|
+
let sName = "";
|
|
54
|
+
let date = new Date();
|
|
55
|
+
if (this.configName !== undefined) {
|
|
56
|
+
let name = this.configName.split('|');
|
|
57
|
+
name.forEach(item => {
|
|
58
|
+
if (item.indexOf("DATE@") != -1)
|
|
59
|
+
sName += (moment(date)).format(item.split('@')[1]);
|
|
60
|
+
else if (item.indexOf("@") == -1)
|
|
61
|
+
sName += item;
|
|
62
|
+
});
|
|
63
|
+
let ext = this.getExt(file);
|
|
64
|
+
sName += ext ? "." + ext : "";
|
|
65
|
+
}
|
|
66
|
+
else
|
|
67
|
+
sName = file.name;
|
|
68
|
+
return sName;
|
|
69
|
+
}
|
|
70
|
+
getExt(file) {
|
|
71
|
+
let ext = undefined;
|
|
72
|
+
let aux = file.name.split('.');
|
|
73
|
+
if (aux.length > 0)
|
|
74
|
+
ext = aux[aux.length - 1];
|
|
75
|
+
return ext;
|
|
76
|
+
}
|
|
77
|
+
appendFiles($event) {
|
|
78
|
+
if ($event.target.files.length > 0) {
|
|
79
|
+
this.appendFile($event.target.files[0]);
|
|
80
|
+
}
|
|
81
|
+
if (this.limit == this.files.length) {
|
|
82
|
+
this.stopAnimation();
|
|
83
|
+
this.emitFiles();
|
|
84
|
+
}
|
|
85
|
+
else
|
|
86
|
+
this.startAnimation();
|
|
87
|
+
this.fileUploader.nativeElement.value = "";
|
|
88
|
+
}
|
|
89
|
+
dropFile(archivo) {
|
|
90
|
+
this.files.forEach((f, index) => {
|
|
91
|
+
if (f == archivo) {
|
|
92
|
+
this.files.splice(index, 1);
|
|
93
|
+
this.onDeleteFile.emit(index);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
openFile(archivo) {
|
|
98
|
+
window.open(archivo.url, '_blank');
|
|
99
|
+
window.addEventListener('focus', () => URL.revokeObjectURL(archivo.url));
|
|
100
|
+
}
|
|
101
|
+
startAnimation() {
|
|
102
|
+
const button = document.querySelector('.button-upload');
|
|
103
|
+
if (button) {
|
|
104
|
+
button.classList.add('animate-pulse');
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
stopAnimation() {
|
|
108
|
+
const button = document.querySelector('.button-upload');
|
|
109
|
+
if (button) {
|
|
110
|
+
button.classList.remove('animate-pulse');
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
FileUploadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FileUploadComponent, deps: [{ token: i1.MessageService }], target: i0.ɵɵFactoryTarget.Component });
|
|
115
|
+
FileUploadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: FileUploadComponent, selector: "sf-file-upload", inputs: { limit: "limit", files: "files", loading: "loading", configName: "configName", accept: "accept" }, outputs: { onUpload: "onUpload", onDeleteFile: "onDeleteFile" }, viewQueries: [{ propertyName: "fileUploader", first: true, predicate: ["fileUpload"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div id=\"screen\" #screen>\r\n <div class=\"fileUp\">\r\n <div class=\"botones\">\r\n <input type=\"file\" (change)=\"appendFiles($event)\" class=\"file-input\" #fileUpload multiple>\r\n <button pButton pRipple type=\"button\" icon=\"pi pi-plus\" class=\"p-button-info\" (click)=\"fileUpload.click()\"\r\n [disabled]=\"limit == files.length\" [loading]=\"loading\"></button>\r\n <button *ngIf=\"limit != 1\" pButton pRipple type=\"button\" icon=\"pi pi-upload\" class=\"button-upload p-button-info\"\r\n (click)=\"emitFiles()\" [disabled]=\"files.length == 0 || loading\" [loading]=\"loading\"></button>\r\n </div>\r\n\r\n <hr>\r\n <div class=\"imgs\">\r\n <ul>\r\n <li *ngFor=\"let file of files; let i = index\" [ngSwitch]=\"file.type\">\r\n <p>{{i+1}}. {{files[i].name}}</p>\r\n <div>\r\n <button pButton pRipple type=\"button\" icon=\"pi pi-external-link\" class=\"p-button-rounded\"\r\n (click)=\"openFile(file)\"></button>\r\n <button pButton pRipple type=\"button\" icon=\"pi pi-times\" class=\"p-button-rounded p-button-danger\"\r\n (click)=\"dropFile(file)\"></button>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["#screen{container-type:inline-size}iframe{width:100%;padding:10px;text-align:center}.fileUp{border:1.5px solid gray;border-radius:5px;text-align:center}.fileUp .imgs{min-height:40px;margin-block:7px;max-height:135px;overflow-y:scroll}.fileUp hr{color:gray;margin:0}.fileUp .imgs ul li{text-decoration:none;display:flex;margin-block:5px;padding-inline:5px}.fileUp .imgs ul{padding-inline-start:30px}.fileUp .imgs ul li div{text-decoration:none;display:grid;grid-template-columns:50% 50%;margin-block:5px;margin-right:5px}.fileUp .botones *{margin-block:7px;margin-inline:10px}.fileUp .imgs ul li p{text-align:left;white-space:nowrap;width:100%;overflow:hidden;text-overflow:ellipsis}.fileUp .imgs ul li p,.fileUp .imgs ul li button{margin-block:auto;margin-inline:5px;text-align:left}.fileUp .imgs ul li img,.fileUp .imgs ul li iframe{text-align:center;width:80%;padding-inline:10%}.file-input{display:none}::ng-deep .p-button.p-button-info,.p-buttonset.p-button-info>.p-button,.p-splitbutton.p-button-info>.p-button{background:var(--secondary-color)!important;border:var(--secondary-color)!important;color:#fff}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}.animate-pulse{animation:pulse 1.5s infinite}@container (width < 768px){.fileUp .imgs ul li {display: grid; grid-template-columns: 60% 40%;} .fileUp .imgs ul li img,.fileUp .imgs ul li iframe {display: none;}}\n"], directives: [{ type: i2.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i3.Ripple, selector: "[pRipple]" }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }] });
|
|
116
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FileUploadComponent, decorators: [{
|
|
117
|
+
type: Component,
|
|
118
|
+
args: [{
|
|
119
|
+
selector: 'sf-file-upload',
|
|
120
|
+
templateUrl: './file-upload.component.html',
|
|
121
|
+
styleUrls: ['./file-upload.component.css']
|
|
122
|
+
}]
|
|
123
|
+
}], ctorParameters: function () { return [{ type: i1.MessageService }]; }, propDecorators: { limit: [{
|
|
124
|
+
type: Input
|
|
125
|
+
}], files: [{
|
|
126
|
+
type: Input
|
|
127
|
+
}], loading: [{
|
|
128
|
+
type: Input
|
|
129
|
+
}], configName: [{
|
|
130
|
+
type: Input
|
|
131
|
+
}], accept: [{
|
|
132
|
+
type: Input
|
|
133
|
+
}], onUpload: [{
|
|
134
|
+
type: Output
|
|
135
|
+
}], onDeleteFile: [{
|
|
136
|
+
type: Output
|
|
137
|
+
}], fileUploader: [{
|
|
138
|
+
type: ViewChild,
|
|
139
|
+
args: ['fileUpload']
|
|
140
|
+
}] } });
|
|
141
|
+
export class Archivo {
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2YtY3J1ZC9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2YtY3J1ZC9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSSxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQzs7Ozs7O0FBUWpDLE1BQU0sT0FBTyxtQkFBbUI7SUFlOUIsWUFDVSxhQUE2QjtRQUE3QixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFaOUIsVUFBSyxHQUFjLEVBQUUsQ0FBQztRQUN0QixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRWhCLFdBQU0sR0FBWSx5QkFBeUIsQ0FBQztRQUMzQyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN0QyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFHcEQsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQUtsQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBTSxFQUFFLEVBQUU7O1lBQzFDLElBQUksQ0FBQSxNQUFBLENBQUMsQ0FBQyxhQUFhLDBDQUFFLEtBQUssS0FBSSxDQUFDLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO2dCQUM3RCxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDM0M7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QkFBcEMsU0FBUzt1QkFBQyxZQUFZOztBQWdIekIsTUFBTSxPQUFPLE9BQU87Q0FHbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NmLWZpbGUtdXBsb2FkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuXHJcblxyXG4gIEBJbnB1dCgpIGxpbWl0ITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGZpbGVzOiBBcmNoaXZvW10gPSBbXTtcclxuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XHJcbiAgQElucHV0KCkgY29uZmlnTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIGFjY2VwdDogc3RyaW5nICA9IFwiaW1hZ2UvKixhcHBsaWNhdGlvbi9wZGZcIjtcclxuICBAT3V0cHV0KCkgb25VcGxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGVbXT4oKTtcclxuICBAT3V0cHV0KCkgb25EZWxldGVGaWxlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcbiAgQFZpZXdDaGlsZCgnZmlsZVVwbG9hZCcpIGZpbGVVcGxvYWRlciE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIG5ld0ZpbGVzOiBGaWxlW10gPSBbXTtcclxuICBwcml2YXRlIGFuaW1hdGlvbkludGVydmFsOiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VyaWNlOiBNZXNzYWdlU2VydmljZSkge1xyXG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInBhc3RlXCIsIChlOiBhbnkpID0+e1xyXG4gICAgICAgIGlmIChlLmNsaXBib2FyZERhdGE/LmZpbGVzICYmIGUuY2xpcGJvYXJkRGF0YS5maWxlcy5sZW5ndGggPiAwKXtcclxuICAgICAgICAgIHRoaXMuYXBwZW5kRmlsZShlLmNsaXBib2FyZERhdGEuZmlsZXNbMF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIGFwcGVuZEZpbGUoZmlsZTogRmlsZSl7XHJcbiAgICBjb25zdCBhbGxvd2VkVHlwZXMgPSB0aGlzLmFjY2VwdC5zcGxpdChcIixcIik7XHJcbiAgICBjb25zdCBhbGxvd2VkRmlsZSA9IGFsbG93ZWRUeXBlcy5zb21lKHBhdHRlcm4gPT4ge1xyXG4gICAgICBjb25zdCByZWdleE9iaiA9IG5ldyBSZWdFeHAocGF0dGVybik7XHJcbiAgICAgIGNvbnN0IG1hdGNoID0gcmVnZXhPYmouZXhlYyhmaWxlLnR5cGUpO1xyXG4gICAgICByZXR1cm4gbWF0Y2ggPyBtYXRjaD8ubGVuZ3RoID4gMDogZmFsc2VcclxuICAgIH0pXHJcblxyXG4gICAgaWYgKGFsbG93ZWRGaWxlKXtcclxuICAgICAgY29uc3QgbmV3RmlsZSA9IG5ldyBGaWxlKFtmaWxlXSwgdGhpcy5nZXROYW1lKGZpbGUpLCB7dHlwZTogZmlsZS50eXBlfSlcclxuICAgICAgaWYgKHRoaXMubGltaXQgPT0gMSl7XHJcbiAgICAgICAgdGhpcy5uZXdGaWxlcyA9IFtuZXdGaWxlXVxyXG4gICAgICB9ZWxzZSB0aGlzLm5ld0ZpbGVzLnB1c2gobmV3RmlsZSlcclxuICAgICAgdGhpcy5maWxlcy5wdXNoKHtuYW1lOiBuZXdGaWxlLm5hbWUsIHVybDogd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwobmV3RmlsZSl9KVxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcmljZS5hZGQoe3NldmVyaXR5OiBcIndhcm5cIiwgZGV0YWlsOiBcIlRpcG8gZGUgYXJjaGl2byBubyB2w6FsaWRvXCJ9KVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGVtaXRGaWxlcygpe1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMub25VcGxvYWQuZW1pdCh0aGlzLm5ld0ZpbGVzKVxyXG4gIH1cclxuXHJcbiAgZ2V0TmFtZShmaWxlOiBGaWxlKXtcclxuICAgIGxldCBzTmFtZSA9IFwiXCJcclxuXHJcbiAgICBsZXQgZGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICBpZih0aGlzLmNvbmZpZ05hbWUgIT09IHVuZGVmaW5lZCl7XHJcbiAgICAgIGxldCBuYW1lID0gIHRoaXMuY29uZmlnTmFtZS5zcGxpdCgnfCcpO1xyXG4gICAgICBuYW1lLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0uaW5kZXhPZihcIkRBVEVAXCIpICE9IC0xKVxyXG4gICAgICAgICAgc05hbWUgKz0gKG1vbWVudChkYXRlKSkuZm9ybWF0KGl0ZW0uc3BsaXQoJ0AnKVsxXSk7XHJcbiAgICAgICAgZWxzZSBpZihpdGVtLmluZGV4T2YoXCJAXCIpID09IC0xKVxyXG4gICAgICAgIHNOYW1lICs9IGl0ZW1cclxuICAgICAgfSlcclxuICAgICAgbGV0IGV4dCA9IHRoaXMuZ2V0RXh0KGZpbGUpXHJcbiAgICAgIHNOYW1lICs9IGV4dCA/IFwiLlwiICsgZXh0OiBcIlwiXHJcbiAgICB9XHJcbiAgICBlbHNlIHNOYW1lID0gZmlsZS5uYW1lO1xyXG4gICAgcmV0dXJuIHNOYW1lXHJcbiAgfVxyXG4gIGdldEV4dChmaWxlOiBGaWxlKSB7XHJcbiAgICBsZXQgZXh0ID0gdW5kZWZpbmVkXHJcbiAgICBsZXQgYXV4ID0gZmlsZS5uYW1lLnNwbGl0KCcuJylcclxuICAgIGlmIChhdXgubGVuZ3RoID4gMCkgZXh0ID0gYXV4W2F1eC5sZW5ndGggLSAxXVxyXG4gICAgcmV0dXJuIGV4dFxyXG4gIH1cclxuXHJcbiAgYXBwZW5kRmlsZXMoJGV2ZW50OiBhbnkpe1xyXG4gICAgaWYoJGV2ZW50LnRhcmdldC5maWxlcy5sZW5ndGggPiAwKXtcclxuICAgICAgdGhpcy5hcHBlbmRGaWxlKCRldmVudC50YXJnZXQuZmlsZXNbMF0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubGltaXQgPT0gdGhpcy5maWxlcy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5zdG9wQW5pbWF0aW9uKClcclxuICAgICAgdGhpcy5lbWl0RmlsZXMoKVxyXG4gICAgfVxyXG4gICAgZWxzZSB0aGlzLnN0YXJ0QW5pbWF0aW9uKClcclxuICAgIHRoaXMuZmlsZVVwbG9hZGVyLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBcIlwiO1xyXG4gIH1cclxuXHJcbiAgZHJvcEZpbGUoYXJjaGl2bzogQXJjaGl2byl7XHJcbiAgICB0aGlzLmZpbGVzLmZvckVhY2goKGYsIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmKGYgPT0gYXJjaGl2byl7XHJcbiAgICAgICAgdGhpcy5maWxlcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMub25EZWxldGVGaWxlLmVtaXQoaW5kZXgpXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIG9wZW5GaWxlKGFyY2hpdm86IEFyY2hpdm8pIHtcclxuICAgIHdpbmRvdy5vcGVuKGFyY2hpdm8udXJsLCAnX2JsYW5rJyk7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCAoKSA9PiBVUkwucmV2b2tlT2JqZWN0VVJMKGFyY2hpdm8udXJsKSk7XHJcbiAgfVxyXG5cclxuICBzdGFydEFuaW1hdGlvbigpIHtcclxuICAgIGNvbnN0IGJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5idXR0b24tdXBsb2FkJyk7XHJcbiAgICBpZiAoYnV0dG9uKSB7XHJcbiAgICAgIGJ1dHRvbi5jbGFzc0xpc3QuYWRkKCdhbmltYXRlLXB1bHNlJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdG9wQW5pbWF0aW9uKCkge1xyXG4gICAgY29uc3QgYnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmJ1dHRvbi11cGxvYWQnKTtcclxuICAgIGlmIChidXR0b24pIHtcclxuICAgICAgYnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoJ2FuaW1hdGUtcHVsc2UnKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBBcmNoaXZvIHtcclxuICBwdWJsaWMgdXJsISA6IHN0cmluZ1xyXG4gIHB1YmxpYyBuYW1lISA6IHN0cmluZ1xyXG59XHJcbiIsIjxkaXYgaWQ9XCJzY3JlZW5cIiAjc2NyZWVuPlxyXG4gICAgPGRpdiBjbGFzcz1cImZpbGVVcFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3RvbmVzXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIChjaGFuZ2UpPVwiYXBwZW5kRmlsZXMoJGV2ZW50KVwiIGNsYXNzPVwiZmlsZS1pbnB1dFwiICNmaWxlVXBsb2FkIG11bHRpcGxlPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgaWNvbj1cInBpIHBpLXBsdXNcIiBjbGFzcz1cInAtYnV0dG9uLWluZm9cIiAoY2xpY2spPVwiZmlsZVVwbG9hZC5jbGljaygpXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJsaW1pdCA9PSBmaWxlcy5sZW5ndGhcIiBbbG9hZGluZ109XCJsb2FkaW5nXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJsaW1pdCAhPSAxXCIgcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIiBpY29uPVwicGkgcGktdXBsb2FkXCIgY2xhc3M9XCJidXR0b24tdXBsb2FkIHAtYnV0dG9uLWluZm9cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImVtaXRGaWxlcygpXCIgW2Rpc2FibGVkXT1cImZpbGVzLmxlbmd0aCA9PSAwIHx8IGxvYWRpbmdcIiBbbG9hZGluZ109XCJsb2FkaW5nXCI+PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxocj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nc1wiPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGZpbGUgb2YgZmlsZXM7IGxldCBpID0gaW5kZXhcIiBbbmdTd2l0Y2hdPVwiZmlsZS50eXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHA+e3tpKzF9fS4ge3tmaWxlc1tpXS5uYW1lfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiIGljb249XCJwaSBwaS1leHRlcm5hbC1saW5rXCIgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5GaWxlKGZpbGUpXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIiBpY29uPVwicGkgcGktdGltZXNcIiBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tZGFuZ2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRyb3BGaWxlKGZpbGUpXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import { Component, Input, ViewChildren } from '@angular/core';
|
|
2
|
+
import * as jsonpath from 'jsonpath';
|
|
3
|
+
import { ChangeData } from '../../sf-crud.service';
|
|
4
|
+
import { Tooltip } from 'primeng/tooltip';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "primeng/api";
|
|
7
|
+
import * as i2 from "../../sf-crud.service";
|
|
8
|
+
import * as i3 from "@angular/platform-browser";
|
|
9
|
+
import * as i4 from "../../shared/services/step.service";
|
|
10
|
+
import * as i5 from "sf-ado";
|
|
11
|
+
import * as i6 from "../control/control.component";
|
|
12
|
+
import * as i7 from "sf-pdfsign";
|
|
13
|
+
import * as i8 from "sf-simulador";
|
|
14
|
+
import * as i9 from "primeng/button";
|
|
15
|
+
import * as i10 from "primeng/table";
|
|
16
|
+
import * as i11 from "primeng/toast";
|
|
17
|
+
import * as i12 from "@angular/common";
|
|
18
|
+
import * as i13 from "primeng/tooltip";
|
|
19
|
+
import * as i14 from "primeng/ripple";
|
|
20
|
+
export class FormComponent {
|
|
21
|
+
constructor(messageService, crudService, domSanitizer, stepService, adoService, jwtService) {
|
|
22
|
+
this.messageService = messageService;
|
|
23
|
+
this.crudService = crudService;
|
|
24
|
+
this.domSanitizer = domSanitizer;
|
|
25
|
+
this.stepService = stepService;
|
|
26
|
+
this.adoService = adoService;
|
|
27
|
+
this.jwtService = jwtService;
|
|
28
|
+
this.isDialog = false;
|
|
29
|
+
this.controlsLoaded = false;
|
|
30
|
+
this.isMobile = false;
|
|
31
|
+
this.loading = { inProgress: true, target: undefined };
|
|
32
|
+
if (window.innerWidth <= 768)
|
|
33
|
+
this.isMobile = true;
|
|
34
|
+
window.addEventListener('resize', () => {
|
|
35
|
+
if (window.innerWidth <= 768)
|
|
36
|
+
this.isMobile = true;
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
ngOnChanges(changes) {
|
|
40
|
+
this.buildControls();
|
|
41
|
+
}
|
|
42
|
+
ngOnInit() {
|
|
43
|
+
try {
|
|
44
|
+
this.jwtService.idKatios = this.crudService.idKatios;
|
|
45
|
+
this.jwtService.servidorIntegraciones = this.crudService.environment.ServidorIntegraciones;
|
|
46
|
+
this.adoService.servidorIntegraciones = this.crudService.environment.ServidorIntegraciones;
|
|
47
|
+
this.idKatios = this.crudService.idKatios;
|
|
48
|
+
this.stepService.requestApproved$.subscribe((approved) => {
|
|
49
|
+
if (!this.isDialog && approved) {
|
|
50
|
+
this.uiEsquema = this.crudService.getUIEsquema(this.stepService.currentIndex);
|
|
51
|
+
this.esquema = this.crudService.getEsquema(this.stepService.currentIndex);
|
|
52
|
+
this.data = this.crudService.getData(this.stepService.currentIndex);
|
|
53
|
+
this.registro = this.crudService.getRegistro(this.stepService.currentIndex);
|
|
54
|
+
this.buildControls();
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
console.error(error);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
emitLoadingForm($event) {
|
|
63
|
+
this.loading.inProgress = $event;
|
|
64
|
+
Promise.resolve().then(() => this.crudService.formLoading = this.loading); //si no se usa asi el enproceso totea con el simulador
|
|
65
|
+
}
|
|
66
|
+
buildControls() {
|
|
67
|
+
var _a, _b, _c;
|
|
68
|
+
this.visible = [];
|
|
69
|
+
this.controlsLoaded = false;
|
|
70
|
+
this.controls = [];
|
|
71
|
+
this.values = [];
|
|
72
|
+
this.uiEsquema.elements.forEach((layout, i) => {
|
|
73
|
+
var _a;
|
|
74
|
+
let isVisible = layout.conditions ? this.crudService.isConditionsCompleted(layout.conditions, this.registro.conditions || [], this.data) : true;
|
|
75
|
+
this.visible.push(layout.elements ? layout.elements.map(() => isVisible) : [isVisible]);
|
|
76
|
+
this.controls.push([]);
|
|
77
|
+
this.values.push([]);
|
|
78
|
+
(_a = layout.elements) === null || _a === void 0 ? void 0 : _a.forEach((element, j) => {
|
|
79
|
+
if (element.conditions)
|
|
80
|
+
this.visible[i][j] = this.crudService.isConditionsCompleted(element.conditions, this.registro.conditions || [], this.data);
|
|
81
|
+
if (element.ngStyle && typeof (element.ngStyle) == "string")
|
|
82
|
+
element.ngStyle = JSON.parse(element.ngStyle);
|
|
83
|
+
if (element.url) {
|
|
84
|
+
this.controls[i].push(undefined);
|
|
85
|
+
let url = this.crudService.applyStringKeys(element.url);
|
|
86
|
+
this.values[i].push(this.domSanitizer.bypassSecurityTrustResourceUrl(url));
|
|
87
|
+
}
|
|
88
|
+
else if (!element.scope) {
|
|
89
|
+
this.controls[i].push(undefined);
|
|
90
|
+
this.values[i].push(undefined);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
this.controls[i].push(this.crudService.getControl(element.scope, this.esquema));
|
|
94
|
+
this.controls[i][j].scope = element.scope;
|
|
95
|
+
this.values[i].push(this.crudService.getValue(element.scope, this.data));
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
this.controlsLoaded = true;
|
|
100
|
+
let idProceso = (_b = (_a = this.data.ADO) === null || _a === void 0 ? void 0 : _a.dataProceso) === null || _b === void 0 ? void 0 : _b.idProceso;
|
|
101
|
+
if (idProceso && ((_c = this.proceso) === null || _c === void 0 ? void 0 : _c.id) != idProceso)
|
|
102
|
+
this.refreshIntegracion(idProceso);
|
|
103
|
+
}
|
|
104
|
+
refreshIntegracion(idProceso) {
|
|
105
|
+
this.emitLoadingForm(true);
|
|
106
|
+
return Promise.all([
|
|
107
|
+
this.adoService.getProceso(idProceso).then((proceso) => {
|
|
108
|
+
this.proceso = proceso;
|
|
109
|
+
this.data.ADO.proceso = this.proceso;
|
|
110
|
+
})
|
|
111
|
+
])
|
|
112
|
+
.finally(() => this.emitLoadingForm(false));
|
|
113
|
+
}
|
|
114
|
+
extracControlFromTableElements(i, j, col) {
|
|
115
|
+
const property = this.controls[i][j].properties[col.col];
|
|
116
|
+
return property;
|
|
117
|
+
}
|
|
118
|
+
extracValueFromTableElements(i, j, k, col) {
|
|
119
|
+
const value = this.values[i][j][k][col.col];
|
|
120
|
+
return value;
|
|
121
|
+
}
|
|
122
|
+
setValue(value, scope, i, j) {
|
|
123
|
+
var _a;
|
|
124
|
+
scope = scope.replaceAll('..properties', '');
|
|
125
|
+
if (scope) {
|
|
126
|
+
let control = this.controls[i][j];
|
|
127
|
+
this.values[i][j] = value;
|
|
128
|
+
jsonpath.value(this.data, scope, value);
|
|
129
|
+
this.crudService.changeData = new ChangeData(value, scope, this.crudService.index);
|
|
130
|
+
this.uiEsquema.elements.forEach((layout, iLayout) => {
|
|
131
|
+
var _a;
|
|
132
|
+
if (layout.conditions) {
|
|
133
|
+
let isVisible = this.crudService.isConditionsCompleted(layout.conditions, this.crudService.getRegistro(this.crudService.index).conditions || [], this.data);
|
|
134
|
+
if (layout.elements)
|
|
135
|
+
this.visible[iLayout] = layout.elements.map(() => isVisible);
|
|
136
|
+
else
|
|
137
|
+
this.visible[iLayout][0] = isVisible;
|
|
138
|
+
}
|
|
139
|
+
(_a = layout.elements) === null || _a === void 0 ? void 0 : _a.forEach((element, indexEl) => {
|
|
140
|
+
if (element.conditions) {
|
|
141
|
+
this.visible[iLayout][indexEl] = this.crudService.isConditionsCompleted(element.conditions, this.registro.conditions || [], this.data);
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
(_a = control.applyKeys) === null || _a === void 0 ? void 0 : _a.forEach((i) => {
|
|
146
|
+
let key = this.registro.keys ? this.registro.keys[i] : undefined;
|
|
147
|
+
if (key)
|
|
148
|
+
this.crudService.applyKey(key, this.registro, key.indexData ? this.crudService.getData(key.indexData) : this.data);
|
|
149
|
+
});
|
|
150
|
+
this.buildControls();
|
|
151
|
+
}
|
|
152
|
+
this.crudService.applyValuesOnEvent('onChange', this.esquema, undefined, this.data);
|
|
153
|
+
}
|
|
154
|
+
sendNotification(message) {
|
|
155
|
+
this.messageService.add(message);
|
|
156
|
+
}
|
|
157
|
+
applyValuesFromObject(event) {
|
|
158
|
+
if (event.optionValue) {
|
|
159
|
+
for (let i = 0; i < event.optionValue.length; i++) {
|
|
160
|
+
const optionVal = event.optionValue[i];
|
|
161
|
+
const newVal = event.data ? this.aplyFormatValue(optionVal.scope, event.data[optionVal.key]) : null;
|
|
162
|
+
jsonpath.value(this.data, optionVal.scope.replace('.properties', ''), this.aplyFormatValue(optionVal.scope, event.data[optionVal.key]));
|
|
163
|
+
this.setValueByScope(optionVal.scope, newVal);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
setValueByScope(scope, newVal) {
|
|
168
|
+
for (let i = 0; i < this.controls.length; i++) {
|
|
169
|
+
const row = this.controls[i];
|
|
170
|
+
row.forEach((el, j) => {
|
|
171
|
+
if (el.scope && el.scope.replace('.properties', '') == scope.replace('.properties', '')) {
|
|
172
|
+
this.values[i][j] = newVal;
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
aplyFormatValue(scope, value) {
|
|
178
|
+
const control = jsonpath.query(this.esquema, scope)[0];
|
|
179
|
+
let resp;
|
|
180
|
+
switch (control.type) {
|
|
181
|
+
case 'date':
|
|
182
|
+
resp = new Date(`${value}`);
|
|
183
|
+
break;
|
|
184
|
+
case 'numeric':
|
|
185
|
+
resp = +value;
|
|
186
|
+
break;
|
|
187
|
+
default:
|
|
188
|
+
resp = value;
|
|
189
|
+
break;
|
|
190
|
+
}
|
|
191
|
+
return resp;
|
|
192
|
+
}
|
|
193
|
+
editRow(element, data, index) {
|
|
194
|
+
this.stepService.addCustomChildrenEvent("onClickedEditButton", { element, data, index });
|
|
195
|
+
}
|
|
196
|
+
deleteRow(element, index) {
|
|
197
|
+
this.stepService.addCustomChildrenEvent("onClickedDeleteButton", { element, index });
|
|
198
|
+
}
|
|
199
|
+
addObjectArray(element) {
|
|
200
|
+
this.stepService.addCustomChildrenEvent("onClickedAddButton", { element });
|
|
201
|
+
}
|
|
202
|
+
onStateDocument(state) {
|
|
203
|
+
this.data.pdf.signed = state.toUpperCase() == "FIRMADO";
|
|
204
|
+
}
|
|
205
|
+
onSimuladorChange($event) {
|
|
206
|
+
Promise.resolve().then(() => Object.assign(this.data, $event));
|
|
207
|
+
}
|
|
208
|
+
goToADO() {
|
|
209
|
+
var _a;
|
|
210
|
+
let url = window.location.href;
|
|
211
|
+
let callback = url.split('?')[0] + `?id=${this.data.idForm}`;
|
|
212
|
+
let idProceso = (_a = this.data.ADO.dataProceso) === null || _a === void 0 ? void 0 : _a.idProceso;
|
|
213
|
+
let dataProceso = this.data.ADO.dataProceso;
|
|
214
|
+
dataProceso.ctivo = this.data.idForm;
|
|
215
|
+
//this.data.ADO.idTransaction = null
|
|
216
|
+
//this.data.ADO.idProceso = null
|
|
217
|
+
if (idProceso) {
|
|
218
|
+
window.location.href = `${this.crudService.environment.WebUtilities}GWV/ADO/${this.crudService.idKatios}?id=${idProceso}`;
|
|
219
|
+
window.location.reload();
|
|
220
|
+
}
|
|
221
|
+
else if (dataProceso) {
|
|
222
|
+
window.location.href = `${this.crudService.environment.WebUtilities}GWV/ADO/${this.crudService.idKatios}?dataProceso=${btoa(JSON.stringify(dataProceso))}&callback=${encodeURIComponent(callback)}`;
|
|
223
|
+
window.location.reload();
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
onTouchDescription(id, alignRight = true) {
|
|
227
|
+
const foundTooltip = this.tooltips.find(tooltip => tooltip.el.nativeElement.id === id);
|
|
228
|
+
try {
|
|
229
|
+
foundTooltip.activate();
|
|
230
|
+
alignRight ? foundTooltip.alignRight() : foundTooltip.alignTop();
|
|
231
|
+
}
|
|
232
|
+
catch (ex) { }
|
|
233
|
+
}
|
|
234
|
+
onUnTouchDescription(descripcion) {
|
|
235
|
+
const foundTooltip = this.tooltips.find(tooltip => tooltip.el.nativeElement.id === descripcion);
|
|
236
|
+
try {
|
|
237
|
+
foundTooltip.deactivate();
|
|
238
|
+
}
|
|
239
|
+
catch (ex) { }
|
|
240
|
+
}
|
|
241
|
+
copyToClipboard(idProceso) {
|
|
242
|
+
let url = `${this.crudService.environment.WebUtilities}GWV/ADO/${this.crudService.idKatios}?id=${idProceso}`;
|
|
243
|
+
navigator.clipboard.writeText(url);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
FormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FormComponent, deps: [{ token: i1.MessageService }, { token: i2.SfCrudService }, { token: i3.DomSanitizer }, { token: i4.StepService }, { token: i5.AdoService }, { token: i5.JWTService }], target: i0.ɵɵFactoryTarget.Component });
|
|
247
|
+
FormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: FormComponent, selector: "app-form", inputs: { uiEsquema: "uiEsquema", esquema: "esquema", data: "data", isDialog: "isDialog" }, viewQueries: [{ propertyName: "tooltips", predicate: Tooltip, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"controlsLoaded\" class=\"frm-container\">\r\n <div *ngFor=\"let element of uiEsquema.elements; let i = index\" [class]=\"element?.class\" #a>\r\n <ng-container [ngSwitch]=\"element.type\" *ngIf=\"visible[i][0]\">\r\n <div class=\"label\" *ngSwitchCase=\"'Label'\" [style]=\"element?.style\">\r\n {{element?.label}}\r\n </div>\r\n <ng-container *ngSwitchCase=\"'HorizontalLayout'\">\r\n <div *ngFor=\"let el of element.elements; let j =index\" [class]=\"el?.class\">\r\n <ng-container [ngSwitch]=\"el.type\" *ngIf=\"visible[i][j]\">\r\n <sf-control *ngSwitchCase=\"'Control'\" [control]=\"controls[i][j]\" [label]=\"el.label\"\r\n [value]=\"values[i][j]\" (setValue)=\"setValue($event, el.scope, i, j)\"\r\n (sendNotification)=\"sendNotification($event)\"\r\n (sendObject)=\"applyValuesFromObject($event)\"></sf-control>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'VerticalLayout'\">\r\n <div *ngFor=\"let el of element.elements; let j =index\" [class]=\"el?.class\">\r\n <ng-container [ngSwitch]=\"el.type\" *ngIf=\"visible[i][j]\">\r\n <sf-control *ngSwitchCase=\"'Control'\" [control]=\"controls[i][j]\" [label]=\"el.label\"\r\n [value]=\"values[i][j]\" (setValue)=\"setValue($event, el.scope, i, j)\"\r\n (sendNotification)=\"sendNotification($event)\"\r\n (sendObject)=\"applyValuesFromObject($event)\"></sf-control>\r\n <div *ngSwitchCase=\"'PDF'\" class=\"pdf\">\r\n <iframe [src]=\"values[i][j]\" frameborder=\"0\" allow=\"geolocation *; camera *;\"></iframe>\r\n </div>\r\n <div *ngSwitchCase=\"'PDF-SIGN'\">\r\n <sf-sign [allowDownload]=\"true\" [idkatios]=\"idKatios\" [tdoc]=\"data.pdf.tdoc\" [ndoc]=\"data.pdf.ndoc\"\r\n [idDocument]=\"data.pdf.id\" [typeDocument]=\"data.pdf.idDoc\"\r\n (stateDocument)=\"onStateDocument($event)\"></sf-sign>\r\n </div>\r\n <ng-container *ngSwitchCase=\"'SIMULADOR'\">\r\n <sf-simulador [simulador]=\"data\" [otherToolTips]=\"data.otherTooltips\"\r\n (simuladorChange)=\"onSimuladorChange($event)\" (enProceso)=\"emitLoadingForm($event)\"></sf-simulador>\r\n </ng-container>\r\n\r\n <div *ngSwitchCase=\"'ADO'\" class=\"buttons\">\r\n <p-button *ngIf=\"!data?.ADO?.dataProceso?.idProceso\" [ngStyle]=\"el?.ngStyle\" (click)=\"goToADO()\" label=\"Validar identidad\"></p-button>\r\n </div>\r\n <div *ngSwitchCase=\"'ADO'\">\r\n <div *ngIf=\"data?.ADO?.dataProceso?.idProceso\">\r\n <div class=\"data-ado-container\">\r\n <ng-container *ngIf=\"proceso\">\r\n <i *ngIf=\"proceso?.respuestaProceso?.EsExitoso === true\" pTooltip=\"Validado\" tooltipPosition=\"top\" id=\"Validado\" class=\"pi pi-user\" style=\"color: green\"\r\n (touchstart)=\"onTouchDescription('Validado', false)\" (touchend)=\"onUnTouchDescription('Validado')\"></i>\r\n <i *ngIf=\"proceso?.respuestaProceso?.EsExitoso === false\" pTooltip=\"No validado\" tooltipPosition=\"top\" id=\"No-Validado\" class=\"pi pi-user\" style=\"color: red\"\r\n (touchstart)=\"onTouchDescription('No-Validado', false)\" (touchend)=\"onUnTouchDescription('No-Validado')\"></i>\r\n <i *ngIf=\"!proceso?.respuestaProceso\" pTooltip=\"Sin validar\" tooltipPosition=\"top\" class=\"pi pi-user\" id=\"Sin-Validar\" style=\"color: gray\"\r\n (touchstart)=\"onTouchDescription('Sin-Validar', false)\" (touchend)=\"onUnTouchDescription('Sin-Validar')\"></i>\r\n </ng-container>\r\n <div class=\"buttons\">\r\n <button pButton icon=\"pi pi-external-link\" (click)=\"goToADO()\" pTooltip=\"Abrir\" [disabled]=\"!proceso\"></button>\r\n <button pButton icon=\"pi pi-copy\" (click)=\"copyToClipboard(proceso.id)\" pTooltip=\"Copiar\" [disabled]=\"!proceso\"></button>\r\n <button pButton icon=\"pi pi-refresh\" (click)=\"refreshIntegracion(proceso.id)\" pTooltip=\"Refrescar\" [disabled]=\"!proceso\"></button>\r\n </div>\r\n </div>\r\n <p class=\"result-ado\" *ngIf=\"proceso && !proceso.respuestaProceso && proceso.estado == 'PROCESANDO'\">Procesando</p>\r\n <p class=\"result-ado\" *ngIf=\"proceso && proceso.respuestaProceso && proceso.estado == 'TERMINADO'\">{{proceso.respuestaProceso.Detalle ?? proceso.respuestaProceso.Mensaje}}</p>\r\n </div>\r\n </div>\r\n <ng-container *ngSwitchCase=\"'Table'\">\r\n <p-table [value]=\"values[i][j]\" [columns]=\"controls[i][j].config.columns\">\r\n <ng-template pTemplate=\"caption\">\r\n <div class=\"flex align-items-center justify-content-between\">\r\n <button pButton pRipple icon=\"pi pi-plus\" (click)=\"addObjectArray(el)\"\r\n class=\"p-button-success\" [disabled]=\"controls[i][j].disabled === true\"></button>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th *ngFor=\"let col of columns\">\r\n {{col.label}}\r\n </th>\r\n <ng-container>\r\n <th></th>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData let-columns=\"columns\" let-rowIndex=\"rowIndex\">\r\n <tr>\r\n <ng-container *ngFor=\"let col of columns\" [ngSwitch]=\"col.type\">\r\n <ng-container *ngSwitchCase=\"'control'\">\r\n <sf-control [control]=\"extracControlFromTableElements(i, j, col)\" [label]=\"\"\r\n [value]=\"extracValueFromTableElements(i, j, rowIndex, col)\"\r\n (sendNotification)=\"sendNotification($event)\"\r\n (sendObject)=\"applyValuesFromObject($event)\"\r\n (setValue)=\"setValue($event, extracValueFromTableElements(i, j, rowIndex, col).scope, i, j)\"\r\n [showTempValue]=\"true\"\r\n >\r\n </sf-control>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'text'\">\r\n <td>{{rowData[col.col]}}</td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'currency:USD'\">\r\n <td>{{rowData[col.col] | currency: 'USD'}}</td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date:yyyy-mm-dd'\">\r\n <td>{{rowData[col.col] | date: 'yyyy-mm-dd'}}</td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date:dd/mm/yyyy'\">\r\n <td>{{rowData[col.col] | date: 'dd/MM/yyyy'}}</td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'boolean'\">\r\n <td>\r\n <i *ngIf=\"rowData[col.col]\" class=\"pi pi-check\"></i>\r\n <i *ngIf=\"!rowData[col.col]\" class=\"pi pi-times\"></i>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container>\r\n <td>\r\n <button pButton pRipple type=\"button\"\r\n (click)=\"editRow(el, rowData, rowIndex)\" icon=\"pi pi-pencil\"\r\n class=\"p-button-rounded p-button-info mr-1\"></button>\r\n <button pButton pRipple type=\"button\" (click)=\"deleteRow(el, rowIndex)\" [disabled]=\"controls[i][j].disabled === true\"\r\n icon=\"pi pi-trash\" class=\"p-button-rounded p-button-danger\"></button>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<p-toast *ngIf=\"isDialog\"></p-toast>", styles: [":not(.col-12) .label{display:flex;justify-content:center;align-items:center;padding-inline:.5rem;margin-bottom:15px;margin-top:20px;border-radius:13px;font-size:18px;font-size:inherit;background-color:var(--primary-color);text-align:center;color:var(--normal-text-color)}.pdf{display:flex;width:100%;height:80vh;& iframe{width:80%;margin-inline:10%}}.data-ado-container{display:flex;margin-inline:auto;align-items:center;width:-moz-fit-content;width:fit-content;&>*{margin-inline:4px}&>div{display:flex;align-items:center;&>*{margin-inline:4px}}}i.pi-user{font-size:2rem}.result-ado{min-height:1rem;text-align:center}sf-simulador{display:flow-root;width:80%;margin-inline:auto;margin-bottom:35px}sf-sign{display:block;margin-inline:auto;width:80%;& pdf-viewer{min-height:130vh!important;max-height:130vh!important}}.buttons{display:flex;justify-content:space-evenly}.buttons ::ng-deep .p-button.p-component{border-radius:35px}::ng-deep *{box-shadow:none}.frm-container ::ng-deep .p-inputtext:focus,.frm-container ::ng-deep .p-inputtext:active,.frm-container ::ng-deep .p-inputwrapper:focus,.frm-container ::ng-deep .p-inputwrapper:active{border-color:var(--button-color)}.frm-container ::ng-deep .p-button{background-color:var(--button-color);border-color:var(--button-color)}.frm-container ::ng-deep .p-button:hover{background-color:var(--button-color);filter:brightness(85%)}.frm-container ::ng-deep :not(:disabled):active,.frm-container ::ng-deep :not(.p-disabled) .p-inputtext:hover,.frm-container ::ng-deep :not(.p-disabled) .p-inputwrapper:hover,.frm-container ::ng-deep :not(.p-disabled) .p-inputwrapper-focus,.frm-container ::ng-deep .p-radiobutton-box .p-highlight,.frm-container ::ng-deep .p-radiobutton .p-radiobutton-box:not(.p-disabled):hover{border-color:var(--button-color)}.frm-container ::ng-deep .p-radiobutton .p-radiobutton-box.p-highlight{background:var(--button-color);border-color:var(--button-color)!important}.frm-container ::ng-deep .p-button.p-button-success,.p-buttonset.p-button-success>.p-button,.p-splitbutton.p-button-success>.p-button{background:var(--button-color);border-color:var(--button-color)!important}@media screen and (max-width:765px){:not(.col-12) .label{height:-moz-fit-content;height:fit-content}.field{margin-bottom:.5rem}.pdf>iframe{width:100%;margin-inline:0}sf-sign{width:100%;& pdf-viewer{min-height:60vh!important;max-height:120vh!important}}sf-simulador{display:block;width:100%;margin-inline:auto}.data-ado-container{text-align:center;& .buttons{max-width:80vw;flex-direction:row}}.buttons{flex-direction:column;align-items:center}}.frm-container ::ng-deep .p-radiobutton .p-radiobutton-box:not(.p-disabled):not(.p-highlight):hover{border-color:var(--secondary-color)!important}.frm-container ::ng-deep .p-button.p-button-success:enabled:focus,.p-buttonset.p-button-success>.p-button:enabled:focus,.p-splitbutton.p-button-success>.p-button:enabled:focus{box-shadow:inset 0 0 #fff}.frm-container ::ng-deep .p-radiobutton .p-radiobutton-box.p-highlight:not(.p-disabled):hover{color:var(--secondary-color)!important}.frm-container ::ng-deep .p-radiobutton .p-radiobutton-box:not(.p-disabled).p-focus{box-shadow:inset 0 0 0 1px var(--secondary-color)!important}.frm-container ::ng-deep .p-radiobutton .p-radiobutton-box .p-radiobutton-icon{background-color:#fff}.frm-container ::ng-deep .p-slider:not(.p-disabled):hover{background-color:#e5e7eb}.frm-container ::ng-deep .p-slider{background-color:#e5e7eb}.frm-container ::ng-deep .p-slider:not(.p-disabled):hover .p-slider-range{background-color:var(--primary-color)!important}.frm-container ::ng-deep .p-button:enabled:active{background:var(--secondary-color)!important;border-color:var(--secondary-color)!important}.frm-container ::ng-deep .p-slider:not(.p-disabled):hover .p-slider-handle{border-color:var(--primary-color)!important}.frm-container ::ng-deep .p-button:focus{box-shadow:inset 0 0 0 1px var(--secondary-color)!important}.frm-container ::ng-deep .p-button:enabled:hover{background:var(--secondary-color)!important;border-color:var(--secondary-color)!important}.frm-container ::ng-deep .p-button.p-button-info,.p-buttonset.p-button-info>.p-button,.p-splitbutton.p-button-info>.p-button{background:var(--secondary-color)!important;border:1px solid var(--secondary-color)!important}\n"], components: [{ type: i6.ControlComponent, selector: "sf-control", inputs: ["showTempValue", "control", "label", "value", "appendTo"], outputs: ["setValue", "sendObject"] }, { type: i7.SignComponent, selector: "sf-sign", inputs: ["idkatios", "tdoc", "ndoc", "idDocument", "typeDocument", "allowDownload"], outputs: ["stateDocument", "loading"] }, { type: i8.SfSimuladorComponent, selector: "sf-simulador", inputs: ["simulador", "otherToolTips", "labels"], outputs: ["simuladorChange", "enProceso"] }, { type: i9.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass"], outputs: ["onClick", "onFocus", "onBlur"] }, { type: i10.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollDelay", "virtualRowHeight", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "stateKey", "stateStorage", "editMode", "groupRowsBy", "minBufferPx", "maxBufferPx", "responsiveLayout", "breakpoint", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection"], outputs: ["selectionChange", "contextMenuSelectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { type: i11.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }], directives: [{ type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i12.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i12.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i12.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i13.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i9.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { type: i14.Ripple, selector: "[pRipple]" }], pipes: { "currency": i12.CurrencyPipe, "date": i12.DatePipe } });
|
|
248
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FormComponent, decorators: [{
|
|
249
|
+
type: Component,
|
|
250
|
+
args: [{
|
|
251
|
+
selector: 'app-form',
|
|
252
|
+
templateUrl: './form.component.html',
|
|
253
|
+
styleUrls: ['./form.component.css']
|
|
254
|
+
}]
|
|
255
|
+
}], ctorParameters: function () { return [{ type: i1.MessageService }, { type: i2.SfCrudService }, { type: i3.DomSanitizer }, { type: i4.StepService }, { type: i5.AdoService }, { type: i5.JWTService }]; }, propDecorators: { uiEsquema: [{
|
|
256
|
+
type: Input
|
|
257
|
+
}], esquema: [{
|
|
258
|
+
type: Input
|
|
259
|
+
}], data: [{
|
|
260
|
+
type: Input
|
|
261
|
+
}], isDialog: [{
|
|
262
|
+
type: Input
|
|
263
|
+
}], tooltips: [{
|
|
264
|
+
type: ViewChildren,
|
|
265
|
+
args: [Tooltip]
|
|
266
|
+
}] } });
|
|
267
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZi1jcnVkL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2Zvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2YtY3J1ZC9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUErQyxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHNUcsT0FBTyxLQUFLLFFBQVEsTUFBTSxVQUFVLENBQUM7QUFHckMsT0FBTyxFQUFFLFVBQVUsRUFBMEIsTUFBTSx1QkFBdUIsQ0FBQztBQU0zRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPMUMsTUFBTSxPQUFPLGFBQWE7SUFtQnhCLFlBQ1UsY0FBOEIsRUFDOUIsV0FBMEIsRUFDMUIsWUFBMEIsRUFDMUIsV0FBd0IsRUFDeEIsVUFBc0IsRUFDdEIsVUFBc0I7UUFMdEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGdCQUFXLEdBQVgsV0FBVyxDQUFlO1FBQzFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQXJCdkIsYUFBUSxHQUFFLEtBQUssQ0FBQztRQUl6QixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUd2QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBZ0JmLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUMsQ0FBQztRQUNyRCxJQUFJLE1BQU0sQ0FBQyxVQUFVLElBQUksR0FB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QVksV0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsT0FBTyxTQUFTLEVBQUUsQ0FBQTtRQUM1RyxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNwQyxDQUFDOzsyR0ExUFUsYUFBYTsrRkFBYixhQUFhLHlLQWdCVixPQUFPLHFFQ25DdkIsb2lWQWtJb0M7NEZEL0d2QixhQUFhO2tCQUx6QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxVQUFVO29CQUNwQixXQUFXLEVBQUUsdUJBQXVCO29CQUNwQyxTQUFTLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDcEM7d09BRVUsU0FBUztzQkFBakIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBWWlCLFFBQVE7c0JBQTlCLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBRdWVyeUxpc3QsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTWVzc2FnZSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCAqIGFzIGpzb25wYXRoIGZyb20gJ2pzb25wYXRoJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IFNoZW1hIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9zaGVtYS5tb2RlbCc7XHJcbmltcG9ydCB7IENoYW5nZURhdGEsIExvYWRpbmcsIFNmQ3J1ZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZi1jcnVkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25maWdSZWdpc3RybyB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvY3J1ZC1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBTdGVwU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9zdGVwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTaW11bGFkb3IgfSBmcm9tICdzZi1zaW11bGFkb3InO1xyXG5pbXBvcnQgKiBhcyBfIGZyb20gXCJsb2Rhc2hcIjtcclxuaW1wb3J0IHsgQWRvU2VydmljZSwgSldUU2VydmljZSwgUHJvY2Vzb0FETyB9IGZyb20gJ3NmLWFkbyc7XHJcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZm9ybScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Zvcm0uY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXR7XHJcbiAgQElucHV0KCkgdWlFc3F1ZW1hOiBhbnk7XHJcbiAgQElucHV0KCkgZXNxdWVtYSE6IFNoZW1hO1xyXG4gIEBJbnB1dCgpIGRhdGE6IGFueTtcclxuICBASW5wdXQoKSBpc0RpYWxvZz0gZmFsc2U7XHJcbiAgcmVnaXN0cm8hOiBDb25maWdSZWdpc3RybztcclxuICB2YWx1ZXMhOiBhbnlbXVtdO1xyXG4gIGNvbnRyb2xzITogYW55W11bXTtcclxuICBjb250cm9sc0xvYWRlZCA9IGZhbHNlO1xyXG4gIGlkS2F0aW9zITogc3RyaW5nO1xyXG4gIHZpc2libGUhOiBib29sZWFuW11bXTtcclxuICBpc01vYmlsZSA9IGZhbHNlO1xyXG4gIHVybEFETz86IHN0cmluZztcclxuICBwcm9jZXNvOiBQcm9jZXNvQURPIHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgbG9hZGluZyE6TG9hZGluZztcclxuXHJcbiAgQFZpZXdDaGlsZHJlbihUb29sdGlwKSB0b29sdGlwcyE6IFF1ZXJ5TGlzdCA8VG9vbHRpcD47XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjcnVkU2VydmljZTogU2ZDcnVkU2VydmljZSxcclxuICAgIHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICBwcml2YXRlIHN0ZXBTZXJ2aWNlOiBTdGVwU2VydmljZSxcclxuICAgIHByaXZhdGUgYWRvU2VydmljZTogQWRvU2VydmljZSxcclxuICAgIHByaXZhdGUgand0U2VydmljZTogSldUU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5sb2FkaW5nID0ge2luUHJvZ3Jlc3M6IHRydWUsIHRhcmdldDogdW5kZWZpbmVkfTtcclxuICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8PSA3NjgpIHRoaXMuaXNNb2JpbGUgPSB0cnVlXHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgKCkgPT4ge1xyXG4gICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPD0gNzY4KSB0aGlzLmlzTW9iaWxlID0gdHJ1ZVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHRoaXMuYnVpbGRDb250cm9scygpXHJcbiAgfVxyXG5cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmp3dFNlcnZpY2UuaWRLYXRpb3MgPSB0aGlzLmNydWRTZXJ2aWNlLmlkS2F0aW9zXHJcbiAgICAgIHRoaXMuand0U2VydmljZS5zZXJ2aWRvckludGVncmFjaW9uZXMgPSB0aGlzLmNydWRTZXJ2aWNlLmVudmlyb25tZW50LlNlcnZpZG9ySW50ZWdyYWNpb25lc1xyXG4gICAgICB0aGlzLmFkb1NlcnZpY2Uuc2Vydmlkb3JJbnRlZ3JhY2lvbmVzID0gdGhpcy5jcnVkU2VydmljZS5lbnZpcm9ubWVudC5TZXJ2aWRvckludGVncmFjaW9uZXNcclxuICAgICAgdGhpcy5pZEthdGlvcyA9IHRoaXMuY3J1ZFNlcnZpY2UuaWRLYXRpb3NcclxuICAgICAgdGhpcy5zdGVwU2VydmljZS5yZXF1ZXN0QXBwcm92ZWQkLnN1YnNjcmliZSgoYXBwcm92ZWQpID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNEaWFsb2cgJiYgYXBwcm92ZWQpe1xyXG4gICAgICAgICAgdGhpcy51aUVzcXVlbWEgPSB0aGlzLmNydWRTZXJ2aWNlLmdldFVJRXNxdWVtYSh0aGlzLnN0ZXBTZXJ2aWNlLmN1cnJlbnRJbmRleClcclxuICAgICAgICAgIHRoaXMuZXNxdWVtYSA9IHRoaXMuY3J1ZFNlcnZpY2UuZ2V0RXNxdWVtYSh0aGlzLnN0ZXBTZXJ2aWNlLmN1cnJlbnRJbmRleClcclxuICAgICAgICAgIHRoaXMuZGF0YSA9IHRoaXMuY3J1ZFNlcnZpY2UuZ2V0RGF0YSh0aGlzLnN0ZXBTZXJ2aWNlLmN1cnJlbnRJbmRleCk7XHJcbiAgICAgICAgICB0aGlzLnJlZ2lzdHJvID0gdGhpcy5jcnVkU2VydmljZS5nZXRSZWdpc3Rybyh0aGlzLnN0ZXBTZXJ2aWNlLmN1cnJlbnRJbmRleClcclxuICAgICAgICAgIHRoaXMuYnVpbGRDb250cm9scygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlbWl0TG9hZGluZ0Zvcm0oJGV2ZW50OiBib29sZWFuKXtcclxuICAgIHRoaXMubG9hZGluZy5pblByb2dyZXNzID0gJGV2ZW50XHJcbiAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHRoaXMuY3J1ZFNlcnZpY2UuZm9ybUxvYWRpbmcgPSB0aGlzLmxvYWRpbmcpLy9zaSBubyBzZSB1c2EgYXNpIGVsIGVucHJvY2VzbyB0b3RlYSBjb24gZWwgc2ltdWxhZG9yXHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGJ1aWxkQ29udHJvbHMoKXtcclxuICAgIHRoaXMudmlzaWJsZSA9IFtdXHJcbiAgICB0aGlzLmNvbnRyb2xzTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmNvbnRyb2xzID0gW11cclxuICAgIHRoaXMudmFsdWVzID0gW11cclxuICAgIHRoaXMudWlFc3F1ZW1hLmVsZW1lbnRzLmZvckVhY2goKGxheW91dDogYW55LCBpOiBudW1iZXIpID0+IHtcclxuICAgICAgbGV0IGlzVmlzaWJsZSA9IGxheW91dC5jb25kaXRpb25zID8gdGhpcy5jcnVkU2VydmljZS5pc0NvbmRpdGlvbnNDb21wbGV0ZWQobGF5b3V0LmNvbmRpdGlvbnMsIHRoaXMucmVnaXN0cm8uY29uZGl0aW9ucyB8fCBbXSwgdGhpcy5kYXRhKTogdHJ1ZVxyXG4gICAgICB0aGlzLnZpc2libGUucHVzaChsYXlvdXQuZWxlbWVudHM/IGxheW91dC5lbGVtZW50cy5tYXAoKCkgPT4gaXNWaXNpYmxlKTogW2lzVmlzaWJsZV0pXHJcbiAgICAgIHRoaXMuY29udHJvbHMucHVzaChbXSlcclxuICAgICAgdGhpcy52YWx1ZXMucHVzaChbXSlcclxuXHJcbiAgICAgIGxheW91dC5lbGVtZW50cz8uZm9yRWFjaCgoZWxlbWVudDogYW55LCBqOiBudW1iZXIpID0+IHtcclxuICAgICAgICBpZiAoZWxlbWVudC5jb25kaXRpb25zKSAgdGhpcy52aXNpYmxlW2ldW2pdID0gdGhpcy5jcnVkU2VydmljZS5pc0NvbmRpdGlvbnNDb21wbGV0ZWQoZWxlbWVudC5jb25kaXRpb25zLCB0aGlzLnJlZ2lzdHJvLmNvbmRpdGlvbnMgfHwgW10sIHRoaXMuZGF0YSlcclxuXHJcbiAgICAgICAgaWYgKGVsZW1lbnQubmdTdHlsZSAmJiB0eXBlb2YoZWxlbWVudC5uZ1N0eWxlKSA9PSBcInN0cmluZ1wiKSAgZWxlbWVudC5uZ1N0eWxlID0gSlNPTi5wYXJzZShlbGVtZW50Lm5nU3R5bGUpXHJcbiAgICAgICAgaWYgKGVsZW1lbnQudXJsKXtcclxuICAgICAgICAgIHRoaXMuY29udHJvbHNbaV0ucHVzaCh1bmRlZmluZWQpXHJcbiAgICAgICAgICBsZXQgdXJsID0gdGhpcy5jcnVkU2VydmljZS5hcHBseVN0cmluZ0tleXMoZWxlbWVudC51cmwpXHJcbiAgICAgICAgICB0aGlzLnZhbHVlc1tpXS5wdXNoKHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh1cmwpKVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICghZWxlbWVudC5zY29wZSl7XHJcbiAgICAgICAgICB0aGlzLmNvbnRyb2xzW2ldLnB1c2godW5kZWZpbmVkKVxyXG4gICAgICAgICAgdGhpcy52YWx1ZXNbaV0ucHVzaCh1bmRlZmluZWQpXHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICB0aGlzLmNvbnRyb2xzW2ldLnB1c2godGhpcy5jcnVkU2VydmljZS5nZXRDb250cm9sKGVsZW1lbnQuc2NvcGUsIHRoaXMuZXNxdWVtYSkpXHJcbiAgICAgICAgICB0aGlzLmNvbnRyb2xzW2ldW2pdLnNjb3BlID0gZWxlbWVudC5zY29wZVxyXG4gICAgICAgICAgdGhpcy52YWx1ZXNbaV0ucHVzaCh0aGlzLmNydWRTZXJ2aWNlLmdldFZhbHVlKGVsZW1lbnQuc2NvcGUsIHRoaXMuZGF0YSkpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuY29udHJvbHNMb2FkZWQgPSB0cnVlO1xyXG4gICAgbGV0IGlkUHJvY2VzbyA9IHRoaXMuZGF0YS5BRE8/LmRhdGFQcm9jZXNvPy5pZFByb2Nlc29cclxuICAgIGlmIChpZFByb2Nlc28gJiYgdGhpcy5wcm9jZXNvPy5pZCAhPSBpZFByb2Nlc28pIHRoaXMucmVmcmVzaEludGVncmFjaW9uKGlkUHJvY2VzbylcclxuICB9XHJcblxyXG4gIHJlZnJlc2hJbnRlZ3JhY2lvbihpZFByb2Nlc286IG51bWJlcil7XHJcbiAgICB0aGlzLmVtaXRMb2FkaW5nRm9ybSh0cnVlKVxyXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFtcclxuICAgICAgICB0aGlzLmFkb1NlcnZpY2UuZ2V0UHJvY2VzbyhpZFByb2Nlc28pLnRoZW4oKHByb2Nlc28pID0+IHtcclxuICAgICAgICAgIHRoaXMucHJvY2VzbyA9IHByb2Nlc29cclxuICAgICAgICAgIHRoaXMuZGF0YS5BRE8ucHJvY2VzbyA9IHRoaXMucHJvY2Vzb1xyXG4gICAgICAgIH0pXHJcbiAgICBdKVxyXG4gICAgLmZpbmFsbHkoKCkgPT4gdGhpcy5lbWl0TG9hZGluZ0Zvcm0oZmFsc2UpKVxyXG4gIH1cclxuXHJcbiAgZXh0cmFjQ29udHJvbEZyb21UYWJsZUVsZW1lbnRzKGk6YW55LCBqOmFueSwgY29sOmFueSl7XHJcbiAgICBjb25zdCBwcm9wZXJ0eSA9IHRoaXMuY29udHJvbHNbaV1bal0ucHJvcGVydGllc1tjb2wuY29sXTtcclxuICAgIHJldHVybiBwcm9wZXJ0eVxyXG4gIH1cclxuXHJcbiAgZXh0cmFjVmFsdWVGcm9tVGFibGVFbGVtZW50cyhpOmFueSwgajphbnksIGs6YW55LCBjb2w6YW55KXtcclxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy52YWx1ZXNbaV1bal1ba11bY29sLmNvbF07XHJcbiAgICByZXR1cm4gdmFsdWVcclxuICB9XHJcblxyXG4gIHNldFZhbHVlKHZhbHVlOiBhbnksIHNjb3BlOiBhbnksIGk6IG51bWJlciwgajogbnVtYmVyKSB7XHJcbiAgICBzY29wZSA9IHNjb3BlLnJlcGxhY2VBbGwoJy4ucHJvcGVydGllcycsICcnKVxyXG4gICAgaWYgKHNjb3BlKSB7XHJcbiAgICAgIGxldCBjb250cm9sID0gdGhpcy5jb250cm9sc1tpXVtqXVxyXG4gICAgICB0aGlzLnZhbHVlc1tpXVtqXSA9IHZhbHVlO1xyXG4gICAgICBqc29ucGF0aC52YWx1ZSh0aGlzLmRhdGEsIHNjb3BlLCB2YWx1ZSk7XHJcbiAgICAgIHRoaXMuY3J1ZFNlcnZpY2UuY2hhbmdlRGF0YSA9IG5ldyBDaGFuZ2VEYXRhKHZhbHVlLCBzY29wZSwgdGhpcy5jcnVkU2VydmljZS5pbmRleClcclxuICAgICAgdGhpcy51aUVzcXVlbWEuZWxlbWVudHMuZm9yRWFjaCgobGF5b3V0OiBhbnksIGlMYXlvdXQ6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGlmIChsYXlvdXQuY29uZGl0aW9ucyl7XHJcbiAgICAgICAgICBsZXQgaXNWaXNpYmxlID0gdGhpcy5jcnVkU2VydmljZS5pc0NvbmRpdGlvbnNDb21wbGV0ZWQobGF5b3V0LmNvbmRpdGlvbnMsIHRoaXMuY3J1ZFNlcnZpY2UuZ2V0UmVnaXN0cm8odGhpcy5jcnVkU2VydmljZS5pbmRleCkuY29uZGl0aW9ucyB8fCBbXSwgdGhpcy5kYXRhKVxyXG4gICAgICAgICAgaWYobGF5b3V0LmVsZW1lbnRzKSB0aGlzLnZpc2libGVbaUxheW91dF0gPSBsYXlvdXQuZWxlbWVudHMubWFwKCgpID0+IGlzVmlzaWJsZSlcclxuICAgICAgICAgIGVsc2UgdGhpcy52aXNpYmxlW2lMYXlvdXRdWzBdID0gaXNWaXNpYmxlXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsYXlvdXQuZWxlbWVudHM/LmZvckVhY2goKGVsZW1lbnQ6IGFueSwgaW5kZXhFbDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICBpZiAoZWxlbWVudC5jb25kaXRpb25zKXtcclxuICAgICAgICAgICAgdGhpcy52aXNpYmxlW2lMYXlvdXRdW2luZGV4RWxdID0gdGhpcy5jcnVkU2VydmljZS5pc0NvbmRpdGlvbnNDb21wbGV0ZWQoZWxlbWVudC5jb25kaXRpb25zLCB0aGlzLnJlZ2lzdHJvLmNvbmRpdGlvbnMgfHwgW10sIHRoaXMuZGF0YSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgICBjb250cm9sLmFwcGx5S2V5cz8uZm9yRWFjaCgoaTogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgbGV0IGtleSA9IHRoaXMucmVnaXN0cm8ua2V5cyA/IHRoaXMucmVnaXN0cm8ua2V5c1tpXSA6IHVuZGVmaW5lZFxyXG4gICAgICAgIGlmIChrZXkpIHRoaXMuY3J1ZFNlcnZpY2UuYXBwbHlLZXkoa2V5LCB0aGlzLnJlZ2lzdHJvLCBrZXkuaW5kZXhEYXRhID8gdGhpcy5jcnVkU2VydmljZS5nZXREYXRhKGtleS5pbmRleERhdGEpIDogdGhpcy5kYXRhKVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5idWlsZENvbnRyb2xzKClcclxuICAgIH1cclxuICAgIHRoaXMuY3J1ZFNlcnZpY2UuYXBwbHlWYWx1ZXNPbkV2ZW50KCdvbkNoYW5nZScsIHRoaXMuZXNxdWVtYSwgdW5kZWZpbmVkLCB0aGlzLmRhdGEpO1xyXG4gIH1cclxuXHJcblxyXG4gIHNlbmROb3RpZmljYXRpb24obWVzc2FnZTogTWVzc2FnZSkge1xyXG4gICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQobWVzc2FnZSlcclxuICB9XHJcblxyXG4gIGFwcGx5VmFsdWVzRnJvbU9iamVjdChldmVudDogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQub3B0aW9uVmFsdWUpe1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGV2ZW50Lm9wdGlvblZhbHVlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3Qgb3B0aW9uVmFsID0gZXZlbnQub3B0aW9uVmFsdWVbaV07XHJcbiAgICAgICAgY29uc3QgbmV3VmFsID0gZXZlbnQuZGF0YSA/IHRoaXMuYXBseUZvcm1hdFZhbHVlKG9wdGlvblZhbC5zY29wZSwgZXZlbnQuZGF0YVtvcHRpb25WYWwua2V5XSk6IG51bGw7XHJcbiAgICAgICAganNvbnBhdGgudmFsdWUodGhpcy5kYXRhLCBvcHRpb25WYWwuc2NvcGUucmVwbGFjZSgnLnByb3BlcnRpZXMnLCcnKSwgdGhpcy5hcGx5Rm9ybWF0VmFsdWUob3B0aW9uVmFsLnNjb3BlLCBldmVudC5kYXRhW29wdGlvblZhbC5rZXldKSlcclxuICAgICAgICB0aGlzLnNldFZhbHVlQnlTY29wZShvcHRpb25WYWwuc2NvcGUsIG5ld1ZhbClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0VmFsdWVCeVNjb3BlKHNjb3BlOiBzdHJpbmcsIG5ld1ZhbDogYW55KXtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb250cm9scy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCByb3cgPSB0aGlzLmNvbnRyb2xzW2ldO1xyXG4gICAgICByb3cuZm9yRWFjaCgoZWwsIGopID0+IHtcclxuICAgICAgICBpZiAoZWwuc2NvcGUgJiYgZWwuc2NvcGUucmVwbGFjZSgnLnByb3BlcnRpZXMnLCcnKT09IHNjb3BlLnJlcGxhY2UoJy5wcm9wZXJ0aWVzJywnJykpe1xyXG4gICAgICAgICAgdGhpcy52YWx1ZXNbaV1bal0gPSBuZXdWYWxcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhcGx5Rm9ybWF0VmFsdWUoc2NvcGU6IHN0cmluZywgdmFsdWU6IGFueSkge1xyXG4gICAgY29uc3QgY29udHJvbCA9IGpzb25wYXRoLnF1ZXJ5KHRoaXMuZXNxdWVtYSwgc2NvcGUpWzBdXHJcbiAgICBsZXQgcmVzcDtcclxuICAgIHN3aXRjaCAoY29udHJvbC50eXBlKSB7XHJcbiAgICAgIGNhc2UgJ2RhdGUnOlxyXG4gICAgICAgIHJlc3AgPSBuZXcgRGF0ZShgJHt2YWx1ZX1gKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdudW1lcmljJzpcclxuICAgICAgICByZXNwID0gK3ZhbHVlXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmVzcCA9IHZhbHVlXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzcFxyXG4gIH1cclxuXHJcbiAgZWRpdFJvdyhlbGVtZW50OiBhbnksIGRhdGE6IGFueSwgaW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5zdGVwU2VydmljZS5hZGRDdXN0b21DaGlsZHJlbkV2ZW50KFwib25DbGlja2VkRWRpdEJ1dHRvblwiLCB7ZWxlbWVudCwgZGF0YSwgaW5kZXh9KVxyXG4gIH1cclxuXHJcbiAgZGVsZXRlUm93KGVsZW1lbnQ6IGFueSwgaW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5zdGVwU2VydmljZS5hZGRDdXN0b21DaGlsZHJlbkV2ZW50KFwib25DbGlja2VkRGVsZXRlQnV0dG9uXCIsIHtlbGVtZW50LCBpbmRleH0pXHJcbiAgfVxyXG5cclxuICBhZGRPYmplY3RBcnJheShlbGVtZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc3RlcFNlcnZpY2UuYWRkQ3VzdG9tQ2hpbGRyZW5FdmVudChcIm9uQ2xpY2tlZEFkZEJ1dHRvblwiLCB7ZWxlbWVudH0pXHJcbiAgfVxyXG5cclxuICBvblN0YXRlRG9jdW1lbnQoc3RhdGU6IHN0cmluZyl7XHJcbiAgICB0aGlzLmRhdGEucGRmLnNpZ25lZCA9IHN0YXRlLnRvVXBwZXJDYXNlKCkgPT0gXCJGSVJNQURPXCJcclxuICB9XHJcblxyXG4gIG9uU2ltdWxhZG9yQ2hhbmdlKCRldmVudDogU2ltdWxhZG9yKSB7XHJcbiAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IE9iamVjdC5hc3NpZ24odGhpcy5kYXRhLCAkZXZlbnQpKVxyXG4gIH1cclxuXHJcbiAgZ29Ub0FETygpe1xyXG4gICAgbGV0IHVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xyXG4gICAgbGV0IGNhbGxiYWNrID0gdXJsLnNwbGl0KCc/JylbMF0gKyBgP2lkPSR7dGhpcy5kYXRhLmlkRm9ybX1gO1xyXG4gICAgbGV0IGlkUHJvY2VzbyA9IHRoaXMuZGF0YS5BRE8uZGF0YVByb2Nlc28/LmlkUHJvY2Vzb1xyXG4gICAgbGV0IGRhdGFQcm9jZXNvID0gdGhpcy5kYXRhLkFETy5kYXRhUHJvY2Vzb1xyXG4gICAgZGF0YVByb2Nlc28uY3Rpdm8gPSB0aGlzLmRhdGEuaWRGb3JtXHJcbiAgICAvL3RoaXMuZGF0YS5BRE8uaWRUcmFuc2FjdGlvbiA9IG51bGxcclxuICAgIC8vdGhpcy5kYXRhLkFETy5pZFByb2Nlc28gPSBudWxsXHJcbiAgICBpZiAoaWRQcm9jZXNvKXtcclxuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgJHt0aGlzLmNydWRTZXJ2aWNlLmVudmlyb25tZW50LldlYlV0aWxpdGllc31HV1YvQURPLyR7dGhpcy5jcnVkU2VydmljZS5pZEthdGlvc30/aWQ9JHtpZFByb2Nlc299YFxyXG4gICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChkYXRhUHJvY2Vzbyl7XHJcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYCR7dGhpcy5jcnVkU2VydmljZS5lbnZpcm9ubWVudC5XZWJVdGlsaXRpZXN9R1dWL0FETy8ke3RoaXMuY3J1ZFNlcnZpY2UuaWRLYXRpb3N9P2RhdGFQcm9jZXNvPSR7YnRvYShKU09OLnN0cmluZ2lmeShkYXRhUHJvY2VzbykpfSZjYWxsYmFjaz0ke2VuY29kZVVSSUNvbXBvbmVudChjYWxsYmFjayl9YFxyXG4gICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uVG91Y2hEZXNjcmlwdGlvbihpZDogc3RyaW5nLCBhbGlnblJpZ2h0PXRydWUpIHtcclxuICAgIGNvbnN0IGZvdW5kVG9vbHRpcCA9IHRoaXMudG9vbHRpcHMuZmluZCh0b29sdGlwID0+IHRvb2x0aXAuZWwubmF0aXZlRWxlbWVudC5pZCA9PT0gaWQpITtcclxuICAgIHRyeXtcclxuICAgICAgZm91bmRUb29sdGlwLmFjdGl2YXRlKCk7XHJcbiAgICAgIGFsaWduUmlnaHQgPyBmb3VuZFRvb2x0aXAuYWxpZ25SaWdodCgpOiBmb3VuZFRvb2x0aXAuYWxpZ25Ub3AoKTtcclxuICAgIH1jYXRjaChleCl7fVxyXG4gIH1cclxuXHJcbiAgb25VblRvdWNoRGVzY3JpcHRpb24oZGVzY3JpcGNpb246IHN0cmluZykge1xyXG4gICAgY29uc3QgZm91bmRUb29sdGlwID0gdGhpcy50b29sdGlwcy5maW5kKHRvb2x0aXAgPT4gdG9vbHRpcC5lbC5uYXRpdmVFbGVtZW50LmlkID09PSBkZXNjcmlwY2lvbikhO1xyXG4gICAgdHJ5e1xyXG4gICAgICBmb3VuZFRvb2x0aXAuZGVhY3RpdmF0ZSgpO1xyXG4gICAgfWNhdGNoKGV4KXt9XHJcbiAgfVxyXG5cclxuICBjb3B5VG9DbGlwYm9hcmQoaWRQcm9jZXNvOiBzdHJpbmcpe1xyXG4gICAgbGV0IHVybCA9IGAke3RoaXMuY3J1ZFNlcnZpY2UuZW52aXJvbm1lbnQuV2ViVXRpbGl0aWVzfUdXVi9BRE8vJHt0aGlzLmNydWRTZXJ2aWNlLmlkS2F0aW9zfT9pZD0ke2lkUHJvY2Vzb31gXHJcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh1cmwpXHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCJjb250cm9sc0xvYWRlZFwiIGNsYXNzPVwiZnJtLWNvbnRhaW5lclwiPlxyXG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgZWxlbWVudCBvZiB1aUVzcXVlbWEuZWxlbWVudHM7IGxldCBpID0gaW5kZXhcIiBbY2xhc3NdPVwiZWxlbWVudD8uY2xhc3NcIiAjYT5cclxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJlbGVtZW50LnR5cGVcIiAqbmdJZj1cInZpc2libGVbaV1bMF1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgKm5nU3dpdGNoQ2FzZT1cIidMYWJlbCdcIiBbc3R5bGVdPVwiZWxlbWVudD8uc3R5bGVcIj5cclxuICAgICAgICAgICAgICAgIHt7ZWxlbWVudD8ubGFiZWx9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ0hvcml6b250YWxMYXlvdXQnXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBlbCBvZiBlbGVtZW50LmVsZW1lbnRzOyBsZXQgaiA9aW5kZXhcIiBbY2xhc3NdPVwiZWw/LmNsYXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiZWwudHlwZVwiICpuZ0lmPVwidmlzaWJsZVtpXVtqXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c2YtY29udHJvbCAqbmdTd2l0Y2hDYXNlPVwiJ0NvbnRyb2wnXCIgW2NvbnRyb2xdPVwiY29udHJvbHNbaV1bal1cIiBbbGFiZWxdPVwiZWwubGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlc1tpXVtqXVwiIChzZXRWYWx1ZSk9XCJzZXRWYWx1ZSgkZXZlbnQsIGVsLnNjb3BlLCBpLCBqKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VuZE5vdGlmaWNhdGlvbik9XCJzZW5kTm90aWZpY2F0aW9uKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbmRPYmplY3QpPVwiYXBwbHlWYWx1ZXNGcm9tT2JqZWN0KCRldmVudClcIj48L3NmLWNvbnRyb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidWZXJ0aWNhbExheW91dCdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGVsIG9mIGVsZW1lbnQuZWxlbWVudHM7IGxldCBqID1pbmRleFwiIFtjbGFzc109XCJlbD8uY2xhc3NcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJlbC50eXBlXCIgKm5nSWY9XCJ2aXNpYmxlW2ldW2pdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZi1jb250cm9sICpuZ1N3aXRjaENhc2U9XCInQ29udHJvbCdcIiBbY29udHJvbF09XCJjb250cm9sc1tpXVtqXVwiIFtsYWJlbF09XCJlbC5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwidmFsdWVzW2ldW2pdXCIgKHNldFZhbHVlKT1cInNldFZhbHVlKCRldmVudCwgZWwuc2NvcGUsIGksIGopXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZW5kTm90aWZpY2F0aW9uKT1cInNlbmROb3RpZmljYXRpb24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VuZE9iamVjdCk9XCJhcHBseVZhbHVlc0Zyb21PYmplY3QoJGV2ZW50KVwiPjwvc2YtY29udHJvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ1BERidcIiBjbGFzcz1cInBkZlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlmcmFtZSBbc3JjXT1cInZhbHVlc1tpXVtqXVwiIGZyYW1lYm9yZGVyPVwiMFwiIGFsbG93PVwiZ2VvbG9jYXRpb24gKjsgY2FtZXJhICo7XCI+PC9pZnJhbWU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInUERGLVNJR04nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2Ytc2lnbiBbYWxsb3dEb3dubG9hZF09XCJ0cnVlXCIgW2lka2F0aW9zXT1cImlkS2F0aW9zXCIgW3Rkb2NdPVwiZGF0YS5wZGYudGRvY1wiIFtuZG9jXT1cImRhdGEucGRmLm5kb2NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZERvY3VtZW50XT1cImRhdGEucGRmLmlkXCIgW3R5cGVEb2N1bWVudF09XCJkYXRhLnBkZi5pZERvY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0YXRlRG9jdW1lbnQpPVwib25TdGF0ZURvY3VtZW50KCRldmVudClcIj48L3NmLXNpZ24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInU0lNVUxBRE9SJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNmLXNpbXVsYWRvciAgW3NpbXVsYWRvcl09XCJkYXRhXCIgW290aGVyVG9vbFRpcHNdPVwiZGF0YS5vdGhlclRvb2x0aXBzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2ltdWxhZG9yQ2hhbmdlKT1cIm9uU2ltdWxhZG9yQ2hhbmdlKCRldmVudClcIiAoZW5Qcm9jZXNvKT1cImVtaXRMb2FkaW5nRm9ybSgkZXZlbnQpXCI+PC9zZi1zaW11bGFkb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ0FETydcIiBjbGFzcz1cImJ1dHRvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWJ1dHRvbiAqbmdJZj1cIiFkYXRhPy5BRE8/LmRhdGFQcm9jZXNvPy5pZFByb2Nlc29cIiBbbmdTdHlsZV09XCJlbD8ubmdTdHlsZVwiIChjbGljayk9XCJnb1RvQURPKClcIiBsYWJlbD1cIlZhbGlkYXIgaWRlbnRpZGFkXCI+PC9wLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidBRE8nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRhdGE/LkFETz8uZGF0YVByb2Nlc28/LmlkUHJvY2Vzb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGEtYWRvLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJvY2Vzb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwicHJvY2Vzbz8ucmVzcHVlc3RhUHJvY2Vzbz8uRXNFeGl0b3NvID09PSB0cnVlXCIgcFRvb2x0aXA9XCJWYWxpZGFkb1wiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiIGlkPVwiVmFsaWRhZG9cIiBjbGFzcz1cInBpIHBpLXVzZXJcIiBzdHlsZT1cImNvbG9yOiBncmVlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRvdWNoc3RhcnQpPVwib25Ub3VjaERlc2NyaXB0aW9uKCdWYWxpZGFkbycsIGZhbHNlKVwiICh0b3VjaGVuZCk9XCJvblVuVG91Y2hEZXNjcmlwdGlvbignVmFsaWRhZG8nKVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cInByb2Nlc28/LnJlc3B1ZXN0YVByb2Nlc28/LkVzRXhpdG9zbyA9PT0gZmFsc2VcIiBwVG9vbHRpcD1cIk5vIHZhbGlkYWRvXCIgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCIgaWQ9XCJOby1WYWxpZGFkb1wiIGNsYXNzPVwicGkgcGktdXNlclwiIHN0eWxlPVwiY29sb3I6IHJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRvdWNoc3RhcnQpPVwib25Ub3VjaERlc2NyaXB0aW9uKCdOby1WYWxpZGFkbycsIGZhbHNlKVwiICh0b3VjaGVuZCk9XCJvblVuVG91Y2hEZXNjcmlwdGlvbignTm8tVmFsaWRhZG8nKVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIiFwcm9jZXNvPy5yZXNwdWVzdGFQcm9jZXNvXCIgcFRvb2x0aXA9XCJTaW4gdmFsaWRhclwiIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiIGNsYXNzPVwicGkgcGktdXNlclwiIGlkPVwiU2luLVZhbGlkYXJcIiBzdHlsZT1cImNvbG9yOiBncmF5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodG91Y2hzdGFydCk9XCJvblRvdWNoRGVzY3JpcHRpb24oJ1Npbi1WYWxpZGFyJywgZmFsc2UpXCIgKHRvdWNoZW5kKT1cIm9uVW5Ub3VjaERlc2NyaXB0aW9uKCdTaW4tVmFsaWRhcicpXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gaWNvbj1cInBpIHBpLWV4dGVybmFsLWxpbmtcIiAoY2xpY2spPVwiZ29Ub0FETygpXCIgcFRvb2x0aXA9XCJBYnJpclwiIFtkaXNhYmxlZF09XCIhcHJvY2Vzb1wiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBpY29uPVwicGkgcGktY29weVwiIChjbGljayk9XCJjb3B5VG9DbGlwYm9hcmQocHJvY2Vzby5pZClcIiBwVG9vbHRpcD1cIkNvcGlhclwiIFtkaXNhYmxlZF09XCIhcHJvY2Vzb1wiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBpY29uPVwicGkgcGktcmVmcmVzaFwiIChjbGljayk9XCJyZWZyZXNoSW50ZWdyYWNpb24ocHJvY2Vzby5pZClcIiBwVG9vbHRpcD1cIlJlZnJlc2NhclwiIFtkaXNhYmxlZF09XCIhcHJvY2Vzb1wiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJyZXN1bHQtYWRvXCIgKm5nSWY9XCJwcm9jZXNvICYmICFwcm9jZXNvLnJlc3B1ZXN0YVByb2Nlc28gJiYgcHJvY2Vzby5lc3RhZG8gPT0gJ1BST0NFU0FORE8nXCI+UHJvY2VzYW5kbzwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicmVzdWx0LWFkb1wiICpuZ0lmPVwicHJvY2VzbyAmJiBwcm9jZXNvLnJlc3B1ZXN0YVByb2Nlc28gJiYgcHJvY2Vzby5lc3RhZG8gPT0gJ1RFUk1JTkFETydcIj57e3Byb2Nlc28ucmVzcHVlc3RhUHJvY2Vzby5EZXRhbGxlID8/IHByb2Nlc28ucmVzcHVlc3RhUHJvY2Vzby5NZW5zYWplfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInVGFibGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC10YWJsZSBbdmFsdWVdPVwidmFsdWVzW2ldW2pdXCIgW2NvbHVtbnNdPVwiY29udHJvbHNbaV1bal0uY29uZmlnLmNvbHVtbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY2FwdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGljb249XCJwaSBwaS1wbHVzXCIgKGNsaWNrKT1cImFkZE9iamVjdEFycmF5KGVsKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1zdWNjZXNzXCIgW2Rpc2FibGVkXT1cImNvbnRyb2xzW2ldW2pdLmRpc2FibGVkID09PSB0cnVlXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiIGxldC1jb2x1bW5zPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb2wubGFiZWx9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LXJvd0RhdGEgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCIgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIiBbbmdTd2l0Y2hdPVwiY29sLnR5cGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInY29udHJvbCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNmLWNvbnRyb2wgW2NvbnRyb2xdPVwiZXh0cmFjQ29udHJvbEZyb21UYWJsZUVsZW1lbnRzKGksIGosIGNvbClcIiBbbGFiZWxdPVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJleHRyYWNWYWx1ZUZyb21UYWJsZUVsZW1lbnRzKGksIGosIHJvd0luZGV4LCBjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZW5kTm90aWZpY2F0aW9uKT1cInNlbmROb3RpZmljYXRpb24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VuZE9iamVjdCk9XCJhcHBseVZhbHVlc0Zyb21PYmplY3QoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0VmFsdWUpPVwic2V0VmFsdWUoJGV2ZW50LCBleHRyYWNWYWx1ZUZyb21UYWJsZUVsZW1lbnRzKGksIGosIHJvd0luZGV4LCBjb2wpLnNjb3BlLCBpLCBqKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1RlbXBWYWx1ZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZi1jb250cm9sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tyb3dEYXRhW2NvbC5jb2xdfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjdXJyZW5jeTpVU0QnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3Jvd0RhdGFbY29sLmNvbF0gfCBjdXJyZW5jeTogJ1VTRCd9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGU6eXl5eS1tbS1kZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7cm93RGF0YVtjb2wuY29sXSB8IGRhdGU6ICd5eXl5LW1tLWRkJ319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGF0ZTpkZC9tbS95eXl5J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tyb3dEYXRhW2NvbC5jb2xdIHwgZGF0ZTogJ2RkL01NL3l5eXknfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidib29sZWFuJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cInJvd0RhdGFbY29sLmNvbF1cIiBjbGFzcz1cInBpIHBpLWNoZWNrXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCIhcm93RGF0YVtjb2wuY29sXVwiIGNsYXNzPVwicGkgcGktdGltZXNcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlZGl0Um93KGVsLCByb3dEYXRhLCByb3dJbmRleClcIiBpY29uPVwicGkgcGktcGVuY2lsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi1pbmZvIG1yLTFcIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJkZWxldGVSb3coZWwsIHJvd0luZGV4KVwiIFtkaXNhYmxlZF09XCJjb250cm9sc1tpXVtqXS5kaXNhYmxlZCA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktdHJhc2hcIiBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tZGFuZ2VyXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPHAtdG9hc3QgKm5nSWY9XCJpc0RpYWxvZ1wiPjwvcC10b2FzdD4iXX0=
|