verben-authentication-ui 1.0.13 → 1.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/role-control/role-control.component.mjs +126 -10
- package/esm2022/lib/components/role-control/role-control.service.mjs +4 -1
- package/esm2022/lib/components/sso/sso.component.mjs +1 -1
- package/esm2022/lib/components/user-management/user-management.component.mjs +1 -1
- package/esm2022/lib/components/user-request-approval/user-request-approval.component.mjs +1 -1
- package/esm2022/lib/services/import.service.mjs +248 -0
- package/esm2022/lib/shared/shared.module.mjs +11 -5
- package/fesm2022/verben-authentication-ui.mjs +400 -34
- package/fesm2022/verben-authentication-ui.mjs.map +1 -1
- package/lib/components/role-control/role-control.component.d.ts +10 -2
- package/lib/services/import.service.d.ts +15 -0
- package/lib/shared/shared.module.d.ts +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { ObjectState } from '../models/object-state';
|
|
3
|
+
import { ErrorResponse } from '../models/ErrorResponse';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./util.service";
|
|
6
|
+
import * as i2 from "./http-web-request.service";
|
|
7
|
+
export class ImportService {
|
|
8
|
+
utilService;
|
|
9
|
+
server;
|
|
10
|
+
constructor(utilService, server //private cdr: ChangeDetectorRef
|
|
11
|
+
) {
|
|
12
|
+
this.utilService = utilService;
|
|
13
|
+
this.server = server;
|
|
14
|
+
}
|
|
15
|
+
// onComplete(
|
|
16
|
+
// event: any[],
|
|
17
|
+
// defaults: T,
|
|
18
|
+
// endpoint: string | null,
|
|
19
|
+
// baseUrl: string,
|
|
20
|
+
// dataRef: T[],
|
|
21
|
+
// cardDataRef: CardData[],
|
|
22
|
+
// pagedState: PagedResult<T> | null = null,
|
|
23
|
+
// stringProps: (keyof T)[] = []
|
|
24
|
+
// ) {
|
|
25
|
+
// const normalized = event.map((raw) => {
|
|
26
|
+
// const def = defaults;
|
|
27
|
+
// let merged: T = {
|
|
28
|
+
// ...def,
|
|
29
|
+
// ...raw,
|
|
30
|
+
// Code: raw.Code ? String(raw.Code) : '',
|
|
31
|
+
// };
|
|
32
|
+
// stringProps.forEach((key) => {
|
|
33
|
+
// const value = raw[key];
|
|
34
|
+
// merged[key] = value != null ? String(value) : ('' as any);
|
|
35
|
+
// });
|
|
36
|
+
// const dateProps: (keyof T)[] = ['CreatedAt', 'UpdatedAt'];
|
|
37
|
+
// dateProps.forEach((key) => {
|
|
38
|
+
// const val = merged[key];
|
|
39
|
+
// let dateObj: Date;
|
|
40
|
+
// if (val instanceof Date) {
|
|
41
|
+
// dateObj = val;
|
|
42
|
+
// } else if (typeof val === 'number') {
|
|
43
|
+
// dateObj = this.excelSerialToDate(val);
|
|
44
|
+
// } else if (typeof val === 'string') {
|
|
45
|
+
// dateObj = new Date(val);
|
|
46
|
+
// } else {
|
|
47
|
+
// dateObj = new Date();
|
|
48
|
+
// }
|
|
49
|
+
// if (isNaN(dateObj.getTime())) {
|
|
50
|
+
// dateObj = new Date();
|
|
51
|
+
// }
|
|
52
|
+
// merged[key] = dateObj.toISOString() as any;
|
|
53
|
+
// });
|
|
54
|
+
// return merged;
|
|
55
|
+
// });
|
|
56
|
+
// if (normalized && normalized.length > 0) {
|
|
57
|
+
// this.saveImportedDataBatch(
|
|
58
|
+
// normalized,
|
|
59
|
+
// endpoint,
|
|
60
|
+
// baseUrl,
|
|
61
|
+
// dataRef,
|
|
62
|
+
// cardDataRef,
|
|
63
|
+
// pagedState
|
|
64
|
+
// );
|
|
65
|
+
// }
|
|
66
|
+
// }
|
|
67
|
+
// async saveImportedDataBatch(
|
|
68
|
+
// items: T[],
|
|
69
|
+
// endpoint: string | null,
|
|
70
|
+
// baseUrl: string,
|
|
71
|
+
// dataRef: T[],
|
|
72
|
+
// cardDataRef: CardData[],
|
|
73
|
+
// pagedState: PagedResult<T> | null = null
|
|
74
|
+
// ) {
|
|
75
|
+
// if (!items?.length) return;
|
|
76
|
+
// const preparedItems = items.map((item) => ({
|
|
77
|
+
// ...item,
|
|
78
|
+
// DataState: ObjectState.New,
|
|
79
|
+
// Id: '',
|
|
80
|
+
// }));
|
|
81
|
+
// if (!endpoint) {
|
|
82
|
+
// preparedItems.forEach((srv, idx) => {
|
|
83
|
+
// const newItem = {
|
|
84
|
+
// ...srv,
|
|
85
|
+
// Id: dataRef.length.toString(),
|
|
86
|
+
// id: dataRef.length.toString(),
|
|
87
|
+
// };
|
|
88
|
+
// const cardData: CardData = {
|
|
89
|
+
// selected: false,
|
|
90
|
+
// title: newItem.Id.toString(),
|
|
91
|
+
// data: newItem,
|
|
92
|
+
// body: [],
|
|
93
|
+
// children: [],
|
|
94
|
+
// };
|
|
95
|
+
// dataRef.push(newItem);
|
|
96
|
+
// cardDataRef.push(cardData);
|
|
97
|
+
// if (pagedState) {
|
|
98
|
+
// pagedState.Skip += 1;
|
|
99
|
+
// }
|
|
100
|
+
// });
|
|
101
|
+
// return;
|
|
102
|
+
// }
|
|
103
|
+
// this.utilService.sendBI(true);
|
|
104
|
+
// const res = await this.server.post(endpoint, preparedItems, baseUrl);
|
|
105
|
+
// this.utilService.sendBI(false);
|
|
106
|
+
// if (res instanceof ErrorResponse) {
|
|
107
|
+
// return;
|
|
108
|
+
// } else {
|
|
109
|
+
// this.utilService.showSuccess('Operation Account saved successfully');
|
|
110
|
+
// const result = res as T[];
|
|
111
|
+
// result.forEach((srv, idx) => {
|
|
112
|
+
// const newItem = {
|
|
113
|
+
// ...srv,
|
|
114
|
+
// Id: srv.Code,
|
|
115
|
+
// id: srv.Code,
|
|
116
|
+
// };
|
|
117
|
+
// const cardData: CardData = {
|
|
118
|
+
// selected: false,
|
|
119
|
+
// title: newItem.Id.toString(),
|
|
120
|
+
// data: newItem,
|
|
121
|
+
// body: [],
|
|
122
|
+
// children: [],
|
|
123
|
+
// };
|
|
124
|
+
// dataRef.push(newItem);
|
|
125
|
+
// // this.cdr.detectChanges();
|
|
126
|
+
// cardDataRef.push(cardData);
|
|
127
|
+
// if (pagedState) {
|
|
128
|
+
// pagedState.Skip += 1;
|
|
129
|
+
// }
|
|
130
|
+
// });
|
|
131
|
+
// }
|
|
132
|
+
// }
|
|
133
|
+
onComplete(event, defaults, endpoint, baseUrl, entity, updateCallback, pagedState = null, stringProps = [], numberProps = [], datePropsExtras = []) {
|
|
134
|
+
const normalized = event.map((raw) => {
|
|
135
|
+
const def = defaults;
|
|
136
|
+
let merged = {
|
|
137
|
+
...def,
|
|
138
|
+
...raw,
|
|
139
|
+
Code: raw.Code ? String(raw.Code) : '',
|
|
140
|
+
};
|
|
141
|
+
stringProps.forEach((key) => {
|
|
142
|
+
const value = raw[key];
|
|
143
|
+
merged[key] = value != null ? String(value) : '';
|
|
144
|
+
});
|
|
145
|
+
numberProps.forEach((key) => {
|
|
146
|
+
const value = raw[key];
|
|
147
|
+
if (typeof value === 'string') {
|
|
148
|
+
// Only parse if it's a valid number
|
|
149
|
+
const num = value === '' || isNaN(Number(value)) ? 0 : Number(value);
|
|
150
|
+
merged[key] = num;
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
merged[key] = value;
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
const dateProps = ['CreatedAt', 'UpdatedAt'].concat(datePropsExtras);
|
|
157
|
+
dateProps.forEach((key) => {
|
|
158
|
+
const val = merged[key];
|
|
159
|
+
let dateObj;
|
|
160
|
+
if (val instanceof Date) {
|
|
161
|
+
dateObj = val;
|
|
162
|
+
}
|
|
163
|
+
else if (typeof val === 'number') {
|
|
164
|
+
dateObj = this.excelSerialToDate(val);
|
|
165
|
+
}
|
|
166
|
+
else if (typeof val === 'string') {
|
|
167
|
+
dateObj = new Date(val);
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
dateObj = new Date();
|
|
171
|
+
}
|
|
172
|
+
if (isNaN(dateObj.getTime())) {
|
|
173
|
+
dateObj = new Date();
|
|
174
|
+
}
|
|
175
|
+
merged[key] = dateObj.toISOString();
|
|
176
|
+
});
|
|
177
|
+
return merged;
|
|
178
|
+
});
|
|
179
|
+
if (normalized && normalized.length > 0) {
|
|
180
|
+
this.saveImportedDataBatch(normalized, endpoint, baseUrl, entity, updateCallback, pagedState);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
async saveImportedDataBatch(items, endpoint, baseUrl, entity, updateCallback, pagedState = null) {
|
|
184
|
+
if (!items?.length)
|
|
185
|
+
return;
|
|
186
|
+
const preparedItems = items.map((item) => ({
|
|
187
|
+
...item,
|
|
188
|
+
DataState: ObjectState.New,
|
|
189
|
+
Id: '',
|
|
190
|
+
}));
|
|
191
|
+
if (!endpoint) {
|
|
192
|
+
preparedItems.forEach((srv, idx) => {
|
|
193
|
+
srv.Id = `UPLOAD ${idx}`;
|
|
194
|
+
srv.id = `UPLOAD ${idx}`;
|
|
195
|
+
});
|
|
196
|
+
updateCallback(preparedItems);
|
|
197
|
+
if (pagedState) {
|
|
198
|
+
pagedState.Skip += preparedItems.length;
|
|
199
|
+
}
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
this.utilService.sendBI(true);
|
|
203
|
+
const res = await this.server.post(endpoint, preparedItems, baseUrl);
|
|
204
|
+
this.utilService.sendBI(false);
|
|
205
|
+
if (res instanceof ErrorResponse) {
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
this.utilService.showSuccess(`${entity} upload successful`);
|
|
210
|
+
const result = res;
|
|
211
|
+
result.forEach((srv, idx) => {
|
|
212
|
+
srv.Id = srv.Code;
|
|
213
|
+
srv.id = srv.Code;
|
|
214
|
+
// const newItem = {
|
|
215
|
+
// ...srv,
|
|
216
|
+
// Id: srv.Code,
|
|
217
|
+
// id: srv.Code,
|
|
218
|
+
// };
|
|
219
|
+
// const cardData: CardData = {
|
|
220
|
+
// selected: false,
|
|
221
|
+
// title: newItem.Id.toString(),
|
|
222
|
+
// data: newItem,
|
|
223
|
+
// body: [],
|
|
224
|
+
// children: [],
|
|
225
|
+
// };
|
|
226
|
+
});
|
|
227
|
+
updateCallback(result);
|
|
228
|
+
if (pagedState) {
|
|
229
|
+
pagedState.Skip += result.length;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
excelSerialToDate(serial) {
|
|
234
|
+
1;
|
|
235
|
+
const excelEpoch = new Date(Date.UTC(1899, 11, 30));
|
|
236
|
+
const millisPerDay = 24 * 60 * 60 * 1000;
|
|
237
|
+
return new Date(excelEpoch.getTime() + serial * millisPerDay);
|
|
238
|
+
}
|
|
239
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImportService, deps: [{ token: i1.UtilService }, { token: i2.HttpWebRequestService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
240
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImportService, providedIn: 'root' });
|
|
241
|
+
}
|
|
242
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImportService, decorators: [{
|
|
243
|
+
type: Injectable,
|
|
244
|
+
args: [{
|
|
245
|
+
providedIn: 'root',
|
|
246
|
+
}]
|
|
247
|
+
}], ctorParameters: () => [{ type: i1.UtilService }, { type: i2.HttpWebRequestService }] });
|
|
248
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tYXV0aGVudGljYXRpb24tdWkvc3JjL2xpYi9zZXJ2aWNlcy9pbXBvcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7QUFNeEQsTUFBTSxPQUFPLGFBQWE7SUFFZDtJQUNBO0lBRlYsWUFDVSxXQUF3QixFQUN4QixNQUE2QixDQUFDLGdDQUFnQzs7UUFEOUQsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBdUI7SUFDcEMsQ0FBQztJQUVKLGNBQWM7SUFDZCxrQkFBa0I7SUFDbEIsaUJBQWlCO0lBQ2pCLDZCQUE2QjtJQUM3QixxQkFBcUI7SUFDckIsa0JBQWtCO0lBQ2xCLDZCQUE2QjtJQUM3Qiw4Q0FBOEM7SUFDOUMsa0NBQWtDO0lBQ2xDLE1BQU07SUFDTiw0Q0FBNEM7SUFDNUMsNEJBQTRCO0lBQzVCLHdCQUF3QjtJQUN4QixnQkFBZ0I7SUFDaEIsZ0JBQWdCO0lBQ2hCLGdEQUFnRDtJQUNoRCxTQUFTO0lBRVQscUNBQXFDO0lBQ3JDLGdDQUFnQztJQUNoQyxtRUFBbUU7SUFDbkUsVUFBVTtJQUNWLGlFQUFpRTtJQUNqRSxtQ0FBbUM7SUFDbkMsaUNBQWlDO0lBRWpDLDJCQUEyQjtJQUUzQixtQ0FBbUM7SUFDbkMseUJBQXlCO0lBQ3pCLDhDQUE4QztJQUM5QyxpREFBaUQ7SUFDakQsOENBQThDO0lBQzlDLG1DQUFtQztJQUNuQyxpQkFBaUI7SUFDakIsZ0NBQWdDO0lBQ2hDLFVBQVU7SUFDVix3Q0FBd0M7SUFDeEMsZ0NBQWdDO0lBQ2hD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RSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sWUFBWSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztRQUV6QyxPQUFPLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxNQUFNLEdBQUcsWUFBWSxDQUFDLENBQUM7SUFDaEUsQ0FBQzt3R0E5UlUsYUFBYTs0R0FBYixhQUFhLGNBRlosTUFBTTs7NEZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwV2ViUmVxdWVzdFNlcnZpY2UgfSBmcm9tICcuL2h0dHAtd2ViLXJlcXVlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvYmFzZSc7XG5pbXBvcnQgeyBQYWdlZFJlc3VsdCB9IGZyb20gJy4uL21vZGVscy9QYWdlZFJlc3VsdCc7XG5pbXBvcnQgeyBPYmplY3RTdGF0ZSB9IGZyb20gJy4uL21vZGVscy9vYmplY3Qtc3RhdGUnO1xuaW1wb3J0IHsgRXJyb3JSZXNwb25zZSB9IGZyb20gJy4uL21vZGVscy9FcnJvclJlc3BvbnNlJztcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi91dGlsLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgSW1wb3J0U2VydmljZTxUIGV4dGVuZHMgQmFzZU1vZGVsPiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdXRpbFNlcnZpY2U6IFV0aWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2VydmVyOiBIdHRwV2ViUmVxdWVzdFNlcnZpY2UgLy9wcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuXG4gIC8vIG9uQ29tcGxldGUoXG4gIC8vICAgZXZlbnQ6IGFueVtdLFxuICAvLyAgIGRlZmF1bHRzOiBULFxuICAvLyAgIGVuZHBvaW50OiBzdHJpbmcgfCBudWxsLFxuICAvLyAgIGJhc2VVcmw6IHN0cmluZyxcbiAgLy8gICBkYXRhUmVmOiBUW10sXG4gIC8vICAgY2FyZERhdGFSZWY6IENhcmREYXRhW10sXG4gIC8vICAgcGFnZWRTdGF0ZTogUGFnZWRSZXN1bHQ8VD4gfCBudWxsID0gbnVsbCxcbiAgLy8gICBzdHJpbmdQcm9wczogKGtleW9mIFQpW10gPSBbXVxuICAvLyApIHtcbiAgLy8gICBjb25zdCBub3JtYWxpemVkID0gZXZlbnQubWFwKChyYXcpID0+IHtcbiAgLy8gICAgIGNvbnN0IGRlZiA9IGRlZmF1bHRzO1xuICAvLyAgICAgbGV0IG1lcmdlZDogVCA9IHtcbiAgLy8gICAgICAgLi4uZGVmLFxuICAvLyAgICAgICAuLi5yYXcsXG4gIC8vICAgICAgIENvZGU6IHJhdy5Db2RlID8gU3RyaW5nKHJhdy5Db2RlKSA6ICcnLFxuICAvLyAgICAgfTtcblxuICAvLyAgICAgc3RyaW5nUHJvcHMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gIC8vICAgICAgIGNvbnN0IHZhbHVlID0gcmF3W2tleV07XG4gIC8vICAgICAgIG1lcmdlZFtrZXldID0gdmFsdWUgIT0gbnVsbCA/IFN0cmluZyh2YWx1ZSkgOiAoJycgYXMgYW55KTtcbiAgLy8gICAgIH0pO1xuICAvLyAgICAgY29uc3QgZGF0ZVByb3BzOiAoa2V5b2YgVClbXSA9IFsnQ3JlYXRlZEF0JywgJ1VwZGF0ZWRBdCddO1xuICAvLyAgICAgZGF0ZVByb3BzLmZvckVhY2goKGtleSkgPT4ge1xuICAvLyAgICAgICBjb25zdCB2YWwgPSBtZXJnZWRba2V5XTtcblxuICAvLyAgICAgICBsZXQgZGF0ZU9iajogRGF0ZTtcblxuICAvLyAgICAgICBpZiAodmFsIGluc3RhbmNlb2YgRGF0ZSkge1xuICAvLyAgICAgICAgIGRhdGVPYmogPSB2YWw7XG4gIC8vICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgLy8gICAgICAgICBkYXRlT2JqID0gdGhpcy5leGNlbFNlcmlhbFRvRGF0ZSh2YWwpO1xuICAvLyAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gIC8vICAgICAgICAgZGF0ZU9iaiA9IG5ldyBEYXRlKHZhbCk7XG4gIC8vICAgICAgIH0gZWxzZSB7XG4gIC8vICAgICAgICAgZGF0ZU9iaiA9IG5ldyBEYXRlKCk7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgaWYgKGlzTmFOKGRhdGVPYmouZ2V0VGltZSgpKSkge1xuICAvLyAgICAgICAgIGRhdGVPYmogPSBuZXcgRGF0ZSgpO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIG1lcmdlZFtrZXldID0gZGF0ZU9iai50b0lTT1N0cmluZygpIGFzIGFueTtcbiAgLy8gICAgIH0pO1xuXG4gIC8vICAgICByZXR1cm4gbWVyZ2VkO1xuICAvLyAgIH0pO1xuXG4gIC8vICAgaWYgKG5vcm1hbGl6ZWQgJiYgbm9ybWFsaXplZC5sZW5ndGggPiAwKSB7XG4gIC8vICAgICB0aGlzLnNhdmVJbXBvcnRlZERhdGFCYXRjaChcbiAgLy8gICAgICAgbm9ybWFsaXplZCxcbiAgLy8gICAgICAgZW5kcG9pbnQsXG4gIC8vICAgICAgIGJhc2VVcmwsXG4gIC8vICAgICAgIGRhdGFSZWYsXG4gIC8vICAgICAgIGNhcmREYXRhUmVmLFxuICAvLyAgICAgICBwYWdlZFN0YXRlXG4gIC8vICAgICApO1xuICAvLyAgIH1cbiAgLy8gfVxuXG4gIC8vIGFzeW5jIHNhdmVJbXBvcnRlZERhdGFCYXRjaChcbiAgLy8gICBpdGVtczogVFtdLFxuICAvLyAgIGVuZHBvaW50OiBzdHJpbmcgfCBudWxsLFxuICAvLyAgIGJhc2VVcmw6IHN0cmluZyxcbiAgLy8gICBkYXRhUmVmOiBUW10sXG4gIC8vICAgY2FyZERhdGFSZWY6IENhcmREYXRhW10sXG4gIC8vICAgcGFnZWRTdGF0ZTogUGFnZWRSZXN1bHQ8VD4gfCBudWxsID0gbnVsbFxuICAvLyApIHtcbiAgLy8gICBpZiAoIWl0ZW1zPy5sZW5ndGgpIHJldHVybjtcblxuICAvLyAgIGNvbnN0IHByZXBhcmVkSXRlbXMgPSBpdGVtcy5tYXAoKGl0ZW0pID0+ICh7XG4gIC8vICAgICAuLi5pdGVtLFxuICAvLyAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5OZXcsXG4gIC8vICAgICBJZDogJycsXG4gIC8vICAgfSkpO1xuXG4gIC8vICAgaWYgKCFlbmRwb2ludCkge1xuICAvLyAgICAgcHJlcGFyZWRJdGVtcy5mb3JFYWNoKChzcnYsIGlkeCkgPT4ge1xuICAvLyAgICAgICBjb25zdCBuZXdJdGVtID0ge1xuICAvLyAgICAgICAgIC4uLnNydixcbiAgLy8gICAgICAgICBJZDogZGF0YVJlZi5sZW5ndGgudG9TdHJpbmcoKSxcbiAgLy8gICAgICAgICBpZDogZGF0YVJlZi5sZW5ndGgudG9TdHJpbmcoKSxcbiAgLy8gICAgICAgfTtcblxuICAvLyAgICAgICBjb25zdCBjYXJkRGF0YTogQ2FyZERhdGEgPSB7XG4gIC8vICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAvLyAgICAgICAgIHRpdGxlOiBuZXdJdGVtLklkLnRvU3RyaW5nKCksXG4gIC8vICAgICAgICAgZGF0YTogbmV3SXRlbSxcbiAgLy8gICAgICAgICBib2R5OiBbXSxcbiAgLy8gICAgICAgICBjaGlsZHJlbjogW10sXG4gIC8vICAgICAgIH07XG5cbiAgLy8gICAgICAgZGF0YVJlZi5wdXNoKG5ld0l0ZW0pO1xuICAvLyAgICAgICBjYXJkRGF0YVJlZi5wdXNoKGNhcmREYXRhKTtcbiAgLy8gICAgICAgaWYgKHBhZ2VkU3RhdGUpIHtcbiAgLy8gICAgICAgICBwYWdlZFN0YXRlLlNraXAgKz0gMTtcbiAgLy8gICAgICAgfVxuICAvLyAgICAgfSk7XG4gIC8vICAgICByZXR1cm47XG4gIC8vICAgfVxuXG4gIC8vICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkodHJ1ZSk7XG4gIC8vICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5zZXJ2ZXIucG9zdChlbmRwb2ludCwgcHJlcGFyZWRJdGVtcywgYmFzZVVybCk7XG4gIC8vICAgdGhpcy51dGlsU2VydmljZS5zZW5kQkkoZmFsc2UpO1xuXG4gIC8vICAgaWYgKHJlcyBpbnN0YW5jZW9mIEVycm9yUmVzcG9uc2UpIHtcbiAgLy8gICAgIHJldHVybjtcbiAgLy8gICB9IGVsc2Uge1xuICAvLyAgICAgdGhpcy51dGlsU2VydmljZS5zaG93U3VjY2VzcygnT3BlcmF0aW9uIEFjY291bnQgc2F2ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gIC8vICAgICBjb25zdCByZXN1bHQgPSByZXMgYXMgVFtdO1xuXG4gIC8vICAgICByZXN1bHQuZm9yRWFjaCgoc3J2LCBpZHgpID0+IHtcbiAgLy8gICAgICAgY29uc3QgbmV3SXRlbSA9IHtcbiAgLy8gICAgICAgICAuLi5zcnYsXG4gIC8vICAgICAgICAgSWQ6IHNydi5Db2RlLFxuICAvLyAgICAgICAgIGlkOiBzcnYuQ29kZSxcbiAgLy8gICAgICAgfTtcblxuICAvLyAgICAgICBjb25zdCBjYXJkRGF0YTogQ2FyZERhdGEgPSB7XG4gIC8vICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAvLyAgICAgICAgIHRpdGxlOiBuZXdJdGVtLklkLnRvU3RyaW5nKCksXG4gIC8vICAgICAgICAgZGF0YTogbmV3SXRlbSxcbiAgLy8gICAgICAgICBib2R5OiBbXSxcbiAgLy8gICAgICAgICBjaGlsZHJlbjogW10sXG4gIC8vICAgICAgIH07XG5cbiAgLy8gICAgICAgZGF0YVJlZi5wdXNoKG5ld0l0ZW0pO1xuICAvLyAgICAgICAvLyB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIC8vICAgICAgIGNhcmREYXRhUmVmLnB1c2goY2FyZERhdGEpO1xuICAvLyAgICAgICBpZiAocGFnZWRTdGF0ZSkge1xuICAvLyAgICAgICAgIHBhZ2VkU3RhdGUuU2tpcCArPSAxO1xuICAvLyAgICAgICB9XG4gIC8vICAgICB9KTtcbiAgLy8gICB9XG4gIC8vIH1cbiAgb25Db21wbGV0ZShcbiAgICBldmVudDogYW55W10sXG4gICAgZGVmYXVsdHM6IFQsXG4gICAgZW5kcG9pbnQ6IHN0cmluZyB8IG51bGwsXG4gICAgYmFzZVVybDogc3RyaW5nLFxuICAgIGVudGl0eTogc3RyaW5nLFxuICAgIHVwZGF0ZUNhbGxiYWNrOiAoaXRlbXM6IFRbXSkgPT4gdm9pZCxcbiAgICBwYWdlZFN0YXRlOiBQYWdlZFJlc3VsdDxUPiB8IG51bGwgPSBudWxsLFxuICAgIHN0cmluZ1Byb3BzOiAoa2V5b2YgVClbXSA9IFtdLFxuICAgIG51bWJlclByb3BzOiAoa2V5b2YgVClbXSA9IFtdLFxuICAgIGRhdGVQcm9wc0V4dHJhczogKGtleW9mIFQpW10gPSBbXVxuICApIHtcbiAgICBjb25zdCBub3JtYWxpemVkID0gZXZlbnQubWFwKChyYXcpID0+IHtcbiAgICAgIGNvbnN0IGRlZiA9IGRlZmF1bHRzO1xuICAgICAgbGV0IG1lcmdlZDogVCA9IHtcbiAgICAgICAgLi4uZGVmLFxuICAgICAgICAuLi5yYXcsXG4gICAgICAgIENvZGU6IHJhdy5Db2RlID8gU3RyaW5nKHJhdy5Db2RlKSA6ICcnLFxuICAgICAgfTtcblxuICAgICAgc3RyaW5nUHJvcHMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gcmF3W2tleV07XG4gICAgICAgIG1lcmdlZFtrZXldID0gdmFsdWUgIT0gbnVsbCA/IFN0cmluZyh2YWx1ZSkgOiAoJycgYXMgYW55KTtcbiAgICAgIH0pO1xuXG4gICAgICBudW1iZXJQcm9wcy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSByYXdba2V5XTtcblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIC8vIE9ubHkgcGFyc2UgaWYgaXQncyBhIHZhbGlkIG51bWJlclxuICAgICAgICAgIGNvbnN0IG51bSA9IHZhbHVlID09PSAnJyB8fCBpc05hTihOdW1iZXIodmFsdWUpKSA/IDAgOiBOdW1iZXIodmFsdWUpO1xuICAgICAgICAgIG1lcmdlZFtrZXldID0gbnVtIGFzIGFueTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtZXJnZWRba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgZGF0ZVByb3BzOiAoa2V5b2YgVClbXSA9IChcbiAgICAgICAgWydDcmVhdGVkQXQnLCAnVXBkYXRlZEF0J10gYXMgKGtleW9mIFQpW11cbiAgICAgICkuY29uY2F0KGRhdGVQcm9wc0V4dHJhcyk7XG4gICAgICBkYXRlUHJvcHMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbCA9IG1lcmdlZFtrZXldO1xuXG4gICAgICAgIGxldCBkYXRlT2JqOiBEYXRlO1xuXG4gICAgICAgIGlmICh2YWwgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgZGF0ZU9iaiA9IHZhbDtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIGRhdGVPYmogPSB0aGlzLmV4Y2VsU2VyaWFsVG9EYXRlKHZhbCk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBkYXRlT2JqID0gbmV3IERhdGUodmFsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkYXRlT2JqID0gbmV3IERhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNOYU4oZGF0ZU9iai5nZXRUaW1lKCkpKSB7XG4gICAgICAgICAgZGF0ZU9iaiA9IG5ldyBEYXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgbWVyZ2VkW2tleV0gPSBkYXRlT2JqLnRvSVNPU3RyaW5nKCkgYXMgYW55O1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBtZXJnZWQ7XG4gICAgfSk7XG5cbiAgICBpZiAobm9ybWFsaXplZCAmJiBub3JtYWxpemVkLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2F2ZUltcG9ydGVkRGF0YUJhdGNoKFxuICAgICAgICBub3JtYWxpemVkLFxuICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgYmFzZVVybCxcbiAgICAgICAgZW50aXR5LFxuICAgICAgICB1cGRhdGVDYWxsYmFjayxcbiAgICAgICAgcGFnZWRTdGF0ZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzYXZlSW1wb3J0ZWREYXRhQmF0Y2goXG4gICAgaXRlbXM6IFRbXSxcbiAgICBlbmRwb2ludDogc3RyaW5nIHwgbnVsbCxcbiAgICBiYXNlVXJsOiBzdHJpbmcsXG4gICAgZW50aXR5OiBzdHJpbmcsXG4gICAgdXBkYXRlQ2FsbGJhY2s6IChpdGVtczogVFtdKSA9PiB2b2lkLFxuICAgIHBhZ2VkU3RhdGU6IFBhZ2VkUmVzdWx0PFQ+IHwgbnVsbCA9IG51bGxcbiAgKSB7XG4gICAgaWYgKCFpdGVtcz8ubGVuZ3RoKSByZXR1cm47XG5cbiAgICBjb25zdCBwcmVwYXJlZEl0ZW1zID0gaXRlbXMubWFwKChpdGVtKSA9PiAoe1xuICAgICAgLi4uaXRlbSxcbiAgICAgIERhdGFTdGF0ZTogT2JqZWN0U3RhdGUuTmV3LFxuICAgICAgSWQ6ICcnLFxuICAgIH0pKTtcblxuICAgIGlmICghZW5kcG9pbnQpIHtcbiAgICAgIHByZXBhcmVkSXRlbXMuZm9yRWFjaCgoc3J2LCBpZHgpID0+IHtcbiAgICAgICAgc3J2LklkID0gYFVQTE9BRCAke2lkeH1gO1xuICAgICAgICBzcnYuaWQgPSBgVVBMT0FEICR7aWR4fWA7XG4gICAgICB9KTtcbiAgICAgIHVwZGF0ZUNhbGxiYWNrKHByZXBhcmVkSXRlbXMpO1xuXG4gICAgICBpZiAocGFnZWRTdGF0ZSkge1xuICAgICAgICBwYWdlZFN0YXRlLlNraXAgKz0gcHJlcGFyZWRJdGVtcy5sZW5ndGg7XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSSh0cnVlKTtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnNlcnZlci5wb3N0KGVuZHBvaW50LCBwcmVwYXJlZEl0ZW1zLCBiYXNlVXJsKTtcbiAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSShmYWxzZSk7XG5cbiAgICBpZiAocmVzIGluc3RhbmNlb2YgRXJyb3JSZXNwb25zZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnV0aWxTZXJ2aWNlLnNob3dTdWNjZXNzKGAke2VudGl0eX0gdXBsb2FkIHN1Y2Nlc3NmdWxgKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlcyBhcyBUW107XG5cbiAgICAgIHJlc3VsdC5mb3JFYWNoKChzcnYsIGlkeCkgPT4ge1xuICAgICAgICBzcnYuSWQgPSBzcnYuQ29kZTtcbiAgICAgICAgc3J2LmlkID0gc3J2LkNvZGU7XG4gICAgICAgIC8vIGNvbnN0IG5ld0l0ZW0gPSB7XG4gICAgICAgIC8vICAgLi4uc3J2LFxuICAgICAgICAvLyAgIElkOiBzcnYuQ29kZSxcbiAgICAgICAgLy8gICBpZDogc3J2LkNvZGUsXG4gICAgICAgIC8vIH07XG5cbiAgICAgICAgLy8gY29uc3QgY2FyZERhdGE6IENhcmREYXRhID0ge1xuICAgICAgICAvLyAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgLy8gICB0aXRsZTogbmV3SXRlbS5JZC50b1N0cmluZygpLFxuICAgICAgICAvLyAgIGRhdGE6IG5ld0l0ZW0sXG4gICAgICAgIC8vICAgYm9keTogW10sXG4gICAgICAgIC8vICAgY2hpbGRyZW46IFtdLFxuICAgICAgICAvLyB9O1xuICAgICAgfSk7XG5cbiAgICAgIHVwZGF0ZUNhbGxiYWNrKHJlc3VsdCk7XG5cbiAgICAgIGlmIChwYWdlZFN0YXRlKSB7XG4gICAgICAgIHBhZ2VkU3RhdGUuU2tpcCArPSByZXN1bHQubGVuZ3RoO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGV4Y2VsU2VyaWFsVG9EYXRlKHNlcmlhbDogbnVtYmVyKTogRGF0ZSB7XG4gICAgMTtcbiAgICBjb25zdCBleGNlbEVwb2NoID0gbmV3IERhdGUoRGF0ZS5VVEMoMTg5OSwgMTEsIDMwKSk7XG4gICAgY29uc3QgbWlsbGlzUGVyRGF5ID0gMjQgKiA2MCAqIDYwICogMTAwMDtcblxuICAgIHJldHVybiBuZXcgRGF0ZShleGNlbEVwb2NoLmdldFRpbWUoKSArIHNlcmlhbCAqIG1pbGxpc1BlckRheSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NgModule } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { CardDataViewModule, CardModule, DataExportModule, DataTableModule, DataViewModule, DropDownModule, SortTableModule, SvgModule, TableFilterModule, VerbenaBadgeModule, VerbenaButtonModule, VerbenaInputModule, VerbenaSwitchModule, VerbenDialogueModule, VisibleColumnModule, VerbenaTextareaModule, VerbenPopUpModule, ChipModule, } from 'verben-ng-ui';
|
|
3
|
+
import { CardDataViewModule, CardModule, DataExportModule, DataTableModule, DataViewModule, DropDownModule, SortTableModule, SvgModule, TableFilterModule, VerbenaBadgeModule, VerbenaButtonModule, VerbenaInputModule, VerbenaSwitchModule, VerbenDialogueModule, VisibleColumnModule, VerbenaTextareaModule, VerbenPopUpModule, ChipModule, DataXportModule, DataImportModule, } from 'verben-ng-ui';
|
|
4
4
|
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
5
5
|
import { AsyncLabelPipe } from '../pipes/async-label.pipe';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
@@ -27,7 +27,9 @@ export class SharedModule {
|
|
|
27
27
|
VerbenaSwitchModule,
|
|
28
28
|
VerbenPopUpModule,
|
|
29
29
|
ChipModule,
|
|
30
|
-
AsyncLabelPipe
|
|
30
|
+
AsyncLabelPipe,
|
|
31
|
+
DataXportModule,
|
|
32
|
+
DataImportModule] });
|
|
31
33
|
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SharedModule, imports: [CommonModule, CommonModule,
|
|
32
34
|
DataTableModule,
|
|
33
35
|
CardModule,
|
|
@@ -48,7 +50,9 @@ export class SharedModule {
|
|
|
48
50
|
VerbenaTextareaModule,
|
|
49
51
|
VerbenaSwitchModule,
|
|
50
52
|
VerbenPopUpModule,
|
|
51
|
-
ChipModule
|
|
53
|
+
ChipModule,
|
|
54
|
+
DataXportModule,
|
|
55
|
+
DataImportModule] });
|
|
52
56
|
}
|
|
53
57
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SharedModule, decorators: [{
|
|
54
58
|
type: NgModule,
|
|
@@ -77,8 +81,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
77
81
|
VerbenaSwitchModule,
|
|
78
82
|
VerbenPopUpModule,
|
|
79
83
|
ChipModule,
|
|
80
|
-
AsyncLabelPipe
|
|
84
|
+
AsyncLabelPipe,
|
|
85
|
+
DataXportModule,
|
|
86
|
+
DataImportModule,
|
|
81
87
|
],
|
|
82
88
|
}]
|
|
83
89
|
}] });
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1hdXRoZW50aWNhdGlvbi11aS9zcmMvbGliL3NoYXJlZC9zaGFyZWQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsVUFBVSxFQUNWLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsY0FBYyxFQUNkLGNBQWMsRUFDZCxlQUFlLEVBQ2YsU0FBUyxFQUNULGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixlQUFlLEVBQ2YsZ0JBQWdCLEdBQ2pCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBZ0MzRCxNQUFNLE9BQU8sWUFBWTt3R0FBWixZQUFZO3lHQUFaLFlBQVksWUE1QmIsWUFBWSxFQUFFLGNBQWMsYUFFcEMsWUFBWTtZQUNaLGVBQWU7WUFDZixVQUFVO1lBQ1YsU0FBUztZQUNULGNBQWM7WUFDZCxrQkFBa0I7WUFDbEIsZUFBZTtZQUNmLG1CQUFtQjtZQUNuQixpQkFBaUI7WUFDakIsZ0JBQWdCO1lBQ2hCLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsa0JBQWtCO1lBQ2xCLG1CQUFtQjtZQUNuQixrQkFBa0I7WUFDbEIsb0JBQW9CO1lBQ3BCLGNBQWM7WUFDZCxxQkFBcUI7WUFDckIsbUJBQW1CO1lBQ25CLGlCQUFpQjtZQUNqQixVQUFVO1lBQ1YsY0FBYztZQUNkLGVBQWU7WUFDZixnQkFBZ0I7eUdBR1AsWUFBWSxZQTVCYixZQUFZLEVBRXBCLFlBQVk7WUFDWixlQUFlO1lBQ2YsVUFBVTtZQUNWLFNBQVM7WUFDVCxjQUFjO1lBQ2Qsa0JBQWtCO1lBQ2xCLGVBQWU7WUFDZixtQkFBbUI7WUFDbkIsaUJBQWlCO1lBQ2pCLGdCQUFnQjtZQUNoQixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGtCQUFrQjtZQUNsQixtQkFBbUI7WUFDbkIsa0JBQWtCO1lBQ2xCLG9CQUFvQjtZQUNwQixjQUFjO1lBQ2QscUJBQXFCO1lBQ3JCLG1CQUFtQjtZQUNuQixpQkFBaUI7WUFDakIsVUFBVTtZQUVWLGVBQWU7WUFDZixnQkFBZ0I7OzRGQUdQLFlBQVk7a0JBOUJ4QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxFQUFFO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDO29CQUN2QyxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixlQUFlO3dCQUNmLFVBQVU7d0JBQ1YsU0FBUzt3QkFDVCxjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLGlCQUFpQjt3QkFDakIsZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsb0JBQW9CO3dCQUNwQixjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsbUJBQW1CO3dCQUNuQixpQkFBaUI7d0JBQ2pCLFVBQVU7d0JBQ1YsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLGdCQUFnQjtxQkFDakI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENhcmREYXRhVmlld01vZHVsZSxcbiAgQ2FyZE1vZHVsZSxcbiAgRGF0YUV4cG9ydE1vZHVsZSxcbiAgRGF0YVRhYmxlTW9kdWxlLFxuICBEYXRhVmlld01vZHVsZSxcbiAgRHJvcERvd25Nb2R1bGUsXG4gIFNvcnRUYWJsZU1vZHVsZSxcbiAgU3ZnTW9kdWxlLFxuICBUYWJsZUZpbHRlck1vZHVsZSxcbiAgVmVyYmVuYUJhZGdlTW9kdWxlLFxuICBWZXJiZW5hQnV0dG9uTW9kdWxlLFxuICBWZXJiZW5hSW5wdXRNb2R1bGUsXG4gIFZlcmJlbmFTd2l0Y2hNb2R1bGUsXG4gIFZlcmJlbkRpYWxvZ3VlTW9kdWxlLFxuICBWaXNpYmxlQ29sdW1uTW9kdWxlLFxuICBWZXJiZW5hVGV4dGFyZWFNb2R1bGUsXG4gIFZlcmJlblBvcFVwTW9kdWxlLFxuICBDaGlwTW9kdWxlLFxuICBEYXRhWHBvcnRNb2R1bGUsXG4gIERhdGFJbXBvcnRNb2R1bGUsXG59IGZyb20gJ3ZlcmJlbi1uZy11aSc7XG5cbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQXN5bmNMYWJlbFBpcGUgfSBmcm9tICcuLi9waXBlcy9hc3luYy1sYWJlbC5waXBlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQXN5bmNMYWJlbFBpcGVdLFxuICBleHBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIERhdGFUYWJsZU1vZHVsZSxcbiAgICBDYXJkTW9kdWxlLFxuICAgIFN2Z01vZHVsZSxcbiAgICBEYXRhVmlld01vZHVsZSxcbiAgICBDYXJkRGF0YVZpZXdNb2R1bGUsXG4gICAgU29ydFRhYmxlTW9kdWxlLFxuICAgIFZpc2libGVDb2x1bW5Nb2R1bGUsXG4gICAgVGFibGVGaWx0ZXJNb2R1bGUsXG4gICAgRGF0YUV4cG9ydE1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFZlcmJlbmFJbnB1dE1vZHVsZSxcbiAgICBWZXJiZW5hQnV0dG9uTW9kdWxlLFxuICAgIFZlcmJlbmFCYWRnZU1vZHVsZSxcbiAgICBWZXJiZW5EaWFsb2d1ZU1vZHVsZSxcbiAgICBEcm9wRG93bk1vZHVsZSxcbiAgICBWZXJiZW5hVGV4dGFyZWFNb2R1bGUsXG4gICAgVmVyYmVuYVN3aXRjaE1vZHVsZSxcbiAgICBWZXJiZW5Qb3BVcE1vZHVsZSxcbiAgICBDaGlwTW9kdWxlLFxuICAgIEFzeW5jTGFiZWxQaXBlLFxuICAgIERhdGFYcG9ydE1vZHVsZSxcbiAgICBEYXRhSW1wb3J0TW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTaGFyZWRNb2R1bGUge31cbiJdfQ==
|