iptdevs-design-system 2.7.29 → 2.7.31

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.
Files changed (40) hide show
  1. package/esm2020/lib/cod/cod-documents-section/cod-documents-section.component.mjs +16 -0
  2. package/esm2020/lib/cod/cod-form/cod-form.component.mjs +227 -0
  3. package/esm2020/lib/cod/cod.module.mjs +86 -0
  4. package/esm2020/lib/cod/logic/calculate-quotes.service.mjs +72 -0
  5. package/esm2020/lib/cod/logic/cod-form-controls.mjs +91 -0
  6. package/esm2020/lib/cod/logic/cod-form-steps.mjs +29 -0
  7. package/esm2020/lib/cod/logic/communicator.service.mjs +28 -0
  8. package/esm2020/lib/cod/logic/local-storage-cod.service.mjs +39 -0
  9. package/esm2020/lib/cod/steps/cod-form-step-five/cod-form-step-five.component.mjs +145 -0
  10. package/esm2020/lib/cod/steps/cod-form-step-four/cod-form-step-four.component.mjs +251 -0
  11. package/esm2020/lib/cod/steps/cod-form-step-one/cod-form-step-one.component.mjs +200 -0
  12. package/esm2020/lib/cod/steps/cod-form-step-three/cod-form-step-three.component.mjs +175 -0
  13. package/esm2020/lib/cod/steps/cod-form-step-two/cod-form-step-two.component.mjs +255 -0
  14. package/esm2020/lib/core/core.module.mjs +6 -3
  15. package/esm2020/lib/core/services/copies.service.mjs +17 -0
  16. package/esm2020/lib/core/utils/copies.mjs +214 -0
  17. package/esm2020/lib/design-system.module.mjs +8 -4
  18. package/esm2020/public-api.mjs +19 -1
  19. package/fesm2015/iptdevs-design-system.mjs +1790 -51
  20. package/fesm2015/iptdevs-design-system.mjs.map +1 -1
  21. package/fesm2020/iptdevs-design-system.mjs +1790 -51
  22. package/fesm2020/iptdevs-design-system.mjs.map +1 -1
  23. package/lib/cod/cod-documents-section/cod-documents-section.component.d.ts +8 -0
  24. package/lib/cod/cod-form/cod-form.component.d.ts +37 -0
  25. package/lib/cod/cod.module.d.ts +20 -0
  26. package/lib/cod/logic/calculate-quotes.service.d.ts +14 -0
  27. package/lib/cod/logic/cod-form-controls.d.ts +16 -0
  28. package/lib/cod/logic/cod-form-steps.d.ts +15 -0
  29. package/lib/cod/logic/communicator.service.d.ts +13 -0
  30. package/lib/cod/logic/local-storage-cod.service.d.ts +8 -0
  31. package/lib/cod/steps/cod-form-step-five/cod-form-step-five.component.d.ts +31 -0
  32. package/lib/cod/steps/cod-form-step-four/cod-form-step-four.component.d.ts +47 -0
  33. package/lib/cod/steps/cod-form-step-one/cod-form-step-one.component.d.ts +46 -0
  34. package/lib/cod/steps/cod-form-step-three/cod-form-step-three.component.d.ts +35 -0
  35. package/lib/cod/steps/cod-form-step-two/cod-form-step-two.component.d.ts +44 -0
  36. package/lib/core/services/copies.service.d.ts +7 -0
  37. package/lib/core/utils/copies.d.ts +1 -0
  38. package/lib/design-system.module.d.ts +2 -1
  39. package/package.json +1 -1
  40. package/public-api.d.ts +14 -0
@@ -0,0 +1,16 @@
1
+ import { Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "primeng/button";
5
+ export class CodDocumentsSectionComponent {
6
+ constructor() { }
7
+ ngOnInit() {
8
+ }
9
+ }
10
+ CodDocumentsSectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: CodDocumentsSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
11
+ CodDocumentsSectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: CodDocumentsSectionComponent, selector: "ipt-cod-documents-section", ngImport: i0, template: "<div class=\"container flex flex-column bg-white border-round-2xl p-3 container animate__animated animate__fadeInUp\">\n\n <span class=\"bg-primary p-2 border-round mb-2 w-auto text-lg font-semibold\">Documentos del COD</span>\n\n <div *ngFor=\"let item of [1,2,3,4,5]\" class=\"document_item flex align-items-center p-2 border-round\">\n <span>Documento de identidad</span>\n <div class=\"ml-auto\">\n <button pButton pRipple type=\"button\" icon=\"pi pi-eye\" class=\"p-button-rounded p-button-sm ml-auto mr-1\"></button>\n <button pButton pRipple type=\"button\" icon=\"pi pi-trash\" class=\"p-button-rounded p-button-sm p-button-danger ml-auto\"></button>\n </div>\n </div>\n\n <hr>\n <button pButton pRipple type=\"button\" icon=\"pi pi-plus\" label=\"Agregar\" class=\"p-button-rounded p-button-sm ml-auto mt-2\"></button>\n\n</div>\n", styles: [".document_item{transition:.15s;gap:1rem;max-height:150px}.document_item:hover{cursor:pointer;box-shadow:#64646f33 0 7px 29px}\n"], directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }] });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: CodDocumentsSectionComponent, decorators: [{
13
+ type: Component,
14
+ args: [{ selector: 'ipt-cod-documents-section', template: "<div class=\"container flex flex-column bg-white border-round-2xl p-3 container animate__animated animate__fadeInUp\">\n\n <span class=\"bg-primary p-2 border-round mb-2 w-auto text-lg font-semibold\">Documentos del COD</span>\n\n <div *ngFor=\"let item of [1,2,3,4,5]\" class=\"document_item flex align-items-center p-2 border-round\">\n <span>Documento de identidad</span>\n <div class=\"ml-auto\">\n <button pButton pRipple type=\"button\" icon=\"pi pi-eye\" class=\"p-button-rounded p-button-sm ml-auto mr-1\"></button>\n <button pButton pRipple type=\"button\" icon=\"pi pi-trash\" class=\"p-button-rounded p-button-sm p-button-danger ml-auto\"></button>\n </div>\n </div>\n\n <hr>\n <button pButton pRipple type=\"button\" icon=\"pi pi-plus\" label=\"Agregar\" class=\"p-button-rounded p-button-sm ml-auto mt-2\"></button>\n\n</div>\n", styles: [".document_item{transition:.15s;gap:1rem;max-height:150px}.document_item:hover{cursor:pointer;box-shadow:#64646f33 0 7px 29px}\n"] }]
15
+ }], ctorParameters: function () { return []; } });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLWRvY3VtZW50cy1zZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2Rlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb2QvY29kLWRvY3VtZW50cy1zZWN0aW9uL2NvZC1kb2N1bWVudHMtc2VjdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29kL2NvZC1kb2N1bWVudHMtc2VjdGlvbi9jb2QtZG9jdW1lbnRzLXNlY3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7OztBQU9sRCxNQUFNLE9BQU8sNEJBQTRCO0lBRXZDLGdCQUFnQixDQUFDO0lBRWpCLFFBQVE7SUFDUixDQUFDOzt5SEFMVSw0QkFBNEI7NkdBQTVCLDRCQUE0QixpRUNQekMsazJCQWdCQTsyRkRUYSw0QkFBNEI7a0JBTHhDLFNBQVM7K0JBQ0UsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaXB0LWNvZC1kb2N1bWVudHMtc2VjdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2QtZG9jdW1lbnRzLXNlY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb2QtZG9jdW1lbnRzLXNlY3Rpb24uY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIENvZERvY3VtZW50c1NlY3Rpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lciBmbGV4IGZsZXgtY29sdW1uIGJnLXdoaXRlIGJvcmRlci1yb3VuZC0yeGwgcC0zIGNvbnRhaW5lciBhbmltYXRlX19hbmltYXRlZCBhbmltYXRlX19mYWRlSW5VcFwiPlxuXG4gIDxzcGFuIGNsYXNzPVwiYmctcHJpbWFyeSBwLTIgYm9yZGVyLXJvdW5kIG1iLTIgdy1hdXRvIHRleHQtbGcgZm9udC1zZW1pYm9sZFwiPkRvY3VtZW50b3MgZGVsIENPRDwvc3Bhbj5cblxuICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIFsxLDIsMyw0LDVdXCIgY2xhc3M9XCJkb2N1bWVudF9pdGVtIGZsZXggYWxpZ24taXRlbXMtY2VudGVyIHAtMiBib3JkZXItcm91bmRcIj5cbiAgICA8c3Bhbj5Eb2N1bWVudG8gZGUgaWRlbnRpZGFkPC9zcGFuPlxuICAgIDxkaXYgY2xhc3M9XCJtbC1hdXRvXCI+XG4gICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgaWNvbj1cInBpIHBpLWV5ZVwiIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi1zbSBtbC1hdXRvIG1yLTFcIj48L2J1dHRvbj5cbiAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIiBpY29uPVwicGkgcGktdHJhc2hcIiBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tc20gcC1idXR0b24tZGFuZ2VyIG1sLWF1dG9cIj48L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGhyPlxuICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgaWNvbj1cInBpIHBpLXBsdXNcIiBsYWJlbD1cIkFncmVnYXJcIiBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tc20gbWwtYXV0byBtdC0yXCI+PC9idXR0b24+XG5cbjwvZGl2PlxuIl19
@@ -0,0 +1,227 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as moment from 'moment';
3
+ import Swal from 'sweetalert2';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../core/utils/base-service/base.service";
6
+ import * as i2 from "../logic/local-storage-cod.service";
7
+ import * as i3 from "../logic/cod-form-controls";
8
+ import * as i4 from "../../core/services/commercial-service/comercial.service";
9
+ import * as i5 from "primeng/tabview";
10
+ import * as i6 from "../steps/cod-form-step-one/cod-form-step-one.component";
11
+ import * as i7 from "../steps/cod-form-step-two/cod-form-step-two.component";
12
+ import * as i8 from "../steps/cod-form-step-three/cod-form-step-three.component";
13
+ import * as i9 from "../steps/cod-form-step-four/cod-form-step-four.component";
14
+ import * as i10 from "../steps/cod-form-step-five/cod-form-step-five.component";
15
+ import * as i11 from "../../components/atoms/loader/loader.component";
16
+ import * as i12 from "@angular/common";
17
+ export class CodFormComponent {
18
+ constructor(baseService, localStorageCOD, codFormControls, commercialService) {
19
+ this.baseService = baseService;
20
+ this.localStorageCOD = localStorageCOD;
21
+ this.codFormControls = codFormControls;
22
+ this.commercialService = commercialService;
23
+ this.allowedRoles = [
24
+ 30, 31, 32, 40, 41, 42,
25
+ ];
26
+ this.currentStep = 0;
27
+ this.formTitle = 'Formulario para creación del COD';
28
+ this.formSteps = 5;
29
+ this.isLoading = false;
30
+ this.loaderMessage = '';
31
+ this.userRole = this.baseService.getUserRole();
32
+ }
33
+ ngOnChanges(changes) {
34
+ if (changes['codCode']) {
35
+ this.formTitle = 'Formulario para verificar información del COD';
36
+ this.getCodbyCode();
37
+ }
38
+ else {
39
+ this.formTitle = 'Formulario para creación del COD';
40
+ }
41
+ }
42
+ allowedRole() {
43
+ return this.allowedRoles.includes(this.userRole);
44
+ }
45
+ getCodbyCode() {
46
+ // TODO: Traer COD por código y pintarlo
47
+ console.log(this.codCode);
48
+ }
49
+ saveFinancingData(data) {
50
+ if (data) {
51
+ const dates = [];
52
+ data.forEach(p => {
53
+ const date = p[2].split(',')[1];
54
+ const formattedDate = new Date(date);
55
+ const momentDate = moment(formattedDate).format().split('T')[0];
56
+ dates.push(momentDate);
57
+ });
58
+ this.financingData = dates;
59
+ }
60
+ }
61
+ getFormAction(action) {
62
+ if (!this.financingData && this.localStorageCOD.getCodFormData(4, 'payment_method') === '1') {
63
+ Swal.fire({
64
+ title: 'Querido asesor',
65
+ text: 'Debe hacer el cálculo de las cuotas en el paso 4',
66
+ icon: 'error'
67
+ });
68
+ return;
69
+ }
70
+ const totalData = [];
71
+ this.subscription = this.codFormControls.getControlValues().subscribe((controls) => {
72
+ for (let i = 1; i <= this.formSteps; i++) {
73
+ let controlsByStep = controls[i - 1];
74
+ controlsByStep.forEach(control => {
75
+ let value = this.localStorageCOD.getCodFormData(i, control.name);
76
+ // Cambiar True/False del multiculturalismo 1/0
77
+ if (value === 'false' && control.description === 'Multiculturalismo') {
78
+ totalData.push({
79
+ control: control.name,
80
+ isRequired: control.required,
81
+ value: '0',
82
+ description: control.description
83
+ });
84
+ }
85
+ else if (value === 'false' && control.description === 'Multiculturalismo') {
86
+ totalData.push({
87
+ control: control.name,
88
+ isRequired: control.required,
89
+ value: '1',
90
+ description: control.description
91
+ });
92
+ }
93
+ else {
94
+ totalData.push({
95
+ control: control.name,
96
+ isRequired: control.required,
97
+ value,
98
+ description: control.description
99
+ });
100
+ }
101
+ });
102
+ }
103
+ // Validar errores
104
+ for (let i = 0; i < totalData.length; i++) {
105
+ const element = totalData[i];
106
+ if (!element.value && element.isRequired) {
107
+ Swal.fire({
108
+ title: 'Error',
109
+ text: `Revisar el campo: "${element.description}"`,
110
+ icon: 'error'
111
+ });
112
+ break;
113
+ }
114
+ }
115
+ if (action === 'create')
116
+ this.createCOD(totalData);
117
+ if (action === 'update')
118
+ this.updateCOD(totalData);
119
+ });
120
+ this.subscription.unsubscribe();
121
+ }
122
+ updateCOD(totalData) {
123
+ console.log('actualizando COD...');
124
+ }
125
+ createCOD(totalData) {
126
+ this.isLoading = true;
127
+ this.loaderMessage = 'Creando COD, espere un momento';
128
+ let request = this.getCreateCODRq(totalData);
129
+ this.commercialService.createCOD(request).subscribe({
130
+ next: (response) => {
131
+ console.log(response);
132
+ if (response.message.code === 1) {
133
+ this.isLoading = false;
134
+ this.loaderMessage = '';
135
+ Swal.fire({
136
+ title: 'Perfecto!',
137
+ text: 'El COD ha sido creado exitosamente.',
138
+ icon: 'success'
139
+ });
140
+ }
141
+ },
142
+ error: (err) => {
143
+ console.log(err);
144
+ this.isLoading = false;
145
+ this.loaderMessage = '';
146
+ Swal.fire({
147
+ title: 'Error',
148
+ text: err.error.text,
149
+ icon: 'error'
150
+ });
151
+ }
152
+ });
153
+ }
154
+ getCreateCODRq(data) {
155
+ let request = {
156
+ token: this.baseService.getUserToken(),
157
+ academic_plan: data.filter(data => data.control === 'academic_plan')[0].value,
158
+ course_type: data.filter(data => data.control === 'course_type')[0].value,
159
+ agreement_by_category: data.filter(data => data.control === 'agreement_by_category')[0].value,
160
+ english_level: data.filter(data => data.control === 'english_level')[0].value,
161
+ availible_courses: data.filter(data => data.control === 'availible_courses')[0].value,
162
+ student_address: data.filter(data => data.control === 'student_address')[0].value,
163
+ birthdate: data.filter(data => data.control === 'birthdate')[0].value,
164
+ country: data.filter(data => data.control === 'country')[0].value,
165
+ state: data.filter(data => data.control === 'state')[0].value,
166
+ city: data.filter(data => data.control === 'city')[0].value,
167
+ student_id_card_type: data.filter(data => data.control === 'student_id_card_type')[0].value,
168
+ student_id_card: data.filter(data => data.control === 'student_id_card')[0].value,
169
+ student_last_name: data.filter(data => data.control === 'student_last_name')[0].value,
170
+ student_name: data.filter(data => data.control === 'student_name')[0].value,
171
+ student_email: data.filter(data => data.control === 'student_email')[0].value,
172
+ nickname: data.filter(data => data.control === 'nickname')[0].value,
173
+ gender: data.filter(data => data.control === 'gender')[0].value,
174
+ age: data.filter(data => data.control === 'age')[0].value,
175
+ student_occupation: data.filter(data => data.control === 'student_occupation')[0].value,
176
+ stratum: data.filter(data => data.control === 'stratum')[0].value,
177
+ grade: data.filter(data => data.control === 'grade')[0].value,
178
+ civil_status: data.filter(data => data.control === 'civil_status')[0].value,
179
+ student_phone_indicative: data.filter(data => data.control === 'student_phone_indicative')[0].value,
180
+ student_phone_number: data.filter(data => data.control === 'student_phone_number')[0].value,
181
+ password: data.filter(data => data.control === 'password')[0].value,
182
+ re_password: data.filter(data => data.control === 're_password')[0].value,
183
+ parent_id_card_type: data.filter(data => data.control === 'parent_id_card_type')[0].value,
184
+ parent_id_card: data.filter(data => data.control === 'parent_id_card')[0].value,
185
+ parent_last_name: data.filter(data => data.control === 'parent_last_name')[0].value,
186
+ parent_name: data.filter(data => data.control === 'parent_name')[0].value,
187
+ needAtendant: data.filter(data => data.control === 'needAtendant')[0].value,
188
+ parent_phone_indicative: data.filter(data => data.control === 'parent_phone_indicative')[0].value,
189
+ parent_occupation: data.filter(data => data.control === 'parent_occupation')[0].value,
190
+ parent_address: data.filter(data => data.control === 'parent_address')[0].value,
191
+ parent_phone_number: data.filter(data => data.control === 'parent_phone_number')[0].value,
192
+ payment_date: data.filter(data => data.control === 'payment_date')[0].value,
193
+ program_price: data.filter(data => data.control === 'program_price')[0].value,
194
+ payment_method: data.filter(data => data.control === 'payment_method')[0].value,
195
+ quota_times: data.filter(data => data.control === 'quota_times')[0].value,
196
+ total_price: data.filter(data => data.control === 'total_price')[0].value,
197
+ marketing_reasons: data.filter(data => data.control === 'marketing_reasons')[0].value,
198
+ observation: data.filter(data => data.control === 'observation')[0].value,
199
+ study_reasons: data.filter(data => data.control === 'study_reasons')[0].value,
200
+ terms: data.filter(data => data.control === 'terms')[0].value,
201
+ disability: data.filter(data => data.control === 'disability')[0].value,
202
+ multiculturalism_1: data.filter(data => data.control === 'multiculturalism_1')[0].value,
203
+ multiculturalism_2: data.filter(data => data.control === 'multiculturalism_2')[0].value,
204
+ multiculturalism_3: data.filter(data => data.control === 'multiculturalism_3')[0].value,
205
+ multiculturalism_4: data.filter(data => data.control === 'multiculturalism_4')[0].value,
206
+ multiculturalism_5: data.filter(data => data.control === 'multiculturalism_5')[0].value,
207
+ multiculturalism_6: data.filter(data => data.control === 'multiculturalism_6')[0].value,
208
+ health_regimen: data.filter(data => data.control === 'health_regimen')[0].value,
209
+ payment_dates: this.financingData
210
+ };
211
+ return request;
212
+ }
213
+ changeStep(step) {
214
+ this.currentStep = step;
215
+ }
216
+ }
217
+ CodFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: CodFormComponent, deps: [{ token: i1.BaseService }, { token: i2.LocalStorageCODService }, { token: i3.CodFormControls }, { token: i4.CommercialService }], target: i0.ɵɵFactoryTarget.Component });
218
+ CodFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: CodFormComponent, selector: "ipt-cod-form", inputs: { dataFromPreviusCodData: "dataFromPreviusCodData", codCode: "codCode" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"allowedRole() ; else Unauthorized\" class=\"container flex flex-column bg-white border-round-2xl p-3 container animate__animated animate__fadeInUp\">\r\n\r\n <span class=\"bg-primary p-2 border-round mb-2 w-auto text-lg font-semibold\">{{ formTitle }}</span>\r\n\r\n <p-tabView [activeIndex]=\"currentStep\" (activeIndexChange)=\"currentStep = $event\" [scrollable]=\"true\">\r\n <p-tabPanel leftIcon=\"pi pi-star\" header=\"1. Planes y convenios\">\r\n <app-cod-form-step-one (changeStepEvent)=\"changeStep($event)\" class=\"p-1\"></app-cod-form-step-one>\r\n </p-tabPanel>\r\n <p-tabPanel leftIcon=\"pi pi-id-card\" header=\"2. Datos del estudiante\">\r\n <app-cod-form-step-two [initialData]=\"dataFromPreviusCodData\" (changeStepEvent)=\"changeStep($event)\" class=\"p-1\"></app-cod-form-step-two>\r\n </p-tabPanel>\r\n <p-tabPanel leftIcon=\"pi pi-user-edit\" header=\"3. Datos del acudiente\">\r\n <app-cod-form-step-three (changeStepEvent)=\"changeStep($event)\" class=\"p-1\"></app-cod-form-step-three>\r\n </p-tabPanel>\r\n <p-tabPanel leftIcon=\"pi pi-money-bill\" header=\"4. Valores\">\r\n <app-cod-form-step-four (changeStepEvent)=\"changeStep($event)\" (financingData)=\"saveFinancingData($event)\" class=\"p-1\"></app-cod-form-step-four>\r\n </p-tabPanel>\r\n <p-tabPanel leftIcon=\"pi pi-eye\" header=\"5. Observaciones\">\r\n <app-cod-form-step-five [userRole]=\"userRole\" (changeStepEvent)=\"changeStep($event)\" (action)=\"getFormAction($event)\" class=\"p-1\"></app-cod-form-step-five>\r\n </p-tabPanel>\r\n </p-tabView>\r\n\r\n \r\n</div>\r\n\r\n<ng-template #Unauthorized>\r\n <span class=\"flex justify-content-center font-bold p-2 bg-yellow-200 border-round-lg w-full\">\r\n No tienes los permisos para acceder a esta funcionalidad, comun\u00EDcate con el desarrollador.\r\n </span>\r\n</ng-template>\r\n\r\n\r\n<ipt-loader *ngIf=\"isLoading\" [isDialog]=\"true\" [message]=\"loaderMessage\"></ipt-loader>", components: [{ type: i5.TabView, selector: "p-tabView", inputs: ["orientation", "style", "styleClass", "controlClose", "scrollable", "activeIndex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { type: i5.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { type: i6.CodFormStepOneComponent, selector: "app-cod-form-step-one", outputs: ["changeStepEvent"] }, { type: i7.CodFormStepTwoComponent, selector: "app-cod-form-step-two", inputs: ["initialData"], outputs: ["changeStepEvent"] }, { type: i8.CodFormStepThreeComponent, selector: "app-cod-form-step-three", outputs: ["changeStepEvent"] }, { type: i9.CodFormStepFourComponent, selector: "app-cod-form-step-four", outputs: ["changeStepEvent", "financingData"] }, { type: i10.CodFormStepFiveComponent, selector: "app-cod-form-step-five", inputs: ["userRole"], outputs: ["changeStepEvent", "action"] }, { type: i11.LoaderComponent, selector: "ipt-loader", inputs: ["message", "isDialog"] }], directives: [{ type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
219
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: CodFormComponent, decorators: [{
220
+ type: Component,
221
+ args: [{ selector: 'ipt-cod-form', template: "<div *ngIf=\"allowedRole() ; else Unauthorized\" class=\"container flex flex-column bg-white border-round-2xl p-3 container animate__animated animate__fadeInUp\">\r\n\r\n <span class=\"bg-primary p-2 border-round mb-2 w-auto text-lg font-semibold\">{{ formTitle }}</span>\r\n\r\n <p-tabView [activeIndex]=\"currentStep\" (activeIndexChange)=\"currentStep = $event\" [scrollable]=\"true\">\r\n <p-tabPanel leftIcon=\"pi pi-star\" header=\"1. Planes y convenios\">\r\n <app-cod-form-step-one (changeStepEvent)=\"changeStep($event)\" class=\"p-1\"></app-cod-form-step-one>\r\n </p-tabPanel>\r\n <p-tabPanel leftIcon=\"pi pi-id-card\" header=\"2. Datos del estudiante\">\r\n <app-cod-form-step-two [initialData]=\"dataFromPreviusCodData\" (changeStepEvent)=\"changeStep($event)\" class=\"p-1\"></app-cod-form-step-two>\r\n </p-tabPanel>\r\n <p-tabPanel leftIcon=\"pi pi-user-edit\" header=\"3. Datos del acudiente\">\r\n <app-cod-form-step-three (changeStepEvent)=\"changeStep($event)\" class=\"p-1\"></app-cod-form-step-three>\r\n </p-tabPanel>\r\n <p-tabPanel leftIcon=\"pi pi-money-bill\" header=\"4. Valores\">\r\n <app-cod-form-step-four (changeStepEvent)=\"changeStep($event)\" (financingData)=\"saveFinancingData($event)\" class=\"p-1\"></app-cod-form-step-four>\r\n </p-tabPanel>\r\n <p-tabPanel leftIcon=\"pi pi-eye\" header=\"5. Observaciones\">\r\n <app-cod-form-step-five [userRole]=\"userRole\" (changeStepEvent)=\"changeStep($event)\" (action)=\"getFormAction($event)\" class=\"p-1\"></app-cod-form-step-five>\r\n </p-tabPanel>\r\n </p-tabView>\r\n\r\n \r\n</div>\r\n\r\n<ng-template #Unauthorized>\r\n <span class=\"flex justify-content-center font-bold p-2 bg-yellow-200 border-round-lg w-full\">\r\n No tienes los permisos para acceder a esta funcionalidad, comun\u00EDcate con el desarrollador.\r\n </span>\r\n</ng-template>\r\n\r\n\r\n<ipt-loader *ngIf=\"isLoading\" [isDialog]=\"true\" [message]=\"loaderMessage\"></ipt-loader>", styles: [] }]
222
+ }], ctorParameters: function () { return [{ type: i1.BaseService }, { type: i2.LocalStorageCODService }, { type: i3.CodFormControls }, { type: i4.CommercialService }]; }, propDecorators: { dataFromPreviusCodData: [{
223
+ type: Input
224
+ }], codCode: [{
225
+ type: Input
226
+ }] } });
227
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvZC9jb2QtZm9ybS9jb2QtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29kL2NvZC1mb3JtL2NvZC1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUVqQyxPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBWS9CLE1BQU0sT0FBTyxnQkFBZ0I7SUFtQjNCLFlBQ1UsV0FBd0IsRUFDeEIsZUFBdUMsRUFDdkMsZUFBZ0MsRUFDaEMsaUJBQW9DO1FBSHBDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtRQUN2QyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQWhCdEMsaUJBQVksR0FBYTtZQUMvQixFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7U0FDdkIsQ0FBQztRQUVLLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBQ3hCLGNBQVMsR0FBVyxrQ0FBa0MsQ0FBQztRQUV2RCxjQUFTLEdBQVcsQ0FBQyxDQUFDO1FBRXRCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0Isa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFRaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFB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LENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEtBQUssb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLO1lBQ3ZGLGtCQUFrQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxLQUFLLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSztZQUN2RixrQkFBa0IsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUs7WUFDdkYsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEtBQUssb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLO1lBQ3ZGLGNBQWMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUs7WUFDL0UsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFjO1NBQ25DLENBQUE7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVk7UUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDMUIsQ0FBQzs7NkdBNU5VLGdCQUFnQjtpR0FBaEIsZ0JBQWdCLDJKQ2Y3Qix5OURBZ0N1RjsyRkRqQjFFLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxjQUFjO3FNQU1mLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgU3dhbCBmcm9tICdzd2VldGFsZXJ0Mic7XHJcbmltcG9ydCB7IENyZWF0ZUNPRFJxIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMvY29kL2NvZC1ycS5tb2RlbCc7XHJcbmltcG9ydCB7IENvbW1lcmNpYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9jb21tZXJjaWFsLXNlcnZpY2UvY29tZXJjaWFsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYXNlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMvYmFzZS1zZXJ2aWNlL2Jhc2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IENvZEZvcm1Db250cm9scywgQ29udHJvbCB9IGZyb20gJy4uL2xvZ2ljL2NvZC1mb3JtLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgTG9jYWxTdG9yYWdlQ09EU2VydmljZSB9IGZyb20gJy4uL2xvZ2ljL2xvY2FsLXN0b3JhZ2UtY29kLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpcHQtY29kLWZvcm0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2QtZm9ybS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29kRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcblxyXG4gIEBJbnB1dCgpIGRhdGFGcm9tUHJldml1c0NvZERhdGE/OiBhbnk7XHJcbiAgQElucHV0KCkgY29kQ29kZT86IG51bWJlcjtcclxuXHJcbiAgc3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBwcml2YXRlIGFsbG93ZWRSb2xlczogbnVtYmVyW10gPSBbXHJcbiAgICAzMCwgMzEsIDMyLCA0MCwgNDEsIDQyLFxyXG4gIF07XHJcblxyXG4gIHB1YmxpYyBjdXJyZW50U3RlcDogbnVtYmVyID0gMDtcclxuICBwdWJsaWMgZm9ybVRpdGxlOiBzdHJpbmcgPSAnRm9ybXVsYXJpbyBwYXJhIGNyZWFjacOzbiBkZWwgQ09EJztcclxuICBwdWJsaWMgdXNlclJvbGU6IG51bWJlcjtcclxuICBwdWJsaWMgZm9ybVN0ZXBzOiBudW1iZXIgPSA1O1xyXG4gIHB1YmxpYyBmaW5hbmNpbmdEYXRhPzogYW55W107XHJcbiAgcHVibGljIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBsb2FkZXJNZXNzYWdlOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGJhc2VTZXJ2aWNlOiBCYXNlU2VydmljZSxcclxuICAgIHByaXZhdGUgbG9jYWxTdG9yYWdlQ09EOiBMb2NhbFN0b3JhZ2VDT0RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb2RGb3JtQ29udHJvbHM6IENvZEZvcm1Db250cm9scyxcclxuICAgIHByaXZhdGUgY29tbWVyY2lhbFNlcnZpY2U6IENvbW1lcmNpYWxTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLnVzZXJSb2xlID0gdGhpcy5iYXNlU2VydmljZS5nZXRVc2VyUm9sZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2NvZENvZGUnXSkge1xyXG4gICAgICB0aGlzLmZvcm1UaXRsZSA9ICdGb3JtdWxhcmlvIHBhcmEgdmVyaWZpY2FyIGluZm9ybWFjacOzbiBkZWwgQ09EJztcclxuICAgICAgdGhpcy5nZXRDb2RieUNvZGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybVRpdGxlID0gJ0Zvcm11bGFyaW8gcGFyYSBjcmVhY2nDs24gZGVsIENPRCc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhbGxvd2VkUm9sZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmFsbG93ZWRSb2xlcy5pbmNsdWRlcyh0aGlzLnVzZXJSb2xlKTtcclxuICB9XHJcblxyXG4gIGdldENvZGJ5Q29kZSgpIHtcclxuICAgIC8vIFRPRE86IFRyYWVyIENPRCBwb3IgY8OzZGlnbyB5IHBpbnRhcmxvXHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLmNvZENvZGUpO1xyXG4gIH1cclxuXHJcbiAgc2F2ZUZpbmFuY2luZ0RhdGEoZGF0YTogYW55W10pIHtcclxuICAgIGlmIChkYXRhKSB7XHJcbiAgICAgIGNvbnN0IGRhdGVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICBkYXRhLmZvckVhY2gocCA9PiB7XHJcbiAgICAgICAgY29uc3QgZGF0ZSA9IHBbMl0uc3BsaXQoJywnKVsxXTtcclxuICAgICAgICBjb25zdCBmb3JtYXR0ZWREYXRlID0gbmV3IERhdGUoZGF0ZSk7XHJcbiAgICAgICAgY29uc3QgbW9tZW50RGF0ZSA9IG1vbWVudChmb3JtYXR0ZWREYXRlKS5mb3JtYXQoKS5zcGxpdCgnVCcpWzBdO1xyXG4gICAgICAgIGRhdGVzLnB1c2gobW9tZW50RGF0ZSk7XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZmluYW5jaW5nRGF0YSA9IGRhdGVzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Rm9ybUFjdGlvbihhY3Rpb246IHN0cmluZykge1xyXG4gICAgaWYgKCF0aGlzLmZpbmFuY2luZ0RhdGEgJiYgdGhpcy5sb2NhbFN0b3JhZ2VDT0QuZ2V0Q29kRm9ybURhdGEoNCwgJ3BheW1lbnRfbWV0aG9kJykgPT09ICcxJykge1xyXG4gICAgICBTd2FsLmZpcmUoe1xyXG4gICAgICAgIHRpdGxlOiAnUXVlcmlkbyBhc2Vzb3InLFxyXG4gICAgICAgIHRleHQ6ICdEZWJlIGhhY2VyIGVsIGPDoWxjdWxvIGRlIGxhcyBjdW90YXMgZW4gZWwgcGFzbyA0JyxcclxuICAgICAgICBpY29uOiAnZXJyb3InXHJcbiAgICAgIH0pXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHRvdGFsRGF0YTogYW55W10gPSBbXTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuY29kRm9ybUNvbnRyb2xzLmdldENvbnRyb2xWYWx1ZXMoKS5zdWJzY3JpYmUoKGNvbnRyb2xzKSA9PiB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHRoaXMuZm9ybVN0ZXBzOyBpKyspIHtcclxuICAgICAgICBsZXQgY29udHJvbHNCeVN0ZXA6IENvbnRyb2xbXSA9IGNvbnRyb2xzW2ktMV07XHJcbiAgICAgICAgY29udHJvbHNCeVN0ZXAuZm9yRWFjaChjb250cm9sID0+IHtcclxuICAgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMubG9jYWxTdG9yYWdlQ09ELmdldENvZEZvcm1EYXRhKGksIGNvbnRyb2wubmFtZSk7XHJcbiAgICAgICAgICAvLyBDYW1iaWFyIFRydWUvRmFsc2UgZGVsIG11bHRpY3VsdHVyYWxpc21vIDEvMFxyXG4gICAgICAgICAgaWYgKHZhbHVlID09PSAnZmFsc2UnICYmIGNvbnRyb2wuZGVzY3JpcHRpb24gPT09ICdNdWx0aWN1bHR1cmFsaXNtbycpIHtcclxuICAgICAgICAgICAgdG90YWxEYXRhLnB1c2goe1xyXG4gICAgICAgICAgICAgIGNvbnRyb2w6IGNvbnRyb2wubmFtZSxcclxuICAgICAgICAgICAgICBpc1JlcXVpcmVkOiBjb250cm9sLnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAnMCcsXHJcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGNvbnRyb2wuZGVzY3JpcHRpb25cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT09ICdmYWxzZScgJiYgY29udHJvbC5kZXNjcmlwdGlvbiA9PT0gJ011bHRpY3VsdHVyYWxpc21vJykge1xyXG4gICAgICAgICAgICB0b3RhbERhdGEucHVzaCh7XHJcbiAgICAgICAgICAgICAgY29udHJvbDogY29udHJvbC5uYW1lLFxyXG4gICAgICAgICAgICAgIGlzUmVxdWlyZWQ6IGNvbnRyb2wucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICcxJyxcclxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogY29udHJvbC5kZXNjcmlwdGlvblxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdG90YWxEYXRhLnB1c2goe1xyXG4gICAgICAgICAgICAgIGNvbnRyb2w6IGNvbnRyb2wubmFtZSxcclxuICAgICAgICAgICAgICBpc1JlcXVpcmVkOiBjb250cm9sLnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgIHZhbHVlLFxyXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBjb250cm9sLmRlc2NyaXB0aW9uXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFZhbGlkYXIgZXJyb3Jlc1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRvdGFsRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0b3RhbERhdGFbaV07XHJcbiAgICAgICAgaWYgKCFlbGVtZW50LnZhbHVlICYmIGVsZW1lbnQuaXNSZXF1aXJlZCkge1xyXG4gICAgICAgICAgU3dhbC5maXJlKHtcclxuICAgICAgICAgICAgdGl0bGU6ICdFcnJvcicsXHJcbiAgICAgICAgICAgIHRleHQ6IGBSZXZpc2FyIGVsIGNhbXBvOiBcIiR7ZWxlbWVudC5kZXNjcmlwdGlvbn1cImAsXHJcbiAgICAgICAgICAgIGljb246ICdlcnJvcidcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoYWN0aW9uID09PSAnY3JlYXRlJykgdGhpcy5jcmVhdGVDT0QodG90YWxEYXRhKTtcclxuICAgICAgaWYgKGFjdGlvbiA9PT0gJ3VwZGF0ZScpIHRoaXMudXBkYXRlQ09EKHRvdGFsRGF0YSk7XHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgdXBkYXRlQ09EKHRvdGFsRGF0YTogYW55W10pIHtcclxuICAgIGNvbnNvbGUubG9nKCdhY3R1YWxpemFuZG8gQ09ELi4uJyk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVDT0QodG90YWxEYXRhOiBhbnlbXSkge1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5sb2FkZXJNZXNzYWdlID0gJ0NyZWFuZG8gQ09ELCBlc3BlcmUgdW4gbW9tZW50bydcclxuXHJcbiAgICBsZXQgcmVxdWVzdDogQ3JlYXRlQ09EUnEgPSB0aGlzLmdldENyZWF0ZUNPRFJxKHRvdGFsRGF0YSk7XHJcbiAgICB0aGlzLmNvbW1lcmNpYWxTZXJ2aWNlLmNyZWF0ZUNPRChyZXF1ZXN0KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKTtcclxuICAgICAgICBpZiAocmVzcG9uc2UubWVzc2FnZS5jb2RlID09PSAxKSB7XHJcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5sb2FkZXJNZXNzYWdlID0gJyc7XHJcbiAgICAgICAgICBTd2FsLmZpcmUoe1xyXG4gICAgICAgICAgICB0aXRsZTogJ1BlcmZlY3RvIScsXHJcbiAgICAgICAgICAgIHRleHQ6ICdFbCBDT0QgaGEgc2lkbyBjcmVhZG8gZXhpdG9zYW1lbnRlLicsXHJcbiAgICAgICAgICAgIGljb246ICdzdWNjZXNzJ1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5sb2FkZXJNZXNzYWdlID0gJyc7XHJcbiAgICAgICAgU3dhbC5maXJlKHtcclxuICAgICAgICAgIHRpdGxlOiAnRXJyb3InLFxyXG4gICAgICAgICAgdGV4dDogZXJyLmVycm9yLnRleHQsXHJcbiAgICAgICAgICBpY29uOiAnZXJyb3InXHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldENyZWF0ZUNPRFJxKGRhdGE6IGFueVtdKTogQ3JlYXRlQ09EUnEge1xyXG4gICAgbGV0IHJlcXVlc3Q6IENyZWF0ZUNPRFJxID0ge1xyXG4gICAgICB0b2tlbjogdGhpcy5iYXNlU2VydmljZS5nZXRVc2VyVG9rZW4oKSxcclxuICAgICAgYWNhZGVtaWNfcGxhbjogZGF0YS5maWx0ZXIoZGF0YSA9PiBkYXRhLmNvbnRyb2wgPT09ICdhY2FkZW1pY19wbGFuJylbMF0udmFsdWUsXHJcbiAgICAgIGNvdXJzZV90eXBlOiBkYXRhLmZpbHRlcihkYXRhID0+IGRhdGEuY29udHJvbCA9PT0gJ2NvdXJzZV90eXBlJylbMF0udmFsdWUsXHJcbiAgICAgIGFncmVlbWVudF9ieV9jYXRlZ29yeTogZGF0YS5maWx0ZXIoZGF0YSA9PiBkYXRhLmNvbnRyb2wgPT09ICdhZ3JlZW1lbnRfYnlfY2F0ZWdvcnknKVswXS52YWx1ZSxcclxuICAgICAgZW5nbGlzaF9sZXZlbDogZGF0YS5maWx0ZXIoZGF0YSA9PiBkYXRhLmNvbnRyb2wgPT09ICdlbmdsaXNoX2xldmVsJylbMF0udmFsdWUsXHJcbiAgICAgIGF2YWlsaWJsZV9jb3Vyc2VzOiBkYXRhLmZpbHRlcihkYXRhID0+IGRhdGEuY29udHJvbCA9PT0gJ2F2YWlsaWJsZV9jb3Vyc2VzJylbMF0udmFsdWUsXHJcbiAgICAgIHN0dWRlbnRfYWRkcmVzczogZGF0YS5maWx0ZXIoZGF0YSA9PiBkYXRhLmNvbnRyb2wgPT09ICdzdHVkZW50X2FkZHJlc3MnKVswXS52YWx1ZSxcclxuICAgICAgYmlydGhkYXRlOiBkYXRhLmZpbHRlcihkYXRhID0+IGRhdGEuY29udHJvbCA9PT0gJ2JpcnRoZGF0ZScpWzBdLnZhbHVlLFxyXG4gICAgICBjb3VudHJ5OiBkYXRhLmZpbHRlcihkYXRhID0+IGRhdGEuY29udHJvbCA9PT0gJ2NvdW50cnknKVswXS52YWx1ZSxcclxuICAgICAgc3RhdGU6IGRhdGEuZmlsdGVyKGRhdGEgPT4gZGF0YS5jb250cm9sID09PSAnc3RhdGUnKVswXS52YWx1ZSxcclxuICAgICAgY2l0eTogZGF0YS5maWx0ZXIoZGF0YSA9PiBkYXRhLmNvbnRyb2wgPT09ICdjaXR5JylbMF0udmFsdWUsXHJcbiAgICAgIHN0dWRlbnRfaWRfY2FyZF90eXBlOiBkYXRhLmZpbHRlcihkYXRhID0+IGRhdGEuY29udHJvbCA9PT0gJ3N0dWRlbnRfaWRfY2FyZF90eXBlJylbMF0udmFsdWUsXHJcbiAgICAgIHN0dWRlbnRfaWRfY2FyZDogZGF0YS5maWx0ZXIoZGF0YSA9PiBkYXRhLmNvbnRyb2wgPT09ICdzdHVkZW50X2lkX2NhcmQnKVswXS52YWx1ZSxcclxuICAgICAgc3R1ZGVudF9sYXN0X25hbWU6IGRhdGEuZmlsdGVyKGRhdGEgPT4gZGF0YS5jb250cm9sID09PSAnc3R1ZGVudF9sYXN0X25hbWUnKVswXS52YWx1ZSxcclxuICAgICAgc3R1ZGVudF9uYW1lOiBkYXRhLmZpbHRlcihkYXRhID0+IGRhdGEuY29udHJvbCA9PT0gJ3N0dWRlbnRfbmFtZScpWzBdLnZhbHVlLFxyXG4gICAgICBzdHVkZW50X2VtYWlsOiBkYXRhLmZpbHRlcihkYXRhID0+IGRhdGEuY29udHJvbCA9PT0gJ3N0dWRlbnRfZW1haWwnKVswXS52YWx1ZSxcclxuICAgICAgbmlja25hbWU6IGRhdGEuZmlsdGVyKGRhdGEgPT4gZGF0YS5jb250cm9sID09PSAnbmlja25hbWUnKVswXS52YWx1ZSxcclxuICAgICAgZ2VuZGVyOiBkYXRhLmZpbHRlcihkYXRhID0+IGRhdGEuY29udHJvbCA9PT0gJ2dlbmRlcicpWzBdLnZhbHVlLFxyXG4gICAgICBhZ2U6IGRhdGEuZmlsdGVyKGRhdGEgPT4gZGF0YS5jb250cm9sID09PSAnYWdlJylbMF0udmFsdWUsXHJcbiAgICAgIHN0dWRlbnRfb2NjdXBhdGlvbjogZGF0YS5maWx0ZXIoZGF0YSA9PiBkYXRhLmNvbnRyb2wgPT09ICdzdHVkZW50X29jY3VwYXRpb24nKVswXS52YWx1ZSxcclxuICAgICAgc3RyYXR1bTogZGF0YS5maWx0ZXIoZGF0YSA9PiBkYXRhLmNvbnRyb2wgPT09ICdzdHJhdHVtJylbMF0udmFsdWUsXHJcbiAgICAgIGdyYWRlOiBkYXRhLmZpbHRlcihkYXRhID0+IGRhdGEuY29udHJvbCA9PT0gJ2dyYWRlJylbMF0udmFsdWUsXHJcbiAgICAgIGNpdmlsX3N0YXR1czogZGF0YS5maWx0ZXIoZGF0YSA9PiBkYXRhLmNvbnRyb2wgPT09ICdjaXZpbF9zdGF0dXMnKVswXS52YWx1ZSxcclxuICAgICAgc3R1ZGVudF9waG9uZV9pbmRpY2F0aXZlOiBkYXRhLmZpbHRlcihkYXRhID0+IGRhdGEuY29udHJvbCA9PT0gJ3N0dWRlbnRfcGhvbmVfaW5kaWNhdGl2ZScpWzBdLnZhbHVlLFxyXG4gICAgICBzdHVkZW50X3Bob25lX251bWJlcjogZGF0YS5maWx0ZXIoZGF0YSA9PiBkYXRhLmNvbnRyb2wgPT09ICdzdHVkZW50X3Bob25lX251bWJlcicpWzBdLnZhbHVlLFxyXG4gICAgICBwYXNzd29yZDogZGF0YS5maWx0ZXIoZGF0YSA9PiBkYXRhLmNvbnRyb2wgPT09ICdwYXNzd29yZCcpWzBdLnZhbHVlLFxyXG4gICAgICByZV9wYXNzd29yZDogZGF0YS5maWx0ZXIoZGF0YSA9PiBkYXRhLmNvbnRyb2wgPT09ICdyZV9wYXNzd29yZCcpWzBdLnZhbHVlLFxyXG4gICAgICBwYXJlbnRfaWRfY2FyZF90eXBlOiBkYXRhLmZpbHRlcihkYXRhID0+IGRhdGEuY29udHJvbCA9PT0gJ3BhcmVudF9pZF9jYXJkX3R5cGUnKVswXS52YWx1ZSxcclxuICAgICAgcGFyZW50X2lkX2NhcmQ6IGRhdGEuZmlsdGVyKGRhdGEgPT4gZGF0YS5jb250cm9sID09PSAncGFyZW50X2lkX2NhcmQnKVswXS52YWx1ZSxcclxuICAgICAgcGFyZW50X2xhc3RfbmFtZTogZGF0YS5maWx0ZXIoZGF0YSA9PiBkYXRhLmNvbnRyb2wgPT09ICdwYXJlbnRfbGFzdF9uYW1lJylbMF0udmFsdWUsXHJcbiAgICAgIHBhcmVudF9uYW1lOiBkYXRhLmZpbHRlcihkYXRhID0+IGRhdGEuY29udHJvbCA9PT0gJ3BhcmVudF9uYW1lJylbMF0udmFsdWUsXHJcbiAgICAgIG5lZWRBdGVuZGFudDogZGF0YS5maWx0ZXIoZGF0YSA9PiBkYXRhLmNvbnRyb2wgPT09ICduZWVkQXRlbmRhbnQnKVswXS52YWx1ZSxcclxuICAgICAgcGFyZW50X3Bob25lX2luZGljYXRpdmU6IGRhdGEuZmlsdGVyKGRhdGEgPT4gZGF0YS5jb250cm9sID09PSAncGFyZW50X3Bob25lX2luZGljYXRpdmUnKVswXS52YWx1ZSxcclxuICAgICAgcGFyZW50X29jY3VwYXRpb246IGRhdGEuZmlsdGVyKGRhdGEgPT4gZGF0YS5jb250cm9sID09PSAncGFyZW50X29jY3VwYXRpb24nKVswXS52YWx1ZSxcclxuICAgICAgcGFyZW50X2FkZHJlc3M6IGRhdGEuZmlsdGVyKGRhdGEgPT4gZGF0YS5jb250cm9sID09PSAncGFyZW50X2FkZHJlc3MnKVswXS52YWx1ZSxcclxuICAgICAgcGFyZW50X3Bob25lX251bWJlcjogZGF0YS5maWx0ZXIoZGF0YSA9PiBkYXRhLmNvbnRyb2wgPT09ICdwYXJlbnRfcGhvbmVfbnVtYmVyJylbMF0udmFsdWUsXHJcbiAgICAgIHBheW1lbnRfZGF0ZTogZGF0YS5maWx0ZXIoZGF0YSA9PiBkYXRhLmNvbnRyb2wgPT09ICdwYXltZW50X2RhdGUnKVswXS52YWx1ZSxcclxuICAgICAgcHJvZ3JhbV9wcmljZTogZGF0YS5maWx0ZXIoZGF0YSA9PiBkYXRhLmNvbnRyb2wgPT09ICdwcm9ncmFtX3ByaWNlJylbMF0udmFsdWUsXHJcbiAgICAgIHBheW1lbnRfbWV0aG9kOiBkYXRhLmZpbHRlcihkYXRhID0+IGRhdGEuY29udHJvbCA9PT0gJ3BheW1lbnRfbWV0aG9kJylbMF0udmFsdWUsXHJcbiAgICAgIHF1b3RhX3RpbWVzOiBkYXRhLmZpbHRlcihkYXRhID0+IGRhdGEuY29udHJvbCA9PT0gJ3F1b3RhX3RpbWVzJylbMF0udmFsdWUsXHJcbiAgICAgIHRvdGFsX3ByaWNlOiBkYXRhLmZpbHRlcihkYXRhID0+IGRhdGEuY29udHJvbCA9PT0gJ3RvdGFsX3ByaWNlJylbMF0udmFsdWUsXHJcbiAgICAgIG1hcmtldGluZ19yZWFzb25zOiBkYXRhLmZpbHRlcihkYXRhID0+IGRhdGEuY29udHJvbCA9PT0gJ21hcmtldGluZ19yZWFzb25zJylbMF0udmFsdWUsXHJcbiAgICAgIG9ic2VydmF0aW9uOiBkYXRhLmZpbHRlcihkYXRhID0+IGRhdGEuY29udHJvbCA9PT0gJ29ic2VydmF0aW9uJylbMF0udmFsdWUsXHJcbiAgICAgIHN0dWR5X3JlYXNvbnM6IGRhdGEuZmlsdGVyKGRhdGEgPT4gZGF0YS5jb250cm9sID09PSAnc3R1ZHlfcmVhc29ucycpWzBdLnZhbHVlLFxyXG4gICAgICB0ZXJtczogZGF0YS5maWx0ZXIoZGF0YSA9PiBkYXRhLmNvbnRyb2wgPT09ICd0ZXJtcycpWzBdLnZhbHVlLFxyXG4gICAgICBkaXNhYmlsaXR5OiBkYXRhLmZpbHRlcihkYXRhID0+IGRhdGEuY29udHJvbCA9PT0gJ2Rpc2FiaWxpdHknKVswXS52YWx1ZSxcclxuICAgICAgbXVsdGljdWx0dXJhbGlzbV8xOiBkYXRhLmZpbHRlcihkYXRhID0+IGRhdGEuY29udHJvbCA9PT0gJ211bHRpY3VsdHVyYWxpc21fMScpWzBdLnZhbHVlLFxyXG4gICAgICBtdWx0aWN1bHR1cmFsaXNtXzI6IGRhdGEuZmlsdGVyKGRhdGEgPT4gZGF0YS5jb250cm9sID09PSAnbXVsdGljdWx0dXJhbGlzbV8yJylbMF0udmFsdWUsXHJcbiAgICAgIG11bHRpY3VsdHVyYWxpc21fMzogZGF0YS5maWx0ZXIoZGF0YSA9PiBkYXRhLmNvbnRyb2wgPT09ICdtdWx0aWN1bHR1cmFsaXNtXzMnKVswXS52YWx1ZSxcclxuICAgICAgbXVsdGljdWx0dXJhbGlzbV80OiBkYXRhLmZpbHRlcihkYXRhID0+IGRhdGEuY29udHJvbCA9PT0gJ211bHRpY3VsdHVyYWxpc21fNCcpWzBdLnZhbHVlLFxyXG4gICAgICBtdWx0aWN1bHR1cmFsaXNtXzU6IGRhdGEuZmlsdGVyKGRhdGEgPT4gZGF0YS5jb250cm9sID09PSAnbXVsdGljdWx0dXJhbGlzbV81JylbMF0udmFsdWUsXHJcbiAgICAgIG11bHRpY3VsdHVyYWxpc21fNjogZGF0YS5maWx0ZXIoZGF0YSA9PiBkYXRhLmNvbnRyb2wgPT09ICdtdWx0aWN1bHR1cmFsaXNtXzYnKVswXS52YWx1ZSxcclxuICAgICAgaGVhbHRoX3JlZ2ltZW46IGRhdGEuZmlsdGVyKGRhdGEgPT4gZGF0YS5jb250cm9sID09PSAnaGVhbHRoX3JlZ2ltZW4nKVswXS52YWx1ZSxcclxuICAgICAgcGF5bWVudF9kYXRlczogdGhpcy5maW5hbmNpbmdEYXRhIVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXF1ZXN0O1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlU3RlcChzdGVwOiBudW1iZXIpIHtcclxuICAgIHRoaXMuY3VycmVudFN0ZXAgPSBzdGVwO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiAqbmdJZj1cImFsbG93ZWRSb2xlKCkgOyBlbHNlIFVuYXV0aG9yaXplZFwiIGNsYXNzPVwiY29udGFpbmVyIGZsZXggZmxleC1jb2x1bW4gYmctd2hpdGUgYm9yZGVyLXJvdW5kLTJ4bCBwLTMgY29udGFpbmVyIGFuaW1hdGVfX2FuaW1hdGVkIGFuaW1hdGVfX2ZhZGVJblVwXCI+XHJcblxyXG4gIDxzcGFuIGNsYXNzPVwiYmctcHJpbWFyeSBwLTIgYm9yZGVyLXJvdW5kIG1iLTIgdy1hdXRvIHRleHQtbGcgZm9udC1zZW1pYm9sZFwiPnt7IGZvcm1UaXRsZSB9fTwvc3Bhbj5cclxuXHJcbiAgPHAtdGFiVmlldyBbYWN0aXZlSW5kZXhdPVwiY3VycmVudFN0ZXBcIiAoYWN0aXZlSW5kZXhDaGFuZ2UpPVwiY3VycmVudFN0ZXAgPSAkZXZlbnRcIiBbc2Nyb2xsYWJsZV09XCJ0cnVlXCI+XHJcbiAgICA8cC10YWJQYW5lbCBsZWZ0SWNvbj1cInBpIHBpLXN0YXJcIiBoZWFkZXI9XCIxLiBQbGFuZXMgeSBjb252ZW5pb3NcIj5cclxuICAgICAgPGFwcC1jb2QtZm9ybS1zdGVwLW9uZSAoY2hhbmdlU3RlcEV2ZW50KT1cImNoYW5nZVN0ZXAoJGV2ZW50KVwiIGNsYXNzPVwicC0xXCI+PC9hcHAtY29kLWZvcm0tc3RlcC1vbmU+XHJcbiAgICA8L3AtdGFiUGFuZWw+XHJcbiAgICA8cC10YWJQYW5lbCBsZWZ0SWNvbj1cInBpIHBpLWlkLWNhcmRcIiBoZWFkZXI9XCIyLiBEYXRvcyBkZWwgZXN0dWRpYW50ZVwiPlxyXG4gICAgICA8YXBwLWNvZC1mb3JtLXN0ZXAtdHdvIFtpbml0aWFsRGF0YV09XCJkYXRhRnJvbVByZXZpdXNDb2REYXRhXCIgKGNoYW5nZVN0ZXBFdmVudCk9XCJjaGFuZ2VTdGVwKCRldmVudClcIiBjbGFzcz1cInAtMVwiPjwvYXBwLWNvZC1mb3JtLXN0ZXAtdHdvPlxyXG4gICAgPC9wLXRhYlBhbmVsPlxyXG4gICAgPHAtdGFiUGFuZWwgbGVmdEljb249XCJwaSBwaS11c2VyLWVkaXRcIiBoZWFkZXI9XCIzLiBEYXRvcyBkZWwgYWN1ZGllbnRlXCI+XHJcbiAgICAgIDxhcHAtY29kLWZvcm0tc3RlcC10aHJlZSAoY2hhbmdlU3RlcEV2ZW50KT1cImNoYW5nZVN0ZXAoJGV2ZW50KVwiIGNsYXNzPVwicC0xXCI+PC9hcHAtY29kLWZvcm0tc3RlcC10aHJlZT5cclxuICAgIDwvcC10YWJQYW5lbD5cclxuICAgIDxwLXRhYlBhbmVsIGxlZnRJY29uPVwicGkgcGktbW9uZXktYmlsbFwiIGhlYWRlcj1cIjQuIFZhbG9yZXNcIj5cclxuICAgICAgPGFwcC1jb2QtZm9ybS1zdGVwLWZvdXIgKGNoYW5nZVN0ZXBFdmVudCk9XCJjaGFuZ2VTdGVwKCRldmVudClcIiAoZmluYW5jaW5nRGF0YSk9XCJzYXZlRmluYW5jaW5nRGF0YSgkZXZlbnQpXCIgY2xhc3M9XCJwLTFcIj48L2FwcC1jb2QtZm9ybS1zdGVwLWZvdXI+XHJcbiAgICA8L3AtdGFiUGFuZWw+XHJcbiAgICA8cC10YWJQYW5lbCBsZWZ0SWNvbj1cInBpIHBpLWV5ZVwiIGhlYWRlcj1cIjUuIE9ic2VydmFjaW9uZXNcIj5cclxuICAgICAgPGFwcC1jb2QtZm9ybS1zdGVwLWZpdmUgW3VzZXJSb2xlXT1cInVzZXJSb2xlXCIgKGNoYW5nZVN0ZXBFdmVudCk9XCJjaGFuZ2VTdGVwKCRldmVudClcIiAoYWN0aW9uKT1cImdldEZvcm1BY3Rpb24oJGV2ZW50KVwiIGNsYXNzPVwicC0xXCI+PC9hcHAtY29kLWZvcm0tc3RlcC1maXZlPlxyXG4gICAgPC9wLXRhYlBhbmVsPlxyXG4gIDwvcC10YWJWaWV3PlxyXG5cclxuICBcclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI1VuYXV0aG9yaXplZD5cclxuICA8c3BhbiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBmb250LWJvbGQgcC0yIGJnLXllbGxvdy0yMDAgYm9yZGVyLXJvdW5kLWxnIHctZnVsbFwiPlxyXG4gICAgTm8gdGllbmVzIGxvcyBwZXJtaXNvcyBwYXJhIGFjY2VkZXIgYSBlc3RhIGZ1bmNpb25hbGlkYWQsIGNvbXVuw61jYXRlIGNvbiBlbCBkZXNhcnJvbGxhZG9yLlxyXG4gIDwvc3Bhbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcblxyXG48aXB0LWxvYWRlciAqbmdJZj1cImlzTG9hZGluZ1wiIFtpc0RpYWxvZ109XCJ0cnVlXCIgW21lc3NhZ2VdPVwibG9hZGVyTWVzc2FnZVwiPjwvaXB0LWxvYWRlcj4iXX0=
@@ -0,0 +1,86 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { MessageService } from 'primeng/api';
4
+ import { TabViewModule } from 'primeng/tabview';
5
+ import { ComponentsModule } from '../components/components.module';
6
+ import { CodDocumentsSectionComponent } from './cod-documents-section/cod-documents-section.component';
7
+ import { CodFormComponent } from './cod-form/cod-form.component';
8
+ import { CodFormStepFiveComponent } from './steps/cod-form-step-five/cod-form-step-five.component';
9
+ import { CodFormStepFourComponent } from './steps/cod-form-step-four/cod-form-step-four.component';
10
+ import { CodFormStepOneComponent } from './steps/cod-form-step-one/cod-form-step-one.component';
11
+ import { CodFormStepThreeComponent } from './steps/cod-form-step-three/cod-form-step-three.component';
12
+ import { CodFormStepTwoComponent } from './steps/cod-form-step-two/cod-form-step-two.component';
13
+ import { MatCheckboxModule } from '@angular/material/checkbox';
14
+ import { ReactiveFormsModule } from '@angular/forms';
15
+ import { TableModule } from 'primeng/table';
16
+ import { ButtonModule } from 'primeng/button';
17
+ import * as i0 from "@angular/core";
18
+ export class CodModule {
19
+ }
20
+ CodModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: CodModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
21
+ CodModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: CodModule, declarations: [CodFormComponent,
22
+ CodDocumentsSectionComponent,
23
+ CodFormStepOneComponent,
24
+ CodFormStepTwoComponent,
25
+ CodFormStepThreeComponent,
26
+ CodFormStepFourComponent,
27
+ CodFormStepFiveComponent], imports: [CommonModule,
28
+ TabViewModule,
29
+ ComponentsModule,
30
+ MatCheckboxModule,
31
+ ReactiveFormsModule,
32
+ TableModule,
33
+ ButtonModule], exports: [CodFormComponent,
34
+ CodDocumentsSectionComponent,
35
+ CodFormStepOneComponent,
36
+ CodFormStepTwoComponent,
37
+ CodFormStepThreeComponent,
38
+ CodFormStepFourComponent,
39
+ CodFormStepFiveComponent] });
40
+ CodModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: CodModule, providers: [
41
+ MessageService
42
+ ], imports: [[
43
+ CommonModule,
44
+ TabViewModule,
45
+ ComponentsModule,
46
+ MatCheckboxModule,
47
+ ReactiveFormsModule,
48
+ TableModule,
49
+ ButtonModule
50
+ ]] });
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: CodModule, decorators: [{
52
+ type: NgModule,
53
+ args: [{
54
+ imports: [
55
+ CommonModule,
56
+ TabViewModule,
57
+ ComponentsModule,
58
+ MatCheckboxModule,
59
+ ReactiveFormsModule,
60
+ TableModule,
61
+ ButtonModule
62
+ ],
63
+ exports: [
64
+ CodFormComponent,
65
+ CodDocumentsSectionComponent,
66
+ CodFormStepOneComponent,
67
+ CodFormStepTwoComponent,
68
+ CodFormStepThreeComponent,
69
+ CodFormStepFourComponent,
70
+ CodFormStepFiveComponent
71
+ ],
72
+ declarations: [
73
+ CodFormComponent,
74
+ CodDocumentsSectionComponent,
75
+ CodFormStepOneComponent,
76
+ CodFormStepTwoComponent,
77
+ CodFormStepThreeComponent,
78
+ CodFormStepFourComponent,
79
+ CodFormStepFiveComponent
80
+ ],
81
+ providers: [
82
+ MessageService
83
+ ],
84
+ }]
85
+ }] });
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2Rlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb2QvY29kLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUV2RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNoRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUVoRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFrQzlDLE1BQU0sT0FBTyxTQUFTOztzR0FBVCxTQUFTO3VHQUFULFNBQVMsaUJBWmxCLGdCQUFnQjtRQUNoQiw0QkFBNEI7UUFDNUIsdUJBQXVCO1FBQ3ZCLHVCQUF1QjtRQUN2Qix5QkFBeUI7UUFDekIsd0JBQXdCO1FBQ3hCLHdCQUF3QixhQXhCeEIsWUFBWTtRQUNaLGFBQWE7UUFDYixnQkFBZ0I7UUFDaEIsaUJBQWlCO1FBQ2pCLG1CQUFtQjtRQUNuQixXQUFXO1FBQ1gsWUFBWSxhQUdaLGdCQUFnQjtRQUNoQiw0QkFBNEI7UUFDNUIsdUJBQXVCO1FBQ3ZCLHVCQUF1QjtRQUN2Qix5QkFBeUI7UUFDekIsd0JBQXdCO1FBQ3hCLHdCQUF3Qjt1R0FlZixTQUFTLGFBSlQ7UUFDVCxjQUFjO0tBQ2YsWUE3QlE7WUFDUCxZQUFZO1lBQ1osYUFBYTtZQUNiLGdCQUFnQjtZQUNoQixpQkFBaUI7WUFDakIsbUJBQW1CO1lBQ25CLFdBQVc7WUFDWCxZQUFZO1NBQ2I7MkZBdUJVLFNBQVM7a0JBaENyQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLG1CQUFtQjt3QkFDbkIsV0FBVzt3QkFDWCxZQUFZO3FCQUNiO29CQUNELE9BQU8sRUFBRTt3QkFDUCxnQkFBZ0I7d0JBQ2hCLDRCQUE0Qjt3QkFDNUIsdUJBQXVCO3dCQUN2Qix1QkFBdUI7d0JBQ3ZCLHlCQUF5Qjt3QkFDekIsd0JBQXdCO3dCQUN4Qix3QkFBd0I7cUJBQ3pCO29CQUNELFlBQVksRUFBRTt3QkFDWixnQkFBZ0I7d0JBQ2hCLDRCQUE0Qjt3QkFDNUIsdUJBQXVCO3dCQUN2Qix1QkFBdUI7d0JBQ3ZCLHlCQUF5Qjt3QkFDekIsd0JBQXdCO3dCQUN4Qix3QkFBd0I7cUJBQ3pCO29CQUNELFNBQVMsRUFBRTt3QkFDVCxjQUFjO3FCQUNmO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBUYWJWaWV3TW9kdWxlIH0gZnJvbSAncHJpbWVuZy90YWJ2aWV3JztcclxuaW1wb3J0IHsgQ29tcG9uZW50c01vZHVsZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvY29tcG9uZW50cy5tb2R1bGUnO1xyXG5pbXBvcnQgeyBDb2REb2N1bWVudHNTZWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb2QtZG9jdW1lbnRzLXNlY3Rpb24vY29kLWRvY3VtZW50cy1zZWN0aW9uLmNvbXBvbmVudCc7XHJcblxyXG5pbXBvcnQgeyBDb2RGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9jb2QtZm9ybS9jb2QtZm9ybS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb2RGb3JtU3RlcEZpdmVDb21wb25lbnQgfSBmcm9tICcuL3N0ZXBzL2NvZC1mb3JtLXN0ZXAtZml2ZS9jb2QtZm9ybS1zdGVwLWZpdmUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29kRm9ybVN0ZXBGb3VyQ29tcG9uZW50IH0gZnJvbSAnLi9zdGVwcy9jb2QtZm9ybS1zdGVwLWZvdXIvY29kLWZvcm0tc3RlcC1mb3VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvZEZvcm1TdGVwT25lQ29tcG9uZW50IH0gZnJvbSAnLi9zdGVwcy9jb2QtZm9ybS1zdGVwLW9uZS9jb2QtZm9ybS1zdGVwLW9uZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb2RGb3JtU3RlcFRocmVlQ29tcG9uZW50IH0gZnJvbSAnLi9zdGVwcy9jb2QtZm9ybS1zdGVwLXRocmVlL2NvZC1mb3JtLXN0ZXAtdGhyZWUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29kRm9ybVN0ZXBUd29Db21wb25lbnQgfSBmcm9tICcuL3N0ZXBzL2NvZC1mb3JtLXN0ZXAtdHdvL2NvZC1mb3JtLXN0ZXAtdHdvLmNvbXBvbmVudCc7XHJcblxyXG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IFRhYmxlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90YWJsZSc7XHJcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgVGFiVmlld01vZHVsZSxcclxuICAgIENvbXBvbmVudHNNb2R1bGUsXHJcbiAgICBNYXRDaGVja2JveE1vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBUYWJsZU1vZHVsZSxcclxuICAgIEJ1dHRvbk1vZHVsZVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgQ29kRm9ybUNvbXBvbmVudCxcclxuICAgIENvZERvY3VtZW50c1NlY3Rpb25Db21wb25lbnQsXHJcbiAgICBDb2RGb3JtU3RlcE9uZUNvbXBvbmVudCxcclxuICAgIENvZEZvcm1TdGVwVHdvQ29tcG9uZW50LFxyXG4gICAgQ29kRm9ybVN0ZXBUaHJlZUNvbXBvbmVudCxcclxuICAgIENvZEZvcm1TdGVwRm91ckNvbXBvbmVudCxcclxuICAgIENvZEZvcm1TdGVwRml2ZUNvbXBvbmVudFxyXG4gIF0sXHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBDb2RGb3JtQ29tcG9uZW50LFxyXG4gICAgQ29kRG9jdW1lbnRzU2VjdGlvbkNvbXBvbmVudCxcclxuICAgIENvZEZvcm1TdGVwT25lQ29tcG9uZW50LFxyXG4gICAgQ29kRm9ybVN0ZXBUd29Db21wb25lbnQsXHJcbiAgICBDb2RGb3JtU3RlcFRocmVlQ29tcG9uZW50LFxyXG4gICAgQ29kRm9ybVN0ZXBGb3VyQ29tcG9uZW50LFxyXG4gICAgQ29kRm9ybVN0ZXBGaXZlQ29tcG9uZW50XHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIE1lc3NhZ2VTZXJ2aWNlXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvZE1vZHVsZSB7IH1cclxuIl19
@@ -0,0 +1,72 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as moment from 'moment';
3
+ import Swal from 'sweetalert2';
4
+ import * as i0 from "@angular/core";
5
+ export class CalculateQuotesService {
6
+ constructor() { }
7
+ calculateQuotes(params) {
8
+ let dataFinancing = [];
9
+ let index = 1; // Indicador de cant. de cuotas
10
+ let momentJs = moment(params.date).add('1', 'days');
11
+ if (this.validateSunday(momentJs.toDate())) {
12
+ Swal.fire({
13
+ title: 'Fecha inválida',
14
+ text: 'Debe seleccionar un día de la semana diferente al domingo',
15
+ icon: 'error'
16
+ });
17
+ }
18
+ else {
19
+ let quota = [
20
+ index,
21
+ Intl.NumberFormat('en-US', {
22
+ style: 'currency',
23
+ currency: 'USD',
24
+ minimumFractionDigits: 0
25
+ }).format(Math.round(parseFloat(params.quotaValues.toString()))),
26
+ momentJs.format('dddd') + ', ' + momentJs.format('MMMM DD YYYY')
27
+ ];
28
+ dataFinancing.push(quota);
29
+ while (index < params.quotaTimes) {
30
+ index = index + 1;
31
+ const momentJs = moment(params.date).add(index - 1, 'M');
32
+ if (this.validateSunday(momentJs.toDate())) {
33
+ momentJs.add(1, 'days');
34
+ Swal.fire({
35
+ title: 'Querido asesor',
36
+ text: 'Hemos ajustado las fechas para que no se asignen en Domingos',
37
+ icon: 'info'
38
+ });
39
+ }
40
+ let row = [
41
+ index,
42
+ Intl.NumberFormat('en-US', {
43
+ style: 'currency',
44
+ currency: 'USD',
45
+ minimumFractionDigits: 0,
46
+ }).format(Math.round(params.quotaValues)),
47
+ momentJs.format('dddd') + ', ' + momentJs.format('MMMM DD YYYY'),
48
+ ];
49
+ dataFinancing.push(row);
50
+ }
51
+ }
52
+ return dataFinancing;
53
+ }
54
+ validateSunday(date) {
55
+ const momentJs = moment(date);
56
+ if (momentJs.isoWeekday() === 7) {
57
+ return true;
58
+ }
59
+ else {
60
+ return false;
61
+ }
62
+ }
63
+ }
64
+ CalculateQuotesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: CalculateQuotesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
65
+ CalculateQuotesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: CalculateQuotesService, providedIn: 'root' });
66
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: CalculateQuotesService, decorators: [{
67
+ type: Injectable,
68
+ args: [{
69
+ providedIn: 'root'
70
+ }]
71
+ }], ctorParameters: function () { return []; } });
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRlLXF1b3Rlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvZC9sb2dpYy9jYWxjdWxhdGUtcXVvdGVzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7O0FBWS9CLE1BQU0sT0FBTyxzQkFBc0I7SUFFakMsZ0JBQWdCLENBQUM7SUFFakIsZUFBZSxDQUFDLE1BQTZCO1FBQzNDLElBQUksYUFBYSxHQUFVLEVBQUUsQ0FBQztRQUU5QixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQywrQkFBK0I7UUFFOUMsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3BELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRTtZQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNSLEtBQUssRUFBRSxnQkFBZ0I7Z0JBQ3ZCLElBQUksRUFBRSwyREFBMkQ7Z0JBQ2pFLElBQUksRUFBRSxPQUFPO2FBQ2QsQ0FBQyxDQUFBO1NBQ0g7YUFBTTtZQUNMLElBQUksS0FBSyxHQUFVO2dCQUNqQixLQUFLO2dCQUNMLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFO29CQUN6QixLQUFLLEVBQUUsVUFBVTtvQkFDakIsUUFBUSxFQUFFLEtBQUs7b0JBQ2YscUJBQXFCLEVBQUUsQ0FBQztpQkFDekIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDaEUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUM7YUFDakUsQ0FBQztZQUVGLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFMUIsT0FBTyxLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRTtnQkFDaEMsS0FBSyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBRWxCLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ3pELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRTtvQkFDMUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7b0JBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUM7d0JBQ1IsS0FBSyxFQUFFLGdCQUFnQjt3QkFDdkIsSUFBSSxFQUFFLDhEQUE4RDt3QkFDcEUsSUFBSSxFQUFFLE1BQU07cUJBQ2IsQ0FBQyxDQUFBO2lCQUNIO2dCQUVELElBQUksR0FBRyxHQUFVO29CQUNmLEtBQUs7b0JBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUU7d0JBQ3pCLEtBQUssRUFBRSxVQUFVO3dCQUNqQixRQUFRLEVBQUUsS0FBSzt3QkFDZixxQkFBcUIsRUFBRSxDQUFDO3FCQUN6QixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUN6QyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQztpQkFDakUsQ0FBQztnQkFFRixhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3pCO1NBRUY7UUFFRCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBR0QsY0FBYyxDQUFDLElBQVU7UUFDdkIsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTlCLElBQUksUUFBUSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRTtZQUMvQixPQUFPLElBQUksQ0FBQztTQUNiO2FBQU07WUFDTCxPQUFPLEtBQUssQ0FBQTtTQUNiO0lBQ0gsQ0FBQzs7bUhBckVVLHNCQUFzQjt1SEFBdEIsc0JBQXNCLGNBRnJCLE1BQU07MkZBRVAsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCBTd2FsIGZyb20gJ3N3ZWV0YWxlcnQyJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2FsY3VsYXRlUXVvdGVzUGFyYW1zIHtcclxuICBkYXRlOiBEYXRlO1xyXG4gIHF1b3RhVmFsdWVzOiBudW1iZXJcclxuICBxdW90YVRpbWVzOiBhbnk7XHJcbiAgdG90YWxQcmljZTogYW55O1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDYWxjdWxhdGVRdW90ZXNTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgY2FsY3VsYXRlUXVvdGVzKHBhcmFtczogQ2FsY3VsYXRlUXVvdGVzUGFyYW1zKTogYW55W10ge1xyXG4gICAgbGV0IGRhdGFGaW5hbmNpbmc6IGFueVtdID0gW107XHJcblxyXG4gICAgbGV0IGluZGV4ID0gMTsgLy8gSW5kaWNhZG9yIGRlIGNhbnQuIGRlIGN1b3Rhc1xyXG5cclxuICAgIGxldCBtb21lbnRKcyA9IG1vbWVudChwYXJhbXMuZGF0ZSkuYWRkKCcxJywgJ2RheXMnKTtcclxuICAgIGlmICh0aGlzLnZhbGlkYXRlU3VuZGF5KG1vbWVudEpzLnRvRGF0ZSgpKSkge1xyXG4gICAgICBTd2FsLmZpcmUoe1xyXG4gICAgICAgIHRpdGxlOiAnRmVjaGEgaW52w6FsaWRhJyxcclxuICAgICAgICB0ZXh0OiAnRGViZSBzZWxlY2Npb25hciB1biBkw61hIGRlIGxhIHNlbWFuYSBkaWZlcmVudGUgYWwgZG9taW5nbycsXHJcbiAgICAgICAgaWNvbjogJ2Vycm9yJ1xyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IHF1b3RhOiBhbnlbXSA9IFtcclxuICAgICAgICBpbmRleCxcclxuICAgICAgICBJbnRsLk51bWJlckZvcm1hdCgnZW4tVVMnLCB7XHJcbiAgICAgICAgICBzdHlsZTogJ2N1cnJlbmN5JyxcclxuICAgICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcclxuICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMFxyXG4gICAgICAgIH0pLmZvcm1hdChNYXRoLnJvdW5kKHBhcnNlRmxvYXQocGFyYW1zLnF1b3RhVmFsdWVzLnRvU3RyaW5nKCkpKSksXHJcbiAgICAgICAgbW9tZW50SnMuZm9ybWF0KCdkZGRkJykgKyAnLCAnICsgbW9tZW50SnMuZm9ybWF0KCdNTU1NIEREIFlZWVknKVxyXG4gICAgICBdO1xyXG5cclxuICAgICAgZGF0YUZpbmFuY2luZy5wdXNoKHF1b3RhKTtcclxuXHJcbiAgICAgIHdoaWxlIChpbmRleCA8IHBhcmFtcy5xdW90YVRpbWVzKSB7XHJcbiAgICAgICAgaW5kZXggPSBpbmRleCArIDE7XHJcblxyXG4gICAgICAgIGNvbnN0IG1vbWVudEpzID0gbW9tZW50KHBhcmFtcy5kYXRlKS5hZGQoaW5kZXggLSAxLCAnTScpO1xyXG4gICAgICAgIGlmICh0aGlzLnZhbGlkYXRlU3VuZGF5KG1vbWVudEpzLnRvRGF0ZSgpKSkge1xyXG4gICAgICAgICAgbW9tZW50SnMuYWRkKDEsICdkYXlzJyk7XHJcbiAgICAgICAgICBTd2FsLmZpcmUoe1xyXG4gICAgICAgICAgICB0aXRsZTogJ1F1ZXJpZG8gYXNlc29yJyxcclxuICAgICAgICAgICAgdGV4dDogJ0hlbW9zIGFqdXN0YWRvIGxhcyBmZWNoYXMgcGFyYSBxdWUgbm8gc2UgYXNpZ25lbiBlbiBEb21pbmdvcycsXHJcbiAgICAgICAgICAgIGljb246ICdpbmZvJ1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCByb3c6IGFueVtdID0gW1xyXG4gICAgICAgICAgaW5kZXgsXHJcbiAgICAgICAgICBJbnRsLk51bWJlckZvcm1hdCgnZW4tVVMnLCB7XHJcbiAgICAgICAgICAgIHN0eWxlOiAnY3VycmVuY3knLFxyXG4gICAgICAgICAgICBjdXJyZW5jeTogJ1VTRCcsXHJcbiAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMCxcclxuICAgICAgICAgIH0pLmZvcm1hdChNYXRoLnJvdW5kKHBhcmFtcy5xdW90YVZhbHVlcykpLFxyXG4gICAgICAgICAgbW9tZW50SnMuZm9ybWF0KCdkZGRkJykgKyAnLCAnICsgbW9tZW50SnMuZm9ybWF0KCdNTU1NIEREIFlZWVknKSxcclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICBkYXRhRmluYW5jaW5nLnB1c2gocm93KTtcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZGF0YUZpbmFuY2luZztcclxuICB9XHJcblxyXG5cclxuICB2YWxpZGF0ZVN1bmRheShkYXRlOiBEYXRlKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBtb21lbnRKcyA9IG1vbWVudChkYXRlKTtcclxuXHJcbiAgICBpZiAobW9tZW50SnMuaXNvV2Vla2RheSgpID09PSA3KSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=