@devopmaat/badaboom 1.1.1
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 +3 -0
- package/_index.scss +1 -0
- package/esm2022/devopmaat-badaboom.mjs +5 -0
- package/esm2022/lib/application/common/bdb-data-source.mjs +42 -0
- package/esm2022/lib/application/common/paginator/bdb-paginator.component.mjs +37 -0
- package/esm2022/lib/application/common/query-input/bdb-query-input.component.mjs +45 -0
- package/esm2022/lib/application/common/search/bdb-search-wrapper.component.mjs +33 -0
- package/esm2022/lib/application/common/search/bdb-search.component.mjs +163 -0
- package/esm2022/lib/application/common/table/bdb-cell.directive.mjs +20 -0
- package/esm2022/lib/application/common/table/bdb-column-builder.mjs +94 -0
- package/esm2022/lib/application/common/table/bdb-column-options.mjs +2 -0
- package/esm2022/lib/application/common/table/bdb-column-type.mjs +12 -0
- package/esm2022/lib/application/common/table/bdb-column.mjs +2 -0
- package/esm2022/lib/application/common/table/bdb-context-action.mjs +2 -0
- package/esm2022/lib/application/common/table/bdb-table.component.mjs +193 -0
- package/esm2022/lib/application/common/table/dynamic.pipe.mjs +26 -0
- package/esm2022/lib/application/exception-log/exception-log-table/exception-log-table.component.mjs +49 -0
- package/esm2022/lib/application/task-log/task-log-outcome.pipe.mjs +31 -0
- package/esm2022/lib/application/task-log/task-log-status.pipe.mjs +29 -0
- package/esm2022/lib/application/task-log-parameter/task-log-parameter-value.pipe.mjs +49 -0
- package/esm2022/lib/application/user/user-table/user-table.component.mjs +68 -0
- package/esm2022/lib/bdb-auth-options.mjs +39 -0
- package/esm2022/lib/bdb-options.mjs +25 -0
- package/esm2022/lib/common/alert/bdb-alert.component.mjs +40 -0
- package/esm2022/lib/common/alert-error-response/bdb-alert-error-response.component.mjs +107 -0
- package/esm2022/lib/common/bdb-flex-child.directive.mjs +24 -0
- package/esm2022/lib/common/bdb-flex.directive.mjs +112 -0
- package/esm2022/lib/common/bdb-form-error.directive.mjs +74 -0
- package/esm2022/lib/common/bdb-grid-child.directive.mjs +81 -0
- package/esm2022/lib/common/bdb-grid.directive.mjs +107 -0
- package/esm2022/lib/common/bdb-palette.mjs +2 -0
- package/esm2022/lib/common/boolean-display/bdb-boolean-display.component.mjs +23 -0
- package/esm2022/lib/common/color.mjs +26 -0
- package/esm2022/lib/common/constructor.mjs +2 -0
- package/esm2022/lib/common/field/bdb-field.component.mjs +17 -0
- package/esm2022/lib/common/function.pipe.mjs +20 -0
- package/esm2022/lib/common/layout-error.mjs +6 -0
- package/esm2022/lib/common/linked-list.mjs +53 -0
- package/esm2022/lib/domain/auth/account-info.mjs +2 -0
- package/esm2022/lib/domain/auth/account.service.mjs +32 -0
- package/esm2022/lib/domain/auth/auth.service.mjs +119 -0
- package/esm2022/lib/domain/auth/reset-password-token.mjs +2 -0
- package/esm2022/lib/domain/auth/token-expired.interceptor.mjs +21 -0
- package/esm2022/lib/domain/auth/token-reponse.mjs +2 -0
- package/esm2022/lib/domain/auth/token.interceptor.mjs +17 -0
- package/esm2022/lib/domain/common/bdb-filter.mjs +2 -0
- package/esm2022/lib/domain/common/bdb-request.mjs +2 -0
- package/esm2022/lib/domain/common/bdb-response.mjs +2 -0
- package/esm2022/lib/domain/common/entities/bdb-entity-read.mjs +2 -0
- package/esm2022/lib/domain/common/entities/bdb-entity-update.mjs +2 -0
- package/esm2022/lib/domain/common/entities/bdb-entity.mjs +2 -0
- package/esm2022/lib/domain/common/services/bdb-service-cr.mjs +7 -0
- package/esm2022/lib/domain/common/services/bdb-service-crd.mjs +7 -0
- package/esm2022/lib/domain/common/services/bdb-service-cru.mjs +7 -0
- package/esm2022/lib/domain/common/services/bdb-service-crud.mjs +7 -0
- package/esm2022/lib/domain/common/services/bdb-service-r.mjs +10 -0
- package/esm2022/lib/domain/common/services/bdb-service-rd.mjs +7 -0
- package/esm2022/lib/domain/common/services/bdb-service-ru.mjs +7 -0
- package/esm2022/lib/domain/common/services/bdb-service-rud.mjs +7 -0
- package/esm2022/lib/domain/common/services/bdb-service.mjs +11 -0
- package/esm2022/lib/domain/entities/exception-log/exception-log-read.mjs +2 -0
- package/esm2022/lib/domain/entities/exception-log/exception-log.mjs +2 -0
- package/esm2022/lib/domain/entities/exception-log/exception-log.service.mjs +17 -0
- package/esm2022/lib/domain/entities/media/media-read.mjs +2 -0
- package/esm2022/lib/domain/entities/media/media.mjs +2 -0
- package/esm2022/lib/domain/entities/media/media.service.mjs +27 -0
- package/esm2022/lib/domain/entities/role/role-read.mjs +2 -0
- package/esm2022/lib/domain/entities/role/role.mjs +2 -0
- package/esm2022/lib/domain/entities/role/role.service.mjs +17 -0
- package/esm2022/lib/domain/entities/task-log/task-log-create.mjs +2 -0
- package/esm2022/lib/domain/entities/task-log/task-log-read.mjs +2 -0
- package/esm2022/lib/domain/entities/task-log/task-log.mjs +2 -0
- package/esm2022/lib/domain/entities/task-log/task-log.service.mjs +20 -0
- package/esm2022/lib/domain/entities/task-log-parameter/task-log-parameter-create.mjs +2 -0
- package/esm2022/lib/domain/entities/task-log-parameter/task-log-parameter-read.mjs +2 -0
- package/esm2022/lib/domain/entities/task-log-parameter/task-log-parameter.mjs +2 -0
- package/esm2022/lib/domain/entities/task-log-parameter/task-log-parameter.service.mjs +17 -0
- package/esm2022/lib/domain/entities/task-log-schedule/task-log-schedule-create.mjs +2 -0
- package/esm2022/lib/domain/entities/task-log-schedule/task-log-schedule-read.mjs +2 -0
- package/esm2022/lib/domain/entities/task-log-schedule/task-log-schedule-update.mjs +2 -0
- package/esm2022/lib/domain/entities/task-log-schedule/task-log-schedule.mjs +2 -0
- package/esm2022/lib/domain/entities/task-log-schedule/task-log-schedule.service.mjs +17 -0
- package/esm2022/lib/domain/entities/user/user-create.mjs +2 -0
- package/esm2022/lib/domain/entities/user/user-read.mjs +2 -0
- package/esm2022/lib/domain/entities/user/user-update.mjs +2 -0
- package/esm2022/lib/domain/entities/user/user.mjs +2 -0
- package/esm2022/lib/domain/entities/user/user.service.mjs +17 -0
- package/esm2022/lib/domain/entities/user-role/user-role-create.mjs +2 -0
- package/esm2022/lib/domain/entities/user-role/user-role-read.mjs +2 -0
- package/esm2022/lib/domain/entities/user-role/user-role.mjs +2 -0
- package/esm2022/lib/domain/entities/user-role/user-role.service.mjs +17 -0
- package/esm2022/lib/domain/enums/media-type.mjs +7 -0
- package/esm2022/lib/domain/enums/task-log-outcome.mjs +9 -0
- package/esm2022/lib/domain/enums/task-log-parameter-type.mjs +8 -0
- package/esm2022/lib/domain/enums/task-log-status.mjs +8 -0
- package/esm2022/lib/domain/tasks/task-log-scheduler.service.mjs +26 -0
- package/esm2022/lib/domain/tasks/task-log-type-parameter.mjs +2 -0
- package/esm2022/lib/domain/tasks/task-log-type.mjs +2 -0
- package/esm2022/lib/domain/tasks/task-log-type.service.mjs +44 -0
- package/esm2022/lib/lib.config.mjs +67 -0
- package/esm2022/lib/presentation/access-denied-page/access-denied-page.component.mjs +51 -0
- package/esm2022/lib/presentation/auth-container/auth-container.component.mjs +12 -0
- package/esm2022/lib/presentation/forgot-password-page/forgot-password-page.component.mjs +75 -0
- package/esm2022/lib/presentation/invalid-token-page/invalid-token-page.component.mjs +26 -0
- package/esm2022/lib/presentation/logged-out.guard.mjs +16 -0
- package/esm2022/lib/presentation/login-page/login-page.component.mjs +90 -0
- package/esm2022/lib/presentation/logout-page/logout-page.component.mjs +33 -0
- package/esm2022/lib/presentation/reset-password-page/reset-password-page.component.mjs +102 -0
- package/esm2022/lib/presentation/reset-password.resolver.mjs +25 -0
- package/esm2022/lib/presentation/role.guard.mjs +28 -0
- package/esm2022/public-api.mjs +109 -0
- package/fesm2022/devopmaat-badaboom.mjs +2443 -0
- package/fesm2022/devopmaat-badaboom.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/_theme.scss +32 -0
- package/lib/application/common/bdb-data-source.d.ts +25 -0
- package/lib/application/common/paginator/bdb-paginator.component.d.ts +17 -0
- package/lib/application/common/query-input/_bdb-query-input-theme.scss +17 -0
- package/lib/application/common/query-input/bdb-query-input.component.d.ts +15 -0
- package/lib/application/common/search/_bdb-search-theme.scss +12 -0
- package/lib/application/common/search/bdb-search-wrapper.component.d.ts +13 -0
- package/lib/application/common/search/bdb-search.component.d.ts +43 -0
- package/lib/application/common/table/_bdb-table-theme.scss +48 -0
- package/lib/application/common/table/bdb-cell.directive.d.ts +9 -0
- package/lib/application/common/table/bdb-column-builder.d.ts +18 -0
- package/lib/application/common/table/bdb-column-options.d.ts +32 -0
- package/lib/application/common/table/bdb-column-type.d.ts +10 -0
- package/lib/application/common/table/bdb-column.d.ts +19 -0
- package/lib/application/common/table/bdb-context-action.d.ts +7 -0
- package/lib/application/common/table/bdb-table.component.d.ts +57 -0
- package/lib/application/common/table/dynamic.pipe.d.ts +9 -0
- package/lib/application/exception-log/exception-log-table/exception-log-table.component.d.ts +26 -0
- package/lib/application/task-log/task-log-outcome.pipe.d.ts +8 -0
- package/lib/application/task-log/task-log-status.pipe.d.ts +8 -0
- package/lib/application/task-log-parameter/task-log-parameter-value.pipe.d.ts +10 -0
- package/lib/application/user/user-table/user-table.component.d.ts +25 -0
- package/lib/bdb-auth-options.d.ts +28 -0
- package/lib/bdb-options.d.ts +16 -0
- package/lib/common/_button-theme.scss +87 -0
- package/lib/common/_icon-theme.scss +32 -0
- package/lib/common/alert/_bdb-alert-theme.scss +34 -0
- package/lib/common/alert/bdb-alert.component.d.ts +20 -0
- package/lib/common/alert-error-response/bdb-alert-error-response.component.d.ts +17 -0
- package/lib/common/bdb-flex-child.directive.d.ts +11 -0
- package/lib/common/bdb-flex.directive.d.ts +28 -0
- package/lib/common/bdb-form-error.directive.d.ts +15 -0
- package/lib/common/bdb-grid-child.directive.d.ts +14 -0
- package/lib/common/bdb-grid.directive.d.ts +26 -0
- package/lib/common/bdb-palette.d.ts +1 -0
- package/lib/common/boolean-display/_bdb-boolean-display-theme.scss +18 -0
- package/lib/common/boolean-display/bdb-boolean-display.component.d.ts +7 -0
- package/lib/common/color.d.ts +14 -0
- package/lib/common/constructor.d.ts +2 -0
- package/lib/common/field/bdb-field.component.d.ts +6 -0
- package/lib/common/function.pipe.d.ts +7 -0
- package/lib/common/layout-error.d.ts +3 -0
- package/lib/common/linked-list.d.ts +15 -0
- package/lib/domain/auth/account-info.d.ts +6 -0
- package/lib/domain/auth/account.service.d.ts +29 -0
- package/lib/domain/auth/auth.service.d.ts +35 -0
- package/lib/domain/auth/reset-password-token.d.ts +4 -0
- package/lib/domain/auth/token-expired.interceptor.d.ts +2 -0
- package/lib/domain/auth/token-reponse.d.ts +5 -0
- package/lib/domain/auth/token.interceptor.d.ts +2 -0
- package/lib/domain/common/bdb-filter.d.ts +9 -0
- package/lib/domain/common/bdb-request.d.ts +10 -0
- package/lib/domain/common/bdb-response.d.ts +6 -0
- package/lib/domain/common/entities/bdb-entity-read.d.ts +3 -0
- package/lib/domain/common/entities/bdb-entity-update.d.ts +3 -0
- package/lib/domain/common/entities/bdb-entity.d.ts +3 -0
- package/lib/domain/common/services/bdb-service-cr.d.ts +7 -0
- package/lib/domain/common/services/bdb-service-crd.d.ts +7 -0
- package/lib/domain/common/services/bdb-service-cru.d.ts +8 -0
- package/lib/domain/common/services/bdb-service-crud.d.ts +8 -0
- package/lib/domain/common/services/bdb-service-r.d.ts +10 -0
- package/lib/domain/common/services/bdb-service-rd.d.ts +7 -0
- package/lib/domain/common/services/bdb-service-ru.d.ts +8 -0
- package/lib/domain/common/services/bdb-service-rud.d.ts +8 -0
- package/lib/domain/common/services/bdb-service.d.ts +6 -0
- package/lib/domain/entities/exception-log/exception-log-read.d.ts +9 -0
- package/lib/domain/entities/exception-log/exception-log.d.ts +9 -0
- package/lib/domain/entities/exception-log/exception-log.service.d.ts +9 -0
- package/lib/domain/entities/media/media-read.d.ts +14 -0
- package/lib/domain/entities/media/media.d.ts +15 -0
- package/lib/domain/entities/media/media.service.d.ts +12 -0
- package/lib/domain/entities/role/role-read.d.ts +7 -0
- package/lib/domain/entities/role/role.d.ts +4 -0
- package/lib/domain/entities/role/role.service.d.ts +9 -0
- package/lib/domain/entities/task-log/task-log-create.d.ts +5 -0
- package/lib/domain/entities/task-log/task-log-read.d.ts +11 -0
- package/lib/domain/entities/task-log/task-log.d.ts +15 -0
- package/lib/domain/entities/task-log/task-log.service.d.ts +12 -0
- package/lib/domain/entities/task-log-parameter/task-log-parameter-create.d.ts +7 -0
- package/lib/domain/entities/task-log-parameter/task-log-parameter-read.d.ts +11 -0
- package/lib/domain/entities/task-log-parameter/task-log-parameter.d.ts +10 -0
- package/lib/domain/entities/task-log-parameter/task-log-parameter.service.d.ts +9 -0
- package/lib/domain/entities/task-log-schedule/task-log-schedule-create.d.ts +5 -0
- package/lib/domain/entities/task-log-schedule/task-log-schedule-read.d.ts +7 -0
- package/lib/domain/entities/task-log-schedule/task-log-schedule-update.d.ts +5 -0
- package/lib/domain/entities/task-log-schedule/task-log-schedule.d.ts +7 -0
- package/lib/domain/entities/task-log-schedule/task-log-schedule.service.d.ts +11 -0
- package/lib/domain/entities/user/user-create.d.ts +3 -0
- package/lib/domain/entities/user/user-read.d.ts +6 -0
- package/lib/domain/entities/user/user-update.d.ts +4 -0
- package/lib/domain/entities/user/user.d.ts +5 -0
- package/lib/domain/entities/user/user.service.d.ts +11 -0
- package/lib/domain/entities/user-role/user-role-create.d.ts +4 -0
- package/lib/domain/entities/user-role/user-role-read.d.ts +7 -0
- package/lib/domain/entities/user-role/user-role.d.ts +7 -0
- package/lib/domain/entities/user-role/user-role.service.d.ts +10 -0
- package/lib/domain/enums/media-type.d.ts +5 -0
- package/lib/domain/enums/task-log-outcome.d.ts +7 -0
- package/lib/domain/enums/task-log-parameter-type.d.ts +6 -0
- package/lib/domain/enums/task-log-status.d.ts +6 -0
- package/lib/domain/tasks/task-log-scheduler.service.d.ts +11 -0
- package/lib/domain/tasks/task-log-type-parameter.d.ts +11 -0
- package/lib/domain/tasks/task-log-type.d.ts +7 -0
- package/lib/domain/tasks/task-log-type.service.d.ts +14 -0
- package/lib/lib.config.d.ts +11 -0
- package/lib/presentation/access-denied-page/access-denied-page.component.d.ts +16 -0
- package/lib/presentation/auth-container/auth-container.component.d.ts +5 -0
- package/lib/presentation/forgot-password-page/forgot-password-page.component.d.ts +20 -0
- package/lib/presentation/invalid-token-page/invalid-token-page.component.d.ts +8 -0
- package/lib/presentation/logged-out.guard.d.ts +2 -0
- package/lib/presentation/login-page/login-page.component.d.ts +27 -0
- package/lib/presentation/logout-page/logout-page.component.d.ts +13 -0
- package/lib/presentation/reset-password-page/reset-password-page.component.d.ts +31 -0
- package/lib/presentation/reset-password.resolver.d.ts +3 -0
- package/lib/presentation/role.guard.d.ts +2 -0
- package/package.json +27 -0
- package/public-api.d.ts +99 -0
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { Component, ContentChildren, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
|
|
2
|
+
import { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';
|
|
3
|
+
import { Subject } from 'rxjs';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
import { MatTableModule } from '@angular/material/table';
|
|
6
|
+
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
7
|
+
import { MatSortModule } from '@angular/material/sort';
|
|
8
|
+
import { BdbAlertErrorResponseComponent } from '../../../common/alert-error-response/bdb-alert-error-response.component';
|
|
9
|
+
import { DynamicPipe } from './dynamic.pipe';
|
|
10
|
+
import { BdbBooleanDisplayComponent } from '../../../common/boolean-display/bdb-boolean-display.component';
|
|
11
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
12
|
+
import { BdbCellDirective } from './bdb-cell.directive';
|
|
13
|
+
import { BdbColumnType } from './bdb-column-type';
|
|
14
|
+
import * as i0 from "@angular/core";
|
|
15
|
+
import * as i1 from "@angular/common";
|
|
16
|
+
import * as i2 from "@angular/material/table";
|
|
17
|
+
import * as i3 from "@angular/material/checkbox";
|
|
18
|
+
import * as i4 from "@angular/material/sort";
|
|
19
|
+
import * as i5 from "@angular/material/menu";
|
|
20
|
+
import * as i6 from "@angular/material/icon";
|
|
21
|
+
export class BdbTableComponent {
|
|
22
|
+
constructor() {
|
|
23
|
+
this._onDestroy = new Subject();
|
|
24
|
+
this.columns = [];
|
|
25
|
+
this.displayedColumns = [];
|
|
26
|
+
this.contextActions = [];
|
|
27
|
+
this.selectOnRowClick = true;
|
|
28
|
+
this.selectedRowClass = 'selected';
|
|
29
|
+
this.isClickable = true;
|
|
30
|
+
this.rowClick = new EventEmitter();
|
|
31
|
+
this.contextAction = new EventEmitter();
|
|
32
|
+
this.columnType = BdbColumnType;
|
|
33
|
+
this.contextMenuPosition = { x: '0px', y: '0px' };
|
|
34
|
+
this.trackById = (_, item) => {
|
|
35
|
+
return item.id;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
ngOnInit() {
|
|
39
|
+
this.load();
|
|
40
|
+
}
|
|
41
|
+
ngOnChanges() {
|
|
42
|
+
if (this.columns && !this.displayedColumns.length) {
|
|
43
|
+
this.displayedColumns = this.columns.map(x => x.id);
|
|
44
|
+
}
|
|
45
|
+
if (this.selection?.isMultipleSelection() && !(this.displayedColumns[0] === 'selection')) {
|
|
46
|
+
this.displayedColumns.unshift('selection');
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
ngAfterContentInit() {
|
|
50
|
+
this.setColumnTemplates();
|
|
51
|
+
}
|
|
52
|
+
ngOnDestroy() {
|
|
53
|
+
this._onDestroy.next();
|
|
54
|
+
this._onDestroy.complete();
|
|
55
|
+
}
|
|
56
|
+
load() {
|
|
57
|
+
this.error = undefined;
|
|
58
|
+
this.dataSource.load();
|
|
59
|
+
}
|
|
60
|
+
setColumnTemplates() {
|
|
61
|
+
const templates = this.cellTemplates;
|
|
62
|
+
if (templates == undefined || !this.cellTemplates?.length) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (this.columns && this.columns.length) {
|
|
66
|
+
this.columns.forEach(x => {
|
|
67
|
+
const tpl = templates.filter(y => y.bdbCellDef === x.id)[0];
|
|
68
|
+
if (tpl) {
|
|
69
|
+
x.template = tpl.templateRef;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
onRowClick(row) {
|
|
75
|
+
if (this.selection && this.selectOnRowClick) {
|
|
76
|
+
this.selection.toggle(row);
|
|
77
|
+
}
|
|
78
|
+
this.rowClick.emit(row);
|
|
79
|
+
}
|
|
80
|
+
// SORT
|
|
81
|
+
sortData(event) {
|
|
82
|
+
const column = this.columns.find(x => x.id === event.active);
|
|
83
|
+
if (column) {
|
|
84
|
+
const fxString = column.field.toString();
|
|
85
|
+
this.dataSource.request.sortField = fxString.substring(fxString.lastIndexOf('.') + 1).trim();
|
|
86
|
+
this.dataSource.request.sortDirection = event.direction;
|
|
87
|
+
this.dataSource.load();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// CONTEXT MENU
|
|
91
|
+
onContextMenu(event, row) {
|
|
92
|
+
event.preventDefault();
|
|
93
|
+
if (this.contextActions && this.contextActions.length) {
|
|
94
|
+
this.contextMenuPosition.x = event.clientX + 'px';
|
|
95
|
+
this.contextMenuPosition.y = event.clientY + 'px';
|
|
96
|
+
this.contextMenu.menuData = { row: row };
|
|
97
|
+
if (this.contextMenu.menu) {
|
|
98
|
+
this.contextMenu.menu.focusFirstItem('mouse');
|
|
99
|
+
}
|
|
100
|
+
this.contextMenu.openMenu();
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
onContextMenuAction(action, row) {
|
|
104
|
+
this.contextAction.emit({ action: action, row: row });
|
|
105
|
+
}
|
|
106
|
+
isAllSelected() {
|
|
107
|
+
if (!this.selection) {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
return this.dataSource.data.every(x => this.selection?.isSelected(x));
|
|
111
|
+
}
|
|
112
|
+
anySelected() {
|
|
113
|
+
if (!this.selection) {
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
return this.dataSource.data.some(x => this.selection?.isSelected(x));
|
|
117
|
+
}
|
|
118
|
+
toggleAllRows() {
|
|
119
|
+
if (!(this.selection && this.dataSource)) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
if (this.isAllSelected()) {
|
|
123
|
+
this.selection.deselect(...this.dataSource.data);
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
this.selection.select(...this.dataSource.data);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
rowClass(row) {
|
|
130
|
+
if (!(this.selection || this.rowColor)) {
|
|
131
|
+
return undefined;
|
|
132
|
+
}
|
|
133
|
+
const ret = {};
|
|
134
|
+
if (this.selection) {
|
|
135
|
+
ret[this.selectedRowClass] = this.selection.isSelected(row);
|
|
136
|
+
}
|
|
137
|
+
if (this.rowColor) {
|
|
138
|
+
const palette = this.rowColor(row);
|
|
139
|
+
if (palette) {
|
|
140
|
+
ret['bdb-' + palette] = true;
|
|
141
|
+
}
|
|
142
|
+
else if (!this.selection) {
|
|
143
|
+
return undefined;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return ret;
|
|
147
|
+
}
|
|
148
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: BdbTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
149
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: BdbTableComponent, isStandalone: true, selector: "bdb-table[dataSource]", inputs: { columns: "columns", dataSource: "dataSource", displayedColumns: "displayedColumns", contextActions: "contextActions", selection: "selection", selectOnRowClick: "selectOnRowClick", selectedRowClass: "selectedRowClass", isClickable: "isClickable", rowColor: "rowColor" }, outputs: { rowClick: "rowClick", contextAction: "contextAction" }, queries: [{ propertyName: "cellTemplates", predicate: BdbCellDirective, descendants: true }], viewQueries: [{ propertyName: "contextMenu", first: true, predicate: MatMenuTrigger, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"bdb-table-container\">\r\n <table\r\n mat-table\r\n class=\"bdb-table\"\r\n [class.is-clickable]=\"isClickable\"\r\n [dataSource]=\"dataSource\"\r\n matSort\r\n (matSortChange)=\"sortData($event)\"\r\n *ngIf=\"dataSource\"\r\n [trackBy]=\"trackById\">\r\n <ng-container matColumnDef=\"selection\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <mat-checkbox\r\n (change)=\"$event ? toggleAllRows() : null\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"anySelected() && !isAllSelected()\"\r\n color=\"primary\"\r\n *ngIf=\"selection\">\r\n </mat-checkbox>\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selection.toggle(row) : null\"\r\n [checked]=\"selection.isSelected(row)\"\r\n color=\"accent\"\r\n *ngIf=\"selection\">\r\n </mat-checkbox>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container [matColumnDef]=\"column.id\" *ngFor=\"let column of columns\">\r\n <ng-container>\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n mat-sort-header=\"{{ column.id }}\"\r\n [disabled]=\"column.sortDisabled\"\r\n [width]=\"column.width\"\r\n [ngClass]=\"{ 'text-end': column.textAlign && column.textAlign === 'end' }\"\r\n [arrowPosition]=\"column.textAlign && column.textAlign === 'end' ? 'before' : 'after'\">\r\n {{ column.title }}\r\n </th>\r\n </ng-container>\r\n\r\n <td mat-cell *matCellDef=\"let row\" [ngClass]=\"{ 'text-end': column.textAlign && column.textAlign === 'end' }\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n column.template ? column.template : cellTemplate;\r\n context: { $implicit: row, column: column }\r\n \"></ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let row; columns: displayedColumns\"\r\n (click)=\"onRowClick(row)\"\r\n [ngClass]=\"rowClass(row)\"\r\n (contextmenu)=\"onContextMenu($event, row)\"></tr>\r\n\r\n <tr class=\"mat-row\" *matNoDataRow>\r\n <td class=\"mat-cell\" [colSpan]=\"displayedColumns.length\">\r\n <bdb-alert-error-response\r\n [value]=\"dataSource.error$ | async\"\r\n *ngIf=\"dataSource && (dataSource.error$ | async); else noData\"></bdb-alert-error-response>\r\n </td>\r\n </tr>\r\n </table>\r\n</div>\r\n\r\n<ng-content></ng-content>\r\n\r\n<ng-template #cellTemplate let-row let-column=\"column\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n column.pipe ? pipedCellTemplate : defaultCellTemplate;\r\n context: { $implicit: row, column: column }\r\n \"></ng-container>\r\n</ng-template>\r\n\r\n<ng-template #pipedCellTemplate let-column=\"column\" let-row>\r\n {{ column.field(row) | dynamicPipe: column.pipe : null }}\r\n</ng-template>\r\n\r\n<ng-template #defaultCellTemplate let-row let-column=\"column\">\r\n <ng-container [ngSwitch]=\"column.type\">\r\n <ng-container *ngSwitchCase=\"columnType.String\">{{ column.field(row) }}</ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Number\">{{ column.field(row) | number: column.format }}</ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Percentage\">{{\r\n column.field(row) | percent: column.digitsInfo : column.locale\r\n }}</ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Currency\">{{\r\n column.field(row) | currency: column.currencyCode : column.display : column.digitsInfo : column.locale\r\n }}</ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Date\"> {{ column.field(row) | date: column.format }}</ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Boolean\">\r\n <bdb-boolean-display [value]=\"column.field(row)\"></bdb-boolean-display>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Enum\">{{ column.field(row) }}</ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Custom\">*?*</ng-container>\r\n <ng-container *ngSwitchDefault>{{ column.field(row) | json }}</ng-container>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #noData>\r\n <div class=\"no-data\"><em>Geen gegevens gevonden</em></div>\r\n</ng-template>\r\n\r\n<div\r\n style=\"visibility: hidden; position: fixed\"\r\n [style.left]=\"contextMenuPosition.x\"\r\n [style.top]=\"contextMenuPosition.y\"\r\n [matMenuTriggerFor]=\"contextMenu\"></div>\r\n<mat-menu #contextMenu=\"matMenu\" #contextMenu2=\"matMenu\">\r\n <ng-template matMenuContent let-row=\"row\">\r\n <ng-container *ngFor=\"let action of contextActions\">\r\n <button\r\n mat-menu-item\r\n (click)=\"onContextMenuAction(action, row)\"\r\n *ngIf=\"action.condition === undefined || action.condition(row)\">\r\n <mat-icon [color]=\"action.color\">{{ action.icon }}</mat-icon> {{ action.label }}\r\n </button>\r\n </ng-container>\r\n </ng-template>\r\n</mat-menu>\r\n", styles: [".bdb-table{width:100%}.bdb-table.is-clickable tr:hover{cursor:pointer}.bdb-table-container{height:100%;overflow:auto}.bdb-table-container::-webkit-scrollbar{width:4px}.bdb-table-container::-webkit-scrollbar-thumb{background-color:#0003}.bdb-table-container::-webkit-scrollbar-track{background-color:#0000001a}.text-end{text-align:end}.no-data{color:#00000080;padding:8px}.mat-mdc-header-row .mat-mdc-header-cell{padding-left:8px;padding-right:8px}.mat-mdc-header-row .mat-mdc-header-cell:first-of-type{padding-left:24px}.mat-mdc-header-row .mat-mdc-header-cell:last-of-type{padding-right:24px}.mat-mdc-row .mat-mdc-cell{padding-left:8px;padding-right:8px}.mat-mdc-row .mat-mdc-cell:first-of-type{padding-left:24px}.mat-mdc-row .mat-mdc-cell:last-of-type{padding-right:24px}.mat-column-selection{width:48px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.JsonPipe, name: "json" }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "pipe", type: i1.PercentPipe, name: "percent" }, { kind: "pipe", type: i1.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i2.MatNoDataRow, selector: "ng-template[matNoDataRow]" }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i4.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i4.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: BdbAlertErrorResponseComponent, selector: "bdb-alert-error-response", inputs: ["value"] }, { kind: "pipe", type: DynamicPipe, name: "dynamicPipe" }, { kind: "component", type: BdbBooleanDisplayComponent, selector: "bdb-boolean-display", inputs: ["value"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i5.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5.MatMenuContent, selector: "ng-template[matMenuContent]" }, { kind: "directive", type: i5.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
150
|
+
}
|
|
151
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: BdbTableComponent, decorators: [{
|
|
152
|
+
type: Component,
|
|
153
|
+
args: [{ selector: 'bdb-table[dataSource]', standalone: true, imports: [
|
|
154
|
+
CommonModule,
|
|
155
|
+
MatTableModule,
|
|
156
|
+
MatCheckboxModule,
|
|
157
|
+
MatSortModule,
|
|
158
|
+
BdbAlertErrorResponseComponent,
|
|
159
|
+
DynamicPipe,
|
|
160
|
+
BdbBooleanDisplayComponent,
|
|
161
|
+
MatMenuModule,
|
|
162
|
+
MatIconModule,
|
|
163
|
+
], template: "<div class=\"bdb-table-container\">\r\n <table\r\n mat-table\r\n class=\"bdb-table\"\r\n [class.is-clickable]=\"isClickable\"\r\n [dataSource]=\"dataSource\"\r\n matSort\r\n (matSortChange)=\"sortData($event)\"\r\n *ngIf=\"dataSource\"\r\n [trackBy]=\"trackById\">\r\n <ng-container matColumnDef=\"selection\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <mat-checkbox\r\n (change)=\"$event ? toggleAllRows() : null\"\r\n [checked]=\"selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"anySelected() && !isAllSelected()\"\r\n color=\"primary\"\r\n *ngIf=\"selection\">\r\n </mat-checkbox>\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selection.toggle(row) : null\"\r\n [checked]=\"selection.isSelected(row)\"\r\n color=\"accent\"\r\n *ngIf=\"selection\">\r\n </mat-checkbox>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container [matColumnDef]=\"column.id\" *ngFor=\"let column of columns\">\r\n <ng-container>\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n mat-sort-header=\"{{ column.id }}\"\r\n [disabled]=\"column.sortDisabled\"\r\n [width]=\"column.width\"\r\n [ngClass]=\"{ 'text-end': column.textAlign && column.textAlign === 'end' }\"\r\n [arrowPosition]=\"column.textAlign && column.textAlign === 'end' ? 'before' : 'after'\">\r\n {{ column.title }}\r\n </th>\r\n </ng-container>\r\n\r\n <td mat-cell *matCellDef=\"let row\" [ngClass]=\"{ 'text-end': column.textAlign && column.textAlign === 'end' }\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n column.template ? column.template : cellTemplate;\r\n context: { $implicit: row, column: column }\r\n \"></ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let row; columns: displayedColumns\"\r\n (click)=\"onRowClick(row)\"\r\n [ngClass]=\"rowClass(row)\"\r\n (contextmenu)=\"onContextMenu($event, row)\"></tr>\r\n\r\n <tr class=\"mat-row\" *matNoDataRow>\r\n <td class=\"mat-cell\" [colSpan]=\"displayedColumns.length\">\r\n <bdb-alert-error-response\r\n [value]=\"dataSource.error$ | async\"\r\n *ngIf=\"dataSource && (dataSource.error$ | async); else noData\"></bdb-alert-error-response>\r\n </td>\r\n </tr>\r\n </table>\r\n</div>\r\n\r\n<ng-content></ng-content>\r\n\r\n<ng-template #cellTemplate let-row let-column=\"column\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n column.pipe ? pipedCellTemplate : defaultCellTemplate;\r\n context: { $implicit: row, column: column }\r\n \"></ng-container>\r\n</ng-template>\r\n\r\n<ng-template #pipedCellTemplate let-column=\"column\" let-row>\r\n {{ column.field(row) | dynamicPipe: column.pipe : null }}\r\n</ng-template>\r\n\r\n<ng-template #defaultCellTemplate let-row let-column=\"column\">\r\n <ng-container [ngSwitch]=\"column.type\">\r\n <ng-container *ngSwitchCase=\"columnType.String\">{{ column.field(row) }}</ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Number\">{{ column.field(row) | number: column.format }}</ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Percentage\">{{\r\n column.field(row) | percent: column.digitsInfo : column.locale\r\n }}</ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Currency\">{{\r\n column.field(row) | currency: column.currencyCode : column.display : column.digitsInfo : column.locale\r\n }}</ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Date\"> {{ column.field(row) | date: column.format }}</ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Boolean\">\r\n <bdb-boolean-display [value]=\"column.field(row)\"></bdb-boolean-display>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Enum\">{{ column.field(row) }}</ng-container>\r\n <ng-container *ngSwitchCase=\"columnType.Custom\">*?*</ng-container>\r\n <ng-container *ngSwitchDefault>{{ column.field(row) | json }}</ng-container>\r\n </ng-container>\r\n</ng-template>\r\n\r\n<ng-template #noData>\r\n <div class=\"no-data\"><em>Geen gegevens gevonden</em></div>\r\n</ng-template>\r\n\r\n<div\r\n style=\"visibility: hidden; position: fixed\"\r\n [style.left]=\"contextMenuPosition.x\"\r\n [style.top]=\"contextMenuPosition.y\"\r\n [matMenuTriggerFor]=\"contextMenu\"></div>\r\n<mat-menu #contextMenu=\"matMenu\" #contextMenu2=\"matMenu\">\r\n <ng-template matMenuContent let-row=\"row\">\r\n <ng-container *ngFor=\"let action of contextActions\">\r\n <button\r\n mat-menu-item\r\n (click)=\"onContextMenuAction(action, row)\"\r\n *ngIf=\"action.condition === undefined || action.condition(row)\">\r\n <mat-icon [color]=\"action.color\">{{ action.icon }}</mat-icon> {{ action.label }}\r\n </button>\r\n </ng-container>\r\n </ng-template>\r\n</mat-menu>\r\n", styles: [".bdb-table{width:100%}.bdb-table.is-clickable tr:hover{cursor:pointer}.bdb-table-container{height:100%;overflow:auto}.bdb-table-container::-webkit-scrollbar{width:4px}.bdb-table-container::-webkit-scrollbar-thumb{background-color:#0003}.bdb-table-container::-webkit-scrollbar-track{background-color:#0000001a}.text-end{text-align:end}.no-data{color:#00000080;padding:8px}.mat-mdc-header-row .mat-mdc-header-cell{padding-left:8px;padding-right:8px}.mat-mdc-header-row .mat-mdc-header-cell:first-of-type{padding-left:24px}.mat-mdc-header-row .mat-mdc-header-cell:last-of-type{padding-right:24px}.mat-mdc-row .mat-mdc-cell{padding-left:8px;padding-right:8px}.mat-mdc-row .mat-mdc-cell:first-of-type{padding-left:24px}.mat-mdc-row .mat-mdc-cell:last-of-type{padding-right:24px}.mat-column-selection{width:48px}\n"] }]
|
|
164
|
+
}], propDecorators: { columns: [{
|
|
165
|
+
type: Input
|
|
166
|
+
}], dataSource: [{
|
|
167
|
+
type: Input
|
|
168
|
+
}], displayedColumns: [{
|
|
169
|
+
type: Input
|
|
170
|
+
}], contextActions: [{
|
|
171
|
+
type: Input
|
|
172
|
+
}], selection: [{
|
|
173
|
+
type: Input
|
|
174
|
+
}], selectOnRowClick: [{
|
|
175
|
+
type: Input
|
|
176
|
+
}], selectedRowClass: [{
|
|
177
|
+
type: Input
|
|
178
|
+
}], isClickable: [{
|
|
179
|
+
type: Input
|
|
180
|
+
}], rowClick: [{
|
|
181
|
+
type: Output
|
|
182
|
+
}], contextAction: [{
|
|
183
|
+
type: Output
|
|
184
|
+
}], contextMenu: [{
|
|
185
|
+
type: ViewChild,
|
|
186
|
+
args: [MatMenuTrigger]
|
|
187
|
+
}], cellTemplates: [{
|
|
188
|
+
type: ContentChildren,
|
|
189
|
+
args: [BdbCellDirective, { descendants: true }]
|
|
190
|
+
}], rowColor: [{
|
|
191
|
+
type: Input
|
|
192
|
+
}] } });
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmRiLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhZGFib29tL3NyYy9saWIvYXBwbGljYXRpb24vY29tbW9uL3RhYmxlL2JkYi10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWRhYm9vbS9zcmMvbGliL2FwcGxpY2F0aW9uL2NvbW1vbi90YWJsZS9iZGItdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBR04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQztBQUN6SCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDM0csT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBS3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7Ozs7QUFvQmxELE1BQU0sT0FBTyxpQkFBaUI7SUFqQjlCO1FBa0JtQixlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUV6QyxZQUFPLEdBQWdDLEVBQUUsQ0FBQztRQUUxQyxxQkFBZ0IsR0FBYSxFQUFFLENBQUM7UUFDaEMsbUJBQWMsR0FBOEIsRUFBRSxDQUFDO1FBRy9DLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUN4QixxQkFBZ0IsR0FBRyxVQUFVLENBQUM7UUFFOUIsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFFbEIsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7UUFDckMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBbUQsQ0FBQztRQU05RixlQUFVLEdBQUcsYUFBYSxDQUFDO1FBQzNCLHdCQUFtQixHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFHdEMsY0FBUyxHQUErQixDQUFDLENBQVMsRUFBRSxJQUFlLEVBQUUsRUFBRTtZQUM1RSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDakIsQ0FBQyxDQUFDO0tBNEhIO0lBMUhDLFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEtBQUssV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUN6RixJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFTSxJQUFJO1FBQ1QsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7UUFFdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDckMsSUFBSSxTQUFTLElBQUksU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUMxRCxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUN2QixNQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVELElBQUksR0FBRyxFQUFFLENBQUM7b0JBQ1IsQ0FBQyxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDO2dCQUMvQixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFVO1FBQ25CLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELE9BQU87SUFDUCxRQUFRLENBQUMsS0FBVztRQUNsQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdELElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDN0YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFDeEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWU7SUFDZixhQUFhLENBQUMsS0FBaUIsRUFBRSxHQUFVO1FBQ3pDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN0RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ2xELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDbEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFDekMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDaEQsQ0FBQztZQUNELElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxNQUErQixFQUFFLEdBQVU7UUFDN0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwQixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDekMsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuRCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRCxDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVEsQ0FBQyxHQUFVO1FBQ2pCLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDdkMsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELE1BQU0sR0FBRyxHQUFpQyxFQUFFLENBQUM7UUFDN0MsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25DLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1osR0FBRyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDL0IsQ0FBQztpQkFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUMzQixPQUFPLFNBQVMsQ0FBQztZQUNuQixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQzs4R0F0SlUsaUJBQWlCO2tHQUFqQixpQkFBaUIsMGNBa0JYLGdCQUFnQiw2RkFEdEIsY0FBYyxxRUNyRTNCLHlxS0ErSEEsaTJCRHhGSSxZQUFZLHVsQ0FDWixjQUFjLDJsQ0FDZCxpQkFBaUIsNldBQ2pCLGFBQWEsa2RBQ2IsOEJBQThCLG1GQUM5QixXQUFXLG9EQUNYLDBCQUEwQixrRkFDMUIsYUFBYSxzMUJBQ2IsYUFBYTs7MkZBS0osaUJBQWlCO2tCQWpCN0IsU0FBUzsrQkFDRSx1QkFBdUIsY0FDckIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLGFBQWE7d0JBQ2IsOEJBQThCO3dCQUM5QixXQUFXO3dCQUNYLDBCQUEwQjt3QkFDMUIsYUFBYTt3QkFDYixhQUFhO3FCQUNkOzhCQU9RLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFFb0IsV0FBVztzQkFBckMsU0FBUzt1QkFBQyxjQUFjO2dCQUNpQyxhQUFhO3NCQUF0RSxlQUFlO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFLL0MsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJDb250ZW50SW5pdCxcclxuICBDb21wb25lbnQsXHJcbiAgQ29udGVudENoaWxkcmVuLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFRyYWNrQnlGdW5jdGlvbixcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlLCBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xyXG5pbXBvcnQgeyBTb3J0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRUYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcclxuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XHJcbmltcG9ydCB7IE1hdFNvcnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgQmRiQWxlcnRFcnJvclJlc3BvbnNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2FsZXJ0LWVycm9yLXJlc3BvbnNlL2JkYi1hbGVydC1lcnJvci1yZXNwb25zZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEeW5hbWljUGlwZSB9IGZyb20gJy4vZHluYW1pYy5waXBlJztcclxuaW1wb3J0IHsgQmRiQm9vbGVhbkRpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vYm9vbGVhbi1kaXNwbGF5L2JkYi1ib29sZWFuLWRpc3BsYXkuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBCZGJFbnRpdHkgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vY29tbW9uL2VudGl0aWVzL2JkYi1lbnRpdHknO1xyXG5pbXBvcnQgeyBCZGJDb2x1bW4gfSBmcm9tICcuL2JkYi1jb2x1bW4nO1xyXG5pbXBvcnQgeyBCZGJEYXRhU291cmNlIH0gZnJvbSAnLi4vYmRiLWRhdGEtc291cmNlJztcclxuaW1wb3J0IHsgQmRiQ29udGV4dEFjdGlvbiB9IGZyb20gJy4vYmRiLWNvbnRleHQtYWN0aW9uJztcclxuaW1wb3J0IHsgQmRiQ2VsbERpcmVjdGl2ZSB9IGZyb20gJy4vYmRiLWNlbGwuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQmRiQ29sdW1uVHlwZSB9IGZyb20gJy4vYmRiLWNvbHVtbi10eXBlJztcclxuaW1wb3J0IHsgQmRiUGFsZXR0ZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9iZGItcGFsZXR0ZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JkYi10YWJsZVtkYXRhU291cmNlXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBNYXRUYWJsZU1vZHVsZSxcclxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxyXG4gICAgTWF0U29ydE1vZHVsZSxcclxuICAgIEJkYkFsZXJ0RXJyb3JSZXNwb25zZUNvbXBvbmVudCxcclxuICAgIER5bmFtaWNQaXBlLFxyXG4gICAgQmRiQm9vbGVhbkRpc3BsYXlDb21wb25lbnQsXHJcbiAgICBNYXRNZW51TW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9iZGItdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2JkYi10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmRiVGFibGVDb21wb25lbnQ8VFJlYWQgZXh0ZW5kcyBCZGJFbnRpdHk+IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfb25EZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgQElucHV0KCkgY29sdW1uczogQmRiQ29sdW1uPFRSZWFkLCB1bmtub3duPltdID0gW107XHJcbiAgQElucHV0KCkgZGF0YVNvdXJjZSE6IEJkYkRhdGFTb3VyY2U8VFJlYWQ+O1xyXG4gIEBJbnB1dCgpIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdID0gW107XHJcbiAgQElucHV0KCkgY29udGV4dEFjdGlvbnM6IEJkYkNvbnRleHRBY3Rpb248VFJlYWQ+W10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgc2VsZWN0aW9uPzogU2VsZWN0aW9uTW9kZWw8VFJlYWQ+O1xyXG4gIEBJbnB1dCgpIHNlbGVjdE9uUm93Q2xpY2sgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkUm93Q2xhc3MgPSAnc2VsZWN0ZWQnO1xyXG5cclxuICBASW5wdXQoKSBpc0NsaWNrYWJsZSA9IHRydWU7XHJcblxyXG4gIEBPdXRwdXQoKSByb3dDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8VFJlYWQ+KCk7XHJcbiAgQE91dHB1dCgpIGNvbnRleHRBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHsgYWN0aW9uOiBCZGJDb250ZXh0QWN0aW9uPFRSZWFkPjsgcm93OiBUUmVhZCB9PigpO1xyXG5cclxuICBAVmlld0NoaWxkKE1hdE1lbnVUcmlnZ2VyKSBjb250ZXh0TWVudSE6IE1hdE1lbnVUcmlnZ2VyO1xyXG4gIEBDb250ZW50Q2hpbGRyZW4oQmRiQ2VsbERpcmVjdGl2ZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBjZWxsVGVtcGxhdGVzOiBRdWVyeUxpc3Q8QmRiQ2VsbERpcmVjdGl2ZT4gfCB1bmRlZmluZWQ7XHJcblxyXG4gIGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSB8IHVuZGVmaW5lZDtcclxuICBjb2x1bW5UeXBlID0gQmRiQ29sdW1uVHlwZTtcclxuICBjb250ZXh0TWVudVBvc2l0aW9uID0geyB4OiAnMHB4JywgeTogJzBweCcgfTtcclxuICBASW5wdXQoKSByb3dDb2xvcj86ICh4OiBUUmVhZCkgPT4gQmRiUGFsZXR0ZTtcclxuXHJcbiAgcHVibGljIHRyYWNrQnlJZDogVHJhY2tCeUZ1bmN0aW9uPEJkYkVudGl0eT4gPSAoXzogbnVtYmVyLCBpdGVtOiBCZGJFbnRpdHkpID0+IHtcclxuICAgIHJldHVybiBpdGVtLmlkO1xyXG4gIH07XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2FkKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNvbHVtbnMgJiYgIXRoaXMuZGlzcGxheWVkQ29sdW1ucy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gdGhpcy5jb2x1bW5zLm1hcCh4ID0+IHguaWQpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uPy5pc011bHRpcGxlU2VsZWN0aW9uKCkgJiYgISh0aGlzLmRpc3BsYXllZENvbHVtbnNbMF0gPT09ICdzZWxlY3Rpb24nKSkge1xyXG4gICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMudW5zaGlmdCgnc2VsZWN0aW9uJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldENvbHVtblRlbXBsYXRlcygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9vbkRlc3Ryb3kubmV4dCgpO1xyXG4gICAgdGhpcy5fb25EZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbG9hZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZXJyb3IgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgdGhpcy5kYXRhU291cmNlLmxvYWQoKTtcclxuICB9XHJcblxyXG4gIHNldENvbHVtblRlbXBsYXRlcygpOiB2b2lkIHtcclxuICAgIGNvbnN0IHRlbXBsYXRlcyA9IHRoaXMuY2VsbFRlbXBsYXRlcztcclxuICAgIGlmICh0ZW1wbGF0ZXMgPT0gdW5kZWZpbmVkIHx8ICF0aGlzLmNlbGxUZW1wbGF0ZXM/Lmxlbmd0aCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jb2x1bW5zICYmIHRoaXMuY29sdW1ucy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goeCA9PiB7XHJcbiAgICAgICAgY29uc3QgdHBsID0gdGVtcGxhdGVzLmZpbHRlcih5ID0+IHkuYmRiQ2VsbERlZiA9PT0geC5pZClbMF07XHJcbiAgICAgICAgaWYgKHRwbCkge1xyXG4gICAgICAgICAgeC50ZW1wbGF0ZSA9IHRwbC50ZW1wbGF0ZVJlZjtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Sb3dDbGljayhyb3c6IFRSZWFkKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb24gJiYgdGhpcy5zZWxlY3RPblJvd0NsaWNrKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLnRvZ2dsZShyb3cpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yb3dDbGljay5lbWl0KHJvdyk7XHJcbiAgfVxyXG5cclxuICAvLyBTT1JUXHJcbiAgc29ydERhdGEoZXZlbnQ6IFNvcnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuY29sdW1ucy5maW5kKHggPT4geC5pZCA9PT0gZXZlbnQuYWN0aXZlKTtcclxuICAgIGlmIChjb2x1bW4pIHtcclxuICAgICAgY29uc3QgZnhTdHJpbmcgPSBjb2x1bW4uZmllbGQudG9TdHJpbmcoKTtcclxuICAgICAgdGhpcy5kYXRhU291cmNlLnJlcXVlc3Quc29ydEZpZWxkID0gZnhTdHJpbmcuc3Vic3RyaW5nKGZ4U3RyaW5nLmxhc3RJbmRleE9mKCcuJykgKyAxKS50cmltKCk7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5yZXF1ZXN0LnNvcnREaXJlY3Rpb24gPSBldmVudC5kaXJlY3Rpb247XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5sb2FkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBDT05URVhUIE1FTlVcclxuICBvbkNvbnRleHRNZW51KGV2ZW50OiBNb3VzZUV2ZW50LCByb3c6IFRSZWFkKTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgaWYgKHRoaXMuY29udGV4dEFjdGlvbnMgJiYgdGhpcy5jb250ZXh0QWN0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5jb250ZXh0TWVudVBvc2l0aW9uLnggPSBldmVudC5jbGllbnRYICsgJ3B4JztcclxuICAgICAgdGhpcy5jb250ZXh0TWVudVBvc2l0aW9uLnkgPSBldmVudC5jbGllbnRZICsgJ3B4JztcclxuICAgICAgdGhpcy5jb250ZXh0TWVudS5tZW51RGF0YSA9IHsgcm93OiByb3cgfTtcclxuICAgICAgaWYgKHRoaXMuY29udGV4dE1lbnUubWVudSkge1xyXG4gICAgICAgIHRoaXMuY29udGV4dE1lbnUubWVudS5mb2N1c0ZpcnN0SXRlbSgnbW91c2UnKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNvbnRleHRNZW51Lm9wZW5NZW51KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNvbnRleHRNZW51QWN0aW9uKGFjdGlvbjogQmRiQ29udGV4dEFjdGlvbjxUUmVhZD4sIHJvdzogVFJlYWQpOiB2b2lkIHtcclxuICAgIHRoaXMuY29udGV4dEFjdGlvbi5lbWl0KHsgYWN0aW9uOiBhY3Rpb24sIHJvdzogcm93IH0pO1xyXG4gIH1cclxuXHJcbiAgaXNBbGxTZWxlY3RlZCgpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5zZWxlY3Rpb24pIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5kYXRhLmV2ZXJ5KHggPT4gdGhpcy5zZWxlY3Rpb24/LmlzU2VsZWN0ZWQoeCkpO1xyXG4gIH1cclxuXHJcbiAgYW55U2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0aW9uKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmRhdGFTb3VyY2UuZGF0YS5zb21lKHggPT4gdGhpcy5zZWxlY3Rpb24/LmlzU2VsZWN0ZWQoeCkpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQWxsUm93cygpOiB2b2lkIHtcclxuICAgIGlmICghKHRoaXMuc2VsZWN0aW9uICYmIHRoaXMuZGF0YVNvdXJjZSkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaXNBbGxTZWxlY3RlZCgpKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLmRlc2VsZWN0KC4uLnRoaXMuZGF0YVNvdXJjZS5kYXRhKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdCguLi50aGlzLmRhdGFTb3VyY2UuZGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByb3dDbGFzcyhyb3c6IFRSZWFkKTogeyBba2xhc3M6IHN0cmluZ106IHVua25vd24gfSB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAoISh0aGlzLnNlbGVjdGlvbiB8fCB0aGlzLnJvd0NvbG9yKSkge1xyXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmV0OiB7IFtrbGFzczogc3RyaW5nXTogdW5rbm93biB9ID0ge307XHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb24pIHtcclxuICAgICAgcmV0W3RoaXMuc2VsZWN0ZWRSb3dDbGFzc10gPSB0aGlzLnNlbGVjdGlvbi5pc1NlbGVjdGVkKHJvdyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5yb3dDb2xvcikge1xyXG4gICAgICBjb25zdCBwYWxldHRlID0gdGhpcy5yb3dDb2xvcihyb3cpO1xyXG4gICAgICBpZiAocGFsZXR0ZSkge1xyXG4gICAgICAgIHJldFsnYmRiLScgKyBwYWxldHRlXSA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuc2VsZWN0aW9uKSB7XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJldDtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImJkYi10YWJsZS1jb250YWluZXJcIj5cclxuICA8dGFibGVcclxuICAgIG1hdC10YWJsZVxyXG4gICAgY2xhc3M9XCJiZGItdGFibGVcIlxyXG4gICAgW2NsYXNzLmlzLWNsaWNrYWJsZV09XCJpc0NsaWNrYWJsZVwiXHJcbiAgICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCJcclxuICAgIG1hdFNvcnRcclxuICAgIChtYXRTb3J0Q2hhbmdlKT1cInNvcnREYXRhKCRldmVudClcIlxyXG4gICAgKm5nSWY9XCJkYXRhU291cmNlXCJcclxuICAgIFt0cmFja0J5XT1cInRyYWNrQnlJZFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzZWxlY3Rpb25cIj5cclxuICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cclxuICAgICAgICA8bWF0LWNoZWNrYm94XHJcbiAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IHRvZ2dsZUFsbFJvd3MoKSA6IG51bGxcIlxyXG4gICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgaXNBbGxTZWxlY3RlZCgpXCJcclxuICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cImFueVNlbGVjdGVkKCkgJiYgIWlzQWxsU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgKm5nSWY9XCJzZWxlY3Rpb25cIj5cclxuICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgPC90aD5cclxuICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiPlxyXG4gICAgICAgIDxtYXQtY2hlY2tib3hcclxuICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBzZWxlY3Rpb24udG9nZ2xlKHJvdykgOiBudWxsXCJcclxuICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvbi5pc1NlbGVjdGVkKHJvdylcIlxyXG4gICAgICAgICAgY29sb3I9XCJhY2NlbnRcIlxyXG4gICAgICAgICAgKm5nSWY9XCJzZWxlY3Rpb25cIj5cclxuICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgPC90ZD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2x1bW4uaWRcIiAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnNcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICA8dGhcclxuICAgICAgICAgIG1hdC1oZWFkZXItY2VsbFxyXG4gICAgICAgICAgKm1hdEhlYWRlckNlbGxEZWZcclxuICAgICAgICAgIG1hdC1zb3J0LWhlYWRlcj1cInt7IGNvbHVtbi5pZCB9fVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sdW1uLnNvcnREaXNhYmxlZFwiXHJcbiAgICAgICAgICBbd2lkdGhdPVwiY29sdW1uLndpZHRoXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3RleHQtZW5kJzogY29sdW1uLnRleHRBbGlnbiAmJiBjb2x1bW4udGV4dEFsaWduID09PSAnZW5kJyB9XCJcclxuICAgICAgICAgIFthcnJvd1Bvc2l0aW9uXT1cImNvbHVtbi50ZXh0QWxpZ24gJiYgY29sdW1uLnRleHRBbGlnbiA9PT0gJ2VuZCcgPyAnYmVmb3JlJyA6ICdhZnRlcidcIj5cclxuICAgICAgICAgIHt7IGNvbHVtbi50aXRsZSB9fVxyXG4gICAgICAgIDwvdGg+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiIFtuZ0NsYXNzXT1cInsgJ3RleHQtZW5kJzogY29sdW1uLnRleHRBbGlnbiAmJiBjb2x1bW4udGV4dEFsaWduID09PSAnZW5kJyB9XCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgY29sdW1uLnRlbXBsYXRlID8gY29sdW1uLnRlbXBsYXRlIDogY2VsbFRlbXBsYXRlO1xyXG4gICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93LCBjb2x1bW46IGNvbHVtbiB9XHJcbiAgICAgICAgICBcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC90ZD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uczsgc3RpY2t5OiB0cnVlXCI+PC90cj5cclxuICAgIDx0clxyXG4gICAgICBtYXQtcm93XHJcbiAgICAgICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zXCJcclxuICAgICAgKGNsaWNrKT1cIm9uUm93Q2xpY2socm93KVwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cInJvd0NsYXNzKHJvdylcIlxyXG4gICAgICAoY29udGV4dG1lbnUpPVwib25Db250ZXh0TWVudSgkZXZlbnQsIHJvdylcIj48L3RyPlxyXG5cclxuICAgIDx0ciBjbGFzcz1cIm1hdC1yb3dcIiAqbWF0Tm9EYXRhUm93PlxyXG4gICAgICA8dGQgY2xhc3M9XCJtYXQtY2VsbFwiIFtjb2xTcGFuXT1cImRpc3BsYXllZENvbHVtbnMubGVuZ3RoXCI+XHJcbiAgICAgICAgPGJkYi1hbGVydC1lcnJvci1yZXNwb25zZVxyXG4gICAgICAgICAgW3ZhbHVlXT1cImRhdGFTb3VyY2UuZXJyb3IkIHwgYXN5bmNcIlxyXG4gICAgICAgICAgKm5nSWY9XCJkYXRhU291cmNlICYmIChkYXRhU291cmNlLmVycm9yJCB8IGFzeW5jKTsgZWxzZSBub0RhdGFcIj48L2JkYi1hbGVydC1lcnJvci1yZXNwb25zZT5cclxuICAgICAgPC90ZD5cclxuICAgIDwvdHI+XHJcbiAgPC90YWJsZT5cclxuPC9kaXY+XHJcblxyXG48bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcblxyXG48bmctdGVtcGxhdGUgI2NlbGxUZW1wbGF0ZSBsZXQtcm93IGxldC1jb2x1bW49XCJjb2x1bW5cIj5cclxuICA8bmctY29udGFpbmVyXHJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICBjb2x1bW4ucGlwZSA/IHBpcGVkQ2VsbFRlbXBsYXRlIDogZGVmYXVsdENlbGxUZW1wbGF0ZTtcclxuICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdywgY29sdW1uOiBjb2x1bW4gfVxyXG4gICAgXCI+PC9uZy1jb250YWluZXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3BpcGVkQ2VsbFRlbXBsYXRlIGxldC1jb2x1bW49XCJjb2x1bW5cIiBsZXQtcm93PlxyXG4gIHt7IGNvbHVtbi5maWVsZChyb3cpIHwgZHluYW1pY1BpcGU6IGNvbHVtbi5waXBlIDogbnVsbCB9fVxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNkZWZhdWx0Q2VsbFRlbXBsYXRlIGxldC1yb3cgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxyXG4gIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbHVtbi50eXBlXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlLlN0cmluZ1wiPnt7IGNvbHVtbi5maWVsZChyb3cpIH19PC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlLk51bWJlclwiPnt7IGNvbHVtbi5maWVsZChyb3cpIHwgbnVtYmVyOiBjb2x1bW4uZm9ybWF0IH19PC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlLlBlcmNlbnRhZ2VcIj57e1xyXG4gICAgICBjb2x1bW4uZmllbGQocm93KSB8IHBlcmNlbnQ6IGNvbHVtbi5kaWdpdHNJbmZvIDogY29sdW1uLmxvY2FsZVxyXG4gICAgfX08L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNvbHVtblR5cGUuQ3VycmVuY3lcIj57e1xyXG4gICAgICBjb2x1bW4uZmllbGQocm93KSB8IGN1cnJlbmN5OiBjb2x1bW4uY3VycmVuY3lDb2RlIDogY29sdW1uLmRpc3BsYXkgOiBjb2x1bW4uZGlnaXRzSW5mbyA6IGNvbHVtbi5sb2NhbGVcclxuICAgIH19PC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlLkRhdGVcIj4ge3sgY29sdW1uLmZpZWxkKHJvdykgfCBkYXRlOiBjb2x1bW4uZm9ybWF0IH19PC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlLkJvb2xlYW5cIj5cclxuICAgICAgPGJkYi1ib29sZWFuLWRpc3BsYXkgW3ZhbHVlXT1cImNvbHVtbi5maWVsZChyb3cpXCI+PC9iZGItYm9vbGVhbi1kaXNwbGF5PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlLkVudW1cIj57eyBjb2x1bW4uZmllbGQocm93KSB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uVHlwZS5DdXN0b21cIj4qPyo8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD57eyBjb2x1bW4uZmllbGQocm93KSB8IGpzb24gfX08L25nLWNvbnRhaW5lcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbm9EYXRhPlxyXG4gIDxkaXYgY2xhc3M9XCJuby1kYXRhXCI+PGVtPkdlZW4gZ2VnZXZlbnMgZ2V2b25kZW48L2VtPjwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPGRpdlxyXG4gIHN0eWxlPVwidmlzaWJpbGl0eTogaGlkZGVuOyBwb3NpdGlvbjogZml4ZWRcIlxyXG4gIFtzdHlsZS5sZWZ0XT1cImNvbnRleHRNZW51UG9zaXRpb24ueFwiXHJcbiAgW3N0eWxlLnRvcF09XCJjb250ZXh0TWVudVBvc2l0aW9uLnlcIlxyXG4gIFttYXRNZW51VHJpZ2dlckZvcl09XCJjb250ZXh0TWVudVwiPjwvZGl2PlxyXG48bWF0LW1lbnUgI2NvbnRleHRNZW51PVwibWF0TWVudVwiICNjb250ZXh0TWVudTI9XCJtYXRNZW51XCI+XHJcbiAgPG5nLXRlbXBsYXRlIG1hdE1lbnVDb250ZW50IGxldC1yb3c9XCJyb3dcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBjb250ZXh0QWN0aW9uc1wiPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgbWF0LW1lbnUtaXRlbVxyXG4gICAgICAgIChjbGljayk9XCJvbkNvbnRleHRNZW51QWN0aW9uKGFjdGlvbiwgcm93KVwiXHJcbiAgICAgICAgKm5nSWY9XCJhY3Rpb24uY29uZGl0aW9uID09PSB1bmRlZmluZWQgfHwgYWN0aW9uLmNvbmRpdGlvbihyb3cpXCI+XHJcbiAgICAgICAgPG1hdC1pY29uIFtjb2xvcl09XCJhY3Rpb24uY29sb3JcIj57eyBhY3Rpb24uaWNvbiB9fTwvbWF0LWljb24+IHt7IGFjdGlvbi5sYWJlbCB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvbWF0LW1lbnU+XHJcbiJdfQ==
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Injector, Pipe } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class DynamicPipe {
|
|
4
|
+
constructor(injector) {
|
|
5
|
+
this.injector = injector;
|
|
6
|
+
}
|
|
7
|
+
transform(value, requiredPipe, pipeArgs) {
|
|
8
|
+
const injector = Injector.create({
|
|
9
|
+
name: 'DynamicPipe',
|
|
10
|
+
parent: this.injector,
|
|
11
|
+
providers: [{ provide: requiredPipe }],
|
|
12
|
+
});
|
|
13
|
+
const pipe = injector.get(requiredPipe);
|
|
14
|
+
return pipe.transform(value, pipeArgs);
|
|
15
|
+
}
|
|
16
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: DynamicPipe, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
17
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.1.1", ngImport: i0, type: DynamicPipe, isStandalone: true, name: "dynamicPipe" }); }
|
|
18
|
+
}
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: DynamicPipe, decorators: [{
|
|
20
|
+
type: Pipe,
|
|
21
|
+
args: [{
|
|
22
|
+
name: 'dynamicPipe',
|
|
23
|
+
standalone: true,
|
|
24
|
+
}]
|
|
25
|
+
}], ctorParameters: () => [{ type: i0.Injector }] });
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFkYWJvb20vc3JjL2xpYi9hcHBsaWNhdGlvbi9jb21tb24vdGFibGUvZHluYW1pYy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUF1QixNQUFNLGVBQWUsQ0FBQzs7QUFNcEUsTUFBTSxPQUFPLFdBQVc7SUFDdEIsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUFHLENBQUM7SUFFMUMsU0FBUyxDQUFDLEtBQWMsRUFBRSxZQUFpQyxFQUFFLFFBQWlCO1FBQzVFLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDL0IsSUFBSSxFQUFFLGFBQWE7WUFDbkIsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3JCLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxDQUFDO1NBQ3ZDLENBQUMsQ0FBQztRQUNILE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN6QyxDQUFDOzhHQVhVLFdBQVc7NEdBQVgsV0FBVzs7MkZBQVgsV0FBVztrQkFKdkIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsYUFBYTtvQkFDbkIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IsIFBpcGUsIFBpcGVUcmFuc2Zvcm0sIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiAnZHluYW1pY1BpcGUnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxyXG5cclxuICB0cmFuc2Zvcm0odmFsdWU6IHVua25vd24sIHJlcXVpcmVkUGlwZTogVHlwZTxQaXBlVHJhbnNmb3JtPiwgcGlwZUFyZ3M6IHVua25vd24pOiB1bmtub3duIHtcclxuICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcclxuICAgICAgbmFtZTogJ0R5bmFtaWNQaXBlJyxcclxuICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxyXG4gICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IHJlcXVpcmVkUGlwZSB9XSxcclxuICAgIH0pO1xyXG4gICAgY29uc3QgcGlwZSA9IGluamVjdG9yLmdldChyZXF1aXJlZFBpcGUpO1xyXG4gICAgcmV0dXJuIHBpcGUudHJhbnNmb3JtKHZhbHVlLCBwaXBlQXJncyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
package/esm2022/lib/application/exception-log/exception-log-table/exception-log-table.component.mjs
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { BdbTableComponent } from '../../common/table/bdb-table.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../common/table/bdb-column-builder";
|
|
6
|
+
import * as i2 from "@angular/router";
|
|
7
|
+
export class ExceptionLogTableComponent {
|
|
8
|
+
constructor(cb, router, activatedRoute) {
|
|
9
|
+
this.cb = cb;
|
|
10
|
+
this.router = router;
|
|
11
|
+
this.activatedRoute = activatedRoute;
|
|
12
|
+
this.displayedColumns = [];
|
|
13
|
+
this.rowClick = new EventEmitter();
|
|
14
|
+
this.columns = this.cb.build(this.cb.string(x => x.message, 'Message'));
|
|
15
|
+
this.contextActions = [
|
|
16
|
+
{
|
|
17
|
+
icon: 'search',
|
|
18
|
+
color: 'primary',
|
|
19
|
+
label: 'Details',
|
|
20
|
+
identifier: 'details',
|
|
21
|
+
},
|
|
22
|
+
];
|
|
23
|
+
}
|
|
24
|
+
onRowClick(row) {
|
|
25
|
+
this.rowClick.emit(row);
|
|
26
|
+
}
|
|
27
|
+
onContextAction(event) {
|
|
28
|
+
switch (event.action.identifier) {
|
|
29
|
+
case 'details':
|
|
30
|
+
this.router.navigate([event.row.id], { relativeTo: this.activatedRoute });
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: ExceptionLogTableComponent, deps: [{ token: i1.BdbColumnBuilder }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: ExceptionLogTableComponent, isStandalone: true, selector: "bdb-exception-log-table[dataSource]", inputs: { dataSource: "dataSource", displayedColumns: "displayedColumns", contextActions: "contextActions" }, outputs: { rowClick: "rowClick" }, ngImport: i0, template: "<bdb-table\r\n [columns]=\"columns\"\r\n [dataSource]=\"dataSource\"\r\n [displayedColumns]=\"displayedColumns\"\r\n [contextActions]=\"contextActions\"\r\n (rowClick)=\"onRowClick($event)\"\r\n (contextAction)=\"onContextAction($event)\">\r\n</bdb-table>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: BdbTableComponent, selector: "bdb-table[dataSource]", inputs: ["columns", "dataSource", "displayedColumns", "contextActions", "selection", "selectOnRowClick", "selectedRowClass", "isClickable", "rowColor"], outputs: ["rowClick", "contextAction"] }] }); }
|
|
36
|
+
}
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: ExceptionLogTableComponent, decorators: [{
|
|
38
|
+
type: Component,
|
|
39
|
+
args: [{ selector: 'bdb-exception-log-table[dataSource]', standalone: true, imports: [CommonModule, BdbTableComponent], template: "<bdb-table\r\n [columns]=\"columns\"\r\n [dataSource]=\"dataSource\"\r\n [displayedColumns]=\"displayedColumns\"\r\n [contextActions]=\"contextActions\"\r\n (rowClick)=\"onRowClick($event)\"\r\n (contextAction)=\"onContextAction($event)\">\r\n</bdb-table>\r\n" }]
|
|
40
|
+
}], ctorParameters: () => [{ type: i1.BdbColumnBuilder }, { type: i2.Router }, { type: i2.ActivatedRoute }], propDecorators: { dataSource: [{
|
|
41
|
+
type: Input
|
|
42
|
+
}], displayedColumns: [{
|
|
43
|
+
type: Input
|
|
44
|
+
}], rowClick: [{
|
|
45
|
+
type: Output
|
|
46
|
+
}], contextActions: [{
|
|
47
|
+
type: Input
|
|
48
|
+
}] } });
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZXB0aW9uLWxvZy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWRhYm9vbS9zcmMvbGliL2FwcGxpY2F0aW9uL2V4Y2VwdGlvbi1sb2cvZXhjZXB0aW9uLWxvZy10YWJsZS9leGNlcHRpb24tbG9nLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhZGFib29tL3NyYy9saWIvYXBwbGljYXRpb24vZXhjZXB0aW9uLWxvZy9leGNlcHRpb24tbG9nLXRhYmxlL2V4Y2VwdGlvbi1sb2ctdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7QUFlM0UsTUFBTSxPQUFPLDBCQUEwQjtJQU9yQyxZQUNVLEVBQXNDLEVBQ3RDLE1BQWMsRUFDZCxjQUE4QjtRQUY5QixPQUFFLEdBQUYsRUFBRSxDQUFvQztRQUN0QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBUi9CLHFCQUFnQixHQUFhLEVBQUUsQ0FBQztRQUMvQixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFFMUQsWUFBTyxHQUEyQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztRQVFsRyxtQkFBYyxHQUF5QztZQUM5RDtnQkFDRSxJQUFJLEVBQUUsUUFBUTtnQkFDZCxLQUFLLEVBQUUsU0FBUztnQkFDaEIsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLFVBQVUsRUFBRSxTQUFTO2FBQ3RCO1NBQ0YsQ0FBQztJQVRDLENBQUM7SUFXSixVQUFVLENBQUMsR0FBcUI7UUFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUE0RTtRQUMxRixRQUFRLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEMsS0FBSyxTQUFTO2dCQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztnQkFDMUUsTUFBTTtRQUNWLENBQUM7SUFDSCxDQUFDOzhHQWhDVSwwQkFBMEI7a0dBQTFCLDBCQUEwQixnUENqQnZDLDJRQVFBLHlEREtZLFlBQVksK0JBQUUsaUJBQWlCOzsyRkFJOUIsMEJBQTBCO2tCQVB0QyxTQUFTOytCQUNFLHFDQUFxQyxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUM7dUlBS2pDLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU07Z0JBVUUsY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEJkYlRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tbW9uL3RhYmxlL2JkYi10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFeGNlcHRpb25Mb2dSZWFkIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2VudGl0aWVzL2V4Y2VwdGlvbi1sb2cvZXhjZXB0aW9uLWxvZy1yZWFkJztcclxuaW1wb3J0IHsgQmRiRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9iZGItZGF0YS1zb3VyY2UnO1xyXG5pbXBvcnQgeyBCZGJDb2x1bW5CdWlsZGVyIH0gZnJvbSAnLi4vLi4vY29tbW9uL3RhYmxlL2JkYi1jb2x1bW4tYnVpbGRlcic7XHJcbmltcG9ydCB7IEJkYkNvbnRleHRBY3Rpb24gfSBmcm9tICcuLi8uLi9jb21tb24vdGFibGUvYmRiLWNvbnRleHQtYWN0aW9uJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEJkYkNvbHVtbiB9IGZyb20gJy4uLy4uL2NvbW1vbi90YWJsZS9iZGItY29sdW1uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYmRiLWV4Y2VwdGlvbi1sb2ctdGFibGVbZGF0YVNvdXJjZV0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQmRiVGFibGVDb21wb25lbnRdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9leGNlcHRpb24tbG9nLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9leGNlcHRpb24tbG9nLXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFeGNlcHRpb25Mb2dUYWJsZUNvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgZGF0YVNvdXJjZSE6IEJkYkRhdGFTb3VyY2U8RXhjZXB0aW9uTG9nUmVhZD47XHJcbiAgQElucHV0KCkgZGlzcGxheWVkQ29sdW1uczogc3RyaW5nW10gPSBbXTtcclxuICBAT3V0cHV0KCkgcm93Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEV4Y2VwdGlvbkxvZ1JlYWQ+KCk7XHJcblxyXG4gIGNvbHVtbnM6IEJkYkNvbHVtbjxFeGNlcHRpb25Mb2dSZWFkLCB1bmtub3duPltdID0gdGhpcy5jYi5idWlsZCh0aGlzLmNiLnN0cmluZyh4ID0+IHgubWVzc2FnZSwgJ01lc3NhZ2UnKSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjYjogQmRiQ29sdW1uQnVpbGRlcjxFeGNlcHRpb25Mb2dSZWFkPixcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxyXG4gICkge31cclxuXHJcbiAgQElucHV0KCkgY29udGV4dEFjdGlvbnM6IEJkYkNvbnRleHRBY3Rpb248RXhjZXB0aW9uTG9nUmVhZD5bXSA9IFtcclxuICAgIHtcclxuICAgICAgaWNvbjogJ3NlYXJjaCcsXHJcbiAgICAgIGNvbG9yOiAncHJpbWFyeScsXHJcbiAgICAgIGxhYmVsOiAnRGV0YWlscycsXHJcbiAgICAgIGlkZW50aWZpZXI6ICdkZXRhaWxzJyxcclxuICAgIH0sXHJcbiAgXTtcclxuXHJcbiAgb25Sb3dDbGljayhyb3c6IEV4Y2VwdGlvbkxvZ1JlYWQpOiB2b2lkIHtcclxuICAgIHRoaXMucm93Q2xpY2suZW1pdChyb3cpO1xyXG4gIH1cclxuXHJcbiAgb25Db250ZXh0QWN0aW9uKGV2ZW50OiB7IGFjdGlvbjogQmRiQ29udGV4dEFjdGlvbjxFeGNlcHRpb25Mb2dSZWFkPjsgcm93OiBFeGNlcHRpb25Mb2dSZWFkIH0pOiB2b2lkIHtcclxuICAgIHN3aXRjaCAoZXZlbnQuYWN0aW9uLmlkZW50aWZpZXIpIHtcclxuICAgICAgY2FzZSAnZGV0YWlscyc6XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2V2ZW50LnJvdy5pZF0sIHsgcmVsYXRpdmVUbzogdGhpcy5hY3RpdmF0ZWRSb3V0ZSB9KTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGJkYi10YWJsZVxyXG4gIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxyXG4gIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIlxyXG4gIFtkaXNwbGF5ZWRDb2x1bW5zXT1cImRpc3BsYXllZENvbHVtbnNcIlxyXG4gIFtjb250ZXh0QWN0aW9uc109XCJjb250ZXh0QWN0aW9uc1wiXHJcbiAgKHJvd0NsaWNrKT1cIm9uUm93Q2xpY2soJGV2ZW50KVwiXHJcbiAgKGNvbnRleHRBY3Rpb24pPVwib25Db250ZXh0QWN0aW9uKCRldmVudClcIj5cclxuPC9iZGItdGFibGU+XHJcbiJdfQ==
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import { TaskLogOutcome } from '../../domain/enums/task-log-outcome';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class TaskLogOutcomePipe {
|
|
5
|
+
transform(value) {
|
|
6
|
+
switch (value) {
|
|
7
|
+
case TaskLogOutcome.Noop:
|
|
8
|
+
return 'Noop';
|
|
9
|
+
case TaskLogOutcome.Info:
|
|
10
|
+
return 'Informatie';
|
|
11
|
+
case TaskLogOutcome.Warning:
|
|
12
|
+
return 'Waarschuwing';
|
|
13
|
+
case TaskLogOutcome.Error:
|
|
14
|
+
return 'Foutmelding';
|
|
15
|
+
case TaskLogOutcome.Success:
|
|
16
|
+
return 'Succes';
|
|
17
|
+
default:
|
|
18
|
+
return '';
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: TaskLogOutcomePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
22
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.1.1", ngImport: i0, type: TaskLogOutcomePipe, isStandalone: true, name: "taskLogOutcome" }); }
|
|
23
|
+
}
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: TaskLogOutcomePipe, decorators: [{
|
|
25
|
+
type: Pipe,
|
|
26
|
+
args: [{
|
|
27
|
+
name: 'taskLogOutcome',
|
|
28
|
+
standalone: true,
|
|
29
|
+
}]
|
|
30
|
+
}] });
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1sb2ctb3V0Y29tZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFkYWJvb20vc3JjL2xpYi9hcHBsaWNhdGlvbi90YXNrLWxvZy90YXNrLWxvZy1vdXRjb21lLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOztBQU1yRSxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFNBQVMsQ0FBQyxLQUFxQjtRQUM3QixRQUFRLEtBQUssRUFBRSxDQUFDO1lBQ2QsS0FBSyxjQUFjLENBQUMsSUFBSTtnQkFDdEIsT0FBTyxNQUFNLENBQUM7WUFDaEIsS0FBSyxjQUFjLENBQUMsSUFBSTtnQkFDdEIsT0FBTyxZQUFZLENBQUM7WUFDdEIsS0FBSyxjQUFjLENBQUMsT0FBTztnQkFDekIsT0FBTyxjQUFjLENBQUM7WUFDeEIsS0FBSyxjQUFjLENBQUMsS0FBSztnQkFDdkIsT0FBTyxhQUFhLENBQUM7WUFDdkIsS0FBSyxjQUFjLENBQUMsT0FBTztnQkFDekIsT0FBTyxRQUFRLENBQUM7WUFDbEI7Z0JBQ0UsT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQzs4R0FoQlUsa0JBQWtCOzRHQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBSjlCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGdCQUFnQjtvQkFDdEIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUYXNrTG9nT3V0Y29tZSB9IGZyb20gJy4uLy4uL2RvbWFpbi9lbnVtcy90YXNrLWxvZy1vdXRjb21lJztcclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiAndGFza0xvZ091dGNvbWUnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYXNrTG9nT3V0Y29tZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICB0cmFuc2Zvcm0odmFsdWU6IFRhc2tMb2dPdXRjb21lKTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAodmFsdWUpIHtcclxuICAgICAgY2FzZSBUYXNrTG9nT3V0Y29tZS5Ob29wOlxyXG4gICAgICAgIHJldHVybiAnTm9vcCc7XHJcbiAgICAgIGNhc2UgVGFza0xvZ091dGNvbWUuSW5mbzpcclxuICAgICAgICByZXR1cm4gJ0luZm9ybWF0aWUnO1xyXG4gICAgICBjYXNlIFRhc2tMb2dPdXRjb21lLldhcm5pbmc6XHJcbiAgICAgICAgcmV0dXJuICdXYWFyc2NodXdpbmcnO1xyXG4gICAgICBjYXNlIFRhc2tMb2dPdXRjb21lLkVycm9yOlxyXG4gICAgICAgIHJldHVybiAnRm91dG1lbGRpbmcnO1xyXG4gICAgICBjYXNlIFRhc2tMb2dPdXRjb21lLlN1Y2Nlc3M6XHJcbiAgICAgICAgcmV0dXJuICdTdWNjZXMnO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import { TaskLogStatus } from '../../domain/enums/task-log-status';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class TaskLogStatusPipe {
|
|
5
|
+
transform(value) {
|
|
6
|
+
switch (value) {
|
|
7
|
+
case TaskLogStatus.New:
|
|
8
|
+
return 'Nieuw';
|
|
9
|
+
case TaskLogStatus.Running:
|
|
10
|
+
return 'Lopend';
|
|
11
|
+
case TaskLogStatus.Waiting:
|
|
12
|
+
return 'Wachtend';
|
|
13
|
+
case TaskLogStatus.Completed:
|
|
14
|
+
return 'Afgerond';
|
|
15
|
+
default:
|
|
16
|
+
return '';
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: TaskLogStatusPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
20
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.1.1", ngImport: i0, type: TaskLogStatusPipe, isStandalone: true, name: "taskLogStatus" }); }
|
|
21
|
+
}
|
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: TaskLogStatusPipe, decorators: [{
|
|
23
|
+
type: Pipe,
|
|
24
|
+
args: [{
|
|
25
|
+
name: 'taskLogStatus',
|
|
26
|
+
standalone: true,
|
|
27
|
+
}]
|
|
28
|
+
}] });
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1sb2ctc3RhdHVzLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWRhYm9vbS9zcmMvbGliL2FwcGxpY2F0aW9uL3Rhc2stbG9nL3Rhc2stbG9nLXN0YXR1cy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7QUFNbkUsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixTQUFTLENBQUMsS0FBb0I7UUFDNUIsUUFBUSxLQUFLLEVBQUUsQ0FBQztZQUNkLEtBQUssYUFBYSxDQUFDLEdBQUc7Z0JBQ3BCLE9BQU8sT0FBTyxDQUFDO1lBQ2pCLEtBQUssYUFBYSxDQUFDLE9BQU87Z0JBQ3hCLE9BQU8sUUFBUSxDQUFDO1lBQ2xCLEtBQUssYUFBYSxDQUFDLE9BQU87Z0JBQ3hCLE9BQU8sVUFBVSxDQUFDO1lBQ3BCLEtBQUssYUFBYSxDQUFDLFNBQVM7Z0JBQzFCLE9BQU8sVUFBVSxDQUFDO1lBQ3BCO2dCQUNFLE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7OEdBZFUsaUJBQWlCOzRHQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBSjdCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGVBQWU7b0JBQ3JCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVGFza0xvZ1N0YXR1cyB9IGZyb20gJy4uLy4uL2RvbWFpbi9lbnVtcy90YXNrLWxvZy1zdGF0dXMnO1xyXG5cclxuQFBpcGUoe1xyXG4gIG5hbWU6ICd0YXNrTG9nU3RhdHVzJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFza0xvZ1N0YXR1c1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICB0cmFuc2Zvcm0odmFsdWU6IFRhc2tMb2dTdGF0dXMpOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoICh2YWx1ZSkge1xyXG4gICAgICBjYXNlIFRhc2tMb2dTdGF0dXMuTmV3OlxyXG4gICAgICAgIHJldHVybiAnTmlldXcnO1xyXG4gICAgICBjYXNlIFRhc2tMb2dTdGF0dXMuUnVubmluZzpcclxuICAgICAgICByZXR1cm4gJ0xvcGVuZCc7XHJcbiAgICAgIGNhc2UgVGFza0xvZ1N0YXR1cy5XYWl0aW5nOlxyXG4gICAgICAgIHJldHVybiAnV2FjaHRlbmQnO1xyXG4gICAgICBjYXNlIFRhc2tMb2dTdGF0dXMuQ29tcGxldGVkOlxyXG4gICAgICAgIHJldHVybiAnQWZnZXJvbmQnO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Inject, LOCALE_ID, Pipe } from '@angular/core';
|
|
2
|
+
import { TaskLogParameterType } from '../../domain/enums/task-log-parameter-type';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class TaskLogParameterValuePipe {
|
|
5
|
+
constructor(locale) {
|
|
6
|
+
this.locale = locale;
|
|
7
|
+
}
|
|
8
|
+
transform(value) {
|
|
9
|
+
switch (value.type) {
|
|
10
|
+
case TaskLogParameterType.String:
|
|
11
|
+
return value.stringValue ?? '';
|
|
12
|
+
case TaskLogParameterType.Int:
|
|
13
|
+
return !value.intValue
|
|
14
|
+
? ''
|
|
15
|
+
: value.intValue.toLocaleString(this.locale, {
|
|
16
|
+
minimumIntegerDigits: 1,
|
|
17
|
+
});
|
|
18
|
+
case TaskLogParameterType.Decimal:
|
|
19
|
+
return !value.decimalValue
|
|
20
|
+
? ''
|
|
21
|
+
: value.decimalValue.toLocaleString(this.locale, {
|
|
22
|
+
minimumIntegerDigits: 1,
|
|
23
|
+
maximumFractionDigits: 6,
|
|
24
|
+
});
|
|
25
|
+
case TaskLogParameterType.Bool:
|
|
26
|
+
switch (value.boolValue) {
|
|
27
|
+
case true:
|
|
28
|
+
return 'Ja';
|
|
29
|
+
case false:
|
|
30
|
+
return 'Nee';
|
|
31
|
+
default:
|
|
32
|
+
return '';
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: TaskLogParameterValuePipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
37
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.1.1", ngImport: i0, type: TaskLogParameterValuePipe, isStandalone: true, name: "taskLogParameterValue" }); }
|
|
38
|
+
}
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: TaskLogParameterValuePipe, decorators: [{
|
|
40
|
+
type: Pipe,
|
|
41
|
+
args: [{
|
|
42
|
+
name: 'taskLogParameterValue',
|
|
43
|
+
standalone: true,
|
|
44
|
+
}]
|
|
45
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
46
|
+
type: Inject,
|
|
47
|
+
args: [LOCALE_ID]
|
|
48
|
+
}] }] });
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1sb2ctcGFyYW1ldGVyLXZhbHVlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWRhYm9vbS9zcmMvbGliL2FwcGxpY2F0aW9uL3Rhc2stbG9nLXBhcmFtZXRlci90YXNrLWxvZy1wYXJhbWV0ZXItdmFsdWUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRXZFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOztBQU1sRixNQUFNLE9BQU8seUJBQXlCO0lBQ3BDLFlBQXVDLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQUcsQ0FBQztJQUV6RCxTQUFTLENBQUMsS0FBdUI7UUFDL0IsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkIsS0FBSyxvQkFBb0IsQ0FBQyxNQUFNO2dCQUM5QixPQUFPLEtBQUssQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO1lBQ2pDLEtBQUssb0JBQW9CLENBQUMsR0FBRztnQkFDM0IsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRO29CQUNwQixDQUFDLENBQUMsRUFBRTtvQkFDSixDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTt3QkFDekMsb0JBQW9CLEVBQUUsQ0FBQztxQkFDeEIsQ0FBQyxDQUFDO1lBQ1QsS0FBSyxvQkFBb0IsQ0FBQyxPQUFPO2dCQUMvQixPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVk7b0JBQ3hCLENBQUMsQ0FBQyxFQUFFO29CQUNKLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO3dCQUM3QyxvQkFBb0IsRUFBRSxDQUFDO3dCQUN2QixxQkFBcUIsRUFBRSxDQUFDO3FCQUN6QixDQUFDLENBQUM7WUFDVCxLQUFLLG9CQUFvQixDQUFDLElBQUk7Z0JBQzVCLFFBQVEsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUN4QixLQUFLLElBQUk7d0JBQ1AsT0FBTyxJQUFJLENBQUM7b0JBQ2QsS0FBSyxLQUFLO3dCQUNSLE9BQU8sS0FBSyxDQUFDO29CQUNmO3dCQUNFLE9BQU8sRUFBRSxDQUFDO2dCQUNkLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzs4R0E5QlUseUJBQXlCLGtCQUNoQixTQUFTOzRHQURsQix5QkFBeUI7OzJGQUF6Qix5QkFBeUI7a0JBSnJDLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLHVCQUF1QjtvQkFDN0IsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzswQkFFYyxNQUFNOzJCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIExPQ0FMRV9JRCwgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUYXNrTG9nUGFyYW1ldGVyIH0gZnJvbSAnLi4vLi4vZG9tYWluL2VudGl0aWVzL3Rhc2stbG9nLXBhcmFtZXRlci90YXNrLWxvZy1wYXJhbWV0ZXInO1xyXG5pbXBvcnQgeyBUYXNrTG9nUGFyYW1ldGVyVHlwZSB9IGZyb20gJy4uLy4uL2RvbWFpbi9lbnVtcy90YXNrLWxvZy1wYXJhbWV0ZXItdHlwZSc7XHJcblxyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ3Rhc2tMb2dQYXJhbWV0ZXJWYWx1ZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRhc2tMb2dQYXJhbWV0ZXJWYWx1ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KExPQ0FMRV9JRCkgcHJpdmF0ZSBsb2NhbGU6IHN0cmluZykge31cclxuXHJcbiAgdHJhbnNmb3JtKHZhbHVlOiBUYXNrTG9nUGFyYW1ldGVyKTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAodmFsdWUudHlwZSkge1xyXG4gICAgICBjYXNlIFRhc2tMb2dQYXJhbWV0ZXJUeXBlLlN0cmluZzpcclxuICAgICAgICByZXR1cm4gdmFsdWUuc3RyaW5nVmFsdWUgPz8gJyc7XHJcbiAgICAgIGNhc2UgVGFza0xvZ1BhcmFtZXRlclR5cGUuSW50OlxyXG4gICAgICAgIHJldHVybiAhdmFsdWUuaW50VmFsdWVcclxuICAgICAgICAgID8gJydcclxuICAgICAgICAgIDogdmFsdWUuaW50VmFsdWUudG9Mb2NhbGVTdHJpbmcodGhpcy5sb2NhbGUsIHtcclxuICAgICAgICAgICAgICBtaW5pbXVtSW50ZWdlckRpZ2l0czogMSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgIGNhc2UgVGFza0xvZ1BhcmFtZXRlclR5cGUuRGVjaW1hbDpcclxuICAgICAgICByZXR1cm4gIXZhbHVlLmRlY2ltYWxWYWx1ZVxyXG4gICAgICAgICAgPyAnJ1xyXG4gICAgICAgICAgOiB2YWx1ZS5kZWNpbWFsVmFsdWUudG9Mb2NhbGVTdHJpbmcodGhpcy5sb2NhbGUsIHtcclxuICAgICAgICAgICAgICBtaW5pbXVtSW50ZWdlckRpZ2l0czogMSxcclxuICAgICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDYsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICBjYXNlIFRhc2tMb2dQYXJhbWV0ZXJUeXBlLkJvb2w6XHJcbiAgICAgICAgc3dpdGNoICh2YWx1ZS5ib29sVmFsdWUpIHtcclxuICAgICAgICAgIGNhc2UgdHJ1ZTpcclxuICAgICAgICAgICAgcmV0dXJuICdKYSc7XHJcbiAgICAgICAgICBjYXNlIGZhbHNlOlxyXG4gICAgICAgICAgICByZXR1cm4gJ05lZSc7XHJcbiAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { MatDialogModule } from '@angular/material/dialog';
|
|
4
|
+
import { BdbTableComponent } from '../../common/table/bdb-table.component';
|
|
5
|
+
import { BdbCellDirective } from '../../common/table/bdb-cell.directive';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/material/dialog";
|
|
8
|
+
import * as i2 from "../../common/table/bdb-column-builder";
|
|
9
|
+
export class UserTableComponent {
|
|
10
|
+
constructor(matDialog, cb) {
|
|
11
|
+
this.matDialog = matDialog;
|
|
12
|
+
this.cb = cb;
|
|
13
|
+
this.displayedColumns = [];
|
|
14
|
+
this.rowClick = new EventEmitter();
|
|
15
|
+
this.columns = this.cb.build(this.cb.number(x => x.id, 'ID', { width: 75 }), this.cb.string(x => x.email, 'E-mail', { width: 250 }), this.cb.custom('roles', 'Rollen'));
|
|
16
|
+
this.contextActions = [
|
|
17
|
+
{
|
|
18
|
+
icon: 'search',
|
|
19
|
+
color: 'primary',
|
|
20
|
+
label: 'Details',
|
|
21
|
+
identifier: 'details',
|
|
22
|
+
},
|
|
23
|
+
{ icon: 'edit', color: 'primary', label: 'Wijzigen', identifier: 'edit' },
|
|
24
|
+
{
|
|
25
|
+
icon: 'delete',
|
|
26
|
+
color: 'warn',
|
|
27
|
+
label: 'Verwijderen',
|
|
28
|
+
identifier: 'delete',
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
}
|
|
32
|
+
onRowClick(user) {
|
|
33
|
+
this.rowClick.emit(user);
|
|
34
|
+
}
|
|
35
|
+
onContextAction(event) {
|
|
36
|
+
// switch (event.action.identifier) {
|
|
37
|
+
// case 'delete':
|
|
38
|
+
// this.matDialog
|
|
39
|
+
// .open(UserDeleteDialogComponent, { data: event.row })
|
|
40
|
+
// .afterClosed()
|
|
41
|
+
// .pipe(filter(x => !!x))
|
|
42
|
+
// .subscribe(() => this.dataSource.load());
|
|
43
|
+
// break;
|
|
44
|
+
// case 'edit':
|
|
45
|
+
// this.matDialog
|
|
46
|
+
// .open(UserUpdateDialogComponent, { data: event.row })
|
|
47
|
+
// .afterClosed()
|
|
48
|
+
// .pipe(filter(x => !!x))
|
|
49
|
+
// .subscribe(() => this.dataSource.load());
|
|
50
|
+
// break;
|
|
51
|
+
// }
|
|
52
|
+
}
|
|
53
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: UserTableComponent, deps: [{ token: i1.MatDialog }, { token: i2.BdbColumnBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
54
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: UserTableComponent, isStandalone: true, selector: "bdb-user-table[dataSource]", inputs: { dataSource: "dataSource", displayedColumns: "displayedColumns", contextActions: "contextActions" }, outputs: { rowClick: "rowClick" }, ngImport: i0, template: "<bdb-table\r\n [columns]=\"columns\"\r\n [dataSource]=\"dataSource\"\r\n (rowClick)=\"onRowClick($event)\"\r\n [contextActions]=\"contextActions\"\r\n (contextAction)=\"onContextAction($event)\"\r\n [displayedColumns]=\"displayedColumns\">\r\n <ng-template bdbCellDef=\"roles\" let-row>\r\n {{ row.roles }}\r\n </ng-template>\r\n</bdb-table>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: BdbTableComponent, selector: "bdb-table[dataSource]", inputs: ["columns", "dataSource", "displayedColumns", "contextActions", "selection", "selectOnRowClick", "selectedRowClass", "isClickable", "rowColor"], outputs: ["rowClick", "contextAction"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: BdbCellDirective, selector: "ng-template[bdbCellDef]", inputs: ["bdbCellDef"] }] }); }
|
|
55
|
+
}
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: UserTableComponent, decorators: [{
|
|
57
|
+
type: Component,
|
|
58
|
+
args: [{ selector: 'bdb-user-table[dataSource]', standalone: true, imports: [CommonModule, BdbTableComponent, MatDialogModule, BdbCellDirective], template: "<bdb-table\r\n [columns]=\"columns\"\r\n [dataSource]=\"dataSource\"\r\n (rowClick)=\"onRowClick($event)\"\r\n [contextActions]=\"contextActions\"\r\n (contextAction)=\"onContextAction($event)\"\r\n [displayedColumns]=\"displayedColumns\">\r\n <ng-template bdbCellDef=\"roles\" let-row>\r\n {{ row.roles }}\r\n </ng-template>\r\n</bdb-table>\r\n" }]
|
|
59
|
+
}], ctorParameters: () => [{ type: i1.MatDialog }, { type: i2.BdbColumnBuilder }], propDecorators: { dataSource: [{
|
|
60
|
+
type: Input
|
|
61
|
+
}], displayedColumns: [{
|
|
62
|
+
type: Input
|
|
63
|
+
}], rowClick: [{
|
|
64
|
+
type: Output
|
|
65
|
+
}], contextActions: [{
|
|
66
|
+
type: Input
|
|
67
|
+
}] } });
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWRhYm9vbS9zcmMvbGliL2FwcGxpY2F0aW9uL3VzZXIvdXNlci10YWJsZS91c2VyLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhZGFib29tL3NyYy9saWIvYXBwbGljYXRpb24vdXNlci91c2VyLXRhYmxlL3VzZXItdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHL0MsT0FBTyxFQUFhLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTNFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7O0FBU3pFLE1BQU0sT0FBTyxrQkFBa0I7SUFXN0IsWUFDVSxTQUFvQixFQUNwQixFQUE4QjtRQUQ5QixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLE9BQUUsR0FBRixFQUFFLENBQTRCO1FBWC9CLHFCQUFnQixHQUFhLEVBQUUsQ0FBQztRQUMvQixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUVsRCxZQUFPLEdBQW1DLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUNyRCxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQzlDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFDdEQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUNsQyxDQUFDO1FBT08sbUJBQWMsR0FBaUM7WUFDdEQ7Z0JBQ0UsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLEtBQUssRUFBRSxTQUFTO2dCQUNoQixVQUFVLEVBQUUsU0FBUzthQUN0QjtZQUNELEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTtZQUN6RTtnQkFDRSxJQUFJLEVBQUUsUUFBUTtnQkFDZCxLQUFLLEVBQUUsTUFBTTtnQkFDYixLQUFLLEVBQUUsYUFBYTtnQkFDcEIsVUFBVSxFQUFFLFFBQVE7YUFDckI7U0FDRixDQUFDO0lBaEJDLENBQUM7SUFrQkosVUFBVSxDQUFDLElBQWM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUE0RDtRQUMxRSx1Q0FBdUM7UUFDdkMscUJBQXFCO1FBQ3JCLHVCQUF1QjtRQUN2QixnRUFBZ0U7UUFDaEUseUJBQXlCO1FBQ3pCLGtDQUFrQztRQUNsQyxvREFBb0Q7UUFDcEQsZUFBZTtRQUNmLG1CQUFtQjtRQUNuQix1QkFBdUI7UUFDdkIsZ0VBQWdFO1FBQ2hFLHlCQUF5QjtRQUN6QixrQ0FBa0M7UUFDbEMsb0RBQW9EO1FBQ3BELGVBQWU7UUFDZixNQUFNO0lBQ1IsQ0FBQzs4R0FyRFUsa0JBQWtCO2tHQUFsQixrQkFBa0IsdU9DbEIvQixzV0FXQSx5RERHWSxZQUFZLCtCQUFFLGlCQUFpQixrUUFBRSxlQUFlLCtCQUFFLGdCQUFnQjs7MkZBSWpFLGtCQUFrQjtrQkFQOUIsU0FBUzsrQkFDRSw0QkFBNEIsY0FDMUIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQzs2R0FLcEUsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBakIsTUFBTTtnQkFhRSxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQmRiRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9iZGItZGF0YS1zb3VyY2UnO1xyXG5pbXBvcnQgeyBVc2VyUmVhZCB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9lbnRpdGllcy91c2VyL3VzZXItcmVhZCc7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgQmRiQ29sdW1uQnVpbGRlciB9IGZyb20gJy4uLy4uL2NvbW1vbi90YWJsZS9iZGItY29sdW1uLWJ1aWxkZXInO1xyXG5pbXBvcnQgeyBCZGJDb250ZXh0QWN0aW9uIH0gZnJvbSAnLi4vLi4vY29tbW9uL3RhYmxlL2JkYi1jb250ZXh0LWFjdGlvbic7XHJcbmltcG9ydCB7IEJkYlRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tbW9uL3RhYmxlL2JkYi10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCZGJDb2x1bW4gfSBmcm9tICcuLi8uLi9jb21tb24vdGFibGUvYmRiLWNvbHVtbic7XHJcbmltcG9ydCB7IEJkYkNlbGxEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9jb21tb24vdGFibGUvYmRiLWNlbGwuZGlyZWN0aXZlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYmRiLXVzZXItdGFibGVbZGF0YVNvdXJjZV0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQmRiVGFibGVDb21wb25lbnQsIE1hdERpYWxvZ01vZHVsZSwgQmRiQ2VsbERpcmVjdGl2ZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VzZXItdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3VzZXItdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFVzZXJUYWJsZUNvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgZGF0YVNvdXJjZSE6IEJkYkRhdGFTb3VyY2U8VXNlclJlYWQ+O1xyXG4gIEBJbnB1dCgpIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdID0gW107XHJcbiAgQE91dHB1dCgpIHJvd0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxVc2VyUmVhZD4oKTtcclxuXHJcbiAgY29sdW1uczogQmRiQ29sdW1uPFVzZXJSZWFkLCB1bmtub3duPltdID0gdGhpcy5jYi5idWlsZChcclxuICAgIHRoaXMuY2IubnVtYmVyKHggPT4geC5pZCwgJ0lEJywgeyB3aWR0aDogNzUgfSksXHJcbiAgICB0aGlzLmNiLnN0cmluZyh4ID0+IHguZW1haWwsICdFLW1haWwnLCB7IHdpZHRoOiAyNTAgfSksXHJcbiAgICB0aGlzLmNiLmN1c3RvbSgncm9sZXMnLCAnUm9sbGVuJylcclxuICApO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbWF0RGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIGNiOiBCZGJDb2x1bW5CdWlsZGVyPFVzZXJSZWFkPlxyXG4gICkge31cclxuXHJcbiAgQElucHV0KCkgY29udGV4dEFjdGlvbnM6IEJkYkNvbnRleHRBY3Rpb248VXNlclJlYWQ+W10gPSBbXHJcbiAgICB7XHJcbiAgICAgIGljb246ICdzZWFyY2gnLFxyXG4gICAgICBjb2xvcjogJ3ByaW1hcnknLFxyXG4gICAgICBsYWJlbDogJ0RldGFpbHMnLFxyXG4gICAgICBpZGVudGlmaWVyOiAnZGV0YWlscycsXHJcbiAgICB9LFxyXG4gICAgeyBpY29uOiAnZWRpdCcsIGNvbG9yOiAncHJpbWFyeScsIGxhYmVsOiAnV2lqemlnZW4nLCBpZGVudGlmaWVyOiAnZWRpdCcgfSxcclxuICAgIHtcclxuICAgICAgaWNvbjogJ2RlbGV0ZScsXHJcbiAgICAgIGNvbG9yOiAnd2FybicsXHJcbiAgICAgIGxhYmVsOiAnVmVyd2lqZGVyZW4nLFxyXG4gICAgICBpZGVudGlmaWVyOiAnZGVsZXRlJyxcclxuICAgIH0sXHJcbiAgXTtcclxuXHJcbiAgb25Sb3dDbGljayh1c2VyOiBVc2VyUmVhZCk6IHZvaWQge1xyXG4gICAgdGhpcy5yb3dDbGljay5lbWl0KHVzZXIpO1xyXG4gIH1cclxuXHJcbiAgb25Db250ZXh0QWN0aW9uKGV2ZW50OiB7IGFjdGlvbjogQmRiQ29udGV4dEFjdGlvbjxVc2VyUmVhZD47IHJvdzogVXNlclJlYWQgfSk6IHZvaWQge1xyXG4gICAgLy8gICBzd2l0Y2ggKGV2ZW50LmFjdGlvbi5pZGVudGlmaWVyKSB7XHJcbiAgICAvLyAgICAgY2FzZSAnZGVsZXRlJzpcclxuICAgIC8vICAgICAgIHRoaXMubWF0RGlhbG9nXHJcbiAgICAvLyAgICAgICAgIC5vcGVuKFVzZXJEZWxldGVEaWFsb2dDb21wb25lbnQsIHsgZGF0YTogZXZlbnQucm93IH0pXHJcbiAgICAvLyAgICAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAvLyAgICAgICAgIC5waXBlKGZpbHRlcih4ID0+ICEheCkpXHJcbiAgICAvLyAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5kYXRhU291cmNlLmxvYWQoKSk7XHJcbiAgICAvLyAgICAgICBicmVhaztcclxuICAgIC8vICAgICBjYXNlICdlZGl0JzpcclxuICAgIC8vICAgICAgIHRoaXMubWF0RGlhbG9nXHJcbiAgICAvLyAgICAgICAgIC5vcGVuKFVzZXJVcGRhdGVEaWFsb2dDb21wb25lbnQsIHsgZGF0YTogZXZlbnQucm93IH0pXHJcbiAgICAvLyAgICAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAvLyAgICAgICAgIC5waXBlKGZpbHRlcih4ID0+ICEheCkpXHJcbiAgICAvLyAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5kYXRhU291cmNlLmxvYWQoKSk7XHJcbiAgICAvLyAgICAgICBicmVhaztcclxuICAgIC8vICAgfVxyXG4gIH1cclxufVxyXG4iLCI8YmRiLXRhYmxlXHJcbiAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXHJcbiAgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiXHJcbiAgKHJvd0NsaWNrKT1cIm9uUm93Q2xpY2soJGV2ZW50KVwiXHJcbiAgW2NvbnRleHRBY3Rpb25zXT1cImNvbnRleHRBY3Rpb25zXCJcclxuICAoY29udGV4dEFjdGlvbik9XCJvbkNvbnRleHRBY3Rpb24oJGV2ZW50KVwiXHJcbiAgW2Rpc3BsYXllZENvbHVtbnNdPVwiZGlzcGxheWVkQ29sdW1uc1wiPlxyXG4gIDxuZy10ZW1wbGF0ZSBiZGJDZWxsRGVmPVwicm9sZXNcIiBsZXQtcm93PlxyXG4gICAge3sgcm93LnJvbGVzIH19XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9iZGItdGFibGU+XHJcbiJdfQ==
|