valtech-components 2.0.455 → 2.0.457

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.
@@ -2,6 +2,12 @@ import { Component, Input, ViewChild } from '@angular/core';
2
2
  import { NgOtpInputComponent, NgOtpInputModule } from 'ng-otp-input';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "ng-otp-input";
5
+ /** Size configurations for PIN input boxes */
6
+ const SIZE_CONFIG = {
7
+ small: { width: '40px', height: '44px', fontSize: '24px' },
8
+ medium: { width: '50px', height: '54px', fontSize: '28px' },
9
+ large: { width: '58px', height: '60px', fontSize: '32px' },
10
+ };
5
11
  /**
6
12
  * val-pin-input
7
13
  *
@@ -17,9 +23,9 @@ export class PinInputComponent {
17
23
  this.codeLength = 5;
18
24
  this.otpInputConfig = {
19
25
  inputStyles: {
20
- 'font-size': '32px',
21
- width: '58px',
22
- height: '60px',
26
+ 'font-size': SIZE_CONFIG.medium.fontSize,
27
+ width: SIZE_CONFIG.medium.width,
28
+ height: SIZE_CONFIG.medium.height,
23
29
  },
24
30
  inputClass: 'otp-input-box',
25
31
  length: this.codeLength,
@@ -29,10 +35,19 @@ export class PinInputComponent {
29
35
  ngOnInit() {
30
36
  // Usar props.length si se proporciona, sino mantener default 5
31
37
  const length = this.props.length ?? 5;
38
+ // Usar props.size si se proporciona, sino mantener default 'medium'
39
+ const size = this.props.size ?? 'medium';
40
+ const sizeStyles = SIZE_CONFIG[size];
32
41
  this.otpInputConfig = {
33
42
  ...this.otpInputConfig,
34
43
  length,
35
44
  allowNumbersOnly: this.props.allowNumbersOnly ?? true,
45
+ inputStyles: {
46
+ 'font-size': sizeStyles.fontSize,
47
+ width: sizeStyles.width,
48
+ height: sizeStyles.height,
49
+ ...this.props.inputStyles, // Allow custom overrides
50
+ },
36
51
  };
37
52
  }
38
53
  reset() {
@@ -45,7 +60,7 @@ export class PinInputComponent {
45
60
  <div class="otp">
46
61
  <ng-otp-input [formCtrl]="props.control" [config]="otpInputConfig"></ng-otp-input>
47
62
  </div>
48
- `, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.otp{text-align:center;margin-top:.25rem;font-family:var(--ion-default-font),Arial,sans-serif}.otp-input-box:focus{border-color:#0ff}\n"], dependencies: [{ kind: "ngmodule", type: NgOtpInputModule }, { kind: "component", type: i1.NgOtpInputComponent, selector: "ng-otp-input", inputs: ["config", "formCtrl"], outputs: ["onInputChange"] }] }); }
63
+ `, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.otp{text-align:center;margin-top:.25rem;font-family:var(--ion-default-font),Arial,sans-serif}@media (max-width: 480px){.otp ::ng-deep .otp-input{width:40px!important;height:44px!important;font-size:24px!important}}.otp-input-box:focus{border-color:#0ff}\n"], dependencies: [{ kind: "ngmodule", type: NgOtpInputModule }, { kind: "component", type: i1.NgOtpInputComponent, selector: "ng-otp-input", inputs: ["config", "formCtrl"], outputs: ["onInputChange"] }] }); }
49
64
  }
50
65
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PinInputComponent, decorators: [{
51
66
  type: Component,
@@ -53,11 +68,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
53
68
  <div class="otp">
54
69
  <ng-otp-input [formCtrl]="props.control" [config]="otpInputConfig"></ng-otp-input>
55
70
  </div>
56
- `, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.otp{text-align:center;margin-top:.25rem;font-family:var(--ion-default-font),Arial,sans-serif}.otp-input-box:focus{border-color:#0ff}\n"] }]
71
+ `, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.otp{text-align:center;margin-top:.25rem;font-family:var(--ion-default-font),Arial,sans-serif}@media (max-width: 480px){.otp ::ng-deep .otp-input{width:40px!important;height:44px!important;font-size:24px!important}}.otp-input-box:focus{border-color:#0ff}\n"] }]
57
72
  }], ctorParameters: () => [], propDecorators: { pinCode: [{
58
73
  type: ViewChild,
59
74
  args: [NgOtpInputComponent, { static: false }]
60
75
  }], props: [{
61
76
  type: Input
62
77
  }] } });
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvcGluLWlucHV0L3Bpbi1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxtQkFBbUIsRUFBb0IsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7OztBQWN2Rjs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0lBdUI1QjtRQVpBLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixtQkFBYyxHQUFxQjtZQUNqQyxXQUFXLEVBQUU7Z0JBQ1gsV0FBVyxFQUFFLE1BQU07Z0JBQ25CLEtBQUssRUFBRSxNQUFNO2dCQUNiLE1BQU0sRUFBRSxNQUFNO2FBQ2Y7WUFDRCxVQUFVLEVBQUUsZUFBZTtZQUMzQixNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDdkIsZ0JBQWdCLEVBQUUsSUFBSTtTQUN2QixDQUFDO0lBRWEsQ0FBQztJQUVoQixRQUFRO1FBQ04sK0RBQStEO1FBQy9ELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztRQUV0QyxJQUFJLENBQUMsY0FBYyxHQUFHO1lBQ3BCLEdBQUcsSUFBSSxDQUFDLGNBQWM7WUFDdEIsTUFBTTtZQUNOLGdCQUFnQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLElBQUksSUFBSTtTQUN0RCxDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QixDQUFDO0lBQ0gsQ0FBQzsrR0F4Q1UsaUJBQWlCO21HQUFqQixpQkFBaUIsOElBQ2pCLG1CQUFtQixnREFsQnBCOzs7O0dBSVQscXpGQUxTLGdCQUFnQjs7NEZBa0JmLGlCQUFpQjtrQkFyQjdCLFNBQVM7K0JBQ0UsZUFBZSxjQUNiLElBQUksV0FDUCxDQUFDLGdCQUFnQixDQUFDLFlBQ2pCOzs7O0dBSVQ7d0RBY2tELE9BQU87c0JBQXpELFNBQVM7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQVF4QyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdPdHBJbnB1dENvbXBvbmVudCwgTmdPdHBJbnB1dENvbmZpZywgTmdPdHBJbnB1dE1vZHVsZSB9IGZyb20gJ25nLW90cC1pbnB1dCc7XG5pbXBvcnQgeyBQaW5JbnB1dE1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1waW4taW5wdXQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdPdHBJbnB1dE1vZHVsZV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cIm90cFwiPlxuICAgICAgPG5nLW90cC1pbnB1dCBbZm9ybUN0cmxdPVwicHJvcHMuY29udHJvbFwiIFtjb25maWddPVwib3RwSW5wdXRDb25maWdcIj48L25nLW90cC1pbnB1dD5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vcGluLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtcGluLWlucHV0XG4gKlxuICogQSBQSU4gY29kZSBpbnB1dCB1c2luZyBuZy1vdHAtaW5wdXQsIGludGVncmF0ZWQgd2l0aCBBbmd1bGFyIGZvcm1zLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLXBpbi1pbnB1dCBbcHJvcHNdPVwieyBjb250cm9sOiBteUNvbnRyb2wgfVwiPjwvdmFsLXBpbi1pbnB1dD5cbiAqXG4gKiBAaW5wdXQgcHJvcHM6IFBpbklucHV0TWV0YWRhdGEgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgUElOIGlucHV0IChmb3JtIGNvbnRyb2wsIGxlbmd0aCwgZXRjLilcbiAqL1xuZXhwb3J0IGNsYXNzIFBpbklucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQFZpZXdDaGlsZChOZ090cElucHV0Q29tcG9uZW50LCB7IHN0YXRpYzogZmFsc2UgfSkgcGluQ29kZTogTmdPdHBJbnB1dENvbXBvbmVudCB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogSW5wdXQgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAqIEB0eXBlIHtQaW5JbnB1dE1ldGFkYXRhfVxuICAgKiBAcHJvcGVydHkgY29udHJvbCAtIFRoZSBBbmd1bGFyIEZvcm1Db250cm9sIGZvciB0aGUgUElOIGlucHV0LlxuICAgKiBAcHJvcGVydHkgbGVuZ3RoIC0gTnVtYmVyIG9mIGRpZ2l0cyBpbiBQSU4gKGRlZmF1bHQ6IDUpLlxuICAgKi9cbiAgQElucHV0KCkgcHJvcHM6IFBpbklucHV0TWV0YWRhdGE7XG5cbiAgY29kZUxlbmd0aCA9IDU7XG4gIG90cElucHV0Q29uZmlnOiBOZ090cElucHV0Q29uZmlnID0ge1xuICAgIGlucHV0U3R5bGVzOiB7XG4gICAgICAnZm9udC1zaXplJzogJzMycHgnLFxuICAgICAgd2lkdGg6ICc1OHB4JyxcbiAgICAgIGhlaWdodDogJzYwcHgnLFxuICAgIH0sXG4gICAgaW5wdXRDbGFzczogJ290cC1pbnB1dC1ib3gnLFxuICAgIGxlbmd0aDogdGhpcy5jb2RlTGVuZ3RoLFxuICAgIGFsbG93TnVtYmVyc09ubHk6IHRydWUsXG4gIH07XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIFVzYXIgcHJvcHMubGVuZ3RoIHNpIHNlIHByb3BvcmNpb25hLCBzaW5vIG1hbnRlbmVyIGRlZmF1bHQgNVxuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMucHJvcHMubGVuZ3RoID8/IDU7XG5cbiAgICB0aGlzLm90cElucHV0Q29uZmlnID0ge1xuICAgICAgLi4udGhpcy5vdHBJbnB1dENvbmZpZyxcbiAgICAgIGxlbmd0aCxcbiAgICAgIGFsbG93TnVtYmVyc09ubHk6IHRoaXMucHJvcHMuYWxsb3dOdW1iZXJzT25seSA/PyB0cnVlLFxuICAgIH07XG4gIH1cblxuICByZXNldCgpIHtcbiAgICBpZiAodGhpcy5waW5Db2RlKSB7XG4gICAgICB0aGlzLnBpbkNvZGUuc2V0VmFsdWUoJycpO1xuICAgIH1cbiAgfVxufVxuIl19
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvcGluLWlucHV0L3Bpbi1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxtQkFBbUIsRUFBb0IsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7OztBQUd2Riw4Q0FBOEM7QUFDOUMsTUFBTSxXQUFXLEdBQThFO0lBQzdGLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO0lBQzFELE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO0lBQzNELEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO0NBQzNELENBQUM7QUFhRjs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0lBdUI1QjtRQVpBLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixtQkFBYyxHQUFxQjtZQUNqQyxXQUFXLEVBQUU7Z0JBQ1gsV0FBVyxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsUUFBUTtnQkFDeEMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSztnQkFDL0IsTUFBTSxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTTthQUNsQztZQUNELFVBQVUsRUFBRSxlQUFlO1lBQzNCLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVTtZQUN2QixnQkFBZ0IsRUFBRSxJQUFJO1NBQ3ZCLENBQUM7SUFFYSxDQUFDO0lBRWhCLFFBQVE7UUFDTiwrREFBK0Q7UUFDL0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO1FBQ3RDLG9FQUFvRTtRQUNwRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxRQUFRLENBQUM7UUFDekMsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXJDLElBQUksQ0FBQyxjQUFjLEdBQUc7WUFDcEIsR0FBRyxJQUFJLENBQUMsY0FBYztZQUN0QixNQUFNO1lBQ04sZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJO1lBQ3JELFdBQVcsRUFBRTtnQkFDWCxXQUFXLEVBQUUsVUFBVSxDQUFDLFFBQVE7Z0JBQ2hDLEtBQUssRUFBRSxVQUFVLENBQUMsS0FBSztnQkFDdkIsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNO2dCQUN6QixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLHlCQUF5QjthQUNyRDtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDOytHQWpEVSxpQkFBaUI7bUdBQWpCLGlCQUFpQiw4SUFDakIsbUJBQW1CLGdEQWxCcEI7Ozs7R0FJVCw4NkZBTFMsZ0JBQWdCOzs0RkFrQmYsaUJBQWlCO2tCQXJCN0IsU0FBUzsrQkFDRSxlQUFlLGNBQ2IsSUFBSSxXQUNQLENBQUMsZ0JBQWdCLENBQUMsWUFDakI7Ozs7R0FJVDt3REFja0QsT0FBTztzQkFBekQsU0FBUzt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBUXhDLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ090cElucHV0Q29tcG9uZW50LCBOZ090cElucHV0Q29uZmlnLCBOZ090cElucHV0TW9kdWxlIH0gZnJvbSAnbmctb3RwLWlucHV0JztcbmltcG9ydCB7IFBpbklucHV0TWV0YWRhdGEsIFBpbklucHV0U2l6ZSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKiogU2l6ZSBjb25maWd1cmF0aW9ucyBmb3IgUElOIGlucHV0IGJveGVzICovXG5jb25zdCBTSVpFX0NPTkZJRzogUmVjb3JkPFBpbklucHV0U2l6ZSwgeyB3aWR0aDogc3RyaW5nOyBoZWlnaHQ6IHN0cmluZzsgZm9udFNpemU6IHN0cmluZyB9PiA9IHtcbiAgc21hbGw6IHsgd2lkdGg6ICc0MHB4JywgaGVpZ2h0OiAnNDRweCcsIGZvbnRTaXplOiAnMjRweCcgfSxcbiAgbWVkaXVtOiB7IHdpZHRoOiAnNTBweCcsIGhlaWdodDogJzU0cHgnLCBmb250U2l6ZTogJzI4cHgnIH0sXG4gIGxhcmdlOiB7IHdpZHRoOiAnNThweCcsIGhlaWdodDogJzYwcHgnLCBmb250U2l6ZTogJzMycHgnIH0sXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtcGluLWlucHV0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nT3RwSW5wdXRNb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJvdHBcIj5cbiAgICAgIDxuZy1vdHAtaW5wdXQgW2Zvcm1DdHJsXT1cInByb3BzLmNvbnRyb2xcIiBbY29uZmlnXT1cIm90cElucHV0Q29uZmlnXCI+PC9uZy1vdHAtaW5wdXQ+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL3Bpbi1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLXBpbi1pbnB1dFxuICpcbiAqIEEgUElOIGNvZGUgaW5wdXQgdXNpbmcgbmctb3RwLWlucHV0LCBpbnRlZ3JhdGVkIHdpdGggQW5ndWxhciBmb3Jtcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogPHZhbC1waW4taW5wdXQgW3Byb3BzXT1cInsgY29udHJvbDogbXlDb250cm9sIH1cIj48L3ZhbC1waW4taW5wdXQ+XG4gKlxuICogQGlucHV0IHByb3BzOiBQaW5JbnB1dE1ldGFkYXRhIC0gQ29uZmlndXJhdGlvbiBmb3IgdGhlIFBJTiBpbnB1dCAoZm9ybSBjb250cm9sLCBsZW5ndGgsIGV0Yy4pXG4gKi9cbmV4cG9ydCBjbGFzcyBQaW5JbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoTmdPdHBJbnB1dENvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pIHBpbkNvZGU6IE5nT3RwSW5wdXRDb21wb25lbnQgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIElucHV0IGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgKiBAdHlwZSB7UGluSW5wdXRNZXRhZGF0YX1cbiAgICogQHByb3BlcnR5IGNvbnRyb2wgLSBUaGUgQW5ndWxhciBGb3JtQ29udHJvbCBmb3IgdGhlIFBJTiBpbnB1dC5cbiAgICogQHByb3BlcnR5IGxlbmd0aCAtIE51bWJlciBvZiBkaWdpdHMgaW4gUElOIChkZWZhdWx0OiA1KS5cbiAgICovXG4gIEBJbnB1dCgpIHByb3BzOiBQaW5JbnB1dE1ldGFkYXRhO1xuXG4gIGNvZGVMZW5ndGggPSA1O1xuICBvdHBJbnB1dENvbmZpZzogTmdPdHBJbnB1dENvbmZpZyA9IHtcbiAgICBpbnB1dFN0eWxlczoge1xuICAgICAgJ2ZvbnQtc2l6ZSc6IFNJWkVfQ09ORklHLm1lZGl1bS5mb250U2l6ZSxcbiAgICAgIHdpZHRoOiBTSVpFX0NPTkZJRy5tZWRpdW0ud2lkdGgsXG4gICAgICBoZWlnaHQ6IFNJWkVfQ09ORklHLm1lZGl1bS5oZWlnaHQsXG4gICAgfSxcbiAgICBpbnB1dENsYXNzOiAnb3RwLWlucHV0LWJveCcsXG4gICAgbGVuZ3RoOiB0aGlzLmNvZGVMZW5ndGgsXG4gICAgYWxsb3dOdW1iZXJzT25seTogdHJ1ZSxcbiAgfTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gVXNhciBwcm9wcy5sZW5ndGggc2kgc2UgcHJvcG9yY2lvbmEsIHNpbm8gbWFudGVuZXIgZGVmYXVsdCA1XG4gICAgY29uc3QgbGVuZ3RoID0gdGhpcy5wcm9wcy5sZW5ndGggPz8gNTtcbiAgICAvLyBVc2FyIHByb3BzLnNpemUgc2kgc2UgcHJvcG9yY2lvbmEsIHNpbm8gbWFudGVuZXIgZGVmYXVsdCAnbWVkaXVtJ1xuICAgIGNvbnN0IHNpemUgPSB0aGlzLnByb3BzLnNpemUgPz8gJ21lZGl1bSc7XG4gICAgY29uc3Qgc2l6ZVN0eWxlcyA9IFNJWkVfQ09ORklHW3NpemVdO1xuXG4gICAgdGhpcy5vdHBJbnB1dENvbmZpZyA9IHtcbiAgICAgIC4uLnRoaXMub3RwSW5wdXRDb25maWcsXG4gICAgICBsZW5ndGgsXG4gICAgICBhbGxvd051bWJlcnNPbmx5OiB0aGlzLnByb3BzLmFsbG93TnVtYmVyc09ubHkgPz8gdHJ1ZSxcbiAgICAgIGlucHV0U3R5bGVzOiB7XG4gICAgICAgICdmb250LXNpemUnOiBzaXplU3R5bGVzLmZvbnRTaXplLFxuICAgICAgICB3aWR0aDogc2l6ZVN0eWxlcy53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBzaXplU3R5bGVzLmhlaWdodCxcbiAgICAgICAgLi4udGhpcy5wcm9wcy5pbnB1dFN0eWxlcywgLy8gQWxsb3cgY3VzdG9tIG92ZXJyaWRlc1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgaWYgKHRoaXMucGluQ29kZSkge1xuICAgICAgdGhpcy5waW5Db2RlLnNldFZhbHVlKCcnKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3Bpbi1pbnB1dC90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb2xvciB9IGZyb20gJ0Bpb25pYy9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudFN0YXRlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG4vKipcbiAqIE1ldGFkYXRhIGZvciB0aGUgUElOIGlucHV0IGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQaW5JbnB1dE1ldGFkYXRhIHtcbiAgLyoqIEZvcm0gY29udHJvbCBmb3IgdGhlIFBJTiB2YWx1ZSAoc3RvcmVzIHN0cmluZykgKi9cbiAgY29udHJvbDogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gIC8qKiBVbmlxdWUgdG9rZW4gZm9yIHRoZSBpbnB1dCAqL1xuICB0b2tlbj86IHN0cmluZztcbiAgLyoqIERpc3BsYXkgbGFiZWwgKi9cbiAgbGFiZWw/OiBzdHJpbmc7XG4gIC8qKiBGaWVsZCBuYW1lICovXG4gIG5hbWU/OiBzdHJpbmc7XG4gIC8qKiBIZWxwIHRleHQgKi9cbiAgaGludD86IHN0cmluZztcbiAgLyoqIEZpZWxkIHN0YXRlICovXG4gIHN0YXRlPzogQ29tcG9uZW50U3RhdGU7XG5cbiAgLy8gPT09IFBJTiBjb25maWd1cmF0aW9uID09PVxuICAvKiogTnVtYmVyIG9mIGRpZ2l0cyBpbiBQSU4gKGRlZmF1bHQ6IDUpICovXG4gIGxlbmd0aD86IG51bWJlcjtcbiAgLyoqIEFsbG93IG9ubHkgbnVtYmVycyAqL1xuICBhbGxvd051bWJlcnNPbmx5PzogYm9vbGVhbjtcbiAgLyoqIE1hc2sgaW5wdXQgKHNob3cgZG90cyBpbnN0ZWFkIG9mIGNoYXJhY3RlcnMpICovXG4gIG1hc2s/OiBib29sZWFuO1xuICAvKiogTWFzayBjaGFyYWN0ZXIgdG8gZGlzcGxheSAqL1xuICBtYXNrQ2hhcj86IHN0cmluZztcbiAgLyoqIERpc2FibGUgcGFzdGUgZnVuY3Rpb25hbGl0eSAqL1xuICBkaXNhYmxlUGFzdGU/OiBib29sZWFuO1xuICAvKiogQXV0byBmb2N1cyBmaXJzdCBpbnB1dCAqL1xuICBhdXRvRm9jdXM/OiBib29sZWFuO1xuICAvKiogQXV0byBzdWJtaXQgd2hlbiBjb21wbGV0ZSAqL1xuICBhdXRvU3VibWl0PzogYm9vbGVhbjtcblxuICAvLyA9PT0gU3R5bGluZyA9PT1cbiAgLyoqIENvbXBvbmVudCBjb2xvciAqL1xuICBjb2xvcj86IENvbG9yO1xuICAvKiogQ3VzdG9tIENTUyBjbGFzcyAqL1xuICBjc3NDbGFzcz86IHN0cmluZztcbiAgLyoqIElucHV0IGJveCBzdHlsZXMgKi9cbiAgaW5wdXRTdHlsZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAvKiogSW5wdXQgYm94IGNsYXNzICovXG4gIGlucHV0Q2xhc3M/OiBzdHJpbmc7XG5cbiAgLy8gPT09IFJlYWN0aXZlIGNvbnRlbnQgPT09XG4gIC8qKiBDb250ZW50IGtleSBmb3IgcmVhY3RpdmUgbGFiZWwgKi9cbiAgY29udGVudEtleT86IHN0cmluZztcbiAgLyoqIENvbXBvbmVudCBjbGFzcyBuYW1lIGZvciBjb250ZW50IGxvb2t1cCAqL1xuICBjb250ZW50Q2xhc3M/OiBzdHJpbmc7XG4gIC8qKiBGYWxsYmFjayB0ZXh0IGlmIGNvbnRlbnQga2V5IGlzIG5vdCBmb3VuZCAqL1xuICBjb250ZW50RmFsbGJhY2s/OiBzdHJpbmc7XG5cbiAgLy8gPT09IFZhbGlkYXRpb24gZGlzcGxheSA9PT1cbiAgLyoqIEN1c3RvbSBlcnJvciBtZXNzYWdlcyAqL1xuICBlcnJvcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAvKiogU2hvdyB2YWxpZGF0aW9uIGVycm9ycyAqL1xuICBzaG93RXJyb3JzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBFdmVudCBlbWl0dGVkIHdoZW4gUElOIGlucHV0IGNoYW5nZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGluSW5wdXRDaGFuZ2VFdmVudCB7XG4gIC8qKiBDdXJyZW50IFBJTiB2YWx1ZSAqL1xuICB2YWx1ZTogc3RyaW5nO1xuICAvKiogV2hldGhlciB0aGUgUElOIGlzIGNvbXBsZXRlICovXG4gIGlzQ29tcGxldGU6IGJvb2xlYW47XG4gIC8qKiBOdW1iZXIgb2YgZGlnaXRzIGVudGVyZWQgKi9cbiAgbGVuZ3RoOiBudW1iZXI7XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3Bpbi1pbnB1dC90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb2xvciB9IGZyb20gJ0Bpb25pYy9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudFN0YXRlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG4vKipcbiAqIFNpemUgb3B0aW9ucyBmb3IgUElOIGlucHV0IGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IHR5cGUgUGluSW5wdXRTaXplID0gJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJztcblxuLyoqXG4gKiBNZXRhZGF0YSBmb3IgdGhlIFBJTiBpbnB1dCBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGluSW5wdXRNZXRhZGF0YSB7XG4gIC8qKiBGb3JtIGNvbnRyb2wgZm9yIHRoZSBQSU4gdmFsdWUgKHN0b3JlcyBzdHJpbmcpICovXG4gIGNvbnRyb2w6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICAvKiogVW5pcXVlIHRva2VuIGZvciB0aGUgaW5wdXQgKi9cbiAgdG9rZW4/OiBzdHJpbmc7XG4gIC8qKiBEaXNwbGF5IGxhYmVsICovXG4gIGxhYmVsPzogc3RyaW5nO1xuICAvKiogRmllbGQgbmFtZSAqL1xuICBuYW1lPzogc3RyaW5nO1xuICAvKiogSGVscCB0ZXh0ICovXG4gIGhpbnQ/OiBzdHJpbmc7XG4gIC8qKiBGaWVsZCBzdGF0ZSAqL1xuICBzdGF0ZT86IENvbXBvbmVudFN0YXRlO1xuXG4gIC8vID09PSBQSU4gY29uZmlndXJhdGlvbiA9PT1cbiAgLyoqIE51bWJlciBvZiBkaWdpdHMgaW4gUElOIChkZWZhdWx0OiA1KSAqL1xuICBsZW5ndGg/OiBudW1iZXI7XG4gIC8qKiBTaXplIG9mIHRoZSBpbnB1dCBib3hlczogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJyAoZGVmYXVsdDogJ21lZGl1bScpICovXG4gIHNpemU/OiBQaW5JbnB1dFNpemU7XG4gIC8qKiBBbGxvdyBvbmx5IG51bWJlcnMgKi9cbiAgYWxsb3dOdW1iZXJzT25seT86IGJvb2xlYW47XG4gIC8qKiBNYXNrIGlucHV0IChzaG93IGRvdHMgaW5zdGVhZCBvZiBjaGFyYWN0ZXJzKSAqL1xuICBtYXNrPzogYm9vbGVhbjtcbiAgLyoqIE1hc2sgY2hhcmFjdGVyIHRvIGRpc3BsYXkgKi9cbiAgbWFza0NoYXI/OiBzdHJpbmc7XG4gIC8qKiBEaXNhYmxlIHBhc3RlIGZ1bmN0aW9uYWxpdHkgKi9cbiAgZGlzYWJsZVBhc3RlPzogYm9vbGVhbjtcbiAgLyoqIEF1dG8gZm9jdXMgZmlyc3QgaW5wdXQgKi9cbiAgYXV0b0ZvY3VzPzogYm9vbGVhbjtcbiAgLyoqIEF1dG8gc3VibWl0IHdoZW4gY29tcGxldGUgKi9cbiAgYXV0b1N1Ym1pdD86IGJvb2xlYW47XG5cbiAgLy8gPT09IFN0eWxpbmcgPT09XG4gIC8qKiBDb21wb25lbnQgY29sb3IgKi9cbiAgY29sb3I/OiBDb2xvcjtcbiAgLyoqIEN1c3RvbSBDU1MgY2xhc3MgKi9cbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XG4gIC8qKiBJbnB1dCBib3ggc3R5bGVzICovXG4gIGlucHV0U3R5bGVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLyoqIElucHV0IGJveCBjbGFzcyAqL1xuICBpbnB1dENsYXNzPzogc3RyaW5nO1xuXG4gIC8vID09PSBSZWFjdGl2ZSBjb250ZW50ID09PVxuICAvKiogQ29udGVudCBrZXkgZm9yIHJlYWN0aXZlIGxhYmVsICovXG4gIGNvbnRlbnRLZXk/OiBzdHJpbmc7XG4gIC8qKiBDb21wb25lbnQgY2xhc3MgbmFtZSBmb3IgY29udGVudCBsb29rdXAgKi9cbiAgY29udGVudENsYXNzPzogc3RyaW5nO1xuICAvKiogRmFsbGJhY2sgdGV4dCBpZiBjb250ZW50IGtleSBpcyBub3QgZm91bmQgKi9cbiAgY29udGVudEZhbGxiYWNrPzogc3RyaW5nO1xuXG4gIC8vID09PSBWYWxpZGF0aW9uIGRpc3BsYXkgPT09XG4gIC8qKiBDdXN0b20gZXJyb3IgbWVzc2FnZXMgKi9cbiAgZXJyb3JzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLyoqIFNob3cgdmFsaWRhdGlvbiBlcnJvcnMgKi9cbiAgc2hvd0Vycm9ycz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogRXZlbnQgZW1pdHRlZCB3aGVuIFBJTiBpbnB1dCBjaGFuZ2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBpbklucHV0Q2hhbmdlRXZlbnQge1xuICAvKiogQ3VycmVudCBQSU4gdmFsdWUgKi9cbiAgdmFsdWU6IHN0cmluZztcbiAgLyoqIFdoZXRoZXIgdGhlIFBJTiBpcyBjb21wbGV0ZSAqL1xuICBpc0NvbXBsZXRlOiBib29sZWFuO1xuICAvKiogTnVtYmVyIG9mIGRpZ2l0cyBlbnRlcmVkICovXG4gIGxlbmd0aDogbnVtYmVyO1xufVxuIl19
@@ -76,32 +76,32 @@ export class LinkProcessorService {
76
76
  let processedText = text;
77
77
  // 1. Procesar enlaces estilo Markdown [texto](url) primero
78
78
  if (processMarkdownLinks) {
79
- // // Usar exec en bucle (compatible con ES2018)
80
- // const markdownMatches: RegExpExecArray[] = [];
81
- // this.markdownLinkRegex.lastIndex = 0;
82
- // let mdMatch: RegExpExecArray | null;
83
- // while ((mdMatch = this.markdownLinkRegex.exec(processedText)) !== null) {
84
- // markdownMatches.push(mdMatch);
85
- // }
79
+ // Usar exec en bucle (compatible con ES2018)
80
+ const markdownMatches = [];
81
+ this.markdownLinkRegex.lastIndex = 0;
82
+ let mdMatch;
83
+ while ((mdMatch = this.markdownLinkRegex.exec(processedText)) !== null) {
84
+ markdownMatches.push(mdMatch);
85
+ }
86
86
  // Procesar de atrás hacia adelante para mantener las posiciones
87
- // for (let i = markdownMatches.length - 1; i >= 0; i--) {
88
- // const match = markdownMatches[i];
89
- // const [fullMatch, linkText, url] = match;
90
- // const startIndex = match.index!;
91
- // const endIndex = startIndex + fullMatch.length;
92
- // hasLinks = true;
93
- // const isExternal = /^https?:\/\//.test(url);
94
- // const target = (isExternal ? openExternalInNewTab : openInternalInNewTab)
95
- // ? isExternal
96
- // ? ' target="_blank" rel="noopener noreferrer"'
97
- // : ' target="_blank"'
98
- // : '';
99
- // const typeClass = isExternal ? externalLinkClass : internalLinkClass;
100
- // const classes = `${linkClass} ${typeClass}`.trim();
101
- // const linkHtml = `<a href="${url}"${target} class="${classes}">${linkText}</a>`;
102
- // processedText =
103
- // processedText.substring(0, startIndex) + linkHtml + processedText.substring(endIndex);
104
- // }
87
+ for (let i = markdownMatches.length - 1; i >= 0; i--) {
88
+ const match = markdownMatches[i];
89
+ const [fullMatch, linkText, url] = match;
90
+ const startIndex = match.index;
91
+ const endIndex = startIndex + fullMatch.length;
92
+ hasLinks = true;
93
+ const isExternal = /^https?:\/\//.test(url);
94
+ const target = (isExternal ? openExternalInNewTab : openInternalInNewTab)
95
+ ? isExternal
96
+ ? ' target="_blank" rel="noopener noreferrer"'
97
+ : ' target="_blank"'
98
+ : '';
99
+ const typeClass = isExternal ? externalLinkClass : internalLinkClass;
100
+ const classes = `${linkClass} ${typeClass}`.trim();
101
+ const linkHtml = `<a href="${url}"${target} class="${classes}">${linkText}</a>`;
102
+ processedText =
103
+ processedText.substring(0, startIndex) + linkHtml + processedText.substring(endIndex);
104
+ }
105
105
  }
106
106
  // 2. Procesar URLs externas directas
107
107
  // Usar exec en bucle (compatible con ES2018)
@@ -139,35 +139,35 @@ export class LinkProcessorService {
139
139
  processedText.substring(0, startIndex) + replacement + processedText.substring(endIndex);
140
140
  }
141
141
  // 3. Procesar rutas internas
142
- // // Usar exec en bucle (compatible con ES2018)
143
- // const internalMatches: RegExpExecArray[] = [];
144
- // this.internalRouteRegex.lastIndex = 0;
145
- // let internalMatch: RegExpExecArray | null;
146
- // while ((internalMatch = this.internalRouteRegex.exec(processedText)) !== null) {
147
- // internalMatches.push(internalMatch);
148
- // }
142
+ // Usar exec en bucle (compatible con ES2018)
143
+ const internalMatches = [];
144
+ this.internalRouteRegex.lastIndex = 0;
145
+ let internalMatch;
146
+ while ((internalMatch = this.internalRouteRegex.exec(processedText)) !== null) {
147
+ internalMatches.push(internalMatch);
148
+ }
149
149
  // Procesar de atrás hacia adelante para mantener las posiciones
150
- // for (let i = internalMatches.length - 1; i >= 0; i--) {
151
- // const match = internalMatches[i];
152
- // const [fullMatch, prefix, route] = match;
153
- // const startIndex = match.index!;
154
- // const endIndex = startIndex + fullMatch.length;
155
- // // Verificar que no esté ya dentro de un enlace HTML existente
156
- // const textBefore = processedText.substring(0, startIndex);
157
- // const lastOpenTag = textBefore.lastIndexOf('<a ');
158
- // const lastCloseTag = textBefore.lastIndexOf('</a>');
159
- // // Si hay un tag <a abierto sin cerrar, no procesamos
160
- // if (lastOpenTag > lastCloseTag) {
161
- // continue;
162
- // }
163
- // hasLinks = true;
164
- // const target = openInternalInNewTab ? ' target="_blank"' : '';
165
- // const classes = `${linkClass} ${internalLinkClass}`.trim();
166
- // const linkHtml = `<a href="${route}"${target} class="${classes}">${route}</a>`;
167
- // const replacement = `${prefix}${linkHtml}`;
168
- // processedText =
169
- // processedText.substring(0, startIndex) + replacement + processedText.substring(endIndex);
170
- // }
150
+ for (let i = internalMatches.length - 1; i >= 0; i--) {
151
+ const match = internalMatches[i];
152
+ const [fullMatch, prefix, route] = match;
153
+ const startIndex = match.index;
154
+ const endIndex = startIndex + fullMatch.length;
155
+ // Verificar que no esté ya dentro de un enlace HTML existente
156
+ const textBefore = processedText.substring(0, startIndex);
157
+ const lastOpenTag = textBefore.lastIndexOf('<a ');
158
+ const lastCloseTag = textBefore.lastIndexOf('</a>');
159
+ // Si hay un tag <a abierto sin cerrar, no procesamos
160
+ if (lastOpenTag > lastCloseTag) {
161
+ continue;
162
+ }
163
+ hasLinks = true;
164
+ const target = openInternalInNewTab ? ' target="_blank"' : '';
165
+ const classes = `${linkClass} ${internalLinkClass}`.trim();
166
+ const linkHtml = `<a href="${route}"${target} class="${classes}">${route}</a>`;
167
+ const replacement = `${prefix}${linkHtml}`;
168
+ processedText =
169
+ processedText.substring(0, startIndex) + replacement + processedText.substring(endIndex);
170
+ }
171
171
  // Si hay enlaces, sanitizar el HTML
172
172
  if (hasLinks) {
173
173
  return this.sanitizer.bypassSecurityTrustHtml(processedText);
@@ -256,4 +256,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
256
256
  providedIn: 'root',
257
257
  }]
258
258
  }], ctorParameters: () => [{ type: i1.DomSanitizer }] });
259
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1wcm9jZXNzb3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvbGluay1wcm9jZXNzb3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFrQjNDOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBSUgsTUFBTSxPQUFPLG9CQUFvQjtJQVUvQixZQUFvQixTQUF1QjtRQUF2QixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBVDNDLHFHQUFxRztRQUNwRixhQUFRLEdBQUcsc0JBQXNCLENBQUM7UUFFbkQseUZBQXlGO1FBQ3hFLHVCQUFrQixHQUFHLG1CQUFtQixDQUFDO1FBRTFELDJEQUEyRDtRQUMxQyxzQkFBaUIsR0FBRywwQkFBMEIsQ0FBQztJQUVsQixDQUFDO0lBRS9DOzs7O09BSUc7SUFDSyxtQkFBbUIsQ0FBQyxHQUFXO1FBQ3JDLG9GQUFvRjtRQUNwRixvRkFBb0Y7UUFDcEYsTUFBTSxtQkFBbUIsR0FBRyxZQUFZLENBQUM7UUFFekMsMEZBQTBGO1FBQzFGLG9EQUFvRDtRQUNwRCxNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUvQyxJQUFJLG9CQUFvQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDN0MsNERBQTREO1lBQzVELEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FvQkc7SUFDSCxZ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LENBQUMsQ0FBQztZQUNuRCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzsrR0EvUVUsb0JBQW9CO21IQUFwQixvQkFBb0IsY0FGbkIsTUFBTTs7NEZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuZXhwb3J0IGludGVyZmFjZSBMaW5rUHJvY2Vzc29yQ29uZmlnIHtcbiAgLyoqIFdoZXRoZXIgdG8gb3BlbiBleHRlcm5hbCBsaW5rcyBpbiBuZXcgdGFiIChkZWZhdWx0OiB0cnVlKSAqL1xuICBvcGVuRXh0ZXJuYWxJbk5ld1RhYj86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRvIG9wZW4gaW50ZXJuYWwgbGlua3MgaW4gbmV3IHRhYiAoZGVmYXVsdDogZmFsc2UpICovXG4gIG9wZW5JbnRlcm5hbEluTmV3VGFiPzogYm9vbGVhbjtcbiAgLyoqIEN1c3RvbSBDU1MgY2xhc3NlcyBmb3IgbGlua3MgKi9cbiAgbGlua0NsYXNzPzogc3RyaW5nO1xuICAvKiogQ3VzdG9tIENTUyBjbGFzc2VzIGZvciBleHRlcm5hbCBsaW5rcyAqL1xuICBleHRlcm5hbExpbmtDbGFzcz86IHN0cmluZztcbiAgLyoqIEN1c3RvbSBDU1MgY2xhc3NlcyBmb3IgaW50ZXJuYWwgbGlua3MgKi9cbiAgaW50ZXJuYWxMaW5rQ2xhc3M/OiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRvIHByb2Nlc3MgTWFya2Rvd24tc3R5bGUgbGlua3MgW3RleHRdKHVybCkgKGRlZmF1bHQ6IHRydWUpICovXG4gIHByb2Nlc3NNYXJrZG93bkxpbmtzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBMaW5rUHJvY2Vzc29yU2VydmljZSAtIFNlcnZpY2UgZm9yIHByb2Nlc3NpbmcgdGV4dCBjb250ZW50IHRvIGNvbnZlcnQgVVJMcyBhbmQgaW50ZXJuYWwgcm91dGVzIGludG8gY2xpY2thYmxlIGxpbmtzLlxuICpcbiAqIFRoaXMgc2VydmljZSBhdXRvbWF0aWNhbGx5IGRldGVjdHMgZXh0ZXJuYWwgVVJMcyAoaHR0cC9odHRwcyksIGludGVybmFsIHJvdXRlcyAoc3RhcnRpbmcgd2l0aCAvKSxcbiAqIGFuZCBNYXJrZG93bi1zdHlsZSBsaW5rcyBbdGV4dF0odXJsKSBhbmQgY29udmVydHMgdGhlbSBpbnRvIEhUTUwgYW5jaG9yIGVsZW1lbnRzIHdpdGggYXBwcm9wcmlhdGUgYXR0cmlidXRlcy5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0cnVjdG9yKHByaXZhdGUgbGlua1Byb2Nlc3NvcjogTGlua1Byb2Nlc3NvclNlcnZpY2UpIHt9XG4gKlxuICogcHJvY2Vzc1RleHQoKSB7XG4gKiAgIGNvbnN0IHRleHQgPSAnVmlzaXQgaHR0cHM6Ly9leGFtcGxlLmNvbSwgZ28gdG8gL3Byb2ZpbGUsIG9yIFtjaGVjayBkb2NzXShodHRwczovL2RvY3MuZXhhbXBsZS5jb20pJztcbiAqICAgY29uc3QgcHJvY2Vzc2VkID0gdGhpcy5saW5rUHJvY2Vzc29yLnByb2Nlc3NMaW5rcyh0ZXh0KTtcbiAqICAgLy8gUmV0dXJucyBTYWZlSHRtbCB3aXRoIGNsaWNrYWJsZSBsaW5rc1xuICogfVxuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBMaW5rUHJvY2Vzc29yU2VydmljZSB7XG4gIC8vIFJlZ2V4IHBhcmEgZGV0ZWN0YXIgVVJMcyBjb21wbGV0YXMgKGh0dHAvaHR0cHMpIC0gY2FwdHVyYSB0b2RhIGxhIFVSTCB5IGx1ZWdvIGxpbXBpYW1vcyBwdW50dWFjacOzblxuICBwcml2YXRlIHJlYWRvbmx5IHVybFJlZ2V4ID0gLyhodHRwcz86XFwvXFwvW15cXHNdKykvZztcblxuICAvLyBSZWdleCBwYXJhIGRldGVjdGFyIHJ1dGFzIGludGVybmFzIC0gY2FwdHVyYSB0b2RhIGxhIHJ1dGEgeSBsdWVnbyBsaW1waWFtb3MgcHVudHVhY2nDs25cbiAgcHJpdmF0ZSByZWFkb25seSBpbnRlcm5hbFJvdXRlUmVnZXggPSAvKFxcc3xeKShcXC9bXlxcc10qKS9nO1xuXG4gIC8vIFJlZ2V4IHBhcmEgZGV0ZWN0YXIgZW5sYWNlcyBlc3RpbG8gTWFya2Rvd24gW3RleHRvXSh1cmwpXG4gIHByaXZhdGUgcmVhZG9ubHkgbWFya2Rvd25MaW5rUmVnZXggPSAvXFxbKFteXFxdXSspXFxdXFwoKFteKV0rKVxcKS9nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHt9XG5cbiAgLyoqXG4gICAqIExpbXBpYSBsYSBwdW50dWFjacOzbiBkZWwgZmluYWwgZGUgdW5hIFVSTC5cbiAgICogTWFudGllbmUgY2FyYWN0ZXJlcyB2w6FsaWRvcyBkZSBVUkwgcGVybyByZW11ZXZlIHNpZ25vcyBkZSBwdW50dWFjacOzbiBjb211bmVzIGFsIGZpbmFsLlxuICAgKiBQcmVzZXJ2YSBwYXLDoW1ldHJvcyBkZSBjb25zdWx0YSwgZnJhZ21lbnRvcyB5IGNhcmFjdGVyZXMgdsOhbGlkb3MgZW4gVVJMcy5cbiAgICovXG4gIHByaXZhdGUgY2xlYW5VcmxQdW5jdHVhdGlvbih1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gQ2FyYWN0ZXJlcyBxdWUgY29uc2lkZXJhbW9zIHB1bnR1YWNpw7NuIGFsIGZpbmFsIGRlIG9yYWNpw7NuLCBwZXJvIE5PIHBhcnRlIGRlIFVSTHNcbiAgICAvLyBObyBpbmNsdWltb3MgJiBvID0gcXVlIHNvbiBwYXJ0ZSBkZSBxdWVyeSBwYXJhbXMsIG5pICMgcXVlIGVzIHBhcnRlIGRlIGZyYWdtZW50b3NcbiAgICBjb25zdCB0cmFpbGluZ1B1bmN0dWF0aW9uID0gL1suLDshPyldKyQvO1xuXG4gICAgLy8gQ2Fzb3MgZXNwZWNpYWxlczogc2kgbGEgVVJMIHRlcm1pbmEgY29uIHBhcsOpbnRlc2lzIHBlcm8gbm8gdGllbmUgcGFyw6ludGVzaXMgZGUgYXBlcnR1cmFcbiAgICAvLyBwcm9iYWJsZW1lbnRlIGVsIHBhcsOpbnRlc2lzIG5vIGVzIHBhcnRlIGRlIGxhIFVSTFxuICAgIGNvbnN0IGhhc09wZW5pbmdQYXJlbiA9IHVybC5pbmNsdWRlcygnKCcpO1xuICAgIGNvbnN0IGVuZHNXaXRoQ2xvc2luZ1BhcmVuID0gdXJsLmVuZHNXaXRoKCcpJyk7XG5cbiAgICBpZiAoZW5kc1dpdGhDbG9zaW5nUGFyZW4gJiYgIWhhc09wZW5pbmdQYXJlbikge1xuICAgICAgLy8gUmVtb3ZlciBlbCBwYXLDqW50ZXNpcyBkZSBjaWVycmUgc2kgbm8gaGF5IHVubyBkZSBhcGVydHVyYVxuICAgICAgdXJsID0gdXJsLnJlcGxhY2UoL1xcKSQvLCAnJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVybC5yZXBsYWNlKHRyYWlsaW5nUHVuY3R1YXRpb24sICcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNhIHRleHRvIHBhcmEgY29udmVydGlyIGVubGFjZXMgZW4gZWxlbWVudG9zIDxhPiBjbGlja2VhYmxlcy5cbiAgICogRGV0ZWN0YSBhdXRvbcOhdGljYW1lbnRlIFVSTHMgZXh0ZXJuYXMsIHJ1dGFzIGludGVybmFzIHkgZW5sYWNlcyBlc3RpbG8gTWFya2Rvd24uXG4gICAqXG4gICAqIEBwYXJhbSB0ZXh0IC0gVGV4dG8gYSBwcm9jZXNhclxuICAgKiBAcGFyYW0gY29uZmlnIC0gQ29uZmlndXJhY2nDs24gZGVsIHByb2Nlc2FtaWVudG9cbiAgICogQHJldHVybnMgU2FmZUh0bWwgY29uIGVubGFjZXMgcHJvY2VzYWRvcyBvIHN0cmluZyBvcmlnaW5hbFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHJlc3VsdCA9IHRoaXMubGlua1Byb2Nlc3Nvci5wcm9jZXNzTGlua3MoXG4gICAqICAgJ1Zpc2l0IGh0dHBzOi8vZXhhbXBsZS5jb20sIGdvIHRvIC9wcm9maWxlLCBvciBbY2hlY2sgZG9jc10oaHR0cHM6Ly9kb2NzLmV4YW1wbGUuY29tKScsXG4gICAqICAge1xuICAgKiAgICAgb3BlbkV4dGVybmFsSW5OZXdUYWI6IHRydWUsXG4gICAqICAgICBvcGVuSW50ZXJuYWxJbk5ld1RhYjogZmFsc2UsXG4gICAqICAgICBwcm9jZXNzTWFya2Rvd25MaW5rczogdHJ1ZSxcbiAgICogICAgIGxpbmtDbGFzczogJ2N1c3RvbS1saW5rJ1xuICAgKiAgIH1cbiAgICogKTtcbiAgICogYGBgXG4gICAqL1xuICBwcm9jZXNzTGlua3ModGV4dDogc3RyaW5nLCBjb25maWc6IExpbmtQcm9jZXNzb3JDb25maWcgPSB7fSk6IFNhZmVIdG1sIHwgc3RyaW5nIHtcbiAgICBpZiAoIXRleHQpIHJldHVybiAnJztcblxuICAgIGNvbnN0IHtcbiAgICAgIG9wZW5FeHRlcm5hbEluTmV3VGFiID0gdHJ1ZSxcbiAgICAgIG9wZW5JbnRlcm5hbEluTmV3VGFiID0gZmFsc2UsXG4gICAgICBsaW5rQ2xhc3MgPSAncHJvY2Vzc2VkLWxpbmsnLFxuICAgICAgZXh0ZXJuYWxMaW5rQ2xhc3MgPSAnZXh0ZXJuYWwtbGluaycsXG4gICAgICBpbnRlcm5hbExpbmtDbGFzcyA9ICdpbnRlcm5hbC1saW5rJyxcbiAgICAgIHByb2Nlc3NNYXJrZG93bkxpbmtzID0gdHJ1ZSxcbiAgICB9ID0gY29uZmlnO1xuXG4gICAgbGV0IGhhc0xpbmtzID0gZmFsc2U7XG4gICAgbGV0IHByb2Nlc3NlZFRleHQgPSB0ZXh0O1xuXG4gICAgLy8gMS4gUHJvY2VzYXIgZW5sYWNlcyBlc3RpbG8gTWFya2Rvd24gW3RleHRvXSh1cmwpIHByaW1lcm9cbiAgICBpZiAocHJvY2Vzc01hcmtkb3duTGlua3MpIHtcbiAgICAgIC8vIC8vIFVzYXIgZXhlYyBlbiBidWNsZSAoY29tcGF0aWJsZSBjb24gRVMyMDE4KVxuICAgICAgLy8gY29uc3QgbWFya2Rvd25NYXRjaGVzOiBSZWdFeHBFeGVjQXJyYXlbXSA9IFtdO1xuICAgICAgLy8gdGhpcy5tYXJrZG93bkxpbmtSZWdleC5sYXN0SW5kZXggPSAwO1xuICAgICAgLy8gbGV0IG1kTWF0Y2g6IFJlZ0V4cEV4ZWNBcnJheSB8IG51bGw7XG4gICAgICAvLyB3aGlsZSAoKG1kTWF0Y2ggPSB0aGlzLm1hcmtkb3duTGlua1JlZ2V4LmV4ZWMocHJvY2Vzc2VkVGV4dCkpICE9PSBudWxsKSB7XG4gICAgICAvLyAgIG1hcmtkb3duTWF0Y2hlcy5wdXNoKG1kTWF0Y2gpO1xuICAgICAgLy8gfVxuXG4gICAgICAvLyBQcm9jZXNhciBkZSBhdHLDoXMgaGFjaWEgYWRlbGFudGUgcGFyYSBtYW50ZW5lciBsYXMgcG9zaWNpb25lc1xuICAgICAgLy8gZm9yIChsZXQgaSA9IG1hcmtkb3duTWF0Y2hlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgLy8gICBjb25zdCBtYXRjaCA9IG1hcmtkb3duTWF0Y2hlc1tpXTtcbiAgICAgIC8vICAgY29uc3QgW2Z1bGxNYXRjaCwgbGlua1RleHQsIHVybF0gPSBtYXRjaDtcbiAgICAgIC8vICAgY29uc3Qgc3RhcnRJbmRleCA9IG1hdGNoLmluZGV4ITtcbiAgICAgIC8vICAgY29uc3QgZW5kSW5kZXggPSBzdGFydEluZGV4ICsgZnVsbE1hdGNoLmxlbmd0aDtcblxuICAgICAgLy8gICBoYXNMaW5rcyA9IHRydWU7XG4gICAgICAvLyAgIGNvbnN0IGlzRXh0ZXJuYWwgPSAvXmh0dHBzPzpcXC9cXC8vLnRlc3QodXJsKTtcbiAgICAgIC8vICAgY29uc3QgdGFyZ2V0ID0gKGlzRXh0ZXJuYWwgPyBvcGVuRXh0ZXJuYWxJbk5ld1RhYiA6IG9wZW5JbnRlcm5hbEluTmV3VGFiKVxuICAgICAgLy8gICAgID8gaXNFeHRlcm5hbFxuICAgICAgLy8gICAgICAgPyAnIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIidcbiAgICAgIC8vICAgICAgIDogJyB0YXJnZXQ9XCJfYmxhbmtcIidcbiAgICAgIC8vICAgICA6ICcnO1xuICAgICAgLy8gICBjb25zdCB0eXBlQ2xhc3MgPSBpc0V4dGVybmFsID8gZXh0ZXJuYWxMaW5rQ2xhc3MgOiBpbnRlcm5hbExpbmtDbGFzcztcbiAgICAgIC8vICAgY29uc3QgY2xhc3NlcyA9IGAke2xpbmtDbGFzc30gJHt0eXBlQ2xhc3N9YC50cmltKCk7XG4gICAgICAvLyAgIGNvbnN0IGxpbmtIdG1sID0gYDxhIGhyZWY9XCIke3VybH1cIiR7dGFyZ2V0fSBjbGFzcz1cIiR7Y2xhc3Nlc31cIj4ke2xpbmtUZXh0fTwvYT5gO1xuXG4gICAgICAvLyAgIHByb2Nlc3NlZFRleHQgPVxuICAgICAgLy8gICAgIHByb2Nlc3NlZFRleHQuc3Vic3RyaW5nKDAsIHN0YXJ0SW5kZXgpICsgbGlua0h0bWwgKyBwcm9jZXNzZWRUZXh0LnN1YnN0cmluZyhlbmRJbmRleCk7XG4gICAgICAvLyB9XG4gICAgfVxuXG4gICAgLy8gMi4gUHJvY2VzYXIgVVJMcyBleHRlcm5hcyBkaXJlY3Rhc1xuICAgIC8vIFVzYXIgZXhlYyBlbiBidWNsZSAoY29tcGF0aWJsZSBjb24gRVMyMDE4KVxuICAgIGNvbnN0IHVybE1hdGNoZXM6IFJlZ0V4cEV4ZWNBcnJheVtdID0gW107XG4gICAgdGhpcy51cmxSZWdleC5sYXN0SW5kZXggPSAwO1xuICAgIGxldCB1cmxNYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbDtcbiAgICB3aGlsZSAoKHVybE1hdGNoID0gdGhpcy51cmxSZWdleC5leGVjKHByb2Nlc3NlZFRleHQpKSAhPT0gbnVsbCkge1xuICAgICAgdXJsTWF0Y2hlcy5wdXNoKHVybE1hdGNoKTtcbiAgICB9XG5cbiAgICAvLyBQcm9jZXNhciBkZSBhdHLDoXMgaGFjaWEgYWRlbGFudGUgcGFyYSBtYW50ZW5lciBsYXMgcG9zaWNpb25lc1xuICAgIGZvciAobGV0IGkgPSB1cmxNYXRjaGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjb25zdCBtYXRjaCA9IHVybE1hdGNoZXNbaV07XG4gICAgICBjb25zdCBbZnVsbE1hdGNoLCB1cmxdID0gbWF0Y2g7XG4gICAgICBjb25zdCBzdGFydEluZGV4ID0gbWF0Y2guaW5kZXghO1xuICAgICAgY29uc3QgZW5kSW5kZXggPSBzdGFydEluZGV4ICsgZnVsbE1hdGNoLmxlbmd0aDtcblxuICAgICAgLy8gVmVyaWZpY2FyIHF1ZSBubyBlc3TDqSB5YSBkZW50cm8gZGUgdW4gZW5sYWNlIEhUTUwgZXhpc3RlbnRlXG4gICAgICBjb25zdCB0ZXh0QmVmb3JlID0gcHJvY2Vzc2VkVGV4dC5zdWJzdHJpbmcoMCwgc3RhcnRJbmRleCk7XG4gICAgICBjb25zdCBsYXN0T3BlblRhZyA9IHRleHRCZWZvcmUubGFzdEluZGV4T2YoJzxhICcpO1xuICAgICAgY29uc3QgbGFzdENsb3NlVGFnID0gdGV4dEJlZm9yZS5sYXN0SW5kZXhPZignPC9hPicpO1xuXG4gICAgICAvLyBTaSBoYXkgdW4gdGFnIDxhIGFiaWVydG8gc2luIGNlcnJhciwgbm8gcHJvY2VzYW1vc1xuICAgICAgaWYgKGxhc3RPcGVuVGFnID4gbGFzdENsb3NlVGFnKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBMaW1waWFyIHB1bnR1YWNpw7NuIGRlbCBmaW5hbCBkZSBsYSBVUkxcbiAgICAgIGNvbnN0IGNsZWFuVXJsID0gdGhpcy5jbGVhblVybFB1bmN0dWF0aW9uKHVybCk7XG4gICAgICBjb25zdCBwdW5jdHVhdGlvblJlbW92ZWQgPSB1cmwgIT09IGNsZWFuVXJsO1xuICAgICAgY29uc3QgcHVuY3R1YXRpb24gPSBwdW5jdHVhdGlvblJlbW92ZWQgPyB1cmwuc3Vic3RyaW5nKGNsZWFuVXJsLmxlbmd0aCkgOiAnJztcblxuICAgICAgaGFzTGlua3MgPSB0cnVlO1xuICAgICAgY29uc3QgdGFyZ2V0ID0gb3BlbkV4dGVybmFsSW5OZXdUYWIgPyAnIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIicgOiAnJztcbiAgICAgIGNvbnN0IGNsYXNzZXMgPSBgJHtsaW5rQ2xhc3N9ICR7ZXh0ZXJuYWxMaW5rQ2xhc3N9YC50cmltKCk7XG4gICAgICBjb25zdCBsaW5rSHRtbCA9IGA8YSBocmVmPVwiJHtjbGVhblVybH1cIiR7dGFyZ2V0fSBjbGFzcz1cIiR7Y2xhc3Nlc31cIj4ke2NsZWFuVXJsfTwvYT5gO1xuXG4gICAgICAvLyBSZWVtcGxhemFyIGVsIFVSTCBvcmlnaW5hbCBjb24gZWwgZW5sYWNlICsgcHVudHVhY2nDs24gc2kgZXhpc3TDrWFcbiAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gcHVuY3R1YXRpb25SZW1vdmVkID8gbGlua0h0bWwgKyBwdW5jdHVhdGlvbiA6IGxpbmtIdG1sO1xuICAgICAgcHJvY2Vzc2VkVGV4dCA9XG4gICAgICAgIHByb2Nlc3NlZFRleHQuc3Vic3RyaW5nKDAsIHN0YXJ0SW5kZXgpICsgcmVwbGFjZW1lbnQgKyBwcm9jZXNzZWRUZXh0LnN1YnN0cmluZyhlbmRJbmRleCk7XG4gICAgfVxuXG4gICAgLy8gMy4gUHJvY2VzYXIgcnV0YXMgaW50ZXJuYXNcbiAgICAvLyAvLyBVc2FyIGV4ZWMgZW4gYnVjbGUgKGNvbXBhdGlibGUgY29uIEVTMjAxOClcbiAgICAvLyBjb25zdCBpbnRlcm5hbE1hdGNoZXM6IFJlZ0V4cEV4ZWNBcnJheVtdID0gW107XG4gICAgLy8gdGhpcy5pbnRlcm5hbFJvdXRlUmVnZXgubGFzdEluZGV4ID0gMDtcbiAgICAvLyBsZXQgaW50ZXJuYWxNYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbDtcbiAgICAvLyB3aGlsZSAoKGludGVybmFsTWF0Y2ggPSB0aGlzLmludGVybmFsUm91dGVSZWdleC5leGVjKHByb2Nlc3NlZFRleHQpKSAhPT0gbnVsbCkge1xuICAgIC8vICAgaW50ZXJuYWxNYXRjaGVzLnB1c2goaW50ZXJuYWxNYXRjaCk7XG4gICAgLy8gfVxuXG4gICAgLy8gUHJvY2VzYXIgZGUgYXRyw6FzIGhhY2lhIGFkZWxhbnRlIHBhcmEgbWFudGVuZXIgbGFzIHBvc2ljaW9uZXNcbiAgICAvLyBmb3IgKGxldCBpID0gaW50ZXJuYWxNYXRjaGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgLy8gICBjb25zdCBtYXRjaCA9IGludGVybmFsTWF0Y2hlc1tpXTtcbiAgICAvLyAgIGNvbnN0IFtmdWxsTWF0Y2gsIHByZWZpeCwgcm91dGVdID0gbWF0Y2g7XG4gICAgLy8gICBjb25zdCBzdGFydEluZGV4ID0gbWF0Y2guaW5kZXghO1xuICAgIC8vICAgY29uc3QgZW5kSW5kZXggPSBzdGFydEluZGV4ICsgZnVsbE1hdGNoLmxlbmd0aDtcblxuICAgIC8vICAgLy8gVmVyaWZpY2FyIHF1ZSBubyBlc3TDqSB5YSBkZW50cm8gZGUgdW4gZW5sYWNlIEhUTUwgZXhpc3RlbnRlXG4gICAgLy8gICBjb25zdCB0ZXh0QmVmb3JlID0gcHJvY2Vzc2VkVGV4dC5zdWJzdHJpbmcoMCwgc3RhcnRJbmRleCk7XG4gICAgLy8gICBjb25zdCBsYXN0T3BlblRhZyA9IHRleHRCZWZvcmUubGFzdEluZGV4T2YoJzxhICcpO1xuICAgIC8vICAgY29uc3QgbGFzdENsb3NlVGFnID0gdGV4dEJlZm9yZS5sYXN0SW5kZXhPZignPC9hPicpO1xuXG4gICAgLy8gICAvLyBTaSBoYXkgdW4gdGFnIDxhIGFiaWVydG8gc2luIGNlcnJhciwgbm8gcHJvY2VzYW1vc1xuICAgIC8vICAgaWYgKGxhc3RPcGVuVGFnID4gbGFzdENsb3NlVGFnKSB7XG4gICAgLy8gICAgIGNvbnRpbnVlO1xuICAgIC8vICAgfVxuXG4gICAgLy8gICBoYXNMaW5rcyA9IHRydWU7XG4gICAgLy8gICBjb25zdCB0YXJnZXQgPSBvcGVuSW50ZXJuYWxJbk5ld1RhYiA/ICcgdGFyZ2V0PVwiX2JsYW5rXCInIDogJyc7XG4gICAgLy8gICBjb25zdCBjbGFzc2VzID0gYCR7bGlua0NsYXNzfSAke2ludGVybmFsTGlua0NsYXNzfWAudHJpbSgpO1xuICAgIC8vICAgY29uc3QgbGlua0h0bWwgPSBgPGEgaHJlZj1cIiR7cm91dGV9XCIke3RhcmdldH0gY2xhc3M9XCIke2NsYXNzZXN9XCI+JHtyb3V0ZX08L2E+YDtcblxuICAgIC8vICAgY29uc3QgcmVwbGFjZW1lbnQgPSBgJHtwcmVmaXh9JHtsaW5rSHRtbH1gO1xuICAgIC8vICAgcHJvY2Vzc2VkVGV4dCA9XG4gICAgLy8gICAgIHByb2Nlc3NlZFRleHQuc3Vic3RyaW5nKDAsIHN0YXJ0SW5kZXgpICsgcmVwbGFjZW1lbnQgKyBwcm9jZXNzZWRUZXh0LnN1YnN0cmluZyhlbmRJbmRleCk7XG4gICAgLy8gfVxuXG4gICAgLy8gU2kgaGF5IGVubGFjZXMsIHNhbml0aXphciBlbCBIVE1MXG4gICAgaWYgKGhhc0xpbmtzKSB7XG4gICAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwocHJvY2Vzc2VkVGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRleHQ7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZWN0YSBzaSB1biB0ZXh0byBjb250aWVuZSBlbmxhY2VzIChVUkxzLCBydXRhcyBpbnRlcm5hcyBvIGVubGFjZXMgTWFya2Rvd24pLlxuICAgKlxuICAgKiBAcGFyYW0gdGV4dCAtIFRleHRvIGEgYW5hbGl6YXJcbiAgICogQHJldHVybnMgdHJ1ZSBzaSBjb250aWVuZSBlbmxhY2VzXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgaGFzTGlua3MgPSB0aGlzLmxpbmtQcm9jZXNzb3IuaGFzTGlua3MoJ1Zpc2l0IGh0dHBzOi8vZXhhbXBsZS5jb20gb3IgW2RvY3NdKGh0dHBzOi8vZG9jcy5jb20pJyk7XG4gICAqIC8vIFJldHVybnM6IHRydWVcbiAgICogYGBgXG4gICAqL1xuICBoYXNMaW5rcyh0ZXh0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIXRleHQpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIFJlc2V0IHJlZ2V4IGluZGljZXNcbiAgICB0aGlzLnVybFJlZ2V4Lmxhc3RJbmRleCA9IDA7XG4gICAgdGhpcy5pbnRlcm5hbFJvdXRlUmVnZXgubGFzdEluZGV4ID0gMDtcbiAgICB0aGlzLm1hcmtkb3duTGlua1JlZ2V4Lmxhc3RJbmRleCA9IDA7XG5cbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy51cmxSZWdleC50ZXN0KHRleHQpIHx8XG4gICAgICB0aGlzLmludGVybmFsUm91dGVSZWdleC50ZXN0KHRleHQpIHx8XG4gICAgICB0aGlzLm1hcmtkb3duTGlua1JlZ2V4LnRlc3QodGV4dClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhZSB0b2RvcyBsb3MgZW5sYWNlcyBkZSB1biB0ZXh0by5cbiAgICpcbiAgICogQHBhcmFtIHRleHQgLSBUZXh0byBhIGFuYWxpemFyXG4gICAqIEByZXR1cm5zIEFycmF5IGRlIGVubGFjZXMgZW5jb250cmFkb3MgY29uIHN1IHRpcG8geSB0ZXh0byAoc2kgZXMgTWFya2Rvd24pXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgbGlua3MgPSB0aGlzLmxpbmtQcm9jZXNzb3IuZXh0cmFjdExpbmtzKCdWaXNpdCBodHRwczovL2V4YW1wbGUuY29tLCAvcHJvZmlsZSwgb3IgW2RvY3NdKGh0dHBzOi8vZG9jcy5jb20pJyk7XG4gICAqIC8vIFJldHVybnM6IFtcbiAgICogLy8gICB7IHVybDogJ2h0dHBzOi8vZXhhbXBsZS5jb20nLCB0eXBlOiAnZXh0ZXJuYWwnLCB0ZXh0OiAnaHR0cHM6Ly9leGFtcGxlLmNvbScgfSxcbiAgICogLy8gICB7IHVybDogJy9wcm9maWxlJywgdHlwZTogJ2ludGVybmFsJywgdGV4dDogJy9wcm9maWxlJyB9LFxuICAgKiAvLyAgIHsgdXJsOiAnaHR0cHM6Ly9kb2NzLmNvbScsIHR5cGU6ICdleHRlcm5hbCcsIHRleHQ6ICdkb2NzJyB9XG4gICAqIC8vIF1cbiAgICogYGBgXG4gICAqL1xuICBleHRyYWN0TGlua3ModGV4dDogc3RyaW5nKTogQXJyYXk8eyB1cmw6IHN0cmluZzsgdHlwZTogJ2V4dGVybmFsJyB8ICdpbnRlcm5hbCc7IHRleHQ6IHN0cmluZyB9PiB7XG4gICAgaWYgKCF0ZXh0KSByZXR1cm4gW107XG5cbiAgICBjb25zdCBsaW5rczogQXJyYXk8eyB1cmw6IHN0cmluZzsgdHlwZTogJ2V4dGVybmFsJyB8ICdpbnRlcm5hbCc7IHRleHQ6IHN0cmluZyB9PiA9IFtdO1xuXG4gICAgLy8gUmVzZXQgcmVnZXggaW5kaWNlc1xuICAgIHRoaXMudXJsUmVnZXgubGFzdEluZGV4ID0gMDtcbiAgICB0aGlzLmludGVybmFsUm91dGVSZWdleC5sYXN0SW5kZXggPSAwO1xuICAgIHRoaXMubWFya2Rvd25MaW5rUmVnZXgubGFzdEluZGV4ID0gMDtcblxuICAgIC8vIEV4dHJhZXIgZW5sYWNlcyBNYXJrZG93biBwcmltZXJvXG4gICAgbGV0IG1hdGNoO1xuICAgIHdoaWxlICgobWF0Y2ggPSB0aGlzLm1hcmtkb3duTGlua1JlZ2V4LmV4ZWModGV4dCkpICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB1cmwgPSBtYXRjaFsyXTtcbiAgICAgIGNvbnN0IGxpbmtUZXh0ID0gbWF0Y2hbMV07XG4gICAgICBjb25zdCB0eXBlID0gL15odHRwcz86XFwvXFwvLy50ZXN0KHVybCkgPyAnZXh0ZXJuYWwnIDogJ2ludGVybmFsJztcbiAgICAgIGxpbmtzLnB1c2goeyB1cmwsIHR5cGUsIHRleHQ6IGxpbmtUZXh0IH0pO1xuICAgIH1cblxuICAgIC8vIEV4dHJhZXIgVVJMcyBleHRlcm5hcyBkaXJlY3Rhc1xuICAgIHdoaWxlICgobWF0Y2ggPSB0aGlzLnVybFJlZ2V4LmV4ZWModGV4dCkpICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB1cmwgPSBtYXRjaFsxXTtcbiAgICAgIC8vIFZlcmlmaWNhciBxdWUgbm8gZXN0w6kgeWEgY2FwdHVyYWRvIGNvbW8gTWFya2Rvd24gbGlua1xuICAgICAgaWYgKCFsaW5rcy5zb21lKGxpbmsgPT4gbGluay51cmwgPT09IHVybCkpIHtcbiAgICAgICAgbGlua3MucHVzaCh7IHVybCwgdHlwZTogJ2V4dGVybmFsJywgdGV4dDogdXJsIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEV4dHJhZXIgcnV0YXMgaW50ZXJuYXMgZGlyZWN0YXNcbiAgICB3aGlsZSAoKG1hdGNoID0gdGhpcy5pbnRlcm5hbFJvdXRlUmVnZXguZXhlYyh0ZXh0KSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHVybCA9IG1hdGNoWzJdO1xuICAgICAgLy8gVmVyaWZpY2FyIHF1ZSBubyBlc3TDqSB5YSBjYXB0dXJhZG8gY29tbyBNYXJrZG93biBsaW5rXG4gICAgICBpZiAoIWxpbmtzLnNvbWUobGluayA9PiBsaW5rLnVybCA9PT0gdXJsKSkge1xuICAgICAgICBsaW5rcy5wdXNoKHsgdXJsLCB0eXBlOiAnaW50ZXJuYWwnLCB0ZXh0OiB1cmwgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpbmtzO1xuICB9XG59XG4iXX0=
259
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1wcm9jZXNzb3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvbGluay1wcm9jZXNzb3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFrQjNDOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBSUgsTUFBTSxPQUFPLG9CQUFvQjtJQVUvQixZQUFvQixTQUF1QjtRQUF2QixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBVDNDLHFHQUFxRztRQUNwRixhQUFRLEdBQUcsc0JBQXNCLENBQUM7UUFFbkQseUZBQXlGO1FBQ3hFLHVCQUFrQixHQUFHLG1CQUFtQixDQUFDO1FBRTFELDJEQUEyRDtRQUMxQyxzQkFBaUIsR0FBRywwQkFBMEIsQ0FBQztJQUVsQixDQUFDO0lBRS9DOzs7O09BSUc7SUFDSyxtQkFBbUIsQ0FBQyxHQUFXO1FBQ3JDLG9GQUFvRjtRQUNwRixvRkFBb0Y7UUFDcEYsTUFBTSxtQkFBbUIsR0FBRyxZQUFZLENBQUM7UUFFekMsMEZBQTBGO1FBQzFGLG9EQUFvRDtRQUNwRCxNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUvQyxJQUFJLG9CQUFvQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDN0MsNERBQTREO1lBQzVELEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FvQkc7SUFDSCxZ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TUFBTTs7NEZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuZXhwb3J0IGludGVyZmFjZSBMaW5rUHJvY2Vzc29yQ29uZmlnIHtcbiAgLyoqIFdoZXRoZXIgdG8gb3BlbiBleHRlcm5hbCBsaW5rcyBpbiBuZXcgdGFiIChkZWZhdWx0OiB0cnVlKSAqL1xuICBvcGVuRXh0ZXJuYWxJbk5ld1RhYj86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRvIG9wZW4gaW50ZXJuYWwgbGlua3MgaW4gbmV3IHRhYiAoZGVmYXVsdDogZmFsc2UpICovXG4gIG9wZW5JbnRlcm5hbEluTmV3VGFiPzogYm9vbGVhbjtcbiAgLyoqIEN1c3RvbSBDU1MgY2xhc3NlcyBmb3IgbGlua3MgKi9cbiAgbGlua0NsYXNzPzogc3RyaW5nO1xuICAvKiogQ3VzdG9tIENTUyBjbGFzc2VzIGZvciBleHRlcm5hbCBsaW5rcyAqL1xuICBleHRlcm5hbExpbmtDbGFzcz86IHN0cmluZztcbiAgLyoqIEN1c3RvbSBDU1MgY2xhc3NlcyBmb3IgaW50ZXJuYWwgbGlua3MgKi9cbiAgaW50ZXJuYWxMaW5rQ2xhc3M/OiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRvIHByb2Nlc3MgTWFya2Rvd24tc3R5bGUgbGlua3MgW3RleHRdKHVybCkgKGRlZmF1bHQ6IHRydWUpICovXG4gIHByb2Nlc3NNYXJrZG93bkxpbmtzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBMaW5rUHJvY2Vzc29yU2VydmljZSAtIFNlcnZpY2UgZm9yIHByb2Nlc3NpbmcgdGV4dCBjb250ZW50IHRvIGNvbnZlcnQgVVJMcyBhbmQgaW50ZXJuYWwgcm91dGVzIGludG8gY2xpY2thYmxlIGxpbmtzLlxuICpcbiAqIFRoaXMgc2VydmljZSBhdXRvbWF0aWNhbGx5IGRldGVjdHMgZXh0ZXJuYWwgVVJMcyAoaHR0cC9odHRwcyksIGludGVybmFsIHJvdXRlcyAoc3RhcnRpbmcgd2l0aCAvKSxcbiAqIGFuZCBNYXJrZG93bi1zdHlsZSBsaW5rcyBbdGV4dF0odXJsKSBhbmQgY29udmVydHMgdGhlbSBpbnRvIEhUTUwgYW5jaG9yIGVsZW1lbnRzIHdpdGggYXBwcm9wcmlhdGUgYXR0cmlidXRlcy5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0cnVjdG9yKHByaXZhdGUgbGlua1Byb2Nlc3NvcjogTGlua1Byb2Nlc3NvclNlcnZpY2UpIHt9XG4gKlxuICogcHJvY2Vzc1RleHQoKSB7XG4gKiAgIGNvbnN0IHRleHQgPSAnVmlzaXQgaHR0cHM6Ly9leGFtcGxlLmNvbSwgZ28gdG8gL3Byb2ZpbGUsIG9yIFtjaGVjayBkb2NzXShodHRwczovL2RvY3MuZXhhbXBsZS5jb20pJztcbiAqICAgY29uc3QgcHJvY2Vzc2VkID0gdGhpcy5saW5rUHJvY2Vzc29yLnByb2Nlc3NMaW5rcyh0ZXh0KTtcbiAqICAgLy8gUmV0dXJucyBTYWZlSHRtbCB3aXRoIGNsaWNrYWJsZSBsaW5rc1xuICogfVxuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBMaW5rUHJvY2Vzc29yU2VydmljZSB7XG4gIC8vIFJlZ2V4IHBhcmEgZGV0ZWN0YXIgVVJMcyBjb21wbGV0YXMgKGh0dHAvaHR0cHMpIC0gY2FwdHVyYSB0b2RhIGxhIFVSTCB5IGx1ZWdvIGxpbXBpYW1vcyBwdW50dWFjacOzblxuICBwcml2YXRlIHJlYWRvbmx5IHVybFJlZ2V4ID0gLyhodHRwcz86XFwvXFwvW15cXHNdKykvZztcblxuICAvLyBSZWdleCBwYXJhIGRldGVjdGFyIHJ1dGFzIGludGVybmFzIC0gY2FwdHVyYSB0b2RhIGxhIHJ1dGEgeSBsdWVnbyBsaW1waWFtb3MgcHVudHVhY2nDs25cbiAgcHJpdmF0ZSByZWFkb25seSBpbnRlcm5hbFJvdXRlUmVnZXggPSAvKFxcc3xeKShcXC9bXlxcc10qKS9nO1xuXG4gIC8vIFJlZ2V4IHBhcmEgZGV0ZWN0YXIgZW5sYWNlcyBlc3RpbG8gTWFya2Rvd24gW3RleHRvXSh1cmwpXG4gIHByaXZhdGUgcmVhZG9ubHkgbWFya2Rvd25MaW5rUmVnZXggPSAvXFxbKFteXFxdXSspXFxdXFwoKFteKV0rKVxcKS9nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHt9XG5cbiAgLyoqXG4gICAqIExpbXBpYSBsYSBwdW50dWFjacOzbiBkZWwgZmluYWwgZGUgdW5hIFVSTC5cbiAgICogTWFudGllbmUgY2FyYWN0ZXJlcyB2w6FsaWRvcyBkZSBVUkwgcGVybyByZW11ZXZlIHNpZ25vcyBkZSBwdW50dWFjacOzbiBjb211bmVzIGFsIGZpbmFsLlxuICAgKiBQcmVzZXJ2YSBwYXLDoW1ldHJvcyBkZSBjb25zdWx0YSwgZnJhZ21lbnRvcyB5IGNhcmFjdGVyZXMgdsOhbGlkb3MgZW4gVVJMcy5cbiAgICovXG4gIHByaXZhdGUgY2xlYW5VcmxQdW5jdHVhdGlvbih1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gQ2FyYWN0ZXJlcyBxdWUgY29uc2lkZXJhbW9zIHB1bnR1YWNpw7NuIGFsIGZpbmFsIGRlIG9yYWNpw7NuLCBwZXJvIE5PIHBhcnRlIGRlIFVSTHNcbiAgICAvLyBObyBpbmNsdWltb3MgJiBvID0gcXVlIHNvbiBwYXJ0ZSBkZSBxdWVyeSBwYXJhbXMsIG5pICMgcXVlIGVzIHBhcnRlIGRlIGZyYWdtZW50b3NcbiAgICBjb25zdCB0cmFpbGluZ1B1bmN0dWF0aW9uID0gL1suLDshPyldKyQvO1xuXG4gICAgLy8gQ2Fzb3MgZXNwZWNpYWxlczogc2kgbGEgVVJMIHRlcm1pbmEgY29uIHBhcsOpbnRlc2lzIHBlcm8gbm8gdGllbmUgcGFyw6ludGVzaXMgZGUgYXBlcnR1cmFcbiAgICAvLyBwcm9iYWJsZW1lbnRlIGVsIHBhcsOpbnRlc2lzIG5vIGVzIHBhcnRlIGRlIGxhIFVSTFxuICAgIGNvbnN0IGhhc09wZW5pbmdQYXJlbiA9IHVybC5pbmNsdWRlcygnKCcpO1xuICAgIGNvbnN0IGVuZHNXaXRoQ2xvc2luZ1BhcmVuID0gdXJsLmVuZHNXaXRoKCcpJyk7XG5cbiAgICBpZiAoZW5kc1dpdGhDbG9zaW5nUGFyZW4gJiYgIWhhc09wZW5pbmdQYXJlbikge1xuICAgICAgLy8gUmVtb3ZlciBlbCBwYXLDqW50ZXNpcyBkZSBjaWVycmUgc2kgbm8gaGF5IHVubyBkZSBhcGVydHVyYVxuICAgICAgdXJsID0gdXJsLnJlcGxhY2UoL1xcKSQvLCAnJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVybC5yZXBsYWNlKHRyYWlsaW5nUHVuY3R1YXRpb24sICcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNhIHRleHRvIHBhcmEgY29udmVydGlyIGVubGFjZXMgZW4gZWxlbWVudG9zIDxhPiBjbGlja2VhYmxlcy5cbiAgICogRGV0ZWN0YSBhdXRvbcOhdGljYW1lbnRlIFVSTHMgZXh0ZXJuYXMsIHJ1dGFzIGludGVybmFzIHkgZW5sYWNlcyBlc3RpbG8gTWFya2Rvd24uXG4gICAqXG4gICAqIEBwYXJhbSB0ZXh0IC0gVGV4dG8gYSBwcm9jZXNhclxuICAgKiBAcGFyYW0gY29uZmlnIC0gQ29uZmlndXJhY2nDs24gZGVsIHByb2Nlc2FtaWVudG9cbiAgICogQHJldHVybnMgU2FmZUh0bWwgY29uIGVubGFjZXMgcHJvY2VzYWRvcyBvIHN0cmluZyBvcmlnaW5hbFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHJlc3VsdCA9IHRoaXMubGlua1Byb2Nlc3Nvci5wcm9jZXNzTGlua3MoXG4gICAqICAgJ1Zpc2l0IGh0dHBzOi8vZXhhbXBsZS5jb20sIGdvIHRvIC9wcm9maWxlLCBvciBbY2hlY2sgZG9jc10oaHR0cHM6Ly9kb2NzLmV4YW1wbGUuY29tKScsXG4gICAqICAge1xuICAgKiAgICAgb3BlbkV4dGVybmFsSW5OZXdUYWI6IHRydWUsXG4gICAqICAgICBvcGVuSW50ZXJuYWxJbk5ld1RhYjogZmFsc2UsXG4gICAqICAgICBwcm9jZXNzTWFya2Rvd25MaW5rczogdHJ1ZSxcbiAgICogICAgIGxpbmtDbGFzczogJ2N1c3RvbS1saW5rJ1xuICAgKiAgIH1cbiAgICogKTtcbiAgICogYGBgXG4gICAqL1xuICBwcm9jZXNzTGlua3ModGV4dDogc3RyaW5nLCBjb25maWc6IExpbmtQcm9jZXNzb3JDb25maWcgPSB7fSk6IFNhZmVIdG1sIHwgc3RyaW5nIHtcbiAgICBpZiAoIXRleHQpIHJldHVybiAnJztcblxuICAgIGNvbnN0IHtcbiAgICAgIG9wZW5FeHRlcm5hbEluTmV3VGFiID0gdHJ1ZSxcbiAgICAgIG9wZW5JbnRlcm5hbEluTmV3VGFiID0gZmFsc2UsXG4gICAgICBsaW5rQ2xhc3MgPSAncHJvY2Vzc2VkLWxpbmsnLFxuICAgICAgZXh0ZXJuYWxMaW5rQ2xhc3MgPSAnZXh0ZXJuYWwtbGluaycsXG4gICAgICBpbnRlcm5hbExpbmtDbGFzcyA9ICdpbnRlcm5hbC1saW5rJyxcbiAgICAgIHByb2Nlc3NNYXJrZG93bkxpbmtzID0gdHJ1ZSxcbiAgICB9ID0gY29uZmlnO1xuXG4gICAgbGV0IGhhc0xpbmtzID0gZmFsc2U7XG4gICAgbGV0IHByb2Nlc3NlZFRleHQgPSB0ZXh0O1xuXG4gICAgLy8gMS4gUHJvY2VzYXIgZW5sYWNlcyBlc3RpbG8gTWFya2Rvd24gW3RleHRvXSh1cmwpIHByaW1lcm9cbiAgICBpZiAocHJvY2Vzc01hcmtkb3duTGlua3MpIHtcbiAgICAgIC8vIFVzYXIgZXhlYyBlbiBidWNsZSAoY29tcGF0aWJsZSBjb24gRVMyMDE4KVxuICAgICAgY29uc3QgbWFya2Rvd25NYXRjaGVzOiBSZWdFeHBFeGVjQXJyYXlbXSA9IFtdO1xuICAgICAgdGhpcy5tYXJrZG93bkxpbmtSZWdleC5sYXN0SW5kZXggPSAwO1xuICAgICAgbGV0IG1kTWF0Y2g6IFJlZ0V4cEV4ZWNBcnJheSB8IG51bGw7XG4gICAgICB3aGlsZSAoKG1kTWF0Y2ggPSB0aGlzLm1hcmtkb3duTGlua1JlZ2V4LmV4ZWMocHJvY2Vzc2VkVGV4dCkpICE9PSBudWxsKSB7XG4gICAgICAgIG1hcmtkb3duTWF0Y2hlcy5wdXNoKG1kTWF0Y2gpO1xuICAgICAgfVxuXG4gICAgICAvLyBQcm9jZXNhciBkZSBhdHLDoXMgaGFjaWEgYWRlbGFudGUgcGFyYSBtYW50ZW5lciBsYXMgcG9zaWNpb25lc1xuICAgICAgZm9yIChsZXQgaSA9IG1hcmtkb3duTWF0Y2hlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBjb25zdCBtYXRjaCA9IG1hcmtkb3duTWF0Y2hlc1tpXTtcbiAgICAgICAgY29uc3QgW2Z1bGxNYXRjaCwgbGlua1RleHQsIHVybF0gPSBtYXRjaDtcbiAgICAgICAgY29uc3Qgc3RhcnRJbmRleCA9IG1hdGNoLmluZGV4ITtcbiAgICAgICAgY29uc3QgZW5kSW5kZXggPSBzdGFydEluZGV4ICsgZnVsbE1hdGNoLmxlbmd0aDtcblxuICAgICAgICBoYXNMaW5rcyA9IHRydWU7XG4gICAgICAgIGNvbnN0IGlzRXh0ZXJuYWwgPSAvXmh0dHBzPzpcXC9cXC8vLnRlc3QodXJsKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gKGlzRXh0ZXJuYWwgPyBvcGVuRXh0ZXJuYWxJbk5ld1RhYiA6IG9wZW5JbnRlcm5hbEluTmV3VGFiKVxuICAgICAgICAgID8gaXNFeHRlcm5hbFxuICAgICAgICAgICAgPyAnIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIidcbiAgICAgICAgICAgIDogJyB0YXJnZXQ9XCJfYmxhbmtcIidcbiAgICAgICAgICA6ICcnO1xuICAgICAgICBjb25zdCB0eXBlQ2xhc3MgPSBpc0V4dGVybmFsID8gZXh0ZXJuYWxMaW5rQ2xhc3MgOiBpbnRlcm5hbExpbmtDbGFzcztcbiAgICAgICAgY29uc3QgY2xhc3NlcyA9IGAke2xpbmtDbGFzc30gJHt0eXBlQ2xhc3N9YC50cmltKCk7XG4gICAgICAgIGNvbnN0IGxpbmtIdG1sID0gYDxhIGhyZWY9XCIke3VybH1cIiR7dGFyZ2V0fSBjbGFzcz1cIiR7Y2xhc3Nlc31cIj4ke2xpbmtUZXh0fTwvYT5gO1xuXG4gICAgICAgIHByb2Nlc3NlZFRleHQgPVxuICAgICAgICAgIHByb2Nlc3NlZFRleHQuc3Vic3RyaW5nKDAsIHN0YXJ0SW5kZXgpICsgbGlua0h0bWwgKyBwcm9jZXNzZWRUZXh0LnN1YnN0cmluZyhlbmRJbmRleCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gMi4gUHJvY2VzYXIgVVJMcyBleHRlcm5hcyBkaXJlY3Rhc1xuICAgIC8vIFVzYXIgZXhlYyBlbiBidWNsZSAoY29tcGF0aWJsZSBjb24gRVMyMDE4KVxuICAgIGNvbnN0IHVybE1hdGNoZXM6IFJlZ0V4cEV4ZWNBcnJheVtdID0gW107XG4gICAgdGhpcy51cmxSZWdleC5sYXN0SW5kZXggPSAwO1xuICAgIGxldCB1cmxNYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbDtcbiAgICB3aGlsZSAoKHVybE1hdGNoID0gdGhpcy51cmxSZWdleC5leGVjKHByb2Nlc3NlZFRleHQpKSAhPT0gbnVsbCkge1xuICAgICAgdXJsTWF0Y2hlcy5wdXNoKHVybE1hdGNoKTtcbiAgICB9XG5cbiAgICAvLyBQcm9jZXNhciBkZSBhdHLDoXMgaGFjaWEgYWRlbGFudGUgcGFyYSBtYW50ZW5lciBsYXMgcG9zaWNpb25lc1xuICAgIGZvciAobGV0IGkgPSB1cmxNYXRjaGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjb25zdCBtYXRjaCA9IHVybE1hdGNoZXNbaV07XG4gICAgICBjb25zdCBbZnVsbE1hdGNoLCB1cmxdID0gbWF0Y2g7XG4gICAgICBjb25zdCBzdGFydEluZGV4ID0gbWF0Y2guaW5kZXghO1xuICAgICAgY29uc3QgZW5kSW5kZXggPSBzdGFydEluZGV4ICsgZnVsbE1hdGNoLmxlbmd0aDtcblxuICAgICAgLy8gVmVyaWZpY2FyIHF1ZSBubyBlc3TDqSB5YSBkZW50cm8gZGUgdW4gZW5sYWNlIEhUTUwgZXhpc3RlbnRlXG4gICAgICBjb25zdCB0ZXh0QmVmb3JlID0gcHJvY2Vzc2VkVGV4dC5zdWJzdHJpbmcoMCwgc3RhcnRJbmRleCk7XG4gICAgICBjb25zdCBsYXN0T3BlblRhZyA9IHRleHRCZWZvcmUubGFzdEluZGV4T2YoJzxhICcpO1xuICAgICAgY29uc3QgbGFzdENsb3NlVGFnID0gdGV4dEJlZm9yZS5sYXN0SW5kZXhPZignPC9hPicpO1xuXG4gICAgICAvLyBTaSBoYXkgdW4gdGFnIDxhIGFiaWVydG8gc2luIGNlcnJhciwgbm8gcHJvY2VzYW1vc1xuICAgICAgaWYgKGxhc3RPcGVuVGFnID4gbGFzdENsb3NlVGFnKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBMaW1waWFyIHB1bnR1YWNpw7NuIGRlbCBmaW5hbCBkZSBsYSBVUkxcbiAgICAgIGNvbnN0IGNsZWFuVXJsID0gdGhpcy5jbGVhblVybFB1bmN0dWF0aW9uKHVybCk7XG4gICAgICBjb25zdCBwdW5jdHVhdGlvblJlbW92ZWQgPSB1cmwgIT09IGNsZWFuVXJsO1xuICAgICAgY29uc3QgcHVuY3R1YXRpb24gPSBwdW5jdHVhdGlvblJlbW92ZWQgPyB1cmwuc3Vic3RyaW5nKGNsZWFuVXJsLmxlbmd0aCkgOiAnJztcblxuICAgICAgaGFzTGlua3MgPSB0cnVlO1xuICAgICAgY29uc3QgdGFyZ2V0ID0gb3BlbkV4dGVybmFsSW5OZXdUYWIgPyAnIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIicgOiAnJztcbiAgICAgIGNvbnN0IGNsYXNzZXMgPSBgJHtsaW5rQ2xhc3N9ICR7ZXh0ZXJuYWxMaW5rQ2xhc3N9YC50cmltKCk7XG4gICAgICBjb25zdCBsaW5rSHRtbCA9IGA8YSBocmVmPVwiJHtjbGVhblVybH1cIiR7dGFyZ2V0fSBjbGFzcz1cIiR7Y2xhc3Nlc31cIj4ke2NsZWFuVXJsfTwvYT5gO1xuXG4gICAgICAvLyBSZWVtcGxhemFyIGVsIFVSTCBvcmlnaW5hbCBjb24gZWwgZW5sYWNlICsgcHVudHVhY2nDs24gc2kgZXhpc3TDrWFcbiAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gcHVuY3R1YXRpb25SZW1vdmVkID8gbGlua0h0bWwgKyBwdW5jdHVhdGlvbiA6IGxpbmtIdG1sO1xuICAgICAgcHJvY2Vzc2VkVGV4dCA9XG4gICAgICAgIHByb2Nlc3NlZFRleHQuc3Vic3RyaW5nKDAsIHN0YXJ0SW5kZXgpICsgcmVwbGFjZW1lbnQgKyBwcm9jZXNzZWRUZXh0LnN1YnN0cmluZyhlbmRJbmRleCk7XG4gICAgfVxuXG4gICAgLy8gMy4gUHJvY2VzYXIgcnV0YXMgaW50ZXJuYXNcbiAgICAvLyBVc2FyIGV4ZWMgZW4gYnVjbGUgKGNvbXBhdGlibGUgY29uIEVTMjAxOClcbiAgICBjb25zdCBpbnRlcm5hbE1hdGNoZXM6IFJlZ0V4cEV4ZWNBcnJheVtdID0gW107XG4gICAgdGhpcy5pbnRlcm5hbFJvdXRlUmVnZXgubGFzdEluZGV4ID0gMDtcbiAgICBsZXQgaW50ZXJuYWxNYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbDtcbiAgICB3aGlsZSAoKGludGVybmFsTWF0Y2ggPSB0aGlzLmludGVybmFsUm91dGVSZWdleC5leGVjKHByb2Nlc3NlZFRleHQpKSAhPT0gbnVsbCkge1xuICAgICAgaW50ZXJuYWxNYXRjaGVzLnB1c2goaW50ZXJuYWxNYXRjaCk7XG4gICAgfVxuXG4gICAgLy8gUHJvY2VzYXIgZGUgYXRyw6FzIGhhY2lhIGFkZWxhbnRlIHBhcmEgbWFudGVuZXIgbGFzIHBvc2ljaW9uZXNcbiAgICBmb3IgKGxldCBpID0gaW50ZXJuYWxNYXRjaGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjb25zdCBtYXRjaCA9IGludGVybmFsTWF0Y2hlc1tpXTtcbiAgICAgIGNvbnN0IFtmdWxsTWF0Y2gsIHByZWZpeCwgcm91dGVdID0gbWF0Y2g7XG4gICAgICBjb25zdCBzdGFydEluZGV4ID0gbWF0Y2guaW5kZXghO1xuICAgICAgY29uc3QgZW5kSW5kZXggPSBzdGFydEluZGV4ICsgZnVsbE1hdGNoLmxlbmd0aDtcblxuICAgICAgLy8gVmVyaWZpY2FyIHF1ZSBubyBlc3TDqSB5YSBkZW50cm8gZGUgdW4gZW5sYWNlIEhUTUwgZXhpc3RlbnRlXG4gICAgICBjb25zdCB0ZXh0QmVmb3JlID0gcHJvY2Vzc2VkVGV4dC5zdWJzdHJpbmcoMCwgc3RhcnRJbmRleCk7XG4gICAgICBjb25zdCBsYXN0T3BlblRhZyA9IHRleHRCZWZvcmUubGFzdEluZGV4T2YoJzxhICcpO1xuICAgICAgY29uc3QgbGFzdENsb3NlVGFnID0gdGV4dEJlZm9yZS5sYXN0SW5kZXhPZignPC9hPicpO1xuXG4gICAgICAvLyBTaSBoYXkgdW4gdGFnIDxhIGFiaWVydG8gc2luIGNlcnJhciwgbm8gcHJvY2VzYW1vc1xuICAgICAgaWYgKGxhc3RPcGVuVGFnID4gbGFzdENsb3NlVGFnKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBoYXNMaW5rcyA9IHRydWU7XG4gICAgICBjb25zdCB0YXJnZXQgPSBvcGVuSW50ZXJuYWxJbk5ld1RhYiA/ICcgdGFyZ2V0PVwiX2JsYW5rXCInIDogJyc7XG4gICAgICBjb25zdCBjbGFzc2VzID0gYCR7bGlua0NsYXNzfSAke2ludGVybmFsTGlua0NsYXNzfWAudHJpbSgpO1xuICAgICAgY29uc3QgbGlua0h0bWwgPSBgPGEgaHJlZj1cIiR7cm91dGV9XCIke3RhcmdldH0gY2xhc3M9XCIke2NsYXNzZXN9XCI+JHtyb3V0ZX08L2E+YDtcblxuICAgICAgY29uc3QgcmVwbGFjZW1lbnQgPSBgJHtwcmVmaXh9JHtsaW5rSHRtbH1gO1xuICAgICAgcHJvY2Vzc2VkVGV4dCA9XG4gICAgICAgIHByb2Nlc3NlZFRleHQuc3Vic3RyaW5nKDAsIHN0YXJ0SW5kZXgpICsgcmVwbGFjZW1lbnQgKyBwcm9jZXNzZWRUZXh0LnN1YnN0cmluZyhlbmRJbmRleCk7XG4gICAgfVxuXG4gICAgLy8gU2kgaGF5IGVubGFjZXMsIHNhbml0aXphciBlbCBIVE1MXG4gICAgaWYgKGhhc0xpbmtzKSB7XG4gICAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwocHJvY2Vzc2VkVGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRleHQ7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZWN0YSBzaSB1biB0ZXh0byBjb250aWVuZSBlbmxhY2VzIChVUkxzLCBydXRhcyBpbnRlcm5hcyBvIGVubGFjZXMgTWFya2Rvd24pLlxuICAgKlxuICAgKiBAcGFyYW0gdGV4dCAtIFRleHRvIGEgYW5hbGl6YXJcbiAgICogQHJldHVybnMgdHJ1ZSBzaSBjb250aWVuZSBlbmxhY2VzXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgaGFzTGlua3MgPSB0aGlzLmxpbmtQcm9jZXNzb3IuaGFzTGlua3MoJ1Zpc2l0IGh0dHBzOi8vZXhhbXBsZS5jb20gb3IgW2RvY3NdKGh0dHBzOi8vZG9jcy5jb20pJyk7XG4gICAqIC8vIFJldHVybnM6IHRydWVcbiAgICogYGBgXG4gICAqL1xuICBoYXNMaW5rcyh0ZXh0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIXRleHQpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIFJlc2V0IHJlZ2V4IGluZGljZXNcbiAgICB0aGlzLnVybFJlZ2V4Lmxhc3RJbmRleCA9IDA7XG4gICAgdGhpcy5pbnRlcm5hbFJvdXRlUmVnZXgubGFzdEluZGV4ID0gMDtcbiAgICB0aGlzLm1hcmtkb3duTGlua1JlZ2V4Lmxhc3RJbmRleCA9IDA7XG5cbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy51cmxSZWdleC50ZXN0KHRleHQpIHx8XG4gICAgICB0aGlzLmludGVybmFsUm91dGVSZWdleC50ZXN0KHRleHQpIHx8XG4gICAgICB0aGlzLm1hcmtkb3duTGlua1JlZ2V4LnRlc3QodGV4dClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhZSB0b2RvcyBsb3MgZW5sYWNlcyBkZSB1biB0ZXh0by5cbiAgICpcbiAgICogQHBhcmFtIHRleHQgLSBUZXh0byBhIGFuYWxpemFyXG4gICAqIEByZXR1cm5zIEFycmF5IGRlIGVubGFjZXMgZW5jb250cmFkb3MgY29uIHN1IHRpcG8geSB0ZXh0byAoc2kgZXMgTWFya2Rvd24pXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgbGlua3MgPSB0aGlzLmxpbmtQcm9jZXNzb3IuZXh0cmFjdExpbmtzKCdWaXNpdCBodHRwczovL2V4YW1wbGUuY29tLCAvcHJvZmlsZSwgb3IgW2RvY3NdKGh0dHBzOi8vZG9jcy5jb20pJyk7XG4gICAqIC8vIFJldHVybnM6IFtcbiAgICogLy8gICB7IHVybDogJ2h0dHBzOi8vZXhhbXBsZS5jb20nLCB0eXBlOiAnZXh0ZXJuYWwnLCB0ZXh0OiAnaHR0cHM6Ly9leGFtcGxlLmNvbScgfSxcbiAgICogLy8gICB7IHVybDogJy9wcm9maWxlJywgdHlwZTogJ2ludGVybmFsJywgdGV4dDogJy9wcm9maWxlJyB9LFxuICAgKiAvLyAgIHsgdXJsOiAnaHR0cHM6Ly9kb2NzLmNvbScsIHR5cGU6ICdleHRlcm5hbCcsIHRleHQ6ICdkb2NzJyB9XG4gICAqIC8vIF1cbiAgICogYGBgXG4gICAqL1xuICBleHRyYWN0TGlua3ModGV4dDogc3RyaW5nKTogQXJyYXk8eyB1cmw6IHN0cmluZzsgdHlwZTogJ2V4dGVybmFsJyB8ICdpbnRlcm5hbCc7IHRleHQ6IHN0cmluZyB9PiB7XG4gICAgaWYgKCF0ZXh0KSByZXR1cm4gW107XG5cbiAgICBjb25zdCBsaW5rczogQXJyYXk8eyB1cmw6IHN0cmluZzsgdHlwZTogJ2V4dGVybmFsJyB8ICdpbnRlcm5hbCc7IHRleHQ6IHN0cmluZyB9PiA9IFtdO1xuXG4gICAgLy8gUmVzZXQgcmVnZXggaW5kaWNlc1xuICAgIHRoaXMudXJsUmVnZXgubGFzdEluZGV4ID0gMDtcbiAgICB0aGlzLmludGVybmFsUm91dGVSZWdleC5sYXN0SW5kZXggPSAwO1xuICAgIHRoaXMubWFya2Rvd25MaW5rUmVnZXgubGFzdEluZGV4ID0gMDtcblxuICAgIC8vIEV4dHJhZXIgZW5sYWNlcyBNYXJrZG93biBwcmltZXJvXG4gICAgbGV0IG1hdGNoO1xuICAgIHdoaWxlICgobWF0Y2ggPSB0aGlzLm1hcmtkb3duTGlua1JlZ2V4LmV4ZWModGV4dCkpICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB1cmwgPSBtYXRjaFsyXTtcbiAgICAgIGNvbnN0IGxpbmtUZXh0ID0gbWF0Y2hbMV07XG4gICAgICBjb25zdCB0eXBlID0gL15odHRwcz86XFwvXFwvLy50ZXN0KHVybCkgPyAnZXh0ZXJuYWwnIDogJ2ludGVybmFsJztcbiAgICAgIGxpbmtzLnB1c2goeyB1cmwsIHR5cGUsIHRleHQ6IGxpbmtUZXh0IH0pO1xuICAgIH1cblxuICAgIC8vIEV4dHJhZXIgVVJMcyBleHRlcm5hcyBkaXJlY3Rhc1xuICAgIHdoaWxlICgobWF0Y2ggPSB0aGlzLnVybFJlZ2V4LmV4ZWModGV4dCkpICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB1cmwgPSBtYXRjaFsxXTtcbiAgICAgIC8vIFZlcmlmaWNhciBxdWUgbm8gZXN0w6kgeWEgY2FwdHVyYWRvIGNvbW8gTWFya2Rvd24gbGlua1xuICAgICAgaWYgKCFsaW5rcy5zb21lKGxpbmsgPT4gbGluay51cmwgPT09IHVybCkpIHtcbiAgICAgICAgbGlua3MucHVzaCh7IHVybCwgdHlwZTogJ2V4dGVybmFsJywgdGV4dDogdXJsIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEV4dHJhZXIgcnV0YXMgaW50ZXJuYXMgZGlyZWN0YXNcbiAgICB3aGlsZSAoKG1hdGNoID0gdGhpcy5pbnRlcm5hbFJvdXRlUmVnZXguZXhlYyh0ZXh0KSkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHVybCA9IG1hdGNoWzJdO1xuICAgICAgLy8gVmVyaWZpY2FyIHF1ZSBubyBlc3TDqSB5YSBjYXB0dXJhZG8gY29tbyBNYXJrZG93biBsaW5rXG4gICAgICBpZiAoIWxpbmtzLnNvbWUobGluayA9PiBsaW5rLnVybCA9PT0gdXJsKSkge1xuICAgICAgICBsaW5rcy5wdXNoKHsgdXJsLCB0eXBlOiAnaW50ZXJuYWwnLCB0ZXh0OiB1cmwgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpbmtzO1xuICB9XG59XG4iXX0=
@@ -1586,32 +1586,32 @@ class LinkProcessorService {
1586
1586
  let processedText = text;
1587
1587
  // 1. Procesar enlaces estilo Markdown [texto](url) primero
1588
1588
  if (processMarkdownLinks) {
1589
- // // Usar exec en bucle (compatible con ES2018)
1590
- // const markdownMatches: RegExpExecArray[] = [];
1591
- // this.markdownLinkRegex.lastIndex = 0;
1592
- // let mdMatch: RegExpExecArray | null;
1593
- // while ((mdMatch = this.markdownLinkRegex.exec(processedText)) !== null) {
1594
- // markdownMatches.push(mdMatch);
1595
- // }
1589
+ // Usar exec en bucle (compatible con ES2018)
1590
+ const markdownMatches = [];
1591
+ this.markdownLinkRegex.lastIndex = 0;
1592
+ let mdMatch;
1593
+ while ((mdMatch = this.markdownLinkRegex.exec(processedText)) !== null) {
1594
+ markdownMatches.push(mdMatch);
1595
+ }
1596
1596
  // Procesar de atrás hacia adelante para mantener las posiciones
1597
- // for (let i = markdownMatches.length - 1; i >= 0; i--) {
1598
- // const match = markdownMatches[i];
1599
- // const [fullMatch, linkText, url] = match;
1600
- // const startIndex = match.index!;
1601
- // const endIndex = startIndex + fullMatch.length;
1602
- // hasLinks = true;
1603
- // const isExternal = /^https?:\/\//.test(url);
1604
- // const target = (isExternal ? openExternalInNewTab : openInternalInNewTab)
1605
- // ? isExternal
1606
- // ? ' target="_blank" rel="noopener noreferrer"'
1607
- // : ' target="_blank"'
1608
- // : '';
1609
- // const typeClass = isExternal ? externalLinkClass : internalLinkClass;
1610
- // const classes = `${linkClass} ${typeClass}`.trim();
1611
- // const linkHtml = `<a href="${url}"${target} class="${classes}">${linkText}</a>`;
1612
- // processedText =
1613
- // processedText.substring(0, startIndex) + linkHtml + processedText.substring(endIndex);
1614
- // }
1597
+ for (let i = markdownMatches.length - 1; i >= 0; i--) {
1598
+ const match = markdownMatches[i];
1599
+ const [fullMatch, linkText, url] = match;
1600
+ const startIndex = match.index;
1601
+ const endIndex = startIndex + fullMatch.length;
1602
+ hasLinks = true;
1603
+ const isExternal = /^https?:\/\//.test(url);
1604
+ const target = (isExternal ? openExternalInNewTab : openInternalInNewTab)
1605
+ ? isExternal
1606
+ ? ' target="_blank" rel="noopener noreferrer"'
1607
+ : ' target="_blank"'
1608
+ : '';
1609
+ const typeClass = isExternal ? externalLinkClass : internalLinkClass;
1610
+ const classes = `${linkClass} ${typeClass}`.trim();
1611
+ const linkHtml = `<a href="${url}"${target} class="${classes}">${linkText}</a>`;
1612
+ processedText =
1613
+ processedText.substring(0, startIndex) + linkHtml + processedText.substring(endIndex);
1614
+ }
1615
1615
  }
1616
1616
  // 2. Procesar URLs externas directas
1617
1617
  // Usar exec en bucle (compatible con ES2018)
@@ -1649,35 +1649,35 @@ class LinkProcessorService {
1649
1649
  processedText.substring(0, startIndex) + replacement + processedText.substring(endIndex);
1650
1650
  }
1651
1651
  // 3. Procesar rutas internas
1652
- // // Usar exec en bucle (compatible con ES2018)
1653
- // const internalMatches: RegExpExecArray[] = [];
1654
- // this.internalRouteRegex.lastIndex = 0;
1655
- // let internalMatch: RegExpExecArray | null;
1656
- // while ((internalMatch = this.internalRouteRegex.exec(processedText)) !== null) {
1657
- // internalMatches.push(internalMatch);
1658
- // }
1652
+ // Usar exec en bucle (compatible con ES2018)
1653
+ const internalMatches = [];
1654
+ this.internalRouteRegex.lastIndex = 0;
1655
+ let internalMatch;
1656
+ while ((internalMatch = this.internalRouteRegex.exec(processedText)) !== null) {
1657
+ internalMatches.push(internalMatch);
1658
+ }
1659
1659
  // Procesar de atrás hacia adelante para mantener las posiciones
1660
- // for (let i = internalMatches.length - 1; i >= 0; i--) {
1661
- // const match = internalMatches[i];
1662
- // const [fullMatch, prefix, route] = match;
1663
- // const startIndex = match.index!;
1664
- // const endIndex = startIndex + fullMatch.length;
1665
- // // Verificar que no esté ya dentro de un enlace HTML existente
1666
- // const textBefore = processedText.substring(0, startIndex);
1667
- // const lastOpenTag = textBefore.lastIndexOf('<a ');
1668
- // const lastCloseTag = textBefore.lastIndexOf('</a>');
1669
- // // Si hay un tag <a abierto sin cerrar, no procesamos
1670
- // if (lastOpenTag > lastCloseTag) {
1671
- // continue;
1672
- // }
1673
- // hasLinks = true;
1674
- // const target = openInternalInNewTab ? ' target="_blank"' : '';
1675
- // const classes = `${linkClass} ${internalLinkClass}`.trim();
1676
- // const linkHtml = `<a href="${route}"${target} class="${classes}">${route}</a>`;
1677
- // const replacement = `${prefix}${linkHtml}`;
1678
- // processedText =
1679
- // processedText.substring(0, startIndex) + replacement + processedText.substring(endIndex);
1680
- // }
1660
+ for (let i = internalMatches.length - 1; i >= 0; i--) {
1661
+ const match = internalMatches[i];
1662
+ const [fullMatch, prefix, route] = match;
1663
+ const startIndex = match.index;
1664
+ const endIndex = startIndex + fullMatch.length;
1665
+ // Verificar que no esté ya dentro de un enlace HTML existente
1666
+ const textBefore = processedText.substring(0, startIndex);
1667
+ const lastOpenTag = textBefore.lastIndexOf('<a ');
1668
+ const lastCloseTag = textBefore.lastIndexOf('</a>');
1669
+ // Si hay un tag <a abierto sin cerrar, no procesamos
1670
+ if (lastOpenTag > lastCloseTag) {
1671
+ continue;
1672
+ }
1673
+ hasLinks = true;
1674
+ const target = openInternalInNewTab ? ' target="_blank"' : '';
1675
+ const classes = `${linkClass} ${internalLinkClass}`.trim();
1676
+ const linkHtml = `<a href="${route}"${target} class="${classes}">${route}</a>`;
1677
+ const replacement = `${prefix}${linkHtml}`;
1678
+ processedText =
1679
+ processedText.substring(0, startIndex) + replacement + processedText.substring(endIndex);
1680
+ }
1681
1681
  // Si hay enlaces, sanitizar el HTML
1682
1682
  if (hasLinks) {
1683
1683
  return this.sanitizer.bypassSecurityTrustHtml(processedText);
@@ -6338,6 +6338,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
6338
6338
  type: Input
6339
6339
  }] } });
6340
6340
 
6341
+ /** Size configurations for PIN input boxes */
6342
+ const SIZE_CONFIG = {
6343
+ small: { width: '40px', height: '44px', fontSize: '24px' },
6344
+ medium: { width: '50px', height: '54px', fontSize: '28px' },
6345
+ large: { width: '58px', height: '60px', fontSize: '32px' },
6346
+ };
6341
6347
  /**
6342
6348
  * val-pin-input
6343
6349
  *
@@ -6353,9 +6359,9 @@ class PinInputComponent {
6353
6359
  this.codeLength = 5;
6354
6360
  this.otpInputConfig = {
6355
6361
  inputStyles: {
6356
- 'font-size': '32px',
6357
- width: '58px',
6358
- height: '60px',
6362
+ 'font-size': SIZE_CONFIG.medium.fontSize,
6363
+ width: SIZE_CONFIG.medium.width,
6364
+ height: SIZE_CONFIG.medium.height,
6359
6365
  },
6360
6366
  inputClass: 'otp-input-box',
6361
6367
  length: this.codeLength,
@@ -6365,10 +6371,19 @@ class PinInputComponent {
6365
6371
  ngOnInit() {
6366
6372
  // Usar props.length si se proporciona, sino mantener default 5
6367
6373
  const length = this.props.length ?? 5;
6374
+ // Usar props.size si se proporciona, sino mantener default 'medium'
6375
+ const size = this.props.size ?? 'medium';
6376
+ const sizeStyles = SIZE_CONFIG[size];
6368
6377
  this.otpInputConfig = {
6369
6378
  ...this.otpInputConfig,
6370
6379
  length,
6371
6380
  allowNumbersOnly: this.props.allowNumbersOnly ?? true,
6381
+ inputStyles: {
6382
+ 'font-size': sizeStyles.fontSize,
6383
+ width: sizeStyles.width,
6384
+ height: sizeStyles.height,
6385
+ ...this.props.inputStyles, // Allow custom overrides
6386
+ },
6372
6387
  };
6373
6388
  }
6374
6389
  reset() {
@@ -6381,7 +6396,7 @@ class PinInputComponent {
6381
6396
  <div class="otp">
6382
6397
  <ng-otp-input [formCtrl]="props.control" [config]="otpInputConfig"></ng-otp-input>
6383
6398
  </div>
6384
- `, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.otp{text-align:center;margin-top:.25rem;font-family:var(--ion-default-font),Arial,sans-serif}.otp-input-box:focus{border-color:#0ff}\n"], dependencies: [{ kind: "ngmodule", type: NgOtpInputModule }, { kind: "component", type: i1$4.NgOtpInputComponent, selector: "ng-otp-input", inputs: ["config", "formCtrl"], outputs: ["onInputChange"] }] }); }
6399
+ `, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.otp{text-align:center;margin-top:.25rem;font-family:var(--ion-default-font),Arial,sans-serif}@media (max-width: 480px){.otp ::ng-deep .otp-input{width:40px!important;height:44px!important;font-size:24px!important}}.otp-input-box:focus{border-color:#0ff}\n"], dependencies: [{ kind: "ngmodule", type: NgOtpInputModule }, { kind: "component", type: i1$4.NgOtpInputComponent, selector: "ng-otp-input", inputs: ["config", "formCtrl"], outputs: ["onInputChange"] }] }); }
6385
6400
  }
6386
6401
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PinInputComponent, decorators: [{
6387
6402
  type: Component,
@@ -6389,7 +6404,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
6389
6404
  <div class="otp">
6390
6405
  <ng-otp-input [formCtrl]="props.control" [config]="otpInputConfig"></ng-otp-input>
6391
6406
  </div>
6392
- `, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.otp{text-align:center;margin-top:.25rem;font-family:var(--ion-default-font),Arial,sans-serif}.otp-input-box:focus{border-color:#0ff}\n"] }]
6407
+ `, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.otp{text-align:center;margin-top:.25rem;font-family:var(--ion-default-font),Arial,sans-serif}@media (max-width: 480px){.otp ::ng-deep .otp-input{width:40px!important;height:44px!important;font-size:24px!important}}.otp-input-box:focus{border-color:#0ff}\n"] }]
6393
6408
  }], ctorParameters: () => [], propDecorators: { pinCode: [{
6394
6409
  type: ViewChild,
6395
6410
  args: [NgOtpInputComponent, { static: false }]