@stiunb/unb-lib-components 18.0.22
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.
- package/README.md +18 -0
- package/esm2022/lib/services/unb-auth.service.mjs +57 -0
- package/esm2022/lib/unb-mensagem/unb-mensagem.component.mjs +82 -0
- package/esm2022/lib/unb-mensagem/unb-mensagem.module.mjs +26 -0
- package/esm2022/lib/unb-mensagem/unb-mensagem.service.mjs +61 -0
- package/esm2022/lib/unb-mensagem/unb-message.model.mjs +3 -0
- package/esm2022/lib/unb-nav-bar/unb-nav-bar.component.mjs +53 -0
- package/esm2022/lib/unb-nav-bar/unb-nav-bar.module.mjs +52 -0
- package/esm2022/lib/unb-pessoa/pessoa-tabelas-apoio.mjs +30 -0
- package/esm2022/lib/unb-pessoa/unb-pessoa-email-form/unb-pessoa-email-form.mjs +122 -0
- package/esm2022/lib/unb-pessoa/unb-pessoa-email-form/unb-pessoa-email-list.mjs +140 -0
- package/esm2022/lib/unb-pessoa/unb-pessoa-endereco-form/unb-pessoa-endereco-form.mjs +144 -0
- package/esm2022/lib/unb-pessoa/unb-pessoa-endereco-form/unb-pessoa-endereco-list.mjs +139 -0
- package/esm2022/lib/unb-pessoa/unb-pessoa-form/unb-pessoa-form.component.mjs +166 -0
- package/esm2022/lib/unb-pessoa/unb-pessoa-models/unb-pessoa-email.model.mjs +5 -0
- package/esm2022/lib/unb-pessoa/unb-pessoa-models/unb-pessoa-endereco.model.mjs +5 -0
- package/esm2022/lib/unb-pessoa/unb-pessoa-models/unb-pessoa-escolaridade.model.mjs +6 -0
- package/esm2022/lib/unb-pessoa/unb-pessoa-models/unb-pessoa-estado-civil.model.mjs +6 -0
- package/esm2022/lib/unb-pessoa/unb-pessoa-models/unb-pessoa-municipio.mjs +3 -0
- package/esm2022/lib/unb-pessoa/unb-pessoa-models/unb-pessoa-pais.mjs +3 -0
- package/esm2022/lib/unb-pessoa/unb-pessoa-models/unb-pessoa-raca-cor.mjs +3 -0
- package/esm2022/lib/unb-pessoa/unb-pessoa-models/unb-pessoa-telefone.model.mjs +9 -0
- package/esm2022/lib/unb-pessoa/unb-pessoa-models/unb-pessoa.model.mjs +6 -0
- package/esm2022/lib/unb-pessoa/unb-pessoa-pesquisar/unb-pessoa-pesquisar.component.mjs +229 -0
- package/esm2022/lib/unb-pessoa/unb-pessoa-telefone-form/unb-pessoa-telefone-form.mjs +102 -0
- package/esm2022/lib/unb-pessoa/unb-pessoa-telefone-form/unb-pessoa-telefone-list.mjs +140 -0
- package/esm2022/lib/unb-pessoa/unb-pessoa.module.mjs +128 -0
- package/esm2022/lib/unb-pessoa/unb-pessoa.service.mjs +157 -0
- package/esm2022/lib/unb-pessoa/unb-tipo-pessoa.enum.mjs +7 -0
- package/esm2022/lib/unb-usuario/oidc-decoded-token.mjs +2 -0
- package/esm2022/lib/unb-usuario/oidc-user-data.mjs +2 -0
- package/esm2022/lib/unb-usuario/unb-usuario.component.mjs +38 -0
- package/esm2022/lib/unb-usuario/unb-usuario.model.mjs +9 -0
- package/esm2022/lib/unb-usuario/unb-usuario.module.mjs +65 -0
- package/esm2022/lib/utils/unb-utils.mjs +76 -0
- package/esm2022/public-api.mjs +34 -0
- package/esm2022/unb-lib-components.mjs +5 -0
- package/fesm2022/unb-lib-components.mjs +1923 -0
- package/fesm2022/unb-lib-components.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/services/unb-auth.service.d.ts +17 -0
- package/lib/unb-mensagem/unb-mensagem.component.d.ts +35 -0
- package/lib/unb-mensagem/unb-mensagem.module.d.ts +10 -0
- package/lib/unb-mensagem/unb-mensagem.service.d.ts +36 -0
- package/lib/unb-mensagem/unb-message.model.d.ts +6 -0
- package/lib/unb-nav-bar/unb-nav-bar.component.d.ts +19 -0
- package/lib/unb-nav-bar/unb-nav-bar.module.d.ts +16 -0
- package/lib/unb-pessoa/pessoa-tabelas-apoio.d.ts +5 -0
- package/lib/unb-pessoa/unb-pessoa-email-form/unb-pessoa-email-form.d.ts +34 -0
- package/lib/unb-pessoa/unb-pessoa-email-form/unb-pessoa-email-list.d.ts +31 -0
- package/lib/unb-pessoa/unb-pessoa-endereco-form/unb-pessoa-endereco-form.d.ts +36 -0
- package/lib/unb-pessoa/unb-pessoa-endereco-form/unb-pessoa-endereco-list.d.ts +29 -0
- package/lib/unb-pessoa/unb-pessoa-form/unb-pessoa-form.component.d.ts +56 -0
- package/lib/unb-pessoa/unb-pessoa-models/unb-pessoa-email.model.d.ts +13 -0
- package/lib/unb-pessoa/unb-pessoa-models/unb-pessoa-endereco.model.d.ts +22 -0
- package/lib/unb-pessoa/unb-pessoa-models/unb-pessoa-escolaridade.model.d.ts +6 -0
- package/lib/unb-pessoa/unb-pessoa-models/unb-pessoa-estado-civil.model.d.ts +6 -0
- package/lib/unb-pessoa/unb-pessoa-models/unb-pessoa-municipio.d.ts +8 -0
- package/lib/unb-pessoa/unb-pessoa-models/unb-pessoa-pais.d.ts +7 -0
- package/lib/unb-pessoa/unb-pessoa-models/unb-pessoa-raca-cor.d.ts +4 -0
- package/lib/unb-pessoa/unb-pessoa-models/unb-pessoa-telefone.model.d.ts +17 -0
- package/lib/unb-pessoa/unb-pessoa-models/unb-pessoa.model.d.ts +69 -0
- package/lib/unb-pessoa/unb-pessoa-pesquisar/unb-pessoa-pesquisar.component.d.ts +39 -0
- package/lib/unb-pessoa/unb-pessoa-telefone-form/unb-pessoa-telefone-form.d.ts +34 -0
- package/lib/unb-pessoa/unb-pessoa-telefone-form/unb-pessoa-telefone-list.d.ts +31 -0
- package/lib/unb-pessoa/unb-pessoa.module.d.ts +35 -0
- package/lib/unb-pessoa/unb-pessoa.service.d.ts +59 -0
- package/lib/unb-pessoa/unb-tipo-pessoa.enum.d.ts +5 -0
- package/lib/unb-usuario/oidc-decoded-token.d.ts +29 -0
- package/lib/unb-usuario/oidc-user-data.d.ts +9 -0
- package/lib/unb-usuario/unb-usuario.component.d.ts +17 -0
- package/lib/unb-usuario/unb-usuario.model.d.ts +6 -0
- package/lib/unb-usuario/unb-usuario.module.d.ts +18 -0
- package/lib/utils/unb-utils.d.ts +7 -0
- package/package.json +28 -0
- package/public-api.d.ts +28 -0
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { UnbUtils } from '../../utils/unb-utils';
|
|
3
|
+
import { UnbPessoaModel } from '../unb-pessoa-models/unb-pessoa.model';
|
|
4
|
+
import { TipoPessoaEnum } from '../unb-tipo-pessoa.enum';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../unb-pessoa.service";
|
|
7
|
+
import * as i2 from "@angular/material/snack-bar";
|
|
8
|
+
import * as i3 from "@angular/common";
|
|
9
|
+
import * as i4 from "@angular/forms";
|
|
10
|
+
import * as i5 from "@angular/material/icon";
|
|
11
|
+
import * as i6 from "@angular/material/button";
|
|
12
|
+
import * as i7 from "@angular/material/form-field";
|
|
13
|
+
import * as i8 from "@angular/material/input";
|
|
14
|
+
import * as i9 from "@angular/material/progress-bar";
|
|
15
|
+
import * as i10 from "@angular/material/radio";
|
|
16
|
+
export class UnbPessoaPesquisarComponent {
|
|
17
|
+
constructor(pessoaService, snackBar) {
|
|
18
|
+
this.pessoaService = pessoaService;
|
|
19
|
+
this.snackBar = snackBar;
|
|
20
|
+
this.isLoading = false;
|
|
21
|
+
this.apiPessoaConfig = { url: '', token: '' };
|
|
22
|
+
this.pesquisarPorCPF = true;
|
|
23
|
+
this.pesquisarPorCNPJ = true;
|
|
24
|
+
this.pesquisarPorEstrangeiro = true;
|
|
25
|
+
this.pessoaEmitted = new EventEmitter();
|
|
26
|
+
this.pessoa = new UnbPessoaModel();
|
|
27
|
+
this.mostrarPesquisa = true;
|
|
28
|
+
this.limparAposPesquisa = false; // indica se deve limpar o cpf apos pesquisar
|
|
29
|
+
this.label = "Digite o CPF/CNPJ ou Passaporte"; // eh o que mostra no topo do componente
|
|
30
|
+
this.placeholder = ""; // eh o que mostra como placeholder topo do componente
|
|
31
|
+
this.hint = ""; // dica que aparece debaixo do campo
|
|
32
|
+
// usado pra saber se mostra ou nao o botao de incluir pessoa
|
|
33
|
+
this.pessoaEncontrado = false;
|
|
34
|
+
}
|
|
35
|
+
ngOnInit() {
|
|
36
|
+
if (this.apiPessoaConfig.url.endsWith('/')) {
|
|
37
|
+
this.apiPessoaConfig.url = this.apiPessoaConfig.url.slice(0, -1);
|
|
38
|
+
}
|
|
39
|
+
if (this.apiPessoaConfig.url == "") {
|
|
40
|
+
this.handleErrorPrintConsole("[UnbPessoaPesquisarComponent] ERROR: apiPessoaConfig.url está null. Insira o parâmetro (apiPessoaConfig) com o valor válido!");
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (this.apiPessoaConfig.token == "") {
|
|
44
|
+
this.handleErrorPrintConsole("[UnbPessoaPesquisarComponent] ERROR: apiPessoaConfig.token está null. Insira o parâmetro (apiPessoaConfig) com o valor do token da sua aplicação");
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
// se chegar com barra no final, eu retiro. Pra ficar no padrao
|
|
48
|
+
if (this.apiPessoaConfig.url.endsWith('/')) {
|
|
49
|
+
this.apiPessoaConfig.url = this.apiPessoaConfig.url.slice(0, -1);
|
|
50
|
+
}
|
|
51
|
+
// inicializa o serviço com a configuração da API
|
|
52
|
+
this.pessoaService.setApiConfig(this.apiPessoaConfig);
|
|
53
|
+
// Conta quantos dos inputs estão como true
|
|
54
|
+
const opcoesAtivas = [this.pesquisarPorCPF, this.pesquisarPorCNPJ, this.pesquisarPorEstrangeiro].filter(op => op).length;
|
|
55
|
+
// Exibe a opcao do tipo de pessoa, somente se mais de um estiver selecionado
|
|
56
|
+
if (opcoesAtivas > 1) {
|
|
57
|
+
this.mostrarTipoPessoa = opcoesAtivas > 1;
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
// entao tenho que marcar qual foi selecionada
|
|
61
|
+
if (this.pesquisarPorCPF) {
|
|
62
|
+
this.pessoa.tipoPessoa = TipoPessoaEnum.FISICA;
|
|
63
|
+
}
|
|
64
|
+
else if (this.pesquisarPorCNPJ) {
|
|
65
|
+
this.pessoa.tipoPessoa = TipoPessoaEnum.JURIDICA;
|
|
66
|
+
}
|
|
67
|
+
else if (this.pesquisarPorEstrangeiro) {
|
|
68
|
+
this.pessoa.tipoPessoa = TipoPessoaEnum.ESTRANGEIRA;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
this.handleErrorPrintConsole("[UnbPessoaPesquisarComponent] ERROR: pesquisarPorCPF, pesquisarPorCNPJ e pesquisarPorEstrangeiro está falso. Marque pelo menos um como true");
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// seleciona o radio button padrao
|
|
76
|
+
if (this.defaultTipoPessoa == TipoPessoaEnum.FISICA && this.pesquisarPorCPF) {
|
|
77
|
+
this.pessoa.tipoPessoa = this.defaultTipoPessoa;
|
|
78
|
+
}
|
|
79
|
+
else if (this.defaultTipoPessoa == TipoPessoaEnum.JURIDICA && this.pesquisarPorCNPJ) {
|
|
80
|
+
this.pessoa.tipoPessoa = this.defaultTipoPessoa;
|
|
81
|
+
}
|
|
82
|
+
else if (this.defaultTipoPessoa == TipoPessoaEnum.ESTRANGEIRA && this.pesquisarPorEstrangeiro) {
|
|
83
|
+
this.pessoa.tipoPessoa = this.defaultTipoPessoa;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
pesquisar() {
|
|
87
|
+
if (this.validar() == false)
|
|
88
|
+
return;
|
|
89
|
+
this.isLoading = true;
|
|
90
|
+
let result;
|
|
91
|
+
if (this.pessoa.tipoPessoa == TipoPessoaEnum.FISICA) {
|
|
92
|
+
let cpf = this.pessoa.cpf.match(/\d/g)?.join(""); // remove caracteres
|
|
93
|
+
result = this.pessoaService.findByCpf(cpf);
|
|
94
|
+
}
|
|
95
|
+
else if (this.pessoa.tipoPessoa == TipoPessoaEnum.JURIDICA) {
|
|
96
|
+
let cnpj = this.pessoa.cnpj.match(/\d/g)?.join(""); // remove caracteres
|
|
97
|
+
result = this.pessoaService.findByCnpj(cnpj);
|
|
98
|
+
}
|
|
99
|
+
else if (this.pessoa.tipoPessoa == TipoPessoaEnum.ESTRANGEIRA) {
|
|
100
|
+
result = this.pessoaService.findByPassaporte(this.pessoa.passaporte);
|
|
101
|
+
}
|
|
102
|
+
if (result) {
|
|
103
|
+
result.subscribe({
|
|
104
|
+
next: this.hadleResult.bind(this),
|
|
105
|
+
error: this.handleError.bind(this)
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
validar() {
|
|
110
|
+
if (this.apiPessoaConfig.url == "") {
|
|
111
|
+
this.handleErrorPrintConsole("[UnbPessoaPesquisarComponent] ERROR: apiPessoaConfig.url está null. Insira o parâmetro (apiPessoaConfig) com o valor válido!");
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
if (this.apiPessoaConfig.token == "") {
|
|
115
|
+
this.handleErrorPrintConsole("[UnbPessoaPesquisarComponent] ERROR: apiPessoaConfig.token está null. Insira o parâmetro (apiPessoaConfig) com o valor do token da sua aplicação");
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
if (this.pessoa.tipoPessoa == TipoPessoaEnum.FISICA) {
|
|
119
|
+
if (this.pessoa.cpf == null || (this.pessoa.cpf != null && this.pessoa.cpf == "")) {
|
|
120
|
+
this.handleError("CPF é um campo obrigatório.");
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
else if (!UnbUtils.validarCPF(this.pessoa.cpf)) {
|
|
124
|
+
this.handleError("Digite um valor válido para o CPF");
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
else if (this.pessoa.tipoPessoa == TipoPessoaEnum.JURIDICA) {
|
|
129
|
+
if (this.pessoa.cnpj == null || (this.pessoa.cnpj != null && this.pessoa.cnpj == "")) {
|
|
130
|
+
this.handleError("CNPJ é um campo obrigatório");
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
else if (!UnbUtils.validarCNPJ(this.pessoa.cnpj)) {
|
|
134
|
+
this.handleError("Digite um valor válido para o CNPJ!");
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
else if (this.pessoa.tipoPessoa == TipoPessoaEnum.ESTRANGEIRA) {
|
|
139
|
+
if (this.pessoa.passaporte == null || (this.pessoa.passaporte != null && this.pessoa.passaporte == "")) {
|
|
140
|
+
this.handleError("Passaporte é um campo obrigatório");
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
this.handleError("Selecione um tipo de pessoa!");
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
return true;
|
|
149
|
+
}
|
|
150
|
+
hadleResult(resultado) {
|
|
151
|
+
this.isLoading = false;
|
|
152
|
+
if (resultado) {
|
|
153
|
+
resultado.tipoPessoa = this.pessoa.tipoPessoa; // o backend nao retorna o tipo pessoa. entao tenho que atribuir antes
|
|
154
|
+
this.pessoa = resultado;
|
|
155
|
+
if (this.pessoa.tipoPessoa == TipoPessoaEnum.FISICA) {
|
|
156
|
+
this.pessoa.cpf = UnbUtils.formataCpf(resultado.cpf); // voltou pro formato original (isso evita formartar novamente)
|
|
157
|
+
}
|
|
158
|
+
else if (this.pessoa.tipoPessoa == TipoPessoaEnum.JURIDICA) {
|
|
159
|
+
this.pessoa.cnpj = UnbUtils.formataCnpj(resultado.cnpj); // voltou pro formato original (isso evita formartar novamente)
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
// se chegar aki eh pq nao encontrou, entao temos que emitir um resultado com codigoPessoa vazio mas com os criterios usado na pesquisa
|
|
164
|
+
let novaPessoa = new UnbPessoaModel();
|
|
165
|
+
novaPessoa.tipoPessoa = this.pessoa.tipoPessoa;
|
|
166
|
+
if (this.pessoa.tipoPessoa == TipoPessoaEnum.FISICA) {
|
|
167
|
+
novaPessoa.cpf = this.pessoa.cpf;
|
|
168
|
+
}
|
|
169
|
+
else if (this.pessoa.tipoPessoa == TipoPessoaEnum.JURIDICA) {
|
|
170
|
+
novaPessoa.cnpj = this.pessoa.cnpj;
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
novaPessoa.passaporte = this.pessoa.passaporte;
|
|
174
|
+
}
|
|
175
|
+
// agora sobreescrevemos, pq se tiver uma pessoa pesquisada com resultado correto, e pesquisar novamente, precisamos apagar a primeira pessoa.
|
|
176
|
+
this.pessoa = novaPessoa;
|
|
177
|
+
}
|
|
178
|
+
this.pessoaEmitted.emit(this.pessoa);
|
|
179
|
+
}
|
|
180
|
+
handleError(erro) {
|
|
181
|
+
this.openSnackBar(erro);
|
|
182
|
+
this.isLoading = false;
|
|
183
|
+
// se chegar aki, entao nao encontrou a pessoa. Mas damos a chance de incluir pessoa
|
|
184
|
+
this.pessoaEncontrado = false;
|
|
185
|
+
}
|
|
186
|
+
handleErrorPrintConsole(erro) {
|
|
187
|
+
console.log(erro);
|
|
188
|
+
this.handleError(erro);
|
|
189
|
+
}
|
|
190
|
+
openSnackBar(message) {
|
|
191
|
+
this.snackBar.open(message, 'x', {
|
|
192
|
+
duration: 5000,
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
tipoPessoaEnum() {
|
|
196
|
+
return TipoPessoaEnum;
|
|
197
|
+
}
|
|
198
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: UnbPessoaPesquisarComponent, deps: [{ token: i1.UnBPessoaService }, { token: i2.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
199
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: UnbPessoaPesquisarComponent, selector: "lib-unb-pessoa-pesquisar", inputs: { apiPessoaConfig: "apiPessoaConfig", pesquisarPorCPF: "pesquisarPorCPF", pesquisarPorCNPJ: "pesquisarPorCNPJ", pesquisarPorEstrangeiro: "pesquisarPorEstrangeiro", defaultTipoPessoa: "defaultTipoPessoa", pessoa: "pessoa", mostrarPesquisa: "mostrarPesquisa", limparAposPesquisa: "limparAposPesquisa", label: "label", placeholder: "placeholder", hint: "hint" }, outputs: { pessoaEmitted: "pessoaEmitted" }, ngImport: i0, template: "<form #pessoaForm=\"ngForm\" class=\"form-container\" (ngSubmit)=\"pesquisar()\">\r\n <!-- Tipo da Pessoa. Controlado pelo OnInit -->\r\n <mat-progress-bar *ngIf=\"isLoading\" mode=\"indeterminate\"></mat-progress-bar> \r\n <div *ngIf=\"mostrarTipoPessoa\">\r\n <mat-radio-group aria-label=\"Tipo de Pessoa\" [(ngModel)]=\"pessoa.tipoPessoa\" #tipoPessoa=\"ngModel\" name=\"tipoPessoa\">\r\n <mat-radio-button *ngIf=\"pesquisarPorCPF\" value=\"{{ tipoPessoaEnum().FISICA}}\">Pessoa F\u00EDsica</mat-radio-button>\r\n <mat-radio-button *ngIf=\"pesquisarPorCNPJ\" value=\"{{tipoPessoaEnum().JURIDICA}}\"> Pessoa Jur\u00EDdica</mat-radio-button>\r\n <mat-radio-button *ngIf=\"pesquisarPorEstrangeiro\" value=\"{{tipoPessoaEnum().ESTRANGEIRA}}\">Estrangeiro</mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n\r\n <div class=\"break\"></div>\r\n \r\n <ng-container *ngIf=\"pessoa.tipoPessoa === tipoPessoaEnum().FISICA\">\r\n \r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>CPF</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.cpf\" name=\"cpf\" #cpf=\"ngModel\" required={{true}}/> \r\n <button *ngIf=\"!isLoading\" disabled=\"{{isLoading}}\" matSuffix mat-icon-button type=\"button\" aria-label=\"Pesquisar\" (click)=\"pesquisar()\">\r\n <mat-icon style=\"margin-right: 2px;\">search</mat-icon> \r\n </button>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"pessoa.tipoPessoa === tipoPessoaEnum().ESTRANGEIRA\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Passaporte</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.passaporte\" name=\"passaporte\" required=\"true\" />\r\n <button *ngIf=\"!isLoading\" matSuffix mat-icon-button type=\"button\" aria-label=\"Pesquisar\" (click)=\"pesquisar()\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"pessoa.tipoPessoa === tipoPessoaEnum().JURIDICA\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>CNPJ</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.cnpj\" name=\"cnpj\" required=\"true\" />\r\n <button *ngIf=\"!isLoading\" matSuffix mat-icon-button type=\"button\" aria-label=\"Pesquisar\" (click)=\"pesquisar()\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </ng-container>\r\n</form>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i9.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i10.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i10.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color"], outputs: ["change"], exportAs: ["matRadioButton"] }] }); }
|
|
200
|
+
}
|
|
201
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: UnbPessoaPesquisarComponent, decorators: [{
|
|
202
|
+
type: Component,
|
|
203
|
+
args: [{ selector: 'lib-unb-pessoa-pesquisar', standalone: false, template: "<form #pessoaForm=\"ngForm\" class=\"form-container\" (ngSubmit)=\"pesquisar()\">\r\n <!-- Tipo da Pessoa. Controlado pelo OnInit -->\r\n <mat-progress-bar *ngIf=\"isLoading\" mode=\"indeterminate\"></mat-progress-bar> \r\n <div *ngIf=\"mostrarTipoPessoa\">\r\n <mat-radio-group aria-label=\"Tipo de Pessoa\" [(ngModel)]=\"pessoa.tipoPessoa\" #tipoPessoa=\"ngModel\" name=\"tipoPessoa\">\r\n <mat-radio-button *ngIf=\"pesquisarPorCPF\" value=\"{{ tipoPessoaEnum().FISICA}}\">Pessoa F\u00EDsica</mat-radio-button>\r\n <mat-radio-button *ngIf=\"pesquisarPorCNPJ\" value=\"{{tipoPessoaEnum().JURIDICA}}\"> Pessoa Jur\u00EDdica</mat-radio-button>\r\n <mat-radio-button *ngIf=\"pesquisarPorEstrangeiro\" value=\"{{tipoPessoaEnum().ESTRANGEIRA}}\">Estrangeiro</mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n\r\n <div class=\"break\"></div>\r\n \r\n <ng-container *ngIf=\"pessoa.tipoPessoa === tipoPessoaEnum().FISICA\">\r\n \r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>CPF</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.cpf\" name=\"cpf\" #cpf=\"ngModel\" required={{true}}/> \r\n <button *ngIf=\"!isLoading\" disabled=\"{{isLoading}}\" matSuffix mat-icon-button type=\"button\" aria-label=\"Pesquisar\" (click)=\"pesquisar()\">\r\n <mat-icon style=\"margin-right: 2px;\">search</mat-icon> \r\n </button>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"pessoa.tipoPessoa === tipoPessoaEnum().ESTRANGEIRA\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Passaporte</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.passaporte\" name=\"passaporte\" required=\"true\" />\r\n <button *ngIf=\"!isLoading\" matSuffix mat-icon-button type=\"button\" aria-label=\"Pesquisar\" (click)=\"pesquisar()\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"pessoa.tipoPessoa === tipoPessoaEnum().JURIDICA\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>CNPJ</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"pessoa.cnpj\" name=\"cnpj\" required=\"true\" />\r\n <button *ngIf=\"!isLoading\" matSuffix mat-icon-button type=\"button\" aria-label=\"Pesquisar\" (click)=\"pesquisar()\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </ng-container>\r\n</form>" }]
|
|
204
|
+
}], ctorParameters: () => [{ type: i1.UnBPessoaService }, { type: i2.MatSnackBar }], propDecorators: { apiPessoaConfig: [{
|
|
205
|
+
type: Input
|
|
206
|
+
}], pesquisarPorCPF: [{
|
|
207
|
+
type: Input
|
|
208
|
+
}], pesquisarPorCNPJ: [{
|
|
209
|
+
type: Input
|
|
210
|
+
}], pesquisarPorEstrangeiro: [{
|
|
211
|
+
type: Input
|
|
212
|
+
}], defaultTipoPessoa: [{
|
|
213
|
+
type: Input
|
|
214
|
+
}], pessoaEmitted: [{
|
|
215
|
+
type: Output
|
|
216
|
+
}], pessoa: [{
|
|
217
|
+
type: Input
|
|
218
|
+
}], mostrarPesquisa: [{
|
|
219
|
+
type: Input
|
|
220
|
+
}], limparAposPesquisa: [{
|
|
221
|
+
type: Input
|
|
222
|
+
}], label: [{
|
|
223
|
+
type: Input
|
|
224
|
+
}], placeholder: [{
|
|
225
|
+
type: Input
|
|
226
|
+
}], hint: [{
|
|
227
|
+
type: Input
|
|
228
|
+
}] } });
|
|
229
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5iLXBlc3NvYS1wZXNxdWlzYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdW5iLWxpYi1jb21wb25lbnRzL3NyYy9saWIvdW5iLXBlc3NvYS91bmItcGVzc29hLXBlc3F1aXNhci91bmItcGVzc29hLXBlc3F1aXNhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91bmItbGliLWNvbXBvbmVudHMvc3JjL2xpYi91bmItcGVzc29hL3VuYi1wZXNzb2EtcGVzcXVpc2FyL3VuYi1wZXNzb2EtcGVzcXVpc2FyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUV2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7Ozs7OztBQVF6RCxNQUFNLE9BQU8sMkJBQTJCO0lBbUJ0QyxZQUFvQixhQUErQixFQUFVLFFBQXFCO1FBQTlELGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUFVLGFBQVEsR0FBUixRQUFRLENBQWE7UUFsQmxGLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFVCxvQkFBZSxHQUFtQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ3pFLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUN4Qiw0QkFBdUIsR0FBRyxJQUFJLENBQUM7UUFJOUIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBa0IsQ0FBQztRQUVwRCxXQUFNLEdBQUcs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OzJGRDlCTSwyQkFBMkI7a0JBTnZDLFNBQVM7K0JBQ0UsMEJBQTBCLGNBQ3hCLEtBQUs7K0dBT1IsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU07Z0JBRUUsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xyXG5pbXBvcnQgeyBVbmJVdGlscyB9IGZyb20gJy4uLy4uL3V0aWxzL3VuYi11dGlscyc7XHJcbmltcG9ydCB7IFVuYlBlc3NvYU1vZGVsIH0gZnJvbSAnLi4vdW5iLXBlc3NvYS1tb2RlbHMvdW5iLXBlc3NvYS5tb2RlbCc7XHJcbmltcG9ydCB7IFVuQlBlc3NvYVNlcnZpY2UgfSBmcm9tICcuLi91bmItcGVzc29hLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUaXBvUGVzc29hRW51bSB9IGZyb20gJy4uL3VuYi10aXBvLXBlc3NvYS5lbnVtJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXVuYi1wZXNzb2EtcGVzcXVpc2FyJyxcclxuICBzdGFuZGFsb25lOiBmYWxzZSxcclxuICB0ZW1wbGF0ZVVybDogJy4vdW5iLXBlc3NvYS1wZXNxdWlzYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi91bmItcGVzc29hLXBlc3F1aXNhci5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVW5iUGVzc29hUGVzcXVpc2FyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBpc0xvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgYXBpUGVzc29hQ29uZmlnOiB7IHVybDogc3RyaW5nOyB0b2tlbjogc3RyaW5nIH0gPSB7IHVybDogJycsIHRva2VuOiAnJyB9O1xyXG4gIEBJbnB1dCgpIHBlc3F1aXNhclBvckNQRiA9IHRydWU7XHJcbiAgQElucHV0KCkgcGVzcXVpc2FyUG9yQ05QSiA9IHRydWU7XHJcbiAgQElucHV0KCkgcGVzcXVpc2FyUG9yRXN0cmFuZ2Vpcm8gPSB0cnVlO1xyXG4gIC8vIGRlZmluZSBvIHRpcG8gcGVzc29hIHBhZHJhby4gQXNpc20sIG8gcmFkaW8gYnV0dG9uIGphaCB2ZW0gbWFyY2FkbyBjb20gbyBxdWUgZm9pIGRlZmluaWRvIGFxdWkuXHJcbiAgQElucHV0KCkgZGVmYXVsdFRpcG9QZXNzb2EhOiBUaXBvUGVzc29hRW51bTtcclxuXHJcbiAgQE91dHB1dCgpIHBlc3NvYUVtaXR0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFVuYlBlc3NvYU1vZGVsPigpO1xyXG4gIFxyXG4gIEBJbnB1dCgpIHBlc3NvYSA9IG5ldyBVbmJQZXNzb2FNb2RlbCgpO1xyXG4gIEBJbnB1dCgpIG1vc3RyYXJQZXNxdWlzYTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgbGltcGFyQXBvc1Blc3F1aXNhOiBib29sZWFuID0gZmFsc2U7ICAvLyBpbmRpY2Egc2UgZGV2ZSBsaW1wYXIgbyBjcGYgYXBvcyBwZXNxdWlzYXJcclxuICBASW5wdXQoKSBsYWJlbCA9IFwiRGlnaXRlIG8gQ1BGL0NOUEogb3UgUGFzc2Fwb3J0ZVwiOyAvLyBlaCBvIHF1ZSBtb3N0cmEgbm8gdG9wbyBkbyBjb21wb25lbnRlXHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSBcIlwiOyAvLyBlaCBvIHF1ZSBtb3N0cmEgY29tbyBwbGFjZWhvbGRlciB0b3BvIGRvIGNvbXBvbmVudGVcclxuICBASW5wdXQoKSBoaW50ID0gXCJcIjsgLy8gZGljYSBxdWUgYXBhcmVjZSBkZWJhaXhvIGRvIGNhbXBvXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGVzc29hU2VydmljZTogVW5CUGVzc29hU2VydmljZSwgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIpIHsgfVxyXG5cclxuICAvLyB1c2FkbyBwcmEgc2FiZXIgc2UgbW9zdHJhIG91IG5hbyBvIGJvdGFvIGRlIGluY2x1aXIgcGVzc29hXHJcbiAgcGVzc29hRW5jb250cmFkbzogQm9vbGVhbiB8IG51bGwgPSBmYWxzZTtcclxuICBtb3N0cmFyVGlwb1Blc3NvYSE6IGJvb2xlYW47XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYXBpUGVzc29hQ29uZmlnLnVybC5lbmRzV2l0aCgnLycpKSB7XHJcbiAgICAgIHRoaXMuYXBpUGVzc29hQ29uZmlnLnVybCA9IHRoaXMuYXBpUGVzc29hQ29uZmlnLnVybC5zbGljZSgwLCAtMSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuYXBpUGVzc29hQ29uZmlnLnVybCA9PSBcIlwiKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlRXJyb3JQcmludENvbnNvbGUoXCJbVW5iUGVzc29hUGVzcXVpc2FyQ29tcG9uZW50XSBFUlJPUjogYXBpUGVzc29hQ29uZmlnLnVybCBlc3TDoSBudWxsLiBJbnNpcmEgbyBwYXLDom1ldHJvIChhcGlQZXNzb2FDb25maWcpIGNvbSBvIHZhbG9yIHbDoWxpZG8hXCIpXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5hcGlQZXNzb2FDb25maWcudG9rZW4gPT0gXCJcIikge1xyXG4gICAgICB0aGlzLmhhbmRsZUVycm9yUHJpbnRDb25zb2xlKFwiW1VuYlBlc3NvYVBlc3F1aXNhckNvbXBvbmVudF0gRVJST1I6IGFwaVBlc3NvYUNvbmZpZy50b2tlbiBlc3TDoSBudWxsLiBJbnNpcmEgbyBwYXLDom1ldHJvIChhcGlQZXNzb2FDb25maWcpIGNvbSBvIHZhbG9yIGRvIHRva2VuIGRhIHN1YSBhcGxpY2HDp8Ojb1wiKVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gc2UgY2hlZ2FyIGNvbSBiYXJyYSBubyBmaW5hbCwgZXUgcmV0aXJvLiBQcmEgZmljYXIgbm8gcGFkcmFvXHJcbiAgICBpZiAodGhpcy5hcGlQZXNzb2FDb25maWcudXJsLmVuZHNXaXRoKCcvJykpIHtcclxuICAgICAgdGhpcy5hcGlQZXNzb2FDb25maWcudXJsID0gdGhpcy5hcGlQZXNzb2FDb25maWcudXJsLnNsaWNlKDAsIC0xKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBpbmljaWFsaXphIG8gc2VydmnDp28gY29tIGEgY29uZmlndXJhw6fDo28gZGEgQVBJXHJcbiAgICB0aGlzLnBlc3NvYVNlcnZpY2Uuc2V0QXBpQ29uZmlnKHRoaXMuYXBpUGVzc29hQ29uZmlnKTtcclxuXHJcbiAgICAvLyBDb250YSBxdWFudG9zIGRvcyBpbnB1dHMgZXN0w6NvIGNvbW8gdHJ1ZVxyXG4gICAgY29uc3Qgb3Bjb2VzQXRpdmFzID0gW3RoaXMucGVzcXVpc2FyUG9yQ1BGLCB0aGlzLnBlc3F1aXNhclBvckNOUEosIHRoaXMucGVzcXVpc2FyUG9yRXN0cmFuZ2Vpcm9dLmZpbHRlcihvcCA9PiBvcCkubGVuZ3RoO1xyXG4gICAgLy8gRXhpYmUgYSBvcGNhbyBkbyB0aXBvIGRlIHBlc3NvYSwgc29tZW50ZSBzZSBtYWlzIGRlIHVtIGVzdGl2ZXIgc2VsZWNpb25hZG9cclxuICAgIGlmIChvcGNvZXNBdGl2YXMgPiAxKSB7XHJcbiAgICAgIHRoaXMubW9zdHJhclRpcG9QZXNzb2EgPSBvcGNvZXNBdGl2YXMgPiAxOyBcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIGVudGFvIHRlbmhvIHF1ZSBtYXJjYXIgcXVhbCBmb2kgc2VsZWNpb25hZGFcclxuICAgICAgaWYgKHRoaXMucGVzcXVpc2FyUG9yQ1BGKSB7XHJcbiAgICAgICAgdGhpcy5wZXNzb2EudGlwb1Blc3NvYSA9IFRpcG9QZXNzb2FFbnVtLkZJU0lDQTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnBlc3F1aXNhclBvckNOUEopIHtcclxuICAgICAgICB0aGlzLnBlc3NvYS50aXBvUGVzc29hID0gVGlwb1Blc3NvYUVudW0uSlVSSURJQ0E7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5wZXNxdWlzYXJQb3JFc3RyYW5nZWlybykge1xyXG4gICAgICAgIHRoaXMucGVzc29hLnRpcG9QZXNzb2EgPSBUaXBvUGVzc29hRW51bS5FU1RSQU5HRUlSQTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmhhbmRsZUVycm9yUHJpbnRDb25zb2xlKFwiW1VuYlBlc3NvYVBlc3F1aXNhckNvbXBvbmVudF0gRVJST1I6IHBlc3F1aXNhclBvckNQRiwgcGVzcXVpc2FyUG9yQ05QSiBlIHBlc3F1aXNhclBvckVzdHJhbmdlaXJvIGVzdMOhIGZhbHNvLiBNYXJxdWUgcGVsbyBtZW5vcyB1bSBjb21vIHRydWVcIilcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBzZWxlY2lvbmEgbyByYWRpbyBidXR0b24gcGFkcmFvXHJcbiAgICBpZiAodGhpcy5kZWZhdWx0VGlwb1Blc3NvYSA9PSBUaXBvUGVzc29hRW51bS5GSVNJQ0EgJiYgdGhpcy5wZXNxdWlzYXJQb3JDUEYpIHtcclxuICAgICAgdGhpcy5wZXNzb2EudGlwb1Blc3NvYSA9IHRoaXMuZGVmYXVsdFRpcG9QZXNzb2E7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGVmYXVsdFRpcG9QZXNzb2EgPT0gVGlwb1Blc3NvYUVudW0uSlVSSURJQ0EgJiYgdGhpcy5wZXNxdWlzYXJQb3JDTlBKKSB7XHJcbiAgICAgIHRoaXMucGVzc29hLnRpcG9QZXNzb2EgPSB0aGlzLmRlZmF1bHRUaXBvUGVzc29hO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmRlZmF1bHRUaXBvUGVzc29hID09IFRpcG9QZXNzb2FFbnVtLkVTVFJBTkdFSVJBICYmIHRoaXMucGVzcXVpc2FyUG9yRXN0cmFuZ2Vpcm8pIHtcclxuICAgICAgdGhpcy5wZXNzb2EudGlwb1Blc3NvYSA9IHRoaXMuZGVmYXVsdFRpcG9QZXNzb2E7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwZXNxdWlzYXIoKSB7ICBcclxuICAgIGlmICh0aGlzLnZhbGlkYXIoKSA9PSBmYWxzZSkgcmV0dXJuOyAgXHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICBsZXQgcmVzdWx0O1xyXG4gICAgaWYgKHRoaXMucGVzc29hLnRpcG9QZXNzb2EgPT0gVGlwb1Blc3NvYUVudW0uRklTSUNBKSB7XHJcbiAgICAgIGxldCBjcGYgPSB0aGlzLnBlc3NvYS5jcGYubWF0Y2goL1xcZC9nKT8uam9pbihcIlwiKTsgLy8gcmVtb3ZlIGNhcmFjdGVyZXMgXHJcbiAgICAgIHJlc3VsdD0gdGhpcy5wZXNzb2FTZXJ2aWNlLmZpbmRCeUNwZihjcGYpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnBlc3NvYS50aXBvUGVzc29hID09IFRpcG9QZXNzb2FFbnVtLkpVUklESUNBKSB7XHJcbiAgICAgIGxldCBjbnBqID0gdGhpcy5wZXNzb2EuY25wai5tYXRjaCgvXFxkL2cpPy5qb2luKFwiXCIpOyAvLyByZW1vdmUgY2FyYWN0ZXJlcyBcclxuICAgICAgcmVzdWx0PSB0aGlzLnBlc3NvYVNlcnZpY2UuZmluZEJ5Q25waihjbnBqKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5wZXNzb2EudGlwb1Blc3NvYSA9PSBUaXBvUGVzc29hRW51bS5FU1RSQU5HRUlSQSkge1xyXG4gICAgICByZXN1bHQ9IHRoaXMucGVzc29hU2VydmljZS5maW5kQnlQYXNzYXBvcnRlKHRoaXMucGVzc29hLnBhc3NhcG9ydGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgcmVzdWx0LnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogdGhpcy5oYWRsZVJlc3VsdC5iaW5kKHRoaXMpLFxyXG4gICAgICAgIGVycm9yOiB0aGlzLmhhbmRsZUVycm9yLmJpbmQodGhpcylcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgXHJcbiAgfVxyXG5cclxuICB2YWxpZGFyKCk6IGJvb2xlYW4gIHtcclxuICAgIGlmICh0aGlzLmFwaVBlc3NvYUNvbmZpZy51cmwgPT0gXCJcIikge1xyXG4gICAgICB0aGlzLmhhbmRsZUVycm9yUHJpbnRDb25zb2xlKFwiW1VuYlBlc3NvYVBlc3F1aXNhckNvbXBvbmVudF0gRVJST1I6IGFwaVBlc3NvYUNvbmZpZy51cmwgZXN0w6EgbnVsbC4gSW5zaXJhIG8gcGFyw6JtZXRybyAoYXBpUGVzc29hQ29uZmlnKSBjb20gbyB2YWxvciB2w6FsaWRvIVwiKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuYXBpUGVzc29hQ29uZmlnLnRva2VuID09IFwiXCIpIHtcclxuICAgICAgdGhpcy5oYW5kbGVFcnJvclByaW50Q29uc29sZShcIltVbmJQZXNzb2FQZXNxdWlzYXJDb21wb25lbnRdIEVSUk9SOiBhcGlQZXNzb2FDb25maWcudG9rZW4gZXN0w6EgbnVsbC4gSW5zaXJhIG8gcGFyw6JtZXRybyAoYXBpUGVzc29hQ29uZmlnKSBjb20gbyB2YWxvciBkbyB0b2tlbiBkYSBzdWEgYXBsaWNhw6fDo29cIilcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnBlc3NvYS50aXBvUGVzc29hID09IFRpcG9QZXNzb2FFbnVtLkZJU0lDQSkge1xyXG4gICAgICBpZiAodGhpcy5wZXNzb2EuY3BmID09IG51bGwgfHwgKHRoaXMucGVzc29hLmNwZiAhPSBudWxsICYmIHRoaXMucGVzc29hLmNwZiA9PSBcIlwiKSl7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihcIkNQRiDDqSB1bSBjYW1wbyBvYnJpZ2F0w7NyaW8uXCIpXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9IGVsc2UgaWYgKCFVbmJVdGlscy52YWxpZGFyQ1BGKHRoaXMucGVzc29hLmNwZikpIHtcclxuICAgICAgICB0aGlzLmhhbmRsZUVycm9yKFwiRGlnaXRlIHVtIHZhbG9yIHbDoWxpZG8gcGFyYSBvIENQRlwiKVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLnBlc3NvYS50aXBvUGVzc29hID09IFRpcG9QZXNzb2FFbnVtLkpVUklESUNBKSB7XHJcbiAgICAgIGlmICh0aGlzLnBlc3NvYS5jbnBqID09IG51bGwgfHwgKHRoaXMucGVzc29hLmNucGogIT0gbnVsbCAmJiB0aGlzLnBlc3NvYS5jbnBqID09IFwiXCIpKXtcclxuICAgICAgICB0aGlzLmhhbmRsZUVycm9yKFwiQ05QSiDDqSB1bSBjYW1wbyBvYnJpZ2F0w7NyaW9cIilcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSBpZiAoIVVuYlV0aWxzLnZhbGlkYXJDTlBKKHRoaXMucGVzc29hLmNucGopKSB7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihcIkRpZ2l0ZSB1bSB2YWxvciB2w6FsaWRvIHBhcmEgbyBDTlBKIVwiKVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLnBlc3NvYS50aXBvUGVzc29hID09IFRpcG9QZXNzb2FFbnVtLkVTVFJBTkdFSVJBKSB7XHJcbiAgICAgIGlmICh0aGlzLnBlc3NvYS5wYXNzYXBvcnRlID09IG51bGwgfHwgKHRoaXMucGVzc29hLnBhc3NhcG9ydGUgIT0gbnVsbCAmJiB0aGlzLnBlc3NvYS5wYXNzYXBvcnRlID09IFwiXCIpKXtcclxuICAgICAgICB0aGlzLmhhbmRsZUVycm9yKFwiUGFzc2Fwb3J0ZSDDqSB1bSBjYW1wbyBvYnJpZ2F0w7NyaW9cIilcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH0gICAgICBcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlRXJyb3IoXCJTZWxlY2lvbmUgdW0gdGlwbyBkZSBwZXNzb2EhXCIpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZTsgICAgXHJcbiAgfVxyXG5cclxuICBoYWRsZVJlc3VsdChyZXN1bHRhZG86IFVuYlBlc3NvYU1vZGVsKSB7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgXHJcbiAgICBpZiAocmVzdWx0YWRvKSB7XHJcbiAgICAgIHJlc3VsdGFkby50aXBvUGVzc29hID0gdGhpcy5wZXNzb2EudGlwb1Blc3NvYTsgLy8gbyBiYWNrZW5kIG5hbyByZXRvcm5hIG8gdGlwbyBwZXNzb2EuIGVudGFvIHRlbmhvIHF1ZSBhdHJpYnVpciBhbnRlc1xyXG4gICAgICB0aGlzLnBlc3NvYSA9IHJlc3VsdGFkbztcclxuICAgICAgaWYgKHRoaXMucGVzc29hLnRpcG9QZXNzb2EgPT0gVGlwb1Blc3NvYUVudW0uRklTSUNBKSB7XHJcbiAgICAgICAgdGhpcy5wZXNzb2EuY3BmID0gVW5iVXRpbHMuZm9ybWF0YUNwZihyZXN1bHRhZG8uY3BmKTsgLy8gdm9sdG91IHBybyBmb3JtYXRvIG9yaWdpbmFsIChpc3NvIGV2aXRhIGZvcm1hcnRhciBub3ZhbWVudGUpXHJcbiAgICAgIH1lbHNlIGlmICh0aGlzLnBlc3NvYS50aXBvUGVzc29hID09IFRpcG9QZXNzb2FFbnVtLkpVUklESUNBKSB7XHJcbiAgICAgICAgdGhpcy5wZXNzb2EuY25waiA9IFVuYlV0aWxzLmZvcm1hdGFDbnBqKHJlc3VsdGFkby5jbnBqKTsgLy8gdm9sdG91IHBybyBmb3JtYXRvIG9yaWdpbmFsIChpc3NvIGV2aXRhIGZvcm1hcnRhciBub3ZhbWVudGUpXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIHNlIGNoZWdhciBha2kgZWggcHEgbmFvIGVuY29udHJvdSwgZW50YW8gdGVtb3MgcXVlIGVtaXRpciB1bSByZXN1bHRhZG8gY29tIGNvZGlnb1Blc3NvYSB2YXppbyBtYXMgY29tIG9zIGNyaXRlcmlvcyB1c2FkbyBuYSBwZXNxdWlzYVxyXG4gICAgICBsZXQgbm92YVBlc3NvYSA9IG5ldyBVbmJQZXNzb2FNb2RlbCgpO1xyXG4gICAgICBub3ZhUGVzc29hLnRpcG9QZXNzb2EgPSB0aGlzLnBlc3NvYS50aXBvUGVzc29hO1xyXG4gICAgICBpZiAodGhpcy5wZXNzb2EudGlwb1Blc3NvYSA9PSBUaXBvUGVzc29hRW51bS5GSVNJQ0EpIHtcclxuICAgICAgICBub3ZhUGVzc29hLmNwZiA9IHRoaXMucGVzc29hLmNwZjtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnBlc3NvYS50aXBvUGVzc29hID09IFRpcG9QZXNzb2FFbnVtLkpVUklESUNBKSB7XHJcbiAgICAgICAgbm92YVBlc3NvYS5jbnBqID0gdGhpcy5wZXNzb2EuY25wajtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBub3ZhUGVzc29hLnBhc3NhcG9ydGUgPSB0aGlzLnBlc3NvYS5wYXNzYXBvcnRlO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICAvLyBhZ29yYSBzb2JyZWVzY3JldmVtb3MsIHBxIHNlIHRpdmVyIHVtYSBwZXNzb2EgcGVzcXVpc2FkYSBjb20gcmVzdWx0YWRvIGNvcnJldG8sIGUgcGVzcXVpc2FyIG5vdmFtZW50ZSwgcHJlY2lzYW1vcyBhcGFnYXIgYSBwcmltZWlyYSBwZXNzb2EuIFxyXG4gICAgICB0aGlzLnBlc3NvYSA9IG5vdmFQZXNzb2E7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMucGVzc29hRW1pdHRlZC5lbWl0KHRoaXMucGVzc29hKTsgICBcclxuICB9XHJcblxyXG4gIGhhbmRsZUVycm9yKGVycm86IGFueSkge1xyXG4gICAgdGhpcy5vcGVuU25hY2tCYXIoZXJybyk7ICBcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgLy8gc2UgY2hlZ2FyIGFraSwgZW50YW8gbmFvIGVuY29udHJvdSBhIHBlc3NvYS4gTWFzIGRhbW9zIGEgY2hhbmNlIGRlIGluY2x1aXIgcGVzc29hXHJcbiAgICB0aGlzLnBlc3NvYUVuY29udHJhZG8gPSBmYWxzZSAgXHJcbiAgfVxyXG5cclxuICBoYW5kbGVFcnJvclByaW50Q29uc29sZShlcnJvOiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKGVycm8pO1xyXG4gICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvKTtcclxuICB9XHJcblxyXG4gIG9wZW5TbmFja0JhcihtZXNzYWdlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc25hY2tCYXIub3BlbihtZXNzYWdlLCAneCcsIHtcclxuICAgICAgZHVyYXRpb246IDUwMDAsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHRpcG9QZXNzb2FFbnVtKCkge1xyXG4gICAgcmV0dXJuIFRpcG9QZXNzb2FFbnVtO1xyXG4gIH1cclxufVxyXG4iLCI8Zm9ybSAjcGVzc29hRm9ybT1cIm5nRm9ybVwiIGNsYXNzPVwiZm9ybS1jb250YWluZXJcIiAobmdTdWJtaXQpPVwicGVzcXVpc2FyKClcIj5cclxuICAgIDwhLS0gVGlwbyBkYSBQZXNzb2EuIENvbnRyb2xhZG8gcGVsbyBPbkluaXQgLS0+XHJcbiAgICA8bWF0LXByb2dyZXNzLWJhciAqbmdJZj1cImlzTG9hZGluZ1wiIG1vZGU9XCJpbmRldGVybWluYXRlXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPiBcclxuICAgIDxkaXYgKm5nSWY9XCJtb3N0cmFyVGlwb1Blc3NvYVwiPlxyXG4gICAgICAgIDxtYXQtcmFkaW8tZ3JvdXAgYXJpYS1sYWJlbD1cIlRpcG8gZGUgUGVzc29hXCIgWyhuZ01vZGVsKV09XCJwZXNzb2EudGlwb1Blc3NvYVwiICN0aXBvUGVzc29hPVwibmdNb2RlbFwiIG5hbWU9XCJ0aXBvUGVzc29hXCI+XHJcbiAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uICpuZ0lmPVwicGVzcXVpc2FyUG9yQ1BGXCIgICAgICAgICAgICB2YWx1ZT1cInt7IHRpcG9QZXNzb2FFbnVtKCkuRklTSUNBfX1cIj5QZXNzb2EgRsOtc2ljYTwvbWF0LXJhZGlvLWJ1dHRvbj5cclxuICAgICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gKm5nSWY9XCJwZXNxdWlzYXJQb3JDTlBKXCIgICAgICAgICAgIHZhbHVlPVwie3t0aXBvUGVzc29hRW51bSgpLkpVUklESUNBfX1cIj4gUGVzc29hIEp1csOtZGljYTwvbWF0LXJhZGlvLWJ1dHRvbj5cclxuICAgICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gKm5nSWY9XCJwZXNxdWlzYXJQb3JFc3RyYW5nZWlyb1wiICAgIHZhbHVlPVwie3t0aXBvUGVzc29hRW51bSgpLkVTVFJBTkdFSVJBfX1cIj5Fc3RyYW5nZWlybzwvbWF0LXJhZGlvLWJ1dHRvbj5cclxuICAgICAgICA8L21hdC1yYWRpby1ncm91cD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJicmVha1wiPjwvZGl2PlxyXG4gICAgXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGVzc29hLnRpcG9QZXNzb2EgPT09IHRpcG9QZXNzb2FFbnVtKCkuRklTSUNBXCI+XHJcbiAgICAgIFxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPkNQRjwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwicGVzc29hLmNwZlwiIG5hbWU9XCJjcGZcIiAjY3BmPVwibmdNb2RlbFwiIHJlcXVpcmVkPXt7dHJ1ZX19Lz4gICAgICAgIFxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCIhaXNMb2FkaW5nXCIgZGlzYWJsZWQ9XCJ7e2lzTG9hZGluZ319XCIgbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgYXJpYS1sYWJlbD1cIlBlc3F1aXNhclwiIChjbGljayk9XCJwZXNxdWlzYXIoKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDJweDtcIj5zZWFyY2g8L21hdC1pY29uPiAgICAgICAgICAgIFxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBlc3NvYS50aXBvUGVzc29hID09PSB0aXBvUGVzc29hRW51bSgpLkVTVFJBTkdFSVJBXCI+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+UGFzc2Fwb3J0ZTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwicGVzc29hLnBhc3NhcG9ydGVcIiBuYW1lPVwicGFzc2Fwb3J0ZVwiIHJlcXVpcmVkPVwidHJ1ZVwiIC8+XHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFpc0xvYWRpbmdcIiBtYXRTdWZmaXggbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBhcmlhLWxhYmVsPVwiUGVzcXVpc2FyXCIgKGNsaWNrKT1cInBlc3F1aXNhcigpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5zZWFyY2g8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBlc3NvYS50aXBvUGVzc29hID09PSB0aXBvUGVzc29hRW51bSgpLkpVUklESUNBXCI+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+Q05QSjwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwicGVzc29hLmNucGpcIiBuYW1lPVwiY25walwiIHJlcXVpcmVkPVwidHJ1ZVwiIC8+XHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFpc0xvYWRpbmdcIiBtYXRTdWZmaXggbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiBhcmlhLWxhYmVsPVwiUGVzcXVpc2FyXCIgKGNsaWNrKT1cInBlc3F1aXNhcigpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5zZWFyY2g8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbjwvZm9ybT4iXX0=
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { Component, Inject } from '@angular/core';
|
|
2
|
+
import { UnbPessoaTelefone } from '../unb-pessoa-models/unb-pessoa-telefone.model';
|
|
3
|
+
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/material/snack-bar";
|
|
6
|
+
import * as i2 from "../unb-pessoa.service";
|
|
7
|
+
import * as i3 from "@angular/material/dialog";
|
|
8
|
+
import * as i4 from "@angular/common";
|
|
9
|
+
import * as i5 from "@angular/forms";
|
|
10
|
+
import * as i6 from "@angular/material/button";
|
|
11
|
+
import * as i7 from "@angular/material/form-field";
|
|
12
|
+
import * as i8 from "@angular/material/input";
|
|
13
|
+
import * as i9 from "@angular/material/select";
|
|
14
|
+
import * as i10 from "@angular/material/core";
|
|
15
|
+
export class UnbPessoaTelefoneFormComponent {
|
|
16
|
+
constructor(snackBar, service, dialogRef, data) {
|
|
17
|
+
this.snackBar = snackBar;
|
|
18
|
+
this.service = service;
|
|
19
|
+
this.dialogRef = dialogRef;
|
|
20
|
+
this.data = data;
|
|
21
|
+
this.telefone = new UnbPessoaTelefone();
|
|
22
|
+
this.listaTipoEndereco = [];
|
|
23
|
+
this.telefone = JSON.parse(JSON.stringify(data.telefone)); // O e-mail específico para edição
|
|
24
|
+
// Verifique se a lista de e-mails foi passada e atribua-a
|
|
25
|
+
if (data.telefonesList) {
|
|
26
|
+
this.telefonesList = JSON.parse(JSON.stringify(data.telefonesList)); // Faça uma cópia profunda se for manipular
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
this.telefonesList = []; // Inicialize como vazio se não for passada
|
|
30
|
+
}
|
|
31
|
+
if (!this.telefone) {
|
|
32
|
+
this.telefone = new UnbPessoaTelefone();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
ngOnInit() {
|
|
36
|
+
this.tipoTelefone = this.service.getTipoTelefone();
|
|
37
|
+
// Inscreve para guardar a lista em uma variável comum
|
|
38
|
+
this.tipoTelefone.subscribe(lista => {
|
|
39
|
+
this.listaTipoEndereco = lista;
|
|
40
|
+
// Se já tiver tipoTelefoneCodigo, preenche o nome correspondente
|
|
41
|
+
if (this.telefone.tipoTelefoneCodigo != null) {
|
|
42
|
+
const tipoEncontrado = lista.find(t => t.codigo === this.telefone.tipoTelefoneCodigo);
|
|
43
|
+
if (tipoEncontrado) {
|
|
44
|
+
this.telefone.tipo = tipoEncontrado.denominacao;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else if (this.telefone.tipo) {
|
|
48
|
+
const tipoEncontrado = lista.find(t => t.denominacao?.toLowerCase() === this.telefone.tipo?.toLowerCase());
|
|
49
|
+
if (tipoEncontrado) {
|
|
50
|
+
this.telefone.tipoTelefoneCodigo = tipoEncontrado.codigo;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
salvar(form) {
|
|
56
|
+
if (form.invalid) {
|
|
57
|
+
this.openSnackBar('Existem erros no formulário, por favor, verificar.');
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
if (this.validar(this.telefone) == false)
|
|
61
|
+
return;
|
|
62
|
+
this.telefoneSalvo = this.telefone;
|
|
63
|
+
this.salvarclose();
|
|
64
|
+
}
|
|
65
|
+
compararTipos(t1, t2) {
|
|
66
|
+
return t1 && t2 && t1 === t2;
|
|
67
|
+
}
|
|
68
|
+
onTipoSelecionado(codigoSelecionado) {
|
|
69
|
+
const tipoSelecionado = this.listaTipoEndereco.find(t => t.codigo === codigoSelecionado);
|
|
70
|
+
if (tipoSelecionado) {
|
|
71
|
+
this.telefone.tipo = tipoSelecionado.denominacao;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Valida o objeto de telefone.
|
|
76
|
+
* Retorna true se o telefone for válido, false caso contrário.
|
|
77
|
+
*/
|
|
78
|
+
validar(telefoneToValidate) {
|
|
79
|
+
return true; // Implementar a lógica de validação conforme necessário
|
|
80
|
+
}
|
|
81
|
+
close() {
|
|
82
|
+
this.dialogRef.close(null);
|
|
83
|
+
}
|
|
84
|
+
salvarclose() {
|
|
85
|
+
this.dialogRef.close(this.telefoneSalvo);
|
|
86
|
+
}
|
|
87
|
+
openSnackBar(message) {
|
|
88
|
+
this.snackBar.open(message, 'x', {
|
|
89
|
+
duration: 5000,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: UnbPessoaTelefoneFormComponent, deps: [{ token: i1.MatSnackBar }, { token: i2.UnBPessoaService }, { token: i3.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
93
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: UnbPessoaTelefoneFormComponent, selector: "lib-unb-pessoa-telefone-form", ngImport: i0, template: "<h1 mat-dialog-title>Cadastro de Telefone</h1>\r\n<form (ngSubmit)=\"salvar(form)\" #form=\"ngForm\">\r\n <mat-dialog-content>\r\n <div class=\"form-container\">\r\n <mat-form-field class=\"form-100\" appearance=\"outline\">\r\n <mat-label>DDD</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"telefone.ddd\" name=\"dddValue\" #dddValue=\"ngModel\" />\r\n </mat-form-field> \r\n \r\n <mat-form-field class=\"form-100\" appearance=\"outline\">\r\n <mat-label>N\u00FAmero</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"telefone.numero\" name=\"telefoneValue\" #telefoneValue=\"ngModel\" />\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-100\" appearance=\"outline\">\r\n <mat-label>Tipo</mat-label>\r\n <mat-select [(ngModel)]=\"telefone.tipoTelefoneCodigo\" [compareWith]=\"compararTipos\" name=\"tipoTelefoneCodigo\" (selectionChange)=\"onTipoSelecionado($event.value)\" required>\r\n <mat-option *ngFor=\"let tipo of tipoTelefone | async\" [value]=\"tipo.codigo\">\r\n {{tipo.denominacao}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n </div>\r\n </mat-dialog-content>\r\n\r\n <mat-dialog-actions align=\"end\">\r\n <button mat-stroked-button type=\"button\" color=\"warn\" (click)=\"close()\">Fechar</button>\r\n <button mat-flat-button type=\"submit\" color=\"primary\">Salvar</button>\r\n </mat-dialog-actions>\r\n</form>", styles: [".card-actions-buttons{display:flex;gap:5px;flex-wrap:wrap}.form-container{display:flex;flex-wrap:wrap;column-gap:10px;margin:10px}@media (max-width: 1000px){.form-container{flex-direction:column;gap:5px}}.break{flex-basis:100%;height:0}.form-5{flex:1 1 5%}.inline-table-container{display:flex;align-items:center;justify-content:space-between;padding:5px}@media (max-width: 600px){.form-5,.form-10,.form-15{flex:1 1 100%}}.form-10{flex:1 1 10%}.form-15{flex:1 1 15%}.form-20{flex:1 1 20%}.form-25{flex:1 1 25%}.form-30{flex:1 1 30%}.form-35{flex:1 1 35%}.form-40{flex:1 1 40%}.form-45{flex:1 1 45%}.form-50{flex:1 1 50%}.form-100{flex:1 1 100%;min-width:250px}.botoes-container{display:flex;gap:5px}@media (max-width: 600px){.botoes-container{margin-bottom:10px}.botoes-container button{flex:1;max-width:50%}}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i9.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i10.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] }); }
|
|
94
|
+
}
|
|
95
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: UnbPessoaTelefoneFormComponent, decorators: [{
|
|
96
|
+
type: Component,
|
|
97
|
+
args: [{ standalone: false, selector: 'lib-unb-pessoa-telefone-form', template: "<h1 mat-dialog-title>Cadastro de Telefone</h1>\r\n<form (ngSubmit)=\"salvar(form)\" #form=\"ngForm\">\r\n <mat-dialog-content>\r\n <div class=\"form-container\">\r\n <mat-form-field class=\"form-100\" appearance=\"outline\">\r\n <mat-label>DDD</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"telefone.ddd\" name=\"dddValue\" #dddValue=\"ngModel\" />\r\n </mat-form-field> \r\n \r\n <mat-form-field class=\"form-100\" appearance=\"outline\">\r\n <mat-label>N\u00FAmero</mat-label>\r\n <input type=\"text\" matInput [(ngModel)]=\"telefone.numero\" name=\"telefoneValue\" #telefoneValue=\"ngModel\" />\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"form-100\" appearance=\"outline\">\r\n <mat-label>Tipo</mat-label>\r\n <mat-select [(ngModel)]=\"telefone.tipoTelefoneCodigo\" [compareWith]=\"compararTipos\" name=\"tipoTelefoneCodigo\" (selectionChange)=\"onTipoSelecionado($event.value)\" required>\r\n <mat-option *ngFor=\"let tipo of tipoTelefone | async\" [value]=\"tipo.codigo\">\r\n {{tipo.denominacao}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n </div>\r\n </mat-dialog-content>\r\n\r\n <mat-dialog-actions align=\"end\">\r\n <button mat-stroked-button type=\"button\" color=\"warn\" (click)=\"close()\">Fechar</button>\r\n <button mat-flat-button type=\"submit\" color=\"primary\">Salvar</button>\r\n </mat-dialog-actions>\r\n</form>", styles: [".card-actions-buttons{display:flex;gap:5px;flex-wrap:wrap}.form-container{display:flex;flex-wrap:wrap;column-gap:10px;margin:10px}@media (max-width: 1000px){.form-container{flex-direction:column;gap:5px}}.break{flex-basis:100%;height:0}.form-5{flex:1 1 5%}.inline-table-container{display:flex;align-items:center;justify-content:space-between;padding:5px}@media (max-width: 600px){.form-5,.form-10,.form-15{flex:1 1 100%}}.form-10{flex:1 1 10%}.form-15{flex:1 1 15%}.form-20{flex:1 1 20%}.form-25{flex:1 1 25%}.form-30{flex:1 1 30%}.form-35{flex:1 1 35%}.form-40{flex:1 1 40%}.form-45{flex:1 1 45%}.form-50{flex:1 1 50%}.form-100{flex:1 1 100%;min-width:250px}.botoes-container{display:flex;gap:5px}@media (max-width: 600px){.botoes-container{margin-bottom:10px}.botoes-container button{flex:1;max-width:50%}}\n"] }]
|
|
98
|
+
}], ctorParameters: () => [{ type: i1.MatSnackBar }, { type: i2.UnBPessoaService }, { type: i3.MatDialogRef }, { type: undefined, decorators: [{
|
|
99
|
+
type: Inject,
|
|
100
|
+
args: [MAT_DIALOG_DATA]
|
|
101
|
+
}] }] });
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5iLXBlc3NvYS10ZWxlZm9uZS1mb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdW5iLWxpYi1jb21wb25lbnRzL3NyYy9saWIvdW5iLXBlc3NvYS91bmItcGVzc29hLXRlbGVmb25lLWZvcm0vdW5iLXBlc3NvYS10ZWxlZm9uZS1mb3JtLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdW5iLWxpYi1jb21wb25lbnRzL3NyYy9saWIvdW5iLXBlc3NvYS91bmItcGVzc29hLXRlbGVmb25lLWZvcm0vdW5iLXBlc3NvYS10ZWxlZm9uZS1mb3JtLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHMUQsT0FBTyxFQUFFLGlCQUFpQixFQUF5QixNQUFNLGdEQUFnRCxDQUFDO0FBRTFHLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7OztBQVN6RSxNQUFNLE9BQU8sOEJBQThCO0lBT3pDLFlBQW9CLFFBQXFCLEVBQVUsT0FBeUIsRUFBUyxTQUF1RCxFQUFrQyxJQUFTO1FBQW5LLGFBQVEsR0FBUixRQUFRLENBQWE7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQUFTLGNBQVMsR0FBVCxTQUFTLENBQThDO1FBQWtDLFNBQUksR0FBSixJQUFJLENBQUs7UUFMdkwsYUFBUSxHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUduQyxzQkFBaUIsR0FBNEIsRUFBRSxDQUFDO1FBRzlDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsa0NBQWtDO1FBRTdGLDBEQUEwRDtRQUMxRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2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QyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxZQUFZLENBQUMsT0FBZTtRQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO1lBQy9CLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0F4RlUsOEJBQThCLHlHQU82RyxlQUFlO2tHQVAxSiw4QkFBOEIsb0VDZDNDLHUrQ0E4Qk87OzJGRGhCTSw4QkFBOEI7a0JBTjFDLFNBQVM7aUNBQ0ksS0FBSyxZQUNQLDhCQUE4Qjs7MEJBV3VHLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFVuYlBlc3NvYVRlbGVmb25lLCBVbmJQZXNzb2FUZWxlZm9uZVRpcG8gfSBmcm9tICcuLi91bmItcGVzc29hLW1vZGVscy91bmItcGVzc29hLXRlbGVmb25lLm1vZGVsJztcclxuaW1wb3J0IHsgVW5CUGVzc29hU2VydmljZSB9IGZyb20gJy4uL3VuYi1wZXNzb2Euc2VydmljZSc7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc3RhbmRhbG9uZTogZmFsc2UsXHJcbiAgc2VsZWN0b3I6ICdsaWItdW5iLXBlc3NvYS10ZWxlZm9uZS1mb3JtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdW5iLXBlc3NvYS10ZWxlZm9uZS1mb3JtLmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi91bmItcGVzc29hLXRlbGVmb25lLWZvcm0uY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVW5iUGVzc29hVGVsZWZvbmVGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICB0ZWxlZm9uZVNhbHZvITogVW5iUGVzc29hVGVsZWZvbmU7XHJcbiAgdGVsZWZvbmUgPSBuZXcgVW5iUGVzc29hVGVsZWZvbmUoKTtcclxuICB0ZWxlZm9uZXNMaXN0OiBVbmJQZXNzb2FUZWxlZm9uZVtdO1xyXG4gIHRpcG9UZWxlZm9uZSE6IE9ic2VydmFibGU8VW5iUGVzc29hVGVsZWZvbmVUaXBvW10+O1xyXG4gIGxpc3RhVGlwb0VuZGVyZWNvOiBVbmJQZXNzb2FUZWxlZm9uZVRpcG9bXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNuYWNrQmFyOiBNYXRTbmFja0JhciwgcHJpdmF0ZSBzZXJ2aWNlOiBVbkJQZXNzb2FTZXJ2aWNlLCBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8VW5iUGVzc29hVGVsZWZvbmVGb3JtQ29tcG9uZW50PiwgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMudGVsZWZvbmUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRhdGEudGVsZWZvbmUpKTsgLy8gTyBlLW1haWwgZXNwZWPDrWZpY28gcGFyYSBlZGnDp8Ojb1xyXG5cclxuICAgIC8vIFZlcmlmaXF1ZSBzZSBhIGxpc3RhIGRlIGUtbWFpbHMgZm9pIHBhc3NhZGEgZSBhdHJpYnVhLWFcclxuICAgIGlmIChkYXRhLnRlbGVmb25lc0xpc3QpIHtcclxuICAgICAgdGhpcy50ZWxlZm9uZXNMaXN0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhLnRlbGVmb25lc0xpc3QpKTsgLy8gRmHDp2EgdW1hIGPDs3BpYSBwcm9mdW5kYSBzZSBmb3IgbWFuaXB1bGFyXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRlbGVmb25lc0xpc3QgPSBbXTsgLy8gSW5pY2lhbGl6ZSBjb21vIHZhemlvIHNlIG7Do28gZm9yIHBhc3NhZGFcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMudGVsZWZvbmUpIHtcclxuICAgICAgdGhpcy50ZWxlZm9uZSA9IG5ldyBVbmJQZXNzb2FUZWxlZm9uZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRpcG9UZWxlZm9uZSA9IHRoaXMuc2VydmljZS5nZXRUaXBvVGVsZWZvbmUoKTtcclxuICAgIC8vIEluc2NyZXZlIHBhcmEgZ3VhcmRhciBhIGxpc3RhIGVtIHVtYSB2YXJpw6F2ZWwgY29tdW1cclxuICAgIHRoaXMudGlwb1RlbGVmb25lLnN1YnNjcmliZShsaXN0YSA9PiB7XHJcbiAgICAgIHRoaXMubGlzdGFUaXBvRW5kZXJlY28gPSBsaXN0YTtcclxuXHJcbiAgICAgIC8vIFNlIGrDoSB0aXZlciB0aXBvVGVsZWZvbmVDb2RpZ28sIHByZWVuY2hlIG8gbm9tZSBjb3JyZXNwb25kZW50ZVxyXG4gICAgICBpZiAodGhpcy50ZWxlZm9uZS50aXBvVGVsZWZvbmVDb2RpZ28gIT0gbnVsbCkge1xyXG4gICAgICAgIGNvbnN0IHRpcG9FbmNvbnRyYWRvID0gbGlzdGEuZmluZCh0ID0+IHQuY29kaWdvID09PSB0aGlzLnRlbGVmb25lLnRpcG9UZWxlZm9uZUNvZGlnbyk7XHJcbiAgICAgICAgaWYgKHRpcG9FbmNvbnRyYWRvKSB7XHJcbiAgICAgICAgICB0aGlzLnRlbGVmb25lLnRpcG8gPSB0aXBvRW5jb250cmFkby5kZW5vbWluYWNhbztcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy50ZWxlZm9uZS50aXBvKSB7XHJcbiAgICAgICAgY29uc3QgdGlwb0VuY29udHJhZG8gPSBsaXN0YS5maW5kKFxyXG4gICAgICAgICAgdCA9PiB0LmRlbm9taW5hY2FvPy50b0xvd2VyQ2FzZSgpID09PSB0aGlzLnRlbGVmb25lLnRpcG8/LnRvTG93ZXJDYXNlKClcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmICh0aXBvRW5jb250cmFkbykge1xyXG4gICAgICAgICAgdGhpcy50ZWxlZm9uZS50aXBvVGVsZWZvbmVDb2RpZ28gPSB0aXBvRW5jb250cmFkby5jb2RpZ28hO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzYWx2YXIoZm9ybTogTmdGb3JtKSB7XHJcbiAgICBpZiAoZm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgIHRoaXMub3BlblNuYWNrQmFyKCdFeGlzdGVtIGVycm9zIG5vIGZvcm11bMOhcmlvLCBwb3IgZmF2b3IsIHZlcmlmaWNhci4nKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudmFsaWRhcih0aGlzLnRlbGVmb25lKSA9PSBmYWxzZSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMudGVsZWZvbmVTYWx2byA9IHRoaXMudGVsZWZvbmU7XHJcbiAgICB0aGlzLnNhbHZhcmNsb3NlKClcclxuICB9XHJcblxyXG4gIGNvbXBhcmFyVGlwb3ModDE6IGFueSwgdDI6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHQxICYmIHQyICYmIHQxID09PSB0MjtcclxuICB9XHJcblxyXG4gIG9uVGlwb1NlbGVjaW9uYWRvKGNvZGlnb1NlbGVjaW9uYWRvOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHRpcG9TZWxlY2lvbmFkbyA9IHRoaXMubGlzdGFUaXBvRW5kZXJlY28uZmluZCh0ID0+IHQuY29kaWdvID09PSBjb2RpZ29TZWxlY2lvbmFkbyk7XHJcbiAgICBpZiAodGlwb1NlbGVjaW9uYWRvKSB7XHJcbiAgICAgIHRoaXMudGVsZWZvbmUudGlwbyA9IHRpcG9TZWxlY2lvbmFkby5kZW5vbWluYWNhbztcclxuICAgIH1cclxuICB9XHJcbiAgXHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkYSBvIG9iamV0byBkZSB0ZWxlZm9uZS5cclxuICAgKiBSZXRvcm5hIHRydWUgc2UgbyB0ZWxlZm9uZSBmb3IgdsOhbGlkbywgZmFsc2UgY2FzbyBjb250csOhcmlvLlxyXG4gICAqL1xyXG4gIHZhbGlkYXIodGVsZWZvbmVUb1ZhbGlkYXRlOiBVbmJQZXNzb2FUZWxlZm9uZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRydWU7IC8vIEltcGxlbWVudGFyIGEgbMOzZ2ljYSBkZSB2YWxpZGHDp8OjbyBjb25mb3JtZSBuZWNlc3PDoXJpb1xyXG4gIH1cclxuXHJcbiAgY2xvc2UoKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShudWxsKTtcclxuICB9XHJcblxyXG4gIHNhbHZhcmNsb3NlKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodGhpcy50ZWxlZm9uZVNhbHZvKTtcclxuICB9XHJcblxyXG4gIG9wZW5TbmFja0JhcihtZXNzYWdlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc25hY2tCYXIub3BlbihtZXNzYWdlLCAneCcsIHtcclxuICAgICAgZHVyYXRpb246IDUwMDAsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG59IiwiPGgxIG1hdC1kaWFsb2ctdGl0bGU+Q2FkYXN0cm8gZGUgVGVsZWZvbmU8L2gxPlxyXG48Zm9ybSAobmdTdWJtaXQpPVwic2FsdmFyKGZvcm0pXCIgI2Zvcm09XCJuZ0Zvcm1cIj5cclxuICA8bWF0LWRpYWxvZy1jb250ZW50PlxyXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tY29udGFpbmVyXCI+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZvcm0tMTAwXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPkRERDwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwidGVsZWZvbmUuZGRkXCIgbmFtZT1cImRkZFZhbHVlXCIgI2RkZFZhbHVlPVwibmdNb2RlbFwiIC8+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+IFxyXG4gICAgICBcclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZm9ybS0xMDBcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+TsO6bWVybzwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwidGVsZWZvbmUubnVtZXJvXCIgbmFtZT1cInRlbGVmb25lVmFsdWVcIiAjdGVsZWZvbmVWYWx1ZT1cIm5nTW9kZWxcIiAvPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZm9ybS0xMDBcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+VGlwbzwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtc2VsZWN0IFsobmdNb2RlbCldPVwidGVsZWZvbmUudGlwb1RlbGVmb25lQ29kaWdvXCIgW2NvbXBhcmVXaXRoXT1cImNvbXBhcmFyVGlwb3NcIiBuYW1lPVwidGlwb1RlbGVmb25lQ29kaWdvXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblRpcG9TZWxlY2lvbmFkbygkZXZlbnQudmFsdWUpXCIgcmVxdWlyZWQ+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgdGlwbyBvZiB0aXBvVGVsZWZvbmUgfCBhc3luY1wiIFt2YWx1ZV09XCJ0aXBvLmNvZGlnb1wiPlxyXG4gICAgICAgICAgICB7e3RpcG8uZGVub21pbmFjYW99fVxyXG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICA8L2Rpdj5cclxuICA8L21hdC1kaWFsb2ctY29udGVudD5cclxuXHJcbiAgPG1hdC1kaWFsb2ctYWN0aW9ucyBhbGlnbj1cImVuZFwiPlxyXG4gICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNvbG9yPVwid2FyblwiIChjbGljayk9XCJjbG9zZSgpXCI+RmVjaGFyPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY29sb3I9XCJwcmltYXJ5XCI+U2FsdmFyPC9idXR0b24+XHJcbiAgPC9tYXQtZGlhbG9nLWFjdGlvbnM+XHJcbjwvZm9ybT4iXX0=
|