@posiwise/common-services 0.1.78 → 0.1.79

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.
@@ -168,6 +168,12 @@ export class AuthService {
168
168
  clearTokens() {
169
169
  return this.secureTokenStorage.clearTokens();
170
170
  }
171
+ /**
172
+ * Remove only impersonation tokens (not all tokens)
173
+ */
174
+ removeImpersonationTokens() {
175
+ return this.secureTokenStorage.removeImpersonatedTokens();
176
+ }
171
177
  getToken$() {
172
178
  return this.secureTokenStorage.getToken$();
173
179
  }
@@ -313,4 +319,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
313
319
  type: Inject,
314
320
  args: [DOCUMENT]
315
321
  }] }] });
316
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24tc2VydmljZXMvc3JjL2xpYi9hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUNILHVCQUF1QixFQUN2Qiw0QkFBNEIsRUFDNUIsMkJBQTJCLEVBQzNCLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsU0FBUyxFQUNaLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQztBQUcvQixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7O0FBRzdDLE1BQU0sT0FBTyxX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UyxJQUFJLElBQUksRUFBRSxRQUFRLEtBQUssSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO2dCQUMvRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQWpXUSxXQUFXLHNSQXFCUixRQUFRO21IQXJCWCxXQUFXOzs0RkFBWCxXQUFXO2tCQUR2QixVQUFVOzswQkFzQkYsTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWNvbmZpZy1zZXJ2aWNlJztcbmltcG9ydCB7XG4gICAgQ0FQVENIQV9WQUxJREFUSU9OX1BBVEgsXG4gICAgTkVXU0xFVFRFUl9DT05GSVJNQVRJT05fUEFUSCxcbiAgICBORVdTTEVUVEVSX1VOU1VCU0NSSUJFX1BBVEgsXG4gICAgU09DSUFMX0xPR0lOX1BBVEgsXG4gICAgVE9LRU5fSEVBREVSX0tFWSxcbiAgICBUT0tFTl9LRVlcbn0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHN3YWwgZnJvbSAnc3dlZXRhbGVydDInO1xuXG5pbXBvcnQgeyBTaWduVXBWYWx1ZXMgfSBmcm9tICcuL2NvbW1vbi1zZXJ2aWNlcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSW50ZWdyYXRpb25zQXBpSHR0cFNlcnZpY2UgfSBmcm9tICcuL2ludGVncmF0aW9ucy1hcGktaHR0cC5zZXJ2aWNlJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZSB9IGZyb20gJy4vbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IE1haW5BcGlIdHRwU2VydmljZSB9IGZyb20gJy4vbWFpbi1hcGktaHR0cC5zZXJ2aWNlJztcbmltcG9ydCB7IFNlY3VyZVRva2VuU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL3NlY3VyZS10b2tlbi1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3VzdG9tVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi91c2VyLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1TdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHR3aXR0ZXJFbmRwb2ludCA9ICcvdHdpdHRlcic7XG5cbiAgICBhdXRoX3Rva2VuOiBzdHJpbmc7XG4gICAgaGVhZGVyX2tleSA9ICdicm93c2VyJztcbiAgICBwbGF0Zm9ybSA9ICcnO1xuXG4gICAgcGxhdGZvcm0kID0gdGhpcy5wbGF0Zm9ybVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICBpc1VzZXJQZXJzb25hdGVkOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxTdG9yYWdlOiBMb2NhbFN0b3JhZ2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc2VjdXJlVG9rZW5TdG9yYWdlOiBTZWN1cmVUb2tlblN0b3JhZ2VTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IE1haW5BcGlIdHRwU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdG9hc3RyOiBDdXN0b21Ub2FzdFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbnRlZ3JhdGlvbnNBcGk6IEludGVncmF0aW9uc0FwaUh0dHBTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50OiBEb2N1bWVudFxuICAgICkge1xuICAgICAgICAvLyBTZXQgSGVhZGVyIEtleVxuICAgICAgICB0aGlzLnNldEhlYWRlcktleSgpO1xuICAgIH1cblxuICAgIGdldFRva2VuKCkge1xuICAgICAgICBpZiAodGhpcy5zZWN1cmVUb2tlblN0b3JhZ2UuZ2V0SW1wZXJzb25hdGVkVG9rZW4oKSkge1xuICAgICAgICAgICAgdGhpcy5pc1VzZXJQZXJzb25hdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlY3VyZVRva2VuU3RvcmFnZS5nZXRJbXBlcnNvbmF0ZWRUb2tlbigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnNlY3VyZVRva2VuU3RvcmFnZS5nZXRQaG9uZWdhcFRva2VuKCkpIHtcbiAgICAgICAgICAgIHRoaXMuaXNVc2VyUGVyc29uYXRlZCA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWN1cmVUb2tlblN0b3JhZ2UuZ2V0UGhvbmVnYXBUb2tlbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc1VzZXJQZXJzb25hdGVkID0gZmFsc2U7XG4gICAgICAgIHJldHVybiB0aGlzLnNlY3VyZVRva2VuU3RvcmFnZS5nZXRUb2tlbigpO1xuICAgIH1cblxuICAgIGdldEltcGVyc29uYXRlZFRva2VuKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5zZWN1cmVUb2tlblN0b3JhZ2UuZ2V0SW1wZXJzb25hdGVkVG9rZW4oKSB8fFxuICAgICAgICAgICAgdGhpcy5zZWN1cmVUb2tlblN0b3JhZ2UuZ2V0UGhvbmVnYXBUb2tlbigpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgc2V0SGVhZGVyS2V5KCkge1xuICAgICAgICAvLyBNb2JpbGU6IGFwcFxuICAgICAgICAvLyBXZWJzaXRlOiBicm93c2VyXG4gICAgICAgIHRoaXMuZ2V0SGVhZGVyS2V5KCkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWFkZXJfa2V5ID0gJ2Jyb3dzZXInO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYXRmb3JtU3ViamVjdC5uZXh0KCdicm93c2VyJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdhcHAnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyX2tleSA9IGtleTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGF0Zm9ybVN1YmplY3QubmV4dChrZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyX2tleSA9ICdicm93c2VyJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2lnblVwVXNlcih2YWx1ZXM6IFNpZ25VcFZhbHVlcykge1xuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2NvbmZpcm1hdGlvbl9wYXRoJywgdmFsdWVzLmNvbmZpcm1hdGlvbl9wYXRoKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdjb250YWN0X25hbWUnLCB2YWx1ZXMuY29udGFjdF9uYW1lKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdlbWFpbCcsIHZhbHVlcy5lbWFpbCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgndXNlcl9zaWdudXBfdXJsJywgdmFsdWVzLnVzZXJfc2lnbnVwX3VybCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnb3JnYW5pc2F0aW9uJywgdmFsdWVzLm9yZ2FuaXNhdGlvbik7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgncHJvZHVjdF9pZCcsIHZhbHVlcy5wcm9kdWN0X2lkLnRvU3RyaW5nKCkpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3VuaXRzJywgdmFsdWVzLnVuaXRzLnRvU3RyaW5nKCkpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3N0cmlwZV90b2tlbicsIHZhbHVlcy5zdHJpcGVfdG9rZW4pO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ21hc3Rlcl9zdWJzY3JpcHRpb25faWQnLCB2YWx1ZXMubWFzdGVyX3N1YnNjcmlwdGlvbl9pZC50b1N0cmluZygpKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoJ3NpZ251cHMnLCBmb3JtRGF0YSk7XG4gICAgfVxuXG4gICAgdHJpYWxTaWduVXAoZGF0YTogb2JqZWN0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCgnc2lnbnVwcy90cmlhbF9zaWdudXAnLCBkYXRhKTtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZUVtYWlsKGVtYWlsOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgZW1haWxcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldFdpdGhQYXJhbXMoJ3VzZXJzL3ZhbGlkYXRlX2VtYWlsJywgcGFyYW1zKTtcbiAgICB9XG5cbiAgICBmb3Jnb3RQYXNzd29yZChlbWFpbDogc3RyaW5nLCByZXNldF9wYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgZW1haWwsXG4gICAgICAgICAgICByZXNldF9wYXRoXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXRXaXRoUGFyYW1zKCdwYXNzd29yZCcsIHBhcmFtcyk7XG4gICAgfVxuXG4gICAgcmVzZXRQYXNzd29yZChwYXNzd29yZDogc3RyaW5nLCBjb25maXJtX3Bhc3N3b3JkOiBzdHJpbmcsIHBhc3N3b3JkX3Jlc2V0X3Rva2VuOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdwYXNzd29yZCcsIHBhc3N3b3JkKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdwYXNzd29yZF9jb25maXJtYXRpb24nLCBjb25maXJtX3Bhc3N3b3JkKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdyZXNldF9wYXNzd29yZF90b2tlbicsIHBhc3N3b3JkX3Jlc2V0X3Rva2VuKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnB1dCgncGFzc3dvcmQnLCBmb3JtRGF0YSk7XG4gICAgfVxuXG4gICAgaGVhZGVyKCkge1xuICAgICAgICBpZiAodGhpcy5oZWFkZXJfa2V5ID09PSAnYnJvd3NlcicpIHtcbiAgICAgICAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICAgICAgICAgIFtUT0tFTl9IRUFERVJfS0VZXTogYnRvYSh0aGlzLmF1dGhfdG9rZW4pXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIGhlYWRlcnM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAgICAgICAnWC1QaG9uZWdhcC1Ub2tlbic6IGJ0b2EodGhpcy5hdXRoX3Rva2VuKVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaGVhZGVycztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEhlYWRlcktleSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxTdG9yYWdlLmdldEl0ZW0kKCdwbGF0Zm9ybScpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UGxhdGZvcm0oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtJCgncGxhdGZvcm0nKTtcbiAgICB9XG5cbiAgICBzaWduSW5Vc2VyKGVtYWlsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdlbWFpbCcsIGVtYWlsKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdwYXNzd29yZCcsIHBhc3N3b3JkKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoJ3Nlc3Npb24nLCBmb3JtRGF0YSk7XG4gICAgfVxuXG4gICAgc2lnbkluVXNlcldpdGgyRmEoZW1haWw6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgZ29vZ2xlX2NvZGUpIHtcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdlbWFpbCcsIGVtYWlsKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdwYXNzd29yZCcsIHBhc3N3b3JkKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdnb29nbGVfY29kZScsIGdvb2dsZV9jb2RlKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoJ3Nlc3Npb24nLCBmb3JtRGF0YSk7XG4gICAgfVxuXG4gICAgc3RvcmVUb2tlbih0b2tlbjogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlY3VyZVRva2VuU3RvcmFnZS5zdG9yZVRva2VuKHRva2VuKTtcbiAgICB9XG5cbiAgICBzdG9yZVBsYXRmb3JtKHBsYXQ6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSQoJ3BsYXRmb3JtJywgcGxhdCk7XG4gICAgfVxuXG4gICAgbG9nb3V0KCkge1xuICAgICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICAgICAgaGVhZGVyczogdGhpcy5oZWFkZXIoKVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLmhlYWRlcl9rZXkgIT09ICdicm93c2VyJykge1xuICAgICAgICAgICAgb3B0aW9uc1sncGFyYW1zJ10gPSB7XG4gICAgICAgICAgICAgICAgcGhvbmVnYXA6IHRydWVcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDbGVhciBhbGwgdG9rZW5zIHNlY3VyZWx5XG4gICAgICAgIHRoaXMuc2VjdXJlVG9rZW5TdG9yYWdlLmNsZWFyVG9rZW5zKCkuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoJ3Nlc3Npb24nLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhciBhbGwgYXV0aGVudGljYXRpb24gdG9rZW5zXG4gICAgICovXG4gICAgY2xlYXJUb2tlbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlY3VyZVRva2VuU3RvcmFnZS5jbGVhclRva2VucygpO1xuICAgIH1cblxuICAgIGdldFRva2VuJCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VjdXJlVG9rZW5TdG9yYWdlLmdldFRva2VuJCgpO1xuICAgIH1cblxuICAgIGdldE5ld3NsZXR0ZXJTdWJzY3JpcHRpb24odG9rZW46IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHtORVdTTEVUVEVSX0NPTkZJUk1BVElPTl9QQVRIfT90b2tlbj0ke3Rva2VufWApO1xuICAgIH1cblxuICAgIHVuc3Vic2NyaWJlTmV3c2xldHRlcih0b2tlbjogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke05FV1NMRVRURVJfVU5TVUJTQ1JJQkVfUEFUSH0/dG9rZW49JHt0b2tlbn1gKTtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZVJlQ2FwdGNoYSh0b2tlbjogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke0NBUFRDSEFfVkFMSURBVElPTl9QQVRIfT0ke3Rva2VufWApO1xuICAgIH1cblxuICAgIHNvY2lhbExvZ2luKGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFNPQ0lBTF9MT0dJTl9QQVRILCBkYXRhKTtcbiAgICB9XG5cbiAgICB0d2l0dGVyTG9naW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMudHdpdHRlckVuZHBvaW50fS9nZXRfYXV0aG9yaXplX3VybGApO1xuICAgIH1cblxuICAgIHR3aXR0ZXJBdXRoQ2FsbGJhY2soZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50d2l0dGVyRW5kcG9pbnR9L2F1dGhvcml6YXRpb25fY2FsbGJhY2tgLCBkYXRhKTtcbiAgICB9XG5cbiAgICBtaWNyb3NvZnRMb2dpbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYG1pY3Jvc29mdC9nZXRfYXV0aG9yaXplX3VybGApO1xuICAgIH1cblxuICAgIGNvZ25pdG9Mb2dpbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYGNvZ25pdG8vZ2V0X2F1dGhvcml6ZV91cmxgKTtcbiAgICB9XG5cbiAgICBtaWNyb3NvZnRBdXRoQ2FsbGJhY2soZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYG1pY3Jvc29mdC9hdXRob3JpemF0aW9uX2NhbGxiYWNrYCwgZGF0YSk7XG4gICAgfVxuXG4gICAgZ29vZ2xlTG9naW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGBnb29nbGUvZ2V0X2F1dGhvcml6ZV91cmxgKTtcbiAgICB9XG5cbiAgICBnb29nbGVBdXRoQ2FsbGJhY2soZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYGdvb2dsZS9hdXRob3JpemF0aW9uX2NhbGxiYWNrYCwgZGF0YSk7XG4gICAgfVxuXG4gICAgZmFjZWJvb2tMb2dpbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYGZhY2Vib29rL2dldF9hdXRob3JpemVfdXJsYCk7XG4gICAgfVxuXG4gICAgZmFjZWJvb2tBdXRoQ2FsbGJhY2soZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYGZhY2Vib29rL2F1dGhvcml6YXRpb25fY2FsbGJhY2tgLCBkYXRhKTtcbiAgICB9XG5cbiAgICBhcHBsZUxvZ2luKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChgYXBwbGUvZ2V0X2F1dGhvcml6ZV91cmxgKTtcbiAgICB9XG5cbiAgICBhcHBsZUF1dGhDYWxsYmFjayhkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgYXBwbGUvYXV0aG9yaXphdGlvbl9jYWxsYmFja2AsIGRhdGEpO1xuICAgIH1cblxuICAgIGNvZ25pdG9BdXRoQ2FsbGJhY2soZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYGNvZ25pdG8vYXV0aG9yaXphdGlvbl9jYWxsYmFja2AsIGRhdGEpO1xuICAgIH1cblxuICAgIGxpbmtlZGluTG9naW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuYXBwQ29uZmlnJC5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKGNvbmZpZyA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXG4gICAgICAgICAgICAgICAgICAgIGAvbGlua2VkaW4vZ2V0X2F1dGhvcml6ZV91cmw/cmVkaXJlY3RfdXJsPSR7Y29uZmlnWydsaW5rcyddLmZyb250ZW5kX2xpbmt9L2xpbmtlZGluLWNvbmZpcm1hdGlvbmBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBsaW5rZWRJbkF1dGhDYWxsYmFjayhkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCgnbGlua2VkaW4vYXV0aG9yaXphdGlvbl9jYWxsYmFjaycsIGRhdGEpO1xuICAgIH1cblxuICAgIHBvc3RMb2dpbihyZXNwb25zZSkge1xuICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtJCgncHJvZHVjdF9pZCcpLnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnNldEhlYWRlcktleSgpO1xuICAgICAgICAvLyB0aGlzLnNldFBsYXRmb3JtKCk7IGNhbGwgaXQgZnJvbSBjbG91ZG9saXZlIHJlcG8uXG5cbiAgICAgICAgLy8gU2F2ZXMgdGhlIHRva2VuIGludG8gdGhlIGxvY2FsU3RvcmFnZSBhbmQgZmV0Y2hlcyB0aGUgdXNlciBpbmZvcm1hdGlvblxuICAgICAgICBjb25zdCBzZXF1ZW5jZSQgPSB0aGlzLnN0b3JlVG9rZW4ocmVzcG9uc2VbVE9LRU5fS0VZXSkucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudXNlclNlcnZpY2UuZ2V0VXNlckluZm8oKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgc2VxdWVuY2UkLnN1YnNjcmliZShyZXNwID0+IHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCduYW1lJywgcmVzcC5maXJzdF9uYW1lKTtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnaG9tZSddKTtcbiAgICAgICAgICAgIGlmICgkKCcuY2MtZGlzbWlzcycpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAkKCcuY2MtZGlzbWlzcycpWzBdLmNsaWNrKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpbXBlcnNvbmF0ZVVzZXIoZGF0YTogeyBlbWFpbDogc3RyaW5nOyBzdWJzY3JpcHRpb25faWQ6IG51bWJlcjsgcGhvbmVnYXA/OiBib29sZWFuIH0pIHtcbiAgICAgICAgaWYgKCFkYXRhLnBob25lZ2FwKSB7XG4gICAgICAgICAgICBkZWxldGUgZGF0YS5waG9uZWdhcDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCgnL3Nlc3Npb24vaW1wZXJzb25hdGVfdXNlcicsIGRhdGEpLnBpcGUoXG4gICAgICAgICAgICBtYXAoeCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHg/LmF1dGhfdG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWN1cmVUb2tlblN0b3JhZ2Uuc3RvcmVJbXBlcnNvbmF0ZWRUb2tlbih4LmF1dGhfdG9rZW4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoeD8ucGhvbmVnYXBfdG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWN1cmVUb2tlblN0b3JhZ2Uuc3RvcmVQaG9uZWdhcFRva2VuKHgucGhvbmVnYXBfdG9rZW4pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB4O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwb3N0U29jaWFsTG9naW4ocmVzcG9uc2UpIHtcbiAgICAgICAgY29uc3QgYWxyZWFkeVNpZ25lZCA9ICEhcmVzcG9uc2VbVE9LRU5fS0VZXTtcbiAgICAgICAgY29uc3QgaXNOZXdTaWduVXAgPSAhIXJlc3BvbnNlLnN1YnNjcmlwdGlvbjtcblxuICAgICAgICBpZiAoaXNOZXdTaWduVXApIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnY29uZmlybWF0aW9uJ10sIHtcbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICByZWY6IHJlc3BvbnNlLnJlZmVyZW5jZV9udW1iZXIsXG4gICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbjogcmVzcG9uc2Uuc3Vic2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICB1c2VyczogcmVzcG9uc2UudXNlcnNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChhbHJlYWR5U2lnbmVkKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlVG9rZW4ocmVzcG9uc2VbVE9LRU5fS0VZXSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnaG9tZSddKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yOiBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyLnNob3dUb2FzdChlcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzd2FsLmZpcmUoe1xuICAgICAgICAgICAgICAgIHRvYXN0OiB0cnVlLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYm90dG9tJyxcbiAgICAgICAgICAgICAgICBodG1sOiBgPHN0cm9uZyBjbGFzcz1cInRleHQtZGFuZ2VyXCI+ICR7cmVzcG9uc2UuZXJyb3IubWVzc2FnZX08L3N0cm9uZz5gLFxuICAgICAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsXG4gICAgICAgICAgICAgICAgcmV2ZXJzZUJ1dHRvbnM6IHRydWUsXG4gICAgICAgICAgICAgICAgaWNvbjogJ2Vycm9yJ1xuICAgICAgICAgICAgfSkudGhlbihyZXAgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXAudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydyZWdpc3RlciddKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZ2lzdGVyVG9rZW5MaXN0ZW5lcigpIHtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3N0b3JhZ2UnLCBkYXRhID0+IHtcbiAgICAgICAgICAgIC8vIGxvZ3Mgb3V0IHRoZSBvdGhlciB0YWJzIHdoZW4gdGhlIHRva2VuIGlzIGNoYW5nZWQuXG4gICAgICAgICAgICAvLyB3ZSBhc3N1bWUgdGhhdCB0b2tlbiBkb2Vzbid0IHJlZnJlc2ggYW5kIGJhY2tlbmQgdXBkYXRlcyB0aGUgZXhwaXJ5IHRpbWVcbiAgICAgICAgICAgIGlmIChkYXRhPy5rZXkgPT09IFRPS0VOX0tFWSAmJiBkYXRhPy5vbGRWYWx1ZSAhPT0gZGF0YT8ubmV3VmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
322
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24tc2VydmljZXMvc3JjL2xpYi9hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUNILHVCQUF1QixFQUN2Qiw0QkFBNEIsRUFDNUIsMkJBQTJCLEVBQzNCLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsU0FBUyxFQUNaLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQztBQUcvQixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7O0FBRzdDLE1BQU0sT0FBTyxX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QUFTLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDdEMscURBQXFEO1lBQ3JELDJFQUEyRTtZQUMzRSxJQUFJLElBQUksRUFBRSxHQUFHLEtBQUssU0FBUyxJQUFJLElBQUksRUFBRSxRQUFRLEtBQUssSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO2dCQUMvRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQXhXUSxXQUFXLHNSQXFCUixRQUFRO21IQXJCWCxXQUFXOzs0RkFBWCxXQUFXO2tCQUR2QixVQUFVOzswQkFzQkYsTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWNvbmZpZy1zZXJ2aWNlJztcbmltcG9ydCB7XG4gICAgQ0FQVENIQV9WQUxJREFUSU9OX1BBVEgsXG4gICAgTkVXU0xFVFRFUl9DT05GSVJNQVRJT05fUEFUSCxcbiAgICBORVdTTEVUVEVSX1VOU1VCU0NSSUJFX1BBVEgsXG4gICAgU09DSUFMX0xPR0lOX1BBVEgsXG4gICAgVE9LRU5fSEVBREVSX0tFWSxcbiAgICBUT0tFTl9LRVlcbn0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHN3YWwgZnJvbSAnc3dlZXRhbGVydDInO1xuXG5pbXBvcnQgeyBTaWduVXBWYWx1ZXMgfSBmcm9tICcuL2NvbW1vbi1zZXJ2aWNlcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSW50ZWdyYXRpb25zQXBpSHR0cFNlcnZpY2UgfSBmcm9tICcuL2ludGVncmF0aW9ucy1hcGktaHR0cC5zZXJ2aWNlJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZSB9IGZyb20gJy4vbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IE1haW5BcGlIdHRwU2VydmljZSB9IGZyb20gJy4vbWFpbi1hcGktaHR0cC5zZXJ2aWNlJztcbmltcG9ydCB7IFNlY3VyZVRva2VuU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL3NlY3VyZS10b2tlbi1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3VzdG9tVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi91c2VyLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1TdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHR3aXR0ZXJFbmRwb2ludCA9ICcvdHdpdHRlcic7XG5cbiAgICBhdXRoX3Rva2VuOiBzdHJpbmc7XG4gICAgaGVhZGVyX2tleSA9ICdicm93c2VyJztcbiAgICBwbGF0Zm9ybSA9ICcnO1xuXG4gICAgcGxhdGZvcm0kID0gdGhpcy5wbGF0Zm9ybVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICBpc1VzZXJQZXJzb25hdGVkOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxTdG9yYWdlOiBMb2NhbFN0b3JhZ2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc2VjdXJlVG9rZW5TdG9yYWdlOiBTZWN1cmVUb2tlblN0b3JhZ2VTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IE1haW5BcGlIdHRwU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdG9hc3RyOiBDdXN0b21Ub2FzdFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbnRlZ3JhdGlvbnNBcGk6IEludGVncmF0aW9uc0FwaUh0dHBTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50OiBEb2N1bWVudFxuICAgICkge1xuICAgICAgICAvLyBTZXQgSGVhZGVyIEtleVxuICAgICAgICB0aGlzLnNldEhlYWRlcktleSgpO1xuICAgIH1cblxuICAgIGdldFRva2VuKCkge1xuICAgICAgICBpZiAodGhpcy5zZWN1cmVUb2tlblN0b3JhZ2UuZ2V0SW1wZXJzb25hdGVkVG9rZW4oKSkge1xuICAgICAgICAgICAgdGhpcy5pc1VzZXJQZXJzb25hdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlY3VyZVRva2VuU3RvcmFnZS5nZXRJbXBlcnNvbmF0ZWRUb2tlbigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnNlY3VyZVRva2VuU3RvcmFnZS5nZXRQaG9uZWdhcFRva2VuKCkpIHtcbiAgICAgICAgICAgIHRoaXMuaXNVc2VyUGVyc29uYXRlZCA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWN1cmVUb2tlblN0b3JhZ2UuZ2V0UGhvbmVnYXBUb2tlbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc1VzZXJQZXJzb25hdGVkID0gZmFsc2U7XG4gICAgICAgIHJldHVybiB0aGlzLnNlY3VyZVRva2VuU3RvcmFnZS5nZXRUb2tlbigpO1xuICAgIH1cblxuICAgIGdldEltcGVyc29uYXRlZFRva2VuKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5zZWN1cmVUb2tlblN0b3JhZ2UuZ2V0SW1wZXJzb25hdGVkVG9rZW4oKSB8fFxuICAgICAgICAgICAgdGhpcy5zZWN1cmVUb2tlblN0b3JhZ2UuZ2V0UGhvbmVnYXBUb2tlbigpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgc2V0SGVhZGVyS2V5KCkge1xuICAgICAgICAvLyBNb2JpbGU6IGFwcFxuICAgICAgICAvLyBXZWJzaXRlOiBicm93c2VyXG4gICAgICAgIHRoaXMuZ2V0SGVhZGVyS2V5KCkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWFkZXJfa2V5ID0gJ2Jyb3dzZXInO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYXRmb3JtU3ViamVjdC5uZXh0KCdicm93c2VyJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdhcHAnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyX2tleSA9IGtleTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGF0Zm9ybVN1YmplY3QubmV4dChrZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaGVhZGVyX2tleSA9ICdicm93c2VyJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2lnblVwVXNlcih2YWx1ZXM6IFNpZ25VcFZhbHVlcykge1xuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2NvbmZpcm1hdGlvbl9wYXRoJywgdmFsdWVzLmNvbmZpcm1hdGlvbl9wYXRoKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdjb250YWN0X25hbWUnLCB2YWx1ZXMuY29udGFjdF9uYW1lKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdlbWFpbCcsIHZhbHVlcy5lbWFpbCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgndXNlcl9zaWdudXBfdXJsJywgdmFsdWVzLnVzZXJfc2lnbnVwX3VybCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnb3JnYW5pc2F0aW9uJywgdmFsdWVzLm9yZ2FuaXNhdGlvbik7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgncHJvZHVjdF9pZCcsIHZhbHVlcy5wcm9kdWN0X2lkLnRvU3RyaW5nKCkpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3VuaXRzJywgdmFsdWVzLnVuaXRzLnRvU3RyaW5nKCkpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3N0cmlwZV90b2tlbicsIHZhbHVlcy5zdHJpcGVfdG9rZW4pO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ21hc3Rlcl9zdWJzY3JpcHRpb25faWQnLCB2YWx1ZXMubWFzdGVyX3N1YnNjcmlwdGlvbl9pZC50b1N0cmluZygpKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoJ3NpZ251cHMnLCBmb3JtRGF0YSk7XG4gICAgfVxuXG4gICAgdHJpYWxTaWduVXAoZGF0YTogb2JqZWN0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCgnc2lnbnVwcy90cmlhbF9zaWdudXAnLCBkYXRhKTtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZUVtYWlsKGVtYWlsOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgZW1haWxcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldFdpdGhQYXJhbXMoJ3VzZXJzL3ZhbGlkYXRlX2VtYWlsJywgcGFyYW1zKTtcbiAgICB9XG5cbiAgICBmb3Jnb3RQYXNzd29yZChlbWFpbDogc3RyaW5nLCByZXNldF9wYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgZW1haWwsXG4gICAgICAgICAgICByZXNldF9wYXRoXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXRXaXRoUGFyYW1zKCdwYXNzd29yZCcsIHBhcmFtcyk7XG4gICAgfVxuXG4gICAgcmVzZXRQYXNzd29yZChwYXNzd29yZDogc3RyaW5nLCBjb25maXJtX3Bhc3N3b3JkOiBzdHJpbmcsIHBhc3N3b3JkX3Jlc2V0X3Rva2VuOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdwYXNzd29yZCcsIHBhc3N3b3JkKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdwYXNzd29yZF9jb25maXJtYXRpb24nLCBjb25maXJtX3Bhc3N3b3JkKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdyZXNldF9wYXNzd29yZF90b2tlbicsIHBhc3N3b3JkX3Jlc2V0X3Rva2VuKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnB1dCgncGFzc3dvcmQnLCBmb3JtRGF0YSk7XG4gICAgfVxuXG4gICAgaGVhZGVyKCkge1xuICAgICAgICBpZiAodGhpcy5oZWFkZXJfa2V5ID09PSAnYnJvd3NlcicpIHtcbiAgICAgICAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICAgICAgICAgIFtUT0tFTl9IRUFERVJfS0VZXTogYnRvYSh0aGlzLmF1dGhfdG9rZW4pXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIGhlYWRlcnM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAgICAgICAnWC1QaG9uZWdhcC1Ub2tlbic6IGJ0b2EodGhpcy5hdXRoX3Rva2VuKVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaGVhZGVycztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEhlYWRlcktleSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxTdG9yYWdlLmdldEl0ZW0kKCdwbGF0Zm9ybScpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UGxhdGZvcm0oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtJCgncGxhdGZvcm0nKTtcbiAgICB9XG5cbiAgICBzaWduSW5Vc2VyKGVtYWlsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdlbWFpbCcsIGVtYWlsKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdwYXNzd29yZCcsIHBhc3N3b3JkKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoJ3Nlc3Npb24nLCBmb3JtRGF0YSk7XG4gICAgfVxuXG4gICAgc2lnbkluVXNlcldpdGgyRmEoZW1haWw6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgZ29vZ2xlX2NvZGUpIHtcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdlbWFpbCcsIGVtYWlsKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdwYXNzd29yZCcsIHBhc3N3b3JkKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdnb29nbGVfY29kZScsIGdvb2dsZV9jb2RlKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoJ3Nlc3Npb24nLCBmb3JtRGF0YSk7XG4gICAgfVxuXG4gICAgc3RvcmVUb2tlbih0b2tlbjogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlY3VyZVRva2VuU3RvcmFnZS5zdG9yZVRva2VuKHRva2VuKTtcbiAgICB9XG5cbiAgICBzdG9yZVBsYXRmb3JtKHBsYXQ6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSQoJ3BsYXRmb3JtJywgcGxhdCk7XG4gICAgfVxuXG4gICAgbG9nb3V0KCkge1xuICAgICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICAgICAgaGVhZGVyczogdGhpcy5oZWFkZXIoKVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLmhlYWRlcl9rZXkgIT09ICdicm93c2VyJykge1xuICAgICAgICAgICAgb3B0aW9uc1sncGFyYW1zJ10gPSB7XG4gICAgICAgICAgICAgICAgcGhvbmVnYXA6IHRydWVcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDbGVhciBhbGwgdG9rZW5zIHNlY3VyZWx5XG4gICAgICAgIHRoaXMuc2VjdXJlVG9rZW5TdG9yYWdlLmNsZWFyVG9rZW5zKCkuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoJ3Nlc3Npb24nLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhciBhbGwgYXV0aGVudGljYXRpb24gdG9rZW5zXG4gICAgICovXG4gICAgY2xlYXJUb2tlbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlY3VyZVRva2VuU3RvcmFnZS5jbGVhclRva2VucygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSBvbmx5IGltcGVyc29uYXRpb24gdG9rZW5zIChub3QgYWxsIHRva2VucylcbiAgICAgKi9cbiAgICByZW1vdmVJbXBlcnNvbmF0aW9uVG9rZW5zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWN1cmVUb2tlblN0b3JhZ2UucmVtb3ZlSW1wZXJzb25hdGVkVG9rZW5zKCk7XG4gICAgfVxuXG4gICAgZ2V0VG9rZW4kKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWN1cmVUb2tlblN0b3JhZ2UuZ2V0VG9rZW4kKCk7XG4gICAgfVxuXG4gICAgZ2V0TmV3c2xldHRlclN1YnNjcmlwdGlvbih0b2tlbjogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke05FV1NMRVRURVJfQ09ORklSTUFUSU9OX1BBVEh9P3Rva2VuPSR7dG9rZW59YCk7XG4gICAgfVxuXG4gICAgdW5zdWJzY3JpYmVOZXdzbGV0dGVyKHRva2VuOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7TkVXU0xFVFRFUl9VTlNVQlNDUklCRV9QQVRIfT90b2tlbj0ke3Rva2VufWApO1xuICAgIH1cblxuICAgIHZhbGlkYXRlUmVDYXB0Y2hhKHRva2VuOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7Q0FQVENIQV9WQUxJREFUSU9OX1BBVEh9PSR7dG9rZW59YCk7XG4gICAgfVxuXG4gICAgc29jaWFsTG9naW4oZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoU09DSUFMX0xPR0lOX1BBVEgsIGRhdGEpO1xuICAgIH1cblxuICAgIHR3aXR0ZXJMb2dpbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy50d2l0dGVyRW5kcG9pbnR9L2dldF9hdXRob3JpemVfdXJsYCk7XG4gICAgfVxuXG4gICAgdHdpdHRlckF1dGhDYWxsYmFjayhkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnR3aXR0ZXJFbmRwb2ludH0vYXV0aG9yaXphdGlvbl9jYWxsYmFja2AsIGRhdGEpO1xuICAgIH1cblxuICAgIG1pY3Jvc29mdExvZ2luKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChgbWljcm9zb2Z0L2dldF9hdXRob3JpemVfdXJsYCk7XG4gICAgfVxuXG4gICAgY29nbml0b0xvZ2luKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChgY29nbml0by9nZXRfYXV0aG9yaXplX3VybGApO1xuICAgIH1cblxuICAgIG1pY3Jvc29mdEF1dGhDYWxsYmFjayhkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgbWljcm9zb2Z0L2F1dGhvcml6YXRpb25fY2FsbGJhY2tgLCBkYXRhKTtcbiAgICB9XG5cbiAgICBnb29nbGVMb2dpbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYGdvb2dsZS9nZXRfYXV0aG9yaXplX3VybGApO1xuICAgIH1cblxuICAgIGdvb2dsZUF1dGhDYWxsYmFjayhkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgZ29vZ2xlL2F1dGhvcml6YXRpb25fY2FsbGJhY2tgLCBkYXRhKTtcbiAgICB9XG5cbiAgICBmYWNlYm9va0xvZ2luKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChgZmFjZWJvb2svZ2V0X2F1dGhvcml6ZV91cmxgKTtcbiAgICB9XG5cbiAgICBmYWNlYm9va0F1dGhDYWxsYmFjayhkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgZmFjZWJvb2svYXV0aG9yaXphdGlvbl9jYWxsYmFja2AsIGRhdGEpO1xuICAgIH1cblxuICAgIGFwcGxlTG9naW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGBhcHBsZS9nZXRfYXV0aG9yaXplX3VybGApO1xuICAgIH1cblxuICAgIGFwcGxlQXV0aENhbGxiYWNrKGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGBhcHBsZS9hdXRob3JpemF0aW9uX2NhbGxiYWNrYCwgZGF0YSk7XG4gICAgfVxuXG4gICAgY29nbml0b0F1dGhDYWxsYmFjayhkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgY29nbml0by9hdXRob3JpemF0aW9uX2NhbGxiYWNrYCwgZGF0YSk7XG4gICAgfVxuXG4gICAgbGlua2VkaW5Mb2dpbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwQ29uZmlnU2VydmljZS5hcHBDb25maWckLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoY29uZmlnID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChcbiAgICAgICAgICAgICAgICAgICAgYC9saW5rZWRpbi9nZXRfYXV0aG9yaXplX3VybD9yZWRpcmVjdF91cmw9JHtjb25maWdbJ2xpbmtzJ10uZnJvbnRlbmRfbGlua30vbGlua2VkaW4tY29uZmlybWF0aW9uYFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGxpbmtlZEluQXV0aENhbGxiYWNrKGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KCdsaW5rZWRpbi9hdXRob3JpemF0aW9uX2NhbGxiYWNrJywgZGF0YSk7XG4gICAgfVxuXG4gICAgcG9zdExvZ2luKHJlc3BvbnNlKSB7XG4gICAgICAgIHRoaXMubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0kKCdwcm9kdWN0X2lkJykuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuc2V0SGVhZGVyS2V5KCk7XG4gICAgICAgIC8vIHRoaXMuc2V0UGxhdGZvcm0oKTsgY2FsbCBpdCBmcm9tIGNsb3Vkb2xpdmUgcmVwby5cblxuICAgICAgICAvLyBTYXZlcyB0aGUgdG9rZW4gaW50byB0aGUgbG9jYWxTdG9yYWdlIGFuZCBmZXRjaGVzIHRoZSB1c2VyIGluZm9ybWF0aW9uXG4gICAgICAgIGNvbnN0IHNlcXVlbmNlJCA9IHRoaXMuc3RvcmVUb2tlbihyZXNwb25zZVtUT0tFTl9LRVldKS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy51c2VyU2VydmljZS5nZXRVc2VySW5mbygpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICBzZXF1ZW5jZSQuc3Vic2NyaWJlKHJlc3AgPT4ge1xuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ25hbWUnLCByZXNwLmZpcnN0X25hbWUpO1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydob21lJ10pO1xuICAgICAgICAgICAgaWYgKCQoJy5jYy1kaXNtaXNzJykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICQoJy5jYy1kaXNtaXNzJylbMF0uY2xpY2soKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGltcGVyc29uYXRlVXNlcihkYXRhOiB7IGVtYWlsOiBzdHJpbmc7IHN1YnNjcmlwdGlvbl9pZDogbnVtYmVyOyBwaG9uZWdhcD86IGJvb2xlYW4gfSkge1xuICAgICAgICBpZiAoIWRhdGEucGhvbmVnYXApIHtcbiAgICAgICAgICAgIGRlbGV0ZSBkYXRhLnBob25lZ2FwO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KCcvc2Vzc2lvbi9pbXBlcnNvbmF0ZV91c2VyJywgZGF0YSkucGlwZShcbiAgICAgICAgICAgIG1hcCh4ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoeD8uYXV0aF90b2tlbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlY3VyZVRva2VuU3RvcmFnZS5zdG9yZUltcGVyc29uYXRlZFRva2VuKHguYXV0aF90b2tlbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh4Py5waG9uZWdhcF90b2tlbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlY3VyZVRva2VuU3RvcmFnZS5zdG9yZVBob25lZ2FwVG9rZW4oeC5waG9uZWdhcF90b2tlbik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHg7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHBvc3RTb2NpYWxMb2dpbihyZXNwb25zZSkge1xuICAgICAgICBjb25zdCBhbHJlYWR5U2lnbmVkID0gISFyZXNwb25zZVtUT0tFTl9LRVldO1xuICAgICAgICBjb25zdCBpc05ld1NpZ25VcCA9ICEhcmVzcG9uc2Uuc3Vic2NyaXB0aW9uO1xuXG4gICAgICAgIGlmIChpc05ld1NpZ25VcCkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydjb25maXJtYXRpb24nXSwge1xuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgIHJlZjogcmVzcG9uc2UucmVmZXJlbmNlX251bWJlcixcbiAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uOiByZXNwb25zZS5zdWJzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIHVzZXJzOiByZXNwb25zZS51c2Vyc1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGFscmVhZHlTaWduZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmVUb2tlbihyZXNwb25zZVtUT0tFTl9LRVldKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydob21lJ10pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6IGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvd1RvYXN0KGVycm9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN3YWwuZmlyZSh7XG4gICAgICAgICAgICAgICAgdG9hc3Q6IHRydWUsXG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdib3R0b20nLFxuICAgICAgICAgICAgICAgIGh0bWw6IGA8c3Ryb25nIGNsYXNzPVwidGV4dC1kYW5nZXJcIj4gJHtyZXNwb25zZS5lcnJvci5tZXNzYWdlfTwvc3Ryb25nPmAsXG4gICAgICAgICAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICByZXZlcnNlQnV0dG9uczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpY29uOiAnZXJyb3InXG4gICAgICAgICAgICB9KS50aGVuKHJlcCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ3JlZ2lzdGVyJ10pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJUb2tlbkxpc3RlbmVyKCkge1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc3RvcmFnZScsIGRhdGEgPT4ge1xuICAgICAgICAgICAgLy8gbG9ncyBvdXQgdGhlIG90aGVyIHRhYnMgd2hlbiB0aGUgdG9rZW4gaXMgY2hhbmdlZC5cbiAgICAgICAgICAgIC8vIHdlIGFzc3VtZSB0aGF0IHRva2VuIGRvZXNuJ3QgcmVmcmVzaCBhbmQgYmFja2VuZCB1cGRhdGVzIHRoZSBleHBpcnkgdGltZVxuICAgICAgICAgICAgaWYgKGRhdGE/LmtleSA9PT0gVE9LRU5fS0VZICYmIGRhdGE/Lm9sZFZhbHVlICE9PSBkYXRhPy5uZXdWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnQubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
@@ -965,6 +965,12 @@ class AuthService {
965
965
  clearTokens() {
966
966
  return this.secureTokenStorage.clearTokens();
967
967
  }
968
+ /**
969
+ * Remove only impersonation tokens (not all tokens)
970
+ */
971
+ removeImpersonationTokens() {
972
+ return this.secureTokenStorage.removeImpersonatedTokens();
973
+ }
968
974
  getToken$() {
969
975
  return this.secureTokenStorage.getToken$();
970
976
  }