@myclub_se/data-access 3.7.1 → 3.7.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.
@@ -486,7 +486,7 @@ export class ActivityService {
486
486
  activityId
487
487
  });
488
488
  }
489
- signUpMemberOpenActivity(memberId, activityId, comment, optionalFees, responses) {
489
+ signUpMemberOpenActivity(memberId, activityId, comment, optionalFees, responses, guests = []) {
490
490
  return this.apiService
491
491
  .updateResource(openActivityFactory, Role.MemberAdmin, MEMBER_OPEN_ACTIVITY_RESPOND_WITH_DATA_PATH, {
492
492
  memberId,
@@ -494,17 +494,19 @@ export class ActivityService {
494
494
  }, {
495
495
  comment,
496
496
  optional_fees: optionalFees,
497
- responses
497
+ responses,
498
+ guests
498
499
  });
499
500
  }
500
- signUpPublicOpenActivity(activityId, comment, optionalFees, responses) {
501
+ signUpPublicOpenActivity(activityId, comment, optionalFees, responses, guests = []) {
501
502
  return this.apiService
502
503
  .updateResource(openActivityFactory, Role.Public, PUBLIC_OPEN_ACTIVITY_RESPOND_WITH_DATA_PATH, {
503
504
  activityId
504
505
  }, {
505
506
  comment,
506
507
  optional_fees: optionalFees,
507
- responses
508
+ responses,
509
+ guests
508
510
  });
509
511
  }
510
512
  updateMemberActivity(memberId, activityInviteId, activityInvite) {
@@ -648,4 +650,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
648
650
  providedIn: 'root'
649
651
  }]
650
652
  }], ctorParameters: () => [{ type: i1.ApiService }] });
651
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtYWNjZXNzL3NyYy9saWIvc2VydmljZXMvYWN0aXZpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFRTCxJQUFJLEdBQ0wsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUNMLGVBQWUsRUFDZixxQkFBcUIsRUFDckIsdUJBQXVCLEVBQ3ZCLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixZQUFZLEVBQ1osMkJBQTJCLEVBQzNCLG1CQUFtQixFQUFFLHNCQUFzQixFQUMzQyxtQkFBbUIsR0FDcEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUUvQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7OztBQUVwRSxNQUFNLDJCQUEyQixHQUFHLHdCQUF3QixDQUFDO0FBQzdELE1BQU0sNkJBQTZCLEdBQUcsYUFBYSxDQUFDO0FBQ3BELE1BQU0sMkJBQTJCLEdBQUcseUJBQXlCLENBQUM7QUFDOUQsTUFBTSxpQ0FBaUMsR0FBRyxzQ0FBc0MsQ0FBQztBQUNqRixNQUFNLDJDQUEyQyxHQUFHLDJDQUEyQyxDQUFDO0FBQ2hHLE1BQU0sa0NBQWtDLEdBQUcsdUNBQXVDLENBQUM7QUFDbkYsTUFBTSxnQ0FBZ0MsR0FBRyxzQ0FBc0MsQ0FBQztBQUVoRixNQUFNLDJCQUEy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amVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICcuL2FwaS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEFjdGl2aXR5LFxuICBBY3Rpdml0eUxvY2F0aW9uLCBBY3Rpdml0eVF1ZXN0aW9uLFxuICBBY3Rpdml0eVF1ZXN0aW9uUmVzcG9uc2UsXG4gIEFjdGl2aXR5VHlwZSxcbiAgQ29sbGVjdGlvbixcbiAgR3Vlc3QsXG4gIE1lbWJlckFjdGl2aXR5SW52aXRlLFxuICBSb2xlLFxufSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGFjdGl2aXR5RmFjdG9yeSxcbiAgYWN0aXZpdHlJbnZpdGVGYWN0b3J5LFxuICBhY3Rpdml0eUxvY2F0aW9uRmFjdG9yeSxcbiAgYWN0aXZpdHlRdWVzdGlvbkZhY3RvcnksXG4gIGFjdGl2aXR5U2V0dGluZ3NGYWN0b3J5LFxuICBhY3Rpdml0eVR5cGVGYWN0b3J5LFxuICBldmVudEZhY3RvcnksXG4gIGd1ZXN0RmFjdG9yeSxcbiAgbWVtYmVyQWN0aXZpdHlJbnZpdGVGYWN0b3J5LFxuICBvcGVuQWN0aXZpdHlGYWN0b3J5LCBzZWFyY2hBdHRyaWJ1dGVGYWN0b3J5LFxuICBzZWFyY2hNZW1iZXJGYWN0b3J5LFxufSBmcm9tICcuL2ZhY3Rvcmllcyc7XG5pbXBvcnQgeyBzdWIgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgeyBPcGVuQWN0aXZpdHlTZWFyY2hQYXJhbXNJbnRlcmZhY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGludmFsaWRSb2xlRXJyb3IgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHNlYXJjaFRlYW1GYWN0b3J5IH0gZnJvbSAnLi9mYWN0b3JpZXMvc2VhcmNoLXRlYW0tZmFjdG9yeSc7XG5cbmNvbnN0IFBVQkxJQ19BQ1RJVklUWV9JTlZJVEVfUEFUSCA9ICdhY3Rpdml0aWVzLzppZC86dG9rZW4vJztcbmNvbnN0IFBVQkxJQ19NRU1CRVJfQUNUSVZJVElFU19QQVRIID0gJ2FjdGl2aXRpZXMvJztcbmNvbnN0IFBVQkxJQ19NRU1CRVJfQUNUSVZJVFlfUEFUSCA9ICdhY3Rpdml0aWVzLzphY3Rpdml0eUlkLyc7XG5jb25zdCBQVUJMSUNfT1BFTl9BQ1RJVklUWV9SRVNQT05EX1BBVEggPSAnb3Blbi1hY3Rpdml0aWVzLzphY3Rpdml0eUlkL3Jlc3BvbmQvJztcbmNvbnN0IFBVQkxJQ19PUEVOX0FDVElWSVRZX1JFU1BPTkRfV0lUSF9EQVRBX1BBVEggPSAnb3Blbi1hY3Rpdml0aWVzLzphY3Rpdml0eUlkL3Jlc3BvbmQtZGF0YS8nO1xuY29uc3QgUFVCTElDX01FTUJFUl9BQ1RJVklUWV9JTlZJVEVfUEFUSCA9ICdhY3Rpdml0aWVzL2ludml0ZXMvOmFjdGl2aXR5SW52aXRlSWQvJztcbmNvbnN0IFBVQkxJQ19PUEVOX0FDVElWSVRZX0lOVklURV9QQVRIID0gJ29wZW4tYWN0aXZpdGllcy9pbnZpdGVzLzphY3Rpdml0eUlkLyc7XG5cbmNvbnN0IENMVUJfQUNUSVZJVFlfU0VUVElOR1NfUEFUSCA9ICc6Y2x1YklkL2FjdGl2aXRpZXMvc2V0dGluZ3MvJztcbmNvbnN0IENMVUJfQUNUSVZJVFlfTE9DQVRJT05TX1BBVEggPSAnOmNsdWJJZC9hY3Rpdml0aWVzL2xvY2F0aW9ucy8nO1xuY29uc3QgQ0xVQl9BQ1RJVklUWV9MT0NBVElPTl9QQVRIID0gJzpjbHViSWQvYWN0aXZpdGllcy9sb2NhdGlvbnMvOmxvY2F0aW9uSWQvJztcbmNvbnN0IENMVUJfQUNUSVZJVFlfVFlQRVNfUEFUSCA9ICc6Y2x1YklkL2FjdGl2aXRpZXMvdHlwZXMvJztcbmNvbnN0IENMVUJfQUNUSVZJVFlfVFlQRV9QQVRIID0gJzpjbHViSWQvYWN0aXZpdGllcy90eXBlcy86dHlwZUlkLyc7XG5cbmNvbnN0IFNFQ1RJT05fQUNUSVZJVFlfU0VUVElOR1NfUEFUSCA9ICc6c2VjdGlvbklkL2FjdGl2aXRpZXMvc2V0dGluZ3MvJztcbmNvbnN0IFNFQ1RJT05fQUNUSVZJVFlfTE9DQVRJT05TX1BBVEggPSAnOnNlY3Rpb25JZC9hY3Rpdml0aWVzL2xvY2F0aW9ucy8nO1xuY29uc3QgU0VDVElPTl9BQ1RJVklUWV9MT0NBVElPTl9QQVRIID0gJzpzZWN0aW9uSWQvYWN0aXZpdGllcy9sb2NhdGlvbnMvOmxvY2F0aW9uSWQvJztcbmNvbnN0IFNFQ1RJT05fQUNUSVZJVFlfVFlQRVNfUEFUSCA9ICc6c2VjdGlvbklkL2FjdGl2aXRpZXMvdHlwZXMvJztcbmNvbnN0IFNFQ1RJT05fQUNUSVZJVFlfVFlQRV9QQVRIID0gJzpzZWN0aW9uSWQvYWN0aXZpdGllcy90eXBlcy86dHlwZUlkLyc7XG5cbmNvbnN0IFRFQU1fQUNUSVZJVElFU19QQVRIID0gJzp0ZWFtSWQvYWN0aXZpdGllcy8nO1xuY29uc3QgVEVBTV9BQ1RJVklUWV9SVUxFX0FUVFJJQlVURVNfUEFUSCA9ICc6dGVhbUlkL2FjdGl2aXRpZXMvYXR0cmlidXRlcy8nO1xuY29uc3QgVEVBTV9BQ1RJVklUWV9JTlZJVEVTX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzLzphY3Rpdml0eUlkL2ludml0ZXMvJztcbmNvbnN0IFRFQU1fQUNUSVZJVFlfSU5WSVRFX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzLzphY3Rpdml0eUlkL2ludml0ZXMvOmFjdGl2aXR5SW52aXRlSWQvJztcbmNvbnN0IFRFQU1fQUNUSVZJVFlfSU5WSVRFX1JFU0VORF9QQVRIID0gJzp0ZWFtSWQvYWN0aXZpdGllcy86YWN0aXZpdHlJZC9pbnZpdGVzLzphY3Rpdml0eUludml0ZUlkL3Jlc2VuZC1pbnZpdGUvJztcbmNvbnN0IFRFQU1fQUNUSVZJVFlfTkVXX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzL25ldy8nO1xuY29uc3QgVEVBTV9BQ1RJVklUWV9QQVJUSUNJUEFOVFNfUEFUSCA9ICc6dGVhbUlkL2FjdGl2aXRpZXMvOmFjdGl2aXR5SWQvcGFydGljaXBhbnRzLyc7XG5jb25zdCBURUFNX0FDVElWSVRZX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzLzppZC8nO1xuY29uc3QgVEVBTV9BQ1RJVklUWV9RUl9DT0RFX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzLzppZC9xci1jb2RlLyc7XG5jb25zdCBURUFNX0FDVElWSVRZX1FVRVNUSU9OX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzL3F1ZXN0aW9ucy86aWQvJztcbmNvbnN0IFRFQU1fQUNUSVZJVFlfUVVFU1RJT05TX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzL3F1ZXN0aW9ucy8nO1xuY29uc3QgVEVBTV9BQ1RJVklUWV9SVUxFX1RFQU1TX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzL3RlYW1zLyc7XG5jb25zdCBURUFNX0FDVElWSVRZX1NFVFRJTkdTX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzL3NldHRpbmdzLyc7XG5jb25zdCBURUFNX0FDVElWSVRZX1RZUEVTX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzL3R5cGVzLyc7XG5jb25zdCBURUFNX0FDVElWSVRZX0xPQ0FUSU9OU19QQVRIID0gJzp0ZWFtSWQvYWN0aXZpdGllcy9sb2NhdGlvbnMvJztcbmNvbnN0IFRFQU1fQ0FMRU5EQVJfUEFUSCA9ICc6dGVhbUlkL2FjdGl2aXRpZXMvY2FsZW5kYXIvJztcblxuY29uc3QgTUVNQkVSX0FDVElWSVRZX0FUVEVOREFOQ0VfUEFUSCA9ICc6bWVtYmVySWQvYWN0aXZpdGllcy9hY3Rpdml0eS86YWN0aXZpdHlJZC9hdHRlbmRhbmNlLyc7XG5jb25zdCBNRU1CRVJfQUNUSVZJVFlfSU5WSVRFX1BBVEggPSAnOm1lbWJlcklkL2FjdGl2aXRpZXMvOmFjdGl2aXR5SW52aXRlSWQvJztcbmNvbnN0IE1FTUJFUl9BQ1RJVklUWV9QQVRIID0gJzptZW1iZXJJZC9hY3Rpdml0aWVzL2FjdGl2aXR5LzphY3Rpdml0eUlkLyc7XG5jb25zdCBNRU1CRVJfQUNUSVZJVFlfSU5WSVRFU19QQVRIID0gJzptZW1iZXJJZC9hY3Rpdml0aWVzLyc7XG5jb25zdCBNRU1CRVJfQ0FMRU5EQVJfUEFUSCA9ICc6bWVtYmVySWQvYWN0aXZpdGllcy9jYWxlbmRhci8nO1xuY29uc3QgTUVNQkVSX09QRU5fQUNUSVZJVElFU19QQVRIID0gJzptZW1iZXJJZC9vcGVuLWFjdGl2aXRpZXMvJztcbmNvbnN0IE1FTUJFUl9PUEVOX0FDVElWSVRJRVNfQUNUSVZJVFlfVFlQRVNfUEFUSCA9ICc6bWVtYmVySWQvb3Blbi1hY3Rpdml0aWVzL3R5cGVzLyc7XG5jb25zdCBNRU1CRVJfT1BFTl9BQ1RJVklUSUVTX0FDVElWSVRZX0xPQ0FUSU9OU19QQVRIID0gJzptZW1iZXJJZC9vcGVuLWFjdGl2aXRpZXMvbG9jYXRpb25zLyc7XG5jb25zdCBNRU1CRVJfT1BFTl9BQ1RJVklUWV9QQVRIID0gJzptZW1iZXJJZC9vcGVuLWFjdGl2aXRpZXMvOmFjdGl2aXR5SWQvJztcbmNvbnN0IE1FTUJFUl9PUEVOX0FDVElWSVRZX1JFU1BPTkRfUEFUSCA9ICc6bWVtYmVySWQvb3Blbi1hY3Rpdml0aWVzLzphY3Rpdml0eUlkL3Jlc3BvbmQvJztcbmNvbnN0IE1FTUJFUl9PUEVOX0FDVElWSVRZX1JFU1BPTkRfV0lUSF9EQVRBX1BBVEggPSAnOm1lbWJlcklkL29wZW4tYWN0aXZpdGllcy86YWN0aXZpdHlJZC9yZXNwb25kLWRhdGEvJztcbmNvbnN0IE1FTUJFUl9BQ1RJVklUWV9TRVRUSU5HU19QQVRIID0gJzptZW1iZXJJZC9hY3Rpdml0aWVzL3NldHRpbmdzLyc7XG5jb25zdCBNRU1CRVJfQUNUSVZJVFlfVFlQRVNfUEFUSCA9ICc6bWVtYmVySWQvYWN0aXZpdGllcy90eXBlcy8nO1xuY29uc3QgTUVNQkVSX0FDVElWSVRZX0xPQ0FUSU9OU19QQVRIID0gJzptZW1iZXJJZC9hY3Rpdml0aWVzL2xvY2F0aW9ucy8nO1xuXG5jb25zdCBURUFNX0FDVElWSVRZX0dVRVNUU19QQVRIID0gJzp0ZWFtSWQvYWN0aXZpdGllcy86YWN0aXZpdHlJZC9ndWVzdHMvJztcbmNvbnN0IFRFQU1fQUNUSVZJVFlfR1VFU1RfUEFUSCA9ICc6dGVhbUlkL2FjdGl2aXRpZXMvOmFjdGl2aXR5SWQvZ3Vlc3RzLzpndWVzdElkLyc7XG5jb25zdCBNRU1CRVJfQUNUSVZJVFlfSU5WSVRFX0dVRVNUU19QQVRIID0gJzptZW1iZXJJZC9hY3Rpdml0aWVzLzppbnZpdGVJZC9ndWVzdHMvJztcbmNvbnN0IE1FTUJFUl9BQ1RJVklUWV9JTlZJVEVfR1VFU1RfUEFUSCA9ICc6bWVtYmVySWQvYWN0aXZpdGllcy86aW52aXRlSWQvZ3Vlc3RzLzpndWVzdElkLyc7XG5cbmNvbnN0IFBVQkxJQ19BQ1RJVklUWV9JTlZJVEVfR1VFU1RfTElTVF9QQVRIID0gJ2FjdGl2aXRpZXMvOmlkLzp0b2tlbi9ndWVzdHMvJztcbmNvbnN0IFBVQkxJQ19BQ1RJVklUWV9JTlZJVEVfR1VFU1RfREVUQUlMX1BBVEggPSAnYWN0aXZpdGllcy86aWQvOnRva2VuL2d1ZXN0cy86Z3Vlc3RJZC8nO1xuY29uc3QgUFVCTElDX09QRU5fQUNUSVZJVFlfR1VFU1RfTElTVF9QQVRIID0gJ29wZW4tYWN0aXZpdGllcy86YWN0aXZpdHlJZC9ndWVzdHMvJztcbmNvbnN0IFBVQkxJQ19PUEVOX0FDVElWSVRZX0dVRVNUX0RFVEFJTF9QQVRIID0gJ29wZW4tYWN0aXZpdGllcy86YWN0aXZpdHlJZC9ndWVzdHMvOmd1ZXN0SWQvJztcblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBY3Rpdml0eVNlcnZpY2Uge1xuICBhY3Rpdml0eUxvY2F0aW9uQ29sbGVjdGlvbjogQ29sbGVjdGlvbjxBY3Rpdml0eUxvY2F0aW9uPiB8IHVuZGVmaW5lZDtcblxuICBhY3Rpdml0eUxvY2F0aW9uUmVzcG9uc2VEYXRlOiBEYXRlIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXBpU2VydmljZTogQXBpU2VydmljZSkge1xuICB9XG5cbiAgYWRkVGVhbUFjdGl2aXR5SW52aXRlcyh0ZWFtSWQ6IHN0cmluZywgYWN0aXZpdHlJZDogc3RyaW5nLCBtZW1iZXJJZHM6IEFycmF5PHN0cmluZz4pIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAucG9zdFJlc291cmNlKFxuICAgICAgICAoKSA9PiB0cnVlLFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9BQ1RJVklUWV9JTlZJVEVTX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICB0ZWFtSWQsXG4gICAgICAgICAgYWN0aXZpdHlJZFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbWVtYmVyczogbWVtYmVySWRzXG4gICAgICAgIH1cbiAgICAgIClcbiAgfVxuXG4gIGNyZWF0ZVRlYW1BY3Rpdml0eSh0ZWFtSWQ6IHN0cmluZywgZGF0YTogUGFydGlhbDxBY3Rpdml0eT4pIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAucG9zdFJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eUZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0FDVElWSVRJRVNfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIHRlYW1JZFxuICAgICAgICB9LFxuICAgICAgICB0aGlzLnJlbW92ZVVudXNlZEFjdGl2aXR5RmllbGRzKHsuLi5kYXRhfSlcbiAgICAgIClcbiAgfVxuXG4gIGNyZWF0ZVRlYW1BY3Rpdml0eVF1ZXN0aW9uKHRlYW1JZDogc3RyaW5nLCBxdWVzdGlvbjogUGFydGlhbDxBY3Rpdml0eVF1ZXN0aW9uPikge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5wb3N0UmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5UXVlc3Rpb25GYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9BQ1RJVklUWV9RVUVTVElPTlNfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIHRlYW1JZFxuICAgICAgICB9LFxuICAgICAgICB0aGlzLnJlbW92ZVVudXNlZEFjdGl2aXR5UXVlc3Rpb25GaWVsZHMoey4uLnF1ZXN0aW9ufSlcbiAgICAgIClcbiAgfVxuXG4gIGRlbGV0ZVRlYW1BY3Rpdml0eSh0ZWFtSWQ6IHN0cmluZywgaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5kZWxldGVSZXNvdXJjZShcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQUNUSVZJVFlfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIHRlYW1JZCxcbiAgICAgICAgICBpZFxuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgZGVsZXRlVGVhbUFjdGl2aXR5SW52aXRlKHRlYW1JZDogc3RyaW5nLCBhY3Rpdml0eUlkOiBzdHJpbmcsIGFjdGl2aXR5SW52aXRlSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5kZWxldGVSZXNvdXJjZShcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQUNUSVZJVFlfSU5WSVRFX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICB0ZWFtSWQsXG4gICAgICAgICAgYWN0aXZpdHlJZCxcbiAgICAgICAgICBhY3Rpdml0eUludml0ZUlkXG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBkZWxldGVUZWFtQWN0aXZpdHlRdWVzdGlvbih0ZWFtSWQ6IHN0cmluZywgaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5kZWxldGVSZXNvdXJjZShcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQUNUSVZJVFlfUVVFU1RJT05fUEFUSCxcbiAgICAgICAge3RlYW1JZCwgaWR9XG4gICAgICApO1xuICB9XG5cbiAgZ2V0TWVtYmVyQWN0aXZpdHkobWVtYmVySWQ6IHN0cmluZywgYWN0aXZpdHlJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldFJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eUZhY3RvcnksXG4gICAgICAgIFJvbGUuTWVtYmVyQWRtaW4sXG4gICAgICAgIE1FTUJFUl9BQ1RJVklUWV9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgbWVtYmVySWQsXG4gICAgICAgICAgYWN0aXZpdHlJZFxuICAgICAgICB9XG4gICAgICApXG4gIH1cblxuICBnZXRNZW1iZXJBY3Rpdml0eUludml0ZShtZW1iZXJJZDogc3RyaW5nLCBhY3Rpdml0eUludml0ZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0UmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5SW52aXRlRmFjdG9yeSxcbiAgICAgICAgUm9sZS5NZW1iZXJBZG1pbixcbiAgICAgICAgTUVNQkVSX0FDVElWSVRZX0lOVklURV9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgbWVtYmVySWQsXG4gICAgICAgICAgYWN0aXZpdHlJbnZpdGVJZFxuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgZ2V0TWVtYmVyQWN0aXZpdHlJbnZpdGVzKG1lbWJlcklkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwYXJhbXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7bGltaXQ6ICdudWxsJywgb3Blbl9hY3Rpdml0eTogJ3RydWUnfTtcblxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBhY3Rpdml0eUludml0ZUZhY3RvcnksXG4gICAgICAgIFJvbGUuTWVtYmVyQWRtaW4sXG4gICAgICAgIE1FTUJFUl9BQ1RJVklUWV9JTlZJVEVTX1BBVEgsXG4gICAgICAgIHttZW1iZXJJZH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwYXJhbXNcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIGdldE1lbWJlckNhbGVuZGFyRXZlbnRzKG1lbWJlcklkOiBzdHJpbmcsIHN0YXJ0RGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGVuZERhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsLCBvcGVuQWN0aXZpdHk6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIGNvbnN0IHBhcmFtczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtsaW1pdDogJ251bGwnfTtcblxuICAgIGlmIChzdGFydERhdGUpIHtcbiAgICAgIHBhcmFtc1snc2VhcmNoX3N0YXJ0X2RheSddID0gc3RhcnREYXRlO1xuICAgIH1cblxuICAgIGlmIChlbmREYXRlKSB7XG4gICAgICBwYXJhbXNbJ3NlYXJjaF9lbmRfZGF5J10gPSBlbmREYXRlO1xuICAgIH1cblxuICAgIGlmIChvcGVuQWN0aXZpdHkpIHtcbiAgICAgIHBhcmFtc1snb3Blbl9hY3Rpdml0eSddID0gJ3RydWUnO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBldmVudEZhY3RvcnksXG4gICAgICAgIFJvbGUuTWVtYmVyQWRtaW4sXG4gICAgICAgIE1FTUJFUl9DQUxFTkRBUl9QQVRILFxuICAgICAgICB7bWVtYmVySWR9LFxuICAgICAgICB7XG4gICAgICAgICAgcGFyYW1zXG4gICAgICAgIH1cbiAgICAgIClcbiAgfVxuXG4gIGdldE1lbWJlck9wZW5BY3Rpdml0aWVzKG1lbWJlcklkOiBzdHJpbmcsIG9wZW5BY3Rpdml0eVNlYXJjaFBhcmFtczogT3BlbkFjdGl2aXR5U2VhcmNoUGFyYW1zSW50ZXJmYWNlKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIG9wZW5BY3Rpdml0eUZhY3RvcnksXG4gICAgICAgIFJvbGUuTWVtYmVyQWRtaW4sXG4gICAgICAgIE1FTUJFUl9PUEVOX0FDVElWSVRJRVNfUEFUSCxcbiAgICAgICAge21lbWJlcklkfSxcbiAgICAgICAge1xuICAgICAgICAgIHBhcmFtczogdGhpcy5nZXRPcGVuQWN0aXZpdHlTZWFyY2hQYXJhbXMob3BlbkFjdGl2aXR5U2VhcmNoUGFyYW1zKVxuICAgICAgICB9XG4gICAgICApXG4gIH1cblxuICBnZXRNZW1iZXJPcGVuQWN0aXZpdHkobWVtYmVySWQ6IHN0cmluZywgYWN0aXZpdHlJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldFJlc291cmNlKFxuICAgICAgICBvcGVuQWN0aXZpdHlGYWN0b3J5LFxuICAgICAgICBSb2xlLk1lbWJlckFkbWluLFxuICAgICAgICBNRU1CRVJfT1BFTl9BQ1RJVklUWV9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgbWVtYmVySWQsXG4gICAgICAgICAgYWN0aXZpdHlJZFxuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgZ2V0TWVtYmVyT3BlbkFjdGl2aXR5QWN0aXZpdHlUeXBlcyhtZW1iZXJJZDogc3RyaW5nLCBzdGFydERhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsLCBlbmREYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgYWxsOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgYWN0aXZpdHlUeXBlRmFjdG9yeSxcbiAgICAgICAgUm9sZS5NZW1iZXJBZG1pbixcbiAgICAgICAgTUVNQkVSX09QRU5fQUNUSVZJVElFU19BQ1RJVklUWV9UWVBFU19QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgbWVtYmVySWRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgLi4udGhpcy5nZXRPcGVuQWN0aXZpdHlEYXRlUGFyYW1zKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgYWxsKSxcbiAgICAgICAgICAgIGxpbWl0OiAnbnVsbCdcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIClcbiAgfVxuXG4gIGdldE1lbWJlck9wZW5BY3Rpdml0eUxvY2F0aW9ucyhtZW1iZXJJZDogc3RyaW5nLCBzdGFydERhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsLCBlbmREYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgYWxsOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgYWN0aXZpdHlMb2NhdGlvbkZhY3RvcnksXG4gICAgICAgIFJvbGUuTWVtYmVyQWRtaW4sXG4gICAgICAgIE1FTUJFUl9PUEVOX0FDVElWSVRJRVNfQUNUSVZJVFlfTE9DQVRJT05TX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBtZW1iZXJJZFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAuLi50aGlzLmdldE9wZW5BY3Rpdml0eURhdGVQYXJhbXMoc3RhcnREYXRlLCBlbmREYXRlLCBhbGwpLFxuICAgICAgICAgICAgbGltaXQ6ICdudWxsJ1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKVxuICB9XG5cbiAgZ2V0UHVibGljQWN0aXZpdHlJbnZpdGUoaWQ6IHN0cmluZywgdG9rZW46IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlJbnZpdGVGYWN0b3J5LFxuICAgICAgICBSb2xlLlB1YmxpYyxcbiAgICAgICAgUFVCTElDX0FDVElWSVRZX0lOVklURV9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgaWQsXG4gICAgICAgICAgdG9rZW5cbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIGdldFB1YmxpY01lbWJlckFjdGl2aXR5SW52aXRlKGFjdGl2aXR5SW52aXRlSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlJbnZpdGVGYWN0b3J5LFxuICAgICAgICBSb2xlLlB1YmxpYyxcbiAgICAgICAgUFVCTElDX01FTUJFUl9BQ1RJVklUWV9JTlZJVEVfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIGFjdGl2aXR5SW52aXRlSWRcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIGdldFB1YmxpY01lbWJlckFjdGl2aXRpZXMoc3RhcnREYXRlOiBzdHJpbmcsIGVuZERhdGU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBldmVudEZhY3RvcnksXG4gICAgICAgIFJvbGUuUHVibGljLFxuICAgICAgICBQVUJMSUNfTUVNQkVSX0FDVElWSVRJRVNfUEFUSCxcbiAgICAgICAge30sXG4gICAgICAgIHtcbiAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIHNlYXJjaF9zdGFydF9kYXk6IHN0YXJ0RGF0ZSxcbiAgICAgICAgICAgIHNlYXJjaF9lbmRfZGF5OiBlbmREYXRlLFxuICAgICAgICAgICAgbGltaXQ6ICdudWxsJ1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKVxuICB9XG5cbiAgZ2V0UHVibGljTWVtYmVyQWN0aXZpdHkoYWN0aXZpdHlJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldFJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eUZhY3RvcnksXG4gICAgICAgIFJvbGUuUHVibGljLFxuICAgICAgICBQVUJMSUNfTUVNQkVSX0FDVElWSVRZX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBhY3Rpdml0eUlkXG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBnZXRUZWFtQWN0aXZpdHkodGVhbUlkOiBzdHJpbmcsIGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0UmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5RmFjdG9yeSxcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQUNUSVZJVFlfUEFUSCxcbiAgICAgICAge3RlYW1JZCwgaWR9XG4gICAgICApXG4gIH1cblxuICBnZXRUZWFtQWN0aXZpdHlRUkNvZGUodGVhbUlkOiBzdHJpbmcsIGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0UmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5RmFjdG9yeSxcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQUNUSVZJVFlfUVJfQ09ERV9QQVRILFxuICAgICAgICB7dGVhbUlkLCBpZH1cbiAgICAgIClcbiAgfVxuXG4gIGdldFRlYW1BY3Rpdml0eVF1ZXN0aW9uKHRlYW1JZDogc3RyaW5nLCBpZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldFJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eVF1ZXN0aW9uRmFjdG9yeSxcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQUNUSVZJVFlfUVVFU1RJT05fUEFUSCxcbiAgICAgICAge3RlYW1JZCwgaWR9XG4gICAgICApXG4gIH1cblxuICBnZXRUZWFtQWN0aXZpdHlRdWVzdGlvbnModGVhbUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgYWN0aXZpdHlRdWVzdGlvbkZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0FDVElWSVRZX1FVRVNUSU9OU19QQVRILFxuICAgICAgICB7dGVhbUlkfSxcbiAgICAgICAge3BhcmFtczoge2xpbWl0OiAnbnVsbCd9fVxuICAgICAgKVxuICB9XG5cbiAgZ2V0QWN0aXZpdHlMb2NhdGlvbnMocm9sZTogUm9sZSwgaXRlbUlkOiBzdHJpbmcsIGZvcmNlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBzd2l0Y2ggKHJvbGUpIHtcbiAgICAgIGNhc2UgUm9sZS5DbHViQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLmdldENsdWJBY3Rpdml0eUxvY2F0aW9ucyhpdGVtSWQsIGZvcmNlKTtcbiAgICAgIGNhc2UgUm9sZS5TZWN0aW9uQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLmdldFNlY3Rpb25BY3Rpdml0eUxvY2F0aW9ucyhpdGVtSWQsIGZvcmNlKTtcbiAgICAgIGNhc2UgUm9sZS5UZWFtQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRlYW1BY3Rpdml0eUxvY2F0aW9ucyhpdGVtSWQsIGZvcmNlKTtcbiAgICAgIGNhc2UgUm9sZS5NZW1iZXJBZG1pbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TWVtYmVyQWN0aXZpdHlMb2NhdGlvbnMoaXRlbUlkLCBmb3JjZSlcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IGludmFsaWRSb2xlRXJyb3I7XG4gICAgfVxuICB9XG5cbiAgZ2V0VGVhbUFjdGl2aXR5TG9jYXRpb25zKHRlYW1JZDogc3RyaW5nLCBmb3JjZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgaWYgKHRoaXMuYWN0aXZpdHlMb2NhdGlvblJlc3BvbnNlRGF0ZSAmJiB0aGlzLmFjdGl2aXR5TG9jYXRpb25SZXNwb25zZURhdGUgPiBzdWIobmV3IERhdGUoKSwge2hvdXJzOiAxfSkgJiYgIWZvcmNlKSB7XG4gICAgICByZXR1cm4gb2YodGhpcy5hY3Rpdml0eUxvY2F0aW9uQ29sbGVjdGlvbiBhcyBDb2xsZWN0aW9uPEFjdGl2aXR5TG9jYXRpb24+KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgYWN0aXZpdHlMb2NhdGlvbkZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0FDVElWSVRZX0xPQ0FUSU9OU19QQVRILFxuICAgICAgICB7dGVhbUlkfSxcbiAgICAgICAge3BhcmFtczoge2xpbWl0OiAnbnVsbCd9fVxuICAgICAgKS5waXBlKFxuICAgICAgICB0YXAoKGFjdGl2aXR5TG9jYXRpb25Db2xsZWN0aW9uOiBDb2xsZWN0aW9uPEFjdGl2aXR5TG9jYXRpb24+KSA9PiB7XG4gICAgICAgICAgdGhpcy5hY3Rpdml0eUxvY2F0aW9uUmVzcG9uc2VEYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgICB0aGlzLmFjdGl2aXR5TG9jYXRpb25Db2xsZWN0aW9uID0gYWN0aXZpdHlMb2NhdGlvbkNvbGxlY3Rpb247XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgZ2V0TWVtYmVyQWN0aXZpdHlMb2NhdGlvbnMobWVtYmVySWQ6IHN0cmluZywgZm9yY2U6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIGlmICh0aGlzLmFjdGl2aXR5TG9jYXRpb25SZXNwb25zZURhdGUgJiYgdGhpcy5hY3Rpdml0eUxvY2F0aW9uUmVzcG9uc2VEYXRlID4gc3ViKG5ldyBEYXRlKCksIHtob3VyczogMX0pICYmICFmb3JjZSkge1xuICAgICAgcmV0dXJuIG9mKHRoaXMuYWN0aXZpdHlMb2NhdGlvbkNvbGxlY3Rpb24gYXMgQ29sbGVjdGlvbjxBY3Rpdml0eUxvY2F0aW9uPik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGFjdGl2aXR5TG9jYXRpb25GYWN0b3J5LFxuICAgICAgICBSb2xlLk1lbWJlckFkbWluLFxuICAgICAgICBNRU1CRVJfQUNUSVZJVFlfTE9DQVRJT05TX1BBVEgsXG4gICAgICAgIHttZW1iZXJJZH0sXG4gICAgICAgIHtwYXJhbXM6IHtsaW1pdDogJ251bGwnfX1cbiAgICAgICkucGlwZShcbiAgICAgICAgdGFwKChhY3Rpdml0eUxvY2F0aW9uQ29sbGVjdGlvbjogQ29sbGVjdGlvbjxBY3Rpdml0eUxvY2F0aW9uPikgPT4ge1xuICAgICAgICAgIHRoaXMuYWN0aXZpdHlMb2NhdGlvblJlc3BvbnNlRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgdGhpcy5hY3Rpdml0eUxvY2F0aW9uQ29sbGVjdGlvbiA9IGFjdGl2aXR5TG9jYXRpb25Db2xsZWN0aW9uO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIGdldENsdWJBY3Rpdml0eUxvY2F0aW9ucyhjbHViSWQ6IHN0cmluZywgZm9yY2U6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIGlmICh0aGlzLmFjdGl2aXR5TG9jYXRpb25SZXNwb25zZURhdGUgJiYgdGhpcy5hY3Rpdml0eUxvY2F0aW9uUmVzcG9uc2VEYXRlID4gc3ViKG5ldyBEYXRlKCksIHtob3VyczogMX0pICYmICFmb3JjZSkge1xuICAgICAgcmV0dXJuIG9mKHRoaXMuYWN0aXZpdHlMb2NhdGlvbkNvbGxlY3Rpb24gYXMgQ29sbGVjdGlvbjxBY3Rpdml0eUxvY2F0aW9uPik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGFjdGl2aXR5TG9jYXRpb25GYWN0b3J5LFxuICAgICAgICBSb2xlLkNsdWJBZG1pbixcbiAgICAgICAgQ0xVQl9BQ1RJVklUWV9MT0NBVElPTlNfUEFUSCxcbiAgICAgICAge2NsdWJJZH0sXG4gICAgICAgIHtwYXJhbXM6IHtsaW1pdDogJ251bGwnfX1cbiAgICAgICkucGlwZShcbiAgICAgICAgdGFwKChhY3Rpdml0eUxvY2F0aW9uQ29sbGVjdGlvbjogQ29sbGVjdGlvbjxBY3Rpdml0eUxvY2F0aW9uPikgPT4ge1xuICAgICAgICAgIHRoaXMuYWN0aXZpdHlMb2NhdGlvblJlc3BvbnNlRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgdGhpcy5hY3Rpdml0eUxvY2F0aW9uQ29sbGVjdGlvbiA9IGFjdGl2aXR5TG9jYXRpb25Db2xsZWN0aW9uO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIGdldFNlY3Rpb25BY3Rpdml0eUxvY2F0aW9ucyhzZWN0aW9uSWQ6IHN0cmluZywgZm9yY2U6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIGlmICh0aGlzLmFjdGl2aXR5TG9jYXRpb25SZXNwb25zZURhdGUgJiYgdGhpcy5hY3Rpdml0eUxvY2F0aW9uUmVzcG9uc2VEYXRlID4gc3ViKG5ldyBEYXRlKCksIHtob3VyczogMX0pICYmICFmb3JjZSkge1xuICAgICAgcmV0dXJuIG9mKHRoaXMuYWN0aXZpdHlMb2NhdGlvbkNvbGxlY3Rpb24gYXMgQ29sbGVjdGlvbjxBY3Rpdml0eUxvY2F0aW9uPik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGFjdGl2aXR5TG9jYXRpb25GYWN0b3J5LFxuICAgICAgICBSb2xlLlNlY3Rpb25BZG1pbixcbiAgICAgICAgU0VDVElPTl9BQ1RJVklUWV9MT0NBVElPTlNfUEFUSCxcbiAgICAgICAge3NlY3Rpb25JZH0sXG4gICAgICAgIHtwYXJhbXM6IHtsaW1pdDogJ251bGwnfX1cbiAgICAgICkucGlwZShcbiAgICAgICAgdGFwKChhY3Rpdml0eUxvY2F0aW9uQ29sbGVjdGlvbjogQ29sbGVjdGlvbjxBY3Rpdml0eUxvY2F0aW9uPikgPT4ge1xuICAgICAgICAgIHRoaXMuYWN0aXZpdHlMb2NhdGlvblJlc3BvbnNlRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgdGhpcy5hY3Rpdml0eUxvY2F0aW9uQ29sbGVjdGlvbiA9IGFjdGl2aXR5TG9jYXRpb25Db2xsZWN0aW9uO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIHVwZGF0ZUFjdGl2aXR5TG9jYXRpb24ocm9sZTogUm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsIGxvY2F0aW9uOiBBY3Rpdml0eUxvY2F0aW9uKSB7XG4gICAgc3dpdGNoIChyb2xlKSB7XG4gICAgICBjYXNlIFJvbGUuQ2x1YkFkbWluOlxuICAgICAgICByZXR1cm4gdGhpcy51cGRhdGVDbHViQWN0aXZpdHlMb2NhdGlvbihjbHViT3JTZWN0aW9uT3JUZWFtSWQsIGxvY2F0aW9uKTtcbiAgICAgIGNhc2UgUm9sZS5TZWN0aW9uQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZVNlY3Rpb25BY3Rpdml0eUxvY2F0aW9uKGNsdWJPclNlY3Rpb25PclRlYW1JZCwgbG9jYXRpb24pO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgaW52YWxpZFJvbGVFcnJvcjtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVDbHViQWN0aXZpdHlMb2NhdGlvbihjbHViSWQ6IHN0cmluZywgbG9jYXRpb246IEFjdGl2aXR5TG9jYXRpb24pIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAudXBkYXRlUmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5TG9jYXRpb25GYWN0b3J5LFxuICAgICAgICBSb2xlLkNsdWJBZG1pbixcbiAgICAgICAgQ0xVQl9BQ1RJVklUWV9MT0NBVElPTl9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgY2x1YklkLFxuICAgICAgICAgIGxvY2F0aW9uSWQ6IGxvY2F0aW9uLmlkXG4gICAgICAgIH0sXG4gICAgICAgIGxvY2F0aW9uXG4gICAgICApO1xuICB9XG5cbiAgdXBkYXRlTWVtYmVyQWN0aXZpdHlBdHRlbmRhbmNlKG1lbWJlcklkOiBzdHJpbmcsIGFjdGl2aXR5SWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5wb3N0UmVzb3VyY2VOb1Jlc3BvbnNlKFxuICAgICAgICBSb2xlLk1lbWJlckFkbWluLFxuICAgICAgICBNRU1CRVJfQUNUSVZJVFlfQVRURU5EQU5DRV9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgbWVtYmVySWQsXG4gICAgICAgICAgYWN0aXZpdHlJZFxuICAgICAgICB9LFxuICAgICAgICB7fVxuICAgICAgKTtcbiAgfVxuXG4gIHVwZGF0ZVNlY3Rpb25BY3Rpdml0eUxvY2F0aW9uKHNlY3Rpb25JZDogc3RyaW5nLCBsb2NhdGlvbjogQWN0aXZpdHlMb2NhdGlvbikge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC51cGRhdGVSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlMb2NhdGlvbkZhY3RvcnksXG4gICAgICAgIFJvbGUuU2VjdGlvbkFkbWluLFxuICAgICAgICBTRUNUSU9OX0FDVElWSVRZX0xPQ0FUSU9OX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBzZWN0aW9uSWQsXG4gICAgICAgICAgbG9jYXRpb25JZDogbG9jYXRpb24uaWRcbiAgICAgICAgfSxcbiAgICAgICAgbG9jYXRpb25cbiAgICAgICk7XG4gIH1cblxuICBnZXRUZWFtQWN0aXZpdHlOZXcodGVhbUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0UmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5RmFjdG9yeSxcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQUNUSVZJVFlfTkVXX1BBVEgsXG4gICAgICAgIHt0ZWFtSWR9XG4gICAgICApO1xuICB9XG5cbiAgZ2V0VGVhbUFjdGl2aXR5UGFydGljaXBhbnRzKHRlYW1JZDogc3RyaW5nLCBhY3Rpdml0eUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgc2VhcmNoTWVtYmVyRmFjdG9yeSxcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQUNUSVZJVFlfUEFSVElDSVBBTlRTX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICB0ZWFtSWQsXG4gICAgICAgICAgYWN0aXZpdHlJZFxuICAgICAgICB9LFxuICAgICAgICB7cGFyYW1zOiB7bGltaXQ6ICdudWxsJ319XG4gICAgICApO1xuICB9XG5cbiAgZ2V0VGVhbUFjdGl2aXR5R3Vlc3RzKHRlYW1JZDogc3RyaW5nLCBhY3Rpdml0eUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgZ3Vlc3RGYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9BQ1RJVklUWV9HVUVTVFNfUEFUSCxcbiAgICAgICAgeyB0ZWFtSWQsIGFjdGl2aXR5SWQgfSxcbiAgICAgICAgeyBwYXJhbXM6IHsgbGltaXQ6ICdudWxsJyB9IH1cbiAgICAgICk7XG4gIH1cblxuICBhZGRUZWFtQWN0aXZpdHlHdWVzdCh0ZWFtSWQ6IHN0cmluZywgYWN0aXZpdHlJZDogc3RyaW5nLCBkYXRhOiB7IG5hbWU6IHN0cmluZzsgY29tbWVudD86IHN0cmluZyB9KSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnBvc3RSZXNvdXJjZShcbiAgICAgICAgZ3Vlc3RGYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9BQ1RJVklUWV9HVUVTVFNfUEFUSCxcbiAgICAgICAgeyB0ZWFtSWQsIGFjdGl2aXR5SWQgfSxcbiAgICAgICAgZGF0YVxuICAgICAgKTtcbiAgfVxuXG4gIHVwZGF0ZVRlYW1BY3Rpdml0eUd1ZXN0KHRlYW1JZDogc3RyaW5nLCBhY3Rpdml0eUlkOiBzdHJpbmcsIGd1ZXN0SWQ6IHN0cmluZywgZGF0YTogeyBuYW1lOiBzdHJpbmc7IGNvbW1lbnQ/OiBzdHJpbmcgfSkge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC51cGRhdGVSZXNvdXJjZShcbiAgICAgICAgZ3Vlc3RGYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9BQ1RJVklUWV9HVUVTVF9QQVRILFxuICAgICAgICB7IHRlYW1JZCwgYWN0aXZpdHlJZCwgZ3Vlc3RJZCB9LFxuICAgICAgICBkYXRhXG4gICAgICApO1xuICB9XG5cbiAgZGVsZXRlVGVhbUFjdGl2aXR5R3Vlc3QodGVhbUlkOiBzdHJpbmcsIGFjdGl2aXR5SWQ6IHN0cmluZywgZ3Vlc3RJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmRlbGV0ZVJlc291cmNlKFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9BQ1RJVklUWV9HVUVTVF9QQVRILFxuICAgICAgICB7IHRlYW1JZCwgYWN0aXZpdHlJZCwgZ3Vlc3RJZCB9XG4gICAgICApO1xuICB9XG5cbiAgYWRkTWVtYmVyQWN0aXZpdHlHdWVzdChtZW1iZXJJZDogc3RyaW5nLCBpbnZpdGVJZDogc3RyaW5nLCBkYXRhOiB7IG5hbWU6IHN0cmluZzsgY29tbWVudD86IHN0cmluZyB9KSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnBvc3RSZXNvdXJjZShcbiAgICAgICAgZ3Vlc3RGYWN0b3J5LFxuICAgICAgICBSb2xlLk1lbWJlckFkbWluLFxuICAgICAgICBNRU1CRVJfQUNUSVZJVFlfSU5WSVRFX0dVRVNUU19QQVRILFxuICAgICAgICB7IG1lbWJlcklkLCBpbnZpdGVJZCB9LFxuICAgICAgICBkYXRhXG4gICAgICApO1xuICB9XG5cbiAgdXBkYXRlTWVtYmVyQWN0aXZpdHlHdWVzdChtZW1iZXJJZDogc3RyaW5nLCBpbnZpdGVJZDogc3RyaW5nLCBndWVzdElkOiBzdHJpbmcsIGRhdGE6IHsgbmFtZTogc3RyaW5nOyBjb21tZW50Pzogc3RyaW5nIH0pIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAudXBkYXRlUmVzb3VyY2UoXG4gICAgICAgIGd1ZXN0RmFjdG9yeSxcbiAgICAgICAgUm9sZS5NZW1iZXJBZG1pbixcbiAgICAgICAgTUVNQkVSX0FDVElWSVRZX0lOVklURV9HVUVTVF9QQVRILFxuICAgICAgICB7IG1lbWJlcklkLCBpbnZpdGVJZCwgZ3Vlc3RJZCB9LFxuICAgICAgICBkYXRhXG4gICAgICApO1xuICB9XG5cbiAgZGVsZXRlTWVtYmVyQWN0aXZpdHlHdWVzdChtZW1iZXJJZDogc3RyaW5nLCBpbnZpdGVJZDogc3RyaW5nLCBndWVzdElkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZGVsZXRlUmVzb3VyY2UoXG4gICAgICAgIFJvbGUuTWVtYmVyQWRtaW4sXG4gICAgICAgIE1FTUJFUl9BQ1RJVklUWV9JTlZJVEVfR1VFU1RfUEFUSCxcbiAgICAgICAgeyBtZW1iZXJJZCwgaW52aXRlSWQsIGd1ZXN0SWQgfVxuICAgICAgKTtcbiAgfVxuXG4gIGdldEFjdGl2aXR5U2V0dGluZ3Mocm9sZTogUm9sZSwgaXRlbUlkOiBzdHJpbmcpIHtcbiAgICBzd2l0Y2ggKHJvbGUpIHtcbiAgICAgIGNhc2UgUm9sZS5DbHViQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLmdldENsdWJBY3Rpdml0eVNldHRpbmdzKGl0ZW1JZCk7XG4gICAgICBjYXNlIFJvbGUuU2VjdGlvbkFkbWluOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRTZWN0aW9uQWN0aXZpdHlTZXR0aW5ncyhpdGVtSWQpO1xuICAgICAgY2FzZSBSb2xlLlRlYW1BZG1pbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VGVhbUFjdGl2aXR5U2V0dGluZ3MoaXRlbUlkKTtcbiAgICAgIGNhc2UgUm9sZS5NZW1iZXJBZG1pbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TWVtYmVyQWN0aXZpdHlTZXR0aW5ncyhpdGVtSWQpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgaW52YWxpZFJvbGVFcnJvcjtcbiAgICB9XG4gIH1cblxuICBnZXRUZWFtQWN0aXZpdHlTZXR0aW5ncyh0ZWFtSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlTZXR0aW5nc0ZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0FDVElWSVRZX1NFVFRJTkdTX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICB0ZWFtSWRcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIGdldE1lbWJlckFjdGl2aXR5U2V0dGluZ3MobWVtYmVySWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlTZXR0aW5nc0ZhY3RvcnksXG4gICAgICAgIFJvbGUuTWVtYmVyQWRtaW4sXG4gICAgICAgIE1FTUJFUl9BQ1RJVklUWV9TRVRUSU5HU19QQVRILFxuICAgICAgICB7bWVtYmVySWR9XG4gICAgICApO1xuICB9XG5cbiAgZ2V0U2VjdGlvbkFjdGl2aXR5U2V0dGluZ3Moc2VjdGlvbklkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0UmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5U2V0dGluZ3NGYWN0b3J5LFxuICAgICAgICBSb2xlLlNlY3Rpb25BZG1pbixcbiAgICAgICAgU0VDVElPTl9BQ1RJVklUWV9TRVRUSU5HU19QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgc2VjdGlvbklkXG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBnZXRDbHViQWN0aXZpdHlTZXR0aW5ncyhjbHViSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlTZXR0aW5nc0ZhY3RvcnksXG4gICAgICAgIFJvbGUuQ2x1YkFkbWluLFxuICAgICAgICBDTFVCX0FDVElWSVRZX1NFVFRJTkdTX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBjbHViSWQsXG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBnZXRBY3Rpdml0eVR5cGVzKHJvbGU6IFJvbGUsIGl0ZW1JZDogc3RyaW5nKSB7XG4gICAgc3dpdGNoIChyb2xlKSB7XG4gICAgICBjYXNlIFJvbGUuQ2x1YkFkbWluOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRDbHViQWN0aXZpdHlUeXBlcyhpdGVtSWQpO1xuICAgICAgY2FzZSBSb2xlLlNlY3Rpb25BZG1pbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U2VjdGlvbkFjdGl2aXR5VHlwZXMoaXRlbUlkKTtcbiAgICAgIGNhc2UgUm9sZS5UZWFtQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRlYW1BY3Rpdml0eVR5cGVzKGl0ZW1JZCk7XG4gICAgICBjYXNlIFJvbGUuTWVtYmVyQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLmdldE1lbWJlckFjdGl2aXR5VHlwZXMoaXRlbUlkKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IGludmFsaWRSb2xlRXJyb3I7XG4gICAgfVxuICB9XG5cbiAgZ2V0VGVhbUFjdGl2aXR5UnVsZXNBdHRyaWJ1dGVzKHRlYW1JZDogc3RyaW5nLCBxdWVyeVN0cmluZzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIHNlYXJjaEF0dHJpYnV0ZUZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0FDVElWSVRZX1JVTEVfQVRUUklCVVRFU19QQVRILFxuICAgICAgICB7dGVhbUlkfSxcbiAgICAgICAge3BhcmFtczoge3E6IHF1ZXJ5U3RyaW5nfX1cbiAgICAgIClcbiAgfVxuXG4gIGdldFRlYW1BY3Rpdml0eVJ1bGVUZWFtcyh0ZWFtSWQ6IHN0cmluZywgcXVlcnlTdHJpbmc6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBzZWFyY2hUZWFtRmFjdG9yeSxcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQUNUSVZJVFlfUlVMRV9URUFNU19QQVRILFxuICAgICAgICB7dGVhbUlkfSxcbiAgICAgICAge3BhcmFtczoge3E6IHF1ZXJ5U3RyaW5nfX1cbiAgICAgIClcbiAgfVxuXG4gIGdldFRlYW1BY3Rpdml0eVR5cGVzKHRlYW1JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGFjdGl2aXR5VHlwZUZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0FDVElWSVRZX1RZUEVTX1BBVEgsXG4gICAgICAgIHt0ZWFtSWR9LFxuICAgICAgICB7cGFyYW1zOiB7bGltaXQ6ICdudWxsJ319XG4gICAgICApXG4gIH1cblxuICBnZXRNZW1iZXJBY3Rpdml0eVR5cGVzKG1lbWJlcklkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgYWN0aXZpdHlUeXBlRmFjdG9yeSxcbiAgICAgICAgUm9sZS5NZW1iZXJBZG1pbixcbiAgICAgICAgTUVNQkVSX0FDVElWSVRZX1RZUEVTX1BBVEgsXG4gICAgICAgIHttZW1iZXJJZH0sXG4gICAgICAgIHtwYXJhbXM6IHtsaW1pdDogJ251bGwnfX1cbiAgICAgIClcbiAgfVxuXG4gIGdldENsdWJBY3Rpdml0eVR5cGVzKGNsdWJJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGFjdGl2aXR5VHlwZUZhY3RvcnksXG4gICAgICAgIFJvbGUuQ2x1YkFkbWluLFxuICAgICAgICBDTFVCX0FDVElWSVRZX1RZUEVTX1BBVEgsXG4gICAgICAgIHtjbHViSWR9LFxuICAgICAgICB7cGFyYW1zOiB7bGltaXQ6ICdudWxsJ319XG4gICAgICApO1xuICB9XG5cbiAgZ2V0U2VjdGlvbkFjdGl2aXR5VHlwZXMoc2VjdGlvbklkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgYWN0aXZpdHlUeXBlRmFjdG9yeSxcbiAgICAgICAgUm9sZS5TZWN0aW9uQWRtaW4sXG4gICAgICAgIFNFQ1RJT05fQUNUSVZJVFlfVFlQRVNfUEFUSCxcbiAgICAgICAge3NlY3Rpb25JZH0sXG4gICAgICAgIHtwYXJhbXM6IHtsaW1pdDogJ251bGwnfX1cbiAgICAgICk7XG4gIH1cblxuICB1cGRhdGVBY3Rpdml0eVR5cGUocm9sZTogUm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsIGFjdGl2aXR5VHlwZTogQWN0aXZpdHlUeXBlKSB7XG4gICAgc3dpdGNoIChyb2xlKSB7XG4gICAgICBjYXNlIFJvbGUuQ2x1YkFkbWluOlxuICAgICAgICByZXR1cm4gdGhpcy51cGRhdGVDbHViQWN0aXZpdHlUeXBlKGNsdWJPclNlY3Rpb25PclRlYW1JZCwgYWN0aXZpdHlUeXBlKTtcbiAgICAgIGNhc2UgUm9sZS5TZWN0aW9uQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZVNlY3Rpb25BY3Rpdml0eVR5cGUoY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBhY3Rpdml0eVR5cGUpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgaW52YWxpZFJvbGVFcnJvcjtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVDbHViQWN0aXZpdHlUeXBlKGNsdWJJZDogc3RyaW5nLCBhY3Rpdml0eVR5cGU6IEFjdGl2aXR5VHlwZSkge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC51cGRhdGVSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlUeXBlRmFjdG9yeSxcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQUNUSVZJVFlfVFlQRV9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgY2x1YklkLFxuICAgICAgICAgIHR5cGVJZDogYWN0aXZpdHlUeXBlLmlkLFxuICAgICAgICB9LFxuICAgICAgICBhY3Rpdml0eVR5cGUsXG4gICAgICApO1xuICB9XG5cbiAgdXBkYXRlU2VjdGlvbkFjdGl2aXR5VHlwZShzZWN0aW9uSWQ6IHN0cmluZywgYWN0aXZpdHlUeXBlOiBBY3Rpdml0eVR5cGUpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAudXBkYXRlUmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5VHlwZUZhY3RvcnksXG4gICAgICAgIFJvbGUuU2VjdGlvbkFkbWluLFxuICAgICAgICBTRUNUSU9OX0FDVElWSVRZX1RZUEVfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIHNlY3Rpb25JZCxcbiAgICAgICAgICB0eXBlSWQ6IGFjdGl2aXR5VHlwZS5pZCxcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZpdHlUeXBlLFxuICAgICAgKTtcbiAgfVxuXG4gIGdldFRlYW1DYWxlbmRhckV2ZW50cyh0ZWFtSWQ6IHN0cmluZywgc3RhcnREYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgZW5kRGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsIG9wZW5BY3Rpdml0eTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgY29uc3QgcGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge2xpbWl0OiAnbnVsbCd9O1xuXG4gICAgaWYgKHN0YXJ0RGF0ZSkge1xuICAgICAgcGFyYW1zWydzZWFyY2hfc3RhcnRfZGF5J10gPSBzdGFydERhdGU7XG4gICAgfVxuXG4gICAgaWYgKGVuZERhdGUpIHtcbiAgICAgIHBhcmFtc1snc2VhcmNoX2VuZF9kYXknXSA9IGVuZERhdGU7XG4gICAgfVxuXG4gICAgaWYgKG9wZW5BY3Rpdml0eSkge1xuICAgICAgcGFyYW1zWydvcGVuX2FjdGl2aXR5J10gPSAndHJ1ZSc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGV2ZW50RmFjdG9yeSxcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQ0FMRU5EQVJfUEFUSCxcbiAgICAgICAge3RlYW1JZH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwYXJhbXNcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIHJlc2VuZEludml0ZSh0ZWFtSWQ6IHN0cmluZywgYWN0aXZpdHlJZDogc3RyaW5nLCBhY3Rpdml0eUludml0ZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAucG9zdFJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eUludml0ZUZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0FDVElWSVRZX0lOVklURV9SRVNFTkRfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIHRlYW1JZCxcbiAgICAgICAgICBhY3Rpdml0eUlkLFxuICAgICAgICAgIGFjdGl2aXR5SW52aXRlSWRcbiAgICAgICAgfSxcbiAgICAgICAge31cbiAgICAgICk7XG4gIH1cblxuICByZW1vdmVNZW1iZXJPcGVuQWN0aXZpdHkobWVtYmVySWQ6IHN0cmluZywgYWN0aXZpdHlJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmRlbGV0ZVJlc291cmNlKFxuICAgICAgICBSb2xlLk1lbWJlckFkbWluLFxuICAgICAgICBNRU1CRVJfT1BFTl9BQ1RJVklUWV9SRVNQT05EX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBtZW1iZXJJZCxcbiAgICAgICAgICBhY3Rpdml0eUlkXG4gICAgICAgIH1cbiAgICAgIClcbiAgfVxuXG4gIHJlbW92ZVB1YmxpY09wZW5BY3Rpdml0eShhY3Rpdml0eUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZGVsZXRlUmVzb3VyY2UoXG4gICAgICAgIFJvbGUuUHVibGljLFxuICAgICAgICBQVUJMSUNfT1BFTl9BQ1RJVklUWV9SRVNQT05EX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBhY3Rpdml0eUlkXG4gICAgICAgIH1cbiAgICAgIClcbiAgfVxuXG4gIHNpZ25VcE1lbWJlck9wZW5BY3Rpdml0eShtZW1iZXJJZDogc3RyaW5nLCBhY3Rpdml0eUlkOiBzdHJpbmcsIGNvbW1lbnQ6IHN0cmluZywgb3B0aW9uYWxGZWVzOiBBcnJheTxzdHJpbmc+LCByZXNwb25zZXM6IEFycmF5PEFjdGl2aXR5UXVlc3Rpb25SZXNwb25zZT4pIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAudXBkYXRlUmVzb3VyY2UoXG4gICAgICAgIG9wZW5BY3Rpdml0eUZhY3RvcnksXG4gICAgICAgIFJvbGUuTWVtYmVyQWRtaW4sXG4gICAgICAgIE1FTUJFUl9PUEVOX0FDVElWSVRZX1JFU1BPTkRfV0lUSF9EQVRBX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBtZW1iZXJJZCxcbiAgICAgICAgICBhY3Rpdml0eUlkXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjb21tZW50LFxuICAgICAgICAgIG9wdGlvbmFsX2ZlZXM6IG9wdGlvbmFsRmVlcyxcbiAgICAgICAgICByZXNwb25zZXNcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIHNpZ25VcFB1YmxpY09wZW5BY3Rpdml0eShhY3Rpdml0eUlkOiBzdHJpbmcsIGNvbW1lbnQ6IHN0cmluZywgb3B0aW9uYWxGZWVzOiBBcnJheTxzdHJpbmc+LCByZXNwb25zZXM6IEFycmF5PEFjdGl2aXR5UXVlc3Rpb25SZXNwb25zZT4pIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAudXBkYXRlUmVzb3VyY2UoXG4gICAgICAgIG9wZW5BY3Rpdml0eUZhY3RvcnksXG4gICAgICAgIFJvbGUuUHVibGljLFxuICAgICAgICBQVUJMSUNfT1BFTl9BQ1RJVklUWV9SRVNQT05EX1dJVEhfREFUQV9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgYWN0aXZpdHlJZFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgY29tbWVudCxcbiAgICAgICAgICBvcHRpb25hbF9mZWVzOiBvcHRpb25hbEZlZXMsXG4gICAgICAgICAgcmVzcG9uc2VzXG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICB1cGRhdGVNZW1iZXJBY3Rpdml0eShtZW1iZXJJZDogc3RyaW5nLCBhY3Rpdml0eUludml0ZUlkOiBzdHJpbmcsIGFjdGl2aXR5SW52aXRlOiB1bmtub3duKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eUludml0ZUZhY3RvcnksXG4gICAgICAgIFJvbGUuTWVtYmVyQWRtaW4sXG4gICAgICAgIE1FTUJFUl9BQ1RJVklUWV9JTlZJVEVfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIG1lbWJlcklkLFxuICAgICAgICAgIGFjdGl2aXR5SW52aXRlSWRcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZpdHlJbnZpdGVcbiAgICAgICk7XG4gIH1cblxuICB1cGRhdGVQdWJsaWNNZW1iZXJBY3Rpdml0eUludml0ZShhY3Rpdml0eUludml0ZUlkOiBzdHJpbmcsIGFjdGl2aXR5SW52aXRlOiB1bmtub3duKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eUludml0ZUZhY3RvcnksXG4gICAgICAgIFJvbGUuUHVibGljLFxuICAgICAgICBQVUJMSUNfTUVNQkVSX0FDVElWSVRZX0lOVklURV9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgYWN0aXZpdHlJbnZpdGVJZFxuICAgICAgICB9LFxuICAgICAgICBhY3Rpdml0eUludml0ZVxuICAgICAgKTtcbiAgfVxuXG4gIHVwZGF0ZVB1YmxpY0FjdGl2aXR5SW52aXRlKGlkOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcsIGFjdGl2aXR5SW52aXRlOiB1bmtub3duKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eUludml0ZUZhY3RvcnksXG4gICAgICAgIFJvbGUuUHVibGljLFxuICAgICAgICBQVUJMSUNfQUNUSVZJVFlfSU5WSVRFX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBpZCxcbiAgICAgICAgICB0b2tlblxuICAgICAgICB9LFxuICAgICAgICBhY3Rpdml0eUludml0ZVxuICAgICAgKTtcbiAgfVxuXG4gIHVwZGF0ZVB1YmxpY09wZW5BY3Rpdml0eUludml0ZShpZDogc3RyaW5nLCBhY3Rpdml0eUludml0ZTogdW5rbm93bikge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC51cGRhdGVSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlJbnZpdGVGYWN0b3J5LFxuICAgICAgICBSb2xlLlB1YmxpYyxcbiAgICAgICAgUFVCTElDX09QRU5fQUNUSVZJVFlfSU5WSVRFX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBpZFxuICAgICAgICB9LFxuICAgICAgICBhY3Rpdml0eUludml0ZVxuICAgICAgKTtcbiAgfVxuXG4gIGdldFB1YmxpY09wZW5BY3Rpdml0eUd1ZXN0cyhhY3Rpdml0eUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgZ3Vlc3RGYWN0b3J5LFxuICAgICAgICBSb2xlLlB1YmxpYyxcbiAgICAgICAgUFVCTElDX09QRU5fQUNUSVZJVFlfR1VFU1RfTElTVF9QQVRILFxuICAgICAgICB7IGFjdGl2aXR5SWQgfSxcbiAgICAgICAgeyBwYXJhbXM6IHsgbGltaXQ6ICdudWxsJyB9IH1cbiAgICAgICk7XG4gIH1cblxuICBhZGRQdWJsaWNBY3Rpdml0eUd1ZXN0QnlUb2tlbihpZDogc3RyaW5nLCB0b2tlbjogc3RyaW5nLCBkYXRhOiB7IG5hbWU6IHN0cmluZzsgY29tbWVudD86IHN0cmluZyB9KSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnBvc3RSZXNvdXJjZShndWVzdEZhY3RvcnksIFJvbGUuUHVibGljLCBQVUJMSUNfQUNUSVZJVFlfSU5WSVRFX0dVRVNUX0xJU1RfUEFUSCwgeyBpZCwgdG9rZW4gfSwgZGF0YSk7XG4gIH1cblxuICB1cGRhdGVQdWJsaWNBY3Rpdml0eUd1ZXN0QnlUb2tlbihpZDogc3RyaW5nLCB0b2tlbjogc3RyaW5nLCBndWVzdElkOiBzdHJpbmcsIGRhdGE6IHsgbmFtZTogc3RyaW5nOyBjb21tZW50Pzogc3RyaW5nIH0pIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAudXBkYXRlUmVzb3VyY2UoZ3Vlc3RGYWN0b3J5LCBSb2xlLlB1YmxpYywgUFVCTElDX0FDVElWSVRZX0lOVklURV9HVUVTVF9ERVRBSUxfUEFUSCwgeyBpZCwgdG9rZW4sIGd1ZXN0SWQgfSwgZGF0YSk7XG4gIH1cblxuICBkZWxldGVQdWJsaWNBY3Rpdml0eUd1ZXN0QnlUb2tlbihpZDogc3RyaW5nLCB0b2tlbjogc3RyaW5nLCBndWVzdElkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZGVsZXRlUmVzb3VyY2UoUm9sZS5QdWJsaWMsIFBVQkxJQ19BQ1RJVklUWV9JTlZJVEVfR1VFU1RfREVUQUlMX1BBVEgsIHsgaWQsIHRva2VuLCBndWVzdElkIH0pO1xuICB9XG5cbiAgYWRkUHVibGljT3BlbkFjdGl2aXR5R3Vlc3QoYWN0aXZpdHlJZDogc3RyaW5nLCBkYXRhOiB7IG5hbWU6IHN0cmluZzsgY29tbWVudD86IHN0cmluZyB9KSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnBvc3RSZXNvdXJjZShndWVzdEZhY3RvcnksIFJvbGUuUHVibGljLCBQVUJMSUNfT1BFTl9BQ1RJVklUWV9HVUVTVF9MSVNUX1BBVEgsIHsgYWN0aXZpdHlJZCB9LCBkYXRhKTtcbiAgfVxuXG4gIHVwZGF0ZVB1YmxpY09wZW5BY3Rpdml0eUd1ZXN0KGFjdGl2aXR5SWQ6IHN0cmluZywgZ3Vlc3RJZDogc3RyaW5nLCBkYXRhOiB7IG5hbWU6IHN0cmluZzsgY29tbWVudD86IHN0cmluZyB9KSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKGd1ZXN0RmFjdG9yeSwgUm9sZS5QdWJsaWMsIFBVQkxJQ19PUEVOX0FDVElWSVRZX0dVRVNUX0RFVEFJTF9QQVRILCB7IGFjdGl2aXR5SWQsIGd1ZXN0SWQgfSwgZGF0YSk7XG4gIH1cblxuICBkZWxldGVQdWJsaWNPcGVuQWN0aXZpdHlHdWVzdChhY3Rpdml0eUlkOiBzdHJpbmcsIGd1ZXN0SWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5kZWxldGVSZXNvdXJjZShSb2xlLlB1YmxpYywgUFVCTElDX09QRU5fQUNUSVZJVFlfR1VFU1RfREVUQUlMX1BBVEgsIHsgYWN0aXZpdHlJZCwgZ3Vlc3RJZCB9KTtcbiAgfVxuXG4gIHVwZGF0ZVRlYW1BY3Rpdml0eSh0ZWFtSWQ6IHN0cmluZywgYWN0aXZpdHk6IEFjdGl2aXR5KSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eUZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0FDVElWSVRZX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICB0ZWFtSWQsXG4gICAgICAgICAgaWQ6IGFjdGl2aXR5LmlkXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMucmVtb3ZlVW51c2VkQWN0aXZpdHlGaWVsZHMoey4uLmFjdGl2aXR5fSlcbiAgICAgICk7XG4gIH1cblxuICB1cGRhdGVUZWFtQWN0aXZpdHlRdWVzdGlvbih0ZWFtSWQ6IHN0cmluZywgcXVlc3Rpb246IEFjdGl2aXR5UXVlc3Rpb24pIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAudXBkYXRlUmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5UXVlc3Rpb25GYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9BQ1RJVklUWV9RVUVTVElPTl9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgdGVhbUlkLFxuICAgICAgICAgIGlkOiBxdWVzdGlvbi5pZFxuICAgICAgICB9LFxuICAgICAgICB0aGlzLnJlbW92ZVVudXNlZEFjdGl2aXR5UXVlc3Rpb25GaWVsZHMoey4uLnF1ZXN0aW9ufSlcbiAgICAgIClcbiAgfVxuXG4gIHVwZGF0ZVRlYW1BY3Rpdml0eUludml0ZSh0ZWFtSWQ6IHN0cmluZywgYWN0aXZpdHlJZDogc3RyaW5nLCBhY3Rpdml0eUludml0ZUlkOiBzdHJpbmcsIGFjdGl2aXR5SW52aXRlOiBNZW1iZXJBY3Rpdml0eUludml0ZSkge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC51cGRhdGVSZXNvdXJjZShcbiAgICAgICAgbWVtYmVyQWN0aXZpdHlJbnZpdGVGYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9BQ1RJVklUWV9JTlZJVEVfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIHRlYW1JZCxcbiAgICAgICAgICBhY3Rpdml0eUlkLFxuICAgICAgICAgIGFjdGl2aXR5SW52aXRlSWRcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZpdHlJbnZpdGVcbiAgICAgIClcbiAgfVxuXG4gIHVwZGF0ZVRlYW1BY3Rpdml0eVBhcnRpY2lwYW50cyh0ZWFtSWQ6IHN0cmluZywgYWN0aXZpdHlJZDogc3RyaW5nLCBtZW1iZXJzOiBBcnJheTxzdHJpbmc+KSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnBvc3RSZXNvdXJjZShcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICB9LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9BQ1RJVklUWV9QQVJUSUNJUEFOVFNfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIHRlYW1JZCxcbiAgICAgICAgICBhY3Rpdml0eUlkXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBtZW1iZXJzXG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldE9wZW5BY3Rpdml0eURhdGVQYXJhbXMoc3RhcnREYXRlOiBzdHJpbmcgfCBudWxsLCBlbmREYXRlOiBzdHJpbmcgfCBudWxsLCBhbGw6IGJvb2xlYW4gPSBmYWxzZSk6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9IHtcbiAgICBsZXQgcGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgJ2FsbCc6IGFsbCA/ICd0cnVlJyA6ICdmYWxzZSdcbiAgICB9O1xuXG4gICAgaWYgKHN0YXJ0RGF0ZSkge1xuICAgICAgcGFyYW1zWydzdGFydF9kYXRlJ10gPSBzdGFydERhdGUgYXMgc3RyaW5nO1xuICAgIH1cblxuICAgIGlmIChlbmREYXRlKSB7XG4gICAgICBwYXJhbXNbJ2VuZF9kYXRlJ10gPSBlbmREYXRlIGFzIHN0cmluZztcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyYW1zO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPcGVuQWN0aXZpdHlTZWFyY2hQYXJhbXMob3BlbkFjdGl2aXR5U2VhcmNoUGFyYW1zOiBPcGVuQWN0aXZpdHlTZWFyY2hQYXJhbXNJbnRlcmZhY2UpOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSB7XG4gICAgY29uc3QgcGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgZW5kX2RhdGU6IG9wZW5BY3Rpdml0eVNlYXJjaFBhcmFtcy5lbmREYXRlLFxuICAgICAgbGltaXQ6ICdudWxsJyxcbiAgICAgIHN0YXJ0X2RhdGU6IG9wZW5BY3Rpdml0eVNlYXJjaFBhcmFtcy5zdGFydERhdGVcbiAgICB9O1xuXG4gICAgaWYgKG9wZW5BY3Rpdml0eVNlYXJjaFBhcmFtcy5hY3Rpdml0eVR5cGVJZCkge1xuICAgICAgcGFyYW1zWydhY3Rpdml0eV90eXBlX2lkJ10gPSBvcGVuQWN0aXZpdHlTZWFyY2hQYXJhbXMuYWN0aXZpdHlUeXBlSWQ7XG4gICAgfVxuXG4gICAgaWYgKG9wZW5BY3Rpdml0eVNlYXJjaFBhcmFtcy5sb2NhdGlvbklkKSB7XG4gICAgICBwYXJhbXNbJ2xvY2F0aW9uX2lkJ10gPSBvcGVuQWN0aXZpdHlTZWFyY2hQYXJhbXMubG9jYXRpb25JZDtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyYW1zO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVVbnVzZWRBY3Rpdml0eUZpZWxkcyhhY3Rpdml0eTogUGFydGlhbDxBY3Rpdml0eT4pOiBQYXJ0aWFsPEFjdGl2aXR5PiB7XG4gICAgaWYgKHR5cGVvZiBhY3Rpdml0eS5pZCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGRlbGV0ZSBhY3Rpdml0eS5pZDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGFjdGl2aXR5LmZpbGUgIT09ICd1bmRlZmluZWQnICYmICFhY3Rpdml0eS5maWxlKSB7XG4gICAgICBkZWxldGUgYWN0aXZpdHkuZmlsZTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGFjdGl2aXR5Lmludml0ZV9sYXN0X3Jlc3BvbnNlX2RhdGUgIT09ICd1bmRlZmluZWQnICYmICFhY3Rpdml0eS5pbnZpdGVfbGFzdF9yZXNwb25zZV9kYXRlKSB7XG4gICAgICBkZWxldGUgYWN0aXZpdHkuaW52aXRlX2xhc3RfcmVzcG9uc2VfZGF0ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWN0aXZpdHk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZVVudXNlZEFjdGl2aXR5UXVlc3Rpb25GaWVsZHMocXVlc3Rpb246IFBhcnRpYWw8QWN0aXZpdHlRdWVzdGlvbj4pOiBQYXJ0aWFsPEFjdGl2aXR5UXVlc3Rpb24+IHtcbiAgICBpZiAodHlwZW9mIHF1ZXN0aW9uLmlkICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgZGVsZXRlIHF1ZXN0aW9uLmlkO1xuICAgIH1cbiAgICBkZWxldGUgcXVlc3Rpb24uY2x1Yl9pZDtcbiAgICBkZWxldGUgcXVlc3Rpb24uc2VjdGlvbl9pZDtcbiAgICByZXR1cm4gcXVlc3Rpb247XG4gIH1cbn1cbiJdfQ==
653
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtYWNjZXNzL3NyYy9saWIvc2VydmljZXMvYWN0aXZpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFRTCxJQUFJLEdBQ0wsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUNMLGVBQWUsRUFDZixxQkFBcUIsRUFDckIsdUJBQXVCLEVBQ3ZCLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixZQUFZLEVBQ1osMkJBQTJCLEVBQzNCLG1CQUFtQixFQUFFLHNCQUFzQixFQUMzQyxtQkFBbUIsR0FDcEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUUvQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7OztBQUVwRSxNQUFNLDJCQUEyQixHQUFHLHdCQUF3QixDQUFDO0FBQzdELE1BQU0sNkJBQTZCLEdBQUcsYUFBYSxDQUFDO0FBQ3BELE1BQU0sMkJBQTJCLEdBQUcseUJBQXlCLENBQUM7QUFDOUQsTUFBTSxpQ0FBaUMsR0FBRyxzQ0FBc0MsQ0FBQztBQUNqRixNQUFNLDJDQUEyQyxHQUFHLDJDQUEyQyxDQUFDO0FBQ2hHLE1BQU0sa0NBQWtDLEdBQUcsdUNBQXVDLENBQUM7QUFDbkYsTUFBTSxnQ0FBZ0MsR0FBRyxzQ0FBc0MsQ0FBQztBQUVoRixNQUFNLDJCQUEy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QUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSAnLi9hcGkuc2VydmljZSc7XG5pbXBvcnQge1xuICBBY3Rpdml0eSxcbiAgQWN0aXZpdHlMb2NhdGlvbiwgQWN0aXZpdHlRdWVzdGlvbixcbiAgQWN0aXZpdHlRdWVzdGlvblJlc3BvbnNlLFxuICBBY3Rpdml0eVR5cGUsXG4gIENvbGxlY3Rpb24sXG4gIEd1ZXN0LFxuICBNZW1iZXJBY3Rpdml0eUludml0ZSxcbiAgUm9sZSxcbn0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBhY3Rpdml0eUZhY3RvcnksXG4gIGFjdGl2aXR5SW52aXRlRmFjdG9yeSxcbiAgYWN0aXZpdHlMb2NhdGlvbkZhY3RvcnksXG4gIGFjdGl2aXR5UXVlc3Rpb25GYWN0b3J5LFxuICBhY3Rpdml0eVNldHRpbmdzRmFjdG9yeSxcbiAgYWN0aXZpdHlUeXBlRmFjdG9yeSxcbiAgZXZlbnRGYWN0b3J5LFxuICBndWVzdEZhY3RvcnksXG4gIG1lbWJlckFjdGl2aXR5SW52aXRlRmFjdG9yeSxcbiAgb3BlbkFjdGl2aXR5RmFjdG9yeSwgc2VhcmNoQXR0cmlidXRlRmFjdG9yeSxcbiAgc2VhcmNoTWVtYmVyRmFjdG9yeSxcbn0gZnJvbSAnLi9mYWN0b3JpZXMnO1xuaW1wb3J0IHsgc3ViIH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgT3BlbkFjdGl2aXR5U2VhcmNoUGFyYW1zSW50ZXJmYWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBpbnZhbGlkUm9sZUVycm9yIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBzZWFyY2hUZWFtRmFjdG9yeSB9IGZyb20gJy4vZmFjdG9yaWVzL3NlYXJjaC10ZWFtLWZhY3RvcnknO1xuXG5jb25zdCBQVUJMSUNfQUNUSVZJVFlfSU5WSVRFX1BBVEggPSAnYWN0aXZpdGllcy86aWQvOnRva2VuLyc7XG5jb25zdCBQVUJMSUNfTUVNQkVSX0FDVElWSVRJRVNfUEFUSCA9ICdhY3Rpdml0aWVzLyc7XG5jb25zdCBQVUJMSUNfTUVNQkVSX0FDVElWSVRZX1BBVEggPSAnYWN0aXZpdGllcy86YWN0aXZpdHlJZC8nO1xuY29uc3QgUFVCTElDX09QRU5fQUNUSVZJVFlfUkVTUE9ORF9QQVRIID0gJ29wZW4tYWN0aXZpdGllcy86YWN0aXZpdHlJZC9yZXNwb25kLyc7XG5jb25zdCBQVUJMSUNfT1BFTl9BQ1RJVklUWV9SRVNQT05EX1dJVEhfREFUQV9QQVRIID0gJ29wZW4tYWN0aXZpdGllcy86YWN0aXZpdHlJZC9yZXNwb25kLWRhdGEvJztcbmNvbnN0IFBVQkxJQ19NRU1CRVJfQUNUSVZJVFlfSU5WSVRFX1BBVEggPSAnYWN0aXZpdGllcy9pbnZpdGVzLzphY3Rpdml0eUludml0ZUlkLyc7XG5jb25zdCBQVUJMSUNfT1BFTl9BQ1RJVklUWV9JTlZJVEVfUEFUSCA9ICdvcGVuLWFjdGl2aXRpZXMvaW52aXRlcy86YWN0aXZpdHlJZC8nO1xuXG5jb25zdCBDTFVCX0FDVElWSVRZX1NFVFRJTkdTX1BBVEggPSAnOmNsdWJJZC9hY3Rpdml0aWVzL3NldHRpbmdzLyc7XG5jb25zdCBDTFVCX0FDVElWSVRZX0xPQ0FUSU9OU19QQVRIID0gJzpjbHViSWQvYWN0aXZpdGllcy9sb2NhdGlvbnMvJztcbmNvbnN0IENMVUJfQUNUSVZJVFlfTE9DQVRJT05fUEFUSCA9ICc6Y2x1YklkL2FjdGl2aXRpZXMvbG9jYXRpb25zLzpsb2NhdGlvbklkLyc7XG5jb25zdCBDTFVCX0FDVElWSVRZX1RZUEVTX1BBVEggPSAnOmNsdWJJZC9hY3Rpdml0aWVzL3R5cGVzLyc7XG5jb25zdCBDTFVCX0FDVElWSVRZX1RZUEVfUEFUSCA9ICc6Y2x1YklkL2FjdGl2aXRpZXMvdHlwZXMvOnR5cGVJZC8nO1xuXG5jb25zdCBTRUNUSU9OX0FDVElWSVRZX1NFVFRJTkdTX1BBVEggPSAnOnNlY3Rpb25JZC9hY3Rpdml0aWVzL3NldHRpbmdzLyc7XG5jb25zdCBTRUNUSU9OX0FDVElWSVRZX0xPQ0FUSU9OU19QQVRIID0gJzpzZWN0aW9uSWQvYWN0aXZpdGllcy9sb2NhdGlvbnMvJztcbmNvbnN0IFNFQ1RJT05fQUNUSVZJVFlfTE9DQVRJT05fUEFUSCA9ICc6c2VjdGlvbklkL2FjdGl2aXRpZXMvbG9jYXRpb25zLzpsb2NhdGlvbklkLyc7XG5jb25zdCBTRUNUSU9OX0FDVElWSVRZX1RZUEVTX1BBVEggPSAnOnNlY3Rpb25JZC9hY3Rpdml0aWVzL3R5cGVzLyc7XG5jb25zdCBTRUNUSU9OX0FDVElWSVRZX1RZUEVfUEFUSCA9ICc6c2VjdGlvbklkL2FjdGl2aXRpZXMvdHlwZXMvOnR5cGVJZC8nO1xuXG5jb25zdCBURUFNX0FDVElWSVRJRVNfUEFUSCA9ICc6dGVhbUlkL2FjdGl2aXRpZXMvJztcbmNvbnN0IFRFQU1fQUNUSVZJVFlfUlVMRV9BVFRSSUJVVEVTX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzL2F0dHJpYnV0ZXMvJztcbmNvbnN0IFRFQU1fQUNUSVZJVFlfSU5WSVRFU19QQVRIID0gJzp0ZWFtSWQvYWN0aXZpdGllcy86YWN0aXZpdHlJZC9pbnZpdGVzLyc7XG5jb25zdCBURUFNX0FDVElWSVRZX0lOVklURV9QQVRIID0gJzp0ZWFtSWQvYWN0aXZpdGllcy86YWN0aXZpdHlJZC9pbnZpdGVzLzphY3Rpdml0eUludml0ZUlkLyc7XG5jb25zdCBURUFNX0FDVElWSVRZX0lOVklURV9SRVNFTkRfUEFUSCA9ICc6dGVhbUlkL2FjdGl2aXRpZXMvOmFjdGl2aXR5SWQvaW52aXRlcy86YWN0aXZpdHlJbnZpdGVJZC9yZXNlbmQtaW52aXRlLyc7XG5jb25zdCBURUFNX0FDVElWSVRZX05FV19QQVRIID0gJzp0ZWFtSWQvYWN0aXZpdGllcy9uZXcvJztcbmNvbnN0IFRFQU1fQUNUSVZJVFlfUEFSVElDSVBBTlRTX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzLzphY3Rpdml0eUlkL3BhcnRpY2lwYW50cy8nO1xuY29uc3QgVEVBTV9BQ1RJVklUWV9QQVRIID0gJzp0ZWFtSWQvYWN0aXZpdGllcy86aWQvJztcbmNvbnN0IFRFQU1fQUNUSVZJVFlfUVJfQ09ERV9QQVRIID0gJzp0ZWFtSWQvYWN0aXZpdGllcy86aWQvcXItY29kZS8nO1xuY29uc3QgVEVBTV9BQ1RJVklUWV9RVUVTVElPTl9QQVRIID0gJzp0ZWFtSWQvYWN0aXZpdGllcy9xdWVzdGlvbnMvOmlkLyc7XG5jb25zdCBURUFNX0FDVElWSVRZX1FVRVNUSU9OU19QQVRIID0gJzp0ZWFtSWQvYWN0aXZpdGllcy9xdWVzdGlvbnMvJztcbmNvbnN0IFRFQU1fQUNUSVZJVFlfUlVMRV9URUFNU19QQVRIID0gJzp0ZWFtSWQvYWN0aXZpdGllcy90ZWFtcy8nO1xuY29uc3QgVEVBTV9BQ1RJVklUWV9TRVRUSU5HU19QQVRIID0gJzp0ZWFtSWQvYWN0aXZpdGllcy9zZXR0aW5ncy8nO1xuY29uc3QgVEVBTV9BQ1RJVklUWV9UWVBFU19QQVRIID0gJzp0ZWFtSWQvYWN0aXZpdGllcy90eXBlcy8nO1xuY29uc3QgVEVBTV9BQ1RJVklUWV9MT0NBVElPTlNfUEFUSCA9ICc6dGVhbUlkL2FjdGl2aXRpZXMvbG9jYXRpb25zLyc7XG5jb25zdCBURUFNX0NBTEVOREFSX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzL2NhbGVuZGFyLyc7XG5cbmNvbnN0IE1FTUJFUl9BQ1RJVklUWV9BVFRFTkRBTkNFX1BBVEggPSAnOm1lbWJlcklkL2FjdGl2aXRpZXMvYWN0aXZpdHkvOmFjdGl2aXR5SWQvYXR0ZW5kYW5jZS8nO1xuY29uc3QgTUVNQkVSX0FDVElWSVRZX0lOVklURV9QQVRIID0gJzptZW1iZXJJZC9hY3Rpdml0aWVzLzphY3Rpdml0eUludml0ZUlkLyc7XG5jb25zdCBNRU1CRVJfQUNUSVZJVFlfUEFUSCA9ICc6bWVtYmVySWQvYWN0aXZpdGllcy9hY3Rpdml0eS86YWN0aXZpdHlJZC8nO1xuY29uc3QgTUVNQkVSX0FDVElWSVRZX0lOVklURVNfUEFUSCA9ICc6bWVtYmVySWQvYWN0aXZpdGllcy8nO1xuY29uc3QgTUVNQkVSX0NBTEVOREFSX1BBVEggPSAnOm1lbWJlcklkL2FjdGl2aXRpZXMvY2FsZW5kYXIvJztcbmNvbnN0IE1FTUJFUl9PUEVOX0FDVElWSVRJRVNfUEFUSCA9ICc6bWVtYmVySWQvb3Blbi1hY3Rpdml0aWVzLyc7XG5jb25zdCBNRU1CRVJfT1BFTl9BQ1RJVklUSUVTX0FDVElWSVRZX1RZUEVTX1BBVEggPSAnOm1lbWJlcklkL29wZW4tYWN0aXZpdGllcy90eXBlcy8nO1xuY29uc3QgTUVNQkVSX09QRU5fQUNUSVZJVElFU19BQ1RJVklUWV9MT0NBVElPTlNfUEFUSCA9ICc6bWVtYmVySWQvb3Blbi1hY3Rpdml0aWVzL2xvY2F0aW9ucy8nO1xuY29uc3QgTUVNQkVSX09QRU5fQUNUSVZJVFlfUEFUSCA9ICc6bWVtYmVySWQvb3Blbi1hY3Rpdml0aWVzLzphY3Rpdml0eUlkLyc7XG5jb25zdCBNRU1CRVJfT1BFTl9BQ1RJVklUWV9SRVNQT05EX1BBVEggPSAnOm1lbWJlcklkL29wZW4tYWN0aXZpdGllcy86YWN0aXZpdHlJZC9yZXNwb25kLyc7XG5jb25zdCBNRU1CRVJfT1BFTl9BQ1RJVklUWV9SRVNQT05EX1dJVEhfREFUQV9QQVRIID0gJzptZW1iZXJJZC9vcGVuLWFjdGl2aXRpZXMvOmFjdGl2aXR5SWQvcmVzcG9uZC1kYXRhLyc7XG5jb25zdCBNRU1CRVJfQUNUSVZJVFlfU0VUVElOR1NfUEFUSCA9ICc6bWVtYmVySWQvYWN0aXZpdGllcy9zZXR0aW5ncy8nO1xuY29uc3QgTUVNQkVSX0FDVElWSVRZX1RZUEVTX1BBVEggPSAnOm1lbWJlcklkL2FjdGl2aXRpZXMvdHlwZXMvJztcbmNvbnN0IE1FTUJFUl9BQ1RJVklUWV9MT0NBVElPTlNfUEFUSCA9ICc6bWVtYmVySWQvYWN0aXZpdGllcy9sb2NhdGlvbnMvJztcblxuY29uc3QgVEVBTV9BQ1RJVklUWV9HVUVTVFNfUEFUSCA9ICc6dGVhbUlkL2FjdGl2aXRpZXMvOmFjdGl2aXR5SWQvZ3Vlc3RzLyc7XG5jb25zdCBURUFNX0FDVElWSVRZX0dVRVNUX1BBVEggPSAnOnRlYW1JZC9hY3Rpdml0aWVzLzphY3Rpdml0eUlkL2d1ZXN0cy86Z3Vlc3RJZC8nO1xuY29uc3QgTUVNQkVSX0FDVElWSVRZX0lOVklURV9HVUVTVFNfUEFUSCA9ICc6bWVtYmVySWQvYWN0aXZpdGllcy86aW52aXRlSWQvZ3Vlc3RzLyc7XG5jb25zdCBNRU1CRVJfQUNUSVZJVFlfSU5WSVRFX0dVRVNUX1BBVEggPSAnOm1lbWJlcklkL2FjdGl2aXRpZXMvOmludml0ZUlkL2d1ZXN0cy86Z3Vlc3RJZC8nO1xuXG5jb25zdCBQVUJMSUNfQUNUSVZJVFlfSU5WSVRFX0dVRVNUX0xJU1RfUEFUSCA9ICdhY3Rpdml0aWVzLzppZC86dG9rZW4vZ3Vlc3RzLyc7XG5jb25zdCBQVUJMSUNfQUNUSVZJVFlfSU5WSVRFX0dVRVNUX0RFVEFJTF9QQVRIID0gJ2FjdGl2aXRpZXMvOmlkLzp0b2tlbi9ndWVzdHMvOmd1ZXN0SWQvJztcbmNvbnN0IFBVQkxJQ19PUEVOX0FDVElWSVRZX0dVRVNUX0xJU1RfUEFUSCA9ICdvcGVuLWFjdGl2aXRpZXMvOmFjdGl2aXR5SWQvZ3Vlc3RzLyc7XG5jb25zdCBQVUJMSUNfT1BFTl9BQ1RJVklUWV9HVUVTVF9ERVRBSUxfUEFUSCA9ICdvcGVuLWFjdGl2aXRpZXMvOmFjdGl2aXR5SWQvZ3Vlc3RzLzpndWVzdElkLyc7XG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQWN0aXZpdHlTZXJ2aWNlIHtcbiAgYWN0aXZpdHlMb2NhdGlvbkNvbGxlY3Rpb246IENvbGxlY3Rpb248QWN0aXZpdHlMb2NhdGlvbj4gfCB1bmRlZmluZWQ7XG5cbiAgYWN0aXZpdHlMb2NhdGlvblJlc3BvbnNlRGF0ZTogRGF0ZSB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwaVNlcnZpY2U6IEFwaVNlcnZpY2UpIHtcbiAgfVxuXG4gIGFkZFRlYW1BY3Rpdml0eUludml0ZXModGVhbUlkOiBzdHJpbmcsIGFjdGl2aXR5SWQ6IHN0cmluZywgbWVtYmVySWRzOiBBcnJheTxzdHJpbmc+KSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnBvc3RSZXNvdXJjZShcbiAgICAgICAgKCkgPT4gdHJ1ZSxcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQUNUSVZJVFlfSU5WSVRFU19QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgdGVhbUlkLFxuICAgICAgICAgIGFjdGl2aXR5SWRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG1lbWJlcnM6IG1lbWJlcklkc1xuICAgICAgICB9XG4gICAgICApXG4gIH1cblxuICBjcmVhdGVUZWFtQWN0aXZpdHkodGVhbUlkOiBzdHJpbmcsIGRhdGE6IFBhcnRpYWw8QWN0aXZpdHk+KSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnBvc3RSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlGYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9BQ1RJVklUSUVTX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICB0ZWFtSWRcbiAgICAgICAgfSxcbiAgICAgICAgdGhpcy5yZW1vdmVVbnVzZWRBY3Rpdml0eUZpZWxkcyh7Li4uZGF0YX0pXG4gICAgICApXG4gIH1cblxuICBjcmVhdGVUZWFtQWN0aXZpdHlRdWVzdGlvbih0ZWFtSWQ6IHN0cmluZywgcXVlc3Rpb246IFBhcnRpYWw8QWN0aXZpdHlRdWVzdGlvbj4pIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAucG9zdFJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eVF1ZXN0aW9uRmFjdG9yeSxcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQUNUSVZJVFlfUVVFU1RJT05TX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICB0ZWFtSWRcbiAgICAgICAgfSxcbiAgICAgICAgdGhpcy5yZW1vdmVVbnVzZWRBY3Rpdml0eVF1ZXN0aW9uRmllbGRzKHsuLi5xdWVzdGlvbn0pXG4gICAgICApXG4gIH1cblxuICBkZWxldGVUZWFtQWN0aXZpdHkodGVhbUlkOiBzdHJpbmcsIGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZGVsZXRlUmVzb3VyY2UoXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0FDVElWSVRZX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICB0ZWFtSWQsXG4gICAgICAgICAgaWRcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIGRlbGV0ZVRlYW1BY3Rpdml0eUludml0ZSh0ZWFtSWQ6IHN0cmluZywgYWN0aXZpdHlJZDogc3RyaW5nLCBhY3Rpdml0eUludml0ZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZGVsZXRlUmVzb3VyY2UoXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0FDVElWSVRZX0lOVklURV9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgdGVhbUlkLFxuICAgICAgICAgIGFjdGl2aXR5SWQsXG4gICAgICAgICAgYWN0aXZpdHlJbnZpdGVJZFxuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgZGVsZXRlVGVhbUFjdGl2aXR5UXVlc3Rpb24odGVhbUlkOiBzdHJpbmcsIGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZGVsZXRlUmVzb3VyY2UoXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0FDVElWSVRZX1FVRVNUSU9OX1BBVEgsXG4gICAgICAgIHt0ZWFtSWQsIGlkfVxuICAgICAgKTtcbiAgfVxuXG4gIGdldE1lbWJlckFjdGl2aXR5KG1lbWJlcklkOiBzdHJpbmcsIGFjdGl2aXR5SWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlGYWN0b3J5LFxuICAgICAgICBSb2xlLk1lbWJlckFkbWluLFxuICAgICAgICBNRU1CRVJfQUNUSVZJVFlfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIG1lbWJlcklkLFxuICAgICAgICAgIGFjdGl2aXR5SWRcbiAgICAgICAgfVxuICAgICAgKVxuICB9XG5cbiAgZ2V0TWVtYmVyQWN0aXZpdHlJbnZpdGUobWVtYmVySWQ6IHN0cmluZywgYWN0aXZpdHlJbnZpdGVJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldFJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eUludml0ZUZhY3RvcnksXG4gICAgICAgIFJvbGUuTWVtYmVyQWRtaW4sXG4gICAgICAgIE1FTUJFUl9BQ1RJVklUWV9JTlZJVEVfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIG1lbWJlcklkLFxuICAgICAgICAgIGFjdGl2aXR5SW52aXRlSWRcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIGdldE1lbWJlckFjdGl2aXR5SW52aXRlcyhtZW1iZXJJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgcGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge2xpbWl0OiAnbnVsbCcsIG9wZW5fYWN0aXZpdHk6ICd0cnVlJ307XG5cbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgYWN0aXZpdHlJbnZpdGVGYWN0b3J5LFxuICAgICAgICBSb2xlLk1lbWJlckFkbWluLFxuICAgICAgICBNRU1CRVJfQUNUSVZJVFlfSU5WSVRFU19QQVRILFxuICAgICAgICB7bWVtYmVySWR9LFxuICAgICAgICB7XG4gICAgICAgICAgcGFyYW1zXG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBnZXRNZW1iZXJDYWxlbmRhckV2ZW50cyhtZW1iZXJJZDogc3RyaW5nLCBzdGFydERhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsLCBlbmREYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgb3BlbkFjdGl2aXR5OiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBjb25zdCBwYXJhbXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7bGltaXQ6ICdudWxsJ307XG5cbiAgICBpZiAoc3RhcnREYXRlKSB7XG4gICAgICBwYXJhbXNbJ3NlYXJjaF9zdGFydF9kYXknXSA9IHN0YXJ0RGF0ZTtcbiAgICB9XG5cbiAgICBpZiAoZW5kRGF0ZSkge1xuICAgICAgcGFyYW1zWydzZWFyY2hfZW5kX2RheSddID0gZW5kRGF0ZTtcbiAgICB9XG5cbiAgICBpZiAob3BlbkFjdGl2aXR5KSB7XG4gICAgICBwYXJhbXNbJ29wZW5fYWN0aXZpdHknXSA9ICd0cnVlJztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgZXZlbnRGYWN0b3J5LFxuICAgICAgICBSb2xlLk1lbWJlckFkbWluLFxuICAgICAgICBNRU1CRVJfQ0FMRU5EQVJfUEFUSCxcbiAgICAgICAge21lbWJlcklkfSxcbiAgICAgICAge1xuICAgICAgICAgIHBhcmFtc1xuICAgICAgICB9XG4gICAgICApXG4gIH1cblxuICBnZXRNZW1iZXJPcGVuQWN0aXZpdGllcyhtZW1iZXJJZDogc3RyaW5nLCBvcGVuQWN0aXZpdHlTZWFyY2hQYXJhbXM6IE9wZW5BY3Rpdml0eVNlYXJjaFBhcmFtc0ludGVyZmFjZSkge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBvcGVuQWN0aXZpdHlGYWN0b3J5LFxuICAgICAgICBSb2xlLk1lbWJlckFkbWluLFxuICAgICAgICBNRU1CRVJfT1BFTl9BQ1RJVklUSUVTX1BBVEgsXG4gICAgICAgIHttZW1iZXJJZH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwYXJhbXM6IHRoaXMuZ2V0T3BlbkFjdGl2aXR5U2VhcmNoUGFyYW1zKG9wZW5BY3Rpdml0eVNlYXJjaFBhcmFtcylcbiAgICAgICAgfVxuICAgICAgKVxuICB9XG5cbiAgZ2V0TWVtYmVyT3BlbkFjdGl2aXR5KG1lbWJlcklkOiBzdHJpbmcsIGFjdGl2aXR5SWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRSZXNvdXJjZShcbiAgICAgICAgb3BlbkFjdGl2aXR5RmFjdG9yeSxcbiAgICAgICAgUm9sZS5NZW1iZXJBZG1pbixcbiAgICAgICAgTUVNQkVSX09QRU5fQUNUSVZJVFlfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIG1lbWJlcklkLFxuICAgICAgICAgIGFjdGl2aXR5SWRcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIGdldE1lbWJlck9wZW5BY3Rpdml0eUFjdGl2aXR5VHlwZXMobWVtYmVySWQ6IHN0cmluZywgc3RhcnREYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgZW5kRGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGFsbDogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGFjdGl2aXR5VHlwZUZhY3RvcnksXG4gICAgICAgIFJvbGUuTWVtYmVyQWRtaW4sXG4gICAgICAgIE1FTUJFUl9PUEVOX0FDVElWSVRJRVNfQUNUSVZJVFlfVFlQRVNfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIG1lbWJlcklkXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIC4uLnRoaXMuZ2V0T3BlbkFjdGl2aXR5RGF0ZVBhcmFtcyhzdGFydERhdGUsIGVuZERhdGUsIGFsbCksXG4gICAgICAgICAgICBsaW1pdDogJ251bGwnXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApXG4gIH1cblxuICBnZXRNZW1iZXJPcGVuQWN0aXZpdHlMb2NhdGlvbnMobWVtYmVySWQ6IHN0cmluZywgc3RhcnREYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgZW5kRGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGFsbDogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGFjdGl2aXR5TG9jYXRpb25GYWN0b3J5LFxuICAgICAgICBSb2xlLk1lbWJlckFkbWluLFxuICAgICAgICBNRU1CRVJfT1BFTl9BQ1RJVklUSUVTX0FDVElWSVRZX0xPQ0FUSU9OU19QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgbWVtYmVySWRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgLi4udGhpcy5nZXRPcGVuQWN0aXZpdHlEYXRlUGFyYW1zKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgYWxsKSxcbiAgICAgICAgICAgIGxpbWl0OiAnbnVsbCdcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIClcbiAgfVxuXG4gIGdldFB1YmxpY0FjdGl2aXR5SW52aXRlKGlkOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0UmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5SW52aXRlRmFjdG9yeSxcbiAgICAgICAgUm9sZS5QdWJsaWMsXG4gICAgICAgIFBVQkxJQ19BQ1RJVklUWV9JTlZJVEVfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIHRva2VuXG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBnZXRQdWJsaWNNZW1iZXJBY3Rpdml0eUludml0ZShhY3Rpdml0eUludml0ZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0UmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5SW52aXRlRmFjdG9yeSxcbiAgICAgICAgUm9sZS5QdWJsaWMsXG4gICAgICAgIFBVQkxJQ19NRU1CRVJfQUNUSVZJVFlfSU5WSVRFX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBhY3Rpdml0eUludml0ZUlkXG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBnZXRQdWJsaWNNZW1iZXJBY3Rpdml0aWVzKHN0YXJ0RGF0ZTogc3RyaW5nLCBlbmREYXRlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgZXZlbnRGYWN0b3J5LFxuICAgICAgICBSb2xlLlB1YmxpYyxcbiAgICAgICAgUFVCTElDX01FTUJFUl9BQ1RJVklUSUVTX1BBVEgsXG4gICAgICAgIHt9LFxuICAgICAgICB7XG4gICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICBzZWFyY2hfc3RhcnRfZGF5OiBzdGFydERhdGUsXG4gICAgICAgICAgICBzZWFyY2hfZW5kX2RheTogZW5kRGF0ZSxcbiAgICAgICAgICAgIGxpbWl0OiAnbnVsbCdcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIClcbiAgfVxuXG4gIGdldFB1YmxpY01lbWJlckFjdGl2aXR5KGFjdGl2aXR5SWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlGYWN0b3J5LFxuICAgICAgICBSb2xlLlB1YmxpYyxcbiAgICAgICAgUFVCTElDX01FTUJFUl9BQ1RJVklUWV9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgYWN0aXZpdHlJZFxuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgZ2V0VGVhbUFjdGl2aXR5KHRlYW1JZDogc3RyaW5nLCBpZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldFJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eUZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0FDVElWSVRZX1BBVEgsXG4gICAgICAgIHt0ZWFtSWQsIGlkfVxuICAgICAgKVxuICB9XG5cbiAgZ2V0VGVhbUFjdGl2aXR5UVJDb2RlKHRlYW1JZDogc3RyaW5nLCBpZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldFJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eUZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0FDVElWSVRZX1FSX0NPREVfUEFUSCxcbiAgICAgICAge3RlYW1JZCwgaWR9XG4gICAgICApXG4gIH1cblxuICBnZXRUZWFtQWN0aXZpdHlRdWVzdGlvbih0ZWFtSWQ6IHN0cmluZywgaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlRdWVzdGlvbkZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0FDVElWSVRZX1FVRVNUSU9OX1BBVEgsXG4gICAgICAgIHt0ZWFtSWQsIGlkfVxuICAgICAgKVxuICB9XG5cbiAgZ2V0VGVhbUFjdGl2aXR5UXVlc3Rpb25zKHRlYW1JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGFjdGl2aXR5UXVlc3Rpb25GYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9BQ1RJVklUWV9RVUVTVElPTlNfUEFUSCxcbiAgICAgICAge3RlYW1JZH0sXG4gICAgICAgIHtwYXJhbXM6IHtsaW1pdDogJ251bGwnfX1cbiAgICAgIClcbiAgfVxuXG4gIGdldEFjdGl2aXR5TG9jYXRpb25zKHJvbGU6IFJvbGUsIGl0ZW1JZDogc3RyaW5nLCBmb3JjZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgc3dpdGNoIChyb2xlKSB7XG4gICAgICBjYXNlIFJvbGUuQ2x1YkFkbWluOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRDbHViQWN0aXZpdHlMb2NhdGlvbnMoaXRlbUlkLCBmb3JjZSk7XG4gICAgICBjYXNlIFJvbGUuU2VjdGlvbkFkbWluOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRTZWN0aW9uQWN0aXZpdHlMb2NhdGlvbnMoaXRlbUlkLCBmb3JjZSk7XG4gICAgICBjYXNlIFJvbGUuVGVhbUFkbWluOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRUZWFtQWN0aXZpdHlMb2NhdGlvbnMoaXRlbUlkLCBmb3JjZSk7XG4gICAgICBjYXNlIFJvbGUuTWVtYmVyQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLmdldE1lbWJlckFjdGl2aXR5TG9jYXRpb25zKGl0ZW1JZCwgZm9yY2UpXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBpbnZhbGlkUm9sZUVycm9yO1xuICAgIH1cbiAgfVxuXG4gIGdldFRlYW1BY3Rpdml0eUxvY2F0aW9ucyh0ZWFtSWQ6IHN0cmluZywgZm9yY2U6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIGlmICh0aGlzLmFjdGl2aXR5TG9jYXRpb25SZXNwb25zZURhdGUgJiYgdGhpcy5hY3Rpdml0eUxvY2F0aW9uUmVzcG9uc2VEYXRlID4gc3ViKG5ldyBEYXRlKCksIHtob3VyczogMX0pICYmICFmb3JjZSkge1xuICAgICAgcmV0dXJuIG9mKHRoaXMuYWN0aXZpdHlMb2NhdGlvbkNvbGxlY3Rpb24gYXMgQ29sbGVjdGlvbjxBY3Rpdml0eUxvY2F0aW9uPik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGFjdGl2aXR5TG9jYXRpb25GYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9BQ1RJVklUWV9MT0NBVElPTlNfUEFUSCxcbiAgICAgICAge3RlYW1JZH0sXG4gICAgICAgIHtwYXJhbXM6IHtsaW1pdDogJ251bGwnfX1cbiAgICAgICkucGlwZShcbiAgICAgICAgdGFwKChhY3Rpdml0eUxvY2F0aW9uQ29sbGVjdGlvbjogQ29sbGVjdGlvbjxBY3Rpdml0eUxvY2F0aW9uPikgPT4ge1xuICAgICAgICAgIHRoaXMuYWN0aXZpdHlMb2NhdGlvblJlc3BvbnNlRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgdGhpcy5hY3Rpdml0eUxvY2F0aW9uQ29sbGVjdGlvbiA9IGFjdGl2aXR5TG9jYXRpb25Db2xsZWN0aW9uO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIGdldE1lbWJlckFjdGl2aXR5TG9jYXRpb25zKG1lbWJlcklkOiBzdHJpbmcsIGZvcmNlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBpZiAodGhpcy5hY3Rpdml0eUxvY2F0aW9uUmVzcG9uc2VEYXRlICYmIHRoaXMuYWN0aXZpdHlMb2NhdGlvblJlc3BvbnNlRGF0ZSA+IHN1YihuZXcgRGF0ZSgpLCB7aG91cnM6IDF9KSAmJiAhZm9yY2UpIHtcbiAgICAgIHJldHVybiBvZih0aGlzLmFjdGl2aXR5TG9jYXRpb25Db2xsZWN0aW9uIGFzIENvbGxlY3Rpb248QWN0aXZpdHlMb2NhdGlvbj4pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBhY3Rpdml0eUxvY2F0aW9uRmFjdG9yeSxcbiAgICAgICAgUm9sZS5NZW1iZXJBZG1pbixcbiAgICAgICAgTUVNQkVSX0FDVElWSVRZX0xPQ0FUSU9OU19QQVRILFxuICAgICAgICB7bWVtYmVySWR9LFxuICAgICAgICB7cGFyYW1zOiB7bGltaXQ6ICdudWxsJ319XG4gICAgICApLnBpcGUoXG4gICAgICAgIHRhcCgoYWN0aXZpdHlMb2NhdGlvbkNvbGxlY3Rpb246IENvbGxlY3Rpb248QWN0aXZpdHlMb2NhdGlvbj4pID0+IHtcbiAgICAgICAgICB0aGlzLmFjdGl2aXR5TG9jYXRpb25SZXNwb25zZURhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgIHRoaXMuYWN0aXZpdHlMb2NhdGlvbkNvbGxlY3Rpb24gPSBhY3Rpdml0eUxvY2F0aW9uQ29sbGVjdGlvbjtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBnZXRDbHViQWN0aXZpdHlMb2NhdGlvbnMoY2x1YklkOiBzdHJpbmcsIGZvcmNlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBpZiAodGhpcy5hY3Rpdml0eUxvY2F0aW9uUmVzcG9uc2VEYXRlICYmIHRoaXMuYWN0aXZpdHlMb2NhdGlvblJlc3BvbnNlRGF0ZSA+IHN1YihuZXcgRGF0ZSgpLCB7aG91cnM6IDF9KSAmJiAhZm9yY2UpIHtcbiAgICAgIHJldHVybiBvZih0aGlzLmFjdGl2aXR5TG9jYXRpb25Db2xsZWN0aW9uIGFzIENvbGxlY3Rpb248QWN0aXZpdHlMb2NhdGlvbj4pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBhY3Rpdml0eUxvY2F0aW9uRmFjdG9yeSxcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQUNUSVZJVFlfTE9DQVRJT05TX1BBVEgsXG4gICAgICAgIHtjbHViSWR9LFxuICAgICAgICB7cGFyYW1zOiB7bGltaXQ6ICdudWxsJ319XG4gICAgICApLnBpcGUoXG4gICAgICAgIHRhcCgoYWN0aXZpdHlMb2NhdGlvbkNvbGxlY3Rpb246IENvbGxlY3Rpb248QWN0aXZpdHlMb2NhdGlvbj4pID0+IHtcbiAgICAgICAgICB0aGlzLmFjdGl2aXR5TG9jYXRpb25SZXNwb25zZURhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgIHRoaXMuYWN0aXZpdHlMb2NhdGlvbkNvbGxlY3Rpb24gPSBhY3Rpdml0eUxvY2F0aW9uQ29sbGVjdGlvbjtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBnZXRTZWN0aW9uQWN0aXZpdHlMb2NhdGlvbnMoc2VjdGlvbklkOiBzdHJpbmcsIGZvcmNlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBpZiAodGhpcy5hY3Rpdml0eUxvY2F0aW9uUmVzcG9uc2VEYXRlICYmIHRoaXMuYWN0aXZpdHlMb2NhdGlvblJlc3BvbnNlRGF0ZSA+IHN1YihuZXcgRGF0ZSgpLCB7aG91cnM6IDF9KSAmJiAhZm9yY2UpIHtcbiAgICAgIHJldHVybiBvZih0aGlzLmFjdGl2aXR5TG9jYXRpb25Db2xsZWN0aW9uIGFzIENvbGxlY3Rpb248QWN0aXZpdHlMb2NhdGlvbj4pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBhY3Rpdml0eUxvY2F0aW9uRmFjdG9yeSxcbiAgICAgICAgUm9sZS5TZWN0aW9uQWRtaW4sXG4gICAgICAgIFNFQ1RJT05fQUNUSVZJVFlfTE9DQVRJT05TX1BBVEgsXG4gICAgICAgIHtzZWN0aW9uSWR9LFxuICAgICAgICB7cGFyYW1zOiB7bGltaXQ6ICdudWxsJ319XG4gICAgICApLnBpcGUoXG4gICAgICAgIHRhcCgoYWN0aXZpdHlMb2NhdGlvbkNvbGxlY3Rpb246IENvbGxlY3Rpb248QWN0aXZpdHlMb2NhdGlvbj4pID0+IHtcbiAgICAgICAgICB0aGlzLmFjdGl2aXR5TG9jYXRpb25SZXNwb25zZURhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgIHRoaXMuYWN0aXZpdHlMb2NhdGlvbkNvbGxlY3Rpb24gPSBhY3Rpdml0eUxvY2F0aW9uQ29sbGVjdGlvbjtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICB1cGRhdGVBY3Rpdml0eUxvY2F0aW9uKHJvbGU6IFJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLCBsb2NhdGlvbjogQWN0aXZpdHlMb2NhdGlvbikge1xuICAgIHN3aXRjaCAocm9sZSkge1xuICAgICAgY2FzZSBSb2xlLkNsdWJBZG1pbjpcbiAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlQ2x1YkFjdGl2aXR5TG9jYXRpb24oY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBsb2NhdGlvbik7XG4gICAgICBjYXNlIFJvbGUuU2VjdGlvbkFkbWluOlxuICAgICAgICByZXR1cm4gdGhpcy51cGRhdGVTZWN0aW9uQWN0aXZpdHlMb2NhdGlvbihjbHViT3JTZWN0aW9uT3JUZWFtSWQsIGxvY2F0aW9uKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IGludmFsaWRSb2xlRXJyb3I7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQ2x1YkFjdGl2aXR5TG9jYXRpb24oY2x1YklkOiBzdHJpbmcsIGxvY2F0aW9uOiBBY3Rpdml0eUxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eUxvY2F0aW9uRmFjdG9yeSxcbiAgICAgICAgUm9sZS5DbHViQWRtaW4sXG4gICAgICAgIENMVUJfQUNUSVZJVFlfTE9DQVRJT05fUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIGNsdWJJZCxcbiAgICAgICAgICBsb2NhdGlvbklkOiBsb2NhdGlvbi5pZFxuICAgICAgICB9LFxuICAgICAgICBsb2NhdGlvblxuICAgICAgKTtcbiAgfVxuXG4gIHVwZGF0ZU1lbWJlckFjdGl2aXR5QXR0ZW5kYW5jZShtZW1iZXJJZDogc3RyaW5nLCBhY3Rpdml0eUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAucG9zdFJlc291cmNlTm9SZXNwb25zZShcbiAgICAgICAgUm9sZS5NZW1iZXJBZG1pbixcbiAgICAgICAgTUVNQkVSX0FDVElWSVRZX0FUVEVOREFOQ0VfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIG1lbWJlcklkLFxuICAgICAgICAgIGFjdGl2aXR5SWRcbiAgICAgICAgfSxcbiAgICAgICAge31cbiAgICAgICk7XG4gIH1cblxuICB1cGRhdGVTZWN0aW9uQWN0aXZpdHlMb2NhdGlvbihzZWN0aW9uSWQ6IHN0cmluZywgbG9jYXRpb246IEFjdGl2aXR5TG9jYXRpb24pIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAudXBkYXRlUmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5TG9jYXRpb25GYWN0b3J5LFxuICAgICAgICBSb2xlLlNlY3Rpb25BZG1pbixcbiAgICAgICAgU0VDVElPTl9BQ1RJVklUWV9MT0NBVElPTl9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgc2VjdGlvbklkLFxuICAgICAgICAgIGxvY2F0aW9uSWQ6IGxvY2F0aW9uLmlkXG4gICAgICAgIH0sXG4gICAgICAgIGxvY2F0aW9uXG4gICAgICApO1xuICB9XG5cbiAgZ2V0VGVhbUFjdGl2aXR5TmV3KHRlYW1JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldFJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eUZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0FDVElWSVRZX05FV19QQVRILFxuICAgICAgICB7dGVhbUlkfVxuICAgICAgKTtcbiAgfVxuXG4gIGdldFRlYW1BY3Rpdml0eVBhcnRpY2lwYW50cyh0ZWFtSWQ6IHN0cmluZywgYWN0aXZpdHlJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIHNlYXJjaE1lbWJlckZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0FDVElWSVRZX1BBUlRJQ0lQQU5UU19QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgdGVhbUlkLFxuICAgICAgICAgIGFjdGl2aXR5SWRcbiAgICAgICAgfSxcbiAgICAgICAge3BhcmFtczoge2xpbWl0OiAnbnVsbCd9fVxuICAgICAgKTtcbiAgfVxuXG4gIGdldFRlYW1BY3Rpdml0eUd1ZXN0cyh0ZWFtSWQ6IHN0cmluZywgYWN0aXZpdHlJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGd1ZXN0RmFjdG9yeSxcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQUNUSVZJVFlfR1VFU1RTX1BBVEgsXG4gICAgICAgIHsgdGVhbUlkLCBhY3Rpdml0eUlkIH0sXG4gICAgICAgIHsgcGFyYW1zOiB7IGxpbWl0OiAnbnVsbCcgfSB9XG4gICAgICApO1xuICB9XG5cbiAgYWRkVGVhbUFjdGl2aXR5R3Vlc3QodGVhbUlkOiBzdHJpbmcsIGFjdGl2aXR5SWQ6IHN0cmluZywgZGF0YTogeyBuYW1lOiBzdHJpbmc7IGNvbW1lbnQ/OiBzdHJpbmcgfSkge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5wb3N0UmVzb3VyY2UoXG4gICAgICAgIGd1ZXN0RmFjdG9yeSxcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQUNUSVZJVFlfR1VFU1RTX1BBVEgsXG4gICAgICAgIHsgdGVhbUlkLCBhY3Rpdml0eUlkIH0sXG4gICAgICAgIGRhdGFcbiAgICAgICk7XG4gIH1cblxuICB1cGRhdGVUZWFtQWN0aXZpdHlHdWVzdCh0ZWFtSWQ6IHN0cmluZywgYWN0aXZpdHlJZDogc3RyaW5nLCBndWVzdElkOiBzdHJpbmcsIGRhdGE6IHsgbmFtZTogc3RyaW5nOyBjb21tZW50Pzogc3RyaW5nIH0pIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAudXBkYXRlUmVzb3VyY2UoXG4gICAgICAgIGd1ZXN0RmFjdG9yeSxcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQUNUSVZJVFlfR1VFU1RfUEFUSCxcbiAgICAgICAgeyB0ZWFtSWQsIGFjdGl2aXR5SWQsIGd1ZXN0SWQgfSxcbiAgICAgICAgZGF0YVxuICAgICAgKTtcbiAgfVxuXG4gIGRlbGV0ZVRlYW1BY3Rpdml0eUd1ZXN0KHRlYW1JZDogc3RyaW5nLCBhY3Rpdml0eUlkOiBzdHJpbmcsIGd1ZXN0SWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5kZWxldGVSZXNvdXJjZShcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQUNUSVZJVFlfR1VFU1RfUEFUSCxcbiAgICAgICAgeyB0ZWFtSWQsIGFjdGl2aXR5SWQsIGd1ZXN0SWQgfVxuICAgICAgKTtcbiAgfVxuXG4gIGFkZE1lbWJlckFjdGl2aXR5R3Vlc3QobWVtYmVySWQ6IHN0cmluZywgaW52aXRlSWQ6IHN0cmluZywgZGF0YTogeyBuYW1lOiBzdHJpbmc7IGNvbW1lbnQ/OiBzdHJpbmcgfSkge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5wb3N0UmVzb3VyY2UoXG4gICAgICAgIGd1ZXN0RmFjdG9yeSxcbiAgICAgICAgUm9sZS5NZW1iZXJBZG1pbixcbiAgICAgICAgTUVNQkVSX0FDVElWSVRZX0lOVklURV9HVUVTVFNfUEFUSCxcbiAgICAgICAgeyBtZW1iZXJJZCwgaW52aXRlSWQgfSxcbiAgICAgICAgZGF0YVxuICAgICAgKTtcbiAgfVxuXG4gIHVwZGF0ZU1lbWJlckFjdGl2aXR5R3Vlc3QobWVtYmVySWQ6IHN0cmluZywgaW52aXRlSWQ6IHN0cmluZywgZ3Vlc3RJZDogc3RyaW5nLCBkYXRhOiB7IG5hbWU6IHN0cmluZzsgY29tbWVudD86IHN0cmluZyB9KSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKFxuICAgICAgICBndWVzdEZhY3RvcnksXG4gICAgICAgIFJvbGUuTWVtYmVyQWRtaW4sXG4gICAgICAgIE1FTUJFUl9BQ1RJVklUWV9JTlZJVEVfR1VFU1RfUEFUSCxcbiAgICAgICAgeyBtZW1iZXJJZCwgaW52aXRlSWQsIGd1ZXN0SWQgfSxcbiAgICAgICAgZGF0YVxuICAgICAgKTtcbiAgfVxuXG4gIGRlbGV0ZU1lbWJlckFjdGl2aXR5R3Vlc3QobWVtYmVySWQ6IHN0cmluZywgaW52aXRlSWQ6IHN0cmluZywgZ3Vlc3RJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmRlbGV0ZVJlc291cmNlKFxuICAgICAgICBSb2xlLk1lbWJlckFkbWluLFxuICAgICAgICBNRU1CRVJfQUNUSVZJVFlfSU5WSVRFX0dVRVNUX1BBVEgsXG4gICAgICAgIHsgbWVtYmVySWQsIGludml0ZUlkLCBndWVzdElkIH1cbiAgICAgICk7XG4gIH1cblxuICBnZXRBY3Rpdml0eVNldHRpbmdzKHJvbGU6IFJvbGUsIGl0ZW1JZDogc3RyaW5nKSB7XG4gICAgc3dpdGNoIChyb2xlKSB7XG4gICAgICBjYXNlIFJvbGUuQ2x1YkFkbWluOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRDbHViQWN0aXZpdHlTZXR0aW5ncyhpdGVtSWQpO1xuICAgICAgY2FzZSBSb2xlLlNlY3Rpb25BZG1pbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U2VjdGlvbkFjdGl2aXR5U2V0dGluZ3MoaXRlbUlkKTtcbiAgICAgIGNhc2UgUm9sZS5UZWFtQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRlYW1BY3Rpdml0eVNldHRpbmdzKGl0ZW1JZCk7XG4gICAgICBjYXNlIFJvbGUuTWVtYmVyQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLmdldE1lbWJlckFjdGl2aXR5U2V0dGluZ3MoaXRlbUlkKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IGludmFsaWRSb2xlRXJyb3I7XG4gICAgfVxuICB9XG5cbiAgZ2V0VGVhbUFjdGl2aXR5U2V0dGluZ3ModGVhbUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0UmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5U2V0dGluZ3NGYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9BQ1RJVklUWV9TRVRUSU5HU19QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgdGVhbUlkXG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBnZXRNZW1iZXJBY3Rpdml0eVNldHRpbmdzKG1lbWJlcklkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0UmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5U2V0dGluZ3NGYWN0b3J5LFxuICAgICAgICBSb2xlLk1lbWJlckFkbWluLFxuICAgICAgICBNRU1CRVJfQUNUSVZJVFlfU0VUVElOR1NfUEFUSCxcbiAgICAgICAge21lbWJlcklkfVxuICAgICAgKTtcbiAgfVxuXG4gIGdldFNlY3Rpb25BY3Rpdml0eVNldHRpbmdzKHNlY3Rpb25JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldFJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eVNldHRpbmdzRmFjdG9yeSxcbiAgICAgICAgUm9sZS5TZWN0aW9uQWRtaW4sXG4gICAgICAgIFNFQ1RJT05fQUNUSVZJVFlfU0VUVElOR1NfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIHNlY3Rpb25JZFxuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgZ2V0Q2x1YkFjdGl2aXR5U2V0dGluZ3MoY2x1YklkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0UmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5U2V0dGluZ3NGYWN0b3J5LFxuICAgICAgICBSb2xlLkNsdWJBZG1pbixcbiAgICAgICAgQ0xVQl9BQ1RJVklUWV9TRVRUSU5HU19QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgY2x1YklkLFxuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgZ2V0QWN0aXZpdHlUeXBlcyhyb2xlOiBSb2xlLCBpdGVtSWQ6IHN0cmluZykge1xuICAgIHN3aXRjaCAocm9sZSkge1xuICAgICAgY2FzZSBSb2xlLkNsdWJBZG1pbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2x1YkFjdGl2aXR5VHlwZXMoaXRlbUlkKTtcbiAgICAgIGNhc2UgUm9sZS5TZWN0aW9uQWRtaW46XG4gICAgICAgIHJldHVybiB0aGlzLmdldFNlY3Rpb25BY3Rpdml0eVR5cGVzKGl0ZW1JZCk7XG4gICAgICBjYXNlIFJvbGUuVGVhbUFkbWluOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRUZWFtQWN0aXZpdHlUeXBlcyhpdGVtSWQpO1xuICAgICAgY2FzZSBSb2xlLk1lbWJlckFkbWluOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRNZW1iZXJBY3Rpdml0eVR5cGVzKGl0ZW1JZCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBpbnZhbGlkUm9sZUVycm9yO1xuICAgIH1cbiAgfVxuXG4gIGdldFRlYW1BY3Rpdml0eVJ1bGVzQXR0cmlidXRlcyh0ZWFtSWQ6IHN0cmluZywgcXVlcnlTdHJpbmc6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBzZWFyY2hBdHRyaWJ1dGVGYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9BQ1RJVklUWV9SVUxFX0FUVFJJQlVURVNfUEFUSCxcbiAgICAgICAge3RlYW1JZH0sXG4gICAgICAgIHtwYXJhbXM6IHtxOiBxdWVyeVN0cmluZ319XG4gICAgICApXG4gIH1cblxuICBnZXRUZWFtQWN0aXZpdHlSdWxlVGVhbXModGVhbUlkOiBzdHJpbmcsIHF1ZXJ5U3RyaW5nOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZ2V0Q29sbGVjdGlvbihcbiAgICAgICAgc2VhcmNoVGVhbUZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0FDVElWSVRZX1JVTEVfVEVBTVNfUEFUSCxcbiAgICAgICAge3RlYW1JZH0sXG4gICAgICAgIHtwYXJhbXM6IHtxOiBxdWVyeVN0cmluZ319XG4gICAgICApXG4gIH1cblxuICBnZXRUZWFtQWN0aXZpdHlUeXBlcyh0ZWFtSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBhY3Rpdml0eVR5cGVGYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9BQ1RJVklUWV9UWVBFU19QQVRILFxuICAgICAgICB7dGVhbUlkfSxcbiAgICAgICAge3BhcmFtczoge2xpbWl0OiAnbnVsbCd9fVxuICAgICAgKVxuICB9XG5cbiAgZ2V0TWVtYmVyQWN0aXZpdHlUeXBlcyhtZW1iZXJJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGFjdGl2aXR5VHlwZUZhY3RvcnksXG4gICAgICAgIFJvbGUuTWVtYmVyQWRtaW4sXG4gICAgICAgIE1FTUJFUl9BQ1RJVklUWV9UWVBFU19QQVRILFxuICAgICAgICB7bWVtYmVySWR9LFxuICAgICAgICB7cGFyYW1zOiB7bGltaXQ6ICdudWxsJ319XG4gICAgICApXG4gIH1cblxuICBnZXRDbHViQWN0aXZpdHlUeXBlcyhjbHViSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBhY3Rpdml0eVR5cGVGYWN0b3J5LFxuICAgICAgICBSb2xlLkNsdWJBZG1pbixcbiAgICAgICAgQ0xVQl9BQ1RJVklUWV9UWVBFU19QQVRILFxuICAgICAgICB7Y2x1YklkfSxcbiAgICAgICAge3BhcmFtczoge2xpbWl0OiAnbnVsbCd9fVxuICAgICAgKTtcbiAgfVxuXG4gIGdldFNlY3Rpb25BY3Rpdml0eVR5cGVzKHNlY3Rpb25JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGFjdGl2aXR5VHlwZUZhY3RvcnksXG4gICAgICAgIFJvbGUuU2VjdGlvbkFkbWluLFxuICAgICAgICBTRUNUSU9OX0FDVElWSVRZX1RZUEVTX1BBVEgsXG4gICAgICAgIHtzZWN0aW9uSWR9LFxuICAgICAgICB7cGFyYW1zOiB7bGltaXQ6ICdudWxsJ319XG4gICAgICApO1xuICB9XG5cbiAgdXBkYXRlQWN0aXZpdHlUeXBlKHJvbGU6IFJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLCBhY3Rpdml0eVR5cGU6IEFjdGl2aXR5VHlwZSkge1xuICAgIHN3aXRjaCAocm9sZSkge1xuICAgICAgY2FzZSBSb2xlLkNsdWJBZG1pbjpcbiAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlQ2x1YkFjdGl2aXR5VHlwZShjbHViT3JTZWN0aW9uT3JUZWFtSWQsIGFjdGl2aXR5VHlwZSk7XG4gICAgICBjYXNlIFJvbGUuU2VjdGlvbkFkbWluOlxuICAgICAgICByZXR1cm4gdGhpcy51cGRhdGVTZWN0aW9uQWN0aXZpdHlUeXBlKGNsdWJPclNlY3Rpb25PclRlYW1JZCwgYWN0aXZpdHlUeXBlKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IGludmFsaWRSb2xlRXJyb3I7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQ2x1YkFjdGl2aXR5VHlwZShjbHViSWQ6IHN0cmluZywgYWN0aXZpdHlUeXBlOiBBY3Rpdml0eVR5cGUpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAudXBkYXRlUmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5VHlwZUZhY3RvcnksXG4gICAgICAgIFJvbGUuQ2x1YkFkbWluLFxuICAgICAgICBDTFVCX0FDVElWSVRZX1RZUEVfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIGNsdWJJZCxcbiAgICAgICAgICB0eXBlSWQ6IGFjdGl2aXR5VHlwZS5pZCxcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZpdHlUeXBlLFxuICAgICAgKTtcbiAgfVxuXG4gIHVwZGF0ZVNlY3Rpb25BY3Rpdml0eVR5cGUoc2VjdGlvbklkOiBzdHJpbmcsIGFjdGl2aXR5VHlwZTogQWN0aXZpdHlUeXBlKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eVR5cGVGYWN0b3J5LFxuICAgICAgICBSb2xlLlNlY3Rpb25BZG1pbixcbiAgICAgICAgU0VDVElPTl9BQ1RJVklUWV9UWVBFX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBzZWN0aW9uSWQsXG4gICAgICAgICAgdHlwZUlkOiBhY3Rpdml0eVR5cGUuaWQsXG4gICAgICAgIH0sXG4gICAgICAgIGFjdGl2aXR5VHlwZSxcbiAgICAgICk7XG4gIH1cblxuICBnZXRUZWFtQ2FsZW5kYXJFdmVudHModGVhbUlkOiBzdHJpbmcsIHN0YXJ0RGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGVuZERhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsLCBvcGVuQWN0aXZpdHk6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIGNvbnN0IHBhcmFtczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtsaW1pdDogJ251bGwnfTtcblxuICAgIGlmIChzdGFydERhdGUpIHtcbiAgICAgIHBhcmFtc1snc2VhcmNoX3N0YXJ0X2RheSddID0gc3RhcnREYXRlO1xuICAgIH1cblxuICAgIGlmIChlbmREYXRlKSB7XG4gICAgICBwYXJhbXNbJ3NlYXJjaF9lbmRfZGF5J10gPSBlbmREYXRlO1xuICAgIH1cblxuICAgIGlmIChvcGVuQWN0aXZpdHkpIHtcbiAgICAgIHBhcmFtc1snb3Blbl9hY3Rpdml0eSddID0gJ3RydWUnO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5nZXRDb2xsZWN0aW9uKFxuICAgICAgICBldmVudEZhY3RvcnksXG4gICAgICAgIFJvbGUuVGVhbUFkbWluLFxuICAgICAgICBURUFNX0NBTEVOREFSX1BBVEgsXG4gICAgICAgIHt0ZWFtSWR9LFxuICAgICAgICB7XG4gICAgICAgICAgcGFyYW1zXG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICByZXNlbmRJbnZpdGUodGVhbUlkOiBzdHJpbmcsIGFjdGl2aXR5SWQ6IHN0cmluZywgYWN0aXZpdHlJbnZpdGVJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnBvc3RSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlJbnZpdGVGYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9BQ1RJVklUWV9JTlZJVEVfUkVTRU5EX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICB0ZWFtSWQsXG4gICAgICAgICAgYWN0aXZpdHlJZCxcbiAgICAgICAgICBhY3Rpdml0eUludml0ZUlkXG4gICAgICAgIH0sXG4gICAgICAgIHt9XG4gICAgICApO1xuICB9XG5cbiAgcmVtb3ZlTWVtYmVyT3BlbkFjdGl2aXR5KG1lbWJlcklkOiBzdHJpbmcsIGFjdGl2aXR5SWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5kZWxldGVSZXNvdXJjZShcbiAgICAgICAgUm9sZS5NZW1iZXJBZG1pbixcbiAgICAgICAgTUVNQkVSX09QRU5fQUNUSVZJVFlfUkVTUE9ORF9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgbWVtYmVySWQsXG4gICAgICAgICAgYWN0aXZpdHlJZFxuICAgICAgICB9XG4gICAgICApXG4gIH1cblxuICByZW1vdmVQdWJsaWNPcGVuQWN0aXZpdHkoYWN0aXZpdHlJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmRlbGV0ZVJlc291cmNlKFxuICAgICAgICBSb2xlLlB1YmxpYyxcbiAgICAgICAgUFVCTElDX09QRU5fQUNUSVZJVFlfUkVTUE9ORF9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgYWN0aXZpdHlJZFxuICAgICAgICB9XG4gICAgICApXG4gIH1cblxuICBzaWduVXBNZW1iZXJPcGVuQWN0aXZpdHkobWVtYmVySWQ6IHN0cmluZywgYWN0aXZpdHlJZDogc3RyaW5nLCBjb21tZW50OiBzdHJpbmcsIG9wdGlvbmFsRmVlczogQXJyYXk8c3RyaW5nPiwgcmVzcG9uc2VzOiBBcnJheTxBY3Rpdml0eVF1ZXN0aW9uUmVzcG9uc2U+LCBndWVzdHM6IEFycmF5PHsgbmFtZTogc3RyaW5nOyBjb21tZW50Pzogc3RyaW5nIH0+ID0gW10pIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAudXBkYXRlUmVzb3VyY2UoXG4gICAgICAgIG9wZW5BY3Rpdml0eUZhY3RvcnksXG4gICAgICAgIFJvbGUuTWVtYmVyQWRtaW4sXG4gICAgICAgIE1FTUJFUl9PUEVOX0FDVElWSVRZX1JFU1BPTkRfV0lUSF9EQVRBX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBtZW1iZXJJZCxcbiAgICAgICAgICBhY3Rpdml0eUlkXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjb21tZW50LFxuICAgICAgICAgIG9wdGlvbmFsX2ZlZXM6IG9wdGlvbmFsRmVlcyxcbiAgICAgICAgICByZXNwb25zZXMsXG4gICAgICAgICAgZ3Vlc3RzXG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBzaWduVXBQdWJsaWNPcGVuQWN0aXZpdHkoYWN0aXZpdHlJZDogc3RyaW5nLCBjb21tZW50OiBzdHJpbmcsIG9wdGlvbmFsRmVlczogQXJyYXk8c3RyaW5nPiwgcmVzcG9uc2VzOiBBcnJheTxBY3Rpdml0eVF1ZXN0aW9uUmVzcG9uc2U+LCBndWVzdHM6IEFycmF5PHsgbmFtZTogc3RyaW5nOyBjb21tZW50Pzogc3RyaW5nIH0+ID0gW10pIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAudXBkYXRlUmVzb3VyY2UoXG4gICAgICAgIG9wZW5BY3Rpdml0eUZhY3RvcnksXG4gICAgICAgIFJvbGUuUHVibGljLFxuICAgICAgICBQVUJMSUNfT1BFTl9BQ1RJVklUWV9SRVNQT05EX1dJVEhfREFUQV9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgYWN0aXZpdHlJZFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgY29tbWVudCxcbiAgICAgICAgICBvcHRpb25hbF9mZWVzOiBvcHRpb25hbEZlZXMsXG4gICAgICAgICAgcmVzcG9uc2VzLFxuICAgICAgICAgIGd1ZXN0c1xuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgdXBkYXRlTWVtYmVyQWN0aXZpdHkobWVtYmVySWQ6IHN0cmluZywgYWN0aXZpdHlJbnZpdGVJZDogc3RyaW5nLCBhY3Rpdml0eUludml0ZTogdW5rbm93bikge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC51cGRhdGVSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlJbnZpdGVGYWN0b3J5LFxuICAgICAgICBSb2xlLk1lbWJlckFkbWluLFxuICAgICAgICBNRU1CRVJfQUNUSVZJVFlfSU5WSVRFX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICBtZW1iZXJJZCxcbiAgICAgICAgICBhY3Rpdml0eUludml0ZUlkXG4gICAgICAgIH0sXG4gICAgICAgIGFjdGl2aXR5SW52aXRlXG4gICAgICApO1xuICB9XG5cbiAgdXBkYXRlUHVibGljTWVtYmVyQWN0aXZpdHlJbnZpdGUoYWN0aXZpdHlJbnZpdGVJZDogc3RyaW5nLCBhY3Rpdml0eUludml0ZTogdW5rbm93bikge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC51cGRhdGVSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlJbnZpdGVGYWN0b3J5LFxuICAgICAgICBSb2xlLlB1YmxpYyxcbiAgICAgICAgUFVCTElDX01FTUJFUl9BQ1RJVklUWV9JTlZJVEVfUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIGFjdGl2aXR5SW52aXRlSWRcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZpdHlJbnZpdGVcbiAgICAgICk7XG4gIH1cblxuICB1cGRhdGVQdWJsaWNBY3Rpdml0eUludml0ZShpZDogc3RyaW5nLCB0b2tlbjogc3RyaW5nLCBhY3Rpdml0eUludml0ZTogdW5rbm93bikge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC51cGRhdGVSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlJbnZpdGVGYWN0b3J5LFxuICAgICAgICBSb2xlLlB1YmxpYyxcbiAgICAgICAgUFVCTElDX0FDVElWSVRZX0lOVklURV9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgaWQsXG4gICAgICAgICAgdG9rZW5cbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZpdHlJbnZpdGVcbiAgICAgICk7XG4gIH1cblxuICB1cGRhdGVQdWJsaWNPcGVuQWN0aXZpdHlJbnZpdGUoaWQ6IHN0cmluZywgYWN0aXZpdHlJbnZpdGU6IHVua25vd24pIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAudXBkYXRlUmVzb3VyY2UoXG4gICAgICAgIGFjdGl2aXR5SW52aXRlRmFjdG9yeSxcbiAgICAgICAgUm9sZS5QdWJsaWMsXG4gICAgICAgIFBVQkxJQ19PUEVOX0FDVElWSVRZX0lOVklURV9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgaWRcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZpdHlJbnZpdGVcbiAgICAgICk7XG4gIH1cblxuICBnZXRQdWJsaWNPcGVuQWN0aXZpdHlHdWVzdHMoYWN0aXZpdHlJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmdldENvbGxlY3Rpb24oXG4gICAgICAgIGd1ZXN0RmFjdG9yeSxcbiAgICAgICAgUm9sZS5QdWJsaWMsXG4gICAgICAgIFBVQkxJQ19PUEVOX0FDVElWSVRZX0dVRVNUX0xJU1RfUEFUSCxcbiAgICAgICAgeyBhY3Rpdml0eUlkIH0sXG4gICAgICAgIHsgcGFyYW1zOiB7IGxpbWl0OiAnbnVsbCcgfSB9XG4gICAgICApO1xuICB9XG5cbiAgYWRkUHVibGljQWN0aXZpdHlHdWVzdEJ5VG9rZW4oaWQ6IHN0cmluZywgdG9rZW46IHN0cmluZywgZGF0YTogeyBuYW1lOiBzdHJpbmc7IGNvbW1lbnQ/OiBzdHJpbmcgfSkge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5wb3N0UmVzb3VyY2UoZ3Vlc3RGYWN0b3J5LCBSb2xlLlB1YmxpYywgUFVCTElDX0FDVElWSVRZX0lOVklURV9HVUVTVF9MSVNUX1BBVEgsIHsgaWQsIHRva2VuIH0sIGRhdGEpO1xuICB9XG5cbiAgdXBkYXRlUHVibGljQWN0aXZpdHlHdWVzdEJ5VG9rZW4oaWQ6IHN0cmluZywgdG9rZW46IHN0cmluZywgZ3Vlc3RJZDogc3RyaW5nLCBkYXRhOiB7IG5hbWU6IHN0cmluZzsgY29tbWVudD86IHN0cmluZyB9KSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKGd1ZXN0RmFjdG9yeSwgUm9sZS5QdWJsaWMsIFBVQkxJQ19BQ1RJVklUWV9JTlZJVEVfR1VFU1RfREVUQUlMX1BBVEgsIHsgaWQsIHRva2VuLCBndWVzdElkIH0sIGRhdGEpO1xuICB9XG5cbiAgZGVsZXRlUHVibGljQWN0aXZpdHlHdWVzdEJ5VG9rZW4oaWQ6IHN0cmluZywgdG9rZW46IHN0cmluZywgZ3Vlc3RJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLmRlbGV0ZVJlc291cmNlKFJvbGUuUHVibGljLCBQVUJMSUNfQUNUSVZJVFlfSU5WSVRFX0dVRVNUX0RFVEFJTF9QQVRILCB7IGlkLCB0b2tlbiwgZ3Vlc3RJZCB9KTtcbiAgfVxuXG4gIGFkZFB1YmxpY09wZW5BY3Rpdml0eUd1ZXN0KGFjdGl2aXR5SWQ6IHN0cmluZywgZGF0YTogeyBuYW1lOiBzdHJpbmc7IGNvbW1lbnQ/OiBzdHJpbmcgfSkge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5wb3N0UmVzb3VyY2UoZ3Vlc3RGYWN0b3J5LCBSb2xlLlB1YmxpYywgUFVCTElDX09QRU5fQUNUSVZJVFlfR1VFU1RfTElTVF9QQVRILCB7IGFjdGl2aXR5SWQgfSwgZGF0YSk7XG4gIH1cblxuICB1cGRhdGVQdWJsaWNPcGVuQWN0aXZpdHlHdWVzdChhY3Rpdml0eUlkOiBzdHJpbmcsIGd1ZXN0SWQ6IHN0cmluZywgZGF0YTogeyBuYW1lOiBzdHJpbmc7IGNvbW1lbnQ/OiBzdHJpbmcgfSkge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC51cGRhdGVSZXNvdXJjZShndWVzdEZhY3RvcnksIFJvbGUuUHVibGljLCBQVUJMSUNfT1BFTl9BQ1RJVklUWV9HVUVTVF9ERVRBSUxfUEFUSCwgeyBhY3Rpdml0eUlkLCBndWVzdElkIH0sIGRhdGEpO1xuICB9XG5cbiAgZGVsZXRlUHVibGljT3BlbkFjdGl2aXR5R3Vlc3QoYWN0aXZpdHlJZDogc3RyaW5nLCBndWVzdElkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAuZGVsZXRlUmVzb3VyY2UoUm9sZS5QdWJsaWMsIFBVQkxJQ19PUEVOX0FDVElWSVRZX0dVRVNUX0RFVEFJTF9QQVRILCB7IGFjdGl2aXR5SWQsIGd1ZXN0SWQgfSk7XG4gIH1cblxuICB1cGRhdGVUZWFtQWN0aXZpdHkodGVhbUlkOiBzdHJpbmcsIGFjdGl2aXR5OiBBY3Rpdml0eSkge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC51cGRhdGVSZXNvdXJjZShcbiAgICAgICAgYWN0aXZpdHlGYWN0b3J5LFxuICAgICAgICBSb2xlLlRlYW1BZG1pbixcbiAgICAgICAgVEVBTV9BQ1RJVklUWV9QQVRILFxuICAgICAgICB7XG4gICAgICAgICAgdGVhbUlkLFxuICAgICAgICAgIGlkOiBhY3Rpdml0eS5pZFxuICAgICAgICB9LFxuICAgICAgICB0aGlzLnJlbW92ZVVudXNlZEFjdGl2aXR5RmllbGRzKHsuLi5hY3Rpdml0eX0pXG4gICAgICApO1xuICB9XG5cbiAgdXBkYXRlVGVhbUFjdGl2aXR5UXVlc3Rpb24odGVhbUlkOiBzdHJpbmcsIHF1ZXN0aW9uOiBBY3Rpdml0eVF1ZXN0aW9uKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnVwZGF0ZVJlc291cmNlKFxuICAgICAgICBhY3Rpdml0eVF1ZXN0aW9uRmFjdG9yeSxcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQUNUSVZJVFlfUVVFU1RJT05fUEFUSCxcbiAgICAgICAge1xuICAgICAgICAgIHRlYW1JZCxcbiAgICAgICAgICBpZDogcXVlc3Rpb24uaWRcbiAgICAgICAgfSxcbiAgICAgICAgdGhpcy5yZW1vdmVVbnVzZWRBY3Rpdml0eVF1ZXN0aW9uRmllbGRzKHsuLi5xdWVzdGlvbn0pXG4gICAgICApXG4gIH1cblxuICB1cGRhdGVUZWFtQWN0aXZpdHlJbnZpdGUodGVhbUlkOiBzdHJpbmcsIGFjdGl2aXR5SWQ6IHN0cmluZywgYWN0aXZpdHlJbnZpdGVJZDogc3RyaW5nLCBhY3Rpdml0eUludml0ZTogTWVtYmVyQWN0aXZpdHlJbnZpdGUpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlXG4gICAgICAudXBkYXRlUmVzb3VyY2UoXG4gICAgICAgIG1lbWJlckFjdGl2aXR5SW52aXRlRmFjdG9yeSxcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQUNUSVZJVFlfSU5WSVRFX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICB0ZWFtSWQsXG4gICAgICAgICAgYWN0aXZpdHlJZCxcbiAgICAgICAgICBhY3Rpdml0eUludml0ZUlkXG4gICAgICAgIH0sXG4gICAgICAgIGFjdGl2aXR5SW52aXRlXG4gICAgICApXG4gIH1cblxuICB1cGRhdGVUZWFtQWN0aXZpdHlQYXJ0aWNpcGFudHModGVhbUlkOiBzdHJpbmcsIGFjdGl2aXR5SWQ6IHN0cmluZywgbWVtYmVyczogQXJyYXk8c3RyaW5nPikge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5wb3N0UmVzb3VyY2UoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgfSxcbiAgICAgICAgUm9sZS5UZWFtQWRtaW4sXG4gICAgICAgIFRFQU1fQUNUSVZJVFlfUEFSVElDSVBBTlRTX1BBVEgsXG4gICAgICAgIHtcbiAgICAgICAgICB0ZWFtSWQsXG4gICAgICAgICAgYWN0aXZpdHlJZFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbWVtYmVyc1xuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPcGVuQWN0aXZpdHlEYXRlUGFyYW1zKHN0YXJ0RGF0ZTogc3RyaW5nIHwgbnVsbCwgZW5kRGF0ZTogc3RyaW5nIHwgbnVsbCwgYWxsOiBib29sZWFuID0gZmFsc2UpOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSB7XG4gICAgbGV0IHBhcmFtczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgICdhbGwnOiBhbGwgPyAndHJ1ZScgOiAnZmFsc2UnXG4gICAgfTtcblxuICAgIGlmIChzdGFydERhdGUpIHtcbiAgICAgIHBhcmFtc1snc3RhcnRfZGF0ZSddID0gc3RhcnREYXRlIGFzIHN0cmluZztcbiAgICB9XG5cbiAgICBpZiAoZW5kRGF0ZSkge1xuICAgICAgcGFyYW1zWydlbmRfZGF0ZSddID0gZW5kRGF0ZSBhcyBzdHJpbmc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3BlbkFjdGl2aXR5U2VhcmNoUGFyYW1zKG9wZW5BY3Rpdml0eVNlYXJjaFBhcmFtczogT3BlbkFjdGl2aXR5U2VhcmNoUGFyYW1zSW50ZXJmYWNlKToge1trZXk6IHN0cmluZ106IHN0cmluZ30ge1xuICAgIGNvbnN0IHBhcmFtczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgIGVuZF9kYXRlOiBvcGVuQWN0aXZpdHlTZWFyY2hQYXJhbXMuZW5kRGF0ZSxcbiAgICAgIGxpbWl0OiAnbnVsbCcsXG4gICAgICBzdGFydF9kYXRlOiBvcGVuQWN0aXZpdHlTZWFyY2hQYXJhbXMuc3RhcnREYXRlXG4gICAgfTtcblxuICAgIGlmIChvcGVuQWN0aXZpdHlTZWFyY2hQYXJhbXMuYWN0aXZpdHlUeXBlSWQpIHtcbiAgICAgIHBhcmFtc1snYWN0aXZpdHlfdHlwZV9pZCddID0gb3BlbkFjdGl2aXR5U2VhcmNoUGFyYW1zLmFjdGl2aXR5VHlwZUlkO1xuICAgIH1cblxuICAgIGlmIChvcGVuQWN0aXZpdHlTZWFyY2hQYXJhbXMubG9jYXRpb25JZCkge1xuICAgICAgcGFyYW1zWydsb2NhdGlvbl9pZCddID0gb3BlbkFjdGl2aXR5U2VhcmNoUGFyYW1zLmxvY2F0aW9uSWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlVW51c2VkQWN0aXZpdHlGaWVsZHMoYWN0aXZpdHk6IFBhcnRpYWw8QWN0aXZpdHk+KTogUGFydGlhbDxBY3Rpdml0eT4ge1xuICAgIGlmICh0eXBlb2YgYWN0aXZpdHkuaWQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBkZWxldGUgYWN0aXZpdHkuaWQ7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBhY3Rpdml0eS5maWxlICE9PSAndW5kZWZpbmVkJyAmJiAhYWN0aXZpdHkuZmlsZSkge1xuICAgICAgZGVsZXRlIGFjdGl2aXR5LmZpbGU7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBhY3Rpdml0eS5pbnZpdGVfbGFzdF9yZXNwb25zZV9kYXRlICE9PSAndW5kZWZpbmVkJyAmJiAhYWN0aXZpdHkuaW52aXRlX2xhc3RfcmVzcG9uc2VfZGF0ZSkge1xuICAgICAgZGVsZXRlIGFjdGl2aXR5Lmludml0ZV9sYXN0X3Jlc3BvbnNlX2RhdGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjdGl2aXR5O1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVVbnVzZWRBY3Rpdml0eVF1ZXN0aW9uRmllbGRzKHF1ZXN0aW9uOiBQYXJ0aWFsPEFjdGl2aXR5UXVlc3Rpb24+KTogUGFydGlhbDxBY3Rpdml0eVF1ZXN0aW9uPiB7XG4gICAgaWYgKHR5cGVvZiBxdWVzdGlvbi5pZCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGRlbGV0ZSBxdWVzdGlvbi5pZDtcbiAgICB9XG4gICAgZGVsZXRlIHF1ZXN0aW9uLmNsdWJfaWQ7XG4gICAgZGVsZXRlIHF1ZXN0aW9uLnNlY3Rpb25faWQ7XG4gICAgcmV0dXJuIHF1ZXN0aW9uO1xuICB9XG59XG4iXX0=