iptdevs-design-system 3.1.685 → 3.1.686

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.
@@ -46,7 +46,7 @@ export class CodSelfFormStepFourComponent extends CodSelfManagedSteps {
46
46
  invoicing_name: ['', [Validators.required]],
47
47
  invoicing_Apellido: ['', [Validators.required]],
48
48
  invoicing_idType: ['', [Validators.required]],
49
- invoicing_document: ['', [Validators.required]],
49
+ invoicing_document: ['', [Validators.required, Validators.minLength(5), Validators.maxLength(20), Validators.pattern(/^[0-9]*$/)]],
50
50
  });
51
51
  }
52
52
  subscribeToStudentIdCardTypeChanges() {
@@ -59,6 +59,7 @@ export class CodSelfFormStepFourComponent extends CodSelfManagedSteps {
59
59
  this.studentIdCardType.setValue(typeIdCard);
60
60
  }
61
61
  updateBillingDataFields(typeIdCard) {
62
+ console.log('entro aqui en updateBillingDataFields');
62
63
  if (typeIdCard != null && typeIdCard != "2") {
63
64
  const nameStudent = this.localStorageCOD.getCodFormData(1, 'student_name');
64
65
  const lastNameStudent = this.localStorageCOD.getCodFormData(1, 'student_last_name');
@@ -73,6 +74,13 @@ export class CodSelfFormStepFourComponent extends CodSelfManagedSteps {
73
74
  this.codSelfFormStepFour.controls['invoicing_idType'].setValue(typeIdCardStudent);
74
75
  this.codSelfFormStepFour.controls['invoicing_document'].setValue(idCardStudent);
75
76
  }
77
+ else {
78
+ // Limpia los campos si el tipo de documento es "2"
79
+ this.codSelfFormStepFour.controls['invoicing_name'].setValue('');
80
+ this.codSelfFormStepFour.controls['invoicing_Apellido'].setValue('');
81
+ this.codSelfFormStepFour.controls['invoicing_idType'].setValue('');
82
+ this.codSelfFormStepFour.controls['invoicing_document'].setValue('');
83
+ }
76
84
  }
77
85
  back() {
78
86
  if (!this.isSelectionOptionPayments && !this.isEditBillingData) {
@@ -179,10 +187,10 @@ export class CodSelfFormStepFourComponent extends CodSelfManagedSteps {
179
187
  }
180
188
  }
181
189
  CodSelfFormStepFourComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CodSelfFormStepFourComponent, deps: [{ token: i1.FormBuilder }, { token: i2.MessageService }], target: i0.ɵɵFactoryTarget.Component });
182
- CodSelfFormStepFourComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: CodSelfFormStepFourComponent, selector: "app-cod-self-form-step-four", inputs: { idTypes: "idTypes" }, outputs: { completed: "completed", action: "action" }, usesInheritance: true, ngImport: i0, template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Datos de Facturacion</h2>\n <p-toast position=\"top-center\" key=\"confirm\" (onClose)=\"onReject()\" [baseZIndex]=\"10\">\n <ng-template let-message pTemplate=\"message\">\n <div class=\"flex flex-column align-items-start\" style=\"flex: 1\">\n <div class=\"flex align-items-center gap-2\">\n <img src=\"https://qa.iptdev.com.co/assets/logos/reading.png\" style=\"width: 65px;\" shape=\"circle\" />\n <span class=\"font-bold text-900\">Jacob</span>\n </div>\n <div class=\"font-medium text-lg my-3 text-900\">{{ messageInfo }}</div>\n </div>\n </ng-template>\n </p-toast>\n <i class=\"pi pi-exclamation-circle cursor-pointer w-auto mb-4\" (click)=\"showConfirm()\" pTooltip=\"Mas info.\" tooltipPosition=\"bottom\"></i>\n <form autocomplete=\"off\" [formGroup]=\"codSelfFormStepFour\" class=\"grid mt-2 flex flex-column align-items-center\">\n <div class=\"container__body__select flex justify-content-center flex-wrap\">\n <div class=\"container__type__payments\" *ngIf=\"isSelectionOptionPayments\">\n <div class=\"flex flex-column gap-3\">\n <h3>\u00BFComo quieres pagar?</h3>\n <div *ngFor=\"let category of OptionPayments; index as ind\" class=\"field-checkbox\">\n <p-radioButton\n [inputId]=\"category.key\"\n name=\"category\"\n [value]=\"category\"\n [(ngModel)]=\"selectedOptionPayments\"\n [disabled]=\"disableweekdays[ind]\"\n [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"selectOpcionsPayments($event)\"\n ></p-radioButton>\n <label [for]=\"category.key\" class=\"ml-2\">\n {{ category.name }}\n </label>\n </div>\n </div>\n </div>\n\n <div class=\"container__opstion__instalations\" *ngIf=\"!isSelectionOptionPayments\">\n <!-- Vista para la opci\u00F3n de pago \"Instalaciones\" -->\n <div *ngIf=\"getViewBasedOnPaymentOption() === 'in'\">\n <div class=\"container__info flex flex-column align-items-center justify-content-center mt-1 mb-4\" *ngIf=\"isEditBillingData\">\n\n <img\n src=\"https://qa.iptdev.com.co/assets/logos/lobo-web.png\"\n alt=\"Receipt Icon\"\n shape=\"circle\"\n class=\"circular-image\"\n />\n <strong>{{ codSelfFormStepFour.get('invoicing_name')?.value }} {{ codSelfFormStepFour.get('invoicing_Apellido')?.value }}</strong>\n <span>{{ getIdTypeDescription(codSelfFormStepFour.get('invoicing_idType')?.value) }} {{ codSelfFormStepFour.get('invoicing_document')?.value }}</span>\n\n <div class=\"container-button\">\n <ipt-button\n [label]=\"'Modificar Datos'\"\n (onClick)=\"editBillingData()\"\n [primary]=\"false\">\n </ipt-button>\n </div>\n </div>\n <div class=\"m-3\" *ngIf=\"!isEditBillingData\">\n <h3>Completa los nuevos datos para la emision de tu factura</h3>\n <div class=\"flex gap-1 md:gap-4 xl:gap-8 m-1 p-2 border-round bg-blue-500 text-white\">\n <div class=\"container_icon flex mr-4 justify-content-center align-items-start mt-1\">\n <i class=\"pi pi-info-circle cursor-pointer w-auto mb-4\" pTooltip=\"Mas info.\" tooltipPosition=\"bottom\"></i>\n </div>\n <div class=\"flex flex-column container_info_span flex align-items-center justify-content-center\">\n <span>Si proporcionas datos de un tercero, confirmas que los datos son correctos y que tienes su consentimiento para el uso de la informacion. Estos datos se trataran de acuerdo a nuestra <a href=\"\">Declaracion de Privacidad</a></span>\n </div>\n </div>\n <div>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"codSelfFormStepFour.controls['invoicing_name']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellido'\"\n [control]=\"codSelfFormStepFour.controls['invoicing_Apellido']\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codSelfFormStepFour.controls['invoicing_idType'].value\"\n [control]=\"codSelfFormStepFour.controls['invoicing_idType']\"\n [selectCode]=\"codSelfFormStepFour.controls['invoicing_idType'].value === null ? 'Tipo de documento' : codSelfFormStepFour.controls['invoicing_idType'].value\"\n [isRequired]=\"true\"\n [data]=\"idTypes\"\n (eventSelect)=\"selectIdType($event)\"\n [defaultText]=\"'Tipo de documento'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Documento'\"\n [control]=\"codSelfFormStepFour.controls['invoicing_document']\"\n ></ipt-input>\n </div>\n <div class=\"flex justify-content-end mt-3 align-items-center gap-3\">\n <button\n pButton\n [disabled]=\"!codSelfFormStepFour.valid\"\n label=\"Continuar\"\n type=\"button\"\n (click)=\"updateDatosBillingData()\"\n ></button>\n </div>\n </div>\n </div>\n\n <!-- Vista para la opci\u00F3n de pago \"Transferencia\" -->\n <div *ngIf=\"getViewBasedOnPaymentOption() === 'tr'\">\n <h3>Completa los datos para Transferencia</h3>\n <!-- Aqu\u00ED puedes agregar el formulario espec\u00EDfico para Transferencia -->\n </div>\n </div>\n </div>\n </form>\n\n <div class=\"flex justify-content-between mt-3 align-items-center gap-3\">\n <button\n pButton\n icon=\"pi pi-arrow-left\"\n type=\"button\"\n (click)=\"back()\"\n ></button>\n <button\n *ngIf=\"!isSelectionOptionPayments && isEditBillingData && codSelfFormStepFour.valid\"\n pButton\n label=\"Guardar\"\n type=\"button\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n</div>\n\n<div>\n <pre>{{ codSelfFormStepFour.value | json }}</pre>\n <div>\n <pre>{{ codSelfFormStepFour.valid | json }}</pre>\n </div>\n</div>\n", styles: [".container-form{margin:5%;border-radius:6px;border:1px solid #2563eb;box-shadow:#3c40434d 0 1px 2px,#3c404326 0 2px 6px 2px;padding:1rem}.error-message{font-size:x-small;color:red}:host ::ng-deep .p-toast{width:20rem!important}.circular-image{width:50px;height:50px;border-radius:50%;object-fit:cover;border:none}.container-button{width:10rem;margin-top:3%}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.ButtonComponent, selector: "ipt-button", inputs: ["primary", "size", "label", "buttonType", "isEnabled"], outputs: ["onClick"] }, { kind: "component", type: i5.InputComponent, selector: "ipt-input", inputs: ["inputType", "placeHolder", "validateText", "withPipe", "list", "iconUrl", "control", "prefix", "thousands", "decimal", "disabledSel"], outputs: ["dateSelected"] }, { kind: "component", type: i6.SelectComponent, selector: "ipt-select", inputs: ["isRequired", "data", "defaultText", "selectCode", "disabledSel", "initialValue", "control"], outputs: ["eventSelect"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "fitContent", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i8.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i9.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i10.RadioButton, selector: "p-radioButton", inputs: ["value", "formControlName", "name", "disabled", "label", "tabindex", "inputId", "ariaLabelledBy", "ariaLabel", "style", "styleClass", "labelStyleClass"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "pipe", type: i3.JsonPipe, name: "json" }] });
190
+ CodSelfFormStepFourComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: CodSelfFormStepFourComponent, selector: "app-cod-self-form-step-four", inputs: { idTypes: "idTypes" }, outputs: { completed: "completed", action: "action" }, usesInheritance: true, ngImport: i0, template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Datos de Facturacion</h2>\n <p-toast position=\"top-center\" key=\"confirm\" (onClose)=\"onReject()\" [baseZIndex]=\"10\">\n <ng-template let-message pTemplate=\"message\">\n <div class=\"flex flex-column align-items-start\" style=\"flex: 1\">\n <div class=\"flex align-items-center gap-2\">\n <img src=\"https://qa.iptdev.com.co/assets/logos/reading.png\" style=\"width: 65px;\" shape=\"circle\" />\n <span class=\"font-bold text-900\">Jacob</span>\n </div>\n <div class=\"font-medium text-lg my-3 text-900\">{{ messageInfo }}</div>\n </div>\n </ng-template>\n </p-toast>\n <i class=\"pi pi-exclamation-circle cursor-pointer w-auto mb-4\" (click)=\"showConfirm()\" pTooltip=\"Mas info.\" tooltipPosition=\"bottom\"></i>\n <form autocomplete=\"off\" [formGroup]=\"codSelfFormStepFour\" class=\"grid mt-2 flex flex-column align-items-center\">\n <div class=\"container__body__select flex justify-content-center flex-wrap\">\n <div class=\"container__type__payments\" *ngIf=\"isSelectionOptionPayments\">\n <div class=\"flex flex-column gap-3\">\n <h3>\u00BFComo quieres pagar?</h3>\n <div *ngFor=\"let category of OptionPayments; index as ind\" class=\"field-checkbox\">\n <p-radioButton\n [inputId]=\"category.key\"\n name=\"category\"\n [value]=\"category\"\n [(ngModel)]=\"selectedOptionPayments\"\n [disabled]=\"disableweekdays[ind]\"\n [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"selectOpcionsPayments($event)\"\n ></p-radioButton>\n <label [for]=\"category.key\" class=\"ml-2\">\n {{ category.name }}\n </label>\n </div>\n </div>\n </div>\n\n <div class=\"container__opstion__instalations\" *ngIf=\"!isSelectionOptionPayments\">\n <!-- Vista para la opci\u00F3n de pago \"Instalaciones\" -->\n <div *ngIf=\"getViewBasedOnPaymentOption() === 'in'\">\n <div class=\"container__info flex flex-column align-items-center justify-content-center mt-1 mb-4\" *ngIf=\"isEditBillingData\">\n\n <img\n src=\"https://qa.iptdev.com.co/assets/logos/lobo-web.png\"\n alt=\"Receipt Icon\"\n shape=\"circle\"\n class=\"circular-image\"\n />\n <strong>{{ codSelfFormStepFour.get('invoicing_name')?.value }} {{ codSelfFormStepFour.get('invoicing_Apellido')?.value }}</strong>\n <span>{{ getIdTypeDescription(codSelfFormStepFour.get('invoicing_idType')?.value) }} {{ codSelfFormStepFour.get('invoicing_document')?.value }}</span>\n\n <div class=\"container-button\">\n <ipt-button\n [label]=\"'Modificar Datos'\"\n (onClick)=\"editBillingData()\"\n [primary]=\"false\">\n </ipt-button>\n </div>\n </div>\n <div class=\"m-3\" *ngIf=\"!isEditBillingData\">\n <h3>Completa los nuevos datos para la emision de tu factura</h3>\n <div class=\"flex gap-1 md:gap-4 xl:gap-8 m-1 p-2 border-round bg-blue-500 text-white\">\n <div class=\"container_icon flex mr-4 justify-content-center align-items-start mt-1\">\n <i class=\"pi pi-info-circle cursor-pointer w-auto mb-4\" pTooltip=\"Mas info.\" tooltipPosition=\"bottom\"></i>\n </div>\n <div class=\"flex flex-column container_info_span flex align-items-center justify-content-center\">\n <span>Si proporcionas datos de un tercero, confirmas que los datos son correctos y que tienes su consentimiento para el uso de la informacion. Estos datos se trataran de acuerdo a nuestra <a href=\"\">Declaracion de Privacidad</a></span>\n </div>\n </div>\n <div>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"codSelfFormStepFour.controls['invoicing_name']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellidos'\"\n [control]=\"codSelfFormStepFour.controls['invoicing_Apellido']\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codSelfFormStepFour.controls['invoicing_idType'].value\"\n [control]=\"codSelfFormStepFour.controls['invoicing_idType']\"\n [selectCode]=\"codSelfFormStepFour.controls['invoicing_idType'].value === null ? 'Tipo de documento' : codSelfFormStepFour.controls['invoicing_idType'].value\"\n [isRequired]=\"true\"\n [data]=\"idTypes\"\n (eventSelect)=\"selectIdType($event)\"\n [defaultText]=\"'Tipo de documento'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'Numero de documento'\"\n [control]=\"codSelfFormStepFour.controls['invoicing_document']\"\n ></ipt-input>\n </div>\n <div class=\"flex justify-content-end mt-3 align-items-center gap-3\">\n <button\n pButton\n [disabled]=\"!codSelfFormStepFour.valid\"\n label=\"Continuar\"\n type=\"button\"\n (click)=\"updateDatosBillingData()\"\n ></button>\n </div>\n </div>\n </div>\n\n <!-- Vista para la opci\u00F3n de pago \"Transferencia\" -->\n <div *ngIf=\"getViewBasedOnPaymentOption() === 'tr'\">\n <h3>Completa los datos para Transferencia</h3>\n <!-- Aqu\u00ED puedes agregar el formulario espec\u00EDfico para Transferencia -->\n </div>\n </div>\n </div>\n </form>\n\n <div class=\"flex justify-content-between mt-3 align-items-center gap-3\">\n <button\n pButton\n icon=\"pi pi-arrow-left\"\n type=\"button\"\n (click)=\"back()\"\n ></button>\n <button\n *ngIf=\"!isSelectionOptionPayments && isEditBillingData && codSelfFormStepFour.valid\"\n pButton\n label=\"Guardar\"\n type=\"button\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n</div>\n\n<div>\n <pre>{{ codSelfFormStepFour.value | json }}</pre>\n <div>\n <pre>{{ codSelfFormStepFour.valid | json }}</pre>\n </div>\n</div>\n", styles: [".container-form{margin:5%;border-radius:6px;border:1px solid #2563eb;box-shadow:#3c40434d 0 1px 2px,#3c404326 0 2px 6px 2px;padding:1rem}.error-message{font-size:x-small;color:red}:host ::ng-deep .p-toast{width:20rem!important}.circular-image{width:50px;height:50px;border-radius:50%;object-fit:cover;border:none}.container-button{width:10rem;margin-top:3%}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.ButtonComponent, selector: "ipt-button", inputs: ["primary", "size", "label", "buttonType", "isEnabled"], outputs: ["onClick"] }, { kind: "component", type: i5.InputComponent, selector: "ipt-input", inputs: ["inputType", "placeHolder", "validateText", "withPipe", "list", "iconUrl", "control", "prefix", "thousands", "decimal", "disabledSel"], outputs: ["dateSelected"] }, { kind: "component", type: i6.SelectComponent, selector: "ipt-select", inputs: ["isRequired", "data", "defaultText", "selectCode", "disabledSel", "initialValue", "control"], outputs: ["eventSelect"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "fitContent", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i8.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i9.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i10.RadioButton, selector: "p-radioButton", inputs: ["value", "formControlName", "name", "disabled", "label", "tabindex", "inputId", "ariaLabelledBy", "ariaLabel", "style", "styleClass", "labelStyleClass"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "pipe", type: i3.JsonPipe, name: "json" }] });
183
191
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CodSelfFormStepFourComponent, decorators: [{
184
192
  type: Component,
185
- args: [{ selector: 'app-cod-self-form-step-four', template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Datos de Facturacion</h2>\n <p-toast position=\"top-center\" key=\"confirm\" (onClose)=\"onReject()\" [baseZIndex]=\"10\">\n <ng-template let-message pTemplate=\"message\">\n <div class=\"flex flex-column align-items-start\" style=\"flex: 1\">\n <div class=\"flex align-items-center gap-2\">\n <img src=\"https://qa.iptdev.com.co/assets/logos/reading.png\" style=\"width: 65px;\" shape=\"circle\" />\n <span class=\"font-bold text-900\">Jacob</span>\n </div>\n <div class=\"font-medium text-lg my-3 text-900\">{{ messageInfo }}</div>\n </div>\n </ng-template>\n </p-toast>\n <i class=\"pi pi-exclamation-circle cursor-pointer w-auto mb-4\" (click)=\"showConfirm()\" pTooltip=\"Mas info.\" tooltipPosition=\"bottom\"></i>\n <form autocomplete=\"off\" [formGroup]=\"codSelfFormStepFour\" class=\"grid mt-2 flex flex-column align-items-center\">\n <div class=\"container__body__select flex justify-content-center flex-wrap\">\n <div class=\"container__type__payments\" *ngIf=\"isSelectionOptionPayments\">\n <div class=\"flex flex-column gap-3\">\n <h3>\u00BFComo quieres pagar?</h3>\n <div *ngFor=\"let category of OptionPayments; index as ind\" class=\"field-checkbox\">\n <p-radioButton\n [inputId]=\"category.key\"\n name=\"category\"\n [value]=\"category\"\n [(ngModel)]=\"selectedOptionPayments\"\n [disabled]=\"disableweekdays[ind]\"\n [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"selectOpcionsPayments($event)\"\n ></p-radioButton>\n <label [for]=\"category.key\" class=\"ml-2\">\n {{ category.name }}\n </label>\n </div>\n </div>\n </div>\n\n <div class=\"container__opstion__instalations\" *ngIf=\"!isSelectionOptionPayments\">\n <!-- Vista para la opci\u00F3n de pago \"Instalaciones\" -->\n <div *ngIf=\"getViewBasedOnPaymentOption() === 'in'\">\n <div class=\"container__info flex flex-column align-items-center justify-content-center mt-1 mb-4\" *ngIf=\"isEditBillingData\">\n\n <img\n src=\"https://qa.iptdev.com.co/assets/logos/lobo-web.png\"\n alt=\"Receipt Icon\"\n shape=\"circle\"\n class=\"circular-image\"\n />\n <strong>{{ codSelfFormStepFour.get('invoicing_name')?.value }} {{ codSelfFormStepFour.get('invoicing_Apellido')?.value }}</strong>\n <span>{{ getIdTypeDescription(codSelfFormStepFour.get('invoicing_idType')?.value) }} {{ codSelfFormStepFour.get('invoicing_document')?.value }}</span>\n\n <div class=\"container-button\">\n <ipt-button\n [label]=\"'Modificar Datos'\"\n (onClick)=\"editBillingData()\"\n [primary]=\"false\">\n </ipt-button>\n </div>\n </div>\n <div class=\"m-3\" *ngIf=\"!isEditBillingData\">\n <h3>Completa los nuevos datos para la emision de tu factura</h3>\n <div class=\"flex gap-1 md:gap-4 xl:gap-8 m-1 p-2 border-round bg-blue-500 text-white\">\n <div class=\"container_icon flex mr-4 justify-content-center align-items-start mt-1\">\n <i class=\"pi pi-info-circle cursor-pointer w-auto mb-4\" pTooltip=\"Mas info.\" tooltipPosition=\"bottom\"></i>\n </div>\n <div class=\"flex flex-column container_info_span flex align-items-center justify-content-center\">\n <span>Si proporcionas datos de un tercero, confirmas que los datos son correctos y que tienes su consentimiento para el uso de la informacion. Estos datos se trataran de acuerdo a nuestra <a href=\"\">Declaracion de Privacidad</a></span>\n </div>\n </div>\n <div>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"codSelfFormStepFour.controls['invoicing_name']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellido'\"\n [control]=\"codSelfFormStepFour.controls['invoicing_Apellido']\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codSelfFormStepFour.controls['invoicing_idType'].value\"\n [control]=\"codSelfFormStepFour.controls['invoicing_idType']\"\n [selectCode]=\"codSelfFormStepFour.controls['invoicing_idType'].value === null ? 'Tipo de documento' : codSelfFormStepFour.controls['invoicing_idType'].value\"\n [isRequired]=\"true\"\n [data]=\"idTypes\"\n (eventSelect)=\"selectIdType($event)\"\n [defaultText]=\"'Tipo de documento'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Documento'\"\n [control]=\"codSelfFormStepFour.controls['invoicing_document']\"\n ></ipt-input>\n </div>\n <div class=\"flex justify-content-end mt-3 align-items-center gap-3\">\n <button\n pButton\n [disabled]=\"!codSelfFormStepFour.valid\"\n label=\"Continuar\"\n type=\"button\"\n (click)=\"updateDatosBillingData()\"\n ></button>\n </div>\n </div>\n </div>\n\n <!-- Vista para la opci\u00F3n de pago \"Transferencia\" -->\n <div *ngIf=\"getViewBasedOnPaymentOption() === 'tr'\">\n <h3>Completa los datos para Transferencia</h3>\n <!-- Aqu\u00ED puedes agregar el formulario espec\u00EDfico para Transferencia -->\n </div>\n </div>\n </div>\n </form>\n\n <div class=\"flex justify-content-between mt-3 align-items-center gap-3\">\n <button\n pButton\n icon=\"pi pi-arrow-left\"\n type=\"button\"\n (click)=\"back()\"\n ></button>\n <button\n *ngIf=\"!isSelectionOptionPayments && isEditBillingData && codSelfFormStepFour.valid\"\n pButton\n label=\"Guardar\"\n type=\"button\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n</div>\n\n<div>\n <pre>{{ codSelfFormStepFour.value | json }}</pre>\n <div>\n <pre>{{ codSelfFormStepFour.valid | json }}</pre>\n </div>\n</div>\n", styles: [".container-form{margin:5%;border-radius:6px;border:1px solid #2563eb;box-shadow:#3c40434d 0 1px 2px,#3c404326 0 2px 6px 2px;padding:1rem}.error-message{font-size:x-small;color:red}:host ::ng-deep .p-toast{width:20rem!important}.circular-image{width:50px;height:50px;border-radius:50%;object-fit:cover;border:none}.container-button{width:10rem;margin-top:3%}\n"] }]
193
+ args: [{ selector: 'app-cod-self-form-step-four', template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Datos de Facturacion</h2>\n <p-toast position=\"top-center\" key=\"confirm\" (onClose)=\"onReject()\" [baseZIndex]=\"10\">\n <ng-template let-message pTemplate=\"message\">\n <div class=\"flex flex-column align-items-start\" style=\"flex: 1\">\n <div class=\"flex align-items-center gap-2\">\n <img src=\"https://qa.iptdev.com.co/assets/logos/reading.png\" style=\"width: 65px;\" shape=\"circle\" />\n <span class=\"font-bold text-900\">Jacob</span>\n </div>\n <div class=\"font-medium text-lg my-3 text-900\">{{ messageInfo }}</div>\n </div>\n </ng-template>\n </p-toast>\n <i class=\"pi pi-exclamation-circle cursor-pointer w-auto mb-4\" (click)=\"showConfirm()\" pTooltip=\"Mas info.\" tooltipPosition=\"bottom\"></i>\n <form autocomplete=\"off\" [formGroup]=\"codSelfFormStepFour\" class=\"grid mt-2 flex flex-column align-items-center\">\n <div class=\"container__body__select flex justify-content-center flex-wrap\">\n <div class=\"container__type__payments\" *ngIf=\"isSelectionOptionPayments\">\n <div class=\"flex flex-column gap-3\">\n <h3>\u00BFComo quieres pagar?</h3>\n <div *ngFor=\"let category of OptionPayments; index as ind\" class=\"field-checkbox\">\n <p-radioButton\n [inputId]=\"category.key\"\n name=\"category\"\n [value]=\"category\"\n [(ngModel)]=\"selectedOptionPayments\"\n [disabled]=\"disableweekdays[ind]\"\n [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"selectOpcionsPayments($event)\"\n ></p-radioButton>\n <label [for]=\"category.key\" class=\"ml-2\">\n {{ category.name }}\n </label>\n </div>\n </div>\n </div>\n\n <div class=\"container__opstion__instalations\" *ngIf=\"!isSelectionOptionPayments\">\n <!-- Vista para la opci\u00F3n de pago \"Instalaciones\" -->\n <div *ngIf=\"getViewBasedOnPaymentOption() === 'in'\">\n <div class=\"container__info flex flex-column align-items-center justify-content-center mt-1 mb-4\" *ngIf=\"isEditBillingData\">\n\n <img\n src=\"https://qa.iptdev.com.co/assets/logos/lobo-web.png\"\n alt=\"Receipt Icon\"\n shape=\"circle\"\n class=\"circular-image\"\n />\n <strong>{{ codSelfFormStepFour.get('invoicing_name')?.value }} {{ codSelfFormStepFour.get('invoicing_Apellido')?.value }}</strong>\n <span>{{ getIdTypeDescription(codSelfFormStepFour.get('invoicing_idType')?.value) }} {{ codSelfFormStepFour.get('invoicing_document')?.value }}</span>\n\n <div class=\"container-button\">\n <ipt-button\n [label]=\"'Modificar Datos'\"\n (onClick)=\"editBillingData()\"\n [primary]=\"false\">\n </ipt-button>\n </div>\n </div>\n <div class=\"m-3\" *ngIf=\"!isEditBillingData\">\n <h3>Completa los nuevos datos para la emision de tu factura</h3>\n <div class=\"flex gap-1 md:gap-4 xl:gap-8 m-1 p-2 border-round bg-blue-500 text-white\">\n <div class=\"container_icon flex mr-4 justify-content-center align-items-start mt-1\">\n <i class=\"pi pi-info-circle cursor-pointer w-auto mb-4\" pTooltip=\"Mas info.\" tooltipPosition=\"bottom\"></i>\n </div>\n <div class=\"flex flex-column container_info_span flex align-items-center justify-content-center\">\n <span>Si proporcionas datos de un tercero, confirmas que los datos son correctos y que tienes su consentimiento para el uso de la informacion. Estos datos se trataran de acuerdo a nuestra <a href=\"\">Declaracion de Privacidad</a></span>\n </div>\n </div>\n <div>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"codSelfFormStepFour.controls['invoicing_name']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellidos'\"\n [control]=\"codSelfFormStepFour.controls['invoicing_Apellido']\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codSelfFormStepFour.controls['invoicing_idType'].value\"\n [control]=\"codSelfFormStepFour.controls['invoicing_idType']\"\n [selectCode]=\"codSelfFormStepFour.controls['invoicing_idType'].value === null ? 'Tipo de documento' : codSelfFormStepFour.controls['invoicing_idType'].value\"\n [isRequired]=\"true\"\n [data]=\"idTypes\"\n (eventSelect)=\"selectIdType($event)\"\n [defaultText]=\"'Tipo de documento'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'Numero de documento'\"\n [control]=\"codSelfFormStepFour.controls['invoicing_document']\"\n ></ipt-input>\n </div>\n <div class=\"flex justify-content-end mt-3 align-items-center gap-3\">\n <button\n pButton\n [disabled]=\"!codSelfFormStepFour.valid\"\n label=\"Continuar\"\n type=\"button\"\n (click)=\"updateDatosBillingData()\"\n ></button>\n </div>\n </div>\n </div>\n\n <!-- Vista para la opci\u00F3n de pago \"Transferencia\" -->\n <div *ngIf=\"getViewBasedOnPaymentOption() === 'tr'\">\n <h3>Completa los datos para Transferencia</h3>\n <!-- Aqu\u00ED puedes agregar el formulario espec\u00EDfico para Transferencia -->\n </div>\n </div>\n </div>\n </form>\n\n <div class=\"flex justify-content-between mt-3 align-items-center gap-3\">\n <button\n pButton\n icon=\"pi pi-arrow-left\"\n type=\"button\"\n (click)=\"back()\"\n ></button>\n <button\n *ngIf=\"!isSelectionOptionPayments && isEditBillingData && codSelfFormStepFour.valid\"\n pButton\n label=\"Guardar\"\n type=\"button\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n</div>\n\n<div>\n <pre>{{ codSelfFormStepFour.value | json }}</pre>\n <div>\n <pre>{{ codSelfFormStepFour.valid | json }}</pre>\n </div>\n</div>\n", styles: [".container-form{margin:5%;border-radius:6px;border:1px solid #2563eb;box-shadow:#3c40434d 0 1px 2px,#3c404326 0 2px 6px 2px;padding:1rem}.error-message{font-size:x-small;color:red}:host ::ng-deep .p-toast{width:20rem!important}.circular-image{width:50px;height:50px;border-radius:50%;object-fit:cover;border:none}.container-button{width:10rem;margin-top:3%}\n"] }]
186
194
  }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.MessageService }]; }, propDecorators: { idTypes: [{
187
195
  type: Input
188
196
  }], completed: [{
@@ -190,4 +198,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImpor
190
198
  }], action: [{
191
199
  type: Output
192
200
  }] } });
193
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLXNlbGYtZm9ybS1zdGVwLWZvdXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvZC1zZWxmLW1hbmFnZWQvc3RlcHMvY29kLWZvcm0tc3RlcC1mb3VyL2NvZC1zZWxmLWZvcm0tc3RlcC1mb3VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2Rlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb2Qtc2VsZi1tYW5hZ2VkL3N0ZXBzL2NvZC1mb3JtLXN0ZXAtZm91ci9jb2Qtc2VsZi1mb3JtLXN0ZXAtZm91ci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBMEIsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBT2pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBeUIsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7Ozs7O0FBTy9FLE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxtQkFBbUI7SUFzQm5FLFlBQ1UsRUFBZSxFQUNmLGNBQThCO1FBRXRDLEtBQUssRUFBRSxDQUFDO1FBSEEsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQXJCOUIsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDdkMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFOUMsYUFBUSxHQUFHLElBQUksc0JBQXNCLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEQsZ0JBQVcsR0FBVywrQ0FBK0MsQ0FBQztRQUN0RSxZQUFPLEdB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T0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELG9CQUFvQixDQUFDLE1BQWM7UUFDakMsUUFBUSxNQUFNLEVBQUU7WUFDZCxLQUFLLEdBQUc7Z0JBQ04sT0FBTyxLQUFLLENBQUM7WUFDZixLQUFLLEdBQUc7Z0JBQ04sT0FBTyxLQUFLLENBQUM7WUFDZixLQUFLLEdBQUc7Z0JBQ04sT0FBTyxLQUFLLENBQUM7WUFDZixLQUFLLEdBQUc7Z0JBQ04sT0FBTyxLQUFLLENBQUM7WUFDZixLQUFLLEdBQUc7Z0JBQ04sT0FBTyxPQUFPLENBQUM7WUFDakIsS0FBSyxHQUFHO2dCQUNOLE9BQU8sT0FBTyxDQUFDO1lBQ2pCLEtBQUssR0FBRztnQkFDTixPQUFPLE9BQU8sQ0FBQztZQUNqQixLQUFLLEdBQUc7Z0JBQ04sT0FBTyxLQUFLLENBQUM7WUFDZixLQUFLLEdBQUc7Z0JBQ04sT0FBTyxLQUFLLENBQUM7WUFDZixLQUFLLEdBQUc7Z0JBQ04sT0FBTyxLQUFLLENBQUM7WUFDZjtnQkFDRSxPQUFPLEVBQUUsQ0FBQztTQUNiO0lBQ0gsQ0FBQzs7eUhBeExVLDRCQUE0Qjs2R0FBNUIsNEJBQTRCLGlMQ2hCekMsc3JOQTRJQTsyRkQ1SGEsNEJBQTRCO2tCQUx4QyxTQUFTOytCQUNFLDZCQUE2QjsrSEFNOUIsT0FBTztzQkFBZixLQUFLO2dCQUNJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQnVpbGRlciwgVmFsaWRhdG9ycywgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbi8vaW1wb3J0IFByaW1lbmdcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuXG4vLyBpbXBvcnQgTW9kZWxzXG5pbXBvcnQgeyBJd2Vla0RheXNScSB9IGZyb20gJy4vLi4vLi4vLi4vY29yZS9tb2RlbHMvYWNhZGVtaWMvYWNhZGVtaWMuY29tcG9uZW50JztcbmltcG9ydCB7IENvZFNlbGZNYW5hZ2VkU3RlcHMsIGxvY2FsU3RvcmFnZVZhbHVlc1R3byB9IGZyb20gJy4uLy4uL2xvZ2ljL2NvZC1zZWxmLW1hbmFnZWQtc3RlcHMnO1xuaW1wb3J0IHsgQ29kU2VsZk1hbmFnZWRDb250cm9scyB9IGZyb20gJy4uLy4uL2xvZ2ljL2NvZC1zZWxmLW1hbmFnZWQtY29udHJvbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY29kLXNlbGYtZm9ybS1zdGVwLWZvdXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY29kLXNlbGYtZm9ybS1zdGVwLWZvdXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb2Qtc2VsZi1mb3JtLXN0ZXAtZm91ci5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENvZFNlbGZGb3JtU3RlcEZvdXJDb21wb25lbnQgZXh0ZW5kcyBDb2RTZWxmTWFuYWdlZFN0ZXBzIGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSBpZFR5cGVzOiBhbnk7XG4gIEBPdXRwdXQoKSBjb21wbGV0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgQE91dHB1dCgpIGFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIGNvbnRyb2xzID0gbmV3IENvZFNlbGZNYW5hZ2VkQ29udHJvbHMoKS5jb250cm9sc1szXTtcbiAgbWVzc2FnZUluZm86IHN0cmluZyA9IFwiRGF0b3MgZGUgZmFjdHVyYWNpb24gZGUgYWN1ZXJkbyBhIHR1IGVsZWNjaW9uXCI7XG4gIHZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY29kU2VsZkZvcm1TdGVwRm91ciE6IEZvcm1Hcm91cDtcbiAgc2VsZWN0ZWRPcHRpb25QYXltZW50cz86IEl3ZWVrRGF5c1JxO1xuICBtZXNzYWdlQWxlcnRQbGFjZW1lbnRUZXN0ID0gZmFsc2U7XG4gIGRpc2FibGV3ZWVrZGF5czogYm9vbGVhbltdID0gW107XG4gIGlzU2VsZWN0aW9uT3B0aW9uUGF5bWVudHMgPSB0cnVlO1xuICBpc0VkaXRCaWxsaW5nRGF0YSA9IHRydWU7XG4gIE9wdGlvblBheW1lbnRzOiBhbnlbXSA9IFtcbiAgICB7IGNvZGU6IDEsIGtleTogJ2luJywgbmFtZTogJ0luc3RhbGFjaW9uZXMnIH0sXG4gICAgeyBjb2RlOiAyLCBrZXk6ICd0cicsIG5hbWU6ICdUcmFuc2ZlcmVuY2lhJyB9LFxuICBdO1xuXG4gIHN0dWRlbnRJZENhcmRUeXBlID0gbmV3IEZvcm1Db250cm9sKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5pbml0Rm9ybSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdGFydExvY2FsU3RvcmFnZVdvcmsoKTtcbiAgICB0aGlzLnN1YnNjcmliZVRvU3R1ZGVudElkQ2FyZFR5cGVDaGFuZ2VzKCk7XG4gICAgdGhpcy5nZXREYXRhVXNlcigpO1xuICAgIGNvbnNvbGUubG9nKCdpZFR5cGVzJyx0aGlzLmlkVHlwZXMpO1xuICB9XG5cbiAgaW5pdEZvcm0oKSB7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBGb3VyID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBvcHRpb25zUGF5bWVudHM6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIGludm9pY2luZ19uYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBpbnZvaWNpbmdfQXBlbGxpZG86IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIGludm9pY2luZ19pZFR5cGU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIGludm9pY2luZ19kb2N1bWVudDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgIH0pO1xuICB9XG5cbiAgc3Vic2NyaWJlVG9TdHVkZW50SWRDYXJkVHlwZUNoYW5nZXMoKSB7XG4gICAgdGhpcy5zdHVkZW50SWRDYXJkVHlwZS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIHRoaXMudXBkYXRlQmlsbGluZ0RhdGFGaWVsZHModmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0RGF0YVVzZXIoKXtcbiAgICBjb25zdCB0eXBlSWRDYXJkID0gdGhpcy5sb2NhbFN0b3JhZ2VDT0QuZ2V0Q29kRm9ybURhdGEoMSwgJ3N0dWRlbnRfaWRfY2FyZF90eXBlJyk7XG4gICAgdGhpcy5zdHVkZW50SWRDYXJkVHlwZS5zZXRWYWx1ZSh0eXBlSWRDYXJkKTtcbiAgfVxuXG4gIHVwZGF0ZUJpbGxpbmdEYXRhRmllbGRzKHR5cGVJZENhcmQ6IHN0cmluZyB8IG51bGwpIHtcbiAgICBpZiAodHlwZUlkQ2FyZCAhPSBudWxsICYmIHR5cGVJZENhcmQgIT0gXCIyXCIpIHtcbiAgICAgIGNvbnN0IG5hbWVTdHVkZW50ID0gdGhpcy5sb2NhbFN0b3JhZ2VDT0QuZ2V0Q29kRm9ybURhdGEoMSwgJ3N0dWRlbnRfbmFtZScpO1xuICAgICAgY29uc3QgbGFzdE5hbWVTdHVkZW50ID0gdGhpcy5sb2NhbFN0b3JhZ2VDT0QuZ2V0Q29kRm9ybURhdGEoMSwgJ3N0dWRlbnRfbGFzdF9uYW1lJyk7XG4gICAgICBjb25zdCB0eXBlSWRDYXJkU3R1ZGVudCA9IHRoaXMubG9jYWxTdG9yYWdlQ09ELmdldENvZEZvcm1EYXRhKDEsICdzdHVkZW50X2lkX2NhcmRfdHlwZScpO1xuICAgICAgY29uc3QgaWRDYXJkU3R1ZGVudCA9IHRoaXMubG9jYWxTdG9yYWdlQ09ELmdldENvZEZvcm1EYXRhKDEsICdzdHVkZW50X2lkX2NhcmQnKTtcblxuICAgICAgY29uc29sZS5sb2coJ25hbWVTdHVkZW50JywgbmFtZVN0dWRlbnQpO1xuICAgICAgY29uc29sZS5sb2coJ2xhc3ROYW1lU3R1ZGVudCcsIGxhc3ROYW1lU3R1ZGVudCk7XG4gICAgICBjb25zb2xlLmxvZygndHlwZUlkQ2FyZFN0dWRlbnQnLCB0eXBlSWRDYXJkU3R1ZGVudCk7XG4gICAgICBjb25zb2xlLmxvZygnaWRDYXJkU3R1ZGVudCcsIGlkQ2FyZFN0dWRlbnQpO1xuXG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcEZvdXIuY29udHJvbHNbJ2ludm9pY2luZ19uYW1lJ10uc2V0VmFsdWUobmFtZVN0dWRlbnQpO1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBGb3VyLmNvbnRyb2xzWydpbnZvaWNpbmdfQXBlbGxpZG8nXS5zZXRWYWx1ZShsYXN0TmFtZVN0dWRlbnQpO1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBGb3VyLmNvbnRyb2xzWydpbnZvaWNpbmdfaWRUeXBlJ10uc2V0VmFsdWUodHlwZUlkQ2FyZFN0dWRlbnQpO1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBGb3VyLmNvbnRyb2xzWydpbnZvaWNpbmdfZG9jdW1lbnQnXS5zZXRWYWx1ZShpZENhcmRTdHVkZW50KTtcbiAgICB9XG4gIH1cblxuICBiYWNrKCkge1xuICAgIGlmICghdGhpcy5pc1NlbGVjdGlvbk9wdGlvblBheW1lbnRzICYmICF0aGlzLmlzRWRpdEJpbGxpbmdEYXRhKSB7XG4gICAgICB0aGlzLmlzRWRpdEJpbGxpbmdEYXRhID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLmlzU2VsZWN0aW9uT3B0aW9uUGF5bWVudHMgJiYgdGhpcy5pc0VkaXRCaWxsaW5nRGF0YSkge1xuICAgICAgdGhpcy5pc1NlbGVjdGlvbk9wdGlvblBheW1lbnRzID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb21wbGV0ZWQuZW1pdCgyKTtcbiAgICB9XG4gIH1cblxuICBuZXh0KCkge1xuICAgIGlmICh0aGlzLmlzU2VsZWN0aW9uT3B0aW9uUGF5bWVudHMpIHtcbiAgICAgIHRoaXMuaXNTZWxlY3Rpb25PcHRpb25QYXltZW50cyA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuaXNFZGl0QmlsbGluZ0RhdGEpIHtcbiAgICAgIHRoaXMuaXNFZGl0QmlsbGluZ0RhdGEgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbmRGb3JtKCk7XG4gICAgfVxuICB9XG5cbiAgc3RhcnRMb2NhbFN0b3JhZ2VXb3JrKCkge1xuICAgIHRoaXMuY29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IHtcbiAgICAgIGxldCBsb2NhbFN0b3JhZ2VWYWx1ZTogbG9jYWxTdG9yYWdlVmFsdWVzVHdvID0gdGhpcy5yZWFkQW5kV3JpdGVMUyg0LCBjb250cm9sLm5hbWUpO1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBGb3VyLmNvbnRyb2xzW2NvbnRyb2wubmFtZV0uc2V0VmFsdWUobG9jYWxTdG9yYWdlVmFsdWUudmFsdWUpO1xuICAgICAgdGhpcy5saXN0ZW5Gb3JtQ2hhbmdlcyg0LCBjb250cm9sLm5hbWUsIHRoaXMuY29kU2VsZkZvcm1TdGVwRm91ci5jb250cm9sc1tjb250cm9sLm5hbWVdLnZhbHVlQ2hhbmdlcyk7XG4gICAgfSk7XG4gIH1cblxuICBlZGl0QmlsbGluZ0RhdGEoKSB7XG4gICAgdGhpcy5pc0VkaXRCaWxsaW5nRGF0YSA9IGZhbHNlO1xuICB9XG5cbiAgdXBkYXRlRGF0b3NCaWxsaW5nRGF0YSgpIHtcbiAgICB0aGlzLmlzRWRpdEJpbGxpbmdEYXRhID0gdHJ1ZTtcbiAgfVxuXG4gIHNlbmRGb3JtKCkge1xuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwRm91ci5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgdGhpcy5hY3Rpb24uZW1pdCgnY3JlYXRlJyk7XG4gICAgY29uc29sZS5sb2coJ0VqZWN1dGEgZW5kcG9pbnQnKTtcbiAgfVxuXG4gIG9uUmVqZWN0KCkge1xuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuY2xlYXIoJ2NvbmZpcm0nKTtcbiAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgfVxuXG4gIHNob3dDb25maXJtKCkge1xuICAgIGlmICghdGhpcy52aXNpYmxlKSB7XG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IGtleTogJ2NvbmZpcm0nLCBzdGlja3k6IHRydWUsIHNldmVyaXR5OiAnc3VjY2VzcycsIHN1bW1hcnk6ICdDYW4geW91IHNlbmQgbWUgdGhlIHJlcG9ydD8nLCBsaWZlOiAxMDAwMCB9KTtcbiAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0T3BjaW9uc1BheW1lbnRzKGV2ZTogSXdlZWtEYXlzUnEpIHtcbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9uUGF5bWVudHMgPSBldmU7XG4gICAgdGhpcy5pc1NlbGVjdGlvbk9wdGlvblBheW1lbnRzID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5zZWxlY3RlZE9wdGlvblBheW1lbnRzICE9PSBudWxsKSB7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcEZvdXIuY29udHJvbHNbJ29wdGlvbnNQYXltZW50cyddLnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRPcHRpb25QYXltZW50cy5jb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBGb3VyLmNvbnRyb2xzWydvcHRpb25zUGF5bWVudHMnXS5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RJZFR5cGUoaWRUeXBlOiBhbnkpIHtcbiAgICBpZiAoaWRUeXBlICE9PSAnVGlwbyBkZSBkb2N1bWVudG8nKSB7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcEZvdXIuY29udHJvbHNbJ2ludm9pY2luZ19pZFR5cGUnXS5zZXRWYWx1ZShpZFR5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcEZvdXIuY29udHJvbHNbJ2ludm9pY2luZ19pZFR5cGUnXS5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gIH1cblxuICBnZXRWaWV3QmFzZWRPblBheW1lbnRPcHRpb24oKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZE9wdGlvblBheW1lbnRzPy5jb2RlID09PSAxKSB7XG4gICAgICByZXR1cm4gJ2luJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRPcHRpb25QYXltZW50cz8uY29kZSA9PT0gMykge1xuICAgICAgcmV0dXJuICd0cic7XG4gICAgfVxuICAgIHJldHVybiAnZGVmYXVsdCc7XG4gIH1cblxuICBnZXRJZFR5cGVEZXNjcmlwdGlvbihpZFR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgc3dpdGNoIChpZFR5cGUpIHtcbiAgICAgIGNhc2UgJzAnOlxuICAgICAgICByZXR1cm4gJ04vQSc7XG4gICAgICBjYXNlICcxJzpcbiAgICAgICAgcmV0dXJuICdDLkMnO1xuICAgICAgY2FzZSAnMic6XG4gICAgICAgIHJldHVybiAnVC5JJztcbiAgICAgIGNhc2UgJzMnOlxuICAgICAgICByZXR1cm4gJ0MuRSc7XG4gICAgICBjYXNlICc0JzpcbiAgICAgICAgcmV0dXJuICdQLkUuUCc7XG4gICAgICBjYXNlICc1JzpcbiAgICAgICAgcmV0dXJuICdSLlUuTSc7XG4gICAgICBjYXNlICc2JzpcbiAgICAgICAgcmV0dXJuICdQLlAuVCc7XG4gICAgICBjYXNlICc3JzpcbiAgICAgICAgcmV0dXJuICdQLkEnO1xuICAgICAgY2FzZSAnOCc6XG4gICAgICAgIHJldHVybiAnUi5DJztcbiAgICAgIGNhc2UgJzknOlxuICAgICAgICByZXR1cm4gJ0MuRCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyLW1haW5cIj5cbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mb3JtXCI+XG4gICAgPGgyPkRhdG9zIGRlIEZhY3R1cmFjaW9uPC9oMj5cbiAgICA8cC10b2FzdCBwb3NpdGlvbj1cInRvcC1jZW50ZXJcIiBrZXk9XCJjb25maXJtXCIgKG9uQ2xvc2UpPVwib25SZWplY3QoKVwiIFtiYXNlWkluZGV4XT1cIjEwXCI+XG4gICAgICA8bmctdGVtcGxhdGUgbGV0LW1lc3NhZ2UgcFRlbXBsYXRlPVwibWVzc2FnZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1zdGFydFwiIHN0eWxlPVwiZmxleDogMVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3FhLmlwdGRldi5jb20uY28vYXNzZXRzL2xvZ29zL3JlYWRpbmcucG5nXCIgc3R5bGU9XCJ3aWR0aDogNjVweDtcIiBzaGFwZT1cImNpcmNsZVwiIC8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LTkwMFwiPkphY29iPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LW1lZGl1bSB0ZXh0LWxnIG15LTMgdGV4dC05MDBcIj57eyBtZXNzYWdlSW5mbyB9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9wLXRvYXN0PlxuICAgIDxpIGNsYXNzPVwicGkgcGktZXhjbGFtYXRpb24tY2lyY2xlIGN1cnNvci1wb2ludGVyIHctYXV0byBtYi00XCIgKGNsaWNrKT1cInNob3dDb25maXJtKClcIiBwVG9vbHRpcD1cIk1hcyBpbmZvLlwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiPjwvaT5cbiAgICA8Zm9ybSBhdXRvY29tcGxldGU9XCJvZmZcIiBbZm9ybUdyb3VwXT1cImNvZFNlbGZGb3JtU3RlcEZvdXJcIiBjbGFzcz1cImdyaWQgbXQtMiBmbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lcl9fYm9keV9fc2VsZWN0IGZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LXdyYXBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lcl9fdHlwZV9fcGF5bWVudHNcIiAqbmdJZj1cImlzU2VsZWN0aW9uT3B0aW9uUGF5bWVudHNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtbiBnYXAtM1wiPlxuICAgICAgICAgICAgPGgzPsK/Q29tbyBxdWllcmVzIHBhZ2FyPzwvaDM+XG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBPcHRpb25QYXltZW50czsgaW5kZXggYXMgaW5kXCIgY2xhc3M9XCJmaWVsZC1jaGVja2JveFwiPlxuICAgICAgICAgICAgICA8cC1yYWRpb0J1dHRvblxuICAgICAgICAgICAgICAgIFtpbnB1dElkXT1cImNhdGVnb3J5LmtleVwiXG4gICAgICAgICAgICAgICAgbmFtZT1cImNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiY2F0ZWdvcnlcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRPcHRpb25QYXltZW50c1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGV3ZWVrZGF5c1tpbmRdXCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlbGVjdE9wY2lvbnNQYXltZW50cygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPjwvcC1yYWRpb0J1dHRvbj5cbiAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiY2F0ZWdvcnkua2V5XCIgY2xhc3M9XCJtbC0yXCI+XG4gICAgICAgICAgICAgICAge3sgY2F0ZWdvcnkubmFtZSB9fVxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJfX29wc3Rpb25fX2luc3RhbGF0aW9uc1wiICpuZ0lmPVwiIWlzU2VsZWN0aW9uT3B0aW9uUGF5bWVudHNcIj5cbiAgICAgICAgICA8IS0tIFZpc3RhIHBhcmEgbGEgb3BjacOzbiBkZSBwYWdvIFwiSW5zdGFsYWNpb25lc1wiIC0tPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJnZXRWaWV3QmFzZWRPblBheW1lbnRPcHRpb24oKSA9PT0gJ2luJ1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lcl9faW5mbyBmbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTEgbWItNFwiICpuZ0lmPVwiaXNFZGl0QmlsbGluZ0RhdGFcIj5cblxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgIHNyYz1cImh0dHBzOi8vcWEuaXB0ZGV2LmNvbS5jby9hc3NldHMvbG9nb3MvbG9iby13ZWIucG5nXCJcbiAgICAgICAgICAgICAgYWx0PVwiUmVjZWlwdCBJY29uXCJcbiAgICAgICAgICAgICAgc2hhcGU9XCJjaXJjbGVcIlxuICAgICAgICAgICAgICBjbGFzcz1cImNpcmN1bGFyLWltYWdlXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgY29kU2VsZkZvcm1TdGVwRm91ci5nZXQoJ2ludm9pY2luZ19uYW1lJyk/LnZhbHVlIH19IHt7IGNvZFNlbGZGb3JtU3RlcEZvdXIuZ2V0KCdpbnZvaWNpbmdfQXBlbGxpZG8nKT8udmFsdWUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgZ2V0SWRUeXBlRGVzY3JpcHRpb24oY29kU2VsZkZvcm1TdGVwRm91ci5nZXQoJ2ludm9pY2luZ19pZFR5cGUnKT8udmFsdWUpIH19IHt7IGNvZFNlbGZGb3JtU3RlcEZvdXIuZ2V0KCdpbnZvaWNpbmdfZG9jdW1lbnQnKT8udmFsdWUgfX08L3NwYW4+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1idXR0b25cIj5cbiAgICAgICAgICAgICAgICA8aXB0LWJ1dHRvblxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidNb2RpZmljYXIgRGF0b3MnXCJcbiAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImVkaXRCaWxsaW5nRGF0YSgpXCJcbiAgICAgICAgICAgICAgICAgIFtwcmltYXJ5XT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgPC9pcHQtYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tM1wiICpuZ0lmPVwiIWlzRWRpdEJpbGxpbmdEYXRhXCI+XG4gICAgICAgICAgICAgIDxoMz5Db21wbGV0YSBsb3MgbnVldm9zIGRhdG9zIHBhcmEgbGEgZW1pc2lvbiBkZSB0dSBmYWN0dXJhPC9oMz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTEgbWQ6Z2FwLTQgeGw6Z2FwLTggbS0xIHAtMiBib3JkZXItcm91bmQgYmctYmx1ZS01MDAgdGV4dC13aGl0ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJfaWNvbiBmbGV4IG1yLTQganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1zdGFydCBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWluZm8tY2lyY2xlIGN1cnNvci1wb2ludGVyIHctYXV0byBtYi00XCIgcFRvb2x0aXA9XCJNYXMgaW5mby5cIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIj48L2k+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2x1bW4gY29udGFpbmVyX2luZm9fc3BhbiBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5TaSBwcm9wb3JjaW9uYXMgZGF0b3MgZGUgdW4gdGVyY2VybywgY29uZmlybWFzIHF1ZSBsb3MgZGF0b3Mgc29uIGNvcnJlY3RvcyB5IHF1ZSB0aWVuZXMgc3UgY29uc2VudGltaWVudG8gcGFyYSBlbCB1c28gZGUgbGEgaW5mb3JtYWNpb24uIEVzdG9zIGRhdG9zIHNlIHRyYXRhcmFuIGRlIGFjdWVyZG8gYSBudWVzdHJhIDxhIGhyZWY9XCJcIj5EZWNsYXJhY2lvbiBkZSBQcml2YWNpZGFkPC9hPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidOb21icmVzJ1wiXG4gICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb2RTZWxmRm9ybVN0ZXBGb3VyLmNvbnRyb2xzWydpbnZvaWNpbmdfbmFtZSddXCJcbiAgICAgICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidBcGVsbGlkbydcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29kU2VsZkZvcm1TdGVwRm91ci5jb250cm9sc1snaW52b2ljaW5nX0FwZWxsaWRvJ11cIlxuICAgICAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICAgICAgICA8aXB0LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJjb2RTZWxmRm9ybVN0ZXBGb3VyLmNvbnRyb2xzWydpbnZvaWNpbmdfaWRUeXBlJ10udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29kU2VsZkZvcm1TdGVwRm91ci5jb250cm9sc1snaW52b2ljaW5nX2lkVHlwZSddXCJcbiAgICAgICAgICAgICAgICAgIFtzZWxlY3RDb2RlXT1cImNvZFNlbGZGb3JtU3RlcEZvdXIuY29udHJvbHNbJ2ludm9pY2luZ19pZFR5cGUnXS52YWx1ZSA9PT0gbnVsbCA/ICdUaXBvIGRlIGRvY3VtZW50bycgOiBjb2RTZWxmRm9ybVN0ZXBGb3VyLmNvbnRyb2xzWydpbnZvaWNpbmdfaWRUeXBlJ10udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgW2lzUmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBbZGF0YV09XCJpZFR5cGVzXCJcbiAgICAgICAgICAgICAgICAgIChldmVudFNlbGVjdCk9XCJzZWxlY3RJZFR5cGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICBbZGVmYXVsdFRleHRdPVwiJ1RpcG8gZGUgZG9jdW1lbnRvJ1wiXG4gICAgICAgICAgICAgICAgPjwvaXB0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICA8aXB0LWlucHV0XG4gICAgICAgICAgICAgICAgICBbaW5wdXRUeXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0RvY3VtZW50bydcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29kU2VsZkZvcm1TdGVwRm91ci5jb250cm9sc1snaW52b2ljaW5nX2RvY3VtZW50J11cIlxuICAgICAgICAgICAgICAgID48L2lwdC1pbnB1dD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmQgbXQtMyBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNvZFNlbGZGb3JtU3RlcEZvdXIudmFsaWRcIlxuICAgICAgICAgICAgICAgICAgbGFiZWw9XCJDb250aW51YXJcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlRGF0b3NCaWxsaW5nRGF0YSgpXCJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIFZpc3RhIHBhcmEgbGEgb3BjacOzbiBkZSBwYWdvIFwiVHJhbnNmZXJlbmNpYVwiIC0tPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJnZXRWaWV3QmFzZWRPblBheW1lbnRPcHRpb24oKSA9PT0gJ3RyJ1wiPlxuICAgICAgICAgICAgPGgzPkNvbXBsZXRhIGxvcyBkYXRvcyBwYXJhIFRyYW5zZmVyZW5jaWE8L2gzPlxuICAgICAgICAgICAgPCEtLSBBcXXDrSBwdWVkZXMgYWdyZWdhciBlbCBmb3JtdWxhcmlvIGVzcGVjw61maWNvIHBhcmEgVHJhbnNmZXJlbmNpYSAtLT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC0zIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBwQnV0dG9uXG4gICAgICAgIGljb249XCJwaSBwaS1hcnJvdy1sZWZ0XCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJiYWNrKClcIlxuICAgICAgPjwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cIiFpc1NlbGVjdGlvbk9wdGlvblBheW1lbnRzICYmIGlzRWRpdEJpbGxpbmdEYXRhICYmIGNvZFNlbGZGb3JtU3RlcEZvdXIudmFsaWRcIlxuICAgICAgICBwQnV0dG9uXG4gICAgICAgIGxhYmVsPVwiR3VhcmRhclwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwic2VuZEZvcm0oKVwiXG4gICAgICA+PC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXY+XG4gIDxwcmU+e3sgY29kU2VsZkZvcm1TdGVwRm91ci52YWx1ZSB8IGpzb24gfX08L3ByZT5cbiAgPGRpdj5cbiAgICA8cHJlPnt7IGNvZFNlbGZGb3JtU3RlcEZvdXIudmFsaWQgfCBqc29uIH19PC9wcmU+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
201
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLXNlbGYtZm9ybS1zdGVwLWZvdXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vZGVzaWduLXN5c3RlbS9zcmMvbGliL2NvZC1zZWxmLW1hbmFnZWQvc3RlcHMvY29kLWZvcm0tc3RlcC1mb3VyL2NvZC1zZWxmLWZvcm0tc3RlcC1mb3VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2Rlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb2Qtc2VsZi1tYW5hZ2VkL3N0ZXBzL2NvZC1mb3JtLXN0ZXAtZm91ci9jb2Qtc2VsZi1mb3JtLXN0ZXAtZm91ci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBMEIsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBT2pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBeUIsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7Ozs7O0FBTy9FLE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxtQkFBbUI7SUFzQm5FLFlBQ1UsRUFBZSxFQUNmLGNBQThCO1FBRXRDLEtBQUssRUFBRSxDQUFDO1FBSEEsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQXJCOUIsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDdkMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFOUMsYUFBUSxHQUFHLElBQUksc0JBQXNCLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEQsZ0JBQVcsR0FBVywrQ0FBK0MsQ0FBQztRQUN0RSxZQUFPLEdB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RztnQkFDTixPQUFPLEtBQUssQ0FBQztZQUNmO2dCQUNFLE9BQU8sRUFBRSxDQUFDO1NBQ2I7SUFDSCxDQUFDOzt5SEEvTFUsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsaUxDaEJ6Qyxtc05BNElBOzJGRDVIYSw0QkFBNEI7a0JBTHhDLFNBQVM7K0JBQ0UsNkJBQTZCOytIQU05QixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLy9pbXBvcnQgUHJpbWVuZ1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5cbi8vIGltcG9ydCBNb2RlbHNcbmltcG9ydCB7IEl3ZWVrRGF5c1JxIH0gZnJvbSAnLi8uLi8uLi8uLi9jb3JlL21vZGVscy9hY2FkZW1pYy9hY2FkZW1pYy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29kU2VsZk1hbmFnZWRTdGVwcywgbG9jYWxTdG9yYWdlVmFsdWVzVHdvIH0gZnJvbSAnLi4vLi4vbG9naWMvY29kLXNlbGYtbWFuYWdlZC1zdGVwcyc7XG5pbXBvcnQgeyBDb2RTZWxmTWFuYWdlZENvbnRyb2xzIH0gZnJvbSAnLi4vLi4vbG9naWMvY29kLXNlbGYtbWFuYWdlZC1jb250cm9scyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jb2Qtc2VsZi1mb3JtLXN0ZXAtZm91cicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2Qtc2VsZi1mb3JtLXN0ZXAtZm91ci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvZC1zZWxmLWZvcm0tc3RlcC1mb3VyLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29kU2VsZkZvcm1TdGVwRm91ckNvbXBvbmVudCBleHRlbmRzIENvZFNlbGZNYW5hZ2VkU3RlcHMgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIGlkVHlwZXM6IGFueTtcbiAgQE91dHB1dCgpIGNvbXBsZXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICBAT3V0cHV0KCkgYWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgY29udHJvbHMgPSBuZXcgQ29kU2VsZk1hbmFnZWRDb250cm9scygpLmNvbnRyb2xzWzNdO1xuICBtZXNzYWdlSW5mbzogc3RyaW5nID0gXCJEYXRvcyBkZSBmYWN0dXJhY2lvbiBkZSBhY3VlcmRvIGEgdHUgZWxlY2Npb25cIjtcbiAgdmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBjb2RTZWxmRm9ybVN0ZXBGb3VyITogRm9ybUdyb3VwO1xuICBzZWxlY3RlZE9wdGlvblBheW1lbnRzPzogSXdlZWtEYXlzUnE7XG4gIG1lc3NhZ2VBbGVydFBsYWNlbWVudFRlc3QgPSBmYWxzZTtcbiAgZGlzYWJsZXdlZWtkYXlzOiBib29sZWFuW10gPSBbXTtcbiAgaXNTZWxlY3Rpb25PcHRpb25QYXltZW50cyA9IHRydWU7XG4gIGlzRWRpdEJpbGxpbmdEYXRhID0gdHJ1ZTtcbiAgT3B0aW9uUGF5bWVudHM6IGFueVtdID0gW1xuICAgIHsgY29kZTogMSwga2V5OiAnaW4nLCBuYW1lOiAnSW5zdGFsYWNpb25lcycgfSxcbiAgICB7IGNvZGU6IDIsIGtleTogJ3RyJywgbmFtZTogJ1RyYW5zZmVyZW5jaWEnIH0sXG4gIF07XG5cbiAgc3R1ZGVudElkQ2FyZFR5cGUgPSBuZXcgRm9ybUNvbnRyb2woKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmluaXRGb3JtKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXJ0TG9jYWxTdG9yYWdlV29yaygpO1xuICAgIHRoaXMuc3Vic2NyaWJlVG9TdHVkZW50SWRDYXJkVHlwZUNoYW5nZXMoKTtcbiAgICB0aGlzLmdldERhdGFVc2VyKCk7XG4gICAgY29uc29sZS5sb2coJ2lkVHlwZXMnLCB0aGlzLmlkVHlwZXMpO1xuICB9XG5cbiAgaW5pdEZvcm0oKSB7XG4gICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBGb3VyID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBvcHRpb25zUGF5bWVudHM6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIGludm9pY2luZ19uYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBpbnZvaWNpbmdfQXBlbGxpZG86IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIGludm9pY2luZ19pZFR5cGU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIGludm9pY2luZ19kb2N1bWVudDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoNSksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDIwKSwgVmFsaWRhdG9ycy5wYXR0ZXJuKC9eWzAtOV0qJC8pXV0sXG4gICAgfSk7XG4gIH1cblxuICBzdWJzY3JpYmVUb1N0dWRlbnRJZENhcmRUeXBlQ2hhbmdlcygpIHtcbiAgICB0aGlzLnN0dWRlbnRJZENhcmRUeXBlLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgdGhpcy51cGRhdGVCaWxsaW5nRGF0YUZpZWxkcyh2YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXREYXRhVXNlcigpIHtcbiAgICBjb25zdCB0eXBlSWRDYXJkID0gdGhpcy5sb2NhbFN0b3JhZ2VDT0QuZ2V0Q29kRm9ybURhdGEoMSwgJ3N0dWRlbnRfaWRfY2FyZF90eXBlJyk7XG4gICAgdGhpcy5zdHVkZW50SWRDYXJkVHlwZS5zZXRWYWx1ZSh0eXBlSWRDYXJkKTtcbiAgfVxuXG4gIHVwZGF0ZUJpbGxpbmdEYXRhRmllbGRzKHR5cGVJZENhcmQ6IHN0cmluZyB8IG51bGwpIHtcbiAgICBjb25zb2xlLmxvZygnZW50cm8gYXF1aSBlbiB1cGRhdGVCaWxsaW5nRGF0YUZpZWxkcycpXG4gICAgaWYgKHR5cGVJZENhcmQgIT0gbnVsbCAmJiB0eXBlSWRDYXJkICE9IFwiMlwiKSB7XG4gICAgICBjb25zdCBuYW1lU3R1ZGVudCA9IHRoaXMubG9jYWxTdG9yYWdlQ09ELmdldENvZEZvcm1EYXRhKDEsICdzdHVkZW50X25hbWUnKTtcbiAgICAgIGNvbnN0IGxhc3ROYW1lU3R1ZGVudCA9IHRoaXMubG9jYWxTdG9yYWdlQ09ELmdldENvZEZvcm1EYXRhKDEsICdzdHVkZW50X2xhc3RfbmFtZScpO1xuICAgICAgY29uc3QgdHlwZUlkQ2FyZFN0dWRlbnQgPSB0aGlzLmxvY2FsU3RvcmFnZUNPRC5nZXRDb2RGb3JtRGF0YSgxLCAnc3R1ZGVudF9pZF9jYXJkX3R5cGUnKTtcbiAgICAgIGNvbnN0IGlkQ2FyZFN0dWRlbnQgPSB0aGlzLmxvY2FsU3RvcmFnZUNPRC5nZXRDb2RGb3JtRGF0YSgxLCAnc3R1ZGVudF9pZF9jYXJkJyk7XG5cbiAgICAgIGNvbnNvbGUubG9nKCduYW1lU3R1ZGVudCcsIG5hbWVTdHVkZW50KTtcbiAgICAgIGNvbnNvbGUubG9nKCdsYXN0TmFtZVN0dWRlbnQnLCBsYXN0TmFtZVN0dWRlbnQpO1xuICAgICAgY29uc29sZS5sb2coJ3R5cGVJZENhcmRTdHVkZW50JywgdHlwZUlkQ2FyZFN0dWRlbnQpO1xuICAgICAgY29uc29sZS5sb2coJ2lkQ2FyZFN0dWRlbnQnLCBpZENhcmRTdHVkZW50KTtcblxuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBGb3VyLmNvbnRyb2xzWydpbnZvaWNpbmdfbmFtZSddLnNldFZhbHVlKG5hbWVTdHVkZW50KTtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwRm91ci5jb250cm9sc1snaW52b2ljaW5nX0FwZWxsaWRvJ10uc2V0VmFsdWUobGFzdE5hbWVTdHVkZW50KTtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwRm91ci5jb250cm9sc1snaW52b2ljaW5nX2lkVHlwZSddLnNldFZhbHVlKHR5cGVJZENhcmRTdHVkZW50KTtcbiAgICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwRm91ci5jb250cm9sc1snaW52b2ljaW5nX2RvY3VtZW50J10uc2V0VmFsdWUoaWRDYXJkU3R1ZGVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIExpbXBpYSBsb3MgY2FtcG9zIHNpIGVsIHRpcG8gZGUgZG9jdW1lbnRvIGVzIFwiMlwiXG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcEZvdXIuY29udHJvbHNbJ2ludm9pY2luZ19uYW1lJ10uc2V0VmFsdWUoJycpO1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBGb3VyLmNvbnRyb2xzWydpbnZvaWNpbmdfQXBlbGxpZG8nXS5zZXRWYWx1ZSgnJyk7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcEZvdXIuY29udHJvbHNbJ2ludm9pY2luZ19pZFR5cGUnXS5zZXRWYWx1ZSgnJyk7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcEZvdXIuY29udHJvbHNbJ2ludm9pY2luZ19kb2N1bWVudCddLnNldFZhbHVlKCcnKTtcbiAgICB9XG4gIH1cblxuICBiYWNrKCkge1xuICAgIGlmICghdGhpcy5pc1NlbGVjdGlvbk9wdGlvblBheW1lbnRzICYmICF0aGlzLmlzRWRpdEJpbGxpbmdEYXRhKSB7XG4gICAgICB0aGlzLmlzRWRpdEJpbGxpbmdEYXRhID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLmlzU2VsZWN0aW9uT3B0aW9uUGF5bWVudHMgJiYgdGhpcy5pc0VkaXRCaWxsaW5nRGF0YSkge1xuICAgICAgdGhpcy5pc1NlbGVjdGlvbk9wdGlvblBheW1lbnRzID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb21wbGV0ZWQuZW1pdCgyKTtcbiAgICB9XG4gIH1cblxuICBuZXh0KCkge1xuICAgIGlmICh0aGlzLmlzU2VsZWN0aW9uT3B0aW9uUGF5bWVudHMpIHtcbiAgICAgIHRoaXMuaXNTZWxlY3Rpb25PcHRpb25QYXltZW50cyA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuaXNFZGl0QmlsbGluZ0RhdGEpIHtcbiAgICAgIHRoaXMuaXNFZGl0QmlsbGluZ0RhdGEgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbmRGb3JtKCk7XG4gICAgfVxuICB9XG5cbiAgc3RhcnRMb2NhbFN0b3JhZ2VXb3JrKCkge1xuICAgIHRoaXMuY29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IHtcbiAgICAgIGxldCBsb2NhbFN0b3JhZ2VWYWx1ZTogbG9jYWxTdG9yYWdlVmFsdWVzVHdvID0gdGhpcy5yZWFkQW5kV3JpdGVMUyg0LCBjb250cm9sLm5hbWUpO1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBGb3VyLmNvbnRyb2xzW2NvbnRyb2wubmFtZV0uc2V0VmFsdWUobG9jYWxTdG9yYWdlVmFsdWUudmFsdWUpO1xuICAgICAgdGhpcy5saXN0ZW5Gb3JtQ2hhbmdlcyg0LCBjb250cm9sLm5hbWUsIHRoaXMuY29kU2VsZkZvcm1TdGVwRm91ci5jb250cm9sc1tjb250cm9sLm5hbWVdLnZhbHVlQ2hhbmdlcyk7XG4gICAgfSk7XG4gIH1cblxuICBlZGl0QmlsbGluZ0RhdGEoKSB7XG4gICAgdGhpcy5pc0VkaXRCaWxsaW5nRGF0YSA9IGZhbHNlO1xuICB9XG5cbiAgdXBkYXRlRGF0b3NCaWxsaW5nRGF0YSgpIHtcbiAgICB0aGlzLmlzRWRpdEJpbGxpbmdEYXRhID0gdHJ1ZTtcbiAgfVxuXG4gIHNlbmRGb3JtKCkge1xuICAgIHRoaXMuY29kU2VsZkZvcm1TdGVwRm91ci5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgdGhpcy5hY3Rpb24uZW1pdCgnY3JlYXRlJyk7XG4gICAgY29uc29sZS5sb2coJ0VqZWN1dGEgZW5kcG9pbnQnKTtcbiAgfVxuXG4gIG9uUmVqZWN0KCkge1xuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuY2xlYXIoJ2NvbmZpcm0nKTtcbiAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgfVxuXG4gIHNob3dDb25maXJtKCkge1xuICAgIGlmICghdGhpcy52aXNpYmxlKSB7XG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IGtleTogJ2NvbmZpcm0nLCBzdGlja3k6IHRydWUsIHNldmVyaXR5OiAnc3VjY2VzcycsIHN1bW1hcnk6ICdDYW4geW91IHNlbmQgbWUgdGhlIHJlcG9ydD8nLCBsaWZlOiAxMDAwMCB9KTtcbiAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0T3BjaW9uc1BheW1lbnRzKGV2ZTogSXdlZWtEYXlzUnEpIHtcbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9uUGF5bWVudHMgPSBldmU7XG4gICAgdGhpcy5pc1NlbGVjdGlvbk9wdGlvblBheW1lbnRzID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5zZWxlY3RlZE9wdGlvblBheW1lbnRzICE9PSBudWxsKSB7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcEZvdXIuY29udHJvbHNbJ29wdGlvbnNQYXltZW50cyddLnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRPcHRpb25QYXltZW50cy5jb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb2RTZWxmRm9ybVN0ZXBGb3VyLmNvbnRyb2xzWydvcHRpb25zUGF5bWVudHMnXS5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RJZFR5cGUoaWRUeXBlOiBhbnkpIHtcbiAgICBpZiAoaWRUeXBlICE9PSAnVGlwbyBkZSBkb2N1bWVudG8nKSB7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcEZvdXIuY29udHJvbHNbJ2ludm9pY2luZ19pZFR5cGUnXS5zZXRWYWx1ZShpZFR5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvZFNlbGZGb3JtU3RlcEZvdXIuY29udHJvbHNbJ2ludm9pY2luZ19pZFR5cGUnXS5zZXRWYWx1ZShudWxsKTtcbiAgICB9XG4gIH1cblxuICBnZXRWaWV3QmFzZWRPblBheW1lbnRPcHRpb24oKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZE9wdGlvblBheW1lbnRzPy5jb2RlID09PSAxKSB7XG4gICAgICByZXR1cm4gJ2luJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRPcHRpb25QYXltZW50cz8uY29kZSA9PT0gMykge1xuICAgICAgcmV0dXJuICd0cic7XG4gICAgfVxuICAgIHJldHVybiAnZGVmYXVsdCc7XG4gIH1cblxuICBnZXRJZFR5cGVEZXNjcmlwdGlvbihpZFR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgc3dpdGNoIChpZFR5cGUpIHtcbiAgICAgIGNhc2UgJzAnOlxuICAgICAgICByZXR1cm4gJ04vQSc7XG4gICAgICBjYXNlICcxJzpcbiAgICAgICAgcmV0dXJuICdDLkMnO1xuICAgICAgY2FzZSAnMic6XG4gICAgICAgIHJldHVybiAnVC5JJztcbiAgICAgIGNhc2UgJzMnOlxuICAgICAgICByZXR1cm4gJ0MuRSc7XG4gICAgICBjYXNlICc0JzpcbiAgICAgICAgcmV0dXJuICdQLkUuUCc7XG4gICAgICBjYXNlICc1JzpcbiAgICAgICAgcmV0dXJuICdSLlUuTSc7XG4gICAgICBjYXNlICc2JzpcbiAgICAgICAgcmV0dXJuICdQLlAuVCc7XG4gICAgICBjYXNlICc3JzpcbiAgICAgICAgcmV0dXJuICdQLkEnO1xuICAgICAgY2FzZSAnOCc6XG4gICAgICAgIHJldHVybiAnUi5DJztcbiAgICAgIGNhc2UgJzknOlxuICAgICAgICByZXR1cm4gJ0MuRCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyLW1haW5cIj5cbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mb3JtXCI+XG4gICAgPGgyPkRhdG9zIGRlIEZhY3R1cmFjaW9uPC9oMj5cbiAgICA8cC10b2FzdCBwb3NpdGlvbj1cInRvcC1jZW50ZXJcIiBrZXk9XCJjb25maXJtXCIgKG9uQ2xvc2UpPVwib25SZWplY3QoKVwiIFtiYXNlWkluZGV4XT1cIjEwXCI+XG4gICAgICA8bmctdGVtcGxhdGUgbGV0LW1lc3NhZ2UgcFRlbXBsYXRlPVwibWVzc2FnZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1zdGFydFwiIHN0eWxlPVwiZmxleDogMVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3FhLmlwdGRldi5jb20uY28vYXNzZXRzL2xvZ29zL3JlYWRpbmcucG5nXCIgc3R5bGU9XCJ3aWR0aDogNjVweDtcIiBzaGFwZT1cImNpcmNsZVwiIC8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LTkwMFwiPkphY29iPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LW1lZGl1bSB0ZXh0LWxnIG15LTMgdGV4dC05MDBcIj57eyBtZXNzYWdlSW5mbyB9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9wLXRvYXN0PlxuICAgIDxpIGNsYXNzPVwicGkgcGktZXhjbGFtYXRpb24tY2lyY2xlIGN1cnNvci1wb2ludGVyIHctYXV0byBtYi00XCIgKGNsaWNrKT1cInNob3dDb25maXJtKClcIiBwVG9vbHRpcD1cIk1hcyBpbmZvLlwiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiPjwvaT5cbiAgICA8Zm9ybSBhdXRvY29tcGxldGU9XCJvZmZcIiBbZm9ybUdyb3VwXT1cImNvZFNlbGZGb3JtU3RlcEZvdXJcIiBjbGFzcz1cImdyaWQgbXQtMiBmbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lcl9fYm9keV9fc2VsZWN0IGZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LXdyYXBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lcl9fdHlwZV9fcGF5bWVudHNcIiAqbmdJZj1cImlzU2VsZWN0aW9uT3B0aW9uUGF5bWVudHNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtbiBnYXAtM1wiPlxuICAgICAgICAgICAgPGgzPsK/Q29tbyBxdWllcmVzIHBhZ2FyPzwvaDM+XG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBPcHRpb25QYXltZW50czsgaW5kZXggYXMgaW5kXCIgY2xhc3M9XCJmaWVsZC1jaGVja2JveFwiPlxuICAgICAgICAgICAgICA8cC1yYWRpb0J1dHRvblxuICAgICAgICAgICAgICAgIFtpbnB1dElkXT1cImNhdGVnb3J5LmtleVwiXG4gICAgICAgICAgICAgICAgbmFtZT1cImNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiY2F0ZWdvcnlcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRPcHRpb25QYXltZW50c1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGV3ZWVrZGF5c1tpbmRdXCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlbGVjdE9wY2lvbnNQYXltZW50cygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPjwvcC1yYWRpb0J1dHRvbj5cbiAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiY2F0ZWdvcnkua2V5XCIgY2xhc3M9XCJtbC0yXCI+XG4gICAgICAgICAgICAgICAge3sgY2F0ZWdvcnkubmFtZSB9fVxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJfX29wc3Rpb25fX2luc3RhbGF0aW9uc1wiICpuZ0lmPVwiIWlzU2VsZWN0aW9uT3B0aW9uUGF5bWVudHNcIj5cbiAgICAgICAgICA8IS0tIFZpc3RhIHBhcmEgbGEgb3BjacOzbiBkZSBwYWdvIFwiSW5zdGFsYWNpb25lc1wiIC0tPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJnZXRWaWV3QmFzZWRPblBheW1lbnRPcHRpb24oKSA9PT0gJ2luJ1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lcl9faW5mbyBmbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTEgbWItNFwiICpuZ0lmPVwiaXNFZGl0QmlsbGluZ0RhdGFcIj5cblxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgIHNyYz1cImh0dHBzOi8vcWEuaXB0ZGV2LmNvbS5jby9hc3NldHMvbG9nb3MvbG9iby13ZWIucG5nXCJcbiAgICAgICAgICAgICAgYWx0PVwiUmVjZWlwdCBJY29uXCJcbiAgICAgICAgICAgICAgc2hhcGU9XCJjaXJjbGVcIlxuICAgICAgICAgICAgICBjbGFzcz1cImNpcmN1bGFyLWltYWdlXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgY29kU2VsZkZvcm1TdGVwRm91ci5nZXQoJ2ludm9pY2luZ19uYW1lJyk/LnZhbHVlIH19IHt7IGNvZFNlbGZGb3JtU3RlcEZvdXIuZ2V0KCdpbnZvaWNpbmdfQXBlbGxpZG8nKT8udmFsdWUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgZ2V0SWRUeXBlRGVzY3JpcHRpb24oY29kU2VsZkZvcm1TdGVwRm91ci5nZXQoJ2ludm9pY2luZ19pZFR5cGUnKT8udmFsdWUpIH19IHt7IGNvZFNlbGZGb3JtU3RlcEZvdXIuZ2V0KCdpbnZvaWNpbmdfZG9jdW1lbnQnKT8udmFsdWUgfX08L3NwYW4+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1idXR0b25cIj5cbiAgICAgICAgICAgICAgICA8aXB0LWJ1dHRvblxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidNb2RpZmljYXIgRGF0b3MnXCJcbiAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImVkaXRCaWxsaW5nRGF0YSgpXCJcbiAgICAgICAgICAgICAgICAgIFtwcmltYXJ5XT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgPC9pcHQtYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tM1wiICpuZ0lmPVwiIWlzRWRpdEJpbGxpbmdEYXRhXCI+XG4gICAgICAgICAgICAgIDxoMz5Db21wbGV0YSBsb3MgbnVldm9zIGRhdG9zIHBhcmEgbGEgZW1pc2lvbiBkZSB0dSBmYWN0dXJhPC9oMz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTEgbWQ6Z2FwLTQgeGw6Z2FwLTggbS0xIHAtMiBib3JkZXItcm91bmQgYmctYmx1ZS01MDAgdGV4dC13aGl0ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJfaWNvbiBmbGV4IG1yLTQganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1zdGFydCBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWluZm8tY2lyY2xlIGN1cnNvci1wb2ludGVyIHctYXV0byBtYi00XCIgcFRvb2x0aXA9XCJNYXMgaW5mby5cIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIj48L2k+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2x1bW4gY29udGFpbmVyX2luZm9fc3BhbiBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5TaSBwcm9wb3JjaW9uYXMgZGF0b3MgZGUgdW4gdGVyY2VybywgY29uZmlybWFzIHF1ZSBsb3MgZGF0b3Mgc29uIGNvcnJlY3RvcyB5IHF1ZSB0aWVuZXMgc3UgY29uc2VudGltaWVudG8gcGFyYSBlbCB1c28gZGUgbGEgaW5mb3JtYWNpb24uIEVzdG9zIGRhdG9zIHNlIHRyYXRhcmFuIGRlIGFjdWVyZG8gYSBudWVzdHJhIDxhIGhyZWY9XCJcIj5EZWNsYXJhY2lvbiBkZSBQcml2YWNpZGFkPC9hPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidOb21icmVzJ1wiXG4gICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb2RTZWxmRm9ybVN0ZXBGb3VyLmNvbnRyb2xzWydpbnZvaWNpbmdfbmFtZSddXCJcbiAgICAgICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidBcGVsbGlkb3MnXCJcbiAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvZFNlbGZGb3JtU3RlcEZvdXIuY29udHJvbHNbJ2ludm9pY2luZ19BcGVsbGlkbyddXCJcbiAgICAgICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICAgICAgICAgICAgPGlwdC1zZWxlY3RcbiAgICAgICAgICAgICAgICAgIFtpbml0aWFsVmFsdWVdPVwiY29kU2VsZkZvcm1TdGVwRm91ci5jb250cm9sc1snaW52b2ljaW5nX2lkVHlwZSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvZFNlbGZGb3JtU3RlcEZvdXIuY29udHJvbHNbJ2ludm9pY2luZ19pZFR5cGUnXVwiXG4gICAgICAgICAgICAgICAgICBbc2VsZWN0Q29kZV09XCJjb2RTZWxmRm9ybVN0ZXBGb3VyLmNvbnRyb2xzWydpbnZvaWNpbmdfaWRUeXBlJ10udmFsdWUgPT09IG51bGwgPyAnVGlwbyBkZSBkb2N1bWVudG8nIDogY29kU2VsZkZvcm1TdGVwRm91ci5jb250cm9sc1snaW52b2ljaW5nX2lkVHlwZSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIFtpc1JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgW2RhdGFdPVwiaWRUeXBlc1wiXG4gICAgICAgICAgICAgICAgICAoZXZlbnRTZWxlY3QpPVwic2VsZWN0SWRUeXBlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgW2RlZmF1bHRUZXh0XT1cIidUaXBvIGRlIGRvY3VtZW50bydcIlxuICAgICAgICAgICAgICAgID48L2lwdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPGlwdC1pbnB1dFxuICAgICAgICAgICAgICAgICAgW2lucHV0VHlwZV09XCInbnVtYmVyJ1wiXG4gICAgICAgICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ051bWVybyBkZSBkb2N1bWVudG8nXCJcbiAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvZFNlbGZGb3JtU3RlcEZvdXIuY29udHJvbHNbJ2ludm9pY2luZ19kb2N1bWVudCddXCJcbiAgICAgICAgICAgICAgICA+PC9pcHQtaW5wdXQ+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIG10LTMgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjb2RTZWxmRm9ybVN0ZXBGb3VyLnZhbGlkXCJcbiAgICAgICAgICAgICAgICAgIGxhYmVsPVwiQ29udGludWFyXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZURhdG9zQmlsbGluZ0RhdGEoKVwiXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBWaXN0YSBwYXJhIGxhIG9wY2nDs24gZGUgcGFnbyBcIlRyYW5zZmVyZW5jaWFcIiAtLT5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2V0Vmlld0Jhc2VkT25QYXltZW50T3B0aW9uKCkgPT09ICd0cidcIj5cbiAgICAgICAgICAgIDxoMz5Db21wbGV0YSBsb3MgZGF0b3MgcGFyYSBUcmFuc2ZlcmVuY2lhPC9oMz5cbiAgICAgICAgICAgIDwhLS0gQXF1w60gcHVlZGVzIGFncmVnYXIgZWwgZm9ybXVsYXJpbyBlc3BlY8OtZmljbyBwYXJhIFRyYW5zZmVyZW5jaWEgLS0+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuXG4gICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtMyBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgcEJ1dHRvblxuICAgICAgICBpY29uPVwicGkgcGktYXJyb3ctbGVmdFwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwiYmFjaygpXCJcbiAgICAgID48L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKm5nSWY9XCIhaXNTZWxlY3Rpb25PcHRpb25QYXltZW50cyAmJiBpc0VkaXRCaWxsaW5nRGF0YSAmJiBjb2RTZWxmRm9ybVN0ZXBGb3VyLnZhbGlkXCJcbiAgICAgICAgcEJ1dHRvblxuICAgICAgICBsYWJlbD1cIkd1YXJkYXJcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbmRGb3JtKClcIlxuICAgICAgPjwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2PlxuICA8cHJlPnt7IGNvZFNlbGZGb3JtU3RlcEZvdXIudmFsdWUgfCBqc29uIH19PC9wcmU+XG4gIDxkaXY+XG4gICAgPHByZT57eyBjb2RTZWxmRm9ybVN0ZXBGb3VyLnZhbGlkIHwganNvbiB9fTwvcHJlPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -7523,7 +7523,7 @@ class CodSelfFormStepFourComponent extends CodSelfManagedSteps {
7523
7523
  invoicing_name: ['', [Validators.required]],
7524
7524
  invoicing_Apellido: ['', [Validators.required]],
7525
7525
  invoicing_idType: ['', [Validators.required]],
7526
- invoicing_document: ['', [Validators.required]],
7526
+ invoicing_document: ['', [Validators.required, Validators.minLength(5), Validators.maxLength(20), Validators.pattern(/^[0-9]*$/)]],
7527
7527
  });
7528
7528
  }
7529
7529
  subscribeToStudentIdCardTypeChanges() {
@@ -7536,6 +7536,7 @@ class CodSelfFormStepFourComponent extends CodSelfManagedSteps {
7536
7536
  this.studentIdCardType.setValue(typeIdCard);
7537
7537
  }
7538
7538
  updateBillingDataFields(typeIdCard) {
7539
+ console.log('entro aqui en updateBillingDataFields');
7539
7540
  if (typeIdCard != null && typeIdCard != "2") {
7540
7541
  const nameStudent = this.localStorageCOD.getCodFormData(1, 'student_name');
7541
7542
  const lastNameStudent = this.localStorageCOD.getCodFormData(1, 'student_last_name');
@@ -7550,6 +7551,13 @@ class CodSelfFormStepFourComponent extends CodSelfManagedSteps {
7550
7551
  this.codSelfFormStepFour.controls['invoicing_idType'].setValue(typeIdCardStudent);
7551
7552
  this.codSelfFormStepFour.controls['invoicing_document'].setValue(idCardStudent);
7552
7553
  }
7554
+ else {
7555
+ // Limpia los campos si el tipo de documento es "2"
7556
+ this.codSelfFormStepFour.controls['invoicing_name'].setValue('');
7557
+ this.codSelfFormStepFour.controls['invoicing_Apellido'].setValue('');
7558
+ this.codSelfFormStepFour.controls['invoicing_idType'].setValue('');
7559
+ this.codSelfFormStepFour.controls['invoicing_document'].setValue('');
7560
+ }
7553
7561
  }
7554
7562
  back() {
7555
7563
  if (!this.isSelectionOptionPayments && !this.isEditBillingData) {
@@ -7657,10 +7665,10 @@ class CodSelfFormStepFourComponent extends CodSelfManagedSteps {
7657
7665
  }
7658
7666
  }
7659
7667
  CodSelfFormStepFourComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CodSelfFormStepFourComponent, deps: [{ token: i1$1.FormBuilder }, { token: i2$1.MessageService }], target: i0.ɵɵFactoryTarget.Component });
7660
- CodSelfFormStepFourComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: CodSelfFormStepFourComponent, selector: "app-cod-self-form-step-four", inputs: { idTypes: "idTypes" }, outputs: { completed: "completed", action: "action" }, usesInheritance: true, ngImport: i0, template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Datos de Facturacion</h2>\n <p-toast position=\"top-center\" key=\"confirm\" (onClose)=\"onReject()\" [baseZIndex]=\"10\">\n <ng-template let-message pTemplate=\"message\">\n <div class=\"flex flex-column align-items-start\" style=\"flex: 1\">\n <div class=\"flex align-items-center gap-2\">\n <img src=\"https://qa.iptdev.com.co/assets/logos/reading.png\" style=\"width: 65px;\" shape=\"circle\" />\n <span class=\"font-bold text-900\">Jacob</span>\n </div>\n <div class=\"font-medium text-lg my-3 text-900\">{{ messageInfo }}</div>\n </div>\n </ng-template>\n </p-toast>\n <i class=\"pi pi-exclamation-circle cursor-pointer w-auto mb-4\" (click)=\"showConfirm()\" pTooltip=\"Mas info.\" tooltipPosition=\"bottom\"></i>\n <form autocomplete=\"off\" [formGroup]=\"codSelfFormStepFour\" class=\"grid mt-2 flex flex-column align-items-center\">\n <div class=\"container__body__select flex justify-content-center flex-wrap\">\n <div class=\"container__type__payments\" *ngIf=\"isSelectionOptionPayments\">\n <div class=\"flex flex-column gap-3\">\n <h3>\u00BFComo quieres pagar?</h3>\n <div *ngFor=\"let category of OptionPayments; index as ind\" class=\"field-checkbox\">\n <p-radioButton\n [inputId]=\"category.key\"\n name=\"category\"\n [value]=\"category\"\n [(ngModel)]=\"selectedOptionPayments\"\n [disabled]=\"disableweekdays[ind]\"\n [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"selectOpcionsPayments($event)\"\n ></p-radioButton>\n <label [for]=\"category.key\" class=\"ml-2\">\n {{ category.name }}\n </label>\n </div>\n </div>\n </div>\n\n <div class=\"container__opstion__instalations\" *ngIf=\"!isSelectionOptionPayments\">\n <!-- Vista para la opci\u00F3n de pago \"Instalaciones\" -->\n <div *ngIf=\"getViewBasedOnPaymentOption() === 'in'\">\n <div class=\"container__info flex flex-column align-items-center justify-content-center mt-1 mb-4\" *ngIf=\"isEditBillingData\">\n\n <img\n src=\"https://qa.iptdev.com.co/assets/logos/lobo-web.png\"\n alt=\"Receipt Icon\"\n shape=\"circle\"\n class=\"circular-image\"\n />\n <strong>{{ codSelfFormStepFour.get('invoicing_name')?.value }} {{ codSelfFormStepFour.get('invoicing_Apellido')?.value }}</strong>\n <span>{{ getIdTypeDescription(codSelfFormStepFour.get('invoicing_idType')?.value) }} {{ codSelfFormStepFour.get('invoicing_document')?.value }}</span>\n\n <div class=\"container-button\">\n <ipt-button\n [label]=\"'Modificar Datos'\"\n (onClick)=\"editBillingData()\"\n [primary]=\"false\">\n </ipt-button>\n </div>\n </div>\n <div class=\"m-3\" *ngIf=\"!isEditBillingData\">\n <h3>Completa los nuevos datos para la emision de tu factura</h3>\n <div class=\"flex gap-1 md:gap-4 xl:gap-8 m-1 p-2 border-round bg-blue-500 text-white\">\n <div class=\"container_icon flex mr-4 justify-content-center align-items-start mt-1\">\n <i class=\"pi pi-info-circle cursor-pointer w-auto mb-4\" pTooltip=\"Mas info.\" tooltipPosition=\"bottom\"></i>\n </div>\n <div class=\"flex flex-column container_info_span flex align-items-center justify-content-center\">\n <span>Si proporcionas datos de un tercero, confirmas que los datos son correctos y que tienes su consentimiento para el uso de la informacion. Estos datos se trataran de acuerdo a nuestra <a href=\"\">Declaracion de Privacidad</a></span>\n </div>\n </div>\n <div>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"codSelfFormStepFour.controls['invoicing_name']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellido'\"\n [control]=\"codSelfFormStepFour.controls['invoicing_Apellido']\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codSelfFormStepFour.controls['invoicing_idType'].value\"\n [control]=\"codSelfFormStepFour.controls['invoicing_idType']\"\n [selectCode]=\"codSelfFormStepFour.controls['invoicing_idType'].value === null ? 'Tipo de documento' : codSelfFormStepFour.controls['invoicing_idType'].value\"\n [isRequired]=\"true\"\n [data]=\"idTypes\"\n (eventSelect)=\"selectIdType($event)\"\n [defaultText]=\"'Tipo de documento'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Documento'\"\n [control]=\"codSelfFormStepFour.controls['invoicing_document']\"\n ></ipt-input>\n </div>\n <div class=\"flex justify-content-end mt-3 align-items-center gap-3\">\n <button\n pButton\n [disabled]=\"!codSelfFormStepFour.valid\"\n label=\"Continuar\"\n type=\"button\"\n (click)=\"updateDatosBillingData()\"\n ></button>\n </div>\n </div>\n </div>\n\n <!-- Vista para la opci\u00F3n de pago \"Transferencia\" -->\n <div *ngIf=\"getViewBasedOnPaymentOption() === 'tr'\">\n <h3>Completa los datos para Transferencia</h3>\n <!-- Aqu\u00ED puedes agregar el formulario espec\u00EDfico para Transferencia -->\n </div>\n </div>\n </div>\n </form>\n\n <div class=\"flex justify-content-between mt-3 align-items-center gap-3\">\n <button\n pButton\n icon=\"pi pi-arrow-left\"\n type=\"button\"\n (click)=\"back()\"\n ></button>\n <button\n *ngIf=\"!isSelectionOptionPayments && isEditBillingData && codSelfFormStepFour.valid\"\n pButton\n label=\"Guardar\"\n type=\"button\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n</div>\n\n<div>\n <pre>{{ codSelfFormStepFour.value | json }}</pre>\n <div>\n <pre>{{ codSelfFormStepFour.valid | json }}</pre>\n </div>\n</div>\n", styles: [".container-form{margin:5%;border-radius:6px;border:1px solid #2563eb;box-shadow:#3c40434d 0 1px 2px,#3c404326 0 2px 6px 2px;padding:1rem}.error-message{font-size:x-small;color:red}:host ::ng-deep .p-toast{width:20rem!important}.circular-image{width:50px;height:50px;border-radius:50%;object-fit:cover;border:none}.container-button{width:10rem;margin-top:3%}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "ipt-button", inputs: ["primary", "size", "label", "buttonType", "isEnabled"], outputs: ["onClick"] }, { kind: "component", type: InputComponent, selector: "ipt-input", inputs: ["inputType", "placeHolder", "validateText", "withPipe", "list", "iconUrl", "control", "prefix", "thousands", "decimal", "disabledSel"], outputs: ["dateSelected"] }, { kind: "component", type: SelectComponent, selector: "ipt-select", inputs: ["isRequired", "data", "defaultText", "selectCode", "disabledSel", "initialValue", "control"], outputs: ["eventSelect"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7$2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "fitContent", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7$1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i9.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "directive", type: i2$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i14.RadioButton, selector: "p-radioButton", inputs: ["value", "formControlName", "name", "disabled", "label", "tabindex", "inputId", "ariaLabelledBy", "ariaLabel", "style", "styleClass", "labelStyleClass"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "pipe", type: i1.JsonPipe, name: "json" }] });
7668
+ CodSelfFormStepFourComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: CodSelfFormStepFourComponent, selector: "app-cod-self-form-step-four", inputs: { idTypes: "idTypes" }, outputs: { completed: "completed", action: "action" }, usesInheritance: true, ngImport: i0, template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Datos de Facturacion</h2>\n <p-toast position=\"top-center\" key=\"confirm\" (onClose)=\"onReject()\" [baseZIndex]=\"10\">\n <ng-template let-message pTemplate=\"message\">\n <div class=\"flex flex-column align-items-start\" style=\"flex: 1\">\n <div class=\"flex align-items-center gap-2\">\n <img src=\"https://qa.iptdev.com.co/assets/logos/reading.png\" style=\"width: 65px;\" shape=\"circle\" />\n <span class=\"font-bold text-900\">Jacob</span>\n </div>\n <div class=\"font-medium text-lg my-3 text-900\">{{ messageInfo }}</div>\n </div>\n </ng-template>\n </p-toast>\n <i class=\"pi pi-exclamation-circle cursor-pointer w-auto mb-4\" (click)=\"showConfirm()\" pTooltip=\"Mas info.\" tooltipPosition=\"bottom\"></i>\n <form autocomplete=\"off\" [formGroup]=\"codSelfFormStepFour\" class=\"grid mt-2 flex flex-column align-items-center\">\n <div class=\"container__body__select flex justify-content-center flex-wrap\">\n <div class=\"container__type__payments\" *ngIf=\"isSelectionOptionPayments\">\n <div class=\"flex flex-column gap-3\">\n <h3>\u00BFComo quieres pagar?</h3>\n <div *ngFor=\"let category of OptionPayments; index as ind\" class=\"field-checkbox\">\n <p-radioButton\n [inputId]=\"category.key\"\n name=\"category\"\n [value]=\"category\"\n [(ngModel)]=\"selectedOptionPayments\"\n [disabled]=\"disableweekdays[ind]\"\n [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"selectOpcionsPayments($event)\"\n ></p-radioButton>\n <label [for]=\"category.key\" class=\"ml-2\">\n {{ category.name }}\n </label>\n </div>\n </div>\n </div>\n\n <div class=\"container__opstion__instalations\" *ngIf=\"!isSelectionOptionPayments\">\n <!-- Vista para la opci\u00F3n de pago \"Instalaciones\" -->\n <div *ngIf=\"getViewBasedOnPaymentOption() === 'in'\">\n <div class=\"container__info flex flex-column align-items-center justify-content-center mt-1 mb-4\" *ngIf=\"isEditBillingData\">\n\n <img\n src=\"https://qa.iptdev.com.co/assets/logos/lobo-web.png\"\n alt=\"Receipt Icon\"\n shape=\"circle\"\n class=\"circular-image\"\n />\n <strong>{{ codSelfFormStepFour.get('invoicing_name')?.value }} {{ codSelfFormStepFour.get('invoicing_Apellido')?.value }}</strong>\n <span>{{ getIdTypeDescription(codSelfFormStepFour.get('invoicing_idType')?.value) }} {{ codSelfFormStepFour.get('invoicing_document')?.value }}</span>\n\n <div class=\"container-button\">\n <ipt-button\n [label]=\"'Modificar Datos'\"\n (onClick)=\"editBillingData()\"\n [primary]=\"false\">\n </ipt-button>\n </div>\n </div>\n <div class=\"m-3\" *ngIf=\"!isEditBillingData\">\n <h3>Completa los nuevos datos para la emision de tu factura</h3>\n <div class=\"flex gap-1 md:gap-4 xl:gap-8 m-1 p-2 border-round bg-blue-500 text-white\">\n <div class=\"container_icon flex mr-4 justify-content-center align-items-start mt-1\">\n <i class=\"pi pi-info-circle cursor-pointer w-auto mb-4\" pTooltip=\"Mas info.\" tooltipPosition=\"bottom\"></i>\n </div>\n <div class=\"flex flex-column container_info_span flex align-items-center justify-content-center\">\n <span>Si proporcionas datos de un tercero, confirmas que los datos son correctos y que tienes su consentimiento para el uso de la informacion. Estos datos se trataran de acuerdo a nuestra <a href=\"\">Declaracion de Privacidad</a></span>\n </div>\n </div>\n <div>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"codSelfFormStepFour.controls['invoicing_name']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellidos'\"\n [control]=\"codSelfFormStepFour.controls['invoicing_Apellido']\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codSelfFormStepFour.controls['invoicing_idType'].value\"\n [control]=\"codSelfFormStepFour.controls['invoicing_idType']\"\n [selectCode]=\"codSelfFormStepFour.controls['invoicing_idType'].value === null ? 'Tipo de documento' : codSelfFormStepFour.controls['invoicing_idType'].value\"\n [isRequired]=\"true\"\n [data]=\"idTypes\"\n (eventSelect)=\"selectIdType($event)\"\n [defaultText]=\"'Tipo de documento'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'Numero de documento'\"\n [control]=\"codSelfFormStepFour.controls['invoicing_document']\"\n ></ipt-input>\n </div>\n <div class=\"flex justify-content-end mt-3 align-items-center gap-3\">\n <button\n pButton\n [disabled]=\"!codSelfFormStepFour.valid\"\n label=\"Continuar\"\n type=\"button\"\n (click)=\"updateDatosBillingData()\"\n ></button>\n </div>\n </div>\n </div>\n\n <!-- Vista para la opci\u00F3n de pago \"Transferencia\" -->\n <div *ngIf=\"getViewBasedOnPaymentOption() === 'tr'\">\n <h3>Completa los datos para Transferencia</h3>\n <!-- Aqu\u00ED puedes agregar el formulario espec\u00EDfico para Transferencia -->\n </div>\n </div>\n </div>\n </form>\n\n <div class=\"flex justify-content-between mt-3 align-items-center gap-3\">\n <button\n pButton\n icon=\"pi pi-arrow-left\"\n type=\"button\"\n (click)=\"back()\"\n ></button>\n <button\n *ngIf=\"!isSelectionOptionPayments && isEditBillingData && codSelfFormStepFour.valid\"\n pButton\n label=\"Guardar\"\n type=\"button\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n</div>\n\n<div>\n <pre>{{ codSelfFormStepFour.value | json }}</pre>\n <div>\n <pre>{{ codSelfFormStepFour.valid | json }}</pre>\n </div>\n</div>\n", styles: [".container-form{margin:5%;border-radius:6px;border:1px solid #2563eb;box-shadow:#3c40434d 0 1px 2px,#3c404326 0 2px 6px 2px;padding:1rem}.error-message{font-size:x-small;color:red}:host ::ng-deep .p-toast{width:20rem!important}.circular-image{width:50px;height:50px;border-radius:50%;object-fit:cover;border:none}.container-button{width:10rem;margin-top:3%}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "ipt-button", inputs: ["primary", "size", "label", "buttonType", "isEnabled"], outputs: ["onClick"] }, { kind: "component", type: InputComponent, selector: "ipt-input", inputs: ["inputType", "placeHolder", "validateText", "withPipe", "list", "iconUrl", "control", "prefix", "thousands", "decimal", "disabledSel"], outputs: ["dateSelected"] }, { kind: "component", type: SelectComponent, selector: "ipt-select", inputs: ["isRequired", "data", "defaultText", "selectCode", "disabledSel", "initialValue", "control"], outputs: ["eventSelect"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7$2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "fitContent", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7$1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i9.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "directive", type: i2$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i14.RadioButton, selector: "p-radioButton", inputs: ["value", "formControlName", "name", "disabled", "label", "tabindex", "inputId", "ariaLabelledBy", "ariaLabel", "style", "styleClass", "labelStyleClass"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "pipe", type: i1.JsonPipe, name: "json" }] });
7661
7669
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CodSelfFormStepFourComponent, decorators: [{
7662
7670
  type: Component,
7663
- args: [{ selector: 'app-cod-self-form-step-four', template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Datos de Facturacion</h2>\n <p-toast position=\"top-center\" key=\"confirm\" (onClose)=\"onReject()\" [baseZIndex]=\"10\">\n <ng-template let-message pTemplate=\"message\">\n <div class=\"flex flex-column align-items-start\" style=\"flex: 1\">\n <div class=\"flex align-items-center gap-2\">\n <img src=\"https://qa.iptdev.com.co/assets/logos/reading.png\" style=\"width: 65px;\" shape=\"circle\" />\n <span class=\"font-bold text-900\">Jacob</span>\n </div>\n <div class=\"font-medium text-lg my-3 text-900\">{{ messageInfo }}</div>\n </div>\n </ng-template>\n </p-toast>\n <i class=\"pi pi-exclamation-circle cursor-pointer w-auto mb-4\" (click)=\"showConfirm()\" pTooltip=\"Mas info.\" tooltipPosition=\"bottom\"></i>\n <form autocomplete=\"off\" [formGroup]=\"codSelfFormStepFour\" class=\"grid mt-2 flex flex-column align-items-center\">\n <div class=\"container__body__select flex justify-content-center flex-wrap\">\n <div class=\"container__type__payments\" *ngIf=\"isSelectionOptionPayments\">\n <div class=\"flex flex-column gap-3\">\n <h3>\u00BFComo quieres pagar?</h3>\n <div *ngFor=\"let category of OptionPayments; index as ind\" class=\"field-checkbox\">\n <p-radioButton\n [inputId]=\"category.key\"\n name=\"category\"\n [value]=\"category\"\n [(ngModel)]=\"selectedOptionPayments\"\n [disabled]=\"disableweekdays[ind]\"\n [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"selectOpcionsPayments($event)\"\n ></p-radioButton>\n <label [for]=\"category.key\" class=\"ml-2\">\n {{ category.name }}\n </label>\n </div>\n </div>\n </div>\n\n <div class=\"container__opstion__instalations\" *ngIf=\"!isSelectionOptionPayments\">\n <!-- Vista para la opci\u00F3n de pago \"Instalaciones\" -->\n <div *ngIf=\"getViewBasedOnPaymentOption() === 'in'\">\n <div class=\"container__info flex flex-column align-items-center justify-content-center mt-1 mb-4\" *ngIf=\"isEditBillingData\">\n\n <img\n src=\"https://qa.iptdev.com.co/assets/logos/lobo-web.png\"\n alt=\"Receipt Icon\"\n shape=\"circle\"\n class=\"circular-image\"\n />\n <strong>{{ codSelfFormStepFour.get('invoicing_name')?.value }} {{ codSelfFormStepFour.get('invoicing_Apellido')?.value }}</strong>\n <span>{{ getIdTypeDescription(codSelfFormStepFour.get('invoicing_idType')?.value) }} {{ codSelfFormStepFour.get('invoicing_document')?.value }}</span>\n\n <div class=\"container-button\">\n <ipt-button\n [label]=\"'Modificar Datos'\"\n (onClick)=\"editBillingData()\"\n [primary]=\"false\">\n </ipt-button>\n </div>\n </div>\n <div class=\"m-3\" *ngIf=\"!isEditBillingData\">\n <h3>Completa los nuevos datos para la emision de tu factura</h3>\n <div class=\"flex gap-1 md:gap-4 xl:gap-8 m-1 p-2 border-round bg-blue-500 text-white\">\n <div class=\"container_icon flex mr-4 justify-content-center align-items-start mt-1\">\n <i class=\"pi pi-info-circle cursor-pointer w-auto mb-4\" pTooltip=\"Mas info.\" tooltipPosition=\"bottom\"></i>\n </div>\n <div class=\"flex flex-column container_info_span flex align-items-center justify-content-center\">\n <span>Si proporcionas datos de un tercero, confirmas que los datos son correctos y que tienes su consentimiento para el uso de la informacion. Estos datos se trataran de acuerdo a nuestra <a href=\"\">Declaracion de Privacidad</a></span>\n </div>\n </div>\n <div>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"codSelfFormStepFour.controls['invoicing_name']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellido'\"\n [control]=\"codSelfFormStepFour.controls['invoicing_Apellido']\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codSelfFormStepFour.controls['invoicing_idType'].value\"\n [control]=\"codSelfFormStepFour.controls['invoicing_idType']\"\n [selectCode]=\"codSelfFormStepFour.controls['invoicing_idType'].value === null ? 'Tipo de documento' : codSelfFormStepFour.controls['invoicing_idType'].value\"\n [isRequired]=\"true\"\n [data]=\"idTypes\"\n (eventSelect)=\"selectIdType($event)\"\n [defaultText]=\"'Tipo de documento'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Documento'\"\n [control]=\"codSelfFormStepFour.controls['invoicing_document']\"\n ></ipt-input>\n </div>\n <div class=\"flex justify-content-end mt-3 align-items-center gap-3\">\n <button\n pButton\n [disabled]=\"!codSelfFormStepFour.valid\"\n label=\"Continuar\"\n type=\"button\"\n (click)=\"updateDatosBillingData()\"\n ></button>\n </div>\n </div>\n </div>\n\n <!-- Vista para la opci\u00F3n de pago \"Transferencia\" -->\n <div *ngIf=\"getViewBasedOnPaymentOption() === 'tr'\">\n <h3>Completa los datos para Transferencia</h3>\n <!-- Aqu\u00ED puedes agregar el formulario espec\u00EDfico para Transferencia -->\n </div>\n </div>\n </div>\n </form>\n\n <div class=\"flex justify-content-between mt-3 align-items-center gap-3\">\n <button\n pButton\n icon=\"pi pi-arrow-left\"\n type=\"button\"\n (click)=\"back()\"\n ></button>\n <button\n *ngIf=\"!isSelectionOptionPayments && isEditBillingData && codSelfFormStepFour.valid\"\n pButton\n label=\"Guardar\"\n type=\"button\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n</div>\n\n<div>\n <pre>{{ codSelfFormStepFour.value | json }}</pre>\n <div>\n <pre>{{ codSelfFormStepFour.valid | json }}</pre>\n </div>\n</div>\n", styles: [".container-form{margin:5%;border-radius:6px;border:1px solid #2563eb;box-shadow:#3c40434d 0 1px 2px,#3c404326 0 2px 6px 2px;padding:1rem}.error-message{font-size:x-small;color:red}:host ::ng-deep .p-toast{width:20rem!important}.circular-image{width:50px;height:50px;border-radius:50%;object-fit:cover;border:none}.container-button{width:10rem;margin-top:3%}\n"] }]
7671
+ args: [{ selector: 'app-cod-self-form-step-four', template: "<div class=\"container-main\">\n <div class=\"container-form\">\n <h2>Datos de Facturacion</h2>\n <p-toast position=\"top-center\" key=\"confirm\" (onClose)=\"onReject()\" [baseZIndex]=\"10\">\n <ng-template let-message pTemplate=\"message\">\n <div class=\"flex flex-column align-items-start\" style=\"flex: 1\">\n <div class=\"flex align-items-center gap-2\">\n <img src=\"https://qa.iptdev.com.co/assets/logos/reading.png\" style=\"width: 65px;\" shape=\"circle\" />\n <span class=\"font-bold text-900\">Jacob</span>\n </div>\n <div class=\"font-medium text-lg my-3 text-900\">{{ messageInfo }}</div>\n </div>\n </ng-template>\n </p-toast>\n <i class=\"pi pi-exclamation-circle cursor-pointer w-auto mb-4\" (click)=\"showConfirm()\" pTooltip=\"Mas info.\" tooltipPosition=\"bottom\"></i>\n <form autocomplete=\"off\" [formGroup]=\"codSelfFormStepFour\" class=\"grid mt-2 flex flex-column align-items-center\">\n <div class=\"container__body__select flex justify-content-center flex-wrap\">\n <div class=\"container__type__payments\" *ngIf=\"isSelectionOptionPayments\">\n <div class=\"flex flex-column gap-3\">\n <h3>\u00BFComo quieres pagar?</h3>\n <div *ngFor=\"let category of OptionPayments; index as ind\" class=\"field-checkbox\">\n <p-radioButton\n [inputId]=\"category.key\"\n name=\"category\"\n [value]=\"category\"\n [(ngModel)]=\"selectedOptionPayments\"\n [disabled]=\"disableweekdays[ind]\"\n [ngModelOptions]=\"{ standalone: true }\"\n (ngModelChange)=\"selectOpcionsPayments($event)\"\n ></p-radioButton>\n <label [for]=\"category.key\" class=\"ml-2\">\n {{ category.name }}\n </label>\n </div>\n </div>\n </div>\n\n <div class=\"container__opstion__instalations\" *ngIf=\"!isSelectionOptionPayments\">\n <!-- Vista para la opci\u00F3n de pago \"Instalaciones\" -->\n <div *ngIf=\"getViewBasedOnPaymentOption() === 'in'\">\n <div class=\"container__info flex flex-column align-items-center justify-content-center mt-1 mb-4\" *ngIf=\"isEditBillingData\">\n\n <img\n src=\"https://qa.iptdev.com.co/assets/logos/lobo-web.png\"\n alt=\"Receipt Icon\"\n shape=\"circle\"\n class=\"circular-image\"\n />\n <strong>{{ codSelfFormStepFour.get('invoicing_name')?.value }} {{ codSelfFormStepFour.get('invoicing_Apellido')?.value }}</strong>\n <span>{{ getIdTypeDescription(codSelfFormStepFour.get('invoicing_idType')?.value) }} {{ codSelfFormStepFour.get('invoicing_document')?.value }}</span>\n\n <div class=\"container-button\">\n <ipt-button\n [label]=\"'Modificar Datos'\"\n (onClick)=\"editBillingData()\"\n [primary]=\"false\">\n </ipt-button>\n </div>\n </div>\n <div class=\"m-3\" *ngIf=\"!isEditBillingData\">\n <h3>Completa los nuevos datos para la emision de tu factura</h3>\n <div class=\"flex gap-1 md:gap-4 xl:gap-8 m-1 p-2 border-round bg-blue-500 text-white\">\n <div class=\"container_icon flex mr-4 justify-content-center align-items-start mt-1\">\n <i class=\"pi pi-info-circle cursor-pointer w-auto mb-4\" pTooltip=\"Mas info.\" tooltipPosition=\"bottom\"></i>\n </div>\n <div class=\"flex flex-column container_info_span flex align-items-center justify-content-center\">\n <span>Si proporcionas datos de un tercero, confirmas que los datos son correctos y que tienes su consentimiento para el uso de la informacion. Estos datos se trataran de acuerdo a nuestra <a href=\"\">Declaracion de Privacidad</a></span>\n </div>\n </div>\n <div>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Nombres'\"\n [control]=\"codSelfFormStepFour.controls['invoicing_name']\"\n ></ipt-input>\n <ipt-input\n [inputType]=\"'text'\"\n [placeHolder]=\"'Apellidos'\"\n [control]=\"codSelfFormStepFour.controls['invoicing_Apellido']\"\n ></ipt-input>\n <ipt-select\n [initialValue]=\"codSelfFormStepFour.controls['invoicing_idType'].value\"\n [control]=\"codSelfFormStepFour.controls['invoicing_idType']\"\n [selectCode]=\"codSelfFormStepFour.controls['invoicing_idType'].value === null ? 'Tipo de documento' : codSelfFormStepFour.controls['invoicing_idType'].value\"\n [isRequired]=\"true\"\n [data]=\"idTypes\"\n (eventSelect)=\"selectIdType($event)\"\n [defaultText]=\"'Tipo de documento'\"\n ></ipt-select>\n <ipt-input\n [inputType]=\"'number'\"\n [placeHolder]=\"'Numero de documento'\"\n [control]=\"codSelfFormStepFour.controls['invoicing_document']\"\n ></ipt-input>\n </div>\n <div class=\"flex justify-content-end mt-3 align-items-center gap-3\">\n <button\n pButton\n [disabled]=\"!codSelfFormStepFour.valid\"\n label=\"Continuar\"\n type=\"button\"\n (click)=\"updateDatosBillingData()\"\n ></button>\n </div>\n </div>\n </div>\n\n <!-- Vista para la opci\u00F3n de pago \"Transferencia\" -->\n <div *ngIf=\"getViewBasedOnPaymentOption() === 'tr'\">\n <h3>Completa los datos para Transferencia</h3>\n <!-- Aqu\u00ED puedes agregar el formulario espec\u00EDfico para Transferencia -->\n </div>\n </div>\n </div>\n </form>\n\n <div class=\"flex justify-content-between mt-3 align-items-center gap-3\">\n <button\n pButton\n icon=\"pi pi-arrow-left\"\n type=\"button\"\n (click)=\"back()\"\n ></button>\n <button\n *ngIf=\"!isSelectionOptionPayments && isEditBillingData && codSelfFormStepFour.valid\"\n pButton\n label=\"Guardar\"\n type=\"button\"\n (click)=\"sendForm()\"\n ></button>\n </div>\n </div>\n</div>\n\n<div>\n <pre>{{ codSelfFormStepFour.value | json }}</pre>\n <div>\n <pre>{{ codSelfFormStepFour.valid | json }}</pre>\n </div>\n</div>\n", styles: [".container-form{margin:5%;border-radius:6px;border:1px solid #2563eb;box-shadow:#3c40434d 0 1px 2px,#3c404326 0 2px 6px 2px;padding:1rem}.error-message{font-size:x-small;color:red}:host ::ng-deep .p-toast{width:20rem!important}.circular-image{width:50px;height:50px;border-radius:50%;object-fit:cover;border:none}.container-button{width:10rem;margin-top:3%}\n"] }]
7664
7672
  }], ctorParameters: function () { return [{ type: i1$1.FormBuilder }, { type: i2$1.MessageService }]; }, propDecorators: { idTypes: [{
7665
7673
  type: Input
7666
7674
  }], completed: [{