wm-menu 1.3.0 → 1.4.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 (30) hide show
  1. package/bundles/wm-menu.umd.js +361 -7
  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-servicio.service.js +9 -1
  9. package/esm2015/lib/wm-menu/wm-menu.component.js +31 -3
  10. package/esm2015/lib/wm-menu.module.js +9 -2
  11. package/esm2015/wm-menu.js +4 -1
  12. package/esm5/lib/wm-menu/asistente-datos/asistente-datos-api.service.js +53 -0
  13. package/esm5/lib/wm-menu/asistente-datos/asistente-datos.component.js +194 -0
  14. package/esm5/lib/wm-menu/asistente-datos/reconocimiento-voz.service.js +79 -0
  15. package/esm5/lib/wm-menu/services/wm-menu-servicio.service.js +9 -1
  16. package/esm5/lib/wm-menu/wm-menu.component.js +35 -3
  17. package/esm5/lib/wm-menu.module.js +9 -2
  18. package/esm5/wm-menu.js +4 -1
  19. package/fesm2015/wm-menu.js +336 -5
  20. package/fesm2015/wm-menu.js.map +1 -1
  21. package/fesm5/wm-menu.js +359 -5
  22. package/fesm5/wm-menu.js.map +1 -1
  23. package/lib/wm-menu/asistente-datos/asistente-datos-api.service.d.ts +26 -0
  24. package/lib/wm-menu/asistente-datos/asistente-datos.component.d.ts +39 -0
  25. package/lib/wm-menu/asistente-datos/reconocimiento-voz.service.d.ts +7 -0
  26. package/lib/wm-menu/services/wm-menu-servicio.service.d.ts +1 -0
  27. package/lib/wm-menu/wm-menu.component.d.ts +7 -0
  28. package/package.json +1 -1
  29. package/wm-menu.d.ts +3 -0
  30. 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 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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SUFJOUU7UUFBUixLQUFLLEVBQUU7NERBQWlCO0lBR2hCO1FBQVIsS0FBSyxFQUFFOytEQUlQO0lBR1E7UUFBUixLQUFLLEVBQUU7MkRBQWtCO0lBRWhCO1FBQVQsTUFBTSxFQUFFO2lFQUF5QztJQWpCekMsdUJBQXVCO1FBTG5DLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSxvQkFBb0I7WUFDOUIsMmxPQUErQzs7U0FFbEQsQ0FBQztPQUNXLHVCQUF1QixDQXlLbkM7SUFBRCw4QkFBQztDQUFBLEFBektELElBeUtDO1NBektZLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVjb25vY2ltaWVudG9Wb3pTZXJ2aWNlIH0gZnJvbSAnLi9yZWNvbm9jaW1pZW50by12b3ouc2VydmljZSc7XHJcbmltcG9ydCB7IEFzaXN0ZW50ZURhdG9zQXBpU2VydmljZSB9IGZyb20gJy4vYXNpc3RlbnRlLWRhdG9zLWFwaS5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWVuc2FqZUFzaXN0ZW50ZURhdG9zIHtcclxuICAgIGRlVXN1YXJpbzogYm9vbGVhbjtcclxuICAgIHRleHRvPzogc3RyaW5nO1xyXG4gICAgZGVzY3JpcGNpb24/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==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid20tbWVudS1zZXJ2aWNpby5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vd20tbWVudS8iLCJzb3VyY2VzIjpbImxpYi93bS1tZW51L3NlcnZpY2VzL3dtLW1lbnUtc2VydmljaW8uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFNekQ7SUFFSSwrQkFBb0IsSUFBZ0IsRUFBVSxZQUE2QixFQUFVLFNBQXVCO1FBQXhGLFNBQUksR0FBSixJQUFJLENBQVk7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBaUI7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFjO0lBQUksQ0FBQztJQUVqSCw4Q0FBYyxHQUFkLFVBQWUsR0FBVSxFQUFFLFNBQWlCLEVBQUUsS0FBWSxFQUFFLGtCQUF1QjtRQUF2QixtQ0FBQSxFQUFBLHVCQUF1QjtRQUMvRSxJQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQztZQUM1QixlQUFlLEVBQUUsWUFBVSxLQUFPO1NBQ3JDLENBQUMsQ0FBQztRQUVILElBQUksUUFBUSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDaEMsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzlCLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1NBQ2hF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QztnQ0EzR0Q7Q0EyR0MsQUFoR0QsSUFnR0M7U0FoR1kscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgbWFwLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyB0aHJvd0Vycm9yLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBNYXRJY29uUmVnaXN0cnkgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWVudVByaW5jaXBhbCB9IGZyb20gJy4uL21vZGVsL3dtLW1lbnUtcHJpbmNpcGFsLm1vZGVsJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFdtTWVudVNlcnZpY2lvU2VydmljZSB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIGljb25SZWdpc3RyeTogTWF0SWNvblJlZ2lzdHJ5LCBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7IH1cclxuXHJcbiAgICBtZW51QXBpT2J0ZW5lcih1cmw6c3RyaW5nLCBpZFVzdWFyaW86IHN0cmluZywgdG9rZW46c3RyaW5nLCBjb2RMb2dpY2FQYXJhbWV0cm8gPSBcIlwiKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7dG9rZW59YFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCBteVBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICAgICAgaWYgKGNvZExvZ2ljYVBhcmFtZXRyby5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICBteVBhcmFtcyA9IG15UGFyYW1zLmFwcGVuZChcImNvZExvZ2ljYVwiLCBjb2RMb2dpY2FQYXJhbWV0cm8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBteVBhcmFtcyA9IG15UGFyYW1zLmFwcGVuZChcImN0cmxBY3Rpdm9cIiwgXCJ0cnVlXCIpO1xyXG4gICAgICAgIG15UGFyYW1zID0gbXlQYXJhbXMuYXBwZW5kKFwiY29uUGFkcmVzXCIsIFwidHJ1ZVwiKTtcclxuICAgICAgICBpZiAoaWRVc3VhcmlvICE9IG51bGwpXHJcbiAgICAgICAgICAgIG15UGFyYW1zID0gbXlQYXJhbXMuYXBwZW5kKFwiaWRVc3VhcmlvXCIsIGlkVXN1YXJpby50b1N0cmluZygpKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsLCB7IGhlYWRlcnMsIHBhcmFtczogbXlQYXJhbXMgfSkucGlwZShcclxuICAgICAgICAgICAgbWFwKHJlc3AgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3A7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yLmVycm9yKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcGVhck1lbnUocmVzcEFwaTogYW55KTogTWVudVByaW5jaXBhbFtdIHtcclxuICAgICAgICByZXNwQXBpID0gcmVzcEFwaS5zb3J0KChhLCBiKSA9PiBhLlBvc2ljaW9uID4gYi5Qb3NpY2lvbj9cIjFcIjpcIi0xXCIpO1xyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiByZXNwQXBpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSByZXNwQXBpW2tleV07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50Lkljb25vLnN0YXJ0c1dpdGgoXCJodHRwXCIpKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgaWNvblN2ZyA9ICd3bS1pY29uLW1lbnUtJyArIGtleTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaWNvblJlZ2lzdHJ5LmFkZFN2Z0ljb24oXHJcbiAgICAgICAgICAgICAgICAgICAgaWNvblN2ZyxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoZWxlbWVudC5JY29ubykpO1xyXG4gICAgICAgICAgICAgICAgcmVzcEFwaVtrZXldLkljb25vID0gaWNvblN2ZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMub2J0ZW5lck1lbnUocmVzcEFwaSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHByaXZhdGUgb2J0ZW5lck1lbnUocmVzcEFwaTogYW55LCBpZE1lbnVQYWRyZT86IE51bWJlcik6IE1lbnVQcmluY2lwYWxbXSB7XHJcbiAgICAgICAgdmFyIG1lbnU6IE1lbnVQcmluY2lwYWxbXSA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHJlc3BBcGkpIHtcclxuICAgICAgICAgICAgaWYgKHJlc3BBcGlba2V5XS5JZE1lbnVQYWRyZSA9PSBpZE1lbnVQYWRyZSB8fCAoIWlkTWVudVBhZHJlICYmIHJlc3BBcGlba2V5XS5JZE1lbnVQYWRyZSA9PSBudWxsKSkge1xyXG4gICAgICAgICAgICAgICAgbWVudS5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICB0aXR1bG86IHJlc3BBcGlba2V5XS5JZGlvbWFSZWN1cnNvLFxyXG4gICAgICAgICAgICAgICAgICAgIHVybDogcmVzcEFwaVtrZXldLlVybCxcclxuICAgICAgICAgICAgICAgICAgICBpY29ubzogcmVzcEFwaVtrZXldLkljb25vLFxyXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXBjaW9uOiByZXNwQXBpW2tleV0uRGVzY3JpcGNpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgaGlqb3M6IHRoaXMub2J0ZW5lck1lbnUocmVzcEFwaSwgcmVzcEFwaVtrZXldLklkTWVudSlcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtZW51O1xyXG4gICAgfVxyXG5cclxuICAgIG1lbnVJZGlvbWFzT2J0ZW5lcih1cmw6c3RyaW5nLCBpZFVzdWFyaW86IHN0cmluZywgdG9rZW46c3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7dG9rZW59YFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwpLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChyZXNwID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXNwO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvci5lcnJvcik7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgYWxtYWNlbmFtaWVudG9BcGlPYnRlbmVyKHVybDpzdHJpbmcsIGlkVXN1YXJpbzogc3RyaW5nLCB0b2tlbjpzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6IGBCZWFyZXIgJHt0b2tlbn1gXHJcbiAgICAgICAgfSk7XHJcbiAgICBcclxuICAgICAgICBsZXQgbXlQYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG5cclxuICAgICAgICBpZiAoaWRVc3VhcmlvICE9IG51bGwpXHJcbiAgICAgICAgICAgIG15UGFyYW1zID0gbXlQYXJhbXMuYXBwZW5kKFwiaWRVc3VhcmlvXCIsIGlkVXN1YXJpby50b1N0cmluZygpKTtcclxuICAgIFxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCwgeyBoZWFkZXJzLCBwYXJhbXM6IG15UGFyYW1zIH0pLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChyZXNwID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXNwO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvci5lcnJvcik7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufSJdfQ==
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid20tbWVudS1zZXJ2aWNpby5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vd20tbWVudS8iLCJzb3VyY2VzIjpbImxpYi93bS1tZW51L3NlcnZpY2VzL3dtLW1lbnUtc2VydmljaW8uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFNekQ7SUFFSSwrQkFBb0IsSUFBZ0IsRUFBVSxZQUE2QixFQUFVLFNBQXVCO1FBQXhGLFNBQUksR0FBSixJQUFJLENBQVk7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBaUI7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFjO0lBQUksQ0FBQztJQUVqSCw4Q0FBYyxHQUFkLFVBQWUsR0FBVSxFQUFFLFNBQWlCLEVBQUUsS0FBWSxFQUFFLGtCQUF1QjtRQUF2QixtQ0FBQSxFQUFBLHVCQUF1QjtRQUMvRSxJQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQztZQUM1QixlQUFlLEVBQUUsWUFBVSxLQUFPO1NBQ3JDLENBQUMsQ0FBQztRQUVILElBQUksUUFBUSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDaEMsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzlCLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1NBQ2hF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WUFBVSxLQUFPO1NBQ3JDLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsT0FBTyxTQUFBLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDdkMsR0FBRyxDQUFDLFVBQUEsSUFBSSxJQUFJLE9BQUEsSUFBSSxFQUFKLENBQUksQ0FBQyxFQUNqQixVQUFVLENBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUF2QixDQUF1QixDQUFDLENBQy9DLENBQUM7SUFDTixDQUFDOztnQkExR3lCLFVBQVU7Z0JBQXdCLGVBQWU7Z0JBQXFCLFlBQVk7OztJQUZuRyxxQkFBcUI7UUFIakMsVUFBVSxDQUFDO1lBQ1YsVUFBVSxFQUFFLE1BQU07U0FDbkIsQ0FBQztPQUNXLHFCQUFxQixDQTZHakM7Z0NBeEhEO0NBd0hDLEFBN0dELElBNkdDO1NBN0dZLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IG1hcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgdGhyb3dFcnJvciwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgTWF0SWNvblJlZ2lzdHJ5IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1lbnVQcmluY2lwYWwgfSBmcm9tICcuLi9tb2RlbC93bS1tZW51LXByaW5jaXBhbC5tb2RlbCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXbU1lbnVTZXJ2aWNpb1NlcnZpY2Uge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBpY29uUmVnaXN0cnk6IE1hdEljb25SZWdpc3RyeSwgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcikgeyB9XHJcblxyXG4gICAgbWVudUFwaU9idGVuZXIodXJsOnN0cmluZywgaWRVc3VhcmlvOiBzdHJpbmcsIHRva2VuOnN0cmluZywgY29kTG9naWNhUGFyYW1ldHJvID0gXCJcIik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke3Rva2VufWBcclxuICAgICAgICB9KTtcclxuICAgICAgICBcclxuICAgICAgICBsZXQgbXlQYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG4gICAgICAgIGlmIChjb2RMb2dpY2FQYXJhbWV0cm8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgbXlQYXJhbXMgPSBteVBhcmFtcy5hcHBlbmQoXCJjb2RMb2dpY2FcIiwgY29kTG9naWNhUGFyYW1ldHJvKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbXlQYXJhbXMgPSBteVBhcmFtcy5hcHBlbmQoXCJjdHJsQWN0aXZvXCIsIFwidHJ1ZVwiKTtcclxuICAgICAgICBteVBhcmFtcyA9IG15UGFyYW1zLmFwcGVuZChcImNvblBhZHJlc1wiLCBcInRydWVcIik7XHJcbiAgICAgICAgaWYgKGlkVXN1YXJpbyAhPSBudWxsKVxyXG4gICAgICAgICAgICBteVBhcmFtcyA9IG15UGFyYW1zLmFwcGVuZChcImlkVXN1YXJpb1wiLCBpZFVzdWFyaW8udG9TdHJpbmcoKSk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCwgeyBoZWFkZXJzLCBwYXJhbXM6IG15UGFyYW1zIH0pLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChyZXNwID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXNwO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvci5lcnJvcik7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBlYXJNZW51KHJlc3BBcGk6IGFueSk6IE1lbnVQcmluY2lwYWxbXSB7XHJcbiAgICAgICAgcmVzcEFwaSA9IHJlc3BBcGkuc29ydCgoYSwgYikgPT4gYS5Qb3NpY2lvbiA+IGIuUG9zaWNpb24/XCIxXCI6XCItMVwiKTtcclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcmVzcEFwaSkge1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gcmVzcEFwaVtrZXldO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5JY29uby5zdGFydHNXaXRoKFwiaHR0cFwiKSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGljb25TdmcgPSAnd20taWNvbi1tZW51LScgKyBrZXk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmljb25SZWdpc3RyeS5hZGRTdmdJY29uKFxyXG4gICAgICAgICAgICAgICAgICAgIGljb25TdmcsXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKGVsZW1lbnQuSWNvbm8pKTtcclxuICAgICAgICAgICAgICAgIHJlc3BBcGlba2V5XS5JY29ubyA9IGljb25Tdmc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLm9idGVuZXJNZW51KHJlc3BBcGkpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwcml2YXRlIG9idGVuZXJNZW51KHJlc3BBcGk6IGFueSwgaWRNZW51UGFkcmU/OiBOdW1iZXIpOiBNZW51UHJpbmNpcGFsW10ge1xyXG4gICAgICAgIHZhciBtZW51OiBNZW51UHJpbmNpcGFsW10gPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiByZXNwQXBpKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXNwQXBpW2tleV0uSWRNZW51UGFkcmUgPT0gaWRNZW51UGFkcmUgfHwgKCFpZE1lbnVQYWRyZSAmJiByZXNwQXBpW2tleV0uSWRNZW51UGFkcmUgPT0gbnVsbCkpIHtcclxuICAgICAgICAgICAgICAgIG1lbnUucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgdGl0dWxvOiByZXNwQXBpW2tleV0uSWRpb21hUmVjdXJzbyxcclxuICAgICAgICAgICAgICAgICAgICB1cmw6IHJlc3BBcGlba2V5XS5VcmwsXHJcbiAgICAgICAgICAgICAgICAgICAgaWNvbm86IHJlc3BBcGlba2V5XS5JY29ubyxcclxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwY2lvbjogcmVzcEFwaVtrZXldLkRlc2NyaXBjaW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIGhpam9zOiB0aGlzLm9idGVuZXJNZW51KHJlc3BBcGksIHJlc3BBcGlba2V5XS5JZE1lbnUpXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbWVudTtcclxuICAgIH1cclxuXHJcbiAgICBtZW51SWRpb21hc09idGVuZXIodXJsOnN0cmluZywgaWRVc3VhcmlvOiBzdHJpbmcsIHRva2VuOnN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke3Rva2VufWBcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsKS5waXBlKFxyXG4gICAgICAgICAgICBtYXAocmVzcCA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcDtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IuZXJyb3IpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGFsbWFjZW5hbWllbnRvQXBpT2J0ZW5lcih1cmw6c3RyaW5nLCBpZFVzdWFyaW86IHN0cmluZywgdG9rZW46c3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7dG9rZW59YFxyXG4gICAgICAgIH0pO1xyXG4gICAgXHJcbiAgICAgICAgbGV0IG15UGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuXHJcbiAgICAgICAgaWYgKGlkVXN1YXJpbyAhPSBudWxsKVxyXG4gICAgICAgICAgICBteVBhcmFtcyA9IG15UGFyYW1zLmFwcGVuZChcImlkVXN1YXJpb1wiLCBpZFVzdWFyaW8udG9TdHJpbmcoKSk7XHJcbiAgICBcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwsIHsgaGVhZGVycywgcGFyYW1zOiBteVBhcmFtcyB9KS5waXBlKFxyXG4gICAgICAgICAgICBtYXAocmVzcCA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcDtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IuZXJyb3IpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRnVuY2lvbmVzIChwZXJtaXNvcykgZGVsIHVzdWFyaW8gYXV0ZW50aWNhZG8sIHBhcmEgZ2F0ZWFyIGZlYXR1cmVzIGRlbCBtZW7DuiBjb21vIGVsXHJcbiAgICAvLyBhc2lzdGVudGUgXCJQcmVnw7pudGFsZSBhIHR1cyBkYXRvc1wiIChDb2RpZ29Mb2dpY2EgPT09ICdXZWJDaGF0Q29uc3VsdGFJQScpLlxyXG4gICAgZnVuY2lvbmVzT2J0ZW5lcih1cmw6IHN0cmluZywgdG9rZW46IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke3Rva2VufWBcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsLCB7IGhlYWRlcnMgfSkucGlwZShcclxuICAgICAgICAgICAgbWFwKHJlc3AgPT4gcmVzcCksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4gdGhyb3dFcnJvcihlcnJvci5lcnJvcikpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufSJdfQ==
@@ -8,15 +8,35 @@ var WmMenuComponent = /** @class */ (function () {
8
8
  function WmMenuComponent(wmMenuServicioService, alertaPanicoService) {
9
9
  this.wmMenuServicioService = wmMenuServicioService;
10
10
  this.alertaPanicoService = alertaPanicoService;
11
+ this.mostrarAsistente = false;
12
+ this.idiomaAsistente = 'es-CO';
13
+ this.asistenteAbierto = false;
14
+ this.funcionesUsuario = [];
11
15
  this.menuSecundarioSel = new MenuSecundario();
12
16
  this.menuLateralAbierto = false;
13
17
  this.menuIdioma = [];
14
18
  this.intervaloPeticionesMs = 60000;
15
19
  }
20
+ Object.defineProperty(WmMenuComponent.prototype, "puedeAsistente", {
21
+ get: function () {
22
+ var forzado = this.mostrarAsistente === true || this.mostrarAsistente === 'true' || this.mostrarAsistente === '1';
23
+ var tienePermiso = this.funcionesUsuario.some(function (f) { return f.CodigoLogica === 'WebChatConsultaIA'; });
24
+ return forzado || tienePermiso;
25
+ },
26
+ enumerable: true,
27
+ configurable: true
28
+ });
16
29
  WmMenuComponent.prototype.ngOnInit = function () {
17
30
  var _this = this;
18
31
  this.cargarMenuCuenta();
19
32
  this.alertaPanicoService.iniciarProceso(this.intervaloPeticionesMs, function () { return _this.alertaPanicoService.revisarAlertasPendientes(_this.urlObtenerAlertasPanico, _this.token); }, this.urlObtenerParametro, this.token, this.rutaAudio);
33
+ // Carga las funciones del usuario para gatear el asistente (puedeAsistente / WebChatConsultaIA).
34
+ // Si falla (ej. 401), queda vacía y el asistente no se muestra.
35
+ if (this.urlObtenerFunciones && this.token) {
36
+ this.wmMenuServicioService
37
+ .funcionesObtener(this.urlObtenerFunciones, this.token)
38
+ .subscribe(function (resp) { _this.funcionesUsuario = (resp !== null && resp !== void 0 ? resp : []); }, function () { _this.funcionesUsuario = []; });
39
+ }
20
40
  if (this.urlMenu && this.token) {
21
41
  var helper = new JwtHelperService();
22
42
  var decodedToken = helper.decodeToken(this.token);
@@ -138,14 +158,26 @@ var WmMenuComponent = /** @class */ (function () {
138
158
  __decorate([
139
159
  Input()
140
160
  ], WmMenuComponent.prototype, "urlIdiomas", void 0);
161
+ __decorate([
162
+ Input()
163
+ ], WmMenuComponent.prototype, "urlObtenerFunciones", void 0);
164
+ __decorate([
165
+ Input()
166
+ ], WmMenuComponent.prototype, "mostrarAsistente", void 0);
167
+ __decorate([
168
+ Input()
169
+ ], WmMenuComponent.prototype, "urlAsistenteConsultar", void 0);
170
+ __decorate([
171
+ Input()
172
+ ], WmMenuComponent.prototype, "idiomaAsistente", void 0);
141
173
  WmMenuComponent = __decorate([
142
174
  Component({
143
175
  selector: 'wm-menu',
144
- template: "<div class=\"menu\" [ngStyle]=\"{'background-color': colorFondo, 'color': colorTexto}\">\r\n <div class=\"d-lg-none\">\r\n <button mat-icon-button (click)=\"menuLateralAbierto=!menuLateralAbierto; menuPrincipalSel = null\">\r\n <mat-icon *ngIf=\"!menuLateralAbierto\" class=\"animate__animated animate__fadeInRight animate__faster\">menu\r\n </mat-icon>\r\n <mat-icon *ngIf=\"menuLateralAbierto\" class=\"animate__animated animate__fadeInLeft animate__faster\">close\r\n </mat-icon>\r\n </button>\r\n </div>\r\n <div class=\"d-lg-none logo-menu-principal\">\r\n <img class=\"logo\" src=\"{{logo}}\">\r\n </div>\r\n <div class=\"d-none d-lg-block\">\r\n <img class=\"logo\" src=\"{{logo}}\">\r\n <div *ngFor=\"let menuItem of menuPrincipal; let i=index\" class=\"d-inline-block\">\r\n\r\n <a *ngIf=\"menuItem.url\" mat-button [href]=\"menuItem.url\" (click)=\"clickMenuPrincipal(i)\">\r\n {{menuItem.titulo}}\r\n </a>\r\n <button *ngIf=\"!menuItem.url\" mat-button (click)=\"clickMenuPrincipal(i)\">\r\n {{menuItem.titulo}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"info-adicional\">\r\n <div class=\"datos border-r mt-1\" *ngIf=\"nombreCliente\">{{nombreCliente}}<mat-icon>people</mat-icon></div>\r\n <div class=\"datos border-r mt-1\" *ngIf=\"nombreUsuario\">{{nombreUsuario}}<mat-icon>person_outline</mat-icon></div>\r\n <div class=\"version\" *ngIf=\"versionWeb\">{{versionWeb}}</div>\r\n <div class=\"content-idioma\" *ngIf=\"urlIdiomas\">\r\n <mat-menu #menuIdiomas=\"matMenu\">\r\n <a mat-menu-item *ngFor=\"let menuItem of menuIdioma.Culturas\" href=\"{{urlCuentaSeguridad}}CambiarIdioma?culture={{menuItem.Name}}&ReturnUrl=/\">\r\n {{menuItem.NativeName}}\r\n </a>\r\n </mat-menu>\r\n <button mat-button [matMenuTriggerFor]=\"menuIdiomas\"><label class=\"mt-1\">{{menuIdioma.Lenguaje}}</label><mat-icon class=\"icon-idioma\">language</mat-icon></button>\r\n </div>\r\n\r\n </div>\r\n <div>\r\n <mat-menu #submenu=\"matMenu\">\r\n <a mat-menu-item *ngFor=\"let menuItem of menuSecundarioSel.hijos\" href=\"{{menuItem.url}}\"\r\n [disabled]=\"!menuItem.url\">\r\n <mat-icon *ngIf=\"menuItem.icono\">{{menuItem.icono}}</mat-icon>\r\n {{menuItem.titulo}}\r\n </a>\r\n </mat-menu>\r\n <button *ngFor=\"let menuItem of menuSecundario; let i = index\" mat-icon-button [matMenuTriggerFor]=\"submenu\"\r\n (click)=\"clickMenuSecundario(i)\">\r\n <mat-icon>{{menuItem.icono}}</mat-icon>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div class=\"menu-lateral d-lg-none animate__animated animate__fadeInRight animate__faster\" *ngIf=\"menuLateralAbierto\">\r\n <div class=\"row\">\r\n <div *ngFor=\"let menuItem of menuPrincipal; let i=index\" class=\"col-sm-6 col-md-4\">\r\n <a *ngIf=\"menuItem.url\" [href]=\"menuItem.url\" (click)=\"clickMenuPrincipal(i)\">\r\n <div>\r\n <mat-icon svgIcon=\"{{menuItem.icono}}\">{{menuItem.icono}}</mat-icon>\r\n <p>{{menuItem.titulo}}</p>\r\n </div>\r\n </a>\r\n <span *ngIf=\"!menuItem.url\" (click)=\"clickMenuPrincipal(i)\">\r\n <div>\r\n <mat-icon svgIcon=\"{{menuItem.icono}}\">{{menuItem.icono}}</mat-icon>\r\n <p>{{menuItem.titulo}}</p>\r\n </div>\r\n </span>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"sub-menu-fondo animate__animated animate__fadeIn animate__faster\" (click)=\"menuPrincipalSel=null\"\r\n *ngIf=\"menuPrincipalSel\"></div>\r\n\r\n<div class=\"sub-menu animate__animated animate__fadeIn animate__faster\" *ngIf=\"menuPrincipalSel\">\r\n <div class=\"container-fluid\">\r\n <div class=\"row\">\r\n <div class=\"col-12 col-lg-5\">\r\n <div class=\"px-3 px-sm-5 pt-5 pb-lg-5 text-center descripcion-menu\">\r\n <mat-icon [ngStyle]=\"{'color': colorFondo}\" svgIcon=\"{{menuPrincipalSel.icono}}\">\r\n {{menuPrincipalSel.icono}}</mat-icon>\r\n <p>{{menuPrincipalSel.titulo}}</p>\r\n <p class=\"text-secondary\">{{menuPrincipalSel.descripcion}}</p>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-lg-7 my-4\">\r\n <div class=\"px-3 px-md-4 py-2 py-md-2\">\r\n <ul class=\"list-unstyled\">\r\n\r\n <li class=\"mb-3 d-flex\" *ngFor=\"let menuItem of menuPrincipalSel.hijos\">\r\n <mat-icon>{{menuItem.icono}}</mat-icon>\r\n <div class=\"ml-2 flex-fill\">\r\n <a href=\"{{menuItem.url}}\" *ngIf=\"menuItem.url\">\r\n <div class=\"lead mb-2\">{{menuItem.titulo}}</div>\r\n </a>\r\n <div class=\"lead mb-2\" *ngIf=\"!menuItem.url\">{{menuItem.titulo}}</div>\r\n\r\n <a href=\"{{menuSubItem.url}}\" class=\"pl-2 my-2\" *ngFor=\"let menuSubItem of menuItem.hijos\">\r\n <div class=\"text-secondary\">{{menuSubItem.titulo}}</div>\r\n </a>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <button mat-icon-button class=\"close-icon d-lg-none\" (click)=\"menuPrincipalSel=null\">\r\n <mat-icon>arrow_back</mat-icon>\r\n </button>\r\n</div>\r\n<div class=\"alerta-almacenamiento\" *ngIf=\"porcentajeUtilizado >= 100\">Su capacidad de almacenamiento ha llegado al {{porcentajeUtilizado}}% , libere espacio o adquiera mayor capacidad</div>",
145
- styles: [".menu{height:46px;display:flex;justify-content:space-between;align-items:center;top:0;left:0;right:0;background-color:#1c98a4;color:#fff;padding:0 4px}.menu .d-lg-block .mat-button{font-weight:400;height:46px;line-height:46px}.menu .logo{display:inline-block;height:40px}.menu .logo-menu-principal{position:absolute;display:block;left:65px}.menu .logo-menu-principal>img{display:block;margin:0 -50%}.menu .info-adicional{color:#fff;display:flex;justify-content:end;font-size:13px;position:absolute;right:47px}.menu .info-adicional .border-r{border-right:1px solid #fff}.menu .info-adicional .version{margin:7px 0 0 7px}.menu .info-adicional div.datos{margin:0 2px 0 5px;height:28px}.menu .info-adicional .mat-icon{vertical-align:middle;font-size:17px;color:#fff;line-height:21px;margin-left:2px}.menu .info-adicional button{padding:0 0 0 15px}.menu .info-adicional .content-idioma{margin:-5px 2px 0 5px;display:block;cursor:pointer}.menu .info-adicional .icon-idioma{font-size:17px!important;vertical-align:text-top!important;color:#fffc}.sub-menu{width:100%;position:absolute;top:46px;z-index:1000;background-color:#fff;display:flex;overflow-y:auto;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.sub-menu .close-icon{position:absolute;left:4px;top:4px}.sub-menu .descripcion-menu .mat-icon{color:#1c98a4;width:100px;height:100px}.sub-menu .descripcion-menu p:first-of-type{font-weight:300;font-size:30px;margin:16px 0}.sub-menu .descripcion-menu p:last-of-type{color:#6c757d}.sub-menu li{float:left;width:50%}.sub-menu li>.mat-icon{color:#444}.sub-menu li:nth-child(even){float:right}.sub-menu li a{transition:.5s;display:block}.sub-menu li a:hover{margin-left:8px}.sub-menu li .lead{line-height:24px;color:#212529;font-size:17px}.sub-menu-fondo{background:#272d3357;position:absolute;top:46px;bottom:0;left:0;right:0;z-index:1000}.menu-lateral{width:100%;position:absolute;top:46px;bottom:0;left:0;right:0;z-index:1000;display:flex;flex-direction:column;overflow-y:auto;background:#f7f7f7;padding:20px}.menu-lateral>div>div>*>div{text-align:center;padding:16px;background-color:#fff;margin:0 0 16px;color:#333;cursor:pointer;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.menu-lateral>div>div>*>div>.mat-icon{width:50px;height:50px}.menu-lateral>div>div>*>div>p{padding:0;margin:8px 0 0}a.mat-menu-item{color:#444!important}.alerta-almacenamiento{background:#ffffec;border-bottom:1px solid #efff00;min-height:39px;line-height:36px;font-size:12px;padding:0 0 0 25px}@media (max-width:767.98px){.sub-menu ul{margin:auto;padding:0 10px}.sub-menu ul li{float:none;width:100%}.sub-menu ul li:nth-child(even){float:none}}@media (max-width:991.98px){.sub-menu{bottom:0}}@media (min-width:600px){.logo-menu-principal{left:50%!important}}* :focus,:active{outline:0!important}"]
176
+ template: "<div class=\"menu\" [ngStyle]=\"{'background-color': colorFondo, 'color': colorTexto}\">\r\n <div class=\"d-lg-none\">\r\n <button mat-icon-button (click)=\"menuLateralAbierto=!menuLateralAbierto; menuPrincipalSel = null\">\r\n <mat-icon *ngIf=\"!menuLateralAbierto\" class=\"animate__animated animate__fadeInRight animate__faster\">menu\r\n </mat-icon>\r\n <mat-icon *ngIf=\"menuLateralAbierto\" class=\"animate__animated animate__fadeInLeft animate__faster\">close\r\n </mat-icon>\r\n </button>\r\n </div>\r\n <div class=\"d-lg-none logo-menu-principal\">\r\n <img class=\"logo\" src=\"{{logo}}\">\r\n </div>\r\n <div class=\"d-none d-lg-block\">\r\n <img class=\"logo\" src=\"{{logo}}\">\r\n <div *ngFor=\"let menuItem of menuPrincipal; let i=index\" class=\"d-inline-block\">\r\n\r\n <a *ngIf=\"menuItem.url\" mat-button [href]=\"menuItem.url\" (click)=\"clickMenuPrincipal(i)\">\r\n {{menuItem.titulo}}\r\n </a>\r\n <button *ngIf=\"!menuItem.url\" mat-button (click)=\"clickMenuPrincipal(i)\">\r\n {{menuItem.titulo}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"info-adicional\">\r\n <div class=\"datos border-r mt-1 boton-asistente-datos\" *ngIf=\"puedeAsistente\" matTooltip=\"Preg\u00FAntale a tus datos\" (click)=\"asistenteAbierto = !asistenteAbierto\">\r\n <span class=\"icono-asistente-fab\"></span>\r\n </div>\r\n <div class=\"datos border-r mt-1\" *ngIf=\"nombreCliente\">{{nombreCliente}}<mat-icon>people</mat-icon></div>\r\n <div class=\"datos border-r mt-1\" *ngIf=\"nombreUsuario\">{{nombreUsuario}}<mat-icon>person_outline</mat-icon></div>\r\n <div class=\"version\" *ngIf=\"versionWeb\">{{versionWeb}}</div>\r\n <div class=\"content-idioma\" *ngIf=\"urlIdiomas\">\r\n <mat-menu #menuIdiomas=\"matMenu\">\r\n <a mat-menu-item *ngFor=\"let menuItem of menuIdioma.Culturas\" href=\"{{urlCuentaSeguridad}}CambiarIdioma?culture={{menuItem.Name}}&ReturnUrl=/\">\r\n {{menuItem.NativeName}}\r\n </a>\r\n </mat-menu>\r\n <button mat-button [matMenuTriggerFor]=\"menuIdiomas\"><label class=\"mt-1\">{{menuIdioma.Lenguaje}}</label><mat-icon class=\"icon-idioma\">language</mat-icon></button>\r\n </div>\r\n\r\n </div>\r\n <div>\r\n <mat-menu #submenu=\"matMenu\">\r\n <a mat-menu-item *ngFor=\"let menuItem of menuSecundarioSel.hijos\" href=\"{{menuItem.url}}\"\r\n [disabled]=\"!menuItem.url\">\r\n <mat-icon *ngIf=\"menuItem.icono\">{{menuItem.icono}}</mat-icon>\r\n {{menuItem.titulo}}\r\n </a>\r\n </mat-menu>\r\n <button *ngFor=\"let menuItem of menuSecundario; let i = index\" mat-icon-button [matMenuTriggerFor]=\"submenu\"\r\n (click)=\"clickMenuSecundario(i)\">\r\n <mat-icon>{{menuItem.icono}}</mat-icon>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div class=\"menu-lateral d-lg-none animate__animated animate__fadeInRight animate__faster\" *ngIf=\"menuLateralAbierto\">\r\n <div class=\"row\">\r\n <div *ngFor=\"let menuItem of menuPrincipal; let i=index\" class=\"col-sm-6 col-md-4\">\r\n <a *ngIf=\"menuItem.url\" [href]=\"menuItem.url\" (click)=\"clickMenuPrincipal(i)\">\r\n <div>\r\n <mat-icon svgIcon=\"{{menuItem.icono}}\">{{menuItem.icono}}</mat-icon>\r\n <p>{{menuItem.titulo}}</p>\r\n </div>\r\n </a>\r\n <span *ngIf=\"!menuItem.url\" (click)=\"clickMenuPrincipal(i)\">\r\n <div>\r\n <mat-icon svgIcon=\"{{menuItem.icono}}\">{{menuItem.icono}}</mat-icon>\r\n <p>{{menuItem.titulo}}</p>\r\n </div>\r\n </span>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"sub-menu-fondo animate__animated animate__fadeIn animate__faster\" (click)=\"menuPrincipalSel=null\"\r\n *ngIf=\"menuPrincipalSel\"></div>\r\n\r\n<div class=\"sub-menu animate__animated animate__fadeIn animate__faster\" *ngIf=\"menuPrincipalSel\">\r\n <div class=\"container-fluid\">\r\n <div class=\"row\">\r\n <div class=\"col-12 col-lg-5\">\r\n <div class=\"px-3 px-sm-5 pt-5 pb-lg-5 text-center descripcion-menu\">\r\n <mat-icon [ngStyle]=\"{'color': colorFondo}\" svgIcon=\"{{menuPrincipalSel.icono}}\">\r\n {{menuPrincipalSel.icono}}</mat-icon>\r\n <p>{{menuPrincipalSel.titulo}}</p>\r\n <p class=\"text-secondary\">{{menuPrincipalSel.descripcion}}</p>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-lg-7 my-4\">\r\n <div class=\"px-3 px-md-4 py-2 py-md-2\">\r\n <ul class=\"list-unstyled\">\r\n\r\n <li class=\"mb-3 d-flex\" *ngFor=\"let menuItem of menuPrincipalSel.hijos\">\r\n <mat-icon>{{menuItem.icono}}</mat-icon>\r\n <div class=\"ml-2 flex-fill\">\r\n <a href=\"{{menuItem.url}}\" *ngIf=\"menuItem.url\">\r\n <div class=\"lead mb-2\">{{menuItem.titulo}}</div>\r\n </a>\r\n <div class=\"lead mb-2\" *ngIf=\"!menuItem.url\">{{menuItem.titulo}}</div>\r\n\r\n <a href=\"{{menuSubItem.url}}\" class=\"pl-2 my-2\" *ngFor=\"let menuSubItem of menuItem.hijos\">\r\n <div class=\"text-secondary\">{{menuSubItem.titulo}}</div>\r\n </a>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <button mat-icon-button class=\"close-icon d-lg-none\" (click)=\"menuPrincipalSel=null\">\r\n <mat-icon>arrow_back</mat-icon>\r\n </button>\r\n</div>\r\n<div class=\"alerta-almacenamiento\" *ngIf=\"porcentajeUtilizado >= 100\">Su capacidad de almacenamiento ha llegado al {{porcentajeUtilizado}}% , libere espacio o adquiera mayor capacidad</div>\r\n\r\n<!-- Asistente \"Preg\u00FAntale a tus datos\": panel flotante que se abre desde el bot\u00F3n del men\u00FA. -->\r\n<wm-asistente-datos *ngIf=\"puedeAsistente\" [abierto]=\"asistenteAbierto\" [urlConsultar]=\"urlAsistenteConsultar\"\r\n [idioma]=\"idiomaAsistente\" (cerrarChange)=\"asistenteAbierto = false\"></wm-asistente-datos>",
177
+ styles: [".menu{height:46px;display:flex;justify-content:space-between;align-items:center;top:0;left:0;right:0;background-color:#1c98a4;color:#fff;padding:0 4px}.menu .d-lg-block .mat-button{font-weight:400;height:46px;line-height:46px}.menu .logo{display:inline-block;height:40px}.menu .logo-menu-principal{position:absolute;display:block;left:65px}.menu .logo-menu-principal>img{display:block;margin:0 -50%}.menu .info-adicional{color:#fff;display:flex;justify-content:end;font-size:13px;position:absolute;right:47px}.menu .info-adicional .border-r{border-right:1px solid #fff}.menu .info-adicional .version{margin:7px 0 0 7px}.menu .info-adicional div.datos{margin:0 2px 0 5px;height:28px}.menu .info-adicional .boton-asistente-datos{cursor:pointer;padding-right:10px}.menu .info-adicional .mat-icon{vertical-align:middle;font-size:17px;color:#fff;line-height:21px;margin-left:2px}.menu .info-adicional button{padding:0 0 0 15px}.menu .info-adicional .content-idioma{margin:-5px 2px 0 5px;display:block;cursor:pointer}.menu .info-adicional .icon-idioma{font-size:17px!important;vertical-align:text-top!important;color:#fffc}.sub-menu{width:100%;position:absolute;top:46px;z-index:1000;background-color:#fff;display:flex;overflow-y:auto;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.sub-menu .close-icon{position:absolute;left:4px;top:4px}.sub-menu .descripcion-menu .mat-icon{color:#1c98a4;width:100px;height:100px}.sub-menu .descripcion-menu p:first-of-type{font-weight:300;font-size:30px;margin:16px 0}.sub-menu .descripcion-menu p:last-of-type{color:#6c757d}.sub-menu li{float:left;width:50%}.sub-menu li>.mat-icon{color:#444}.sub-menu li:nth-child(even){float:right}.sub-menu li a{transition:.5s;display:block}.sub-menu li a:hover{margin-left:8px}.sub-menu li .lead{line-height:24px;color:#212529;font-size:17px}.sub-menu-fondo{background:#272d3357;position:absolute;top:46px;bottom:0;left:0;right:0;z-index:1000}.menu-lateral{width:100%;position:absolute;top:46px;bottom:0;left:0;right:0;z-index:1000;display:flex;flex-direction:column;overflow-y:auto;background:#f7f7f7;padding:20px}.menu-lateral>div>div>*>div{text-align:center;padding:16px;background-color:#fff;margin:0 0 16px;color:#333;cursor:pointer;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.menu-lateral>div>div>*>div>.mat-icon{width:50px;height:50px}.menu-lateral>div>div>*>div>p{padding:0;margin:8px 0 0}a.mat-menu-item{color:#444!important}.alerta-almacenamiento{background:#ffffec;border-bottom:1px solid #efff00;min-height:39px;line-height:36px;font-size:12px;padding:0 0 0 25px}@media (max-width:767.98px){.sub-menu ul{margin:auto;padding:0 10px}.sub-menu ul li{float:none;width:100%}.sub-menu ul li:nth-child(even){float:none}}@media (max-width:991.98px){.sub-menu{bottom:0}}@media (min-width:600px){.logo-menu-principal{left:50%!important}}* :focus,:active{outline:0!important}.icono-asistente-fab{display:inline-block;width:32px;height:32px;vertical-align:middle;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAGYktHRAD/AP8A/6C9p5MAAAAHdElNRQfqChsPKQzwD86GAAAKkUlEQVRYw42Xe4xd1XXGf3vv87r3zr3z8IxnPLbHL4wntQHbNaFQ1zZ2HcCYNoUmKaJqQ6FKWlpVStJWaqUoSpX80zZCSoqg5ZEHJMFRcFqCYaDETsDIiWV7sI3x+P2ap2fGc9/ntffuH3dmjHmIbumce865Oudb+1vf+vbagg8ZG/r6GDlbxHcdLpfK3LfxVvnSvoPLozjebLS+3Wh9gzWm2xiTEyCEEBWh5LCQ6qhS6peuo15f13v9wN7D7+jO5jxhkrIx381//emGD2CJ9z9Y/8RP6S9eoTXI8Pk7Nomn+3avS+L48zpJ7kzjuEcniWOtxVqLnfmAMQhACIF0nNTx/UHXD171fO+7a5ct3nfw1FlzcarI7dctZvcD2z86gJuf3skDt6zjG32v0xQEc2th+HdJGD6c1OtztbVY5YLrgnJAiMbbFrAWtMamCUQRIo1RSuLlchNuJvu9XCb4VqlaH7x1aQ8XJq7w9hc++8EAbvn+z2nJZth35iyFTGZ1GIb/FtVqW9IkxXo+wg9AKhACi0W8hwFL4ySsBaOxaQphHaIarufjFQpvBkHwpfFyZf/qhfPQqWb/w38MgGzM/EW+sGljAzybva1Wrz9bL1e2JAZoKkAmh5YSbQ3aGKyxGNs4tLEYYzBGo41GW4uWEpvNQb6FWGvCyYn1tUr12bZcdlP/xRF6uzq49cmfNhhY8M//QrW9B09KPOXcWK/XngvL5VXa9SHIgoA5gc/i5hztGR9Pqau0WXs1f9YCDW3U4pRLpQrnpkrU4wRRqyLTmKCldSCbyz0QpemBSpLwB0t7EKue3Ek5ilBStldq1R/Wy+WtWrmYTJZmz+O2+e20BR6DpQpjtTqxbgjuKvezP7PPm1yXhfkcza7DoaHLvDM2ga1VcUxK0DbnF/lc7v4kTceyroOTcV2OPvxHdD36g7+Oa7WtWihMkGV+U5YtPV0MTExycGiU6+e0sLGnm1bfQ4gGur02DgSQGMOlUpUDI+NU44Tb5nfSmcuw5+wgaaVIXC5trjvO3wx/+cGvrn5iB2L+t5/DkerGarWyq16rzzfZJjpyWbYt7eaNC0O0ZXy+cstNbFzUTbPnNtT/MUMbw/lihafePs6zR0/wO92dFMtVfnnmIrJaJmhpGc7l83enWh9S5ZdfIPupP/xKVK3dqV0Px/O5e2k3h0Yu05XL8sRdG7h1QReBktiPARbTwQmgLROwsWcegVLsOHaa1V3tVMKYyXqISOK89IPa8Jcf7FNLH//J0jCsfz2KknbjZ7iho5UmR3KpXOU7d6xn1dw2rP046Ab4oZFx9g2Osqy1gBQCJQSrO9s5V6rw1tAYazvbOD5exEZ1lOe1P9Y/8LKMdXp7mqRLrOOilKK3rcDhsQnu613Cb3e1/7/AjQVtLM8fO8U39h6kGMYIIbCA5ygeWt1LrDXKcehsymCkIg3DxbHWmxyd6s06TT3r+DS7Ck8KwlRz59IeEKKhbGtnJW6tnaV65nrHoRIDYwkVDNbCgSvDFCerfLq7F1859M5pYWV7K0O1kAX5HIOTU5g4do3Wt0tjzWpjLVZKWnyXShzTEngsackTpSn9I+NMRTGjlTqHxyaIteb4+BUulMpEoaY8FbH/fMgvTtaoJRYpBC+NnODbp/ZxoVJjrGwIHIfr57QwGUa0ZXyQCqM1Ok1vcqyxC6wFpCRQiijVZB2HJs/ltbODPNL3Bn+1diXDlRp9Zy7ytQ3rePQ3R1jcmuchtZyRExWS+W2oBlVYLMYapBDs6C8zcKnO45/ppNn3SLTBd51G6VqLNXqBY43Jz2RZG4MSgtRYUmPozGVY3TmHZa0FCp7LaLXGokITqzraWNzSRHg+ZfJyiOmyiPcaAo3UTVY1Q0VItKWWpCgpSFM9mz6rdd5hurKFEJTihJzrcCWKGK7UuLl7Lj/69O8TKIUBHrypl4yjWNPZjqMkl9rLdHVnOTMh0UYjpjWjpgV4z8om7lqWwXctZ6ZKFDyXUrmMnfESC46QsgZkBTAVxnhCEGnN3kujrOxoI+s4WEABjqOwgO8oABavKLB4RTPv7i+S9SVFBamxbJ+3go0s5LZ5zXjS4cyVEkfGJlnVVqB/cBgpRCNYpWqOVGpYwDKMJkQwVKqyrDnPc0dPsP26HrrzudlF5/0FaafX4fvX5sEKfnayREvgsH7uQrKuM7tA7Xj3NJUkIWcMQ5U6QigQIB01IqWSR5QUWK2RUnJodJLelgLnihW++dYhpsJotuw+ajhS4Cq4b8USvr7hZjKOaoQrBLtOXeSp/uOs7Wjl+OAwIRJhNUo5SMc5KqVUu5XjaNIEIQQTqebtoTG2LOziheNneKTvTU5OTs3mV8zQ974DIZBS4iiJEDBRj3iy/12+9L9vMa8pQzaK6B+9gnJdbJIiPU8r5exxXEe95vjeBRFVllijkY7LwYkSeSXYuqibn5+6wLZlC1ne1kItTXnl9EXOFst8FCfGwmi1zv7hMU5OFlnV3kqPNPzPkZNoz29MwqQ4Qf6i66jXnE/1Xj/w4uGjuxxHPZLEMSLIgOdztFhje2cHhcBjxZwWBstVvrn3ID87cQ5XSeQ1Icy2pwAEjqI7l2F7TxeXx8bZeW6QmusjXRdbr6FcF8f3X7ntup7jzktHjhlXOU97meDetFyZZ10XKxVdLQXG44S2TMCpyRL/8PqvOVcsccfCTtwkJjWGDzbVFizEacrlqSu8evI0I2GKzGaRjovVGpIIt7n5sue5z+w5dto4c5uyHPizew7O/48fPeFF8dfCsI4JsszNBYzXQ8aqdf5pz2+Yk/HZtqCTX584w7HJYqNBnVl7Z8rDTjshAiskynVRTRmQsuGR9Squ7+NlMs/c8VvL9+8/cwGx8qmd1JIEJdWccq32g3qpdFdk4ZM93SxobmLv4ChrOlrpEJZXB84ymlpUEICQ7+kJG4qfbdHFtBdOZ8Zai61VUSYh29r2Rj6X/Vyq9XDgOKgta36PgcBHa133XfcQQvyujcKusakiPbmANe3NTE5O8cqpC5QdHxlcbc8RH1IVslENM/9baxt51wlBc/OJTDb7xUoYDowUSyzt6GwkccPTL/Krv7iH1m99j7znrquH4X+GpdKaJIxwPZdUOYggg1BqxrixxoC10zjTPeL0vaXBjk1TbL2KsoagUBgIMpkvTlRre+5auZxqPabvT+68qqKbn9nJkvY29pw6T+A6nwij+F/jWnVbHEUC10d4PswG0JjZ1S3Z9Glmy2YsxBFEdVzPxWvK784Ewd9fLlUOrFnYRS2K6f/Lz8C0xQMw9N/Pw6ZtnPvqvxOs/+R4IRO8bJVTVkqtsGlcMFEIOr3Gj8X0jQCsNqATTBQhojoKS5DLjQT5/KP5ptw/VsP45L1rP8HIVJmD07uimXevGeu//wLvXi7R5Huc/8lOFn323hvjJPnzJIruSeN4sU4T15j3RtGYOdPdkXJU6nj+BTfwd3mu991fPXL/wU2P/diO1ups6Omi73PbrsH7UEO74c3D6HeOk3FdRipVLv3tAyx9fMfyOEk2a603G61vNEbPt8Y0AQgpK0LKIamcI0qp3Z6jXn/o7q0nHtu5y3a3thAmCasWFXh+69YPYP0fkxcdMAP8qLgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjYtMTAtMjdUMTU6NDE6MDkrMDA6MDB4bGCMAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDI2LTEwLTI3VDE1OjQxOjA5KzAwOjAwCTHYMAAAACh0RVh0ZGF0ZTp0aW1lc3RhbXAAMjAyNi0xMC0yN1QxNTo0MToxMiswMDowMJCJrYsAAAAASUVORK5CYII=) center/contain no-repeat}"]
146
178
  })
147
179
  ], WmMenuComponent);
148
180
  return WmMenuComponent;
149
181
  }());
150
182
  export { WmMenuComponent };
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid20tbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly93bS1tZW51LyIsInNvdXJjZXMiOlsibGliL3dtLW1lbnUvd20tbWVudS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQU9yRjtJQThCSSx5QkFBb0IscUJBQTRDLEVBQVUsbUJBQThDO1FBQXBHLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFBVSx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQTJCO1FBTnhILHNCQUFpQixHQUFtQixJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ3pELHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUVwQyxlQUFVLEdBQVMsRUFBRSxDQUFDO1FBQ2QsMEJBQXFCLEdBQUcsS0FBSyxDQUFDO0lBRXNGLENBQUM7SUFFN0gsa0NBQVEsR0FBUjtRQUFBLGlCQXFDQztRQXBDRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUV4QixJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxjQUFNLE9BQUEsS0FBSSxDQUFDLG1CQUFtQixDQUFDLHdCQUF3QixDQUFDLEtBQUksQ0FBQyx1QkFBdUIsRUFBRSxLQUFJLENBQUMsS0FBSyxDQUFDLEVBQTNGLENBQTJGLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTdO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QUVqQztRQUFSLEtBQUssRUFBRTtvREFBaUI7SUFDaEI7UUFBUixLQUFLLEVBQUU7a0RBQWU7SUFDZDtRQUFSLEtBQUssRUFBRTsrREFBNEI7SUFDM0I7UUFBUixLQUFLLEVBQUU7dURBQW9CO0lBQ25CO1FBQVIsS0FBSyxFQUFFOzJEQUF3QjtJQUN2QjtRQUFSLEtBQUssRUFBRTtvRUFBaUM7SUFDaEM7UUFBUixLQUFLLEVBQUU7Z0VBQTZCO0lBQzVCO1FBQVIsS0FBSyxFQUFFO3NEQUFtQjtJQUVsQjtRQUFSLEtBQUssRUFBRTswREFBdUI7SUFDdEI7UUFBUixLQUFLLEVBQUU7MERBQXVCO0lBQ3RCO1FBQVIsS0FBSyxFQUFFO3VEQUFvQjtJQUNuQjtRQUFSLEtBQUssRUFBRTtrRUFBK0I7SUFFOUI7UUFBUixLQUFLLEVBQUU7dURBQW9CO0lBckJuQixlQUFlO1FBTDNCLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSxTQUFTO1lBQ25CLGdpTUFBdUM7O1NBRTFDLENBQUM7T0FDVyxlQUFlLENBc0czQjtJQUFELHNCQUFDO0NBQUEsQUF0R0QsSUFzR0M7U0F0R1ksZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNZW51UHJpbmNpcGFsIH0gZnJvbSAnLi9tb2RlbC93bS1tZW51LXByaW5jaXBhbC5tb2RlbCc7XHJcbmltcG9ydCB7IE1lbnVTZWN1bmRhcmlvIH0gZnJvbSAnLi9tb2RlbC93bS1tZW51LWN1ZW50YS5tb2RlbCc7XHJcbmltcG9ydCB7IFdtTWVudVNlcnZpY2lvU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvd20tbWVudS1zZXJ2aWNpby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSnd0SGVscGVyU2VydmljZSB9IGZyb20gJ0BhdXRoMC9hbmd1bGFyLWp3dCc7XHJcbmltcG9ydCB7IFdtTWVudUFsZXJ0YVBhbmljb1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3dtLW1lbnUtYWxlcnRhLXBhbmljby5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd3bS1tZW51JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi93bS1tZW51LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3dtLW1lbnUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgV21NZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIEBJbnB1dCgpIGxvZ286IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGNvbG9yRm9uZG86IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGNvbG9yVGV4dG86IHN0cmluZztcclxuICAgIEBJbnB1dCgpIG1lbnVQcmluY2lwYWw6IE1lbnVQcmluY2lwYWxbXTtcclxuICAgIEBJbnB1dCgpIG1lbnVTZWN1bmRhcmlvOiBNZW51U2VjdW5kYXJpb1tdO1xyXG5cclxuICAgIEBJbnB1dCgpIHVybE1lbnU6IHN0cmluZzsgXHJcbiAgICBASW5wdXQoKSB0b2tlbjogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgdXJsQ3VlbnRhU2VndXJpZGFkOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBhY3RpdmFyMmZhOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSB1cmxndWlhc09ubGluZTogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgdXJsT2J0ZW5lckFsZXJ0YXNQYW5pY286IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHVybE9idGVuZXJQYXJhbWV0cm86IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHJ1dGFBdWRpbzogc3RyaW5nO1xyXG5cclxuICAgIEBJbnB1dCgpIG5vbWJyZUNsaWVudGU6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIG5vbWJyZVVzdWFyaW86IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHZlcnNpb25XZWI6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHVybEJhc2VBbG1hY2VuYW1pZW50bzogc3RyaW5nO1xyXG5cclxuICAgIEBJbnB1dCgpIHVybElkaW9tYXM6IHN0cmluZztcclxuXHJcbiAgICBtZW51UHJpbmNpcGFsU2VsOiBNZW51UHJpbmNpcGFsO1xyXG4gICAgbWVudVNlY3VuZGFyaW9TZWw6IE1lbnVTZWN1bmRhcmlvID0gbmV3IE1lbnVTZWN1bmRhcmlvKCk7XHJcbiAgICBtZW51TGF0ZXJhbEFiaWVydG86IEJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHBvcmNlbnRhamVVdGlsaXphZG8gOiBudW1iZXI7XHJcbiAgICBtZW51SWRpb21hIDogYW55ID0gW107XHJcbiAgICBwcml2YXRlIGludGVydmFsb1BldGljaW9uZXNNcyA9IDYwMDAwO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgd21NZW51U2VydmljaW9TZXJ2aWNlOiBXbU1lbnVTZXJ2aWNpb1NlcnZpY2UsIHByaXZhdGUgYWxlcnRhUGFuaWNvU2VydmljZTogV21NZW51QWxlcnRhUGFuaWNvU2VydmljZSkgeyB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jYXJnYXJNZW51Q3VlbnRhKCk7XHJcblxyXG4gICAgICAgIHRoaXMuYWxlcnRhUGFuaWNvU2VydmljZS5pbmljaWFyUHJvY2Vzbyh0aGlzLmludGVydmFsb1BldGljaW9uZXNNcywgKCkgPT4gdGhpcy5hbGVydGFQYW5pY29TZXJ2aWNlLnJldmlzYXJBbGVydGFzUGVuZGllbnRlcyh0aGlzLnVybE9idGVuZXJBbGVydGFzUGFuaWNvLCB0aGlzLnRva2VuKSwgdGhpcy51cmxPYnRlbmVyUGFyYW1ldHJvLCB0aGlzLnRva2VuLCB0aGlzLnJ1dGFBdWRpbyk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnVybE1lbnUgJiYgdGhpcy50b2tlbikge1xyXG4gICAgICAgICAgICB2YXIgaGVscGVyID0gbmV3IEp3dEhlbHBlclNlcnZpY2UoKTtcclxuICAgICAgICAgICAgY29uc3QgZGVjb2RlZFRva2VuID0gaGVscGVyLmRlY29kZVRva2VuKHRoaXMudG9rZW4pO1xyXG4gICAgICAgICAgICB0aGlzLndtTWVudVNlcnZpY2lvU2VydmljZVxyXG4gICAgICAgICAgICAgICAgLm1lbnVBcGlPYnRlbmVyKHRoaXMudXJsTWVudSwgZGVjb2RlZFRva2VuW1wiaWRfdXN1YXJpb1wiXSwgdGhpcy50b2tlbilcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1lbnVQcmluY2lwYWwgPSB0aGlzLndtTWVudVNlcnZpY2lvU2VydmljZS5tYXBlYXJNZW51KHJlc3ApO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy51cmxJZGlvbWFzICYmIHRoaXMudG9rZW4pIHtcclxuICAgICAgICAgICAgdmFyIGhlbHBlciA9IG5ldyBKd3RIZWxwZXJTZXJ2aWNlKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRlY29kZWRUb2tlbiA9IGhlbHBlci5kZWNvZGVUb2tlbih0aGlzLnRva2VuKTtcclxuICAgICAgICAgICAgdGhpcy53bU1lbnVTZXJ2aWNpb1NlcnZpY2VcclxuICAgICAgICAgICAgICAgIC5tZW51SWRpb21hc09idGVuZXIodGhpcy51cmxJZGlvbWFzLCBkZWNvZGVkVG9rZW5bXCJpZF91c3VhcmlvXCJdLCB0aGlzLnRva2VuKVxyXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgdGhpcy5tZW51SWRpb21hID0gcmVzcDtcclxuICAgICAgICAgICAgICAgICAgIHRoaXMuY2FyZ2FyTWVudUN1ZW50YSgpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy51cmxCYXNlQWxtYWNlbmFtaWVudG8gJiYgdGhpcy50b2tlbikge1xyXG4gICAgICAgICAgICB2YXIgaGVscGVyID0gbmV3IEp3dEhlbHBlclNlcnZpY2UoKTtcclxuICAgICAgICAgICAgY29uc3QgZGVjb2RlZFRva2VuID0gaGVscGVyLmRlY29kZVRva2VuKHRoaXMudG9rZW4pO1xyXG4gICAgICAgICAgICB0aGlzLndtTWVudVNlcnZpY2lvU2VydmljZVxyXG4gICAgICAgICAgICAgICAgLmFsbWFjZW5hbWllbnRvQXBpT2J0ZW5lcih0aGlzLnVybEJhc2VBbG1hY2VuYW1pZW50bywgZGVjb2RlZFRva2VuW1wiaWRfdXN1YXJpb1wiXSwgdGhpcy50b2tlbilcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdXRpbGl6YWRvID0gcmVzcFswXSAmJiByZXNwWzBdLlV0aWxpemFkbyA/IHJlc3BbMF0uVXRpbGl6YWRvIDogMDtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdG90YWwgPSByZXNwWzBdICYmIHJlc3BbMF0uVG90YWwgPyByZXNwWzBdLlRvdGFsIDogMDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcmNlbnRhamVVdGlsaXphZG8gPSBNYXRoLnJvdW5kKCh1dGlsaXphZG8gLyB0b3RhbCkgKiAxMDApO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNsaWNrTWVudVByaW5jaXBhbChpOiBudW1iZXIpIHtcclxuICAgICAgICBpZiAodGhpcy5tZW51UHJpbmNpcGFsW2ldLmhpam9zICYmIHRoaXMubWVudVByaW5jaXBhbFtpXS5oaWpvcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWVudVByaW5jaXBhbFNlbCA9PSB0aGlzLm1lbnVQcmluY2lwYWxbaV0pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubWVudVByaW5jaXBhbFNlbCA9IG51bGw7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVQcmluY2lwYWxTZWwgPSB0aGlzLm1lbnVQcmluY2lwYWxbaV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2xpY2tNZW51U2VjdW5kYXJpbyhpOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLm1lbnVTZWN1bmRhcmlvU2VsID0gdGhpcy5tZW51U2VjdW5kYXJpb1tpXTtcclxuICAgICAgICB0aGlzLm1lbnVQcmluY2lwYWxTZWwgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNhcmdhck1lbnVDdWVudGEoKXtcclxuICAgICAgICBpZiAodGhpcy51cmxDdWVudGFTZWd1cmlkYWQgJiYgdGhpcy50b2tlbikge1xyXG4gICAgICAgICAgICB2YXIgaGVscGVyID0gbmV3IEp3dEhlbHBlclNlcnZpY2UoKTtcclxuICAgICAgICAgICAgY29uc3QgZGVjb2RlZFRva2VuID0gaGVscGVyLmRlY29kZVRva2VuKHRoaXMudG9rZW4pO1xyXG4gICAgICAgICAgICB0aGlzLm1lbnVTZWN1bmRhcmlvID0gW3tcclxuICAgICAgICAgICAgICAgIHRpdHVsbzogZGVjb2RlZFRva2VuW1widW5pcXVlX25hbWVcIl0sXHJcbiAgICAgICAgICAgICAgICBpY29ubzogXCJhY2NvdW50X2NpcmNsZVwiLFxyXG4gICAgICAgICAgICAgICAgaGlqb3M6IFtcclxuICAgICAgICAgICAgICAgICAgICB7IHRpdHVsbzogZGVjb2RlZFRva2VuW1widW5pcXVlX25hbWVcIl0sIHVybDogXCJcIiwgaWNvbm86IFwicGVyc29uXCIgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IHRpdHVsbzogdGhpcy5tZW51SWRpb21hICYmIHRoaXMubWVudUlkaW9tYS5DYW1iaWFyQ29udHJhc2VubmEgPyB0aGlzLm1lbnVJZGlvbWEuQ2FtYmlhckNvbnRyYXNlbm5hIDogXCJDYW1iaWFyIGNvbnRyYXNlw7FhXCIsIHVybDogdGhpcy51cmxDdWVudGFTZWd1cmlkYWQgKyBcIkNhbWJpb0NvbnRyYXNlbmFcIiwgaWNvbm86IFwidnBuX2tleVwiIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmFyMmZhID09IFwiMVwiID8geyB0aXR1bG86IHRoaXMubWVudUlkaW9tYSAmJiB0aGlzLm1lbnVJZGlvbWEuQ29uZmlndXJhcjJmYSA/IHRoaXMubWVudUlkaW9tYS5Db25maWd1cmFyMmZhIDogXCJDb25maWd1cmFyIDJGQVwiLCB1cmw6IHRoaXMudXJsQ3VlbnRhU2VndXJpZGFkICsgXCJIYWJpbGl0YWNpb24yRkFcIiwgaWNvbm86IFwidmVyaWZpZWRfdXNlclwiIH0gOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXJsZ3VpYXNPbmxpbmUgIT0gbnVsbCAmJiB0aGlzLnVybGd1aWFzT25saW5lICE9PSBcIlwiICYmIHRoaXMudXJsZ3VpYXNPbmxpbmU/Lmxlbmd0aCAhPSAwID8geyB0aXR1bG86IHRoaXMubWVudUlkaW9tYSAmJiB0aGlzLm1lbnVJZGlvbWEuZ3VpYXNPbmxpbmUgPyB0aGlzLm1lbnVJZGlvbWEuZ3VpYXNPbmxpbmUgOiBcIkd1aWFzIE9ubGluZVwiLCB1cmw6IHRoaXMudXJsZ3VpYXNPbmxpbmUsIGljb25vOiBcIm1lbnVfYm9va1wiIH0gOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgIHsgdGl0dWxvOiB0aGlzLm1lbnVJZGlvbWEgJiYgdGhpcy5tZW51SWRpb21hLkNlcnJhclNlc2lvbiA/IHRoaXMubWVudUlkaW9tYS5DZXJyYXJTZXNpb24gOiBcIkNlcnJhciBzZXNpw7NuXCIsIHVybDogdGhpcy51cmxDdWVudGFTZWd1cmlkYWQgKyBcIkNlcnJhclNlc2lvblwiLCBpY29ubzogXCJleGl0X3RvX2FwcFwiIH1dLmZpbHRlcihoaWpvID0+IGhpam8gIT0gbnVsbCksXHJcbiAgICAgICAgICAgIH1dO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid20tbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly93bS1tZW51LyIsInNvdXJjZXMiOlsibGliL3dtLW1lbnUvd20tbWVudS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQU9yRjtJQStDSSx5QkFBb0IscUJBQTRDLEVBQVUsbUJBQThDO1FBQXBHLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFBVSx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQTJCO1FBbkIvRyxxQkFBZ0IsR0FBcUIsS0FBSyxDQUFDO1FBRTNDLG9CQUFlLEdBQVcsT0FBTyxDQUFDO1FBQzNDLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUNqQixxQkFBZ0IsR0FBVSxFQUFFLENBQUM7UUFTckMsc0JBQWlCLEdBQW1CLElBQUksY0FBYyxFQUFFLENBQUM7UUFDekQsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBRXBDLGVBQVUsR0FBUyxFQUFFLENBQUM7UUFDZCwwQkFBcUIsR0FBRyxLQUFLLENBQUM7SUFFc0YsQ0FBQztJQWI3SCxzQkFBSSwyQ0FBYzthQUFsQjtZQUNJLElBQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLE1BQU0sSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssR0FBRyxDQUFDO1lBQ3BILElBQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJ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SUFDdkI7UUFBUixLQUFLLEVBQUU7b0VBQWlDO0lBQ2hDO1FBQVIsS0FBSyxFQUFFO2dFQUE2QjtJQUM1QjtRQUFSLEtBQUssRUFBRTtzREFBbUI7SUFFbEI7UUFBUixLQUFLLEVBQUU7MERBQXVCO0lBQ3RCO1FBQVIsS0FBSyxFQUFFOzBEQUF1QjtJQUN0QjtRQUFSLEtBQUssRUFBRTt1REFBb0I7SUFDbkI7UUFBUixLQUFLLEVBQUU7a0VBQStCO0lBRTlCO1FBQVIsS0FBSyxFQUFFO3VEQUFvQjtJQU1uQjtRQUFSLEtBQUssRUFBRTtnRUFBNkI7SUFDNUI7UUFBUixLQUFLLEVBQUU7NkRBQTRDO0lBQzNDO1FBQVIsS0FBSyxFQUFFO2tFQUErQjtJQUM5QjtRQUFSLEtBQUssRUFBRTs0REFBbUM7SUE5QmxDLGVBQWU7UUFMM0IsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLFNBQVM7WUFDbkIsOG5OQUF1Qzs7U0FFMUMsQ0FBQztPQUNXLGVBQWUsQ0FrSTNCO0lBQUQsc0JBQUM7Q0FBQSxBQWxJRCxJQWtJQztTQWxJWSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1lbnVQcmluY2lwYWwgfSBmcm9tICcuL21vZGVsL3dtLW1lbnUtcHJpbmNpcGFsLm1vZGVsJztcclxuaW1wb3J0IHsgTWVudVNlY3VuZGFyaW8gfSBmcm9tICcuL21vZGVsL3dtLW1lbnUtY3VlbnRhLm1vZGVsJztcclxuaW1wb3J0IHsgV21NZW51U2VydmljaW9TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy93bS1tZW51LXNlcnZpY2lvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBKd3RIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQGF1dGgwL2FuZ3VsYXItand0JztcclxuaW1wb3J0IHsgV21NZW51QWxlcnRhUGFuaWNvU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvd20tbWVudS1hbGVydGEtcGFuaWNvLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3dtLW1lbnUnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3dtLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vd20tbWVudS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXbU1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQElucHV0KCkgbG9nbzogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgY29sb3JGb25kbzogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgY29sb3JUZXh0bzogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgbWVudVByaW5jaXBhbDogTWVudVByaW5jaXBhbFtdO1xyXG4gICAgQElucHV0KCkgbWVudVNlY3VuZGFyaW86IE1lbnVTZWN1bmRhcmlvW107XHJcblxyXG4gICAgQElucHV0KCkgdXJsTWVudTogc3RyaW5nOyBcclxuICAgIEBJbnB1dCgpIHRva2VuOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSB1cmxDdWVudGFTZWd1cmlkYWQ6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGFjdGl2YXIyZmE6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHVybGd1aWFzT25saW5lOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSB1cmxPYnRlbmVyQWxlcnRhc1Bhbmljbzogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgdXJsT2J0ZW5lclBhcmFtZXRybzogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgcnV0YUF1ZGlvOiBzdHJpbmc7XHJcblxyXG4gICAgQElucHV0KCkgbm9tYnJlQ2xpZW50ZTogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgbm9tYnJlVXN1YXJpbzogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgdmVyc2lvbldlYjogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgdXJsQmFzZUFsbWFjZW5hbWllbnRvOiBzdHJpbmc7XHJcblxyXG4gICAgQElucHV0KCkgdXJsSWRpb21hczogc3RyaW5nO1xyXG5cclxuICAgIC8vIEFzaXN0ZW50ZSBkZSBJQSBcIlByZWfDum50YWxlIGEgdHVzIGRhdG9zXCIgY29tbyBvcGNpw7NuIGRlbCBtZW7DuiAocmVlbXBsYXphIGVsIGJvdMOzbiBmbG90YW50ZSkuXHJcbiAgICAvLyBFbCBnYXRlbyByZWFsIGxvIGhhY2UgZWwgbWVuw7o6IGNhcmdhIGxhcyBmdW5jaW9uZXMgZGVsIHVzdWFyaW8gKHVybE9idGVuZXJGdW5jaW9uZXMgKyB0b2tlbikgeVxyXG4gICAgLy8gbXVlc3RyYSBlbCBhc2lzdGVudGUgc29sbyBzaSB0aWVuZSBXZWJDaGF0Q29uc3VsdGFJQS4gYG1vc3RyYXJBc2lzdGVudGVgIGVzIHVuIG92ZXJyaWRlIG9wY2lvbmFsXHJcbiAgICAvLyAoZWouIGhhcm5lc3MvZGV2KSBxdWUgY29tbyB3ZWIgY29tcG9uZW50IGxsZWdhIHN0cmluZywgcG9yIGVzbyBlbCBnZXR0ZXIgcHVlZGVBc2lzdGVudGUuXHJcbiAgICBASW5wdXQoKSB1cmxPYnRlbmVyRnVuY2lvbmVzOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBtb3N0cmFyQXNpc3RlbnRlOiBib29sZWFuIHwgc3RyaW5nID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSB1cmxBc2lzdGVudGVDb25zdWx0YXI6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGlkaW9tYUFzaXN0ZW50ZTogc3RyaW5nID0gJ2VzLUNPJztcclxuICAgIGFzaXN0ZW50ZUFiaWVydG8gPSBmYWxzZTtcclxuICAgIHByaXZhdGUgZnVuY2lvbmVzVXN1YXJpbzogYW55W10gPSBbXTtcclxuXHJcbiAgICBnZXQgcHVlZGVBc2lzdGVudGUoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgZm9yemFkbyA9IHRoaXMubW9zdHJhckFzaXN0ZW50ZSA9PT0gdHJ1ZSB8fCB0aGlzLm1vc3RyYXJBc2lzdGVudGUgPT09ICd0cnVlJyB8fCB0aGlzLm1vc3RyYXJBc2lzdGVudGUgPT09ICcxJztcclxuICAgICAgICBjb25zdCB0aWVuZVBlcm1pc28gPSB0aGlzLmZ1bmNpb25lc1VzdWFyaW8uc29tZSgoZjogYW55KSA9PiBmLkNvZGlnb0xvZ2ljYSA9PT0gJ1dlYkNoYXRDb25zdWx0YUlBJyk7XHJcbiAgICAgICAgcmV0dXJuIGZvcnphZG8gfHwgdGllbmVQZXJtaXNvO1xyXG4gICAgfVxyXG5cclxuICAgIG1lbnVQcmluY2lwYWxTZWw6IE1lbnVQcmluY2lwYWw7XHJcbiAgICBtZW51U2VjdW5kYXJpb1NlbDogTWVudVNlY3VuZGFyaW8gPSBuZXcgTWVudVNlY3VuZGFyaW8oKTtcclxuICAgIG1lbnVMYXRlcmFsQWJpZXJ0bzogQm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcG9yY2VudGFqZVV0aWxpemFkbyA6IG51bWJlcjtcclxuICAgIG1lbnVJZGlvbWEgOiBhbnkgPSBbXTtcclxuICAgIHByaXZhdGUgaW50ZXJ2YWxvUGV0aWNpb25lc01zID0gNjAwMDA7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB3bU1lbnVTZXJ2aWNpb1NlcnZpY2U6IFdtTWVudVNlcnZpY2lvU2VydmljZSwgcHJpdmF0ZSBhbGVydGFQYW5pY29TZXJ2aWNlOiBXbU1lbnVBbGVydGFQYW5pY29TZXJ2aWNlKSB7IH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNhcmdhck1lbnVDdWVudGEoKTtcclxuXHJcbiAgICAgICAgdGhpcy5hbGVydGFQYW5pY29TZXJ2aWNlLmluaWNpYXJQcm9jZXNvKHRoaXMuaW50ZXJ2YWxvUGV0aWNpb25lc01zLCAoKSA9PiB0aGlzLmFsZXJ0YVBhbmljb1NlcnZpY2UucmV2aXNhckFsZXJ0YXNQZW5kaWVudGVzKHRoaXMudXJsT2J0ZW5lckFsZXJ0YXNQYW5pY28sIHRoaXMudG9rZW4pLCB0aGlzLnVybE9idGVuZXJQYXJhbWV0cm8sIHRoaXMudG9rZW4sIHRoaXMucnV0YUF1ZGlvKTtcclxuXHJcbiAgICAgICAgLy8gQ2FyZ2EgbGFzIGZ1bmNpb25lcyBkZWwgdXN1YXJpbyBwYXJhIGdhdGVhciBlbCBhc2lzdGVudGUgKHB1ZWRlQXNpc3RlbnRlIC8gV2ViQ2hhdENvbnN1bHRhSUEpLlxyXG4gICAgICAgIC8vIFNpIGZhbGxhIChlai4gNDAxKSwgcXVlZGEgdmFjw61hIHkgZWwgYXNpc3RlbnRlIG5vIHNlIG11ZXN0cmEuXHJcbiAgICAgICAgaWYgKHRoaXMudXJsT2J0ZW5lckZ1bmNpb25lcyAmJiB0aGlzLnRva2VuKSB7XHJcbiAgICAgICAgICAgIHRoaXMud21NZW51U2VydmljaW9TZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAuZnVuY2lvbmVzT2J0ZW5lcih0aGlzLnVybE9idGVuZXJGdW5jaW9uZXMsIHRoaXMudG9rZW4pXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgICAgIChyZXNwKSA9PiB7IHRoaXMuZnVuY2lvbmVzVXN1YXJpbyA9IHJlc3AgPz8gW107IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgKCkgPT4geyB0aGlzLmZ1bmNpb25lc1VzdWFyaW8gPSBbXTsgfVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnVybE1lbnUgJiYgdGhpcy50b2tlbikge1xyXG4gICAgICAgICAgICB2YXIgaGVscGVyID0gbmV3IEp3dEhlbHBlclNlcnZpY2UoKTtcclxuICAgICAgICAgICAgY29uc3QgZGVjb2RlZFRva2VuID0gaGVscGVyLmRlY29kZVRva2VuKHRoaXMudG9rZW4pO1xyXG4gICAgICAgICAgICB0aGlzLndtTWVudVNlcnZpY2lvU2VydmljZVxyXG4gICAgICAgICAgICAgICAgLm1lbnVBcGlPYnRlbmVyKHRoaXMudXJsTWVudSwgZGVjb2RlZFRva2VuW1wiaWRfdXN1YXJpb1wiXSwgdGhpcy50b2tlbilcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1lbnVQcmluY2lwYWwgPSB0aGlzLndtTWVudVNlcnZpY2lvU2VydmljZS5tYXBlYXJNZW51KHJlc3ApO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy51cmxJZGlvbWFzICYmIHRoaXMudG9rZW4pIHtcclxuICAgICAgICAgICAgdmFyIGhlbHBlciA9IG5ldyBKd3RIZWxwZXJTZXJ2aWNlKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRlY29kZWRUb2tlbiA9IGhlbHBlci5kZWNvZGVUb2tlbih0aGlzLnRva2VuKTtcclxuICAgICAgICAgICAgdGhpcy53bU1lbnVTZXJ2aWNpb1NlcnZpY2VcclxuICAgICAgICAgICAgICAgIC5tZW51SWRpb21hc09idGVuZXIodGhpcy51cmxJZGlvbWFzLCBkZWNvZGVkVG9rZW5bXCJpZF91c3VhcmlvXCJdLCB0aGlzLnRva2VuKVxyXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgdGhpcy5tZW51SWRpb21hID0gcmVzcDtcclxuICAgICAgICAgICAgICAgICAgIHRoaXMuY2FyZ2FyTWVudUN1ZW50YSgpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy51cmxCYXNlQWxtYWNlbmFtaWVudG8gJiYgdGhpcy50b2tlbikge1xyXG4gICAgICAgICAgICB2YXIgaGVscGVyID0gbmV3IEp3dEhlbHBlclNlcnZpY2UoKTtcclxuICAgICAgICAgICAgY29uc3QgZGVjb2RlZFRva2VuID0gaGVscGVyLmRlY29kZVRva2VuKHRoaXMudG9rZW4pO1xyXG4gICAgICAgICAgICB0aGlzLndtTWVudVNlcnZpY2lvU2VydmljZVxyXG4gICAgICAgICAgICAgICAgLmFsbWFjZW5hbWllbnRvQXBpT2J0ZW5lcih0aGlzLnVybEJhc2VBbG1hY2VuYW1pZW50bywgZGVjb2RlZFRva2VuW1wiaWRfdXN1YXJpb1wiXSwgdGhpcy50b2tlbilcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdXRpbGl6YWRvID0gcmVzcFswXSAmJiByZXNwWzBdLlV0aWxpemFkbyA/IHJlc3BbMF0uVXRpbGl6YWRvIDogMDtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdG90YWwgPSByZXNwWzBdICYmIHJlc3BbMF0uVG90YWwgPyByZXNwWzBdLlRvdGFsIDogMDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcmNlbnRhamVVdGlsaXphZG8gPSBNYXRoLnJvdW5kKCh1dGlsaXphZG8gLyB0b3RhbCkgKiAxMDApO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNsaWNrTWVudVByaW5jaXBhbChpOiBudW1iZXIpIHtcclxuICAgICAgICBpZiAodGhpcy5tZW51UHJpbmNpcGFsW2ldLmhpam9zICYmIHRoaXMubWVudVByaW5jaXBhbFtpXS5oaWpvcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWVudVByaW5jaXBhbFNlbCA9PSB0aGlzLm1lbnVQcmluY2lwYWxbaV0pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubWVudVByaW5jaXBhbFNlbCA9IG51bGw7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVQcmluY2lwYWxTZWwgPSB0aGlzLm1lbnVQcmluY2lwYWxbaV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2xpY2tNZW51U2VjdW5kYXJpbyhpOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLm1lbnVTZWN1bmRhcmlvU2VsID0gdGhpcy5tZW51U2VjdW5kYXJpb1tpXTtcclxuICAgICAgICB0aGlzLm1lbnVQcmluY2lwYWxTZWwgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNhcmdhck1lbnVDdWVudGEoKXtcclxuICAgICAgICBpZiAodGhpcy51cmxDdWVudGFTZWd1cmlkYWQgJiYgdGhpcy50b2tlbikge1xyXG4gICAgICAgICAgICB2YXIgaGVscGVyID0gbmV3IEp3dEhlbHBlclNlcnZpY2UoKTtcclxuICAgICAgICAgICAgY29uc3QgZGVjb2RlZFRva2VuID0gaGVscGVyLmRlY29kZVRva2VuKHRoaXMudG9rZW4pO1xyXG4gICAgICAgICAgICB0aGlzLm1lbnVTZWN1bmRhcmlvID0gW3tcclxuICAgICAgICAgICAgICAgIHRpdHVsbzogZGVjb2RlZFRva2VuW1widW5pcXVlX25hbWVcIl0sXHJcbiAgICAgICAgICAgICAgICBpY29ubzogXCJhY2NvdW50X2NpcmNsZVwiLFxyXG4gICAgICAgICAgICAgICAgaGlqb3M6IFtcclxuICAgICAgICAgICAgICAgICAgICB7IHRpdHVsbzogZGVjb2RlZFRva2VuW1widW5pcXVlX25hbWVcIl0sIHVybDogXCJcIiwgaWNvbm86IFwicGVyc29uXCIgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IHRpdHVsbzogdGhpcy5tZW51SWRpb21hICYmIHRoaXMubWVudUlkaW9tYS5DYW1iaWFyQ29udHJhc2VubmEgPyB0aGlzLm1lbnVJZGlvbWEuQ2FtYmlhckNvbnRyYXNlbm5hIDogXCJDYW1iaWFyIGNvbnRyYXNlw7FhXCIsIHVybDogdGhpcy51cmxDdWVudGFTZWd1cmlkYWQgKyBcIkNhbWJpb0NvbnRyYXNlbmFcIiwgaWNvbm86IFwidnBuX2tleVwiIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmFyMmZhID09IFwiMVwiID8geyB0aXR1bG86IHRoaXMubWVudUlkaW9tYSAmJiB0aGlzLm1lbnVJZGlvbWEuQ29uZmlndXJhcjJmYSA/IHRoaXMubWVudUlkaW9tYS5Db25maWd1cmFyMmZhIDogXCJDb25maWd1cmFyIDJGQVwiLCB1cmw6IHRoaXMudXJsQ3VlbnRhU2VndXJpZGFkICsgXCJIYWJpbGl0YWNpb24yRkFcIiwgaWNvbm86IFwidmVyaWZpZWRfdXNlclwiIH0gOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXJsZ3VpYXNPbmxpbmUgIT0gbnVsbCAmJiB0aGlzLnVybGd1aWFzT25saW5lICE9PSBcIlwiICYmIHRoaXMudXJsZ3VpYXNPbmxpbmU/Lmxlbmd0aCAhPSAwID8geyB0aXR1bG86IHRoaXMubWVudUlkaW9tYSAmJiB0aGlzLm1lbnVJZGlvbWEuZ3VpYXNPbmxpbmUgPyB0aGlzLm1lbnVJZGlvbWEuZ3VpYXNPbmxpbmUgOiBcIkd1aWFzIE9ubGluZVwiLCB1cmw6IHRoaXMudXJsZ3VpYXNPbmxpbmUsIGljb25vOiBcIm1lbnVfYm9va1wiIH0gOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgIHsgdGl0dWxvOiB0aGlzLm1lbnVJZGlvbWEgJiYgdGhpcy5tZW51SWRpb21hLkNlcnJhclNlc2lvbiA/IHRoaXMubWVudUlkaW9tYS5DZXJyYXJTZXNpb24gOiBcIkNlcnJhciBzZXNpw7NuXCIsIHVybDogdGhpcy51cmxDdWVudGFTZWd1cmlkYWQgKyBcIkNlcnJhclNlc2lvblwiLCBpY29ubzogXCJleGl0X3RvX2FwcFwiIH1dLmZpbHRlcihoaWpvID0+IGhpam8gIT0gbnVsbCksXHJcbiAgICAgICAgICAgIH1dO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=