@openziti/ziti-console-lib 0.4.8 → 0.4.10
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/features/data-table/data-table-filter.service.mjs +66 -5
- package/esm2022/lib/features/projectable-forms/service/simple-service/simple-service.component.mjs +15 -3
- package/esm2022/lib/features/tag-selector/tag-selector.component.mjs +2 -2
- package/esm2022/lib/features/visualizer/identity-service-path/identity-service-path.helper.mjs +2 -4
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/openziti-ziti-console-lib.mjs +81 -13
- package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
- package/lib/features/data-table/data-table-filter.service.d.ts +11 -1
- package/lib/features/data-table/data-table-filter.service.d.ts.map +1 -1
- package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts +1 -0
- package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts.map +1 -1
- package/lib/features/visualizer/identity-service-path/identity-service-path.helper.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import { BehaviorSubject } from "rxjs";
|
|
3
|
-
import { isEmpty } from "lodash";
|
|
3
|
+
import { forEach, isEmpty } from "lodash";
|
|
4
|
+
import { HttpParams } from "@angular/common/http";
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common";
|
|
7
|
+
import * as i2 from "@angular/router";
|
|
5
8
|
class DataTableFilterService {
|
|
6
|
-
constructor() {
|
|
9
|
+
constructor(location, router, activatedRoute) {
|
|
10
|
+
this.location = location;
|
|
11
|
+
this.router = router;
|
|
12
|
+
this.activatedRoute = activatedRoute;
|
|
7
13
|
this.filters = [];
|
|
8
14
|
this.currentPage = 1;
|
|
9
15
|
this.filtersChanged = new BehaviorSubject(this.filters);
|
|
10
16
|
this.pageChanged = new BehaviorSubject(this.currentPage);
|
|
17
|
+
this.currentQueryParams = [];
|
|
11
18
|
}
|
|
12
19
|
updateFilter(filterObj) {
|
|
13
20
|
if (isEmpty(filterObj.value) && (isNaN(filterObj.value) || filterObj.value === ''))
|
|
@@ -25,6 +32,7 @@ class DataTableFilterService {
|
|
|
25
32
|
this.filters.push(filterObj);
|
|
26
33
|
}
|
|
27
34
|
}
|
|
35
|
+
this.updateUrlParameters();
|
|
28
36
|
this.filtersChanged.next(this.filters);
|
|
29
37
|
}
|
|
30
38
|
removeFilter(filterObj) {
|
|
@@ -34,6 +42,7 @@ class DataTableFilterService {
|
|
|
34
42
|
break;
|
|
35
43
|
}
|
|
36
44
|
}
|
|
45
|
+
this.updateUrlParameters([filterObj]);
|
|
37
46
|
this.filtersChanged.next(this.filters);
|
|
38
47
|
}
|
|
39
48
|
getFilterString(key) {
|
|
@@ -51,9 +60,61 @@ class DataTableFilterService {
|
|
|
51
60
|
}
|
|
52
61
|
clearFilters() {
|
|
53
62
|
this.filters = [];
|
|
63
|
+
this.updateUrlParameters();
|
|
54
64
|
this.filtersChanged.next(this.filters);
|
|
55
65
|
}
|
|
56
|
-
|
|
66
|
+
storeFilters() {
|
|
67
|
+
localStorage.setItem('search_filters', JSON.stringify(this.filters));
|
|
68
|
+
}
|
|
69
|
+
getStoredFilters() {
|
|
70
|
+
const storageItem = localStorage.getItem('search_filters');
|
|
71
|
+
const filters = storageItem ? JSON.parse(storageItem) : [];
|
|
72
|
+
return filters;
|
|
73
|
+
}
|
|
74
|
+
updateUrlParameters(filtersToRemove = []) {
|
|
75
|
+
const urlFiltersMap = this.getUrlFiltersMap();
|
|
76
|
+
let params = new HttpParams();
|
|
77
|
+
this.filters.forEach(filter => {
|
|
78
|
+
urlFiltersMap[filter.columnId] = filter;
|
|
79
|
+
});
|
|
80
|
+
const newFilters = [];
|
|
81
|
+
forEach(urlFiltersMap, (value, key) => {
|
|
82
|
+
const filterRemoved = filtersToRemove.some((removed) => {
|
|
83
|
+
return removed.columnId === key;
|
|
84
|
+
});
|
|
85
|
+
if (!filterRemoved) {
|
|
86
|
+
params = params.append(key, value.value);
|
|
87
|
+
newFilters.push(value);
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
this.filters = newFilters;
|
|
91
|
+
const path = this.router.url.split("?")[0];
|
|
92
|
+
this.location.replaceState(path, params.toString());
|
|
93
|
+
this.storeFilters();
|
|
94
|
+
}
|
|
95
|
+
getUrlFiltersMap() {
|
|
96
|
+
const paramString = window.location.href.split("?")[1];
|
|
97
|
+
const params = new HttpParams({ fromString: paramString });
|
|
98
|
+
const storedFilters = this.getStoredFilters();
|
|
99
|
+
const appliedFiltersMap = {};
|
|
100
|
+
params.keys().forEach((key) => {
|
|
101
|
+
const storedFilter = storedFilters.find((filter) => {
|
|
102
|
+
return filter.columnId === key;
|
|
103
|
+
});
|
|
104
|
+
if (storedFilter) {
|
|
105
|
+
appliedFiltersMap[key] = storedFilter;
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
appliedFiltersMap[key] = {
|
|
109
|
+
columnId: key,
|
|
110
|
+
value: params.get(key),
|
|
111
|
+
label: key
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
return appliedFiltersMap;
|
|
116
|
+
}
|
|
117
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataTableFilterService, deps: [{ token: i1.Location }, { token: i2.Router }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
57
118
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataTableFilterService, providedIn: 'root' }); }
|
|
58
119
|
}
|
|
59
120
|
export { DataTableFilterService };
|
|
@@ -62,5 +123,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
62
123
|
args: [{
|
|
63
124
|
providedIn: 'root'
|
|
64
125
|
}]
|
|
65
|
-
}], ctorParameters: function () { return []; } });
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1maWx0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9kYXRhLXRhYmxlL2RhdGEtdGFibGUtZmlsdGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxRQUFRLENBQUM7O0FBWS9CLE1BR2Esc0JBQXNCO0lBUy9CO1FBUEEsWUFBTyxHQUFnQixFQUFFLENBQUM7UUFDMUIsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFDaEIsbUJBQWMsR0FDUixJQUFJLGVBQWUsQ0FBYyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFFcEQsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFHekQsQ0FBQztJQUVELFlBQVksQ0FBQyxTQUFvQjtRQUM3QixJQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLFNBQVMsQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUMzRztZQUNELElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNwQixLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7Z0JBQ2hELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLFFBQVEsRUFBRTtvQkFDbkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUM7b0JBQzlCLE9BQU8sR0FBRyxJQUFJLENBQUM7b0JBQ2YsTUFBTTtpQkFDVDthQUNKO1lBQ0QsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDVixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUNoQztTQUNKO1FBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxZQUFZLENBQUMsU0FBb0I7UUFDN0IsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ2hELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLFFBQVEsRUFBRTtnQkFDbkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM1QixNQUFNO2FBQ1Q7U0FDSjtRQUNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsZUFBZSxDQUFDLEdBQVc7UUFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2YsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ2hELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEtBQUssR0FBRyxFQUFFO2dCQUNwQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBQ2hDLE1BQU07YUFDVDtTQUNKO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFTO1FBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxZQUFZO1FBQ1IsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNDLENBQUM7K0dBMURRLHNCQUFzQjttSEFBdEIsc0JBQXNCLGNBRm5CLE1BQU07O1NBRVQsc0JBQXNCOzRGQUF0QixzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0fSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtpc0VtcHR5fSBmcm9tIFwibG9kYXNoXCI7XG5cbmV4cG9ydCB0eXBlIEZpbHRlck9iaiA9IHtcbiAgICBmaWx0ZXJOYW1lOiBzdHJpbmc7XG4gICAgY29sdW1uSWQ6IHN0cmluZztcbiAgICB2YWx1ZTogYW55O1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgdHlwZT86IHN0cmluZztcbiAgICBoaWRkZW4/OiBib29sZWFuO1xuICAgIHZlcmI/OiBzdHJpbmdcbn1cblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEYXRhVGFibGVGaWx0ZXJTZXJ2aWNlIHtcblxuICAgIGZpbHRlcnM6IEZpbHRlck9ialtdID0gW107XG4gICAgY3VycmVudFBhZ2UgPSAxO1xuICAgIGZpbHRlcnNDaGFuZ2VkXG4gICAgICAgID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJPYmpbXT4odGhpcy5maWx0ZXJzKVxuXG4gICAgcGFnZUNoYW5nZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4odGhpcy5jdXJyZW50UGFnZSk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICB9XG5cbiAgICB1cGRhdGVGaWx0ZXIoZmlsdGVyT2JqOiBGaWx0ZXJPYmopIHtcbiAgICAgICAgaWYoaXNFbXB0eShmaWx0ZXJPYmoudmFsdWUpICYmIChpc05hTihmaWx0ZXJPYmoudmFsdWUpIHx8IGZpbHRlck9iai52YWx1ZSA9PT0gJycpKSB0aGlzLnJlbW92ZUZpbHRlcihmaWx0ZXJPYmopO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGxldCBpc0ZvdW5kID0gZmFsc2U7XG4gICAgICAgICAgICBmb3IgKGxldCBpZHggPSAwOyBpZHggPCB0aGlzLmZpbHRlcnMubGVuZ3RoOyBpZHgrKykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlcnNbaWR4XS5jb2x1bW5JZCA9PT0gZmlsdGVyT2JqLmNvbHVtbklkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyc1tpZHhdID0gZmlsdGVyT2JqO1xuICAgICAgICAgICAgICAgICAgICBpc0ZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc0ZvdW5kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJzLnB1c2goZmlsdGVyT2JqKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbHRlcnNDaGFuZ2VkLm5leHQodGhpcy5maWx0ZXJzKTtcbiAgICB9XG5cbiAgICByZW1vdmVGaWx0ZXIoZmlsdGVyT2JqOiBGaWx0ZXJPYmopIHtcbiAgICAgICAgZm9yIChsZXQgaWR4ID0gMDsgaWR4IDwgdGhpcy5maWx0ZXJzLmxlbmd0aDsgaWR4KyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlcnNbaWR4XS5jb2x1bW5JZCA9PT0gZmlsdGVyT2JqLmNvbHVtbklkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJzLnNwbGljZShpZHgsIDEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmlsdGVyc0NoYW5nZWQubmV4dCh0aGlzLmZpbHRlcnMpO1xuICAgIH1cblxuICAgIGdldEZpbHRlclN0cmluZyhrZXk6IHN0cmluZykge1xuICAgICAgICBsZXQgdmFsdWUgPSAnJztcbiAgICAgICAgZm9yIChsZXQgaWR4ID0gMDsgaWR4IDwgdGhpcy5maWx0ZXJzLmxlbmd0aDsgaWR4KyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlcnNbaWR4XS5jb2x1bW5JZCA9PT0ga2V5KSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmZpbHRlcnNbaWR4XS52YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgY2hhbmdlUGFnZShwYWdlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5wYWdlQ2hhbmdlZC5uZXh0KHBhZ2UpO1xuICAgIH1cblxuICAgIGNsZWFyRmlsdGVycygpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJzID0gW107XG4gICAgICAgIHRoaXMuZmlsdGVyc0NoYW5nZWQubmV4dCh0aGlzLmZpbHRlcnMpO1xuICAgIH1cbn1cbiJdfQ==
|
|
126
|
+
}], ctorParameters: function () { return [{ type: i1.Location }, { type: i2.Router }, { type: i2.ActivatedRoute }]; } });
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1maWx0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9kYXRhLXRhYmxlL2RhdGEtdGFibGUtZmlsdGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sRUFBQyxPQUFPLEVBQUUsT0FBTyxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQWNoRCxNQUdhLHNCQUFzQjtJQVcvQixZQUFvQixRQUFrQixFQUFVLE1BQWMsRUFBVSxjQUE4QjtRQUFsRixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQVR0RyxZQUFPLEdBQWdCLEVBQUUsQ0FBQztRQUMxQixnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUNoQixtQkFBYyxHQUNSLElBQUksZUFBZSxDQUFjLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUVwRCxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV6RCx1QkFBa0IsR0FBRyxFQUFFLENBQUM7SUFHeEIsQ0FBQztJQUVELFlBQVksQ0FBQyxTQUFvQjtRQUM3QixJQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLFNBQVMsQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FB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Q0FBQyxDQUFDLENBQUM7UUFDdkQsTUFBTSxNQUFNLEdBQWUsSUFBSSxVQUFVLENBQUMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN2RSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM5QyxNQUFNLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUU3QixNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDMUIsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUMvQyxPQUFPLE1BQU0sQ0FBQyxRQUFRLEtBQUssR0FBRyxDQUFDO1lBQ25DLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxZQUFZLEVBQUU7Z0JBQ2QsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEdBQUcsWUFBWSxDQUFDO2FBQ3pDO2lCQUFNO2dCQUNILGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxHQUFHO29CQUNyQixRQUFRLEVBQUUsR0FBRztvQkFDYixLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7b0JBQ3RCLEtBQUssRUFBRSxHQUFHO2lCQUNiLENBQUM7YUFDTDtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxpQkFBaUIsQ0FBQztJQUM3QixDQUFDOytHQXRIUSxzQkFBc0I7bUhBQXRCLHNCQUFzQixjQUZuQixNQUFNOztTQUVULHNCQUFzQjs0RkFBdEIsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7Zm9yRWFjaCwgaXNFbXB0eX0gZnJvbSBcImxvZGFzaFwiO1xuaW1wb3J0IHtIdHRwUGFyYW1zfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFJvdXRlcn0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHtMb2NhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuXG5leHBvcnQgdHlwZSBGaWx0ZXJPYmogPSB7XG4gICAgZmlsdGVyTmFtZTogc3RyaW5nO1xuICAgIGNvbHVtbklkOiBzdHJpbmc7XG4gICAgdmFsdWU6IGFueTtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIHR5cGU/OiBzdHJpbmc7XG4gICAgaGlkZGVuPzogYm9vbGVhbjtcbiAgICB2ZXJiPzogc3RyaW5nXG59XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRGF0YVRhYmxlRmlsdGVyU2VydmljZSB7XG5cbiAgICBmaWx0ZXJzOiBGaWx0ZXJPYmpbXSA9IFtdO1xuICAgIGN1cnJlbnRQYWdlID0gMTtcbiAgICBmaWx0ZXJzQ2hhbmdlZFxuICAgICAgICA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmlsdGVyT2JqW10+KHRoaXMuZmlsdGVycylcblxuICAgIHBhZ2VDaGFuZ2VkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KHRoaXMuY3VycmVudFBhZ2UpO1xuXG4gICAgY3VycmVudFF1ZXJ5UGFyYW1zID0gW107XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbiwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUpIHtcbiAgICB9XG5cbiAgICB1cGRhdGVGaWx0ZXIoZmlsdGVyT2JqOiBGaWx0ZXJPYmopIHtcbiAgICAgICAgaWYoaXNFbXB0eShmaWx0ZXJPYmoudmFsdWUpICYmIChpc05hTihmaWx0ZXJPYmoudmFsdWUpIHx8IGZpbHRlck9iai52YWx1ZSA9PT0gJycpKSB0aGlzLnJlbW92ZUZpbHRlcihmaWx0ZXJPYmopO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGxldCBpc0ZvdW5kID0gZmFsc2U7XG4gICAgICAgICAgICBmb3IgKGxldCBpZHggPSAwOyBpZHggPCB0aGlzLmZpbHRlcnMubGVuZ3RoOyBpZHgrKykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlcnNbaWR4XS5jb2x1bW5JZCA9PT0gZmlsdGVyT2JqLmNvbHVtbklkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyc1tpZHhdID0gZmlsdGVyT2JqO1xuICAgICAgICAgICAgICAgICAgICBpc0ZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc0ZvdW5kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJzLnB1c2goZmlsdGVyT2JqKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZVVybFBhcmFtZXRlcnMoKTtcbiAgICAgICAgdGhpcy5maWx0ZXJzQ2hhbmdlZC5uZXh0KHRoaXMuZmlsdGVycyk7XG4gICAgfVxuXG4gICAgcmVtb3ZlRmlsdGVyKGZpbHRlck9iajogRmlsdGVyT2JqKSB7XG4gICAgICAgIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IHRoaXMuZmlsdGVycy5sZW5ndGg7IGlkeCsrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJzW2lkeF0uY29sdW1uSWQgPT09IGZpbHRlck9iai5jb2x1bW5JZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVycy5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZVVybFBhcmFtZXRlcnMoW2ZpbHRlck9ial0pO1xuICAgICAgICB0aGlzLmZpbHRlcnNDaGFuZ2VkLm5leHQodGhpcy5maWx0ZXJzKTtcbiAgICB9XG5cbiAgICBnZXRGaWx0ZXJTdHJpbmcoa2V5OiBzdHJpbmcpIHtcbiAgICAgICAgbGV0IHZhbHVlID0gJyc7XG4gICAgICAgIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IHRoaXMuZmlsdGVycy5sZW5ndGg7IGlkeCsrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJzW2lkeF0uY29sdW1uSWQgPT09IGtleSkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5maWx0ZXJzW2lkeF0udmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGNoYW5nZVBhZ2UocGFnZTogYW55KSB7XG4gICAgICAgIHRoaXMucGFnZUNoYW5nZWQubmV4dChwYWdlKTtcbiAgICB9XG5cbiAgICBjbGVhckZpbHRlcnMoKSB7XG4gICAgICAgIHRoaXMuZmlsdGVycyA9IFtdO1xuICAgICAgICB0aGlzLnVwZGF0ZVVybFBhcmFtZXRlcnMoKTtcbiAgICAgICAgdGhpcy5maWx0ZXJzQ2hhbmdlZC5uZXh0KHRoaXMuZmlsdGVycyk7XG4gICAgfVxuXG4gICAgc3RvcmVGaWx0ZXJzKCkge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc2VhcmNoX2ZpbHRlcnMnLCBKU09OLnN0cmluZ2lmeSh0aGlzLmZpbHRlcnMpKTtcbiAgICB9XG5cbiAgICBnZXRTdG9yZWRGaWx0ZXJzKCkge1xuICAgICAgICBjb25zdCBzdG9yYWdlSXRlbSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdzZWFyY2hfZmlsdGVycycpO1xuICAgICAgICBjb25zdCBmaWx0ZXJzID0gc3RvcmFnZUl0ZW0gPyBKU09OLnBhcnNlKHN0b3JhZ2VJdGVtKSA6IFtdO1xuICAgICAgICByZXR1cm4gZmlsdGVycztcbiAgICB9XG5cbiAgICB1cGRhdGVVcmxQYXJhbWV0ZXJzKGZpbHRlcnNUb1JlbW92ZTogYW55W10gPSBbXSkge1xuICAgICAgICBjb25zdCB1cmxGaWx0ZXJzTWFwID0gdGhpcy5nZXRVcmxGaWx0ZXJzTWFwKCk7XG4gICAgICAgIGxldCBwYXJhbXM6IEh0dHBQYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgICAgICB0aGlzLmZpbHRlcnMuZm9yRWFjaChmaWx0ZXIgPT4ge1xuICAgICAgICAgICAgdXJsRmlsdGVyc01hcFtmaWx0ZXIuY29sdW1uSWRdID0gZmlsdGVyO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgbmV3RmlsdGVycyA9IFtdO1xuICAgICAgICBmb3JFYWNoKHVybEZpbHRlcnNNYXAsICh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJSZW1vdmVkID0gZmlsdGVyc1RvUmVtb3ZlLnNvbWUoKHJlbW92ZWQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3ZlZC5jb2x1bW5JZCA9PT0ga2V5O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGlmICghZmlsdGVyUmVtb3ZlZCkge1xuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoa2V5LCB2YWx1ZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgbmV3RmlsdGVycy5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZmlsdGVycyA9IG5ld0ZpbHRlcnM7XG4gICAgICAgIGNvbnN0IHBhdGggPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoXCI/XCIpWzBdO1xuICAgICAgICB0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZShwYXRoLCBwYXJhbXMudG9TdHJpbmcoKSk7XG4gICAgICAgIHRoaXMuc3RvcmVGaWx0ZXJzKCk7XG4gICAgfVxuXG4gICAgZ2V0VXJsRmlsdGVyc01hcCgpOiBhbnkge1xuICAgICAgICBjb25zdCBwYXJhbVN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLnNwbGl0KFwiP1wiKVsxXTtcbiAgICAgICAgY29uc3QgcGFyYW1zOiBIdHRwUGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoeyBmcm9tU3RyaW5nOiBwYXJhbVN0cmluZyB9KTtcbiAgICAgICAgY29uc3Qgc3RvcmVkRmlsdGVycyA9IHRoaXMuZ2V0U3RvcmVkRmlsdGVycygpO1xuICAgICAgICBjb25zdCBhcHBsaWVkRmlsdGVyc01hcCA9IHt9O1xuXG4gICAgICAgIHBhcmFtcy5rZXlzKCkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdG9yZWRGaWx0ZXIgPSBzdG9yZWRGaWx0ZXJzLmZpbmQoKGZpbHRlcikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXIuY29sdW1uSWQgPT09IGtleTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHN0b3JlZEZpbHRlcikge1xuICAgICAgICAgICAgICAgIGFwcGxpZWRGaWx0ZXJzTWFwW2tleV0gPSBzdG9yZWRGaWx0ZXI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGFwcGxpZWRGaWx0ZXJzTWFwW2tleV0gPSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbklkOiBrZXksXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBwYXJhbXMuZ2V0KGtleSksXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBrZXlcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGFwcGxpZWRGaWx0ZXJzTWFwO1xuICAgIH1cblxufVxuIl19
|