wm-menu 1.4.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -170,9 +170,9 @@ __decorate([
170
170
  AsistenteDatosComponent = __decorate([
171
171
  Component({
172
172
  selector: 'wm-asistente-datos',
173
- 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",
173
+ template: "<!-- Panel (abierto) -->\r\n<div class=\"chat-ia-panel\" *ngIf=\"abierto\">\r\n <div class=\"chat-ia-header\">\r\n <div class=\"chat-ia-header-info\">\r\n <div class=\"chat-ia-header-icono\">\r\n <svg width=\"17\" height=\"17\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1.8\">\r\n <path d=\"M4 5h16v10H9l-4 4V15H4z\"></path>\r\n </svg>\r\n </div>\r\n <div>\r\n <div class=\"chat-ia-titulo\">Preg\u00FAntale a tus Datos</div>\r\n <div class=\"chat-ia-subtitulo\">Consulta tus reportes en lenguaje natural</div>\r\n </div>\r\n </div>\r\n <div class=\"chat-ia-cerrar\" (click)=\"cerrar()\">\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" stroke=\"#fff\" stroke-width=\"2\" fill=\"none\" stroke-linecap=\"round\">\r\n <path d=\"M6 6l12 12M18 6L6 18\"></path>\r\n </svg>\r\n </div>\r\n </div>\r\n\r\n <div class=\"chat-ia-mensajes\" #mensajesContainer>\r\n <div class=\"chat-ia-bienvenida-texto\">Hola, soy tu asistente de datos de Snap Forms. Preg\u00FAntame lo que quieras saber sobre tu operaci\u00F3n.</div>\r\n\r\n <div class=\"chat-ia-mensaje\" *ngFor=\"let mensaje of mensajes\" [class.chat-ia-mensaje-usuario]=\"mensaje.deUsuario\">\r\n <div class=\"chat-ia-burbuja\" [class.chat-ia-burbuja-error]=\"mensaje.esError\">\r\n <span *ngIf=\"mensaje.texto\">{{ mensaje.texto }}</span>\r\n\r\n <ng-container *ngIf=\"mensaje.resultado\">\r\n <div class=\"chat-ia-descripcion\" *ngIf=\"mensaje.descripcion\">{{ mensaje.descripcion }}</div>\r\n\r\n <div class=\"chat-ia-sin-resultados\" *ngIf=\"mensaje.resultado.length === 0\">La consulta no encontr\u00F3 resultados.</div>\r\n\r\n <div class=\"chat-ia-stat\" *ngIf=\"esConteo(mensaje.resultado)\">\r\n <div class=\"chat-ia-stat-valor\">{{ mensaje.resultado[0].Resultado | number }}</div>\r\n </div>\r\n\r\n <div class=\"chat-ia-lista-simple\" *ngIf=\"esListaSimple(mensaje.resultado)\">{{ textoListaSimple(mensaje.resultado) }}</div>\r\n\r\n <div class=\"chat-ia-tabla-resultado\" *ngIf=\"mensaje.resultado.length > 0 && !esConteo(mensaje.resultado) && !esListaSimple(mensaje.resultado)\">\r\n <table mat-table [dataSource]=\"mensaje.resultado\">\r\n <ng-container *ngFor=\"let columna of columnasDe(mensaje.resultado)\" [matColumnDef]=\"columna\">\r\n <th mat-header-cell *matHeaderCellDef>{{ columna }}</th>\r\n <td mat-cell *matCellDef=\"let fila\">{{ fila[columna] }}</td>\r\n </ng-container>\r\n <tr mat-header-row *matHeaderRowDef=\"columnasDe(mensaje.resultado)\"></tr>\r\n <tr mat-row *matRowDef=\"let fila; columns: columnasDe(mensaje.resultado);\"></tr>\r\n </table>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"chat-ia-pensando\" *ngIf=\"consultando\">\r\n <span class=\"chat-ia-dot\"></span><span class=\"chat-ia-dot\"></span><span class=\"chat-ia-dot\"></span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"chips-chat-ia\">\r\n <span class=\"chip-chat-ia\" *ngFor=\"let chip of chipsSugeridos\"\r\n (click)=\"onClickEnviar(chip)\">{{ chip }}</span>\r\n </div>\r\n\r\n <div class=\"chat-ia-entrada\">\r\n <div class=\"chat-ia-caja-entrada\">\r\n <mat-icon fontSet=\"wm-menu-iconos\" class=\"chat-ia-expandir\" (click)=\"onClickExpandirBorrador()\">{{ borradorExpandido ? 'close_fullscreen' : 'open_in_full' }}</mat-icon>\r\n <textarea [rows]=\"filasBorrador\" [(ngModel)]=\"borrador\" (keydown.enter)=\"$event.preventDefault(); onClickEnviar()\"\r\n [class.chat-ia-textarea-expandido]=\"borradorExpandido\"\r\n placeholder=\"Escribe tu pregunta...\"></textarea>\r\n <div class=\"chat-ia-pie-entrada\">\r\n <button class=\"chat-ia-selector-modelo\" [matMenuTriggerFor]=\"menuModeloChatIA\" type=\"button\">\r\n <span *ngIf=\"proveedorSeleccionado === 'Gemini'\">Gemini</span>\r\n <span *ngIf=\"proveedorSeleccionado === 'Groq'\">Groq</span>\r\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M6 9l6 6 6-6\"></path>\r\n </svg>\r\n </button>\r\n <button class=\"chat-ia-microfono\" [class.chat-ia-microfono-activo]=\"escuchando\" *ngIf=\"micDisponible\"\r\n (click)=\"onClickMicrofono()\" type=\"button\">\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z\"></path>\r\n <path d=\"M19 10v2a7 7 0 0 1-14 0v-2\"></path>\r\n <line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"23\"></line>\r\n </svg>\r\n </button>\r\n <button class=\"chat-ia-enviar\" [disabled]=\"!borrador.trim() || consultando\" (click)=\"onClickEnviar()\" type=\"button\">\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M12 19V6\"></path>\r\n <path d=\"M5 13l7-7 7 7\"></path>\r\n </svg>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<mat-menu #menuModeloChatIA=\"matMenu\" class=\"menu-modelo-chat-ia\">\r\n <button mat-menu-item [class.opcion-activa]=\"proveedorSeleccionado === 'Gemini'\"\r\n (click)=\"proveedorSeleccionado = 'Gemini'\">\r\n <span>Gemini</span>\r\n <svg *ngIf=\"proveedorSeleccionado === 'Gemini'\" class=\"chat-ia-check\" width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M20 6L9 17l-5-5\"></path>\r\n </svg>\r\n </button>\r\n <button mat-menu-item [class.opcion-activa]=\"proveedorSeleccionado === 'Groq'\"\r\n (click)=\"proveedorSeleccionado = 'Groq'\">\r\n <span>Groq</span>\r\n <svg *ngIf=\"proveedorSeleccionado === 'Groq'\" class=\"chat-ia-check\" width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M20 6L9 17l-5-5\"></path>\r\n </svg>\r\n </button>\r\n</mat-menu>\r\n",
174
174
  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}"]
175
175
  })
176
176
  ], AsistenteDatosComponent);
177
177
  export { AsistenteDatosComponent };
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpc3RlbnRlLWRhdG9zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL3dtLW1lbnUvIiwic291cmNlcyI6WyJsaWIvd20tbWVudS9hc2lzdGVudGUtZGF0b3MvYXNpc3RlbnRlLWRhdG9zLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFnQnpFLElBQWEsdUJBQXVCLEdBQXBDLE1BQWEsdUJBQXVCO0lBd0NoQyxZQUNZLHdCQUFrRCxFQUNsRCxpQkFBMkM7UUFEM0MsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQTBCO1FBdkN2RCwwRkFBMEY7UUFDMUYscUZBQXFGO1FBQzVFLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFTekIseURBQXlEO1FBQ2hELFdBQU0sR0FBRyxPQUFPLENBQUM7UUFFaEIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTNDLGFBQVEsR0FBNEIsRUFBRSxDQUFDO1FBQ3ZDLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDckIsOEZBQThGO1FBQzlGLGtHQUFrRztRQUMzRixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDM0IsbUZBQW1GO1FBQ25GLDJDQUEyQztRQUNwQywwQkFBcUIsR0FBc0IsUUFBUSxDQUFDO1FBQzNELHNGQUFzRjtRQUMvRSxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRTFCLHNGQUFzRjtRQUN0RixnR0FBZ0c7UUFDaEcsNkNBQTZDO1FBQ3RDLG1CQUFjLEdBQWE7WUFDOUIsNENB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QWtCO0FBRWhCO0lBQVQsTUFBTSxFQUFFOzZEQUF5QztBQWpCekMsdUJBQXVCO0lBTG5DLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSxvQkFBb0I7UUFDOUIsMmxPQUErQzs7S0FFbEQsQ0FBQztHQUNXLHVCQUF1QixDQXlLbkM7U0F6S1ksdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSZWNvbm9jaW1pZW50b1ZvelNlcnZpY2UgfSBmcm9tICcuL3JlY29ub2NpbWllbnRvLXZvei5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXNpc3RlbnRlRGF0b3NBcGlTZXJ2aWNlIH0gZnJvbSAnLi9hc2lzdGVudGUtZGF0b3MtYXBpLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNZW5zYWplQXNpc3RlbnRlRGF0b3Mge1xyXG4gICAgZGVVc3VhcmlvOiBib29sZWFuO1xyXG4gICAgdGV4dG8/OiBzdHJpbmc7XHJcbiAgICBkZXNjcmlwY2lvbj86IHN0cmluZztcclxuICAgIHJlc3VsdGFkbz86IGFueVtdO1xyXG4gICAgcHJvdmVlZG9yPzogc3RyaW5nO1xyXG4gICAgZXNFcnJvcj86IGJvb2xlYW47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd3bS1hc2lzdGVudGUtZGF0b3MnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FzaXN0ZW50ZS1kYXRvcy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9hc2lzdGVudGUtZGF0b3MuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFzaXN0ZW50ZURhdG9zQ29tcG9uZW50IHtcclxuICAgIEBWaWV3Q2hpbGQoJ21lbnNhamVzQ29udGFpbmVyJykgcHJpdmF0ZSBtZW5zYWplc0NvbnRhaW5lcj86IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuICAgIC8vIExhIGFwZXJ0dXJhL2NpZXJyZSBkZWwgcGFuZWwgbGEgY29udHJvbGEgZWwgcGFkcmUgKGVsIG1lbsO6KS4gRWwgcGFuZWwgc29sbyBzZSByZW5kZXJpemFcclxuICAgIC8vIGN1YW5kbyBgYWJpZXJ0b2AgZXMgdHJ1ZSB5IGF2aXNhLCB2w61hIGBjZXJyYXJDaGFuZ2VgLCBjdWFuZG8gZWwgdXN1YXJpbyB0b2NhIGxhIFguXHJcbiAgICBASW5wdXQoKSBhYmllcnRvID0gZmFsc2U7XHJcblxyXG4gICAgLy8gVVJMIGRlbCBQT1NUIGRlIGNvbnN1bHRhLiBTZSByZWZsZWphIGVuIGVsIGFwaSBzZXJ2aWNlIChwcm9waWVkYWQgYHVybGApLCBxdWUgZXMgZG9uZGUgc2UgdXNhLlxyXG4gICAgQElucHV0KCkgc2V0IHVybENvbnN1bHRhcih2YWxvcjogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKHZhbG9yKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXNpc3RlbnRlRGF0b3NBcGlTZXJ2aWNlLnVybCA9IHZhbG9yO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBJZGlvbWEgcGFyYSBlbCByZWNvbm9jaW1pZW50byBkZSB2b3ogKFdlYiBTcGVlY2ggQVBJKS5cclxuICAgIEBJbnB1dCgpIGlkaW9tYSA9ICdlcy1DTyc7XHJcblxyXG4gICAgQE91dHB1dCgpIGNlcnJhckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICBwdWJsaWMgbWVuc2FqZXM6IE1lbnNhamVBc2lzdGVudGVEYXRvc1tdID0gW107XHJcbiAgICBwdWJsaWMgYm9ycmFkb3IgPSAnJztcclxuICAgIC8vIEFsdGVybmEgZWwgYWx0byBkZSBsYSBjYWphIGRlbCBtZW5zYWplIChjb21wYWN0YSDihpQgZXhwYW5kaWRhKSwgaWd1YWwgcXVlIGVsIFwicGVkaXIgY2FtYmlvc1wiXHJcbiAgICAvLyBkZWwgYXNpc3RlbnRlIGRlIElBIGRlbCBnZW5lcmFkb3IgZGUgZm9ybXVsYXJpb3MgKHZlciBmaWxhc0JvcnJhZG9yIC8gb25DbGlja0V4cGFuZGlyQm9ycmFkb3IpLlxyXG4gICAgcHVibGljIGJvcnJhZG9yRXhwYW5kaWRvID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgY29uc3VsdGFuZG8gPSBmYWxzZTtcclxuICAgIC8vIFwiR2VtaW5pXCIgbyBcIkdyb3FcIiDigJQgbWlzbW8gc2VsZWN0b3IgcXVlIGVsIGFzaXN0ZW50ZSBkZSBnZW5lcmFjacOzbiBkZSBmb3JtdWxhcmlvc1xyXG4gICAgLy8gKHZlciBQcm92ZWVkb3JJQVNlcnZpY2lvIGVuIGVsIGJhY2tlbmQpLlxyXG4gICAgcHVibGljIHByb3ZlZWRvclNlbGVjY2lvbmFkbzogJ0dlbWluaScgfCAnR3JvcScgPSAnR2VtaW5pJztcclxuICAgIC8vIERpY3RhZG8gcG9yIHZveiAoV2ViIFNwZWVjaCBBUEkpIOKAlCBzaW4gc29wb3J0ZSBlbiBGaXJlZm94LCBpbmNvbnNpc3RlbnRlIGVuIFNhZmFyaS5cclxuICAgIHB1YmxpYyBlc2N1Y2hhbmRvID0gZmFsc2U7XHJcblxyXG4gICAgLy8gUHJlZ3VudGFzIHlhIHZlcmlmaWNhZGFzIGNvbW8gcmVzcG9uZGlibGVzIGhveSAod2hpdGVsaXN0ICsgY29udHJhdG8gZGUgbGEgSUEg4oCUIHZlclxyXG4gICAgLy8gQ2hhdENvbnN1bHRhV2hpdGVsaXN0U2VydmljaW8vQ2hhdENvbnN1bHRhUHJvbXB0U2VydmljaW8gZW4gZWwgYmFja2VuZCksIG1vc3RyYWRhcyBjb21vIGNoaXBzXHJcbiAgICAvLyBkZSBzdWdlcmVuY2lhIGVuIGVsIGVzdGFkbyB2YWPDrW8gZGVsIGNoYXQuXHJcbiAgICBwdWJsaWMgY2hpcHNTdWdlcmlkb3M6IHN0cmluZ1tdID0gW1xyXG4gICAgICAgICfCv0N1w6FudG9zIGZvcm11bGFyaW9zIHNlIGRpbGlnZW5jaWFyb24gaG95PycsXHJcbiAgICAgICAgJ8K/Q3XDoW50b3MgZm9ybXVsYXJpb3Mgc2UgZGlsaWdlbmNpYXJvbiBlc3RhIHNlbWFuYT8nLFxyXG4gICAgICAgICdNdcOpc3RyYW1lIGxvcyDDumx0aW1vcyAxMCBmb3JtdWxhcmlvcyBkaWxpZ2VuY2lhZG9zJyxcclxuICAgIF07XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBhc2lzdGVudGVEYXRvc0FwaVNlcnZpY2U6IEFzaXN0ZW50ZURhdG9zQXBpU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlY29ub2NpbWllbnRvVm96OiBSZWNvbm9jaW1pZW50b1ZvelNlcnZpY2VcclxuICAgICkge31cclxuXHJcbiAgICAvLyBFbCBwYWRyZSBhYnJlL2NpZXJyYSBlbCBwYW5lbDsgYXF1w60gc29sbyBzZSBhdmlzYSBxdWUgZWwgdXN1YXJpbyBwaWRpw7MgY2VycmFybG8gKGJvdMOzbiBYKS5cclxuICAgIGNlcnJhcigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNlcnJhckNoYW5nZS5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ2FqYSBkZWwgbWVuc2FqZSBjb21wYWN0YSAoMSBmaWxhLCBjb21vIGVyYSBlbCBjaGF0IG9yaWdpbmFsbWVudGUpIOKGlCBleHBhbmRpZGEgKDYgZmlsYXMpLlxyXG4gICAgLy8gRWwgYm90w7NuIGRlIGV4cGFuZGlyIGVzIGVsIG1pc21vIHBhdHLDs24gZGVsIFwicGVkaXIgY2FtYmlvc1wiIGRlbCBnZW5lcmFkb3IuXHJcbiAgICBnZXQgZmlsYXNCb3JyYWRvcigpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJvcnJhZG9yRXhwYW5kaWRvID8gNiA6IDE7XHJcbiAgICB9XHJcblxyXG4gICAgb25DbGlja0V4cGFuZGlyQm9ycmFkb3IoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5ib3JyYWRvckV4cGFuZGlkbyA9ICF0aGlzLmJvcnJhZG9yRXhwYW5kaWRvO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBtaWNEaXNwb25pYmxlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlY29ub2NpbWllbnRvVm96LmVzdGFTb3BvcnRhZG8oKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNsaWNrTWljcm9mb25vKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmVzY3VjaGFuZG8pIHtcclxuICAgICAgICAgICAgdGhpcy5yZWNvbm9jaW1pZW50b1Zvei5kZXRlbmVyKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZXNjdWNoYW5kbyA9IGZhbHNlO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMucmVjb25vY2ltaWVudG9Wb3ouZXN0YVNvcG9ydGFkbygpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEVsIHJlc3VsdGFkbyBkZWwgcmVjb25vY2ltaWVudG8gbm8gaW5jbHV5ZSBsbyBxdWUgeWEgZXN0YWJhIGVzY3JpdG8g4oCUIHNlIGd1YXJkYSBhbnRlcyBkZVxyXG4gICAgICAgIC8vIGVtcGV6YXIgeSBzZSBhbnRlcG9uZSBlbiBjYWRhIGFjdHVhbGl6YWNpw7NuIChxdWUgbGxlZ2EgY29uIGxhIHRyYW5zY3JpcGNpw7NuIENPTVBMRVRBIGRlXHJcbiAgICAgICAgLy8gZXN0YSBzZXNpw7NuIGRlIGVzY3VjaGEsIG5vIHVuIGluY3JlbWVudG8pIHBhcmEgbm8gcGVyZGVyIGxvIHF1ZSB5YSBoYWLDrWEgZW4gZWwgY2FtcG8uXHJcbiAgICAgICAgY29uc3QgdGV4dG9QcmV2aW8gPSB0aGlzLmJvcnJhZG9yLnRyaW0oKTtcclxuICAgICAgICB0aGlzLmVzY3VjaGFuZG8gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVjb25vY2ltaWVudG9Wb3ouaW5pY2lhcihcclxuICAgICAgICAgICAgdGhpcy5pZGlvbWEsXHJcbiAgICAgICAgICAgICh0ZXh0bykgPT4gKHRoaXMuYm9ycmFkb3IgPSB0ZXh0b1ByZXZpbyA/IGAke3RleHRvUHJldmlvfSAke3RleHRvfWAgOiB0ZXh0byksXHJcbiAgICAgICAgICAgICgpID0+ICh0aGlzLmVzY3VjaGFuZG8gPSBmYWxzZSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2xpY2tFbnZpYXIodGV4dG9QcmVzZXQ/OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBwcmVndW50YSA9ICh0ZXh0b1ByZXNldCA/PyB0aGlzLmJvcnJhZG9yKS50cmltKCk7XHJcbiAgICAgICAgaWYgKCFwcmVndW50YSB8fCB0aGlzLmNvbnN1bHRhbmRvKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubWVuc2FqZXMucHVzaCh7IGRlVXN1YXJpbzogdHJ1ZSwgdGV4dG86IHByZWd1bnRhIH0pO1xyXG4gICAgICAgIHRoaXMuYm9ycmFkb3IgPSAnJztcclxuXHJcbiAgICAgICAgLy8gU2luIHVybCBkZSBjb25zdWx0YSBubyBzZSBoYWNlIGxhIHBldGljacOzbjogZWwgdXN1YXJpbyB2ZSBlbCBtaXNtbyBlcnJvciBnZW7DqXJpY28gcXVlXHJcbiAgICAgICAgLy8gY3VhbmRvIGxhIEFQSSBmYWxsYS5cclxuICAgICAgICBpZiAoIXRoaXMuYXNpc3RlbnRlRGF0b3NBcGlTZXJ2aWNlLnVybCkge1xyXG4gICAgICAgICAgICB0aGlzLm1lbnNhamVzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgZGVVc3VhcmlvOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIHRleHRvOiAnTm8gc2UgcHVkbyBwcm9jZXNhciBsYSBjb25zdWx0YS4nLFxyXG4gICAgICAgICAgICAgICAgZXNFcnJvcjogdHJ1ZSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsQWxGaW5hbCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmNvbnN1bHRhbmRvID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNjcm9sbEFsRmluYWwoKTtcclxuXHJcbiAgICAgICAgdGhpcy5hc2lzdGVudGVEYXRvc0FwaVNlcnZpY2UuY29uc3VsdGFyKHByZWd1bnRhLCB0aGlzLnByb3ZlZWRvclNlbGVjY2lvbmFkbykuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgLy8gRWwgdGlwbyAoUmVzcHVlc3RhQXNpc3RlbnRlRGF0b3MpIHNlIGluZmllcmUgZGVsIE9ic2VydmFibGU6IGltcG9ydGFyIGxhIGludGVyZmF6XHJcbiAgICAgICAgICAgIC8vIGRlamFiYSB1biBpbXBvcnQgYSB1biBzw61tYm9sbyBpbmV4aXN0ZW50ZSBlbiBlbCBKUyBkZSBsYSBsaWJyZXLDrWEgKGF2aXNvIGRlIHJvbGx1cCkuXHJcbiAgICAgICAgICAgIG5leHQ6IChyZXNwdWVzdGEpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29uc3VsdGFuZG8gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMubWVuc2FqZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVVc3VhcmlvOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwY2lvbjogcmVzcHVlc3RhLkRlc2NyaXBjaW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdGFkbzogcmVzcHVlc3RhLlJlc3VsdGFkbyA/PyBbXSxcclxuICAgICAgICAgICAgICAgICAgICBwcm92ZWVkb3I6IHJlc3B1ZXN0YS5Qcm92ZWVkb3IsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsQWxGaW5hbCgpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnN1bHRhbmRvID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnNhamVzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIGRlVXN1YXJpbzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dG86IGVycm9yPy5NZW5zYWplIHx8ICdObyBzZSBwdWRvIHByb2Nlc2FyIGxhIGNvbnN1bHRhLicsXHJcbiAgICAgICAgICAgICAgICAgICAgZXNFcnJvcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxBbEZpbmFsKCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRWwgbnVldm8gbWVuc2FqZSByZWNpw6luIHNlIHJlZmxlamEgZW4gZWwgRE9NIGRlc3B1w6lzIGRlbCBzaWd1aWVudGUgY2ljbG8gZGUgZGV0ZWNjacOzbiBkZVxyXG4gICAgLy8gY2FtYmlvcyDigJQgcG9yIGVzbyBlbCBzY3JvbGxUb3Agc2UgYWp1c3RhIGVuIHVuIHNldFRpbWVvdXQoMCksIG5vIGlubWVkaWF0YW1lbnRlIGRlc3B1w6lzIGRlbFxyXG4gICAgLy8gcHVzaCwgcGFyYSBxdWUgc2Nyb2xsSGVpZ2h0IHlhIGluY2x1eWEgZWwgbWVuc2FqZSBhZ3JlZ2Fkby5cclxuICAgIHByaXZhdGUgc2Nyb2xsQWxGaW5hbCgpOiB2b2lkIHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudG8gPSB0aGlzLm1lbnNhamVzQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudG8pIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRvLnNjcm9sbFRvcCA9IGVsZW1lbnRvLnNjcm9sbEhlaWdodDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbHVtbmFzRGUocmVzdWx0YWRvOiBhbnlbXSk6IHN0cmluZ1tdIHtcclxuICAgICAgICByZXR1cm4gcmVzdWx0YWRvLmxlbmd0aCA/IE9iamVjdC5rZXlzKHJlc3VsdGFkb1swXSkgOiBbXTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBFbCBiYWNrZW5kIGRldnVlbHZlIHVuIGNvbnRlbyAoQ2hhdENvbnN1bHRhSUFTZXJ2aWNpby5FamVjdXRhckNvbnRlbykgY29tbyB1bmEgc29sYSBmaWxhIGNvblxyXG4gICAgLy8gdW5hIHNvbGEgY29sdW1uYSBsbGFtYWRhIGxpdGVyYWxtZW50ZSBcIlJlc3VsdGFkb1wiIOKAlCBzZSBtdWVzdHJhIGNvbW8gbsO6bWVybyBncmFuZGUgZW4gdmV6IGRlXHJcbiAgICAvLyBjb21vIHRhYmxhIGRlIHVuYSBjZWxkYS5cclxuICAgIGVzQ29udGVvKHJlc3VsdGFkbzogYW55W10pOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gcmVzdWx0YWRvPy5sZW5ndGggPT09IDEgJiYgT2JqZWN0LmtleXMocmVzdWx0YWRvWzBdKS5sZW5ndGggPT09IDEgJiYgJ1Jlc3VsdGFkbycgaW4gcmVzdWx0YWRvWzBdO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIExpc3RhZG8gY29uIHVuYSBzb2xhIGNvbHVtbmEgKGVqLiB1bmEgbGlzdGEgZGUgbm9tYnJlcy9pZHMpIOKAlCBzZSBtdWVzdHJhIGNvbW8gdGV4dG8gc2ltcGxlXHJcbiAgICAvLyBlbiB2ZXogZGUgdW5hIHRhYmxhIGRlIHVuYSBzb2xhIGNvbHVtbmEgcmVwZXRpZGEuXHJcbiAgICBlc0xpc3RhU2ltcGxlKHJlc3VsdGFkbzogYW55W10pOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gcmVzdWx0YWRvPy5sZW5ndGggPiAwICYmICF0aGlzLmVzQ29udGVvKHJlc3VsdGFkbykgJiYgdGhpcy5jb2x1bW5hc0RlKHJlc3VsdGFkbykubGVuZ3RoID09PSAxO1xyXG4gICAgfVxyXG5cclxuICAgIHRleHRvTGlzdGFTaW1wbGUocmVzdWx0YWRvOiBhbnlbXSk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgY29sdW1uYSA9IHRoaXMuY29sdW1uYXNEZShyZXN1bHRhZG8pWzBdO1xyXG4gICAgICAgIHJldHVybiByZXN1bHRhZG8ubWFwKChmaWxhKSA9PiBmaWxhW2NvbHVtbmFdKS5qb2luKCcsICcpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpc3RlbnRlLWRhdG9zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL3dtLW1lbnUvIiwic291cmNlcyI6WyJsaWIvd20tbWVudS9hc2lzdGVudGUtZGF0b3MvYXNpc3RlbnRlLWRhdG9zLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFnQnpFLElBQWEsdUJBQXVCLEdBQXBDLE1BQWEsdUJBQXVCO0lBd0NoQyxZQUNZLHdCQUFrRCxFQUNsRCxpQkFBMkM7UUFEM0MsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQTBCO1FBdkN2RCwwRkFBMEY7UUFDMUYscUZBQXFGO1FBQzVFLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFTekIseURBQXlEO1FBQ2hELFdBQU0sR0FBRyxPQUFPLENBQUM7UUFFaEIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTNDLGFBQVEsR0FBNEIsRUFBRSxDQUFDO1FBQ3ZDLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDckIsOEZBQThGO1FBQzlGLGtHQUFrRztRQUMzRixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDM0IsbUZBQW1GO1FBQ25GLDJDQUEyQztRQUNwQywwQkFBcUIsR0FBc0IsUUFBUSxDQUFDO1FBQzNELHNGQUFzRjtRQUMvRSxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRTFCLHNGQUFzRjtRQUN0RixnR0FBZ0c7UUFDaEcsNkNBQTZDO1FBQ3RDLG1CQUFjLEdBQWE7WUFDOUIsNENB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QWtCO0FBRWhCO0lBQVQsTUFBTSxFQUFFOzZEQUF5QztBQWpCekMsdUJBQXVCO0lBTG5DLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSxvQkFBb0I7UUFDOUIsc25PQUErQzs7S0FFbEQsQ0FBQztHQUNXLHVCQUF1QixDQXlLbkM7U0F6S1ksdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSZWNvbm9jaW1pZW50b1ZvelNlcnZpY2UgfSBmcm9tICcuL3JlY29ub2NpbWllbnRvLXZvei5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXNpc3RlbnRlRGF0b3NBcGlTZXJ2aWNlIH0gZnJvbSAnLi9hc2lzdGVudGUtZGF0b3MtYXBpLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNZW5zYWplQXNpc3RlbnRlRGF0b3Mge1xyXG4gICAgZGVVc3VhcmlvOiBib29sZWFuO1xyXG4gICAgdGV4dG8/OiBzdHJpbmc7XHJcbiAgICBkZXNjcmlwY2lvbj86IHN0cmluZztcclxuICAgIHJlc3VsdGFkbz86IGFueVtdO1xyXG4gICAgcHJvdmVlZG9yPzogc3RyaW5nO1xyXG4gICAgZXNFcnJvcj86IGJvb2xlYW47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd3bS1hc2lzdGVudGUtZGF0b3MnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FzaXN0ZW50ZS1kYXRvcy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9hc2lzdGVudGUtZGF0b3MuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFzaXN0ZW50ZURhdG9zQ29tcG9uZW50IHtcclxuICAgIEBWaWV3Q2hpbGQoJ21lbnNhamVzQ29udGFpbmVyJykgcHJpdmF0ZSBtZW5zYWplc0NvbnRhaW5lcj86IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuICAgIC8vIExhIGFwZXJ0dXJhL2NpZXJyZSBkZWwgcGFuZWwgbGEgY29udHJvbGEgZWwgcGFkcmUgKGVsIG1lbsO6KS4gRWwgcGFuZWwgc29sbyBzZSByZW5kZXJpemFcclxuICAgIC8vIGN1YW5kbyBgYWJpZXJ0b2AgZXMgdHJ1ZSB5IGF2aXNhLCB2w61hIGBjZXJyYXJDaGFuZ2VgLCBjdWFuZG8gZWwgdXN1YXJpbyB0b2NhIGxhIFguXHJcbiAgICBASW5wdXQoKSBhYmllcnRvID0gZmFsc2U7XHJcblxyXG4gICAgLy8gVVJMIGRlbCBQT1NUIGRlIGNvbnN1bHRhLiBTZSByZWZsZWphIGVuIGVsIGFwaSBzZXJ2aWNlIChwcm9waWVkYWQgYHVybGApLCBxdWUgZXMgZG9uZGUgc2UgdXNhLlxyXG4gICAgQElucHV0KCkgc2V0IHVybENvbnN1bHRhcih2YWxvcjogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKHZhbG9yKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXNpc3RlbnRlRGF0b3NBcGlTZXJ2aWNlLnVybCA9IHZhbG9yO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBJZGlvbWEgcGFyYSBlbCByZWNvbm9jaW1pZW50byBkZSB2b3ogKFdlYiBTcGVlY2ggQVBJKS5cclxuICAgIEBJbnB1dCgpIGlkaW9tYSA9ICdlcy1DTyc7XHJcblxyXG4gICAgQE91dHB1dCgpIGNlcnJhckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICBwdWJsaWMgbWVuc2FqZXM6IE1lbnNhamVBc2lzdGVudGVEYXRvc1tdID0gW107XHJcbiAgICBwdWJsaWMgYm9ycmFkb3IgPSAnJztcclxuICAgIC8vIEFsdGVybmEgZWwgYWx0byBkZSBsYSBjYWphIGRlbCBtZW5zYWplIChjb21wYWN0YSDihpQgZXhwYW5kaWRhKSwgaWd1YWwgcXVlIGVsIFwicGVkaXIgY2FtYmlvc1wiXHJcbiAgICAvLyBkZWwgYXNpc3RlbnRlIGRlIElBIGRlbCBnZW5lcmFkb3IgZGUgZm9ybXVsYXJpb3MgKHZlciBmaWxhc0JvcnJhZG9yIC8gb25DbGlja0V4cGFuZGlyQm9ycmFkb3IpLlxyXG4gICAgcHVibGljIGJvcnJhZG9yRXhwYW5kaWRvID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgY29uc3VsdGFuZG8gPSBmYWxzZTtcclxuICAgIC8vIFwiR2VtaW5pXCIgbyBcIkdyb3FcIiDigJQgbWlzbW8gc2VsZWN0b3IgcXVlIGVsIGFzaXN0ZW50ZSBkZSBnZW5lcmFjacOzbiBkZSBmb3JtdWxhcmlvc1xyXG4gICAgLy8gKHZlciBQcm92ZWVkb3JJQVNlcnZpY2lvIGVuIGVsIGJhY2tlbmQpLlxyXG4gICAgcHVibGljIHByb3ZlZWRvclNlbGVjY2lvbmFkbzogJ0dlbWluaScgfCAnR3JvcScgPSAnR2VtaW5pJztcclxuICAgIC8vIERpY3RhZG8gcG9yIHZveiAoV2ViIFNwZWVjaCBBUEkpIOKAlCBzaW4gc29wb3J0ZSBlbiBGaXJlZm94LCBpbmNvbnNpc3RlbnRlIGVuIFNhZmFyaS5cclxuICAgIHB1YmxpYyBlc2N1Y2hhbmRvID0gZmFsc2U7XHJcblxyXG4gICAgLy8gUHJlZ3VudGFzIHlhIHZlcmlmaWNhZGFzIGNvbW8gcmVzcG9uZGlibGVzIGhveSAod2hpdGVsaXN0ICsgY29udHJhdG8gZGUgbGEgSUEg4oCUIHZlclxyXG4gICAgLy8gQ2hhdENvbnN1bHRhV2hpdGVsaXN0U2VydmljaW8vQ2hhdENvbnN1bHRhUHJvbXB0U2VydmljaW8gZW4gZWwgYmFja2VuZCksIG1vc3RyYWRhcyBjb21vIGNoaXBzXHJcbiAgICAvLyBkZSBzdWdlcmVuY2lhIGVuIGVsIGVzdGFkbyB2YWPDrW8gZGVsIGNoYXQuXHJcbiAgICBwdWJsaWMgY2hpcHNTdWdlcmlkb3M6IHN0cmluZ1tdID0gW1xyXG4gICAgICAgICfCv0N1w6FudG9zIGZvcm11bGFyaW9zIHNlIGRpbGlnZW5jaWFyb24gaG95PycsXHJcbiAgICAgICAgJ8K/Q3XDoW50b3MgZm9ybXVsYXJpb3Mgc2UgZGlsaWdlbmNpYXJvbiBlc3RhIHNlbWFuYT8nLFxyXG4gICAgICAgICdNdcOpc3RyYW1lIGxvcyDDumx0aW1vcyAxMCBmb3JtdWxhcmlvcyBkaWxpZ2VuY2lhZG9zJyxcclxuICAgIF07XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBhc2lzdGVudGVEYXRvc0FwaVNlcnZpY2U6IEFzaXN0ZW50ZURhdG9zQXBpU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlY29ub2NpbWllbnRvVm96OiBSZWNvbm9jaW1pZW50b1ZvelNlcnZpY2VcclxuICAgICkge31cclxuXHJcbiAgICAvLyBFbCBwYWRyZSBhYnJlL2NpZXJyYSBlbCBwYW5lbDsgYXF1w60gc29sbyBzZSBhdmlzYSBxdWUgZWwgdXN1YXJpbyBwaWRpw7MgY2VycmFybG8gKGJvdMOzbiBYKS5cclxuICAgIGNlcnJhcigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNlcnJhckNoYW5nZS5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ2FqYSBkZWwgbWVuc2FqZSBjb21wYWN0YSAoMSBmaWxhLCBjb21vIGVyYSBlbCBjaGF0IG9yaWdpbmFsbWVudGUpIOKGlCBleHBhbmRpZGEgKDYgZmlsYXMpLlxyXG4gICAgLy8gRWwgYm90w7NuIGRlIGV4cGFuZGlyIGVzIGVsIG1pc21vIHBhdHLDs24gZGVsIFwicGVkaXIgY2FtYmlvc1wiIGRlbCBnZW5lcmFkb3IuXHJcbiAgICBnZXQgZmlsYXNCb3JyYWRvcigpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJvcnJhZG9yRXhwYW5kaWRvID8gNiA6IDE7XHJcbiAgICB9XHJcblxyXG4gICAgb25DbGlja0V4cGFuZGlyQm9ycmFkb3IoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5ib3JyYWRvckV4cGFuZGlkbyA9ICF0aGlzLmJvcnJhZG9yRXhwYW5kaWRvO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBtaWNEaXNwb25pYmxlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlY29ub2NpbWllbnRvVm96LmVzdGFTb3BvcnRhZG8oKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNsaWNrTWljcm9mb25vKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmVzY3VjaGFuZG8pIHtcclxuICAgICAgICAgICAgdGhpcy5yZWNvbm9jaW1pZW50b1Zvei5kZXRlbmVyKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZXNjdWNoYW5kbyA9IGZhbHNlO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMucmVjb25vY2ltaWVudG9Wb3ouZXN0YVNvcG9ydGFkbygpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEVsIHJlc3VsdGFkbyBkZWwgcmVjb25vY2ltaWVudG8gbm8gaW5jbHV5ZSBsbyBxdWUgeWEgZXN0YWJhIGVzY3JpdG8g4oCUIHNlIGd1YXJkYSBhbnRlcyBkZVxyXG4gICAgICAgIC8vIGVtcGV6YXIgeSBzZSBhbnRlcG9uZSBlbiBjYWRhIGFjdHVhbGl6YWNpw7NuIChxdWUgbGxlZ2EgY29uIGxhIHRyYW5zY3JpcGNpw7NuIENPTVBMRVRBIGRlXHJcbiAgICAgICAgLy8gZXN0YSBzZXNpw7NuIGRlIGVzY3VjaGEsIG5vIHVuIGluY3JlbWVudG8pIHBhcmEgbm8gcGVyZGVyIGxvIHF1ZSB5YSBoYWLDrWEgZW4gZWwgY2FtcG8uXHJcbiAgICAgICAgY29uc3QgdGV4dG9QcmV2aW8gPSB0aGlzLmJvcnJhZG9yLnRyaW0oKTtcclxuICAgICAgICB0aGlzLmVzY3VjaGFuZG8gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVjb25vY2ltaWVudG9Wb3ouaW5pY2lhcihcclxuICAgICAgICAgICAgdGhpcy5pZGlvbWEsXHJcbiAgICAgICAgICAgICh0ZXh0bykgPT4gKHRoaXMuYm9ycmFkb3IgPSB0ZXh0b1ByZXZpbyA/IGAke3RleHRvUHJldmlvfSAke3RleHRvfWAgOiB0ZXh0byksXHJcbiAgICAgICAgICAgICgpID0+ICh0aGlzLmVzY3VjaGFuZG8gPSBmYWxzZSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2xpY2tFbnZpYXIodGV4dG9QcmVzZXQ/OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBwcmVndW50YSA9ICh0ZXh0b1ByZXNldCA/PyB0aGlzLmJvcnJhZG9yKS50cmltKCk7XHJcbiAgICAgICAgaWYgKCFwcmVndW50YSB8fCB0aGlzLmNvbnN1bHRhbmRvKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubWVuc2FqZXMucHVzaCh7IGRlVXN1YXJpbzogdHJ1ZSwgdGV4dG86IHByZWd1bnRhIH0pO1xyXG4gICAgICAgIHRoaXMuYm9ycmFkb3IgPSAnJztcclxuXHJcbiAgICAgICAgLy8gU2luIHVybCBkZSBjb25zdWx0YSBubyBzZSBoYWNlIGxhIHBldGljacOzbjogZWwgdXN1YXJpbyB2ZSBlbCBtaXNtbyBlcnJvciBnZW7DqXJpY28gcXVlXHJcbiAgICAgICAgLy8gY3VhbmRvIGxhIEFQSSBmYWxsYS5cclxuICAgICAgICBpZiAoIXRoaXMuYXNpc3RlbnRlRGF0b3NBcGlTZXJ2aWNlLnVybCkge1xyXG4gICAgICAgICAgICB0aGlzLm1lbnNhamVzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgZGVVc3VhcmlvOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIHRleHRvOiAnTm8gc2UgcHVkbyBwcm9jZXNhciBsYSBjb25zdWx0YS4nLFxyXG4gICAgICAgICAgICAgICAgZXNFcnJvcjogdHJ1ZSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsQWxGaW5hbCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmNvbnN1bHRhbmRvID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNjcm9sbEFsRmluYWwoKTtcclxuXHJcbiAgICAgICAgdGhpcy5hc2lzdGVudGVEYXRvc0FwaVNlcnZpY2UuY29uc3VsdGFyKHByZWd1bnRhLCB0aGlzLnByb3ZlZWRvclNlbGVjY2lvbmFkbykuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgLy8gRWwgdGlwbyAoUmVzcHVlc3RhQXNpc3RlbnRlRGF0b3MpIHNlIGluZmllcmUgZGVsIE9ic2VydmFibGU6IGltcG9ydGFyIGxhIGludGVyZmF6XHJcbiAgICAgICAgICAgIC8vIGRlamFiYSB1biBpbXBvcnQgYSB1biBzw61tYm9sbyBpbmV4aXN0ZW50ZSBlbiBlbCBKUyBkZSBsYSBsaWJyZXLDrWEgKGF2aXNvIGRlIHJvbGx1cCkuXHJcbiAgICAgICAgICAgIG5leHQ6IChyZXNwdWVzdGEpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29uc3VsdGFuZG8gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMubWVuc2FqZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVVc3VhcmlvOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwY2lvbjogcmVzcHVlc3RhLkRlc2NyaXBjaW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdGFkbzogcmVzcHVlc3RhLlJlc3VsdGFkbyA/PyBbXSxcclxuICAgICAgICAgICAgICAgICAgICBwcm92ZWVkb3I6IHJlc3B1ZXN0YS5Qcm92ZWVkb3IsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsQWxGaW5hbCgpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnN1bHRhbmRvID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnNhamVzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIGRlVXN1YXJpbzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dG86IGVycm9yPy5NZW5zYWplIHx8ICdObyBzZSBwdWRvIHByb2Nlc2FyIGxhIGNvbnN1bHRhLicsXHJcbiAgICAgICAgICAgICAgICAgICAgZXNFcnJvcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxBbEZpbmFsKCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRWwgbnVldm8gbWVuc2FqZSByZWNpw6luIHNlIHJlZmxlamEgZW4gZWwgRE9NIGRlc3B1w6lzIGRlbCBzaWd1aWVudGUgY2ljbG8gZGUgZGV0ZWNjacOzbiBkZVxyXG4gICAgLy8gY2FtYmlvcyDigJQgcG9yIGVzbyBlbCBzY3JvbGxUb3Agc2UgYWp1c3RhIGVuIHVuIHNldFRpbWVvdXQoMCksIG5vIGlubWVkaWF0YW1lbnRlIGRlc3B1w6lzIGRlbFxyXG4gICAgLy8gcHVzaCwgcGFyYSBxdWUgc2Nyb2xsSGVpZ2h0IHlhIGluY2x1eWEgZWwgbWVuc2FqZSBhZ3JlZ2Fkby5cclxuICAgIHByaXZhdGUgc2Nyb2xsQWxGaW5hbCgpOiB2b2lkIHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudG8gPSB0aGlzLm1lbnNhamVzQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudG8pIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnRvLnNjcm9sbFRvcCA9IGVsZW1lbnRvLnNjcm9sbEhlaWdodDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbHVtbmFzRGUocmVzdWx0YWRvOiBhbnlbXSk6IHN0cmluZ1tdIHtcclxuICAgICAgICByZXR1cm4gcmVzdWx0YWRvLmxlbmd0aCA/IE9iamVjdC5rZXlzKHJlc3VsdGFkb1swXSkgOiBbXTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBFbCBiYWNrZW5kIGRldnVlbHZlIHVuIGNvbnRlbyAoQ2hhdENvbnN1bHRhSUFTZXJ2aWNpby5FamVjdXRhckNvbnRlbykgY29tbyB1bmEgc29sYSBmaWxhIGNvblxyXG4gICAgLy8gdW5hIHNvbGEgY29sdW1uYSBsbGFtYWRhIGxpdGVyYWxtZW50ZSBcIlJlc3VsdGFkb1wiIOKAlCBzZSBtdWVzdHJhIGNvbW8gbsO6bWVybyBncmFuZGUgZW4gdmV6IGRlXHJcbiAgICAvLyBjb21vIHRhYmxhIGRlIHVuYSBjZWxkYS5cclxuICAgIGVzQ29udGVvKHJlc3VsdGFkbzogYW55W10pOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gcmVzdWx0YWRvPy5sZW5ndGggPT09IDEgJiYgT2JqZWN0LmtleXMocmVzdWx0YWRvWzBdKS5sZW5ndGggPT09IDEgJiYgJ1Jlc3VsdGFkbycgaW4gcmVzdWx0YWRvWzBdO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIExpc3RhZG8gY29uIHVuYSBzb2xhIGNvbHVtbmEgKGVqLiB1bmEgbGlzdGEgZGUgbm9tYnJlcy9pZHMpIOKAlCBzZSBtdWVzdHJhIGNvbW8gdGV4dG8gc2ltcGxlXHJcbiAgICAvLyBlbiB2ZXogZGUgdW5hIHRhYmxhIGRlIHVuYSBzb2xhIGNvbHVtbmEgcmVwZXRpZGEuXHJcbiAgICBlc0xpc3RhU2ltcGxlKHJlc3VsdGFkbzogYW55W10pOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gcmVzdWx0YWRvPy5sZW5ndGggPiAwICYmICF0aGlzLmVzQ29udGVvKHJlc3VsdGFkbykgJiYgdGhpcy5jb2x1bW5hc0RlKHJlc3VsdGFkbykubGVuZ3RoID09PSAxO1xyXG4gICAgfVxyXG5cclxuICAgIHRleHRvTGlzdGFTaW1wbGUocmVzdWx0YWRvOiBhbnlbXSk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgY29sdW1uYSA9IHRoaXMuY29sdW1uYXNEZShyZXN1bHRhZG8pWzBdO1xyXG4gICAgICAgIHJldHVybiByZXN1bHRhZG8ubWFwKChmaWxhKSA9PiBmaWxhW2NvbHVtbmFdKS5qb2luKCcsICcpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,58 @@
1
+ import { __decorate } from "tslib";
2
+ import { Injectable } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ // Material Symbols Outlined (rellena) registrada con un nombre propio para que no choque con la
5
+ // versión de Material Symbols o Material Icons que cargue la página que aloja el menú.
6
+ const FAMILIA = 'WM Menu Symbols';
7
+ const URL_CSS = 'https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,1,0';
8
+ let WmMenuFuenteIconosService = class WmMenuFuenteIconosService {
9
+ constructor() {
10
+ this.iniciada = false;
11
+ }
12
+ cargar() {
13
+ if (this.iniciada) {
14
+ return;
15
+ }
16
+ this.iniciada = true;
17
+ const estilo = document.createElement('style');
18
+ estilo.textContent = `.wm-menu-iconos {
19
+ font-family: '${FAMILIA}';
20
+ font-weight: normal;
21
+ font-style: normal;
22
+ font-size: 24px;
23
+ line-height: 1;
24
+ letter-spacing: normal;
25
+ text-transform: none;
26
+ display: inline-block;
27
+ white-space: nowrap;
28
+ word-wrap: normal;
29
+ direction: ltr;
30
+ font-feature-settings: 'liga';
31
+ -webkit-font-smoothing: antialiased;
32
+ }`;
33
+ document.head.appendChild(estilo);
34
+ // Oculta los iconos mientras carga la fuente para que no se vea el nombre del icono como texto.
35
+ const ocultar = document.createElement('style');
36
+ ocultar.textContent = '.wm-menu-iconos { visibility: hidden; }';
37
+ document.head.appendChild(ocultar);
38
+ // Se lee la URL del archivo desde el CSS de Google Fonts en lugar de fijarla, porque cambia con cada versión.
39
+ fetch(URL_CSS)
40
+ .then(resp => resp.text())
41
+ .then(css => {
42
+ const urlFuente = /url\(([^)]+)\)/.exec(css)[1];
43
+ const fuente = new window.FontFace(FAMILIA, `url(${urlFuente})`);
44
+ document.fonts.add(fuente);
45
+ return fuente.load();
46
+ })
47
+ .catch(error => console.error('wm-menu: no se pudo cargar la fuente de iconos', error))
48
+ .then(() => document.head.removeChild(ocultar));
49
+ }
50
+ };
51
+ WmMenuFuenteIconosService.ɵprov = i0.ɵɵdefineInjectable({ factory: function WmMenuFuenteIconosService_Factory() { return new WmMenuFuenteIconosService(); }, token: WmMenuFuenteIconosService, providedIn: "root" });
52
+ WmMenuFuenteIconosService = __decorate([
53
+ Injectable({
54
+ providedIn: 'root'
55
+ })
56
+ ], WmMenuFuenteIconosService);
57
+ export { WmMenuFuenteIconosService };
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid20tbWVudS1mdWVudGUtaWNvbm9zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly93bS1tZW51LyIsInNvdXJjZXMiOlsibGliL3dtLW1lbnUvc2VydmljZXMvd20tbWVudS1mdWVudGUtaWNvbm9zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDLGdHQUFnRztBQUNoRyx1RkFBdUY7QUFDdkYsTUFBTSxPQUFPLEdBQUcsaUJBQWlCLENBQUM7QUFDbEMsTUFBTSxPQUFPLEdBQUcsbUdBQW1HLENBQUM7QUFLcEgsSUFBYSx5QkFBeUIsR0FBdEMsTUFBYSx5QkFBeUI7SUFBdEM7UUFFVSxhQUFRLEdBQUcsS0FBSyxDQUFDO0tBMkMxQjtJQXpDQyxNQUFNO1FBQ0osSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBRXJCLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0MsTUFBTSxDQUFDLFdBQVcsR0FBRztzQkFDSCxPQUFPOzs7Ozs7Ozs7Ozs7O01BYXZCLENBQUM7UUFDSCxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVsQyxnR0FBZ0c7UUFDaEcsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoRCxPQUFPLENBQUMsV0FBVyxHQUFHLHlDQUF5QyxDQUFDO1FBQ2hFLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRW5DLDhHQUE4RztRQUM5RyxLQUFLLENBQUMsT0FBTyxDQUFDO2FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ3pCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNWLE1BQU0sU0FBUyxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoRCxNQUFNLE1BQU0sR0FBRyxJQUFLLE1BQWMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sU0FBUyxHQUFHLENBQUMsQ0FBQztZQUN6RSxRQUFnQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEMsT0FBTyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxnREFBZ0QsRUFBRSxLQUFLLENBQUMsQ0FBQzthQUN0RixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0NBQ0YsQ0FBQTs7QUE3Q1kseUJBQXlCO0lBSHJDLFVBQVUsQ0FBQztRQUNWLFVBQVUsRUFBRSxNQUFNO0tBQ25CLENBQUM7R0FDVyx5QkFBeUIsQ0E2Q3JDO1NBN0NZLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8vIE1hdGVyaWFsIFN5bWJvbHMgT3V0bGluZWQgKHJlbGxlbmEpIHJlZ2lzdHJhZGEgY29uIHVuIG5vbWJyZSBwcm9waW8gcGFyYSBxdWUgbm8gY2hvcXVlIGNvbiBsYVxyXG4vLyB2ZXJzacOzbiBkZSBNYXRlcmlhbCBTeW1ib2xzIG8gTWF0ZXJpYWwgSWNvbnMgcXVlIGNhcmd1ZSBsYSBww6FnaW5hIHF1ZSBhbG9qYSBlbCBtZW7Dui5cclxuY29uc3QgRkFNSUxJQSA9ICdXTSBNZW51IFN5bWJvbHMnO1xyXG5jb25zdCBVUkxfQ1NTID0gJ2h0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9TWF0ZXJpYWwrU3ltYm9scytPdXRsaW5lZDpvcHN6LHdnaHQsRklMTCxHUkFEQDI0LDQwMCwxLDAnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgV21NZW51RnVlbnRlSWNvbm9zU2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgaW5pY2lhZGEgPSBmYWxzZTtcclxuXHJcbiAgY2FyZ2FyKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaW5pY2lhZGEpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pbmljaWFkYSA9IHRydWU7XHJcblxyXG4gICAgY29uc3QgZXN0aWxvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcclxuICAgIGVzdGlsby50ZXh0Q29udGVudCA9IGAud20tbWVudS1pY29ub3Mge1xyXG4gICAgICBmb250LWZhbWlseTogJyR7RkFNSUxJQX0nO1xyXG4gICAgICBmb250LXdlaWdodDogbm9ybWFsO1xyXG4gICAgICBmb250LXN0eWxlOiBub3JtYWw7XHJcbiAgICAgIGZvbnQtc2l6ZTogMjRweDtcclxuICAgICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICAgIGxldHRlci1zcGFjaW5nOiBub3JtYWw7XHJcbiAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xyXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICAgIHdvcmQtd3JhcDogbm9ybWFsO1xyXG4gICAgICBkaXJlY3Rpb246IGx0cjtcclxuICAgICAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiAnbGlnYSc7XHJcbiAgICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xyXG4gICAgfWA7XHJcbiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGVzdGlsbyk7XHJcblxyXG4gICAgLy8gT2N1bHRhIGxvcyBpY29ub3MgbWllbnRyYXMgY2FyZ2EgbGEgZnVlbnRlIHBhcmEgcXVlIG5vIHNlIHZlYSBlbCBub21icmUgZGVsIGljb25vIGNvbW8gdGV4dG8uXHJcbiAgICBjb25zdCBvY3VsdGFyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcclxuICAgIG9jdWx0YXIudGV4dENvbnRlbnQgPSAnLndtLW1lbnUtaWNvbm9zIHsgdmlzaWJpbGl0eTogaGlkZGVuOyB9JztcclxuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQob2N1bHRhcik7XHJcblxyXG4gICAgLy8gU2UgbGVlIGxhIFVSTCBkZWwgYXJjaGl2byBkZXNkZSBlbCBDU1MgZGUgR29vZ2xlIEZvbnRzIGVuIGx1Z2FyIGRlIGZpamFybGEsIHBvcnF1ZSBjYW1iaWEgY29uIGNhZGEgdmVyc2nDs24uXHJcbiAgICBmZXRjaChVUkxfQ1NTKVxyXG4gICAgICAudGhlbihyZXNwID0+IHJlc3AudGV4dCgpKVxyXG4gICAgICAudGhlbihjc3MgPT4ge1xyXG4gICAgICAgIGNvbnN0IHVybEZ1ZW50ZSA9IC91cmxcXCgoW14pXSspXFwpLy5leGVjKGNzcylbMV07XHJcbiAgICAgICAgY29uc3QgZnVlbnRlID0gbmV3ICh3aW5kb3cgYXMgYW55KS5Gb250RmFjZShGQU1JTElBLCBgdXJsKCR7dXJsRnVlbnRlfSlgKTtcclxuICAgICAgICAoZG9jdW1lbnQgYXMgYW55KS5mb250cy5hZGQoZnVlbnRlKTtcclxuICAgICAgICByZXR1cm4gZnVlbnRlLmxvYWQoKTtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKGVycm9yID0+IGNvbnNvbGUuZXJyb3IoJ3dtLW1lbnU6IG5vIHNlIHB1ZG8gY2FyZ2FyIGxhIGZ1ZW50ZSBkZSBpY29ub3MnLCBlcnJvcikpXHJcbiAgICAgIC50aGVuKCgpID0+IGRvY3VtZW50LmhlYWQucmVtb3ZlQ2hpbGQob2N1bHRhcikpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -4,10 +4,12 @@ import { MenuSecundario } from './model/wm-menu-cuenta.model';
4
4
  import { WmMenuServicioService } from './services/wm-menu-servicio.service';
5
5
  import { JwtHelperService } from '@auth0/angular-jwt';
6
6
  import { WmMenuAlertaPanicoService } from './services/wm-menu-alerta-panico.service';
7
+ import { WmMenuFuenteIconosService } from './services/wm-menu-fuente-iconos.service';
7
8
  let WmMenuComponent = class WmMenuComponent {
8
- constructor(wmMenuServicioService, alertaPanicoService) {
9
+ constructor(wmMenuServicioService, alertaPanicoService, fuenteIconosService) {
9
10
  this.wmMenuServicioService = wmMenuServicioService;
10
11
  this.alertaPanicoService = alertaPanicoService;
12
+ this.fuenteIconosService = fuenteIconosService;
11
13
  this.mostrarAsistente = false;
12
14
  this.idiomaAsistente = 'es-CO';
13
15
  this.asistenteAbierto = false;
@@ -23,6 +25,7 @@ let WmMenuComponent = class WmMenuComponent {
23
25
  return forzado || tienePermiso;
24
26
  }
25
27
  ngOnInit() {
28
+ this.fuenteIconosService.cargar();
26
29
  this.cargarMenuCuenta();
27
30
  this.alertaPanicoService.iniciarProceso(this.intervaloPeticionesMs, () => this.alertaPanicoService.revisarAlertasPendientes(this.urlObtenerAlertasPanico, this.token), this.urlObtenerParametro, this.token, this.rutaAudio);
28
31
  // Carga las funciones del usuario para gatear el asistente (puedeAsistente / WebChatConsultaIA).
@@ -98,7 +101,8 @@ let WmMenuComponent = class WmMenuComponent {
98
101
  };
99
102
  WmMenuComponent.ctorParameters = () => [
100
103
  { type: WmMenuServicioService },
101
- { type: WmMenuAlertaPanicoService }
104
+ { type: WmMenuAlertaPanicoService },
105
+ { type: WmMenuFuenteIconosService }
102
106
  ];
103
107
  __decorate([
104
108
  Input()
@@ -169,9 +173,9 @@ __decorate([
169
173
  WmMenuComponent = __decorate([
170
174
  Component({
171
175
  selector: 'wm-menu',
172
- 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>",
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 fontSet=\"wm-menu-iconos\" *ngIf=\"!menuLateralAbierto\" class=\"animate__animated animate__fadeInRight animate__faster\">menu\r\n </mat-icon>\r\n <mat-icon fontSet=\"wm-menu-iconos\" *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 fontSet=\"wm-menu-iconos\">people</mat-icon></div>\r\n <div class=\"datos border-r mt-1\" *ngIf=\"nombreUsuario\">{{nombreUsuario}}<mat-icon fontSet=\"wm-menu-iconos\">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 fontSet=\"wm-menu-iconos\" 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 fontSet=\"wm-menu-iconos\" *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 fontSet=\"wm-menu-iconos\">{{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 fontSet=\"wm-menu-iconos\">{{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 fontSet=\"wm-menu-iconos\">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>",
173
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,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) center/contain no-repeat}"]
174
178
  })
175
179
  ], WmMenuComponent);
176
180
  export { WmMenuComponent };
177
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid20tbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly93bS1tZW51LyIsInNvdXJjZXMiOlsibGliL3dtLW1lbnUvd20tbWVudS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQU9yRixJQUFhLGVBQWUsR0FBNUIsTUFBYSxlQUFlO0lBK0N4QixZQUFvQixxQkFBNEMsRUFBVSxtQkFBOEM7UUFBcEcsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUFVLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBMkI7UUFuQi9HLHFCQUFnQixHQUFxQixLQUFLLENBQUM7UUFFM0Msb0JBQWUsR0FBVyxPQUFPLENBQUM7UUFDM0MscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLHFCQUFnQixHQUFVLEVBQUUsQ0FBQztRQVNyQyxzQkFBaUIsR0FBbUIsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUN6RCx1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFFcEMsZUFBVSxHQUFTLEVBQUUsQ0FBQztRQUNkLDBCQUFxQixHQUFHLEtBQUssQ0FBQztJQUVzRixDQUFDO0lBYjdILElBQUksY0FBYztRQUNkLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLE1BQU0sSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssR0FBRyxDQUFDO1FBQ3BILE1BQU0sWUFBWSxHQUFHLElBQUks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RTt1REFBd0I7QUFDdkI7SUFBUixLQUFLLEVBQUU7Z0VBQWlDO0FBQ2hDO0lBQVIsS0FBSyxFQUFFOzREQUE2QjtBQUM1QjtJQUFSLEtBQUssRUFBRTtrREFBbUI7QUFFbEI7SUFBUixLQUFLLEVBQUU7c0RBQXVCO0FBQ3RCO0lBQVIsS0FBSyxFQUFFO3NEQUF1QjtBQUN0QjtJQUFSLEtBQUssRUFBRTttREFBb0I7QUFDbkI7SUFBUixLQUFLLEVBQUU7OERBQStCO0FBRTlCO0lBQVIsS0FBSyxFQUFFO21EQUFvQjtBQU1uQjtJQUFSLEtBQUssRUFBRTs0REFBNkI7QUFDNUI7SUFBUixLQUFLLEVBQUU7eURBQTRDO0FBQzNDO0lBQVIsS0FBSyxFQUFFOzhEQUErQjtBQUM5QjtJQUFSLEtBQUssRUFBRTt3REFBbUM7QUE5QmxDLGVBQWU7SUFMM0IsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLFNBQVM7UUFDbkIsOG5OQUF1Qzs7S0FFMUMsQ0FBQztHQUNXLGVBQWUsQ0FrSTNCO1NBbElZLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWVudVByaW5jaXBhbCB9IGZyb20gJy4vbW9kZWwvd20tbWVudS1wcmluY2lwYWwubW9kZWwnO1xyXG5pbXBvcnQgeyBNZW51U2VjdW5kYXJpbyB9IGZyb20gJy4vbW9kZWwvd20tbWVudS1jdWVudGEubW9kZWwnO1xyXG5pbXBvcnQgeyBXbU1lbnVTZXJ2aWNpb1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3dtLW1lbnUtc2VydmljaW8uc2VydmljZSc7XHJcbmltcG9ydCB7IEp3dEhlbHBlclNlcnZpY2UgfSBmcm9tICdAYXV0aDAvYW5ndWxhci1qd3QnO1xyXG5pbXBvcnQgeyBXbU1lbnVBbGVydGFQYW5pY29TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy93bS1tZW51LWFsZXJ0YS1wYW5pY28uc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnd20tbWVudScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vd20tbWVudS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi93bS1tZW51LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFdtTWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBASW5wdXQoKSBsb2dvOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBjb2xvckZvbmRvOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBjb2xvclRleHRvOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBtZW51UHJpbmNpcGFsOiBNZW51UHJpbmNpcGFsW107XHJcbiAgICBASW5wdXQoKSBtZW51U2VjdW5kYXJpbzogTWVudVNlY3VuZGFyaW9bXTtcclxuXHJcbiAgICBASW5wdXQoKSB1cmxNZW51OiBzdHJpbmc7IFxyXG4gICAgQElucHV0KCkgdG9rZW46IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHVybEN1ZW50YVNlZ3VyaWRhZDogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgYWN0aXZhcjJmYTogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgdXJsZ3VpYXNPbmxpbmU6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHVybE9idGVuZXJBbGVydGFzUGFuaWNvOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSB1cmxPYnRlbmVyUGFyYW1ldHJvOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBydXRhQXVkaW86IHN0cmluZztcclxuXHJcbiAgICBASW5wdXQoKSBub21icmVDbGllbnRlOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBub21icmVVc3VhcmlvOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSB2ZXJzaW9uV2ViOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSB1cmxCYXNlQWxtYWNlbmFtaWVudG86IHN0cmluZztcclxuXHJcbiAgICBASW5wdXQoKSB1cmxJZGlvbWFzOiBzdHJpbmc7XHJcblxyXG4gICAgLy8gQXNpc3RlbnRlIGRlIElBIFwiUHJlZ8O6bnRhbGUgYSB0dXMgZGF0b3NcIiBjb21vIG9wY2nDs24gZGVsIG1lbsO6IChyZWVtcGxhemEgZWwgYm90w7NuIGZsb3RhbnRlKS5cclxuICAgIC8vIEVsIGdhdGVvIHJlYWwgbG8gaGFjZSBlbCBtZW7DujogY2FyZ2EgbGFzIGZ1bmNpb25lcyBkZWwgdXN1YXJpbyAodXJsT2J0ZW5lckZ1bmNpb25lcyArIHRva2VuKSB5XHJcbiAgICAvLyBtdWVzdHJhIGVsIGFzaXN0ZW50ZSBzb2xvIHNpIHRpZW5lIFdlYkNoYXRDb25zdWx0YUlBLiBgbW9zdHJhckFzaXN0ZW50ZWAgZXMgdW4gb3ZlcnJpZGUgb3BjaW9uYWxcclxuICAgIC8vIChlai4gaGFybmVzcy9kZXYpIHF1ZSBjb21vIHdlYiBjb21wb25lbnQgbGxlZ2Egc3RyaW5nLCBwb3IgZXNvIGVsIGdldHRlciBwdWVkZUFzaXN0ZW50ZS5cclxuICAgIEBJbnB1dCgpIHVybE9idGVuZXJGdW5jaW9uZXM6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIG1vc3RyYXJBc2lzdGVudGU6IGJvb2xlYW4gfCBzdHJpbmcgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHVybEFzaXN0ZW50ZUNvbnN1bHRhcjogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgaWRpb21hQXNpc3RlbnRlOiBzdHJpbmcgPSAnZXMtQ08nO1xyXG4gICAgYXNpc3RlbnRlQWJpZXJ0byA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBmdW5jaW9uZXNVc3VhcmlvOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIGdldCBwdWVkZUFzaXN0ZW50ZSgpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBmb3J6YWRvID0gdGhpcy5tb3N0cmFyQXNpc3RlbnRlID09PSB0cnVlIHx8IHRoaXMubW9zdHJhckFzaXN0ZW50ZSA9PT0gJ3RydWUnIHx8IHRoaXMubW9zdHJhckFzaXN0ZW50ZSA9PT0gJzEnO1xyXG4gICAgICAgIGNvbnN0IHRpZW5lUGVybWlzbyA9IHRoaXMuZnVuY2lvbmVzVXN1YXJpby5zb21lKChmOiBhbnkpID0+IGYuQ29kaWdvTG9naWNhID09PSAnV2ViQ2hhdENvbnN1bHRhSUEnKTtcclxuICAgICAgICByZXR1cm4gZm9yemFkbyB8fCB0aWVuZVBlcm1pc287XHJcbiAgICB9XHJcblxyXG4gICAgbWVudVByaW5jaXBhbFNlbDogTWVudVByaW5jaXBhbDtcclxuICAgIG1lbnVTZWN1bmRhcmlvU2VsOiBNZW51U2VjdW5kYXJpbyA9IG5ldyBNZW51U2VjdW5kYXJpbygpO1xyXG4gICAgbWVudUxhdGVyYWxBYmllcnRvOiBCb29sZWFuID0gZmFsc2U7XHJcbiAgICBwb3JjZW50YWplVXRpbGl6YWRvIDogbnVtYmVyO1xyXG4gICAgbWVudUlkaW9tYSA6IGFueSA9IFtdO1xyXG4gICAgcHJpdmF0ZSBpbnRlcnZhbG9QZXRpY2lvbmVzTXMgPSA2MDAwMDtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHdtTWVudVNlcnZpY2lvU2VydmljZTogV21NZW51U2VydmljaW9TZXJ2aWNlLCBwcml2YXRlIGFsZXJ0YVBhbmljb1NlcnZpY2U6IFdtTWVudUFsZXJ0YVBhbmljb1NlcnZpY2UpIHsgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2FyZ2FyTWVudUN1ZW50YSgpO1xyXG5cclxuICAgICAgICB0aGlzLmFsZXJ0YVBhbmljb1NlcnZpY2UuaW5pY2lhclByb2Nlc28odGhpcy5pbnRlcnZhbG9QZXRpY2lvbmVzTXMsICgpID0+IHRoaXMuYWxlcnRhUGFuaWNvU2VydmljZS5yZXZpc2FyQWxlcnRhc1BlbmRpZW50ZXModGhpcy51cmxPYnRlbmVyQWxlcnRhc1BhbmljbywgdGhpcy50b2tlbiksIHRoaXMudXJsT2J0ZW5lclBhcmFtZXRybywgdGhpcy50b2tlbiwgdGhpcy5ydXRhQXVkaW8pO1xyXG5cclxuICAgICAgICAvLyBDYXJnYSBsYXMgZnVuY2lvbmVzIGRlbCB1c3VhcmlvIHBhcmEgZ2F0ZWFyIGVsIGFzaXN0ZW50ZSAocHVlZGVBc2lzdGVudGUgLyBXZWJDaGF0Q29uc3VsdGFJQSkuXHJcbiAgICAgICAgLy8gU2kgZmFsbGEgKGVqLiA0MDEpLCBxdWVkYSB2YWPDrWEgeSBlbCBhc2lzdGVudGUgbm8gc2UgbXVlc3RyYS5cclxuICAgICAgICBpZiAodGhpcy51cmxPYnRlbmVyRnVuY2lvbmVzICYmIHRoaXMudG9rZW4pIHtcclxuICAgICAgICAgICAgdGhpcy53bU1lbnVTZXJ2aWNpb1NlcnZpY2VcclxuICAgICAgICAgICAgICAgIC5mdW5jaW9uZXNPYnRlbmVyKHRoaXMudXJsT2J0ZW5lckZ1bmNpb25lcywgdGhpcy50b2tlbilcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlc3ApID0+IHsgdGhpcy5mdW5jaW9uZXNVc3VhcmlvID0gcmVzcCA/PyBbXTsgfSxcclxuICAgICAgICAgICAgICAgICAgICAoKSA9PiB7IHRoaXMuZnVuY2lvbmVzVXN1YXJpbyA9IFtdOyB9XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMudXJsTWVudSAmJiB0aGlzLnRva2VuKSB7XHJcbiAgICAgICAgICAgIHZhciBoZWxwZXIgPSBuZXcgSnd0SGVscGVyU2VydmljZSgpO1xyXG4gICAgICAgICAgICBjb25zdCBkZWNvZGVkVG9rZW4gPSBoZWxwZXIuZGVjb2RlVG9rZW4odGhpcy50b2tlbik7XHJcbiAgICAgICAgICAgIHRoaXMud21NZW51U2VydmljaW9TZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAubWVudUFwaU9idGVuZXIodGhpcy51cmxNZW51LCBkZWNvZGVkVG9rZW5bXCJpZF91c3VhcmlvXCJdLCB0aGlzLnRva2VuKVxyXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWVudVByaW5jaXBhbCA9IHRoaXMud21NZW51U2VydmljaW9TZXJ2aWNlLm1hcGVhck1lbnUocmVzcCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnVybElkaW9tYXMgJiYgdGhpcy50b2tlbikge1xyXG4gICAgICAgICAgICB2YXIgaGVscGVyID0gbmV3IEp3dEhlbHBlclNlcnZpY2UoKTtcclxuICAgICAgICAgICAgY29uc3QgZGVjb2RlZFRva2VuID0gaGVscGVyLmRlY29kZVRva2VuKHRoaXMudG9rZW4pO1xyXG4gICAgICAgICAgICB0aGlzLndtTWVudVNlcnZpY2lvU2VydmljZVxyXG4gICAgICAgICAgICAgICAgLm1lbnVJZGlvbWFzT2J0ZW5lcih0aGlzLnVybElkaW9tYXMsIGRlY29kZWRUb2tlbltcImlkX3VzdWFyaW9cIl0sIHRoaXMudG9rZW4pXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXNwKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICB0aGlzLm1lbnVJZGlvbWEgPSByZXNwO1xyXG4gICAgICAgICAgICAgICAgICAgdGhpcy5jYXJnYXJNZW51Q3VlbnRhKCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnVybEJhc2VBbG1hY2VuYW1pZW50byAmJiB0aGlzLnRva2VuKSB7XHJcbiAgICAgICAgICAgIHZhciBoZWxwZXIgPSBuZXcgSnd0SGVscGVyU2VydmljZSgpO1xyXG4gICAgICAgICAgICBjb25zdCBkZWNvZGVkVG9rZW4gPSBoZWxwZXIuZGVjb2RlVG9rZW4odGhpcy50b2tlbik7XHJcbiAgICAgICAgICAgIHRoaXMud21NZW51U2VydmljaW9TZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAuYWxtYWNlbmFtaWVudG9BcGlPYnRlbmVyKHRoaXMudXJsQmFzZUFsbWFjZW5hbWllbnRvLCBkZWNvZGVkVG9rZW5bXCJpZF91c3VhcmlvXCJdLCB0aGlzLnRva2VuKVxyXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB1dGlsaXphZG8gPSByZXNwWzBdICYmIHJlc3BbMF0uVXRpbGl6YWRvID8gcmVzcFswXS5VdGlsaXphZG8gOiAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB0b3RhbCA9IHJlc3BbMF0gJiYgcmVzcFswXS5Ub3RhbCA/IHJlc3BbMF0uVG90YWwgOiAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9yY2VudGFqZVV0aWxpemFkbyA9IE1hdGgucm91bmQoKHV0aWxpemFkbyAvIHRvdGFsKSAqIDEwMCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2xpY2tNZW51UHJpbmNpcGFsKGk6IG51bWJlcikge1xyXG4gICAgICAgIGlmICh0aGlzLm1lbnVQcmluY2lwYWxbaV0uaGlqb3MgJiYgdGhpcy5tZW51UHJpbmNpcGFsW2ldLmhpam9zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5tZW51UHJpbmNpcGFsU2VsID09IHRoaXMubWVudVByaW5jaXBhbFtpXSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tZW51UHJpbmNpcGFsU2VsID0gbnVsbDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubWVudVByaW5jaXBhbFNlbCA9IHRoaXMubWVudVByaW5jaXBhbFtpXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjbGlja01lbnVTZWN1bmRhcmlvKGk6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMubWVudVNlY3VuZGFyaW9TZWwgPSB0aGlzLm1lbnVTZWN1bmRhcmlvW2ldO1xyXG4gICAgICAgIHRoaXMubWVudVByaW5jaXBhbFNlbCA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY2FyZ2FyTWVudUN1ZW50YSgpe1xyXG4gICAgICAgIGlmICh0aGlzLnVybEN1ZW50YVNlZ3VyaWRhZCAmJiB0aGlzLnRva2VuKSB7XHJcbiAgICAgICAgICAgIHZhciBoZWxwZXIgPSBuZXcgSnd0SGVscGVyU2VydmljZSgpO1xyXG4gICAgICAgICAgICBjb25zdCBkZWNvZGVkVG9rZW4gPSBoZWxwZXIuZGVjb2RlVG9rZW4odGhpcy50b2tlbik7XHJcbiAgICAgICAgICAgIHRoaXMubWVudVNlY3VuZGFyaW8gPSBbe1xyXG4gICAgICAgICAgICAgICAgdGl0dWxvOiBkZWNvZGVkVG9rZW5bXCJ1bmlxdWVfbmFtZVwiXSxcclxuICAgICAgICAgICAgICAgIGljb25vOiBcImFjY291bnRfY2lyY2xlXCIsXHJcbiAgICAgICAgICAgICAgICBoaWpvczogW1xyXG4gICAgICAgICAgICAgICAgICAgIHsgdGl0dWxvOiBkZWNvZGVkVG9rZW5bXCJ1bmlxdWVfbmFtZVwiXSwgdXJsOiBcIlwiLCBpY29ubzogXCJwZXJzb25cIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgdGl0dWxvOiB0aGlzLm1lbnVJZGlvbWEgJiYgdGhpcy5tZW51SWRpb21hLkNhbWJpYXJDb250cmFzZW5uYSA/IHRoaXMubWVudUlkaW9tYS5DYW1iaWFyQ29udHJhc2VubmEgOiBcIkNhbWJpYXIgY29udHJhc2XDsWFcIiwgdXJsOiB0aGlzLnVybEN1ZW50YVNlZ3VyaWRhZCArIFwiQ2FtYmlvQ29udHJhc2VuYVwiLCBpY29ubzogXCJ2cG5fa2V5XCIgfSxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2YXIyZmEgPT0gXCIxXCIgPyB7IHRpdHVsbzogdGhpcy5tZW51SWRpb21hICYmIHRoaXMubWVudUlkaW9tYS5Db25maWd1cmFyMmZhID8gdGhpcy5tZW51SWRpb21hLkNvbmZpZ3VyYXIyZmEgOiBcIkNvbmZpZ3VyYXIgMkZBXCIsIHVybDogdGhpcy51cmxDdWVudGFTZWd1cmlkYWQgKyBcIkhhYmlsaXRhY2lvbjJGQVwiLCBpY29ubzogXCJ2ZXJpZmllZF91c2VyXCIgfSA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cmxndWlhc09ubGluZSAhPSBudWxsICYmIHRoaXMudXJsZ3VpYXNPbmxpbmUgIT09IFwiXCIgJiYgdGhpcy51cmxndWlhc09ubGluZT8ubGVuZ3RoICE9IDAgPyB7IHRpdHVsbzogdGhpcy5tZW51SWRpb21hICYmIHRoaXMubWVudUlkaW9tYS5ndWlhc09ubGluZSA/IHRoaXMubWVudUlkaW9tYS5ndWlhc09ubGluZSA6IFwiR3VpYXMgT25saW5lXCIsIHVybDogdGhpcy51cmxndWlhc09ubGluZSwgaWNvbm86IFwibWVudV9ib29rXCIgfSA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgeyB0aXR1bG86IHRoaXMubWVudUlkaW9tYSAmJiB0aGlzLm1lbnVJZGlvbWEuQ2VycmFyU2VzaW9uID8gdGhpcy5tZW51SWRpb21hLkNlcnJhclNlc2lvbiA6IFwiQ2VycmFyIHNlc2nDs25cIiwgdXJsOiB0aGlzLnVybEN1ZW50YVNlZ3VyaWRhZCArIFwiQ2VycmFyU2VzaW9uXCIsIGljb25vOiBcImV4aXRfdG9fYXBwXCIgfV0uZmlsdGVyKGhpam8gPT4gaGlqbyAhPSBudWxsKSxcclxuICAgICAgICAgICAgfV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid20tbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly93bS1tZW51LyIsInNvdXJjZXMiOlsibGliL3dtLW1lbnUvd20tbWVudS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNyRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQU9yRixJQUFhLGVBQWUsR0FBNUIsTUFBYSxlQUFlO0lBK0N4QixZQUFvQixxQkFBNEMsRUFBVSxtQkFBOEMsRUFDNUcsbUJBQThDO1FBRHRDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFBVSx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQTJCO1FBQzVHLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBMkI7UUFwQmpELHFCQUFnQixHQUFxQixLQUFLLENBQUM7UUFFM0Msb0JBQWUsR0FBVyxPQUFPLENBQUM7UUFDM0MscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLHFCQUFnQixHQUFVLEVBQUUsQ0FBQztRQVNyQyxzQkFBaUIsR0FBbUIsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUN6RCx1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFFcEMsZUFBVSxHQUFTLEVBQUUsQ0FBQztRQUNkLDBCQUFxQixHQUFHLEtBQUssQ0FBQztJQUd3QixDQUFDO0lBZC9ELElBQUksY0FBYztRQUNkLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxJQUFJLElBQUks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S0FBSyxFQUFFO3VEQUFrQztBQUVqQztJQUFSLEtBQUssRUFBRTtnREFBaUI7QUFDaEI7SUFBUixLQUFLLEVBQUU7OENBQWU7QUFDZDtJQUFSLEtBQUssRUFBRTsyREFBNEI7QUFDM0I7SUFBUixLQUFLLEVBQUU7bURBQW9CO0FBQ25CO0lBQVIsS0FBSyxFQUFFO3VEQUF3QjtBQUN2QjtJQUFSLEtBQUssRUFBRTtnRUFBaUM7QUFDaEM7SUFBUixLQUFLLEVBQUU7NERBQTZCO0FBQzVCO0lBQVIsS0FBSyxFQUFFO2tEQUFtQjtBQUVsQjtJQUFSLEtBQUssRUFBRTtzREFBdUI7QUFDdEI7SUFBUixLQUFLLEVBQUU7c0RBQXVCO0FBQ3RCO0lBQVIsS0FBSyxFQUFFO21EQUFvQjtBQUNuQjtJQUFSLEtBQUssRUFBRTs4REFBK0I7QUFFOUI7SUFBUixLQUFLLEVBQUU7bURBQW9CO0FBTW5CO0lBQVIsS0FBSyxFQUFFOzREQUE2QjtBQUM1QjtJQUFSLEtBQUssRUFBRTt5REFBNEM7QUFDM0M7SUFBUixLQUFLLEVBQUU7OERBQStCO0FBQzlCO0lBQVIsS0FBSyxFQUFFO3dEQUFtQztBQTlCbEMsZUFBZTtJQUwzQixTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUsU0FBUztRQUNuQixpM05BQXVDOztLQUUxQyxDQUFDO0dBQ1csZUFBZSxDQW9JM0I7U0FwSVksZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNZW51UHJpbmNpcGFsIH0gZnJvbSAnLi9tb2RlbC93bS1tZW51LXByaW5jaXBhbC5tb2RlbCc7XHJcbmltcG9ydCB7IE1lbnVTZWN1bmRhcmlvIH0gZnJvbSAnLi9tb2RlbC93bS1tZW51LWN1ZW50YS5tb2RlbCc7XHJcbmltcG9ydCB7IFdtTWVudVNlcnZpY2lvU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvd20tbWVudS1zZXJ2aWNpby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSnd0SGVscGVyU2VydmljZSB9IGZyb20gJ0BhdXRoMC9hbmd1bGFyLWp3dCc7XHJcbmltcG9ydCB7IFdtTWVudUFsZXJ0YVBhbmljb1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3dtLW1lbnUtYWxlcnRhLXBhbmljby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV21NZW51RnVlbnRlSWNvbm9zU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvd20tbWVudS1mdWVudGUtaWNvbm9zLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3dtLW1lbnUnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3dtLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vd20tbWVudS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXbU1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQElucHV0KCkgbG9nbzogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgY29sb3JGb25kbzogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgY29sb3JUZXh0bzogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgbWVudVByaW5jaXBhbDogTWVudVByaW5jaXBhbFtdO1xyXG4gICAgQElucHV0KCkgbWVudVNlY3VuZGFyaW86IE1lbnVTZWN1bmRhcmlvW107XHJcblxyXG4gICAgQElucHV0KCkgdXJsTWVudTogc3RyaW5nOyBcclxuICAgIEBJbnB1dCgpIHRva2VuOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSB1cmxDdWVudGFTZWd1cmlkYWQ6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGFjdGl2YXIyZmE6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHVybGd1aWFzT25saW5lOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSB1cmxPYnRlbmVyQWxlcnRhc1Bhbmljbzogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgdXJsT2J0ZW5lclBhcmFtZXRybzogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgcnV0YUF1ZGlvOiBzdHJpbmc7XHJcblxyXG4gICAgQElucHV0KCkgbm9tYnJlQ2xpZW50ZTogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgbm9tYnJlVXN1YXJpbzogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgdmVyc2lvbldlYjogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgdXJsQmFzZUFsbWFjZW5hbWllbnRvOiBzdHJpbmc7XHJcblxyXG4gICAgQElucHV0KCkgdXJsSWRpb21hczogc3RyaW5nO1xyXG5cclxuICAgIC8vIEFzaXN0ZW50ZSBkZSBJQSBcIlByZWfDum50YWxlIGEgdHVzIGRhdG9zXCIgY29tbyBvcGNpw7NuIGRlbCBtZW7DuiAocmVlbXBsYXphIGVsIGJvdMOzbiBmbG90YW50ZSkuXHJcbiAgICAvLyBFbCBnYXRlbyByZWFsIGxvIGhhY2UgZWwgbWVuw7o6IGNhcmdhIGxhcyBmdW5jaW9uZXMgZGVsIHVzdWFyaW8gKHVybE9idGVuZXJGdW5jaW9uZXMgKyB0b2tlbikgeVxyXG4gICAgLy8gbXVlc3RyYSBlbCBhc2lzdGVudGUgc29sbyBzaSB0aWVuZSBXZWJDaGF0Q29uc3VsdGFJQS4gYG1vc3RyYXJBc2lzdGVudGVgIGVzIHVuIG92ZXJyaWRlIG9wY2lvbmFsXHJcbiAgICAvLyAoZWouIGhhcm5lc3MvZGV2KSBxdWUgY29tbyB3ZWIgY29tcG9uZW50IGxsZWdhIHN0cmluZywgcG9yIGVzbyBlbCBnZXR0ZXIgcHVlZGVBc2lzdGVudGUuXHJcbiAgICBASW5wdXQoKSB1cmxPYnRlbmVyRnVuY2lvbmVzOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBtb3N0cmFyQXNpc3RlbnRlOiBib29sZWFuIHwgc3RyaW5nID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSB1cmxBc2lzdGVudGVDb25zdWx0YXI6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGlkaW9tYUFzaXN0ZW50ZTogc3RyaW5nID0gJ2VzLUNPJztcclxuICAgIGFzaXN0ZW50ZUFiaWVydG8gPSBmYWxzZTtcclxuICAgIHByaXZhdGUgZnVuY2lvbmVzVXN1YXJpbzogYW55W10gPSBbXTtcclxuXHJcbiAgICBnZXQgcHVlZGVBc2lzdGVudGUoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgZm9yemFkbyA9IHRoaXMubW9zdHJhckFzaXN0ZW50ZSA9PT0gdHJ1ZSB8fCB0aGlzLm1vc3RyYXJBc2lzdGVudGUgPT09ICd0cnVlJyB8fCB0aGlzLm1vc3RyYXJBc2lzdGVudGUgPT09ICcxJztcclxuICAgICAgICBjb25zdCB0aWVuZVBlcm1pc28gPSB0aGlzLmZ1bmNpb25lc1VzdWFyaW8uc29tZSgoZjogYW55KSA9PiBmLkNvZGlnb0xvZ2ljYSA9PT0gJ1dlYkNoYXRDb25zdWx0YUlBJyk7XHJcbiAgICAgICAgcmV0dXJuIGZvcnphZG8gfHwgdGllbmVQZXJtaXNvO1xyXG4gICAgfVxyXG5cclxuICAgIG1lbnVQcmluY2lwYWxTZWw6IE1lbnVQcmluY2lwYWw7XHJcbiAgICBtZW51U2VjdW5kYXJpb1NlbDogTWVudVNlY3VuZGFyaW8gPSBuZXcgTWVudVNlY3VuZGFyaW8oKTtcclxuICAgIG1lbnVMYXRlcmFsQWJpZXJ0bzogQm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcG9yY2VudGFqZVV0aWxpemFkbyA6IG51bWJlcjtcclxuICAgIG1lbnVJZGlvbWEgOiBhbnkgPSBbXTtcclxuICAgIHByaXZhdGUgaW50ZXJ2YWxvUGV0aWNpb25lc01zID0gNjAwMDA7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB3bU1lbnVTZXJ2aWNpb1NlcnZpY2U6IFdtTWVudVNlcnZpY2lvU2VydmljZSwgcHJpdmF0ZSBhbGVydGFQYW5pY29TZXJ2aWNlOiBXbU1lbnVBbGVydGFQYW5pY29TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgZnVlbnRlSWNvbm9zU2VydmljZTogV21NZW51RnVlbnRlSWNvbm9zU2VydmljZSkgeyB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5mdWVudGVJY29ub3NTZXJ2aWNlLmNhcmdhcigpO1xyXG4gICAgICAgIHRoaXMuY2FyZ2FyTWVudUN1ZW50YSgpO1xyXG5cclxuICAgICAgICB0aGlzLmFsZXJ0YVBhbmljb1NlcnZpY2UuaW5pY2lhclByb2Nlc28odGhpcy5pbnRlcnZhbG9QZXRpY2lvbmVzTXMsICgpID0+IHRoaXMuYWxlcnRhUGFuaWNvU2VydmljZS5yZXZpc2FyQWxlcnRhc1BlbmRpZW50ZXModGhpcy51cmxPYnRlbmVyQWxlcnRhc1BhbmljbywgdGhpcy50b2tlbiksIHRoaXMudXJsT2J0ZW5lclBhcmFtZXRybywgdGhpcy50b2tlbiwgdGhpcy5ydXRhQXVkaW8pO1xyXG5cclxuICAgICAgICAvLyBDYXJnYSBsYXMgZnVuY2lvbmVzIGRlbCB1c3VhcmlvIHBhcmEgZ2F0ZWFyIGVsIGFzaXN0ZW50ZSAocHVlZGVBc2lzdGVudGUgLyBXZWJDaGF0Q29uc3VsdGFJQSkuXHJcbiAgICAgICAgLy8gU2kgZmFsbGEgKGVqLiA0MDEpLCBxdWVkYSB2YWPDrWEgeSBlbCBhc2lzdGVudGUgbm8gc2UgbXVlc3RyYS5cclxuICAgICAgICBpZiAodGhpcy51cmxPYnRlbmVyRnVuY2lvbmVzICYmIHRoaXMudG9rZW4pIHtcclxuICAgICAgICAgICAgdGhpcy53bU1lbnVTZXJ2aWNpb1NlcnZpY2VcclxuICAgICAgICAgICAgICAgIC5mdW5jaW9uZXNPYnRlbmVyKHRoaXMudXJsT2J0ZW5lckZ1bmNpb25lcywgdGhpcy50b2tlbilcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlc3ApID0+IHsgdGhpcy5mdW5jaW9uZXNVc3VhcmlvID0gcmVzcCA/PyBbXTsgfSxcclxuICAgICAgICAgICAgICAgICAgICAoKSA9PiB7IHRoaXMuZnVuY2lvbmVzVXN1YXJpbyA9IFtdOyB9XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMudXJsTWVudSAmJiB0aGlzLnRva2VuKSB7XHJcbiAgICAgICAgICAgIHZhciBoZWxwZXIgPSBuZXcgSnd0SGVscGVyU2VydmljZSgpO1xyXG4gICAgICAgICAgICBjb25zdCBkZWNvZGVkVG9rZW4gPSBoZWxwZXIuZGVjb2RlVG9rZW4odGhpcy50b2tlbik7XHJcbiAgICAgICAgICAgIHRoaXMud21NZW51U2VydmljaW9TZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAubWVudUFwaU9idGVuZXIodGhpcy51cmxNZW51LCBkZWNvZGVkVG9rZW5bXCJpZF91c3VhcmlvXCJdLCB0aGlzLnRva2VuKVxyXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWVudVByaW5jaXBhbCA9IHRoaXMud21NZW51U2VydmljaW9TZXJ2aWNlLm1hcGVhck1lbnUocmVzcCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnVybElkaW9tYXMgJiYgdGhpcy50b2tlbikge1xyXG4gICAgICAgICAgICB2YXIgaGVscGVyID0gbmV3IEp3dEhlbHBlclNlcnZpY2UoKTtcclxuICAgICAgICAgICAgY29uc3QgZGVjb2RlZFRva2VuID0gaGVscGVyLmRlY29kZVRva2VuKHRoaXMudG9rZW4pO1xyXG4gICAgICAgICAgICB0aGlzLndtTWVudVNlcnZpY2lvU2VydmljZVxyXG4gICAgICAgICAgICAgICAgLm1lbnVJZGlvbWFzT2J0ZW5lcih0aGlzLnVybElkaW9tYXMsIGRlY29kZWRUb2tlbltcImlkX3VzdWFyaW9cIl0sIHRoaXMudG9rZW4pXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXNwKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICB0aGlzLm1lbnVJZGlvbWEgPSByZXNwO1xyXG4gICAgICAgICAgICAgICAgICAgdGhpcy5jYXJnYXJNZW51Q3VlbnRhKCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnVybEJhc2VBbG1hY2VuYW1pZW50byAmJiB0aGlzLnRva2VuKSB7XHJcbiAgICAgICAgICAgIHZhciBoZWxwZXIgPSBuZXcgSnd0SGVscGVyU2VydmljZSgpO1xyXG4gICAgICAgICAgICBjb25zdCBkZWNvZGVkVG9rZW4gPSBoZWxwZXIuZGVjb2RlVG9rZW4odGhpcy50b2tlbik7XHJcbiAgICAgICAgICAgIHRoaXMud21NZW51U2VydmljaW9TZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAuYWxtYWNlbmFtaWVudG9BcGlPYnRlbmVyKHRoaXMudXJsQmFzZUFsbWFjZW5hbWllbnRvLCBkZWNvZGVkVG9rZW5bXCJpZF91c3VhcmlvXCJdLCB0aGlzLnRva2VuKVxyXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB1dGlsaXphZG8gPSByZXNwWzBdICYmIHJlc3BbMF0uVXRpbGl6YWRvID8gcmVzcFswXS5VdGlsaXphZG8gOiAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB0b3RhbCA9IHJlc3BbMF0gJiYgcmVzcFswXS5Ub3RhbCA/IHJlc3BbMF0uVG90YWwgOiAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9yY2VudGFqZVV0aWxpemFkbyA9IE1hdGgucm91bmQoKHV0aWxpemFkbyAvIHRvdGFsKSAqIDEwMCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2xpY2tNZW51UHJpbmNpcGFsKGk6IG51bWJlcikge1xyXG4gICAgICAgIGlmICh0aGlzLm1lbnVQcmluY2lwYWxbaV0uaGlqb3MgJiYgdGhpcy5tZW51UHJpbmNpcGFsW2ldLmhpam9zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5tZW51UHJpbmNpcGFsU2VsID09IHRoaXMubWVudVByaW5jaXBhbFtpXSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tZW51UHJpbmNpcGFsU2VsID0gbnVsbDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubWVudVByaW5jaXBhbFNlbCA9IHRoaXMubWVudVByaW5jaXBhbFtpXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjbGlja01lbnVTZWN1bmRhcmlvKGk6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMubWVudVNlY3VuZGFyaW9TZWwgPSB0aGlzLm1lbnVTZWN1bmRhcmlvW2ldO1xyXG4gICAgICAgIHRoaXMubWVudVByaW5jaXBhbFNlbCA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY2FyZ2FyTWVudUN1ZW50YSgpe1xyXG4gICAgICAgIGlmICh0aGlzLnVybEN1ZW50YVNlZ3VyaWRhZCAmJiB0aGlzLnRva2VuKSB7XHJcbiAgICAgICAgICAgIHZhciBoZWxwZXIgPSBuZXcgSnd0SGVscGVyU2VydmljZSgpO1xyXG4gICAgICAgICAgICBjb25zdCBkZWNvZGVkVG9rZW4gPSBoZWxwZXIuZGVjb2RlVG9rZW4odGhpcy50b2tlbik7XHJcbiAgICAgICAgICAgIHRoaXMubWVudVNlY3VuZGFyaW8gPSBbe1xyXG4gICAgICAgICAgICAgICAgdGl0dWxvOiBkZWNvZGVkVG9rZW5bXCJ1bmlxdWVfbmFtZVwiXSxcclxuICAgICAgICAgICAgICAgIGljb25vOiBcImFjY291bnRfY2lyY2xlXCIsXHJcbiAgICAgICAgICAgICAgICBoaWpvczogW1xyXG4gICAgICAgICAgICAgICAgICAgIHsgdGl0dWxvOiBkZWNvZGVkVG9rZW5bXCJ1bmlxdWVfbmFtZVwiXSwgdXJsOiBcIlwiLCBpY29ubzogXCJwZXJzb25cIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgdGl0dWxvOiB0aGlzLm1lbnVJZGlvbWEgJiYgdGhpcy5tZW51SWRpb21hLkNhbWJpYXJDb250cmFzZW5uYSA/IHRoaXMubWVudUlkaW9tYS5DYW1iaWFyQ29udHJhc2VubmEgOiBcIkNhbWJpYXIgY29udHJhc2XDsWFcIiwgdXJsOiB0aGlzLnVybEN1ZW50YVNlZ3VyaWRhZCArIFwiQ2FtYmlvQ29udHJhc2VuYVwiLCBpY29ubzogXCJ2cG5fa2V5XCIgfSxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2YXIyZmEgPT0gXCIxXCIgPyB7IHRpdHVsbzogdGhpcy5tZW51SWRpb21hICYmIHRoaXMubWVudUlkaW9tYS5Db25maWd1cmFyMmZhID8gdGhpcy5tZW51SWRpb21hLkNvbmZpZ3VyYXIyZmEgOiBcIkNvbmZpZ3VyYXIgMkZBXCIsIHVybDogdGhpcy51cmxDdWVudGFTZWd1cmlkYWQgKyBcIkhhYmlsaXRhY2lvbjJGQVwiLCBpY29ubzogXCJ2ZXJpZmllZF91c2VyXCIgfSA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cmxndWlhc09ubGluZSAhPSBudWxsICYmIHRoaXMudXJsZ3VpYXNPbmxpbmUgIT09IFwiXCIgJiYgdGhpcy51cmxndWlhc09ubGluZT8ubGVuZ3RoICE9IDAgPyB7IHRpdHVsbzogdGhpcy5tZW51SWRpb21hICYmIHRoaXMubWVudUlkaW9tYS5ndWlhc09ubGluZSA/IHRoaXMubWVudUlkaW9tYS5ndWlhc09ubGluZSA6IFwiR3VpYXMgT25saW5lXCIsIHVybDogdGhpcy51cmxndWlhc09ubGluZSwgaWNvbm86IFwibWVudV9ib29rXCIgfSA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgeyB0aXR1bG86IHRoaXMubWVudUlkaW9tYSAmJiB0aGlzLm1lbnVJZGlvbWEuQ2VycmFyU2VzaW9uID8gdGhpcy5tZW51SWRpb21hLkNlcnJhclNlc2lvbiA6IFwiQ2VycmFyIHNlc2nDs25cIiwgdXJsOiB0aGlzLnVybEN1ZW50YVNlZ3VyaWRhZCArIFwiQ2VycmFyU2VzaW9uXCIsIGljb25vOiBcImV4aXRfdG9fYXBwXCIgfV0uZmlsdGVyKGhpam8gPT4gaGlqbyAhPSBudWxsKSxcclxuICAgICAgICAgICAgfV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -2,7 +2,8 @@
2
2
  * Generated bundle index. Do not edit.
3
3
  */
4
4
  export * from './public-api';
5
- export { AsistenteDatosApiService as ɵb } from './lib/wm-menu/asistente-datos/asistente-datos-api.service';
6
- export { AsistenteDatosComponent as ɵa } from './lib/wm-menu/asistente-datos/asistente-datos.component';
7
- export { ReconocimientoVozService as ɵc } from './lib/wm-menu/asistente-datos/reconocimiento-voz.service';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid20tbWVudS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL3dtLW1lbnUvIiwic291cmNlcyI6WyJ3bS1tZW51LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUM7QUFFN0IsT0FBTyxFQUFDLHdCQUF3QixJQUFJLEVBQUUsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQ3pHLE9BQU8sRUFBQyx1QkFBdUIsSUFBSSxFQUFFLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUN0RyxPQUFPLEVBQUMsd0JBQXdCLElBQUksRUFBRSxFQUFDLE1BQU0sMERBQTBELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG5cbmV4cG9ydCB7QXNpc3RlbnRlRGF0b3NBcGlTZXJ2aWNlIGFzIMm1Yn0gZnJvbSAnLi9saWIvd20tbWVudS9hc2lzdGVudGUtZGF0b3MvYXNpc3RlbnRlLWRhdG9zLWFwaS5zZXJ2aWNlJztcbmV4cG9ydCB7QXNpc3RlbnRlRGF0b3NDb21wb25lbnQgYXMgybVhfSBmcm9tICcuL2xpYi93bS1tZW51L2FzaXN0ZW50ZS1kYXRvcy9hc2lzdGVudGUtZGF0b3MuY29tcG9uZW50JztcbmV4cG9ydCB7UmVjb25vY2ltaWVudG9Wb3pTZXJ2aWNlIGFzIMm1Y30gZnJvbSAnLi9saWIvd20tbWVudS9hc2lzdGVudGUtZGF0b3MvcmVjb25vY2ltaWVudG8tdm96LnNlcnZpY2UnOyJdfQ==
5
+ export { AsistenteDatosApiService as ɵc } from './lib/wm-menu/asistente-datos/asistente-datos-api.service';
6
+ export { AsistenteDatosComponent as ɵb } from './lib/wm-menu/asistente-datos/asistente-datos.component';
7
+ export { ReconocimientoVozService as ɵd } from './lib/wm-menu/asistente-datos/reconocimiento-voz.service';
8
+ export { WmMenuFuenteIconosService as ɵa } from './lib/wm-menu/services/wm-menu-fuente-iconos.service';
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid20tbWVudS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL3dtLW1lbnUvIiwic291cmNlcyI6WyJ3bS1tZW51LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUM7QUFFN0IsT0FBTyxFQUFDLHdCQUF3QixJQUFJLEVBQUUsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQ3pHLE9BQU8sRUFBQyx1QkFBdUIsSUFBSSxFQUFFLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUN0RyxPQUFPLEVBQUMsd0JBQXdCLElBQUksRUFBRSxFQUFDLE1BQU0sMERBQTBELENBQUM7QUFDeEcsT0FBTyxFQUFDLHlCQUF5QixJQUFJLEVBQUUsRUFBQyxNQUFNLHNEQUFzRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuXG5leHBvcnQge0FzaXN0ZW50ZURhdG9zQXBpU2VydmljZSBhcyDJtWN9IGZyb20gJy4vbGliL3dtLW1lbnUvYXNpc3RlbnRlLWRhdG9zL2FzaXN0ZW50ZS1kYXRvcy1hcGkuc2VydmljZSc7XG5leHBvcnQge0FzaXN0ZW50ZURhdG9zQ29tcG9uZW50IGFzIMm1Yn0gZnJvbSAnLi9saWIvd20tbWVudS9hc2lzdGVudGUtZGF0b3MvYXNpc3RlbnRlLWRhdG9zLmNvbXBvbmVudCc7XG5leHBvcnQge1JlY29ub2NpbWllbnRvVm96U2VydmljZSBhcyDJtWR9IGZyb20gJy4vbGliL3dtLW1lbnUvYXNpc3RlbnRlLWRhdG9zL3JlY29ub2NpbWllbnRvLXZvei5zZXJ2aWNlJztcbmV4cG9ydCB7V21NZW51RnVlbnRlSWNvbm9zU2VydmljZSBhcyDJtWF9IGZyb20gJy4vbGliL3dtLW1lbnUvc2VydmljZXMvd20tbWVudS1mdWVudGUtaWNvbm9zLnNlcnZpY2UnOyJdfQ==
@@ -184,11 +184,11 @@ var AsistenteDatosComponent = /** @class */ (function () {
184
184
  AsistenteDatosComponent = __decorate([
185
185
  Component({
186
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",
187
+ template: "<!-- Panel (abierto) -->\r\n<div class=\"chat-ia-panel\" *ngIf=\"abierto\">\r\n <div class=\"chat-ia-header\">\r\n <div class=\"chat-ia-header-info\">\r\n <div class=\"chat-ia-header-icono\">\r\n <svg width=\"17\" height=\"17\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1.8\">\r\n <path d=\"M4 5h16v10H9l-4 4V15H4z\"></path>\r\n </svg>\r\n </div>\r\n <div>\r\n <div class=\"chat-ia-titulo\">Preg\u00FAntale a tus Datos</div>\r\n <div class=\"chat-ia-subtitulo\">Consulta tus reportes en lenguaje natural</div>\r\n </div>\r\n </div>\r\n <div class=\"chat-ia-cerrar\" (click)=\"cerrar()\">\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" stroke=\"#fff\" stroke-width=\"2\" fill=\"none\" stroke-linecap=\"round\">\r\n <path d=\"M6 6l12 12M18 6L6 18\"></path>\r\n </svg>\r\n </div>\r\n </div>\r\n\r\n <div class=\"chat-ia-mensajes\" #mensajesContainer>\r\n <div class=\"chat-ia-bienvenida-texto\">Hola, soy tu asistente de datos de Snap Forms. Preg\u00FAntame lo que quieras saber sobre tu operaci\u00F3n.</div>\r\n\r\n <div class=\"chat-ia-mensaje\" *ngFor=\"let mensaje of mensajes\" [class.chat-ia-mensaje-usuario]=\"mensaje.deUsuario\">\r\n <div class=\"chat-ia-burbuja\" [class.chat-ia-burbuja-error]=\"mensaje.esError\">\r\n <span *ngIf=\"mensaje.texto\">{{ mensaje.texto }}</span>\r\n\r\n <ng-container *ngIf=\"mensaje.resultado\">\r\n <div class=\"chat-ia-descripcion\" *ngIf=\"mensaje.descripcion\">{{ mensaje.descripcion }}</div>\r\n\r\n <div class=\"chat-ia-sin-resultados\" *ngIf=\"mensaje.resultado.length === 0\">La consulta no encontr\u00F3 resultados.</div>\r\n\r\n <div class=\"chat-ia-stat\" *ngIf=\"esConteo(mensaje.resultado)\">\r\n <div class=\"chat-ia-stat-valor\">{{ mensaje.resultado[0].Resultado | number }}</div>\r\n </div>\r\n\r\n <div class=\"chat-ia-lista-simple\" *ngIf=\"esListaSimple(mensaje.resultado)\">{{ textoListaSimple(mensaje.resultado) }}</div>\r\n\r\n <div class=\"chat-ia-tabla-resultado\" *ngIf=\"mensaje.resultado.length > 0 && !esConteo(mensaje.resultado) && !esListaSimple(mensaje.resultado)\">\r\n <table mat-table [dataSource]=\"mensaje.resultado\">\r\n <ng-container *ngFor=\"let columna of columnasDe(mensaje.resultado)\" [matColumnDef]=\"columna\">\r\n <th mat-header-cell *matHeaderCellDef>{{ columna }}</th>\r\n <td mat-cell *matCellDef=\"let fila\">{{ fila[columna] }}</td>\r\n </ng-container>\r\n <tr mat-header-row *matHeaderRowDef=\"columnasDe(mensaje.resultado)\"></tr>\r\n <tr mat-row *matRowDef=\"let fila; columns: columnasDe(mensaje.resultado);\"></tr>\r\n </table>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"chat-ia-pensando\" *ngIf=\"consultando\">\r\n <span class=\"chat-ia-dot\"></span><span class=\"chat-ia-dot\"></span><span class=\"chat-ia-dot\"></span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"chips-chat-ia\">\r\n <span class=\"chip-chat-ia\" *ngFor=\"let chip of chipsSugeridos\"\r\n (click)=\"onClickEnviar(chip)\">{{ chip }}</span>\r\n </div>\r\n\r\n <div class=\"chat-ia-entrada\">\r\n <div class=\"chat-ia-caja-entrada\">\r\n <mat-icon fontSet=\"wm-menu-iconos\" class=\"chat-ia-expandir\" (click)=\"onClickExpandirBorrador()\">{{ borradorExpandido ? 'close_fullscreen' : 'open_in_full' }}</mat-icon>\r\n <textarea [rows]=\"filasBorrador\" [(ngModel)]=\"borrador\" (keydown.enter)=\"$event.preventDefault(); onClickEnviar()\"\r\n [class.chat-ia-textarea-expandido]=\"borradorExpandido\"\r\n placeholder=\"Escribe tu pregunta...\"></textarea>\r\n <div class=\"chat-ia-pie-entrada\">\r\n <button class=\"chat-ia-selector-modelo\" [matMenuTriggerFor]=\"menuModeloChatIA\" type=\"button\">\r\n <span *ngIf=\"proveedorSeleccionado === 'Gemini'\">Gemini</span>\r\n <span *ngIf=\"proveedorSeleccionado === 'Groq'\">Groq</span>\r\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M6 9l6 6 6-6\"></path>\r\n </svg>\r\n </button>\r\n <button class=\"chat-ia-microfono\" [class.chat-ia-microfono-activo]=\"escuchando\" *ngIf=\"micDisponible\"\r\n (click)=\"onClickMicrofono()\" type=\"button\">\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z\"></path>\r\n <path d=\"M19 10v2a7 7 0 0 1-14 0v-2\"></path>\r\n <line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"23\"></line>\r\n </svg>\r\n </button>\r\n <button class=\"chat-ia-enviar\" [disabled]=\"!borrador.trim() || consultando\" (click)=\"onClickEnviar()\" type=\"button\">\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M12 19V6\"></path>\r\n <path d=\"M5 13l7-7 7 7\"></path>\r\n </svg>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<mat-menu #menuModeloChatIA=\"matMenu\" class=\"menu-modelo-chat-ia\">\r\n <button mat-menu-item [class.opcion-activa]=\"proveedorSeleccionado === 'Gemini'\"\r\n (click)=\"proveedorSeleccionado = 'Gemini'\">\r\n <span>Gemini</span>\r\n <svg *ngIf=\"proveedorSeleccionado === 'Gemini'\" class=\"chat-ia-check\" width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M20 6L9 17l-5-5\"></path>\r\n </svg>\r\n </button>\r\n <button mat-menu-item [class.opcion-activa]=\"proveedorSeleccionado === 'Groq'\"\r\n (click)=\"proveedorSeleccionado = 'Groq'\">\r\n <span>Groq</span>\r\n <svg *ngIf=\"proveedorSeleccionado === 'Groq'\" class=\"chat-ia-check\" width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M20 6L9 17l-5-5\"></path>\r\n </svg>\r\n </button>\r\n</mat-menu>\r\n",
188
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
189
  })
190
190
  ], AsistenteDatosComponent);
191
191
  return AsistenteDatosComponent;
192
192
  }());
193
193
  export { AsistenteDatosComponent };
194
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpc3RlbnRlLWRhdG9zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL3dtLW1lbnUvIiwic291cmNlcyI6WyJsaWIvd20tbWVudS9hc2lzdGVudGUtZGF0b3MvYXNpc3RlbnRlLWRhdG9zLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFnQnpFO0lBd0NJLGlDQUNZLHdCQUFrRCxFQUNsRCxpQkFBMkM7UUFEM0MsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQTBCO1FBdkN2RCwwRkFBMEY7UUFDMUYscUZBQXFGO1FBQzVFLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFTekIseURBQXlEO1FBQ2hELFdBQU0sR0FBRyxPQUFPLENBQUM7UUFFaEIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTNDLGFBQVEsR0FBNEIsRUFBRSxDQUFDO1FBQ3ZDLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDckIsOEZBQThGO1FBQzlGLGtHQUFrRztRQUMzRixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDM0IsbUZBQW1GO1FBQ25GLDJDQUEyQztRQUNwQywwQkFBcUIsR0FBc0IsUUFBUSxDQUFDO1FBQzNELHNGQUFzRjtRQUMvRSxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRTFCLHNGQUFzRjtRQUN0RixnR0FBZ0c7UUFDaEcsNkNBQTZDO1FBQ3RDLG1CQUFjLEdBQWE7WUFDOUIsNENBQTRDO1lBQzVDLG9EQUFvRDtZQUNwRCxvREFBb0Q7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SUFJOUU7UUFBUixLQUFLLEVBQUU7NERBQWlCO0lBR2hCO1FBQVIsS0FBSyxFQUFFOytEQUlQO0lBR1E7UUFBUixLQUFLLEVBQUU7MkRBQWtCO0lBRWhCO1FBQVQsTUFBTSxFQUFFO2lFQUF5QztJQWpCekMsdUJBQXVCO1FBTG5DLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSxvQkFBb0I7WUFDOUIsMmxPQUErQzs7U0FFbEQsQ0FBQztPQUNXLHVCQUF1QixDQXlLbkM7SUFBRCw4QkFBQztDQUFBLEFBektELElBeUtDO1NBektZLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVjb25vY2ltaWVudG9Wb3pTZXJ2aWNlIH0gZnJvbSAnLi9yZWNvbm9jaW1pZW50by12b3ouc2VydmljZSc7XHJcbmltcG9ydCB7IEFzaXN0ZW50ZURhdG9zQXBpU2VydmljZSB9IGZyb20gJy4vYXNpc3RlbnRlLWRhdG9zLWFwaS5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWVuc2FqZUFzaXN0ZW50ZURhdG9zIHtcclxuICAgIGRlVXN1YXJpbzogYm9vbGVhbjtcclxuICAgIHRleHRvPzogc3RyaW5nO1xyXG4gICAgZGVzY3JpcGNpb24/OiBzdHJpbmc7XHJcbiAgICByZXN1bHRhZG8/OiBhbnlbXTtcclxuICAgIHByb3ZlZWRvcj86IHN0cmluZztcclxuICAgIGVzRXJyb3I/OiBib29sZWFuO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnd20tYXNpc3RlbnRlLWRhdG9zJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9hc2lzdGVudGUtZGF0b3MuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vYXNpc3RlbnRlLWRhdG9zLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBc2lzdGVudGVEYXRvc0NvbXBvbmVudCB7XHJcbiAgICBAVmlld0NoaWxkKCdtZW5zYWplc0NvbnRhaW5lcicpIHByaXZhdGUgbWVuc2FqZXNDb250YWluZXI/OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHJcbiAgICAvLyBMYSBhcGVydHVyYS9jaWVycmUgZGVsIHBhbmVsIGxhIGNvbnRyb2xhIGVsIHBhZHJlIChlbCBtZW7DuikuIEVsIHBhbmVsIHNvbG8gc2UgcmVuZGVyaXphXHJcbiAgICAvLyBjdWFuZG8gYGFiaWVydG9gIGVzIHRydWUgeSBhdmlzYSwgdsOtYSBgY2VycmFyQ2hhbmdlYCwgY3VhbmRvIGVsIHVzdWFyaW8gdG9jYSBsYSBYLlxyXG4gICAgQElucHV0KCkgYWJpZXJ0byA9IGZhbHNlO1xyXG5cclxuICAgIC8vIFVSTCBkZWwgUE9TVCBkZSBjb25zdWx0YS4gU2UgcmVmbGVqYSBlbiBlbCBhcGkgc2VydmljZSAocHJvcGllZGFkIGB1cmxgKSwgcXVlIGVzIGRvbmRlIHNlIHVzYS5cclxuICAgIEBJbnB1dCgpIHNldCB1cmxDb25zdWx0YXIodmFsb3I6IHN0cmluZykge1xyXG4gICAgICAgIGlmICh2YWxvcikge1xyXG4gICAgICAgICAgICB0aGlzLmFzaXN0ZW50ZURhdG9zQXBpU2VydmljZS51cmwgPSB2YWxvcjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWRpb21hIHBhcmEgZWwgcmVjb25vY2ltaWVudG8gZGUgdm96IChXZWIgU3BlZWNoIEFQSSkuXHJcbiAgICBASW5wdXQoKSBpZGlvbWEgPSAnZXMtQ08nO1xyXG5cclxuICAgIEBPdXRwdXQoKSBjZXJyYXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgcHVibGljIG1lbnNhamVzOiBNZW5zYWplQXNpc3RlbnRlRGF0b3NbXSA9IFtdO1xyXG4gICAgcHVibGljIGJvcnJhZG9yID0gJyc7XHJcbiAgICAvLyBBbHRlcm5hIGVsIGFsdG8gZGUgbGEgY2FqYSBkZWwgbWVuc2FqZSAoY29tcGFjdGEg4oaUIGV4cGFuZGlkYSksIGlndWFsIHF1ZSBlbCBcInBlZGlyIGNhbWJpb3NcIlxyXG4gICAgLy8gZGVsIGFzaXN0ZW50ZSBkZSBJQSBkZWwgZ2VuZXJhZG9yIGRlIGZvcm11bGFyaW9zICh2ZXIgZmlsYXNCb3JyYWRvciAvIG9uQ2xpY2tFeHBhbmRpckJvcnJhZG9yKS5cclxuICAgIHB1YmxpYyBib3JyYWRvckV4cGFuZGlkbyA9IGZhbHNlO1xyXG4gICAgcHVibGljIGNvbnN1bHRhbmRvID0gZmFsc2U7XHJcbiAgICAvLyBcIkdlbWluaVwiIG8gXCJHcm9xXCIg4oCUIG1pc21vIHNlbGVjdG9yIHF1ZSBlbCBhc2lzdGVudGUgZGUgZ2VuZXJhY2nDs24gZGUgZm9ybXVsYXJpb3NcclxuICAgIC8vICh2ZXIgUHJvdmVlZG9ySUFTZXJ2aWNpbyBlbiBlbCBiYWNrZW5kKS5cclxuICAgIHB1YmxpYyBwcm92ZWVkb3JTZWxlY2Npb25hZG86ICdHZW1pbmknIHwgJ0dyb3EnID0gJ0dlbWluaSc7XHJcbiAgICAvLyBEaWN0YWRvIHBvciB2b3ogKFdlYiBTcGVlY2ggQVBJKSDigJQgc2luIHNvcG9ydGUgZW4gRmlyZWZveCwgaW5jb25zaXN0ZW50ZSBlbiBTYWZhcmkuXHJcbiAgICBwdWJsaWMgZXNjdWNoYW5kbyA9IGZhbHNlO1xyXG5cclxuICAgIC8vIFByZWd1bnRhcyB5YSB2ZXJpZmljYWRhcyBjb21vIHJlc3BvbmRpYmxlcyBob3kgKHdoaXRlbGlzdCArIGNvbnRyYXRvIGRlIGxhIElBIOKAlCB2ZXJcclxuICAgIC8vIENoYXRDb25zdWx0YVdoaXRlbGlzdFNlcnZpY2lvL0NoYXRDb25zdWx0YVByb21wdFNlcnZpY2lvIGVuIGVsIGJhY2tlbmQpLCBtb3N0cmFkYXMgY29tbyBjaGlwc1xyXG4gICAgLy8gZGUgc3VnZXJlbmNpYSBlbiBlbCBlc3RhZG8gdmFjw61vIGRlbCBjaGF0LlxyXG4gICAgcHVibGljIGNoaXBzU3VnZXJpZG9zOiBzdHJpbmdbXSA9IFtcclxuICAgICAgICAnwr9DdcOhbnRvcyBmb3JtdWxhcmlvcyBzZSBkaWxpZ2VuY2lhcm9uIGhveT8nLFxyXG4gICAgICAgICfCv0N1w6FudG9zIGZvcm11bGFyaW9zIHNlIGRpbGlnZW5jaWFyb24gZXN0YSBzZW1hbmE/JyxcclxuICAgICAgICAnTXXDqXN0cmFtZSBsb3Mgw7psdGltb3MgMTAgZm9ybXVsYXJpb3MgZGlsaWdlbmNpYWRvcycsXHJcbiAgICBdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgYXNpc3RlbnRlRGF0b3NBcGlTZXJ2aWNlOiBBc2lzdGVudGVEYXRvc0FwaVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWNvbm9jaW1pZW50b1ZvejogUmVjb25vY2ltaWVudG9Wb3pTZXJ2aWNlXHJcbiAgICApIHt9XHJcblxyXG4gICAgLy8gRWwgcGFkcmUgYWJyZS9jaWVycmEgZWwgcGFuZWw7IGFxdcOtIHNvbG8gc2UgYXZpc2EgcXVlIGVsIHVzdWFyaW8gcGlkacOzIGNlcnJhcmxvIChib3TDs24gWCkuXHJcbiAgICBjZXJyYXIoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jZXJyYXJDaGFuZ2UuZW1pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENhamEgZGVsIG1lbnNhamUgY29tcGFjdGEgKDEgZmlsYSwgY29tbyBlcmEgZWwgY2hhdCBvcmlnaW5hbG1lbnRlKSDihpQgZXhwYW5kaWRhICg2IGZpbGFzKS5cclxuICAgIC8vIEVsIGJvdMOzbiBkZSBleHBhbmRpciBlcyBlbCBtaXNtbyBwYXRyw7NuIGRlbCBcInBlZGlyIGNhbWJpb3NcIiBkZWwgZ2VuZXJhZG9yLlxyXG4gICAgZ2V0IGZpbGFzQm9ycmFkb3IoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5ib3JyYWRvckV4cGFuZGlkbyA/IDYgOiAxO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2xpY2tFeHBhbmRpckJvcnJhZG9yKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuYm9ycmFkb3JFeHBhbmRpZG8gPSAhdGhpcy5ib3JyYWRvckV4cGFuZGlkbztcclxuICAgIH1cclxuXHJcbiAgICBnZXQgbWljRGlzcG9uaWJsZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZWNvbm9jaW1pZW50b1Zvei5lc3RhU29wb3J0YWRvKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DbGlja01pY3JvZm9ubygpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5lc2N1Y2hhbmRvKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVjb25vY2ltaWVudG9Wb3ouZGV0ZW5lcigpO1xyXG4gICAgICAgICAgICB0aGlzLmVzY3VjaGFuZG8gPSBmYWxzZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnJlY29ub2NpbWllbnRvVm96LmVzdGFTb3BvcnRhZG8oKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBFbCByZXN1bHRhZG8gZGVsIHJlY29ub2NpbWllbnRvIG5vIGluY2x1eWUgbG8gcXVlIHlhIGVzdGFiYSBlc2NyaXRvIOKAlCBzZSBndWFyZGEgYW50ZXMgZGVcclxuICAgICAgICAvLyBlbXBlemFyIHkgc2UgYW50ZXBvbmUgZW4gY2FkYSBhY3R1YWxpemFjacOzbiAocXVlIGxsZWdhIGNvbiBsYSB0cmFuc2NyaXBjacOzbiBDT01QTEVUQSBkZVxyXG4gICAgICAgIC8vIGVzdGEgc2VzacOzbiBkZSBlc2N1Y2hhLCBubyB1biBpbmNyZW1lbnRvKSBwYXJhIG5vIHBlcmRlciBsbyBxdWUgeWEgaGFiw61hIGVuIGVsIGNhbXBvLlxyXG4gICAgICAgIGNvbnN0IHRleHRvUHJldmlvID0gdGhpcy5ib3JyYWRvci50cmltKCk7XHJcbiAgICAgICAgdGhpcy5lc2N1Y2hhbmRvID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlY29ub2NpbWllbnRvVm96LmluaWNpYXIoXHJcbiAgICAgICAgICAgIHRoaXMuaWRpb21hLFxyXG4gICAgICAgICAgICAodGV4dG8pID0+ICh0aGlzLmJvcnJhZG9yID0gdGV4dG9QcmV2aW8gPyBgJHt0ZXh0b1ByZXZpb30gJHt0ZXh0b31gIDogdGV4dG8pLFxyXG4gICAgICAgICAgICAoKSA9PiAodGhpcy5lc2N1Y2hhbmRvID0gZmFsc2UpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNsaWNrRW52aWFyKHRleHRvUHJlc2V0Pzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgcHJlZ3VudGEgPSAodGV4dG9QcmVzZXQgPz8gdGhpcy5ib3JyYWRvcikudHJpbSgpO1xyXG4gICAgICAgIGlmICghcHJlZ3VudGEgfHwgdGhpcy5jb25zdWx0YW5kbykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm1lbnNhamVzLnB1c2goeyBkZVVzdWFyaW86IHRydWUsIHRleHRvOiBwcmVndW50YSB9KTtcclxuICAgICAgICB0aGlzLmJvcnJhZG9yID0gJyc7XHJcblxyXG4gICAgICAgIC8vIFNpbiB1cmwgZGUgY29uc3VsdGEgbm8gc2UgaGFjZSBsYSBwZXRpY2nDs246IGVsIHVzdWFyaW8gdmUgZWwgbWlzbW8gZXJyb3IgZ2Vuw6lyaWNvIHF1ZVxyXG4gICAgICAgIC8vIGN1YW5kbyBsYSBBUEkgZmFsbGEuXHJcbiAgICAgICAgaWYgKCF0aGlzLmFzaXN0ZW50ZURhdG9zQXBpU2VydmljZS51cmwpIHtcclxuICAgICAgICAgICAgdGhpcy5tZW5zYWplcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGRlVXN1YXJpbzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICB0ZXh0bzogJ05vIHNlIHB1ZG8gcHJvY2VzYXIgbGEgY29uc3VsdGEuJyxcclxuICAgICAgICAgICAgICAgIGVzRXJyb3I6IHRydWUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnNjcm9sbEFsRmluYWwoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jb25zdWx0YW5kbyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxBbEZpbmFsKCk7XHJcblxyXG4gICAgICAgIHRoaXMuYXNpc3RlbnRlRGF0b3NBcGlTZXJ2aWNlLmNvbnN1bHRhcihwcmVndW50YSwgdGhpcy5wcm92ZWVkb3JTZWxlY2Npb25hZG8pLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIC8vIEVsIHRpcG8gKFJlc3B1ZXN0YUFzaXN0ZW50ZURhdG9zKSBzZSBpbmZpZXJlIGRlbCBPYnNlcnZhYmxlOiBpbXBvcnRhciBsYSBpbnRlcmZhelxyXG4gICAgICAgICAgICAvLyBkZWphYmEgdW4gaW1wb3J0IGEgdW4gc8OtbWJvbG8gaW5leGlzdGVudGUgZW4gZWwgSlMgZGUgbGEgbGlicmVyw61hIChhdmlzbyBkZSByb2xsdXApLlxyXG4gICAgICAgICAgICBuZXh0OiAocmVzcHVlc3RhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnN1bHRhbmRvID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnNhamVzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIGRlVXN1YXJpbzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcGNpb246IHJlc3B1ZXN0YS5EZXNjcmlwY2lvbixcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHRhZG86IHJlc3B1ZXN0YS5SZXN1bHRhZG8gPz8gW10sXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvdmVlZG9yOiByZXNwdWVzdGEuUHJvdmVlZG9yLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbEFsRmluYWwoKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb25zdWx0YW5kbyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tZW5zYWplcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICBkZVVzdWFyaW86IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIHRleHRvOiBlcnJvcj8uTWVuc2FqZSB8fCAnTm8gc2UgcHVkbyBwcm9jZXNhciBsYSBjb25zdWx0YS4nLFxyXG4gICAgICAgICAgICAgICAgICAgIGVzRXJyb3I6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsQWxGaW5hbCgpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEVsIG51ZXZvIG1lbnNhamUgcmVjacOpbiBzZSByZWZsZWphIGVuIGVsIERPTSBkZXNwdcOpcyBkZWwgc2lndWllbnRlIGNpY2xvIGRlIGRldGVjY2nDs24gZGVcclxuICAgIC8vIGNhbWJpb3Mg4oCUIHBvciBlc28gZWwgc2Nyb2xsVG9wIHNlIGFqdXN0YSBlbiB1biBzZXRUaW1lb3V0KDApLCBubyBpbm1lZGlhdGFtZW50ZSBkZXNwdcOpcyBkZWxcclxuICAgIC8vIHB1c2gsIHBhcmEgcXVlIHNjcm9sbEhlaWdodCB5YSBpbmNsdXlhIGVsIG1lbnNhamUgYWdyZWdhZG8uXHJcbiAgICBwcml2YXRlIHNjcm9sbEFsRmluYWwoKTogdm9pZCB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRvID0gdGhpcy5tZW5zYWplc0NvbnRhaW5lcj8ubmF0aXZlRWxlbWVudDtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnRvKSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50by5zY3JvbGxUb3AgPSBlbGVtZW50by5zY3JvbGxIZWlnaHQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb2x1bW5hc0RlKHJlc3VsdGFkbzogYW55W10pOiBzdHJpbmdbXSB7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdGFkby5sZW5ndGggPyBPYmplY3Qua2V5cyhyZXN1bHRhZG9bMF0pIDogW107XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRWwgYmFja2VuZCBkZXZ1ZWx2ZSB1biBjb250ZW8gKENoYXRDb25zdWx0YUlBU2VydmljaW8uRWplY3V0YXJDb250ZW8pIGNvbW8gdW5hIHNvbGEgZmlsYSBjb25cclxuICAgIC8vIHVuYSBzb2xhIGNvbHVtbmEgbGxhbWFkYSBsaXRlcmFsbWVudGUgXCJSZXN1bHRhZG9cIiDigJQgc2UgbXVlc3RyYSBjb21vIG7Dum1lcm8gZ3JhbmRlIGVuIHZleiBkZVxyXG4gICAgLy8gY29tbyB0YWJsYSBkZSB1bmEgY2VsZGEuXHJcbiAgICBlc0NvbnRlbyhyZXN1bHRhZG86IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdGFkbz8ubGVuZ3RoID09PSAxICYmIE9iamVjdC5rZXlzKHJlc3VsdGFkb1swXSkubGVuZ3RoID09PSAxICYmICdSZXN1bHRhZG8nIGluIHJlc3VsdGFkb1swXTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBMaXN0YWRvIGNvbiB1bmEgc29sYSBjb2x1bW5hIChlai4gdW5hIGxpc3RhIGRlIG5vbWJyZXMvaWRzKSDigJQgc2UgbXVlc3RyYSBjb21vIHRleHRvIHNpbXBsZVxyXG4gICAgLy8gZW4gdmV6IGRlIHVuYSB0YWJsYSBkZSB1bmEgc29sYSBjb2x1bW5hIHJlcGV0aWRhLlxyXG4gICAgZXNMaXN0YVNpbXBsZShyZXN1bHRhZG86IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdGFkbz8ubGVuZ3RoID4gMCAmJiAhdGhpcy5lc0NvbnRlbyhyZXN1bHRhZG8pICYmIHRoaXMuY29sdW1uYXNEZShyZXN1bHRhZG8pLmxlbmd0aCA9PT0gMTtcclxuICAgIH1cclxuXHJcbiAgICB0ZXh0b0xpc3RhU2ltcGxlKHJlc3VsdGFkbzogYW55W10pOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IGNvbHVtbmEgPSB0aGlzLmNvbHVtbmFzRGUocmVzdWx0YWRvKVswXTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0YWRvLm1hcCgoZmlsYSkgPT4gZmlsYVtjb2x1bW5hXSkuam9pbignLCAnKTtcclxuICAgIH1cclxufVxyXG4iXX0=
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpc3RlbnRlLWRhdG9zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL3dtLW1lbnUvIiwic291cmNlcyI6WyJsaWIvd20tbWVudS9hc2lzdGVudGUtZGF0b3MvYXNpc3RlbnRlLWRhdG9zLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFnQnpFO0lBd0NJLGlDQUNZLHdCQUFrRCxFQUNsRCxpQkFBMkM7UUFEM0MsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQTBCO1FBdkN2RCwwRkFBMEY7UUFDMUYscUZBQXFGO1FBQzVFLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFTekIseURBQXlEO1FBQ2hELFdBQU0sR0FBRyxPQUFPLENBQUM7UUFFaEIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTNDLGFBQVEsR0FBNEIsRUFBRSxDQUFDO1FBQ3ZDLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDckIsOEZBQThGO1FBQzlGLGtHQUFrRztRQUMzRixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDM0IsbUZBQW1GO1FBQ25GLDJDQUEyQztRQUNwQywwQkFBcUIsR0FBc0IsUUFBUSxDQUFDO1FBQzNELHNGQUFzRjtRQUMvRSxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRTFCLHNGQUFzRjtRQUN0RixnR0FBZ0c7UUFDaEcsNkNBQTZDO1FBQ3RDLG1CQUFjLEdBQWE7WUFDOUIsNENBQTRDO1lBQzVDLG9EQUFvRDtZQUNwRCxvREFBb0Q7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SUFJOUU7UUFBUixLQUFLLEVBQUU7NERBQWlCO0lBR2hCO1FBQVIsS0FBSyxFQUFFOytEQUlQO0lBR1E7UUFBUixLQUFLLEVBQUU7MkRBQWtCO0lBRWhCO1FBQVQsTUFBTSxFQUFFO2lFQUF5QztJQWpCekMsdUJBQXVCO1FBTG5DLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSxvQkFBb0I7WUFDOUIsc25PQUErQzs7U0FFbEQsQ0FBQztPQUNXLHVCQUF1QixDQXlLbkM7SUFBRCw4QkFBQztDQUFBLEFBektELElBeUtDO1NBektZLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVjb25vY2ltaWVudG9Wb3pTZXJ2aWNlIH0gZnJvbSAnLi9yZWNvbm9jaW1pZW50by12b3ouc2VydmljZSc7XHJcbmltcG9ydCB7IEFzaXN0ZW50ZURhdG9zQXBpU2VydmljZSB9IGZyb20gJy4vYXNpc3RlbnRlLWRhdG9zLWFwaS5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWVuc2FqZUFzaXN0ZW50ZURhdG9zIHtcclxuICAgIGRlVXN1YXJpbzogYm9vbGVhbjtcclxuICAgIHRleHRvPzogc3RyaW5nO1xyXG4gICAgZGVzY3JpcGNpb24/OiBzdHJpbmc7XHJcbiAgICByZXN1bHRhZG8/OiBhbnlbXTtcclxuICAgIHByb3ZlZWRvcj86IHN0cmluZztcclxuICAgIGVzRXJyb3I/OiBib29sZWFuO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnd20tYXNpc3RlbnRlLWRhdG9zJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9hc2lzdGVudGUtZGF0b3MuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vYXNpc3RlbnRlLWRhdG9zLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBc2lzdGVudGVEYXRvc0NvbXBvbmVudCB7XHJcbiAgICBAVmlld0NoaWxkKCdtZW5zYWplc0NvbnRhaW5lcicpIHByaXZhdGUgbWVuc2FqZXNDb250YWluZXI/OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHJcbiAgICAvLyBMYSBhcGVydHVyYS9jaWVycmUgZGVsIHBhbmVsIGxhIGNvbnRyb2xhIGVsIHBhZHJlIChlbCBtZW7DuikuIEVsIHBhbmVsIHNvbG8gc2UgcmVuZGVyaXphXHJcbiAgICAvLyBjdWFuZG8gYGFiaWVydG9gIGVzIHRydWUgeSBhdmlzYSwgdsOtYSBgY2VycmFyQ2hhbmdlYCwgY3VhbmRvIGVsIHVzdWFyaW8gdG9jYSBsYSBYLlxyXG4gICAgQElucHV0KCkgYWJpZXJ0byA9IGZhbHNlO1xyXG5cclxuICAgIC8vIFVSTCBkZWwgUE9TVCBkZSBjb25zdWx0YS4gU2UgcmVmbGVqYSBlbiBlbCBhcGkgc2VydmljZSAocHJvcGllZGFkIGB1cmxgKSwgcXVlIGVzIGRvbmRlIHNlIHVzYS5cclxuICAgIEBJbnB1dCgpIHNldCB1cmxDb25zdWx0YXIodmFsb3I6IHN0cmluZykge1xyXG4gICAgICAgIGlmICh2YWxvcikge1xyXG4gICAgICAgICAgICB0aGlzLmFzaXN0ZW50ZURhdG9zQXBpU2VydmljZS51cmwgPSB2YWxvcjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWRpb21hIHBhcmEgZWwgcmVjb25vY2ltaWVudG8gZGUgdm96IChXZWIgU3BlZWNoIEFQSSkuXHJcbiAgICBASW5wdXQoKSBpZGlvbWEgPSAnZXMtQ08nO1xyXG5cclxuICAgIEBPdXRwdXQoKSBjZXJyYXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgcHVibGljIG1lbnNhamVzOiBNZW5zYWplQXNpc3RlbnRlRGF0b3NbXSA9IFtdO1xyXG4gICAgcHVibGljIGJvcnJhZG9yID0gJyc7XHJcbiAgICAvLyBBbHRlcm5hIGVsIGFsdG8gZGUgbGEgY2FqYSBkZWwgbWVuc2FqZSAoY29tcGFjdGEg4oaUIGV4cGFuZGlkYSksIGlndWFsIHF1ZSBlbCBcInBlZGlyIGNhbWJpb3NcIlxyXG4gICAgLy8gZGVsIGFzaXN0ZW50ZSBkZSBJQSBkZWwgZ2VuZXJhZG9yIGRlIGZvcm11bGFyaW9zICh2ZXIgZmlsYXNCb3JyYWRvciAvIG9uQ2xpY2tFeHBhbmRpckJvcnJhZG9yKS5cclxuICAgIHB1YmxpYyBib3JyYWRvckV4cGFuZGlkbyA9IGZhbHNlO1xyXG4gICAgcHVibGljIGNvbnN1bHRhbmRvID0gZmFsc2U7XHJcbiAgICAvLyBcIkdlbWluaVwiIG8gXCJHcm9xXCIg4oCUIG1pc21vIHNlbGVjdG9yIHF1ZSBlbCBhc2lzdGVudGUgZGUgZ2VuZXJhY2nDs24gZGUgZm9ybXVsYXJpb3NcclxuICAgIC8vICh2ZXIgUHJvdmVlZG9ySUFTZXJ2aWNpbyBlbiBlbCBiYWNrZW5kKS5cclxuICAgIHB1YmxpYyBwcm92ZWVkb3JTZWxlY2Npb25hZG86ICdHZW1pbmknIHwgJ0dyb3EnID0gJ0dlbWluaSc7XHJcbiAgICAvLyBEaWN0YWRvIHBvciB2b3ogKFdlYiBTcGVlY2ggQVBJKSDigJQgc2luIHNvcG9ydGUgZW4gRmlyZWZveCwgaW5jb25zaXN0ZW50ZSBlbiBTYWZhcmkuXHJcbiAgICBwdWJsaWMgZXNjdWNoYW5kbyA9IGZhbHNlO1xyXG5cclxuICAgIC8vIFByZWd1bnRhcyB5YSB2ZXJpZmljYWRhcyBjb21vIHJlc3BvbmRpYmxlcyBob3kgKHdoaXRlbGlzdCArIGNvbnRyYXRvIGRlIGxhIElBIOKAlCB2ZXJcclxuICAgIC8vIENoYXRDb25zdWx0YVdoaXRlbGlzdFNlcnZpY2lvL0NoYXRDb25zdWx0YVByb21wdFNlcnZpY2lvIGVuIGVsIGJhY2tlbmQpLCBtb3N0cmFkYXMgY29tbyBjaGlwc1xyXG4gICAgLy8gZGUgc3VnZXJlbmNpYSBlbiBlbCBlc3RhZG8gdmFjw61vIGRlbCBjaGF0LlxyXG4gICAgcHVibGljIGNoaXBzU3VnZXJpZG9zOiBzdHJpbmdbXSA9IFtcclxuICAgICAgICAnwr9DdcOhbnRvcyBmb3JtdWxhcmlvcyBzZSBkaWxpZ2VuY2lhcm9uIGhveT8nLFxyXG4gICAgICAgICfCv0N1w6FudG9zIGZvcm11bGFyaW9zIHNlIGRpbGlnZW5jaWFyb24gZXN0YSBzZW1hbmE/JyxcclxuICAgICAgICAnTXXDqXN0cmFtZSBsb3Mgw7psdGltb3MgMTAgZm9ybXVsYXJpb3MgZGlsaWdlbmNpYWRvcycsXHJcbiAgICBdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgYXNpc3RlbnRlRGF0b3NBcGlTZXJ2aWNlOiBBc2lzdGVudGVEYXRvc0FwaVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWNvbm9jaW1pZW50b1ZvejogUmVjb25vY2ltaWVudG9Wb3pTZXJ2aWNlXHJcbiAgICApIHt9XHJcblxyXG4gICAgLy8gRWwgcGFkcmUgYWJyZS9jaWVycmEgZWwgcGFuZWw7IGFxdcOtIHNvbG8gc2UgYXZpc2EgcXVlIGVsIHVzdWFyaW8gcGlkacOzIGNlcnJhcmxvIChib3TDs24gWCkuXHJcbiAgICBjZXJyYXIoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jZXJyYXJDaGFuZ2UuZW1pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENhamEgZGVsIG1lbnNhamUgY29tcGFjdGEgKDEgZmlsYSwgY29tbyBlcmEgZWwgY2hhdCBvcmlnaW5hbG1lbnRlKSDihpQgZXhwYW5kaWRhICg2IGZpbGFzKS5cclxuICAgIC8vIEVsIGJvdMOzbiBkZSBleHBhbmRpciBlcyBlbCBtaXNtbyBwYXRyw7NuIGRlbCBcInBlZGlyIGNhbWJpb3NcIiBkZWwgZ2VuZXJhZG9yLlxyXG4gICAgZ2V0IGZpbGFzQm9ycmFkb3IoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5ib3JyYWRvckV4cGFuZGlkbyA/IDYgOiAxO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2xpY2tFeHBhbmRpckJvcnJhZG9yKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuYm9ycmFkb3JFeHBhbmRpZG8gPSAhdGhpcy5ib3JyYWRvckV4cGFuZGlkbztcclxuICAgIH1cclxuXHJcbiAgICBnZXQgbWljRGlzcG9uaWJsZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZWNvbm9jaW1pZW50b1Zvei5lc3RhU29wb3J0YWRvKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DbGlja01pY3JvZm9ubygpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5lc2N1Y2hhbmRvKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVjb25vY2ltaWVudG9Wb3ouZGV0ZW5lcigpO1xyXG4gICAgICAgICAgICB0aGlzLmVzY3VjaGFuZG8gPSBmYWxzZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnJlY29ub2NpbWllbnRvVm96LmVzdGFTb3BvcnRhZG8oKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBFbCByZXN1bHRhZG8gZGVsIHJlY29ub2NpbWllbnRvIG5vIGluY2x1eWUgbG8gcXVlIHlhIGVzdGFiYSBlc2NyaXRvIOKAlCBzZSBndWFyZGEgYW50ZXMgZGVcclxuICAgICAgICAvLyBlbXBlemFyIHkgc2UgYW50ZXBvbmUgZW4gY2FkYSBhY3R1YWxpemFjacOzbiAocXVlIGxsZWdhIGNvbiBsYSB0cmFuc2NyaXBjacOzbiBDT01QTEVUQSBkZVxyXG4gICAgICAgIC8vIGVzdGEgc2VzacOzbiBkZSBlc2N1Y2hhLCBubyB1biBpbmNyZW1lbnRvKSBwYXJhIG5vIHBlcmRlciBsbyBxdWUgeWEgaGFiw61hIGVuIGVsIGNhbXBvLlxyXG4gICAgICAgIGNvbnN0IHRleHRvUHJldmlvID0gdGhpcy5ib3JyYWRvci50cmltKCk7XHJcbiAgICAgICAgdGhpcy5lc2N1Y2hhbmRvID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlY29ub2NpbWllbnRvVm96LmluaWNpYXIoXHJcbiAgICAgICAgICAgIHRoaXMuaWRpb21hLFxyXG4gICAgICAgICAgICAodGV4dG8pID0+ICh0aGlzLmJvcnJhZG9yID0gdGV4dG9QcmV2aW8gPyBgJHt0ZXh0b1ByZXZpb30gJHt0ZXh0b31gIDogdGV4dG8pLFxyXG4gICAgICAgICAgICAoKSA9PiAodGhpcy5lc2N1Y2hhbmRvID0gZmFsc2UpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNsaWNrRW52aWFyKHRleHRvUHJlc2V0Pzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgcHJlZ3VudGEgPSAodGV4dG9QcmVzZXQgPz8gdGhpcy5ib3JyYWRvcikudHJpbSgpO1xyXG4gICAgICAgIGlmICghcHJlZ3VudGEgfHwgdGhpcy5jb25zdWx0YW5kbykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm1lbnNhamVzLnB1c2goeyBkZVVzdWFyaW86IHRydWUsIHRleHRvOiBwcmVndW50YSB9KTtcclxuICAgICAgICB0aGlzLmJvcnJhZG9yID0gJyc7XHJcblxyXG4gICAgICAgIC8vIFNpbiB1cmwgZGUgY29uc3VsdGEgbm8gc2UgaGFjZSBsYSBwZXRpY2nDs246IGVsIHVzdWFyaW8gdmUgZWwgbWlzbW8gZXJyb3IgZ2Vuw6lyaWNvIHF1ZVxyXG4gICAgICAgIC8vIGN1YW5kbyBsYSBBUEkgZmFsbGEuXHJcbiAgICAgICAgaWYgKCF0aGlzLmFzaXN0ZW50ZURhdG9zQXBpU2VydmljZS51cmwpIHtcclxuICAgICAgICAgICAgdGhpcy5tZW5zYWplcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGRlVXN1YXJpbzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICB0ZXh0bzogJ05vIHNlIHB1ZG8gcHJvY2VzYXIgbGEgY29uc3VsdGEuJyxcclxuICAgICAgICAgICAgICAgIGVzRXJyb3I6IHRydWUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnNjcm9sbEFsRmluYWwoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jb25zdWx0YW5kbyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxBbEZpbmFsKCk7XHJcblxyXG4gICAgICAgIHRoaXMuYXNpc3RlbnRlRGF0b3NBcGlTZXJ2aWNlLmNvbnN1bHRhcihwcmVndW50YSwgdGhpcy5wcm92ZWVkb3JTZWxlY2Npb25hZG8pLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIC8vIEVsIHRpcG8gKFJlc3B1ZXN0YUFzaXN0ZW50ZURhdG9zKSBzZSBpbmZpZXJlIGRlbCBPYnNlcnZhYmxlOiBpbXBvcnRhciBsYSBpbnRlcmZhelxyXG4gICAgICAgICAgICAvLyBkZWphYmEgdW4gaW1wb3J0IGEgdW4gc8OtbWJvbG8gaW5leGlzdGVudGUgZW4gZWwgSlMgZGUgbGEgbGlicmVyw61hIChhdmlzbyBkZSByb2xsdXApLlxyXG4gICAgICAgICAgICBuZXh0OiAocmVzcHVlc3RhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnN1bHRhbmRvID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnNhamVzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIGRlVXN1YXJpbzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcGNpb246IHJlc3B1ZXN0YS5EZXNjcmlwY2lvbixcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHRhZG86IHJlc3B1ZXN0YS5SZXN1bHRhZG8gPz8gW10sXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvdmVlZG9yOiByZXNwdWVzdGEuUHJvdmVlZG9yLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbEFsRmluYWwoKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb25zdWx0YW5kbyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tZW5zYWplcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICBkZVVzdWFyaW86IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIHRleHRvOiBlcnJvcj8uTWVuc2FqZSB8fCAnTm8gc2UgcHVkbyBwcm9jZXNhciBsYSBjb25zdWx0YS4nLFxyXG4gICAgICAgICAgICAgICAgICAgIGVzRXJyb3I6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsQWxGaW5hbCgpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEVsIG51ZXZvIG1lbnNhamUgcmVjacOpbiBzZSByZWZsZWphIGVuIGVsIERPTSBkZXNwdcOpcyBkZWwgc2lndWllbnRlIGNpY2xvIGRlIGRldGVjY2nDs24gZGVcclxuICAgIC8vIGNhbWJpb3Mg4oCUIHBvciBlc28gZWwgc2Nyb2xsVG9wIHNlIGFqdXN0YSBlbiB1biBzZXRUaW1lb3V0KDApLCBubyBpbm1lZGlhdGFtZW50ZSBkZXNwdcOpcyBkZWxcclxuICAgIC8vIHB1c2gsIHBhcmEgcXVlIHNjcm9sbEhlaWdodCB5YSBpbmNsdXlhIGVsIG1lbnNhamUgYWdyZWdhZG8uXHJcbiAgICBwcml2YXRlIHNjcm9sbEFsRmluYWwoKTogdm9pZCB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRvID0gdGhpcy5tZW5zYWplc0NvbnRhaW5lcj8ubmF0aXZlRWxlbWVudDtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnRvKSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50by5zY3JvbGxUb3AgPSBlbGVtZW50by5zY3JvbGxIZWlnaHQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb2x1bW5hc0RlKHJlc3VsdGFkbzogYW55W10pOiBzdHJpbmdbXSB7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdGFkby5sZW5ndGggPyBPYmplY3Qua2V5cyhyZXN1bHRhZG9bMF0pIDogW107XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRWwgYmFja2VuZCBkZXZ1ZWx2ZSB1biBjb250ZW8gKENoYXRDb25zdWx0YUlBU2VydmljaW8uRWplY3V0YXJDb250ZW8pIGNvbW8gdW5hIHNvbGEgZmlsYSBjb25cclxuICAgIC8vIHVuYSBzb2xhIGNvbHVtbmEgbGxhbWFkYSBsaXRlcmFsbWVudGUgXCJSZXN1bHRhZG9cIiDigJQgc2UgbXVlc3RyYSBjb21vIG7Dum1lcm8gZ3JhbmRlIGVuIHZleiBkZVxyXG4gICAgLy8gY29tbyB0YWJsYSBkZSB1bmEgY2VsZGEuXHJcbiAgICBlc0NvbnRlbyhyZXN1bHRhZG86IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdGFkbz8ubGVuZ3RoID09PSAxICYmIE9iamVjdC5rZXlzKHJlc3VsdGFkb1swXSkubGVuZ3RoID09PSAxICYmICdSZXN1bHRhZG8nIGluIHJlc3VsdGFkb1swXTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBMaXN0YWRvIGNvbiB1bmEgc29sYSBjb2x1bW5hIChlai4gdW5hIGxpc3RhIGRlIG5vbWJyZXMvaWRzKSDigJQgc2UgbXVlc3RyYSBjb21vIHRleHRvIHNpbXBsZVxyXG4gICAgLy8gZW4gdmV6IGRlIHVuYSB0YWJsYSBkZSB1bmEgc29sYSBjb2x1bW5hIHJlcGV0aWRhLlxyXG4gICAgZXNMaXN0YVNpbXBsZShyZXN1bHRhZG86IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdGFkbz8ubGVuZ3RoID4gMCAmJiAhdGhpcy5lc0NvbnRlbyhyZXN1bHRhZG8pICYmIHRoaXMuY29sdW1uYXNEZShyZXN1bHRhZG8pLmxlbmd0aCA9PT0gMTtcclxuICAgIH1cclxuXHJcbiAgICB0ZXh0b0xpc3RhU2ltcGxlKHJlc3VsdGFkbzogYW55W10pOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IGNvbHVtbmEgPSB0aGlzLmNvbHVtbmFzRGUocmVzdWx0YWRvKVswXTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0YWRvLm1hcCgoZmlsYSkgPT4gZmlsYVtjb2x1bW5hXSkuam9pbignLCAnKTtcclxuICAgIH1cclxufVxyXG4iXX0=