valtech-components 2.0.286 → 2.0.289

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/README.md +61 -21
  2. package/esm2022/lib/components/atoms/text/text.component.mjs +46 -10
  3. package/esm2022/lib/components/atoms/text/types.mjs +1 -1
  4. package/esm2022/lib/examples/custom-content-demo.component.mjs +291 -0
  5. package/esm2022/lib/examples/link-processing-example.component.mjs +189 -0
  6. package/esm2022/lib/services/lang-provider/content.mjs +1 -13
  7. package/esm2022/lib/services/link-processor.service.mjs +192 -0
  8. package/esm2022/lib/shared/pipes/process-links.pipe.mjs +69 -0
  9. package/esm2022/public-api.mjs +5 -4
  10. package/fesm2022/valtech-components.mjs +473 -919
  11. package/fesm2022/valtech-components.mjs.map +1 -1
  12. package/lib/components/atoms/text/text.component.d.ts +5 -1
  13. package/lib/components/atoms/text/types.d.ts +5 -0
  14. package/lib/examples/link-processing-example.component.d.ts +24 -0
  15. package/lib/services/link-processor.service.d.ts +98 -0
  16. package/lib/shared/pipes/process-links.pipe.d.ts +55 -0
  17. package/package.json +1 -1
  18. package/public-api.d.ts +4 -3
  19. package/esm2022/lib/components/_examples/custom-content-demo.component.mjs +0 -291
  20. package/esm2022/lib/components/_examples/global-content-example-content.mjs +0 -23
  21. package/esm2022/lib/components/_examples/global-content-example.component.mjs +0 -504
  22. package/esm2022/lib/components/_examples/reactive-content-example-content.mjs +0 -43
  23. package/esm2022/lib/components/_examples/reactive-content-example.component.mjs +0 -347
  24. package/esm2022/lib/services/lang-provider/components/theme-settings.mjs +0 -15
  25. package/lib/components/_examples/global-content-example-content.d.ts +0 -9
  26. package/lib/components/_examples/global-content-example.component.d.ts +0 -73
  27. package/lib/components/_examples/reactive-content-example-content.d.ts +0 -32
  28. package/lib/components/_examples/reactive-content-example.component.d.ts +0 -47
  29. package/lib/services/lang-provider/components/theme-settings.d.ts +0 -3
  30. /package/lib/{components/_examples → examples}/custom-content-demo.component.d.ts +0 -0
@@ -0,0 +1,291 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, inject } from '@angular/core';
3
+ import { IonButton, IonCard, IonCardContent, IonCardHeader, IonCardTitle, IonItem, IonLabel, } from '@ionic/angular/standalone';
4
+ import { ContentService } from '../services/content.service';
5
+ import { LangOption } from '../services/lang-provider/types';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common";
8
+ export class CustomContentDemoComponent {
9
+ constructor() {
10
+ this.content = inject(ContentService);
11
+ this.currentLang = 'es';
12
+ // Contenido global predefinido (sin className)
13
+ this.saveText$ = this.content.fromContent({ key: 'save' });
14
+ this.cancelText$ = this.content.fromContent({ key: 'cancel' });
15
+ this.deleteText$ = this.content.fromContent({ key: 'delete' });
16
+ this.loadingText$ = this.content.fromContent({ key: 'loading' });
17
+ // Tu contenido global personalizado (sin className)
18
+ this.dashboardText$ = this.content.fromContent({ key: 'dashboard' });
19
+ this.profileText$ = this.content.fromContent({ key: 'profile' });
20
+ this.settingsText$ = this.content.fromContent({ key: 'settings' });
21
+ this.welcomeText$ = this.content.fromContent({
22
+ key: 'welcome',
23
+ interpolation: { appName: 'Mi Aplicación' },
24
+ });
25
+ // Contenido específico del componente Language (con className)
26
+ this.spanishText$ = this.content.fromContent({
27
+ className: 'Language',
28
+ key: 'spanish',
29
+ });
30
+ this.englishText$ = this.content.fromContent({
31
+ className: 'Language',
32
+ key: 'english',
33
+ });
34
+ this.descriptionText$ = this.content.fromContent({
35
+ className: 'Language',
36
+ key: 'description',
37
+ });
38
+ // Para debug - texto síncrono
39
+ this.saveTextSync = '';
40
+ this.dashboardTextSync = '';
41
+ this.languageDescSync = '';
42
+ }
43
+ ngOnInit() {
44
+ // Obtener idioma actual
45
+ this.content.currentLang$.subscribe(lang => {
46
+ this.currentLang = lang;
47
+ });
48
+ // Obtener textos síncronos para debug
49
+ this.updateSyncTexts();
50
+ // 🔍 DIAGNÓSTICO: Verificar configuración
51
+ this.diagnoseConfiguration();
52
+ }
53
+ switchLanguage() {
54
+ const newLang = this.currentLang === 'es' ? LangOption.EN : LangOption.ES;
55
+ this.content.setLang(newLang);
56
+ // Actualizar textos síncronos después del cambio
57
+ setTimeout(() => {
58
+ this.updateSyncTexts();
59
+ }, 100);
60
+ }
61
+ updateSyncTexts() {
62
+ // Contenido global predefinido
63
+ this.saveTextSync = this.content.getText('save');
64
+ // Tu contenido global personalizado
65
+ this.dashboardTextSync = this.content.getText('dashboard');
66
+ // Contenido específico del componente - SOLUCIÓN TEMPORAL
67
+ // En lugar de usar getText, acceder directamente
68
+ try {
69
+ const langService = this.content.langService;
70
+ const languageContent = langService.content['Language'];
71
+ const currentLang = langService.selectedLang?.value || 'es';
72
+ const classContent = languageContent?.Content?.[currentLang];
73
+ this.languageDescSync = classContent?.['description'] || 'No encontrado';
74
+ }
75
+ catch (error) {
76
+ this.languageDescSync = `Error: ${error}`;
77
+ }
78
+ }
79
+ diagnoseConfiguration() {
80
+ console.log('=== DIAGNÓSTICO DE CONFIGURACIÓN ===');
81
+ // Verificar acceso directo al servicio
82
+ console.log('ContentService available:', !!this.content);
83
+ console.log('Current language:', this.content.currentLang);
84
+ // 🔍 Diagnóstico detallado del contenido Language
85
+ console.log('\n--- DIAGNÓSTICO DETALLADO LANGUAGE ---');
86
+ try {
87
+ // Acceder directamente al LangService
88
+ const langService = this.content.langService;
89
+ console.log('LangService available:', !!langService);
90
+ // Verificar si existe el contenido Language
91
+ const languageContent = langService.content['Language'];
92
+ console.log('Language content exists:', !!languageContent);
93
+ if (languageContent) {
94
+ console.log('Language content structure:', languageContent);
95
+ console.log('Language content.Content:', languageContent.Content);
96
+ // Verificar contenido en español
97
+ const esContent = languageContent.Content?.es;
98
+ console.log('ES content:', esContent);
99
+ console.log('ES description:', esContent?.description);
100
+ // Verificar contenido en inglés
101
+ const enContent = languageContent.Content?.en;
102
+ console.log('EN content:', enContent);
103
+ console.log('EN description:', enContent?.description);
104
+ }
105
+ // Verificar current lang
106
+ const currentLang = langService.selectedLang?.value;
107
+ console.log('Current selected language:', currentLang);
108
+ }
109
+ catch (error) {
110
+ console.log('❌ Error accessing LangService:', error);
111
+ }
112
+ // Intentar acceso síncrono a contenido global predefinido
113
+ try {
114
+ const saveText = this.content.getText('save');
115
+ console.log('✅ Global predefinido (save):', saveText);
116
+ }
117
+ catch (error) {
118
+ console.log('❌ Error global predefinido (save):', error);
119
+ }
120
+ // Intentar acceso síncrono a contenido global personalizado
121
+ try {
122
+ const dashboardText = this.content.getText('dashboard');
123
+ console.log('✅ Global personalizado (dashboard):', dashboardText);
124
+ }
125
+ catch (error) {
126
+ console.log('❌ Error global personalizado (dashboard):', error);
127
+ }
128
+ // Intentar acceso síncrono a contenido de componente
129
+ try {
130
+ const spanishText = this.content.getText('Language', 'spanish');
131
+ console.log('✅ Componente Language (spanish):', spanishText);
132
+ // 🔍 Debug paso a paso para spanish
133
+ const langService = this.content.langService;
134
+ const languageContent = langService.content['Language'];
135
+ const currentLang = langService.selectedLang?.value;
136
+ const classContent = languageContent?.Content[currentLang];
137
+ console.log('🔍 Debug spanish - currentLang:', currentLang);
138
+ console.log('🔍 Debug spanish - classContent:', classContent);
139
+ console.log('🔍 Debug spanish - classContent["spanish"]:', classContent?.['spanish']);
140
+ }
141
+ catch (error) {
142
+ console.log('❌ Error componente Language (spanish):', error);
143
+ }
144
+ // Intentar acceso síncrono a contenido de componente
145
+ try {
146
+ const descriptionText = this.content.getText('Language', 'description');
147
+ console.log('✅ Componente Language (description):', descriptionText);
148
+ // 🔍 Debug paso a paso para description
149
+ const langService = this.content.langService;
150
+ const languageContent = langService.content['Language'];
151
+ const currentLang = langService.selectedLang?.value;
152
+ const classContent = languageContent?.Content[currentLang];
153
+ console.log('🔍 Debug description - currentLang:', currentLang);
154
+ console.log('🔍 Debug description - classContent:', classContent);
155
+ console.log('🔍 Debug description - classContent["description"]:', classContent?.['description']);
156
+ }
157
+ catch (error) {
158
+ console.log('❌ Error componente Language (description):', error);
159
+ }
160
+ }
161
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomContentDemoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
162
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CustomContentDemoComponent, isStandalone: true, selector: "app-custom-content-demo", ngImport: i0, template: `
163
+ <ion-card>
164
+ <ion-card-header>
165
+ <ion-card-title>Demo de Contenido Personalizado</ion-card-title>
166
+ </ion-card-header>
167
+
168
+ <ion-card-content>
169
+ <!-- Contenido global predefinido -->
170
+ <div style="margin-bottom: 20px;">
171
+ <h3>Contenido Global Predefinido:</h3>
172
+ <ion-button>{{ saveText$ | async }}</ion-button>
173
+ <ion-button color="medium">{{ cancelText$ | async }}</ion-button>
174
+ <ion-button color="danger">{{ deleteText$ | async }}</ion-button>
175
+ <p><strong>Estado:</strong> {{ loadingText$ | async }}</p>
176
+ </div>
177
+
178
+ <!-- Tu contenido global personalizado -->
179
+ <div style="margin-bottom: 20px;">
180
+ <h3>Tu Contenido Global Personalizado:</h3>
181
+ <p><strong>Sección:</strong> {{ dashboardText$ | async }}</p>
182
+ <p><strong>Usuario:</strong> {{ profileText$ | async }}</p>
183
+ <p><strong>Config:</strong> {{ settingsText$ | async }}</p>
184
+ <p>{{ welcomeText$ | async }}</p>
185
+ </div>
186
+
187
+ <!-- Contenido específico del componente Language -->
188
+ <div style="margin-bottom: 20px;">
189
+ <h3>Contenido del Componente Language:</h3>
190
+ <ion-item>
191
+ <ion-label> <strong>Español:</strong> {{ spanishText$ | async }} </ion-label>
192
+ </ion-item>
193
+ <ion-item>
194
+ <ion-label> <strong>Inglés:</strong> {{ englishText$ | async }} </ion-label>
195
+ </ion-item>
196
+ <p>
197
+ <em>{{ descriptionText$ | async }}</em>
198
+ </p>
199
+ </div>
200
+
201
+ <!-- Botón para cambiar idioma -->
202
+ <div>
203
+ <h3>Control de Idioma:</h3>
204
+ <ion-button (click)="switchLanguage()" color="secondary">
205
+ Cambiar a {{ currentLang === 'es' ? 'English' : 'Español' }}
206
+ </ion-button>
207
+ <p>
208
+ <small>Idioma actual: {{ currentLang }}</small>
209
+ </p>
210
+ </div>
211
+
212
+ <!-- Debug info -->
213
+ <div style="margin-top: 20px; padding: 10px; background: #f5f5f5; border-radius: 4px;">
214
+ <h4>Debug Info:</h4>
215
+ <p><strong>Save (sync):</strong> {{ saveTextSync }}</p>
216
+ <p><strong>Dashboard (sync):</strong> {{ dashboardTextSync }}</p>
217
+ <p><strong>Language Description (sync):</strong> {{ languageDescSync }}</p>
218
+ </div>
219
+ </ion-card-content>
220
+ </ion-card>
221
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: IonCardTitle, selector: "ion-card-title", inputs: ["color", "mode"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }] }); }
222
+ }
223
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomContentDemoComponent, decorators: [{
224
+ type: Component,
225
+ args: [{
226
+ selector: 'app-custom-content-demo',
227
+ standalone: true,
228
+ imports: [CommonModule, IonCard, IonCardContent, IonCardHeader, IonCardTitle, IonButton, IonItem, IonLabel],
229
+ template: `
230
+ <ion-card>
231
+ <ion-card-header>
232
+ <ion-card-title>Demo de Contenido Personalizado</ion-card-title>
233
+ </ion-card-header>
234
+
235
+ <ion-card-content>
236
+ <!-- Contenido global predefinido -->
237
+ <div style="margin-bottom: 20px;">
238
+ <h3>Contenido Global Predefinido:</h3>
239
+ <ion-button>{{ saveText$ | async }}</ion-button>
240
+ <ion-button color="medium">{{ cancelText$ | async }}</ion-button>
241
+ <ion-button color="danger">{{ deleteText$ | async }}</ion-button>
242
+ <p><strong>Estado:</strong> {{ loadingText$ | async }}</p>
243
+ </div>
244
+
245
+ <!-- Tu contenido global personalizado -->
246
+ <div style="margin-bottom: 20px;">
247
+ <h3>Tu Contenido Global Personalizado:</h3>
248
+ <p><strong>Sección:</strong> {{ dashboardText$ | async }}</p>
249
+ <p><strong>Usuario:</strong> {{ profileText$ | async }}</p>
250
+ <p><strong>Config:</strong> {{ settingsText$ | async }}</p>
251
+ <p>{{ welcomeText$ | async }}</p>
252
+ </div>
253
+
254
+ <!-- Contenido específico del componente Language -->
255
+ <div style="margin-bottom: 20px;">
256
+ <h3>Contenido del Componente Language:</h3>
257
+ <ion-item>
258
+ <ion-label> <strong>Español:</strong> {{ spanishText$ | async }} </ion-label>
259
+ </ion-item>
260
+ <ion-item>
261
+ <ion-label> <strong>Inglés:</strong> {{ englishText$ | async }} </ion-label>
262
+ </ion-item>
263
+ <p>
264
+ <em>{{ descriptionText$ | async }}</em>
265
+ </p>
266
+ </div>
267
+
268
+ <!-- Botón para cambiar idioma -->
269
+ <div>
270
+ <h3>Control de Idioma:</h3>
271
+ <ion-button (click)="switchLanguage()" color="secondary">
272
+ Cambiar a {{ currentLang === 'es' ? 'English' : 'Español' }}
273
+ </ion-button>
274
+ <p>
275
+ <small>Idioma actual: {{ currentLang }}</small>
276
+ </p>
277
+ </div>
278
+
279
+ <!-- Debug info -->
280
+ <div style="margin-top: 20px; padding: 10px; background: #f5f5f5; border-radius: 4px;">
281
+ <h4>Debug Info:</h4>
282
+ <p><strong>Save (sync):</strong> {{ saveTextSync }}</p>
283
+ <p><strong>Dashboard (sync):</strong> {{ dashboardTextSync }}</p>
284
+ <p><strong>Language Description (sync):</strong> {{ languageDescSync }}</p>
285
+ </div>
286
+ </ion-card-content>
287
+ </ion-card>
288
+ `,
289
+ }]
290
+ }] });
291
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNvbnRlbnQtZGVtby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0ZWNoLWNvbXBvbmVudHMvc3JjL2xpYi9leGFtcGxlcy9jdXN0b20tY29udGVudC1kZW1vLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUNMLFNBQVMsRUFDVCxPQUFPLEVBQ1AsY0FBYyxFQUNkLGFBQWEsRUFDYixZQUFZLEVBQ1osT0FBTyxFQUNQLFFBQVEsR0FDVCxNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7OztBQW1FN0QsTUFBTSxPQUFPLDBCQUEwQjtJQWpFdkM7UUFrRVUsWUFBTyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUV6QyxnQkFBVyxHQUFHLElBQUksQ0FBQztRQUVuQiwrQ0FBK0M7UUFDL0MsY0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDdEQsZ0JBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzFELGdCQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMxRCxpQkFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsR0FBRyxF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QWEsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUM7b0JBQzNHLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyRFQ7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgSW9uQnV0dG9uLFxuICBJb25DYXJkLFxuICBJb25DYXJkQ29udGVudCxcbiAgSW9uQ2FyZEhlYWRlcixcbiAgSW9uQ2FyZFRpdGxlLFxuICBJb25JdGVtLFxuICBJb25MYWJlbCxcbn0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBDb250ZW50U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbnRlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBMYW5nT3B0aW9uIH0gZnJvbSAnLi4vc2VydmljZXMvbGFuZy1wcm92aWRlci90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jdXN0b20tY29udGVudC1kZW1vJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uQ2FyZCwgSW9uQ2FyZENvbnRlbnQsIElvbkNhcmRIZWFkZXIsIElvbkNhcmRUaXRsZSwgSW9uQnV0dG9uLCBJb25JdGVtLCBJb25MYWJlbF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi1jYXJkPlxuICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgPGlvbi1jYXJkLXRpdGxlPkRlbW8gZGUgQ29udGVuaWRvIFBlcnNvbmFsaXphZG88L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG5cbiAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICA8IS0tIENvbnRlbmlkbyBnbG9iYWwgcHJlZGVmaW5pZG8gLS0+XG4gICAgICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAyMHB4O1wiPlxuICAgICAgICAgIDxoMz5Db250ZW5pZG8gR2xvYmFsIFByZWRlZmluaWRvOjwvaDM+XG4gICAgICAgICAgPGlvbi1idXR0b24+e3sgc2F2ZVRleHQkIHwgYXN5bmMgfX08L2lvbi1idXR0b24+XG4gICAgICAgICAgPGlvbi1idXR0b24gY29sb3I9XCJtZWRpdW1cIj57eyBjYW5jZWxUZXh0JCB8IGFzeW5jIH19PC9pb24tYnV0dG9uPlxuICAgICAgICAgIDxpb24tYnV0dG9uIGNvbG9yPVwiZGFuZ2VyXCI+e3sgZGVsZXRlVGV4dCQgfCBhc3luYyB9fTwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICA8cD48c3Ryb25nPkVzdGFkbzo8L3N0cm9uZz4ge3sgbG9hZGluZ1RleHQkIHwgYXN5bmMgfX08L3A+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gVHUgY29udGVuaWRvIGdsb2JhbCBwZXJzb25hbGl6YWRvIC0tPlxuICAgICAgICA8ZGl2IHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMjBweDtcIj5cbiAgICAgICAgICA8aDM+VHUgQ29udGVuaWRvIEdsb2JhbCBQZXJzb25hbGl6YWRvOjwvaDM+XG4gICAgICAgICAgPHA+PHN0cm9uZz5TZWNjacOzbjo8L3N0cm9uZz4ge3sgZGFzaGJvYXJkVGV4dCQgfCBhc3luYyB9fTwvcD5cbiAgICAgICAgICA8cD48c3Ryb25nPlVzdWFyaW86PC9zdHJvbmc+IHt7IHByb2ZpbGVUZXh0JCB8IGFzeW5jIH19PC9wPlxuICAgICAgICAgIDxwPjxzdHJvbmc+Q29uZmlnOjwvc3Ryb25nPiB7eyBzZXR0aW5nc1RleHQkIHwgYXN5bmMgfX08L3A+XG4gICAgICAgICAgPHA+e3sgd2VsY29tZVRleHQkIHwgYXN5bmMgfX08L3A+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gQ29udGVuaWRvIGVzcGVjw61maWNvIGRlbCBjb21wb25lbnRlIExhbmd1YWdlIC0tPlxuICAgICAgICA8ZGl2IHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMjBweDtcIj5cbiAgICAgICAgICA8aDM+Q29udGVuaWRvIGRlbCBDb21wb25lbnRlIExhbmd1YWdlOjwvaDM+XG4gICAgICAgICAgPGlvbi1pdGVtPlxuICAgICAgICAgICAgPGlvbi1sYWJlbD4gPHN0cm9uZz5Fc3Bhw7FvbDo8L3N0cm9uZz4ge3sgc3BhbmlzaFRleHQkIHwgYXN5bmMgfX0gPC9pb24tbGFiZWw+XG4gICAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgICA8aW9uLWl0ZW0+XG4gICAgICAgICAgICA8aW9uLWxhYmVsPiA8c3Ryb25nPkluZ2zDqXM6PC9zdHJvbmc+IHt7IGVuZ2xpc2hUZXh0JCB8IGFzeW5jIH19IDwvaW9uLWxhYmVsPlxuICAgICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICAgICAgPHA+XG4gICAgICAgICAgICA8ZW0+e3sgZGVzY3JpcHRpb25UZXh0JCB8IGFzeW5jIH19PC9lbT5cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gQm90w7NuIHBhcmEgY2FtYmlhciBpZGlvbWEgLS0+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGgzPkNvbnRyb2wgZGUgSWRpb21hOjwvaDM+XG4gICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cInN3aXRjaExhbmd1YWdlKClcIiBjb2xvcj1cInNlY29uZGFyeVwiPlxuICAgICAgICAgICAgQ2FtYmlhciBhIHt7IGN1cnJlbnRMYW5nID09PSAnZXMnID8gJ0VuZ2xpc2gnIDogJ0VzcGHDsW9sJyB9fVxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICA8cD5cbiAgICAgICAgICAgIDxzbWFsbD5JZGlvbWEgYWN0dWFsOiB7eyBjdXJyZW50TGFuZyB9fTwvc21hbGw+XG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIERlYnVnIGluZm8gLS0+XG4gICAgICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOiAyMHB4OyBwYWRkaW5nOiAxMHB4OyBiYWNrZ3JvdW5kOiAjZjVmNWY1OyBib3JkZXItcmFkaXVzOiA0cHg7XCI+XG4gICAgICAgICAgPGg0PkRlYnVnIEluZm86PC9oND5cbiAgICAgICAgICA8cD48c3Ryb25nPlNhdmUgKHN5bmMpOjwvc3Ryb25nPiB7eyBzYXZlVGV4dFN5bmMgfX08L3A+XG4gICAgICAgICAgPHA+PHN0cm9uZz5EYXNoYm9hcmQgKHN5bmMpOjwvc3Ryb25nPiB7eyBkYXNoYm9hcmRUZXh0U3luYyB9fTwvcD5cbiAgICAgICAgICA8cD48c3Ryb25nPkxhbmd1YWdlIERlc2NyaXB0aW9uIChzeW5jKTo8L3N0cm9uZz4ge3sgbGFuZ3VhZ2VEZXNjU3luYyB9fTwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgPC9pb24tY2FyZD5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgQ3VzdG9tQ29udGVudERlbW9Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIGNvbnRlbnQgPSBpbmplY3QoQ29udGVudFNlcnZpY2UpO1xuXG4gIGN1cnJlbnRMYW5nID0gJ2VzJztcblxuICAvLyBDb250ZW5pZG8gZ2xvYmFsIHByZWRlZmluaWRvIChzaW4gY2xhc3NOYW1lKVxuICBzYXZlVGV4dCQgPSB0aGlzLmNvbnRlbnQuZnJvbUNvbnRlbnQoeyBrZXk6ICdzYXZlJyB9KTtcbiAgY2FuY2VsVGV4dCQgPSB0aGlzLmNvbnRlbnQuZnJvbUNvbnRlbnQoeyBrZXk6ICdjYW5jZWwnIH0pO1xuICBkZWxldGVUZXh0JCA9IHRoaXMuY29udGVudC5mcm9tQ29udGVudCh7IGtleTogJ2RlbGV0ZScgfSk7XG4gIGxvYWRpbmdUZXh0JCA9IHRoaXMuY29udGVudC5mcm9tQ29udGVudCh7IGtleTogJ2xvYWRpbmcnIH0pO1xuXG4gIC8vIFR1IGNvbnRlbmlkbyBnbG9iYWwgcGVyc29uYWxpemFkbyAoc2luIGNsYXNzTmFtZSlcbiAgZGFzaGJvYXJkVGV4dCQgPSB0aGlzLmNvbnRlbnQuZnJvbUNvbnRlbnQoeyBrZXk6ICdkYXNoYm9hcmQnIH0pO1xuICBwcm9maWxlVGV4dCQgPSB0aGlzLmNvbnRlbnQuZnJvbUNvbnRlbnQoeyBrZXk6ICdwcm9maWxlJyB9KTtcbiAgc2V0dGluZ3NUZXh0JCA9IHRoaXMuY29udGVudC5mcm9tQ29udGVudCh7IGtleTogJ3NldHRpbmdzJyB9KTtcbiAgd2VsY29tZVRleHQkID0gdGhpcy5jb250ZW50LmZyb21Db250ZW50KHtcbiAgICBrZXk6ICd3ZWxjb21lJyxcbiAgICBpbnRlcnBvbGF0aW9uOiB7IGFwcE5hbWU6ICdNaSBBcGxpY2FjacOzbicgfSxcbiAgfSk7XG5cbiAgLy8gQ29udGVuaWRvIGVzcGVjw61maWNvIGRlbCBjb21wb25lbnRlIExhbmd1YWdlIChjb24gY2xhc3NOYW1lKVxuICBzcGFuaXNoVGV4dCQgPSB0aGlzLmNvbnRlbnQuZnJvbUNvbnRlbnQoe1xuICAgIGNsYXNzTmFtZTogJ0xhbmd1YWdlJyxcbiAgICBrZXk6ICdzcGFuaXNoJyxcbiAgfSk7XG4gIGVuZ2xpc2hUZXh0JCA9IHRoaXMuY29udGVudC5mcm9tQ29udGVudCh7XG4gICAgY2xhc3NOYW1lOiAnTGFuZ3VhZ2UnLFxuICAgIGtleTogJ2VuZ2xpc2gnLFxuICB9KTtcbiAgZGVzY3JpcHRpb25UZXh0JCA9IHRoaXMuY29udGVudC5mcm9tQ29udGVudCh7XG4gICAgY2xhc3NOYW1lOiAnTGFuZ3VhZ2UnLFxuICAgIGtleTogJ2Rlc2NyaXB0aW9uJyxcbiAgfSk7XG5cbiAgLy8gUGFyYSBkZWJ1ZyAtIHRleHRvIHPDrW5jcm9ub1xuICBzYXZlVGV4dFN5bmMgPSAnJztcbiAgZGFzaGJvYXJkVGV4dFN5bmMgPSAnJztcbiAgbGFuZ3VhZ2VEZXNjU3luYyA9ICcnO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIE9idGVuZXIgaWRpb21hIGFjdHVhbFxuICAgIHRoaXMuY29udGVudC5jdXJyZW50TGFuZyQuc3Vic2NyaWJlKGxhbmcgPT4ge1xuICAgICAgdGhpcy5jdXJyZW50TGFuZyA9IGxhbmc7XG4gICAgfSk7XG5cbiAgICAvLyBPYnRlbmVyIHRleHRvcyBzw61uY3Jvbm9zIHBhcmEgZGVidWdcbiAgICB0aGlzLnVwZGF0ZVN5bmNUZXh0cygpO1xuXG4gICAgLy8g8J+UjSBESUFHTsOTU1RJQ086IFZlcmlmaWNhciBjb25maWd1cmFjacOzblxuICAgIHRoaXMuZGlhZ25vc2VDb25maWd1cmF0aW9uKCk7XG4gIH1cblxuICBzd2l0Y2hMYW5ndWFnZSgpIHtcbiAgICBjb25zdCBuZXdMYW5nID0gdGhpcy5jdXJyZW50TGFuZyA9PT0gJ2VzJyA/IExhbmdPcHRpb24uRU4gOiBMYW5nT3B0aW9uLkVTO1xuICAgIHRoaXMuY29udGVudC5zZXRMYW5nKG5ld0xhbmcpO1xuXG4gICAgLy8gQWN0dWFsaXphciB0ZXh0b3Mgc8OtbmNyb25vcyBkZXNwdcOpcyBkZWwgY2FtYmlvXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZVN5bmNUZXh0cygpO1xuICAgIH0sIDEwMCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVN5bmNUZXh0cygpIHtcbiAgICAvLyBDb250ZW5pZG8gZ2xvYmFsIHByZWRlZmluaWRvXG4gICAgdGhpcy5zYXZlVGV4dFN5bmMgPSB0aGlzLmNvbnRlbnQuZ2V0VGV4dCgnc2F2ZScpO1xuXG4gICAgLy8gVHUgY29udGVuaWRvIGdsb2JhbCBwZXJzb25hbGl6YWRvXG4gICAgdGhpcy5kYXNoYm9hcmRUZXh0U3luYyA9IHRoaXMuY29udGVudC5nZXRUZXh0KCdkYXNoYm9hcmQnKTtcblxuICAgIC8vIENvbnRlbmlkbyBlc3BlY8OtZmljbyBkZWwgY29tcG9uZW50ZSAtIFNPTFVDScOTTiBURU1QT1JBTFxuICAgIC8vIEVuIGx1Z2FyIGRlIHVzYXIgZ2V0VGV4dCwgYWNjZWRlciBkaXJlY3RhbWVudGVcbiAgICB0cnkge1xuICAgICAgY29uc3QgbGFuZ1NlcnZpY2UgPSAodGhpcy5jb250ZW50IGFzIGFueSkubGFuZ1NlcnZpY2U7XG4gICAgICBjb25zdCBsYW5ndWFnZUNvbnRlbnQgPSBsYW5nU2VydmljZS5jb250ZW50WydMYW5ndWFnZSddO1xuICAgICAgY29uc3QgY3VycmVudExhbmcgPSBsYW5nU2VydmljZS5zZWxlY3RlZExhbmc/LnZhbHVlIHx8ICdlcyc7XG4gICAgICBjb25zdCBjbGFzc0NvbnRlbnQgPSBsYW5ndWFnZUNvbnRlbnQ/LkNvbnRlbnQ/LltjdXJyZW50TGFuZ107XG4gICAgICB0aGlzLmxhbmd1YWdlRGVzY1N5bmMgPSBjbGFzc0NvbnRlbnQ/LlsnZGVzY3JpcHRpb24nXSB8fCAnTm8gZW5jb250cmFkbyc7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMubGFuZ3VhZ2VEZXNjU3luYyA9IGBFcnJvcjogJHtlcnJvcn1gO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGlhZ25vc2VDb25maWd1cmF0aW9uKCkge1xuICAgIGNvbnNvbGUubG9nKCc9PT0gRElBR07Dk1NUSUNPIERFIENPTkZJR1VSQUNJw5NOID09PScpO1xuXG4gICAgLy8gVmVyaWZpY2FyIGFjY2VzbyBkaXJlY3RvIGFsIHNlcnZpY2lvXG4gICAgY29uc29sZS5sb2coJ0NvbnRlbnRTZXJ2aWNlIGF2YWlsYWJsZTonLCAhIXRoaXMuY29udGVudCk7XG4gICAgY29uc29sZS5sb2coJ0N1cnJlbnQgbGFuZ3VhZ2U6JywgdGhpcy5jb250ZW50LmN1cnJlbnRMYW5nKTtcblxuICAgIC8vIPCflI0gRGlhZ27Ds3N0aWNvIGRldGFsbGFkbyBkZWwgY29udGVuaWRvIExhbmd1YWdlXG4gICAgY29uc29sZS5sb2coJ1xcbi0tLSBESUFHTsOTU1RJQ08gREVUQUxMQURPIExBTkdVQUdFIC0tLScpO1xuICAgIHRyeSB7XG4gICAgICAvLyBBY2NlZGVyIGRpcmVjdGFtZW50ZSBhbCBMYW5nU2VydmljZVxuICAgICAgY29uc3QgbGFuZ1NlcnZpY2UgPSAodGhpcy5jb250ZW50IGFzIGFueSkubGFuZ1NlcnZpY2U7XG4gICAgICBjb25zb2xlLmxvZygnTGFuZ1NlcnZpY2UgYXZhaWxhYmxlOicsICEhbGFuZ1NlcnZpY2UpO1xuXG4gICAgICAvLyBWZXJpZmljYXIgc2kgZXhpc3RlIGVsIGNvbnRlbmlkbyBMYW5ndWFnZVxuICAgICAgY29uc3QgbGFuZ3VhZ2VDb250ZW50ID0gbGFuZ1NlcnZpY2UuY29udGVudFsnTGFuZ3VhZ2UnXTtcbiAgICAgIGNvbnNvbGUubG9nKCdMYW5ndWFnZSBjb250ZW50IGV4aXN0czonLCAhIWxhbmd1YWdlQ29udGVudCk7XG5cbiAgICAgIGlmIChsYW5ndWFnZUNvbnRlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ0xhbmd1YWdlIGNvbnRlbnQgc3RydWN0dXJlOicsIGxhbmd1YWdlQ29udGVudCk7XG4gICAgICAgIGNvbnNvbGUubG9nKCdMYW5ndWFnZSBjb250ZW50LkNvbnRlbnQ6JywgbGFuZ3VhZ2VDb250ZW50LkNvbnRlbnQpO1xuXG4gICAgICAgIC8vIFZlcmlmaWNhciBjb250ZW5pZG8gZW4gZXNwYcOxb2xcbiAgICAgICAgY29uc3QgZXNDb250ZW50ID0gbGFuZ3VhZ2VDb250ZW50LkNvbnRlbnQ/LmVzO1xuICAgICAgICBjb25zb2xlLmxvZygnRVMgY29udGVudDonLCBlc0NvbnRlbnQpO1xuICAgICAgICBjb25zb2xlLmxvZygnRVMgZGVzY3JpcHRpb246JywgZXNDb250ZW50Py5kZXNjcmlwdGlvbik7XG5cbiAgICAgICAgLy8gVmVyaWZpY2FyIGNvbnRlbmlkbyBlbiBpbmdsw6lzXG4gICAgICAgIGNvbnN0IGVuQ29udGVudCA9IGxhbmd1YWdlQ29udGVudC5Db250ZW50Py5lbjtcbiAgICAgICAgY29uc29sZS5sb2coJ0VOIGNvbnRlbnQ6JywgZW5Db250ZW50KTtcbiAgICAgICAgY29uc29sZS5sb2coJ0VOIGRlc2NyaXB0aW9uOicsIGVuQ29udGVudD8uZGVzY3JpcHRpb24pO1xuICAgICAgfVxuXG4gICAgICAvLyBWZXJpZmljYXIgY3VycmVudCBsYW5nXG4gICAgICBjb25zdCBjdXJyZW50TGFuZyA9IGxhbmdTZXJ2aWNlLnNlbGVjdGVkTGFuZz8udmFsdWU7XG4gICAgICBjb25zb2xlLmxvZygnQ3VycmVudCBzZWxlY3RlZCBsYW5ndWFnZTonLCBjdXJyZW50TGFuZyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKCfinYwgRXJyb3IgYWNjZXNzaW5nIExhbmdTZXJ2aWNlOicsIGVycm9yKTtcbiAgICB9XG5cbiAgICAvLyBJbnRlbnRhciBhY2Nlc28gc8OtbmNyb25vIGEgY29udGVuaWRvIGdsb2JhbCBwcmVkZWZpbmlkb1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzYXZlVGV4dCA9IHRoaXMuY29udGVudC5nZXRUZXh0KCdzYXZlJyk7XG4gICAgICBjb25zb2xlLmxvZygn4pyFIEdsb2JhbCBwcmVkZWZpbmlkbyAoc2F2ZSk6Jywgc2F2ZVRleHQpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmxvZygn4p2MIEVycm9yIGdsb2JhbCBwcmVkZWZpbmlkbyAoc2F2ZSk6JywgZXJyb3IpO1xuICAgIH1cblxuICAgIC8vIEludGVudGFyIGFjY2VzbyBzw61uY3Jvbm8gYSBjb250ZW5pZG8gZ2xvYmFsIHBlcnNvbmFsaXphZG9cbiAgICB0cnkge1xuICAgICAgY29uc3QgZGFzaGJvYXJkVGV4dCA9IHRoaXMuY29udGVudC5nZXRUZXh0KCdkYXNoYm9hcmQnKTtcbiAgICAgIGNvbnNvbGUubG9nKCfinIUgR2xvYmFsIHBlcnNvbmFsaXphZG8gKGRhc2hib2FyZCk6JywgZGFzaGJvYXJkVGV4dCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKCfinYwgRXJyb3IgZ2xvYmFsIHBlcnNvbmFsaXphZG8gKGRhc2hib2FyZCk6JywgZXJyb3IpO1xuICAgIH1cblxuICAgIC8vIEludGVudGFyIGFjY2VzbyBzw61uY3Jvbm8gYSBjb250ZW5pZG8gZGUgY29tcG9uZW50ZVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBzcGFuaXNoVGV4dCA9IHRoaXMuY29udGVudC5nZXRUZXh0KCdMYW5ndWFnZScsICdzcGFuaXNoJyk7XG4gICAgICBjb25zb2xlLmxvZygn4pyFIENvbXBvbmVudGUgTGFuZ3VhZ2UgKHNwYW5pc2gpOicsIHNwYW5pc2hUZXh0KTtcblxuICAgICAgLy8g8J+UjSBEZWJ1ZyBwYXNvIGEgcGFzbyBwYXJhIHNwYW5pc2hcbiAgICAgIGNvbnN0IGxhbmdTZXJ2aWNlID0gKHRoaXMuY29udGVudCBhcyBhbnkpLmxhbmdTZXJ2aWNlO1xuICAgICAgY29uc3QgbGFuZ3VhZ2VDb250ZW50ID0gbGFuZ1NlcnZpY2UuY29udGVudFsnTGFuZ3VhZ2UnXTtcbiAgICAgIGNvbnN0IGN1cnJlbnRMYW5nID0gbGFuZ1NlcnZpY2Uuc2VsZWN0ZWRMYW5nPy52YWx1ZTtcbiAgICAgIGNvbnN0IGNsYXNzQ29udGVudCA9IGxhbmd1YWdlQ29udGVudD8uQ29udGVudFtjdXJyZW50TGFuZ107XG4gICAgICBjb25zb2xlLmxvZygn8J+UjSBEZWJ1ZyBzcGFuaXNoIC0gY3VycmVudExhbmc6JywgY3VycmVudExhbmcpO1xuICAgICAgY29uc29sZS5sb2coJ/CflI0gRGVidWcgc3BhbmlzaCAtIGNsYXNzQ29udGVudDonLCBjbGFzc0NvbnRlbnQpO1xuICAgICAgY29uc29sZS5sb2coJ/CflI0gRGVidWcgc3BhbmlzaCAtIGNsYXNzQ29udGVudFtcInNwYW5pc2hcIl06JywgY2xhc3NDb250ZW50Py5bJ3NwYW5pc2gnXSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKCfinYwgRXJyb3IgY29tcG9uZW50ZSBMYW5ndWFnZSAoc3BhbmlzaCk6JywgZXJyb3IpO1xuICAgIH1cblxuICAgIC8vIEludGVudGFyIGFjY2VzbyBzw61uY3Jvbm8gYSBjb250ZW5pZG8gZGUgY29tcG9uZW50ZVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkZXNjcmlwdGlvblRleHQgPSB0aGlzLmNvbnRlbnQuZ2V0VGV4dCgnTGFuZ3VhZ2UnLCAnZGVzY3JpcHRpb24nKTtcbiAgICAgIGNvbnNvbGUubG9nKCfinIUgQ29tcG9uZW50ZSBMYW5ndWFnZSAoZGVzY3JpcHRpb24pOicsIGRlc2NyaXB0aW9uVGV4dCk7XG5cbiAgICAgIC8vIPCflI0gRGVidWcgcGFzbyBhIHBhc28gcGFyYSBkZXNjcmlwdGlvblxuICAgICAgY29uc3QgbGFuZ1NlcnZpY2UgPSAodGhpcy5jb250ZW50IGFzIGFueSkubGFuZ1NlcnZpY2U7XG4gICAgICBjb25zdCBsYW5ndWFnZUNvbnRlbnQgPSBsYW5nU2VydmljZS5jb250ZW50WydMYW5ndWFnZSddO1xuICAgICAgY29uc3QgY3VycmVudExhbmcgPSBsYW5nU2VydmljZS5zZWxlY3RlZExhbmc/LnZhbHVlO1xuICAgICAgY29uc3QgY2xhc3NDb250ZW50ID0gbGFuZ3VhZ2VDb250ZW50Py5Db250ZW50W2N1cnJlbnRMYW5nXTtcbiAgICAgIGNvbnNvbGUubG9nKCfwn5SNIERlYnVnIGRlc2NyaXB0aW9uIC0gY3VycmVudExhbmc6JywgY3VycmVudExhbmcpO1xuICAgICAgY29uc29sZS5sb2coJ/CflI0gRGVidWcgZGVzY3JpcHRpb24gLSBjbGFzc0NvbnRlbnQ6JywgY2xhc3NDb250ZW50KTtcbiAgICAgIGNvbnNvbGUubG9nKCfwn5SNIERlYnVnIGRlc2NyaXB0aW9uIC0gY2xhc3NDb250ZW50W1wiZGVzY3JpcHRpb25cIl06JywgY2xhc3NDb250ZW50Py5bJ2Rlc2NyaXB0aW9uJ10pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmxvZygn4p2MIEVycm9yIGNvbXBvbmVudGUgTGFuZ3VhZ2UgKGRlc2NyaXB0aW9uKTonLCBlcnJvcik7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,189 @@
1
+ import { Component } from '@angular/core';
2
+ import { TextComponent } from '../components/atoms/text/text.component';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * LinkProcessingExampleComponent - Componente de ejemplo que demuestra el procesamiento automático de enlaces.
6
+ *
7
+ * Este componente muestra diferentes casos de uso para el procesamiento automático de enlaces
8
+ * en el componente val-text, incluyendo enlaces externos, rutas internas y configuraciones personalizadas.
9
+ *
10
+ * @example Uso en template:
11
+ * ```html
12
+ * <val-link-processing-example></val-link-processing-example>
13
+ * ```
14
+ */
15
+ export class LinkProcessingExampleComponent {
16
+ constructor() {
17
+ this.basicTextProps = {
18
+ content: 'Este texto contiene https://angular.io y /dashboard pero no se procesan como enlaces.',
19
+ size: 'medium',
20
+ color: 'dark',
21
+ bold: false,
22
+ processLinks: false,
23
+ };
24
+ this.basicLinksProps = {
25
+ content: 'Visita https://angular.io para documentación o ve a /dashboard para el panel principal.',
26
+ size: 'medium',
27
+ color: 'dark',
28
+ bold: false,
29
+ processLinks: true,
30
+ };
31
+ this.customLinksProps = {
32
+ content: 'Enlaces personalizados: https://github.com/angular/angular y /profile/settings',
33
+ size: 'medium',
34
+ color: 'dark',
35
+ bold: false,
36
+ processLinks: true,
37
+ linkConfig: {
38
+ openExternalInNewTab: true,
39
+ openInternalInNewTab: false,
40
+ linkClass: 'custom-link-style',
41
+ externalLinkClass: 'external-custom',
42
+ internalLinkClass: 'internal-custom',
43
+ },
44
+ };
45
+ this.mixedLinksProps = {
46
+ content: 'Consulta la documentación en https://ionicframework.com/docs, revisa el código en https://github.com/ionic-team/ionic-framework, o navega a /components/buttons para ejemplos internos.',
47
+ size: 'medium',
48
+ color: 'dark',
49
+ bold: false,
50
+ processLinks: true,
51
+ linkConfig: {
52
+ openExternalInNewTab: true,
53
+ openInternalInNewTab: false,
54
+ linkClass: 'processed-link',
55
+ externalLinkClass: 'external-link',
56
+ internalLinkClass: 'internal-link',
57
+ },
58
+ };
59
+ this.sameTabLinksProps = {
60
+ content: 'Estos enlaces no abren en nueva pestaña: https://example.com y /home',
61
+ size: 'medium',
62
+ color: 'dark',
63
+ bold: false,
64
+ processLinks: true,
65
+ linkConfig: {
66
+ openExternalInNewTab: false,
67
+ openInternalInNewTab: false,
68
+ linkClass: 'same-tab-link',
69
+ externalLinkClass: 'external-same-tab',
70
+ internalLinkClass: 'internal-same-tab',
71
+ },
72
+ };
73
+ this.markdownLinksProps = {
74
+ content: 'Consulta [la documentación de Angular](https://angular.io/docs) y ve a [configuración del perfil](/profile/settings) para más opciones.',
75
+ size: 'medium',
76
+ color: 'dark',
77
+ bold: false,
78
+ processLinks: true,
79
+ linkConfig: {
80
+ openExternalInNewTab: true,
81
+ openInternalInNewTab: false,
82
+ processMarkdownLinks: true,
83
+ linkClass: 'markdown-link',
84
+ externalLinkClass: 'markdown-external',
85
+ internalLinkClass: 'markdown-internal',
86
+ },
87
+ };
88
+ this.mixedFormatsProps = {
89
+ content: 'Aquí hay [documentación oficial](https://angular.io/docs), un enlace directo https://github.com/angular/angular, y una ruta interna /dashboard/analytics. ¡Todos funcionan!',
90
+ size: 'medium',
91
+ color: 'dark',
92
+ bold: false,
93
+ processLinks: true,
94
+ linkConfig: {
95
+ openExternalInNewTab: true,
96
+ openInternalInNewTab: false,
97
+ processMarkdownLinks: true,
98
+ linkClass: 'mixed-link',
99
+ externalLinkClass: 'mixed-external',
100
+ internalLinkClass: 'mixed-internal',
101
+ },
102
+ };
103
+ }
104
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LinkProcessingExampleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
105
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LinkProcessingExampleComponent, isStandalone: true, selector: "val-link-processing-example", ngImport: i0, template: `
106
+ <div class="link-examples">
107
+ <h2>Ejemplos de Procesamiento de Enlaces</h2>
108
+
109
+ <div class="example-section">
110
+ <h3>Texto sin procesamiento de enlaces:</h3>
111
+ <val-text [props]="basicTextProps"></val-text>
112
+ </div>
113
+
114
+ <div class="example-section">
115
+ <h3>Texto con procesamiento básico de enlaces:</h3>
116
+ <val-text [props]="basicLinksProps"></val-text>
117
+ </div>
118
+
119
+ <div class="example-section">
120
+ <h3>Enlaces con configuración personalizada:</h3>
121
+ <val-text [props]="customLinksProps"></val-text>
122
+ </div>
123
+
124
+ <div class="example-section">
125
+ <h3>Enlaces internos y externos mezclados:</h3>
126
+ <val-text [props]="mixedLinksProps"></val-text>
127
+ </div>
128
+
129
+ <div class="example-section">
130
+ <h3>Enlaces sin abrir en nueva pestaña:</h3>
131
+ <val-text [props]="sameTabLinksProps"></val-text>
132
+ </div>
133
+
134
+ <div class="example-section">
135
+ <h3>Enlaces estilo Markdown [texto](url):</h3>
136
+ <val-text [props]="markdownLinksProps"></val-text>
137
+ </div>
138
+
139
+ <div class="example-section">
140
+ <h3>Mezcla de enlaces directos y Markdown:</h3>
141
+ <val-text [props]="mixedFormatsProps"></val-text>
142
+ </div>
143
+ </div>
144
+ `, isInline: true, styles: [".link-examples{padding:20px;max-width:800px}.example-section{margin-bottom:24px;padding:16px;border:1px solid var(--ion-color-light, #f4f5f8);border-radius:8px;background:var(--ion-color-light-tint, #f5f6f9)}h2{color:var(--ion-color-primary, #3880ff);margin-bottom:20px}h3{color:var(--ion-color-dark, #222428);margin-bottom:10px;font-size:16px}\n"], dependencies: [{ kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }] }); }
145
+ }
146
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LinkProcessingExampleComponent, decorators: [{
147
+ type: Component,
148
+ args: [{ selector: 'val-link-processing-example', standalone: true, imports: [TextComponent], template: `
149
+ <div class="link-examples">
150
+ <h2>Ejemplos de Procesamiento de Enlaces</h2>
151
+
152
+ <div class="example-section">
153
+ <h3>Texto sin procesamiento de enlaces:</h3>
154
+ <val-text [props]="basicTextProps"></val-text>
155
+ </div>
156
+
157
+ <div class="example-section">
158
+ <h3>Texto con procesamiento básico de enlaces:</h3>
159
+ <val-text [props]="basicLinksProps"></val-text>
160
+ </div>
161
+
162
+ <div class="example-section">
163
+ <h3>Enlaces con configuración personalizada:</h3>
164
+ <val-text [props]="customLinksProps"></val-text>
165
+ </div>
166
+
167
+ <div class="example-section">
168
+ <h3>Enlaces internos y externos mezclados:</h3>
169
+ <val-text [props]="mixedLinksProps"></val-text>
170
+ </div>
171
+
172
+ <div class="example-section">
173
+ <h3>Enlaces sin abrir en nueva pestaña:</h3>
174
+ <val-text [props]="sameTabLinksProps"></val-text>
175
+ </div>
176
+
177
+ <div class="example-section">
178
+ <h3>Enlaces estilo Markdown [texto](url):</h3>
179
+ <val-text [props]="markdownLinksProps"></val-text>
180
+ </div>
181
+
182
+ <div class="example-section">
183
+ <h3>Mezcla de enlaces directos y Markdown:</h3>
184
+ <val-text [props]="mixedFormatsProps"></val-text>
185
+ </div>
186
+ </div>
187
+ `, styles: [".link-examples{padding:20px;max-width:800px}.example-section{margin-bottom:24px;padding:16px;border:1px solid var(--ion-color-light, #f4f5f8);border-radius:8px;background:var(--ion-color-light-tint, #f5f6f9)}h2{color:var(--ion-color-primary, #3880ff);margin-bottom:20px}h3{color:var(--ion-color-dark, #222428);margin-bottom:10px;font-size:16px}\n"] }]
188
+ }] });
189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1wcm9jZXNzaW5nLWV4YW1wbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGVjaC1jb21wb25lbnRzL3NyYy9saWIvZXhhbXBsZXMvbGluay1wcm9jZXNzaW5nLWV4YW1wbGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOztBQUV4RTs7Ozs7Ozs7OztHQVVHO0FBeUVILE1BQU0sT0FBTyw4QkFBOEI7SUF4RTNDO1FBeUVFLG1CQUFjLEdBQWlCO1lBQzdCLE9BQU8sRUFBRSx1RkFBdUY7WUFDaEcsSUFBSSxFQUFFLFFBQVE7WUFDZCxLQUFLLEVBQUUsTUFBTTtZQUNiLElBQUksRUFBRSxLQUFLO1lBQ1gsWUFBWSxFQUFFLEtBQUs7U0FDcEIsQ0FBQztRQUVGLG9CQUFlLEdBQWlCO1lBQzlCLE9BQU8sRUFBRSx5RkFBeUY7WUFDbEcsSUFBSSxFQUFFLFFBQVE7WUFDZCxLQUFLLEVBQUUsTUFBTTtZQUNiLElBQUksRUFBRSxLQUFLO1lBQ1gsWUFBWSxFQUFFLElBQUk7U0FDbkIsQ0FBQztRQUVGLHFCQUFnQixHQUFpQjtZQUMvQixPQUFPLEVBQUUsZ0ZBQWdGO1lBQ3pGLElBQUksRUFBRSxRQUFRO1lBQ2QsS0FBSyxFQUFFLE1BQU07WUFDYixJQUFJLEVBQUUsS0FBSztZQUNYLFlBQVksRUFBRSxJQUFJO1lBQ2xCLFVBQVUsRUFBRTtnQkFDVixvQkFBb0IsRUFBRSxJQUFJO2dCQUMxQixvQkFBb0IsRUFBRSxLQUFLO2dCQUMzQixTQUFTLEVBQUUsbUJBQW1CO2dCQUM5QixpQkFBaUIsRUFBRSxpQkFBaUI7Z0JBQ3BDLGlCQUFpQixFQUFFLGlCQUFpQjthQUNyQztTQUNGLENBQUM7UUFFRixvQkFBZSxHQUFpQjtZQUM5QixPQUFPLEVBQ0wseUxBQXlMO1lBQzNMLElBQUksRUFBRSxRQUFRO1lBQ2QsS0FBSyxFQUFFLE1BQU07WUFDYixJQUFJLEVBQUUsS0FBSztZQUNYLFlBQVksRUFBRSxJQUFJO1lBQ2xCLFVBQVUsRUFBRTtnQkFDVixvQkFBb0IsRUFBRSxJQUFJO2dCQUMxQixvQkFBb0IsRUFBRSxLQUFLO2dCQUMzQixTQUFTLEVBQUUsZ0JBQWdCO2dCQUMzQixpQkFBaUIsRUFBRSxlQUFlO2dCQUNsQyxpQkFBaUIsRUFBRSxlQUFlO2FBQ25DO1NBQ0YsQ0FBQztRQUVGLHNCQUFpQixHQUFpQjtZQUNoQyxPQUFPLEVBQUUsc0VBQXNFO1lBQy9FLElBQUksRUFBRSxRQUFRO1lBQ2QsS0FBSyxFQUFFLE1BQU07WUFDYixJQUFJLEVBQUUsS0FBSztZQUNYLFlBQVksRUFBRSxJQUFJO1lBQ2xCLFVBQVUsRUFBRTtnQkFDVixvQkFBb0IsRUFBRSxLQUFLO2dCQUMzQixvQkFBb0IsRUFBRSxLQUFLO2dCQUMzQixTQUFTLEVBQUUsZUFBZTtnQkFDMUIsaUJBQWlCLEVBQUUsbUJBQW1CO2dCQUN0QyxpQkFBaUIsRUFBRSxtQkFBbUI7YUFDdkM7U0FDRixDQUFDO1FBRUYsdUJBQWtCLEdBQWlCO1lBQ2pDLE9BQU8sRUFDTCx5SUFBeUk7WUFDM0ksSUFBSSxFQUFFLFFBQVE7WUFDZCxLQUFLLEVBQUUsTUFBTTtZQUNiLElBQUksRUFBRSxLQUFLO1lBQ1gsWUFBWSxFQUFFLElBQUk7WUFDbEIsVUFBVSxFQUFFO2dCQUNWLG9CQUFvQixFQUFFLElBQUk7Z0JBQzFCLG9CQUFvQixFQUFFLEtBQUs7Z0JBQzNCLG9CQUFvQixFQUFFLElBQUk7Z0JBQzFCLFNBQVMsRUFBRSxlQUFlO2dCQUMxQixpQkFBaUIsRUFBRSxtQkFBbUI7Z0JBQ3RDLGlCQUFpQixFQUFFLG1CQUFtQjthQUN2QztTQUNGLENBQUM7UUFFRixzQkFBaUIsR0FBaUI7WUFDaEMsT0FBTyxFQUNMLDZLQUE2SztZQUMvSyxJQUFJLEVBQUUsUUFBUTtZQUNkLEtBQUssRUFBRSxNQUFNO1lBQ2IsSUFBSSxFQUFFLEtBQUs7WUFDWCxZQUFZLEVBQUUsSUFBSTtZQUNsQixVQUFVLEVBQUU7Z0JBQ1Ysb0JBQW9CLEVBQUUsSUFBSTtnQkFDMUIsb0JBQW9CLEVBQUUsS0FBSztnQkFDM0Isb0JBQW9CLEVBQUUsSUFBSTtnQkFDMUIsU0FBUyxFQUFFLFlBQVk7Z0JBQ3ZCLGlCQUFpQixFQUFFLGdCQUFnQjtnQkFDbkMsaUJBQWlCLEVBQUUsZ0JBQWdCO2FBQ3BDO1NBQ0YsQ0FBQztLQUNIOytHQWhHWSw4QkFBOEI7bUdBQTlCLDhCQUE4Qix1RkFwRS9COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Q1Qsb2FBeENTLGFBQWE7OzRGQXFFWiw4QkFBOEI7a0JBeEUxQyxTQUFTOytCQUNFLDZCQUE2QixjQUMzQixJQUFJLFdBQ1AsQ0FBQyxhQUFhLENBQUMsWUFDZDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUNUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9hdG9tcy90ZXh0L3RleHQuY29tcG9uZW50JztcbmltcG9ydCB7IFRleHRNZXRhZGF0YSB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXRvbXMvdGV4dC90eXBlcyc7XG4vKipcbiAqIExpbmtQcm9jZXNzaW5nRXhhbXBsZUNvbXBvbmVudCAtIENvbXBvbmVudGUgZGUgZWplbXBsbyBxdWUgZGVtdWVzdHJhIGVsIHByb2Nlc2FtaWVudG8gYXV0b23DoXRpY28gZGUgZW5sYWNlcy5cbiAqXG4gKiBFc3RlIGNvbXBvbmVudGUgbXVlc3RyYSBkaWZlcmVudGVzIGNhc29zIGRlIHVzbyBwYXJhIGVsIHByb2Nlc2FtaWVudG8gYXV0b23DoXRpY28gZGUgZW5sYWNlc1xuICogZW4gZWwgY29tcG9uZW50ZSB2YWwtdGV4dCwgaW5jbHV5ZW5kbyBlbmxhY2VzIGV4dGVybm9zLCBydXRhcyBpbnRlcm5hcyB5IGNvbmZpZ3VyYWNpb25lcyBwZXJzb25hbGl6YWRhcy5cbiAqXG4gKiBAZXhhbXBsZSBVc28gZW4gdGVtcGxhdGU6XG4gKiBgYGBodG1sXG4gKiA8dmFsLWxpbmstcHJvY2Vzc2luZy1leGFtcGxlPjwvdmFsLWxpbmstcHJvY2Vzc2luZy1leGFtcGxlPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1saW5rLXByb2Nlc3NpbmctZXhhbXBsZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtUZXh0Q29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwibGluay1leGFtcGxlc1wiPlxuICAgICAgPGgyPkVqZW1wbG9zIGRlIFByb2Nlc2FtaWVudG8gZGUgRW5sYWNlczwvaDI+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJleGFtcGxlLXNlY3Rpb25cIj5cbiAgICAgICAgPGgzPlRleHRvIHNpbiBwcm9jZXNhbWllbnRvIGRlIGVubGFjZXM6PC9oMz5cbiAgICAgICAgPHZhbC10ZXh0IFtwcm9wc109XCJiYXNpY1RleHRQcm9wc1wiPjwvdmFsLXRleHQ+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImV4YW1wbGUtc2VjdGlvblwiPlxuICAgICAgICA8aDM+VGV4dG8gY29uIHByb2Nlc2FtaWVudG8gYsOhc2ljbyBkZSBlbmxhY2VzOjwvaDM+XG4gICAgICAgIDx2YWwtdGV4dCBbcHJvcHNdPVwiYmFzaWNMaW5rc1Byb3BzXCI+PC92YWwtdGV4dD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiZXhhbXBsZS1zZWN0aW9uXCI+XG4gICAgICAgIDxoMz5FbmxhY2VzIGNvbiBjb25maWd1cmFjacOzbiBwZXJzb25hbGl6YWRhOjwvaDM+XG4gICAgICAgIDx2YWwtdGV4dCBbcHJvcHNdPVwiY3VzdG9tTGlua3NQcm9wc1wiPjwvdmFsLXRleHQ+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImV4YW1wbGUtc2VjdGlvblwiPlxuICAgICAgICA8aDM+RW5sYWNlcyBpbnRlcm5vcyB5IGV4dGVybm9zIG1lemNsYWRvczo8L2gzPlxuICAgICAgICA8dmFsLXRleHQgW3Byb3BzXT1cIm1peGVkTGlua3NQcm9wc1wiPjwvdmFsLXRleHQ+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImV4YW1wbGUtc2VjdGlvblwiPlxuICAgICAgICA8aDM+RW5sYWNlcyBzaW4gYWJyaXIgZW4gbnVldmEgcGVzdGHDsWE6PC9oMz5cbiAgICAgICAgPHZhbC10ZXh0IFtwcm9wc109XCJzYW1lVGFiTGlua3NQcm9wc1wiPjwvdmFsLXRleHQ+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImV4YW1wbGUtc2VjdGlvblwiPlxuICAgICAgICA8aDM+RW5sYWNlcyBlc3RpbG8gTWFya2Rvd24gW3RleHRvXSh1cmwpOjwvaDM+XG4gICAgICAgIDx2YWwtdGV4dCBbcHJvcHNdPVwibWFya2Rvd25MaW5rc1Byb3BzXCI+PC92YWwtdGV4dD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiZXhhbXBsZS1zZWN0aW9uXCI+XG4gICAgICAgIDxoMz5NZXpjbGEgZGUgZW5sYWNlcyBkaXJlY3RvcyB5IE1hcmtkb3duOjwvaDM+XG4gICAgICAgIDx2YWwtdGV4dCBbcHJvcHNdPVwibWl4ZWRGb3JtYXRzUHJvcHNcIj48L3ZhbC10ZXh0PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5saW5rLWV4YW1wbGVzIHtcbiAgICAgICAgcGFkZGluZzogMjBweDtcbiAgICAgICAgbWF4LXdpZHRoOiA4MDBweDtcbiAgICAgIH1cblxuICAgICAgLmV4YW1wbGUtc2VjdGlvbiB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7XG4gICAgICAgIHBhZGRpbmc6IDE2cHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlvbi1jb2xvci1saWdodCwgI2Y0ZjVmOCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWxpZ2h0LXRpbnQsICNmNWY2ZjkpO1xuICAgICAgfVxuXG4gICAgICBoMiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSwgIzM4ODBmZik7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICB9XG5cbiAgICAgIGgzIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrLCAjMjIyNDI4KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIExpbmtQcm9jZXNzaW5nRXhhbXBsZUNvbXBvbmVudCB7XG4gIGJhc2ljVGV4dFByb3BzOiBUZXh0TWV0YWRhdGEgPSB7XG4gICAgY29udGVudDogJ0VzdGUgdGV4dG8gY29udGllbmUgaHR0cHM6Ly9hbmd1bGFyLmlvIHkgL2Rhc2hib2FyZCBwZXJvIG5vIHNlIHByb2Nlc2FuIGNvbW8gZW5sYWNlcy4nLFxuICAgIHNpemU6ICdtZWRpdW0nLFxuICAgIGNvbG9yOiAnZGFyaycsXG4gICAgYm9sZDogZmFsc2UsXG4gICAgcHJvY2Vzc0xpbmtzOiBmYWxzZSxcbiAgfTtcblxuICBiYXNpY0xpbmtzUHJvcHM6IFRleHRNZXRhZGF0YSA9IHtcbiAgICBjb250ZW50OiAnVmlzaXRhIGh0dHBzOi8vYW5ndWxhci5pbyBwYXJhIGRvY3VtZW50YWNpw7NuIG8gdmUgYSAvZGFzaGJvYXJkIHBhcmEgZWwgcGFuZWwgcHJpbmNpcGFsLicsXG4gICAgc2l6ZTogJ21lZGl1bScsXG4gICAgY29sb3I6ICdkYXJrJyxcbiAgICBib2xkOiBmYWxzZSxcbiAgICBwcm9jZXNzTGlua3M6IHRydWUsXG4gIH07XG5cbiAgY3VzdG9tTGlua3NQcm9wczogVGV4dE1ldGFkYXRhID0ge1xuICAgIGNvbnRlbnQ6ICdFbmxhY2VzIHBlcnNvbmFsaXphZG9zOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyIHkgL3Byb2ZpbGUvc2V0dGluZ3MnLFxuICAgIHNpemU6ICdtZWRpdW0nLFxuICAgIGNvbG9yOiAnZGFyaycsXG4gICAgYm9sZDogZmFsc2UsXG4gICAgcHJvY2Vzc0xpbmtzOiB0cnVlLFxuICAgIGxpbmtDb25maWc6IHtcbiAgICAgIG9wZW5FeHRlcm5hbEluTmV3VGFiOiB0cnVlLFxuICAgICAgb3BlbkludGVybmFsSW5OZXdUYWI6IGZhbHNlLFxuICAgICAgbGlua0NsYXNzOiAnY3VzdG9tLWxpbmstc3R5bGUnLFxuICAgICAgZXh0ZXJuYWxMaW5rQ2xhc3M6ICdleHRlcm5hbC1jdXN0b20nLFxuICAgICAgaW50ZXJuYWxMaW5rQ2xhc3M6ICdpbnRlcm5hbC1jdXN0b20nLFxuICAgIH0sXG4gIH07XG5cbiAgbWl4ZWRMaW5rc1Byb3BzOiBUZXh0TWV0YWRhdGEgPSB7XG4gICAgY29udGVudDpcbiAgICAgICdDb25zdWx0YSBsYSBkb2N1bWVudGFjacOzbiBlbiBodHRwczovL2lvbmljZnJhbWV3b3JrLmNvbS9kb2NzLCByZXZpc2EgZWwgY8OzZGlnbyBlbiBodHRwczovL2dpdGh1Yi5jb20vaW9uaWMtdGVhbS9pb25pYy1mcmFtZXdvcmssIG8gbmF2ZWdhIGEgL2NvbXBvbmVudHMvYnV0dG9ucyBwYXJhIGVqZW1wbG9zIGludGVybm9zLicsXG4gICAgc2l6ZTogJ21lZGl1bScsXG4gICAgY29sb3I6ICdkYXJrJyxcbiAgICBib2xkOiBmYWxzZSxcbiAgICBwcm9jZXNzTGlua3M6IHRydWUsXG4gICAgbGlua0NvbmZpZzoge1xuICAgICAgb3BlbkV4dGVybmFsSW5OZXdUYWI6IHRydWUsXG4gICAgICBvcGVuSW50ZXJuYWxJbk5ld1RhYjogZmFsc2UsXG4gICAgICBsaW5rQ2xhc3M6ICdwcm9jZXNzZWQtbGluaycsXG4gICAgICBleHRlcm5hbExpbmtDbGFzczogJ2V4dGVybmFsLWxpbmsnLFxuICAgICAgaW50ZXJuYWxMaW5rQ2xhc3M6ICdpbnRlcm5hbC1saW5rJyxcbiAgICB9LFxuICB9O1xuXG4gIHNhbWVUYWJMaW5rc1Byb3BzOiBUZXh0TWV0YWRhdGEgPSB7XG4gICAgY29udGVudDogJ0VzdG9zIGVubGFjZXMgbm8gYWJyZW4gZW4gbnVldmEgcGVzdGHDsWE6IGh0dHBzOi8vZXhhbXBsZS5jb20geSAvaG9tZScsXG4gICAgc2l6ZTogJ21lZGl1bScsXG4gICAgY29sb3I6ICdkYXJrJyxcbiAgICBib2xkOiBmYWxzZSxcbiAgICBwcm9jZXNzTGlua3M6IHRydWUsXG4gICAgbGlua0NvbmZpZzoge1xuICAgICAgb3BlbkV4dGVybmFsSW5OZXdUYWI6IGZhbHNlLFxuICAgICAgb3BlbkludGVybmFsSW5OZXdUYWI6IGZhbHNlLFxuICAgICAgbGlua0NsYXNzOiAnc2FtZS10YWItbGluaycsXG4gICAgICBleHRlcm5hbExpbmtDbGFzczogJ2V4dGVybmFsLXNhbWUtdGFiJyxcbiAgICAgIGludGVybmFsTGlua0NsYXNzOiAnaW50ZXJuYWwtc2FtZS10YWInLFxuICAgIH0sXG4gIH07XG5cbiAgbWFya2Rvd25MaW5rc1Byb3BzOiBUZXh0TWV0YWRhdGEgPSB7XG4gICAgY29udGVudDpcbiAgICAgICdDb25zdWx0YSBbbGEgZG9jdW1lbnRhY2nDs24gZGUgQW5ndWxhcl0oaHR0cHM6Ly9hbmd1bGFyLmlvL2RvY3MpIHkgdmUgYSBbY29uZmlndXJhY2nDs24gZGVsIHBlcmZpbF0oL3Byb2ZpbGUvc2V0dGluZ3MpIHBhcmEgbcOhcyBvcGNpb25lcy4nLFxuICAgIHNpemU6ICdtZWRpdW0nLFxuICAgIGNvbG9yOiAnZGFyaycsXG4gICAgYm9sZDogZmFsc2UsXG4gICAgcHJvY2Vzc0xpbmtzOiB0cnVlLFxuICAgIGxpbmtDb25maWc6IHtcbiAgICAgIG9wZW5FeHRlcm5hbEluTmV3VGFiOiB0cnVlLFxuICAgICAgb3BlbkludGVybmFsSW5OZXdUYWI6IGZhbHNlLFxuICAgICAgcHJvY2Vzc01hcmtkb3duTGlua3M6IHRydWUsXG4gICAgICBsaW5rQ2xhc3M6ICdtYXJrZG93bi1saW5rJyxcbiAgICAgIGV4dGVybmFsTGlua0NsYXNzOiAnbWFya2Rvd24tZXh0ZXJuYWwnLFxuICAgICAgaW50ZXJuYWxMaW5rQ2xhc3M6ICdtYXJrZG93bi1pbnRlcm5hbCcsXG4gICAgfSxcbiAgfTtcblxuICBtaXhlZEZvcm1hdHNQcm9wczogVGV4dE1ldGFkYXRhID0ge1xuICAgIGNvbnRlbnQ6XG4gICAgICAnQXF1w60gaGF5IFtkb2N1bWVudGFjacOzbiBvZmljaWFsXShodHRwczovL2FuZ3VsYXIuaW8vZG9jcyksIHVuIGVubGFjZSBkaXJlY3RvIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIsIHkgdW5hIHJ1dGEgaW50ZXJuYSAvZGFzaGJvYXJkL2FuYWx5dGljcy4gwqFUb2RvcyBmdW5jaW9uYW4hJyxcbiAgICBzaXplOiAnbWVkaXVtJyxcbiAgICBjb2xvcjogJ2RhcmsnLFxuICAgIGJvbGQ6IGZhbHNlLFxuICAgIHByb2Nlc3NMaW5rczogdHJ1ZSxcbiAgICBsaW5rQ29uZmlnOiB7XG4gICAgICBvcGVuRXh0ZXJuYWxJbk5ld1RhYjogdHJ1ZSxcbiAgICAgIG9wZW5JbnRlcm5hbEluTmV3VGFiOiBmYWxzZSxcbiAgICAgIHByb2Nlc3NNYXJrZG93bkxpbmtzOiB0cnVlLFxuICAgICAgbGlua0NsYXNzOiAnbWl4ZWQtbGluaycsXG4gICAgICBleHRlcm5hbExpbmtDbGFzczogJ21peGVkLWV4dGVybmFsJyxcbiAgICAgIGludGVybmFsTGlua0NsYXNzOiAnbWl4ZWQtaW50ZXJuYWwnLFxuICAgIH0sXG4gIH07XG59XG4iXX0=
@@ -1,7 +1,4 @@
1
- import GlobalContentExample from '../../components/_examples/global-content-example-content';
2
- import ReactiveContentExample from '../../components/_examples/reactive-content-example-content';
3
1
  import LangSettings from './components/lang-settings';
4
- import ThemeSettings from './components/theme-settings';
5
2
  import { TextContent } from './types';
6
3
  /**
7
4
  * Global content that can be used across all components.
@@ -40,9 +37,6 @@ const globalContentData = {
40
37
  areYouSure: '¿Estás seguro?',
41
38
  deleteConfirmation: '¿Estás seguro de que deseas eliminar {itemName}?',
42
39
  unsavedChanges: 'Tienes cambios sin guardar. ¿Deseas continuar?',
43
- // Common form labels
44
- required: 'Requerido',
45
- optional: 'Opcional',
46
40
  // Common placeholders
47
41
  searchPlaceholder: 'Buscar...',
48
42
  },
@@ -77,9 +71,6 @@ const globalContentData = {
77
71
  areYouSure: 'Are you sure?',
78
72
  deleteConfirmation: 'Are you sure you want to delete {itemName}?',
79
73
  unsavedChanges: 'You have unsaved changes. Do you want to continue?',
80
- // Common form labels
81
- required: 'Required',
82
- optional: 'Optional',
83
74
  // Common placeholders
84
75
  searchPlaceholder: 'Search...',
85
76
  },
@@ -88,11 +79,8 @@ const GlobalContent = new TextContent(globalContentData);
88
79
  const content = {
89
80
  _global: GlobalContent,
90
81
  LangSettings,
91
- ThemeSettings,
92
- ReactiveContentExample,
93
- GlobalContentExample,
94
82
  };
95
83
  export default content;
96
84
  // Export named exports for user convenience
97
85
  export { content, GlobalContent, globalContentData };
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRlY2gtY29tcG9uZW50cy9zcmMvbGliL3NlcnZpY2VzL2xhbmctcHJvdmlkZXIvY29udGVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLG9CQUFvQixNQUFNLDJEQUEyRCxDQUFDO0FBQzdGLE9BQU8sc0JBQXNCLE1BQU0sNkRBQTZELENBQUM7QUFDakcsT0FBTyxZQUFZLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxhQUFhLE1BQU0sNkJBQTZCLENBQUM7QUFDeEQsT0FBTyxFQUFvQixXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFNeEQ7Ozs7R0FJRztBQUNILE1BQU0saUJBQWlCLEdBQXFCO0lBQzFDLEVBQUUsRUFBRTtRQUNGLGlCQUFpQjtRQUNqQixFQUFFLEVBQUUsU0FBUztRQUNiLE1BQU0sRUFBRSxVQUFVO1FBQ2xCLElBQUksRUFBRSxTQUFTO1FBQ2YsTUFBTSxFQUFFLFVBQVU7UUFDbEIsSUFBSSxFQUFFLFFBQVE7UUFDZCxLQUFLLEVBQUUsUUFBUTtRQUNmLElBQUksRUFBRSxRQUFRO1FBQ2QsSUFBSSxFQUFFLFdBQVc7UUFDakIsUUFBUSxFQUFFLFVBQVU7UUFDcEIsTUFBTSxFQUFFLFdBQVc7UUFDbkIsUUFBUSxFQUFFLFdBQVc7UUFFckIsaUJBQWlCO1FBQ2pCLEdBQUcsRUFBRSxTQUFTO1FBQ2QsTUFBTSxFQUFFLFFBQVE7UUFDaEIsTUFBTSxFQUFFLFFBQVE7UUFDaEIsTUFBTSxFQUFFLFNBQVM7UUFDakIsSUFBSSxFQUFFLFNBQVM7UUFDZixPQUFPLEVBQUUsWUFBWTtRQUVyQiw2QkFBNkI7UUFDN0IsT0FBTyxFQUFFLGFBQWE7UUFDdEIsTUFBTSxFQUFFLDBCQUEwQjtRQUNsQyxLQUFLLEVBQUUsT0FBTztRQUNkLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLE9BQU8sRUFBRSxhQUFhO1FBQ3RCLElBQUksRUFBRSxhQUFhO1FBRW5CLHVCQUF1QjtRQUN2QixVQUFVLEVBQUUsZ0JBQWdCO1FBQzVCLGtCQUFrQixFQUFFLGtEQUFrRDtRQUN0RSxjQUFjLEVBQUUsZ0RBQWdEO1FBRWhFLHFCQUFxQjtRQUNyQixRQUFRLEVBQUUsV0FBVztRQUNyQixRQUFRLEVBQUUsVUFBVTtRQUVwQixzQkFBc0I7UUFDdEIsaUJBQWlCLEVBQUUsV0FBVztLQUMvQjtJQUNELEVBQUUsRUFBRTtRQUNGLGlCQUFpQjtRQUNqQixFQUFFLEVBQUUsSUFBSTtRQUNSLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLElBQUksRUFBRSxNQUFNO1FBQ1osTUFBTSxFQUFFLFFBQVE7UUFDaEIsSUFBSSxFQUFFLE1BQU07UUFDWixLQUFLLEVBQUUsT0FBTztRQUNkLElBQUksRUFBRSxNQUFNO1FBQ1osSUFBSSxFQUFFLE1BQU07UUFDWixRQUFRLEVBQUUsVUFBVTtRQUNwQixNQUFNLEVBQUUsUUFBUTtRQUNoQixRQUFRLEVBQUUsVUFBVTtRQUVwQixpQkFBaUI7UUFDakIsR0FBRyxFQUFFLEtBQUs7UUFDVixNQUFNLEVBQUUsUUFBUTtRQUNoQixNQUFNLEVBQUUsUUFBUTtRQUNoQixNQUFNLEVBQUUsUUFBUTtRQUNoQixJQUFJLEVBQUUsTUFBTTtRQUNaLE9BQU8sRUFBRSxTQUFTO1FBRWxCLDZCQUE2QjtRQUM3QixPQUFPLEVBQUUsWUFBWTtRQUNyQixNQUFNLEVBQUUsbUJBQW1CO1FBQzNCLEtBQUssRUFBRSxPQUFPO1FBQ2QsT0FBTyxFQUFFLFNBQVM7UUFDbEIsT0FBTyxFQUFFLFNBQVM7UUFDbEIsSUFBSSxFQUFFLGFBQWE7UUFFbkIsdUJBQXVCO1FBQ3ZCLFVBQVUsRUFBRSxlQUFlO1FBQzNCLGtCQUFrQixFQUFFLDZDQUE2QztRQUNqRSxjQUFjLEVBQUUsb0RBQW9EO1FBRXBFLHFCQUFxQjtRQUNyQixRQUFRLEVBQUUsVUFBVTtRQUNwQixRQUFRLEVBQUUsVUFBVTtRQUVwQixzQkFBc0I7UUFDdEIsaUJBQWlCLEVBQUUsV0FBVztLQUMvQjtDQUNGLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxJQUFJLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBRXpELE1BQU0sT0FBTyxHQUFhO0lBQ3hCLE9BQU8sRUFBRSxhQUFhO0lBQ3RCLFlBQVk7SUFDWixhQUFhO0lBQ2Isc0JBQXNCO0lBQ3RCLG9CQUFvQjtDQUNyQixDQUFDO0FBRUYsZUFBZSxPQUFPLENBQUM7QUFFdkIsNENBQTRDO0FBQzVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgR2xvYmFsQ29udGVudEV4YW1wbGUgZnJvbSAnLi4vLi4vY29tcG9uZW50cy9fZXhhbXBsZXMvZ2xvYmFsLWNvbnRlbnQtZXhhbXBsZS1jb250ZW50JztcbmltcG9ydCBSZWFjdGl2ZUNvbnRlbnRFeGFtcGxlIGZyb20gJy4uLy4uL2NvbXBvbmVudHMvX2V4YW1wbGVzL3JlYWN0aXZlLWNvbnRlbnQtZXhhbXBsZS1jb250ZW50JztcbmltcG9ydCBMYW5nU2V0dGluZ3MgZnJvbSAnLi9jb21wb25lbnRzL2xhbmctc2V0dGluZ3MnO1xuaW1wb3J0IFRoZW1lU2V0dGluZ3MgZnJvbSAnLi9jb21wb25lbnRzL3RoZW1lLXNldHRpbmdzJztcbmltcG9ydCB7IExhbmd1YWdlc0NvbnRlbnQsIFRleHRDb250ZW50IH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvdmlkZXIge1xuICBbeDogc3RyaW5nXTogVGV4dENvbnRlbnQ7XG59XG5cbi8qKlxuICogR2xvYmFsIGNvbnRlbnQgdGhhdCBjYW4gYmUgdXNlZCBhY3Jvc3MgYWxsIGNvbXBvbmVudHMuXG4gKiBUaGVzZSBhcmUgY29tbW9uIHRleHRzIGxpa2UgYnV0dG9ucywgYWN0aW9ucywgc3RhdGVzLCBldGMuXG4gKiBTdHJ1Y3R1cmU6IHtlczoge2tleTE6ICd2YWx1ZTEnLCBrZXkyOiAndmFsdWUyJ30sIGVuOiB7a2V5MTogJ3ZhbHVlMScsIGtleTI6ICd2YWx1ZTInfX1cbiAqL1xuY29uc3QgZ2xvYmFsQ29udGVudERhdGE6IExhbmd1YWdlc0NvbnRlbnQgPSB7XG4gIGVzOiB7XG4gICAgLy8gQ29tbW9uIGJ1dHRvbnNcbiAgICBvazogJ0FjZXB0YXInLFxuICAgIGNhbmNlbDogJ0NhbmNlbGFyJyxcbiAgICBzYXZlOiAnR3VhcmRhcicsXG4gICAgZGVsZXRlOiAnRWxpbWluYXInLFxuICAgIGVkaXQ6ICdFZGl0YXInLFxuICAgIGNsb3NlOiAnQ2VycmFyJyxcbiAgICBiYWNrOiAnVm9sdmVyJyxcbiAgICBuZXh0OiAnU2lndWllbnRlJyxcbiAgICBwcmV2aW91czogJ0FudGVyaW9yJyxcbiAgICBmaW5pc2g6ICdGaW5hbGl6YXInLFxuICAgIGNvbnRpbnVlOiAnQ29udGludWFyJyxcblxuICAgIC8vIENvbW1vbiBhY3Rpb25zXG4gICAgYWRkOiAnQWdyZWdhcicsXG4gICAgcmVtb3ZlOiAnUXVpdGFyJyxcbiAgICBzZWFyY2g6ICdCdXNjYXInLFxuICAgIGZpbHRlcjogJ0ZpbHRyYXInLFxuICAgIHNvcnQ6ICdPcmRlbmFyJyxcbiAgICByZWZyZXNoOiAnQWN0dWFsaXphcicsXG5cbiAgICAvLyBDb21tb24gc3RhdGVzIGFuZCBtZXNzYWdlc1xuICAgIGxvYWRpbmc6ICdDYXJnYW5kby4uLicsXG4gICAgbm9EYXRhOiAnTm8gaGF5IGRhdG9zIGRpc3BvbmlibGVzJyxcbiAgICBlcnJvcjogJ0Vycm9yJyxcbiAgICBzdWNjZXNzOiAnw4l4aXRvJyxcbiAgICB3YXJuaW5nOiAnQWR2ZXJ0ZW5jaWEnLFxuICAgIGluZm86ICdJbmZvcm1hY2nDs24nLFxuXG4gICAgLy8gQ29tbW9uIGNvbmZpcm1hdGlvbnNcbiAgICBhcmVZb3VTdXJlOiAnwr9Fc3TDoXMgc2VndXJvPycsXG4gICAgZGVsZXRlQ29uZmlybWF0aW9uOiAnwr9Fc3TDoXMgc2VndXJvIGRlIHF1ZSBkZXNlYXMgZWxpbWluYXIge2l0ZW1OYW1lfT8nLFxuICAgIHVuc2F2ZWRDaGFuZ2VzOiAnVGllbmVzIGNhbWJpb3Mgc2luIGd1YXJkYXIuIMK/RGVzZWFzIGNvbnRpbnVhcj8nLFxuXG4gICAgLy8gQ29tbW9uIGZvcm0gbGFiZWxzXG4gICAgcmVxdWlyZWQ6ICdSZXF1ZXJpZG8nLFxuICAgIG9wdGlvbmFsOiAnT3BjaW9uYWwnLFxuXG4gICAgLy8gQ29tbW9uIHBsYWNlaG9sZGVyc1xuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnQnVzY2FyLi4uJyxcbiAgfSxcbiAgZW46IHtcbiAgICAvLyBDb21tb24gYnV0dG9uc1xuICAgIG9rOiAnT0snLFxuICAgIGNhbmNlbDogJ0NhbmNlbCcsXG4gICAgc2F2ZTogJ1NhdmUnLFxuICAgIGRlbGV0ZTogJ0RlbGV0ZScsXG4gICAgZWRpdDogJ0VkaXQnLFxuICAgIGNsb3NlOiAnQ2xvc2UnLFxuICAgIGJhY2s6ICdCYWNrJyxcbiAgICBuZXh0OiAnTmV4dCcsXG4gICAgcHJldmlvdXM6ICdQcmV2aW91cycsXG4gICAgZmluaXNoOiAnRmluaXNoJyxcbiAgICBjb250aW51ZTogJ0NvbnRpbnVlJyxcblxuICAgIC8vIENvbW1vbiBhY3Rpb25zXG4gICAgYWRkOiAnQWRkJyxcbiAgICByZW1vdmU6ICdSZW1vdmUnLFxuICAgIHNlYXJjaDogJ1NlYXJjaCcsXG4gICAgZmlsdGVyOiAnRmlsdGVyJyxcbiAgICBzb3J0OiAnU29ydCcsXG4gICAgcmVmcmVzaDogJ1JlZnJlc2gnLFxuXG4gICAgLy8gQ29tbW9uIHN0YXRlcyBhbmQgbWVzc2FnZXNcbiAgICBsb2FkaW5nOiAnTG9hZGluZy4uLicsXG4gICAgbm9EYXRhOiAnTm8gZGF0YSBhdmFpbGFibGUnLFxuICAgIGVycm9yOiAnRXJyb3InLFxuICAgIHN1Y2Nlc3M6ICdTdWNjZXNzJyxcbiAgICB3YXJuaW5nOiAnV2FybmluZycsXG4gICAgaW5mbzogJ0luZm9ybWF0aW9uJyxcblxuICAgIC8vIENvbW1vbiBjb25maXJtYXRpb25zXG4gICAgYXJlWW91U3VyZTogJ0FyZSB5b3Ugc3VyZT8nLFxuICAgIGRlbGV0ZUNvbmZpcm1hdGlvbjogJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUge2l0ZW1OYW1lfT8nLFxuICAgIHVuc2F2ZWRDaGFuZ2VzOiAnWW91IGhhdmUgdW5zYXZlZCBjaGFuZ2VzLiBEbyB5b3Ugd2FudCB0byBjb250aW51ZT8nLFxuXG4gICAgLy8gQ29tbW9uIGZvcm0gbGFiZWxzXG4gICAgcmVxdWlyZWQ6ICdSZXF1aXJlZCcsXG4gICAgb3B0aW9uYWw6ICdPcHRpb25hbCcsXG5cbiAgICAvLyBDb21tb24gcGxhY2Vob2xkZXJzXG4gICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdTZWFyY2guLi4nLFxuICB9LFxufTtcblxuY29uc3QgR2xvYmFsQ29udGVudCA9IG5ldyBUZXh0Q29udGVudChnbG9iYWxDb250ZW50RGF0YSk7XG5cbmNvbnN0IGNvbnRlbnQ6IFByb3ZpZGVyID0ge1xuICBfZ2xvYmFsOiBHbG9iYWxDb250ZW50LFxuICBMYW5nU2V0dGluZ3MsXG4gIFRoZW1lU2V0dGluZ3MsXG4gIFJlYWN0aXZlQ29udGVudEV4YW1wbGUsXG4gIEdsb2JhbENvbnRlbnRFeGFtcGxlLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgY29udGVudDtcblxuLy8gRXhwb3J0IG5hbWVkIGV4cG9ydHMgZm9yIHVzZXIgY29udmVuaWVuY2VcbmV4cG9ydCB7IGNvbnRlbnQsIEdsb2JhbENvbnRlbnQsIGdsb2JhbENvbnRlbnREYXRhIH07XG4iXX0=
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRlY2gtY29tcG9uZW50cy9zcmMvbGliL3NlcnZpY2VzL2xhbmctcHJvdmlkZXIvY29udGVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFlBQVksTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQW9CLFdBQVcsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQU14RDs7OztHQUlHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBcUI7SUFDMUMsRUFBRSxFQUFFO1FBQ0YsaUJBQWlCO1FBQ2pCLEVBQUUsRUFBRSxTQUFTO1FBQ2IsTUFBTSxFQUFFLFVBQVU7UUFDbEIsSUFBSSxFQUFFLFNBQVM7UUFDZixNQUFNLEVBQUUsVUFBVTtRQUNsQixJQUFJLEVBQUUsUUFBUTtRQUNkLEtBQUssRUFBRSxRQUFRO1FBQ2YsSUFBSSxFQUFFLFFBQVE7UUFDZCxJQUFJLEVBQUUsV0FBVztRQUNqQixRQUFRLEVBQUUsVUFBVTtRQUNwQixNQUFNLEVBQUUsV0FBVztRQUNuQixRQUFRLEVBQUUsV0FBVztRQUVyQixpQkFBaUI7UUFDakIsR0FBRyxFQUFFLFNBQVM7UUFDZCxNQUFNLEVBQUUsUUFBUTtRQUNoQixNQUFNLEVBQUUsUUFBUTtRQUNoQixNQUFNLEVBQUUsU0FBUztRQUNqQixJQUFJLEVBQUUsU0FBUztRQUNmLE9BQU8sRUFBRSxZQUFZO1FBRXJCLDZCQUE2QjtRQUM3QixPQUFPLEVBQUUsYUFBYTtRQUN0QixNQUFNLEVBQUUsMEJBQTBCO1FBQ2xDLEtBQUssRUFBRSxPQUFPO1FBQ2QsT0FBTyxFQUFFLE9BQU87UUFDaEIsT0FBTyxFQUFFLGFBQWE7UUFDdEIsSUFBSSxFQUFFLGFBQWE7UUFFbkIsdUJBQXVCO1FBQ3ZCLFVBQVUsRUFBRSxnQkFBZ0I7UUFDNUIsa0JBQWtCLEVBQUUsa0RBQWtEO1FBQ3RFLGNBQWMsRUFBRSxnREFBZ0Q7UUFFaEUsc0JBQXNCO1FBQ3RCLGlCQUFpQixFQUFFLFdBQVc7S0FDL0I7SUFDRCxFQUFFLEVBQUU7UUFDRixpQkFBaUI7UUFDakIsRUFBRSxFQUFFLElBQUk7UUFDUixNQUFNLEVBQUUsUUFBUTtRQUNoQixJQUFJLEVBQUUsTUFBTTtRQUNaLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLElBQUksRUFBRSxNQUFNO1FBQ1osS0FBSyxFQUFFLE9BQU87UUFDZCxJQUFJLEVBQUUsTUFBTTtRQUNaLElBQUksRUFBRSxNQUFNO1FBQ1osUUFBUSxFQUFFLFVBQVU7UUFDcEIsTUFBTSxFQUFFLFFBQVE7UUFDaEIsUUFBUSxFQUFFLFVBQVU7UUFFcEIsaUJBQWlCO1FBQ2pCLEdBQUcsRUFBRSxLQUFLO1FBQ1YsTUFBTSxFQUFFLFFBQVE7UUFDaEIsTUFBTSxFQUFFLFFBQVE7UUFDaEIsTUFBTSxFQUFFLFFBQVE7UUFDaEIsSUFBSSxFQUFFLE1BQU07UUFDWixPQUFPLEVBQUUsU0FBUztRQUVsQiw2QkFBNkI7UUFDN0IsT0FBTyxFQUFFLFlBQVk7UUFDckIsTUFBTSxFQUFFLG1CQUFtQjtRQUMzQixLQUFLLEVBQUUsT0FBTztRQUNkLE9BQU8sRUFBRSxTQUFTO1FBQ2xCLE9BQU8sRUFBRSxTQUFTO1FBQ2xCLElBQUksRUFBRSxhQUFhO1FBRW5CLHVCQUF1QjtRQUN2QixVQUFVLEVBQUUsZUFBZTtRQUMzQixrQkFBa0IsRUFBRSw2Q0FBNkM7UUFDakUsY0FBYyxFQUFFLG9EQUFvRDtRQUVwRSxzQkFBc0I7UUFDdEIsaUJBQWlCLEVBQUUsV0FBVztLQUMvQjtDQUNGLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxJQUFJLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBRXpELE1BQU0sT0FBTyxHQUFhO0lBQ3hCLE9BQU8sRUFBRSxhQUFhO0lBQ3RCLFlBQVk7Q0FDYixDQUFDO0FBRUYsZUFBZSxPQUFPLENBQUM7QUFFdkIsNENBQTRDO0FBQzVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTGFuZ1NldHRpbmdzIGZyb20gJy4vY29tcG9uZW50cy9sYW5nLXNldHRpbmdzJztcbmltcG9ydCB7IExhbmd1YWdlc0NvbnRlbnQsIFRleHRDb250ZW50IH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvdmlkZXIge1xuICBbeDogc3RyaW5nXTogVGV4dENvbnRlbnQ7XG59XG5cbi8qKlxuICogR2xvYmFsIGNvbnRlbnQgdGhhdCBjYW4gYmUgdXNlZCBhY3Jvc3MgYWxsIGNvbXBvbmVudHMuXG4gKiBUaGVzZSBhcmUgY29tbW9uIHRleHRzIGxpa2UgYnV0dG9ucywgYWN0aW9ucywgc3RhdGVzLCBldGMuXG4gKiBTdHJ1Y3R1cmU6IHtlczoge2tleTE6ICd2YWx1ZTEnLCBrZXkyOiAndmFsdWUyJ30sIGVuOiB7a2V5MTogJ3ZhbHVlMScsIGtleTI6ICd2YWx1ZTInfX1cbiAqL1xuY29uc3QgZ2xvYmFsQ29udGVudERhdGE6IExhbmd1YWdlc0NvbnRlbnQgPSB7XG4gIGVzOiB7XG4gICAgLy8gQ29tbW9uIGJ1dHRvbnNcbiAgICBvazogJ0FjZXB0YXInLFxuICAgIGNhbmNlbDogJ0NhbmNlbGFyJyxcbiAgICBzYXZlOiAnR3VhcmRhcicsXG4gICAgZGVsZXRlOiAnRWxpbWluYXInLFxuICAgIGVkaXQ6ICdFZGl0YXInLFxuICAgIGNsb3NlOiAnQ2VycmFyJyxcbiAgICBiYWNrOiAnVm9sdmVyJyxcbiAgICBuZXh0OiAnU2lndWllbnRlJyxcbiAgICBwcmV2aW91czogJ0FudGVyaW9yJyxcbiAgICBmaW5pc2g6ICdGaW5hbGl6YXInLFxuICAgIGNvbnRpbnVlOiAnQ29udGludWFyJyxcblxuICAgIC8vIENvbW1vbiBhY3Rpb25zXG4gICAgYWRkOiAnQWdyZWdhcicsXG4gICAgcmVtb3ZlOiAnUXVpdGFyJyxcbiAgICBzZWFyY2g6ICdCdXNjYXInLFxuICAgIGZpbHRlcjogJ0ZpbHRyYXInLFxuICAgIHNvcnQ6ICdPcmRlbmFyJyxcbiAgICByZWZyZXNoOiAnQWN0dWFsaXphcicsXG5cbiAgICAvLyBDb21tb24gc3RhdGVzIGFuZCBtZXNzYWdlc1xuICAgIGxvYWRpbmc6ICdDYXJnYW5kby4uLicsXG4gICAgbm9EYXRhOiAnTm8gaGF5IGRhdG9zIGRpc3BvbmlibGVzJyxcbiAgICBlcnJvcjogJ0Vycm9yJyxcbiAgICBzdWNjZXNzOiAnw4l4aXRvJyxcbiAgICB3YXJuaW5nOiAnQWR2ZXJ0ZW5jaWEnLFxuICAgIGluZm86ICdJbmZvcm1hY2nDs24nLFxuXG4gICAgLy8gQ29tbW9uIGNvbmZpcm1hdGlvbnNcbiAgICBhcmVZb3VTdXJlOiAnwr9Fc3TDoXMgc2VndXJvPycsXG4gICAgZGVsZXRlQ29uZmlybWF0aW9uOiAnwr9Fc3TDoXMgc2VndXJvIGRlIHF1ZSBkZXNlYXMgZWxpbWluYXIge2l0ZW1OYW1lfT8nLFxuICAgIHVuc2F2ZWRDaGFuZ2VzOiAnVGllbmVzIGNhbWJpb3Mgc2luIGd1YXJkYXIuIMK/RGVzZWFzIGNvbnRpbnVhcj8nLFxuXG4gICAgLy8gQ29tbW9uIHBsYWNlaG9sZGVyc1xuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnQnVzY2FyLi4uJyxcbiAgfSxcbiAgZW46IHtcbiAgICAvLyBDb21tb24gYnV0dG9uc1xuICAgIG9rOiAnT0snLFxuICAgIGNhbmNlbDogJ0NhbmNlbCcsXG4gICAgc2F2ZTogJ1NhdmUnLFxuICAgIGRlbGV0ZTogJ0RlbGV0ZScsXG4gICAgZWRpdDogJ0VkaXQnLFxuICAgIGNsb3NlOiAnQ2xvc2UnLFxuICAgIGJhY2s6ICdCYWNrJyxcbiAgICBuZXh0OiAnTmV4dCcsXG4gICAgcHJldmlvdXM6ICdQcmV2aW91cycsXG4gICAgZmluaXNoOiAnRmluaXNoJyxcbiAgICBjb250aW51ZTogJ0NvbnRpbnVlJyxcblxuICAgIC8vIENvbW1vbiBhY3Rpb25zXG4gICAgYWRkOiAnQWRkJyxcbiAgICByZW1vdmU6ICdSZW1vdmUnLFxuICAgIHNlYXJjaDogJ1NlYXJjaCcsXG4gICAgZmlsdGVyOiAnRmlsdGVyJyxcbiAgICBzb3J0OiAnU29ydCcsXG4gICAgcmVmcmVzaDogJ1JlZnJlc2gnLFxuXG4gICAgLy8gQ29tbW9uIHN0YXRlcyBhbmQgbWVzc2FnZXNcbiAgICBsb2FkaW5nOiAnTG9hZGluZy4uLicsXG4gICAgbm9EYXRhOiAnTm8gZGF0YSBhdmFpbGFibGUnLFxuICAgIGVycm9yOiAnRXJyb3InLFxuICAgIHN1Y2Nlc3M6ICdTdWNjZXNzJyxcbiAgICB3YXJuaW5nOiAnV2FybmluZycsXG4gICAgaW5mbzogJ0luZm9ybWF0aW9uJyxcblxuICAgIC8vIENvbW1vbiBjb25maXJtYXRpb25zXG4gICAgYXJlWW91U3VyZTogJ0FyZSB5b3Ugc3VyZT8nLFxuICAgIGRlbGV0ZUNvbmZpcm1hdGlvbjogJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUge2l0ZW1OYW1lfT8nLFxuICAgIHVuc2F2ZWRDaGFuZ2VzOiAnWW91IGhhdmUgdW5zYXZlZCBjaGFuZ2VzLiBEbyB5b3Ugd2FudCB0byBjb250aW51ZT8nLFxuXG4gICAgLy8gQ29tbW9uIHBsYWNlaG9sZGVyc1xuICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnU2VhcmNoLi4uJyxcbiAgfSxcbn07XG5cbmNvbnN0IEdsb2JhbENvbnRlbnQgPSBuZXcgVGV4dENvbnRlbnQoZ2xvYmFsQ29udGVudERhdGEpO1xuXG5jb25zdCBjb250ZW50OiBQcm92aWRlciA9IHtcbiAgX2dsb2JhbDogR2xvYmFsQ29udGVudCxcbiAgTGFuZ1NldHRpbmdzLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgY29udGVudDtcblxuLy8gRXhwb3J0IG5hbWVkIGV4cG9ydHMgZm9yIHVzZXIgY29udmVuaWVuY2VcbmV4cG9ydCB7IGNvbnRlbnQsIEdsb2JhbENvbnRlbnQsIGdsb2JhbENvbnRlbnREYXRhIH07XG4iXX0=