@sumaris-net/ngx-components 2.4.132 → 2.4.134

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.
@@ -1,6 +1,90 @@
1
- import { isNilOrBlank, isNotNil } from '../../shared/functions';
1
+ var _a;
2
+ import { isNilOrBlank, isNotNil, isNotNilOrBlank, toBoolean, toInt } from '../../shared/functions';
2
3
  import { BehaviorSubject } from 'rxjs';
3
4
  import { AccountUtils } from '../services/model/account.model';
5
+ export class MenuItem {
6
+ constructor() {
7
+ this.$children = new BehaviorSubject([]);
8
+ this.$title = new BehaviorSubject(undefined);
9
+ }
10
+ static fromObject(source) {
11
+ if (!source)
12
+ return null;
13
+ if (source instanceof MenuItem)
14
+ return source;
15
+ const target = new MenuItem();
16
+ target.fromObject(source);
17
+ return target;
18
+ }
19
+ fromObject(source) {
20
+ this.id = source.id;
21
+ this.title = source.title;
22
+ this.titleProperty = source.titleProperty;
23
+ this.titleArgs = source.titleArgs;
24
+ // Clean path
25
+ if (source.path) {
26
+ const { path, params } = MenuItems.parsePathWithQuery(source.path);
27
+ this.path = path;
28
+ this.pathParams = { ...source.pathParams, ...params };
29
+ }
30
+ // Clean parent path
31
+ if (source.parentPath) {
32
+ const { path, params } = MenuItems.parsePathWithQuery(source.parentPath);
33
+ this.parentPath = path;
34
+ this.parentPathParams = { ...source.parentPathParams, ...params };
35
+ }
36
+ this.after = source.after;
37
+ this.before = source.before;
38
+ this.action = source.action;
39
+ this.profile = source.profile;
40
+ this.exactProfile = source.exactProfile;
41
+ this.color = source.color;
42
+ this.cssClass = source.cssClass;
43
+ this.ifProperty = source.ifProperty;
44
+ this.pinned = toBoolean(source.pinned, false);
45
+ // Icon
46
+ this.icon = source.icon;
47
+ this.matIcon = source.matIcon;
48
+ this.matSvgIcon = source.matSvgIcon;
49
+ this.children = (source.children || []).map(MenuItem.fromObject) || [];
50
+ }
51
+ asObject() {
52
+ const target = Object.assign({}, this);
53
+ delete target.$children;
54
+ target.children = (this.children || []).map(c => c.asObject());
55
+ return target;
56
+ }
57
+ // addChild(child: MenuItem) {
58
+ // this.$children.next(this.$children.value)
59
+ // }
60
+ get children() {
61
+ return this.$children.value;
62
+ }
63
+ set children(value) {
64
+ this.$children.next(value);
65
+ }
66
+ get title() {
67
+ return this.$title.value;
68
+ }
69
+ set title(value) {
70
+ if (this.pinned) {
71
+ // If loading, keep existing title if pinned (avoid to show skeleton)
72
+ if (isNotNilOrBlank(value))
73
+ this.$title.next(value);
74
+ }
75
+ else if (isNotNil(value)) {
76
+ this.$title.next(value);
77
+ }
78
+ }
79
+ get detached() {
80
+ return !this.parentPath || !this.parent;
81
+ }
82
+ isPinned() {
83
+ if (this.pinned)
84
+ return true;
85
+ return (this.children || []).some(child => child.isPinned());
86
+ }
87
+ }
4
88
  export class MenuItems {
5
89
  /**
6
90
  * Compare, without checking the children
@@ -9,12 +93,29 @@ export class MenuItems {
9
93
  * @param otherItem
10
94
  */
11
95
  static isSame(mainItem, otherItem) {
96
+ return this.isSameIdOrPathAndParams(mainItem, otherItem)
97
+ && mainItem.title === otherItem.title;
98
+ }
99
+ /**
100
+ * Compare, without checking the children and the title
101
+ *
102
+ * @param mainItem
103
+ * @param otherItem
104
+ */
105
+ static isSameIdOrPathAndParams(mainItem, otherItem) {
12
106
  return (isNotNil(mainItem?.id) && mainItem.id === otherItem?.id)
13
- || (mainItem.path === otherItem.path
14
- && mainItem.parentPath === otherItem.parentPath
15
- // FIXME: check if can be disabled
16
- //&& mainItem.title === otherItem.title
17
- && this.isSameParams(mainItem.pathParams, otherItem.pathParams));
107
+ || this.isSamePathAndParams(mainItem, otherItem);
108
+ }
109
+ /**
110
+ * Compare, without checking the children
111
+ *
112
+ * @param mainItem
113
+ * @param otherItem
114
+ */
115
+ static isSamePathAndParams(mainItem, otherItem) {
116
+ return mainItem && mainItem.path === otherItem?.path
117
+ && mainItem.parentPath === otherItem.parentPath
118
+ && this.isSameParams(mainItem.pathParams, otherItem.pathParams);
18
119
  }
19
120
  /**
20
121
  * All key/value of the mainParams should exist (and be equals) in the other params
@@ -23,27 +124,10 @@ export class MenuItems {
23
124
  * @param otherParams
24
125
  */
25
126
  static isSameParams(mainParams, otherParams) {
26
- return Object.entries(mainParams).every(([key, value]) => value === otherParams[key]);
27
- }
28
- // TODO : Replace this by a class ?
29
- static prepareItem(item) {
30
- item = {
31
- $children: item.$children || new BehaviorSubject([]),
32
- pinned: false,
33
- ...item,
34
- };
35
- // Clean
36
- if (item.path) {
37
- const { path, params } = MenuItems.parsePathWithQuery(item.path);
38
- item.path = path;
39
- item.pathParams = { ...item.pathParams, ...params };
40
- }
41
- if (item.parentPath) {
42
- const { path, params } = MenuItems.parsePathWithQuery(item.parentPath);
43
- item.parentPath = path;
44
- item.parentPathParams = { ...item.parentPathParams, ...params };
45
- }
46
- return item;
127
+ const mainEntries = Object.entries(mainParams);
128
+ const otherEntries = Object.entries(otherParams);
129
+ // TODO: est-ce que un item ne pourrait pas avoir plus de params dans l'item existant ?
130
+ return (mainEntries.length === otherEntries.length) && mainEntries.every(([key, value]) => value === otherParams[key]);
47
131
  }
48
132
  static isParent(child, parent) {
49
133
  return child.parentPath && child.parentPath === parent?.path
@@ -79,12 +163,16 @@ export class MenuItems {
79
163
  }
80
164
  return true;
81
165
  }
82
- static isPinned(item) {
83
- if (item?.pinned)
166
+ static checkIfSubMenuVisible(item, currentPathParam) {
167
+ if (!item.parentPath)
168
+ return false; // Should have a parent
169
+ if (item.isPinned())
170
+ return true; // Always keep pinned items
171
+ // Keep each menu items in the scope of the current url path
172
+ if (currentPathParam?.path.startsWith(item.path))
84
173
  return true;
85
- if (!item?.$children || item.$children.value.length < 1)
86
- return false;
87
- return item.$children.value.some(i => MenuItems.isPinned(i));
174
+ // Not visible
175
+ return false;
88
176
  }
89
177
  static parsePathWithQuery(pathWithQuery) {
90
178
  const index = pathWithQuery.lastIndexOf('?');
@@ -104,7 +192,17 @@ export class MenuItems {
104
192
  return path || '';
105
193
  return `${path || ''}?${queryString}`;
106
194
  }
195
+ static sortByParamOrIdComparator(paramName) {
196
+ paramName = paramName || 'tab';
197
+ return (n1, n2) => {
198
+ const d1 = toInt(n1.pathParams?.[paramName], n1.id);
199
+ const d2 = toInt(n2.pathParams?.[paramName], n2.id);
200
+ return d1 === d2 ? 0 : d1 > d2 ? 1 : -1;
201
+ };
202
+ }
107
203
  }
204
+ _a = MenuItems;
205
+ MenuItems.sortByTabOrId = _a.sortByParamOrIdComparator('tab');
108
206
  export class MenuOptions {
109
207
  }
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9tZW51L21lbnUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXZDLE9BQU8sRUFBVyxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQTZCeEUsTUFBTSxPQUFPLFNBQVM7SUFFcEI7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQWtCLEVBQUUsU0FBbUI7UUFDbkQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksUUFBUSxDQUFDLEVBQUUsS0FBSyxTQUFTLEVBQUUsRUFBRSxDQUFDO2VBQzNELENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsSUFBSTttQkFDakMsUUFBUSxDQUFDLFVBQVUsS0FBSyxTQUFTLENBQUMsVUFBVTtnQkFDL0Msa0NBQWtDO2dCQUNsQyx1Q0FBdUM7bUJBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsVUFBVSxDQUFDLENBQ2hFLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsWUFBWSxDQUFDLFVBQW1DLEVBQUUsV0FBb0M7UUFDM0YsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVELG1DQUFtQztJQUNuQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQWM7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QU0sRUFBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQWM7UUFDMUIsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxJQUFZLEVBQUUsTUFBWTtRQUN2RCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEcsSUFBSSxZQUFZLENBQUMsV0FBVyxDQUFDO1lBQUUsT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2pELE9BQU8sR0FBRyxJQUFJLElBQUcsRUFBRSxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxXQUFXO0NBRXZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXNlclByb2ZpbGVMYWJlbCB9IGZyb20gJy4uL3NlcnZpY2VzL21vZGVsL3BlcnNvbi5tb2RlbCc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvY29uZmlnLm1vZGVsJztcbmltcG9ydCB7IEljb25SZWYgfSBmcm9tICcuLi8uLi9zaGFyZWQvdHlwZXMnO1xuaW1wb3J0IHsgaXNOaWxPckJsYW5rLCBpc05vdE5pbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNZW51UGF0aFBhcmFtIH0gZnJvbSAnLi9tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHsgQWNjb3VudCwgQWNjb3VudFV0aWxzIH0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvYWNjb3VudC5tb2RlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVudUl0ZW0gZXh0ZW5kcyBJY29uUmVmIHtcbiAgaWQ/OiBudW1iZXI7IC8vIEludGVybmFsIGlkIChzZXQgYnkgbWVudS1zZXJ2aWNlKVxuICB0aXRsZTogc3RyaW5nO1xuICBwYXRoPzogc3RyaW5nO1xuXG4gIC8vIEluamVjdGlvbiBwb2ludFxuICBhZnRlcj86IHN0cmluZztcbiAgYmVmb3JlPzogc3RyaW5nO1xuXG4gIGFjdGlvbj86IHN0cmluZyB8IGFueTtcbiAgcHJvZmlsZT86IFVzZXJQcm9maWxlTGFiZWw7XG4gIGV4YWN0UHJvZmlsZT86IFVzZXJQcm9maWxlTGFiZWw7XG4gIGNvbG9yPzogc3RyaW5nO1xuICBjc3NDbGFzcz86IHN0cmluZztcbiAgLy8gQSBjb25maWcgcHJvcGVydHksIHRvIGVuYWJsZSB0aGUgbWVudSBpdGVtXG4gIGlmUHJvcGVydHk/OiBzdHJpbmc7XG4gIC8vIEEgY29uZmlnIHByb3BlcnR5LCB0byBvdmVycmlkZSB0aGUgdGl0bGVcbiAgdGl0bGVQcm9wZXJ0eT86IHN0cmluZztcbiAgdGl0bGVBcmdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgcGF0aFBhcmFtcz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIHBhcmVudFBhdGg/OiBzdHJpbmc7XG4gIHBhcmVudFBhdGhQYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICBwaW5uZWQ/OiBib29sZWFuO1xuXG4gICRjaGlsZHJlbj86IEJlaGF2aW9yU3ViamVjdDxNZW51SXRlbVtdPjtcbn1cblxuZXhwb3J0IGNsYXNzIE1lbnVJdGVtcyB7XG5cbiAgLyoqXG4gICAqIENvbXBhcmUsIHdpdGhvdXQgY2hlY2tpbmcgdGhlIGNoaWxkcmVuXG4gICAqXG4gICAqIEBwYXJhbSBtYWluSXRlbVxuICAgKiBAcGFyYW0gb3RoZXJJdGVtXG4gICAqL1xuICBzdGF0aWMgaXNTYW1lKG1haW5JdGVtOiBNZW51SXRlbSwgb3RoZXJJdGVtOiBNZW51SXRlbSkge1xuICAgIHJldHVybiAoaXNOb3ROaWwobWFpbkl0ZW0/LmlkKSAmJiBtYWluSXRlbS5pZCA9PT0gb3RoZXJJdGVtPy5pZClcbiAgICAgIHx8IChtYWluSXRlbS5wYXRoID09PSBvdGhlckl0ZW0ucGF0aFxuICAgICAgJiYgbWFpbkl0ZW0ucGFyZW50UGF0aCA9PT0gb3RoZXJJdGVtLnBhcmVudFBhdGhcbiAgICAgIC8vIEZJWE1FOiBjaGVjayBpZiBjYW4gYmUgZGlzYWJsZWRcbiAgICAgIC8vJiYgbWFpbkl0ZW0udGl0bGUgPT09IG90aGVySXRlbS50aXRsZVxuICAgICAgJiYgdGhpcy5pc1NhbWVQYXJhbXMobWFpbkl0ZW0ucGF0aFBhcmFtcywgb3RoZXJJdGVtLnBhdGhQYXJhbXMpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGwga2V5L3ZhbHVlIG9mIHRoZSBtYWluUGFyYW1zIHNob3VsZCBleGlzdCAoYW5kIGJlIGVxdWFscykgaW4gdGhlIG90aGVyIHBhcmFtc1xuICAgKlxuICAgKiBAcGFyYW0gbWFpblBhcmFtc1xuICAgKiBAcGFyYW0gb3RoZXJQYXJhbXNcbiAgICovXG4gIHN0YXRpYyBpc1NhbWVQYXJhbXMobWFpblBhcmFtczoge1trZXk6IHN0cmluZ106IHN0cmluZ30sIG90aGVyUGFyYW1zOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSkge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhtYWluUGFyYW1zKS5ldmVyeSgoW2tleSwgdmFsdWVdKSA9PiB2YWx1ZSA9PT0gb3RoZXJQYXJhbXNba2V5XSk7XG4gIH1cblxuICAvLyBUT0RPIDogUmVwbGFjZSB0aGlzIGJ5IGEgY2xhc3MgP1xuICBzdGF0aWMgcHJlcGFyZUl0ZW0oaXRlbTogTWVudUl0ZW0pOiBNZW51SXRlbSB7XG4gICAgaXRlbSA9IDxNZW51SXRlbT57XG4gICAgICAkY2hpbGRyZW46IGl0ZW0uJGNoaWxkcmVuIHx8IG5ldyBCZWhhdmlvclN1YmplY3Q8TWVudUl0ZW1bXT4oW10pLFxuICAgICAgcGlubmVkOiBmYWxzZSxcbiAgICAgIC4uLml0ZW0sXG4gICAgfTtcblxuICAgIC8vIENsZWFuXG4gICAgaWYgKGl0ZW0ucGF0aCkge1xuICAgICAgY29uc3Qge3BhdGgsIHBhcmFtc30gPSBNZW51SXRlbXMucGFyc2VQYXRoV2l0aFF1ZXJ5KGl0ZW0ucGF0aCk7XG4gICAgICBpdGVtLnBhdGggPSBwYXRoO1xuICAgICAgaXRlbS5wYXRoUGFyYW1zID0gey4uLml0ZW0ucGF0aFBhcmFtcywgLi4ucGFyYW1zfTtcbiAgICB9XG4gICAgaWYgKGl0ZW0ucGFyZW50UGF0aCkge1xuICAgICAgY29uc3Qge3BhdGgsIHBhcmFtc30gPSBNZW51SXRlbXMucGFyc2VQYXRoV2l0aFF1ZXJ5KGl0ZW0ucGFyZW50UGF0aCk7XG4gICAgICBpdGVtLnBhcmVudFBhdGggPSBwYXRoO1xuICAgICAgaXRlbS5wYXJlbnRQYXRoUGFyYW1zID0gey4uLml0ZW0ucGFyZW50UGF0aFBhcmFtcywgLi4ucGFyYW1zfTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXRlbTtcbiAgfVxuXG4gIHN0YXRpYyBpc1BhcmVudChjaGlsZDogTWVudUl0ZW0sIHBhcmVudDogTWVudUl0ZW0gfCBNZW51UGF0aFBhcmFtKSB7XG4gICAgcmV0dXJuIGNoaWxkLnBhcmVudFBhdGggJiYgY2hpbGQucGFyZW50UGF0aCA9PT0gcGFyZW50Py5wYXRoXG4gICAgICAgICYmIHRoaXMuaXNTYW1lUGFyYW1zKGNoaWxkLnBhcmVudFBhdGhQYXJhbXMsIHBhcmVudFsncGF0aFBhcmFtcyddIHx8IHBhcmVudFsncGFyYW1zJ10pIHx8IGZhbHNlO1xuICB9XG5cbiAgc3RhdGljIGNoZWNrSWZWaXNpYmxlKGl0ZW06IE1lbnVJdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3VudDogQWNjb3VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZzogQ29uZmlndXJhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdHM/OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9naW4/OiBib29sZWFuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Zz86IGJvb2xlYW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ1ByZWZpeD86IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pOiBib29sZWFuIHtcbiAgICBvcHRzID0gb3B0cyB8fCB7fTtcbiAgICBpZiAoaXRlbS5wcm9maWxlKSB7XG4gICAgICBjb25zdCBoYXNQcm9maWxlID0gQWNjb3VudFV0aWxzLmhhc01pblByb2ZpbGUoYWNjb3VudCwgaXRlbS5wcm9maWxlKTtcbiAgICAgIGlmICghaGFzUHJvZmlsZSkge1xuICAgICAgICBpZiAob3B0cy5kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHtvcHRzICYmIG9wdHMubG9nUHJlZml4IHx8ICdbbWVudS1zZXJ2aWNlXSd9IEhpZGUgaXRlbSAnJHtpdGVtLnRpdGxlfSc6IG5lZWQgdGhlIG1pbiBwcm9maWxlICcke2l0ZW0ucHJvZmlsZX0nIHRvIGFjY2VzcyBwYXRoICcke2l0ZW0ucGF0aH0nYCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBlbHNlIGlmIChpdGVtLmV4YWN0UHJvZmlsZSkge1xuICAgICAgY29uc3QgaGFzRXhhY3RQcm9maWxlID0gQWNjb3VudFV0aWxzLmhhc0V4YWN0UHJvZmlsZShhY2NvdW50LCBpdGVtLmV4YWN0UHJvZmlsZSk7XG4gICAgICBpZiAoIWhhc0V4YWN0UHJvZmlsZSkge1xuICAgICAgICBpZiAob3B0cy5kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHtvcHRzICYmIG9wdHMubG9nUHJlZml4IHx8ICdbbWVudS1zZXJ2aWNlXSd9IEhpZGUgaXRlbSAnJHtpdGVtLnRpdGxlfSc6IG5lZWQgZXhhY3QgcHJvZmlsZSAnJHtpdGVtLmV4YWN0UHJvZmlsZX0nIHRvIGFjY2VzcyBwYXRoICcke2l0ZW0ucGF0aH0nYCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiBlbmFibGUgYnkgY29uZmlnXG4gICAgaWYgKGl0ZW0uaWZQcm9wZXJ0eSkge1xuICAgICAgLy9jb25zb2xlLmRlYnVnKFwiW21lbnVdIENoZWNraW5nIGlmIHByb3BlcnR5IGVuYWJsZSA/IFwiICsgaXRlbS5pZlByb3BlcnR5LCBjb25maWcgJiYgY29uZmlnLnByb3BlcnRpZXMpO1xuICAgICAgY29uc3QgaXNFbmFibGVCeUNvbmZpZyA9IGNvbmZpZyAmJiBjb25maWcucHJvcGVydGllc1tpdGVtLmlmUHJvcGVydHldID09PSAndHJ1ZSc7XG4gICAgICBpZiAoIWlzRW5hYmxlQnlDb25maWcpIHtcbiAgICAgICAgaWYgKG9wdHMuZGVidWcpIGNvbnNvbGUuZGVidWcoJ1ttZW51LXNlcnZpY2VdIENvbmZpZyBwcm9wZXJ0eSBcXCcnICsgaXRlbS5pZlByb3BlcnR5ICsgJ1xcJyBub3QgXFwndHJ1ZVxcJyBmb3IgJywgaXRlbS5wYXRoKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgc3RhdGljIGlzUGlubmVkKGl0ZW06IE1lbnVJdGVtKSB7XG4gICAgaWYgKGl0ZW0/LnBpbm5lZCkgcmV0dXJuIHRydWU7XG4gICAgaWYgKCFpdGVtPy4kY2hpbGRyZW4gfHwgaXRlbS4kY2hpbGRyZW4udmFsdWUubGVuZ3RoIDwgMSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBpdGVtLiRjaGlsZHJlbi52YWx1ZS5zb21lKGkgPT4gTWVudUl0ZW1zLmlzUGlubmVkKGkpKTtcbiAgfVxuXG4gIHN0YXRpYyBwYXJzZVBhdGhXaXRoUXVlcnkocGF0aFdpdGhRdWVyeTogc3RyaW5nKTogTWVudVBhdGhQYXJhbSB7XG4gICAgY29uc3QgaW5kZXggPSBwYXRoV2l0aFF1ZXJ5Lmxhc3RJbmRleE9mKCc/Jyk7XG4gICAgaWYgKGluZGV4IDwgMCkgcmV0dXJuIHtwYXRoOiBwYXRoV2l0aFF1ZXJ5LCBwYXJhbXM6IHt9fTtcbiAgICBjb25zdCBwYXRoID0gcGF0aFdpdGhRdWVyeS5zdWJzdHJpbmcoMCwgaW5kZXgpO1xuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gcGF0aFdpdGhRdWVyeS5zdWJzdHJpbmcoaW5kZXgpO1xuICAgIGNvbnN0IHBhcmFtcyA9IE9iamVjdC5mcm9tRW50cmllcyhuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5U3RyaW5nKSk7XG4gICAgcmV0dXJuIHtwYXRoLCBwYXJhbXN9O1xuICB9XG5cbiAgc3RhdGljIGdldFVybChpdGVtOiBNZW51SXRlbSkge1xuICAgIHJldHVybiB0aGlzLmdldFVybEZyb21QYXRoQW5kUGFyYW1zKGl0ZW0/LnBhdGgsIGl0ZW0/LnBhdGhQYXJhbXMpO1xuICB9XG5cbiAgc3RhdGljIGdldFVybEZyb21QYXRoQW5kUGFyYW1zKHBhdGg6IHN0cmluZywgcGFyYW1zPzogYW55KSB7XG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSBPYmplY3QuZW50cmllcyhwYXJhbXMgfHwge30pLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgJHtrZXl9PSR7dmFsdWV9YCkuam9pbignJicpO1xuICAgIGlmIChpc05pbE9yQmxhbmsocXVlcnlTdHJpbmcpKSByZXR1cm4gcGF0aCB8fCAnJztcbiAgICByZXR1cm4gYCR7cGF0aCB8fCcnfT8ke3F1ZXJ5U3RyaW5nfWA7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1lbnVPcHRpb25zIHtcbiAgLy8gVE9ETyBhZGQgb3B0aW9ucywgd2hlbiBuZWVkIHNwZWNpZmljIGJlaGF2aW9yIG9uIHByb2plY3RzXG59XG4iXX0=
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9tZW51L21lbnUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUdBLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2QyxPQUFPLEVBQVcsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUErQnhFLE1BQU0sT0FBTyxRQUFRO0lBQXJCO1FBS0UsY0FBUyxHQUFFLElBQUksZUFBZSxDQUFhLEVBQUUsQ0FBQyxDQUFDO1FBRS9DLFdBQU0sR0FBRSxJQUFJLGVBQWUsQ0FBUyxTQUFTLENBQUMsQ0FBQztJQW9IakQsQ0FBQztJQXpGQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQVc7UUFDM0IsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPLElBQUksQ0FBQztRQUN6QixJQUFJLE1BQU0sWUFBWSxRQUFRO1lBQUUsT0FBTyxNQUFNLENBQUM7UUFDOUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUM5QixNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxVQUFVLENBQUMsTUFBVztRQUVwQixJQUFJLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFFcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQztRQUMxQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFFbEMsYUFBYTtRQUNiLElBQUksTUFBTSxD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TSxPQUFPLFdBQVc7Q0FHdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVc2VyUHJvZmlsZUxhYmVsIH0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvcGVyc29uLm1vZGVsJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9zZXJ2aWNlcy9tb2RlbC9jb25maWcubW9kZWwnO1xuaW1wb3J0IHsgQXBwQ29sb3JzLCBJY29uUmVmIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3R5cGVzJztcbmltcG9ydCB7IGlzTmlsT3JCbGFuaywgaXNOb3ROaWwsIGlzTm90TmlsT3JCbGFuaywgdG9Cb29sZWFuLCB0b0ludCB9IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNZW51UGF0aFBhcmFtIH0gZnJvbSAnLi9tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHsgQWNjb3VudCwgQWNjb3VudFV0aWxzIH0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvYWNjb3VudC5tb2RlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1lbnVJdGVtIGV4dGVuZHMgSWNvblJlZiB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHBhdGg/OiBzdHJpbmc7XG5cbiAgLy8gSW5qZWN0aW9uIHBvaW50XG4gIGFmdGVyPzogc3RyaW5nO1xuICBiZWZvcmU/OiBzdHJpbmc7XG5cbiAgYWN0aW9uPzogc3RyaW5nIHwgYW55O1xuICBwcm9maWxlPzogVXNlclByb2ZpbGVMYWJlbDtcbiAgZXhhY3RQcm9maWxlPzogVXNlclByb2ZpbGVMYWJlbDtcbiAgY29sb3I/OiBzdHJpbmcgfCBBcHBDb2xvcnM7XG4gIGNzc0NsYXNzPzogc3RyaW5nO1xuICAvLyBBIGNvbmZpZyBwcm9wZXJ0eSwgdG8gZW5hYmxlIHRoZSBtZW51IGl0ZW1cbiAgaWZQcm9wZXJ0eT86IHN0cmluZztcbiAgLy8gQSBjb25maWcgcHJvcGVydHksIHRvIG92ZXJyaWRlIHRoZSB0aXRsZVxuICB0aXRsZVByb3BlcnR5Pzogc3RyaW5nO1xuICB0aXRsZUFyZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICBwYXRoUGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgcGFyZW50UGF0aD86IHN0cmluZztcbiAgcGFyZW50UGF0aFBhcmFtcz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIHBpbm5lZD86IGJvb2xlYW47XG5cbiAgLy8gSW50ZXJuYWwgQVBJXG4gIGlkPzogbnVtYmVyO1xuICBwYXJlbnQ/OiBJTWVudUl0ZW07XG4gIGNoaWxkcmVuPzogSU1lbnVJdGVtW107XG59XG5cbmV4cG9ydCBjbGFzcyBNZW51SXRlbSBpbXBsZW1lbnRzIElNZW51SXRlbSB7XG5cbiAgLy8gSW50ZXJuYWwgQVBJXG4gIGlkPzogbnVtYmVyO1xuICBwYXJlbnQ/OiBNZW51SXRlbTtcbiAgJGNoaWxkcmVuPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1lbnVJdGVtW10+KFtdKTtcblxuICAkdGl0bGU9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPih1bmRlZmluZWQpO1xuICB0aXRsZVByb3BlcnR5Pzogc3RyaW5nOyAvLyBBIGNvbmZpZyBwcm9wZXJ0eSwgdG8gb3ZlcnJpZGUgdGhlIHRpdGxlXG4gIHRpdGxlQXJncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgcGF0aD86IHN0cmluZztcbiAgcGF0aFBhcmFtcz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIHBhcmVudFBhdGg/OiBzdHJpbmc7XG4gIHBhcmVudFBhdGhQYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8vIEluamVjdGlvbiBwb2ludFxuICBhZnRlcj86IHN0cmluZztcbiAgYmVmb3JlPzogc3RyaW5nO1xuXG4gIGFjdGlvbj86IHN0cmluZyB8IGFueTtcbiAgcHJvZmlsZT86IFVzZXJQcm9maWxlTGFiZWw7XG4gIGV4YWN0UHJvZmlsZT86IFVzZXJQcm9maWxlTGFiZWw7XG4gIGNvbG9yPzogc3RyaW5nfEFwcENvbG9ycztcbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XG4gIC8vIEEgY29uZmlnIHByb3BlcnR5LCB0byBlbmFibGUgdGhlIG1lbnUgaXRlbVxuICBpZlByb3BlcnR5Pzogc3RyaW5nO1xuICBwaW5uZWQ/OiBib29sZWFuO1xuXG4gIC8vIEljb25cbiAgaWNvbj86IHN0cmluZztcbiAgbWF0SWNvbj86IHN0cmluZztcbiAgbWF0U3ZnSWNvbj86IHN0cmluZztcblxuICBzdGF0aWMgZnJvbU9iamVjdChzb3VyY2U6IGFueSk6IE1lbnVJdGVtIHtcbiAgICBpZiAoIXNvdXJjZSkgcmV0dXJuIG51bGw7XG4gICAgaWYgKHNvdXJjZSBpbnN0YW5jZW9mIE1lbnVJdGVtKSByZXR1cm4gc291cmNlO1xuICAgIGNvbnN0IHRhcmdldCA9IG5ldyBNZW51SXRlbSgpO1xuICAgIHRhcmdldC5mcm9tT2JqZWN0KHNvdXJjZSk7XG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIGZyb21PYmplY3Qoc291cmNlOiBhbnkpIHtcblxuICAgIHRoaXMuaWQgPSBzb3VyY2UuaWQ7XG5cbiAgICB0aGlzLnRpdGxlID0gc291cmNlLnRpdGxlO1xuICAgIHRoaXMudGl0bGVQcm9wZXJ0eSA9IHNvdXJjZS50aXRsZVByb3BlcnR5O1xuICAgIHRoaXMudGl0bGVBcmdzID0gc291cmNlLnRpdGxlQXJncztcblxuICAgIC8vIENsZWFuIHBhdGhcbiAgICBpZiAoc291cmNlLnBhdGgpIHtcbiAgICAgIGNvbnN0IHtwYXRoLCBwYXJhbXN9ID0gTWVudUl0ZW1zLnBhcnNlUGF0aFdpdGhRdWVyeShzb3VyY2UucGF0aCk7XG4gICAgICB0aGlzLnBhdGggPSBwYXRoO1xuICAgICAgdGhpcy5wYXRoUGFyYW1zID0gey4uLnNvdXJjZS5wYXRoUGFyYW1zLCAuLi5wYXJhbXN9O1xuICAgIH1cbiAgICAvLyBDbGVhbiBwYXJlbnQgcGF0aFxuICAgIGlmIChzb3VyY2UucGFyZW50UGF0aCkge1xuICAgICAgY29uc3Qge3BhdGgsIHBhcmFtc30gPSBNZW51SXRlbXMucGFyc2VQYXRoV2l0aFF1ZXJ5KHNvdXJjZS5wYXJlbnRQYXRoKTtcbiAgICAgIHRoaXMucGFyZW50UGF0aCA9IHBhdGg7XG4gICAgICB0aGlzLnBhcmVudFBhdGhQYXJhbXMgPSB7Li4uc291cmNlLnBhcmVudFBhdGhQYXJhbXMsIC4uLnBhcmFtc307XG4gICAgfVxuXG4gICAgdGhpcy5hZnRlciA9IHNvdXJjZS5hZnRlcjtcbiAgICB0aGlzLmJlZm9yZSA9IHNvdXJjZS5iZWZvcmU7XG5cbiAgICB0aGlzLmFjdGlvbiA9IHNvdXJjZS5hY3Rpb247XG4gICAgdGhpcy5wcm9maWxlID0gc291cmNlLnByb2ZpbGU7XG4gICAgdGhpcy5leGFjdFByb2ZpbGUgPSBzb3VyY2UuZXhhY3RQcm9maWxlO1xuICAgIHRoaXMuY29sb3IgPSBzb3VyY2UuY29sb3I7XG4gICAgdGhpcy5jc3NDbGFzcyA9IHNvdXJjZS5jc3NDbGFzcztcbiAgICB0aGlzLmlmUHJvcGVydHkgPSBzb3VyY2UuaWZQcm9wZXJ0eTtcbiAgICB0aGlzLnBpbm5lZCA9IHRvQm9vbGVhbihzb3VyY2UucGlubmVkLCBmYWxzZSk7XG5cbiAgICAvLyBJY29uXG4gICAgdGhpcy5pY29uID0gc291cmNlLmljb247XG4gICAgdGhpcy5tYXRJY29uID0gc291cmNlLm1hdEljb247XG4gICAgdGhpcy5tYXRTdmdJY29uID0gc291cmNlLm1hdFN2Z0ljb247XG5cbiAgICB0aGlzLmNoaWxkcmVuID0gKHNvdXJjZS5jaGlsZHJlbiB8fCBbXSkubWFwKE1lbnVJdGVtLmZyb21PYmplY3QpIHx8IFtdO1xuICB9XG5cbiAgYXNPYmplY3QoKTogYW55IHtcbiAgICBjb25zdCB0YXJnZXQgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzKTtcbiAgICBkZWxldGUgdGFyZ2V0LiRjaGlsZHJlbjtcblxuICAgIHRhcmdldC5jaGlsZHJlbiA9ICh0aGlzLmNoaWxkcmVuIHx8IFtdKS5tYXAoYyA9PiBjLmFzT2JqZWN0KCkpO1xuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIC8vIGFkZENoaWxkKGNoaWxkOiBNZW51SXRlbSkge1xuICAvLyAgIHRoaXMuJGNoaWxkcmVuLm5leHQodGhpcy4kY2hpbGRyZW4udmFsdWUpXG4gIC8vIH1cblxuICBnZXQgY2hpbGRyZW4oKTogTWVudUl0ZW1bXSB7XG4gICAgcmV0dXJuIHRoaXMuJGNoaWxkcmVuLnZhbHVlO1xuICB9XG4gIHNldCBjaGlsZHJlbih2YWx1ZTogTWVudUl0ZW1bXSkge1xuICAgIHRoaXMuJGNoaWxkcmVuLm5leHQodmFsdWUpO1xuICB9XG5cbiAgZ2V0IHRpdGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuJHRpdGxlLnZhbHVlO1xuICB9XG4gIHNldCB0aXRsZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMucGlubmVkKSB7XG4gICAgICAvLyBJZiBsb2FkaW5nLCBrZWVwIGV4aXN0aW5nIHRpdGxlIGlmIHBpbm5lZCAoYXZvaWQgdG8gc2hvdyBza2VsZXRvbilcbiAgICAgIGlmIChpc05vdE5pbE9yQmxhbmsodmFsdWUpKSB0aGlzLiR0aXRsZS5uZXh0KHZhbHVlKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNOb3ROaWwodmFsdWUpKSB7XG4gICAgICB0aGlzLiR0aXRsZS5uZXh0KHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBnZXQgZGV0YWNoZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnBhcmVudFBhdGggfHwgIXRoaXMucGFyZW50O1xuICB9XG5cbiAgaXNQaW5uZWQoKSB7XG4gICAgaWYgKHRoaXMucGlubmVkKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gKHRoaXMuY2hpbGRyZW4gfHwgW10pLnNvbWUoY2hpbGQgPT4gY2hpbGQuaXNQaW5uZWQoKSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1lbnVJdGVtcyB7XG5cbiAgLyoqXG4gICAqIENvbXBhcmUsIHdpdGhvdXQgY2hlY2tpbmcgdGhlIGNoaWxkcmVuXG4gICAqXG4gICAqIEBwYXJhbSBtYWluSXRlbVxuICAgKiBAcGFyYW0gb3RoZXJJdGVtXG4gICAqL1xuICBzdGF0aWMgaXNTYW1lKG1haW5JdGVtOiBJTWVudUl0ZW0sIG90aGVySXRlbTogSU1lbnVJdGVtKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNTYW1lSWRPclBhdGhBbmRQYXJhbXMobWFpbkl0ZW0sIG90aGVySXRlbSlcbiAgICAgICYmIG1haW5JdGVtLnRpdGxlID09PSBvdGhlckl0ZW0udGl0bGU7XG4gIH1cblxuICAvKipcbiAgICogQ29tcGFyZSwgd2l0aG91dCBjaGVja2luZyB0aGUgY2hpbGRyZW4gYW5kIHRoZSB0aXRsZVxuICAgKlxuICAgKiBAcGFyYW0gbWFpbkl0ZW1cbiAgICogQHBhcmFtIG90aGVySXRlbVxuICAgKi9cbiAgc3RhdGljIGlzU2FtZUlkT3JQYXRoQW5kUGFyYW1zKG1haW5JdGVtOiBJTWVudUl0ZW0sIG90aGVySXRlbTogSU1lbnVJdGVtKSB7XG4gICAgcmV0dXJuIChpc05vdE5pbChtYWluSXRlbT8uaWQpICYmIG1haW5JdGVtLmlkID09PSBvdGhlckl0ZW0/LmlkKVxuICAgICAgfHwgdGhpcy5pc1NhbWVQYXRoQW5kUGFyYW1zKG1haW5JdGVtLCBvdGhlckl0ZW0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXBhcmUsIHdpdGhvdXQgY2hlY2tpbmcgdGhlIGNoaWxkcmVuXG4gICAqXG4gICAqIEBwYXJhbSBtYWluSXRlbVxuICAgKiBAcGFyYW0gb3RoZXJJdGVtXG4gICAqL1xuICBzdGF0aWMgaXNTYW1lUGF0aEFuZFBhcmFtcyhtYWluSXRlbTogSU1lbnVJdGVtLCBvdGhlckl0ZW06IElNZW51SXRlbSkge1xuICAgIHJldHVybiBtYWluSXRlbSAmJiBtYWluSXRlbS5wYXRoID09PSBvdGhlckl0ZW0/LnBhdGhcbiAgICAgICYmIG1haW5JdGVtLnBhcmVudFBhdGggPT09IG90aGVySXRlbS5wYXJlbnRQYXRoXG4gICAgICAmJiB0aGlzLmlzU2FtZVBhcmFtcyhtYWluSXRlbS5wYXRoUGFyYW1zLCBvdGhlckl0ZW0ucGF0aFBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICogQWxsIGtleS92YWx1ZSBvZiB0aGUgbWFpblBhcmFtcyBzaG91bGQgZXhpc3QgKGFuZCBiZSBlcXVhbHMpIGluIHRoZSBvdGhlciBwYXJhbXNcbiAgICpcbiAgICogQHBhcmFtIG1haW5QYXJhbXNcbiAgICogQHBhcmFtIG90aGVyUGFyYW1zXG4gICAqL1xuICBzdGF0aWMgaXNTYW1lUGFyYW1zKG1haW5QYXJhbXM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9LCBvdGhlclBhcmFtczoge1trZXk6IHN0cmluZ106IHN0cmluZ30pIHtcbiAgICBjb25zdCBtYWluRW50cmllcyA9IE9iamVjdC5lbnRyaWVzKG1haW5QYXJhbXMpO1xuICAgIGNvbnN0IG90aGVyRW50cmllcyA9IE9iamVjdC5lbnRyaWVzKG90aGVyUGFyYW1zKTtcbiAgICAvLyBUT0RPOiBlc3QtY2UgcXVlIHVuIGl0ZW0gbmUgcG91cnJhaXQgcGFzIGF2b2lyIHBsdXMgZGUgcGFyYW1zIGRhbnMgbCdpdGVtIGV4aXN0YW50ID9cbiAgICByZXR1cm4gKG1haW5FbnRyaWVzLmxlbmd0aCA9PT0gb3RoZXJFbnRyaWVzLmxlbmd0aCkgJiYgbWFpbkVudHJpZXMuZXZlcnkoKFtrZXksIHZhbHVlXSkgPT4gdmFsdWUgPT09IG90aGVyUGFyYW1zW2tleV0pO1xuICB9XG5cbiAgc3RhdGljIGlzUGFyZW50KGNoaWxkOiBJTWVudUl0ZW0sIHBhcmVudDogSU1lbnVJdGVtIHwgTWVudVBhdGhQYXJhbSkge1xuICAgIHJldHVybiBjaGlsZC5wYXJlbnRQYXRoICYmIGNoaWxkLnBhcmVudFBhdGggPT09IHBhcmVudD8ucGF0aFxuICAgICAgICAmJiB0aGlzLmlzU2FtZVBhcmFtcyhjaGlsZC5wYXJlbnRQYXRoUGFyYW1zLCBwYXJlbnRbJ3BhdGhQYXJhbXMnXSB8fCBwYXJlbnRbJ3BhcmFtcyddKSB8fCBmYWxzZTtcbiAgfVxuXG4gIHN0YXRpYyBjaGVja0lmVmlzaWJsZShpdGVtOiBJTWVudUl0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBhY2NvdW50OiBBY2NvdW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnOiBDb25maWd1cmF0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0cz86IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2dpbj86IGJvb2xlYW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnPzogYm9vbGVhbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nUHJlZml4Pzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk6IGJvb2xlYW4ge1xuICAgIG9wdHMgPSBvcHRzIHx8IHt9O1xuICAgIGlmIChpdGVtLnByb2ZpbGUpIHtcbiAgICAgIGNvbnN0IGhhc1Byb2ZpbGUgPSBBY2NvdW50VXRpbHMuaGFzTWluUHJvZmlsZShhY2NvdW50LCBpdGVtLnByb2ZpbGUpO1xuICAgICAgaWYgKCFoYXNQcm9maWxlKSB7XG4gICAgICAgIGlmIChvcHRzLmRlYnVnKSBjb25zb2xlLmRlYnVnKGAke29wdHMgJiYgb3B0cy5sb2dQcmVmaXggfHwgJ1ttZW51LXNlcnZpY2VdJ30gSGlkZSBpdGVtICcke2l0ZW0udGl0bGV9JzogbmVlZCB0aGUgbWluIHByb2ZpbGUgJyR7aXRlbS5wcm9maWxlfScgdG8gYWNjZXNzIHBhdGggJyR7aXRlbS5wYXRofSdgKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGVsc2UgaWYgKGl0ZW0uZXhhY3RQcm9maWxlKSB7XG4gICAgICBjb25zdCBoYXNFeGFjdFByb2ZpbGUgPSBBY2NvdW50VXRpbHMuaGFzRXhhY3RQcm9maWxlKGFjY291bnQsIGl0ZW0uZXhhY3RQcm9maWxlKTtcbiAgICAgIGlmICghaGFzRXhhY3RQcm9maWxlKSB7XG4gICAgICAgIGlmIChvcHRzLmRlYnVnKSBjb25zb2xlLmRlYnVnKGAke29wdHMgJiYgb3B0cy5sb2dQcmVmaXggfHwgJ1ttZW51LXNlcnZpY2VdJ30gSGlkZSBpdGVtICcke2l0ZW0udGl0bGV9JzogbmVlZCBleGFjdCBwcm9maWxlICcke2l0ZW0uZXhhY3RQcm9maWxlfScgdG8gYWNjZXNzIHBhdGggJyR7aXRlbS5wYXRofSdgKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIGVuYWJsZSBieSBjb25maWdcbiAgICBpZiAoaXRlbS5pZlByb3BlcnR5KSB7XG4gICAgICAvL2NvbnNvbGUuZGVidWcoXCJbbWVudV0gQ2hlY2tpbmcgaWYgcHJvcGVydHkgZW5hYmxlID8gXCIgKyBpdGVtLmlmUHJvcGVydHksIGNvbmZpZyAmJiBjb25maWcucHJvcGVydGllcyk7XG4gICAgICBjb25zdCBpc0VuYWJsZUJ5Q29uZmlnID0gY29uZmlnICYmIGNvbmZpZy5wcm9wZXJ0aWVzW2l0ZW0uaWZQcm9wZXJ0eV0gPT09ICd0cnVlJztcbiAgICAgIGlmICghaXNFbmFibGVCeUNvbmZpZykge1xuICAgICAgICBpZiAob3B0cy5kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW21lbnUtc2VydmljZV0gQ29uZmlnIHByb3BlcnR5IFxcJycgKyBpdGVtLmlmUHJvcGVydHkgKyAnXFwnIG5vdCBcXCd0cnVlXFwnIGZvciAnLCBpdGVtLnBhdGgpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBzdGF0aWMgY2hlY2tJZlN1Yk1lbnVWaXNpYmxlKGl0ZW06IE1lbnVJdGVtLCBjdXJyZW50UGF0aFBhcmFtOiBNZW51UGF0aFBhcmFtKSB7XG4gICAgaWYgKCFpdGVtLnBhcmVudFBhdGgpIHJldHVybiBmYWxzZTsgLy8gU2hvdWxkIGhhdmUgYSBwYXJlbnRcblxuICAgIGlmIChpdGVtLmlzUGlubmVkKCkpIHJldHVybiB0cnVlOyAvLyBBbHdheXMga2VlcCBwaW5uZWQgaXRlbXNcblxuICAgIC8vIEtlZXAgZWFjaCBtZW51IGl0ZW1zIGluIHRoZSBzY29wZSBvZiB0aGUgY3VycmVudCB1cmwgcGF0aFxuICAgIGlmIChjdXJyZW50UGF0aFBhcmFtPy5wYXRoLnN0YXJ0c1dpdGgoaXRlbS5wYXRoKSkgcmV0dXJuIHRydWU7XG5cbiAgICAvLyBOb3QgdmlzaWJsZVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0YXRpYyBwYXJzZVBhdGhXaXRoUXVlcnkocGF0aFdpdGhRdWVyeTogc3RyaW5nKTogTWVudVBhdGhQYXJhbSB7XG4gICAgY29uc3QgaW5kZXggPSBwYXRoV2l0aFF1ZXJ5Lmxhc3RJbmRleE9mKCc/Jyk7XG4gICAgaWYgKGluZGV4IDwgMCkgcmV0dXJuIHtwYXRoOiBwYXRoV2l0aFF1ZXJ5LCBwYXJhbXM6IHt9fTtcbiAgICBjb25zdCBwYXRoID0gcGF0aFdpdGhRdWVyeS5zdWJzdHJpbmcoMCwgaW5kZXgpO1xuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gcGF0aFdpdGhRdWVyeS5zdWJzdHJpbmcoaW5kZXgpO1xuICAgIGNvbnN0IHBhcmFtcyA9IE9iamVjdC5mcm9tRW50cmllcyhuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5U3RyaW5nKSk7XG4gICAgcmV0dXJuIHtwYXRoLCBwYXJhbXN9O1xuICB9XG5cbiAgc3RhdGljIGdldFVybChpdGVtOiBJTWVudUl0ZW0pIHtcbiAgICByZXR1cm4gdGhpcy5nZXRVcmxGcm9tUGF0aEFuZFBhcmFtcyhpdGVtPy5wYXRoLCBpdGVtPy5wYXRoUGFyYW1zKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRVcmxGcm9tUGF0aEFuZFBhcmFtcyhwYXRoOiBzdHJpbmcsIHBhcmFtcz86IGFueSkge1xuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gT2JqZWN0LmVudHJpZXMocGFyYW1zIHx8IHt9KS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYCR7a2V5fT0ke3ZhbHVlfWApLmpvaW4oJyYnKTtcbiAgICBpZiAoaXNOaWxPckJsYW5rKHF1ZXJ5U3RyaW5nKSkgcmV0dXJuIHBhdGggfHwgJyc7XG4gICAgcmV0dXJuIGAke3BhdGggfHwnJ30/JHtxdWVyeVN0cmluZ31gO1xuICB9XG5cbiAgc3RhdGljIHNvcnRCeVBhcmFtT3JJZENvbXBhcmF0b3IocGFyYW1OYW1lPzogc3RyaW5nKTogKG4xOiBJTWVudUl0ZW0sIG4yOiBJTWVudUl0ZW0pID0+IG51bWJlciB7XG4gICAgcGFyYW1OYW1lID0gcGFyYW1OYW1lIHx8ICd0YWInO1xuICAgIHJldHVybiAobjE6IElNZW51SXRlbSwgbjI6IElNZW51SXRlbSkgPT4ge1xuICAgICAgY29uc3QgZDEgPSB0b0ludChuMS5wYXRoUGFyYW1zPy5bcGFyYW1OYW1lXSwgbjEuaWQpO1xuICAgICAgY29uc3QgZDIgPSB0b0ludChuMi5wYXRoUGFyYW1zPy5bcGFyYW1OYW1lXSwgbjIuaWQpO1xuICAgICAgcmV0dXJuIGQxID09PSBkMiA/IDAgOiBkMSA+IGQyID8gMSA6IC0xO1xuICAgIH07XG4gIH1cblxuICBzdGF0aWMgc29ydEJ5VGFiT3JJZCA9IHRoaXMuc29ydEJ5UGFyYW1PcklkQ29tcGFyYXRvcigndGFiJyk7XG59XG5cbmV4cG9ydCBjbGFzcyBNZW51T3B0aW9ucyB7XG4gIC8vIFRPRE8gYWRkIG9wdGlvbnMsIHdoZW4gbmVlZCBzcGVjaWZpYyBiZWhhdmlvciBvbiBwcm9qZWN0c1xuICBlbmFibGVTdWJNZW51cz86IGJvb2xlYW47IC8vIFRydWUgYnkgZGVmYXVsdFxufVxuIl19
@@ -5,6 +5,8 @@ import { TranslateModule } from '@ngx-translate/core';
5
5
  import { RouterModule } from '@angular/router';
6
6
  import { ForModule } from '@rx-angular/template/for';
7
7
  import { SubMenuTabDirective } from './sub-menu-tab.directive';
8
+ import { IfModule } from '@rx-angular/template/if';
9
+ import { LetModule } from '@rx-angular/template/let';
8
10
  import * as i0 from "@angular/core";
9
11
  import * as i1 from "@ngx-translate/core";
10
12
  export class AppMenuModule {
@@ -14,20 +16,28 @@ AppMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version:
14
16
  // Components
15
17
  MenuComponent,
16
18
  // Directive
17
- SubMenuTabDirective], imports: [SharedModule, RouterModule, ForModule, i1.TranslateModule], exports: [
19
+ SubMenuTabDirective], imports: [SharedModule, RouterModule,
20
+ // Rx angular
21
+ ForModule, IfModule, LetModule, i1.TranslateModule], exports: [
18
22
  // Modules
19
23
  TranslateModule,
20
24
  // Components
21
25
  MenuComponent,
22
26
  // Directive
23
27
  SubMenuTabDirective] });
24
- AppMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AppMenuModule, imports: [SharedModule, RouterModule, ForModule, TranslateModule.forChild(),
28
+ AppMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AppMenuModule, imports: [SharedModule, RouterModule,
29
+ // Rx angular
30
+ ForModule, IfModule, LetModule,
31
+ TranslateModule.forChild(),
25
32
  // Modules
26
33
  TranslateModule] });
27
34
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AppMenuModule, decorators: [{
28
35
  type: NgModule,
29
36
  args: [{
30
- imports: [SharedModule, RouterModule, ForModule, TranslateModule.forChild()],
37
+ imports: [SharedModule, RouterModule,
38
+ // Rx angular
39
+ ForModule, IfModule, LetModule,
40
+ TranslateModule.forChild()],
31
41
  declarations: [
32
42
  // Components
33
43
  MenuComponent,
@@ -44,4 +54,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
44
54
  ],
45
55
  }]
46
56
  }] });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvbWVudS9tZW51Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7OztBQW9CN0QsTUFBTSxPQUFPLGFBQWE7OzBHQUFiLGFBQWE7MkdBQWIsYUFBYTtRQWR0QixhQUFhO1FBQ2IsYUFBYTtRQUNiLFlBQVk7UUFDWixtQkFBbUIsYUFOWCxZQUFZLEVBQUUsWUFBWSxFQUFFLFNBQVM7UUFTN0MsVUFBVTtRQUNWLGVBQWU7UUFDZixhQUFhO1FBQ2IsYUFBYTtRQUNiLFlBQVk7UUFDWixtQkFBbUI7MkdBR1YsYUFBYSxZQWpCZCxZQUFZLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxlQUFlLENBQUMsUUFBUSxFQUFFO1FBU3pFLFVBQVU7UUFDVixlQUFlOzJGQU9OLGFBQWE7a0JBbEJ6QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFFNUUsWUFBWSxFQUFFO3dCQUNaLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixZQUFZO3dCQUNaLG1CQUFtQjtxQkFDcEI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFVBQVU7d0JBQ1YsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsWUFBWTt3QkFDWixtQkFBbUI7cUJBQ3BCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNoYXJlZE1vZHVsZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zaGFyZWQubW9kdWxlJztcbmltcG9ydCB7IE1lbnVDb21wb25lbnQgfSBmcm9tICcuL21lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEZvck1vZHVsZSB9IGZyb20gJ0ByeC1hbmd1bGFyL3RlbXBsYXRlL2Zvcic7XG5pbXBvcnQge1N1Yk1lbnVUYWJEaXJlY3RpdmV9IGZyb20gJy4vc3ViLW1lbnUtdGFiLmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtTaGFyZWRNb2R1bGUsIFJvdXRlck1vZHVsZSwgRm9yTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUuZm9yQ2hpbGQoKV0sXG5cbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgLy8gQ29tcG9uZW50c1xuICAgIE1lbnVDb21wb25lbnQsXG4gICAgLy8gRGlyZWN0aXZlXG4gICAgU3ViTWVudVRhYkRpcmVjdGl2ZSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIC8vIE1vZHVsZXNcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgLy8gQ29tcG9uZW50c1xuICAgIE1lbnVDb21wb25lbnQsXG4gICAgLy8gRGlyZWN0aXZlXG4gICAgU3ViTWVudVRhYkRpcmVjdGl2ZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQXBwTWVudU1vZHVsZSB7fVxuIl19
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvbWVudS9tZW51Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ2pELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQzs7O0FBd0JuRCxNQUFNLE9BQU8sYUFBYTs7MEdBQWIsYUFBYTsyR0FBYixhQUFhO1FBZHRCLGFBQWE7UUFDYixhQUFhO1FBQ2IsWUFBWTtRQUNaLG1CQUFtQixhQVZYLFlBQVksRUFBRSxZQUFZO1FBQ2xDLGFBQWE7UUFDYixTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVM7UUFXOUIsVUFBVTtRQUNWLGVBQWU7UUFDZixhQUFhO1FBQ2IsYUFBYTtRQUNiLFlBQVk7UUFDWixtQkFBbUI7MkdBR1YsYUFBYSxZQXJCZCxZQUFZLEVBQUUsWUFBWTtRQUNsQyxhQUFhO1FBQ2IsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTO1FBRTlCLGVBQWUsQ0FBQyxRQUFRLEVBQUU7UUFTMUIsVUFBVTtRQUNWLGVBQWU7MkZBT04sYUFBYTtrQkF0QnpCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVk7d0JBQ2xDLGFBQWE7d0JBQ2IsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTO3dCQUU5QixlQUFlLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBRTdCLFlBQVksRUFBRTt3QkFDWixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsWUFBWTt3QkFDWixtQkFBbUI7cUJBQ3BCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxVQUFVO3dCQUNWLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixhQUFhO3dCQUNiLFlBQVk7d0JBQ1osbUJBQW1CO3FCQUNwQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTaGFyZWRNb2R1bGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2hhcmVkLm1vZHVsZSc7XG5pbXBvcnQgeyBNZW51Q29tcG9uZW50IH0gZnJvbSAnLi9tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBGb3JNb2R1bGUgfSBmcm9tICdAcngtYW5ndWxhci90ZW1wbGF0ZS9mb3InO1xuaW1wb3J0IHtTdWJNZW51VGFiRGlyZWN0aXZlfSBmcm9tICcuL3N1Yi1tZW51LXRhYi5kaXJlY3RpdmUnO1xuaW1wb3J0IHtJZk1vZHVsZX0gZnJvbSAnQHJ4LWFuZ3VsYXIvdGVtcGxhdGUvaWYnO1xuaW1wb3J0IHtMZXRNb2R1bGV9IGZyb20gJ0ByeC1hbmd1bGFyL3RlbXBsYXRlL2xldCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtTaGFyZWRNb2R1bGUsIFJvdXRlck1vZHVsZSxcbiAgICAvLyBSeCBhbmd1bGFyXG4gICAgRm9yTW9kdWxlLCBJZk1vZHVsZSwgTGV0TW9kdWxlLFxuXG4gICAgVHJhbnNsYXRlTW9kdWxlLmZvckNoaWxkKCldLFxuXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIC8vIENvbXBvbmVudHNcbiAgICBNZW51Q29tcG9uZW50LFxuICAgIC8vIERpcmVjdGl2ZVxuICAgIFN1Yk1lbnVUYWJEaXJlY3RpdmUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICAvLyBNb2R1bGVzXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIC8vIENvbXBvbmVudHNcbiAgICBNZW51Q29tcG9uZW50LFxuICAgIC8vIERpcmVjdGl2ZVxuICAgIFN1Yk1lbnVUYWJEaXJlY3RpdmUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFwcE1lbnVNb2R1bGUge31cbiJdfQ==