ngx-sp-infra 1.8.78-test → 1.8.80-test

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.
@@ -1,4 +1,4 @@
1
- import { Component, Input } from '@angular/core';
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "@angular/common";
4
4
  import * as i2 from "@angular/forms";
@@ -17,6 +17,8 @@ export class TableComponent {
17
17
  // #region ==========> INITIALIZATION <==========
18
18
  constructor() {
19
19
  this.paginationPlacement = 'end';
20
+ this.itemsPerPageChange = new EventEmitter();
21
+ this.pageChange = new EventEmitter();
20
22
  this.counter = 0;
21
23
  this.page = 1;
22
24
  //#region Ordering, Sorting ou apenas Ordenação
@@ -39,6 +41,7 @@ export class TableComponent {
39
41
  onSelectChange(event) {
40
42
  this.itemsPerPage = parseInt(event.target.value, 10);
41
43
  this.page = 1;
44
+ this.itemsPerPageChange.emit(this.itemsPerPage);
42
45
  }
43
46
  /** Reseta a paginação da listagem. */
44
47
  resetPagination(list) {
@@ -99,11 +102,11 @@ export class TableComponent {
99
102
  return path.reduce((value, property) => value ? value[property] : "", obj);
100
103
  }
101
104
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: TableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
102
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: TableComponent, selector: "lib-table", inputs: { recordsList: ["list", "recordsList"], headersList: ["headers", "headersList"], countOptions: ["counts", "countOptions"], paginationPlacement: ["placement", "paginationPlacement"] }, usesOnChanges: true, ngImport: i0, template: "@if (recordsList) {\r\n <div class=\"table-list w-100 position-relative\">\r\n <span class=\"ms-1\"> Exibindo {{ itemsPerPage }} de {{ recordsList.length }} registros </span>\r\n <div class=\"table-list overflow-hidden border-bottom-0 rounded-bottom rounded\">\r\n <table class=\"table table-hover border mb-0\">\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let header of headersList\" scope=\"col\" class=\"text-dark-grey {{ header.col }} {{ header.customClasses }}\">\r\n {{ header.name }}\r\n </th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody class=\"bg-light fade-in-row\">\r\n @if (recordsList.length > 0) {\r\n <ng-content select=\"[innerRows]\"></ng-content>\r\n }\r\n @else {\r\n <tr> <td colspan=\"12\" class=\"align-middle\"><span class=\"fw-light fst-italic text-center\"> Consulta n\u00E3o retornou registros... </span></td> </tr>\r\n }\r\n\r\n <!-- #region IMPLEMENTA\u00C7\u00C3O PR\u00C9VIA -->\r\n <!-- @for (item of recordsList | paginate: { itemsPerPage: itemsPerPage, currentPage: page }; track item) {\r\n <tr class=\"align-middle\">\r\n <td><a class=\"text-primary text-decoration-none fw-bold\" tooltip=\"Editar/Visualizar\"\r\n [routerLink]=\"['/painel-pessoas/editar', item.ID_PESSOA]\" routerLinkActive=\"active\">{{ item.TX_NOMEPESSOA }}</a>\r\n <p class=\"mb-0\"><b>Naturalidade:</b> {{ item.IS_ESTRANGEIRO ? 'Estrangeira' : 'Brasileira' }}</p>\r\n </td>\r\n <td>{{ item.TX_DOCUMENTO }}</td>\r\n <td class=\"text-end\">{{ item.TIPOPESSOA_CD == \"FIS\" ? (item.DT_NASCIMENTO | date: 'dd/MM/yyyy') : (item.DT_FUNDACAO | date: 'dd/MM/yyyy') }}</td>\r\n <td>\r\n <p class=\"my-0\"><b>Criado em: </b> {{ item.DT_CRIACAO | date: 'dd/MM/yyyy, HH:mm:ss' }}</p>\r\n <p class=\"my-0\"><b>\u00DAltima altera\u00E7\u00E3o em: </b> {{ (item.DT_ULTIMAALTERACAO | date: 'dd/MM/yyyy') == \"01/01/1900\" ? \"Nenhuma altera\u00E7\u00E3o recente\" : item.DT_ULTIMAALTERACAO | date: 'dd/MM/yyyy, HH:mm:ss' }}</p>\r\n </td>\r\n <td>\r\n <div class=\"d-flex flex-row align-items-center justify-content-end\">\r\n <lib-icon iconName=\"editar\" iconColor=\"blue\" tooltip=\"Visualizar/Editar\" />\r\n <div class=\"form-check form-switch ms-2\"> <input class=\"form-check-input\" type=\"checkbox\" role=\"switch\" [checked]=\"item.IS_ACTIVE\"> </div>\r\n </div>\r\n </td>\r\n </tr>\r\n }\r\n @empty { <tr> <td colspan=\"12\" class=\"align-middle\"><span class=\"fw-light fst-italic text-center\"> Consulta n\u00E3o retornou registros... </span></td> </tr> } -->\r\n <!-- #endregion IMPLEMENTA\u00C7\u00C3O PR\u00C9VIA -->\r\n </tbody>\r\n </table>\r\n\r\n <!-- #region PAGINATION -->\r\n <div *ngIf=\"recordsList.length > 0\" class=\"d-flex mt-2\"\r\n [ngClass]=\"{\r\n 'justify-content-start': paginationPlacement == 'start',\r\n 'justify-content-center': paginationPlacement == 'center',\r\n 'justify-content-end': paginationPlacement == 'end',\r\n 'justify-content-between': paginationPlacement == 'between'\r\n }\">\r\n <div class=\"d-flex align-items-center\">\r\n <label class=\"me-2\" style=\"white-space: nowrap;\"> Itens por p\u00E1gina </label>\r\n <select class=\"form-select select-search\" (change)=\"onSelectChange($event)\">\r\n <option *ngFor=\"let count of countOptions; let i = index\" [value]=\"count\"\r\n [selected]=\"countOptions.length > 0 && i == 0\">{{ count }}</option>\r\n </select>\r\n </div>\r\n\r\n <pagination-controls class=\"sp-pagination mt-3\" (pageChange)=\"page = $event\" previousLabel=\"\u00AB&nbsp;&nbsp;&nbsp;\" nextLabel=\"&nbsp;&nbsp;&nbsp;\u00BB\" [maxSize]=\"5\"></pagination-controls>\r\n </div>\r\n <!-- #endregion PAGINATION -->\r\n </div>\r\n </div>\r\n} @else {\r\n <div class=\"w-100 text-center\">\r\n <div class=\"spinner-border\" role=\"status\"> <span class=\"visually-hidden\">Carregando informa\u00E7\u00F5es...</span> </div>\r\n </div>\r\n}", styles: [".sp-pagination ::ng-deep .ngx-pagination .current{background:#3767b2;border-radius:.375rem}.sp-pagination ::ng-deep .ngx-pagination a:hover,.sp-pagination ::ng-deep .ngx-pagination button:hover{border-radius:.375rem}.sp-pagination ::ng-deep .ngx-pagination .pagination-previous a:before,.sp-pagination ::ng-deep .ngx-pagination .pagination-previous.disabled:before{content:\"\";display:inline-block;margin-right:.5rem}.sp-pagination ::ng-deep .ngx-pagination .pagination-next a:after,.sp-pagination ::ng-deep .ngx-pagination .pagination-next.disabled:after{content:\"\";display:inline-block;margin-left:.5rem}.text-dark-grey{color:#63676b!important}table{border-color:#c4c4c4}table thead{height:50px;font-size:1rem;background-color:#e9ecef}table tbody{font-size:.875rem}table tbody>tr{height:50px}table tbody>tr:hover{background-color:#cce5ff}table.table>tbody{border-top:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "component", type: i3.PaginationControlsComponent, selector: "pagination-controls", inputs: ["id", "maxSize", "directionLinks", "autoHide", "responsive", "previousLabel", "nextLabel", "screenReaderPaginationLabel", "screenReaderPageLabel", "screenReaderCurrentLabel"], outputs: ["pageChange", "pageBoundsCorrection"] }] }); }
105
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: TableComponent, selector: "lib-table", inputs: { recordsList: ["list", "recordsList"], headersList: ["headers", "headersList"], countOptions: ["counts", "countOptions"], paginationPlacement: ["placement", "paginationPlacement"] }, outputs: { itemsPerPageChange: "itemsPerPageChange", pageChange: "pageChange" }, usesOnChanges: true, ngImport: i0, template: "@if (recordsList) {\r\n <div class=\"table-list w-100 position-relative\">\r\n <span class=\"ms-1\"> Exibindo {{ itemsPerPage <= recordsList.length ? itemsPerPage : recordsList.length }} de {{ recordsList.length }} registros </span>\r\n <div class=\"table-list overflow-hidden border-bottom-0 rounded-bottom rounded\">\r\n <table class=\"table table-hover border mb-0\">\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let header of headersList\" scope=\"col\"\r\n class=\"align-middle text-dark-grey {{ header.col }} {{ header.customClasses }}\"> {{ header.name }} </th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody class=\"bg-light fade-in-row\">\r\n @if (recordsList.length > 0) {\r\n <ng-content select=\"[innerRows]\"></ng-content>\r\n }\r\n @else {\r\n <tr> <td colspan=\"12\" class=\"align-middle\"><span class=\"fw-light fst-italic text-center\"> Consulta n\u00E3o retornou registros... </span></td> </tr>\r\n }\r\n\r\n <!-- #region IMPLEMENTA\u00C7\u00C3O PR\u00C9VIA -->\r\n <!-- @for (item of recordsList | paginate: { itemsPerPage: itemsPerPage, currentPage: page }; track item) {\r\n <tr class=\"align-middle\">\r\n <td><a class=\"text-primary text-decoration-none fw-bold\" tooltip=\"Editar/Visualizar\"\r\n [routerLink]=\"['/painel-pessoas/editar', item.ID_PESSOA]\" routerLinkActive=\"active\">{{ item.TX_NOMEPESSOA }}</a>\r\n <p class=\"mb-0\"><b>Naturalidade:</b> {{ item.IS_ESTRANGEIRO ? 'Estrangeira' : 'Brasileira' }}</p>\r\n </td>\r\n <td>{{ item.TX_DOCUMENTO }}</td>\r\n <td class=\"text-end\">{{ item.TIPOPESSOA_CD == \"FIS\" ? (item.DT_NASCIMENTO | date: 'dd/MM/yyyy') : (item.DT_FUNDACAO | date: 'dd/MM/yyyy') }}</td>\r\n <td>\r\n <p class=\"my-0\"><b>Criado em: </b> {{ item.DT_CRIACAO | date: 'dd/MM/yyyy, HH:mm:ss' }}</p>\r\n <p class=\"my-0\"><b>\u00DAltima altera\u00E7\u00E3o em: </b> {{ (item.DT_ULTIMAALTERACAO | date: 'dd/MM/yyyy') == \"01/01/1900\" ? \"Nenhuma altera\u00E7\u00E3o recente\" : item.DT_ULTIMAALTERACAO | date: 'dd/MM/yyyy, HH:mm:ss' }}</p>\r\n </td>\r\n <td>\r\n <div class=\"d-flex flex-row align-items-center justify-content-end\">\r\n <lib-icon iconName=\"editar\" iconColor=\"blue\" tooltip=\"Visualizar/Editar\" />\r\n <div class=\"form-check form-switch ms-2\"> <input class=\"form-check-input\" type=\"checkbox\" role=\"switch\" [checked]=\"item.IS_ACTIVE\"> </div>\r\n </div>\r\n </td>\r\n </tr>\r\n }\r\n @empty { <tr> <td colspan=\"12\" class=\"align-middle\"><span class=\"fw-light fst-italic text-center\"> Consulta n\u00E3o retornou registros... </span></td> </tr> } -->\r\n <!-- #endregion IMPLEMENTA\u00C7\u00C3O PR\u00C9VIA -->\r\n </tbody>\r\n </table>\r\n\r\n <!-- #region PAGINATION -->\r\n <div *ngIf=\"recordsList.length > 0\" class=\"d-flex mt-2\"\r\n [ngClass]=\"{\r\n 'justify-content-start': paginationPlacement == 'start',\r\n 'justify-content-center': paginationPlacement == 'center',\r\n 'justify-content-end': paginationPlacement == 'end',\r\n 'justify-content-between': paginationPlacement == 'between'\r\n }\">\r\n <div class=\"d-flex align-items-center\">\r\n <label class=\"me-2\" style=\"white-space: nowrap;\"> Itens por p\u00E1gina </label>\r\n <select class=\"form-select select-search\" (change)=\"onSelectChange($event)\">\r\n <option *ngFor=\"let count of countOptions; let i = index\" [value]=\"count\"\r\n [selected]=\"countOptions.length > 0 && i == 0\">{{ count }}</option>\r\n </select>\r\n </div>\r\n\r\n <pagination-controls class=\"sp-pagination mt-3\" (pageChange)=\"page = $event; pageChange.emit($event)\" previousLabel=\"\u00AB&nbsp;&nbsp;&nbsp;\" nextLabel=\"&nbsp;&nbsp;&nbsp;\u00BB\" [maxSize]=\"5\"></pagination-controls>\r\n </div>\r\n <!-- #endregion PAGINATION -->\r\n </div>\r\n </div>\r\n} @else {\r\n <div class=\"w-100 text-center\">\r\n <div class=\"spinner-border\" role=\"status\"> <span class=\"visually-hidden\">Carregando informa\u00E7\u00F5es...</span> </div>\r\n </div>\r\n}", styles: [".sp-pagination ::ng-deep .ngx-pagination .current{background:#3767b2;border-radius:.375rem}.sp-pagination ::ng-deep .ngx-pagination a:hover,.sp-pagination ::ng-deep .ngx-pagination button:hover{border-radius:.375rem}.sp-pagination ::ng-deep .ngx-pagination .pagination-previous a:before,.sp-pagination ::ng-deep .ngx-pagination .pagination-previous.disabled:before{content:\"\";display:inline-block;margin-right:.5rem}.sp-pagination ::ng-deep .ngx-pagination .pagination-next a:after,.sp-pagination ::ng-deep .ngx-pagination .pagination-next.disabled:after{content:\"\";display:inline-block;margin-left:.5rem}.text-dark-grey{color:#63676b!important}table{border-color:#c4c4c4}table thead{height:50px;font-size:1rem;background-color:#e9ecef}table tbody{font-size:.875rem}table tbody>tr{height:50px}table tbody>tr:hover{background-color:#cce5ff}table.table>tbody{border-top:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "component", type: i3.PaginationControlsComponent, selector: "pagination-controls", inputs: ["id", "maxSize", "directionLinks", "autoHide", "responsive", "previousLabel", "nextLabel", "screenReaderPaginationLabel", "screenReaderPageLabel", "screenReaderCurrentLabel"], outputs: ["pageChange", "pageBoundsCorrection"] }] }); }
103
106
  }
104
107
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: TableComponent, decorators: [{
105
108
  type: Component,
106
- args: [{ selector: 'lib-table', template: "@if (recordsList) {\r\n <div class=\"table-list w-100 position-relative\">\r\n <span class=\"ms-1\"> Exibindo {{ itemsPerPage }} de {{ recordsList.length }} registros </span>\r\n <div class=\"table-list overflow-hidden border-bottom-0 rounded-bottom rounded\">\r\n <table class=\"table table-hover border mb-0\">\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let header of headersList\" scope=\"col\" class=\"text-dark-grey {{ header.col }} {{ header.customClasses }}\">\r\n {{ header.name }}\r\n </th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody class=\"bg-light fade-in-row\">\r\n @if (recordsList.length > 0) {\r\n <ng-content select=\"[innerRows]\"></ng-content>\r\n }\r\n @else {\r\n <tr> <td colspan=\"12\" class=\"align-middle\"><span class=\"fw-light fst-italic text-center\"> Consulta n\u00E3o retornou registros... </span></td> </tr>\r\n }\r\n\r\n <!-- #region IMPLEMENTA\u00C7\u00C3O PR\u00C9VIA -->\r\n <!-- @for (item of recordsList | paginate: { itemsPerPage: itemsPerPage, currentPage: page }; track item) {\r\n <tr class=\"align-middle\">\r\n <td><a class=\"text-primary text-decoration-none fw-bold\" tooltip=\"Editar/Visualizar\"\r\n [routerLink]=\"['/painel-pessoas/editar', item.ID_PESSOA]\" routerLinkActive=\"active\">{{ item.TX_NOMEPESSOA }}</a>\r\n <p class=\"mb-0\"><b>Naturalidade:</b> {{ item.IS_ESTRANGEIRO ? 'Estrangeira' : 'Brasileira' }}</p>\r\n </td>\r\n <td>{{ item.TX_DOCUMENTO }}</td>\r\n <td class=\"text-end\">{{ item.TIPOPESSOA_CD == \"FIS\" ? (item.DT_NASCIMENTO | date: 'dd/MM/yyyy') : (item.DT_FUNDACAO | date: 'dd/MM/yyyy') }}</td>\r\n <td>\r\n <p class=\"my-0\"><b>Criado em: </b> {{ item.DT_CRIACAO | date: 'dd/MM/yyyy, HH:mm:ss' }}</p>\r\n <p class=\"my-0\"><b>\u00DAltima altera\u00E7\u00E3o em: </b> {{ (item.DT_ULTIMAALTERACAO | date: 'dd/MM/yyyy') == \"01/01/1900\" ? \"Nenhuma altera\u00E7\u00E3o recente\" : item.DT_ULTIMAALTERACAO | date: 'dd/MM/yyyy, HH:mm:ss' }}</p>\r\n </td>\r\n <td>\r\n <div class=\"d-flex flex-row align-items-center justify-content-end\">\r\n <lib-icon iconName=\"editar\" iconColor=\"blue\" tooltip=\"Visualizar/Editar\" />\r\n <div class=\"form-check form-switch ms-2\"> <input class=\"form-check-input\" type=\"checkbox\" role=\"switch\" [checked]=\"item.IS_ACTIVE\"> </div>\r\n </div>\r\n </td>\r\n </tr>\r\n }\r\n @empty { <tr> <td colspan=\"12\" class=\"align-middle\"><span class=\"fw-light fst-italic text-center\"> Consulta n\u00E3o retornou registros... </span></td> </tr> } -->\r\n <!-- #endregion IMPLEMENTA\u00C7\u00C3O PR\u00C9VIA -->\r\n </tbody>\r\n </table>\r\n\r\n <!-- #region PAGINATION -->\r\n <div *ngIf=\"recordsList.length > 0\" class=\"d-flex mt-2\"\r\n [ngClass]=\"{\r\n 'justify-content-start': paginationPlacement == 'start',\r\n 'justify-content-center': paginationPlacement == 'center',\r\n 'justify-content-end': paginationPlacement == 'end',\r\n 'justify-content-between': paginationPlacement == 'between'\r\n }\">\r\n <div class=\"d-flex align-items-center\">\r\n <label class=\"me-2\" style=\"white-space: nowrap;\"> Itens por p\u00E1gina </label>\r\n <select class=\"form-select select-search\" (change)=\"onSelectChange($event)\">\r\n <option *ngFor=\"let count of countOptions; let i = index\" [value]=\"count\"\r\n [selected]=\"countOptions.length > 0 && i == 0\">{{ count }}</option>\r\n </select>\r\n </div>\r\n\r\n <pagination-controls class=\"sp-pagination mt-3\" (pageChange)=\"page = $event\" previousLabel=\"\u00AB&nbsp;&nbsp;&nbsp;\" nextLabel=\"&nbsp;&nbsp;&nbsp;\u00BB\" [maxSize]=\"5\"></pagination-controls>\r\n </div>\r\n <!-- #endregion PAGINATION -->\r\n </div>\r\n </div>\r\n} @else {\r\n <div class=\"w-100 text-center\">\r\n <div class=\"spinner-border\" role=\"status\"> <span class=\"visually-hidden\">Carregando informa\u00E7\u00F5es...</span> </div>\r\n </div>\r\n}", styles: [".sp-pagination ::ng-deep .ngx-pagination .current{background:#3767b2;border-radius:.375rem}.sp-pagination ::ng-deep .ngx-pagination a:hover,.sp-pagination ::ng-deep .ngx-pagination button:hover{border-radius:.375rem}.sp-pagination ::ng-deep .ngx-pagination .pagination-previous a:before,.sp-pagination ::ng-deep .ngx-pagination .pagination-previous.disabled:before{content:\"\";display:inline-block;margin-right:.5rem}.sp-pagination ::ng-deep .ngx-pagination .pagination-next a:after,.sp-pagination ::ng-deep .ngx-pagination .pagination-next.disabled:after{content:\"\";display:inline-block;margin-left:.5rem}.text-dark-grey{color:#63676b!important}table{border-color:#c4c4c4}table thead{height:50px;font-size:1rem;background-color:#e9ecef}table tbody{font-size:.875rem}table tbody>tr{height:50px}table tbody>tr:hover{background-color:#cce5ff}table.table>tbody{border-top:none}\n"] }]
109
+ args: [{ selector: 'lib-table', template: "@if (recordsList) {\r\n <div class=\"table-list w-100 position-relative\">\r\n <span class=\"ms-1\"> Exibindo {{ itemsPerPage <= recordsList.length ? itemsPerPage : recordsList.length }} de {{ recordsList.length }} registros </span>\r\n <div class=\"table-list overflow-hidden border-bottom-0 rounded-bottom rounded\">\r\n <table class=\"table table-hover border mb-0\">\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let header of headersList\" scope=\"col\"\r\n class=\"align-middle text-dark-grey {{ header.col }} {{ header.customClasses }}\"> {{ header.name }} </th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody class=\"bg-light fade-in-row\">\r\n @if (recordsList.length > 0) {\r\n <ng-content select=\"[innerRows]\"></ng-content>\r\n }\r\n @else {\r\n <tr> <td colspan=\"12\" class=\"align-middle\"><span class=\"fw-light fst-italic text-center\"> Consulta n\u00E3o retornou registros... </span></td> </tr>\r\n }\r\n\r\n <!-- #region IMPLEMENTA\u00C7\u00C3O PR\u00C9VIA -->\r\n <!-- @for (item of recordsList | paginate: { itemsPerPage: itemsPerPage, currentPage: page }; track item) {\r\n <tr class=\"align-middle\">\r\n <td><a class=\"text-primary text-decoration-none fw-bold\" tooltip=\"Editar/Visualizar\"\r\n [routerLink]=\"['/painel-pessoas/editar', item.ID_PESSOA]\" routerLinkActive=\"active\">{{ item.TX_NOMEPESSOA }}</a>\r\n <p class=\"mb-0\"><b>Naturalidade:</b> {{ item.IS_ESTRANGEIRO ? 'Estrangeira' : 'Brasileira' }}</p>\r\n </td>\r\n <td>{{ item.TX_DOCUMENTO }}</td>\r\n <td class=\"text-end\">{{ item.TIPOPESSOA_CD == \"FIS\" ? (item.DT_NASCIMENTO | date: 'dd/MM/yyyy') : (item.DT_FUNDACAO | date: 'dd/MM/yyyy') }}</td>\r\n <td>\r\n <p class=\"my-0\"><b>Criado em: </b> {{ item.DT_CRIACAO | date: 'dd/MM/yyyy, HH:mm:ss' }}</p>\r\n <p class=\"my-0\"><b>\u00DAltima altera\u00E7\u00E3o em: </b> {{ (item.DT_ULTIMAALTERACAO | date: 'dd/MM/yyyy') == \"01/01/1900\" ? \"Nenhuma altera\u00E7\u00E3o recente\" : item.DT_ULTIMAALTERACAO | date: 'dd/MM/yyyy, HH:mm:ss' }}</p>\r\n </td>\r\n <td>\r\n <div class=\"d-flex flex-row align-items-center justify-content-end\">\r\n <lib-icon iconName=\"editar\" iconColor=\"blue\" tooltip=\"Visualizar/Editar\" />\r\n <div class=\"form-check form-switch ms-2\"> <input class=\"form-check-input\" type=\"checkbox\" role=\"switch\" [checked]=\"item.IS_ACTIVE\"> </div>\r\n </div>\r\n </td>\r\n </tr>\r\n }\r\n @empty { <tr> <td colspan=\"12\" class=\"align-middle\"><span class=\"fw-light fst-italic text-center\"> Consulta n\u00E3o retornou registros... </span></td> </tr> } -->\r\n <!-- #endregion IMPLEMENTA\u00C7\u00C3O PR\u00C9VIA -->\r\n </tbody>\r\n </table>\r\n\r\n <!-- #region PAGINATION -->\r\n <div *ngIf=\"recordsList.length > 0\" class=\"d-flex mt-2\"\r\n [ngClass]=\"{\r\n 'justify-content-start': paginationPlacement == 'start',\r\n 'justify-content-center': paginationPlacement == 'center',\r\n 'justify-content-end': paginationPlacement == 'end',\r\n 'justify-content-between': paginationPlacement == 'between'\r\n }\">\r\n <div class=\"d-flex align-items-center\">\r\n <label class=\"me-2\" style=\"white-space: nowrap;\"> Itens por p\u00E1gina </label>\r\n <select class=\"form-select select-search\" (change)=\"onSelectChange($event)\">\r\n <option *ngFor=\"let count of countOptions; let i = index\" [value]=\"count\"\r\n [selected]=\"countOptions.length > 0 && i == 0\">{{ count }}</option>\r\n </select>\r\n </div>\r\n\r\n <pagination-controls class=\"sp-pagination mt-3\" (pageChange)=\"page = $event; pageChange.emit($event)\" previousLabel=\"\u00AB&nbsp;&nbsp;&nbsp;\" nextLabel=\"&nbsp;&nbsp;&nbsp;\u00BB\" [maxSize]=\"5\"></pagination-controls>\r\n </div>\r\n <!-- #endregion PAGINATION -->\r\n </div>\r\n </div>\r\n} @else {\r\n <div class=\"w-100 text-center\">\r\n <div class=\"spinner-border\" role=\"status\"> <span class=\"visually-hidden\">Carregando informa\u00E7\u00F5es...</span> </div>\r\n </div>\r\n}", styles: [".sp-pagination ::ng-deep .ngx-pagination .current{background:#3767b2;border-radius:.375rem}.sp-pagination ::ng-deep .ngx-pagination a:hover,.sp-pagination ::ng-deep .ngx-pagination button:hover{border-radius:.375rem}.sp-pagination ::ng-deep .ngx-pagination .pagination-previous a:before,.sp-pagination ::ng-deep .ngx-pagination .pagination-previous.disabled:before{content:\"\";display:inline-block;margin-right:.5rem}.sp-pagination ::ng-deep .ngx-pagination .pagination-next a:after,.sp-pagination ::ng-deep .ngx-pagination .pagination-next.disabled:after{content:\"\";display:inline-block;margin-left:.5rem}.text-dark-grey{color:#63676b!important}table{border-color:#c4c4c4}table thead{height:50px;font-size:1rem;background-color:#e9ecef}table tbody{font-size:.875rem}table tbody>tr{height:50px}table tbody>tr:hover{background-color:#cce5ff}table.table>tbody{border-top:none}\n"] }]
107
110
  }], ctorParameters: () => [], propDecorators: { recordsList: [{
108
111
  type: Input,
109
112
  args: [{ alias: 'list', required: true }]
@@ -116,5 +119,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
116
119
  }], paginationPlacement: [{
117
120
  type: Input,
118
121
  args: ['placement']
122
+ }], itemsPerPageChange: [{
123
+ type: Output
124
+ }], pageChange: [{
125
+ type: Output
119
126
  }] } });
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNwLWluZnJhL3NyYy9saWIvd2lkZ2V0cy90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3AtaW5mcmEvc3JjL2xpYi93aWRnZXRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFvQyxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFPbkYsTUFBTSxPQUFPLGNBQWM7SUF3QnpCLG9CQUFvQjtJQUVwQixnREFBZ0Q7SUFHaEQsK0NBQStDO0lBRS9DLHNCQUFzQjtJQUN0QixRQUFRO0lBQ1IseUJBQXlCO0lBRXpCLHVCQUF1QjtJQUN2QixRQUFRO0lBQ1IsMEJBQTBCO0lBRTFCLGtEQUFrRDtJQUdsRCxpREFBaUQ7SUFDakQ7UUF4QjJCLHdCQUFtQixHQUEyQyxLQUFLLENBQUM7UUFFeEYsWUFBTyxHQUFXLENBQUMsQ0FBQztRQUNyQixTQUFJLEdBQVcsQ0FBQyxDQUFDO1FBbUR4QiwrQ0FBK0M7UUFFOUM7VUFDRTtRQUVGLDhEQUE4RDtRQUM5RCxrQkFBYSxHQUE4QixFQUFFLENBQUM7UUFFOUMsK0NBQStDO1FBQy9DLHNCQUFpQixHQUFXLEVBQUUsQ0FBQztJQXZDZixDQUFDO0lBRWpCLFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtJQUVsQyxDQUFDO0lBQ0Qsb0RBQW9EO0lBR3BELHdDQUF3QztJQUV4QztrRkFDMkU7SUFDckUsY0FBYyxDQUFDLEtBQVU7UUFDL0IsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLE1B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QUFDLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBRUQsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsMkRBQTJEO0lBQ25ELFdBQVcsQ0FBQyxHQUFRLEVBQUUsSUFBdUI7UUFDbkQsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM3QixJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM3RSxDQUFDOytHQWpKVSxjQUFjO21HQUFkLGNBQWMsc1FDUDNCLHFuSkF3RUM7OzRGRGpFWSxjQUFjO2tCQUwxQixTQUFTOytCQUNFLFdBQVc7d0RBYTRCLFdBQVc7c0JBQTNELEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQ1ksV0FBVztzQkFBOUQsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFPUSxZQUFZO3NCQUE5RCxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUVmLG1CQUFtQjtzQkFBN0MsS0FBSzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG5cclxuICAvLyAjcmVnaW9uID09PT09PT09PT0+IFBST1BFUlRJRVMgPD09PT09PT09PT1cclxuXHJcbiAgLy8gI3JlZ2lvbiBQUklWQVRFXHJcbiAgLy8gWy4uLl1cclxuICAvLyAjZW5kcmVnaW9uIFBSSVZBVEVcclxuXHJcbiAgLy8gI3JlZ2lvbiBQVUJMSUNcclxuICBASW5wdXQoeyBhbGlhczogJ2xpc3QnLCByZXF1aXJlZDogdHJ1ZSB9KSBwdWJsaWMgcmVjb3Jkc0xpc3Q6IGFueVtdO1xyXG4gIEBJbnB1dCh7IGFsaWFzOiAnaGVhZGVycycsIHJlcXVpcmVkOiB0cnVlIH0pIHB1YmxpYyBoZWFkZXJzTGlzdDoge1xyXG4gICAgbmFtZTogc3RyaW5nLFxyXG4gICAgY29sOiAnY29sJ3wnY29sLTEnfCdjb2wtMid8J2NvbC0zJ3wnY29sLTQnfCdjb2wtNSd8J2NvbC02J3wnY29sLTcnfCdjb2wtOCd8J2NvbC05J3wnY29sLTEwJ3wnY29sLTExJ3wnY29sLTEyJyxcclxuICAgIGhhc09yZGVyQnk/OiBib29sZWFuLFxyXG4gICAgY3VzdG9tQ2xhc3Nlcz86IHN0cmluZ1xyXG4gIH1bXTtcclxuICBcclxuICBASW5wdXQoeyBhbGlhczogJ2NvdW50cycsIHJlcXVpcmVkOiB0cnVlIH0pIHB1YmxpYyBjb3VudE9wdGlvbnM6IG51bWJlcltdO1xyXG5cclxuICBASW5wdXQoJ3BsYWNlbWVudCcpIHB1YmxpYyBwYWdpbmF0aW9uUGxhY2VtZW50OiAnc3RhcnQnIHwgJ2NlbnRlcicgfCAnZW5kJyB8ICdiZXR3ZWVuJyA9ICdlbmQnO1xyXG5cclxuICBwdWJsaWMgY291bnRlcjogbnVtYmVyID0gMDtcclxuXHRwdWJsaWMgcGFnZTogbnVtYmVyID0gMTtcclxuXHRwdWJsaWMgaXRlbXNQZXJQYWdlOiBudW1iZXI7XHJcbiAgLy8gI2VuZHJlZ2lvbiBQVUJMSUNcclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiA9PT09PT09PT09PiBQUk9QRVJUSUVTIDw9PT09PT09PT09XHJcblxyXG5cclxuICAvLyAjcmVnaW9uID09PT09PT09PT0+IEZPUk0gQlVJTERFUiA8PT09PT09PT09PVxyXG5cclxuICAvLyAjcmVnaW9uIEZPUk0gRklFTERTXHJcbiAgLy8gWy4uLl1cclxuICAvLyAjZW5kcmVnaW9uIEZPUk0gRklFTERTXHJcblxyXG4gIC8vICNyZWdpb24gRk9STSBCVUlMREVSXHJcbiAgLy8gWy4uLl1cclxuICAvLyAjZW5kcmVnaW9uIEZPUk0gQlVJTERFUlxyXG5cclxuICAvLyAjZW5kcmVnaW9uID09PT09PT09PT0+IEZPUk0gQlVJTERFUiA8PT09PT09PT09PVxyXG5cclxuXHJcbiAgLy8gI3JlZ2lvbiA9PT09PT09PT09PiBJTklUSUFMSVpBVElPTiA8PT09PT09PT09PVxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pdGVtc1BlclBhZ2UgPSB0aGlzLmNvdW50T3B0aW9uc1swXTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIFxyXG4gIH1cclxuICAvLyAjZW5kcmVnaW9uID09PT09PT09PT0+IElOSVRJQUxJWkFUSU9OIDw9PT09PT09PT09XHJcblxyXG5cclxuICAvLyAjcmVnaW9uID09PT09PT09PT0+IFVUSUxTIDw9PT09PT09PT09XHJcbiAgXHJcbiAgLyoqIE1vZGlmaWNhIGEgcXVhbnRpZGFkZSBkZSBpdGVucyBhIHNlciBtb3N0cmFkYSBuYSBsaXN0YS5cclxuXHQgKiBAcGFyYW0gZXZlbnQgcGFyw6JtZXRybyBkZSBldmVudG8gcXVlIGlyw6Egc2VsZWNpb25hciBhIG5vdmEgcXVhbnRpZGFkZS4gKi9cclxuXHRwdWJsaWMgb25TZWxlY3RDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG5cdFx0dGhpcy5pdGVtc1BlclBhZ2UgPSBwYXJzZUludChldmVudC50YXJnZXQudmFsdWUsIDEwKTtcclxuXHRcdHRoaXMucGFnZSA9IDE7XHJcblx0fVxyXG5cclxuXHQvKiogUmVzZXRhIGEgcGFnaW5hw6fDo28gZGEgbGlzdGFnZW0uICovXHJcblx0cHVibGljIHJlc2V0UGFnaW5hdGlvbihsaXN0OiBhbnlbXSk6IHZvaWQge1xyXG5cdFx0Ly8gQ8OhbGN1bG8gcGFyYSBlbmNvbnRyYXIgbyB2YWxvciBpbmljaWFsIGRvIGluZGV4IGRhIHDDoWdpbmEgYXR1YWxcclxuXHRcdGNvbnN0IHN0YXJ0SW5kZXggPSAodGhpcy5wYWdlIC0gMSkgKiB0aGlzLml0ZW1zUGVyUGFnZTtcclxuXHJcblx0XHQvLyBDb25kacOnw6NvIHBhcmEgcmVzZXRhciBvIHZhbG9yIGRhIHBhZ2luYcOnw6NvXHJcblx0XHRpZiAobGlzdC5sZW5ndGggPD0gc3RhcnRJbmRleCkgeyB0aGlzLnBhZ2UgPSAxOyB9XHJcblx0fVxyXG5cclxuXHQvLyNyZWdpb24gT3JkZXJpbmcsIFNvcnRpbmcgb3UgYXBlbmFzIE9yZGVuYcOnw6NvXHJcblxyXG4gIC8qKiBNw6l0b2RvIHF1ZSBmYXogYSBvcmRlbmHDp8OjbyBkb3MgY29udHJhdG9zIG5hIHRlbGEgZGUgbGlzdGFnZW0sIGVtIGNhZGEgdW1hIGRhcyBjw6lsdWxhcyBkbyBjYWJlw6dhbGhvIGRhIHRhYmVsYSwgb25kZSBjYWRhIHVtIGRvcyBlbGVtZW50b3MgPHRoPiByZXByZXNlbnRhIHVtYSBjb2x1bmEsIGRlIGFjb3JkbyBjb20gYSBsaXN0YSBkZSBjb250cmF0b3MgcXVlIHJldG9ybmEgZG8gYmFja2VuZC5cclxuICAqL1xyXG5cclxuICAvLyBPYmpldG8gcGFyYSBhcm1hemVuYXIgYSBkaXJlw6fDo28gZGUgb3JkZW5hw6fDo28gZGUgY2FkYSBjb2x1bmFcclxuICBzb3J0RGlyZWN0aW9uOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XHJcblxyXG4gIC8vIENvbHVuYSBhdHVhbG1lbnRlIHNlbGVjaW9uYWRhIHBhcmEgb3JkZW5hw6fDo29cclxuICBjdXJyZW50U29ydENvbHVtbjogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgLy8gRnVuw6fDo28gY2hhbWFkYSBxdWFuZG8gb2NvcnJlIHVtYSBtdWRhbsOnYSBuYSBvcmRlbmHDp8Ojb1xyXG4gIG9uU29ydENoYW5nZShldmVudDogeyBkaXJlY3Rpb246IHN0cmluZywgY29sdW1uOiBzdHJpbmcgfSkge1xyXG4gICAgY29uc3QgeyBkaXJlY3Rpb24sIGNvbHVtbiB9ID0gZXZlbnQ7XHJcblxyXG4gICAgLy8gVmVyaWZpY2Egc2UgYSBjb2x1bmEgYXR1YWxtZW50ZSBzZWxlY2lvbmFkYSDDqSBhIG1lc21hIGRhIG5vdmEgc2VsZcOnw6NvXHJcbiAgICBpZiAodGhpcy5jdXJyZW50U29ydENvbHVtbiA9PT0gY29sdW1uKSB7XHJcbiAgICAgIC8vIEFsdGVybmEgZW50cmUgXCJhc2NcIiBlIFwiZGVzY1wiIHBhcmEgYSBkaXJlw6fDo28gZGUgb3JkZW5hw6fDo28gZGEgY29sdW5hXHJcbiAgICAgIHRoaXMuc29ydERpcmVjdGlvbltjb2x1bW5dID0gdGhpcy5zb3J0RGlyZWN0aW9uW2NvbHVtbl0gPT09IFwiYXNjXCIgPyBcImRlc2NcIiA6IFwiYXNjXCI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBEZWZpbmUgYSBub3ZhIGNvbHVuYSBlIGEgZGlyZcOnw6NvIGRlIG9yZGVuYcOnw6NvIGNvbW8gXCJhc2NcIlxyXG4gICAgICB0aGlzLmN1cnJlbnRTb3J0Q29sdW1uID0gY29sdW1uO1xyXG4gICAgICB0aGlzLnNvcnREaXJlY3Rpb24gPSB7IFtjb2x1bW5dOiBcImRlc2NcIiB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJlYWxpemEgYSBvcmRlbmHDp8OjbyBkb3MgZGFkb3MgZGEgdGFiZWxhXHJcbiAgICB0aGlzLnNvcnREYXRhKCk7XHJcbiAgfVxyXG5cclxuICAvLyBGdW7Dp8OjbyBkZSBvcmRlbmHDp8OjbyBkb3MgZGFkb3MgZGEgdGFiZWxhXHJcbiAgcHJpdmF0ZSBzb3J0RGF0YSgpIHtcclxuXHJcbiAgICBpZiAodGhpcy5yZWNvcmRzTGlzdCkge1xyXG4gICAgICBjb25zdCBjb250cmF0b3NMaXN0ID0gdGhpcy5yZWNvcmRzTGlzdDtcclxuXHJcbiAgICAgIGNvbnRyYXRvc0xpc3Quc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBhdHRyaWJ1dGUgPSB0aGlzLmN1cnJlbnRTb3J0Q29sdW1uO1xyXG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHRoaXMuc29ydERpcmVjdGlvblthdHRyaWJ1dGVdO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlUHJvcGVydGllcyhhLCBiLCBhdHRyaWJ1dGUsIGRpcmVjdGlvbik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgfVxyXG5cclxuICAvLyBDb21wYXJhIG9zIHZhbG9yZXMgZGFzIHByb3ByaWVkYWRlcyBlbnRyZSBkb2lzIG9iamV0b3NcclxuICBwcml2YXRlIGNvbXBhcmVQcm9wZXJ0aWVzKGE6IGFueSwgYjogYW55LCBhdHRyaWJ1dGU6IHN0cmluZywgZGlyZWN0aW9uOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgY29uc3QgcHJvcGVydHlBID0gdGhpcy5nZXRQcm9wZXJ0eShhLCBhdHRyaWJ1dGUpO1xyXG4gICAgY29uc3QgcHJvcGVydHlCID0gdGhpcy5nZXRQcm9wZXJ0eShiLCBhdHRyaWJ1dGUpO1xyXG5cclxuICAgIGlmICh0eXBlb2YgcHJvcGVydHlBID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiBwcm9wZXJ0eUIgPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PT0gXCJhc2NcIiA/IHByb3BlcnR5QS5sb2NhbGVDb21wYXJlKHByb3BlcnR5QikgOiBwcm9wZXJ0eUIubG9jYWxlQ29tcGFyZShwcm9wZXJ0eUEpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwcm9wZXJ0eUEgPCBwcm9wZXJ0eUIpIHtcclxuICAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PT0gXCJhc2NcIiA/IC0xIDogMTtcclxuICAgIH1cclxuICAgIGlmIChwcm9wZXJ0eUEgPiBwcm9wZXJ0eUIpIHtcclxuICAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PT0gXCJhc2NcIiA/IDEgOiAtMTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gMDtcclxuICB9XHJcblxyXG4gIC8vIE9idMOpbSBvIHZhbG9yIGRlIHVtYSBwcm9wcmllZGFkZSBlc3BlY8OtZmljYSBkZSB1bSBvYmpldG9cclxuICBwcml2YXRlIGdldFByb3BlcnR5KG9iajogYW55LCBwYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHN0cmluZyB7XHJcbiAgICBpZiAodHlwZW9mIHBhdGggPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgcGF0aCA9IHBhdGguc3BsaXQoXCIuXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwYXRoLnJlZHVjZSgodmFsdWUsIHByb3BlcnR5KSA9PiB2YWx1ZSA/IHZhbHVlW3Byb3BlcnR5XSA6IFwiXCIsIG9iaik7XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb24gT3JkZXJpbmcsIFNvcnRpbmcgb3UgYXBlbmFzIE9yZGVuYcOnw6NvXHJcblxyXG4gIC8vICNlbmRyZWdpb24gPT09PT09PT09PT4gVVRJTFMgPD09PT09PT09PT1cclxuXHJcbn1cclxuIiwiQGlmIChyZWNvcmRzTGlzdCkge1xyXG4gICA8ZGl2IGNsYXNzPVwidGFibGUtbGlzdCB3LTEwMCBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cIm1zLTFcIj4gRXhpYmluZG8ge3sgaXRlbXNQZXJQYWdlIH19IGRlIHt7IHJlY29yZHNMaXN0Lmxlbmd0aCB9fSByZWdpc3Ryb3MgPC9zcGFuPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGFibGUtbGlzdCBvdmVyZmxvdy1oaWRkZW4gYm9yZGVyLWJvdHRvbS0wIHJvdW5kZWQtYm90dG9tIHJvdW5kZWRcIj5cclxuICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtaG92ZXIgYm9yZGVyIG1iLTBcIj5cclxuICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgaGVhZGVyIG9mIGhlYWRlcnNMaXN0XCIgc2NvcGU9XCJjb2xcIiBjbGFzcz1cInRleHQtZGFyay1ncmV5IHt7IGhlYWRlci5jb2wgfX0ge3sgaGVhZGVyLmN1c3RvbUNsYXNzZXMgfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAge3sgaGVhZGVyLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90aGVhZD5cclxuXHJcbiAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImJnLWxpZ2h0IGZhZGUtaW4tcm93XCI+XHJcbiAgICAgICAgICAgICAgIEBpZiAocmVjb3Jkc0xpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbaW5uZXJSb3dzXVwiPjwvbmctY29udGVudD5cclxuICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIDx0cj4gPHRkIGNvbHNwYW49XCIxMlwiIGNsYXNzPVwiYWxpZ24tbWlkZGxlXCI+PHNwYW4gY2xhc3M9XCJmdy1saWdodCBmc3QtaXRhbGljIHRleHQtY2VudGVyXCI+IENvbnN1bHRhIG7Do28gcmV0b3Jub3UgcmVnaXN0cm9zLi4uIDwvc3Bhbj48L3RkPiA8L3RyPlxyXG4gICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICA8IS0tICNyZWdpb24gSU1QTEVNRU5UQcOHw4NPIFBSw4lWSUEgLS0+XHJcbiAgICAgICAgICAgICAgIDwhLS0gQGZvciAoaXRlbSBvZiByZWNvcmRzTGlzdCB8IHBhZ2luYXRlOiB7IGl0ZW1zUGVyUGFnZTogaXRlbXNQZXJQYWdlLCBjdXJyZW50UGFnZTogcGFnZSB9OyB0cmFjayBpdGVtKSB7XHJcbiAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cImFsaWduLW1pZGRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgdGV4dC1kZWNvcmF0aW9uLW5vbmUgZnctYm9sZFwiIHRvb2x0aXA9XCJFZGl0YXIvVmlzdWFsaXphclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL3BhaW5lbC1wZXNzb2FzL2VkaXRhcicsIGl0ZW0uSURfUEVTU09BXVwiIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmVcIj57eyBpdGVtLlRYX05PTUVQRVNTT0EgfX08L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibWItMFwiPjxiPk5hdHVyYWxpZGFkZTo8L2I+IHt7IGl0ZW0uSVNfRVNUUkFOR0VJUk8gPyAnRXN0cmFuZ2VpcmEnIDogJ0JyYXNpbGVpcmEnIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgaXRlbS5UWF9ET0NVTUVOVE8gfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWVuZFwiPnt7IGl0ZW0uVElQT1BFU1NPQV9DRCA9PSBcIkZJU1wiID8gKGl0ZW0uRFRfTkFTQ0lNRU5UTyB8IGRhdGU6ICdkZC9NTS95eXl5JykgOiAoaXRlbS5EVF9GVU5EQUNBTyB8IGRhdGU6ICdkZC9NTS95eXl5JykgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibXktMFwiPjxiPkNyaWFkbyBlbTogPC9iPiB7eyBpdGVtLkRUX0NSSUFDQU8gfCBkYXRlOiAnZGQvTU0veXl5eSwgSEg6bW06c3MnIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm15LTBcIj48Yj7Dmmx0aW1hIGFsdGVyYcOnw6NvIGVtOiA8L2I+IHt7IChpdGVtLkRUX1VMVElNQUFMVEVSQUNBTyB8IGRhdGU6ICdkZC9NTS95eXl5JykgPT0gXCIwMS8wMS8xOTAwXCIgPyBcIk5lbmh1bWEgYWx0ZXJhw6fDo28gcmVjZW50ZVwiIDogaXRlbS5EVF9VTFRJTUFBTFRFUkFDQU8gfCBkYXRlOiAnZGQvTU0veXl5eSwgSEg6bW06c3MnIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1pY29uIGljb25OYW1lPVwiZWRpdGFyXCIgaWNvbkNvbG9yPVwiYmx1ZVwiIHRvb2x0aXA9XCJWaXN1YWxpemFyL0VkaXRhclwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIG1zLTJcIj4gPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIHJvbGU9XCJzd2l0Y2hcIiBbY2hlY2tlZF09XCJpdGVtLklTX0FDVElWRVwiPiA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgQGVtcHR5IHsgPHRyPiA8dGQgY29sc3Bhbj1cIjEyXCIgY2xhc3M9XCJhbGlnbi1taWRkbGVcIj48c3BhbiBjbGFzcz1cImZ3LWxpZ2h0IGZzdC1pdGFsaWMgdGV4dC1jZW50ZXJcIj4gQ29uc3VsdGEgbsOjbyByZXRvcm5vdSByZWdpc3Ryb3MuLi4gPC9zcGFuPjwvdGQ+IDwvdHI+IH0gLS0+XHJcbiAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiBJTVBMRU1FTlRBw4fDg08gUFLDiVZJQSAtLT5cclxuICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgPC90YWJsZT5cclxuXHJcbiAgICAgICAgIDwhLS0gI3JlZ2lvbiBQQUdJTkFUSU9OIC0tPlxyXG4gICAgICAgICA8ZGl2ICpuZ0lmPVwicmVjb3Jkc0xpc3QubGVuZ3RoID4gMFwiIGNsYXNzPVwiZC1mbGV4IG10LTJcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICdqdXN0aWZ5LWNvbnRlbnQtc3RhcnQnOiBwYWdpbmF0aW9uUGxhY2VtZW50ID09ICdzdGFydCcsXHJcbiAgICAgICAgICAgICAgICdqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJzogcGFnaW5hdGlvblBsYWNlbWVudCA9PSAnY2VudGVyJyxcclxuICAgICAgICAgICAgICAgJ2p1c3RpZnktY29udGVudC1lbmQnOiBwYWdpbmF0aW9uUGxhY2VtZW50ID09ICdlbmQnLFxyXG4gICAgICAgICAgICAgICAnanVzdGlmeS1jb250ZW50LWJldHdlZW4nOiBwYWdpbmF0aW9uUGxhY2VtZW50ID09ICdiZXR3ZWVuJ1xyXG4gICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm1lLTJcIiBzdHlsZT1cIndoaXRlLXNwYWNlOiBub3dyYXA7XCI+IEl0ZW5zIHBvciBww6FnaW5hIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdCBzZWxlY3Qtc2VhcmNoXCIgKGNoYW5nZSk9XCJvblNlbGVjdENoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGNvdW50IG9mIGNvdW50T3B0aW9uczsgbGV0IGkgPSBpbmRleFwiIFt2YWx1ZV09XCJjb3VudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJjb3VudE9wdGlvbnMubGVuZ3RoID4gMCAmJiBpID09IDBcIj57eyBjb3VudCB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8cGFnaW5hdGlvbi1jb250cm9scyBjbGFzcz1cInNwLXBhZ2luYXRpb24gbXQtM1wiIChwYWdlQ2hhbmdlKT1cInBhZ2UgPSAkZXZlbnRcIiBwcmV2aW91c0xhYmVsPVwiwqsmbmJzcDsmbmJzcDsmbmJzcDtcIiBuZXh0TGFiZWw9XCImbmJzcDsmbmJzcDsmbmJzcDvCu1wiIFttYXhTaXplXT1cIjVcIj48L3BhZ2luYXRpb24tY29udHJvbHM+XHJcbiAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICA8IS0tICNlbmRyZWdpb24gUEFHSU5BVElPTiAtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgIDwvZGl2PlxyXG59IEBlbHNlIHtcclxuICAgPGRpdiBjbGFzcz1cInctMTAwIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlclwiIHJvbGU9XCJzdGF0dXNcIj4gPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5DYXJyZWdhbmRvIGluZm9ybWHDp8O1ZXMuLi48L3NwYW4+IDwvZGl2PlxyXG4gICA8L2Rpdj5cclxufSJdfQ==
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNwLWluZnJhL3NyYy9saWIvd2lkZ2V0cy90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3AtaW5mcmEvc3JjL2xpYi93aWRnZXRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFPekcsTUFBTSxPQUFPLGNBQWM7SUE0QnpCLG9CQUFvQjtJQUVwQixnREFBZ0Q7SUFHaEQsK0NBQStDO0lBRS9DLHNCQUFzQjtJQUN0QixRQUFRO0lBQ1IseUJBQXlCO0lBRXpCLHVCQUF1QjtJQUN2QixRQUFRO0lBQ1IsMEJBQTBCO0lBRTFCLGtEQUFrRDtJQUdsRCxpREFBaUQ7SUFDakQ7UUE1QjJCLHdCQUFtQixHQUEyQyxLQUFLLENBQUM7UUFHOUUsdUJBQWtCLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDdEUsZUFBVSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBRXhFLFlBQU8sR0FBVyxDQUFDLENBQUM7UUFDckIsU0FBSSxHQUFXLENBQUMsQ0FBQztRQXFEeEIsK0NBQStDO1FBRTlDO1VBQ0U7UUFFRiw4REFBOEQ7UUFDOUQsa0JBQWEsR0FBOEIsRUFBRSxDQUFDO1FBRTlDLCtDQUErQztRQUMvQyxzQkFBaUIsR0FBVyxFQUFFLENBQUM7SUF6Q2YsQ0FBQztJQUVqQixRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7SUFFbEMsQ0FBQztJQUNELG9EQUFv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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcblxyXG4gIC8vICNyZWdpb24gPT09PT09PT09PT4gUFJPUEVSVElFUyA8PT09PT09PT09PVxyXG5cclxuICAvLyAjcmVnaW9uIFBSSVZBVEVcclxuICAvLyBbLi4uXVxyXG4gIC8vICNlbmRyZWdpb24gUFJJVkFURVxyXG5cclxuICAvLyAjcmVnaW9uIFBVQkxJQ1xyXG4gIEBJbnB1dCh7IGFsaWFzOiAnbGlzdCcsIHJlcXVpcmVkOiB0cnVlIH0pIHB1YmxpYyByZWNvcmRzTGlzdDogYW55W107XHJcbiAgQElucHV0KHsgYWxpYXM6ICdoZWFkZXJzJywgcmVxdWlyZWQ6IHRydWUgfSkgcHVibGljIGhlYWRlcnNMaXN0OiB7XHJcbiAgICBuYW1lOiBzdHJpbmcsXHJcbiAgICBjb2w6ICdjb2wnfCdjb2wtMSd8J2NvbC0yJ3wnY29sLTMnfCdjb2wtNCd8J2NvbC01J3wnY29sLTYnfCdjb2wtNyd8J2NvbC04J3wnY29sLTknfCdjb2wtMTAnfCdjb2wtMTEnfCdjb2wtMTInLFxyXG4gICAgaGFzT3JkZXJCeT86IGJvb2xlYW4sXHJcbiAgICBjdXN0b21DbGFzc2VzPzogc3RyaW5nXHJcbiAgfVtdO1xyXG4gIFxyXG4gIEBJbnB1dCh7IGFsaWFzOiAnY291bnRzJywgcmVxdWlyZWQ6IHRydWUgfSkgcHVibGljIGNvdW50T3B0aW9uczogbnVtYmVyW107XHJcblxyXG4gIEBJbnB1dCgncGxhY2VtZW50JykgcHVibGljIHBhZ2luYXRpb25QbGFjZW1lbnQ6ICdzdGFydCcgfCAnY2VudGVyJyB8ICdlbmQnIHwgJ2JldHdlZW4nID0gJ2VuZCc7XHJcblxyXG5cclxuICBAT3V0cHV0KCkgcHVibGljIGl0ZW1zUGVyUGFnZUNoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuICBAT3V0cHV0KCkgcHVibGljIHBhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcblxyXG4gIHB1YmxpYyBjb3VudGVyOiBudW1iZXIgPSAwO1xyXG5cdHB1YmxpYyBwYWdlOiBudW1iZXIgPSAxO1xyXG5cdHB1YmxpYyBpdGVtc1BlclBhZ2U6IG51bWJlcjtcclxuICAvLyAjZW5kcmVnaW9uIFBVQkxJQ1xyXG5cclxuICAvLyAjZW5kcmVnaW9uID09PT09PT09PT0+IFBST1BFUlRJRVMgPD09PT09PT09PT1cclxuXHJcblxyXG4gIC8vICNyZWdpb24gPT09PT09PT09PT4gRk9STSBCVUlMREVSIDw9PT09PT09PT09XHJcblxyXG4gIC8vICNyZWdpb24gRk9STSBGSUVMRFNcclxuICAvLyBbLi4uXVxyXG4gIC8vICNlbmRyZWdpb24gRk9STSBGSUVMRFNcclxuXHJcbiAgLy8gI3JlZ2lvbiBGT1JNIEJVSUxERVJcclxuICAvLyBbLi4uXVxyXG4gIC8vICNlbmRyZWdpb24gRk9STSBCVUlMREVSXHJcblxyXG4gIC8vICNlbmRyZWdpb24gPT09PT09PT09PT4gRk9STSBCVUlMREVSIDw9PT09PT09PT09XHJcblxyXG5cclxuICAvLyAjcmVnaW9uID09PT09PT09PT0+IElOSVRJQUxJWkFUSU9OIDw9PT09PT09PT09XHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLml0ZW1zUGVyUGFnZSA9IHRoaXMuY291bnRPcHRpb25zWzBdO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgXHJcbiAgfVxyXG4gIC8vICNlbmRyZWdpb24gPT09PT09PT09PT4gSU5JVElBTElaQVRJT04gPD09PT09PT09PT1cclxuXHJcblxyXG4gIC8vICNyZWdpb24gPT09PT09PT09PT4gVVRJTFMgPD09PT09PT09PT1cclxuICBcclxuICAvKiogTW9kaWZpY2EgYSBxdWFudGlkYWRlIGRlIGl0ZW5zIGEgc2VyIG1vc3RyYWRhIG5hIGxpc3RhLlxyXG5cdCAqIEBwYXJhbSBldmVudCBwYXLDom1ldHJvIGRlIGV2ZW50byBxdWUgaXLDoSBzZWxlY2lvbmFyIGEgbm92YSBxdWFudGlkYWRlLiAqL1xyXG5cdHB1YmxpYyBvblNlbGVjdENoYW5nZShldmVudDogYW55KSB7XHJcblx0XHR0aGlzLml0ZW1zUGVyUGFnZSA9IHBhcnNlSW50KGV2ZW50LnRhcmdldC52YWx1ZSwgMTApO1xyXG5cdFx0dGhpcy5wYWdlID0gMTtcclxuXHJcbiAgICB0aGlzLml0ZW1zUGVyUGFnZUNoYW5nZS5lbWl0KHRoaXMuaXRlbXNQZXJQYWdlKTtcclxuXHR9XHJcblxyXG5cdC8qKiBSZXNldGEgYSBwYWdpbmHDp8OjbyBkYSBsaXN0YWdlbS4gKi9cclxuXHRwdWJsaWMgcmVzZXRQYWdpbmF0aW9uKGxpc3Q6IGFueVtdKTogdm9pZCB7XHJcblx0XHQvLyBDw6FsY3VsbyBwYXJhIGVuY29udHJhciBvIHZhbG9yIGluaWNpYWwgZG8gaW5kZXggZGEgcMOhZ2luYSBhdHVhbFxyXG5cdFx0Y29uc3Qgc3RhcnRJbmRleCA9ICh0aGlzLnBhZ2UgLSAxKSAqIHRoaXMuaXRlbXNQZXJQYWdlO1xyXG5cclxuXHRcdC8vIENvbmRpw6fDo28gcGFyYSByZXNldGFyIG8gdmFsb3IgZGEgcGFnaW5hw6fDo29cclxuXHRcdGlmIChsaXN0Lmxlbmd0aCA8PSBzdGFydEluZGV4KSB7IHRoaXMucGFnZSA9IDE7IH1cclxuXHR9XHJcblxyXG5cdC8vI3JlZ2lvbiBPcmRlcmluZywgU29ydGluZyBvdSBhcGVuYXMgT3JkZW5hw6fDo29cclxuXHJcbiAgLyoqIE3DqXRvZG8gcXVlIGZheiBhIG9yZGVuYcOnw6NvIGRvcyBjb250cmF0b3MgbmEgdGVsYSBkZSBsaXN0YWdlbSwgZW0gY2FkYSB1bWEgZGFzIGPDqWx1bGFzIGRvIGNhYmXDp2FsaG8gZGEgdGFiZWxhLCBvbmRlIGNhZGEgdW0gZG9zIGVsZW1lbnRvcyA8dGg+IHJlcHJlc2VudGEgdW1hIGNvbHVuYSwgZGUgYWNvcmRvIGNvbSBhIGxpc3RhIGRlIGNvbnRyYXRvcyBxdWUgcmV0b3JuYSBkbyBiYWNrZW5kLlxyXG4gICovXHJcblxyXG4gIC8vIE9iamV0byBwYXJhIGFybWF6ZW5hciBhIGRpcmXDp8OjbyBkZSBvcmRlbmHDp8OjbyBkZSBjYWRhIGNvbHVuYVxyXG4gIHNvcnREaXJlY3Rpb246IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuXHJcbiAgLy8gQ29sdW5hIGF0dWFsbWVudGUgc2VsZWNpb25hZGEgcGFyYSBvcmRlbmHDp8Ojb1xyXG4gIGN1cnJlbnRTb3J0Q29sdW1uOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAvLyBGdW7Dp8OjbyBjaGFtYWRhIHF1YW5kbyBvY29ycmUgdW1hIG11ZGFuw6dhIG5hIG9yZGVuYcOnw6NvXHJcbiAgb25Tb3J0Q2hhbmdlKGV2ZW50OiB7IGRpcmVjdGlvbjogc3RyaW5nLCBjb2x1bW46IHN0cmluZyB9KSB7XHJcbiAgICBjb25zdCB7IGRpcmVjdGlvbiwgY29sdW1uIH0gPSBldmVudDtcclxuXHJcbiAgICAvLyBWZXJpZmljYSBzZSBhIGNvbHVuYSBhdHVhbG1lbnRlIHNlbGVjaW9uYWRhIMOpIGEgbWVzbWEgZGEgbm92YSBzZWxlw6fDo29cclxuICAgIGlmICh0aGlzLmN1cnJlbnRTb3J0Q29sdW1uID09PSBjb2x1bW4pIHtcclxuICAgICAgLy8gQWx0ZXJuYSBlbnRyZSBcImFzY1wiIGUgXCJkZXNjXCIgcGFyYSBhIGRpcmXDp8OjbyBkZSBvcmRlbmHDp8OjbyBkYSBjb2x1bmFcclxuICAgICAgdGhpcy5zb3J0RGlyZWN0aW9uW2NvbHVtbl0gPSB0aGlzLnNvcnREaXJlY3Rpb25bY29sdW1uXSA9PT0gXCJhc2NcIiA/IFwiZGVzY1wiIDogXCJhc2NcIjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIERlZmluZSBhIG5vdmEgY29sdW5hIGUgYSBkaXJlw6fDo28gZGUgb3JkZW5hw6fDo28gY29tbyBcImFzY1wiXHJcbiAgICAgIHRoaXMuY3VycmVudFNvcnRDb2x1bW4gPSBjb2x1bW47XHJcbiAgICAgIHRoaXMuc29ydERpcmVjdGlvbiA9IHsgW2NvbHVtbl06IFwiZGVzY1wiIH07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmVhbGl6YSBhIG9yZGVuYcOnw6NvIGRvcyBkYWRvcyBkYSB0YWJlbGFcclxuICAgIHRoaXMuc29ydERhdGEoKTtcclxuICB9XHJcblxyXG4gIC8vIEZ1bsOnw6NvIGRlIG9yZGVuYcOnw6NvIGRvcyBkYWRvcyBkYSB0YWJlbGFcclxuICBwcml2YXRlIHNvcnREYXRhKCkge1xyXG5cclxuICAgIGlmICh0aGlzLnJlY29yZHNMaXN0KSB7XHJcbiAgICAgIGNvbnN0IGNvbnRyYXRvc0xpc3QgPSB0aGlzLnJlY29yZHNMaXN0O1xyXG5cclxuICAgICAgY29udHJhdG9zTGlzdC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHRoaXMuY3VycmVudFNvcnRDb2x1bW47XHJcbiAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gdGhpcy5zb3J0RGlyZWN0aW9uW2F0dHJpYnV0ZV07XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmVQcm9wZXJ0aWVzKGEsIGIsIGF0dHJpYnV0ZSwgZGlyZWN0aW9uKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICB9XHJcblxyXG4gIC8vIENvbXBhcmEgb3MgdmFsb3JlcyBkYXMgcHJvcHJpZWRhZGVzIGVudHJlIGRvaXMgb2JqZXRvc1xyXG4gIHByaXZhdGUgY29tcGFyZVByb3BlcnRpZXMoYTogYW55LCBiOiBhbnksIGF0dHJpYnV0ZTogc3RyaW5nLCBkaXJlY3Rpb246IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICBjb25zdCBwcm9wZXJ0eUEgPSB0aGlzLmdldFByb3BlcnR5KGEsIGF0dHJpYnV0ZSk7XHJcbiAgICBjb25zdCBwcm9wZXJ0eUIgPSB0aGlzLmdldFByb3BlcnR5KGIsIGF0dHJpYnV0ZSk7XHJcblxyXG4gICAgaWYgKHR5cGVvZiBwcm9wZXJ0eUEgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIHByb3BlcnR5QiA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgICByZXR1cm4gZGlyZWN0aW9uID09PSBcImFzY1wiID8gcHJvcGVydHlBLmxvY2FsZUNvbXBhcmUocHJvcGVydHlCKSA6IHByb3BlcnR5Qi5sb2NhbGVDb21wYXJlKHByb3BlcnR5QSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHByb3BlcnR5QSA8IHByb3BlcnR5Qikge1xyXG4gICAgICByZXR1cm4gZGlyZWN0aW9uID09PSBcImFzY1wiID8gLTEgOiAxO1xyXG4gICAgfVxyXG4gICAgaWYgKHByb3BlcnR5QSA+IHByb3BlcnR5Qikge1xyXG4gICAgICByZXR1cm4gZGlyZWN0aW9uID09PSBcImFzY1wiID8gMSA6IC0xO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAwO1xyXG4gIH1cclxuXHJcbiAgLy8gT2J0w6ltIG8gdmFsb3IgZGUgdW1hIHByb3ByaWVkYWRlIGVzcGVjw61maWNhIGRlIHVtIG9iamV0b1xyXG4gIHByaXZhdGUgZ2V0UHJvcGVydHkob2JqOiBhbnksIHBhdGg6IHN0cmluZyB8IHN0cmluZ1tdKTogc3RyaW5nIHtcclxuICAgIGlmICh0eXBlb2YgcGF0aCA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgICBwYXRoID0gcGF0aC5zcGxpdChcIi5cIik7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHBhdGgucmVkdWNlKCh2YWx1ZSwgcHJvcGVydHkpID0+IHZhbHVlID8gdmFsdWVbcHJvcGVydHldIDogXCJcIiwgb2JqKTtcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvbiBPcmRlcmluZywgU29ydGluZyBvdSBhcGVuYXMgT3JkZW5hw6fDo29cclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiA9PT09PT09PT09PiBVVElMUyA8PT09PT09PT09PVxyXG5cclxufVxyXG4iLCJAaWYgKHJlY29yZHNMaXN0KSB7XHJcbiAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1saXN0IHctMTAwIHBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibXMtMVwiPiBFeGliaW5kbyB7eyBpdGVtc1BlclBhZ2UgPD0gcmVjb3Jkc0xpc3QubGVuZ3RoID8gaXRlbXNQZXJQYWdlIDogcmVjb3Jkc0xpc3QubGVuZ3RoIH19IGRlIHt7IHJlY29yZHNMaXN0Lmxlbmd0aCB9fSByZWdpc3Ryb3MgPC9zcGFuPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGFibGUtbGlzdCBvdmVyZmxvdy1oaWRkZW4gYm9yZGVyLWJvdHRvbS0wIHJvdW5kZWQtYm90dG9tIHJvdW5kZWRcIj5cclxuICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtaG92ZXIgYm9yZGVyIG1iLTBcIj5cclxuICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgaGVhZGVyIG9mIGhlYWRlcnNMaXN0XCIgc2NvcGU9XCJjb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFsaWduLW1pZGRsZSB0ZXh0LWRhcmstZ3JleSB7eyBoZWFkZXIuY29sIH19IHt7IGhlYWRlci5jdXN0b21DbGFzc2VzIH19XCI+IHt7IGhlYWRlci5uYW1lIH19IDwvdGg+XHJcbiAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGhlYWQ+XHJcblxyXG4gICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJiZy1saWdodCBmYWRlLWluLXJvd1wiPlxyXG4gICAgICAgICAgICAgICBAaWYgKHJlY29yZHNMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2lubmVyUm93c11cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICA8dHI+IDx0ZCBjb2xzcGFuPVwiMTJcIiBjbGFzcz1cImFsaWduLW1pZGRsZVwiPjxzcGFuIGNsYXNzPVwiZnctbGlnaHQgZnN0LWl0YWxpYyB0ZXh0LWNlbnRlclwiPiBDb25zdWx0YSBuw6NvIHJldG9ybm91IHJlZ2lzdHJvcy4uLiA8L3NwYW4+PC90ZD4gPC90cj5cclxuICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIElNUExFTUVOVEHDh8ODTyBQUsOJVklBIC0tPlxyXG4gICAgICAgICAgICAgICA8IS0tIEBmb3IgKGl0ZW0gb2YgcmVjb3Jkc0xpc3QgfCBwYWdpbmF0ZTogeyBpdGVtc1BlclBhZ2U6IGl0ZW1zUGVyUGFnZSwgY3VycmVudFBhZ2U6IHBhZ2UgfTsgdHJhY2sgaXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJhbGlnbi1taWRkbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGNsYXNzPVwidGV4dC1wcmltYXJ5IHRleHQtZGVjb3JhdGlvbi1ub25lIGZ3LWJvbGRcIiB0b29sdGlwPVwiRWRpdGFyL1Zpc3VhbGl6YXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9wYWluZWwtcGVzc29hcy9lZGl0YXInLCBpdGVtLklEX1BFU1NPQV1cIiByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlXCI+e3sgaXRlbS5UWF9OT01FUEVTU09BIH19PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1iLTBcIj48Yj5OYXR1cmFsaWRhZGU6PC9iPiB7eyBpdGVtLklTX0VTVFJBTkdFSVJPID8gJ0VzdHJhbmdlaXJhJyA6ICdCcmFzaWxlaXJhJyB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGl0ZW0uVFhfRE9DVU1FTlRPIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1lbmRcIj57eyBpdGVtLlRJUE9QRVNTT0FfQ0QgPT0gXCJGSVNcIiA/IChpdGVtLkRUX05BU0NJTUVOVE8gfCBkYXRlOiAnZGQvTU0veXl5eScpIDogKGl0ZW0uRFRfRlVOREFDQU8gfCBkYXRlOiAnZGQvTU0veXl5eScpIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm15LTBcIj48Yj5DcmlhZG8gZW06IDwvYj4ge3sgaXRlbS5EVF9DUklBQ0FPIHwgZGF0ZTogJ2RkL01NL3l5eXksIEhIOm1tOnNzJyB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJteS0wXCI+PGI+w5psdGltYSBhbHRlcmHDp8OjbyBlbTogPC9iPiB7eyAoaXRlbS5EVF9VTFRJTUFBTFRFUkFDQU8gfCBkYXRlOiAnZGQvTU0veXl5eScpID09IFwiMDEvMDEvMTkwMFwiID8gXCJOZW5odW1hIGFsdGVyYcOnw6NvIHJlY2VudGVcIiA6IGl0ZW0uRFRfVUxUSU1BQUxURVJBQ0FPIHwgZGF0ZTogJ2RkL01NL3l5eXksIEhIOm1tOnNzJyB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItaWNvbiBpY29uTmFtZT1cImVkaXRhclwiIGljb25Db2xvcj1cImJsdWVcIiB0b29sdGlwPVwiVmlzdWFsaXphci9FZGl0YXJcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBtcy0yXCI+IDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIiByb2xlPVwic3dpdGNoXCIgW2NoZWNrZWRdPVwiaXRlbS5JU19BQ1RJVkVcIj4gPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIEBlbXB0eSB7IDx0cj4gPHRkIGNvbHNwYW49XCIxMlwiIGNsYXNzPVwiYWxpZ24tbWlkZGxlXCI+PHNwYW4gY2xhc3M9XCJmdy1saWdodCBmc3QtaXRhbGljIHRleHQtY2VudGVyXCI+IENvbnN1bHRhIG7Do28gcmV0b3Jub3UgcmVnaXN0cm9zLi4uIDwvc3Bhbj48L3RkPiA8L3RyPiB9IC0tPlxyXG4gICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gSU1QTEVNRU5UQcOHw4NPIFBSw4lWSUEgLS0+XHJcbiAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgIDwvdGFibGU+XHJcblxyXG4gICAgICAgICA8IS0tICNyZWdpb24gUEFHSU5BVElPTiAtLT5cclxuICAgICAgICAgPGRpdiAqbmdJZj1cInJlY29yZHNMaXN0Lmxlbmd0aCA+IDBcIiBjbGFzcz1cImQtZmxleCBtdC0yXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAnanVzdGlmeS1jb250ZW50LXN0YXJ0JzogcGFnaW5hdGlvblBsYWNlbWVudCA9PSAnc3RhcnQnLFxyXG4gICAgICAgICAgICAgICAnanVzdGlmeS1jb250ZW50LWNlbnRlcic6IHBhZ2luYXRpb25QbGFjZW1lbnQgPT0gJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgICdqdXN0aWZ5LWNvbnRlbnQtZW5kJzogcGFnaW5hdGlvblBsYWNlbWVudCA9PSAnZW5kJyxcclxuICAgICAgICAgICAgICAgJ2p1c3RpZnktY29udGVudC1iZXR3ZWVuJzogcGFnaW5hdGlvblBsYWNlbWVudCA9PSAnYmV0d2VlbidcclxuICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtZS0yXCIgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm93cmFwO1wiPiBJdGVucyBwb3IgcMOhZ2luYSA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1zZWxlY3Qgc2VsZWN0LXNlYXJjaFwiIChjaGFuZ2UpPVwib25TZWxlY3RDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjb3VudCBvZiBjb3VudE9wdGlvbnM7IGxldCBpID0gaW5kZXhcIiBbdmFsdWVdPVwiY291bnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwiY291bnRPcHRpb25zLmxlbmd0aCA+IDAgJiYgaSA9PSAwXCI+e3sgY291bnQgfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPHBhZ2luYXRpb24tY29udHJvbHMgY2xhc3M9XCJzcC1wYWdpbmF0aW9uIG10LTNcIiAocGFnZUNoYW5nZSk9XCJwYWdlID0gJGV2ZW50OyBwYWdlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiIHByZXZpb3VzTGFiZWw9XCLCqyZuYnNwOyZuYnNwOyZuYnNwO1wiIG5leHRMYWJlbD1cIiZuYnNwOyZuYnNwOyZuYnNwO8K7XCIgW21heFNpemVdPVwiNVwiPjwvcGFnaW5hdGlvbi1jb250cm9scz5cclxuICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiBQQUdJTkFUSU9OIC0tPlxyXG4gICAgICA8L2Rpdj5cclxuICAgPC9kaXY+XHJcbn0gQGVsc2Uge1xyXG4gICA8ZGl2IGNsYXNzPVwidy0xMDAgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyXCIgcm9sZT1cInN0YXR1c1wiPiA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPkNhcnJlZ2FuZG8gaW5mb3JtYcOnw7Vlcy4uLjwvc3Bhbj4gPC9kaXY+XHJcbiAgIDwvZGl2PlxyXG59Il19
@@ -2126,6 +2126,8 @@ class TableComponent {
2126
2126
  // #region ==========> INITIALIZATION <==========
2127
2127
  constructor() {
2128
2128
  this.paginationPlacement = 'end';
2129
+ this.itemsPerPageChange = new EventEmitter();
2130
+ this.pageChange = new EventEmitter();
2129
2131
  this.counter = 0;
2130
2132
  this.page = 1;
2131
2133
  //#region Ordering, Sorting ou apenas Ordenação
@@ -2148,6 +2150,7 @@ class TableComponent {
2148
2150
  onSelectChange(event) {
2149
2151
  this.itemsPerPage = parseInt(event.target.value, 10);
2150
2152
  this.page = 1;
2153
+ this.itemsPerPageChange.emit(this.itemsPerPage);
2151
2154
  }
2152
2155
  /** Reseta a paginação da listagem. */
2153
2156
  resetPagination(list) {
@@ -2208,11 +2211,11 @@ class TableComponent {
2208
2211
  return path.reduce((value, property) => value ? value[property] : "", obj);
2209
2212
  }
2210
2213
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: TableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2211
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: TableComponent, selector: "lib-table", inputs: { recordsList: ["list", "recordsList"], headersList: ["headers", "headersList"], countOptions: ["counts", "countOptions"], paginationPlacement: ["placement", "paginationPlacement"] }, usesOnChanges: true, ngImport: i0, template: "@if (recordsList) {\r\n <div class=\"table-list w-100 position-relative\">\r\n <span class=\"ms-1\"> Exibindo {{ itemsPerPage }} de {{ recordsList.length }} registros </span>\r\n <div class=\"table-list overflow-hidden border-bottom-0 rounded-bottom rounded\">\r\n <table class=\"table table-hover border mb-0\">\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let header of headersList\" scope=\"col\" class=\"text-dark-grey {{ header.col }} {{ header.customClasses }}\">\r\n {{ header.name }}\r\n </th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody class=\"bg-light fade-in-row\">\r\n @if (recordsList.length > 0) {\r\n <ng-content select=\"[innerRows]\"></ng-content>\r\n }\r\n @else {\r\n <tr> <td colspan=\"12\" class=\"align-middle\"><span class=\"fw-light fst-italic text-center\"> Consulta n\u00E3o retornou registros... </span></td> </tr>\r\n }\r\n\r\n <!-- #region IMPLEMENTA\u00C7\u00C3O PR\u00C9VIA -->\r\n <!-- @for (item of recordsList | paginate: { itemsPerPage: itemsPerPage, currentPage: page }; track item) {\r\n <tr class=\"align-middle\">\r\n <td><a class=\"text-primary text-decoration-none fw-bold\" tooltip=\"Editar/Visualizar\"\r\n [routerLink]=\"['/painel-pessoas/editar', item.ID_PESSOA]\" routerLinkActive=\"active\">{{ item.TX_NOMEPESSOA }}</a>\r\n <p class=\"mb-0\"><b>Naturalidade:</b> {{ item.IS_ESTRANGEIRO ? 'Estrangeira' : 'Brasileira' }}</p>\r\n </td>\r\n <td>{{ item.TX_DOCUMENTO }}</td>\r\n <td class=\"text-end\">{{ item.TIPOPESSOA_CD == \"FIS\" ? (item.DT_NASCIMENTO | date: 'dd/MM/yyyy') : (item.DT_FUNDACAO | date: 'dd/MM/yyyy') }}</td>\r\n <td>\r\n <p class=\"my-0\"><b>Criado em: </b> {{ item.DT_CRIACAO | date: 'dd/MM/yyyy, HH:mm:ss' }}</p>\r\n <p class=\"my-0\"><b>\u00DAltima altera\u00E7\u00E3o em: </b> {{ (item.DT_ULTIMAALTERACAO | date: 'dd/MM/yyyy') == \"01/01/1900\" ? \"Nenhuma altera\u00E7\u00E3o recente\" : item.DT_ULTIMAALTERACAO | date: 'dd/MM/yyyy, HH:mm:ss' }}</p>\r\n </td>\r\n <td>\r\n <div class=\"d-flex flex-row align-items-center justify-content-end\">\r\n <lib-icon iconName=\"editar\" iconColor=\"blue\" tooltip=\"Visualizar/Editar\" />\r\n <div class=\"form-check form-switch ms-2\"> <input class=\"form-check-input\" type=\"checkbox\" role=\"switch\" [checked]=\"item.IS_ACTIVE\"> </div>\r\n </div>\r\n </td>\r\n </tr>\r\n }\r\n @empty { <tr> <td colspan=\"12\" class=\"align-middle\"><span class=\"fw-light fst-italic text-center\"> Consulta n\u00E3o retornou registros... </span></td> </tr> } -->\r\n <!-- #endregion IMPLEMENTA\u00C7\u00C3O PR\u00C9VIA -->\r\n </tbody>\r\n </table>\r\n\r\n <!-- #region PAGINATION -->\r\n <div *ngIf=\"recordsList.length > 0\" class=\"d-flex mt-2\"\r\n [ngClass]=\"{\r\n 'justify-content-start': paginationPlacement == 'start',\r\n 'justify-content-center': paginationPlacement == 'center',\r\n 'justify-content-end': paginationPlacement == 'end',\r\n 'justify-content-between': paginationPlacement == 'between'\r\n }\">\r\n <div class=\"d-flex align-items-center\">\r\n <label class=\"me-2\" style=\"white-space: nowrap;\"> Itens por p\u00E1gina </label>\r\n <select class=\"form-select select-search\" (change)=\"onSelectChange($event)\">\r\n <option *ngFor=\"let count of countOptions; let i = index\" [value]=\"count\"\r\n [selected]=\"countOptions.length > 0 && i == 0\">{{ count }}</option>\r\n </select>\r\n </div>\r\n\r\n <pagination-controls class=\"sp-pagination mt-3\" (pageChange)=\"page = $event\" previousLabel=\"\u00AB&nbsp;&nbsp;&nbsp;\" nextLabel=\"&nbsp;&nbsp;&nbsp;\u00BB\" [maxSize]=\"5\"></pagination-controls>\r\n </div>\r\n <!-- #endregion PAGINATION -->\r\n </div>\r\n </div>\r\n} @else {\r\n <div class=\"w-100 text-center\">\r\n <div class=\"spinner-border\" role=\"status\"> <span class=\"visually-hidden\">Carregando informa\u00E7\u00F5es...</span> </div>\r\n </div>\r\n}", styles: [".sp-pagination ::ng-deep .ngx-pagination .current{background:#3767b2;border-radius:.375rem}.sp-pagination ::ng-deep .ngx-pagination a:hover,.sp-pagination ::ng-deep .ngx-pagination button:hover{border-radius:.375rem}.sp-pagination ::ng-deep .ngx-pagination .pagination-previous a:before,.sp-pagination ::ng-deep .ngx-pagination .pagination-previous.disabled:before{content:\"\";display:inline-block;margin-right:.5rem}.sp-pagination ::ng-deep .ngx-pagination .pagination-next a:after,.sp-pagination ::ng-deep .ngx-pagination .pagination-next.disabled:after{content:\"\";display:inline-block;margin-left:.5rem}.text-dark-grey{color:#63676b!important}table{border-color:#c4c4c4}table thead{height:50px;font-size:1rem;background-color:#e9ecef}table tbody{font-size:.875rem}table tbody>tr{height:50px}table tbody>tr:hover{background-color:#cce5ff}table.table>tbody{border-top:none}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "component", type: i3.PaginationControlsComponent, selector: "pagination-controls", inputs: ["id", "maxSize", "directionLinks", "autoHide", "responsive", "previousLabel", "nextLabel", "screenReaderPaginationLabel", "screenReaderPageLabel", "screenReaderCurrentLabel"], outputs: ["pageChange", "pageBoundsCorrection"] }] }); }
2214
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: TableComponent, selector: "lib-table", inputs: { recordsList: ["list", "recordsList"], headersList: ["headers", "headersList"], countOptions: ["counts", "countOptions"], paginationPlacement: ["placement", "paginationPlacement"] }, outputs: { itemsPerPageChange: "itemsPerPageChange", pageChange: "pageChange" }, usesOnChanges: true, ngImport: i0, template: "@if (recordsList) {\r\n <div class=\"table-list w-100 position-relative\">\r\n <span class=\"ms-1\"> Exibindo {{ itemsPerPage <= recordsList.length ? itemsPerPage : recordsList.length }} de {{ recordsList.length }} registros </span>\r\n <div class=\"table-list overflow-hidden border-bottom-0 rounded-bottom rounded\">\r\n <table class=\"table table-hover border mb-0\">\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let header of headersList\" scope=\"col\"\r\n class=\"align-middle text-dark-grey {{ header.col }} {{ header.customClasses }}\"> {{ header.name }} </th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody class=\"bg-light fade-in-row\">\r\n @if (recordsList.length > 0) {\r\n <ng-content select=\"[innerRows]\"></ng-content>\r\n }\r\n @else {\r\n <tr> <td colspan=\"12\" class=\"align-middle\"><span class=\"fw-light fst-italic text-center\"> Consulta n\u00E3o retornou registros... </span></td> </tr>\r\n }\r\n\r\n <!-- #region IMPLEMENTA\u00C7\u00C3O PR\u00C9VIA -->\r\n <!-- @for (item of recordsList | paginate: { itemsPerPage: itemsPerPage, currentPage: page }; track item) {\r\n <tr class=\"align-middle\">\r\n <td><a class=\"text-primary text-decoration-none fw-bold\" tooltip=\"Editar/Visualizar\"\r\n [routerLink]=\"['/painel-pessoas/editar', item.ID_PESSOA]\" routerLinkActive=\"active\">{{ item.TX_NOMEPESSOA }}</a>\r\n <p class=\"mb-0\"><b>Naturalidade:</b> {{ item.IS_ESTRANGEIRO ? 'Estrangeira' : 'Brasileira' }}</p>\r\n </td>\r\n <td>{{ item.TX_DOCUMENTO }}</td>\r\n <td class=\"text-end\">{{ item.TIPOPESSOA_CD == \"FIS\" ? (item.DT_NASCIMENTO | date: 'dd/MM/yyyy') : (item.DT_FUNDACAO | date: 'dd/MM/yyyy') }}</td>\r\n <td>\r\n <p class=\"my-0\"><b>Criado em: </b> {{ item.DT_CRIACAO | date: 'dd/MM/yyyy, HH:mm:ss' }}</p>\r\n <p class=\"my-0\"><b>\u00DAltima altera\u00E7\u00E3o em: </b> {{ (item.DT_ULTIMAALTERACAO | date: 'dd/MM/yyyy') == \"01/01/1900\" ? \"Nenhuma altera\u00E7\u00E3o recente\" : item.DT_ULTIMAALTERACAO | date: 'dd/MM/yyyy, HH:mm:ss' }}</p>\r\n </td>\r\n <td>\r\n <div class=\"d-flex flex-row align-items-center justify-content-end\">\r\n <lib-icon iconName=\"editar\" iconColor=\"blue\" tooltip=\"Visualizar/Editar\" />\r\n <div class=\"form-check form-switch ms-2\"> <input class=\"form-check-input\" type=\"checkbox\" role=\"switch\" [checked]=\"item.IS_ACTIVE\"> </div>\r\n </div>\r\n </td>\r\n </tr>\r\n }\r\n @empty { <tr> <td colspan=\"12\" class=\"align-middle\"><span class=\"fw-light fst-italic text-center\"> Consulta n\u00E3o retornou registros... </span></td> </tr> } -->\r\n <!-- #endregion IMPLEMENTA\u00C7\u00C3O PR\u00C9VIA -->\r\n </tbody>\r\n </table>\r\n\r\n <!-- #region PAGINATION -->\r\n <div *ngIf=\"recordsList.length > 0\" class=\"d-flex mt-2\"\r\n [ngClass]=\"{\r\n 'justify-content-start': paginationPlacement == 'start',\r\n 'justify-content-center': paginationPlacement == 'center',\r\n 'justify-content-end': paginationPlacement == 'end',\r\n 'justify-content-between': paginationPlacement == 'between'\r\n }\">\r\n <div class=\"d-flex align-items-center\">\r\n <label class=\"me-2\" style=\"white-space: nowrap;\"> Itens por p\u00E1gina </label>\r\n <select class=\"form-select select-search\" (change)=\"onSelectChange($event)\">\r\n <option *ngFor=\"let count of countOptions; let i = index\" [value]=\"count\"\r\n [selected]=\"countOptions.length > 0 && i == 0\">{{ count }}</option>\r\n </select>\r\n </div>\r\n\r\n <pagination-controls class=\"sp-pagination mt-3\" (pageChange)=\"page = $event; pageChange.emit($event)\" previousLabel=\"\u00AB&nbsp;&nbsp;&nbsp;\" nextLabel=\"&nbsp;&nbsp;&nbsp;\u00BB\" [maxSize]=\"5\"></pagination-controls>\r\n </div>\r\n <!-- #endregion PAGINATION -->\r\n </div>\r\n </div>\r\n} @else {\r\n <div class=\"w-100 text-center\">\r\n <div class=\"spinner-border\" role=\"status\"> <span class=\"visually-hidden\">Carregando informa\u00E7\u00F5es...</span> </div>\r\n </div>\r\n}", styles: [".sp-pagination ::ng-deep .ngx-pagination .current{background:#3767b2;border-radius:.375rem}.sp-pagination ::ng-deep .ngx-pagination a:hover,.sp-pagination ::ng-deep .ngx-pagination button:hover{border-radius:.375rem}.sp-pagination ::ng-deep .ngx-pagination .pagination-previous a:before,.sp-pagination ::ng-deep .ngx-pagination .pagination-previous.disabled:before{content:\"\";display:inline-block;margin-right:.5rem}.sp-pagination ::ng-deep .ngx-pagination .pagination-next a:after,.sp-pagination ::ng-deep .ngx-pagination .pagination-next.disabled:after{content:\"\";display:inline-block;margin-left:.5rem}.text-dark-grey{color:#63676b!important}table{border-color:#c4c4c4}table thead{height:50px;font-size:1rem;background-color:#e9ecef}table tbody{font-size:.875rem}table tbody>tr{height:50px}table tbody>tr:hover{background-color:#cce5ff}table.table>tbody{border-top:none}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "component", type: i3.PaginationControlsComponent, selector: "pagination-controls", inputs: ["id", "maxSize", "directionLinks", "autoHide", "responsive", "previousLabel", "nextLabel", "screenReaderPaginationLabel", "screenReaderPageLabel", "screenReaderCurrentLabel"], outputs: ["pageChange", "pageBoundsCorrection"] }] }); }
2212
2215
  }
2213
2216
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: TableComponent, decorators: [{
2214
2217
  type: Component,
2215
- args: [{ selector: 'lib-table', template: "@if (recordsList) {\r\n <div class=\"table-list w-100 position-relative\">\r\n <span class=\"ms-1\"> Exibindo {{ itemsPerPage }} de {{ recordsList.length }} registros </span>\r\n <div class=\"table-list overflow-hidden border-bottom-0 rounded-bottom rounded\">\r\n <table class=\"table table-hover border mb-0\">\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let header of headersList\" scope=\"col\" class=\"text-dark-grey {{ header.col }} {{ header.customClasses }}\">\r\n {{ header.name }}\r\n </th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody class=\"bg-light fade-in-row\">\r\n @if (recordsList.length > 0) {\r\n <ng-content select=\"[innerRows]\"></ng-content>\r\n }\r\n @else {\r\n <tr> <td colspan=\"12\" class=\"align-middle\"><span class=\"fw-light fst-italic text-center\"> Consulta n\u00E3o retornou registros... </span></td> </tr>\r\n }\r\n\r\n <!-- #region IMPLEMENTA\u00C7\u00C3O PR\u00C9VIA -->\r\n <!-- @for (item of recordsList | paginate: { itemsPerPage: itemsPerPage, currentPage: page }; track item) {\r\n <tr class=\"align-middle\">\r\n <td><a class=\"text-primary text-decoration-none fw-bold\" tooltip=\"Editar/Visualizar\"\r\n [routerLink]=\"['/painel-pessoas/editar', item.ID_PESSOA]\" routerLinkActive=\"active\">{{ item.TX_NOMEPESSOA }}</a>\r\n <p class=\"mb-0\"><b>Naturalidade:</b> {{ item.IS_ESTRANGEIRO ? 'Estrangeira' : 'Brasileira' }}</p>\r\n </td>\r\n <td>{{ item.TX_DOCUMENTO }}</td>\r\n <td class=\"text-end\">{{ item.TIPOPESSOA_CD == \"FIS\" ? (item.DT_NASCIMENTO | date: 'dd/MM/yyyy') : (item.DT_FUNDACAO | date: 'dd/MM/yyyy') }}</td>\r\n <td>\r\n <p class=\"my-0\"><b>Criado em: </b> {{ item.DT_CRIACAO | date: 'dd/MM/yyyy, HH:mm:ss' }}</p>\r\n <p class=\"my-0\"><b>\u00DAltima altera\u00E7\u00E3o em: </b> {{ (item.DT_ULTIMAALTERACAO | date: 'dd/MM/yyyy') == \"01/01/1900\" ? \"Nenhuma altera\u00E7\u00E3o recente\" : item.DT_ULTIMAALTERACAO | date: 'dd/MM/yyyy, HH:mm:ss' }}</p>\r\n </td>\r\n <td>\r\n <div class=\"d-flex flex-row align-items-center justify-content-end\">\r\n <lib-icon iconName=\"editar\" iconColor=\"blue\" tooltip=\"Visualizar/Editar\" />\r\n <div class=\"form-check form-switch ms-2\"> <input class=\"form-check-input\" type=\"checkbox\" role=\"switch\" [checked]=\"item.IS_ACTIVE\"> </div>\r\n </div>\r\n </td>\r\n </tr>\r\n }\r\n @empty { <tr> <td colspan=\"12\" class=\"align-middle\"><span class=\"fw-light fst-italic text-center\"> Consulta n\u00E3o retornou registros... </span></td> </tr> } -->\r\n <!-- #endregion IMPLEMENTA\u00C7\u00C3O PR\u00C9VIA -->\r\n </tbody>\r\n </table>\r\n\r\n <!-- #region PAGINATION -->\r\n <div *ngIf=\"recordsList.length > 0\" class=\"d-flex mt-2\"\r\n [ngClass]=\"{\r\n 'justify-content-start': paginationPlacement == 'start',\r\n 'justify-content-center': paginationPlacement == 'center',\r\n 'justify-content-end': paginationPlacement == 'end',\r\n 'justify-content-between': paginationPlacement == 'between'\r\n }\">\r\n <div class=\"d-flex align-items-center\">\r\n <label class=\"me-2\" style=\"white-space: nowrap;\"> Itens por p\u00E1gina </label>\r\n <select class=\"form-select select-search\" (change)=\"onSelectChange($event)\">\r\n <option *ngFor=\"let count of countOptions; let i = index\" [value]=\"count\"\r\n [selected]=\"countOptions.length > 0 && i == 0\">{{ count }}</option>\r\n </select>\r\n </div>\r\n\r\n <pagination-controls class=\"sp-pagination mt-3\" (pageChange)=\"page = $event\" previousLabel=\"\u00AB&nbsp;&nbsp;&nbsp;\" nextLabel=\"&nbsp;&nbsp;&nbsp;\u00BB\" [maxSize]=\"5\"></pagination-controls>\r\n </div>\r\n <!-- #endregion PAGINATION -->\r\n </div>\r\n </div>\r\n} @else {\r\n <div class=\"w-100 text-center\">\r\n <div class=\"spinner-border\" role=\"status\"> <span class=\"visually-hidden\">Carregando informa\u00E7\u00F5es...</span> </div>\r\n </div>\r\n}", styles: [".sp-pagination ::ng-deep .ngx-pagination .current{background:#3767b2;border-radius:.375rem}.sp-pagination ::ng-deep .ngx-pagination a:hover,.sp-pagination ::ng-deep .ngx-pagination button:hover{border-radius:.375rem}.sp-pagination ::ng-deep .ngx-pagination .pagination-previous a:before,.sp-pagination ::ng-deep .ngx-pagination .pagination-previous.disabled:before{content:\"\";display:inline-block;margin-right:.5rem}.sp-pagination ::ng-deep .ngx-pagination .pagination-next a:after,.sp-pagination ::ng-deep .ngx-pagination .pagination-next.disabled:after{content:\"\";display:inline-block;margin-left:.5rem}.text-dark-grey{color:#63676b!important}table{border-color:#c4c4c4}table thead{height:50px;font-size:1rem;background-color:#e9ecef}table tbody{font-size:.875rem}table tbody>tr{height:50px}table tbody>tr:hover{background-color:#cce5ff}table.table>tbody{border-top:none}\n"] }]
2218
+ args: [{ selector: 'lib-table', template: "@if (recordsList) {\r\n <div class=\"table-list w-100 position-relative\">\r\n <span class=\"ms-1\"> Exibindo {{ itemsPerPage <= recordsList.length ? itemsPerPage : recordsList.length }} de {{ recordsList.length }} registros </span>\r\n <div class=\"table-list overflow-hidden border-bottom-0 rounded-bottom rounded\">\r\n <table class=\"table table-hover border mb-0\">\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let header of headersList\" scope=\"col\"\r\n class=\"align-middle text-dark-grey {{ header.col }} {{ header.customClasses }}\"> {{ header.name }} </th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody class=\"bg-light fade-in-row\">\r\n @if (recordsList.length > 0) {\r\n <ng-content select=\"[innerRows]\"></ng-content>\r\n }\r\n @else {\r\n <tr> <td colspan=\"12\" class=\"align-middle\"><span class=\"fw-light fst-italic text-center\"> Consulta n\u00E3o retornou registros... </span></td> </tr>\r\n }\r\n\r\n <!-- #region IMPLEMENTA\u00C7\u00C3O PR\u00C9VIA -->\r\n <!-- @for (item of recordsList | paginate: { itemsPerPage: itemsPerPage, currentPage: page }; track item) {\r\n <tr class=\"align-middle\">\r\n <td><a class=\"text-primary text-decoration-none fw-bold\" tooltip=\"Editar/Visualizar\"\r\n [routerLink]=\"['/painel-pessoas/editar', item.ID_PESSOA]\" routerLinkActive=\"active\">{{ item.TX_NOMEPESSOA }}</a>\r\n <p class=\"mb-0\"><b>Naturalidade:</b> {{ item.IS_ESTRANGEIRO ? 'Estrangeira' : 'Brasileira' }}</p>\r\n </td>\r\n <td>{{ item.TX_DOCUMENTO }}</td>\r\n <td class=\"text-end\">{{ item.TIPOPESSOA_CD == \"FIS\" ? (item.DT_NASCIMENTO | date: 'dd/MM/yyyy') : (item.DT_FUNDACAO | date: 'dd/MM/yyyy') }}</td>\r\n <td>\r\n <p class=\"my-0\"><b>Criado em: </b> {{ item.DT_CRIACAO | date: 'dd/MM/yyyy, HH:mm:ss' }}</p>\r\n <p class=\"my-0\"><b>\u00DAltima altera\u00E7\u00E3o em: </b> {{ (item.DT_ULTIMAALTERACAO | date: 'dd/MM/yyyy') == \"01/01/1900\" ? \"Nenhuma altera\u00E7\u00E3o recente\" : item.DT_ULTIMAALTERACAO | date: 'dd/MM/yyyy, HH:mm:ss' }}</p>\r\n </td>\r\n <td>\r\n <div class=\"d-flex flex-row align-items-center justify-content-end\">\r\n <lib-icon iconName=\"editar\" iconColor=\"blue\" tooltip=\"Visualizar/Editar\" />\r\n <div class=\"form-check form-switch ms-2\"> <input class=\"form-check-input\" type=\"checkbox\" role=\"switch\" [checked]=\"item.IS_ACTIVE\"> </div>\r\n </div>\r\n </td>\r\n </tr>\r\n }\r\n @empty { <tr> <td colspan=\"12\" class=\"align-middle\"><span class=\"fw-light fst-italic text-center\"> Consulta n\u00E3o retornou registros... </span></td> </tr> } -->\r\n <!-- #endregion IMPLEMENTA\u00C7\u00C3O PR\u00C9VIA -->\r\n </tbody>\r\n </table>\r\n\r\n <!-- #region PAGINATION -->\r\n <div *ngIf=\"recordsList.length > 0\" class=\"d-flex mt-2\"\r\n [ngClass]=\"{\r\n 'justify-content-start': paginationPlacement == 'start',\r\n 'justify-content-center': paginationPlacement == 'center',\r\n 'justify-content-end': paginationPlacement == 'end',\r\n 'justify-content-between': paginationPlacement == 'between'\r\n }\">\r\n <div class=\"d-flex align-items-center\">\r\n <label class=\"me-2\" style=\"white-space: nowrap;\"> Itens por p\u00E1gina </label>\r\n <select class=\"form-select select-search\" (change)=\"onSelectChange($event)\">\r\n <option *ngFor=\"let count of countOptions; let i = index\" [value]=\"count\"\r\n [selected]=\"countOptions.length > 0 && i == 0\">{{ count }}</option>\r\n </select>\r\n </div>\r\n\r\n <pagination-controls class=\"sp-pagination mt-3\" (pageChange)=\"page = $event; pageChange.emit($event)\" previousLabel=\"\u00AB&nbsp;&nbsp;&nbsp;\" nextLabel=\"&nbsp;&nbsp;&nbsp;\u00BB\" [maxSize]=\"5\"></pagination-controls>\r\n </div>\r\n <!-- #endregion PAGINATION -->\r\n </div>\r\n </div>\r\n} @else {\r\n <div class=\"w-100 text-center\">\r\n <div class=\"spinner-border\" role=\"status\"> <span class=\"visually-hidden\">Carregando informa\u00E7\u00F5es...</span> </div>\r\n </div>\r\n}", styles: [".sp-pagination ::ng-deep .ngx-pagination .current{background:#3767b2;border-radius:.375rem}.sp-pagination ::ng-deep .ngx-pagination a:hover,.sp-pagination ::ng-deep .ngx-pagination button:hover{border-radius:.375rem}.sp-pagination ::ng-deep .ngx-pagination .pagination-previous a:before,.sp-pagination ::ng-deep .ngx-pagination .pagination-previous.disabled:before{content:\"\";display:inline-block;margin-right:.5rem}.sp-pagination ::ng-deep .ngx-pagination .pagination-next a:after,.sp-pagination ::ng-deep .ngx-pagination .pagination-next.disabled:after{content:\"\";display:inline-block;margin-left:.5rem}.text-dark-grey{color:#63676b!important}table{border-color:#c4c4c4}table thead{height:50px;font-size:1rem;background-color:#e9ecef}table tbody{font-size:.875rem}table tbody>tr{height:50px}table tbody>tr:hover{background-color:#cce5ff}table.table>tbody{border-top:none}\n"] }]
2216
2219
  }], ctorParameters: () => [], propDecorators: { recordsList: [{
2217
2220
  type: Input,
2218
2221
  args: [{ alias: 'list', required: true }]
@@ -2225,6 +2228,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
2225
2228
  }], paginationPlacement: [{
2226
2229
  type: Input,
2227
2230
  args: ['placement']
2231
+ }], itemsPerPageChange: [{
2232
+ type: Output
2233
+ }], pageChange: [{
2234
+ type: Output
2228
2235
  }] } });
2229
2236
 
2230
2237
  class InfraModule {