@netgrif/components-core 7.0.0-beta.2 → 7.0.0-rc.2

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 (34) hide show
  1. package/esm2022/lib/authentication/authentication.factory.mjs +5 -1
  2. package/esm2022/lib/authentication/models/credentials.mjs +1 -1
  3. package/esm2022/lib/authentication/models/user.transformer.mjs +2 -2
  4. package/esm2022/lib/authentication/services/methods/basic-authentication/basic-with-realm-authentication.service.mjs +43 -0
  5. package/esm2022/lib/authentication/services/public-api.mjs +2 -1
  6. package/esm2022/lib/navigation/breadcrumbs/abstract-breadcrumbs.component.mjs +4 -4
  7. package/esm2022/lib/navigation/model/uri-resource.mjs +1 -1
  8. package/esm2022/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.mjs +11 -11
  9. package/esm2022/lib/navigation/service/uri.service.mjs +10 -10
  10. package/esm2022/lib/resources/abstract-endpoint/abstract-resource.service.mjs +28 -1
  11. package/esm2022/lib/resources/engine-endpoint/petri-net-resource.service.mjs +5 -3
  12. package/esm2022/lib/resources/engine-endpoint/public/public-petri-net-resource.service.mjs +3 -2
  13. package/esm2022/lib/resources/engine-endpoint/user-resource.service.mjs +36 -35
  14. package/esm2022/lib/side-menu/content-components/import-net/abstract-import-net.component.mjs +2 -2
  15. package/esm2022/lib/task-content/services/field-converter.service.mjs +4 -4
  16. package/esm2022/lib/user/models/iuser.mjs +1 -1
  17. package/esm2022/lib/user/models/user.mjs +6 -2
  18. package/esm2022/lib/user/services/user-list.service.mjs +2 -2
  19. package/esm2022/lib/user/services/user.service.mjs +2 -2
  20. package/esm2022/lib/utility/tests/mocks/mock-authentication-method-service.mjs +2 -2
  21. package/esm2022/lib/utility/tests/mocks/mock-authentication.service.mjs +2 -2
  22. package/esm2022/lib/utility/tests/mocks/mock-user-resource.service.mjs +2 -2
  23. package/fesm2022/netgrif-components-core.mjs +150 -75
  24. package/fesm2022/netgrif-components-core.mjs.map +1 -1
  25. package/lib/authentication/authentication.factory.d.ts +2 -1
  26. package/lib/authentication/models/credentials.d.ts +1 -0
  27. package/lib/authentication/services/methods/basic-authentication/basic-with-realm-authentication.service.d.ts +16 -0
  28. package/lib/authentication/services/public-api.d.ts +1 -0
  29. package/lib/navigation/model/uri-resource.d.ts +2 -1
  30. package/lib/resources/abstract-endpoint/abstract-resource.service.d.ts +6 -0
  31. package/lib/resources/engine-endpoint/user-resource.service.d.ts +17 -17
  32. package/lib/user/models/iuser.d.ts +18 -0
  33. package/lib/user/models/user.d.ts +3 -1
  34. package/package.json +1 -1
@@ -61,13 +61,13 @@ export class FieldConverterService {
61
61
  case FieldTypeResource.USER:
62
62
  let user;
63
63
  if (item.value) {
64
- user = new UserValue(item.value.id, item.value.name, item.value.surname, item.value.email);
64
+ user = new UserValue(item.value.id, item.value.firstName, item.value.lastName, item.value.email);
65
65
  }
66
66
  return new UserField(item.stringId, item.name, item.behavior, user, item.roles, item.placeholder, item.description, item.layout, item.validations, item.component, item.parentTaskId);
67
67
  case FieldTypeResource.USER_LIST:
68
68
  let userListValue = new UserListValue(new Map());
69
69
  if (item.value) {
70
- item.value.userValues.forEach(u => userListValue.addUserValue(new UserValue(u.id, u.name, u.surname, u.email)));
70
+ item.value.userValues.forEach(u => userListValue.addUserValue(new UserValue(u.id, u.firstName, u.lastName, u.email)));
71
71
  }
72
72
  return new UserListField(item.stringId, item.name, item.behavior, userListValue, item.roles, item.placeholder, item.description, item.layout, item.validations, item.component, item.parentTaskId);
73
73
  case FieldTypeResource.BUTTON:
@@ -262,7 +262,7 @@ export class FieldConverterService {
262
262
  return moment(new Date(value[0], value[1] - 1, value[2]));
263
263
  }
264
264
  if (this.resolveType(field) === FieldTypeResource.USER) {
265
- return new UserValue(value.id, value.name, value.surname, value.email);
265
+ return new UserValue(value.id, value.firstName, value.lastName, value.email);
266
266
  }
267
267
  if (this.resolveType(field) === FieldTypeResource.DATE_TIME) {
268
268
  return moment(new Date(value[0], value[1] - 1, value[2], value[3], value[4]));
@@ -305,4 +305,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
305
305
  providedIn: 'root'
306
306
  }]
307
307
  }], ctorParameters: () => [] });
308
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtY29udmVydGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3Rhc2stY29udGVudC9zZXJ2aWNlcy9maWVsZC1jb252ZXJ0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR3pDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUNsRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDekUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBQy9FLE9BQU8sRUFBQyxnQkFBZ0IsRUFBd0IsTUFBTSw4REFBOEQsQ0FBQztBQUNySCxPQUFPLEVBQUMsZ0JBQWdCLEVBQXdCLE1BQU0sOERBQThELENBQUM7QUFDckgsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwwREFBMEQsQ0FBQztBQUN2RixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDekUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBQy9FLE9BQU8sRUFBQyxTQUFTLEVBQXFCLE1BQU0sZ0RBQWdELENBQUM7QUFDN0YsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMERBQTBELENBQUM7QUFDdkYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHFEQUFxRCxDQUFDO0FBRWxGLE9B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R0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzVFO2dCQUNELE9BQU8sSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQ2hGLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzVGLEtBQUssaUJBQWlCLENBQUMsU0FBUztnQkFDNUIsSUFBSSxRQUFRLENBQUM7Z0JBQ2IsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO29CQUNaLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzlHO2dCQUNELE9BQU8sSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUN0RSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzlHLEtBQUssaUJBQWlCLENBQUMsSUFBSTtnQkFDdkIsSUFBSSxJQUFJLENBQUM7Z0JBQ1QsSUFBSSxJQUFJ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QVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDM0U7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRVMsZ0JBQWdCLENBQUMsS0FBd0IsRUFBRSxLQUFhO1FBQzlELElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEtBQUssVUFBVSxJQUFJLEtBQUssS0FBSyxFQUFFLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUM3RyxPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM5QjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFUyxtQkFBbUIsQ0FBQyxVQUFvQjtRQUM5QyxPQUFPLFVBQVUsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFrQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO0lBQ3ZILENBQUM7SUFFUyxlQUFlLENBQUMsU0FBUztRQUMvQixPQUFPLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3RELENBQUM7d0dBclNRLHFCQUFxQjs0R0FBckIscUJBQXFCLGNBRmxCLE1BQU07OzRGQUVULHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEYXRhRmllbGRSZXNvdXJjZX0gZnJvbSAnLi4vbW9kZWwvcmVzb3VyY2UtaW50ZXJmYWNlJztcbmltcG9ydCB7RGF0YUZpZWxkfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9tb2RlbHMvYWJzdHJhY3QtZGF0YS1maWVsZCc7XG5pbXBvcnQge0Jvb2xlYW5GaWVsZH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvYm9vbGVhbi1maWVsZC9tb2RlbHMvYm9vbGVhbi1maWVsZCc7XG5pbXBvcnQge1RleHRGaWVsZH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvdGV4dC1maWVsZC9tb2RlbHMvdGV4dC1maWVsZCc7XG5pbXBvcnQge051bWJlckZpZWxkfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9udW1iZXItZmllbGQvbW9kZWxzL251bWJlci1maWVsZCc7XG5pbXBvcnQge0VudW1lcmF0aW9uRmllbGQsIEVudW1lcmF0aW9uRmllbGRWYWx1ZX0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvZW51bWVyYXRpb24tZmllbGQvbW9kZWxzL2VudW1lcmF0aW9uLWZpZWxkJztcbmltcG9ydCB7TXVsdGljaG9pY2VGaWVsZCwgTXVsdGljaG9pY2VGaWVsZFZhbHVlfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9tdWx0aWNob2ljZS1maWVsZC9tb2RlbHMvbXVsdGljaG9pY2UtZmllbGQnO1xuaW1wb3J0IHtEYXRlRmllbGR9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL2RhdGUtZmllbGQvbW9kZWxzL2RhdGUtZmllbGQnO1xuaW1wb3J0IHtEYXRlVGltZUZpZWxkfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9kYXRlLXRpbWUtZmllbGQvbW9kZWxzL2RhdGUtdGltZS1maWVsZCc7XG5pbXBvcnQge1VzZXJGaWVsZH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvdXNlci1maWVsZC9tb2RlbHMvdXNlci1maWVsZCc7XG5pbXBvcnQge0J1dHRvbkZpZWxkfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9idXR0b24tZmllbGQvbW9kZWxzL2J1dHRvbi1maWVsZCc7XG5pbXBvcnQge0ZpbGVGaWVsZCwgRmlsZVVwbG9hZE1JTUVUeXBlfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9maWxlLWZpZWxkL21vZGVscy9maWxlLWZpZWxkJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7VXNlclZhbHVlfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy91c2VyLWZpZWxkL21vZGVscy91c2VyLXZhbHVlJztcbmltcG9ydCB7RmllbGRUeXBlUmVzb3VyY2V9IGZyb20gJy4uL21vZGVsL2ZpZWxkLXR5cGUtcmVzb3VyY2UnO1xuaW1wb3J0IHtGaWxlTGlzdEZpZWxkfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9maWxlLWxpc3QtZmllbGQvbW9kZWxzL2ZpbGUtbGlzdC1maWVsZCc7XG5pbXBvcnQge1RleHRBcmVhRmllbGR9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL3RleHQtZmllbGQvbW9kZWxzL3RleHQtYXJlYS1maWVsZCc7XG5pbXBvcnQge0NvbXBvbmVudH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvbW9kZWxzL2NvbXBvbmVudCc7XG5pbXBvcnQge1Rhc2tSZWZGaWVsZH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvdGFzay1yZWYtZmllbGQvbW9kZWwvdGFzay1yZWYtZmllbGQnO1xuaW1wb3J0IHtEeW5hbWljRW51bWVyYXRpb25GaWVsZH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvZW51bWVyYXRpb24tZmllbGQvbW9kZWxzL2R5bmFtaWMtZW51bWVyYXRpb24tZmllbGQnO1xuaW1wb3J0IHtGaWx0ZXJGaWVsZH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvZmlsdGVyLWZpZWxkL21vZGVscy9maWx0ZXItZmllbGQnO1xuaW1wb3J0IHtJMThuRmllbGR9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL2kxOG4tZmllbGQvbW9kZWxzL2kxOG4tZmllbGQnO1xuaW1wb3J0IHtVc2VyTGlzdEZpZWxkfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy91c2VyLWxpc3QtZmllbGQvbW9kZWxzL3VzZXItbGlzdC1maWVsZCc7XG5pbXBvcnQge1VzZXJMaXN0VmFsdWV9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL3VzZXItbGlzdC1maWVsZC9tb2RlbHMvdXNlci1saXN0LXZhbHVlJztcbmltcG9ydCB7ZGVjb2RlQmFzZTY0LCBlbmNvZGVCYXNlNjR9IGZyb20gXCIuLi8uLi91dGlsaXR5L2Jhc2U2NFwiO1xuaW1wb3J0IHtDYXNlUmVmRmllbGR9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL2Nhc2UtcmVmLWZpZWxkL21vZGVsL2Nhc2UtcmVmLWZpZWxkJztcbmltcG9ydCB7U3RyaW5nQ29sbGVjdGlvbkZpZWxkfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9zdHJpbmctY29sbGVjdGlvbi1maWVsZC9tb2RlbHMvc3RyaW5nLWNvbGxlY3Rpb24tZmllbGQnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEZpZWxkQ29udmVydGVyU2VydmljZSB7XG4gICAgcHJpdmF0ZSB0ZXh0RmllbGROYW1lcyA9IFsgJ3JpY2h0ZXh0YXJlYScsICdodG1sdGV4dGFyZWEnLCAnZWRpdG9yJywgJ2h0bWxFZGl0b3InIF1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgIH1cblxuICAgIHB1YmxpYyB0b0NsYXNzKGl0ZW06IERhdGFGaWVsZFJlc291cmNlKTogRGF0YUZpZWxkPGFueT4ge1xuICAgICAgICBzd2l0Y2ggKGl0ZW0udHlwZSkge1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGVSZXNvdXJjZS5CT09MRUFOOlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQm9vbGVhbkZpZWxkKGl0ZW0uc3RyaW5nSWQsIGl0ZW0ubmFtZSwgaXRlbS52YWx1ZSBhcyBib29sZWFuLCBpdGVtLmJlaGF2aW9yLFxuICAgICAgICAgICAgICAgICAgICBpdGVtLnBsYWNlaG9sZGVyLCBpdGVtLmRlc2NyaXB0aW9uLCBpdGVtLmxheW91dCwgaXRlbS52YWxpZGF0aW9ucywgaXRlbS5jb21wb25lbnQsIGl0ZW0ucGFyZW50VGFza0lkKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlUmVzb3VyY2UuVEVYVDpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50ZXh0RmllbGROYW1lcy5pbmNsdWRlcyhpdGVtLmNvbXBvbmVudD8ubmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBUZXh0QXJlYUZpZWxkKGl0ZW0uc3RyaW5nSWQsIGl0ZW0ubmFtZSwgdGhpcy5yZXNvbHZlVGV4dFZhbHVlKGl0ZW0sIGl0ZW0udmFsdWUpLCBpdGVtLmJlaGF2aW9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5wbGFjZWhvbGRlciwgaXRlbS5kZXNjcmlwdGlvbiwgaXRlbS5sYXlvdXQsIGl0ZW0udmFsaWRhdGlvbnMsIGl0ZW0uY29tcG9uZW50LCBpdGVtLnBhcmVudFRhc2tJZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgVGV4dEZpZWxkKGl0ZW0uc3RyaW5nSWQsIGl0ZW0ubmFtZSwgdGhpcy5yZXNvbHZlVGV4dFZhbHVlKGl0ZW0sIGl0ZW0udmFsdWUpLCBpdGVtLmJlaGF2aW9yLCBpdGVtLnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICBpdGVtLmRlc2NyaXB0aW9uLCBpdGVtLmxheW91dCwgaXRlbS52YWxpZGF0aW9ucywgaXRlbS5jb21wb25lbnQsIGl0ZW0ucGFyZW50VGFza0lkKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlUmVzb3VyY2UuTlVNQkVSOlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTnVtYmVyRmllbGQoaXRlbS5zdHJpbmdJZCwgaXRlbS5uYW1lLCBpdGVtLnZhbHVlIGFzIG51bWJlciwgaXRlbS5iZWhhdmlvciwgaXRlbS52YWxpZGF0aW9ucywgaXRlbS5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5kZXNjcmlwdGlvbiwgaXRlbS5sYXlvdXQsIGl0ZW0uZm9ybWF0RmlsdGVyLCB0aGlzLnJlc29sdmVOdW1iZXJDb21wb25lbnQoaXRlbSksIGl0ZW0ucGFyZW50VGFza0lkKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlUmVzb3VyY2UuRU5VTUVSQVRJT046XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZVJlc291cmNlLkVOVU1FUkFUSU9OX01BUDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXNvbHZlRW51bUZpZWxkKGl0ZW0pO1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGVSZXNvdXJjZS5NVUxUSUNIT0lDRTpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE11bHRpY2hvaWNlRmllbGQoaXRlbS5zdHJpbmdJZCwgaXRlbS5uYW1lLCBpdGVtLnZhbHVlLCB0aGlzLnJlc29sdmVNdWx0aWNob2ljZUNob2ljZXMoaXRlbSksXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uYmVoYXZpb3IsIGl0ZW0ucGxhY2Vob2xkZXIsIGl0ZW0uZGVzY3JpcHRpb24sIGl0ZW0ubGF5b3V0LCBpdGVtLnR5cGUsIGl0ZW0udmFsaWRhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uY29tcG9uZW50LCBpdGVtLnBhcmVudFRhc2tJZCk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZVJlc291cmNlLk1VTFRJQ0hPSUNFX01BUDpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE11bHRpY2hvaWNlRmllbGQoaXRlbS5zdHJpbmdJZCwgaXRlbS5uYW1lLCBpdGVtLnZhbHVlLCB0aGlzLnJlc29sdmVNdWx0aWNob2ljZU9wdGlvbnMoaXRlbSksXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uYmVoYXZpb3IsIGl0ZW0ucGxhY2Vob2xkZXIsIGl0ZW0uZGVzY3JpcHRpb24sIGl0ZW0ubGF5b3V0LFxuICAgICAgICAgICAgICAgICAgICBpdGVtLnR5cGUsIGl0ZW0udmFsaWRhdGlvbnMsIGl0ZW0uY29tcG9uZW50LCBpdGVtLnBhcmVudFRhc2tJZCk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZVJlc291cmNlLkRBVEU6XG4gICAgICAgICAgICAgICAgbGV0IGRhdGU7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0udmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZSA9IG1vbWVudChuZXcgRGF0ZShpdGVtLnZhbHVlWzBdLCBpdGVtLnZhbHVlWzFdIC0gMSwgaXRlbS52YWx1ZVsyXSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERhdGVGaWVsZChpdGVtLnN0cmluZ0lkLCBpdGVtLm5hbWUsIGRhdGUsIGl0ZW0uYmVoYXZpb3IsIGl0ZW0ucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZGVzY3JpcHRpb24sIGl0ZW0ubGF5b3V0LCBpdGVtLnZhbGlkYXRpb25zLCBpdGVtLmNvbXBvbmVudCwgaXRlbS5wYXJlbnRUYXNrSWQpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGVSZXNvdXJjZS5EQVRFX1RJTUU6XG4gICAgICAgICAgICAgICAgbGV0IGRhdGVUaW1lO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGVUaW1lID0gbW9tZW50KG5ldyBEYXRlKGl0ZW0udmFsdWVbMF0sIGl0ZW0udmFsdWVbMV0gLSAxLCBpdGVtLnZhbHVlWzJdLCBpdGVtLnZhbHVlWzNdLCBpdGVtLnZhbHVlWzRdKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWVGaWVsZChpdGVtLnN0cmluZ0lkLCBpdGVtLm5hbWUsIGRhdGVUaW1lLCBpdGVtLmJlaGF2aW9yLFxuICAgICAgICAgICAgICAgICAgICBpdGVtLnBsYWNlaG9sZGVyLCBpdGVtLmRlc2NyaXB0aW9uLCBpdGVtLmxheW91dCwgaXRlbS52YWxpZGF0aW9ucywgaXRlbS5jb21wb25lbnQsIGl0ZW0ucGFyZW50VGFza0lkKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlUmVzb3VyY2UuVVNFUjpcbiAgICAgICAgICAgICAgICBsZXQgdXNlcjtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB1c2VyID0gbmV3IFVzZXJWYWx1ZShpdGVtLnZhbHVlLmlkLCBpdGVtLnZhbHVlLm5hbWUsIGl0ZW0udmFsdWUuc3VybmFtZSwgaXRlbS52YWx1ZS5lbWFpbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgVXNlckZpZWxkKGl0ZW0uc3RyaW5nSWQsIGl0ZW0ubmFtZSwgaXRlbS5iZWhhdmlvciwgdXNlcixcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5yb2xlcywgaXRlbS5wbGFjZWhvbGRlciwgaXRlbS5kZXNjcmlwdGlvbiwgaXRlbS5sYXlvdXQsIGl0ZW0udmFsaWRhdGlvbnMsIGl0ZW0uY29tcG9uZW50LCBpdGVtLnBhcmVudFRhc2tJZCk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZVJlc291cmNlLlVTRVJfTElTVDpcbiAgICAgICAgICAgICAgICBsZXQgdXNlckxpc3RWYWx1ZSA9IG5ldyBVc2VyTGlzdFZhbHVlKG5ldyBNYXA8c3RyaW5nLCBVc2VyVmFsdWU+KCkpO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udmFsdWUudXNlclZhbHVlcy5mb3JFYWNoKHUgPT4gdXNlckxpc3RWYWx1ZS5hZGRVc2VyVmFsdWUobmV3IFVzZXJWYWx1ZSh1LmlkLCB1Lm5hbWUsIHUuc3VybmFtZSwgdS5lbWFpbCkpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBVc2VyTGlzdEZpZWxkKGl0ZW0uc3RyaW5nSWQsIGl0ZW0ubmFtZSwgaXRlbS5iZWhhdmlvciwgdXNlckxpc3RWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5yb2xlcywgaXRlbS5wbGFjZWhvbGRlciwgaXRlbS5kZXNjcmlwdGlvbiwgaXRlbS5sYXlvdXQsIGl0ZW0udmFsaWRhdGlvbnMsIGl0ZW0uY29tcG9uZW50LCBpdGVtLnBhcmVudFRhc2tJZCk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZVJlc291cmNlLkJVVFRPTjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEJ1dHRvbkZpZWxkKGl0ZW0uc3RyaW5nSWQsIGl0ZW0ubmFtZSwgaXRlbS5iZWhhdmlvciwgaXRlbS52YWx1ZSBhcyBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucGxhY2Vob2xkZXIsIGl0ZW0uZGVzY3JpcHRpb24sIGl0ZW0ubGF5b3V0LCBpdGVtLnZhbGlkYXRpb25zLCBpdGVtLmNvbXBvbmVudCwgaXRlbS5wYXJlbnRUYXNrSWQpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGVSZXNvdXJjZS5GSUxFOlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZUZpZWxkKGl0ZW0uc3RyaW5nSWQsIGl0ZW0ubmFtZSwgaXRlbS5iZWhhdmlvciwgaXRlbS52YWx1ZSA/IGl0ZW0udmFsdWUgOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5wbGFjZWhvbGRlciwgaXRlbS5kZXNjcmlwdGlvbiwgaXRlbS5sYXlvdXQsIHRoaXMucmVzb2x2ZUJ5dGVTaXplKGl0ZW0uY29tcG9uZW50Py5wcm9wZXJ0aWVzPy5tYXhTaXplKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlQWxsb3dlZFR5cGVzKGl0ZW0uY29tcG9uZW50Py5wcm9wZXJ0aWVzPy5hbGxvd1R5cGVzPy5zcGxpdChcIixcIikpLCBpdGVtLnZhbGlkYXRpb25zLCBpdGVtLmNvbXBvbmVudCwgaXRlbS5wYXJlbnRUYXNrSWQpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGVSZXNvdXJjZS5GSUxFX0xJU1Q6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlTGlzdEZpZWxkKGl0ZW0uc3RyaW5nSWQsIGl0ZW0ubmFtZSwgaXRlbS5iZWhhdmlvciwgaXRlbS52YWx1ZSA/IGl0ZW0udmFsdWUgOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5wbGFjZWhvbGRlciwgaXRlbS5kZXNjcmlwdGlvbiwgaXRlbS5sYXlvdXQsIGl0ZW0udmFsaWRhdGlvbnMsIHRoaXMucmVzb2x2ZUJ5dGVTaXplKGl0ZW0uY29tcG9uZW50Py5wcm9wZXJ0aWVzPy5tYXhTaXplKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlQWxsb3dlZFR5cGVzKGl0ZW0uY29tcG9uZW50Py5wcm9wZXJ0aWVzPy5hbGxvd1R5cGVzPy5zcGxpdChcIixcIikpLCBpdGVtLmNvbXBvbmVudCxcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5wYXJlbnRUYXNrSWQpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGVSZXNvdXJjZS5UQVNLX1JFRjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFRhc2tSZWZGaWVsZChpdGVtLnN0cmluZ0lkLCBpdGVtLm5hbWUsIGl0ZW0udmFsdWUgPyBpdGVtLnZhbHVlIDogW10sIGl0ZW0uYmVoYXZpb3IsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucGxhY2Vob2xkZXIsIGl0ZW0uZGVzY3JpcHRpb24sIGl0ZW0ubGF5b3V0LCBpdGVtLnZhbGlkYXRpb25zLCBpdGVtLmNvbXBvbmVudCwgaXRlbS5wYXJlbnRUYXNrSWQpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGVSZXNvdXJjZS5DQVNFX1JFRjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENhc2VSZWZGaWVsZChpdGVtLnN0cmluZ0lkLCBpdGVtLm5hbWUsIGl0ZW0udmFsdWUgPyBpdGVtLnZhbHVlIDogW10sIGl0ZW0uYmVoYXZpb3IsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucGxhY2Vob2xkZXIsIGl0ZW0uZGVzY3JpcHRpb24sIGl0ZW0ubGF5b3V0LCBpdGVtLnZhbGlkYXRpb25zLCBpdGVtLmNvbXBvbmVudCwgaXRlbS5wYXJlbnRUYXNrSWQpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGVSZXNvdXJjZS5GSUxURVI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWx0ZXJGaWVsZChpdGVtLnN0cmluZ0lkLCBpdGVtLm5hbWUsIGl0ZW0udmFsdWUgPz8gJycsIGl0ZW0uZmlsdGVyTWV0YWRhdGEsIGl0ZW0uYWxsb3dlZE5ldHMsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uYmVoYXZpb3IsIGl0ZW0ucGxhY2Vob2xkZXIsIGl0ZW0uZGVzY3JpcHRpb24sIGl0ZW0ubGF5b3V0LCBpdGVtLnZhbGlkYXRpb25zLCBpdGVtLmNvbXBvbmVudCwgaXRlbS5wYXJlbnRUYXNrSWQpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGVSZXNvdXJjZS5JMThOOlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSTE4bkZpZWxkKGl0ZW0uc3RyaW5nSWQsIGl0ZW0ubmFtZSwgaXRlbS52YWx1ZSA/PyB7ZGVmYXVsdFZhbHVlOiAnJ30sIGl0ZW0uYmVoYXZpb3IsIGl0ZW0ucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZGVzY3JpcHRpb24sIGl0ZW0ubGF5b3V0LCBpdGVtLnZhbGlkYXRpb25zLCBpdGVtLmNvbXBvbmVudCk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZVJlc291cmNlLlNUUklOR19DT0xMRUNUSU9OOlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU3RyaW5nQ29sbGVjdGlvbkZpZWxkKGl0ZW0uc3RyaW5nSWQsIGl0ZW0ubmFtZSwgaXRlbS52YWx1ZSA/IGl0ZW0udmFsdWUgOiBbXSwgaXRlbS5iZWhhdmlvcixcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5wbGFjZWhvbGRlciwgaXRlbS5kZXNjcmlwdGlvbiwgaXRlbS5sYXlvdXQsIGl0ZW0udmFsaWRhdGlvbnMsIGl0ZW0uY29tcG9uZW50LCBpdGVtLnBhcmVudFRhc2tJZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzb2x2ZVR5cGUoaXRlbTogRGF0YUZpZWxkPGFueT4pOiBGaWVsZFR5cGVSZXNvdXJjZSB7XG4gICAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgQm9vbGVhbkZpZWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gRmllbGRUeXBlUmVzb3VyY2UuQk9PTEVBTjtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtIGluc3RhbmNlb2YgQnV0dG9uRmllbGQpIHtcbiAgICAgICAgICAgIHJldHVybiBGaWVsZFR5cGVSZXNvdXJjZS5CVVRUT047XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbSBpbnN0YW5jZW9mIFRleHRGaWVsZCkge1xuICAgICAgICAgICAgcmV0dXJuIEZpZWxkVHlwZVJlc291cmNlLlRFWFQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbSBpbnN0YW5jZW9mIE51bWJlckZpZWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gRmllbGRUeXBlUmVzb3VyY2UuTlVNQkVSO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gaW5zdGFuY2VvZiBEYXRlRmllbGQpIHtcbiAgICAgICAgICAgIHJldHVybiBGaWVsZFR5cGVSZXNvdXJjZS5EQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gaW5zdGFuY2VvZiBEYXRlVGltZUZpZWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gRmllbGRUeXBlUmVzb3VyY2UuREFURV9USU1FO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gaW5zdGFuY2VvZiBGaWxlRmllbGQpIHtcbiAgICAgICAgICAgIHJldHVybiBGaWVsZFR5cGVSZXNvdXJjZS5GSUxFO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gaW5zdGFuY2VvZiBGaWxlTGlzdEZpZWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gRmllbGRUeXBlUmVzb3VyY2UuRklMRV9MSVNUO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gaW5zdGFuY2VvZiBVc2VyRmllbGQpIHtcbiAgICAgICAgICAgIHJldHVybiBGaWVsZFR5cGVSZXNvdXJjZS5VU0VSO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gaW5zdGFuY2VvZiBVc2VyTGlzdEZpZWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gRmllbGRUeXBlUmVzb3VyY2UuVVNFUl9MSVNUO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gaW5zdGFuY2VvZiBUYXNrUmVmRmllbGQpIHtcbiAgICAgICAgICAgIHJldHVybiBGaWVsZFR5cGVSZXNvdXJjZS5UQVNLX1JFRjtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtIGluc3RhbmNlb2YgRW51bWVyYXRpb25GaWVsZCB8fCBpdGVtIGluc3RhbmNlb2YgTXVsdGljaG9pY2VGaWVsZCkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW0uZmllbGRUeXBlO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gaW5zdGFuY2VvZiBGaWx0ZXJGaWVsZCkge1xuICAgICAgICAgICAgcmV0dXJuIEZpZWxkVHlwZVJlc291cmNlLkZJTFRFUjtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtIGluc3RhbmNlb2YgSTE4bkZpZWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gRmllbGRUeXBlUmVzb3VyY2UuSTE4TjtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtIGluc3RhbmNlb2YgQ2FzZVJlZkZpZWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gRmllbGRUeXBlUmVzb3VyY2UuQ0FTRV9SRUY7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbSBpbnN0YW5jZW9mIFN0cmluZ0NvbGxlY3Rpb25GaWVsZCkge1xuICAgICAgICAgICAgcmV0dXJuIEZpZWxkVHlwZVJlc291cmNlLlNUUklOR19DT0xMRUNUSU9OO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGZvcm1hdFZhbHVlRm9yQmFja2VuZChmaWVsZDogRGF0YUZpZWxkPGFueT4sIHZhbHVlOiBhbnkpOiBhbnkge1xuICAgICAgICBpZiAodGhpcy5yZXNvbHZlVHlwZShmaWVsZCkgPT09IEZpZWxkVHlwZVJlc291cmNlLlRFWFQgJiYgdmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJlc29sdmVUeXBlKGZpZWxkKSA9PT0gRmllbGRUeXBlUmVzb3VyY2UuVEVYVCAmJiBmaWVsZC5jb21wb25lbnQgJiYgZmllbGQuY29tcG9uZW50Lm5hbWUgPT09ICdwYXNzd29yZCcpIHtcbiAgICAgICAgICAgIHJldHVybiBlbmNvZGVCYXNlNjQodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yZXNvbHZlVHlwZShmaWVsZCkgPT09IEZpZWxkVHlwZVJlc291cmNlLkRBVEUpIHtcbiAgICAgICAgICAgIGlmIChtb21lbnQuaXNNb21lbnQodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJlc29sdmVUeXBlKGZpZWxkKSA9PT0gRmllbGRUeXBlUmVzb3VyY2UuVVNFUikge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmlkO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJlc29sdmVUeXBlKGZpZWxkKSA9PT0gRmllbGRUeXBlUmVzb3VyY2UuVVNFUl9MSVNUKSB7XG4gICAgICAgICAgICByZXR1cm4gWy4uLnZhbHVlLnVzZXJWYWx1ZXMua2V5cygpXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yZXNvbHZlVHlwZShmaWVsZCkgPT09IEZpZWxkVHlwZVJlc291cmNlLkRBVEVfVElNRSkge1xuICAgICAgICAgICAgaWYgKG1vbWVudC5pc01vbWVudCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUuZm9ybWF0KCdERC5NTS5ZWVlZIEhIOm1tOnNzJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCByZXNvbHZlTnVtYmVyQ29tcG9uZW50KG51bWJlckZpZWxkOiBEYXRhRmllbGRSZXNvdXJjZSk6IENvbXBvbmVudCB7XG4gICAgICAgIGxldCBudW1iZXJDb21wb25lbnQgPSB7bmFtZTogJ2RlZmF1bHQnLCBwcm9wZXJ0aWVzOiB1bmRlZmluZWR9O1xuICAgICAgICBpZiAobnVtYmVyRmllbGQuY29tcG9uZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG51bWJlckNvbXBvbmVudCA9IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBudW1iZXJGaWVsZC5jb21wb25lbnQubmFtZSxcbiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiBudW1iZXJGaWVsZC5jb21wb25lbnQucHJvcGVydGllc1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVtYmVyQ29tcG9uZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlc29sdmVzIGBlbnVtZXJhdGlvbmAgYW5kIGBldW51bWVyYXRpb25fbWFwYCBmaWVsZHMgaW50byB0aGVpciBhcHByb3ByaWF0ZSBjbGFzcyBpbnN0YW5jZXNcbiAgICAgKiBAcGFyYW0gZW51bUZpZWxkIGVudW1lcmF0aW9uIGZpZWxkIHJlc291cmNlXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlc29sdmVFbnVtRmllbGQoZW51bUZpZWxkOiBEYXRhRmllbGRSZXNvdXJjZSk6IEVudW1lcmF0aW9uRmllbGQge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gZW51bUZpZWxkLnR5cGUgPT09IEZpZWxkVHlwZVJlc291cmNlLkVOVU1FUkFUSU9OXG4gICAgICAgICAgICA/IHRoaXMucmVzb2x2ZUVudW1DaG9pY2VzKGVudW1GaWVsZClcbiAgICAgICAgICAgIDogdGhpcy5yZXNvbHZlRW51bU9wdGlvbnMoZW51bUZpZWxkKTtcbiAgICAgICAgaWYgKGVudW1GaWVsZC5jb21wb25lbnQgJiYgZW51bUZpZWxkLmNvbXBvbmVudC5uYW1lID09PSAnYXV0b2NvbXBsZXRlX2R5bmFtaWMnKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IER5bmFtaWNFbnVtZXJhdGlvbkZpZWxkKGVudW1GaWVsZC5zdHJpbmdJZCwgZW51bUZpZWxkLm5hbWUsIGVudW1GaWVsZC52YWx1ZSwgb3B0aW9ucyxcbiAgICAgICAgICAgICAgICBlbnVtRmllbGQuYmVoYXZpb3IsIGVudW1GaWVsZC5wbGFjZWhvbGRlciwgZW51bUZpZWxkLmRlc2NyaXB0aW9uLCBlbnVtRmllbGQubGF5b3V0LFxuICAgICAgICAgICAgICAgIGVudW1GaWVsZC50eXBlLCBlbnVtRmllbGQudmFsaWRhdGlvbnMsIGVudW1GaWVsZC5jb21wb25lbnQsIGVudW1GaWVsZC5wYXJlbnRUYXNrSWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBFbnVtZXJhdGlvbkZpZWxkKGVudW1GaWVsZC5zdHJpbmdJZCwgZW51bUZpZWxkLm5hbWUsIGVudW1GaWVsZC52YWx1ZSwgb3B0aW9ucyxcbiAgICAgICAgICAgICAgICBlbnVtRmllbGQuYmVoYXZpb3IsIGVudW1GaWVsZC5wbGFjZWhvbGRlciwgZW51bUZpZWxkLmRlc2NyaXB0aW9uLCBlbnVtRmllbGQubGF5b3V0LFxuICAgICAgICAgICAgICAgIGVudW1GaWVsZC50eXBlLCBlbnVtRmllbGQudmFsaWRhdGlvbnMsIGVudW1GaWVsZC5jb21wb25lbnQsIGVudW1GaWVsZC5wYXJlbnRUYXNrSWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHBhcnNlIGVudW1lcmF0aW9uIG9wdGlvbnMgZnJvbSB0aGUgYGNob2ljZXNgIGF0dHJpYnV0ZVxuICAgICAqIEBwYXJhbSBlbnVtRmllbGQgZW51bWVyYXRpb24gZmllbGQgcmVzb3VyY2Ugb2JqZWN0IHdobydzIGNob2ljZXMgd2Ugd2FudCB0byByZXNvbHZlXG4gICAgICogQHJldHVybnMgdGhlIG9wdGlvbnMgZm9yIHRoZSBlbnVtZXJhdGlvbiBmaWVsZFxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZXNvbHZlRW51bUNob2ljZXMoZW51bUZpZWxkOiBEYXRhRmllbGRSZXNvdXJjZSk6IEFycmF5PEVudW1lcmF0aW9uRmllbGRWYWx1ZT4ge1xuICAgICAgICBjb25zdCBlbnVtQ2hvaWNlcyA9IFtdO1xuICAgICAgICBpZiAoZW51bUZpZWxkLmNob2ljZXMgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgZW51bUZpZWxkLmNob2ljZXMuZm9yRWFjaChpdCA9PiB7XG4gICAgICAgICAgICAgICAgZW51bUNob2ljZXMucHVzaCh7a2V5OiBpdCwgdmFsdWU6IGl0fSBhcyBFbnVtZXJhdGlvbkZpZWxkVmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhlbnVtRmllbGQuY2hvaWNlcykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgICAgIGVudW1DaG9pY2VzLnB1c2goe2tleSwgdmFsdWU6IGVudW1GaWVsZC5jaG9pY2VzW2tleV19IGFzIEVudW1lcmF0aW9uRmllbGRWYWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZW51bUNob2ljZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHBhcnNlIGVudW1lcmF0aW9uIG9wdGlvbnMgZnJvbSB0aGUgYG9wdGlvbnNgIGF0dHJpYnV0ZVxuICAgICAqIEBwYXJhbSBlbnVtRmllbGQgZW51bWVyYXRpb24gZmllbGQgcmVzb3VyY2Ugb2JqZWN0IHdobydzIG9wdGlvbnMgd2Ugd2FudCB0byByZXNvbHZlXG4gICAgICogQHJldHVybnMgdGhlIG9wdGlvbnMgZm9yIHRoZSBlbnVtZXJhdGlvbiBmaWVsZFxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZXNvbHZlRW51bU9wdGlvbnMoZW51bUZpZWxkOiBEYXRhRmllbGRSZXNvdXJjZSk6IEFycmF5PEVudW1lcmF0aW9uRmllbGRWYWx1ZT4ge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoZW51bUZpZWxkLm9wdGlvbnMpLm1hcChlbnRyeSA9PiAoe2tleTogZW50cnlbMF0sIHZhbHVlOiBlbnRyeVsxXX0pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcGFyc2UgbXVsdGljaG9pY2Ugb3B0aW9ucyBmcm9tIHRoZSBgY2hvaWNlc2AgYXR0cmlidXRlXG4gICAgICogQHBhcmFtIG11bHRpRmllbGQgbXVsdGljaG9pY2UgZmllbGQgcmVzb3VyY2Ugb2JqZWN0IHdobydzIG9wdGlvbnMgd2Ugd2FudCB0byByZXNvbHZlXG4gICAgICogQHJldHVybnMgdGhlIG9wdGlvbnMgZm9yIHRoZSBtdWx0aWNob2ljZSBmaWVsZFxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZXNvbHZlTXVsdGljaG9pY2VDaG9pY2VzKG11bHRpRmllbGQ6IERhdGFGaWVsZFJlc291cmNlKTogQXJyYXk8TXVsdGljaG9pY2VGaWVsZFZhbHVlPiB7XG4gICAgICAgIGNvbnN0IGNob2ljZXNNdWx0aTogQXJyYXk8TXVsdGljaG9pY2VGaWVsZFZhbHVlPiA9IFtdO1xuICAgICAgICBpZiAobXVsdGlGaWVsZC5jaG9pY2VzIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgIG11bHRpRmllbGQuY2hvaWNlcy5mb3JFYWNoKGl0ID0+IHtcbiAgICAgICAgICAgICAgICBjaG9pY2VzTXVsdGkucHVzaCh7a2V5OiBpdCwgdmFsdWU6IGl0fSBhcyBNdWx0aWNob2ljZUZpZWxkVmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhtdWx0aUZpZWxkLmNob2ljZXMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgICAgICBjaG9pY2VzTXVsdGkucHVzaCh7a2V5LCB2YWx1ZTogbXVsdGlGaWVsZC5jaG9pY2VzW2tleV19IGFzIE11bHRpY2hvaWNlRmllbGRWYWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2hvaWNlc011bHRpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBwYXJzZSBlbnVtZXJhdGlvbiBvcHRpb25zIGZyb20gdGhlIGBvcHRpb25zYCBhdHRyaWJ1dGVcbiAgICAgKiBAcGFyYW0gbXVsdGlGaWVsZCBtdWx0aWNob2ljZSBmaWVsZCByZXNvdXJjZSBvYmplY3Qgd2hvJ3Mgb3B0aW9ucyB3ZSB3YW50IHRvIHJlc29sdmVcbiAgICAgKiBAcmV0dXJucyB0aGUgb3B0aW9ucyBmb3IgdGhlIG11bHRpY2hvaWNlIGZpZWxkXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlc29sdmVNdWx0aWNob2ljZU9wdGlvbnMobXVsdGlGaWVsZDogRGF0YUZpZWxkUmVzb3VyY2UpOiBBcnJheTxNdWx0aWNob2ljZUZpZWxkVmFsdWU+IHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG11bHRpRmllbGQub3B0aW9ucykubWFwKGVudHJ5ID0+ICh7a2V5OiBlbnRyeVswXSwgdmFsdWU6IGVudHJ5WzFdfSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmb3JtYXRWYWx1ZUZyb21CYWNrZW5kKGZpZWxkOiBEYXRhRmllbGQ8YW55PiwgdmFsdWU6IGFueSk6IGFueSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yZXNvbHZlVHlwZShmaWVsZCkgPT09IEZpZWxkVHlwZVJlc291cmNlLlRFWFQgJiYgZmllbGQuY29tcG9uZW50ICYmIGZpZWxkLmNvbXBvbmVudC5uYW1lID09PSAncGFzc3dvcmQnKSB7XG4gICAgICAgICAgICByZXR1cm4gZGVjb2RlQmFzZTY0KHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yZXNvbHZlVHlwZShmaWVsZCkgPT09IEZpZWxkVHlwZVJlc291cmNlLkRBVEUpIHtcbiAgICAgICAgICAgIHJldHVybiBtb21lbnQobmV3IERhdGUodmFsdWVbMF0sIHZhbHVlWzFdIC0gMSwgdmFsdWVbMl0pKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yZXNvbHZlVHlwZShmaWVsZCkgPT09IEZpZWxkVHlwZVJlc291cmNlLlVTRVIpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgVXNlclZhbHVlKHZhbHVlLmlkLCB2YWx1ZS5uYW1lLCB2YWx1ZS5zdXJuYW1lLCB2YWx1ZS5lbWFpbCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmVzb2x2ZVR5cGUoZmllbGQpID09PSBGaWVsZFR5cGVSZXNvdXJjZS5EQVRFX1RJTUUpIHtcbiAgICAgICAgICAgIHJldHVybiBtb21lbnQobmV3IERhdGUodmFsdWVbMF0sIHZhbHVlWzFdIC0gMSwgdmFsdWVbMl0sIHZhbHVlWzNdLCB2YWx1ZVs0XSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJlc29sdmVUeXBlKGZpZWxkKSA9PT0gRmllbGRUeXBlUmVzb3VyY2UuTVVMVElDSE9JQ0UpIHtcbiAgICAgICAgICAgIGNvbnN0IGFycmF5ID0gW107XG4gICAgICAgICAgICB2YWx1ZS5mb3JFYWNoKHYgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh2LmRlZmF1bHRWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBhcnJheS5wdXNoKHYuZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBhcnJheS5wdXNoKHYpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGFycmF5O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJlc29sdmVUeXBlKGZpZWxkKSA9PT0gRmllbGRUeXBlUmVzb3VyY2UuVVNFUl9MSVNUICYmICEhdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgVXNlckxpc3RWYWx1ZShuZXcgTWFwKHZhbHVlLnVzZXJWYWx1ZXMubWFwKHYgPT4gW3YuaWQsIHZdKSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVzb2x2ZVRleHRWYWx1ZShmaWVsZDogRGF0YUZpZWxkUmVzb3VyY2UsIHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBpZiAoZmllbGQuY29tcG9uZW50ICE9PSB1bmRlZmluZWQgJiYgZmllbGQuY29tcG9uZW50Lm5hbWUgPT09ICdwYXNzd29yZCcgJiYgdmFsdWUgIT09ICcnICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWNvZGVCYXNlNjQodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVzb2x2ZUFsbG93ZWRUeXBlcyhhbGxvd1R5cGVzOiBzdHJpbmdbXSkge1xuICAgICAgICByZXR1cm4gYWxsb3dUeXBlcz8ubGVuZ3RoID4gMCA/IChhbGxvd1R5cGVzLmxlbmd0aCA+IDEgPyBhbGxvd1R5cGVzIGFzIEZpbGVVcGxvYWRNSU1FVHlwZVtdIDogYWxsb3dUeXBlc1swXSkgOiBudWxsXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlc29sdmVCeXRlU2l6ZShieXRlc1NpemUpIHtcbiAgICAgICAgcmV0dXJuIGJ5dGVzU2l6ZSAhPT0gdW5kZWZpbmVkID8gYnl0ZXNTaXplIDogbnVsbDtcbiAgICB9XG59XG4iXX0=
308
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtY29udmVydGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3Rhc2stY29udGVudC9zZXJ2aWNlcy9maWVsZC1jb252ZXJ0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR3pDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUNsRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDekUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBQy9FLE9BQU8sRUFBQyxnQkFBZ0IsRUFBd0IsTUFBTSw4REFBOEQsQ0FBQztBQUNySCxPQUFPLEVBQUMsZ0JBQWdCLEVBQXdCLE1BQU0sOERBQThELENBQUM7QUFDckgsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwwREFBMEQsQ0FBQztBQUN2RixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDekUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBQy9FLE9BQU8sRUFBQyxTQUFTLEVBQXFCLE1BQU0sZ0RBQWdELENBQUM7QUFDN0YsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMERBQTBELENBQUM7QUFDdkYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHFEQUFxRCxDQUFDO0FBRWxGLE9B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R0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzVFO2dCQUNELE9BQU8sSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQ2hGLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzVGLEtBQUssaUJBQWlCLENBQUMsU0FBUztnQkFDNUIsSUFBSSxRQUFRLENBQUM7Z0JBQ2IsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO29CQUNaLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzlHO2dCQUNELE9BQU8sSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUN0RSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzlHLEtBQUssaUJBQWlCLENBQUMsSUFBSTtnQkFDdkIsSUFBSSxJQUFJLENBQUM7Z0JBQ1QsSUFBSSxJQUFJ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QVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDM0U7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRVMsZ0JBQWdCLENBQUMsS0FBd0IsRUFBRSxLQUFhO1FBQzlELElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEtBQUssVUFBVSxJQUFJLEtBQUssS0FBSyxFQUFFLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUM3RyxPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM5QjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFUyxtQkFBbUIsQ0FBQyxVQUFvQjtRQUM5QyxPQUFPLFVBQVUsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFrQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO0lBQ3ZILENBQUM7SUFFUyxlQUFlLENBQUMsU0FBUztRQUMvQixPQUFPLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3RELENBQUM7d0dBclNRLHFCQUFxQjs0R0FBckIscUJBQXFCLGNBRmxCLE1BQU07OzRGQUVULHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEYXRhRmllbGRSZXNvdXJjZX0gZnJvbSAnLi4vbW9kZWwvcmVzb3VyY2UtaW50ZXJmYWNlJztcbmltcG9ydCB7RGF0YUZpZWxkfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9tb2RlbHMvYWJzdHJhY3QtZGF0YS1maWVsZCc7XG5pbXBvcnQge0Jvb2xlYW5GaWVsZH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvYm9vbGVhbi1maWVsZC9tb2RlbHMvYm9vbGVhbi1maWVsZCc7XG5pbXBvcnQge1RleHRGaWVsZH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvdGV4dC1maWVsZC9tb2RlbHMvdGV4dC1maWVsZCc7XG5pbXBvcnQge051bWJlckZpZWxkfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9udW1iZXItZmllbGQvbW9kZWxzL251bWJlci1maWVsZCc7XG5pbXBvcnQge0VudW1lcmF0aW9uRmllbGQsIEVudW1lcmF0aW9uRmllbGRWYWx1ZX0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvZW51bWVyYXRpb24tZmllbGQvbW9kZWxzL2VudW1lcmF0aW9uLWZpZWxkJztcbmltcG9ydCB7TXVsdGljaG9pY2VGaWVsZCwgTXVsdGljaG9pY2VGaWVsZFZhbHVlfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9tdWx0aWNob2ljZS1maWVsZC9tb2RlbHMvbXVsdGljaG9pY2UtZmllbGQnO1xuaW1wb3J0IHtEYXRlRmllbGR9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL2RhdGUtZmllbGQvbW9kZWxzL2RhdGUtZmllbGQnO1xuaW1wb3J0IHtEYXRlVGltZUZpZWxkfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9kYXRlLXRpbWUtZmllbGQvbW9kZWxzL2RhdGUtdGltZS1maWVsZCc7XG5pbXBvcnQge1VzZXJGaWVsZH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvdXNlci1maWVsZC9tb2RlbHMvdXNlci1maWVsZCc7XG5pbXBvcnQge0J1dHRvbkZpZWxkfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9idXR0b24tZmllbGQvbW9kZWxzL2J1dHRvbi1maWVsZCc7XG5pbXBvcnQge0ZpbGVGaWVsZCwgRmlsZVVwbG9hZE1JTUVUeXBlfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9maWxlLWZpZWxkL21vZGVscy9maWxlLWZpZWxkJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7VXNlclZhbHVlfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy91c2VyLWZpZWxkL21vZGVscy91c2VyLXZhbHVlJztcbmltcG9ydCB7RmllbGRUeXBlUmVzb3VyY2V9IGZyb20gJy4uL21vZGVsL2ZpZWxkLXR5cGUtcmVzb3VyY2UnO1xuaW1wb3J0IHtGaWxlTGlzdEZpZWxkfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9maWxlLWxpc3QtZmllbGQvbW9kZWxzL2ZpbGUtbGlzdC1maWVsZCc7XG5pbXBvcnQge1RleHRBcmVhRmllbGR9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL3RleHQtZmllbGQvbW9kZWxzL3RleHQtYXJlYS1maWVsZCc7XG5pbXBvcnQge0NvbXBvbmVudH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvbW9kZWxzL2NvbXBvbmVudCc7XG5pbXBvcnQge1Rhc2tSZWZGaWVsZH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvdGFzay1yZWYtZmllbGQvbW9kZWwvdGFzay1yZWYtZmllbGQnO1xuaW1wb3J0IHtEeW5hbWljRW51bWVyYXRpb25GaWVsZH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvZW51bWVyYXRpb24tZmllbGQvbW9kZWxzL2R5bmFtaWMtZW51bWVyYXRpb24tZmllbGQnO1xuaW1wb3J0IHtGaWx0ZXJGaWVsZH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvZmlsdGVyLWZpZWxkL21vZGVscy9maWx0ZXItZmllbGQnO1xuaW1wb3J0IHtJMThuRmllbGR9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL2kxOG4tZmllbGQvbW9kZWxzL2kxOG4tZmllbGQnO1xuaW1wb3J0IHtVc2VyTGlzdEZpZWxkfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy91c2VyLWxpc3QtZmllbGQvbW9kZWxzL3VzZXItbGlzdC1maWVsZCc7XG5pbXBvcnQge1VzZXJMaXN0VmFsdWV9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL3VzZXItbGlzdC1maWVsZC9tb2RlbHMvdXNlci1saXN0LXZhbHVlJztcbmltcG9ydCB7ZGVjb2RlQmFzZTY0LCBlbmNvZGVCYXNlNjR9IGZyb20gXCIuLi8uLi91dGlsaXR5L2Jhc2U2NFwiO1xuaW1wb3J0IHtDYXNlUmVmRmllbGR9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL2Nhc2UtcmVmLWZpZWxkL21vZGVsL2Nhc2UtcmVmLWZpZWxkJztcbmltcG9ydCB7U3RyaW5nQ29sbGVjdGlvbkZpZWxkfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9zdHJpbmctY29sbGVjdGlvbi1maWVsZC9tb2RlbHMvc3RyaW5nLWNvbGxlY3Rpb24tZmllbGQnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEZpZWxkQ29udmVydGVyU2VydmljZSB7XG4gICAgcHJpdmF0ZSB0ZXh0RmllbGROYW1lcyA9IFsgJ3JpY2h0ZXh0YXJlYScsICdodG1sdGV4dGFyZWEnLCAnZWRpdG9yJywgJ2h0bWxFZGl0b3InIF1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgIH1cblxuICAgIHB1YmxpYyB0b0NsYXNzKGl0ZW06IERhdGFGaWVsZFJlc291cmNlKTogRGF0YUZpZWxkPGFueT4ge1xuICAgICAgICBzd2l0Y2ggKGl0ZW0udHlwZSkge1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGVSZXNvdXJjZS5CT09MRUFOOlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQm9vbGVhbkZpZWxkKGl0ZW0uc3RyaW5nSWQsIGl0ZW0ubmFtZSwgaXRlbS52YWx1ZSBhcyBib29sZWFuLCBpdGVtLmJlaGF2aW9yLFxuICAgICAgICAgICAgICAgICAgICBpdGVtLnBsYWNlaG9sZGVyLCBpdGVtLmRlc2NyaXB0aW9uLCBpdGVtLmxheW91dCwgaXRlbS52YWxpZGF0aW9ucywgaXRlbS5jb21wb25lbnQsIGl0ZW0ucGFyZW50VGFza0lkKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlUmVzb3VyY2UuVEVYVDpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50ZXh0RmllbGROYW1lcy5pbmNsdWRlcyhpdGVtLmNvbXBvbmVudD8ubmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBUZXh0QXJlYUZpZWxkKGl0ZW0uc3RyaW5nSWQsIGl0ZW0ubmFtZSwgdGhpcy5yZXNvbHZlVGV4dFZhbHVlKGl0ZW0sIGl0ZW0udmFsdWUpLCBpdGVtLmJlaGF2aW9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5wbGFjZWhvbGRlciwgaXRlbS5kZXNjcmlwdGlvbiwgaXRlbS5sYXlvdXQsIGl0ZW0udmFsaWRhdGlvbnMsIGl0ZW0uY29tcG9uZW50LCBpdGVtLnBhcmVudFRhc2tJZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgVGV4dEZpZWxkKGl0ZW0uc3RyaW5nSWQsIGl0ZW0ubmFtZSwgdGhpcy5yZXNvbHZlVGV4dFZhbHVlKGl0ZW0sIGl0ZW0udmFsdWUpLCBpdGVtLmJlaGF2aW9yLCBpdGVtLnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICBpdGVtLmRlc2NyaXB0aW9uLCBpdGVtLmxheW91dCwgaXRlbS52YWxpZGF0aW9ucywgaXRlbS5jb21wb25lbnQsIGl0ZW0ucGFyZW50VGFza0lkKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlUmVzb3VyY2UuTlVNQkVSOlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTnVtYmVyRmllbGQoaXRlbS5zdHJpbmdJZCwgaXRlbS5uYW1lLCBpdGVtLnZhbHVlIGFzIG51bWJlciwgaXRlbS5iZWhhdmlvciwgaXRlbS52YWxpZGF0aW9ucywgaXRlbS5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5kZXNjcmlwdGlvbiwgaXRlbS5sYXlvdXQsIGl0ZW0uZm9ybWF0RmlsdGVyLCB0aGlzLnJlc29sdmVOdW1iZXJDb21wb25lbnQoaXRlbSksIGl0ZW0ucGFyZW50VGFza0lkKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlUmVzb3VyY2UuRU5VTUVSQVRJT046XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZVJlc291cmNlLkVOVU1FUkFUSU9OX01BUDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXNvbHZlRW51bUZpZWxkKGl0ZW0pO1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGVSZXNvdXJjZS5NVUxUSUNIT0lDRTpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE11bHRpY2hvaWNlRmllbGQoaXRlbS5zdHJpbmdJZCwgaXRlbS5uYW1lLCBpdGVtLnZhbHVlLCB0aGlzLnJlc29sdmVNdWx0aWNob2ljZUNob2ljZXMoaXRlbSksXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uYmVoYXZpb3IsIGl0ZW0ucGxhY2Vob2xkZXIsIGl0ZW0uZGVzY3JpcHRpb24sIGl0ZW0ubGF5b3V0LCBpdGVtLnR5cGUsIGl0ZW0udmFsaWRhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uY29tcG9uZW50LCBpdGVtLnBhcmVudFRhc2tJZCk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZVJlc291cmNlLk1VTFRJQ0hPSUNFX01BUDpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE11bHRpY2hvaWNlRmllbGQoaXRlbS5zdHJpbmdJZCwgaXRlbS5uYW1lLCBpdGVtLnZhbHVlLCB0aGlzLnJlc29sdmVNdWx0aWNob2ljZU9wdGlvbnMoaXRlbSksXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uYmVoYXZpb3IsIGl0ZW0ucGxhY2Vob2xkZXIsIGl0ZW0uZGVzY3JpcHRpb24sIGl0ZW0ubGF5b3V0LFxuICAgICAgICAgICAgICAgICAgICBpdGVtLnR5cGUsIGl0ZW0udmFsaWRhdGlvbnMsIGl0ZW0uY29tcG9uZW50LCBpdGVtLnBhcmVudFRhc2tJZCk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZVJlc291cmNlLkRBVEU6XG4gICAgICAgICAgICAgICAgbGV0IGRhdGU7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0udmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZSA9IG1vbWVudChuZXcgRGF0ZShpdGVtLnZhbHVlWzBdLCBpdGVtLnZhbHVlWzFdIC0gMSwgaXRlbS52YWx1ZVsyXSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERhdGVGaWVsZChpdGVtLnN0cmluZ0lkLCBpdGVtLm5hbWUsIGRhdGUsIGl0ZW0uYmVoYXZpb3IsIGl0ZW0ucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZGVzY3JpcHRpb24sIGl0ZW0ubGF5b3V0LCBpdGVtLnZhbGlkYXRpb25zLCBpdGVtLmNvbXBvbmVudCwgaXRlbS5wYXJlbnRUYXNrSWQpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGVSZXNvdXJjZS5EQVRFX1RJTUU6XG4gICAgICAgICAgICAgICAgbGV0IGRhdGVUaW1lO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGVUaW1lID0gbW9tZW50KG5ldyBEYXRlKGl0ZW0udmFsdWVbMF0sIGl0ZW0udmFsdWVbMV0gLSAxLCBpdGVtLnZhbHVlWzJdLCBpdGVtLnZhbHVlWzNdLCBpdGVtLnZhbHVlWzRdKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWVGaWVsZChpdGVtLnN0cmluZ0lkLCBpdGVtLm5hbWUsIGRhdGVUaW1lLCBpdGVtLmJlaGF2aW9yLFxuICAgICAgICAgICAgICAgICAgICBpdGVtLnBsYWNlaG9sZGVyLCBpdGVtLmRlc2NyaXB0aW9uLCBpdGVtLmxheW91dCwgaXRlbS52YWxpZGF0aW9ucywgaXRlbS5jb21wb25lbnQsIGl0ZW0ucGFyZW50VGFza0lkKTtcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlUmVzb3VyY2UuVVNFUjpcbiAgICAgICAgICAgICAgICBsZXQgdXNlcjtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB1c2VyID0gbmV3IFVzZXJWYWx1ZShpdGVtLnZhbHVlLmlkLCBpdGVtLnZhbHVlLmZpcnN0TmFtZSwgaXRlbS52YWx1ZS5sYXN0TmFtZSwgaXRlbS52YWx1ZS5lbWFpbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgVXNlckZpZWxkKGl0ZW0uc3RyaW5nSWQsIGl0ZW0ubmFtZSwgaXRlbS5iZWhhdmlvciwgdXNlcixcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5yb2xlcywgaXRlbS5wbGFjZWhvbGRlciwgaXRlbS5kZXNjcmlwdGlvbiwgaXRlbS5sYXlvdXQsIGl0ZW0udmFsaWRhdGlvbnMsIGl0ZW0uY29tcG9uZW50LCBpdGVtLnBhcmVudFRhc2tJZCk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZVJlc291cmNlLlVTRVJfTElTVDpcbiAgICAgICAgICAgICAgICBsZXQgdXNlckxpc3RWYWx1ZSA9IG5ldyBVc2VyTGlzdFZhbHVlKG5ldyBNYXA8c3RyaW5nLCBVc2VyVmFsdWU+KCkpO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udmFsdWUudXNlclZhbHVlcy5mb3JFYWNoKHUgPT4gdXNlckxpc3RWYWx1ZS5hZGRVc2VyVmFsdWUobmV3IFVzZXJWYWx1ZSh1LmlkLCB1LmZpcnN0TmFtZSwgdS5sYXN0TmFtZSwgdS5lbWFpbCkpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBVc2VyTGlzdEZpZWxkKGl0ZW0uc3RyaW5nSWQsIGl0ZW0ubmFtZSwgaXRlbS5iZWhhdmlvciwgdXNlckxpc3RWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5yb2xlcywgaXRlbS5wbGFjZWhvbGRlciwgaXRlbS5kZXNjcmlwdGlvbiwgaXRlbS5sYXlvdXQsIGl0ZW0udmFsaWRhdGlvbnMsIGl0ZW0uY29tcG9uZW50LCBpdGVtLnBhcmVudFRhc2tJZCk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZVJlc291cmNlLkJVVFRPTjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEJ1dHRvbkZpZWxkKGl0ZW0uc3RyaW5nSWQsIGl0ZW0ubmFtZSwgaXRlbS5iZWhhdmlvciwgaXRlbS52YWx1ZSBhcyBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucGxhY2Vob2xkZXIsIGl0ZW0uZGVzY3JpcHRpb24sIGl0ZW0ubGF5b3V0LCBpdGVtLnZhbGlkYXRpb25zLCBpdGVtLmNvbXBvbmVudCwgaXRlbS5wYXJlbnRUYXNrSWQpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGVSZXNvdXJjZS5GSUxFOlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZUZpZWxkKGl0ZW0uc3RyaW5nSWQsIGl0ZW0ubmFtZSwgaXRlbS5iZWhhdmlvciwgaXRlbS52YWx1ZSA/IGl0ZW0udmFsdWUgOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5wbGFjZWhvbGRlciwgaXRlbS5kZXNjcmlwdGlvbiwgaXRlbS5sYXlvdXQsIHRoaXMucmVzb2x2ZUJ5dGVTaXplKGl0ZW0uY29tcG9uZW50Py5wcm9wZXJ0aWVzPy5tYXhTaXplKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlQWxsb3dlZFR5cGVzKGl0ZW0uY29tcG9uZW50Py5wcm9wZXJ0aWVzPy5hbGxvd1R5cGVzPy5zcGxpdChcIixcIikpLCBpdGVtLnZhbGlkYXRpb25zLCBpdGVtLmNvbXBvbmVudCwgaXRlbS5wYXJlbnRUYXNrSWQpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGVSZXNvdXJjZS5GSUxFX0xJU1Q6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlTGlzdEZpZWxkKGl0ZW0uc3RyaW5nSWQsIGl0ZW0ubmFtZSwgaXRlbS5iZWhhdmlvciwgaXRlbS52YWx1ZSA/IGl0ZW0udmFsdWUgOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5wbGFjZWhvbGRlciwgaXRlbS5kZXNjcmlwdGlvbiwgaXRlbS5sYXlvdXQsIGl0ZW0udmFsaWRhdGlvbnMsIHRoaXMucmVzb2x2ZUJ5dGVTaXplKGl0ZW0uY29tcG9uZW50Py5wcm9wZXJ0aWVzPy5tYXhTaXplKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlQWxsb3dlZFR5cGVzKGl0ZW0uY29tcG9uZW50Py5wcm9wZXJ0aWVzPy5hbGxvd1R5cGVzPy5zcGxpdChcIixcIikpLCBpdGVtLmNvbXBvbmVudCxcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5wYXJlbnRUYXNrSWQpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGVSZXNvdXJjZS5UQVNLX1JFRjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFRhc2tSZWZGaWVsZChpdGVtLnN0cmluZ0lkLCBpdGVtLm5hbWUsIGl0ZW0udmFsdWUgPyBpdGVtLnZhbHVlIDogW10sIGl0ZW0uYmVoYXZpb3IsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucGxhY2Vob2xkZXIsIGl0ZW0uZGVzY3JpcHRpb24sIGl0ZW0ubGF5b3V0LCBpdGVtLnZhbGlkYXRpb25zLCBpdGVtLmNvbXBvbmVudCwgaXRlbS5wYXJlbnRUYXNrSWQpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGVSZXNvdXJjZS5DQVNFX1JFRjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENhc2VSZWZGaWVsZChpdGVtLnN0cmluZ0lkLCBpdGVtLm5hbWUsIGl0ZW0udmFsdWUgPyBpdGVtLnZhbHVlIDogW10sIGl0ZW0uYmVoYXZpb3IsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucGxhY2Vob2xkZXIsIGl0ZW0uZGVzY3JpcHRpb24sIGl0ZW0ubGF5b3V0LCBpdGVtLnZhbGlkYXRpb25zLCBpdGVtLmNvbXBvbmVudCwgaXRlbS5wYXJlbnRUYXNrSWQpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGVSZXNvdXJjZS5GSUxURVI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWx0ZXJGaWVsZChpdGVtLnN0cmluZ0lkLCBpdGVtLm5hbWUsIGl0ZW0udmFsdWUgPz8gJycsIGl0ZW0uZmlsdGVyTWV0YWRhdGEsIGl0ZW0uYWxsb3dlZE5ldHMsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uYmVoYXZpb3IsIGl0ZW0ucGxhY2Vob2xkZXIsIGl0ZW0uZGVzY3JpcHRpb24sIGl0ZW0ubGF5b3V0LCBpdGVtLnZhbGlkYXRpb25zLCBpdGVtLmNvbXBvbmVudCwgaXRlbS5wYXJlbnRUYXNrSWQpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGVSZXNvdXJjZS5JMThOOlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSTE4bkZpZWxkKGl0ZW0uc3RyaW5nSWQsIGl0ZW0ubmFtZSwgaXRlbS52YWx1ZSA/PyB7ZGVmYXVsdFZhbHVlOiAnJ30sIGl0ZW0uYmVoYXZpb3IsIGl0ZW0ucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZGVzY3JpcHRpb24sIGl0ZW0ubGF5b3V0LCBpdGVtLnZhbGlkYXRpb25zLCBpdGVtLmNvbXBvbmVudCk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZVJlc291cmNlLlNUUklOR19DT0xMRUNUSU9OOlxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU3RyaW5nQ29sbGVjdGlvbkZpZWxkKGl0ZW0uc3RyaW5nSWQsIGl0ZW0ubmFtZSwgaXRlbS52YWx1ZSA/IGl0ZW0udmFsdWUgOiBbXSwgaXRlbS5iZWhhdmlvcixcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5wbGFjZWhvbGRlciwgaXRlbS5kZXNjcmlwdGlvbiwgaXRlbS5sYXlvdXQsIGl0ZW0udmFsaWRhdGlvbnMsIGl0ZW0uY29tcG9uZW50LCBpdGVtLnBhcmVudFRhc2tJZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzb2x2ZVR5cGUoaXRlbTogRGF0YUZpZWxkPGFueT4pOiBGaWVsZFR5cGVSZXNvdXJjZSB7XG4gICAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgQm9vbGVhbkZpZWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gRmllbGRUeXBlUmVzb3VyY2UuQk9PTEVBTjtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtIGluc3RhbmNlb2YgQnV0dG9uRmllbGQpIHtcbiAgICAgICAgICAgIHJldHVybiBGaWVsZFR5cGVSZXNvdXJjZS5CVVRUT047XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbSBpbnN0YW5jZW9mIFRleHRGaWVsZCkge1xuICAgICAgICAgICAgcmV0dXJuIEZpZWxkVHlwZVJlc291cmNlLlRFWFQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbSBpbnN0YW5jZW9mIE51bWJlckZpZWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gRmllbGRUeXBlUmVzb3VyY2UuTlVNQkVSO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gaW5zdGFuY2VvZiBEYXRlRmllbGQpIHtcbiAgICAgICAgICAgIHJldHVybiBGaWVsZFR5cGVSZXNvdXJjZS5EQVRFO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gaW5zdGFuY2VvZiBEYXRlVGltZUZpZWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gRmllbGRUeXBlUmVzb3VyY2UuREFURV9USU1FO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gaW5zdGFuY2VvZiBGaWxlRmllbGQpIHtcbiAgICAgICAgICAgIHJldHVybiBGaWVsZFR5cGVSZXNvdXJjZS5GSUxFO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gaW5zdGFuY2VvZiBGaWxlTGlzdEZpZWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gRmllbGRUeXBlUmVzb3VyY2UuRklMRV9MSVNUO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gaW5zdGFuY2VvZiBVc2VyRmllbGQpIHtcbiAgICAgICAgICAgIHJldHVybiBGaWVsZFR5cGVSZXNvdXJjZS5VU0VSO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gaW5zdGFuY2VvZiBVc2VyTGlzdEZpZWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gRmllbGRUeXBlUmVzb3VyY2UuVVNFUl9MSVNUO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gaW5zdGFuY2VvZiBUYXNrUmVmRmllbGQpIHtcbiAgICAgICAgICAgIHJldHVybiBGaWVsZFR5cGVSZXNvdXJjZS5UQVNLX1JFRjtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtIGluc3RhbmNlb2YgRW51bWVyYXRpb25GaWVsZCB8fCBpdGVtIGluc3RhbmNlb2YgTXVsdGljaG9pY2VGaWVsZCkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW0uZmllbGRUeXBlO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gaW5zdGFuY2VvZiBGaWx0ZXJGaWVsZCkge1xuICAgICAgICAgICAgcmV0dXJuIEZpZWxkVHlwZVJlc291cmNlLkZJTFRFUjtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtIGluc3RhbmNlb2YgSTE4bkZpZWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gRmllbGRUeXBlUmVzb3VyY2UuSTE4TjtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtIGluc3RhbmNlb2YgQ2FzZVJlZkZpZWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gRmllbGRUeXBlUmVzb3VyY2UuQ0FTRV9SRUY7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbSBpbnN0YW5jZW9mIFN0cmluZ0NvbGxlY3Rpb25GaWVsZCkge1xuICAgICAgICAgICAgcmV0dXJuIEZpZWxkVHlwZVJlc291cmNlLlNUUklOR19DT0xMRUNUSU9OO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGZvcm1hdFZhbHVlRm9yQmFja2VuZChmaWVsZDogRGF0YUZpZWxkPGFueT4sIHZhbHVlOiBhbnkpOiBhbnkge1xuICAgICAgICBpZiAodGhpcy5yZXNvbHZlVHlwZShmaWVsZCkgPT09IEZpZWxkVHlwZVJlc291cmNlLlRFWFQgJiYgdmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJlc29sdmVUeXBlKGZpZWxkKSA9PT0gRmllbGRUeXBlUmVzb3VyY2UuVEVYVCAmJiBmaWVsZC5jb21wb25lbnQgJiYgZmllbGQuY29tcG9uZW50Lm5hbWUgPT09ICdwYXNzd29yZCcpIHtcbiAgICAgICAgICAgIHJldHVybiBlbmNvZGVCYXNlNjQodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yZXNvbHZlVHlwZShmaWVsZCkgPT09IEZpZWxkVHlwZVJlc291cmNlLkRBVEUpIHtcbiAgICAgICAgICAgIGlmIChtb21lbnQuaXNNb21lbnQodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJlc29sdmVUeXBlKGZpZWxkKSA9PT0gRmllbGRUeXBlUmVzb3VyY2UuVVNFUikge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmlkO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJlc29sdmVUeXBlKGZpZWxkKSA9PT0gRmllbGRUeXBlUmVzb3VyY2UuVVNFUl9MSVNUKSB7XG4gICAgICAgICAgICByZXR1cm4gWy4uLnZhbHVlLnVzZXJWYWx1ZXMua2V5cygpXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yZXNvbHZlVHlwZShmaWVsZCkgPT09IEZpZWxkVHlwZVJlc291cmNlLkRBVEVfVElNRSkge1xuICAgICAgICAgICAgaWYgKG1vbWVudC5pc01vbWVudCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUuZm9ybWF0KCdERC5NTS5ZWVlZIEhIOm1tOnNzJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCByZXNvbHZlTnVtYmVyQ29tcG9uZW50KG51bWJlckZpZWxkOiBEYXRhRmllbGRSZXNvdXJjZSk6IENvbXBvbmVudCB7XG4gICAgICAgIGxldCBudW1iZXJDb21wb25lbnQgPSB7bmFtZTogJ2RlZmF1bHQnLCBwcm9wZXJ0aWVzOiB1bmRlZmluZWR9O1xuICAgICAgICBpZiAobnVtYmVyRmllbGQuY29tcG9uZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG51bWJlckNvbXBvbmVudCA9IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBudW1iZXJGaWVsZC5jb21wb25lbnQubmFtZSxcbiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiBudW1iZXJGaWVsZC5jb21wb25lbnQucHJvcGVydGllc1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVtYmVyQ29tcG9uZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlc29sdmVzIGBlbnVtZXJhdGlvbmAgYW5kIGBldW51bWVyYXRpb25fbWFwYCBmaWVsZHMgaW50byB0aGVpciBhcHByb3ByaWF0ZSBjbGFzcyBpbnN0YW5jZXNcbiAgICAgKiBAcGFyYW0gZW51bUZpZWxkIGVudW1lcmF0aW9uIGZpZWxkIHJlc291cmNlXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlc29sdmVFbnVtRmllbGQoZW51bUZpZWxkOiBEYXRhRmllbGRSZXNvdXJjZSk6IEVudW1lcmF0aW9uRmllbGQge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gZW51bUZpZWxkLnR5cGUgPT09IEZpZWxkVHlwZVJlc291cmNlLkVOVU1FUkFUSU9OXG4gICAgICAgICAgICA/IHRoaXMucmVzb2x2ZUVudW1DaG9pY2VzKGVudW1GaWVsZClcbiAgICAgICAgICAgIDogdGhpcy5yZXNvbHZlRW51bU9wdGlvbnMoZW51bUZpZWxkKTtcbiAgICAgICAgaWYgKGVudW1GaWVsZC5jb21wb25lbnQgJiYgZW51bUZpZWxkLmNvbXBvbmVudC5uYW1lID09PSAnYXV0b2NvbXBsZXRlX2R5bmFtaWMnKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IER5bmFtaWNFbnVtZXJhdGlvbkZpZWxkKGVudW1GaWVsZC5zdHJpbmdJZCwgZW51bUZpZWxkLm5hbWUsIGVudW1GaWVsZC52YWx1ZSwgb3B0aW9ucyxcbiAgICAgICAgICAgICAgICBlbnVtRmllbGQuYmVoYXZpb3IsIGVudW1GaWVsZC5wbGFjZWhvbGRlciwgZW51bUZpZWxkLmRlc2NyaXB0aW9uLCBlbnVtRmllbGQubGF5b3V0LFxuICAgICAgICAgICAgICAgIGVudW1GaWVsZC50eXBlLCBlbnVtRmllbGQudmFsaWRhdGlvbnMsIGVudW1GaWVsZC5jb21wb25lbnQsIGVudW1GaWVsZC5wYXJlbnRUYXNrSWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBFbnVtZXJhdGlvbkZpZWxkKGVudW1GaWVsZC5zdHJpbmdJZCwgZW51bUZpZWxkLm5hbWUsIGVudW1GaWVsZC52YWx1ZSwgb3B0aW9ucyxcbiAgICAgICAgICAgICAgICBlbnVtRmllbGQuYmVoYXZpb3IsIGVudW1GaWVsZC5wbGFjZWhvbGRlciwgZW51bUZpZWxkLmRlc2NyaXB0aW9uLCBlbnVtRmllbGQubGF5b3V0LFxuICAgICAgICAgICAgICAgIGVudW1GaWVsZC50eXBlLCBlbnVtRmllbGQudmFsaWRhdGlvbnMsIGVudW1GaWVsZC5jb21wb25lbnQsIGVudW1GaWVsZC5wYXJlbnRUYXNrSWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHBhcnNlIGVudW1lcmF0aW9uIG9wdGlvbnMgZnJvbSB0aGUgYGNob2ljZXNgIGF0dHJpYnV0ZVxuICAgICAqIEBwYXJhbSBlbnVtRmllbGQgZW51bWVyYXRpb24gZmllbGQgcmVzb3VyY2Ugb2JqZWN0IHdobydzIGNob2ljZXMgd2Ugd2FudCB0byByZXNvbHZlXG4gICAgICogQHJldHVybnMgdGhlIG9wdGlvbnMgZm9yIHRoZSBlbnVtZXJhdGlvbiBmaWVsZFxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZXNvbHZlRW51bUNob2ljZXMoZW51bUZpZWxkOiBEYXRhRmllbGRSZXNvdXJjZSk6IEFycmF5PEVudW1lcmF0aW9uRmllbGRWYWx1ZT4ge1xuICAgICAgICBjb25zdCBlbnVtQ2hvaWNlcyA9IFtdO1xuICAgICAgICBpZiAoZW51bUZpZWxkLmNob2ljZXMgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgZW51bUZpZWxkLmNob2ljZXMuZm9yRWFjaChpdCA9PiB7XG4gICAgICAgICAgICAgICAgZW51bUNob2ljZXMucHVzaCh7a2V5OiBpdCwgdmFsdWU6IGl0fSBhcyBFbnVtZXJhdGlvbkZpZWxkVmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhlbnVtRmllbGQuY2hvaWNlcykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgICAgIGVudW1DaG9pY2VzLnB1c2goe2tleSwgdmFsdWU6IGVudW1GaWVsZC5jaG9pY2VzW2tleV19IGFzIEVudW1lcmF0aW9uRmllbGRWYWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZW51bUNob2ljZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHBhcnNlIGVudW1lcmF0aW9uIG9wdGlvbnMgZnJvbSB0aGUgYG9wdGlvbnNgIGF0dHJpYnV0ZVxuICAgICAqIEBwYXJhbSBlbnVtRmllbGQgZW51bWVyYXRpb24gZmllbGQgcmVzb3VyY2Ugb2JqZWN0IHdobydzIG9wdGlvbnMgd2Ugd2FudCB0byByZXNvbHZlXG4gICAgICogQHJldHVybnMgdGhlIG9wdGlvbnMgZm9yIHRoZSBlbnVtZXJhdGlvbiBmaWVsZFxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZXNvbHZlRW51bU9wdGlvbnMoZW51bUZpZWxkOiBEYXRhRmllbGRSZXNvdXJjZSk6IEFycmF5PEVudW1lcmF0aW9uRmllbGRWYWx1ZT4ge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoZW51bUZpZWxkLm9wdGlvbnMpLm1hcChlbnRyeSA9PiAoe2tleTogZW50cnlbMF0sIHZhbHVlOiBlbnRyeVsxXX0pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcGFyc2UgbXVsdGljaG9pY2Ugb3B0aW9ucyBmcm9tIHRoZSBgY2hvaWNlc2AgYXR0cmlidXRlXG4gICAgICogQHBhcmFtIG11bHRpRmllbGQgbXVsdGljaG9pY2UgZmllbGQgcmVzb3VyY2Ugb2JqZWN0IHdobydzIG9wdGlvbnMgd2Ugd2FudCB0byByZXNvbHZlXG4gICAgICogQHJldHVybnMgdGhlIG9wdGlvbnMgZm9yIHRoZSBtdWx0aWNob2ljZSBmaWVsZFxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZXNvbHZlTXVsdGljaG9pY2VDaG9pY2VzKG11bHRpRmllbGQ6IERhdGFGaWVsZFJlc291cmNlKTogQXJyYXk8TXVsdGljaG9pY2VGaWVsZFZhbHVlPiB7XG4gICAgICAgIGNvbnN0IGNob2ljZXNNdWx0aTogQXJyYXk8TXVsdGljaG9pY2VGaWVsZFZhbHVlPiA9IFtdO1xuICAgICAgICBpZiAobXVsdGlGaWVsZC5jaG9pY2VzIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgIG11bHRpRmllbGQuY2hvaWNlcy5mb3JFYWNoKGl0ID0+IHtcbiAgICAgICAgICAgICAgICBjaG9pY2VzTXVsdGkucHVzaCh7a2V5OiBpdCwgdmFsdWU6IGl0fSBhcyBNdWx0aWNob2ljZUZpZWxkVmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhtdWx0aUZpZWxkLmNob2ljZXMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgICAgICBjaG9pY2VzTXVsdGkucHVzaCh7a2V5LCB2YWx1ZTogbXVsdGlGaWVsZC5jaG9pY2VzW2tleV19IGFzIE11bHRpY2hvaWNlRmllbGRWYWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2hvaWNlc011bHRpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBwYXJzZSBlbnVtZXJhdGlvbiBvcHRpb25zIGZyb20gdGhlIGBvcHRpb25zYCBhdHRyaWJ1dGVcbiAgICAgKiBAcGFyYW0gbXVsdGlGaWVsZCBtdWx0aWNob2ljZSBmaWVsZCByZXNvdXJjZSBvYmplY3Qgd2hvJ3Mgb3B0aW9ucyB3ZSB3YW50IHRvIHJlc29sdmVcbiAgICAgKiBAcmV0dXJucyB0aGUgb3B0aW9ucyBmb3IgdGhlIG11bHRpY2hvaWNlIGZpZWxkXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlc29sdmVNdWx0aWNob2ljZU9wdGlvbnMobXVsdGlGaWVsZDogRGF0YUZpZWxkUmVzb3VyY2UpOiBBcnJheTxNdWx0aWNob2ljZUZpZWxkVmFsdWU+IHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG11bHRpRmllbGQub3B0aW9ucykubWFwKGVudHJ5ID0+ICh7a2V5OiBlbnRyeVswXSwgdmFsdWU6IGVudHJ5WzFdfSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmb3JtYXRWYWx1ZUZyb21CYWNrZW5kKGZpZWxkOiBEYXRhRmllbGQ8YW55PiwgdmFsdWU6IGFueSk6IGFueSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yZXNvbHZlVHlwZShmaWVsZCkgPT09IEZpZWxkVHlwZVJlc291cmNlLlRFWFQgJiYgZmllbGQuY29tcG9uZW50ICYmIGZpZWxkLmNvbXBvbmVudC5uYW1lID09PSAncGFzc3dvcmQnKSB7XG4gICAgICAgICAgICByZXR1cm4gZGVjb2RlQmFzZTY0KHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yZXNvbHZlVHlwZShmaWVsZCkgPT09IEZpZWxkVHlwZVJlc291cmNlLkRBVEUpIHtcbiAgICAgICAgICAgIHJldHVybiBtb21lbnQobmV3IERhdGUodmFsdWVbMF0sIHZhbHVlWzFdIC0gMSwgdmFsdWVbMl0pKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yZXNvbHZlVHlwZShmaWVsZCkgPT09IEZpZWxkVHlwZVJlc291cmNlLlVTRVIpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgVXNlclZhbHVlKHZhbHVlLmlkLCB2YWx1ZS5maXJzdE5hbWUsIHZhbHVlLmxhc3ROYW1lLCB2YWx1ZS5lbWFpbCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmVzb2x2ZVR5cGUoZmllbGQpID09PSBGaWVsZFR5cGVSZXNvdXJjZS5EQVRFX1RJTUUpIHtcbiAgICAgICAgICAgIHJldHVybiBtb21lbnQobmV3IERhdGUodmFsdWVbMF0sIHZhbHVlWzFdIC0gMSwgdmFsdWVbMl0sIHZhbHVlWzNdLCB2YWx1ZVs0XSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJlc29sdmVUeXBlKGZpZWxkKSA9PT0gRmllbGRUeXBlUmVzb3VyY2UuTVVMVElDSE9JQ0UpIHtcbiAgICAgICAgICAgIGNvbnN0IGFycmF5ID0gW107XG4gICAgICAgICAgICB2YWx1ZS5mb3JFYWNoKHYgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh2LmRlZmF1bHRWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBhcnJheS5wdXNoKHYuZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBhcnJheS5wdXNoKHYpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGFycmF5O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJlc29sdmVUeXBlKGZpZWxkKSA9PT0gRmllbGRUeXBlUmVzb3VyY2UuVVNFUl9MSVNUICYmICEhdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgVXNlckxpc3RWYWx1ZShuZXcgTWFwKHZhbHVlLnVzZXJWYWx1ZXMubWFwKHYgPT4gW3YuaWQsIHZdKSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVzb2x2ZVRleHRWYWx1ZShmaWVsZDogRGF0YUZpZWxkUmVzb3VyY2UsIHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBpZiAoZmllbGQuY29tcG9uZW50ICE9PSB1bmRlZmluZWQgJiYgZmllbGQuY29tcG9uZW50Lm5hbWUgPT09ICdwYXNzd29yZCcgJiYgdmFsdWUgIT09ICcnICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWNvZGVCYXNlNjQodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVzb2x2ZUFsbG93ZWRUeXBlcyhhbGxvd1R5cGVzOiBzdHJpbmdbXSkge1xuICAgICAgICByZXR1cm4gYWxsb3dUeXBlcz8ubGVuZ3RoID4gMCA/IChhbGxvd1R5cGVzLmxlbmd0aCA+IDEgPyBhbGxvd1R5cGVzIGFzIEZpbGVVcGxvYWRNSU1FVHlwZVtdIDogYWxsb3dUeXBlc1swXSkgOiBudWxsXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlc29sdmVCeXRlU2l6ZShieXRlc1NpemUpIHtcbiAgICAgICAgcmV0dXJuIGJ5dGVzU2l6ZSAhPT0gdW5kZWZpbmVkID8gYnl0ZXNTaXplIDogbnVsbDtcbiAgICB9XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXVzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3VzZXIvbW9kZWxzL2l1c2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgZ2VuZXJpYyByZXByZXNlbnRhdGlvbiBvZiBhIFVzZXIgb2JqZWN0LiBBbGwgVXNlciBhbmQgVXNlci1saWtlIGluc3RhbmNlcyBpbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UgdGhhdCBob2xkcyB0aGUgbW9zdFxuICogYmFzaWMgVXNlciBhdHRyaWJ1dGVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElVc2VyIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqICoqRXhhbXBsZToqKiBleGFtcGxlQG5ldGdyaWYuY29tXG4gICAgICovXG4gICAgZW1haWw6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiAqKkV4YW1wbGU6KiogRXhhbXBsZVxuICAgICAqL1xuICAgIG5hbWU6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiAqKkV4YW1wbGU6KiogTmV0Z3JpZlxuICAgICAqL1xuICAgIHN1cm5hbWU6IHN0cmluZztcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXVzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3VzZXIvbW9kZWxzL2l1c2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgZ2VuZXJpYyByZXByZXNlbnRhdGlvbiBvZiBhIFVzZXIgb2JqZWN0LiBBbGwgVXNlciBhbmQgVXNlci1saWtlIGluc3RhbmNlcyBpbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UgdGhhdCBob2xkcyB0aGUgbW9zdFxuICogYmFzaWMgVXNlciBhdHRyaWJ1dGVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElVc2VyIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqICoqRXhhbXBsZToqKiBqb2huZG9lXG4gICAgICovXG4gICAgdXNlcm5hbWU6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiAqKkV4YW1wbGU6KiogZXhhbXBsZUBuZXRncmlmLmNvbVxuICAgICAqL1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogKipFeGFtcGxlOioqIDY4MTg3OTA2NDgyZGNjMzhmNjY0MWJmZlxuICAgICAqL1xuICAgIHJlYWxtSWQ6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiAqKkV4YW1wbGU6KiogRXhhbXBsZVxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICovXG4gICAgbmFtZTogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqICoqRXhhbXBsZToqKiBFeGFtcGxlXG4gICAgICovXG4gICAgZmlyc3ROYW1lOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogKipFeGFtcGxlOioqIE5ldGdyaWZcbiAgICAgQGRlcHJlY2F0ZWRcbiAgICAgKi9cbiAgICBzdXJuYW1lOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogKipFeGFtcGxlOioqIE5ldGdyaWZcbiAgICAgKi9cbiAgICBsYXN0TmFtZTogc3RyaW5nO1xufVxuIl19
@@ -3,7 +3,9 @@
3
3
  */
4
4
  export class User {
5
5
  id;
6
+ username;
6
7
  email;
8
+ realmId;
7
9
  firstName;
8
10
  lastName;
9
11
  authorities;
@@ -11,9 +13,11 @@ export class User {
11
13
  groups;
12
14
  nextGroups;
13
15
  impersonated;
14
- constructor(id, email, firstName, lastName, authorities, roles, groups, nextGroups, impersonated) {
16
+ constructor(id, username, email, realmId, firstName, lastName, authorities, roles, groups, nextGroups, impersonated) {
15
17
  this.id = id;
18
+ this.username = username;
16
19
  this.email = email;
20
+ this.realmId = realmId;
17
21
  this.firstName = firstName;
18
22
  this.lastName = lastName;
19
23
  this.authorities = authorities;
@@ -56,4 +60,4 @@ export class User {
56
60
  return !!this.impersonated;
57
61
  }
58
62
  }
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvdXNlci9tb2RlbHMvdXNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTs7R0FFRztBQUNILE1BQU0sT0FBTyxJQUFJO0lBR0Y7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBVFgsWUFDVyxFQUFVLEVBQ1YsS0FBYSxFQUNiLFNBQWlCLEVBQ2pCLFFBQWdCLEVBQ2hCLFdBQTBCLEVBQzFCLEtBQXlCLEVBQ3pCLE1BQXNCLEVBQ3RCLFVBQTBCLEVBQzFCLFlBQW1CO1FBUm5CLE9BQUUsR0FBRixFQUFFLENBQVE7UUFDVixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNqQixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ2hCLGdCQUFXLEdBQVgsV0FBVyxDQUFlO1FBQzFCLFVBQUssR0FBTCxLQUFLLENBQW9CO1FBQ3pCLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ3RCLGVBQVUsR0FBVixVQUFVLENBQWdCO1FBQzFCLGlCQUFZLEdBQVosWUFBWSxDQUFPO0lBRTlCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDaEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxJQUFJO1FBQ1gsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPO1FBQ1YsT0FBTyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxxQkFBcUI7UUFDeEIsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM3RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxlQUFlO1FBQ2xCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDL0IsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQcm9jZXNzUm9sZX0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2ludGVyZmFjZS9wcm9jZXNzLXJvbGUnO1xuaW1wb3J0IHtJVXNlcn0gZnJvbSAnLi9pdXNlcic7XG5cbi8qKlxuICogVGhlIHVzZXIgb2JqZWN0IHRoYXQgaXMgdXNlZCBieSB0aGUgZnJvbnRlbmQgaW4gaXRzIGxvZ2ljLlxuICovXG5leHBvcnQgY2xhc3MgVXNlciBpbXBsZW1lbnRzIElVc2VyIHtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgaWQ6IHN0cmluZyxcbiAgICAgICAgcHVibGljIGVtYWlsOiBzdHJpbmcsXG4gICAgICAgIHB1YmxpYyBmaXJzdE5hbWU6IHN0cmluZyxcbiAgICAgICAgcHVibGljIGxhc3ROYW1lOiBzdHJpbmcsXG4gICAgICAgIHB1YmxpYyBhdXRob3JpdGllczogQXJyYXk8c3RyaW5nPixcbiAgICAgICAgcHVibGljIHJvbGVzOiBBcnJheTxQcm9jZXNzUm9sZT4sXG4gICAgICAgIHB1YmxpYyBncm91cHM/OiBBcnJheTxzdHJpbmc+LFxuICAgICAgICBwdWJsaWMgbmV4dEdyb3Vwcz86IEFycmF5PHN0cmluZz4sXG4gICAgICAgIHB1YmxpYyBpbXBlcnNvbmF0ZWQ/OiBVc2VyXG4gICAgKSB7XG4gICAgfVxuXG4gICAgZ2V0IGZ1bGxOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5maXJzdE5hbWUgKyAnICcgKyB0aGlzLmxhc3ROYW1lO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN5bm9ueW0gZm9yIGBmaXJzdE5hbWVgLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5maXJzdE5hbWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3lub255bSBmb3IgYGxhc3ROYW1lYC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHN1cm5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFzdE5hbWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBVc2VyIG9iamVjdCByZXByZXNlbnRzIGFuIGVtcHR5IHVzZXIsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pZCA9PT0gJyc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgc2VsZiBpZiBubyBpbXBlcnNvbmF0ZWQgdXNlciBpcyBwcmVzZW50LCBvciBpbXBlcnNvbmF0ZWQgdXNlciBvdGhlcndpc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U2VsZk9ySW1wZXJzb25hdGVkKCk6IFVzZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0ltcGVyc29uYXRpbmcoKSA/IHRoaXMuaW1wZXJzb25hdGVkIDogdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIHVzZXIgaXMgaW1wZXJzb25hdGluZyBhbm90aGVyIHVzZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNJbXBlcnNvbmF0aW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmltcGVyc29uYXRlZDtcbiAgICB9XG59XG4iXX0=
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvdXNlci9tb2RlbHMvdXNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQTs7R0FFRztBQUNILE1BQU0sT0FBTyxJQUFJO0lBR0Y7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQVhYLFlBQ1csRUFBVSxFQUNWLFFBQWdCLEVBQ2hCLEtBQWEsRUFDYixPQUFlLEVBQ2YsU0FBaUIsRUFDakIsUUFBZ0IsRUFDaEIsV0FBMEIsRUFDMUIsS0FBeUIsRUFDekIsTUFBc0IsRUFDdEIsVUFBMEIsRUFDMUIsWUFBbUI7UUFWbkIsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUNWLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDaEIsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNiLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ2pCLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWU7UUFDMUIsVUFBSyxHQUFMLEtBQUssQ0FBb0I7UUFDekIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsZUFBVSxHQUFWLFVBQVUsQ0FBZ0I7UUFDMUIsaUJBQVksR0FBWixZQUFZLENBQU87SUFFOUIsQ0FBQztJQUVELElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLElBQUk7UUFDWCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxPQUFPO1FBQ2QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU87UUFDVixPQUFPLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNJLHFCQUFxQjtRQUN4QixPQUFPLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzdELENBQUM7SUFFRDs7T0FFRztJQUNJLGVBQWU7UUFDbEIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMvQixDQUFDO0NBRUoiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1Byb2Nlc3NSb2xlfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL3Byb2Nlc3Mtcm9sZSc7XG5pbXBvcnQge0lVc2VyfSBmcm9tICcuL2l1c2VyJztcblxuLyoqXG4gKiBUaGUgdXNlciBvYmplY3QgdGhhdCBpcyB1c2VkIGJ5IHRoZSBmcm9udGVuZCBpbiBpdHMgbG9naWMuXG4gKi9cbmV4cG9ydCBjbGFzcyBVc2VyIGltcGxlbWVudHMgSVVzZXIge1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBpZDogc3RyaW5nLFxuICAgICAgICBwdWJsaWMgdXNlcm5hbWU6IHN0cmluZyxcbiAgICAgICAgcHVibGljIGVtYWlsOiBzdHJpbmcsXG4gICAgICAgIHB1YmxpYyByZWFsbUlkOiBzdHJpbmcsXG4gICAgICAgIHB1YmxpYyBmaXJzdE5hbWU6IHN0cmluZyxcbiAgICAgICAgcHVibGljIGxhc3ROYW1lOiBzdHJpbmcsXG4gICAgICAgIHB1YmxpYyBhdXRob3JpdGllczogQXJyYXk8c3RyaW5nPixcbiAgICAgICAgcHVibGljIHJvbGVzOiBBcnJheTxQcm9jZXNzUm9sZT4sXG4gICAgICAgIHB1YmxpYyBncm91cHM/OiBBcnJheTxzdHJpbmc+LFxuICAgICAgICBwdWJsaWMgbmV4dEdyb3Vwcz86IEFycmF5PHN0cmluZz4sXG4gICAgICAgIHB1YmxpYyBpbXBlcnNvbmF0ZWQ/OiBVc2VyXG4gICAgKSB7XG4gICAgfVxuXG4gICAgZ2V0IGZ1bGxOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5maXJzdE5hbWUgKyAnICcgKyB0aGlzLmxhc3ROYW1lO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN5bm9ueW0gZm9yIGBmaXJzdE5hbWVgLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5maXJzdE5hbWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3lub255bSBmb3IgYGxhc3ROYW1lYC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHN1cm5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFzdE5hbWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBVc2VyIG9iamVjdCByZXByZXNlbnRzIGFuIGVtcHR5IHVzZXIsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pZCA9PT0gJyc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgc2VsZiBpZiBubyBpbXBlcnNvbmF0ZWQgdXNlciBpcyBwcmVzZW50LCBvciBpbXBlcnNvbmF0ZWQgdXNlciBvdGhlcndpc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U2VsZk9ySW1wZXJzb25hdGVkKCk6IFVzZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0ltcGVyc29uYXRpbmcoKSA/IHRoaXMuaW1wZXJzb25hdGVkIDogdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIHVzZXIgaXMgaW1wZXJzb25hdGluZyBhbm90aGVyIHVzZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNJbXBlcnNvbmF0aW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmltcGVyc29uYXRlZDtcbiAgICB9XG5cbn1cbiJdfQ==
@@ -185,7 +185,7 @@ export class UserListService {
185
185
  return of([]);
186
186
  }
187
187
  this._updateProgress$.on();
188
- return forkJoin(selectedUsers.map(user => this._resources.assignRoles(user.id + '', selectedRoles))).pipe(tap(messages => {
188
+ return forkJoin(selectedUsers.map(user => this._resources.assignRoles(user.id, user.realmId, selectedRoles))).pipe(tap(messages => {
189
189
  messages.forEach((message, idx) => {
190
190
  if (message.error) {
191
191
  this._log.error(message.error, message);
@@ -217,4 +217,4 @@ export class UserListService {
217
217
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UserListService, decorators: [{
218
218
  type: Injectable
219
219
  }], ctorParameters: () => [{ type: i1.UserResourceService }, { type: i2.LoggerService }, { type: i3.SnackBarService }, { type: i4.TranslateService }] });
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1saXN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3VzZXIvc2VydmljZXMvdXNlci1saXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUMsZUFBZSxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUMvRSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFNN0QsT0FBTyxFQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFJaEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNENBQTRDLENBQUM7Ozs7OztBQW1CNUU7O0dBRUc7QUFFSCxNQUFNLE9BQU8sZUFBZTtJQW1ESjtJQUNBO0lBQ0E7SUFDQTtJQXBEcEI7O09BRUc7SUFDYyxPQUFPLENBQWtDO0lBQzFEOztPQUVHO0lBQ0ssU0FBUyxDQUFpQjtJQUNsQzs7T0FFRztJQUNLLFVBQVUsQ0FBMEI7SUFDNUM7O09BRUc7SUFDSyxVQUFVLENBQVU7SUFDNUI7O09BRUc7SUFDSyxXQUFXLENBQWE7SUFDaEM7O09BRUc7SUFDSyxNQUFNLENBQVU7SUFDeEI7O09BRUc7SUFDSyxZQUFZLENBQVM7SUFDN0I7O09BRUc7SUFDSSxVQUFVLENBQWdCO0lBQ2pDOztPQUVHO0lBQ0ksa0JBQWtCLENBQWdCO0lBQ2pDLGdCQUFnQixDQUFpQjtJQUNqQyxhQUFhLENBQWdCO0lBRXJDOzs7Ozs7Ozs7T0FTRztJQUNILFlBQW9C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QUNILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxhQUFhLENBQUMsTUFBa0IsRUFBRSxJQUFhO1FBQ25ELE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM1RSxJQUFJLEdBQUcsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztRQUN0RCxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzdELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7d0dBNU5RLGVBQWU7NEdBQWYsZUFBZTs7NEZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgT25EZXN0cm95fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIHRpbWVyfSBmcm9tICdyeGpzJztcbmltcG9ydCB7TG9hZGluZ0VtaXR0ZXJ9IGZyb20gJy4uLy4uL3V0aWxpdHkvbG9hZGluZy1lbWl0dGVyJztcbmltcG9ydCB7UGFnaW5hdGlvbn0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2ludGVyZmFjZS9wYWdpbmF0aW9uJztcbmltcG9ydCB7VXNlclJlc291cmNlU2VydmljZX0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2VuZ2luZS1lbmRwb2ludC91c2VyLXJlc291cmNlLnNlcnZpY2UnO1xuaW1wb3J0IHtMb2dnZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9sb2dnZXIvc2VydmljZXMvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtTbmFja0JhclNlcnZpY2V9IGZyb20gJy4uLy4uL3NuYWNrLWJhci9zZXJ2aWNlcy9zbmFjay1iYXIuc2VydmljZSc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtjYXRjaEVycm9yLCBtYXAsIG1lcmdlTWFwLCBzY2FuLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7SHR0cFBhcmFtc30gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtNZXNzYWdlUmVzb3VyY2V9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvbWVzc2FnZS1yZXNvdXJjZSc7XG5pbXBvcnQge1BhZ2V9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvcGFnZSc7XG5pbXBvcnQge1VzZXJSZXNvdXJjZX0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2ludGVyZmFjZS91c2VyLXJlc291cmNlJztcbmltcG9ydCB7UGFnaW5hdGlvblBhcmFtc30gZnJvbSAnLi4vLi4vdXRpbGl0eS9wYWdpbmF0aW9uL3BhZ2luYXRpb24tcGFyYW1zJztcblxuZXhwb3J0IGludGVyZmFjZSBVc2VyTGlzdEl0ZW0gZXh0ZW5kcyBVc2VyUmVzb3VyY2Uge1xuICAgIHNlbGVjdGVkOiBib29sZWFuO1xuICAgIHJvbGVzOiBTZXQ8c3RyaW5nPjtcblxuICAgIHRvZ2dsZSgpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJvbGVzT2JqZWN0IHtcbiAgICBbazogc3RyaW5nXTogUm9sZU9iamVjdDtcbn1cblxuaW50ZXJmYWNlIFJvbGVPYmplY3Qge1xuICAgIHBlcmZvcm0/OiBib29sZWFuO1xuICAgIGRlbGVnYXRlPzogYm9vbGVhbjtcbiAgICB2aWV3PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQZXJmb3JtcyBwYWdlZCBsb2FkaW5nIHVzZXJzIGZyb20gYmFja2VuZCBmb3IgW1VzZXJBc3NpZ25Db21wb25lbnRde0BsaW5rIEFic3RyYWN0VXNlckFzc2lnbkNvbXBvbmVudH0uXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBVc2VyTGlzdFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gICAgLyoqXG4gICAgICogVXNlclZhbHVlIGFycmF5IHN0cmVhbSwgdGhhdCByZXByZXNlbnRzIHVzZXJzIGxvYWRpbmcgZnJvbSBiYWNrZW5kLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3VzZXJzJDogT2JzZXJ2YWJsZTxBcnJheTxVc2VyTGlzdEl0ZW0+PjtcbiAgICAvKipcbiAgICAgKiBFbWl0IHVzZXJzIGxvYWRpbmcgc3RhdHVzIGZyb20gYmFja2VuZC5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9sb2FkaW5nJDogTG9hZGluZ0VtaXR0ZXI7XG4gICAgLyoqXG4gICAgICogTnVtYmVyIHN0cmVhbSBvZiBuZXh0IHBhZ2UgdXNlcnMgbGlzdCwgdGhhdCB0byBiZSByZXF1ZXN0ZWQgZnJvbSBiYWNrZW5kLlxuICAgICAqL1xuICAgIHByaXZhdGUgX25leHRQYWdlJDogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj47XG4gICAgLyoqXG4gICAgICogU2lnbmFscyB0aGUgZW5kIG9mIGxvYWRlZCB1c2Vycy5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9lbmRPZkRhdGE6IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogTmVjZXNzYXJ5IGZvciBwYWdpbmF0aW9uIHBhcmFtZXRlcnMgaW4gdXNlciBhc3NpZ24gbG9hZGluZyBmcm9tIGJhY2tlbmQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfcGFnaW5hdGlvbjogUGFnaW5hdGlvbjtcbiAgICAvKipcbiAgICAgKiBTaWduYWxzIGlmIHJlc3BvbnNlIGlzIGVtcHR5IG9yIG5vLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2NsZWFyOiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFRoZSBzZWFyY2ggY29udGVudCB0aGF0IHNob3VsZCBiZSBhcHBsaWVkIHRvIHRoZSByZXF1ZXN0XG4gICAgICovXG4gICAgcHJpdmF0ZSBfc2VhcmNoUXVlcnk6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBSb2xlcyB0aGF0IHNob3VsZCBiZSBhcHBsaWVkIHRvIHRoZSByZXF1ZXN0XG4gICAgICovXG4gICAgcHVibGljIHJvbGVzUXVlcnk6IEFycmF5PHN0cmluZz47XG4gICAgLyoqXG4gICAgICogbmVnYXRpdmUgUm9sZXMgdGhhdCBzaG91bGQgYmUgYXBwbGllZCB0byB0aGUgcmVxdWVzdFxuICAgICAqL1xuICAgIHB1YmxpYyBuZWdhdGl2ZVJvbGVzUXVlcnk6IEFycmF5PHN0cmluZz47XG4gICAgcHJpdmF0ZSBfdXBkYXRlUHJvZ3Jlc3MkOiBMb2FkaW5nRW1pdHRlcjtcbiAgICBwcml2YXRlIF91c2Vyc1JlbG9hZCQ6IFN1YmplY3Q8dm9pZD47XG5cbiAgICAvKipcbiAgICAgKiBJbmplY3Qgc2VydmljZXMuXG4gICAgICogSW5pdGlhbGl6ZSBkZWNsYXJlZCBhdHRyaWJ1dGVzLlxuICAgICAqXG4gICAgICogTG9hZGluZyBhbmQgbWFwcGVkIHN0cmVhbSBvZiB1c2Vycy5cbiAgICAgKiBAcGFyYW0gX3Jlc291cmNlcyBMb2FkaW5nIHVzZXJzIGZyb20gYmFja2VuZC5cbiAgICAgKiBAcGFyYW0gX2xvZyBMb2dnaW5nIGFjdGlvbiBzdGF0dXMuXG4gICAgICogQHBhcmFtIF9zbmFja2JhciBEaXNwbGF5IGluZm8gYWJvdXQgbG9hZGluZyBmcm9tIGJhY2tlbmQgZm9yIHVzZXIuXG4gICAgICogQHBhcmFtIF90cmFuc2xhdGUgVHJhbnNsYXRlIG1lc3NhZ2VzIGZvciB1c2VyLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX3Jlc291cmNlczogVXNlclJlc291cmNlU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9sb2c6IExvZ2dlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfc25hY2tiYXI6IFNuYWNrQmFyU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5fbG9hZGluZyQgPSBuZXcgTG9hZGluZ0VtaXR0ZXIoKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlUHJvZ3Jlc3MkID0gbmV3IExvYWRpbmdFbWl0dGVyKCk7XG4gICAgICAgIHRoaXMuX3VzZXJzUmVsb2FkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgICAgIHRoaXMuX2VuZE9mRGF0YSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9uZXh0UGFnZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4obnVsbCk7XG4gICAgICAgIHRoaXMuX3BhZ2luYXRpb24gPSB7XG4gICAgICAgICAgICBzaXplOiAyMCxcbiAgICAgICAgICAgIHRvdGFsRWxlbWVudHM6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHRvdGFsUGFnZXM6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG51bWJlcjogLTFcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5fY2xlYXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc2VhcmNoUXVlcnkgPSAnJztcbiAgICAgICAgdGhpcy5yb2xlc1F1ZXJ5ID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgICAgICAgdGhpcy5uZWdhdGl2ZVJvbGVzUXVlcnkgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuXG4gICAgICAgIGNvbnN0IHVzZXJzTWFwID0gdGhpcy5fbmV4dFBhZ2UkLnBpcGUoXG4gICAgICAgICAgICBtZXJnZU1hcChwID0+IHRoaXMubG9hZFBhZ2UocCkpLFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2NsZWFyKSB7IHRoaXMuX3VzZXJzUmVsb2FkJC5uZXh0KCk7IH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc2NhbigoYWNjLCB2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX2NsZWFyID8ge30gOiB7Li4uYWNjLCAuLi52YWx1ZX07XG4gICAgICAgICAgICAgICAgdGhpcy5fY2xlYXIgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfSwge30pXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX3VzZXJzJCA9IHVzZXJzTWFwLnBpcGUoXG4gICAgICAgICAgICBtYXAodiA9PiBPYmplY3QudmFsdWVzKHYpIGFzIEFycmF5PFVzZXJMaXN0SXRlbT4pLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9sb2FkaW5nJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl91cGRhdGVQcm9ncmVzcyQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5fdXNlcnNSZWxvYWQkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX25leHRQYWdlJC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbG9hZGluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvYWRpbmckLmlzQWN0aXZlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbG9hZGluZyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2FkaW5nJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHVzZXJzUmVsb2FkJCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXJzUmVsb2FkJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHVzZXJzJCgpOiBPYnNlcnZhYmxlPEFycmF5PFVzZXJMaXN0SXRlbT4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXJzJDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHVwZGF0aW5nJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VwZGF0ZVByb2dyZXNzJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRvdGFsVXNlcnMoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhZ2luYXRpb24udG90YWxFbGVtZW50cyA/IHRoaXMuX3BhZ2luYXRpb24udG90YWxFbGVtZW50cyA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGFsbCB1c2VycyBmcm9tIGJhY2tlbmQgYW5kIG1hcHBlZCB0byBbVXNlclZhbHVlXXtAbGluayBVc2VyVmFsdWV9IGludGVyZmFjZSB3aXRoIGNhdGNoaW5nIGVycm9ycy5cbiAgICAgKiBAcGFyYW0gcGFnZSBQYWdlIG51bWJlciB0aGF0IGlzIHJlcXVlc3RlZC4gLyBOZXh0IHBhZ2UgdXNlcnMgbGlzdC5cbiAgICAgKi9cbiAgICBwdWJsaWMgbG9hZFBhZ2UocGFnZTogbnVtYmVyKTogT2JzZXJ2YWJsZTx7IFtrOiBzdHJpbmddOiBVc2VyTGlzdEl0ZW0gfT4ge1xuICAgICAgICBpZiAocGFnZSA9PT0gbnVsbCB8fCBwYWdlID09PSB1bmRlZmluZWQgfHwgdGhpcy5fY2xlYXIpIHtcbiAgICAgICAgICAgIHJldHVybiBvZih7fSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHBhcmFtczogSHR0cFBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgICAgIHBhcmFtcyA9IHRoaXMuYWRkUGFnZVBhcmFtcyhwYXJhbXMsIHBhZ2UpO1xuICAgICAgICB0aGlzLl9sb2FkaW5nJC5vbigpO1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VzLnNlYXJjaChcbiAgICAgICAgICAgIHtmdWxsdGV4dDogdGhpcy5fc2VhcmNoUXVlcnksIHJvbGVzOiB0aGlzLnJvbGVzUXVlcnksIG5lZ2F0aXZlUm9sZXM6IHRoaXMubmVnYXRpdmVSb2xlc1F1ZXJ5fSwgcGFyYW1zKS5waXBlKFxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcignTG9hZGluZyB1c2VycyBoYXMgZmFpbGVkIG9uIHBhZ2UgJyArIHRoaXMuX3BhZ2luYXRpb24ubnVtYmVyLCBlcnIpO1xuICAgICAgICAgICAgICAgIHJldHVybiBvZih7Y29udGVudDogW10sIHBhZ2luYXRpb246IHsuLi50aGlzLl9wYWdpbmF0aW9uLCBudW1iZXI6IHRoaXMuX3BhZ2luYXRpb24ubnVtYmVyIC0gMX19KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKHUgPT4gdGhpcy5fZW5kT2ZEYXRhID0gIUFycmF5LmlzQXJyYXkodS5jb250ZW50KSB8fFxuICAgICAgICAgICAgICAgIChBcnJheS5pc0FycmF5KHUuY29udGVudCkgJiYgdS5jb250ZW50Lmxlbmd0aCA9PT0gMCkgfHxcbiAgICAgICAgICAgICAgICB1LnBhZ2luYXRpb24ubnVtYmVyID09PSB1LnBhZ2luYXRpb24udG90YWxQYWdlcyksXG4gICAgICAgICAgICBtYXAodXNlcnMgPT4gKEFycmF5LmlzQXJyYXkodXNlcnMuY29udGVudCkgPyB1c2VycyA6IHsuLi51c2VycywgY29udGVudDogW119KSBhcyBQYWdlPFVzZXJSZXNvdXJjZT4pLFxuICAgICAgICAgICAgbWFwKHVzZXJzID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9wYWdpbmF0aW9uID0gdXNlcnMucGFnaW5hdGlvbjtcbiAgICAgICAgICAgICAgICByZXR1cm4gdXNlcnMuY29udGVudC5yZWR1Y2UoKGFjYywgY3VycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gY3VyciBhcyBVc2VyTGlzdEl0ZW07XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucm9sZXMgPSBuZXcgU2V0PHN0cmluZz4oY3Vyci5wcm9jZXNzUm9sZXMubWFwKHByID0+IHByLnN0cmluZ0lkKSk7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucHJvY2Vzc1JvbGVzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBpdGVtLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0udG9nZ2xlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkID0gIXRoaXMuc2VsZWN0ZWQ7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7Li4uYWNjLCBbY3Vyci5pZF06IGl0ZW19O1xuICAgICAgICAgICAgICAgIH0sIHt9KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKF8gPT4gdGhpcy5fbG9hZGluZyQub2ZmKCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IHZhbHVlIHRvIG5leHRQYWdlIHN0cmVhbSBhcyBuZXh0IHBhZ2UgdXNlcnMgbGlzdC5cbiAgICAgKiBAcGFyYW0gbGFzdFJlbmRlcmVkIExhc3QgcmVuZGVyZWQgdXNlciBpbmRleC5cbiAgICAgKiBAcGFyYW0gdG90YWxSZW5kZXJlZCBUb3RhbCBsb2FkZWQgc2l6ZSB1c2Vycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgbmV4dFBhZ2UobGFzdFJlbmRlcmVkOiBudW1iZXIsIHRvdGFsUmVuZGVyZWQ6IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5sb2FkaW5nIHx8IHRoaXMuX2VuZE9mRGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxhc3RSZW5kZXJlZCA9PT0gdG90YWxSZW5kZXJlZCkge1xuICAgICAgICAgICAgdGhpcy5fbmV4dFBhZ2UkLm5leHQodGhpcy5fcGFnaW5hdGlvbi5udW1iZXIgKyAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbG9hZCBwYWdlIHdpdGggdXNlcnMuXG4gICAgICovXG4gICAgcHVibGljIHJlbG9hZChuZXdTZWFyY2hRdWVyeSA9ICcnKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fdXNlcnMkIHx8ICF0aGlzLl9wYWdpbmF0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2VhcmNoUXVlcnkgPSBuZXdTZWFyY2hRdWVyeTtcbiAgICAgICAgdGhpcy5fY2xlYXIgPSB0cnVlO1xuICAgICAgICB0aGlzLl9wYWdpbmF0aW9uLm51bWJlciA9IC0xO1xuICAgICAgICB0aGlzLl9lbmRPZkRhdGEgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5uZXh0UGFnZSgwLCAwKTtcbiAgICAgICAgdGltZXIoMTAwKS5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgICAgICB0aGlzLl9wYWdpbmF0aW9uLm51bWJlciA9IC0xO1xuICAgICAgICAgICAgdGhpcy5uZXh0UGFnZSgwLCAwKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZVJvbGVzKHNlbGVjdGVkVXNlcnM6IEFycmF5PFVzZXJMaXN0SXRlbT4sIHNlbGVjdGVkUm9sZXM6IEFycmF5PHN0cmluZz4gPSBbXSk6IE9ic2VydmFibGU8QXJyYXk8TWVzc2FnZVJlc291cmNlPj4ge1xuICAgICAgICBpZiAoIXNlbGVjdGVkVXNlcnMgfHwgc2VsZWN0ZWRVc2Vycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdXBkYXRlUHJvZ3Jlc3MkLm9uKCk7XG4gICAgICAgIHJldHVybiBmb3JrSm9pbihzZWxlY3RlZFVzZXJzLm1hcCh1c2VyID0+IHRoaXMuX3Jlc291cmNlcy5hc3NpZ25Sb2xlcyh1c2VyLmlkICsgJycsIHNlbGVjdGVkUm9sZXMpKSkucGlwZShcbiAgICAgICAgICAgIHRhcChtZXNzYWdlcyA9PiB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZXMuZm9yRWFjaCgobWVzc2FnZSwgaWR4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlLmVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IobWVzc2FnZS5lcnJvciwgbWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuRXJyb3JTbmFja0JhcihtZXNzYWdlLmVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5pbmZvKG1lc3NhZ2Uuc3VjY2Vzcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFVzZXJzW2lkeF0ucm9sZXMgPSBuZXcgU2V0PHN0cmluZz4oc2VsZWN0ZWRSb2xlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuU3VjY2Vzc1NuYWNrQmFyKHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCd0YXNrcy5zbmFja2Jhci5yb2xlc1N1Y2Nlc3NBc3NpZ24nKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVQcm9ncmVzcyQub2ZmKCk7XG4gICAgICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBIdHRwUGFyYW1zIHdpdGggcGFnZSBwYXJhbXMgYWRkaXRpb24uXG4gICAgICogQHBhcmFtIHBhcmFtcyBFeGlzdGluZyBIdHRwUGFyYW1zLlxuICAgICAqIEBwYXJhbSBwYWdlIFBhZ2UgbnVtYmVyIHRoYXQgaXMgcmVxdWVzdGVkLiAvIE5leHQgcGFnZSB1c2VycyBsaXN0LlxuICAgICAqL1xuICAgIHByaXZhdGUgYWRkUGFnZVBhcmFtcyhwYXJhbXM6IEh0dHBQYXJhbXMsIHBhZ2U/OiBudW1iZXIpOiBIdHRwUGFyYW1zIHtcbiAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldChQYWdpbmF0aW9uUGFyYW1zLlBBR0VfU0laRSwgYCR7dGhpcy5fcGFnaW5hdGlvbi5zaXplfWApO1xuICAgICAgICBwYWdlID0gcGFnZSAhPT0gbnVsbCA/IHBhZ2UgOiB0aGlzLl9wYWdpbmF0aW9uLm51bWJlcjtcbiAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldChQYWdpbmF0aW9uUGFyYW1zLlBBR0VfTlVNQkVSLCBgJHtwYWdlfWApO1xuICAgICAgICByZXR1cm4gcGFyYW1zO1xuICAgIH1cblxufVxuIl19
220
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1saXN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3VzZXIvc2VydmljZXMvdXNlci1saXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUMsZUFBZSxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUMvRSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFNN0QsT0FBTyxFQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFJaEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNENBQTRDLENBQUM7Ozs7OztBQW1CNUU7O0dBRUc7QUFFSCxNQUFNLE9BQU8sZUFBZTtJQW1ESjtJQUNBO0lBQ0E7SUFDQTtJQXBEcEI7O09BRUc7SUFDYyxPQUFPLENBQWtDO0lBQzFEOztPQUVHO0lBQ0ssU0FBUyxDQUFpQjtJQUNsQzs7T0FFRztJQUNLLFVBQVUsQ0FBMEI7SUFDNUM7O09BRUc7SUFDSyxVQUFVLENBQVU7SUFDNUI7O09BRUc7SUFDSyxXQUFXLENBQWE7SUFDaEM7O09BRUc7SUFDSyxNQUFNLENBQVU7SUFDeEI7O09BRUc7SUFDSyxZQUFZLENBQVM7SUFDN0I7O09BRUc7SUFDSSxVQUFVLENBQWdCO0lBQ2pDOztPQUVHO0lBQ0ksa0JBQWtCLENBQWdCO0lBQ2pDLGdCQUFnQixDQUFpQjtJQUNqQyxhQUFhLENBQWdCO0lBRXJDOzs7Ozs7Ozs7T0FTRztJQUNILFlBQW9C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QUFDLENBQUM7WUFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNaLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssYUFBYSxDQUFDLE1BQWtCLEVBQUUsSUFBYTtRQUNuRCxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDNUUsSUFBSSxHQUFHLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7UUFDdEQsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM3RCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO3dHQTVOUSxlQUFlOzRHQUFmLGVBQWU7OzRGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCB0aW1lcn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0xvYWRpbmdFbWl0dGVyfSBmcm9tICcuLi8uLi91dGlsaXR5L2xvYWRpbmctZW1pdHRlcic7XG5pbXBvcnQge1BhZ2luYXRpb259IGZyb20gJy4uLy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvcGFnaW5hdGlvbic7XG5pbXBvcnQge1VzZXJSZXNvdXJjZVNlcnZpY2V9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9lbmdpbmUtZW5kcG9pbnQvdXNlci1yZXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7U25hY2tCYXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9zbmFjay1iYXIvc2VydmljZXMvc25hY2stYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgbWFwLCBtZXJnZU1hcCwgc2NhbiwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0h0dHBQYXJhbXN9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7TWVzc2FnZVJlc291cmNlfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL21lc3NhZ2UtcmVzb3VyY2UnO1xuaW1wb3J0IHtQYWdlfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL3BhZ2UnO1xuaW1wb3J0IHtVc2VyUmVzb3VyY2V9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvdXNlci1yZXNvdXJjZSc7XG5pbXBvcnQge1BhZ2luYXRpb25QYXJhbXN9IGZyb20gJy4uLy4uL3V0aWxpdHkvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLXBhcmFtcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlckxpc3RJdGVtIGV4dGVuZHMgVXNlclJlc291cmNlIHtcbiAgICBzZWxlY3RlZDogYm9vbGVhbjtcbiAgICByb2xlczogU2V0PHN0cmluZz47XG5cbiAgICB0b2dnbGUoKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSb2xlc09iamVjdCB7XG4gICAgW2s6IHN0cmluZ106IFJvbGVPYmplY3Q7XG59XG5cbmludGVyZmFjZSBSb2xlT2JqZWN0IHtcbiAgICBwZXJmb3JtPzogYm9vbGVhbjtcbiAgICBkZWxlZ2F0ZT86IGJvb2xlYW47XG4gICAgdmlldz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUGVyZm9ybXMgcGFnZWQgbG9hZGluZyB1c2VycyBmcm9tIGJhY2tlbmQgZm9yIFtVc2VyQXNzaWduQ29tcG9uZW50XXtAbGluayBBYnN0cmFjdFVzZXJBc3NpZ25Db21wb25lbnR9LlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVXNlckxpc3RTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICAgIC8qKlxuICAgICAqIFVzZXJWYWx1ZSBhcnJheSBzdHJlYW0sIHRoYXQgcmVwcmVzZW50cyB1c2VycyBsb2FkaW5nIGZyb20gYmFja2VuZC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF91c2VycyQ6IE9ic2VydmFibGU8QXJyYXk8VXNlckxpc3RJdGVtPj47XG4gICAgLyoqXG4gICAgICogRW1pdCB1c2VycyBsb2FkaW5nIHN0YXR1cyBmcm9tIGJhY2tlbmQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfbG9hZGluZyQ6IExvYWRpbmdFbWl0dGVyO1xuICAgIC8qKlxuICAgICAqIE51bWJlciBzdHJlYW0gb2YgbmV4dCBwYWdlIHVzZXJzIGxpc3QsIHRoYXQgdG8gYmUgcmVxdWVzdGVkIGZyb20gYmFja2VuZC5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9uZXh0UGFnZSQ6IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+O1xuICAgIC8qKlxuICAgICAqIFNpZ25hbHMgdGhlIGVuZCBvZiBsb2FkZWQgdXNlcnMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZW5kT2ZEYXRhOiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIE5lY2Vzc2FyeSBmb3IgcGFnaW5hdGlvbiBwYXJhbWV0ZXJzIGluIHVzZXIgYXNzaWduIGxvYWRpbmcgZnJvbSBiYWNrZW5kLlxuICAgICAqL1xuICAgIHByaXZhdGUgX3BhZ2luYXRpb246IFBhZ2luYXRpb247XG4gICAgLyoqXG4gICAgICogU2lnbmFscyBpZiByZXNwb25zZSBpcyBlbXB0eSBvciBuby5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9jbGVhcjogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBUaGUgc2VhcmNoIGNvbnRlbnQgdGhhdCBzaG91bGQgYmUgYXBwbGllZCB0byB0aGUgcmVxdWVzdFxuICAgICAqL1xuICAgIHByaXZhdGUgX3NlYXJjaFF1ZXJ5OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogUm9sZXMgdGhhdCBzaG91bGQgYmUgYXBwbGllZCB0byB0aGUgcmVxdWVzdFxuICAgICAqL1xuICAgIHB1YmxpYyByb2xlc1F1ZXJ5OiBBcnJheTxzdHJpbmc+O1xuICAgIC8qKlxuICAgICAqIG5lZ2F0aXZlIFJvbGVzIHRoYXQgc2hvdWxkIGJlIGFwcGxpZWQgdG8gdGhlIHJlcXVlc3RcbiAgICAgKi9cbiAgICBwdWJsaWMgbmVnYXRpdmVSb2xlc1F1ZXJ5OiBBcnJheTxzdHJpbmc+O1xuICAgIHByaXZhdGUgX3VwZGF0ZVByb2dyZXNzJDogTG9hZGluZ0VtaXR0ZXI7XG4gICAgcHJpdmF0ZSBfdXNlcnNSZWxvYWQkOiBTdWJqZWN0PHZvaWQ+O1xuXG4gICAgLyoqXG4gICAgICogSW5qZWN0IHNlcnZpY2VzLlxuICAgICAqIEluaXRpYWxpemUgZGVjbGFyZWQgYXR0cmlidXRlcy5cbiAgICAgKlxuICAgICAqIExvYWRpbmcgYW5kIG1hcHBlZCBzdHJlYW0gb2YgdXNlcnMuXG4gICAgICogQHBhcmFtIF9yZXNvdXJjZXMgTG9hZGluZyB1c2VycyBmcm9tIGJhY2tlbmQuXG4gICAgICogQHBhcmFtIF9sb2cgTG9nZ2luZyBhY3Rpb24gc3RhdHVzLlxuICAgICAqIEBwYXJhbSBfc25hY2tiYXIgRGlzcGxheSBpbmZvIGFib3V0IGxvYWRpbmcgZnJvbSBiYWNrZW5kIGZvciB1c2VyLlxuICAgICAqIEBwYXJhbSBfdHJhbnNsYXRlIFRyYW5zbGF0ZSBtZXNzYWdlcyBmb3IgdXNlci5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9yZXNvdXJjZXM6IFVzZXJSZXNvdXJjZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfbG9nOiBMb2dnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3NuYWNrYmFyOiBTbmFja0JhclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuX2xvYWRpbmckID0gbmV3IExvYWRpbmdFbWl0dGVyKCk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZVByb2dyZXNzJCA9IG5ldyBMb2FkaW5nRW1pdHRlcigpO1xuICAgICAgICB0aGlzLl91c2Vyc1JlbG9hZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgICAgICB0aGlzLl9lbmRPZkRhdGEgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fbmV4dFBhZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KG51bGwpO1xuICAgICAgICB0aGlzLl9wYWdpbmF0aW9uID0ge1xuICAgICAgICAgICAgc2l6ZTogMjAsXG4gICAgICAgICAgICB0b3RhbEVsZW1lbnRzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB0b3RhbFBhZ2VzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBudW1iZXI6IC0xXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX2NsZWFyID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3NlYXJjaFF1ZXJ5ID0gJyc7XG4gICAgICAgIHRoaXMucm9sZXNRdWVyeSA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgICAgIHRoaXMubmVnYXRpdmVSb2xlc1F1ZXJ5ID0gbmV3IEFycmF5PHN0cmluZz4oKTtcblxuICAgICAgICBjb25zdCB1c2Vyc01hcCA9IHRoaXMuX25leHRQYWdlJC5waXBlKFxuICAgICAgICAgICAgbWVyZ2VNYXAocCA9PiB0aGlzLmxvYWRQYWdlKHApKSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9jbGVhcikgeyB0aGlzLl91c2Vyc1JlbG9hZCQubmV4dCgpOyB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHNjYW4oKGFjYywgdmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9jbGVhciA/IHt9IDogey4uLmFjYywgLi4udmFsdWV9O1xuICAgICAgICAgICAgICAgIHRoaXMuX2NsZWFyID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH0sIHt9KVxuICAgICAgICApO1xuICAgICAgICB0aGlzLl91c2VycyQgPSB1c2Vyc01hcC5waXBlKFxuICAgICAgICAgICAgbWFwKHYgPT4gT2JqZWN0LnZhbHVlcyh2KSBhcyBBcnJheTxVc2VyTGlzdEl0ZW0+KSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbG9hZGluZyQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlUHJvZ3Jlc3MkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX3VzZXJzUmVsb2FkJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9uZXh0UGFnZSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2FkaW5nJC5pc0FjdGl2ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxvYWRpbmckKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9hZGluZyQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB1c2Vyc1JlbG9hZCQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl91c2Vyc1JlbG9hZCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB1c2VycyQoKTogT2JzZXJ2YWJsZTxBcnJheTxVc2VyTGlzdEl0ZW0+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl91c2VycyQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB1cGRhdGluZyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl91cGRhdGVQcm9ncmVzcyQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0b3RhbFVzZXJzKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYWdpbmF0aW9uLnRvdGFsRWxlbWVudHMgPyB0aGlzLl9wYWdpbmF0aW9uLnRvdGFsRWxlbWVudHMgOiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBhbGwgdXNlcnMgZnJvbSBiYWNrZW5kIGFuZCBtYXBwZWQgdG8gW1VzZXJWYWx1ZV17QGxpbmsgVXNlclZhbHVlfSBpbnRlcmZhY2Ugd2l0aCBjYXRjaGluZyBlcnJvcnMuXG4gICAgICogQHBhcmFtIHBhZ2UgUGFnZSBudW1iZXIgdGhhdCBpcyByZXF1ZXN0ZWQuIC8gTmV4dCBwYWdlIHVzZXJzIGxpc3QuXG4gICAgICovXG4gICAgcHVibGljIGxvYWRQYWdlKHBhZ2U6IG51bWJlcik6IE9ic2VydmFibGU8eyBbazogc3RyaW5nXTogVXNlckxpc3RJdGVtIH0+IHtcbiAgICAgICAgaWYgKHBhZ2UgPT09IG51bGwgfHwgcGFnZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuX2NsZWFyKSB7XG4gICAgICAgICAgICByZXR1cm4gb2Yoe30pO1xuICAgICAgICB9XG4gICAgICAgIGxldCBwYXJhbXM6IEh0dHBQYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgICAgICBwYXJhbXMgPSB0aGlzLmFkZFBhZ2VQYXJhbXMocGFyYW1zLCBwYWdlKTtcbiAgICAgICAgdGhpcy5fbG9hZGluZyQub24oKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlcy5zZWFyY2goXG4gICAgICAgICAgICB7ZnVsbHRleHQ6IHRoaXMuX3NlYXJjaFF1ZXJ5LCByb2xlczogdGhpcy5yb2xlc1F1ZXJ5LCBuZWdhdGl2ZVJvbGVzOiB0aGlzLm5lZ2F0aXZlUm9sZXNRdWVyeX0sIHBhcmFtcykucGlwZShcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoJ0xvYWRpbmcgdXNlcnMgaGFzIGZhaWxlZCBvbiBwYWdlICcgKyB0aGlzLl9wYWdpbmF0aW9uLm51bWJlciwgZXJyKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2Yoe2NvbnRlbnQ6IFtdLCBwYWdpbmF0aW9uOiB7Li4udGhpcy5fcGFnaW5hdGlvbiwgbnVtYmVyOiB0aGlzLl9wYWdpbmF0aW9uLm51bWJlciAtIDF9fSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRhcCh1ID0+IHRoaXMuX2VuZE9mRGF0YSA9ICFBcnJheS5pc0FycmF5KHUuY29udGVudCkgfHxcbiAgICAgICAgICAgICAgICAoQXJyYXkuaXNBcnJheSh1LmNvbnRlbnQpICYmIHUuY29udGVudC5sZW5ndGggPT09IDApIHx8XG4gICAgICAgICAgICAgICAgdS5wYWdpbmF0aW9uLm51bWJlciA9PT0gdS5wYWdpbmF0aW9uLnRvdGFsUGFnZXMpLFxuICAgICAgICAgICAgbWFwKHVzZXJzID0+IChBcnJheS5pc0FycmF5KHVzZXJzLmNvbnRlbnQpID8gdXNlcnMgOiB7Li4udXNlcnMsIGNvbnRlbnQ6IFtdfSkgYXMgUGFnZTxVc2VyUmVzb3VyY2U+KSxcbiAgICAgICAgICAgIG1hcCh1c2VycyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGFnaW5hdGlvbiA9IHVzZXJzLnBhZ2luYXRpb247XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVzZXJzLmNvbnRlbnQucmVkdWNlKChhY2MsIGN1cnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IGN1cnIgYXMgVXNlckxpc3RJdGVtO1xuICAgICAgICAgICAgICAgICAgICBpdGVtLnJvbGVzID0gbmV3IFNldDxzdHJpbmc+KGN1cnIucHJvY2Vzc1JvbGVzLm1hcChwciA9PiBwci5zdHJpbmdJZCkpO1xuICAgICAgICAgICAgICAgICAgICBpdGVtLnByb2Nlc3NSb2xlcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBpdGVtLnRvZ2dsZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZCA9ICF0aGlzLnNlbGVjdGVkO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gey4uLmFjYywgW2N1cnIuaWRdOiBpdGVtfTtcbiAgICAgICAgICAgICAgICB9LCB7fSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRhcChfID0+IHRoaXMuX2xvYWRpbmckLm9mZigpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCB2YWx1ZSB0byBuZXh0UGFnZSBzdHJlYW0gYXMgbmV4dCBwYWdlIHVzZXJzIGxpc3QuXG4gICAgICogQHBhcmFtIGxhc3RSZW5kZXJlZCBMYXN0IHJlbmRlcmVkIHVzZXIgaW5kZXguXG4gICAgICogQHBhcmFtIHRvdGFsUmVuZGVyZWQgVG90YWwgbG9hZGVkIHNpemUgdXNlcnMuXG4gICAgICovXG4gICAgcHVibGljIG5leHRQYWdlKGxhc3RSZW5kZXJlZDogbnVtYmVyLCB0b3RhbFJlbmRlcmVkOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHRoaXMubG9hZGluZyB8fCB0aGlzLl9lbmRPZkRhdGEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsYXN0UmVuZGVyZWQgPT09IHRvdGFsUmVuZGVyZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX25leHRQYWdlJC5uZXh0KHRoaXMuX3BhZ2luYXRpb24ubnVtYmVyICsgMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWxvYWQgcGFnZSB3aXRoIHVzZXJzLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWxvYWQobmV3U2VhcmNoUXVlcnkgPSAnJyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX3VzZXJzJCB8fCAhdGhpcy5fcGFnaW5hdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NlYXJjaFF1ZXJ5ID0gbmV3U2VhcmNoUXVlcnk7XG4gICAgICAgIHRoaXMuX2NsZWFyID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fcGFnaW5hdGlvbi5udW1iZXIgPSAtMTtcbiAgICAgICAgdGhpcy5fZW5kT2ZEYXRhID0gZmFsc2U7XG4gICAgICAgIHRoaXMubmV4dFBhZ2UoMCwgMCk7XG4gICAgICAgIHRpbWVyKDEwMCkuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgICAgICAgdGhpcy5fcGFnaW5hdGlvbi5udW1iZXIgPSAtMTtcbiAgICAgICAgICAgIHRoaXMubmV4dFBhZ2UoMCwgMCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVSb2xlcyhzZWxlY3RlZFVzZXJzOiBBcnJheTxVc2VyTGlzdEl0ZW0+LCBzZWxlY3RlZFJvbGVzOiBBcnJheTxzdHJpbmc+ID0gW10pOiBPYnNlcnZhYmxlPEFycmF5PE1lc3NhZ2VSZXNvdXJjZT4+IHtcbiAgICAgICAgaWYgKCFzZWxlY3RlZFVzZXJzIHx8IHNlbGVjdGVkVXNlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3VwZGF0ZVByb2dyZXNzJC5vbigpO1xuICAgICAgICByZXR1cm4gZm9ya0pvaW4oc2VsZWN0ZWRVc2Vycy5tYXAodXNlciA9PiB0aGlzLl9yZXNvdXJjZXMuYXNzaWduUm9sZXModXNlci5pZCwgdXNlci5yZWFsbUlkLCBzZWxlY3RlZFJvbGVzKSkpLnBpcGUoXG4gICAgICAgICAgICB0YXAobWVzc2FnZXMgPT4ge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2VzLmZvckVhY2goKG1lc3NhZ2UsIGlkeCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZS5lcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKG1lc3NhZ2UuZXJyb3IsIG1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbkVycm9yU25hY2tCYXIobWVzc2FnZS5lcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2cuaW5mbyhtZXNzYWdlLnN1Y2Nlc3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRVc2Vyc1tpZHhdLnJvbGVzID0gbmV3IFNldDxzdHJpbmc+KHNlbGVjdGVkUm9sZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlblN1Y2Nlc3NTbmFja0Jhcih0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgndGFza3Muc25hY2tiYXIucm9sZXNTdWNjZXNzQXNzaWduJykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlUHJvZ3Jlc3MkLm9mZigpO1xuICAgICAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgSHR0cFBhcmFtcyB3aXRoIHBhZ2UgcGFyYW1zIGFkZGl0aW9uLlxuICAgICAqIEBwYXJhbSBwYXJhbXMgRXhpc3RpbmcgSHR0cFBhcmFtcy5cbiAgICAgKiBAcGFyYW0gcGFnZSBQYWdlIG51bWJlciB0aGF0IGlzIHJlcXVlc3RlZC4gLyBOZXh0IHBhZ2UgdXNlcnMgbGlzdC5cbiAgICAgKi9cbiAgICBwcml2YXRlIGFkZFBhZ2VQYXJhbXMocGFyYW1zOiBIdHRwUGFyYW1zLCBwYWdlPzogbnVtYmVyKTogSHR0cFBhcmFtcyB7XG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoUGFnaW5hdGlvblBhcmFtcy5QQUdFX1NJWkUsIGAke3RoaXMuX3BhZ2luYXRpb24uc2l6ZX1gKTtcbiAgICAgICAgcGFnZSA9IHBhZ2UgIT09IG51bGwgPyBwYWdlIDogdGhpcy5fcGFnaW5hdGlvbi5udW1iZXI7XG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoUGFnaW5hdGlvblBhcmFtcy5QQUdFX05VTUJFUiwgYCR7cGFnZX1gKTtcbiAgICAgICAgcmV0dXJuIHBhcmFtcztcbiAgICB9XG5cbn1cbiJdfQ==
@@ -159,7 +159,7 @@ export class UserService {
159
159
  this.loadUser();
160
160
  }
161
161
  emptyUser() {
162
- return new User('', '', '', '', [], [], [], []);
162
+ return new User('', '', '', '', '', '', [], [], [], []);
163
163
  }
164
164
  loadUser() {
165
165
  this._userResource.getLoggedUser().pipe(take(1)).subscribe((user) => {
@@ -214,4 +214,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
214
214
  providedIn: 'root'
215
215
  }]
216
216
  }], ctorParameters: () => [{ type: i1.AuthenticationService }, { type: i2.UserResourceService }, { type: i3.UserTransformer }, { type: i4.LoggerService }, { type: i5.SessionService }, { type: i6.AnonymousService }] });
217
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi91c2VyL3NlcnZpY2VzL3VzZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBYSxhQUFhLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFFN0QsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXBDLE9BQU8sRUFBQyxJQUFJLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFLekMsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7O0FBUXZELE1BQU0sT0FBTyxXQUFXO0lBWUU7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBZlosS0FBSyxDQUFPO0lBQ1osWUFBWSxDQUFzQjtJQUNsQyxxQkFBcUIsQ0FBc0I7SUFDM0MsWUFBWSxDQUFVO0lBQ3RCLFFBQVEsQ0FBZTtJQUN2QixVQUFVLENBQWU7SUFDM0IsaUJBQWlCLENBQVU7SUFFbkIsa0JBQWtCLEdBQUcsU0FBUyxDQUFDO0lBRS9DLFlBQXNCLFlBQW1DLEVBQ25DLGFBQWtDLEVBQ2xDLGNBQStCLEVBQy9CLElBQW1CLEVBQ25CLFFBQXdCLEVBQ3hCLGlCQUFtQztRQUxuQyxpQkFBWSxHQUFaLFlBQVksQ0FBdUI7UUFDbkMsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBQ2xDLG1CQUFjLEdBQWQsY0FBYyxDQUFpQjtRQUMvQixTQUFJLEdBQUosSUFBSSxDQUFlO1FBQ25CLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ3hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDckQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENB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dHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1Byb2Nlc3NSb2xlfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL3Byb2Nlc3Mtcm9sZSc7XG5pbXBvcnQge1VzZXJ9IGZyb20gJy4uL21vZGVscy91c2VyJztcbmltcG9ydCB7Q3JlZGVudGlhbHN9IGZyb20gJy4uLy4uL2F1dGhlbnRpY2F0aW9uL21vZGVscy9jcmVkZW50aWFscyc7XG5pbXBvcnQge3Rha2UsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtBdXRoZW50aWNhdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL2F1dGhlbnRpY2F0aW9uL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtVc2VyUmVzb3VyY2VTZXJ2aWNlfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvZW5naW5lLWVuZHBvaW50L3VzZXItcmVzb3VyY2Uuc2VydmljZSc7XG5pbXBvcnQge1VzZXJUcmFuc2Zvcm1lcn0gZnJvbSAnLi4vLi4vYXV0aGVudGljYXRpb24vbW9kZWxzL3VzZXIudHJhbnNmb3JtZXInO1xuaW1wb3J0IHtMb2dnZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9sb2dnZXIvc2VydmljZXMvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtIdHRwRXJyb3JSZXNwb25zZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtTZXNzaW9uU2VydmljZX0gZnJvbSAnLi4vLi4vYXV0aGVudGljYXRpb24vc2Vzc2lvbi9zZXJ2aWNlcy9zZXNzaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtVc2VyUmVzb3VyY2V9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvdXNlci1yZXNvdXJjZSc7XG5pbXBvcnQge0Fub255bW91c1NlcnZpY2V9IGZyb20gJy4uLy4uL2F1dGhlbnRpY2F0aW9uL2Fub255bW91cy9hbm9ueW1vdXMuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVXNlclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gICAgcHJvdGVjdGVkIF91c2VyOiBVc2VyO1xuICAgIHByb3RlY3RlZCBfdXNlckNoYW5nZSQ6IFJlcGxheVN1YmplY3Q8VXNlcj47XG4gICAgcHJvdGVjdGVkIF9hbm9ueW1vdXNVc2VyQ2hhbmdlJDogUmVwbGF5U3ViamVjdDxVc2VyPjtcbiAgICBwcm90ZWN0ZWQgX2xvZ2luQ2FsbGVkOiBib29sZWFuO1xuICAgIHByb3RlY3RlZCBfc3ViQXV0aDogU3Vic2NyaXB0aW9uO1xuICAgIHByb3RlY3RlZCBfc3ViQW5vbnltOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBfcHVibGljTG9hZENhbGxlZDogYm9vbGVhbjtcblxuICAgIHB1YmxpYyByZWFkb25seSBHTE9CQUxfUk9MRV9QUkVGSVggPSAnZ2xvYmFsXyc7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2F1dGhTZXJ2aWNlOiBBdXRoZW50aWNhdGlvblNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF91c2VyUmVzb3VyY2U6IFVzZXJSZXNvdXJjZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF91c2VyVHJhbnNmb3JtOiBVc2VyVHJhbnNmb3JtZXIsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9sb2c6IExvZ2dlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2Fub255bW91c1NlcnZpY2U6IEFub255bW91c1NlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5fdXNlciA9IHRoaXMuZW1wdHlVc2VyKCk7XG4gICAgICAgIHRoaXMuX2xvZ2luQ2FsbGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3VzZXJDaGFuZ2UkID0gbmV3IFJlcGxheVN1YmplY3Q8VXNlcj4oMSk7XG4gICAgICAgIHRoaXMuX2Fub255bW91c1VzZXJDaGFuZ2UkID0gbmV3IFJlcGxheVN1YmplY3Q8VXNlcj4oMSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fc3ViQXV0aCA9IHRoaXMuX2F1dGhTZXJ2aWNlLmF1dGhlbnRpY2F0ZWQkLnN1YnNjcmliZShhdXRoID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYXV0aCAmJiAhdGhpcy5fbG9naW5DYWxsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkVXNlcigpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWF1dGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhclVzZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wdWJsaXNoVXNlckNoYW5nZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fc3ViQW5vbnltID0gdGhpcy5fYW5vbnltb3VzU2VydmljZS50b2tlblNldC5zdWJzY3JpYmUodG9rZW4gPT4ge1xuICAgICAgICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkUHVibGljVXNlcigpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyVXNlcigpO1xuICAgICAgICAgICAgICAgIHRoaXMucHVibGlzaEFub255bW91c1VzZXJDaGFuZ2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0IHVzZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyO1xuICAgIH1cblxuICAgIGdldCB1c2VyJCgpOiBPYnNlcnZhYmxlPFVzZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXJDaGFuZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIGdldCBhbm9ueW1vdXNVc2VyKCk6IFVzZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5hbm9ueW1vdXNVc2VyO1xuICAgIH1cblxuICAgIGdldCBhbm9ueW1vdXNVc2VyJCgpOiBPYnNlcnZhYmxlPFVzZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Fub255bW91c1VzZXJDaGFuZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl91c2VyQ2hhbmdlJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9hbm9ueW1vdXNVc2VyQ2hhbmdlJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9zdWJBdXRoLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX3N1YkFub255bS51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIHVzZXIgaGFzIHNwZWNpZmllZCBhdXRob3JpdHkuXG4gICAgICogQHBhcmFtIGF1dGhvcml0eSAtIElmIHByb3ZpZGVkIGF1dGhvcml0eSBpcyBhcnJheSBvZiBhdXRob3JpdGllcy5cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgTWV0aG9kIG1ha2UgaW50ZXJzZWN0aW9uIG9mIHRoZSBwcm92aWRlZCBhdXRob3JpdGllcyBhbmQgdXNlcidzIGF1dGhvcml0aWVzLlxuICAgICAqICAgICAgICAgICAgICAgICAgICBJZiBjYWxjdWxhdGVkIGludGVyc2VjdGlvbiBpc24ndCBlbXB0eSByZXR1cm5zIHRydWUsIG90aGVyd2lzZSBmYWxzZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgaGFzQXV0aG9yaXR5KGF1dGhvcml0eTogQXJyYXk8c3RyaW5nPiB8IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB1c2VyID0gdGhpcy5fdXNlci5nZXRTZWxmT3JJbXBlcnNvbmF0ZWQoKTtcbiAgICAgICAgaWYgKCFhdXRob3JpdHkgfHwgIXVzZXIuYXV0aG9yaXRpZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXV0aG9yaXR5IGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgIHJldHVybiBhdXRob3JpdHkuc29tZShhID0+IHVzZXIuYXV0aG9yaXRpZXMuc29tZSh1ID0+IHUgPT09IGEpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB1c2VyLmF1dGhvcml0aWVzLnNvbWUoYSA9PiBhID09PSBhdXRob3JpdHkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGhhc1JvbGUocm9sZTogUHJvY2Vzc1JvbGUpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgdXNlciA9IHRoaXMuX3VzZXIuZ2V0U2VsZk9ySW1wZXJzb25hdGVkKCk7XG4gICAgICAgIGlmICghcm9sZSB8fCAhdXNlci5yb2xlcykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1c2VyLnJvbGVzLnNvbWUociA9PiByID09PSByb2xlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3Mgd2hldGhlciB0aGUgdXNlciBoYXMgcm9sZSB3aXRoIGEgc3BlY2lmaWMgc3RyaW5nSWRcbiAgICAgKiBAcGFyYW0gcm9sZVN0cmluZ0lkIElEIG9mIHRoZSByb2xlIHdlIHdhbnQgdG8gY2hlY2tcbiAgICAgKi9cbiAgICBwdWJsaWMgaGFzUm9sZUJ5SWQocm9sZVN0cmluZ0lkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgdXNlciA9IHRoaXMuX3VzZXIuZ2V0U2VsZk9ySW1wZXJzb25hdGVkKCk7XG4gICAgICAgIGlmICghcm9sZVN0cmluZ0lkIHx8ICF1c2VyLnJvbGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVzZXIucm9sZXMuc29tZShyID0+IHIuc3RyaW5nSWQgPT09IHJvbGVTdHJpbmdJZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIHVzZXIgaGFzIGEgcm9sZSB3aXRoIHRoZSBzcGVjaWZpZWQgaWRlbnRpZmllciBpbiBhIHByb2Nlc3Mgd2l0aCB0aGUgc3BlY2lmaWVkIGlkZW50aWZpZXIgKGFueSB2ZXJzaW9uKSxcbiAgICAgKiBvciBpZiB0aGUgcm9sZSBpcyBnbG9iYWwgKHdpdGggcHJlZml4ICdnbG9iYWxfJykuXG4gICAgICogQHBhcmFtIHJvbGVJZGVudGlmaWVyIGlkZW50aWZpZXIgKGltcG9ydCBJRCkgb2YgdGhlIHJvbGUgd2Ugd2FudCB0byBjaGVja1xuICAgICAqIEBwYXJhbSBuZXRJZGVudGlmaWVyIGlkZW50aWZpZXIgKGltcG9ydCBJRCkgb2YgdGhlIHByb2Nlc3MgdGhlIHJvbGUgaXMgZGVmaW5lZCBpblxuICAgICAqL1xuICAgIHB1YmxpYyBoYXNSb2xlQnlJZGVudGlmaWVyKHJvbGVJZGVudGlmaWVyOiBzdHJpbmcsIG5ldElkZW50aWZpZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB1c2VyID0gdGhpcy5fdXNlci5nZXRTZWxmT3JJbXBlcnNvbmF0ZWQoKTtcbiAgICAgICAgaWYgKCFyb2xlSWRlbnRpZmllciB8fCAhdXNlci5yb2xlcykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVzZXIucm9sZXMuc29tZShyID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoZXNSb2xlID0gci5pbXBvcnRJZCA9PT0gcm9sZUlkZW50aWZpZXI7XG4gICAgICAgICAgICBjb25zdCBpc0dsb2JhbFJvbGUgPSByLmltcG9ydElkLnN0YXJ0c1dpdGgodGhpcy5HTE9CQUxfUk9MRV9QUkVGSVgpO1xuICAgICAgICAgICAgY29uc3QgbWF0Y2hlc05ldCA9IHIubmV0SW1wb3J0SWQgPT09IG5ldElkZW50aWZpZXI7XG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlc1JvbGUgJiYgKGlzR2xvYmFsUm9sZSB8fCBtYXRjaGVzTmV0KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIHVzZXIgaGFzIHJvbGUgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUgaW4gYSBwcm9jZXNzIHdpdGggdGhlIHNwZWNpZmllZCBpZGVudGlmaWVyIChhbnkgdmVyc2lvbilcbiAgICAgKiBAcGFyYW0gcm9sZU5hbWUgbmFtZSBvZiB0aGUgcm9sZSB3ZSB3YW50IHRvIGNoZWNrXG4gICAgICogQHBhcmFtIG5ldElkZW50aWZpZXIgaWRlbnRpZmllciAoaW1wb3J0IElEKSBvZiB0aGUgcHJvY2VzcyB0aGUgcm9sZSBpcyBkZWZpbmVkIGluXG4gICAgICovXG4gICAgcHVibGljIGhhc1JvbGVCeU5hbWUocm9sZU5hbWU6IHN0cmluZywgbmV0SWRlbnRpZmllcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLl91c2VyLmdldFNlbGZPckltcGVyc29uYXRlZCgpO1xuICAgICAgICBpZiAoIXJvbGVOYW1lIHx8ICFuZXRJZGVudGlmaWVyIHx8ICF1c2VyLnJvbGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVzZXIucm9sZXMuc29tZShyID0+IHIubmV0SW1wb3J0SWQgPT09IG5ldElkZW50aWZpZXIgJiYgci5uYW1lID09PSByb2xlTmFtZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGxvZ2luKGNyZWRlbnRpYWxzOiBDcmVkZW50aWFscyk6IE9ic2VydmFibGU8VXNlcj4ge1xuICAgICAgICB0aGlzLl9sb2dpbkNhbGxlZCA9IHRydWU7XG4gICAgICAgIHJldHVybiB0aGlzLl9hdXRoU2VydmljZS5sb2dpbihjcmVkZW50aWFscykucGlwZShcbiAgICAgICAgICAgIHRhcCgoYXV0aFVzZXI6IFVzZXIpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl91c2VyID0gYXV0aFVzZXI7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9naW5DYWxsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLnB1Ymxpc2hVc2VyQ2hhbmdlKCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBsb2dvdXQoKTogT2JzZXJ2YWJsZTxvYmplY3Q+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dGhTZXJ2aWNlLmxvZ291dCgpLnBpcGUoXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VzZXIgPSB0aGlzLmVtcHR5VXNlcigpO1xuICAgICAgICAgICAgICAgIHRoaXMucHVibGlzaFVzZXJDaGFuZ2UoKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbG9hZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sb2FkVXNlcigpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBlbXB0eVVzZXIoKSB7XG4gICAgICAgIHJldHVybiBuZXcgVXNlcignJywgJycsICcnLCAnJywgW10sIFtdLCBbXSwgW10pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBsb2FkVXNlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdXNlclJlc291cmNlLmdldExvZ2dlZFVzZXIoKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgodXNlcjogVXNlclJlc291cmNlKSA9PiB7XG4gICAgICAgICAgICBpZiAodXNlcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJhY2tlbmRVc2VyID0gey4uLnVzZXIsIGlkOiB1c2VyLmlkLnRvU3RyaW5nKCl9O1xuICAgICAgICAgICAgICAgIHRoaXMuX3VzZXIgPSB0aGlzLl91c2VyVHJhbnNmb3JtLnRyYW5zZm9ybShiYWNrZW5kVXNlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5wdWJsaXNoVXNlckNoYW5nZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSAmJiBlcnJvci5zdGF0dXMgPT09IDQwMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5kZWJ1ZygnQXV0aGVudGljYXRpb24gdG9rZW4gaXMgaW52YWxpZC4gQ2xlYXJpbmcgc3RyZWFtJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2Vzc2lvbi5jbGVhcigpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoJ0xvYWRpbmcgbG9nZ2VkIHVzZXIgaGFzIGZhaWxlZCEgSW5pdGlhbGlzYXRpb24gaGFzIG5vdCBiZSBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IScsIGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGxvYWRQdWJsaWNVc2VyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl91c2VyUmVzb3VyY2UuZ2V0UHVibGljTG9nZ2VkVXNlcigpLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCh1c2VyOiBVc2VyUmVzb3VyY2UpID0+IHtcbiAgICAgICAgICAgIGlmICh1c2VyKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmFja2VuZFVzZXIgPSB7Li4udXNlciwgaWQ6IHVzZXIuaWQudG9TdHJpbmcoKX07XG4gICAgICAgICAgICAgICAgdGhpcy5fdXNlciA9IHRoaXMuX3VzZXJUcmFuc2Zvcm0udHJhbnNmb3JtKGJhY2tlbmRVc2VyKTtcbiAgICAgICAgICAgICAgICB0aGlzLnB1Ymxpc2hBbm9ueW1vdXNVc2VyQ2hhbmdlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcignTG9hZGluZyBsb2dnZWQgdXNlciBoYXMgZmFpbGVkISBJbml0aWFsaXNhdGlvbiBoYXMgbm90IGJlIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkhJywgZXJyb3IpO1xuICAgICAgICAgICAgdGhpcy5fcHVibGljTG9hZENhbGxlZCA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXJVc2VyKCkge1xuICAgICAgICB0aGlzLl91c2VyID0gdGhpcy5lbXB0eVVzZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNVc2VyRW1wdHkodXNlcjogVXNlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXVzZXIgfHwgKCF1c2VyLmlkICYmIHVzZXIucm9sZXMubGVuZ3RoID09PSAwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNDdXJyZW50VXNlckVtcHR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1VzZXJFbXB0eSh0aGlzLnVzZXIpXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHB1Ymxpc2hVc2VyQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl91c2VyQ2hhbmdlJC5uZXh0KHRoaXMudXNlcik7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHB1Ymxpc2hBbm9ueW1vdXNVc2VyQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hbm9ueW1vdXNVc2VyQ2hhbmdlJC5uZXh0KHRoaXMudXNlcik7XG4gICAgfVxufVxuIl19
217
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi91c2VyL3NlcnZpY2VzL3VzZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBYSxhQUFhLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFFN0QsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXBDLE9BQU8sRUFBQyxJQUFJLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFLekMsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7O0FBUXZELE1BQU0sT0FBTyxXQUFXO0lBWUU7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBZlosS0FBSyxDQUFPO0lBQ1osWUFBWSxDQUFzQjtJQUNsQyxxQkFBcUIsQ0FBc0I7SUFDM0MsWUFBWSxDQUFVO0lBQ3RCLFFBQVEsQ0FBZTtJQUN2QixVQUFVLENBQWU7SUFDM0IsaUJBQWlCLENBQVU7SUFFbkIsa0JBQWtCLEdBQUcsU0FBUyxDQUFDO0lBRS9DLFlBQXNCLFlBQW1DLEVBQ25DLGFBQWtDLEVBQ2xDLGNBQStCLEVBQy9CLElBQW1CLEVBQ25CLFFBQXdCLEVBQ3hCLGlCQUFtQztRQUxuQyxpQkFBWSxHQUFaLFlBQVksQ0FBdUI7UUFDbkMsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBQ2xDLG1CQUFjLEdBQWQsY0FBYyxDQUFpQjtRQUMvQixTQUFJLEdBQUosSUFBSSxDQUFlO1FBQ25CLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ3hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDckQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENB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dCB7SW5qZWN0YWJsZSwgT25EZXN0cm95fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7UHJvY2Vzc1JvbGV9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvcHJvY2Vzcy1yb2xlJztcbmltcG9ydCB7VXNlcn0gZnJvbSAnLi4vbW9kZWxzL3VzZXInO1xuaW1wb3J0IHtDcmVkZW50aWFsc30gZnJvbSAnLi4vLi4vYXV0aGVudGljYXRpb24vbW9kZWxzL2NyZWRlbnRpYWxzJztcbmltcG9ydCB7dGFrZSwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0F1dGhlbnRpY2F0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vYXV0aGVudGljYXRpb24vc2VydmljZXMvYXV0aGVudGljYXRpb24vYXV0aGVudGljYXRpb24uc2VydmljZSc7XG5pbXBvcnQge1VzZXJSZXNvdXJjZVNlcnZpY2V9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9lbmdpbmUtZW5kcG9pbnQvdXNlci1yZXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7VXNlclRyYW5zZm9ybWVyfSBmcm9tICcuLi8uLi9hdXRoZW50aWNhdGlvbi9tb2RlbHMvdXNlci50cmFuc2Zvcm1lcic7XG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gJy4uLy4uL2xvZ2dlci9zZXJ2aWNlcy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge0h0dHBFcnJvclJlc3BvbnNlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1Nlc3Npb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9hdXRoZW50aWNhdGlvbi9zZXNzaW9uL3NlcnZpY2VzL3Nlc3Npb24uc2VydmljZSc7XG5pbXBvcnQge1VzZXJSZXNvdXJjZX0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2ludGVyZmFjZS91c2VyLXJlc291cmNlJztcbmltcG9ydCB7QW5vbnltb3VzU2VydmljZX0gZnJvbSAnLi4vLi4vYXV0aGVudGljYXRpb24vYW5vbnltb3VzL2Fub255bW91cy5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBVc2VyU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgICBwcm90ZWN0ZWQgX3VzZXI6IFVzZXI7XG4gICAgcHJvdGVjdGVkIF91c2VyQ2hhbmdlJDogUmVwbGF5U3ViamVjdDxVc2VyPjtcbiAgICBwcm90ZWN0ZWQgX2Fub255bW91c1VzZXJDaGFuZ2UkOiBSZXBsYXlTdWJqZWN0PFVzZXI+O1xuICAgIHByb3RlY3RlZCBfbG9naW5DYWxsZWQ6IGJvb2xlYW47XG4gICAgcHJvdGVjdGVkIF9zdWJBdXRoOiBTdWJzY3JpcHRpb247XG4gICAgcHJvdGVjdGVkIF9zdWJBbm9ueW06IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIF9wdWJsaWNMb2FkQ2FsbGVkOiBib29sZWFuO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IEdMT0JBTF9ST0xFX1BSRUZJWCA9ICdnbG9iYWxfJztcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfYXV0aFNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3VzZXJSZXNvdXJjZTogVXNlclJlc291cmNlU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3VzZXJUcmFuc2Zvcm06IFVzZXJUcmFuc2Zvcm1lcixcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2xvZzogTG9nZ2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3Nlc3Npb246IFNlc3Npb25TZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfYW5vbnltb3VzU2VydmljZTogQW5vbnltb3VzU2VydmljZSkge1xuICAgICAgICB0aGlzLl91c2VyID0gdGhpcy5lbXB0eVVzZXIoKTtcbiAgICAgICAgdGhpcy5fbG9naW5DYWxsZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fdXNlckNoYW5nZSQgPSBuZXcgUmVwbGF5U3ViamVjdDxVc2VyPigxKTtcbiAgICAgICAgdGhpcy5fYW5vbnltb3VzVXNlckNoYW5nZSQgPSBuZXcgUmVwbGF5U3ViamVjdDxVc2VyPigxKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9zdWJBdXRoID0gdGhpcy5fYXV0aFNlcnZpY2UuYXV0aGVudGljYXRlZCQuc3Vic2NyaWJlKGF1dGggPT4ge1xuICAgICAgICAgICAgICAgIGlmIChhdXRoICYmICF0aGlzLl9sb2dpbkNhbGxlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRVc2VyKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghYXV0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyVXNlcigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnB1Ymxpc2hVc2VyQ2hhbmdlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9zdWJBbm9ueW0gPSB0aGlzLl9hbm9ueW1vdXNTZXJ2aWNlLnRva2VuU2V0LnN1YnNjcmliZSh0b2tlbiA9PiB7XG4gICAgICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRQdWJsaWNVc2VyKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJVc2VyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5wdWJsaXNoQW5vbnltb3VzVXNlckNoYW5nZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXQgdXNlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXI7XG4gICAgfVxuXG4gICAgZ2V0IHVzZXIkKCk6IE9ic2VydmFibGU8VXNlcj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdXNlckNoYW5nZSQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgZ2V0IGFub255bW91c1VzZXIoKTogVXNlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmFub255bW91c1VzZXI7XG4gICAgfVxuXG4gICAgZ2V0IGFub255bW91c1VzZXIkKCk6IE9ic2VydmFibGU8VXNlcj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYW5vbnltb3VzVXNlckNoYW5nZSQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3VzZXJDaGFuZ2UkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX2Fub255bW91c1VzZXJDaGFuZ2UkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX3N1YkF1dGgudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fc3ViQW5vbnltLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdXNlciBoYXMgc3BlY2lmaWVkIGF1dGhvcml0eS5cbiAgICAgKiBAcGFyYW0gYXV0aG9yaXR5IC0gSWYgcHJvdmlkZWQgYXV0aG9yaXR5IGlzIGFycmF5IG9mIGF1dGhvcml0aWVzLlxuICAgICAqICAgICAgICAgICAgICAgICAgICBNZXRob2QgbWFrZSBpbnRlcnNlY3Rpb24gb2YgdGhlIHByb3ZpZGVkIGF1dGhvcml0aWVzIGFuZCB1c2VyJ3MgYXV0aG9yaXRpZXMuXG4gICAgICogICAgICAgICAgICAgICAgICAgIElmIGNhbGN1bGF0ZWQgaW50ZXJzZWN0aW9uIGlzbid0IGVtcHR5IHJldHVybnMgdHJ1ZSwgb3RoZXJ3aXNlIGZhbHNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBoYXNBdXRob3JpdHkoYXV0aG9yaXR5OiBBcnJheTxzdHJpbmc+IHwgc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLl91c2VyLmdldFNlbGZPckltcGVyc29uYXRlZCgpO1xuICAgICAgICBpZiAoIWF1dGhvcml0eSB8fCAhdXNlci5hdXRob3JpdGllcykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhdXRob3JpdHkgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgcmV0dXJuIGF1dGhvcml0eS5zb21lKGEgPT4gdXNlci5hdXRob3JpdGllcy5zb21lKHUgPT4gdSA9PT0gYSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHVzZXIuYXV0aG9yaXRpZXMuc29tZShhID0+IGEgPT09IGF1dGhvcml0eSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzUm9sZShyb2xlOiBQcm9jZXNzUm9sZSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB1c2VyID0gdGhpcy5fdXNlci5nZXRTZWxmT3JJbXBlcnNvbmF0ZWQoKTtcbiAgICAgICAgaWYgKCFyb2xlIHx8ICF1c2VyLnJvbGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVzZXIucm9sZXMuc29tZShyID0+IHIgPT09IHJvbGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyB3aGV0aGVyIHRoZSB1c2VyIGhhcyByb2xlIHdpdGggYSBzcGVjaWZpYyBzdHJpbmdJZFxuICAgICAqIEBwYXJhbSByb2xlU3RyaW5nSWQgSUQgb2YgdGhlIHJvbGUgd2Ugd2FudCB0byBjaGVja1xuICAgICAqL1xuICAgIHB1YmxpYyBoYXNSb2xlQnlJZChyb2xlU3RyaW5nSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB1c2VyID0gdGhpcy5fdXNlci5nZXRTZWxmT3JJbXBlcnNvbmF0ZWQoKTtcbiAgICAgICAgaWYgKCFyb2xlU3RyaW5nSWQgfHwgIXVzZXIucm9sZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdXNlci5yb2xlcy5zb21lKHIgPT4gci5zdHJpbmdJZCA9PT0gcm9sZVN0cmluZ0lkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3Mgd2hldGhlciB0aGUgdXNlciBoYXMgYSByb2xlIHdpdGggdGhlIHNwZWNpZmllZCBpZGVudGlmaWVyIGluIGEgcHJvY2VzcyB3aXRoIHRoZSBzcGVjaWZpZWQgaWRlbnRpZmllciAoYW55IHZlcnNpb24pLFxuICAgICAqIG9yIGlmIHRoZSByb2xlIGlzIGdsb2JhbCAod2l0aCBwcmVmaXggJ2dsb2JhbF8nKS5cbiAgICAgKiBAcGFyYW0gcm9sZUlkZW50aWZpZXIgaWRlbnRpZmllciAoaW1wb3J0IElEKSBvZiB0aGUgcm9sZSB3ZSB3YW50IHRvIGNoZWNrXG4gICAgICogQHBhcmFtIG5ldElkZW50aWZpZXIgaWRlbnRpZmllciAoaW1wb3J0IElEKSBvZiB0aGUgcHJvY2VzcyB0aGUgcm9sZSBpcyBkZWZpbmVkIGluXG4gICAgICovXG4gICAgcHVibGljIGhhc1JvbGVCeUlkZW50aWZpZXIocm9sZUlkZW50aWZpZXI6IHN0cmluZywgbmV0SWRlbnRpZmllcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLl91c2VyLmdldFNlbGZPckltcGVyc29uYXRlZCgpO1xuICAgICAgICBpZiAoIXJvbGVJZGVudGlmaWVyIHx8ICF1c2VyLnJvbGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXNlci5yb2xlcy5zb21lKHIgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2hlc1JvbGUgPSByLmltcG9ydElkID09PSByb2xlSWRlbnRpZmllcjtcbiAgICAgICAgICAgIGNvbnN0IGlzR2xvYmFsUm9sZSA9IHIuaW1wb3J0SWQuc3RhcnRzV2l0aCh0aGlzLkdMT0JBTF9ST0xFX1BSRUZJWCk7XG4gICAgICAgICAgICBjb25zdCBtYXRjaGVzTmV0ID0gci5uZXRJbXBvcnRJZCA9PT0gbmV0SWRlbnRpZmllcjtcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVzUm9sZSAmJiAoaXNHbG9iYWxSb2xlIHx8IG1hdGNoZXNOZXQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3Mgd2hldGhlciB0aGUgdXNlciBoYXMgcm9sZSB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSBpbiBhIHByb2Nlc3Mgd2l0aCB0aGUgc3BlY2lmaWVkIGlkZW50aWZpZXIgKGFueSB2ZXJzaW9uKVxuICAgICAqIEBwYXJhbSByb2xlTmFtZSBuYW1lIG9mIHRoZSByb2xlIHdlIHdhbnQgdG8gY2hlY2tcbiAgICAgKiBAcGFyYW0gbmV0SWRlbnRpZmllciBpZGVudGlmaWVyIChpbXBvcnQgSUQpIG9mIHRoZSBwcm9jZXNzIHRoZSByb2xlIGlzIGRlZmluZWQgaW5cbiAgICAgKi9cbiAgICBwdWJsaWMgaGFzUm9sZUJ5TmFtZShyb2xlTmFtZTogc3RyaW5nLCBuZXRJZGVudGlmaWVyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgdXNlciA9IHRoaXMuX3VzZXIuZ2V0U2VsZk9ySW1wZXJzb25hdGVkKCk7XG4gICAgICAgIGlmICghcm9sZU5hbWUgfHwgIW5ldElkZW50aWZpZXIgfHwgIXVzZXIucm9sZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdXNlci5yb2xlcy5zb21lKHIgPT4gci5uZXRJbXBvcnRJZCA9PT0gbmV0SWRlbnRpZmllciAmJiByLm5hbWUgPT09IHJvbGVOYW1lKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9naW4oY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzKTogT2JzZXJ2YWJsZTxVc2VyPiB7XG4gICAgICAgIHRoaXMuX2xvZ2luQ2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dGhTZXJ2aWNlLmxvZ2luKGNyZWRlbnRpYWxzKS5waXBlKFxuICAgICAgICAgICAgdGFwKChhdXRoVXNlcjogVXNlcikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VzZXIgPSBhdXRoVXNlcjtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2dpbkNhbGxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMucHVibGlzaFVzZXJDaGFuZ2UoKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGxvZ291dCgpOiBPYnNlcnZhYmxlPG9iamVjdD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXV0aFNlcnZpY2UubG9nb3V0KCkucGlwZShcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdXNlciA9IHRoaXMuZW1wdHlVc2VyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5wdWJsaXNoVXNlckNoYW5nZSgpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVsb2FkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxvYWRVc2VyKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGVtcHR5VXNlcigpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBVc2VyKCcnLCAnJywgJycsICcnLCAnJywgJycsIFtdLCBbXSwgW10sIFtdKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbG9hZFVzZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3VzZXJSZXNvdXJjZS5nZXRMb2dnZWRVc2VyKCkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKHVzZXI6IFVzZXJSZXNvdXJjZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHVzZXIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBiYWNrZW5kVXNlciA9IHsuLi51c2VyLCBpZDogdXNlci5pZC50b1N0cmluZygpfTtcbiAgICAgICAgICAgICAgICB0aGlzLl91c2VyID0gdGhpcy5fdXNlclRyYW5zZm9ybS50cmFuc2Zvcm0oYmFja2VuZFVzZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMucHVibGlzaFVzZXJDaGFuZ2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UgJiYgZXJyb3Iuc3RhdHVzID09PSA0MDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZGVidWcoJ0F1dGhlbnRpY2F0aW9uIHRva2VuIGlzIGludmFsaWQuIENsZWFyaW5nIHN0cmVhbScpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Nlc3Npb24uY2xlYXIoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdMb2FkaW5nIGxvZ2dlZCB1c2VyIGhhcyBmYWlsZWQhIEluaXRpYWxpc2F0aW9uIGhhcyBub3QgYmUgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSEnLCBlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBsb2FkUHVibGljVXNlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdXNlclJlc291cmNlLmdldFB1YmxpY0xvZ2dlZFVzZXIoKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgodXNlcjogVXNlclJlc291cmNlKSA9PiB7XG4gICAgICAgICAgICBpZiAodXNlcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJhY2tlbmRVc2VyID0gey4uLnVzZXIsIGlkOiB1c2VyLmlkLnRvU3RyaW5nKCl9O1xuICAgICAgICAgICAgICAgIHRoaXMuX3VzZXIgPSB0aGlzLl91c2VyVHJhbnNmb3JtLnRyYW5zZm9ybShiYWNrZW5kVXNlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5wdWJsaXNoQW5vbnltb3VzVXNlckNoYW5nZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoJ0xvYWRpbmcgbG9nZ2VkIHVzZXIgaGFzIGZhaWxlZCEgSW5pdGlhbGlzYXRpb24gaGFzIG5vdCBiZSBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IScsIGVycm9yKTtcbiAgICAgICAgICAgIHRoaXMuX3B1YmxpY0xvYWRDYWxsZWQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyVXNlcigpIHtcbiAgICAgICAgdGhpcy5fdXNlciA9IHRoaXMuZW1wdHlVc2VyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzVXNlckVtcHR5KHVzZXI6IFVzZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF1c2VyIHx8ICghdXNlci5pZCAmJiB1c2VyLnJvbGVzLmxlbmd0aCA9PT0gMCk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzQ3VycmVudFVzZXJFbXB0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNVc2VyRW1wdHkodGhpcy51c2VyKVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBwdWJsaXNoVXNlckNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdXNlckNoYW5nZSQubmV4dCh0aGlzLnVzZXIpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBwdWJsaXNoQW5vbnltb3VzVXNlckNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYW5vbnltb3VzVXNlckNoYW5nZSQubmV4dCh0aGlzLnVzZXIpO1xuICAgIH1cbn1cbiJdfQ==
@@ -2,11 +2,11 @@ import { of } from 'rxjs';
2
2
  import { AuthenticationMethodService } from '../../../authentication/services/authentication-method.service';
3
3
  export class MockAuthenticationMethodService extends AuthenticationMethodService {
4
4
  login(credentials) {
5
- return of({ email: 'mail', id: 'id', name: 'name', surname: 'surname', fullName: 'name surname',
5
+ return of({ email: 'mail', id: 'id', username: 'username', realmId: 'realmId', name: 'name', firstName: 'name', surname: 'surname', lastName: 'surname', fullName: 'name surname',
6
6
  groups: [], authorities: [], nextGroups: [], processRoles: [] });
7
7
  }
8
8
  logout() {
9
9
  return of(undefined);
10
10
  }
11
11
  }
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay1hdXRoZW50aWNhdGlvbi1tZXRob2Qtc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvdXRpbGl0eS90ZXN0cy9tb2Nrcy9tb2NrLWF1dGhlbnRpY2F0aW9uLW1ldGhvZC1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sZ0VBQWdFLENBQUM7QUFJM0csTUFBTSxPQUFPLCtCQUFnQyxTQUFRLDJCQUEyQjtJQUM1RSxLQUFLLENBQUMsV0FBd0I7UUFDMUIsT0FBTyxFQUFFLENBQUMsRUFBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxjQUFjO1lBQzFGLE1BQU0sRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxNQUFNO1FBQ0YsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0F1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vYXV0aGVudGljYXRpb24vc2VydmljZXMvYXV0aGVudGljYXRpb24tbWV0aG9kLnNlcnZpY2UnO1xuaW1wb3J0IHtDcmVkZW50aWFsc30gZnJvbSAnLi4vLi4vLi4vYXV0aGVudGljYXRpb24vbW9kZWxzL2NyZWRlbnRpYWxzJztcbmltcG9ydCB7VXNlclJlc291cmNlfSBmcm9tICcuLi8uLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL3VzZXItcmVzb3VyY2UnO1xuXG5leHBvcnQgY2xhc3MgTW9ja0F1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmljZSBleHRlbmRzIEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmljZSB7XG4gICAgbG9naW4oY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzKTogT2JzZXJ2YWJsZTxVc2VyUmVzb3VyY2U+IHtcbiAgICAgICAgcmV0dXJuIG9mKHtlbWFpbDogJ21haWwnLCBpZDogJ2lkJywgbmFtZTogJ25hbWUnLCBzdXJuYW1lOiAnc3VybmFtZScsIGZ1bGxOYW1lOiAnbmFtZSBzdXJuYW1lJyxcbiAgICAgICAgICAgIGdyb3VwczogW10sIGF1dGhvcml0aWVzOiBbXSwgbmV4dEdyb3VwczogW10sIHByb2Nlc3NSb2xlczogW119KTtcbiAgICB9XG5cbiAgICBsb2dvdXQoKTogT2JzZXJ2YWJsZTxvYmplY3Q+IHtcbiAgICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgfVxufVxuIl19
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay1hdXRoZW50aWNhdGlvbi1tZXRob2Qtc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvdXRpbGl0eS90ZXN0cy9tb2Nrcy9tb2NrLWF1dGhlbnRpY2F0aW9uLW1ldGhvZC1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sZ0VBQWdFLENBQUM7QUFJM0csTUFBTSxPQUFPLCtCQUFnQyxTQUFRLDJCQUEyQjtJQUM1RSxLQUFLLENBQUMsV0FBd0I7UUFDMUIsT0FBTyxFQUFFLENBQUMsRUFBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLGNBQWM7WUFDNUssTUFBTSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELE1BQU07UUFDRixPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09ic2VydmFibGUsIG9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7QXV0aGVudGljYXRpb25NZXRob2RTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9hdXRoZW50aWNhdGlvbi9zZXJ2aWNlcy9hdXRoZW50aWNhdGlvbi1tZXRob2Quc2VydmljZSc7XG5pbXBvcnQge0NyZWRlbnRpYWxzfSBmcm9tICcuLi8uLi8uLi9hdXRoZW50aWNhdGlvbi9tb2RlbHMvY3JlZGVudGlhbHMnO1xuaW1wb3J0IHtVc2VyUmVzb3VyY2V9IGZyb20gJy4uLy4uLy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvdXNlci1yZXNvdXJjZSc7XG5cbmV4cG9ydCBjbGFzcyBNb2NrQXV0aGVudGljYXRpb25NZXRob2RTZXJ2aWNlIGV4dGVuZHMgQXV0aGVudGljYXRpb25NZXRob2RTZXJ2aWNlIHtcbiAgICBsb2dpbihjcmVkZW50aWFsczogQ3JlZGVudGlhbHMpOiBPYnNlcnZhYmxlPFVzZXJSZXNvdXJjZT4ge1xuICAgICAgICByZXR1cm4gb2Yoe2VtYWlsOiAnbWFpbCcsIGlkOiAnaWQnLCB1c2VybmFtZTogJ3VzZXJuYW1lJywgcmVhbG1JZDogJ3JlYWxtSWQnLCBuYW1lOiAnbmFtZScsIGZpcnN0TmFtZTogJ25hbWUnLCBzdXJuYW1lOiAnc3VybmFtZScsIGxhc3ROYW1lOiAnc3VybmFtZScsIGZ1bGxOYW1lOiAnbmFtZSBzdXJuYW1lJyxcbiAgICAgICAgICAgIGdyb3VwczogW10sIGF1dGhvcml0aWVzOiBbXSwgbmV4dEdyb3VwczogW10sIHByb2Nlc3NSb2xlczogW119KTtcbiAgICB9XG5cbiAgICBsb2dvdXQoKTogT2JzZXJ2YWJsZTxvYmplY3Q+IHtcbiAgICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgfVxufVxuIl19
@@ -20,7 +20,7 @@ export class MockAuthenticationService extends AuthenticationService {
20
20
  this._userTransformer = _userTransformer;
21
21
  }
22
22
  login(credentials) {
23
- return of(new User('id', 'mail', 'name', 'surname', ['ADMIN'], [{ stringId: 'id', name: 'id', importId: 'id' }]));
23
+ return of(new User('id', 'username', 'mail', 'realmId', 'name', 'surname', ['ADMIN'], [{ stringId: 'id', name: 'id', importId: 'id' }]));
24
24
  }
25
25
  logout() {
26
26
  return of(undefined);
@@ -37,4 +37,4 @@ export class MockAuthenticationService extends AuthenticationService {
37
37
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MockAuthenticationService, decorators: [{
38
38
  type: Injectable
39
39
  }], ctorParameters: () => [{ type: i1.AuthenticationMethodService }, { type: i2.ConfigurationService }, { type: i3.SessionService }, { type: i4.UserTransformer }] });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay1hdXRoZW50aWNhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi91dGlsaXR5L3Rlc3RzL21vY2tzL21vY2stYXV0aGVudGljYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSx3RUFBd0UsQ0FBQztBQUU3RyxPQUFPLEVBQWEsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFPekMsTUFBTSxPQUFPLHlCQUEwQixTQUFRLHFCQUFxQjtJQUUxQztJQUNBO0lBQ0E7SUFDQTtJQUh0QixZQUFzQixLQUFrQyxFQUNsQyxPQUE2QixFQUM3QixlQUErQixFQUMvQixnQkFBaUM7UUFDbkQsS0FBSyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFKdkMsVUFBSyxHQUFMLEtBQUssQ0FBNkI7UUFDbEMsWUFBTyxHQUFQLE9BQU8sQ0FBc0I7UUFDN0Isb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBQy9CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7SUFFdkQsQ0FBQztJQUdELEtBQUssQ0FBQyxXQUF3QjtRQUMxQixPQUFPLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwSCxDQUFDO0lBRUQsTUFBTTtRQUNGLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFQSxJQUFJLGVBQWU7UUFDaEIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELElBQUksY0FBYztRQUNkLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BCLENBQUM7d0dBeEJRLHlCQUF5Qjs0R0FBekIseUJBQXlCOzs0RkFBekIseUJBQXlCO2tCQURyQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBdXRoZW50aWNhdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2F1dGhlbnRpY2F0aW9uL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtDcmVkZW50aWFsc30gZnJvbSAnLi4vLi4vLi4vYXV0aGVudGljYXRpb24vbW9kZWxzL2NyZWRlbnRpYWxzJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtVc2VyfSBmcm9tICcuLi8uLi8uLi91c2VyL21vZGVscy91c2VyJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0F1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL2F1dGhlbnRpY2F0aW9uL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLW1ldGhvZC5zZXJ2aWNlXCI7XG5pbXBvcnQge0NvbmZpZ3VyYXRpb25TZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vY29uZmlndXJhdGlvbi9jb25maWd1cmF0aW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7VXNlclRyYW5zZm9ybWVyfSBmcm9tIFwiLi4vLi4vLi4vYXV0aGVudGljYXRpb24vbW9kZWxzL3VzZXIudHJhbnNmb3JtZXJcIjtcbmltcG9ydCB7U2Vzc2lvblNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9hdXRoZW50aWNhdGlvbi9zZXNzaW9uL3NlcnZpY2VzL3Nlc3Npb24uc2VydmljZVwiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTW9ja0F1dGhlbnRpY2F0aW9uU2VydmljZSBleHRlbmRzIEF1dGhlbnRpY2F0aW9uU2VydmljZSB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2F1dGg6IEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2NvbmZpZzogQ29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9zZXNzaW9uU2VydmljZTogU2Vzc2lvblNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF91c2VyVHJhbnNmb3JtZXI6IFVzZXJUcmFuc2Zvcm1lcikge1xuICAgICAgICBzdXBlcihfYXV0aCwgX2NvbmZpZywgX3Nlc3Npb25TZXJ2aWNlLCBfdXNlclRyYW5zZm9ybWVyKTtcbiAgICB9XG5cblxuICAgIGxvZ2luKGNyZWRlbnRpYWxzOiBDcmVkZW50aWFscyk6IE9ic2VydmFibGU8VXNlcj4ge1xuICAgICAgICByZXR1cm4gb2YobmV3IFVzZXIoJ2lkJywgJ21haWwnLCAnbmFtZScsICdzdXJuYW1lJywgWydBRE1JTiddLCBbe3N0cmluZ0lkOiAnaWQnLCBuYW1lOiAnaWQnLCBpbXBvcnRJZDogJ2lkJ31dKSk7XG4gICAgfVxuXG4gICAgbG9nb3V0KCk6IE9ic2VydmFibGU8b2JqZWN0PiB7XG4gICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgIH1cblxuICAgICBnZXQgaXNBdXRoZW50aWNhdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBnZXQgYXV0aGVudGljYXRlZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICB9XG59XG4iXX0=
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay1hdXRoZW50aWNhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi91dGlsaXR5L3Rlc3RzL21vY2tzL21vY2stYXV0aGVudGljYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSx3RUFBd0UsQ0FBQztBQUU3RyxPQUFPLEVBQWEsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFPekMsTUFBTSxPQUFPLHlCQUEwQixTQUFRLHFCQUFxQjtJQUUxQztJQUNBO0lBQ0E7SUFDQTtJQUh0QixZQUFzQixLQUFrQyxFQUNsQyxPQUE2QixFQUM3QixlQUErQixFQUMvQixnQkFBaUM7UUFDbkQsS0FBSyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFKdkMsVUFBSyxHQUFMLEtBQUssQ0FBNkI7UUFDbEMsWUFBTyxHQUFQLE9BQU8sQ0FBc0I7UUFDN0Isb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBQy9CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7SUFFdkQsQ0FBQztJQUdELEtBQUssQ0FBQyxXQUF3QjtRQUMxQixPQUFPLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNJLENBQUM7SUFFRCxNQUFNO1FBQ0YsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVBLElBQUksZUFBZTtRQUNoQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2QsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEIsQ0FBQzt3R0F4QlEseUJBQXlCOzRHQUF6Qix5QkFBeUI7OzRGQUF6Qix5QkFBeUI7a0JBRHJDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0F1dGhlbnRpY2F0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vYXV0aGVudGljYXRpb24vc2VydmljZXMvYXV0aGVudGljYXRpb24vYXV0aGVudGljYXRpb24uc2VydmljZSc7XG5pbXBvcnQge0NyZWRlbnRpYWxzfSBmcm9tICcuLi8uLi8uLi9hdXRoZW50aWNhdGlvbi9tb2RlbHMvY3JlZGVudGlhbHMnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1VzZXJ9IGZyb20gJy4uLy4uLy4uL3VzZXIvbW9kZWxzL3VzZXInO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QXV0aGVudGljYXRpb25NZXRob2RTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vYXV0aGVudGljYXRpb24vc2VydmljZXMvYXV0aGVudGljYXRpb24tbWV0aG9kLnNlcnZpY2VcIjtcbmltcG9ydCB7Q29uZmlndXJhdGlvblNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9jb25maWd1cmF0aW9uL2NvbmZpZ3VyYXRpb24uc2VydmljZVwiO1xuaW1wb3J0IHtVc2VyVHJhbnNmb3JtZXJ9IGZyb20gXCIuLi8uLi8uLi9hdXRoZW50aWNhdGlvbi9tb2RlbHMvdXNlci50cmFuc2Zvcm1lclwiO1xuaW1wb3J0IHtTZXNzaW9uU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL2F1dGhlbnRpY2F0aW9uL3Nlc3Npb24vc2VydmljZXMvc2Vzc2lvbi5zZXJ2aWNlXCI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNb2NrQXV0aGVudGljYXRpb25TZXJ2aWNlIGV4dGVuZHMgQXV0aGVudGljYXRpb25TZXJ2aWNlIHtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfYXV0aDogQXV0aGVudGljYXRpb25NZXRob2RTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfY29uZmlnOiBDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3Nlc3Npb25TZXJ2aWNlOiBTZXNzaW9uU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3VzZXJUcmFuc2Zvcm1lcjogVXNlclRyYW5zZm9ybWVyKSB7XG4gICAgICAgIHN1cGVyKF9hdXRoLCBfY29uZmlnLCBfc2Vzc2lvblNlcnZpY2UsIF91c2VyVHJhbnNmb3JtZXIpO1xuICAgIH1cblxuXG4gICAgbG9naW4oY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzKTogT2JzZXJ2YWJsZTxVc2VyPiB7XG4gICAgICAgIHJldHVybiBvZihuZXcgVXNlcignaWQnLCAndXNlcm5hbWUnLCAnbWFpbCcsICdyZWFsbUlkJywgJ25hbWUnLCAnc3VybmFtZScsIFsnQURNSU4nXSwgW3tzdHJpbmdJZDogJ2lkJywgbmFtZTogJ2lkJywgaW1wb3J0SWQ6ICdpZCd9XSkpO1xuICAgIH1cblxuICAgIGxvZ291dCgpOiBPYnNlcnZhYmxlPG9iamVjdD4ge1xuICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICAgZ2V0IGlzQXV0aGVudGljYXRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZ2V0IGF1dGhlbnRpY2F0ZWQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgfVxufVxuIl19