general-library-union 2.4.93 → 2.4.95

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/esm2022/public-api.mjs +3 -1
  2. package/esm2022/src/app/core/componentes/footer/footer.component.mjs +6 -12
  3. package/esm2022/src/app/core/componentes/inicio-component/inicio-component.component.mjs +3 -3
  4. package/esm2022/src/app/core/plantilla-general/plantilla-general.template.mjs +3 -3
  5. package/esm2022/src/app/layout/app.footer.component.mjs +7 -10
  6. package/esm2022/src/app/layout/app.sidebar.component.mjs +3 -3
  7. package/esm2022/src/app/layout/app.topbar.component.mjs +3 -3
  8. package/esm2022/src/app/publico/pages/login/login.page.mjs +4 -7
  9. package/esm2022/src/app/publico/pages/not-found/not-found.page.mjs +3 -3
  10. package/esm2022/src/app/publico/pages/timeout/timeout.page.mjs +3 -3
  11. package/esm2022/src/app/seguridad/constantes/ReporteEntradaConstantes.mjs +19 -0
  12. package/esm2022/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.mjs +3 -3
  13. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.mjs +138 -18
  14. package/esm2022/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.mjs +89 -36
  15. package/esm2022/src/app/webcommon/pipes/dashboard.pipe.mjs +86 -0
  16. package/esm2022/src/app/webcommon/pipes/general.pipe.mjs +26 -17
  17. package/esm2022/src/app/webcommon/pipes/reporte-fuente.pipe.mjs +6 -1
  18. package/esm2022/src/app/webcommon/popups/popup-recurso/popup-recurso.component.mjs +7 -6
  19. package/esm2022/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.mjs +71 -19
  20. package/esm2022/src/app/webcommon/services/dashboard.service.mjs +253 -0
  21. package/esm2022/src/app/webcommon/services/ejecucionreporte.service.mjs +27 -27
  22. package/esm2022/src/app/webcommon/services/fechaUtils.service.mjs +18 -18
  23. package/esm2022/src/environments/environment.mjs +2 -2
  24. package/fesm2022/general-library-union.mjs +734 -170
  25. package/fesm2022/general-library-union.mjs.map +1 -1
  26. package/package.json +1 -1
  27. package/public-api.d.ts +2 -0
  28. package/src/app/core/componentes/footer/footer.component.d.ts +1 -3
  29. package/src/app/layout/app.footer.component.d.ts +1 -3
  30. package/src/app/seguridad/constantes/ReporteEntradaConstantes.d.ts +7 -0
  31. package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.d.ts +25 -1
  32. package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.d.ts +1 -1
  33. package/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.d.ts +13 -3
  34. package/src/app/webcommon/pipes/dashboard.pipe.d.ts +48 -0
  35. package/src/app/webcommon/pipes/general.pipe.d.ts +11 -2
  36. package/src/app/webcommon/pipes/reporte-fuente.pipe.d.ts +4 -0
  37. package/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.d.ts +12 -2
  38. package/src/app/webcommon/services/dashboard.service.d.ts +27 -0
  39. package/src/app/webcommon/services/ejecucionreporte.service.d.ts +4 -4
  40. package/src/app/webcommon/services/fechaUtils.service.d.ts +3 -2
  41. package/src/assets/images/imagen-principal-sam.png +0 -0
  42. package/src/assets/images/imagen-principal-sara.png +0 -0
  43. package/src/assets/images/imagen-principal-seguridad.png +0 -0
  44. package/src/assets/images/logo-aps-descomprimido.png +0 -0
  45. package/src/assets/images/logo-aps.png +0 -0
  46. package/src/assets/images/logo-icono-aps.png +0 -0
  47. package/src/assets/images/logo-icono-sam.png +0 -0
  48. package/src/assets/images/logo-icono-sara.png +0 -0
  49. package/src/assets/images/logo-icono-seguridad.png +0 -0
  50. package/src/assets/images/logo-sam-descomprimido.png +0 -0
  51. package/src/assets/images/logo-sam.png +0 -0
  52. package/src/assets/images/logo-samanta-descomprimido.png +0 -0
  53. package/src/assets/images/logo-samanta.png +0 -0
  54. package/src/assets/images/logo-sara-descomprimido.png +0 -0
  55. package/src/assets/images/logo-sara.png +0 -0
  56. package/src/assets/images/logo-seguridad-descomprimido.png +0 -0
  57. package/src/assets/images/logo-seguridad.png +0 -0
  58. package/src/assets/images/logo-union-simple.png +0 -0
  59. package/src/assets/images/not-found-fondo.png +0 -0
  60. package/src/assets/images/not-found.png +0 -0
  61. package/src/assets/images/texto-union-soluciones.png +0 -0
  62. package/src/assets/images/timeout.png +0 -0
  63. package/src/assets/layout/styles/layout/topbar/_topbar_main.scss +1 -1
  64. package/src/assets/layout/styles/theme/designer/components/input/_inputtext.scss +2 -1
  65. package/src/assets/layout/styles/theme/designer/components/menu/_steps.scss +3 -3
  66. package/src/assets/layout/styles/theme/extensions/_steps.scss +4 -4
  67. package/src/assets/layout/styles/theme/theme-dark/_variables.scss +2 -1
  68. package/src/assets/layout/styles/theme/theme-light/_variables.scss +2 -1
  69. package/src/styles/primeng/sass/overrides/_theme_styles.scss +45 -14
  70. package/src/styles/primeng/sass/overrides/_theme_styles_dark.scss +41 -16
  71. package/src/styles/primeng/sass/theme/designer/components/input/_inputtext.scss +2 -1
  72. package/src/styles/primeng/sass/theme/extensions/_steps.scss +6 -4
  73. /package/src/assets/images/{chrorme.png → navegador-chrome.png} +0 -0
  74. /package/src/assets/images/{Explorer.png → navegador-explorer.png} +0 -0
  75. /package/src/assets/images/{firefox.png → navegador-firefox.png} +0 -0
@@ -1,24 +1,36 @@
1
- import { Component, EventEmitter, Output } from '@angular/core';
1
+ import { Component, EventEmitter, Output, ViewChild } from '@angular/core';
2
2
  import { ObjetoReporteModel } from '../../../seguridad/modelos/ObjetoReporteModel';
3
3
  import { ConstantesGenerales } from '../../../seguridad/constantes/ConstantesGenerales';
4
4
  import { TablaGeneralComponent } from '../../../core/componentes/tabla-general/tabla-general.component';
5
5
  import { DialogModule } from 'primeng/dialog';
6
6
  import { TranslateModule, TranslatePipe } from '@ngx-translate/core';
7
- import { MessageService } from 'primeng/api';
7
+ import { ConfirmationService, MessageService } from 'primeng/api';
8
8
  import { FormsModule, ReactiveFormsModule } from '@angular/forms';
9
9
  import { FiltroGeneralComponent } from '../../../core/componentes/filtro-general/filtro-general.component';
10
10
  import { InputTextModule } from 'primeng/inputtext';
11
+ import { TableModule } from 'primeng/table';
12
+ import { CheckboxModule } from 'primeng/checkbox';
13
+ import { ButtonDirective, ButtonModule } from 'primeng/button';
14
+ import { ConfirmDialogModule } from 'primeng/confirmdialog';
11
15
  import * as i0 from "@angular/core";
12
- import * as i1 from "../../services/reportes.service";
13
- import * as i2 from "../../../core/servicios/utils.service";
14
- import * as i3 from "@ngx-translate/core";
15
- import * as i4 from "primeng/inputtext";
16
- import * as i5 from "@angular/forms";
17
- import * as i6 from "primeng/dialog";
16
+ import * as i1 from "primeng/api";
17
+ import * as i2 from "../../services/reportes.service";
18
+ import * as i3 from "../../../core/servicios/utils.service";
19
+ import * as i4 from "@ngx-translate/core";
20
+ import * as i5 from "./../../../core/servicios/toast.service";
21
+ import * as i6 from "primeng/confirmdialog";
22
+ import * as i7 from "primeng/button";
23
+ import * as i8 from "primeng/checkbox";
24
+ import * as i9 from "primeng/table";
25
+ import * as i10 from "primeng/inputtext";
26
+ import * as i11 from "@angular/forms";
27
+ import * as i12 from "primeng/dialog";
18
28
  export class PopupTablasFuenteComponent {
29
+ confirmationService;
19
30
  reportesSvc;
20
31
  utilsService;
21
32
  translateService;
33
+ notificationBusService;
22
34
  paginadorTablas = [];
23
35
  filtroTabla;
24
36
  visible;
@@ -28,13 +40,17 @@ export class PopupTablasFuenteComponent {
28
40
  rows: 10,
29
41
  totalRecords: 0,
30
42
  };
43
+ seleccionGeneral;
31
44
  loading;
32
45
  columns = [];
46
+ tablaGeneral;
33
47
  aplicarDestinoOcultar = new EventEmitter();
34
- constructor(reportesSvc, utilsService, translateService) {
48
+ constructor(confirmationService, reportesSvc, utilsService, translateService, notificationBusService) {
49
+ this.confirmationService = confirmationService;
35
50
  this.reportesSvc = reportesSvc;
36
51
  this.utilsService = utilsService;
37
52
  this.translateService = translateService;
53
+ this.notificationBusService = notificationBusService;
38
54
  this.columns = [
39
55
  {
40
56
  field: 'objeto',
@@ -49,14 +65,16 @@ export class PopupTablasFuenteComponent {
49
65
  matchMode: 'contains',
50
66
  }
51
67
  ];
68
+ this.load(null);
69
+ }
70
+ cargaLazy(event) {
71
+ this.tablaGeneral.filterGlobal(this.filtroTabla, 'contains');
52
72
  }
53
73
  async load(event) {
54
74
  try {
55
75
  this.loading = true;
56
76
  this.colocarFiltro();
57
- this.filtro.paginacionRegistroInicial = event?.first != null ? event?.first : 0,
58
- this.filtro.paginacionRegistroFinal = event?.rows != null ? event?.rows : 10,
59
- this.paginadorTablas = await this.reportesSvc.getObjetos(this.filtro).toPromise();
77
+ this.paginadorTablas = await this.reportesSvc.getObjetos(this.filtro).toPromise();
60
78
  this.paginator.totalRecords = await this.reportesSvc.getCantidadObjetos(this.filtro).toPromise();
61
79
  }
62
80
  catch (e) {
@@ -79,9 +97,13 @@ export class PopupTablasFuenteComponent {
79
97
  console.error(e);
80
98
  }
81
99
  }
82
- seleccionarTabla(evento) {
100
+ seleccionarTabla() {
83
101
  try {
84
- let tablaSeleccionada = evento.objeto;
102
+ let tablaSeleccionada = this.paginadorTablas.filter(data => data.check == true);
103
+ if (tablaSeleccionada.length == 0) {
104
+ this.notificationBusService.showWarning('Seleccione por lo menos un registro');
105
+ return;
106
+ }
85
107
  this.aplicarDestinoOcultar.emit(tablaSeleccionada);
86
108
  this.ocultarPopup();
87
109
  }
@@ -95,13 +117,43 @@ export class PopupTablasFuenteComponent {
95
117
  ocultarPopup() {
96
118
  this.visible = false;
97
119
  }
98
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: PopupTablasFuenteComponent, deps: [{ token: i1.ReportesService }, { token: i2.UtilsService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
99
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: PopupTablasFuenteComponent, isStandalone: true, selector: "app-popup-tablas-fuente", outputs: { aplicarDestinoOcultar: "aplicarDestinoOcultar" }, providers: [TranslatePipe, MessageService], ngImport: i0, template: "<p-dialog id='popupunidadesvigentesplanta' header=\"{{'unidad' | translate}} {{'organizacional' | translate}}\"\n [(visible)]=\"visible\" [breakpoints]=\"{'960px': '75vw', '640px': '100vw'}\" [style]=\"{width: '50vw'}\"\n (onHide)=\"ocultarPopup()\" [modal]=\"true\">\n <div class=\"flex justify-content-start align-items-center mb-3\">\n <app-filtro-general [filtros]=\"filters\" [datatable]=\"tablaGeneral\">\n <ng-template let-form>\n <ng-container [formGroup]=\"form\">\n <span class=\"p-float-label\">\n <input pInputText autofocus type=\"text\" id=\"descripcion\" formControlName=\"descripcion\" [(ngModel)]=\"filtroTabla\"\n autocomplete=\"off\" />\n <label for=\"descripcion\">{{'filtro' | translate}}</label>\n </span>\n </ng-container>\n </ng-template>\n </app-filtro-general>\n \n </div>\n <app-tabla-general #tablaGeneral [columns]=\"columns\" [value]=\"paginadorTablas\" [rows]=\"paginator.rows\"\n [totalRecords]=\"paginator.totalRecords\" (onLoad)=\"load($event)\" (onRowSelect)=\"seleccionarTabla($event)\"\n [loading]=\"loading\"></app-tabla-general>\n </p-dialog>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i4.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: TablaGeneralComponent, selector: "app-tabla-general", inputs: ["dataKey", "value", "columns", "rows", "totalRecords", "loading", "ocultarFraccionador"], outputs: ["onLoad", "onRowSelect"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i6.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: FiltroGeneralComponent, selector: "app-filtro-general", inputs: ["filtros", "datatable"], outputs: ["metodoRegresar", "metodoRegresarAdicional"] }] });
120
+ todosSeleccionados() {
121
+ return this.paginadorTablas.every(elemento => elemento.check);
122
+ }
123
+ actualizarSeleccion(booleanogeneral) {
124
+ if (booleanogeneral) {
125
+ this.confirmationService.confirm({
126
+ target: event?.target,
127
+ message: 'Desea seleccionar todos los registros?',
128
+ acceptLabel: 'Si',
129
+ key: 'eliminar',
130
+ header: 'Confirmar',
131
+ accept: () => {
132
+ this.paginadorTablas.forEach((elemento) => {
133
+ elemento.check = booleanogeneral;
134
+ });
135
+ },
136
+ reject: () => {
137
+ this.seleccionGeneral = false;
138
+ }
139
+ });
140
+ }
141
+ else {
142
+ this.paginadorTablas.forEach((elemento) => {
143
+ elemento.check = booleanogeneral;
144
+ });
145
+ }
146
+ }
147
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: PopupTablasFuenteComponent, deps: [{ token: i1.ConfirmationService }, { token: i2.ReportesService }, { token: i3.UtilsService }, { token: i4.TranslateService }, { token: i5.ToastService }], target: i0.ɵɵFactoryTarget.Component });
148
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: PopupTablasFuenteComponent, isStandalone: true, selector: "app-popup-tablas-fuente", outputs: { aplicarDestinoOcultar: "aplicarDestinoOcultar" }, providers: [TranslatePipe, MessageService, ConfirmationService], viewQueries: [{ propertyName: "tablaGeneral", first: true, predicate: ["tablaGeneral"], descendants: true }], ngImport: i0, template: "<p-confirmDialog #cd key=\"eliminar\">\n <ng-template pTemplate=\"footer\">\n <div class=\"mt-3\">\n <button type=\"button\"\n class=\"p-button-outlined-button-secondary p-button-outlined p-button p-component\" pButton\n icon=\"pi pi-times\" label=\"No\" (click)=\"cd.reject()\"></button>\n <button type=\"button\" pButton icon=\"pi pi-check\" label=\"Si\" class=\"p-button-raised\"\n (click)=\"cd.accept()\"></button>\n </div>\n </ng-template>\n</p-confirmDialog>\n<p-dialog id='popupfuenteTablas' header=\"{{'fuente' | translate}}\"\n [(visible)]=\"visible\" [breakpoints]=\"{'960px': '75vw', '640px': '100vw'}\" [style]=\"{width: '50vw'}\"\n (onHide)=\"ocultarPopup()\" [modal]=\"true\">\n <div class=\"flex justify-content-between align-items-center mb-3\">\n <app-filtro-general [filtros]=\"filters\" (metodoRegresar)=\"cargaLazy($event)\"> \n <ng-template let-form>\n <ng-container [formGroup]=\"form\">\n <span class=\"p-float-label\">\n <input pInputText autofocus type=\"text\" id=\"descripcion\" formControlName=\"descripcion\" [(ngModel)]=\"filtroTabla\"\n autocomplete=\"off\" />\n <label for=\"descripcion\">{{'filtro' | translate}}</label>\n </span>\n </ng-container>\n </ng-template>\n </app-filtro-general>\n \n <button pButton pRipple class=\"ml-2 p-ripple p-element p-button p-component p-button-secondary\"\n icon=\"pi pi-plus\" label=\"{{'adicionar' | translate}}\"\n (click)=\"seleccionarTabla()\">\n </button>\n\n </div>\n \n <p-table #tablaGeneral id=\"tabla_lista_tipo_entidad\" [value]=\"paginadorTablas\" [scrollable]=\"true\"\n [totalRecords]=\"paginadorTablas.length\" scrollDirection=\"both\" scrollDirection=\"horizontal\"\n responsiveLayout=\"scroll\" scrollDirection=\"horizontal\" [paginator]=\"paginadorTablas.length > 10\"\n [rows]=\"10\" styleClass=\"p-datatable-striped\"\n [showCurrentPageReport]=\"true\" editMode=\"row\" [globalFilterFields]=\"['objeto']\"\n currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\"\n dataKey=\"alias\">\n <ng-template pTemplate=\"header\">\n <tr>\n <th style=\"width:25%\" alignFrozen=\"left\" pFrozenColumn>\n <p-checkbox [style]=\"{'margin-left': '1%','margin-right':'1%'}\"\n [(ngModel)]=\"seleccionGeneral\" [binary]=\"true\" [ngModel]=\"todosSeleccionados()\"\n (ngModelChange)=\"actualizarSeleccion($event)\"></p-checkbox>\n <span style=\"margin-left:1%\">{{'tabla' | translate}}</span>\n </th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-tabla>\n <tr>\n <td style=\"width:25%\">\n <p-checkbox class=\"mr-2 \" [(ngModel)]=\"tabla.check\" [binary]=\"true\" inputId=\"binary\">\n </p-checkbox>\n {{tabla.objeto}}\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr class=\"p-3 font-medium emptymessage\">\n <td colspan=\"5\">\n {{'mensajetablavacia' | translate}}\n </td>\n </tr>\n </ng-template>\n</p-table>\n\n\n </p-dialog>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: ConfirmDialogModule }, { kind: "component", type: i6.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }, { kind: "directive", type: i7.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "directive", type: i1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: CheckboxModule }, { kind: "component", type: i8.Checkbox, selector: "p-checkbox", inputs: ["value", "name", "disabled", "binary", "label", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "styleClass", "labelStyleClass", "formControl", "checkboxIcon", "readonly", "required", "autofocus", "trueValue", "falseValue", "variant"], outputs: ["onChange", "onFocus", "onBlur"] }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i9.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i9.FrozenColumn, selector: "[pFrozenColumn]", inputs: ["frozen", "alignFrozen"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i10.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i11.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i11.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i11.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i11.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i11.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i12.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "component", type: FiltroGeneralComponent, selector: "app-filtro-general", inputs: ["filtros", "datatable"], outputs: ["metodoRegresar", "metodoRegresarAdicional"] }] });
100
149
  }
101
150
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: PopupTablasFuenteComponent, decorators: [{
102
151
  type: Component,
103
- args: [{ selector: 'app-popup-tablas-fuente', standalone: true, imports: [InputTextModule, ReactiveFormsModule, FormsModule, TablaGeneralComponent, DialogModule, DialogModule, TranslateModule, FiltroGeneralComponent], providers: [TranslatePipe, MessageService], template: "<p-dialog id='popupunidadesvigentesplanta' header=\"{{'unidad' | translate}} {{'organizacional' | translate}}\"\n [(visible)]=\"visible\" [breakpoints]=\"{'960px': '75vw', '640px': '100vw'}\" [style]=\"{width: '50vw'}\"\n (onHide)=\"ocultarPopup()\" [modal]=\"true\">\n <div class=\"flex justify-content-start align-items-center mb-3\">\n <app-filtro-general [filtros]=\"filters\" [datatable]=\"tablaGeneral\">\n <ng-template let-form>\n <ng-container [formGroup]=\"form\">\n <span class=\"p-float-label\">\n <input pInputText autofocus type=\"text\" id=\"descripcion\" formControlName=\"descripcion\" [(ngModel)]=\"filtroTabla\"\n autocomplete=\"off\" />\n <label for=\"descripcion\">{{'filtro' | translate}}</label>\n </span>\n </ng-container>\n </ng-template>\n </app-filtro-general>\n \n </div>\n <app-tabla-general #tablaGeneral [columns]=\"columns\" [value]=\"paginadorTablas\" [rows]=\"paginator.rows\"\n [totalRecords]=\"paginator.totalRecords\" (onLoad)=\"load($event)\" (onRowSelect)=\"seleccionarTabla($event)\"\n [loading]=\"loading\"></app-tabla-general>\n </p-dialog>\n" }]
104
- }], ctorParameters: () => [{ type: i1.ReportesService }, { type: i2.UtilsService }, { type: i3.TranslateService }], propDecorators: { aplicarDestinoOcultar: [{
152
+ args: [{ selector: 'app-popup-tablas-fuente', standalone: true, imports: [ConfirmDialogModule, ButtonModule, ButtonDirective, TranslateModule, CheckboxModule, TableModule, InputTextModule, ReactiveFormsModule, FormsModule, TablaGeneralComponent, DialogModule, DialogModule, TranslateModule, FiltroGeneralComponent], providers: [TranslatePipe, MessageService, ConfirmationService], template: "<p-confirmDialog #cd key=\"eliminar\">\n <ng-template pTemplate=\"footer\">\n <div class=\"mt-3\">\n <button type=\"button\"\n class=\"p-button-outlined-button-secondary p-button-outlined p-button p-component\" pButton\n icon=\"pi pi-times\" label=\"No\" (click)=\"cd.reject()\"></button>\n <button type=\"button\" pButton icon=\"pi pi-check\" label=\"Si\" class=\"p-button-raised\"\n (click)=\"cd.accept()\"></button>\n </div>\n </ng-template>\n</p-confirmDialog>\n<p-dialog id='popupfuenteTablas' header=\"{{'fuente' | translate}}\"\n [(visible)]=\"visible\" [breakpoints]=\"{'960px': '75vw', '640px': '100vw'}\" [style]=\"{width: '50vw'}\"\n (onHide)=\"ocultarPopup()\" [modal]=\"true\">\n <div class=\"flex justify-content-between align-items-center mb-3\">\n <app-filtro-general [filtros]=\"filters\" (metodoRegresar)=\"cargaLazy($event)\"> \n <ng-template let-form>\n <ng-container [formGroup]=\"form\">\n <span class=\"p-float-label\">\n <input pInputText autofocus type=\"text\" id=\"descripcion\" formControlName=\"descripcion\" [(ngModel)]=\"filtroTabla\"\n autocomplete=\"off\" />\n <label for=\"descripcion\">{{'filtro' | translate}}</label>\n </span>\n </ng-container>\n </ng-template>\n </app-filtro-general>\n \n <button pButton pRipple class=\"ml-2 p-ripple p-element p-button p-component p-button-secondary\"\n icon=\"pi pi-plus\" label=\"{{'adicionar' | translate}}\"\n (click)=\"seleccionarTabla()\">\n </button>\n\n </div>\n \n <p-table #tablaGeneral id=\"tabla_lista_tipo_entidad\" [value]=\"paginadorTablas\" [scrollable]=\"true\"\n [totalRecords]=\"paginadorTablas.length\" scrollDirection=\"both\" scrollDirection=\"horizontal\"\n responsiveLayout=\"scroll\" scrollDirection=\"horizontal\" [paginator]=\"paginadorTablas.length > 10\"\n [rows]=\"10\" styleClass=\"p-datatable-striped\"\n [showCurrentPageReport]=\"true\" editMode=\"row\" [globalFilterFields]=\"['objeto']\"\n currentPageReportTemplate=\"{first} al {last} de {totalRecords} registros\"\n dataKey=\"alias\">\n <ng-template pTemplate=\"header\">\n <tr>\n <th style=\"width:25%\" alignFrozen=\"left\" pFrozenColumn>\n <p-checkbox [style]=\"{'margin-left': '1%','margin-right':'1%'}\"\n [(ngModel)]=\"seleccionGeneral\" [binary]=\"true\" [ngModel]=\"todosSeleccionados()\"\n (ngModelChange)=\"actualizarSeleccion($event)\"></p-checkbox>\n <span style=\"margin-left:1%\">{{'tabla' | translate}}</span>\n </th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-tabla>\n <tr>\n <td style=\"width:25%\">\n <p-checkbox class=\"mr-2 \" [(ngModel)]=\"tabla.check\" [binary]=\"true\" inputId=\"binary\">\n </p-checkbox>\n {{tabla.objeto}}\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr class=\"p-3 font-medium emptymessage\">\n <td colspan=\"5\">\n {{'mensajetablavacia' | translate}}\n </td>\n </tr>\n </ng-template>\n</p-table>\n\n\n </p-dialog>\n" }]
153
+ }], ctorParameters: () => [{ type: i1.ConfirmationService }, { type: i2.ReportesService }, { type: i3.UtilsService }, { type: i4.TranslateService }, { type: i5.ToastService }], propDecorators: { tablaGeneral: [{
154
+ type: ViewChild,
155
+ args: ['tablaGeneral']
156
+ }], aplicarDestinoOcultar: [{
105
157
  type: Output
106
158
  }] } });
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wdXAtdGFibGFzLWZ1ZW50ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3dlYmNvbW1vbi9wb3B1cHMvcG9wdXAtdGFibGFzLWZ1ZW50ZS9wb3B1cC10YWJsYXMtZnVlbnRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvd2ViY29tbW9uL3BvcHVwcy9wb3B1cC10YWJsYXMtZnVlbnRlL3BvcHVwLXRhYmxhcy1mdWVudGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRW5GLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBRXhGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBb0IsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQztBQUMzRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7O0FBVXBELE1BQU0sT0FBTywwQkFBMEI7SUFlakI7SUFBcUM7SUFBbUM7SUFkckYsZUFBZSxHQUF5QixFQUFFLENBQUM7SUFDNUMsV0FBVyxDQUFTO0lBQ25CLE9BQU8sQ0FBVTtJQUNqQixN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QztJQUNGLENBQUM7SUFHTSxnQkFBZ0IsQ0FBQyxNQUFNO1FBQzdCLElBQUksQ0FBQztZQUNKLElBQUksaUJBQWlCLEdBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUN2QyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDaEQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3hCLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1osT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQixDQUFDO0lBQ0YsQ0FBQztJQUVBLFlBQVk7UUFDWixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztJQUNwQixDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7dUdBOUVVLDBCQUEwQjsyRkFBMUIsMEJBQTBCLG1JQUozQixDQUFDLGFBQWEsRUFBQyxjQUFjLENBQUMsMEJDakIxQyw2d0NBcUJBLHlERExZLGVBQWUsd0hBQUMsbUJBQW1CLG0yQkFBQyxXQUFXLCtCQUFDLHFCQUFxQixvTUFBQyxZQUFZLHV1QkFBYyxlQUFlLDRGQUFDLHNCQUFzQjs7MkZBS3JJLDBCQUEwQjtrQkFSdEMsU0FBUzsrQkFDRSx5QkFBeUIsY0FDdkIsSUFBSSxXQUNQLENBQUMsZUFBZSxFQUFDLG1CQUFtQixFQUFDLFdBQVcsRUFBQyxxQkFBcUIsRUFBQyxZQUFZLEVBQUMsWUFBWSxFQUFDLGVBQWUsRUFBQyxzQkFBc0IsQ0FBQyxhQUN2SSxDQUFDLGFBQWEsRUFBQyxjQUFjLENBQUM7OElBaUI5QixxQkFBcUI7c0JBQTlCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9iamV0b1JlcG9ydGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3NlZ3VyaWRhZC9tb2RlbG9zL09iamV0b1JlcG9ydGVNb2RlbCc7XG5pbXBvcnQgeyBSZXBvcnRlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXBvcnRlcy5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnN0YW50ZXNHZW5lcmFsZXMgfSBmcm9tICcuLi8uLi8uLi9zZWd1cmlkYWQvY29uc3RhbnRlcy9Db25zdGFudGVzR2VuZXJhbGVzJztcbmltcG9ydCB7IFV0aWxzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljaW9zL3V0aWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFibGFHZW5lcmFsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29yZS9jb21wb25lbnRlcy90YWJsYS1nZW5lcmFsL3RhYmxhLWdlbmVyYWwuY29tcG9uZW50JztcbmltcG9ydCB7IERpYWxvZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZGlhbG9nJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlUGlwZSwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZpbHRyb0dlbmVyYWxDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2NvbXBvbmVudGVzL2ZpbHRyby1nZW5lcmFsL2ZpbHRyby1nZW5lcmFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dFRleHRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2lucHV0dGV4dCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1wb3B1cC10YWJsYXMtZnVlbnRlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0lucHV0VGV4dE1vZHVsZSxSZWFjdGl2ZUZvcm1zTW9kdWxlLEZvcm1zTW9kdWxlLFRhYmxhR2VuZXJhbENvbXBvbmVudCxEaWFsb2dNb2R1bGUsRGlhbG9nTW9kdWxlLFRyYW5zbGF0ZU1vZHVsZSxGaWx0cm9HZW5lcmFsQ29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOltUcmFuc2xhdGVQaXBlLE1lc3NhZ2VTZXJ2aWNlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvcHVwLXRhYmxhcy1mdWVudGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcG9wdXAtdGFibGFzLWZ1ZW50ZS5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgUG9wdXBUYWJsYXNGdWVudGVDb21wb25lbnQge1xuICBwdWJsaWMgcGFnaW5hZG9yVGFibGFzOiBPYmpldG9SZXBvcnRlTW9kZWxbXSA9IFtdO1xuXHRwdWJsaWMgZmlsdHJvVGFibGE6IHN0cmluZztcbiAgcHVibGljIHZpc2libGU6IGJvb2xlYW47XG4gIHB1YmxpYyBmaWx0cm86IE9iamV0b1JlcG9ydGVNb2RlbCA9IG5ldyBPYmpldG9SZXBvcnRlTW9kZWwoKTtcbiAgcHVibGljIGZpbHRlcnMgOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgcGFnaW5hdG9yID0ge1xuXHRcdHJvd3M6IDEwLFxuXHRcdHRvdGFsUmVjb3JkczogMCxcblx0fTtcbiAgcHVibGljIGxvYWRpbmc6IGJvb2xlYW47XG4gIHB1YmxpYyBjb2x1bW5zOiBhbnlbXSA9IFtdO1xuICBcbiAgQE91dHB1dCgpIGFwbGljYXJEZXN0aW5vT2N1bHRhciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlcG9ydGVzU3ZjOiBSZXBvcnRlc1NlcnZpY2UscHJpdmF0ZSB1dGlsc1NlcnZpY2U6IFV0aWxzU2VydmljZSxwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2Upe1xuICAgIHRoaXMuY29sdW1ucyA9IFtcblx0XHQgIHtcblx0XHRcdGZpZWxkOiAgJ29iamV0bycsXG5cdFx0XHRoZWFkZXI6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdkZXNjcmlwY2lvbicpLFxuXHRcdFx0d2lkdGg6IDEwMCxcblx0XHQgIH0sXG5cdFx0XTtcbiAgICB0aGlzLmZpbHRlcnMgPSBbXG5cdFx0ICB7XG5cdFx0XHRmaWVsZDogJ2Rlc2NyaXBjaW9uJyxcblx0XHRcdGhlYWRlcjogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2Rlc2NyaXBjaW9uJyksXG5cdFx0XHRtYXRjaE1vZGU6ICdjb250YWlucycsXG5cdFx0ICB9XG5cdFx0XTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2FkKGV2ZW50KSB7XG4gICAgdHJ5IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jb2xvY2FyRmlsdHJvKCk7XG4gICAgICAgIHRoaXMuZmlsdHJvLnBhZ2luYWNpb25SZWdpc3Ryb0luaWNpYWwgPSBldmVudD8uZmlyc3QgIT0gbnVsbCA/IGV2ZW50Py5maXJzdCA6IDAsXG5cdFx0XHRcdHRoaXMuZmlsdHJvLnBhZ2luYWNpb25SZWdpc3Ryb0ZpbmFsID0gZXZlbnQ/LnJvd3MgIT0gbnVsbCA/IGV2ZW50Py5yb3dzIDogMTAsXG4gICAgICAgIHRoaXMucGFnaW5hZG9yVGFibGFzICA9IGF3YWl0IHRoaXMucmVwb3J0ZXNTdmMuZ2V0T2JqZXRvcyh0aGlzLmZpbHRybykudG9Qcm9taXNlKCk7XG4gICAgICAgIHRoaXMucGFnaW5hdG9yLnRvdGFsUmVjb3JkcyA9IGF3YWl0IHRoaXMucmVwb3J0ZXNTdmMuZ2V0Q2FudGlkYWRPYmpldG9zKHRoaXMuZmlsdHJvKS50b1Byb21pc2UoKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB9XG4gICAgcHVibGljIGNvbG9jYXJGaWx0cm8oKXtcbiAgICAgIHRoaXMuZmlsdHJvID0gbmV3IE9iamV0b1JlcG9ydGVNb2RlbCgpO1xuICAgICAgaWYgKHRoaXMuZmlsdHJvVGFibGEgIT0gbnVsbCAmJiB0aGlzLnV0aWxzU2VydmljZS5pc05vdEJsYW5rKHRoaXMuZmlsdHJvVGFibGEpKSB7XG4gICAgICAgIHRoaXMuZmlsdHJvLmZpbHRybyA9IChDb25zdGFudGVzR2VuZXJhbGVzLlBPUkNFTlRBSkUgKyB0aGlzLmZpbHRyb1RhYmxhICsgQ29uc3RhbnRlc0dlbmVyYWxlcy5QT1JDRU5UQUpFKTtcbiAgICAgIH1cbiAgICB9XG4gIFxuXHRwdWJsaWMgYnVzY2FyVGFibGEoZGVzdGlubzogc3RyaW5nKSB7XG5cdFx0dHJ5IHtcblx0XHRcdHRoaXMuZmlsdHJvVGFibGEgPSAnJzsgXG5cdFx0XHR0aGlzLm1vc3RyYXJQb3B1cCgpO1xuXHRcdH1jYXRjaCAoZSkge1xuXHRcdFx0Y29uc29sZS5lcnJvcihlKTtcblx0XHR9XG5cdH1cblx0XG5cdFxuXHRwdWJsaWMgc2VsZWNjaW9uYXJUYWJsYShldmVudG8pIHtcblx0XHR0cnkge1xuXHRcdFx0bGV0IHRhYmxhU2VsZWNjaW9uYWRhID0gIGV2ZW50by5vYmpldG87XG5cdFx0XHR0aGlzLmFwbGljYXJEZXN0aW5vT2N1bHRhci5lbWl0KHRhYmxhU2VsZWNjaW9uYWRhKTtcbiAgICAgIHRoaXMub2N1bHRhclBvcHVwKCk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0Y29uc29sZS5lcnJvcihlKTtcblx0XHR9XG5cdH1cblxuICBtb3N0cmFyUG9wdXAoKXtcbiAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcbiAgfVxuXG4gIG9jdWx0YXJQb3B1cCgpe1xuICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICB9XG5cbn1cbiIsIjxwLWRpYWxvZyBpZD0ncG9wdXB1bmlkYWRlc3ZpZ2VudGVzcGxhbnRhJyBoZWFkZXI9XCJ7eyd1bmlkYWQnIHwgdHJhbnNsYXRlfX0ge3snb3JnYW5pemFjaW9uYWwnIHwgdHJhbnNsYXRlfX1cIlxuICAgIFsodmlzaWJsZSldPVwidmlzaWJsZVwiIFticmVha3BvaW50c109XCJ7Jzk2MHB4JzogJzc1dncnLCAnNjQwcHgnOiAnMTAwdncnfVwiIFtzdHlsZV09XCJ7d2lkdGg6ICc1MHZ3J31cIlxuICAgIChvbkhpZGUpPVwib2N1bHRhclBvcHVwKClcIiBbbW9kYWxdPVwidHJ1ZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPlxuICAgICAgICA8YXBwLWZpbHRyby1nZW5lcmFsIFtmaWx0cm9zXT1cImZpbHRlcnNcIiBbZGF0YXRhYmxlXT1cInRhYmxhR2VuZXJhbFwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1mb3JtPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1mbG9hdC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBJbnB1dFRleHQgYXV0b2ZvY3VzIHR5cGU9XCJ0ZXh0XCIgaWQ9XCJkZXNjcmlwY2lvblwiIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXBjaW9uXCIgWyhuZ01vZGVsKV09XCJmaWx0cm9UYWJsYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJkZXNjcmlwY2lvblwiPnt7J2ZpbHRybycgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYXBwLWZpbHRyby1nZW5lcmFsPlxuICAgICAgICBcbiAgICA8L2Rpdj5cbiAgICA8YXBwLXRhYmxhLWdlbmVyYWwgI3RhYmxhR2VuZXJhbCBbY29sdW1uc109XCJjb2x1bW5zXCIgW3ZhbHVlXT1cInBhZ2luYWRvclRhYmxhc1wiIFtyb3dzXT1cInBhZ2luYXRvci5yb3dzXCJcbiAgICBbdG90YWxSZWNvcmRzXT1cInBhZ2luYXRvci50b3RhbFJlY29yZHNcIiAob25Mb2FkKT1cImxvYWQoJGV2ZW50KVwiIChvblJvd1NlbGVjdCk9XCJzZWxlY2Npb25hclRhYmxhKCRldmVudClcIlxuICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIj48L2FwcC10YWJsYS1nZW5lcmFsPlxuICAgIDwvcC1kaWFsb2c+XG4iXX0=
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wdXAtdGFibGFzLWZ1ZW50ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3dlYmNvbW1vbi9wb3B1cHMvcG9wdXAtdGFibGFzLWZ1ZW50ZS9wb3B1cC10YWJsYXMtZnVlbnRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvd2ViY29tbW9uL3BvcHVwcy9wb3B1cC10YWJsYXMtZnVlbnRlL3BvcHVwLXRhYmxhcy1mdWVudGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUVuRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUV4RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUN4RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQW9CLE1BQU0scUJBQXFCLENBQUM7QUFDdkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUVBQW1FLENBQUM7QUFDM0csT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9B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V0FDUCxDQUFDLG1CQUFtQixFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxzQkFBc0IsQ0FBQyxhQUMvTyxDQUFDLGFBQWEsRUFBRSxjQUFjLEVBQUUsbUJBQW1CLENBQUM7Mk1Ba0JwQyxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBRWYscUJBQXFCO3NCQUE5QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYmpldG9SZXBvcnRlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9PYmpldG9SZXBvcnRlTW9kZWwnO1xuaW1wb3J0IHsgUmVwb3J0ZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVwb3J0ZXMuc2VydmljZSc7XG5pbXBvcnQgeyBDb25zdGFudGVzR2VuZXJhbGVzIH0gZnJvbSAnLi4vLi4vLi4vc2VndXJpZGFkL2NvbnN0YW50ZXMvQ29uc3RhbnRlc0dlbmVyYWxlcyc7XG5pbXBvcnQgeyBVdGlsc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2lvcy91dGlscy5zZXJ2aWNlJztcbmltcG9ydCB7IFRhYmxhR2VuZXJhbENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvcmUvY29tcG9uZW50ZXMvdGFibGEtZ2VuZXJhbC90YWJsYS1nZW5lcmFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaWFsb2dNb2R1bGUgfSBmcm9tICdwcmltZW5nL2RpYWxvZyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVBpcGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGaWx0cm9HZW5lcmFsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29yZS9jb21wb25lbnRlcy9maWx0cm8tZ2VuZXJhbC9maWx0cm8tZ2VuZXJhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRUZXh0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xuaW1wb3J0IHsgVGFibGVNb2R1bGUsIFRhYmxlIH0gZnJvbSAncHJpbWVuZy90YWJsZSc7XG5pbXBvcnQgeyBDaGVja2JveE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2hlY2tib3gnO1xuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlLCBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLy4uLy4uLy4uL2NvcmUvc2VydmljaW9zL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlybURpYWxvZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY29uZmlybWRpYWxvZyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1wb3B1cC10YWJsYXMtZnVlbnRlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbmZpcm1EaWFsb2dNb2R1bGUsIEJ1dHRvbk1vZHVsZSwgQnV0dG9uRGlyZWN0aXZlLCBUcmFuc2xhdGVNb2R1bGUsIENoZWNrYm94TW9kdWxlLCBUYWJsZU1vZHVsZSwgSW5wdXRUZXh0TW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3Jtc01vZHVsZSwgVGFibGFHZW5lcmFsQ29tcG9uZW50LCBEaWFsb2dNb2R1bGUsIERpYWxvZ01vZHVsZSwgVHJhbnNsYXRlTW9kdWxlLCBGaWx0cm9HZW5lcmFsQ29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbVHJhbnNsYXRlUGlwZSwgTWVzc2FnZVNlcnZpY2UsIENvbmZpcm1hdGlvblNlcnZpY2VdLFxuICB0ZW1wbGF0ZVVybDogJy4vcG9wdXAtdGFibGFzLWZ1ZW50ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9wb3B1cC10YWJsYXMtZnVlbnRlLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBQb3B1cFRhYmxhc0Z1ZW50ZUNvbXBvbmVudCB7XG4gIHB1YmxpYyBwYWdpbmFkb3JUYWJsYXM6IE9iamV0b1JlcG9ydGVNb2RlbFtdID0gW107XG4gIHB1YmxpYyBmaWx0cm9UYWJsYTogc3RyaW5nO1xuICBwdWJsaWMgdmlzaWJsZTogYm9vbGVhbjtcbiAgcHVibGljIGZpbHRybzogT2JqZXRvUmVwb3J0ZU1vZGVsID0gbmV3IE9iamV0b1JlcG9ydGVNb2RlbCgpO1xuICBwdWJsaWMgZmlsdGVyczogYW55W10gPSBbXTtcbiAgcHVibGljIHBhZ2luYXRvciA9IHtcbiAgICByb3dzOiAxMCxcbiAgICB0b3RhbFJlY29yZHM6IDAsXG4gIH07XG4gIHB1YmxpYyBzZWxlY2Npb25HZW5lcmFsOiBib29sZWFuO1xuICBwdWJsaWMgbG9hZGluZzogYm9vbGVhbjtcbiAgcHVibGljIGNvbHVtbnM6IGFueVtdID0gW107XG5cbiAgQFZpZXdDaGlsZCgndGFibGFHZW5lcmFsJykgdGFibGFHZW5lcmFsIDogVGFibGU7XG5cbiAgQE91dHB1dCgpIGFwbGljYXJEZXN0aW5vT2N1bHRhciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsIHByaXZhdGUgcmVwb3J0ZXNTdmM6IFJlcG9ydGVzU2VydmljZSwgcHJpdmF0ZSB1dGlsc1NlcnZpY2U6IFV0aWxzU2VydmljZSwgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLCBwcml2YXRlIG5vdGlmaWNhdGlvbkJ1c1NlcnZpY2U6IFRvYXN0U2VydmljZSkge1xuICAgIHRoaXMuY29sdW1ucyA9IFtcbiAgICAgIHtcbiAgICAgICAgZmllbGQ6ICdvYmpldG8nLFxuICAgICAgICBoZWFkZXI6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdkZXNjcmlwY2lvbicpLFxuICAgICAgICB3aWR0aDogMTAwLFxuICAgICAgfSxcbiAgICBdO1xuICAgIHRoaXMuZmlsdGVycyA9IFtcbiAgICAgIHtcbiAgICAgICAgZmllbGQ6ICdkZXNjcmlwY2lvbicsXG4gICAgICAgIGhlYWRlcjogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2Rlc2NyaXBjaW9uJyksXG4gICAgICAgIG1hdGNoTW9kZTogJ2NvbnRhaW5zJyxcbiAgICAgIH1cbiAgICBdO1xuICAgIHRoaXMubG9hZChudWxsKTtcbiAgfVxuXG5cbiAgY2FyZ2FMYXp5KGV2ZW50KXtcbiAgICB0aGlzLnRhYmxhR2VuZXJhbC5maWx0ZXJHbG9iYWwodGhpcy5maWx0cm9UYWJsYSwnY29udGFpbnMnKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsb2FkKGV2ZW50KSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLmNvbG9jYXJGaWx0cm8oKTtcbiAgICAgIHRoaXMucGFnaW5hZG9yVGFibGFzID0gYXdhaXQgdGhpcy5yZXBvcnRlc1N2Yy5nZXRPYmpldG9zKHRoaXMuZmlsdHJvKS50b1Byb21pc2UoKTtcbiAgICAgIHRoaXMucGFnaW5hdG9yLnRvdGFsUmVjb3JkcyA9IGF3YWl0IHRoaXMucmVwb3J0ZXNTdmMuZ2V0Q2FudGlkYWRPYmpldG9zKHRoaXMuZmlsdHJvKS50b1Byb21pc2UoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIH1cbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgfVxuICBwdWJsaWMgY29sb2NhckZpbHRybygpIHtcbiAgICB0aGlzLmZpbHRybyA9IG5ldyBPYmpldG9SZXBvcnRlTW9kZWwoKTtcbiAgICBpZiAodGhpcy5maWx0cm9UYWJsYSAhPSBudWxsICYmIHRoaXMudXRpbHNTZXJ2aWNlLmlzTm90QmxhbmsodGhpcy5maWx0cm9UYWJsYSkpIHtcbiAgICAgIHRoaXMuZmlsdHJvLmZpbHRybyA9IChDb25zdGFudGVzR2VuZXJhbGVzLlBPUkNFTlRBSkUgKyB0aGlzLmZpbHRyb1RhYmxhICsgQ29uc3RhbnRlc0dlbmVyYWxlcy5QT1JDRU5UQUpFKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYnVzY2FyVGFibGEoZGVzdGlubzogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZmlsdHJvVGFibGEgPSAnJztcbiAgICAgIHRoaXMubW9zdHJhclBvcHVwKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG4gIH1cblxuXG4gIHB1YmxpYyBzZWxlY2Npb25hclRhYmxhKCkge1xuICAgIHRyeSB7XG5cbiAgICAgIGxldCB0YWJsYVNlbGVjY2lvbmFkYSA9IHRoaXMucGFnaW5hZG9yVGFibGFzLmZpbHRlcihkYXRhID0+IGRhdGEuY2hlY2sgPT0gdHJ1ZSk7XG4gICAgICBpZiAodGFibGFTZWxlY2Npb25hZGEubGVuZ3RoID09IDApIHtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25CdXNTZXJ2aWNlLnNob3dXYXJuaW5nKCdTZWxlY2Npb25lIHBvciBsbyBtZW5vcyB1biByZWdpc3RybycpO1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHRoaXMuYXBsaWNhckRlc3Rpbm9PY3VsdGFyLmVtaXQodGFibGFTZWxlY2Npb25hZGEpO1xuICAgICAgdGhpcy5vY3VsdGFyUG9wdXAoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIH1cbiAgfVxuXG4gIG1vc3RyYXJQb3B1cCgpIHtcbiAgICB0aGlzLnZpc2libGUgPSB0cnVlO1xuICB9XG5cbiAgb2N1bHRhclBvcHVwKCkge1xuICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICB9XG5cbiAgdG9kb3NTZWxlY2Npb25hZG9zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBhZ2luYWRvclRhYmxhcy5ldmVyeShlbGVtZW50byA9PiBlbGVtZW50by5jaGVjayk7XG4gIH1cblxuICBhY3R1YWxpemFyU2VsZWNjaW9uKGJvb2xlYW5vZ2VuZXJhbDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChib29sZWFub2dlbmVyYWwpIHtcbiAgICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKHtcbiAgICAgICAgdGFyZ2V0OiBldmVudD8udGFyZ2V0LFxuICAgICAgICBtZXNzYWdlOiAnRGVzZWEgc2VsZWNjaW9uYXIgdG9kb3MgbG9zIHJlZ2lzdHJvcz8nLFxuICAgICAgICBhY2NlcHRMYWJlbDogJ1NpJyxcbiAgICAgICAga2V5OidlbGltaW5hcicsXG4gICAgICAgIGhlYWRlcjogJ0NvbmZpcm1hcicsXG4gICAgICAgIGFjY2VwdDogKCkgPT4ge1xuICAgICAgICAgIHRoaXMucGFnaW5hZG9yVGFibGFzLmZvckVhY2goKGVsZW1lbnRvKSA9PiB7XG4gICAgICAgICAgICBlbGVtZW50by5jaGVjayA9IGJvb2xlYW5vZ2VuZXJhbDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVqZWN0OiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZWxlY2Npb25HZW5lcmFsID1mYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGFnaW5hZG9yVGFibGFzLmZvckVhY2goKGVsZW1lbnRvKSA9PiB7XG4gICAgICAgIGVsZW1lbnRvLmNoZWNrID0gYm9vbGVhbm9nZW5lcmFsO1xuICAgICAgfSk7XG4gICAgfVxuXG5cblxuICB9XG5cblxufVxuIiwiPHAtY29uZmlybURpYWxvZyAjY2Qga2V5PVwiZWxpbWluYXJcIj5cbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZm9vdGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCI+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tb3V0bGluZWQtYnV0dG9uLXNlY29uZGFyeSBwLWJ1dHRvbi1vdXRsaW5lZCBwLWJ1dHRvbiBwLWNvbXBvbmVudFwiIHBCdXR0b25cbiAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktdGltZXNcIiBsYWJlbD1cIk5vXCIgKGNsaWNrKT1cImNkLnJlamVjdCgpXCI+PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIGljb249XCJwaSBwaS1jaGVja1wiIGxhYmVsPVwiU2lcIiBjbGFzcz1cInAtYnV0dG9uLXJhaXNlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNkLmFjY2VwdCgpXCI+PC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG48L3AtY29uZmlybURpYWxvZz5cbjxwLWRpYWxvZyBpZD0ncG9wdXBmdWVudGVUYWJsYXMnIGhlYWRlcj1cInt7J2Z1ZW50ZScgfCB0cmFuc2xhdGV9fVwiXG4gICAgWyh2aXNpYmxlKV09XCJ2aXNpYmxlXCIgW2JyZWFrcG9pbnRzXT1cInsnOTYwcHgnOiAnNzV2dycsICc2NDBweCc6ICcxMDB2dyd9XCIgW3N0eWxlXT1cInt3aWR0aDogJzUwdncnfVwiXG4gICAgKG9uSGlkZSk9XCJvY3VsdGFyUG9wdXAoKVwiIFttb2RhbF09XCJ0cnVlXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cbiAgICAgICAgPGFwcC1maWx0cm8tZ2VuZXJhbCBbZmlsdHJvc109XCJmaWx0ZXJzXCIgKG1ldG9kb1JlZ3Jlc2FyKT1cImNhcmdhTGF6eSgkZXZlbnQpXCI+IFxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1mb3JtPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1mbG9hdC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBJbnB1dFRleHQgYXV0b2ZvY3VzIHR5cGU9XCJ0ZXh0XCIgaWQ9XCJkZXNjcmlwY2lvblwiIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXBjaW9uXCIgWyhuZ01vZGVsKV09XCJmaWx0cm9UYWJsYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJkZXNjcmlwY2lvblwiPnt7J2ZpbHRybycgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYXBwLWZpbHRyby1nZW5lcmFsPlxuICAgICAgICBcbiAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJtbC0yIHAtcmlwcGxlIHAtZWxlbWVudCBwLWJ1dHRvbiBwLWNvbXBvbmVudCBwLWJ1dHRvbi1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLXBsdXNcIiBsYWJlbD1cInt7J2FkaWNpb25hcicgfCB0cmFuc2xhdGV9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWNjaW9uYXJUYWJsYSgpXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgPC9kaXY+XG4gICAgXG4gICAgPHAtdGFibGUgI3RhYmxhR2VuZXJhbCBpZD1cInRhYmxhX2xpc3RhX3RpcG9fZW50aWRhZFwiIFt2YWx1ZV09XCJwYWdpbmFkb3JUYWJsYXNcIiBbc2Nyb2xsYWJsZV09XCJ0cnVlXCJcbiAgICBbdG90YWxSZWNvcmRzXT1cInBhZ2luYWRvclRhYmxhcy5sZW5ndGhcIiBzY3JvbGxEaXJlY3Rpb249XCJib3RoXCIgc2Nyb2xsRGlyZWN0aW9uPVwiaG9yaXpvbnRhbFwiXG4gICAgcmVzcG9uc2l2ZUxheW91dD1cInNjcm9sbFwiIHNjcm9sbERpcmVjdGlvbj1cImhvcml6b250YWxcIiBbcGFnaW5hdG9yXT1cInBhZ2luYWRvclRhYmxhcy5sZW5ndGggPiAxMFwiXG4gICAgW3Jvd3NdPVwiMTBcIiBzdHlsZUNsYXNzPVwicC1kYXRhdGFibGUtc3RyaXBlZFwiXG4gICAgW3Nob3dDdXJyZW50UGFnZVJlcG9ydF09XCJ0cnVlXCIgZWRpdE1vZGU9XCJyb3dcIiAgW2dsb2JhbEZpbHRlckZpZWxkc109XCJbJ29iamV0byddXCJcbiAgICBjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlPVwie2ZpcnN0fSBhbCB7bGFzdH0gZGUge3RvdGFsUmVjb3Jkc30gcmVnaXN0cm9zXCJcbiAgICBkYXRhS2V5PVwiYWxpYXNcIj5cbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOjI1JVwiIGFsaWduRnJvemVuPVwibGVmdFwiIHBGcm96ZW5Db2x1bW4+XG4gICAgICAgICAgICAgICAgPHAtY2hlY2tib3ggW3N0eWxlXT1cInsnbWFyZ2luLWxlZnQnOiAnMSUnLCdtYXJnaW4tcmlnaHQnOicxJSd9XCJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY2Npb25HZW5lcmFsXCIgW2JpbmFyeV09XCJ0cnVlXCIgW25nTW9kZWxdPVwidG9kb3NTZWxlY2Npb25hZG9zKClcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJhY3R1YWxpemFyU2VsZWNjaW9uKCRldmVudClcIj48L3AtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJtYXJnaW4tbGVmdDoxJVwiPnt7J3RhYmxhJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgPC90cj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LXRhYmxhPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGQgc3R5bGU9XCJ3aWR0aDoyNSVcIj5cbiAgICAgICAgICAgICAgICA8cC1jaGVja2JveCBjbGFzcz1cIm1yLTIgXCIgWyhuZ01vZGVsKV09XCJ0YWJsYS5jaGVja1wiIFtiaW5hcnldPVwidHJ1ZVwiIGlucHV0SWQ9XCJiaW5hcnlcIj5cbiAgICAgICAgICAgICAgICA8L3AtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAge3t0YWJsYS5vYmpldG99fVxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJlbXB0eW1lc3NhZ2VcIj5cbiAgICAgICAgPHRyIGNsYXNzPVwicC0zIGZvbnQtbWVkaXVtIGVtcHR5bWVzc2FnZVwiPlxuICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI1XCI+XG4gICAgICAgICAgICAgICAge3snbWVuc2FqZXRhYmxhdmFjaWEnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvcC10YWJsZT5cblxuXG4gICAgPC9wLWRpYWxvZz5cbiJdfQ==
@@ -0,0 +1,253 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { catchError, throwError } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common/http";
5
+ import * as i2 from "../../core/servicios/error-interceptor.service";
6
+ import * as i3 from "../../core/servicios/utils.service";
7
+ import * as i4 from "../pipes/dashboard.pipe";
8
+ export class DashboardService {
9
+ httpClient;
10
+ errorInterceptor;
11
+ utilsService;
12
+ dashboardPipe;
13
+ listProcedure(objetoFiltro) {
14
+ throw new Error('Method not implemented.');
15
+ }
16
+ constructor(httpClient, errorInterceptor, utilsService, dashboardPipe) {
17
+ this.httpClient = httpClient;
18
+ this.errorInterceptor = errorInterceptor;
19
+ this.utilsService = utilsService;
20
+ this.dashboardPipe = dashboardPipe;
21
+ this.handleError = this.handleError.bind(this);
22
+ }
23
+ handleError(error) {
24
+ if (error.status === 500) {
25
+ //Llamado a interceptor
26
+ this.errorInterceptor.showError(JSON.stringify(error.error));
27
+ // A client-side or network error occurred. Handle it accordingly.
28
+ console.error('An error occurred:', error.error);
29
+ }
30
+ else {
31
+ // The backend returned an unsuccessful response code.
32
+ // The response body may contain clues as to what went wrong.
33
+ console.error(`Backend returned code ${error.status}, body was: `, error.error);
34
+ }
35
+ // Return an observable with a user-facing error message.
36
+ return throwError(() => new Error('Something bad happened; please try again later.'));
37
+ }
38
+ consultarDashboard() {
39
+ return this.httpClient.get(`${this.utilsService.obtenerUrlApi()}/requieretoken/dashboard/consultarDashboard`).pipe(catchError(this.handleError));
40
+ }
41
+ cargarGrafica(columna) {
42
+ console.log('cargar grafica');
43
+ console.log(columna);
44
+ switch (columna.accion) {
45
+ case this.dashboardPipe.DIAGRAMA_BARRAS:
46
+ columna = this.cargarDiagramaBarras(columna);
47
+ break;
48
+ case this.dashboardPipe.DIAGRAMA_BARRAS_HOR:
49
+ columna = this.cargarDiagramaBarrasHorizontal(columna);
50
+ break;
51
+ case this.dashboardPipe.DIAGRAMA_TORTA:
52
+ columna = this.cargarDiagramaBarrasTorta(columna);
53
+ break;
54
+ case this.dashboardPipe.DIAGRAMA_AREA:
55
+ columna = this.cargarDiagramaArea(columna);
56
+ break;
57
+ case this.dashboardPipe.DIAGRAMA_POLAR:
58
+ columna = this.cargarDiagramaPolar(columna);
59
+ break;
60
+ case this.dashboardPipe.DIAGRAMA_DONA:
61
+ columna = this.cargarDiagramaDona(columna);
62
+ break;
63
+ case this.dashboardPipe.DIAGRAMA_RADAR:
64
+ columna = this.cargarDiagramaRadar(columna);
65
+ break;
66
+ default:
67
+ break;
68
+ }
69
+ return columna;
70
+ }
71
+ cargarDiagramaBarras(columna) {
72
+ columna.datosGrafica.total = columna.datosGrafica.datasets[0].data.reduce((acumulador, valorActual) => acumulador + valorActual, 0);
73
+ columna.datosGrafica.data = {
74
+ labels: columna.datosGrafica.labels,
75
+ datasets: columna.datosGrafica.datasets
76
+ };
77
+ columna.datosGrafica.options = {
78
+ maintainAspectRatio: false,
79
+ aspectRatio: 0.8,
80
+ plugins: {
81
+ title: {
82
+ display: true,
83
+ text: columna.datosGrafica.title
84
+ },
85
+ legend: {
86
+ labels: {
87
+ color: "#2980B9",
88
+ }
89
+ }
90
+ },
91
+ };
92
+ return columna;
93
+ }
94
+ cargarDiagramaBarrasHorizontal(columna) {
95
+ columna.datosGrafica.total = columna.datosGrafica.datasets[0].data.reduce((acumulador, valorActual) => acumulador + valorActual, 0);
96
+ console.log(columna);
97
+ columna.datosGrafica.data = {
98
+ labels: columna.datosGrafica.labels,
99
+ datasets: columna.datosGrafica.datasets
100
+ };
101
+ columna.datosGrafica.options = {
102
+ indexAxis: 'y',
103
+ maintainAspectRatio: false,
104
+ aspectRatio: 0.8,
105
+ plugins: {
106
+ title: {
107
+ display: true,
108
+ text: columna.datosGrafica.title
109
+ },
110
+ legend: {
111
+ labels: {
112
+ color: "#2980B9",
113
+ }
114
+ }
115
+ },
116
+ };
117
+ return columna;
118
+ }
119
+ cargarDiagramaBarrasTorta(columna) {
120
+ columna.datosGrafica.total = columna.datosGrafica.data.reduce((acumulador, valorActual) => acumulador + valorActual, 0);
121
+ columna.datosGrafica.data = {
122
+ labels: columna.datosGrafica.labels,
123
+ datasets: [
124
+ {
125
+ data: columna.datosGrafica.data,
126
+ backgroundColor: columna.datosGrafica.backgroundColor
127
+ }
128
+ ]
129
+ };
130
+ columna.datosGrafica.options = {
131
+ plugins: {
132
+ title: {
133
+ display: true,
134
+ text: columna.datosGrafica.title
135
+ },
136
+ legend: {
137
+ labels: {
138
+ usePointStyle: true,
139
+ color: "#2980B9",
140
+ }
141
+ }
142
+ }
143
+ };
144
+ return columna;
145
+ }
146
+ cargarDiagramaArea(columna) {
147
+ columna.datosGrafica.total = columna.datosGrafica.datasets[0].data.reduce((acumulador, valorActual) => acumulador + valorActual, 0);
148
+ columna.datosGrafica.data = {
149
+ labels: columna.datosGrafica.labels,
150
+ datasets: columna.datosGrafica.datasets
151
+ };
152
+ columna.datosGrafica.options = {
153
+ stacked: false,
154
+ maintainAspectRatio: false,
155
+ aspectRatio: 0.6,
156
+ plugins: {
157
+ title: {
158
+ display: true,
159
+ text: columna.datosGrafica.title
160
+ },
161
+ legend: {
162
+ labels: {
163
+ color: "#2980B9",
164
+ }
165
+ }
166
+ },
167
+ };
168
+ return columna;
169
+ }
170
+ cargarDiagramaPolar(columna) {
171
+ columna.datosGrafica.total = columna.datosGrafica.data.reduce((acumulador, valorActual) => acumulador + valorActual, 0);
172
+ columna.datosGrafica.data = {
173
+ labels: columna.datosGrafica.labels,
174
+ datasets: [
175
+ {
176
+ data: columna.datosGrafica.data,
177
+ backgroundColor: columna.datosGrafica.backgroundColor
178
+ }
179
+ ]
180
+ };
181
+ columna.datosGrafica.options = {
182
+ plugins: {
183
+ title: {
184
+ display: true,
185
+ text: columna.datosGrafica.title
186
+ },
187
+ legend: {
188
+ labels: {
189
+ color: "#2980B9",
190
+ }
191
+ }
192
+ },
193
+ };
194
+ return columna;
195
+ }
196
+ cargarDiagramaDona(columna) {
197
+ columna.datosGrafica.total = columna.datosGrafica.data.reduce((acumulador, valorActual) => acumulador + valorActual, 0);
198
+ columna.datosGrafica.data = {
199
+ labels: columna.datosGrafica.labels,
200
+ datasets: [
201
+ {
202
+ data: columna.datosGrafica.data,
203
+ backgroundColor: columna.datosGrafica.backgroundColor
204
+ }
205
+ ]
206
+ };
207
+ columna.datosGrafica.options = {
208
+ cutout: '60%',
209
+ plugins: {
210
+ title: {
211
+ display: true,
212
+ text: columna.datosGrafica.title
213
+ },
214
+ legend: {
215
+ labels: {
216
+ color: "#2980B9",
217
+ }
218
+ }
219
+ },
220
+ };
221
+ return columna;
222
+ }
223
+ cargarDiagramaRadar(columna) {
224
+ columna.datosGrafica.total = columna.datosGrafica.datasets[0].data.reduce((acumulador, valorActual) => acumulador + valorActual, 0);
225
+ columna.datosGrafica.data = {
226
+ labels: columna.datosGrafica.labels,
227
+ datasets: columna.datosGrafica.datasets
228
+ };
229
+ columna.datosGrafica.options = {
230
+ plugins: {
231
+ title: {
232
+ display: true,
233
+ text: columna.datosGrafica.title
234
+ },
235
+ legend: {
236
+ labels: {
237
+ color: "#2980B9",
238
+ }
239
+ }
240
+ },
241
+ };
242
+ return columna;
243
+ }
244
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DashboardService, deps: [{ token: i1.HttpClient }, { token: i2.ErrorIntecertorService }, { token: i3.UtilsService }, { token: i4.DashboardPipe }], target: i0.ɵɵFactoryTarget.Injectable });
245
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DashboardService, providedIn: 'root' });
246
+ }
247
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DashboardService, decorators: [{
248
+ type: Injectable,
249
+ args: [{
250
+ providedIn: 'root'
251
+ }]
252
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.ErrorIntecertorService }, { type: i3.UtilsService }, { type: i4.DashboardPipe }] });
253
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3dlYmNvbW1vbi9zZXJ2aWNlcy9kYXNoYm9hcmQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7QUFTMUQsTUFBTSxPQUFPLGdCQUFnQjtJQU9QO0lBQWlDO0lBQW1EO0lBQW9DO0lBSjVJLGFBQWEsQ0FBQyxZQUEwQjtRQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELFlBQW9CLFVBQXNCLEVBQVcsZ0JBQXlDLEVBQVUsWUFBMEIsRUFBVSxhQUE0QjtRQUFwSixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVcscUJBQWdCLEdBQWhCLGdCQUFnQixDQUF5QjtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDdEssSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU8sV0FBVyxDQUFDLEtBQXdCO1FBQzFDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUN6Qix1QkFBdUI7WUFDdkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzdELGtFQUFrRTtZQUNsRSxPQUFPLENBQUMsS0FBSyxDQUFDLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuRCxDQUFDO2FBQU0sQ0FBQztZQUNOLHNEQUFzRDtZ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LENBQUMsUUFBUTtTQUN4QyxDQUFDO1FBQ0YsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLEdBQUc7WUFDN0IsT0FBTyxFQUFFO2dCQUNQLEtBQUssRUFBRTtvQkFDTCxPQUFPLEVBQUUsSUFBSTtvQkFDYixJQUFJLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLO2lCQUNqQztnQkFDRCxNQUFNLEVBQUU7b0JBQ0osTUFBTSxFQUFFO3dCQUNKLEtBQUssRUFBRSxTQUFTO3FCQUNuQjtpQkFDSjthQUNGO1NBQ0YsQ0FBQztRQUNGLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7dUdBcFBVLGdCQUFnQjsyR0FBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBSZXF1ZXN0LCBIdHRwRXZlbnQsSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjYXRjaEVycm9yLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFcnJvckludGVjZXJ0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNpb3MvZXJyb3ItaW50ZXJjZXB0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBVdGlsc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2lvcy91dGlscy5zZXJ2aWNlJztcbmltcG9ydCB7IEdlbmVyYWxNb2RlbCB9IGZyb20gJy4uLy4uL3NlZ3VyaWRhZC9tb2RlbG9zL0dlbmVyYWxNb2RlbCc7XG5pbXBvcnQgeyBEYXNoYm9hcmRQaXBlIH0gZnJvbSAnLi4vcGlwZXMvZGFzaGJvYXJkLnBpcGUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEYXNoYm9hcmRTZXJ2aWNlIHtcblxuXG4gIGxpc3RQcm9jZWR1cmUob2JqZXRvRmlsdHJvOiBHZW5lcmFsTW9kZWwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQgLCBwcml2YXRlIGVycm9ySW50ZXJjZXB0b3IgOiBFcnJvckludGVjZXJ0b3JTZXJ2aWNlLCBwcml2YXRlIHV0aWxzU2VydmljZTogVXRpbHNTZXJ2aWNlLCBwcml2YXRlIGRhc2hib2FyZFBpcGU6IERhc2hib2FyZFBpcGUpIHtcbiAgICB0aGlzLmhhbmRsZUVycm9yID0gdGhpcy5oYW5kbGVFcnJvci5iaW5kKHRoaXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA1MDApIHtcbiAgICAgIC8vTGxhbWFkbyBhIGludGVyY2VwdG9yXG4gICAgICB0aGlzLmVycm9ySW50ZXJjZXB0b3Iuc2hvd0Vycm9yKEpTT04uc3RyaW5naWZ5KGVycm9yLmVycm9yKSk7XG4gICAgICAvLyBBIGNsaWVudC1zaWRlIG9yIG5ldHdvcmsgZXJyb3Igb2NjdXJyZWQuIEhhbmRsZSBpdCBhY2NvcmRpbmdseS5cbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0FuIGVycm9yIG9jY3VycmVkOicsIGVycm9yLmVycm9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVGhlIGJhY2tlbmQgcmV0dXJuZWQgYW4gdW5zdWNjZXNzZnVsIHJlc3BvbnNlIGNvZGUuXG4gICAgICAvLyBUaGUgcmVzcG9uc2UgYm9keSBtYXkgY29udGFpbiBjbHVlcyBhcyB0byB3aGF0IHdlbnQgd3JvbmcuXG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBgQmFja2VuZCByZXR1cm5lZCBjb2RlICR7ZXJyb3Iuc3RhdHVzfSwgYm9keSB3YXM6IGAsIGVycm9yLmVycm9yKTtcbiAgICB9XG4gICAgLy8gUmV0dXJuIGFuIG9ic2VydmFibGUgd2l0aCBhIHVzZXItZmFjaW5nIGVycm9yIG1lc3NhZ2UuXG4gICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCdTb21ldGhpbmcgYmFkIGhhcHBlbmVkOyBwbGVhc2UgdHJ5IGFnYWluIGxhdGVyLicpKTtcbiAgfVxuXG5cbiAgY29uc3VsdGFyRGFzaGJvYXJkKCk6IE9ic2VydmFibGU8YW55PntcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLnV0aWxzU2VydmljZS5vYnRlbmVyVXJsQXBpKCl9L3JlcXVpZXJldG9rZW4vZGFzaGJvYXJkL2NvbnN1bHRhckRhc2hib2FyZGApLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpXG4gICAgKTtcbiAgfVxuXG4gIGNhcmdhckdyYWZpY2EoY29sdW1uYSkge1xuICAgIGNvbnNvbGUubG9nKCdjYXJnYXIgZ3JhZmljYScpXG4gICAgY29uc29sZS5sb2coY29sdW1uYSlcbiAgICBzd2l0Y2ggKGNvbHVtbmEuYWNjaW9uKSB7XG4gICAgICBjYXNlIHRoaXMuZGFzaGJvYXJkUGlwZS5ESUFHUkFNQV9CQVJSQVM6XG4gICAgICAgIGNvbHVtbmEgPSB0aGlzLmNhcmdhckRpYWdyYW1hQmFycmFzKGNvbHVtbmEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5kYXNoYm9hcmRQaXBlLkRJQUdSQU1BX0JBUlJBU19IT1I6XG4gICAgICAgIGNvbHVtbmEgPSB0aGlzLmNhcmdhckRpYWdyYW1hQmFycmFzSG9yaXpvbnRhbChjb2x1bW5hKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRoaXMuZGFzaGJvYXJkUGlwZS5ESUFHUkFNQV9UT1JUQTpcbiAgICAgICAgY29sdW1uYSA9IHRoaXMuY2FyZ2FyRGlhZ3JhbWFCYXJyYXNUb3J0YShjb2x1bW5hKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRoaXMuZGFzaGJvYXJkUGlwZS5ESUFHUkFNQV9BUkVBOlxuICAgICAgICBjb2x1bW5hID0gdGhpcy5jYXJnYXJEaWFncmFtYUFyZWEoY29sdW1uYSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLmRhc2hib2FyZFBpcGUuRElBR1JBTUFfUE9MQVI6XG4gICAgICAgIGNvbHVtbmEgPSB0aGlzLmNhcmdhckRpYWdyYW1hUG9sYXIoY29sdW1uYSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLmRhc2hib2FyZFBpcGUuRElBR1JBTUFfRE9OQTpcbiAgICAgICAgY29sdW1uYSA9IHRoaXMuY2FyZ2FyRGlhZ3JhbWFEb25hKGNvbHVtbmEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5kYXNoYm9hcmRQaXBlLkRJQUdSQU1BX1JBREFSOlxuICAgICAgICBjb2x1bW5hID0gdGhpcy5jYXJnYXJEaWFncmFtYVJhZGFyKGNvbHVtbmEpO1xuICAgICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIGNvbHVtbmE7XG4gIH1cblxuICBjYXJnYXJEaWFncmFtYUJhcnJhcyhjb2x1bW5hKSB7XG4gICAgY29sdW1uYS5kYXRvc0dyYWZpY2EudG90YWwgPSBjb2x1bW5hLmRhdG9zR3JhZmljYS5kYXRhc2V0c1swXS5kYXRhLnJlZHVjZSgoYWN1bXVsYWRvciwgdmFsb3JBY3R1YWwpID0+IGFjdW11bGFkb3IgKyB2YWxvckFjdHVhbCwgMCk7XG4gICAgY29sdW1uYS5kYXRvc0dyYWZpY2EuZGF0YSA9IHtcbiAgICAgIGxhYmVsczogY29sdW1uYS5kYXRvc0dyYWZpY2EubGFiZWxzLFxuICAgICAgZGF0YXNldHM6IGNvbHVtbmEuZGF0b3NHcmFmaWNhLmRhdGFzZXRzXG4gICAgfTtcbiAgICBjb2x1bW5hLmRhdG9zR3JhZmljYS5vcHRpb25zID0ge1xuICAgICAgbWFpbnRhaW5Bc3BlY3RSYXRpbzogZmFsc2UsXG4gICAgICBhc3BlY3RSYXRpbzogMC44LFxuICAgICAgcGx1Z2luczoge1xuICAgICAgICB0aXRsZToge1xuICAgICAgICAgIGRpc3BsYXk6IHRydWUsXG4gICAgICAgICAgdGV4dDogY29sdW1uYS5kYXRvc0dyYWZpY2EudGl0bGVcbiAgICAgICAgfSxcbiAgICAgICAgbGVnZW5kOiB7XG4gICAgICAgICAgICBsYWJlbHM6IHtcbiAgICAgICAgICAgICAgICBjb2xvcjogXCIjMjk4MEI5XCIsXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfTtcbiAgICByZXR1cm4gY29sdW1uYTtcbiAgfVxuXG4gIGNhcmdhckRpYWdyYW1hQmFycmFzSG9yaXpvbnRhbChjb2x1bW5hKSB7XG4gICAgY29sdW1uYS5kYXRvc0dyYWZpY2EudG90YWwgPSBjb2x1bW5hLmRhdG9zR3JhZmljYS5kYXRhc2V0c1swXS5kYXRhLnJlZHVjZSgoYWN1bXVsYWRvciwgdmFsb3JBY3R1YWwpID0+IGFjdW11bGFkb3IgKyB2YWxvckFjdHVhbCwgMCk7XG4gICAgY29uc29sZS5sb2coY29sdW1uYSlcblxuICAgIGNvbHVtbmEuZGF0b3NHcmFmaWNhLmRhdGEgPSB7XG4gICAgICBsYWJlbHM6IGNvbHVtbmEuZGF0b3NHcmFmaWNhLmxhYmVscyxcbiAgICAgIGRhdGFzZXRzOiBjb2x1bW5hLmRhdG9zR3JhZmljYS5kYXRhc2V0c1xuICAgIH07XG4gICAgY29sdW1uYS5kYXRvc0dyYWZpY2Eub3B0aW9ucyA9IHtcbiAgICAgIGluZGV4QXhpczogJ3knLFxuICAgICAgbWFpbnRhaW5Bc3BlY3RSYXRpbzogZmFsc2UsXG4gICAgICBhc3BlY3RSYXRpbzogMC44LFxuICAgICAgcGx1Z2luczoge1xuICAgICAgICB0aXRsZToge1xuICAgICAgICAgIGRpc3BsYXk6IHRydWUsXG4gICAgICAgICAgdGV4dDogY29sdW1uYS5kYXRvc0dyYWZpY2EudGl0bGVcbiAgICAgICAgfSxcbiAgICAgICAgbGVnZW5kOiB7XG4gICAgICAgICAgICBsYWJlbHM6IHtcbiAgICAgICAgICAgICAgICBjb2xvcjogXCIjMjk4MEI5XCIsXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfTtcbiAgICByZXR1cm4gY29sdW1uYTtcbiAgfVxuXG4gIGNhcmdhckRpYWdyYW1hQmFycmFzVG9ydGEoY29sdW1uYSkge1xuICAgIGNvbHVtbmEuZGF0b3NHcmFmaWNhLnRvdGFsID0gY29sdW1uYS5kYXRvc0dyYWZpY2EuZGF0YS5yZWR1Y2UoKGFjdW11bGFkb3IsIHZhbG9yQWN0dWFsKSA9PiBhY3VtdWxhZG9yICsgdmFsb3JBY3R1YWwsIDApO1xuICAgIGNvbHVtbmEuZGF0b3NHcmFmaWNhLmRhdGEgPSB7XG4gICAgICBsYWJlbHM6IGNvbHVtbmEuZGF0b3NHcmFmaWNhLmxhYmVscyxcbiAgICAgIGRhdGFzZXRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBkYXRhOiBjb2x1bW5hLmRhdG9zR3JhZmljYS5kYXRhLFxuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogY29sdW1uYS5kYXRvc0dyYWZpY2EuYmFja2dyb3VuZENvbG9yXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuICAgIGNvbHVtbmEuZGF0b3NHcmFmaWNhLm9wdGlvbnMgPSB7XG4gICAgICBwbHVnaW5zOiB7XG4gICAgICAgIHRpdGxlOiB7XG4gICAgICAgICAgZGlzcGxheTogdHJ1ZSxcbiAgICAgICAgICB0ZXh0OiBjb2x1bW5hLmRhdG9zR3JhZmljYS50aXRsZVxuICAgICAgICB9LFxuICAgICAgICBsZWdlbmQ6IHtcbiAgICAgICAgICAgIGxhYmVsczoge1xuICAgICAgICAgICAgICAgIHVzZVBvaW50U3R5bGU6IHRydWUsXG4gICAgICAgICAgICAgICAgY29sb3I6IFwiIzI5ODBCOVwiLFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIH07XG4gICAgcmV0dXJuIGNvbHVtbmE7XG4gIH1cbiAgXG4gIGNhcmdhckRpYWdyYW1hQXJlYShjb2x1bW5hKSB7XG4gICAgY29sdW1uYS5kYXRvc0dyYWZpY2EudG90YWwgPSBjb2x1bW5hLmRhdG9zR3JhZmljYS5kYXRhc2V0c1swXS5kYXRhLnJlZHVjZSgoYWN1bXVsYWRvciwgdmFsb3JBY3R1YWwpID0+IGFjdW11bGFkb3IgKyB2YWxvckFjdHVhbCwgMCk7XG4gICAgY29sdW1uYS5kYXRvc0dyYWZpY2EuZGF0YSA9IHtcbiAgICAgIGxhYmVsczogY29sdW1uYS5kYXRvc0dyYWZpY2EubGFiZWxzLFxuICAgICAgZGF0YXNldHM6IGNvbHVtbmEuZGF0b3NHcmFmaWNhLmRhdGFzZXRzXG4gICAgfTtcbiAgICBjb2x1bW5hLmRhdG9zR3JhZmljYS5vcHRpb25zID0ge1xuICAgICAgc3RhY2tlZDogZmFsc2UsXG4gICAgICBtYWludGFpbkFzcGVjdFJhdGlvOiBmYWxzZSxcbiAgICAgIGFzcGVjdFJhdGlvOiAwLjYsXG4gICAgICBwbHVnaW5zOiB7XG4gICAgICAgIHRpdGxlOiB7XG4gICAgICAgICAgZGlzcGxheTogdHJ1ZSxcbiAgICAgICAgICB0ZXh0OiBjb2x1bW5hLmRhdG9zR3JhZmljYS50aXRsZVxuICAgICAgICB9LFxuICAgICAgICBsZWdlbmQ6IHtcbiAgICAgICAgICAgIGxhYmVsczoge1xuICAgICAgICAgICAgICAgIGNvbG9yOiBcIiMyOTgwQjlcIixcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9O1xuICAgIHJldHVybiBjb2x1bW5hO1xuICB9XG5cbiAgY2FyZ2FyRGlhZ3JhbWFQb2xhcihjb2x1bW5hKSB7XG4gICAgY29sdW1uYS5kYXRvc0dyYWZpY2EudG90YWwgPSBjb2x1bW5hLmRhdG9zR3JhZmljYS5kYXRhLnJlZHVjZSgoYWN1bXVsYWRvciwgdmFsb3JBY3R1YWwpID0+IGFjdW11bGFkb3IgKyB2YWxvckFjdHVhbCwgMCk7XG4gICAgY29sdW1uYS5kYXRvc0dyYWZpY2EuZGF0YSA9IHtcbiAgICAgIGxhYmVsczogY29sdW1uYS5kYXRvc0dyYWZpY2EubGFiZWxzLFxuICAgICAgZGF0YXNldHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGRhdGE6IGNvbHVtbmEuZGF0b3NHcmFmaWNhLmRhdGEsXG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBjb2x1bW5hLmRhdG9zR3JhZmljYS5iYWNrZ3JvdW5kQ29sb3JcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gICAgY29sdW1uYS5kYXRvc0dyYWZpY2Eub3B0aW9ucyA9IHtcbiAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgdGl0bGU6IHtcbiAgICAgICAgICBkaXNwbGF5OiB0cnVlLFxuICAgICAgICAgIHRleHQ6IGNvbHVtbmEuZGF0b3NHcmFmaWNhLnRpdGxlXG4gICAgICAgIH0sXG4gICAgICAgIGxlZ2VuZDoge1xuICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgY29sb3I6IFwiIzI5ODBCOVwiLFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH07XG4gICAgcmV0dXJuIGNvbHVtbmE7XG4gIH1cblxuICBjYXJnYXJEaWFncmFtYURvbmEoY29sdW1uYSkge1xuICAgIGNvbHVtbmEuZGF0b3NHcmFmaWNhLnRvdGFsID0gY29sdW1uYS5kYXRvc0dyYWZpY2EuZGF0YS5yZWR1Y2UoKGFjdW11bGFkb3IsIHZhbG9yQWN0dWFsKSA9PiBhY3VtdWxhZG9yICsgdmFsb3JBY3R1YWwsIDApO1xuICAgIGNvbHVtbmEuZGF0b3NHcmFmaWNhLmRhdGEgPSB7XG4gICAgICBsYWJlbHM6IGNvbHVtbmEuZGF0b3NHcmFmaWNhLmxhYmVscyxcbiAgICAgIGRhdGFzZXRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBkYXRhOiBjb2x1bW5hLmRhdG9zR3JhZmljYS5kYXRhLFxuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogY29sdW1uYS5kYXRvc0dyYWZpY2EuYmFja2dyb3VuZENvbG9yXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuICAgIGNvbHVtbmEuZGF0b3NHcmFmaWNhLm9wdGlvbnMgPSB7XG4gICAgICBjdXRvdXQ6ICc2MCUnLFxuICAgICAgcGx1Z2luczoge1xuICAgICAgICB0aXRsZToge1xuICAgICAgICAgIGRpc3BsYXk6IHRydWUsXG4gICAgICAgICAgdGV4dDogY29sdW1uYS5kYXRvc0dyYWZpY2EudGl0bGVcbiAgICAgICAgfSxcbiAgICAgICAgbGVnZW5kOiB7XG4gICAgICAgICAgICBsYWJlbHM6IHtcbiAgICAgICAgICAgICAgICBjb2xvcjogXCIjMjk4MEI5XCIsXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfTtcbiAgICByZXR1cm4gY29sdW1uYTtcbiAgfVxuXG4gIGNhcmdhckRpYWdyYW1hUmFkYXIoY29sdW1uYSkge1xuICAgIGNvbHVtbmEuZGF0b3NHcmFmaWNhLnRvdGFsID0gY29sdW1uYS5kYXRvc0dyYWZpY2EuZGF0YXNldHNbMF0uZGF0YS5yZWR1Y2UoKGFjdW11bGFkb3IsIHZhbG9yQWN0dWFsKSA9PiBhY3VtdWxhZG9yICsgdmFsb3JBY3R1YWwsIDApO1xuICAgIGNvbHVtbmEuZGF0b3NHcmFmaWNhLmRhdGEgPSB7XG4gICAgICBsYWJlbHM6IGNvbHVtbmEuZGF0b3NHcmFmaWNhLmxhYmVscyxcbiAgICAgIGRhdGFzZXRzOiBjb2x1bW5hLmRhdG9zR3JhZmljYS5kYXRhc2V0c1xuICAgIH07XG4gICAgY29sdW1uYS5kYXRvc0dyYWZpY2Eub3B0aW9ucyA9IHtcbiAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgdGl0bGU6IHtcbiAgICAgICAgICBkaXNwbGF5OiB0cnVlLFxuICAgICAgICAgIHRleHQ6IGNvbHVtbmEuZGF0b3NHcmFmaWNhLnRpdGxlXG4gICAgICAgIH0sXG4gICAgICAgIGxlZ2VuZDoge1xuICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgY29sb3I6IFwiIzI5ODBCOVwiLFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH07XG4gICAgcmV0dXJuIGNvbHVtbmE7XG4gIH1cblxufSJdfQ==