wm-menu 1.3.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/bundles/wm-menu.umd.js +408 -9
  2. package/bundles/wm-menu.umd.js.map +1 -1
  3. package/bundles/wm-menu.umd.min.js +2 -2
  4. package/bundles/wm-menu.umd.min.js.map +1 -1
  5. package/esm2015/lib/wm-menu/asistente-datos/asistente-datos-api.service.js +52 -0
  6. package/esm2015/lib/wm-menu/asistente-datos/asistente-datos.component.js +178 -0
  7. package/esm2015/lib/wm-menu/asistente-datos/reconocimiento-voz.service.js +77 -0
  8. package/esm2015/lib/wm-menu/services/wm-menu-fuente-iconos.service.js +58 -0
  9. package/esm2015/lib/wm-menu/services/wm-menu-servicio.service.js +9 -1
  10. package/esm2015/lib/wm-menu/wm-menu.component.js +37 -5
  11. package/esm2015/lib/wm-menu.module.js +9 -2
  12. package/esm2015/wm-menu.js +5 -1
  13. package/esm5/lib/wm-menu/asistente-datos/asistente-datos-api.service.js +53 -0
  14. package/esm5/lib/wm-menu/asistente-datos/asistente-datos.component.js +194 -0
  15. package/esm5/lib/wm-menu/asistente-datos/reconocimiento-voz.service.js +79 -0
  16. package/esm5/lib/wm-menu/services/wm-menu-fuente-iconos.service.js +45 -0
  17. package/esm5/lib/wm-menu/services/wm-menu-servicio.service.js +9 -1
  18. package/esm5/lib/wm-menu/wm-menu.component.js +41 -5
  19. package/esm5/lib/wm-menu.module.js +9 -2
  20. package/esm5/wm-menu.js +5 -1
  21. package/fesm2015/wm-menu.js +395 -7
  22. package/fesm2015/wm-menu.js.map +1 -1
  23. package/fesm5/wm-menu.js +405 -7
  24. package/fesm5/wm-menu.js.map +1 -1
  25. package/lib/wm-menu/asistente-datos/asistente-datos-api.service.d.ts +26 -0
  26. package/lib/wm-menu/asistente-datos/asistente-datos.component.d.ts +39 -0
  27. package/lib/wm-menu/asistente-datos/reconocimiento-voz.service.d.ts +7 -0
  28. package/lib/wm-menu/services/wm-menu-fuente-iconos.service.d.ts +4 -0
  29. package/lib/wm-menu/services/wm-menu-servicio.service.d.ts +1 -0
  30. package/lib/wm-menu/wm-menu.component.d.ts +10 -1
  31. package/package.json +1 -1
  32. package/wm-menu.d.ts +4 -0
  33. package/wm-menu.metadata.json +1 -1
@@ -0,0 +1,194 @@
1
+ import { __decorate } from "tslib";
2
+ import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
3
+ import { ReconocimientoVozService } from './reconocimiento-voz.service';
4
+ import { AsistenteDatosApiService } from './asistente-datos-api.service';
5
+ var AsistenteDatosComponent = /** @class */ (function () {
6
+ function AsistenteDatosComponent(asistenteDatosApiService, reconocimientoVoz) {
7
+ this.asistenteDatosApiService = asistenteDatosApiService;
8
+ this.reconocimientoVoz = reconocimientoVoz;
9
+ // La apertura/cierre del panel la controla el padre (el menú). El panel solo se renderiza
10
+ // cuando `abierto` es true y avisa, vía `cerrarChange`, cuando el usuario toca la X.
11
+ this.abierto = false;
12
+ // Idioma para el reconocimiento de voz (Web Speech API).
13
+ this.idioma = 'es-CO';
14
+ this.cerrarChange = new EventEmitter();
15
+ this.mensajes = [];
16
+ this.borrador = '';
17
+ // Alterna el alto de la caja del mensaje (compacta ↔ expandida), igual que el "pedir cambios"
18
+ // del asistente de IA del generador de formularios (ver filasBorrador / onClickExpandirBorrador).
19
+ this.borradorExpandido = false;
20
+ this.consultando = false;
21
+ // "Gemini" o "Groq" — mismo selector que el asistente de generación de formularios
22
+ // (ver ProveedorIAServicio en el backend).
23
+ this.proveedorSeleccionado = 'Gemini';
24
+ // Dictado por voz (Web Speech API) — sin soporte en Firefox, inconsistente en Safari.
25
+ this.escuchando = false;
26
+ // Preguntas ya verificadas como respondibles hoy (whitelist + contrato de la IA — ver
27
+ // ChatConsultaWhitelistServicio/ChatConsultaPromptServicio en el backend), mostradas como chips
28
+ // de sugerencia en el estado vacío del chat.
29
+ this.chipsSugeridos = [
30
+ '¿Cuántos formularios se diligenciaron hoy?',
31
+ '¿Cuántos formularios se diligenciaron esta semana?',
32
+ 'Muéstrame los últimos 10 formularios diligenciados',
33
+ ];
34
+ }
35
+ Object.defineProperty(AsistenteDatosComponent.prototype, "urlConsultar", {
36
+ // URL del POST de consulta. Se refleja en el api service (propiedad `url`), que es donde se usa.
37
+ set: function (valor) {
38
+ if (valor) {
39
+ this.asistenteDatosApiService.url = valor;
40
+ }
41
+ },
42
+ enumerable: true,
43
+ configurable: true
44
+ });
45
+ // El padre abre/cierra el panel; aquí solo se avisa que el usuario pidió cerrarlo (botón X).
46
+ AsistenteDatosComponent.prototype.cerrar = function () {
47
+ this.cerrarChange.emit();
48
+ };
49
+ Object.defineProperty(AsistenteDatosComponent.prototype, "filasBorrador", {
50
+ // Caja del mensaje compacta (1 fila, como era el chat originalmente) ↔ expandida (6 filas).
51
+ // El botón de expandir es el mismo patrón del "pedir cambios" del generador.
52
+ get: function () {
53
+ return this.borradorExpandido ? 6 : 1;
54
+ },
55
+ enumerable: true,
56
+ configurable: true
57
+ });
58
+ AsistenteDatosComponent.prototype.onClickExpandirBorrador = function () {
59
+ this.borradorExpandido = !this.borradorExpandido;
60
+ };
61
+ Object.defineProperty(AsistenteDatosComponent.prototype, "micDisponible", {
62
+ get: function () {
63
+ return this.reconocimientoVoz.estaSoportado();
64
+ },
65
+ enumerable: true,
66
+ configurable: true
67
+ });
68
+ AsistenteDatosComponent.prototype.onClickMicrofono = function () {
69
+ var _this = this;
70
+ if (this.escuchando) {
71
+ this.reconocimientoVoz.detener();
72
+ this.escuchando = false;
73
+ return;
74
+ }
75
+ if (!this.reconocimientoVoz.estaSoportado()) {
76
+ return;
77
+ }
78
+ // El resultado del reconocimiento no incluye lo que ya estaba escrito — se guarda antes de
79
+ // empezar y se antepone en cada actualización (que llega con la transcripción COMPLETA de
80
+ // esta sesión de escucha, no un incremento) para no perder lo que ya había en el campo.
81
+ var textoPrevio = this.borrador.trim();
82
+ this.escuchando = true;
83
+ this.reconocimientoVoz.iniciar(this.idioma, function (texto) { return (_this.borrador = textoPrevio ? textoPrevio + " " + texto : texto); }, function () { return (_this.escuchando = false); });
84
+ };
85
+ AsistenteDatosComponent.prototype.onClickEnviar = function (textoPreset) {
86
+ var _this = this;
87
+ var pregunta = ((textoPreset !== null && textoPreset !== void 0 ? textoPreset : this.borrador)).trim();
88
+ if (!pregunta || this.consultando) {
89
+ return;
90
+ }
91
+ this.mensajes.push({ deUsuario: true, texto: pregunta });
92
+ this.borrador = '';
93
+ // Sin url de consulta no se hace la petición: el usuario ve el mismo error genérico que
94
+ // cuando la API falla.
95
+ if (!this.asistenteDatosApiService.url) {
96
+ this.mensajes.push({
97
+ deUsuario: false,
98
+ texto: 'No se pudo procesar la consulta.',
99
+ esError: true,
100
+ });
101
+ this.scrollAlFinal();
102
+ return;
103
+ }
104
+ this.consultando = true;
105
+ this.scrollAlFinal();
106
+ this.asistenteDatosApiService.consultar(pregunta, this.proveedorSeleccionado).subscribe({
107
+ // El tipo (RespuestaAsistenteDatos) se infiere del Observable: importar la interfaz
108
+ // dejaba un import a un símbolo inexistente en el JS de la librería (aviso de rollup).
109
+ next: function (respuesta) {
110
+ var _a;
111
+ _this.consultando = false;
112
+ _this.mensajes.push({
113
+ deUsuario: false,
114
+ descripcion: respuesta.Descripcion,
115
+ resultado: (_a = respuesta.Resultado, (_a !== null && _a !== void 0 ? _a : [])),
116
+ proveedor: respuesta.Proveedor,
117
+ });
118
+ _this.scrollAlFinal();
119
+ },
120
+ error: function (error) {
121
+ var _a;
122
+ _this.consultando = false;
123
+ _this.mensajes.push({
124
+ deUsuario: false,
125
+ texto: ((_a = error) === null || _a === void 0 ? void 0 : _a.Mensaje) || 'No se pudo procesar la consulta.',
126
+ esError: true,
127
+ });
128
+ _this.scrollAlFinal();
129
+ },
130
+ });
131
+ };
132
+ // El nuevo mensaje recién se refleja en el DOM después del siguiente ciclo de detección de
133
+ // cambios — por eso el scrollTop se ajusta en un setTimeout(0), no inmediatamente después del
134
+ // push, para que scrollHeight ya incluya el mensaje agregado.
135
+ AsistenteDatosComponent.prototype.scrollAlFinal = function () {
136
+ var _this = this;
137
+ setTimeout(function () {
138
+ var _a;
139
+ var elemento = (_a = _this.mensajesContainer) === null || _a === void 0 ? void 0 : _a.nativeElement;
140
+ if (elemento) {
141
+ elemento.scrollTop = elemento.scrollHeight;
142
+ }
143
+ });
144
+ };
145
+ AsistenteDatosComponent.prototype.columnasDe = function (resultado) {
146
+ return resultado.length ? Object.keys(resultado[0]) : [];
147
+ };
148
+ // El backend devuelve un conteo (ChatConsultaIAServicio.EjecutarConteo) como una sola fila con
149
+ // una sola columna llamada literalmente "Resultado" — se muestra como número grande en vez de
150
+ // como tabla de una celda.
151
+ AsistenteDatosComponent.prototype.esConteo = function (resultado) {
152
+ var _a;
153
+ return ((_a = resultado) === null || _a === void 0 ? void 0 : _a.length) === 1 && Object.keys(resultado[0]).length === 1 && 'Resultado' in resultado[0];
154
+ };
155
+ // Listado con una sola columna (ej. una lista de nombres/ids) — se muestra como texto simple
156
+ // en vez de una tabla de una sola columna repetida.
157
+ AsistenteDatosComponent.prototype.esListaSimple = function (resultado) {
158
+ var _a;
159
+ return ((_a = resultado) === null || _a === void 0 ? void 0 : _a.length) > 0 && !this.esConteo(resultado) && this.columnasDe(resultado).length === 1;
160
+ };
161
+ AsistenteDatosComponent.prototype.textoListaSimple = function (resultado) {
162
+ var columna = this.columnasDe(resultado)[0];
163
+ return resultado.map(function (fila) { return fila[columna]; }).join(', ');
164
+ };
165
+ AsistenteDatosComponent.ctorParameters = function () { return [
166
+ { type: AsistenteDatosApiService },
167
+ { type: ReconocimientoVozService }
168
+ ]; };
169
+ __decorate([
170
+ ViewChild('mensajesContainer')
171
+ ], AsistenteDatosComponent.prototype, "mensajesContainer", void 0);
172
+ __decorate([
173
+ Input()
174
+ ], AsistenteDatosComponent.prototype, "abierto", void 0);
175
+ __decorate([
176
+ Input()
177
+ ], AsistenteDatosComponent.prototype, "urlConsultar", null);
178
+ __decorate([
179
+ Input()
180
+ ], AsistenteDatosComponent.prototype, "idioma", void 0);
181
+ __decorate([
182
+ Output()
183
+ ], AsistenteDatosComponent.prototype, "cerrarChange", void 0);
184
+ AsistenteDatosComponent = __decorate([
185
+ Component({
186
+ selector: 'wm-asistente-datos',
187
+ template: "<!-- Panel (abierto) -->\r\n<div class=\"chat-ia-panel\" *ngIf=\"abierto\">\r\n <div class=\"chat-ia-header\">\r\n <div class=\"chat-ia-header-info\">\r\n <div class=\"chat-ia-header-icono\">\r\n <svg width=\"17\" height=\"17\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1.8\">\r\n <path d=\"M4 5h16v10H9l-4 4V15H4z\"></path>\r\n </svg>\r\n </div>\r\n <div>\r\n <div class=\"chat-ia-titulo\">Preg\u00FAntale a tus Datos</div>\r\n <div class=\"chat-ia-subtitulo\">Consulta tus reportes en lenguaje natural</div>\r\n </div>\r\n </div>\r\n <div class=\"chat-ia-cerrar\" (click)=\"cerrar()\">\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" stroke=\"#fff\" stroke-width=\"2\" fill=\"none\" stroke-linecap=\"round\">\r\n <path d=\"M6 6l12 12M18 6L6 18\"></path>\r\n </svg>\r\n </div>\r\n </div>\r\n\r\n <div class=\"chat-ia-mensajes\" #mensajesContainer>\r\n <div class=\"chat-ia-bienvenida-texto\">Hola, soy tu asistente de datos de Snap Forms. Preg\u00FAntame lo que quieras saber sobre tu operaci\u00F3n.</div>\r\n\r\n <div class=\"chat-ia-mensaje\" *ngFor=\"let mensaje of mensajes\" [class.chat-ia-mensaje-usuario]=\"mensaje.deUsuario\">\r\n <div class=\"chat-ia-burbuja\" [class.chat-ia-burbuja-error]=\"mensaje.esError\">\r\n <span *ngIf=\"mensaje.texto\">{{ mensaje.texto }}</span>\r\n\r\n <ng-container *ngIf=\"mensaje.resultado\">\r\n <div class=\"chat-ia-descripcion\" *ngIf=\"mensaje.descripcion\">{{ mensaje.descripcion }}</div>\r\n\r\n <div class=\"chat-ia-sin-resultados\" *ngIf=\"mensaje.resultado.length === 0\">La consulta no encontr\u00F3 resultados.</div>\r\n\r\n <div class=\"chat-ia-stat\" *ngIf=\"esConteo(mensaje.resultado)\">\r\n <div class=\"chat-ia-stat-valor\">{{ mensaje.resultado[0].Resultado | number }}</div>\r\n </div>\r\n\r\n <div class=\"chat-ia-lista-simple\" *ngIf=\"esListaSimple(mensaje.resultado)\">{{ textoListaSimple(mensaje.resultado) }}</div>\r\n\r\n <div class=\"chat-ia-tabla-resultado\" *ngIf=\"mensaje.resultado.length > 0 && !esConteo(mensaje.resultado) && !esListaSimple(mensaje.resultado)\">\r\n <table mat-table [dataSource]=\"mensaje.resultado\">\r\n <ng-container *ngFor=\"let columna of columnasDe(mensaje.resultado)\" [matColumnDef]=\"columna\">\r\n <th mat-header-cell *matHeaderCellDef>{{ columna }}</th>\r\n <td mat-cell *matCellDef=\"let fila\">{{ fila[columna] }}</td>\r\n </ng-container>\r\n <tr mat-header-row *matHeaderRowDef=\"columnasDe(mensaje.resultado)\"></tr>\r\n <tr mat-row *matRowDef=\"let fila; columns: columnasDe(mensaje.resultado);\"></tr>\r\n </table>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"chat-ia-pensando\" *ngIf=\"consultando\">\r\n <span class=\"chat-ia-dot\"></span><span class=\"chat-ia-dot\"></span><span class=\"chat-ia-dot\"></span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"chips-chat-ia\">\r\n <span class=\"chip-chat-ia\" *ngFor=\"let chip of chipsSugeridos\"\r\n (click)=\"onClickEnviar(chip)\">{{ chip }}</span>\r\n </div>\r\n\r\n <div class=\"chat-ia-entrada\">\r\n <div class=\"chat-ia-caja-entrada\">\r\n <mat-icon fontSet=\"wm-menu-iconos\" class=\"chat-ia-expandir\" (click)=\"onClickExpandirBorrador()\">{{ borradorExpandido ? 'close_fullscreen' : 'open_in_full' }}</mat-icon>\r\n <textarea [rows]=\"filasBorrador\" [(ngModel)]=\"borrador\" (keydown.enter)=\"$event.preventDefault(); onClickEnviar()\"\r\n [class.chat-ia-textarea-expandido]=\"borradorExpandido\"\r\n placeholder=\"Escribe tu pregunta...\"></textarea>\r\n <div class=\"chat-ia-pie-entrada\">\r\n <button class=\"chat-ia-selector-modelo\" [matMenuTriggerFor]=\"menuModeloChatIA\" type=\"button\">\r\n <span *ngIf=\"proveedorSeleccionado === 'Gemini'\">Gemini</span>\r\n <span *ngIf=\"proveedorSeleccionado === 'Groq'\">Groq</span>\r\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M6 9l6 6 6-6\"></path>\r\n </svg>\r\n </button>\r\n <button class=\"chat-ia-microfono\" [class.chat-ia-microfono-activo]=\"escuchando\" *ngIf=\"micDisponible\"\r\n (click)=\"onClickMicrofono()\" type=\"button\">\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z\"></path>\r\n <path d=\"M19 10v2a7 7 0 0 1-14 0v-2\"></path>\r\n <line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"23\"></line>\r\n </svg>\r\n </button>\r\n <button class=\"chat-ia-enviar\" [disabled]=\"!borrador.trim() || consultando\" (click)=\"onClickEnviar()\" type=\"button\">\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M12 19V6\"></path>\r\n <path d=\"M5 13l7-7 7 7\"></path>\r\n </svg>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<mat-menu #menuModeloChatIA=\"matMenu\" class=\"menu-modelo-chat-ia\">\r\n <button mat-menu-item [class.opcion-activa]=\"proveedorSeleccionado === 'Gemini'\"\r\n (click)=\"proveedorSeleccionado = 'Gemini'\">\r\n <span>Gemini</span>\r\n <svg *ngIf=\"proveedorSeleccionado === 'Gemini'\" class=\"chat-ia-check\" width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M20 6L9 17l-5-5\"></path>\r\n </svg>\r\n </button>\r\n <button mat-menu-item [class.opcion-activa]=\"proveedorSeleccionado === 'Groq'\"\r\n (click)=\"proveedorSeleccionado = 'Groq'\">\r\n <span>Groq</span>\r\n <svg *ngIf=\"proveedorSeleccionado === 'Groq'\" class=\"chat-ia-check\" width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M20 6L9 17l-5-5\"></path>\r\n </svg>\r\n </button>\r\n</mat-menu>\r\n",
188
+ styles: [":host{position:fixed;right:32px;bottom:32px;z-index:1000;font-family:Roboto,sans-serif}.chat-ia-panel{width:450px;height:650px;max-width:calc(100vw - 48px);max-height:calc(100vh - 96px);background:#fff;border-radius:18px;box-shadow:0 24px 60px rgba(20,25,30,.28);display:flex;flex-direction:column;overflow:hidden}.chat-ia-header{background:linear-gradient(135deg,#7c5ce0,#5f42bd);padding:16px 18px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.chat-ia-header-info{display:flex;align-items:center;gap:10px;min-width:0}.chat-ia-header-icono{width:32px;height:32px;border-radius:50%;background:rgba(255,255,255,.22);display:flex;align-items:center;justify-content:center;flex:none}.chat-ia-titulo{color:#fff;font-size:14px;font-weight:500}.chat-ia-subtitulo{color:rgba(255,255,255,.75);font-size:11px;margin-top:1px}.chat-ia-cerrar{width:24px;height:24px;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:.85;flex:none}.chat-ia-cerrar:hover{opacity:1}.chat-ia-mensajes{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:12px;padding:16px;background:#fbfafc}.chat-ia-mensaje{display:flex}.chat-ia-mensaje .chat-ia-burbuja{max-width:88%;background:#f2eefb;color:#26313a;border-radius:14px 14px 14px 3px;padding:10px 13px;font-size:13px;line-height:1.5}.chat-ia-mensaje .chat-ia-burbuja-error{background:#fdecea;color:#7a1f14}.chat-ia-mensaje.chat-ia-mensaje-usuario{justify-content:flex-end}.chat-ia-mensaje.chat-ia-mensaje-usuario .chat-ia-burbuja{background:#7c5ce0;color:#fff;border-radius:14px 14px 3px}.chat-ia-bienvenida-texto{align-self:flex-start;max-width:88%;background:#f2eefb;color:#26313a;border-radius:14px 14px 14px 3px;padding:10px 13px;font-size:13px;line-height:1.5}.chips-chat-ia{flex:none;display:flex;flex-wrap:wrap;gap:6px;padding:0 16px 10px}.chip-chat-ia{border:1px solid #e7e2f5;background:#f2eefb;color:#5f42bd;border-radius:14px;padding:5px 10px;font-size:11px;cursor:pointer}.chip-chat-ia:hover{background:#e7ddfa}.chat-ia-descripcion{font-size:13px;line-height:1.5;margin-bottom:6px}.chat-ia-sin-resultados{color:#5a5a5a;font-style:italic}.chat-ia-stat{margin-top:4px}.chat-ia-stat-valor{font-size:30px;font-weight:600;color:#5f42bd;line-height:1.15;font-variant-numeric:proportional-nums}.chat-ia-lista-simple,.chat-ia-tabla-resultado{margin-top:4px;background:#fff;border-radius:10px;padding:8px 10px}.chat-ia-lista-simple{font-size:13px;line-height:1.5}.chat-ia-tabla-resultado{overflow-x:auto;max-width:100%;padding:4px 10px}.chat-ia-tabla-resultado table{font-size:12px;background:0 0}.chat-ia-tabla-resultado th.mat-header-cell{color:#6b6478;font-weight:600;padding:0 14px 5px 0;border-bottom:1px solid #f0edf7;white-space:nowrap}.chat-ia-tabla-resultado td.mat-cell{padding:7px 14px 0 0;white-space:nowrap;font-variant-numeric:tabular-nums}.chat-ia-pensando{align-self:flex-start;background:#f2eefb;padding:12px 16px;border-radius:14px 14px 14px 3px;display:flex;gap:5px;flex-shrink:0}.chat-ia-dot{width:6px;height:6px;border-radius:50%;background:#9a93ae;-webkit-animation:1.1s ease-in-out infinite chatIaBlink;animation:1.1s ease-in-out infinite chatIaBlink}.chat-ia-dot:nth-child(2){-webkit-animation-delay:.15s;animation-delay:.15s}.chat-ia-dot:nth-child(3){-webkit-animation-delay:.3s;animation-delay:.3s}@-webkit-keyframes chatIaBlink{0%,100%,80%{opacity:.25}40%{opacity:1}}@keyframes chatIaBlink{0%,100%,80%{opacity:.25}40%{opacity:1}}.chat-ia-entrada{padding:10px 14px 14px;border-top:1px solid #e9f2ee;flex-shrink:0}.chat-ia-caja-entrada{position:relative;background:#f2f7f5;border:1px solid #e6efea;border-radius:18px;padding:10px 12px 8px}.chat-ia-caja-entrada textarea{border:none;outline:0;background:0 0;width:100%;font:inherit;font-size:13.5px;color:#26313a;resize:none;line-height:1.45;max-height:110px;overflow-y:auto;display:block;padding:0 28px 0 0}.chat-ia-caja-entrada textarea.chat-ia-textarea-expandido{max-height:160px}.chat-ia-caja-entrada textarea::-webkit-input-placeholder{color:#9a93ae}.chat-ia-caja-entrada textarea::-moz-placeholder{color:#9a93ae}.chat-ia-caja-entrada textarea:-ms-input-placeholder{color:#9a93ae}.chat-ia-caja-entrada textarea::-ms-input-placeholder{color:#9a93ae}.chat-ia-caja-entrada textarea::placeholder{color:#9a93ae}.chat-ia-expandir{position:absolute;top:8px;right:10px;font-size:17px;height:17px;width:17px;color:#9a9a9a;cursor:pointer}.chat-ia-pie-entrada{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-top:8px}.chat-ia-selector-modelo{display:inline-flex;align-items:center;gap:4px;border:none;background:0 0;color:#4e5d57;border-radius:14px;padding:5px 9px;font-size:11.5px;font-weight:600;cursor:pointer}.chat-ia-enviar{width:32px;height:32px;border-radius:50%;border:none;background:#7c5ce0;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;flex:none}.chat-ia-enviar:disabled{background:#dce6e1;color:#a9bab3;cursor:default}.chat-ia-microfono{width:28px;height:28px;border-radius:50%;border:none;background:0 0;color:#6b6478;display:flex;align-items:center;justify-content:center;cursor:pointer;flex:none}.chat-ia-microfono:hover{background:#f2eefb}.chat-ia-microfono.chat-ia-microfono-activo{color:#fff;background:#e05a5a;-webkit-animation:1.1s ease-in-out infinite chatIaBlink;animation:1.1s ease-in-out infinite chatIaBlink}::ng-deep .mat-menu-panel.menu-modelo-chat-ia{min-width:132px;border:1px solid #e6efea;border-radius:10px;box-shadow:0 12px 26px rgba(20,25,30,.16)}::ng-deep .mat-menu-panel.menu-modelo-chat-ia .mat-menu-content{padding:4px}::ng-deep .mat-menu-panel.menu-modelo-chat-ia .mat-menu-item{display:flex;align-items:center;justify-content:space-between;gap:8px;height:auto;line-height:normal;padding:7px 10px;font-size:12px;color:#26313a;border-radius:7px}::ng-deep .mat-menu-panel.menu-modelo-chat-ia .mat-menu-item.opcion-activa{background:#f2f7f5}::ng-deep .mat-menu-panel.menu-modelo-chat-ia .mat-menu-item .chat-ia-check{color:#7c5ce0}"]
189
+ })
190
+ ], AsistenteDatosComponent);
191
+ return AsistenteDatosComponent;
192
+ }());
193
+ export { AsistenteDatosComponent };
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpc3RlbnRlLWRhdG9zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL3dtLW1lbnUvIiwic291cmNlcyI6WyJsaWIvd20tbWVudS9hc2lzdGVudGUtZGF0b3MvYXNpc3RlbnRlLWRhdG9zLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFnQnpFO0lBd0NJLGlDQUNZLHdCQUFrRCxFQUNsRCxpQkFBMkM7UUFEM0MsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQTBCO1FBdkN2RCwwRkFBMEY7UUFDMUYscUZBQXFGO1FBQzVFLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFTekIseURBQXlEO1FBQ2hELFdBQU0sR0FBRyxPQUFPLENBQUM7UUFFaEIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTNDLGFBQVEsR0FBNEIsRUFBRSxDQUFDO1FBQ3ZDLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDckIsOEZBQThGO1FBQzlGLGtHQUFrRztRQUMzRixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDM0IsbUZBQW1GO1FBQ25GLDJDQUEyQztRQUNwQywwQkFBcUIsR0FBc0IsUUFBUSxDQUFDO1FBQzNELHNGQUFzRjtRQUMvRSxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRTFCLHNGQUFzRjtRQUN0RixnR0FBZ0c7UUFDaEcsNkNBQTZDO1FBQ3RDLG1CQUFjLEdBQWE7WUFDOUIsNENBQTRDO1lBQzVDLG9EQUFvRDtZQUNwRCxvREFBb0Q7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SUFJOUU7UUFBUixLQUFLLEVBQUU7NERBQWlCO0lBR2hCO1FBQVIsS0FBSyxFQUFFOytEQUlQO0lBR1E7UUFBUixLQUFLLEVBQUU7MkRBQWtCO0lBRWhCO1FBQVQsTUFBTSxFQUFFO2lFQUF5QztJQWpCekMsdUJBQXVCO1FBTG5DLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSxvQkFBb0I7WUFDOUIsc25PQUErQzs7U0FFbEQsQ0FBQztPQUNXLHVCQUF1QixDQXlLbkM7SUFBRCw4QkFBQztDQUFBLEFBektELElBeUtDO1NBektZLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVjb25vY2ltaWVudG9Wb3pTZXJ2aWNlIH0gZnJvbSAnLi9yZWNvbm9jaW1pZW50by12b3ouc2VydmljZSc7XHJcbmltcG9ydCB7IEFzaXN0ZW50ZURhdG9zQXBpU2VydmljZSB9IGZyb20gJy4vYXNpc3RlbnRlLWRhdG9zLWFwaS5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWVuc2FqZUFzaXN0ZW50ZURhdG9zIHtcclxuICAgIGRlVXN1YXJpbzogYm9vbGVhbjtcclxuICAgIHRleHRvPzogc3RyaW5nO1xyXG4gICAgZGVzY3JpcGNpb24/OiBzdHJpbmc7XHJcbiAgICByZXN1bHRhZG8/OiBhbnlbXTtcclxuICAgIHByb3ZlZWRvcj86IHN0cmluZztcclxuICAgIGVzRXJyb3I/OiBib29sZWFuO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnd20tYXNpc3RlbnRlLWRhdG9zJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9hc2lzdGVudGUtZGF0b3MuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vYXNpc3RlbnRlLWRhdG9zLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBc2lzdGVudGVEYXRvc0NvbXBvbmVudCB7XHJcbiAgICBAVmlld0NoaWxkKCdtZW5zYWplc0NvbnRhaW5lcicpIHByaXZhdGUgbWVuc2FqZXNDb250YWluZXI/OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHJcbiAgICAvLyBMYSBhcGVydHVyYS9jaWVycmUgZGVsIHBhbmVsIGxhIGNvbnRyb2xhIGVsIHBhZHJlIChlbCBtZW7DuikuIEVsIHBhbmVsIHNvbG8gc2UgcmVuZGVyaXphXHJcbiAgICAvLyBjdWFuZG8gYGFiaWVydG9gIGVzIHRydWUgeSBhdmlzYSwgdsOtYSBgY2VycmFyQ2hhbmdlYCwgY3VhbmRvIGVsIHVzdWFyaW8gdG9jYSBsYSBYLlxyXG4gICAgQElucHV0KCkgYWJpZXJ0byA9IGZhbHNlO1xyXG5cclxuICAgIC8vIFVSTCBkZWwgUE9TVCBkZSBjb25zdWx0YS4gU2UgcmVmbGVqYSBlbiBlbCBhcGkgc2VydmljZSAocHJvcGllZGFkIGB1cmxgKSwgcXVlIGVzIGRvbmRlIHNlIHVzYS5cclxuICAgIEBJbnB1dCgpIHNldCB1cmxDb25zdWx0YXIodmFsb3I6IHN0cmluZykge1xyXG4gICAgICAgIGlmICh2YWxvcikge1xyXG4gICAgICAgICAgICB0aGlzLmFzaXN0ZW50ZURhdG9zQXBpU2VydmljZS51cmwgPSB2YWxvcjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWRpb21hIHBhcmEgZWwgcmVjb25vY2ltaWVudG8gZGUgdm96IChXZWIgU3BlZWNoIEFQSSkuXHJcbiAgICBASW5wdXQoKSBpZGlvbWEgPSAnZXMtQ08nO1xyXG5cclxuICAgIEBPdXRwdXQoKSBjZXJyYXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgcHVibGljIG1lbnNhamVzOiBNZW5zYWplQXNpc3RlbnRlRGF0b3NbXSA9IFtdO1xyXG4gICAgcHVibGljIGJvcnJhZG9yID0gJyc7XHJcbiAgICAvLyBBbHRlcm5hIGVsIGFsdG8gZGUgbGEgY2FqYSBkZWwgbWVuc2FqZSAoY29tcGFjdGEg4oaUIGV4cGFuZGlkYSksIGlndWFsIHF1ZSBlbCBcInBlZGlyIGNhbWJpb3NcIlxyXG4gICAgLy8gZGVsIGFzaXN0ZW50ZSBkZSBJQSBkZWwgZ2VuZXJhZG9yIGRlIGZvcm11bGFyaW9zICh2ZXIgZmlsYXNCb3JyYWRvciAvIG9uQ2xpY2tFeHBhbmRpckJvcnJhZG9yKS5cclxuICAgIHB1YmxpYyBib3JyYWRvckV4cGFuZGlkbyA9IGZhbHNlO1xyXG4gICAgcHVibGljIGNvbnN1bHRhbmRvID0gZmFsc2U7XHJcbiAgICAvLyBcIkdlbWluaVwiIG8gXCJHcm9xXCIg4oCUIG1pc21vIHNlbGVjdG9yIHF1ZSBlbCBhc2lzdGVudGUgZGUgZ2VuZXJhY2nDs24gZGUgZm9ybXVsYXJpb3NcclxuICAgIC8vICh2ZXIgUHJvdmVlZG9ySUFTZXJ2aWNpbyBlbiBlbCBiYWNrZW5kKS5cclxuICAgIHB1YmxpYyBwcm92ZWVkb3JTZWxlY2Npb25hZG86ICdHZW1pbmknIHwgJ0dyb3EnID0gJ0dlbWluaSc7XHJcbiAgICAvLyBEaWN0YWRvIHBvciB2b3ogKFdlYiBTcGVlY2ggQVBJKSDigJQgc2luIHNvcG9ydGUgZW4gRmlyZWZveCwgaW5jb25zaXN0ZW50ZSBlbiBTYWZhcmkuXHJcbiAgICBwdWJsaWMgZXNjdWNoYW5kbyA9IGZhbHNlO1xyXG5cclxuICAgIC8vIFByZWd1bnRhcyB5YSB2ZXJpZmljYWRhcyBjb21vIHJlc3BvbmRpYmxlcyBob3kgKHdoaXRlbGlzdCArIGNvbnRyYXRvIGRlIGxhIElBIOKAlCB2ZXJcclxuICAgIC8vIENoYXRDb25zdWx0YVdoaXRlbGlzdFNlcnZpY2lvL0NoYXRDb25zdWx0YVByb21wdFNlcnZpY2lvIGVuIGVsIGJhY2tlbmQpLCBtb3N0cmFkYXMgY29tbyBjaGlwc1xyXG4gICAgLy8gZGUgc3VnZXJlbmNpYSBlbiBlbCBlc3RhZG8gdmFjw61vIGRlbCBjaGF0LlxyXG4gICAgcHVibGljIGNoaXBzU3VnZXJpZG9zOiBzdHJpbmdbXSA9IFtcclxuICAgICAgICAnwr9DdcOhbnRvcyBmb3JtdWxhcmlvcyBzZSBkaWxpZ2VuY2lhcm9uIGhveT8nLFxyXG4gICAgICAgICfCv0N1w6FudG9zIGZvcm11bGFyaW9zIHNlIGRpbGlnZW5jaWFyb24gZXN0YSBzZW1hbmE/JyxcclxuICAgICAgICAnTXXDqXN0cmFtZSBsb3Mgw7psdGltb3MgMTAgZm9ybXVsYXJpb3MgZGlsaWdlbmNpYWRvcycsXHJcbiAgICBdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgYXNpc3RlbnRlRGF0b3NBcGlTZXJ2aWNlOiBBc2lzdGVudGVEYXRvc0FwaVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWNvbm9jaW1pZW50b1ZvejogUmVjb25vY2ltaWVudG9Wb3pTZXJ2aWNlXHJcbiAgICApIHt9XHJcblxyXG4gICAgLy8gRWwgcGFkcmUgYWJyZS9jaWVycmEgZWwgcGFuZWw7IGFxdcOtIHNvbG8gc2UgYXZpc2EgcXVlIGVsIHVzdWFyaW8gcGlkacOzIGNlcnJhcmxvIChib3TDs24gWCkuXHJcbiAgICBjZXJyYXIoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jZXJyYXJDaGFuZ2UuZW1pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENhamEgZGVsIG1lbnNhamUgY29tcGFjdGEgKDEgZmlsYSwgY29tbyBlcmEgZWwgY2hhdCBvcmlnaW5hbG1lbnRlKSDihpQgZXhwYW5kaWRhICg2IGZpbGFzKS5cclxuICAgIC8vIEVsIGJvdMOzbiBkZSBleHBhbmRpciBlcyBlbCBtaXNtbyBwYXRyw7NuIGRlbCBcInBlZGlyIGNhbWJpb3NcIiBkZWwgZ2VuZXJhZG9yLlxyXG4gICAgZ2V0IGZpbGFzQm9ycmFkb3IoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5ib3JyYWRvckV4cGFuZGlkbyA/IDYgOiAxO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2xpY2tFeHBhbmRpckJvcnJhZG9yKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuYm9ycmFkb3JFeHBhbmRpZG8gPSAhdGhpcy5ib3JyYWRvckV4cGFuZGlkbztcclxuICAgIH1cclxuXHJcbiAgICBnZXQgbWljRGlzcG9uaWJsZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZWNvbm9jaW1pZW50b1Zvei5lc3RhU29wb3J0YWRvKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DbGlja01pY3JvZm9ubygpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5lc2N1Y2hhbmRvKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVjb25vY2ltaWVudG9Wb3ouZGV0ZW5lcigpO1xyXG4gICAgICAgICAgICB0aGlzLmVzY3VjaGFuZG8gPSBmYWxzZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnJlY29ub2NpbWllbnRvVm96LmVzdGFTb3BvcnRhZG8oKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBFbCByZXN1bHRhZG8gZGVsIHJlY29ub2NpbWllbnRvIG5vIGluY2x1eWUgbG8gcXVlIHlhIGVzdGFiYSBlc2NyaXRvIOKAlCBzZSBndWFyZGEgYW50ZXMgZGVcclxuICAgICAgICAvLyBlbXBlemFyIHkgc2UgYW50ZXBvbmUgZW4gY2FkYSBhY3R1YWxpemFjacOzbiAocXVlIGxsZWdhIGNvbiBsYSB0cmFuc2NyaXBjacOzbiBDT01QTEVUQSBkZVxyXG4gICAgICAgIC8vIGVzdGEgc2VzacOzbiBkZSBlc2N1Y2hhLCBubyB1biBpbmNyZW1lbnRvKSBwYXJhIG5vIHBlcmRlciBsbyBxdWUgeWEgaGFiw61hIGVuIGVsIGNhbXBvLlxyXG4gICAgICAgIGNvbnN0IHRleHRvUHJldmlvID0gdGhpcy5ib3JyYWRvci50cmltKCk7XHJcbiAgICAgICAgdGhpcy5lc2N1Y2hhbmRvID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlY29ub2NpbWllbnRvVm96LmluaWNpYXIoXHJcbiAgICAgICAgICAgIHRoaXMuaWRpb21hLFxyXG4gICAgICAgICAgICAodGV4dG8pID0+ICh0aGlzLmJvcnJhZG9yID0gdGV4dG9QcmV2aW8gPyBgJHt0ZXh0b1ByZXZpb30gJHt0ZXh0b31gIDogdGV4dG8pLFxyXG4gICAgICAgICAgICAoKSA9PiAodGhpcy5lc2N1Y2hhbmRvID0gZmFsc2UpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNsaWNrRW52aWFyKHRleHRvUHJlc2V0Pzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgcHJlZ3VudGEgPSAodGV4dG9QcmVzZXQgPz8gdGhpcy5ib3JyYWRvcikudHJpbSgpO1xyXG4gICAgICAgIGlmICghcHJlZ3VudGEgfHwgdGhpcy5jb25zdWx0YW5kbykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm1lbnNhamVzLnB1c2goeyBkZVVzdWFyaW86IHRydWUsIHRleHRvOiBwcmVndW50YSB9KTtcclxuICAgICAgICB0aGlzLmJvcnJhZG9yID0gJyc7XHJcblxyXG4gICAgICAgIC8vIFNpbiB1cmwgZGUgY29uc3VsdGEgbm8gc2UgaGFjZSBsYSBwZXRpY2nDs246IGVsIHVzdWFyaW8gdmUgZWwgbWlzbW8gZXJyb3IgZ2Vuw6lyaWNvIHF1ZVxyXG4gICAgICAgIC8vIGN1YW5kbyBsYSBBUEkgZmFsbGEuXHJcbiAgICAgICAgaWYgKCF0aGlzLmFzaXN0ZW50ZURhdG9zQXBpU2VydmljZS51cmwpIHtcclxuICAgICAgICAgICAgdGhpcy5tZW5zYWplcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGRlVXN1YXJpbzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICB0ZXh0bzogJ05vIHNlIHB1ZG8gcHJvY2VzYXIgbGEgY29uc3VsdGEuJyxcclxuICAgICAgICAgICAgICAgIGVzRXJyb3I6IHRydWUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnNjcm9sbEFsRmluYWwoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jb25zdWx0YW5kbyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxBbEZpbmFsKCk7XHJcblxyXG4gICAgICAgIHRoaXMuYXNpc3RlbnRlRGF0b3NBcGlTZXJ2aWNlLmNvbnN1bHRhcihwcmVndW50YSwgdGhpcy5wcm92ZWVkb3JTZWxlY2Npb25hZG8pLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIC8vIEVsIHRpcG8gKFJlc3B1ZXN0YUFzaXN0ZW50ZURhdG9zKSBzZSBpbmZpZXJlIGRlbCBPYnNlcnZhYmxlOiBpbXBvcnRhciBsYSBpbnRlcmZhelxyXG4gICAgICAgICAgICAvLyBkZWphYmEgdW4gaW1wb3J0IGEgdW4gc8OtbWJvbG8gaW5leGlzdGVudGUgZW4gZWwgSlMgZGUgbGEgbGlicmVyw61hIChhdmlzbyBkZSByb2xsdXApLlxyXG4gICAgICAgICAgICBuZXh0OiAocmVzcHVlc3RhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnN1bHRhbmRvID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnNhamVzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIGRlVXN1YXJpbzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcGNpb246IHJlc3B1ZXN0YS5EZXNjcmlwY2lvbixcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHRhZG86IHJlc3B1ZXN0YS5SZXN1bHRhZG8gPz8gW10sXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvdmVlZG9yOiByZXNwdWVzdGEuUHJvdmVlZG9yLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbEFsRmluYWwoKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb25zdWx0YW5kbyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tZW5zYWplcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICBkZVVzdWFyaW86IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIHRleHRvOiBlcnJvcj8uTWVuc2FqZSB8fCAnTm8gc2UgcHVkbyBwcm9jZXNhciBsYSBjb25zdWx0YS4nLFxyXG4gICAgICAgICAgICAgICAgICAgIGVzRXJyb3I6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsQWxGaW5hbCgpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEVsIG51ZXZvIG1lbnNhamUgcmVjacOpbiBzZSByZWZsZWphIGVuIGVsIERPTSBkZXNwdcOpcyBkZWwgc2lndWllbnRlIGNpY2xvIGRlIGRldGVjY2nDs24gZGVcclxuICAgIC8vIGNhbWJpb3Mg4oCUIHBvciBlc28gZWwgc2Nyb2xsVG9wIHNlIGFqdXN0YSBlbiB1biBzZXRUaW1lb3V0KDApLCBubyBpbm1lZGlhdGFtZW50ZSBkZXNwdcOpcyBkZWxcclxuICAgIC8vIHB1c2gsIHBhcmEgcXVlIHNjcm9sbEhlaWdodCB5YSBpbmNsdXlhIGVsIG1lbnNhamUgYWdyZWdhZG8uXHJcbiAgICBwcml2YXRlIHNjcm9sbEFsRmluYWwoKTogdm9pZCB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRvID0gdGhpcy5tZW5zYWplc0NvbnRhaW5lcj8ubmF0aXZlRWxlbWVudDtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnRvKSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50by5zY3JvbGxUb3AgPSBlbGVtZW50by5zY3JvbGxIZWlnaHQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb2x1bW5hc0RlKHJlc3VsdGFkbzogYW55W10pOiBzdHJpbmdbXSB7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdGFkby5sZW5ndGggPyBPYmplY3Qua2V5cyhyZXN1bHRhZG9bMF0pIDogW107XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRWwgYmFja2VuZCBkZXZ1ZWx2ZSB1biBjb250ZW8gKENoYXRDb25zdWx0YUlBU2VydmljaW8uRWplY3V0YXJDb250ZW8pIGNvbW8gdW5hIHNvbGEgZmlsYSBjb25cclxuICAgIC8vIHVuYSBzb2xhIGNvbHVtbmEgbGxhbWFkYSBsaXRlcmFsbWVudGUgXCJSZXN1bHRhZG9cIiDigJQgc2UgbXVlc3RyYSBjb21vIG7Dum1lcm8gZ3JhbmRlIGVuIHZleiBkZVxyXG4gICAgLy8gY29tbyB0YWJsYSBkZSB1bmEgY2VsZGEuXHJcbiAgICBlc0NvbnRlbyhyZXN1bHRhZG86IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdGFkbz8ubGVuZ3RoID09PSAxICYmIE9iamVjdC5rZXlzKHJlc3VsdGFkb1swXSkubGVuZ3RoID09PSAxICYmICdSZXN1bHRhZG8nIGluIHJlc3VsdGFkb1swXTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBMaXN0YWRvIGNvbiB1bmEgc29sYSBjb2x1bW5hIChlai4gdW5hIGxpc3RhIGRlIG5vbWJyZXMvaWRzKSDigJQgc2UgbXVlc3RyYSBjb21vIHRleHRvIHNpbXBsZVxyXG4gICAgLy8gZW4gdmV6IGRlIHVuYSB0YWJsYSBkZSB1bmEgc29sYSBjb2x1bW5hIHJlcGV0aWRhLlxyXG4gICAgZXNMaXN0YVNpbXBsZShyZXN1bHRhZG86IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdGFkbz8ubGVuZ3RoID4gMCAmJiAhdGhpcy5lc0NvbnRlbyhyZXN1bHRhZG8pICYmIHRoaXMuY29sdW1uYXNEZShyZXN1bHRhZG8pLmxlbmd0aCA9PT0gMTtcclxuICAgIH1cclxuXHJcbiAgICB0ZXh0b0xpc3RhU2ltcGxlKHJlc3VsdGFkbzogYW55W10pOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IGNvbHVtbmEgPSB0aGlzLmNvbHVtbmFzRGUocmVzdWx0YWRvKVswXTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0YWRvLm1hcCgoZmlsYSkgPT4gZmlsYVtjb2x1bW5hXSkuam9pbignLCAnKTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,79 @@
1
+ import { __decorate } from "tslib";
2
+ import { Injectable } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ // Envoltorio de la Web Speech API (SpeechRecognition) del navegador — dictado de voz a texto,
5
+ // 100% cliente, sin backend. Soportado en Chrome/Edge; SIN soporte en Firefox y de forma
6
+ // inconsistente en Safari (limitación real del navegador, no de esta implementación).
7
+ var ReconocimientoVozService = /** @class */ (function () {
8
+ function ReconocimientoVozService() {
9
+ this.reconocimiento = null;
10
+ }
11
+ ReconocimientoVozService.prototype.estaSoportado = function () {
12
+ return !!(this.obtenerConstructor());
13
+ };
14
+ // onResultado se llama con el texto reconocido hasta el momento (incluye resultados
15
+ // provisionales — interimResults: true — para que el cuadro de texto se vea llenar en vivo).
16
+ // onFin se llama cuando el reconocimiento termina, ya sea porque el navegador detectó una
17
+ // pausa (continuous: false) o porque se llamó a detener().
18
+ ReconocimientoVozService.prototype.iniciar = function (idioma, onResultado, onFin) {
19
+ var _this = this;
20
+ var SpeechRecognitionCtor = this.obtenerConstructor();
21
+ if (!SpeechRecognitionCtor) {
22
+ onFin();
23
+ return;
24
+ }
25
+ this.detener();
26
+ this.reconocimiento = new SpeechRecognitionCtor();
27
+ this.reconocimiento.lang = idioma;
28
+ this.reconocimiento.continuous = false;
29
+ this.reconocimiento.interimResults = true;
30
+ this.reconocimiento.onresult = function (evento) {
31
+ var texto = Array.from(evento.results)
32
+ .map(function (resultado) { return resultado[0].transcript; })
33
+ .join(' ');
34
+ onResultado(texto);
35
+ };
36
+ this.reconocimiento.onerror = function (evento) {
37
+ var _a;
38
+ // Motivos típicos (event.error de SpeechRecognitionErrorEvent): "not-allowed" (permiso de
39
+ // micrófono denegado o sitio sin HTTPS/localhost), "no-speech", "audio-capture" (sin
40
+ // micrófono), "network". Se deja en consola porque no hay backend que lo registre y el
41
+ // navegador no explica el motivo en la UI.
42
+ console.error('Reconocimiento de voz: error -', (_a = evento) === null || _a === void 0 ? void 0 : _a.error);
43
+ _this.reconocimiento = null;
44
+ onFin();
45
+ };
46
+ this.reconocimiento.onend = function () {
47
+ _this.reconocimiento = null;
48
+ onFin();
49
+ };
50
+ try {
51
+ this.reconocimiento.start();
52
+ }
53
+ catch (e) {
54
+ console.error('Reconocimiento de voz: no se pudo iniciar -', e);
55
+ this.reconocimiento = null;
56
+ onFin();
57
+ }
58
+ };
59
+ ReconocimientoVozService.prototype.detener = function () {
60
+ if (this.reconocimiento) {
61
+ this.reconocimiento.onend = null;
62
+ this.reconocimiento.onerror = null;
63
+ this.reconocimiento.stop();
64
+ this.reconocimiento = null;
65
+ }
66
+ };
67
+ ReconocimientoVozService.prototype.obtenerConstructor = function () {
68
+ return window.SpeechRecognition || window.webkitSpeechRecognition || null;
69
+ };
70
+ ReconocimientoVozService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ReconocimientoVozService_Factory() { return new ReconocimientoVozService(); }, token: ReconocimientoVozService, providedIn: "root" });
71
+ ReconocimientoVozService = __decorate([
72
+ Injectable({
73
+ providedIn: 'root',
74
+ })
75
+ ], ReconocimientoVozService);
76
+ return ReconocimientoVozService;
77
+ }());
78
+ export { ReconocimientoVozService };
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb25vY2ltaWVudG8tdm96LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly93bS1tZW51LyIsInNvdXJjZXMiOlsibGliL3dtLW1lbnUvYXNpc3RlbnRlLWRhdG9zL3JlY29ub2NpbWllbnRvLXZvei5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzQyw4RkFBOEY7QUFDOUYseUZBQXlGO0FBQ3pGLHNGQUFzRjtBQUl0RjtJQUFBO1FBQ1ksbUJBQWMsR0FBUSxJQUFJLENBQUM7S0FtRXRDO0lBakVHLGdEQUFhLEdBQWI7UUFDSSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELG9GQUFvRjtJQUNwRiw2RkFBNkY7SUFDN0YsMEZBQTBGO0lBQzFGLDJEQUEyRDtJQUMzRCwwQ0FBTyxHQUFQLFVBQVEsTUFBYyxFQUFFLFdBQW9DLEVBQUUsS0FBaUI7UUFBL0UsaUJBMkNDO1FBMUNHLElBQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQ3hCLEtBQUssRUFBRSxDQUFDO1lBQ1IsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRWYsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN2QyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFFMUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEdBQUcsVUFBQyxNQUFXO1lBQ3ZDLElBQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztpQkFDbkMsR0FBRyxDQUFDLFVBQUMsU0FBYyxJQUFLLE9BQUEsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBdkIsQ0FBdUIsQ0FBQztpQkFDaEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQztRQUVGLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxHQUFHLFVBQUMsTUFBVzs7WUFDdEMsMEZBQTBGO1lBQzFGLHFGQUFxRjtZQUNyRix1RkFBdUY7WUFDdkYsMkNBQTJDO1lBQzNDLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLFFBQUUsTUFBTSwwQ0FBRSxLQUFLLENBQUMsQ0FBQztZQUMvRCxLQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztZQUMzQixLQUFLLEVBQUUsQ0FBQztRQUNaLENBQUMsQ0FBQztRQUVGLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxHQUFHO1lBQ3hCLEtBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1lBQzNCLEtBQUssRUFBRSxDQUFDO1FBQ1osQ0FBQyxDQUFDO1FBRUYsSUFBSTtZQUNBLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDL0I7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNSLE9BQU8sQ0FBQyxLQUFLLENBQUMsNkNBQTZDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDaEUsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7WUFDM0IsS0FBSyxFQUFFLENBQUM7U0FDWDtJQUNMLENBQUM7SUFFRCwwQ0FBTyxHQUFQO1FBQ0ksSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUNqQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDbkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztTQUM5QjtJQUNMLENBQUM7SUFFTyxxREFBa0IsR0FBMUI7UUFDSSxPQUFRLE1BQWMsQ0FBQyxpQkFBaUIsSUFBSyxNQUFjLENBQUMsdUJBQXVCLElBQUksSUFBSSxDQUFDO0lBQ2hHLENBQUM7O0lBbkVRLHdCQUF3QjtRQUhwQyxVQUFVLENBQUM7WUFDUixVQUFVLEVBQUUsTUFBTTtTQUNyQixDQUFDO09BQ1csd0JBQXdCLENBb0VwQzttQ0E1RUQ7Q0E0RUMsQUFwRUQsSUFvRUM7U0FwRVksd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuLy8gRW52b2x0b3JpbyBkZSBsYSBXZWIgU3BlZWNoIEFQSSAoU3BlZWNoUmVjb2duaXRpb24pIGRlbCBuYXZlZ2Fkb3Ig4oCUIGRpY3RhZG8gZGUgdm96IGEgdGV4dG8sXHJcbi8vIDEwMCUgY2xpZW50ZSwgc2luIGJhY2tlbmQuIFNvcG9ydGFkbyBlbiBDaHJvbWUvRWRnZTsgU0lOIHNvcG9ydGUgZW4gRmlyZWZveCB5IGRlIGZvcm1hXHJcbi8vIGluY29uc2lzdGVudGUgZW4gU2FmYXJpIChsaW1pdGFjacOzbiByZWFsIGRlbCBuYXZlZ2Fkb3IsIG5vIGRlIGVzdGEgaW1wbGVtZW50YWNpw7NuKS5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVjb25vY2ltaWVudG9Wb3pTZXJ2aWNlIHtcclxuICAgIHByaXZhdGUgcmVjb25vY2ltaWVudG86IGFueSA9IG51bGw7XHJcblxyXG4gICAgZXN0YVNvcG9ydGFkbygpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gISEodGhpcy5vYnRlbmVyQ29uc3RydWN0b3IoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gb25SZXN1bHRhZG8gc2UgbGxhbWEgY29uIGVsIHRleHRvIHJlY29ub2NpZG8gaGFzdGEgZWwgbW9tZW50byAoaW5jbHV5ZSByZXN1bHRhZG9zXHJcbiAgICAvLyBwcm92aXNpb25hbGVzIOKAlCBpbnRlcmltUmVzdWx0czogdHJ1ZSDigJQgcGFyYSBxdWUgZWwgY3VhZHJvIGRlIHRleHRvIHNlIHZlYSBsbGVuYXIgZW4gdml2bykuXHJcbiAgICAvLyBvbkZpbiBzZSBsbGFtYSBjdWFuZG8gZWwgcmVjb25vY2ltaWVudG8gdGVybWluYSwgeWEgc2VhIHBvcnF1ZSBlbCBuYXZlZ2Fkb3IgZGV0ZWN0w7MgdW5hXHJcbiAgICAvLyBwYXVzYSAoY29udGludW91czogZmFsc2UpIG8gcG9ycXVlIHNlIGxsYW3DsyBhIGRldGVuZXIoKS5cclxuICAgIGluaWNpYXIoaWRpb21hOiBzdHJpbmcsIG9uUmVzdWx0YWRvOiAodGV4dG86IHN0cmluZykgPT4gdm9pZCwgb25GaW46ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBTcGVlY2hSZWNvZ25pdGlvbkN0b3IgPSB0aGlzLm9idGVuZXJDb25zdHJ1Y3RvcigpO1xyXG4gICAgICAgIGlmICghU3BlZWNoUmVjb2duaXRpb25DdG9yKSB7XHJcbiAgICAgICAgICAgIG9uRmluKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZGV0ZW5lcigpO1xyXG5cclxuICAgICAgICB0aGlzLnJlY29ub2NpbWllbnRvID0gbmV3IFNwZWVjaFJlY29nbml0aW9uQ3RvcigpO1xyXG4gICAgICAgIHRoaXMucmVjb25vY2ltaWVudG8ubGFuZyA9IGlkaW9tYTtcclxuICAgICAgICB0aGlzLnJlY29ub2NpbWllbnRvLmNvbnRpbnVvdXMgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlY29ub2NpbWllbnRvLmludGVyaW1SZXN1bHRzID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5yZWNvbm9jaW1pZW50by5vbnJlc3VsdCA9IChldmVudG86IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB0ZXh0byA9IEFycmF5LmZyb20oZXZlbnRvLnJlc3VsdHMpXHJcbiAgICAgICAgICAgICAgICAubWFwKChyZXN1bHRhZG86IGFueSkgPT4gcmVzdWx0YWRvWzBdLnRyYW5zY3JpcHQpXHJcbiAgICAgICAgICAgICAgICAuam9pbignICcpO1xyXG4gICAgICAgICAgICBvblJlc3VsdGFkbyh0ZXh0byk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5yZWNvbm9jaW1pZW50by5vbmVycm9yID0gKGV2ZW50bzogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIC8vIE1vdGl2b3MgdMOtcGljb3MgKGV2ZW50LmVycm9yIGRlIFNwZWVjaFJlY29nbml0aW9uRXJyb3JFdmVudCk6IFwibm90LWFsbG93ZWRcIiAocGVybWlzbyBkZVxyXG4gICAgICAgICAgICAvLyBtaWNyw7Nmb25vIGRlbmVnYWRvIG8gc2l0aW8gc2luIEhUVFBTL2xvY2FsaG9zdCksIFwibm8tc3BlZWNoXCIsIFwiYXVkaW8tY2FwdHVyZVwiIChzaW5cclxuICAgICAgICAgICAgLy8gbWljcsOzZm9ubyksIFwibmV0d29ya1wiLiBTZSBkZWphIGVuIGNvbnNvbGEgcG9ycXVlIG5vIGhheSBiYWNrZW5kIHF1ZSBsbyByZWdpc3RyZSB5IGVsXHJcbiAgICAgICAgICAgIC8vIG5hdmVnYWRvciBubyBleHBsaWNhIGVsIG1vdGl2byBlbiBsYSBVSS5cclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignUmVjb25vY2ltaWVudG8gZGUgdm96OiBlcnJvciAtJywgZXZlbnRvPy5lcnJvcik7XHJcbiAgICAgICAgICAgIHRoaXMucmVjb25vY2ltaWVudG8gPSBudWxsO1xyXG4gICAgICAgICAgICBvbkZpbigpO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMucmVjb25vY2ltaWVudG8ub25lbmQgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucmVjb25vY2ltaWVudG8gPSBudWxsO1xyXG4gICAgICAgICAgICBvbkZpbigpO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVjb25vY2ltaWVudG8uc3RhcnQoKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1JlY29ub2NpbWllbnRvIGRlIHZvejogbm8gc2UgcHVkbyBpbmljaWFyIC0nLCBlKTtcclxuICAgICAgICAgICAgdGhpcy5yZWNvbm9jaW1pZW50byA9IG51bGw7XHJcbiAgICAgICAgICAgIG9uRmluKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGRldGVuZXIoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMucmVjb25vY2ltaWVudG8pIHtcclxuICAgICAgICAgICAgdGhpcy5yZWNvbm9jaW1pZW50by5vbmVuZCA9IG51bGw7XHJcbiAgICAgICAgICAgIHRoaXMucmVjb25vY2ltaWVudG8ub25lcnJvciA9IG51bGw7XHJcbiAgICAgICAgICAgIHRoaXMucmVjb25vY2ltaWVudG8uc3RvcCgpO1xyXG4gICAgICAgICAgICB0aGlzLnJlY29ub2NpbWllbnRvID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBvYnRlbmVyQ29uc3RydWN0b3IoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gKHdpbmRvdyBhcyBhbnkpLlNwZWVjaFJlY29nbml0aW9uIHx8ICh3aW5kb3cgYXMgYW55KS53ZWJraXRTcGVlY2hSZWNvZ25pdGlvbiB8fCBudWxsO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,45 @@
1
+ import { __decorate } from "tslib";
2
+ import { Injectable } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ // Material Symbols Outlined (rellena) registrada con un nombre propio para que no choque con la
5
+ // versión de Material Symbols o Material Icons que cargue la página que aloja el menú.
6
+ var FAMILIA = 'WM Menu Symbols';
7
+ var URL_CSS = 'https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,1,0';
8
+ var WmMenuFuenteIconosService = /** @class */ (function () {
9
+ function WmMenuFuenteIconosService() {
10
+ this.iniciada = false;
11
+ }
12
+ WmMenuFuenteIconosService.prototype.cargar = function () {
13
+ if (this.iniciada) {
14
+ return;
15
+ }
16
+ this.iniciada = true;
17
+ var estilo = document.createElement('style');
18
+ estilo.textContent = ".wm-menu-iconos {\n font-family: '" + FAMILIA + "';\n font-weight: normal;\n font-style: normal;\n font-size: 24px;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n display: inline-block;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n font-feature-settings: 'liga';\n -webkit-font-smoothing: antialiased;\n }";
19
+ document.head.appendChild(estilo);
20
+ // Oculta los iconos mientras carga la fuente para que no se vea el nombre del icono como texto.
21
+ var ocultar = document.createElement('style');
22
+ ocultar.textContent = '.wm-menu-iconos { visibility: hidden; }';
23
+ document.head.appendChild(ocultar);
24
+ // Se lee la URL del archivo desde el CSS de Google Fonts en lugar de fijarla, porque cambia con cada versión.
25
+ fetch(URL_CSS)
26
+ .then(function (resp) { return resp.text(); })
27
+ .then(function (css) {
28
+ var urlFuente = /url\(([^)]+)\)/.exec(css)[1];
29
+ var fuente = new window.FontFace(FAMILIA, "url(" + urlFuente + ")");
30
+ document.fonts.add(fuente);
31
+ return fuente.load();
32
+ })
33
+ .catch(function (error) { return console.error('wm-menu: no se pudo cargar la fuente de iconos', error); })
34
+ .then(function () { return document.head.removeChild(ocultar); });
35
+ };
36
+ WmMenuFuenteIconosService.ɵprov = i0.ɵɵdefineInjectable({ factory: function WmMenuFuenteIconosService_Factory() { return new WmMenuFuenteIconosService(); }, token: WmMenuFuenteIconosService, providedIn: "root" });
37
+ WmMenuFuenteIconosService = __decorate([
38
+ Injectable({
39
+ providedIn: 'root'
40
+ })
41
+ ], WmMenuFuenteIconosService);
42
+ return WmMenuFuenteIconosService;
43
+ }());
44
+ export { WmMenuFuenteIconosService };
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid20tbWVudS1mdWVudGUtaWNvbm9zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly93bS1tZW51LyIsInNvdXJjZXMiOlsibGliL3dtLW1lbnUvc2VydmljZXMvd20tbWVudS1mdWVudGUtaWNvbm9zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDLGdHQUFnRztBQUNoRyx1RkFBdUY7QUFDdkYsSUFBTSxPQUFPLEdBQUcsaUJBQWlCLENBQUM7QUFDbEMsSUFBTSxPQUFPLEdBQUcsbUdBQW1HLENBQUM7QUFLcEg7SUFBQTtRQUVVLGFBQVEsR0FBRyxLQUFLLENBQUM7S0EyQzFCO0lBekNDLDBDQUFNLEdBQU47UUFDRSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFFckIsSUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQyxNQUFNLENBQUMsV0FBVyxHQUFHLDRDQUNILE9BQU8sNldBYXZCLENBQUM7UUFDSCxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVsQyxnR0FBZ0c7UUFDaEcsSUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoRCxPQUFPLENBQUMsV0FBVyxHQUFHLHlDQUF5QyxDQUFDO1FBQ2hFLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRW5DLDhHQUE4RztRQUM5RyxLQUFLLENBQUMsT0FBTyxDQUFDO2FBQ1gsSUFBSSxDQUFDLFVBQUEsSUFBSSxJQUFJLE9BQUEsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFYLENBQVcsQ0FBQzthQUN6QixJQUFJLENBQUMsVUFBQSxHQUFHO1lBQ1AsSUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hELElBQU0sTUFBTSxHQUFHLElBQUssTUFBYyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsU0FBTyxTQUFTLE1BQUcsQ0FBQyxDQUFDO1lBQ3pFLFFBQWdCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxPQUFPLENBQUMsS0FBSyxDQUFDLGdEQUFnRCxFQUFFLEtBQUssQ0FBQyxFQUF0RSxDQUFzRSxDQUFDO2FBQ3RGLElBQUksQ0FBQyxjQUFNLE9BQUEsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQWxDLENBQWtDLENBQUMsQ0FBQztJQUNwRCxDQUFDOztJQTVDVSx5QkFBeUI7UUFIckMsVUFBVSxDQUFDO1lBQ1YsVUFBVSxFQUFFLE1BQU07U0FDbkIsQ0FBQztPQUNXLHlCQUF5QixDQTZDckM7b0NBdkREO0NBdURDLEFBN0NELElBNkNDO1NBN0NZLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8vIE1hdGVyaWFsIFN5bWJvbHMgT3V0bGluZWQgKHJlbGxlbmEpIHJlZ2lzdHJhZGEgY29uIHVuIG5vbWJyZSBwcm9waW8gcGFyYSBxdWUgbm8gY2hvcXVlIGNvbiBsYVxyXG4vLyB2ZXJzacOzbiBkZSBNYXRlcmlhbCBTeW1ib2xzIG8gTWF0ZXJpYWwgSWNvbnMgcXVlIGNhcmd1ZSBsYSBww6FnaW5hIHF1ZSBhbG9qYSBlbCBtZW7Dui5cclxuY29uc3QgRkFNSUxJQSA9ICdXTSBNZW51IFN5bWJvbHMnO1xyXG5jb25zdCBVUkxfQ1NTID0gJ2h0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9TWF0ZXJpYWwrU3ltYm9scytPdXRsaW5lZDpvcHN6LHdnaHQsRklMTCxHUkFEQDI0LDQwMCwxLDAnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgV21NZW51RnVlbnRlSWNvbm9zU2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgaW5pY2lhZGEgPSBmYWxzZTtcclxuXHJcbiAgY2FyZ2FyKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaW5pY2lhZGEpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pbmljaWFkYSA9IHRydWU7XHJcblxyXG4gICAgY29uc3QgZXN0aWxvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcclxuICAgIGVzdGlsby50ZXh0Q29udGVudCA9IGAud20tbWVudS1pY29ub3Mge1xyXG4gICAgICBmb250LWZhbWlseTogJyR7RkFNSUxJQX0nO1xyXG4gICAgICBmb250LXdlaWdodDogbm9ybWFsO1xyXG4gICAgICBmb250LXN0eWxlOiBub3JtYWw7XHJcbiAgICAgIGZvbnQtc2l6ZTogMjRweDtcclxuICAgICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICAgIGxldHRlci1zcGFjaW5nOiBub3JtYWw7XHJcbiAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xyXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICAgIHdvcmQtd3JhcDogbm9ybWFsO1xyXG4gICAgICBkaXJlY3Rpb246IGx0cjtcclxuICAgICAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiAnbGlnYSc7XHJcbiAgICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xyXG4gICAgfWA7XHJcbiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGVzdGlsbyk7XHJcblxyXG4gICAgLy8gT2N1bHRhIGxvcyBpY29ub3MgbWllbnRyYXMgY2FyZ2EgbGEgZnVlbnRlIHBhcmEgcXVlIG5vIHNlIHZlYSBlbCBub21icmUgZGVsIGljb25vIGNvbW8gdGV4dG8uXHJcbiAgICBjb25zdCBvY3VsdGFyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcclxuICAgIG9jdWx0YXIudGV4dENvbnRlbnQgPSAnLndtLW1lbnUtaWNvbm9zIHsgdmlzaWJpbGl0eTogaGlkZGVuOyB9JztcclxuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQob2N1bHRhcik7XHJcblxyXG4gICAgLy8gU2UgbGVlIGxhIFVSTCBkZWwgYXJjaGl2byBkZXNkZSBlbCBDU1MgZGUgR29vZ2xlIEZvbnRzIGVuIGx1Z2FyIGRlIGZpamFybGEsIHBvcnF1ZSBjYW1iaWEgY29uIGNhZGEgdmVyc2nDs24uXHJcbiAgICBmZXRjaChVUkxfQ1NTKVxyXG4gICAgICAudGhlbihyZXNwID0+IHJlc3AudGV4dCgpKVxyXG4gICAgICAudGhlbihjc3MgPT4ge1xyXG4gICAgICAgIGNvbnN0IHVybEZ1ZW50ZSA9IC91cmxcXCgoW14pXSspXFwpLy5leGVjKGNzcylbMV07XHJcbiAgICAgICAgY29uc3QgZnVlbnRlID0gbmV3ICh3aW5kb3cgYXMgYW55KS5Gb250RmFjZShGQU1JTElBLCBgdXJsKCR7dXJsRnVlbnRlfSlgKTtcclxuICAgICAgICAoZG9jdW1lbnQgYXMgYW55KS5mb250cy5hZGQoZnVlbnRlKTtcclxuICAgICAgICByZXR1cm4gZnVlbnRlLmxvYWQoKTtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKGVycm9yID0+IGNvbnNvbGUuZXJyb3IoJ3dtLW1lbnU6IG5vIHNlIHB1ZG8gY2FyZ2FyIGxhIGZ1ZW50ZSBkZSBpY29ub3MnLCBlcnJvcikpXHJcbiAgICAgIC50aGVuKCgpID0+IGRvY3VtZW50LmhlYWQucmVtb3ZlQ2hpbGQob2N1bHRhcikpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -84,6 +84,14 @@ var WmMenuServicioService = /** @class */ (function () {
84
84
  return throwError(error.error);
85
85
  }));
86
86
  };
87
+ // Funciones (permisos) del usuario autenticado, para gatear features del menú como el
88
+ // asistente "Pregúntale a tus datos" (CodigoLogica === 'WebChatConsultaIA').
89
+ WmMenuServicioService.prototype.funcionesObtener = function (url, token) {
90
+ var headers = new HttpHeaders({
91
+ 'Authorization': "Bearer " + token
92
+ });
93
+ return this.http.get(url, { headers: headers }).pipe(map(function (resp) { return resp; }), catchError(function (error) { return throwError(error.error); }));
94
+ };
87
95
  WmMenuServicioService.ctorParameters = function () { return [
88
96
  { type: HttpClient },
89
97
  { type: MatIconRegistry },
@@ -98,4 +106,4 @@ var WmMenuServicioService = /** @class */ (function () {
98
106
  return WmMenuServicioService;
99
107
  }());
100
108
  export { WmMenuServicioService };
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid20tbWVudS1zZXJ2aWNpby5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vd20tbWVudS8iLCJzb3VyY2VzIjpbImxpYi93bS1tZW51L3NlcnZpY2VzL3dtLW1lbnUtc2VydmljaW8uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFNekQ7SUFFSSwrQkFBb0IsSUFBZ0IsRUFBVSxZQUE2QixFQUFVLFNBQXVCO1FBQXhGLFNBQUksR0FBSixJQUFJLENBQVk7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBaUI7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFjO0lBQUksQ0FBQztJQUVqSCw4Q0FBYyxHQUFkLFVBQWUsR0FBVSxFQUFFLFNBQWlCLEVBQUUsS0FBWSxFQUFFLGtCQUF1QjtRQUF2QixtQ0FBQSxFQUFBLHVCQUF1QjtRQUMvRSxJQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQztZQUM1QixlQUFlLEVBQUUsWUFBVSxLQUFPO1NBQ3JDLENBQUMsQ0FBQztRQUVILElBQUksUUFBUSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDaEMsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzlCLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1NBQ2hFO1FBQ0QsUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2pELFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNoRCxJQUFJLFNBQVMsSUFBSSxJQUFJO1lBQ2pCLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUVsRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLE9BQU8sU0FBQSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDekQsR0FBRyxDQUFDLFVBQUEsSUFBSTtZQUNKLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxVQUFBLEtBQUs7WUFDWixPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFRCwwQ0FBVSxHQUFWLFVBQVcsT0FBWTtRQUNuQixPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFDLENBQUMsRUFBRSxDQUFDLElBQUssT0FBQSxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUEsQ0FBQyxDQUFBLEdBQUcsQ0FBQSxDQUFDLENBQUEsSUFBSSxFQUFoQyxDQUFnQyxDQUFDLENBQUM7UUFFbkUsS0FBSyxJQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUU7WUFDdkIsSUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzdCLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ2xDLElBQUksT0FBTyxHQUFHLGVBQWUsR0FBRyxHQUFHLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUN4QixPQUFPLEVBQ1AsSUFBSSxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDbEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUM7YUFDaEM7U0FDSjtRQUVELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBR08sMkNBQVcsR0FBbkIsVUFBb0IsT0FBWSxFQUFFLFdBQW9CO1FBQ2xELElBQUksSUFBSSxHQUFvQixFQUFFLENBQUM7UUFDL0IsS0FBSyxJQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUU7WUFDdkIsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxJQUFJLFdBQVcsSUFBSSxDQUFDLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLEVBQUU7Z0JBQy9GLElBQUksQ0FBQyxJQUFJLENBQUM7b0JBQ04sTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhO29CQUNsQyxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUc7b0JBQ3JCLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSztvQkFDekIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXO29CQUNyQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztpQkFDeEQsQ0FBQyxDQUFDO2FBQ047U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxrREFBa0IsR0FBbEIsVUFBbUIsR0FBVSxFQUFFLFNBQWlCLEVBQUUsS0FBWTtRQUMxRCxJQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQztZQUM1QixlQUFlLEVBQUUsWUFBVSxLQUFPO1NBQ3JDLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUMxQixHQUFHLENBQUMsVUFBQSxJQUFJO1lBQ0osT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLFVBQUEsS0FBSztZQUNaLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVELHdEQUF3QixHQUF4QixVQUF5QixHQUFVLEVBQUUsU0FBaUIsRUFBRSxLQUFZO1FBQ2hFLElBQU0sT0FBTyxHQUFHLElBQUksV0FBVyxDQUFDO1lBQzVCLGVBQWUsRUFBRSxZQUFVLEtBQU87U0FDckMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxRQUFRLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUVoQyxJQUFJLFNBQVMsSUFBSSxJQUFJO1lBQ2pCLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUVsRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLE9BQU8sU0FBQSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDekQsR0FBRyxDQUFDLFVBQUEsSUFBSTtZQUNKLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxVQUFBLEtBQUs7WUFDWixPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7O2dCQTdGeUIsVUFBVTtnQkFBd0IsZUFBZTtnQkFBcUIsWUFBWTs7O0lBRm5HLHFCQUFxQjtRQUhqQyxVQUFVLENBQUM7WUFDVixVQUFVLEVBQUUsTUFBTTtTQUNuQixDQUFDO09BQ1cscUJBQXFCLENBZ0dqQztnQ0EzR0Q7Q0EyR0MsQUFoR0QsSUFnR0M7U0FoR1kscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgbWFwLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyB0aHJvd0Vycm9yLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBNYXRJY29uUmVnaXN0cnkgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWVudVByaW5jaXBhbCB9IGZyb20gJy4uL21vZGVsL3dtLW1lbnUtcHJpbmNpcGFsLm1vZGVsJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFdtTWVudVNlcnZpY2lvU2VydmljZSB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIGljb25SZWdpc3RyeTogTWF0SWNvblJlZ2lzdHJ5LCBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7IH1cclxuXHJcbiAgICBtZW51QXBpT2J0ZW5lcih1cmw6c3RyaW5nLCBpZFVzdWFyaW86IHN0cmluZywgdG9rZW46c3RyaW5nLCBjb2RMb2dpY2FQYXJhbWV0cm8gPSBcIlwiKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7dG9rZW59YFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCBteVBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICAgICAgaWYgKGNvZExvZ2ljYVBhcmFtZXRyby5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICBteVBhcmFtcyA9IG15UGFyYW1zLmFwcGVuZChcImNvZExvZ2ljYVwiLCBjb2RMb2dpY2FQYXJhbWV0cm8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBteVBhcmFtcyA9IG15UGFyYW1zLmFwcGVuZChcImN0cmxBY3Rpdm9cIiwgXCJ0cnVlXCIpO1xyXG4gICAgICAgIG15UGFyYW1zID0gbXlQYXJhbXMuYXBwZW5kKFwiY29uUGFkcmVzXCIsIFwidHJ1ZVwiKTtcclxuICAgICAgICBpZiAoaWRVc3VhcmlvICE9IG51bGwpXHJcbiAgICAgICAgICAgIG15UGFyYW1zID0gbXlQYXJhbXMuYXBwZW5kKFwiaWRVc3VhcmlvXCIsIGlkVXN1YXJpby50b1N0cmluZygpKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsLCB7IGhlYWRlcnMsIHBhcmFtczogbXlQYXJhbXMgfSkucGlwZShcclxuICAgICAgICAgICAgbWFwKHJlc3AgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3A7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yLmVycm9yKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcGVhck1lbnUocmVzcEFwaTogYW55KTogTWVudVByaW5jaXBhbFtdIHtcclxuICAgICAgICByZXNwQXBpID0gcmVzcEFwaS5zb3J0KChhLCBiKSA9PiBhLlBvc2ljaW9uID4gYi5Qb3NpY2lvbj9cIjFcIjpcIi0xXCIpO1xyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiByZXNwQXBpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSByZXNwQXBpW2tleV07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50Lkljb25vLnN0YXJ0c1dpdGgoXCJodHRwXCIpKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgaWNvblN2ZyA9ICd3bS1pY29uLW1lbnUtJyArIGtleTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaWNvblJlZ2lzdHJ5LmFkZFN2Z0ljb24oXHJcbiAgICAgICAgICAgICAgICAgICAgaWNvblN2ZyxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoZWxlbWVudC5JY29ubykpO1xyXG4gICAgICAgICAgICAgICAgcmVzcEFwaVtrZXldLkljb25vID0gaWNvblN2ZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMub2J0ZW5lck1lbnUocmVzcEFwaSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHByaXZhdGUgb2J0ZW5lck1lbnUocmVzcEFwaTogYW55LCBpZE1lbnVQYWRyZT86IE51bWJlcik6IE1lbnVQcmluY2lwYWxbXSB7XHJcbiAgICAgICAgdmFyIG1lbnU6IE1lbnVQcmluY2lwYWxbXSA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHJlc3BBcGkpIHtcclxuICAgICAgICAgICAgaWYgKHJlc3BBcGlba2V5XS5JZE1lbnVQYWRyZSA9PSBpZE1lbnVQYWRyZSB8fCAoIWlkTWVudVBhZHJlICYmIHJlc3BBcGlba2V5XS5JZE1lbnVQYWRyZSA9PSBudWxsKSkge1xyXG4gICAgICAgICAgICAgICAgbWVudS5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICB0aXR1bG86IHJlc3BBcGlba2V5XS5JZGlvbWFSZWN1cnNvLFxyXG4gICAgICAgICAgICAgICAgICAgIHVybDogcmVzcEFwaVtrZXldLlVybCxcclxuICAgICAgICAgICAgICAgICAgICBpY29ubzogcmVzcEFwaVtrZXldLkljb25vLFxyXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXBjaW9uOiByZXNwQXBpW2tleV0uRGVzY3JpcGNpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgaGlqb3M6IHRoaXMub2J0ZW5lck1lbnUocmVzcEFwaSwgcmVzcEFwaVtrZXldLklkTWVudSlcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtZW51O1xyXG4gICAgfVxyXG5cclxuICAgIG1lbnVJZGlvbWFzT2J0ZW5lcih1cmw6c3RyaW5nLCBpZFVzdWFyaW86IHN0cmluZywgdG9rZW46c3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7dG9rZW59YFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwpLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChyZXNwID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXNwO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvci5lcnJvcik7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgYWxtYWNlbmFtaWVudG9BcGlPYnRlbmVyKHVybDpzdHJpbmcsIGlkVXN1YXJpbzogc3RyaW5nLCB0b2tlbjpzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6IGBCZWFyZXIgJHt0b2tlbn1gXHJcbiAgICAgICAgfSk7XHJcbiAgICBcclxuICAgICAgICBsZXQgbXlQYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG5cclxuICAgICAgICBpZiAoaWRVc3VhcmlvICE9IG51bGwpXHJcbiAgICAgICAgICAgIG15UGFyYW1zID0gbXlQYXJhbXMuYXBwZW5kKFwiaWRVc3VhcmlvXCIsIGlkVXN1YXJpby50b1N0cmluZygpKTtcclxuICAgIFxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCwgeyBoZWFkZXJzLCBwYXJhbXM6IG15UGFyYW1zIH0pLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChyZXNwID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXNwO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvci5lcnJvcik7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufSJdfQ==
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid20tbWVudS1zZXJ2aWNpby5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vd20tbWVudS8iLCJzb3VyY2VzIjpbImxpYi93bS1tZW51L3NlcnZpY2VzL3dtLW1lbnUtc2VydmljaW8uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFNekQ7SUFFSSwrQkFBb0IsSUFBZ0IsRUFBVSxZQUE2QixFQUFVLFNBQXVCO1FBQXhGLFNBQUksR0FBSixJQUFJLENBQVk7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBaUI7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFjO0lBQUksQ0FBQztJQUVqSCw4Q0FBYyxHQUFkLFVBQWUsR0FBVSxFQUFFLFNBQWlCLEVBQUUsS0FBWSxFQUFFLGtCQUF1QjtRQUF2QixtQ0FBQSxFQUFBLHVCQUF1QjtRQUMvRSxJQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQztZQUM1QixlQUFlLEVBQUUsWUFBVSxLQUFPO1NBQ3JDLENBQUMsQ0FBQztRQUVILElBQUksUUFBUSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDaEMsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzlCLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1NBQ2hF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WUFBVSxLQUFPO1NBQ3JDLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsT0FBTyxTQUFBLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDdkMsR0FBRyxDQUFDLFVBQUEsSUFBSSxJQUFJLE9BQUEsSUFBSSxFQUFKLENBQUksQ0FBQyxFQUNqQixVQUFVLENBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUF2QixDQUF1QixDQUFDLENBQy9DLENBQUM7SUFDTixDQUFDOztnQkExR3lCLFVBQVU7Z0JBQXdCLGVBQWU7Z0JBQXFCLFlBQVk7OztJQUZuRyxxQkFBcUI7UUFIakMsVUFBVSxDQUFDO1lBQ1YsVUFBVSxFQUFFLE1BQU07U0FDbkIsQ0FBQztPQUNXLHFCQUFxQixDQTZHakM7Z0NBeEhEO0NBd0hDLEFBN0dELElBNkdDO1NBN0dZLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IG1hcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgdGhyb3dFcnJvciwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgTWF0SWNvblJlZ2lzdHJ5IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1lbnVQcmluY2lwYWwgfSBmcm9tICcuLi9tb2RlbC93bS1tZW51LXByaW5jaXBhbC5tb2RlbCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXbU1lbnVTZXJ2aWNpb1NlcnZpY2Uge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBpY29uUmVnaXN0cnk6IE1hdEljb25SZWdpc3RyeSwgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcikgeyB9XHJcblxyXG4gICAgbWVudUFwaU9idGVuZXIodXJsOnN0cmluZywgaWRVc3VhcmlvOiBzdHJpbmcsIHRva2VuOnN0cmluZywgY29kTG9naWNhUGFyYW1ldHJvID0gXCJcIik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke3Rva2VufWBcclxuICAgICAgICB9KTtcclxuICAgICAgICBcclxuICAgICAgICBsZXQgbXlQYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG4gICAgICAgIGlmIChjb2RMb2dpY2FQYXJhbWV0cm8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgbXlQYXJhbXMgPSBteVBhcmFtcy5hcHBlbmQoXCJjb2RMb2dpY2FcIiwgY29kTG9naWNhUGFyYW1ldHJvKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbXlQYXJhbXMgPSBteVBhcmFtcy5hcHBlbmQoXCJjdHJsQWN0aXZvXCIsIFwidHJ1ZVwiKTtcclxuICAgICAgICBteVBhcmFtcyA9IG15UGFyYW1zLmFwcGVuZChcImNvblBhZHJlc1wiLCBcInRydWVcIik7XHJcbiAgICAgICAgaWYgKGlkVXN1YXJpbyAhPSBudWxsKVxyXG4gICAgICAgICAgICBteVBhcmFtcyA9IG15UGFyYW1zLmFwcGVuZChcImlkVXN1YXJpb1wiLCBpZFVzdWFyaW8udG9TdHJpbmcoKSk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCwgeyBoZWFkZXJzLCBwYXJhbXM6IG15UGFyYW1zIH0pLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChyZXNwID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXNwO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvci5lcnJvcik7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBlYXJNZW51KHJlc3BBcGk6IGFueSk6IE1lbnVQcmluY2lwYWxbXSB7XHJcbiAgICAgICAgcmVzcEFwaSA9IHJlc3BBcGkuc29ydCgoYSwgYikgPT4gYS5Qb3NpY2lvbiA+IGIuUG9zaWNpb24/XCIxXCI6XCItMVwiKTtcclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcmVzcEFwaSkge1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gcmVzcEFwaVtrZXldO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5JY29uby5zdGFydHNXaXRoKFwiaHR0cFwiKSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGljb25TdmcgPSAnd20taWNvbi1tZW51LScgKyBrZXk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmljb25SZWdpc3RyeS5hZGRTdmdJY29uKFxyXG4gICAgICAgICAgICAgICAgICAgIGljb25TdmcsXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKGVsZW1lbnQuSWNvbm8pKTtcclxuICAgICAgICAgICAgICAgIHJlc3BBcGlba2V5XS5JY29ubyA9IGljb25Tdmc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLm9idGVuZXJNZW51KHJlc3BBcGkpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwcml2YXRlIG9idGVuZXJNZW51KHJlc3BBcGk6IGFueSwgaWRNZW51UGFkcmU/OiBOdW1iZXIpOiBNZW51UHJpbmNpcGFsW10ge1xyXG4gICAgICAgIHZhciBtZW51OiBNZW51UHJpbmNpcGFsW10gPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiByZXNwQXBpKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXNwQXBpW2tleV0uSWRNZW51UGFkcmUgPT0gaWRNZW51UGFkcmUgfHwgKCFpZE1lbnVQYWRyZSAmJiByZXNwQXBpW2tleV0uSWRNZW51UGFkcmUgPT0gbnVsbCkpIHtcclxuICAgICAgICAgICAgICAgIG1lbnUucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgdGl0dWxvOiByZXNwQXBpW2tleV0uSWRpb21hUmVjdXJzbyxcclxuICAgICAgICAgICAgICAgICAgICB1cmw6IHJlc3BBcGlba2V5XS5VcmwsXHJcbiAgICAgICAgICAgICAgICAgICAgaWNvbm86IHJlc3BBcGlba2V5XS5JY29ubyxcclxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwY2lvbjogcmVzcEFwaVtrZXldLkRlc2NyaXBjaW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIGhpam9zOiB0aGlzLm9idGVuZXJNZW51KHJlc3BBcGksIHJlc3BBcGlba2V5XS5JZE1lbnUpXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbWVudTtcclxuICAgIH1cclxuXHJcbiAgICBtZW51SWRpb21hc09idGVuZXIodXJsOnN0cmluZywgaWRVc3VhcmlvOiBzdHJpbmcsIHRva2VuOnN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke3Rva2VufWBcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsKS5waXBlKFxyXG4gICAgICAgICAgICBtYXAocmVzcCA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcDtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IuZXJyb3IpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGFsbWFjZW5hbWllbnRvQXBpT2J0ZW5lcih1cmw6c3RyaW5nLCBpZFVzdWFyaW86IHN0cmluZywgdG9rZW46c3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7dG9rZW59YFxyXG4gICAgICAgIH0pO1xyXG4gICAgXHJcbiAgICAgICAgbGV0IG15UGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuXHJcbiAgICAgICAgaWYgKGlkVXN1YXJpbyAhPSBudWxsKVxyXG4gICAgICAgICAgICBteVBhcmFtcyA9IG15UGFyYW1zLmFwcGVuZChcImlkVXN1YXJpb1wiLCBpZFVzdWFyaW8udG9TdHJpbmcoKSk7XHJcbiAgICBcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwsIHsgaGVhZGVycywgcGFyYW1zOiBteVBhcmFtcyB9KS5waXBlKFxyXG4gICAgICAgICAgICBtYXAocmVzcCA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcDtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IuZXJyb3IpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRnVuY2lvbmVzIChwZXJtaXNvcykgZGVsIHVzdWFyaW8gYXV0ZW50aWNhZG8sIHBhcmEgZ2F0ZWFyIGZlYXR1cmVzIGRlbCBtZW7DuiBjb21vIGVsXHJcbiAgICAvLyBhc2lzdGVudGUgXCJQcmVnw7pudGFsZSBhIHR1cyBkYXRvc1wiIChDb2RpZ29Mb2dpY2EgPT09ICdXZWJDaGF0Q29uc3VsdGFJQScpLlxyXG4gICAgZnVuY2lvbmVzT2J0ZW5lcih1cmw6IHN0cmluZywgdG9rZW46IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke3Rva2VufWBcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsLCB7IGhlYWRlcnMgfSkucGlwZShcclxuICAgICAgICAgICAgbWFwKHJlc3AgPT4gcmVzcCksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4gdGhyb3dFcnJvcihlcnJvci5lcnJvcikpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufSJdfQ==