keevo-components 1.8.543 → 1.8.544
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/esm2022/lib/api/services/image.cutter.service.mjs +2 -2
- package/esm2022/lib/components/keevo-components.module.mjs +3 -3
- package/esm2022/lib/components/kv-avatar/kv-avatar.component.mjs +2 -2
- package/esm2022/lib/components/kv-button/kv-button.component.mjs +4 -3
- package/esm2022/lib/components/kv-buttons/kv-button-popup/kv-button-popup.component.mjs +2 -2
- package/esm2022/lib/components/kv-card-selection/kv-card-selection.component.mjs +3 -3
- package/esm2022/lib/components/kv-chart/kv-chart.component.mjs +2 -2
- package/esm2022/lib/components/kv-home-card/kv-home-card.component.mjs +1 -1
- package/esm2022/lib/components/kv-inputs/kv-check/kv-check.component.mjs +2 -2
- package/esm2022/lib/components/kv-inputs/kv-dropdown/kv-dropdown.component.mjs +2 -2
- package/esm2022/lib/components/kv-inputs/kv-input-calendar/kv-input-calendar.component.mjs +2 -2
- package/esm2022/lib/components/kv-inputs/kv-input-mask/kv-input-mask.component.mjs +2 -2
- package/esm2022/lib/components/kv-inputs/kv-input-number/kv-input-number.component.mjs +2 -2
- package/esm2022/lib/components/kv-inputs/kv-input-password/kv-input-password.component.mjs +2 -2
- package/esm2022/lib/components/kv-inputs/kv-input-text/kv-input-text.component.mjs +2 -2
- package/esm2022/lib/components/kv-inputs/kv-input-text-checkbox/kv-input-text-checkbox.component.mjs +2 -2
- package/esm2022/lib/components/kv-inputs/kv-input-textarea/kv-input-textarea.component.mjs +2 -2
- package/esm2022/lib/components/kv-inputs/kv-input-time/kv-input-time.component.mjs +2 -2
- package/esm2022/lib/components/kv-inputs/kv-multi-select/kv-multi-select.component.mjs +2 -2
- package/esm2022/lib/components/kv-inputs/kv-radio-group/kv-radio-group.component.mjs +2 -2
- package/esm2022/lib/components/kv-inputs/kv-switch/kv-switch.component.mjs +2 -2
- package/esm2022/lib/components/kv-inputs/kv-tree-multi-select/kv-tree-multi-select.component.mjs +2 -2
- package/esm2022/lib/components/kv-layout/dropdown-master/dropdown-master.component.mjs +3 -3
- package/esm2022/lib/components/kv-layout/kv-layout.module.mjs +18 -4
- package/esm2022/lib/components/kv-layout/layout/kv-layout.component.mjs +123 -51
- package/esm2022/lib/components/kv-layout/top-icons/top-icons.component.mjs +15 -0
- package/esm2022/lib/components/kv-modal/kv-modal.component.mjs +1 -1
- package/esm2022/lib/components/kv-orgchart/kv-orgchart.component.mjs +1 -1
- package/esm2022/lib/components/kv-page-form/kv-page-form.component.mjs +1 -1
- package/esm2022/lib/components/kv-page-stepper/kv-page-stepper.component.mjs +6 -8
- package/esm2022/lib/components/kv-page-stepper/kv-page-stepper.module.mjs +8 -4
- package/esm2022/lib/components/kv-pick-list/kv-pick-list.component.mjs +2 -2
- package/esm2022/lib/components/kv-stepper/kv-stepper.component.mjs +5 -7
- package/esm2022/lib/components/kv-stepper/kv-stepper.module.mjs +11 -4
- package/esm2022/lib/components/kv-table/kv-table.component.mjs +1 -1
- package/esm2022/lib/components/kv-table-edit/kv-table-edit.component.mjs +1 -1
- package/esm2022/lib/components/kv-table-expandable/kv-table-expandable.component.mjs +1 -1
- package/esm2022/lib/components/kv-tree-table/kv-tree-table.component.mjs +1 -1
- package/esm2022/lib/components/kv-workspace/empresa/kv-workspace-empresa.component.mjs +3 -44
- package/esm2022/lib/components/kv-workspace/kv-workspace.module.mjs +8 -4
- package/esm2022/lib/components/kv-workspace/master/kv-workspace-master.component.mjs +20 -5
- package/esm2022/lib/components/kv-workspace/workspace/kv-workspace.component.mjs +30 -17
- package/fesm2022/keevo-components.mjs +271 -175
- package/fesm2022/keevo-components.mjs.map +1 -1
- package/lib/api/base-components/base-component-dropdown.d.ts +1 -1
- package/lib/components/kv-button/kv-button.component.d.ts +2 -1
- package/lib/components/kv-layout/kv-layout.module.d.ts +6 -4
- package/lib/components/kv-layout/layout/kv-layout.component.d.ts +50 -34
- package/lib/components/kv-layout/top-icons/top-icons.component.d.ts +15 -0
- package/lib/components/kv-page-stepper/kv-page-stepper.module.d.ts +2 -1
- package/lib/components/kv-stepper/kv-stepper.component.d.ts +1 -1
- package/lib/components/kv-stepper/kv-stepper.module.d.ts +2 -1
- package/lib/components/kv-table/kv-table.component.d.ts +1 -1
- package/lib/components/kv-table-expandable/kv-table-expandable.component.d.ts +1 -1
- package/lib/components/kv-workspace/empresa/kv-workspace-empresa.component.d.ts +2 -9
- package/lib/components/kv-workspace/kv-workspace.module.d.ts +2 -1
- package/lib/components/kv-workspace/master/kv-workspace-master.component.d.ts +8 -1
- package/lib/components/kv-workspace/workspace/kv-workspace.component.d.ts +13 -5
- package/package.json +1 -1
- package/src/assets/images/LogoEvo.png +0 -0
- package/src/assets/images/LogoPequenaEvo.png +0 -0
- package/src/assets/images/background.png +0 -0
- package/src/assets/images/keepass-logo.png +0 -0
- package/src/assets/images/keepass-logo.svg +74 -0
- package/src/assets/images/keevo-logo.png +0 -0
- package/src/assets/images/logokeevo_2.png +0 -0
- package/src/lib/components/keevo-components-styles.scss +56 -3
- package/src/lib/components/kv-button/kv-button.component.scss +145 -0
- package/src/lib/components/kv-inputs/kv-dropdown/kv-dropdown.component.scss +56 -0
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
1
|
+
import { Component, computed, EventEmitter, inject, input, Input, output, Output, signal } from '@angular/core';
|
|
2
2
|
import { ImagensService } from '../../../api/services/imagens.service';
|
|
3
|
+
import { FormBuilder } from '@angular/forms';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "
|
|
5
|
-
import * as i2 from "
|
|
6
|
-
import * as i3 from "
|
|
7
|
-
import * as i4 from "../
|
|
5
|
+
import * as i1 from "@angular/forms";
|
|
6
|
+
import * as i2 from "../../kv-button/kv-button.component";
|
|
7
|
+
import * as i3 from "../../kv-inputs/kv-input-text/kv-input-text.component";
|
|
8
|
+
import * as i4 from "../empresa/kv-workspace-empresa.component";
|
|
9
|
+
import * as i5 from "../master/kv-workspace-master.component";
|
|
8
10
|
export class WorkspaceComponent {
|
|
9
11
|
constructor() {
|
|
10
12
|
this.backgroundImg = 'https://work-assets.keevo.com.br/img/background-keevocenter-login.jpg';
|
|
11
|
-
this.nomeUsuario = 'Nome do Usuário Logado';
|
|
12
13
|
this.somenteMaster = true;
|
|
13
14
|
this.visivel = true;
|
|
14
15
|
this.showBtnVoltar = false;
|
|
@@ -17,10 +18,27 @@ export class WorkspaceComponent {
|
|
|
17
18
|
this.onGetEmpresaSelecionada = new EventEmitter();
|
|
18
19
|
this.onPaginate = new EventEmitter();
|
|
19
20
|
this.onBtnVoltarClick = new EventEmitter();
|
|
21
|
+
this.fb = inject(FormBuilder);
|
|
22
|
+
this.masters = input([]);
|
|
23
|
+
this.empresas = input([]);
|
|
24
|
+
this.nomeUsuario = input('Nome do Usuário Logado');
|
|
25
|
+
this.widthScreen = signal(window.innerWidth);
|
|
26
|
+
this.logoKeevoCenter = input('');
|
|
27
|
+
this.onFilter = output();
|
|
28
|
+
this.searchInput = signal('');
|
|
29
|
+
this.minWidthCard = computed(() => {
|
|
30
|
+
return this.widthScreen() >= 992 ? '45rem' : '100%';
|
|
31
|
+
});
|
|
20
32
|
}
|
|
21
33
|
ngOnInit() {
|
|
22
34
|
this.imgPersonagens = ImagensService.getPersonagensWorkSpace();
|
|
23
35
|
this.imgLogoKeevo = ImagensService.getLogoKeevo();
|
|
36
|
+
this.workspaceForm = this.fb.group({
|
|
37
|
+
search: ['']
|
|
38
|
+
});
|
|
39
|
+
window.addEventListener('resize', () => {
|
|
40
|
+
this.widthScreen.set(window.innerWidth);
|
|
41
|
+
});
|
|
24
42
|
}
|
|
25
43
|
paginate(event) {
|
|
26
44
|
this.onPaginate.emit(event);
|
|
@@ -34,32 +52,27 @@ export class WorkspaceComponent {
|
|
|
34
52
|
selecionarMaster(event) {
|
|
35
53
|
this.onGetMasterSelecionada.emit(event);
|
|
36
54
|
}
|
|
55
|
+
filter() {
|
|
56
|
+
this.onFilter.emit(this.workspaceForm.value.search);
|
|
57
|
+
}
|
|
37
58
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: WorkspaceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
38
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: WorkspaceComponent, selector: "kv-workspace", inputs: { backgroundImg: "backgroundImg",
|
|
59
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: WorkspaceComponent, selector: "kv-workspace", inputs: { backgroundImg: { classPropertyName: "backgroundImg", publicName: "backgroundImg", isSignal: false, isRequired: false, transformFunction: null }, somenteMaster: { classPropertyName: "somenteMaster", publicName: "somenteMaster", isSignal: false, isRequired: false, transformFunction: null }, visivel: { classPropertyName: "visivel", publicName: "visivel", isSignal: false, isRequired: false, transformFunction: null }, showBtnVoltar: { classPropertyName: "showBtnVoltar", publicName: "showBtnVoltar", isSignal: false, isRequired: false, transformFunction: null }, empresaSelecionada: { classPropertyName: "empresaSelecionada", publicName: "empresaSelecionada", isSignal: false, isRequired: false, transformFunction: null }, totalEmpresas: { classPropertyName: "totalEmpresas", publicName: "totalEmpresas", isSignal: false, isRequired: false, transformFunction: null }, masterSelecionada: { classPropertyName: "masterSelecionada", publicName: "masterSelecionada", isSignal: false, isRequired: false, transformFunction: null }, masters: { classPropertyName: "masters", publicName: "masters", isSignal: true, isRequired: false, transformFunction: null }, empresas: { classPropertyName: "empresas", publicName: "empresas", isSignal: true, isRequired: false, transformFunction: null }, nomeUsuario: { classPropertyName: "nomeUsuario", publicName: "nomeUsuario", isSignal: true, isRequired: false, transformFunction: null }, logoKeevoCenter: { classPropertyName: "logoKeevoCenter", publicName: "logoKeevoCenter", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onGetMasterSelecionada: "onGetMasterSelecionada", onGetEmpresaSelecionada: "onGetEmpresaSelecionada", onPaginate: "onPaginate", onBtnVoltarClick: "onBtnVoltarClick", onFilter: "onFilter" }, ngImport: i0, template: "@if(visivel) {\r\n<div class=\"flex align-items-center justify-content-center\">\r\n <div\r\n class=\"bg-white h-auto border-round-lg lg:p-4 p-2 flex flex-column gap-2 overflow-hidden\"\r\n [style.max-width.rem]=\"'45'\"\r\n [style.min-width]=\"minWidthCard()\"\r\n >\r\n <div class=\"px-2 flex flex-column align-items-center gap-2\">\r\n <img [src]=\"logoKeevoCenter()\" style=\"height: 4rem\" class=\"py-2\" />\r\n <span class=\"text-sm\">\r\n Ol\u00E1, <b>{{ nomeUsuario() }}</b\r\n >. Bem vindo (a)! Escolha a\r\n <b>{{ !somenteMaster && masterSelecionada ? \"Empresa\" : \"Licen\u00E7a\" }}</b>\r\n que deseja acessar:\r\n </span>\r\n </div>\r\n\r\n <div\r\n class=\"col-12 grid formgrid p-fluid m-0 px-2 pt-2 pb-0\"\r\n [formGroup]=\"workspaceForm\"\r\n >\r\n <kv-input-text\r\n placeholder=\"Buscar {{\r\n !somenteMaster && masterSelecionada ? 'empresa' : 'licen\u00E7a'\r\n }}\"\r\n class=\"col-12 m-0 p-0\"\r\n (onInput)=\"filter()\"\r\n formControlName=\"search\"\r\n ></kv-input-text>\r\n </div>\r\n\r\n @if(!masterSelecionada){\r\n <kv-workspace-master\r\n [masters]=\"masters()\"\r\n [masterSelecionada]=\"masterSelecionada\"\r\n (onMasterSelecionada)=\"selecionarMaster($event)\"\r\n >\r\n </kv-workspace-master>\r\n } @if(!somenteMaster && masterSelecionada){\r\n <kv-workspace-empresa\r\n [empresas]=\"empresas()\"\r\n [totalEmpresas]=\"totalEmpresas\"\r\n (onEmpresaSelecionada)=\"selecionarEmpresa($event)\"\r\n (onPaginate)=\"paginate($event)\"\r\n >\r\n </kv-workspace-empresa>\r\n } \r\n @if(showBtnVoltar && masterSelecionada) {\r\n <div class=\"flex text-left mt-2\">\r\n <kv-button\r\n icon=\"chevron_left\"\r\n iconPosition=\"left\"\r\n label=\"Voltar\"\r\n type=\"text\"\r\n severity=\"secondary\"\r\n class=\"ml-2\"\r\n (onClick)=\"OnBtnVoltarClick()\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n}\r\n", styles: [":host{overflow:hidden}.cards-container{overflow-x:hidden;transition:all .2s}.cards-container::-webkit-scrollbar{width:6px}.cards-container::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}.cards-container:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:rgba(var(--kv-secondary-color),.75)}.cards-container::-webkit-scrollbar-track{border-left:2px solid white;background-color:rgba(var(--kv-secondary-color),.15)}.voltar-box{display:flex;flex-direction:row;align-items:center;gap:.5rem;cursor:pointer;padding:.5rem;transition:all .2s}.voltar-box:hover{opacity:.8}.voltar-box:active{opacity:.9}.link{color:rgba(var(--kv-secondary-color),.9);text-decoration:none;cursor:pointer}.link:active{color:rgba(var(--kv-secondary-color),1)}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2.KvButtonComponent, selector: "kv-button", inputs: ["fullWidth", "type", "loading", "severity", "size", "icon", "iconPosition", "label", "disabled"], outputs: ["onClick"] }, { kind: "component", type: i3.KvInputTextComponent, selector: "kv-input-text", inputs: ["textCaptalized"] }, { kind: "component", type: i4.WorkspaceEmpresaComponent, selector: "kv-workspace-empresa", inputs: ["empresas", "empresaSelecionada", "totalEmpresas"], outputs: ["onEmpresaSelecionada", "onPaginate"] }, { kind: "component", type: i5.WorkspaceMasterComponent, selector: "kv-workspace-master", inputs: ["masters", "masterSelecionada", "emptyText"], outputs: ["onMasterSelecionada"] }] }); }
|
|
39
60
|
}
|
|
40
61
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: WorkspaceComponent, decorators: [{
|
|
41
62
|
type: Component,
|
|
42
|
-
args: [{ selector: 'kv-workspace', template: "@if(visivel){\r\n<div \r\n class=\"
|
|
63
|
+
args: [{ selector: 'kv-workspace', template: "@if(visivel) {\r\n<div class=\"flex align-items-center justify-content-center\">\r\n <div\r\n class=\"bg-white h-auto border-round-lg lg:p-4 p-2 flex flex-column gap-2 overflow-hidden\"\r\n [style.max-width.rem]=\"'45'\"\r\n [style.min-width]=\"minWidthCard()\"\r\n >\r\n <div class=\"px-2 flex flex-column align-items-center gap-2\">\r\n <img [src]=\"logoKeevoCenter()\" style=\"height: 4rem\" class=\"py-2\" />\r\n <span class=\"text-sm\">\r\n Ol\u00E1, <b>{{ nomeUsuario() }}</b\r\n >. Bem vindo (a)! Escolha a\r\n <b>{{ !somenteMaster && masterSelecionada ? \"Empresa\" : \"Licen\u00E7a\" }}</b>\r\n que deseja acessar:\r\n </span>\r\n </div>\r\n\r\n <div\r\n class=\"col-12 grid formgrid p-fluid m-0 px-2 pt-2 pb-0\"\r\n [formGroup]=\"workspaceForm\"\r\n >\r\n <kv-input-text\r\n placeholder=\"Buscar {{\r\n !somenteMaster && masterSelecionada ? 'empresa' : 'licen\u00E7a'\r\n }}\"\r\n class=\"col-12 m-0 p-0\"\r\n (onInput)=\"filter()\"\r\n formControlName=\"search\"\r\n ></kv-input-text>\r\n </div>\r\n\r\n @if(!masterSelecionada){\r\n <kv-workspace-master\r\n [masters]=\"masters()\"\r\n [masterSelecionada]=\"masterSelecionada\"\r\n (onMasterSelecionada)=\"selecionarMaster($event)\"\r\n >\r\n </kv-workspace-master>\r\n } @if(!somenteMaster && masterSelecionada){\r\n <kv-workspace-empresa\r\n [empresas]=\"empresas()\"\r\n [totalEmpresas]=\"totalEmpresas\"\r\n (onEmpresaSelecionada)=\"selecionarEmpresa($event)\"\r\n (onPaginate)=\"paginate($event)\"\r\n >\r\n </kv-workspace-empresa>\r\n } \r\n @if(showBtnVoltar && masterSelecionada) {\r\n <div class=\"flex text-left mt-2\">\r\n <kv-button\r\n icon=\"chevron_left\"\r\n iconPosition=\"left\"\r\n label=\"Voltar\"\r\n type=\"text\"\r\n severity=\"secondary\"\r\n class=\"ml-2\"\r\n (onClick)=\"OnBtnVoltarClick()\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n}\r\n", styles: [":host{overflow:hidden}.cards-container{overflow-x:hidden;transition:all .2s}.cards-container::-webkit-scrollbar{width:6px}.cards-container::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}.cards-container:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:rgba(var(--kv-secondary-color),.75)}.cards-container::-webkit-scrollbar-track{border-left:2px solid white;background-color:rgba(var(--kv-secondary-color),.15)}.voltar-box{display:flex;flex-direction:row;align-items:center;gap:.5rem;cursor:pointer;padding:.5rem;transition:all .2s}.voltar-box:hover{opacity:.8}.voltar-box:active{opacity:.9}.link{color:rgba(var(--kv-secondary-color),.9);text-decoration:none;cursor:pointer}.link:active{color:rgba(var(--kv-secondary-color),1)}\n"] }]
|
|
43
64
|
}], ctorParameters: () => [], propDecorators: { backgroundImg: [{
|
|
44
65
|
type: Input
|
|
45
|
-
}], logoKeevoCenter: [{
|
|
46
|
-
type: Input
|
|
47
|
-
}], nomeUsuario: [{
|
|
48
|
-
type: Input
|
|
49
66
|
}], somenteMaster: [{
|
|
50
67
|
type: Input
|
|
51
68
|
}], visivel: [{
|
|
52
69
|
type: Input
|
|
53
70
|
}], showBtnVoltar: [{
|
|
54
71
|
type: Input
|
|
55
|
-
}], empresas: [{
|
|
56
|
-
type: Input
|
|
57
72
|
}], empresaSelecionada: [{
|
|
58
73
|
type: Input
|
|
59
74
|
}], totalEmpresas: [{
|
|
60
75
|
type: Input
|
|
61
|
-
}], masters: [{
|
|
62
|
-
type: Input
|
|
63
76
|
}], masterSelecionada: [{
|
|
64
77
|
type: Input
|
|
65
78
|
}], onGetMasterSelecionada: [{
|
|
@@ -71,4 +84,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
|
|
|
71
84
|
}], onBtnVoltarClick: [{
|
|
72
85
|
type: Output
|
|
73
86
|
}] } });
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3Ytd29ya3NwYWNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LXdvcmtzcGFjZS93b3Jrc3BhY2Uva3Ytd29ya3NwYWNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LXdvcmtzcGFjZS93b3Jrc3BhY2Uva3Ytd29ya3NwYWNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUVSLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLEtBQUssRUFFTCxNQUFNLEVBQ04sTUFBTSxFQUNOLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFdBQVcsRUFBYSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBT3hELE1BQU0sT0FBTyxrQkFBa0I7SUFtQzdCO1FBL0JTLGtCQUFhLEdBQVcsdUVBQXVFLENBQUM7UUFDaEcsa0JBQWEsR0FBWSxJQUFJLENBQUM7UUFDOUIsWUFBTyxHQUFZLElBQUksQ0FBQztRQUN4QixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUcvQixrQkFBYSxHQUFXLENBQUMsQ0FBQztRQUl6QiwyQkFBc0IsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ2pELDRCQUF1QixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDbEQsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDckMscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUVyRCxPQUFFLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pCLFlBQU8sR0FBRyxLQUFLLENBQVEsRUFBRSxDQUFDLENBQUM7UUFDM0IsYUFBUSxHQUFHLEtBQUssQ0FBUSxFQUFFLENBQUMsQ0FBQztRQUM1QixnQkFBVyxHQUFHLEtBQUssQ0FBUyx3QkFBd0IsQ0FBQyxDQUFDO1FBR3RELGdCQUFXLEdBQUcsTUFBTSxDQUFTLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoRCxvQkFBZSxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUNwQyxhQUFRLEdBQUcsTUFBTSxFQUFPLENBQUM7UUFFekIsZ0JBQVcsR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7UUFFakMsaUJBQVksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzNCLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7SUFFYSxDQUFDO0lBRWpCLFFBQVE7UUFDTixJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQy9ELElBQUksQ0FBQyxZQUFZLEdBQUcsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRWxELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDakMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO1NBQ2IsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7WUFDckMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFVO1FBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELGlCQUFpQixDQUFDLE9BQVk7UUFDNUIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBVTtRQUN6QixJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDckQsQ0FBQzs4R0FwRVUsa0JBQWtCO2tHQUFsQixrQkFBa0Isd3lEQ3JCL0Isc2pFQStEQTs7MkZEMUNhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxjQUFjO3dEQVFmLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUksc0JBQXNCO3NCQUEvQixNQUFNO2dCQUNHLHVCQUF1QjtzQkFBaEMsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIGNvbXB1dGVkLFxyXG4gIGVmZmVjdCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgaW5qZWN0LFxyXG4gIGlucHV0LFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBvdXRwdXQsXHJcbiAgT3V0cHV0LFxyXG4gIHNpZ25hbFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJbWFnZW5zU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FwaS9zZXJ2aWNlcy9pbWFnZW5zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdrdi13b3Jrc3BhY2UnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9rdi13b3Jrc3BhY2UuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2t2LXdvcmtzcGFjZS5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgV29ya3NwYWNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgaW1nTG9nb0tlZXZvICE6IHN0cmluZztcclxuICBpbWdQZXJzb25hZ2VucyE6IHN0cmluZztcclxuICBASW5wdXQoKSBiYWNrZ3JvdW5kSW1nOiBzdHJpbmcgPSAnaHR0cHM6Ly93b3JrLWFzc2V0cy5rZWV2by5jb20uYnIvaW1nL2JhY2tncm91bmQta2Vldm9jZW50ZXItbG9naW4uanBnJztcclxuICBASW5wdXQoKSBzb21lbnRlTWFzdGVyOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSB2aXNpdmVsOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93QnRuVm9sdGFyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIGVtcHJlc2FTZWxlY2lvbmFkYSE6IGFueVxyXG4gIEBJbnB1dCgpIHRvdGFsRW1wcmVzYXM6IG51bWJlciA9IDA7XHJcblxyXG4gIEBJbnB1dCgpIG1hc3RlclNlbGVjaW9uYWRhITogYW55O1xyXG5cclxuICBAT3V0cHV0KCkgb25HZXRNYXN0ZXJTZWxlY2lvbmFkYSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBvbkdldEVtcHJlc2FTZWxlY2lvbmFkYSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBvblBhZ2luYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIG9uQnRuVm9sdGFyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpO1xyXG4gIG1hc3RlcnMgPSBpbnB1dDxhbnlbXT4oW10pO1xyXG4gIGVtcHJlc2FzID0gaW5wdXQ8YW55W10+KFtdKTtcclxuICBub21lVXN1YXJpbyA9IGlucHV0PHN0cmluZz4oJ05vbWUgZG8gVXN1w6FyaW8gTG9nYWRvJyk7XHJcbiAgd29ya3NwYWNlRm9ybSE6IEZvcm1Hcm91cDtcclxuXHJcbiAgd2lkdGhTY3JlZW4gPSBzaWduYWw8bnVtYmVyPih3aW5kb3cuaW5uZXJXaWR0aCk7XHJcbiAgbG9nb0tlZXZvQ2VudGVyID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcbiAgb25GaWx0ZXIgPSBvdXRwdXQ8YW55PigpO1xyXG5cclxuICBzZWFyY2hJbnB1dCA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcclxuXHJcbiAgbWluV2lkdGhDYXJkID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMud2lkdGhTY3JlZW4oKSA+PSA5OTIgPyAnNDVyZW0nIDogJzEwMCUnO1xyXG4gIH0pO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW1nUGVyc29uYWdlbnMgPSBJbWFnZW5zU2VydmljZS5nZXRQZXJzb25hZ2Vuc1dvcmtTcGFjZSgpO1xyXG4gICAgdGhpcy5pbWdMb2dvS2Vldm8gPSBJbWFnZW5zU2VydmljZS5nZXRMb2dvS2Vldm8oKTtcclxuXHJcbiAgICB0aGlzLndvcmtzcGFjZUZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgc2VhcmNoOiBbJyddXHJcbiAgICB9KTtcclxuXHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgKCkgPT4ge1xyXG4gICAgICB0aGlzLndpZHRoU2NyZWVuLnNldCh3aW5kb3cuaW5uZXJXaWR0aCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHBhZ2luYXRlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMub25QYWdpbmF0ZS5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIE9uQnRuVm9sdGFyQ2xpY2soKSB7XHJcbiAgICB0aGlzLm9uQnRuVm9sdGFyQ2xpY2suZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWNpb25hckVtcHJlc2EoZW1wcmVzYTogYW55KSB7XHJcbiAgICB0aGlzLm9uR2V0RW1wcmVzYVNlbGVjaW9uYWRhLmVtaXQoZW1wcmVzYSk7XHJcbiAgfVxyXG5cclxuICBzZWxlY2lvbmFyTWFzdGVyKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMub25HZXRNYXN0ZXJTZWxlY2lvbmFkYS5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGZpbHRlcigpIHtcclxuICAgIHRoaXMub25GaWx0ZXIuZW1pdCh0aGlzLndvcmtzcGFjZUZvcm0udmFsdWUuc2VhcmNoKVxyXG4gIH1cclxufVxyXG4iLCJAaWYodmlzaXZlbCkge1xyXG48ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiYmctd2hpdGUgaC1hdXRvIGJvcmRlci1yb3VuZC1sZyBsZzpwLTQgcC0yIGZsZXggZmxleC1jb2x1bW4gZ2FwLTIgb3ZlcmZsb3ctaGlkZGVuXCJcclxuICAgIFtzdHlsZS5tYXgtd2lkdGgucmVtXT1cIic0NSdcIlxyXG4gICAgW3N0eWxlLm1pbi13aWR0aF09XCJtaW5XaWR0aENhcmQoKVwiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cInB4LTIgZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgPGltZyBbc3JjXT1cImxvZ29LZWV2b0NlbnRlcigpXCIgc3R5bGU9XCJoZWlnaHQ6IDRyZW1cIiBjbGFzcz1cInB5LTJcIiAvPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQtc21cIj5cclxuICAgICAgICBPbMOhLCA8Yj57eyBub21lVXN1YXJpbygpIH19PC9iXHJcbiAgICAgICAgPi4gQmVtIHZpbmRvIChhKSEgRXNjb2xoYSBhXHJcbiAgICAgICAgPGI+e3sgIXNvbWVudGVNYXN0ZXIgJiYgbWFzdGVyU2VsZWNpb25hZGEgPyBcIkVtcHJlc2FcIiA6IFwiTGljZW7Dp2FcIiB9fTwvYj5cclxuICAgICAgICBxdWUgZGVzZWphIGFjZXNzYXI6XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJjb2wtMTIgZ3JpZCBmb3JtZ3JpZCBwLWZsdWlkIG0tMCBweC0yIHB0LTIgcGItMFwiXHJcbiAgICAgIFtmb3JtR3JvdXBdPVwid29ya3NwYWNlRm9ybVwiXHJcbiAgICA+XHJcbiAgICAgIDxrdi1pbnB1dC10ZXh0XHJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJCdXNjYXIge3tcclxuICAgICAgICAgICFzb21lbnRlTWFzdGVyICYmIG1hc3RlclNlbGVjaW9uYWRhID8gJ2VtcHJlc2EnIDogJ2xpY2Vuw6dhJ1xyXG4gICAgICAgIH19XCJcclxuICAgICAgICBjbGFzcz1cImNvbC0xMiBtLTAgcC0wXCJcclxuICAgICAgICAob25JbnB1dCk9XCJmaWx0ZXIoKVwiXHJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2VhcmNoXCJcclxuICAgICAgPjwva3YtaW5wdXQtdGV4dD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIEBpZighbWFzdGVyU2VsZWNpb25hZGEpe1xyXG4gICAgPGt2LXdvcmtzcGFjZS1tYXN0ZXJcclxuICAgICAgW21hc3RlcnNdPVwibWFzdGVycygpXCJcclxuICAgICAgW21hc3RlclNlbGVjaW9uYWRhXT1cIm1hc3RlclNlbGVjaW9uYWRhXCJcclxuICAgICAgKG9uTWFzdGVyU2VsZWNpb25hZGEpPVwic2VsZWNpb25hck1hc3RlcigkZXZlbnQpXCJcclxuICAgID5cclxuICAgIDwva3Ytd29ya3NwYWNlLW1hc3Rlcj5cclxuICAgIH0gQGlmKCFzb21lbnRlTWFzdGVyICYmIG1hc3RlclNlbGVjaW9uYWRhKXtcclxuICAgIDxrdi13b3Jrc3BhY2UtZW1wcmVzYVxyXG4gICAgICBbZW1wcmVzYXNdPVwiZW1wcmVzYXMoKVwiXHJcbiAgICAgIFt0b3RhbEVtcHJlc2FzXT1cInRvdGFsRW1wcmVzYXNcIlxyXG4gICAgICAob25FbXByZXNhU2VsZWNpb25hZGEpPVwic2VsZWNpb25hckVtcHJlc2EoJGV2ZW50KVwiXHJcbiAgICAgIChvblBhZ2luYXRlKT1cInBhZ2luYXRlKCRldmVudClcIlxyXG4gICAgPlxyXG4gICAgPC9rdi13b3Jrc3BhY2UtZW1wcmVzYT5cclxuICAgIH0gXHJcbiAgICBAaWYoc2hvd0J0blZvbHRhciAmJiBtYXN0ZXJTZWxlY2lvbmFkYSkge1xyXG4gICAgPGRpdiBjbGFzcz1cImZsZXggdGV4dC1sZWZ0IG10LTJcIj5cclxuICAgICAgPGt2LWJ1dHRvblxyXG4gICAgICAgIGljb249XCJjaGV2cm9uX2xlZnRcIlxyXG4gICAgICAgIGljb25Qb3NpdGlvbj1cImxlZnRcIlxyXG4gICAgICAgIGxhYmVsPVwiVm9sdGFyXCJcclxuICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxyXG4gICAgICAgIGNsYXNzPVwibWwtMlwiXHJcbiAgICAgICAgKG9uQ2xpY2spPVwiT25CdG5Wb2x0YXJDbGljaygpXCJcclxuICAgICAgLz5cclxuICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxufVxyXG4iXX0=
|