asp-lib 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.
Files changed (54) hide show
  1. package/esm2022/lib/application-menu/application-menu.component.mjs +3 -3
  2. package/esm2022/lib/asp-lib.module.mjs +13 -3
  3. package/esm2022/lib/assign-roles/assign-roles.component.mjs +4 -4
  4. package/esm2022/lib/basic-item/basic-item.component.mjs +3 -3
  5. package/esm2022/lib/checkbox/checkbox.component.mjs +3 -3
  6. package/esm2022/lib/checkbox-field/checkbox-field.component.mjs +3 -3
  7. package/esm2022/lib/company-dropdown/company-dropdown.component.mjs +3 -3
  8. package/esm2022/lib/dropdown/dropdown.component.mjs +3 -3
  9. package/esm2022/lib/form/form.component.mjs +9 -3
  10. package/esm2022/lib/form-2/form-2.component.mjs +85 -0
  11. package/esm2022/lib/header/header.component.mjs +3 -3
  12. package/esm2022/lib/input/input.component.mjs +3 -3
  13. package/esm2022/lib/interfaces/interfaces.mjs +1 -1
  14. package/esm2022/lib/items-selector/items-selector.component.mjs +3 -3
  15. package/esm2022/lib/items-viewer/items-viewer.component.mjs +7 -5
  16. package/esm2022/lib/list/list.component.mjs +3 -3
  17. package/esm2022/lib/loader/loader.component.mjs +3 -3
  18. package/esm2022/lib/menu/menu.component.mjs +3 -3
  19. package/esm2022/lib/menu-admin/menu-admin.component.mjs +3 -3
  20. package/esm2022/lib/modules-admin/modules-admin.component.mjs +92 -0
  21. package/esm2022/lib/move-menu-option/move-menu-option.component.mjs +3 -3
  22. package/esm2022/lib/multi-option-dialog/multi-option-dialog.component.mjs +3 -3
  23. package/esm2022/lib/notifications/notifications.component.mjs +3 -3
  24. package/esm2022/lib/radio-button/radio-button.component.mjs +3 -3
  25. package/esm2022/lib/radio-group/radio-group.component.mjs +3 -3
  26. package/esm2022/lib/recents-dropdown/recents-dropdown.component.mjs +3 -3
  27. package/esm2022/lib/resource-actions/resource-actions.component.mjs +3 -3
  28. package/esm2022/lib/role-card/role-card.component.mjs +3 -3
  29. package/esm2022/lib/role-info/role-info.component.mjs +3 -3
  30. package/esm2022/lib/security-admin/security-admin.component.mjs +42 -104
  31. package/esm2022/lib/select/select.component.mjs +3 -3
  32. package/esm2022/lib/services/security-admin.service.mjs +77 -67
  33. package/esm2022/lib/snackbar/snackbar.component.mjs +3 -3
  34. package/esm2022/lib/tree/tree.component.mjs +3 -3
  35. package/esm2022/lib/user-dropdown/user-dropdown.component.mjs +3 -3
  36. package/esm2022/lib/users-admin/users-admin.component.mjs +40 -31
  37. package/fesm2022/asp-lib.mjs +395 -263
  38. package/fesm2022/asp-lib.mjs.map +1 -1
  39. package/lib/asp-lib.module.d.ts +19 -16
  40. package/lib/form/form.component.d.ts +2 -0
  41. package/lib/form-2/form-2.component.d.ts +24 -0
  42. package/lib/interfaces/interfaces.d.ts +30 -1
  43. package/lib/items-viewer/items-viewer.component.d.ts +2 -2
  44. package/lib/modules-admin/modules-admin.component.d.ts +39 -0
  45. package/lib/security-admin/security-admin.component.d.ts +3 -25
  46. package/lib/services/security-admin.service.d.ts +5 -19
  47. package/package.json +3 -2
  48. package/src/lib/assets/fonts/fonts/asp-lib-icons.eot +0 -0
  49. package/src/lib/assets/fonts/fonts/asp-lib-icons.svg +48 -46
  50. package/src/lib/assets/fonts/fonts/asp-lib-icons.ttf +0 -0
  51. package/src/lib/assets/fonts/fonts/asp-lib-icons.woff +0 -0
  52. package/src/lib/assets/fonts/selection.json +1 -1
  53. package/src/lib/assets/fonts/style.css +144 -144
  54. package/src/lib/assets/{theme.css → theme.scss} +2 -0
@@ -41,8 +41,9 @@ export class SecurityAdminService {
41
41
  this.listUsersEndpoint = '';
42
42
  this.assignRoleUsersEndpoint = '';
43
43
  this.assignRoleCustomersEndpoint = '';
44
+ this.endpoints = {};
44
45
  this.theme = 'default';
45
- this.msgLabel = { "User": "Usuario", "Customer": "Cliente", "Role": "Rol" };
46
+ this.msgLabel = { "User": "Usuario", "Customer": "Empresa", "Role": "Rol" };
46
47
  this.reloadByEntity = {
47
48
  "User": new Subject(),
48
49
  "Customer": new Subject(),
@@ -55,101 +56,104 @@ export class SecurityAdminService {
55
56
  subject.subscribe({ next: (item) => this.selectedItem = item });
56
57
  }
57
58
  }
59
+ setSecurityEndpoints(endpoints) {
60
+ this.endpoints = endpoints;
61
+ }
58
62
  getRoles() {
59
- return this.http.get(this.listRolesEndpoint);
63
+ return this.http.get(this.endpoints.listRolesEndpoint ?? '');
60
64
  }
61
65
  deleteMenuOption(option) {
62
- return this.http.get(`${this.deleteMenuOptionEndpoint}?optionId=${option.id}`);
66
+ return this.http.get(`${this.endpoints.deleteMenuOptionEndpoint ?? ''}?optionId=${option.id}`);
63
67
  }
64
68
  setTheme(theme) {
65
69
  this.theme = Boolean(theme) ? theme : 'default';
66
70
  }
67
71
  getActions(roleId, resourceId) {
68
- return this.http.get(`${this.getActionsEndpoint}?roleId=${roleId}&resourceId=${resourceId}`);
69
- }
70
- setDeleteMenuOptionEndpoint(endpoint) {
71
- this.deleteMenuOptionEndpoint = endpoint;
72
+ return this.http.get(`${this.endpoints.actionsByRoleAndResourceEndpoint == ''}?roleId=${roleId}&resourceId=${resourceId}`);
72
73
  }
74
+ // setDeleteMenuOptionEndpoint(endpoint: string){
75
+ // this.deleteMenuOptionEndpoint = endpoint;
76
+ // }
73
77
  getResourcesByRole(roleId) {
74
- return this.http.get(`${this.resourcesByRoleEndpoint}?roledId=${roleId}`);
75
- }
76
- setListUsersEndpoint(endpoint) {
77
- this.listUsersEndpoint = endpoint;
78
+ return this.http.get(`${this.endpoints.resourcesByRoleEndpoint ?? ''}?roledId=${roleId}`);
78
79
  }
80
+ // setListUsersEndpoint(endpoint: string) {
81
+ // this.listUsersEndpoint = endpoint;
82
+ // }
79
83
  setMenuOptionFormComponent(component) {
80
84
  this.menuOptionFormComponent = component;
81
85
  }
82
- setUsersByRoleEndpoint(endpoint) {
83
- this.usersByRoleEndpoint = endpoint;
84
- }
85
- setCustomersByRoleEndpoint(endpoint) {
86
- this.customersByRoleEndpoint = endpoint;
87
- }
88
- setSaveMenuOptionEndpoint(endpoint) {
89
- this.saveMenuOptionEndpoint = endpoint;
90
- }
91
- setGetMenuTreeEndpoint(endpoint) { this.getMenuTreeEndpoint = endpoint; }
92
- setAssignRoleUsersEndpoint(endpoint) { this.assignRoleUsersEndpoint = endpoint; }
93
- setAssignRoleCustomersEndpoint(endpoint) {
94
- this.assignRoleCustomersEndpoint = endpoint;
95
- }
86
+ // setUsersByRoleEndpoint(endpoint: string) {
87
+ // this.usersByRoleEndpoint = endpoint;
88
+ // }
89
+ // setCustomersByRoleEndpoint(endpoint: string) {
90
+ // this.customersByRoleEndpoint = endpoint;
91
+ // }
92
+ // setSaveMenuOptionEndpoint(endpoint: string) {
93
+ // this.saveMenuOptionEndpoint = endpoint;
94
+ // }
95
+ // setGetMenuTreeEndpoint(endpoint: string) { this.getMenuTreeEndpoint = endpoint }
96
+ // setAssignRoleUsersEndpoint(endpoint: string) { this.assignRoleUsersEndpoint = endpoint }
97
+ // setAssignRoleCustomersEndpoint(endpoint: string) {
98
+ // this.assignRoleCustomersEndpoint = endpoint;
99
+ // }
96
100
  saveMenuOption(option) {
97
- return this.http.post(this.saveMenuOptionEndpoint, { ...option, id: option.id > -1 ? option.id : null });
98
- }
99
- getUsers(page = 1, pageSize = 10) {
100
- return this.http.get(`this.listUsersEndpoint?page=${page}&pageSize=${pageSize}`);
101
+ return this.http.post(this.endpoints.saveMenuOptionEndpoint ?? '', { ...option, id: option.id > -1 ? option.id : null });
101
102
  }
103
+ // getUsers(page: number = 1, pageSize: number = 10) {
104
+ // return this.http.get(`this.listUsersEndpoint?page=${page}&pageSize=${pageSize}`);
105
+ // }
102
106
  getAssignedRoles(id, type) {
103
- return this.http.get(`${type === "User" ? this.rolesByUserEndpoint : this.rolesByCustomerEndpoint}?${paramNames[type]}=${id}`);
107
+ return this.http.get(`${type === "User" ? (this.endpoints.rolesByUserEndpoint ?? '') : (this.endpoints.rolesByCustomerEndpoint ?? '')}?${paramNames[type]}=${id}`);
104
108
  }
105
109
  assignRoles(id, roles, type) {
106
- return this.http.post(type === "User" ? this.assignUserRoleEndpoint : this.assignCustomerRoleEndpoint, {
110
+ return this.http.post(type === "User" ? (this.endpoints.assignUserRoleEndpoint ?? '') : (this.endpoints.assignCustomerRoleEndpoint ?? ''), {
107
111
  [paramNames[type]]: id,
108
112
  roles
109
113
  });
110
114
  }
111
115
  assignRoleUsers(roleId, users) {
112
- return this.http.post(this.assignRoleUsersEndpoint, {
116
+ return this.http.post(this.endpoints.assignRoleUsersEndpoint ?? '', {
113
117
  roleId,
114
118
  users
115
119
  });
116
120
  }
117
121
  assignRoleCustomers(roleId, customers) {
118
- return this.http.post(this.assignRoleCustomersEndpoint, {
122
+ return this.http.post(this.endpoints.assignRoleCustomersEndpoint ?? '', {
119
123
  roleId,
120
124
  customers
121
125
  });
122
126
  }
123
- setRolesByUserEndpoint(endpoint) {
124
- this.rolesByUserEndpoint = endpoint;
125
- }
126
- setAssignUserRoleEndpoint(endpoint) {
127
- this.assignUserRoleEndpoint = endpoint;
128
- }
129
- setRolesByCustomerEndpoint(endpoint) {
130
- this.rolesByCustomerEndpoint = endpoint;
131
- }
132
- setAssignCustomerRoleEndpoint(endpoint) {
133
- this.assignCustomerRoleEndpoint = endpoint;
134
- }
135
- setSavePermissionsEndpoint(endpoint) {
136
- this.savePermissionsEndpoint = endpoint;
137
- }
138
- setUsersByCustomerEndpoint(endpoint) {
139
- this.usersByCustomerEndpoint = endpoint;
140
- }
141
- setListRolesEndpoint(endpoint) {
142
- this.listRolesEndpoint = endpoint;
143
- }
144
- setAssignResourceEndpoint(endpoint) {
145
- this.assignResourceEndpoint = endpoint;
146
- }
147
- setResourcesByRoleEndpoint(endpoint) {
148
- this.resourcesByRoleEndpoint = endpoint;
149
- }
150
- setActionsByRoleAndResourceEndpoint(endpoint) {
151
- this.getActionsEndpoint = endpoint;
152
- }
127
+ // setRolesByUserEndpoint(endpoint: string) {
128
+ // this.rolesByUserEndpoint = endpoint;
129
+ // }
130
+ // setAssignUserRoleEndpoint(endpoint: string) {
131
+ // this.assignUserRoleEndpoint = endpoint;
132
+ // }
133
+ // setRolesByCustomerEndpoint(endpoint: string) {
134
+ // this.rolesByCustomerEndpoint = endpoint;
135
+ // }
136
+ // setAssignCustomerRoleEndpoint(endpoint: string) {
137
+ // this.assignCustomerRoleEndpoint = endpoint;
138
+ // }
139
+ // setSavePermissionsEndpoint(endpoint: string) {
140
+ // this.savePermissionsEndpoint = endpoint;
141
+ // }
142
+ // setUsersByCustomerEndpoint(endpoint: string) {
143
+ // this.usersByCustomerEndpoint = endpoint;
144
+ // }
145
+ // setListRolesEndpoint(endpoint: string) {
146
+ // this.listRolesEndpoint = endpoint;
147
+ // }
148
+ // setAssignResourceEndpoint(endpoint: string) {
149
+ // this.assignResourceEndpoint = endpoint;
150
+ // }
151
+ // setResourcesByRoleEndpoint(endpoint: string) {
152
+ // this.resourcesByRoleEndpoint = endpoint;
153
+ // }
154
+ // setActionsByRoleAndResourceEndpoint(endpoint: string) {
155
+ // this.getActionsEndpoint = endpoint;
156
+ // }
153
157
  selectUser(user) {
154
158
  this.selectedUserSubject.next(user);
155
159
  }
@@ -163,13 +167,19 @@ export class SecurityAdminService {
163
167
  return this.http.post(endpoint, updatedItem);
164
168
  }
165
169
  assignResource(roleId, resources) {
166
- return this.http.post(this.assignResourceEndpoint, { roleId, resources });
170
+ return this.http.post(this.endpoints.assignResourceEndpoint ?? '', { roleId, resources });
167
171
  }
168
172
  savePermissions(permissions) {
169
- return this.http.post(this.savePermissionsEndpoint, permissions);
173
+ return this.http.post(this.endpoints.savePermissionsEndpoint ?? '', permissions);
170
174
  }
171
175
  getMenuTree() {
172
- return this.http.get(this.getMenuTreeEndpoint);
176
+ return this.http.get(this.endpoints.getMenuTreeEndpoint ?? '');
177
+ }
178
+ getAppModules() {
179
+ return this.http.get(this.endpoints.listModulesEndpoint ?? '');
180
+ }
181
+ saveModule(module) {
182
+ return this.http.post(this.endpoints.createModuleEndpoint ?? '', module);
173
183
  }
174
184
  reloadEntity(entityName) {
175
185
  this.reloadSubject.next(entityName);
@@ -183,4 +193,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
183
193
  providedIn: 'root'
184
194
  }]
185
195
  }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktYWRtaW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FzcC1saWIvc3JjL2xpYi9zZXJ2aWNlcy9zZWN1cml0eS1hZG1pbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBRzNDLE1BQU0sVUFBVSxHQUFHO0lBQ2xCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLElBQUksRUFBRSxRQUFRO0NBQ2QsQ0FBQTtBQUtELE1BQU0sT0FBTyxvQkFBb0I7SUF1Q2hDLElBQUksVUFBVSxLQUFLLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFDdkQsSUFBSSxjQUFjLEtBQUssT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUMvRCxJQUFJLFVBQVUsS0FBSyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRXZELElBQUksUUFBUTtRQUNYLE9BQU8sQ0FBQztZQUNQLE1BQU0sRUFBRSxJQUFJLENBQUMsbUJBQW1CO1lBQ2hDLFVBQVUsRUFBRSxJQUFJLENBQUMsdUJBQXVCO1lBQ3hDLE1BQU0sRUFBRSxJQUFJLENBQUMsbUJBQW1CO1NBQ2hDLENBQUMsQ0FBQTtJQUNILENBQUM7SUFFRCxZQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBakRwQyx3QkFBbUIsR0FBRyxJQUFJLE9BQU8sRUFBTyxDQUFDO1FBQ3pDLDRCQUF1QixHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7UUFDN0Msd0JBQW1CLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztRQUN6QyxrQkFBYSxHQUFHLElB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UUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxjQUFjLENBQUMsTUFBYyxFQUFFLFNBQWdCO1FBQzlDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELGVBQWUsQ0FBQyxXQUFrQjtRQUNqQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsV0FBVztRQUNWLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELFlBQVksQ0FBQyxVQUF3QztRQUNwRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyQyxDQUFDOytHQXJOVyxvQkFBb0I7bUhBQXBCLG9CQUFvQixjQUZwQixNQUFNOzs0RkFFTixvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNuYWNrYmFyU2VydmljZSB9IGZyb20gJy4vc25hY2tiYXIuc2VydmljZSc7XHJcblxyXG5jb25zdCBwYXJhbU5hbWVzID0ge1xyXG5cdEN1c3RvbWVyOiBcImN1c3RvbWVySWRcIixcclxuXHRVc2VyOiBcInVzZXJJZFwiXHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNlY3VyaXR5QWRtaW5TZXJ2aWNlIHtcclxuXHJcblx0c2VsZWN0ZWRVc2VyU3ViamVjdCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcclxuXHRzZWxlY3RlZEN1c3RvbWVyU3ViamVjdCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcclxuXHRzZWxlY3RlZFJvbGVTdWJqZWN0ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG5cdHJlbG9hZFN1YmplY3QgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XHJcblx0dXNlcnNCeUN1c3RvbWVyRW5kcG9pbnQ6IHN0cmluZyA9ICcnO1xyXG5cdGFzc2lnblJlc291cmNlRW5kcG9pbnQ6IHN0cmluZyA9ICcnO1xyXG5cdGdldEFjdGlvbnNFbmRwb2ludDogc3RyaW5nID0gJyc7XHJcblx0c2F2ZVBlcm1pc3Npb25zRW5kcG9pbnQ6IHN0cmluZyA9ICcnO1xyXG5cdGxpc3RSb2xlc0VuZHBvaW50OiBzdHJpbmcgPSAnJztcclxuXHRyZXNvdXJjZXNCeVJvbGVFbmRwb2ludDogc3RyaW5nID0gJyc7XHJcblx0cm9sZXNCeVVzZXJFbmRwb2ludDogc3RyaW5nID0gJyc7XHJcblx0Z2V0TWVudVRyZWVFbmRwb2ludDogc3RyaW5nID0gJyc7XHJcblx0c2F2ZU1lbnVPcHRpb25FbmRwb2ludDogc3RyaW5nID0gJyc7XHJcblx0ZGVsZXRlTWVudU9wdGlvbkVuZHBvaW50OiBzdHJpbmcgPSAnJztcclxuXHJcblx0YXNzaWduVXNlclJvbGVFbmRwb2ludDogc3RyaW5nID0gJyc7XHJcblx0cm9sZXNCeUN1c3RvbWVyRW5kcG9pbnQ6IHN0cmluZyA9ICcnO1xyXG5cdGFzc2lnbkN1c3RvbWVyUm9sZUVuZHBvaW50OiBzdHJpbmcgPSAnJztcclxuXHR1c2Vyc0J5Um9sZUVuZHBvaW50OiBzdHJpbmcgPSAnJztcclxuXHRjdXN0b21lcnNCeVJvbGVFbmRwb2ludDogc3RyaW5nID0gJyc7XHJcblx0bWVudU9wdGlvbkZvcm1Db21wb25lbnQ/OiBUeXBlPGFueT47XHJcblxyXG5cdGxpc3RVc2Vyc0VuZHBvaW50OiBzdHJpbmcgPSAnJztcclxuXHRhc3NpZ25Sb2xlVXNlcnNFbmRwb2ludDogc3RyaW5nID0gJyc7XHJcblx0YXNzaWduUm9sZUN1c3RvbWVyc0VuZHBvaW50OiBzdHJpbmcgPSAnJztcclxuXHJcblx0c2VsZWN0ZWRJdGVtOiBhbnk7XHJcblx0dGhlbWU6IHN0cmluZyA9ICdkZWZhdWx0JztcclxuXHJcblx0bXNnTGFiZWwgPSB7IFwiVXNlclwiOiBcIlVzdWFyaW9cIiwgXCJDdXN0b21lclwiOiBcIkNsaWVudGVcIiwgXCJSb2xlXCI6IFwiUm9sXCIgfVxyXG5cclxuXHRyZWxvYWRCeUVudGl0eSA9IHtcclxuXHRcdFwiVXNlclwiOiBuZXcgU3ViamVjdDxib29sZWFuPigpLFxyXG5cdFx0XCJDdXN0b21lclwiOiBuZXcgU3ViamVjdDxib29sZWFuPigpLFxyXG5cdFx0XCJSb2xlXCI6IG5ldyBTdWJqZWN0PGJvb2xlYW4+KClcclxuXHR9XHJcblxyXG5cdGdldCB1c2VyUmVsb2FkKCkgeyByZXR1cm4gdGhpcy5yZWxvYWRCeUVudGl0eVsnVXNlciddIH1cclxuXHRnZXQgY3VzdG9tZXJSZWxvYWQoKSB7IHJldHVybiB0aGlzLnJlbG9hZEJ5RW50aXR5WydDdXN0b21lciddIH1cclxuXHRnZXQgcm9sZVJlbG9hZCgpIHsgcmV0dXJuIHRoaXMucmVsb2FkQnlFbnRpdHlbJ1JvbGUnXSB9XHJcblxyXG5cdGdldCBzdWJqZWN0cygpIHtcclxuXHRcdHJldHVybiAoe1xyXG5cdFx0XHRcIlVzZXJcIjogdGhpcy5zZWxlY3RlZFVzZXJTdWJqZWN0LFxyXG5cdFx0XHRcIkN1c3RvbWVyXCI6IHRoaXMuc2VsZWN0ZWRDdXN0b21lclN1YmplY3QsXHJcblx0XHRcdFwiUm9sZVwiOiB0aGlzLnNlbGVjdGVkUm9sZVN1YmplY3RcclxuXHRcdH0pXHJcblx0fVxyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHtcclxuXHRcdHRoaXMucmVsb2FkU3ViamVjdC5zdWJzY3JpYmUoe1xyXG5cdFx0XHRuZXh0OiAoZW50aXR5TmFtZTogYW55KSA9PiB7IHRoaXMucmVsb2FkQnlFbnRpdHlbZW50aXR5TmFtZSBhcyBcIlVzZXJcIiB8IFwiQ3VzdG9tZXJcIiB8IFwiUm9sZVwiXT8ubmV4dCh0cnVlKSB9XHJcblx0XHR9KVxyXG5cdFx0Zm9yIChsZXQgc3ViamVjdCBvZiBPYmplY3QudmFsdWVzKHRoaXMuc3ViamVjdHMpKSB7XHJcblx0XHRcdHN1YmplY3Quc3Vic2NyaWJlKHsgbmV4dDogKGl0ZW0pID0+IHRoaXMuc2VsZWN0ZWRJdGVtID0gaXRlbSB9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGdldFJvbGVzKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5saXN0Um9sZXNFbmRwb2ludCk7XHJcblx0fVxyXG5cclxuXHRkZWxldGVNZW51T3B0aW9uKG9wdGlvbjogYW55KXtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuZGVsZXRlTWVudU9wdGlvbkVuZHBvaW50fT9vcHRpb25JZD0ke29wdGlvbi5pZH1gKVxyXG5cdH1cclxuXHJcblx0c2V0VGhlbWUodGhlbWU6IHN0cmluZyl7XHJcblx0XHR0aGlzLnRoZW1lID0gQm9vbGVhbih0aGVtZSkgPyB0aGVtZSA6ICdkZWZhdWx0JztcclxuXHR9XHJcblxyXG5cdGdldEFjdGlvbnMocm9sZUlkOiBudW1iZXIsIHJlc291cmNlSWQ6IG51bWJlcikge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5nZXRBY3Rpb25zRW5kcG9pbnR9P3JvbGVJZD0ke3JvbGVJZH0mcmVzb3VyY2VJZD0ke3Jlc291cmNlSWR9YCk7XHJcblx0fVxyXG5cclxuXHRzZXREZWxldGVNZW51T3B0aW9uRW5kcG9pbnQoZW5kcG9pbnQ6IHN0cmluZyl7XHJcblx0XHR0aGlzLmRlbGV0ZU1lbnVPcHRpb25FbmRwb2ludCA9IGVuZHBvaW50O1xyXG5cdH1cclxuXHJcblx0Z2V0UmVzb3VyY2VzQnlSb2xlKHJvbGVJZDogbnVtYmVyKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnJlc291cmNlc0J5Um9sZUVuZHBvaW50fT9yb2xlZElkPSR7cm9sZUlkfWApO1xyXG5cdH1cclxuXHJcblx0c2V0TGlzdFVzZXJzRW5kcG9pbnQoZW5kcG9pbnQ6IHN0cmluZykge1xyXG5cdFx0dGhpcy5saXN0VXNlcnNFbmRwb2ludCA9IGVuZHBvaW50O1xyXG5cdH1cclxuXHJcblx0c2V0TWVudU9wdGlvbkZvcm1Db21wb25lbnQoY29tcG9uZW50PzogVHlwZTxhbnk+KXtcclxuXHRcdHRoaXMubWVudU9wdGlvbkZvcm1Db21wb25lbnQgPSBjb21wb25lbnQ7XHJcblx0fVxyXG5cclxuXHRzZXRVc2Vyc0J5Um9sZUVuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpIHtcclxuXHRcdHRoaXMudXNlcnNCeVJvbGVFbmRwb2ludCA9IGVuZHBvaW50O1xyXG5cdH1cclxuXHRzZXRDdXN0b21lcnNCeVJvbGVFbmRwb2ludChlbmRwb2ludDogc3RyaW5nKSB7XHJcblx0XHR0aGlzLmN1c3RvbWVyc0J5Um9sZUVuZHBvaW50ID0gZW5kcG9pbnQ7XHJcblx0fVxyXG5cclxuXHRzZXRTYXZlTWVudU9wdGlvbkVuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpIHtcclxuXHRcdHRoaXMuc2F2ZU1lbnVPcHRpb25FbmRwb2ludCA9IGVuZHBvaW50O1xyXG5cdH1cclxuXHJcblx0c2V0R2V0TWVudVRyZWVFbmRwb2ludChlbmRwb2ludDogc3RyaW5nKSB7IHRoaXMuZ2V0TWVudVRyZWVFbmRwb2ludCA9IGVuZHBvaW50IH1cclxuXHRzZXRBc3NpZ25Sb2xlVXNlcnNFbmRwb2ludChlbmRwb2ludDogc3RyaW5nKSB7IHRoaXMuYXNzaWduUm9sZVVzZXJzRW5kcG9pbnQgPSBlbmRwb2ludCB9XHJcblx0c2V0QXNzaWduUm9sZUN1c3RvbWVyc0VuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpIHtcclxuXHRcdHRoaXMuYXNzaWduUm9sZUN1c3RvbWVyc0VuZHBvaW50ID0gZW5kcG9pbnQ7XHJcblx0fVxyXG5cclxuXHRzYXZlTWVudU9wdGlvbihvcHRpb246IGFueSkge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuc2F2ZU1lbnVPcHRpb25FbmRwb2ludCwgey4uLm9wdGlvbiwgaWQ6IG9wdGlvbi5pZCA+IC0xID8gb3B0aW9uLmlkOiBudWxsfSk7XHJcblx0fVxyXG5cclxuXHRnZXRVc2VycyhwYWdlOiBudW1iZXIgPSAxLCBwYWdlU2l6ZTogbnVtYmVyID0gMTApIHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAuZ2V0KGB0aGlzLmxpc3RVc2Vyc0VuZHBvaW50P3BhZ2U9JHtwYWdlfSZwYWdlU2l6ZT0ke3BhZ2VTaXplfWApO1xyXG5cdH1cclxuXHJcblx0Z2V0QXNzaWduZWRSb2xlcyhpZDogbnVtYmVyLCB0eXBlOiBcIlVzZXJcIiB8IFwiQ3VzdG9tZXJcIikge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dHlwZSA9PT0gXCJVc2VyXCIgPyB0aGlzLnJvbGVzQnlVc2VyRW5kcG9pbnQgOiB0aGlzLnJvbGVzQnlDdXN0b21lckVuZHBvaW50fT8ke3BhcmFtTmFtZXNbdHlwZV19PSR7aWR9YCk7XHJcblx0fVxyXG5cclxuXHRhc3NpZ25Sb2xlcyhpZDogbnVtYmVyLCByb2xlczogYW55W10sIHR5cGU6IFwiVXNlclwiIHwgXCJDdXN0b21lclwiKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QodHlwZSA9PT0gXCJVc2VyXCIgPyB0aGlzLmFzc2lnblVzZXJSb2xlRW5kcG9pbnQgOiB0aGlzLmFzc2lnbkN1c3RvbWVyUm9sZUVuZHBvaW50LCB7XHJcblx0XHRcdFtwYXJhbU5hbWVzW3R5cGVdXTogaWQsXHJcblx0XHRcdHJvbGVzXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGFzc2lnblJvbGVVc2Vycyhyb2xlSWQ6IG51bWJlciwgdXNlcnM6IGFueVtdKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5hc3NpZ25Sb2xlVXNlcnNFbmRwb2ludCwge1xyXG5cdFx0XHRyb2xlSWQsXHJcblx0XHRcdHVzZXJzXHJcblx0XHR9KVxyXG5cdH1cclxuXHJcblx0YXNzaWduUm9sZUN1c3RvbWVycyhyb2xlSWQ6IG51bWJlciwgY3VzdG9tZXJzOiBhbnlbXSkge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuYXNzaWduUm9sZUN1c3RvbWVyc0VuZHBvaW50LCB7XHJcblx0XHRcdHJvbGVJZCxcclxuXHRcdFx0Y3VzdG9tZXJzXHJcblx0XHR9KVxyXG5cdH1cclxuXHJcblx0c2V0Um9sZXNCeVVzZXJFbmRwb2ludChlbmRwb2ludDogc3RyaW5nKSB7XHJcblx0XHR0aGlzLnJvbGVzQnlVc2VyRW5kcG9pbnQgPSBlbmRwb2ludDtcclxuXHR9XHJcblxyXG5cdHNldEFzc2lnblVzZXJSb2xlRW5kcG9pbnQoZW5kcG9pbnQ6IHN0cmluZykge1xyXG5cdFx0dGhpcy5hc3NpZ25Vc2VyUm9sZUVuZHBvaW50ID0gZW5kcG9pbnQ7XHJcblx0fVxyXG5cclxuXHRzZXRSb2xlc0J5Q3VzdG9tZXJFbmRwb2ludChlbmRwb2ludDogc3RyaW5nKSB7XHJcblx0XHR0aGlzLnJvbGVzQnlDdXN0b21lckVuZHBvaW50ID0gZW5kcG9pbnQ7XHJcblx0fVxyXG5cclxuXHRzZXRBc3NpZ25DdXN0b21lclJvbGVFbmRwb2ludChlbmRwb2ludDogc3RyaW5nKSB7XHJcblx0XHR0aGlzLmFzc2lnbkN1c3RvbWVyUm9sZUVuZHBvaW50ID0gZW5kcG9pbnQ7XHJcblx0fVxyXG5cclxuXHRzZXRTYXZlUGVybWlzc2lvbnNFbmRwb2ludChlbmRwb2ludDogc3RyaW5nKSB7XHJcblx0XHR0aGlzLnNhdmVQZXJtaXNzaW9uc0VuZHBvaW50ID0gZW5kcG9pbnQ7XHJcblx0fVxyXG5cclxuXHRzZXRVc2Vyc0J5Q3VzdG9tZXJFbmRwb2ludChlbmRwb2ludDogc3RyaW5nKSB7XHJcblx0XHR0aGlzLnVzZXJzQnlDdXN0b21lckVuZHBvaW50ID0gZW5kcG9pbnQ7XHJcblx0fVxyXG5cclxuXHRzZXRMaXN0Um9sZXNFbmRwb2ludChlbmRwb2ludDogc3RyaW5nKSB7XHJcblx0XHR0aGlzLmxpc3RSb2xlc0VuZHBvaW50ID0gZW5kcG9pbnQ7XHJcblx0fVxyXG5cclxuXHRzZXRBc3NpZ25SZXNvdXJjZUVuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpIHtcclxuXHRcdHRoaXMuYXNzaWduUmVzb3VyY2VFbmRwb2ludCA9IGVuZHBvaW50O1xyXG5cdH1cclxuXHJcblx0c2V0UmVzb3VyY2VzQnlSb2xlRW5kcG9pbnQoZW5kcG9pbnQ6IHN0cmluZykge1xyXG5cdFx0dGhpcy5yZXNvdXJjZXNCeVJvbGVFbmRwb2ludCA9IGVuZHBvaW50O1xyXG5cdH1cclxuXHJcblx0c2V0QWN0aW9uc0J5Um9sZUFuZFJlc291cmNlRW5kcG9pbnQoZW5kcG9pbnQ6IHN0cmluZykge1xyXG5cdFx0dGhpcy5nZXRBY3Rpb25zRW5kcG9pbnQgPSBlbmRwb2ludDtcclxuXHR9XHJcblxyXG5cdHNlbGVjdFVzZXIodXNlcjogYW55KSB7XHJcblx0XHR0aGlzLnNlbGVjdGVkVXNlclN1YmplY3QubmV4dCh1c2VyKTtcclxuXHR9XHJcblxyXG5cdHNlbGVjdEN1c3RvbWVyKGN1c3RvbWVyOiBhbnkpIHtcclxuXHRcdHRoaXMuc2VsZWN0ZWRDdXN0b21lclN1YmplY3QubmV4dChjdXN0b21lcik7XHJcblx0fVxyXG5cclxuXHRzZWxlY3RSb2xlKHJvbGU6IGFueSkge1xyXG5cclxuXHRcdHRoaXMuc2VsZWN0ZWRSb2xlU3ViamVjdC5uZXh0KHJvbGUpO1xyXG5cdH1cclxuXHJcblx0c2F2ZUl0ZW0oZW5kcG9pbnQ6IHN0cmluZywgdXBkYXRlZEl0ZW06IGFueSkge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KGVuZHBvaW50LCB1cGRhdGVkSXRlbSk7XHJcblx0fVxyXG5cclxuXHRhc3NpZ25SZXNvdXJjZShyb2xlSWQ6IG51bWJlciwgcmVzb3VyY2VzOiBhbnlbXSkge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuYXNzaWduUmVzb3VyY2VFbmRwb2ludCwgeyByb2xlSWQsIHJlc291cmNlcyB9KTtcclxuXHR9XHJcblxyXG5cdHNhdmVQZXJtaXNzaW9ucyhwZXJtaXNzaW9uczogYW55W10pIHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLnNhdmVQZXJtaXNzaW9uc0VuZHBvaW50LCBwZXJtaXNzaW9ucyk7XHJcblx0fVxyXG5cclxuXHRnZXRNZW51VHJlZSgpe1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5nZXRNZW51VHJlZUVuZHBvaW50KTtcclxuXHR9XHJcblxyXG5cdHJlbG9hZEVudGl0eShlbnRpdHlOYW1lOiBcIlVzZXJcIiB8IFwiQ3VzdG9tZXJcIiB8IFwiUm9sZVwiKSB7XHJcblx0XHR0aGlzLnJlbG9hZFN1YmplY3QubmV4dChlbnRpdHlOYW1lKTtcclxuXHR9XHJcbn1cclxuIl19
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktYWRtaW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FzcC1saWIvc3JjL2xpYi9zZXJ2aWNlcy9zZWN1cml0eS1hZG1pbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBSTNDLE1BQU0sVUFBVSxHQUFHO0lBQ2xCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLElBQUksRUFBRSxRQUFRO0NBQ2QsQ0FBQTtBQUtELE1BQU0sT0FBTyxvQkFBb0I7SUF5Q2hDLElBQUksVUFBVSxLQUFLLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFDdkQsSUFBSSxjQUFjLEtBQUssT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUMvRCxJQUFJLFVBQVUsS0FBSyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRXZELElBQUksUUFBUTtRQUNYLE9BQU8sQ0FBQztZQUNQLE1BQU0sRUFBRSxJQUFJLENBQUMsbUJBQW1CO1lBQ2hDLFVBQVUsRUFBRSxJQUFJLENBQUMsdUJBQXVCO1lBQ3hDLE1BQU0sRUFBRSxJQUFJLENBQUMsbUJBQW1CO1NBQ2hDLENBQUMsQ0FBQTtJQUNILENBQUM7SUFFRCxZQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBbkRwQyx3QkFBbUIsR0FBRyxJQUFJLE9BQU8sRUFBTyxDQUFDO1FBQ3pDLDRCQUF1QixHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7UUFDN0Msd0JBQW1CLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztRQUN6QyxrQkFBYSxHQUFHLElB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Q0FBQztJQUVELGFBQWE7UUFDWixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLElBQUksRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFXO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsSUFBSSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELFlBQVksQ0FBQyxVQUF3QztRQUNwRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyQyxDQUFDOytHQW5PVyxvQkFBb0I7bUhBQXBCLG9CQUFvQixjQUZwQixNQUFNOzs0RkFFTixvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNuYWNrYmFyU2VydmljZSB9IGZyb20gJy4vc25hY2tiYXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFNlY3VyaXR5RW5kcG9pbnRzIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pbnRlcmZhY2VzJztcclxuXHJcbmNvbnN0IHBhcmFtTmFtZXMgPSB7XHJcblx0Q3VzdG9tZXI6IFwiY3VzdG9tZXJJZFwiLFxyXG5cdFVzZXI6IFwidXNlcklkXCJcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VjdXJpdHlBZG1pblNlcnZpY2Uge1xyXG5cclxuXHRzZWxlY3RlZFVzZXJTdWJqZWN0ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG5cdHNlbGVjdGVkQ3VzdG9tZXJTdWJqZWN0ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG5cdHNlbGVjdGVkUm9sZVN1YmplY3QgPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcblx0cmVsb2FkU3ViamVjdCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuXHR1c2Vyc0J5Q3VzdG9tZXJFbmRwb2ludDogc3RyaW5nID0gJyc7XHJcblx0YXNzaWduUmVzb3VyY2VFbmRwb2ludDogc3RyaW5nID0gJyc7XHJcblx0Z2V0QWN0aW9uc0VuZHBvaW50OiBzdHJpbmcgPSAnJztcclxuXHRzYXZlUGVybWlzc2lvbnNFbmRwb2ludDogc3RyaW5nID0gJyc7XHJcblx0bGlzdFJvbGVzRW5kcG9pbnQ6IHN0cmluZyA9ICcnO1xyXG5cdHJlc291cmNlc0J5Um9sZUVuZHBvaW50OiBzdHJpbmcgPSAnJztcclxuXHRyb2xlc0J5VXNlckVuZHBvaW50OiBzdHJpbmcgPSAnJztcclxuXHRnZXRNZW51VHJlZUVuZHBvaW50OiBzdHJpbmcgPSAnJztcclxuXHRzYXZlTWVudU9wdGlvbkVuZHBvaW50OiBzdHJpbmcgPSAnJztcclxuXHRkZWxldGVNZW51T3B0aW9uRW5kcG9pbnQ6IHN0cmluZyA9ICcnO1xyXG5cclxuXHRhc3NpZ25Vc2VyUm9sZUVuZHBvaW50OiBzdHJpbmcgPSAnJztcclxuXHRyb2xlc0J5Q3VzdG9tZXJFbmRwb2ludDogc3RyaW5nID0gJyc7XHJcblx0YXNzaWduQ3VzdG9tZXJSb2xlRW5kcG9pbnQ6IHN0cmluZyA9ICcnO1xyXG5cdHVzZXJzQnlSb2xlRW5kcG9pbnQ6IHN0cmluZyA9ICcnO1xyXG5cdGN1c3RvbWVyc0J5Um9sZUVuZHBvaW50OiBzdHJpbmcgPSAnJztcclxuXHRtZW51T3B0aW9uRm9ybUNvbXBvbmVudD86IFR5cGU8YW55PjtcclxuXHJcblx0bGlzdFVzZXJzRW5kcG9pbnQ6IHN0cmluZyA9ICcnO1xyXG5cdGFzc2lnblJvbGVVc2Vyc0VuZHBvaW50OiBzdHJpbmcgPSAnJztcclxuXHRhc3NpZ25Sb2xlQ3VzdG9tZXJzRW5kcG9pbnQ6IHN0cmluZyA9ICcnO1xyXG5cclxuXHRlbmRwb2ludHM6IFNlY3VyaXR5RW5kcG9pbnRzID0ge307XHJcblxyXG5cdHNlbGVjdGVkSXRlbTogYW55O1xyXG5cdHRoZW1lOiBzdHJpbmcgPSAnZGVmYXVsdCc7XHJcblxyXG5cdG1zZ0xhYmVsID0geyBcIlVzZXJcIjogXCJVc3VhcmlvXCIsIFwiQ3VzdG9tZXJcIjogXCJFbXByZXNhXCIsIFwiUm9sZVwiOiBcIlJvbFwiIH1cclxuXHJcblx0cmVsb2FkQnlFbnRpdHkgPSB7XHJcblx0XHRcIlVzZXJcIjogbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKSxcclxuXHRcdFwiQ3VzdG9tZXJcIjogbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKSxcclxuXHRcdFwiUm9sZVwiOiBuZXcgU3ViamVjdDxib29sZWFuPigpXHJcblx0fVxyXG5cclxuXHRnZXQgdXNlclJlbG9hZCgpIHsgcmV0dXJuIHRoaXMucmVsb2FkQnlFbnRpdHlbJ1VzZXInXSB9XHJcblx0Z2V0IGN1c3RvbWVyUmVsb2FkKCkgeyByZXR1cm4gdGhpcy5yZWxvYWRCeUVudGl0eVsnQ3VzdG9tZXInXSB9XHJcblx0Z2V0IHJvbGVSZWxvYWQoKSB7IHJldHVybiB0aGlzLnJlbG9hZEJ5RW50aXR5WydSb2xlJ10gfVxyXG5cclxuXHRnZXQgc3ViamVjdHMoKSB7XHJcblx0XHRyZXR1cm4gKHtcclxuXHRcdFx0XCJVc2VyXCI6IHRoaXMuc2VsZWN0ZWRVc2VyU3ViamVjdCxcclxuXHRcdFx0XCJDdXN0b21lclwiOiB0aGlzLnNlbGVjdGVkQ3VzdG9tZXJTdWJqZWN0LFxyXG5cdFx0XHRcIlJvbGVcIjogdGhpcy5zZWxlY3RlZFJvbGVTdWJqZWN0XHJcblx0XHR9KVxyXG5cdH1cclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7XHJcblx0XHR0aGlzLnJlbG9hZFN1YmplY3Quc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKGVudGl0eU5hbWU6IGFueSkgPT4geyB0aGlzLnJlbG9hZEJ5RW50aXR5W2VudGl0eU5hbWUgYXMgXCJVc2VyXCIgfCBcIkN1c3RvbWVyXCIgfCBcIlJvbGVcIl0/Lm5leHQodHJ1ZSkgfVxyXG5cdFx0fSlcclxuXHRcdGZvciAobGV0IHN1YmplY3Qgb2YgT2JqZWN0LnZhbHVlcyh0aGlzLnN1YmplY3RzKSkge1xyXG5cdFx0XHRzdWJqZWN0LnN1YnNjcmliZSh7IG5leHQ6IChpdGVtKSA9PiB0aGlzLnNlbGVjdGVkSXRlbSA9IGl0ZW0gfSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRzZXRTZWN1cml0eUVuZHBvaW50cyhlbmRwb2ludHM6IFNlY3VyaXR5RW5kcG9pbnRzKXtcclxuXHRcdHRoaXMuZW5kcG9pbnRzID0gZW5kcG9pbnRzO1xyXG5cdH1cclxuXHJcblx0Z2V0Um9sZXMoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLmVuZHBvaW50cy5saXN0Um9sZXNFbmRwb2ludCA/PyAnJyk7XHJcblx0fVxyXG5cclxuXHRkZWxldGVNZW51T3B0aW9uKG9wdGlvbjogYW55KXtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuZW5kcG9pbnRzLmRlbGV0ZU1lbnVPcHRpb25FbmRwb2ludCA/PyAnJ30/b3B0aW9uSWQ9JHtvcHRpb24uaWR9YClcclxuXHR9XHJcblxyXG5cdHNldFRoZW1lKHRoZW1lOiBzdHJpbmcpe1xyXG5cdFx0dGhpcy50aGVtZSA9IEJvb2xlYW4odGhlbWUpID8gdGhlbWUgOiAnZGVmYXVsdCc7XHJcblx0fVxyXG5cclxuXHRnZXRBY3Rpb25zKHJvbGVJZDogbnVtYmVyLCByZXNvdXJjZUlkOiBudW1iZXIpIHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuZW5kcG9pbnRzLmFjdGlvbnNCeVJvbGVBbmRSZXNvdXJjZUVuZHBvaW50ID09ICcnfT9yb2xlSWQ9JHtyb2xlSWR9JnJlc291cmNlSWQ9JHtyZXNvdXJjZUlkfWApO1xyXG5cdH1cclxuXHJcblx0Ly8gc2V0RGVsZXRlTWVudU9wdGlvbkVuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpe1xyXG5cdC8vIFx0dGhpcy5kZWxldGVNZW51T3B0aW9uRW5kcG9pbnQgPSBlbmRwb2ludDtcclxuXHQvLyB9XHJcblxyXG5cdGdldFJlc291cmNlc0J5Um9sZShyb2xlSWQ6IG51bWJlcikge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5lbmRwb2ludHMucmVzb3VyY2VzQnlSb2xlRW5kcG9pbnQgPz8gJyd9P3JvbGVkSWQ9JHtyb2xlSWR9YCk7XHJcblx0fVxyXG5cclxuXHQvLyBzZXRMaXN0VXNlcnNFbmRwb2ludChlbmRwb2ludDogc3RyaW5nKSB7XHJcblx0Ly8gXHR0aGlzLmxpc3RVc2Vyc0VuZHBvaW50ID0gZW5kcG9pbnQ7XHJcblx0Ly8gfVxyXG5cclxuXHRzZXRNZW51T3B0aW9uRm9ybUNvbXBvbmVudChjb21wb25lbnQ/OiBUeXBlPGFueT4pe1xyXG5cdFx0dGhpcy5tZW51T3B0aW9uRm9ybUNvbXBvbmVudCA9IGNvbXBvbmVudDtcclxuXHR9XHJcblxyXG5cdC8vIHNldFVzZXJzQnlSb2xlRW5kcG9pbnQoZW5kcG9pbnQ6IHN0cmluZykge1xyXG5cdC8vIFx0dGhpcy51c2Vyc0J5Um9sZUVuZHBvaW50ID0gZW5kcG9pbnQ7XHJcblx0Ly8gfVxyXG5cdC8vIHNldEN1c3RvbWVyc0J5Um9sZUVuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpIHtcclxuXHQvLyBcdHRoaXMuY3VzdG9tZXJzQnlSb2xlRW5kcG9pbnQgPSBlbmRwb2ludDtcclxuXHQvLyB9XHJcblxyXG5cdC8vIHNldFNhdmVNZW51T3B0aW9uRW5kcG9pbnQoZW5kcG9pbnQ6IHN0cmluZykge1xyXG5cdC8vIFx0dGhpcy5zYXZlTWVudU9wdGlvbkVuZHBvaW50ID0gZW5kcG9pbnQ7XHJcblx0Ly8gfVxyXG5cclxuXHQvLyBzZXRHZXRNZW51VHJlZUVuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpIHsgdGhpcy5nZXRNZW51VHJlZUVuZHBvaW50ID0gZW5kcG9pbnQgfVxyXG5cdC8vIHNldEFzc2lnblJvbGVVc2Vyc0VuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpIHsgdGhpcy5hc3NpZ25Sb2xlVXNlcnNFbmRwb2ludCA9IGVuZHBvaW50IH1cclxuXHQvLyBzZXRBc3NpZ25Sb2xlQ3VzdG9tZXJzRW5kcG9pbnQoZW5kcG9pbnQ6IHN0cmluZykge1xyXG5cdC8vIFx0dGhpcy5hc3NpZ25Sb2xlQ3VzdG9tZXJzRW5kcG9pbnQgPSBlbmRwb2ludDtcclxuXHQvLyB9XHJcblxyXG5cdHNhdmVNZW51T3B0aW9uKG9wdGlvbjogYW55KSB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5lbmRwb2ludHMuc2F2ZU1lbnVPcHRpb25FbmRwb2ludCA/PyAnJywgey4uLm9wdGlvbiwgaWQ6IG9wdGlvbi5pZCA+IC0xID8gb3B0aW9uLmlkOiBudWxsfSk7XHJcblx0fVxyXG5cclxuXHQvLyBnZXRVc2VycyhwYWdlOiBudW1iZXIgPSAxLCBwYWdlU2l6ZTogbnVtYmVyID0gMTApIHtcclxuXHQvLyBcdHJldHVybiB0aGlzLmh0dHAuZ2V0KGB0aGlzLmxpc3RVc2Vyc0VuZHBvaW50P3BhZ2U9JHtwYWdlfSZwYWdlU2l6ZT0ke3BhZ2VTaXplfWApO1xyXG5cdC8vIH1cclxuXHJcblx0Z2V0QXNzaWduZWRSb2xlcyhpZDogbnVtYmVyLCB0eXBlOiBcIlVzZXJcIiB8IFwiQ3VzdG9tZXJcIikge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dHlwZSA9PT0gXCJVc2VyXCIgPyAodGhpcy5lbmRwb2ludHMucm9sZXNCeVVzZXJFbmRwb2ludCA/PyAnJykgOiAodGhpcy5lbmRwb2ludHMucm9sZXNCeUN1c3RvbWVyRW5kcG9pbnQgPz8gJycpfT8ke3BhcmFtTmFtZXNbdHlwZV19PSR7aWR9YCk7XHJcblx0fVxyXG5cclxuXHRhc3NpZ25Sb2xlcyhpZDogbnVtYmVyLCByb2xlczogYW55W10sIHR5cGU6IFwiVXNlclwiIHwgXCJDdXN0b21lclwiKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QodHlwZSA9PT0gXCJVc2VyXCIgPyAodGhpcy5lbmRwb2ludHMuYXNzaWduVXNlclJvbGVFbmRwb2ludCA/PyAnJykgOiAodGhpcy5lbmRwb2ludHMuYXNzaWduQ3VzdG9tZXJSb2xlRW5kcG9pbnQgPz8gJycpLCB7XHJcblx0XHRcdFtwYXJhbU5hbWVzW3R5cGVdXTogaWQsXHJcblx0XHRcdHJvbGVzXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGFzc2lnblJvbGVVc2Vycyhyb2xlSWQ6IG51bWJlciwgdXNlcnM6IGFueVtdKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5lbmRwb2ludHMuYXNzaWduUm9sZVVzZXJzRW5kcG9pbnQgPz8gJycsIHtcclxuXHRcdFx0cm9sZUlkLFxyXG5cdFx0XHR1c2Vyc1xyXG5cdFx0fSlcclxuXHR9XHJcblxyXG5cdGFzc2lnblJvbGVDdXN0b21lcnMocm9sZUlkOiBudW1iZXIsIGN1c3RvbWVyczogYW55W10pIHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLmVuZHBvaW50cy5hc3NpZ25Sb2xlQ3VzdG9tZXJzRW5kcG9pbnQgPz8gJycsIHtcclxuXHRcdFx0cm9sZUlkLFxyXG5cdFx0XHRjdXN0b21lcnNcclxuXHRcdH0pXHJcblx0fVxyXG5cclxuXHQvLyBzZXRSb2xlc0J5VXNlckVuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpIHtcclxuXHQvLyBcdHRoaXMucm9sZXNCeVVzZXJFbmRwb2ludCA9IGVuZHBvaW50O1xyXG5cdC8vIH1cclxuXHJcblx0Ly8gc2V0QXNzaWduVXNlclJvbGVFbmRwb2ludChlbmRwb2ludDogc3RyaW5nKSB7XHJcblx0Ly8gXHR0aGlzLmFzc2lnblVzZXJSb2xlRW5kcG9pbnQgPSBlbmRwb2ludDtcclxuXHQvLyB9XHJcblxyXG5cdC8vIHNldFJvbGVzQnlDdXN0b21lckVuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpIHtcclxuXHQvLyBcdHRoaXMucm9sZXNCeUN1c3RvbWVyRW5kcG9pbnQgPSBlbmRwb2ludDtcclxuXHQvLyB9XHJcblxyXG5cdC8vIHNldEFzc2lnbkN1c3RvbWVyUm9sZUVuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpIHtcclxuXHQvLyBcdHRoaXMuYXNzaWduQ3VzdG9tZXJSb2xlRW5kcG9pbnQgPSBlbmRwb2ludDtcclxuXHQvLyB9XHJcblxyXG5cdC8vIHNldFNhdmVQZXJtaXNzaW9uc0VuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpIHtcclxuXHQvLyBcdHRoaXMuc2F2ZVBlcm1pc3Npb25zRW5kcG9pbnQgPSBlbmRwb2ludDtcclxuXHQvLyB9XHJcblxyXG5cdC8vIHNldFVzZXJzQnlDdXN0b21lckVuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpIHtcclxuXHQvLyBcdHRoaXMudXNlcnNCeUN1c3RvbWVyRW5kcG9pbnQgPSBlbmRwb2ludDtcclxuXHQvLyB9XHJcblxyXG5cdC8vIHNldExpc3RSb2xlc0VuZHBvaW50KGVuZHBvaW50OiBzdHJpbmcpIHtcclxuXHQvLyBcdHRoaXMubGlzdFJvbGVzRW5kcG9pbnQgPSBlbmRwb2ludDtcclxuXHQvLyB9XHJcblxyXG5cdC8vIHNldEFzc2lnblJlc291cmNlRW5kcG9pbnQoZW5kcG9pbnQ6IHN0cmluZykge1xyXG5cdC8vIFx0dGhpcy5hc3NpZ25SZXNvdXJjZUVuZHBvaW50ID0gZW5kcG9pbnQ7XHJcblx0Ly8gfVxyXG5cclxuXHQvLyBzZXRSZXNvdXJjZXNCeVJvbGVFbmRwb2ludChlbmRwb2ludDogc3RyaW5nKSB7XHJcblx0Ly8gXHR0aGlzLnJlc291cmNlc0J5Um9sZUVuZHBvaW50ID0gZW5kcG9pbnQ7XHJcblx0Ly8gfVxyXG5cclxuXHQvLyBzZXRBY3Rpb25zQnlSb2xlQW5kUmVzb3VyY2VFbmRwb2ludChlbmRwb2ludDogc3RyaW5nKSB7XHJcblx0Ly8gXHR0aGlzLmdldEFjdGlvbnNFbmRwb2ludCA9IGVuZHBvaW50O1xyXG5cdC8vIH1cclxuXHJcblx0c2VsZWN0VXNlcih1c2VyOiBhbnkpIHtcclxuXHRcdHRoaXMuc2VsZWN0ZWRVc2VyU3ViamVjdC5uZXh0KHVzZXIpO1xyXG5cdH1cclxuXHJcblx0c2VsZWN0Q3VzdG9tZXIoY3VzdG9tZXI6IGFueSkge1xyXG5cdFx0dGhpcy5zZWxlY3RlZEN1c3RvbWVyU3ViamVjdC5uZXh0KGN1c3RvbWVyKTtcclxuXHR9XHJcblxyXG5cdHNlbGVjdFJvbGUocm9sZTogYW55KSB7XHJcblxyXG5cdFx0dGhpcy5zZWxlY3RlZFJvbGVTdWJqZWN0Lm5leHQocm9sZSk7XHJcblx0fVxyXG5cclxuXHRzYXZlSXRlbShlbmRwb2ludDogc3RyaW5nLCB1cGRhdGVkSXRlbTogYW55KSB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QoZW5kcG9pbnQsIHVwZGF0ZWRJdGVtKTtcclxuXHR9XHJcblxyXG5cdGFzc2lnblJlc291cmNlKHJvbGVJZDogbnVtYmVyLCByZXNvdXJjZXM6IGFueVtdKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5lbmRwb2ludHMuYXNzaWduUmVzb3VyY2VFbmRwb2ludCA/PyAnJywgeyByb2xlSWQsIHJlc291cmNlcyB9KTtcclxuXHR9XHJcblxyXG5cdHNhdmVQZXJtaXNzaW9ucyhwZXJtaXNzaW9uczogYW55W10pIHtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLmVuZHBvaW50cy5zYXZlUGVybWlzc2lvbnNFbmRwb2ludCA/PyAnJywgcGVybWlzc2lvbnMpO1xyXG5cdH1cclxuXHJcblx0Z2V0TWVudVRyZWUoKXtcclxuXHRcdHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuZW5kcG9pbnRzLmdldE1lbnVUcmVlRW5kcG9pbnQgPz8gJycpO1xyXG5cdH1cclxuXHJcblx0Z2V0QXBwTW9kdWxlcygpe1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5lbmRwb2ludHMubGlzdE1vZHVsZXNFbmRwb2ludCA/PyAnJyk7XHJcblx0fVxyXG5cclxuXHRzYXZlTW9kdWxlKG1vZHVsZTogYW55KSB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5lbmRwb2ludHMuY3JlYXRlTW9kdWxlRW5kcG9pbnQgPz8gJycsIG1vZHVsZSk7XHJcblx0fVxyXG5cclxuXHRyZWxvYWRFbnRpdHkoZW50aXR5TmFtZTogXCJVc2VyXCIgfCBcIkN1c3RvbWVyXCIgfCBcIlJvbGVcIikge1xyXG5cdFx0dGhpcy5yZWxvYWRTdWJqZWN0Lm5leHQoZW50aXR5TmFtZSk7XHJcblx0fVxyXG59XHJcbiJdfQ==