@myclub_se/data-access 3.1.9 → 3.1.11

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.
@@ -32,7 +32,7 @@ export class AuthenticationInterceptor {
32
32
  if (requestError instanceof HttpErrorResponse &&
33
33
  requestError.status === 401 &&
34
34
  !request.url.includes('accounts/token/')) {
35
- return this.handle401Error(request, next);
35
+ return this.handle401Error(request, next, result?.result);
36
36
  }
37
37
  return throwError(() => requestError);
38
38
  }));
@@ -56,27 +56,37 @@ export class AuthenticationInterceptor {
56
56
  }
57
57
  return request;
58
58
  }
59
- handle401Error(request, next) {
59
+ handle401Error(request, next, currentToken) {
60
60
  if (!this.refreshTokenInProgress) {
61
61
  this.refreshTokenInProgress = true;
62
62
  this.refreshTokenSubject = new BehaviorSubject(null);
63
- this.store.dispatch(reauthenticateTokenAction());
64
- return this.actions$.pipe(ofType(reauthenticateTokenFailureAction, reauthenticateTokenSuccessAction), take(1), switchMap(action => {
63
+ if (currentToken || typeof currentToken === undefined) {
64
+ this.store.dispatch(reauthenticateTokenAction());
65
+ return this.actions$.pipe(ofType(reauthenticateTokenFailureAction, reauthenticateTokenSuccessAction), take(1), switchMap(action => {
66
+ if (action.type === reauthenticateTokenSuccessAction.type) {
67
+ const token = action.payload;
68
+ this.refreshTokenSubject.next(token);
69
+ this.refreshTokenInProgress = false;
70
+ return next.handle(this.addAuthorizationHeader(request, token.accessToken));
71
+ }
72
+ else {
73
+ const error = new Error('Token re-authentication failed.');
74
+ this.refreshTokenSubject.error(error);
75
+ this.refreshTokenInProgress = false;
76
+ return throwError(() => error);
77
+ }
78
+ }), catchError(err => {
79
+ this.refreshTokenInProgress = false;
80
+ return throwError(() => err);
81
+ }));
82
+ }
83
+ else {
65
84
  this.refreshTokenInProgress = false;
66
- if (action.type === reauthenticateTokenSuccessAction.type) {
67
- const token = action.payload;
68
- this.refreshTokenSubject.next(token);
69
- return next.handle(this.addAuthorizationHeader(request, token.accessToken));
70
- }
71
- else {
72
- const error = new Error('Token re-authentication failed.');
73
- this.refreshTokenSubject.error(error);
74
- return throwError(() => error);
75
- }
76
- }));
85
+ return throwError(() => new Error('No token present.'));
86
+ }
77
87
  }
78
88
  else {
79
- return this.refreshTokenSubject.pipe(filter((token) => token !== null), take(1), switchMap((token) => next.handle(this.addAuthorizationHeader(request, token.accessToken))));
89
+ return this.refreshTokenSubject.pipe(filter((token) => !!token), take(1), switchMap((token) => next.handle(this.addAuthorizationHeader(request, token.accessToken))));
80
90
  }
81
91
  }
82
92
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AuthenticationInterceptor, deps: [{ token: i1.Store }, { token: i2.Actions }], target: i0.ɵɵFactoryTarget.Injectable });
@@ -85,4 +95,4 @@ export class AuthenticationInterceptor {
85
95
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AuthenticationInterceptor, decorators: [{
86
96
  type: Injectable
87
97
  }], ctorParameters: () => [{ type: i1.Store }, { type: i2.Actions }] });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhLWFjY2Vzcy9zcmMvbGliL2F1dGhlbnRpY2F0aW9uL2F1dGhlbnRpY2F0aW9uLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUF3RCxNQUFNLHNCQUFzQixDQUFDO0FBQy9HLE9BQU8sRUFBVyxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLE1BQU0sRUFBUyxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZUFBZSxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckUsT0FBTyxFQUNMLHlCQUF5QixFQUN6QixnQ0FBZ0MsRUFDaEMsZ0NBQWdDLEVBRWhDLHdCQUF3QixFQUN4QixrQkFBa0IsRUFDbkIsTUFBTSxVQUFVLENBQUM7Ozs7QUFJbEIsTUFBTSxPQUFPLHlCQUF5QjtJQUloQjtJQUFzQjtJQUhsQyxzQkFBc0IsR0FBRyxLQUFLLENBQUM7SUFDL0IsbUJBQW1CLEdBQWtDLElBQUksZUFBZSxDQUFlLElBQUksQ0FBQyxDQUFDO0lBRXJHLFlBQW9CLEtBQVksRUFBVSxRQUFpQjtRQUF2QyxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBUztJQUFHLENBQUM7SUFFL0QsU0FBUyxDQUFDLE9BQXlCLEVBQUUsSUFBaUI7UUFDcEQsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ25DLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFTywwQkFBMEIsQ0FBQyxPQUE2QixFQUFFLElBQWlCO1FBQ2pGLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQ3BCLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxFQUMxQixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsU0FBUyxDQUFDLENBQUMsTUFBa0QsRUFBRSxFQUFFO1lBQy9ELElBQUksTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDO2dCQUNuQixPQUFPLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzVFLENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUM5QixVQUFVLENBQUMsQ0FBQyxZQUFpQixFQUFFLEVBQUU7Z0JBQy9CLElBQ0UsWUFBWSxZQUFZLGlCQUFpQjtvQkFDekMsWUFBWSxDQUFDLE1BQU0sS0FBSyxHQUFHO29CQUMzQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEVBQ3hDLENBQUM7b0JBQ0QsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDNUMsQ0FBQztnQkFDRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN4QyxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxPQUE2QixFQUFFLElBQWlCO1FBQzFFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQ3BCLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxFQUNoQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsU0FBUyxDQUFDLENBQUMsTUFBaUUsRUFBRSxFQUFFO1lBQzlFLElBQUksTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDO2dCQUNuQixPQUFPLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RFLENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxPQUE2QixFQUFFLEtBQWE7UUFDekUsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFDbkIsVUFBVSxFQUFFO29CQUNWLGFBQWEsRUFBRSxVQUFVLEtBQUssRUFBRTtpQkFDakM7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVPLGNBQWMsQ0FBQyxPQUE2QixFQUFFLElBQWlCO1FBQ3JFLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO1lBQ25DLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBZSxJQUFJLENBQUMsQ0FBQztZQUVuRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUM7WUFFakQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDdkIsTUFBTSxDQUFDLGdDQUFnQyxFQUFFLGdDQUFnQyxDQUFDLEVBQzFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUM7Z0JBRXBDLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxnQ0FBZ0MsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDMUQsTUFBTSxLQUFLLEdBQVUsTUFBTSxDQUFDLE9BQU8sQ0FBQztvQkFDcEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFFckMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQzlFLENBQUM7cUJBQU0sQ0FBQztvQkFDTixNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO29CQUMzRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUN0QyxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakMsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FDbEMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFrQixFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxFQUNqRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDM0YsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO3VHQS9GVSx5QkFBeUI7MkdBQXpCLHlCQUF5Qjs7MkZBQXpCLHlCQUF5QjtrQkFEckMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwRXZlbnQsIEh0dHBIYW5kbGVyLCBIdHRwSW50ZXJjZXB0b3IsIEh0dHBSZXF1ZXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQWN0aW9ucywgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBzZWxlY3QsIFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIHN3aXRjaE1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIHJlYXV0aGVudGljYXRlVG9rZW5BY3Rpb24sXG4gIHJlYXV0aGVudGljYXRlVG9rZW5GYWlsdXJlQWN0aW9uLFxuICByZWF1dGhlbnRpY2F0ZVRva2VuU3VjY2Vzc0FjdGlvbixcbiAgUmV0cmlldmVSZXN1bHRJbnRlcmZhY2UsXG4gIHNlbGVjdEN1cnJlbnRQdWJsaWNUb2tlbixcbiAgc2VsZWN0Q3VycmVudFRva2VuXG59IGZyb20gJy4uL3N0b3JlJztcbmltcG9ydCB7IFB1YmxpY0F1dGhlbnRpY2F0aW9uLCBUb2tlbiB9IGZyb20gJy4uL21vZGVscyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBdXRoZW50aWNhdGlvbkludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcbiAgcHJpdmF0ZSByZWZyZXNoVG9rZW5JblByb2dyZXNzID0gZmFsc2U7XG4gIHByaXZhdGUgcmVmcmVzaFRva2VuU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PFRva2VuIHwgbnVsbD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRva2VuIHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmUsIHByaXZhdGUgYWN0aW9ucyQ6IEFjdGlvbnMpIHt9XG5cbiAgaW50ZXJjZXB0KHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIGlmIChyZXF1ZXN0LnVybC5pbmNsdWRlcygncHVibGljJykpIHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZVB1YmxpY1JlcXVlc3QocmVxdWVzdCwgbmV4dCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmhhbmRsZUF1dGhlbnRpY2F0ZWRSZXF1ZXN0KHJlcXVlc3QsIG5leHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVBdXRoZW50aWNhdGVkUmVxdWVzdChyZXF1ZXN0OiBIdHRwUmVxdWVzdDx1bmtub3duPiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUucGlwZShcbiAgICAgIHNlbGVjdChzZWxlY3RDdXJyZW50VG9rZW4pLFxuICAgICAgdGFrZSgxKSxcbiAgICAgIHN3aXRjaE1hcCgocmVzdWx0OiBSZXRyaWV2ZVJlc3VsdEludGVyZmFjZTxUb2tlbj4gfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdD8ucmVzdWx0KSB7XG4gICAgICAgICAgcmVxdWVzdCA9IHRoaXMuYWRkQXV0aG9yaXphdGlvbkhlYWRlcihyZXF1ZXN0LCByZXN1bHQucmVzdWx0LmFjY2Vzc1Rva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXF1ZXN0KS5waXBlKFxuICAgICAgICAgIGNhdGNoRXJyb3IoKHJlcXVlc3RFcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHJlcXVlc3RFcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlICYmXG4gICAgICAgICAgICAgIHJlcXVlc3RFcnJvci5zdGF0dXMgPT09IDQwMSAmJlxuICAgICAgICAgICAgICAhcmVxdWVzdC51cmwuaW5jbHVkZXMoJ2FjY291bnRzL3Rva2VuLycpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlNDAxRXJyb3IocmVxdWVzdCwgbmV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiByZXF1ZXN0RXJyb3IpO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVB1YmxpY1JlcXVlc3QocmVxdWVzdDogSHR0cFJlcXVlc3Q8dW5rbm93bj4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnBpcGUoXG4gICAgICBzZWxlY3Qoc2VsZWN0Q3VycmVudFB1YmxpY1Rva2VuKSxcbiAgICAgIHRha2UoMSksXG4gICAgICBzd2l0Y2hNYXAoKHJlc3VsdDogUmV0cmlldmVSZXN1bHRJbnRlcmZhY2U8UHVibGljQXV0aGVudGljYXRpb24+IHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQ/LnJlc3VsdCkge1xuICAgICAgICAgIHJlcXVlc3QgPSB0aGlzLmFkZEF1dGhvcml6YXRpb25IZWFkZXIocmVxdWVzdCwgcmVzdWx0LnJlc3VsdC50b2tlbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFkZEF1dGhvcml6YXRpb25IZWFkZXIocmVxdWVzdDogSHR0cFJlcXVlc3Q8dW5rbm93bj4sIHRva2VuOiBzdHJpbmcpOiBIdHRwUmVxdWVzdDx1bmtub3duPiB7XG4gICAgaWYgKHRva2VuKSB7XG4gICAgICByZXR1cm4gcmVxdWVzdC5jbG9uZSh7XG4gICAgICAgIHNldEhlYWRlcnM6IHtcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dG9rZW59YFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcXVlc3Q7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZTQwMUVycm9yKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PHVua25vd24+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICBpZiAoIXRoaXMucmVmcmVzaFRva2VuSW5Qcm9ncmVzcykge1xuICAgICAgdGhpcy5yZWZyZXNoVG9rZW5JblByb2dyZXNzID0gdHJ1ZTtcbiAgICAgIHRoaXMucmVmcmVzaFRva2VuU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VG9rZW4gfCBudWxsPihudWxsKTtcblxuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChyZWF1dGhlbnRpY2F0ZVRva2VuQWN0aW9uKCkpO1xuXG4gICAgICByZXR1cm4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUocmVhdXRoZW50aWNhdGVUb2tlbkZhaWx1cmVBY3Rpb24sIHJlYXV0aGVudGljYXRlVG9rZW5TdWNjZXNzQWN0aW9uKSxcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgc3dpdGNoTWFwKGFjdGlvbiA9PiB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW5JblByb2dyZXNzID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoYWN0aW9uLnR5cGUgPT09IHJlYXV0aGVudGljYXRlVG9rZW5TdWNjZXNzQWN0aW9uLnR5cGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHRva2VuOiBUb2tlbiA9IGFjdGlvbi5wYXlsb2FkO1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW5TdWJqZWN0Lm5leHQodG9rZW4pO1xuXG4gICAgICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUodGhpcy5hZGRBdXRob3JpemF0aW9uSGVhZGVyKHJlcXVlc3QsIHRva2VuLmFjY2Vzc1Rva2VuKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCdUb2tlbiByZS1hdXRoZW50aWNhdGlvbiBmYWlsZWQuJyk7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlblN1YmplY3QuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnJlZnJlc2hUb2tlblN1YmplY3QucGlwZShcbiAgICAgICAgZmlsdGVyKCh0b2tlbik6IHRva2VuIGlzIFRva2VuID0+IHRva2VuICE9PSBudWxsKSxcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgc3dpdGNoTWFwKCh0b2tlbikgPT4gbmV4dC5oYW5kbGUodGhpcy5hZGRBdXRob3JpemF0aW9uSGVhZGVyKHJlcXVlc3QsIHRva2VuLmFjY2Vzc1Rva2VuKSkpXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhLWFjY2Vzcy9zcmMvbGliL2F1dGhlbnRpY2F0aW9uL2F1dGhlbnRpY2F0aW9uLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUF3RCxNQUFNLHNCQUFzQixDQUFDO0FBQy9HLE9BQU8sRUFBVyxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLE1BQU0sRUFBUyxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZUFBZSxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckUsT0FBTyxFQUNMLHlCQUF5QixFQUN6QixnQ0FBZ0MsRUFDaEMsZ0NBQWdDLEVBRWhDLHdCQUF3QixFQUN4QixrQkFBa0IsRUFDbkIsTUFBTSxVQUFVLENBQUM7Ozs7QUFJbEIsTUFBTSxPQUFPLHlCQUF5QjtJQUloQjtJQUFzQjtJQUhsQyxzQkFBc0IsR0FBRyxLQUFLLENBQUM7SUFDL0IsbUJBQW1CLEdBQWtDLElBQUksZUFBZSxDQUFlLElBQUksQ0FBQyxDQUFDO0lBRXJHLFlBQW9CLEtBQVksRUFBVSxRQUFpQjtRQUF2QyxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBUztJQUFHLENBQUM7SUFFL0QsU0FBUyxDQUFDLE9BQXlCLEVBQUUsSUFBaUI7UUFDcEQsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ25DLE9BQU8sSUFBSSxDQUFD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QUksQ0FDbEMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUMxQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDM0YsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO3VHQXhHVSx5QkFBeUI7MkdBQXpCLHlCQUF5Qjs7MkZBQXpCLHlCQUF5QjtrQkFEckMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwRXZlbnQsIEh0dHBIYW5kbGVyLCBIdHRwSW50ZXJjZXB0b3IsIEh0dHBSZXF1ZXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQWN0aW9ucywgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBzZWxlY3QsIFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIHN3aXRjaE1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIHJlYXV0aGVudGljYXRlVG9rZW5BY3Rpb24sXG4gIHJlYXV0aGVudGljYXRlVG9rZW5GYWlsdXJlQWN0aW9uLFxuICByZWF1dGhlbnRpY2F0ZVRva2VuU3VjY2Vzc0FjdGlvbixcbiAgUmV0cmlldmVSZXN1bHRJbnRlcmZhY2UsXG4gIHNlbGVjdEN1cnJlbnRQdWJsaWNUb2tlbixcbiAgc2VsZWN0Q3VycmVudFRva2VuXG59IGZyb20gJy4uL3N0b3JlJztcbmltcG9ydCB7IFB1YmxpY0F1dGhlbnRpY2F0aW9uLCBUb2tlbiB9IGZyb20gJy4uL21vZGVscyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBdXRoZW50aWNhdGlvbkludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcbiAgcHJpdmF0ZSByZWZyZXNoVG9rZW5JblByb2dyZXNzID0gZmFsc2U7XG4gIHByaXZhdGUgcmVmcmVzaFRva2VuU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PFRva2VuIHwgbnVsbD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRva2VuIHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmUsIHByaXZhdGUgYWN0aW9ucyQ6IEFjdGlvbnMpIHt9XG5cbiAgaW50ZXJjZXB0KHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIGlmIChyZXF1ZXN0LnVybC5pbmNsdWRlcygncHVibGljJykpIHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZVB1YmxpY1JlcXVlc3QocmVxdWVzdCwgbmV4dCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmhhbmRsZUF1dGhlbnRpY2F0ZWRSZXF1ZXN0KHJlcXVlc3QsIG5leHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVBdXRoZW50aWNhdGVkUmVxdWVzdChyZXF1ZXN0OiBIdHRwUmVxdWVzdDx1bmtub3duPiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUucGlwZShcbiAgICAgIHNlbGVjdChzZWxlY3RDdXJyZW50VG9rZW4pLFxuICAgICAgdGFrZSgxKSxcbiAgICAgIHN3aXRjaE1hcCgocmVzdWx0OiBSZXRyaWV2ZVJlc3VsdEludGVyZmFjZTxUb2tlbj4gfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdD8ucmVzdWx0KSB7XG4gICAgICAgICAgcmVxdWVzdCA9IHRoaXMuYWRkQXV0aG9yaXphdGlvbkhlYWRlcihyZXF1ZXN0LCByZXN1bHQucmVzdWx0LmFjY2Vzc1Rva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXF1ZXN0KS5waXBlKFxuICAgICAgICAgIGNhdGNoRXJyb3IoKHJlcXVlc3RFcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHJlcXVlc3RFcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlICYmXG4gICAgICAgICAgICAgIHJlcXVlc3RFcnJvci5zdGF0dXMgPT09IDQwMSAmJlxuICAgICAgICAgICAgICAhcmVxdWVzdC51cmwuaW5jbHVkZXMoJ2FjY291bnRzL3Rva2VuLycpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlNDAxRXJyb3IocmVxdWVzdCwgbmV4dCwgcmVzdWx0Py5yZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gcmVxdWVzdEVycm9yKTtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVQdWJsaWNSZXF1ZXN0KHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PHVua25vd24+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5waXBlKFxuICAgICAgc2VsZWN0KHNlbGVjdEN1cnJlbnRQdWJsaWNUb2tlbiksXG4gICAgICB0YWtlKDEpLFxuICAgICAgc3dpdGNoTWFwKChyZXN1bHQ6IFJldHJpZXZlUmVzdWx0SW50ZXJmYWNlPFB1YmxpY0F1dGhlbnRpY2F0aW9uPiB8IHVuZGVmaW5lZCkgPT4ge1xuICAgICAgICBpZiAocmVzdWx0Py5yZXN1bHQpIHtcbiAgICAgICAgICByZXF1ZXN0ID0gdGhpcy5hZGRBdXRob3JpemF0aW9uSGVhZGVyKHJlcXVlc3QsIHJlc3VsdC5yZXN1bHQudG9rZW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRBdXRob3JpemF0aW9uSGVhZGVyKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PHVua25vd24+LCB0b2tlbjogc3RyaW5nKTogSHR0cFJlcXVlc3Q8dW5rbm93bj4ge1xuICAgIGlmICh0b2tlbikge1xuICAgICAgcmV0dXJuIHJlcXVlc3QuY2xvbmUoe1xuICAgICAgICBzZXRIZWFkZXJzOiB7XG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWBcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXF1ZXN0O1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGU0MDFFcnJvcihyZXF1ZXN0OiBIdHRwUmVxdWVzdDx1bmtub3duPiwgbmV4dDogSHR0cEhhbmRsZXIsIGN1cnJlbnRUb2tlbjogVG9rZW4gfCBudWxsIHwgdW5kZWZpbmVkKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIGlmICghdGhpcy5yZWZyZXNoVG9rZW5JblByb2dyZXNzKSB7XG4gICAgICB0aGlzLnJlZnJlc2hUb2tlbkluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgICAgdGhpcy5yZWZyZXNoVG9rZW5TdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUb2tlbiB8IG51bGw+KG51bGwpO1xuXG4gICAgICBpZiAoY3VycmVudFRva2VuIHx8IHR5cGVvZiBjdXJyZW50VG9rZW4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHJlYXV0aGVudGljYXRlVG9rZW5BY3Rpb24oKSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgICBvZlR5cGUocmVhdXRoZW50aWNhdGVUb2tlbkZhaWx1cmVBY3Rpb24sIHJlYXV0aGVudGljYXRlVG9rZW5TdWNjZXNzQWN0aW9uKSxcbiAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgIHN3aXRjaE1hcChhY3Rpb24gPT4ge1xuICAgICAgICAgICAgaWYgKGFjdGlvbi50eXBlID09PSByZWF1dGhlbnRpY2F0ZVRva2VuU3VjY2Vzc0FjdGlvbi50eXBlKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHRva2VuOiBUb2tlbiA9IGFjdGlvbi5wYXlsb2FkO1xuICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlblN1YmplY3QubmV4dCh0b2tlbik7XG4gICAgICAgICAgICAgIHRoaXMucmVmcmVzaFRva2VuSW5Qcm9ncmVzcyA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgIHJldHVybiBuZXh0LmhhbmRsZSh0aGlzLmFkZEF1dGhvcml6YXRpb25IZWFkZXIocmVxdWVzdCwgdG9rZW4uYWNjZXNzVG9rZW4pKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCdUb2tlbiByZS1hdXRoZW50aWNhdGlvbiBmYWlsZWQuJyk7XG4gICAgICAgICAgICAgIHRoaXMucmVmcmVzaFRva2VuU3ViamVjdC5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgIHRoaXMucmVmcmVzaFRva2VuSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW5JblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnIpO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlZnJlc2hUb2tlbkluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCdObyB0b2tlbiBwcmVzZW50LicpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucmVmcmVzaFRva2VuU3ViamVjdC5waXBlKFxuICAgICAgICBmaWx0ZXIoKHRva2VuKTogdG9rZW4gaXMgVG9rZW4gPT4gISF0b2tlbiksXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIHN3aXRjaE1hcCgodG9rZW4pID0+IG5leHQuaGFuZGxlKHRoaXMuYWRkQXV0aG9yaXphdGlvbkhlYWRlcihyZXF1ZXN0LCB0b2tlbi5hY2Nlc3NUb2tlbikpKVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -81,18 +81,18 @@ export class AuthenticationService {
81
81
  clientSecret = this.app.authorizationCodeClientSecret || this.app.clientSecret;
82
82
  }
83
83
  return this.tokenService
84
- .getTokenByRefreshToken(clientId, clientSecret, this.authentication?.refreshToken)
84
+ .getTokenByRefreshToken(clientId, clientSecret, this.authentication?.refreshToken || null)
85
85
  .pipe(tap((token) => this.setToken(token)));
86
86
  }
87
- setAuthentication(accessToken, refreshToken) {
88
- this.authentication = new Authentication(accessToken, refreshToken);
89
- }
90
87
  setPublicToken(token) {
91
88
  this.publicAuthentication = new PublicAuthentication(token.token, token.tokenExpires);
92
89
  }
93
90
  setToken(token) {
94
91
  this.currentTokenSubject.next(token);
95
- this.setAuthentication(token.accessToken, token.refreshToken);
92
+ this.setAuthentication(token);
93
+ }
94
+ setAuthentication(token) {
95
+ this.authentication = !!token ? new Authentication(token.accessToken, token.refreshToken) : null;
96
96
  }
97
97
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AuthenticationService, deps: [{ token: i1.ApiService }, { token: APP }, { token: i2.TokenService }], target: i0.ɵɵFactoryTarget.Injectable });
98
98
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AuthenticationService, providedIn: 'root' });
@@ -106,4 +106,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
106
106
  type: Inject,
107
107
  args: [APP]
108
108
  }] }, { type: i2.TokenService }] });
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtYWNjZXNzL3NyYy9saWIvYXV0aGVudGljYXRpb24vYXV0aGVudGljYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxjQUFjLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFTLE1BQU0sV0FBVyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFbkQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7QUFHdkYsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLElBQUksY0FBYyxDQUFNLEtBQUssQ0FBQyxDQUFDO0FBRWxELE1BQU0sOEJBQThCLEdBQUcscUJBQXFCLENBQUM7QUFDN0QsTUFBTSxzQkFBc0IsR0FBRyxhQUFhLENBQUM7QUFDN0MsTUFBTSw2QkFBNkIsR0FBRyxvQkFBb0IsQ0FBQTtBQVkxRCxNQUFNLE9BQU8scUJBQXFCO0lBV1o7SUFBNkM7SUFBa0I7SUFWM0UsbUJBQW1CLEdBQUcsSUFBSSxlQUFlLENBQWUsSUFBSSxDQUFDLENBQUM7SUFFdEUsY0FBYyxHQUEwQixJQUFJLENBQUM7SUFDN0Msb0JBQW9CLEdBQWdDLElBQUksQ0FBQztJQUN6RCxhQUFhLEdBQTZCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUVsRixJQUFJLGVBQWU7UUFDakIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUMvQixDQUFDO0lBRUQsWUFBb0IsVUFBc0Is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LENBQUM7SUFDdEUsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUEyQjtRQUN4QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVk7UUFDbkIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDaEUsQ0FBQzt1R0F4R1UscUJBQXFCLDRDQVdvQixHQUFHOzJHQVg1QyxxQkFBcUIsY0FGcEIsTUFBTTs7MkZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBWThDLE1BQU07MkJBQUMsR0FBRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRva2VuU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uLCBQdWJsaWNBdXRoZW50aWNhdGlvbiwgUm9sZSwgVG9rZW4gfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2FwaS5zZXJ2aWNlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgR3JhbnRUeXBlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgcHVibGljQXV0aGVudGljYXRpb25GYWN0b3J5LCBzZWFyY2hDbHViRmFjdG9yeSB9IGZyb20gJy4uL3NlcnZpY2VzL2ZhY3Rvcmllcyc7XG5cblxuZXhwb3J0IGNvbnN0IEFQUCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBcHA+KCdhcHAnKTtcblxuY29uc3QgUFVCTElDX0FVVEhfUkVUUklFVkVfQ09ERV9QQVRIID0gJ2F1dGgvcmV0cmlldmUtY29kZS8nO1xuY29uc3QgUFVCTElDX0FVVEhfVE9LRU5fUEFUSCA9ICdhdXRoL3Rva2VuLyc7XG5jb25zdCBQVUJMSUNfQVVUSF9DSEFOR0VfVE9LRU5fUEFUSCA9ICdhdXRoL2NoYW5nZS10b2tlbi8nXG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwIHtcbiAgY2xpZW50SWQ6IHN0cmluZztcbiAgY2xpZW50U2VjcmV0OiBzdHJpbmc7XG4gIGF1dGhvcml6YXRpb25Db2RlQ2xpZW50SWQ/OiBzdHJpbmcsXG4gIGF1dGhvcml6YXRpb25Db2RlQ2xpZW50U2VjcmV0Pzogc3RyaW5nLFxufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBdXRoZW50aWNhdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIGN1cnJlbnRUb2tlblN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRva2VuIHwgbnVsbD4obnVsbCk7XG5cbiAgYXV0aGVudGljYXRpb246IEF1dGhlbnRpY2F0aW9uIHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpY0F1dGhlbnRpY2F0aW9uOiBQdWJsaWNBdXRoZW50aWNhdGlvbiB8IG51bGwgPSBudWxsO1xuICBjdXJyZW50VG9rZW4kOiBPYnNlcnZhYmxlPFRva2VuIHwgbnVsbD4gPSB0aGlzLmN1cnJlbnRUb2tlblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgZ2V0IGlzQXV0aGVudGljYXRlZCgpIHtcbiAgICByZXR1cm4gISF0aGlzLmF1dGhlbnRpY2F0aW9uO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcGlTZXJ2aWNlOiBBcGlTZXJ2aWNlLCBASW5qZWN0KEFQUCkgcHJpdmF0ZSBhcHA6IEFwcCwgcHJpdmF0ZSB0b2tlblNlcnZpY2U6IFRva2VuU2VydmljZSkge31cblxuICBhdXRoZW50aWNhdGVCeUNyZWRlbnRpYWxzKHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy50b2tlblNlcnZpY2VcbiAgICAgIC5nZXRUb2tlbkJ5Q3JlZGVudGlhbHModGhpcy5hcHAuY2xpZW50SWQsIHRoaXMuYXBwLmNsaWVudFNlY3JldCwgdXNlcm5hbWUsIHBhc3N3b3JkKVxuICAgICAgLnBpcGUodGFwKCh0b2tlbikgPT4gdGhpcy5zZXRUb2tlbih0b2tlbikpKTtcbiAgfVxuXG4gIGF1dGhlbnRpY2F0ZUJ5VG9rZW4odG9rZW46IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnRva2VuU2VydmljZVxuICAgICAgLmdldFRva2VuQnlDb2RlKFxuICAgICAgICB0aGlzLmFwcC5hdXRob3JpemF0aW9uQ29kZUNsaWVudElkIHx8IHRoaXMuYXBwLmNsaWVudElkLFxuICAgICAgICB0aGlzLmFwcC5hdXRob3JpemF0aW9uQ29kZUNsaWVudFNlY3JldCB8fCB0aGlzLmFwcC5jbGllbnRTZWNyZXQsXG4gICAgICAgIHRva2VuLFxuICAgICAgKVxuICAgICAgLnBpcGUodGFwKCh0b2tlbikgPT4gdGhpcy5zZXRUb2tlbih0b2tlbikpKTtcbiAgfVxuXG4gIGNsZWFyQXV0aGVudGljYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5hdXRoZW50aWNhdGlvbiA9IG51bGw7XG4gICAgdGhpcy5wdWJsaWNBdXRoZW50aWNhdGlvbiA9IG51bGw7XG4gICAgdGhpcy5jdXJyZW50VG9rZW5TdWJqZWN0Lm5leHQobnVsbCk7XG4gIH1cblxuICBjbGVhclB1YmxpY0F1dGhlbnRpY2F0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMucHVibGljQXV0aGVudGljYXRpb24gPSBudWxsO1xuICB9XG5cbiAgZ2V0TG9naW5Db2RlKGVtYWlsOiBzdHJpbmcsIGNsdWJJZDogc3RyaW5nIHwgbnVsbCkge1xuICAgIGNvbnN0IHBhcmFtczogYW55ID0geyBlbWFpbCB9O1xuXG4gICAgaWYgKGNsdWJJZCkge1xuICAgICAgcGFyYW1zWydjbHViX2lkJ10gPSBjbHViSWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXRDb2xsZWN0aW9uKHNlYXJjaENsdWJGYWN0b3J5LCBSb2xlLlB1YmxpYywgUFVCTElDX0FVVEhfUkVUUklFVkVfQ09ERV9QQVRILCB7fSwge3BhcmFtc30pO1xuICB9XG5cbiAgZ2V0UHVibGljVG9rZW4oZW1haWw6IHN0cmluZywgY29kZTogc3RyaW5nLCBjbHViSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdFJlc291cmNlKHB1YmxpY0F1dGhlbnRpY2F0aW9uRmFjdG9yeSwgUm9sZS5QdWJsaWMsIFBVQkxJQ19BVVRIX1RPS0VOX1BBVEgsIHt9LCB7ZW1haWwsIGNvZGUsIGNsdWJfaWQ6IGNsdWJJZH0pXG4gICAgICAucGlwZSh0YXAoKHRva2VuKSA9PiB0aGlzLnNldFB1YmxpY1Rva2VuKHRva2VuKSkpO1xuICB9XG5cbiAgY2hhbmdlUHVibGljVG9rZW4obWVtYmVySWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdFJlc291cmNlKHB1YmxpY0F1dGhlbnRpY2F0aW9uRmFjdG9yeSwgUm9sZS5QdWJsaWMsIFBVQkxJQ19BVVRIX0NIQU5HRV9UT0tFTl9QQVRILCB7fSwge21lbWJlcl9pZDogbWVtYmVySWR9KVxuICAgICAgLnBpcGUodGFwKCh0b2tlbikgPT4gdGhpcy5zZXRQdWJsaWNUb2tlbih0b2tlbikpKTtcbiAgfVxuXG4gIGdldFNlc3Npb25Ub2tlbigpIHtcbiAgICByZXR1cm4gdGhpcy50b2tlblNlcnZpY2VcbiAgICAgIC5nZXRUb2tlbkJ5U2Vzc2lvbigpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCh0b2tlbjogVG9rZW4gfCBudWxsKSA9PiB7XG4gICAgICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgICAgICB0aGlzLnNldFRva2VuKHRva2VuKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfVxuXG4gIGxvZ291dCgpIHtcbiAgICByZXR1cm4gdGhpcy50b2tlblNlcnZpY2VcbiAgICAgIC5sb2dvdXQoKVxuICAgICAgLnBpcGUodGFwKCgpID0+IHRoaXMuY2xlYXJBdXRoZW50aWNhdGlvbigpKSk7XG4gIH1cblxuICByZWF1dGhlbnRpY2F0ZShncmFudFR5cGU6IEdyYW50VHlwZSB8IG51bGwgPSBudWxsKSB7XG4gICAgbGV0IGNsaWVudElkID0gdGhpcy5hcHAuY2xpZW50SWQ7XG4gICAgbGV0IGNsaWVudFNlY3JldCA9IHRoaXMuYXBwLmNsaWVudFNlY3JldDtcbiAgICBpZiAoZ3JhbnRUeXBlID09ICdhdXRob3JpemF0aW9uX2NvZGUnKSB7XG4gICAgICBjbGllbnRJZCA9IHRoaXMuYXBwLmF1dGhvcml6YXRpb25Db2RlQ2xpZW50SWQgfHwgdGhpcy5hcHAuY2xpZW50SWQ7XG4gICAgICBjbGllbnRTZWNyZXQgPSB0aGlzLmFwcC5hdXRob3JpemF0aW9uQ29kZUNsaWVudFNlY3JldCB8fCB0aGlzLmFwcC5jbGllbnRTZWNyZXQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnRva2VuU2VydmljZVxuICAgICAgLmdldFRva2VuQnlSZWZyZXNoVG9rZW4oXG4gICAgICAgIGNsaWVudElkLFxuICAgICAgICBjbGllbnRTZWNyZXQsXG4gICAgICAgIHRoaXMuYXV0aGVudGljYXRpb24/LnJlZnJlc2hUb2tlbiBhcyBzdHJpbmdcbiAgICAgIClcbiAgICAgIC5waXBlKHRhcCgodG9rZW46IFRva2VuKSA9PiB0aGlzLnNldFRva2VuKHRva2VuKSkpO1xuICB9XG5cbiAgc2V0QXV0aGVudGljYXRpb24oYWNjZXNzVG9rZW46IHN0cmluZywgcmVmcmVzaFRva2VuOiBzdHJpbmcpIHtcbiAgICB0aGlzLmF1dGhlbnRpY2F0aW9uID0gbmV3IEF1dGhlbnRpY2F0aW9uKGFjY2Vzc1Rva2VuLCByZWZyZXNoVG9rZW4pO1xuICB9XG5cbiAgc2V0UHVibGljVG9rZW4odG9rZW46IFB1YmxpY0F1dGhlbnRpY2F0aW9uKSB7XG4gICAgdGhpcy5wdWJsaWNBdXRoZW50aWNhdGlvbiA9IG5ldyBQdWJsaWNBdXRoZW50aWNhdGlvbih0b2tlbi50b2tlbiwgdG9rZW4udG9rZW5FeHBpcmVzKTtcbiAgfVxuXG4gIHNldFRva2VuKHRva2VuOiBUb2tlbikge1xuICAgIHRoaXMuY3VycmVudFRva2VuU3ViamVjdC5uZXh0KHRva2VuKTtcbiAgICB0aGlzLnNldEF1dGhlbnRpY2F0aW9uKHRva2VuLmFjY2Vzc1Rva2VuLCB0b2tlbi5yZWZyZXNoVG9rZW4pO1xuICB9XG59XG4iXX0=
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtYWNjZXNzL3NyYy9saWIvYXV0aGVudGljYXRpb24vYXV0aGVudGljYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxjQUFjLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFTLE1BQU0sV0FBVyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFbkQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7QUFHdkYsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLElBQUksY0FBYyxDQUFNLEtBQUssQ0FBQyxDQUFDO0FBRWxELE1BQU0sOEJBQThCLEdBQUcscUJBQXFCLENBQUM7QUFDN0QsTUFBTSxzQkFBc0IsR0FBRyxhQUFhLENBQUM7QUFDN0MsTUFBTSw2QkFBNkIsR0FBRyxvQkFBb0IsQ0FBQTtBQVkxRCxNQUFNLE9BQU8scUJBQXFCO0lBV1o7SUFBNkM7SUFBa0I7SUFWM0UsbUJBQW1CLEdBQUcsSUFBSSxlQUFlLENBQWUsSUFBSSxDQUFDLENBQUM7SUFFdEUsY0FBYyxHQUEwQixJQUFJLENBQUM7SUFDN0Msb0JBQW9CLEdBQWdDLElBQUksQ0FBQztJQUN6RCxhQUFhLEdBQTZCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUVsRixJQUFJLGVBQWU7UUFDakIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUMvQixDQUFDO0lBRUQsWUFBb0IsVUFBc0IsRUFBdUIsR0FBUSxFQUFVLFlBQTBCO1FBQXpGLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBdUIsUUFBRyxHQUFILEdBQUcsQ0FBSztRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO0lBQUcsQ0FBQztJQUVqSCx5QkFBeUIsQ0FBQyxRQUFnQixFQUFFLFFBQWdCO1FBQzFELE9BQU8sSUFBSSxDQUFDLFlBQVk7YUFDckIscUJBQXFCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQzthQUNuRixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBYTtRQUMvQixPQUFPLElBQUksQ0FBQyxZQUFZO2FBQ3JCLGNBQWMsQ0FDYixJQUFJLENBQUMsR0FBRyxDQUFDLHlCQUF5QixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUN2RCxJQUFJLENBQUMsR0FBRyxDQUFDLDZCQUE2QixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUMvRCxLQUFLLENBQ047YUFDQSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7UUFDakMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQseUJBQXlCO1FBQ3ZCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7SUFDbkMsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFhLEVBQUUsTUFBcUI7UUFDL0MsTUFBTSxNQUFNLEdBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUU5QixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUM3QixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLDhCQUE4QixFQUFFLEVBQUUsRUFBRSxFQUFDLE1BQU0sRUFBQyxDQUFDLENBQUM7SUFDckgsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFhLEVBQUUsSUFBWSxFQUFFLE1BQWM7UUFDeEQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQywyQkFBMkIsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLHNCQUFzQixFQUFFLEVBQUUsRUFBRSxFQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBQyxDQUFDO2FBQ3RJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxRQUFnQjtRQUNoQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLDJCQUEyQixFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsNkJBQTZCLEVBQUUsRUFBRSxFQUFFLEVBQUMsU0FBUyxFQUFFLFFBQVEsRUFBQyxDQUFDO2FBQ3BJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWTthQUNyQixpQkFBaUIsRUFBRTthQUNuQixJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsS0FBbUIsRUFBRSxFQUFFO1lBQzFCLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFFRCxNQUFNO1FBQ0osT0FBTyxJQUFJLENBQUMsWUFBWTthQUNyQixNQUFNLEVBQUU7YUFDUixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsY0FBYyxDQUFDLFlBQThCLElBQUk7UUFDL0MsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDakMsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUM7UUFFekMsSUFBSSxTQUFTLElBQUksb0JBQW9CLEVBQUUsQ0FBQztZQUN0QyxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUNuRSxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQztRQUNqRixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsWUFBWTthQUNyQixzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsWUFBWSxJQUFJLElBQUksQ0FBQzthQUN6RixJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsS0FBbUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNuRCxDQUFDO0lBQ04sQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUEyQjtRQUN4QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQW1CO1FBQzFCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxLQUFtQjtRQUMzQyxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDbkcsQ0FBQzt1R0F4R1UscUJBQXFCLDRDQVdvQixHQUFHOzJHQVg1QyxxQkFBcUIsY0FGcEIsTUFBTTs7MkZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBWThDLE1BQU07MkJBQUMsR0FBRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRva2VuU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uLCBQdWJsaWNBdXRoZW50aWNhdGlvbiwgUm9sZSwgVG9rZW4gfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2FwaS5zZXJ2aWNlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgR3JhbnRUeXBlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgcHVibGljQXV0aGVudGljYXRpb25GYWN0b3J5LCBzZWFyY2hDbHViRmFjdG9yeSB9IGZyb20gJy4uL3NlcnZpY2VzL2ZhY3Rvcmllcyc7XG5cblxuZXhwb3J0IGNvbnN0IEFQUCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBcHA+KCdhcHAnKTtcblxuY29uc3QgUFVCTElDX0FVVEhfUkVUUklFVkVfQ09ERV9QQVRIID0gJ2F1dGgvcmV0cmlldmUtY29kZS8nO1xuY29uc3QgUFVCTElDX0FVVEhfVE9LRU5fUEFUSCA9ICdhdXRoL3Rva2VuLyc7XG5jb25zdCBQVUJMSUNfQVVUSF9DSEFOR0VfVE9LRU5fUEFUSCA9ICdhdXRoL2NoYW5nZS10b2tlbi8nXG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwIHtcbiAgY2xpZW50SWQ6IHN0cmluZztcbiAgY2xpZW50U2VjcmV0OiBzdHJpbmc7XG4gIGF1dGhvcml6YXRpb25Db2RlQ2xpZW50SWQ/OiBzdHJpbmcsXG4gIGF1dGhvcml6YXRpb25Db2RlQ2xpZW50U2VjcmV0Pzogc3RyaW5nLFxufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBdXRoZW50aWNhdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIGN1cnJlbnRUb2tlblN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRva2VuIHwgbnVsbD4obnVsbCk7XG5cbiAgYXV0aGVudGljYXRpb246IEF1dGhlbnRpY2F0aW9uIHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpY0F1dGhlbnRpY2F0aW9uOiBQdWJsaWNBdXRoZW50aWNhdGlvbiB8IG51bGwgPSBudWxsO1xuICBjdXJyZW50VG9rZW4kOiBPYnNlcnZhYmxlPFRva2VuIHwgbnVsbD4gPSB0aGlzLmN1cnJlbnRUb2tlblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgZ2V0IGlzQXV0aGVudGljYXRlZCgpIHtcbiAgICByZXR1cm4gISF0aGlzLmF1dGhlbnRpY2F0aW9uO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcGlTZXJ2aWNlOiBBcGlTZXJ2aWNlLCBASW5qZWN0KEFQUCkgcHJpdmF0ZSBhcHA6IEFwcCwgcHJpdmF0ZSB0b2tlblNlcnZpY2U6IFRva2VuU2VydmljZSkge31cblxuICBhdXRoZW50aWNhdGVCeUNyZWRlbnRpYWxzKHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy50b2tlblNlcnZpY2VcbiAgICAgIC5nZXRUb2tlbkJ5Q3JlZGVudGlhbHModGhpcy5hcHAuY2xpZW50SWQsIHRoaXMuYXBwLmNsaWVudFNlY3JldCwgdXNlcm5hbWUsIHBhc3N3b3JkKVxuICAgICAgLnBpcGUodGFwKCh0b2tlbikgPT4gdGhpcy5zZXRUb2tlbih0b2tlbikpKTtcbiAgfVxuXG4gIGF1dGhlbnRpY2F0ZUJ5VG9rZW4odG9rZW46IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnRva2VuU2VydmljZVxuICAgICAgLmdldFRva2VuQnlDb2RlKFxuICAgICAgICB0aGlzLmFwcC5hdXRob3JpemF0aW9uQ29kZUNsaWVudElkIHx8IHRoaXMuYXBwLmNsaWVudElkLFxuICAgICAgICB0aGlzLmFwcC5hdXRob3JpemF0aW9uQ29kZUNsaWVudFNlY3JldCB8fCB0aGlzLmFwcC5jbGllbnRTZWNyZXQsXG4gICAgICAgIHRva2VuLFxuICAgICAgKVxuICAgICAgLnBpcGUodGFwKCh0b2tlbikgPT4gdGhpcy5zZXRUb2tlbih0b2tlbikpKTtcbiAgfVxuXG4gIGNsZWFyQXV0aGVudGljYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5hdXRoZW50aWNhdGlvbiA9IG51bGw7XG4gICAgdGhpcy5wdWJsaWNBdXRoZW50aWNhdGlvbiA9IG51bGw7XG4gICAgdGhpcy5jdXJyZW50VG9rZW5TdWJqZWN0Lm5leHQobnVsbCk7XG4gIH1cblxuICBjbGVhclB1YmxpY0F1dGhlbnRpY2F0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMucHVibGljQXV0aGVudGljYXRpb24gPSBudWxsO1xuICB9XG5cbiAgZ2V0TG9naW5Db2RlKGVtYWlsOiBzdHJpbmcsIGNsdWJJZDogc3RyaW5nIHwgbnVsbCkge1xuICAgIGNvbnN0IHBhcmFtczogYW55ID0geyBlbWFpbCB9O1xuXG4gICAgaWYgKGNsdWJJZCkge1xuICAgICAgcGFyYW1zWydjbHViX2lkJ10gPSBjbHViSWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXRDb2xsZWN0aW9uKHNlYXJjaENsdWJGYWN0b3J5LCBSb2xlLlB1YmxpYywgUFVCTElDX0FVVEhfUkVUUklFVkVfQ09ERV9QQVRILCB7fSwge3BhcmFtc30pO1xuICB9XG5cbiAgZ2V0UHVibGljVG9rZW4oZW1haWw6IHN0cmluZywgY29kZTogc3RyaW5nLCBjbHViSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdFJlc291cmNlKHB1YmxpY0F1dGhlbnRpY2F0aW9uRmFjdG9yeSwgUm9sZS5QdWJsaWMsIFBVQkxJQ19BVVRIX1RPS0VOX1BBVEgsIHt9LCB7ZW1haWwsIGNvZGUsIGNsdWJfaWQ6IGNsdWJJZH0pXG4gICAgICAucGlwZSh0YXAoKHRva2VuKSA9PiB0aGlzLnNldFB1YmxpY1Rva2VuKHRva2VuKSkpO1xuICB9XG5cbiAgY2hhbmdlUHVibGljVG9rZW4obWVtYmVySWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdFJlc291cmNlKHB1YmxpY0F1dGhlbnRpY2F0aW9uRmFjdG9yeSwgUm9sZS5QdWJsaWMsIFBVQkxJQ19BVVRIX0NIQU5HRV9UT0tFTl9QQVRILCB7fSwge21lbWJlcl9pZDogbWVtYmVySWR9KVxuICAgICAgLnBpcGUodGFwKCh0b2tlbikgPT4gdGhpcy5zZXRQdWJsaWNUb2tlbih0b2tlbikpKTtcbiAgfVxuXG4gIGdldFNlc3Npb25Ub2tlbigpIHtcbiAgICByZXR1cm4gdGhpcy50b2tlblNlcnZpY2VcbiAgICAgIC5nZXRUb2tlbkJ5U2Vzc2lvbigpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCh0b2tlbjogVG9rZW4gfCBudWxsKSA9PiB7XG4gICAgICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgICAgICB0aGlzLnNldFRva2VuKHRva2VuKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfVxuXG4gIGxvZ291dCgpIHtcbiAgICByZXR1cm4gdGhpcy50b2tlblNlcnZpY2VcbiAgICAgIC5sb2dvdXQoKVxuICAgICAgLnBpcGUodGFwKCgpID0+IHRoaXMuY2xlYXJBdXRoZW50aWNhdGlvbigpKSk7XG4gIH1cblxuICByZWF1dGhlbnRpY2F0ZShncmFudFR5cGU6IEdyYW50VHlwZSB8IG51bGwgPSBudWxsKSB7XG4gICAgbGV0IGNsaWVudElkID0gdGhpcy5hcHAuY2xpZW50SWQ7XG4gICAgbGV0IGNsaWVudFNlY3JldCA9IHRoaXMuYXBwLmNsaWVudFNlY3JldDtcblxuICAgIGlmIChncmFudFR5cGUgPT0gJ2F1dGhvcml6YXRpb25fY29kZScpIHtcbiAgICAgIGNsaWVudElkID0gdGhpcy5hcHAuYXV0aG9yaXphdGlvbkNvZGVDbGllbnRJZCB8fCB0aGlzLmFwcC5jbGllbnRJZDtcbiAgICAgIGNsaWVudFNlY3JldCA9IHRoaXMuYXBwLmF1dGhvcml6YXRpb25Db2RlQ2xpZW50U2VjcmV0IHx8IHRoaXMuYXBwLmNsaWVudFNlY3JldDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50b2tlblNlcnZpY2VcbiAgICAgIC5nZXRUb2tlbkJ5UmVmcmVzaFRva2VuKGNsaWVudElkLCBjbGllbnRTZWNyZXQsIHRoaXMuYXV0aGVudGljYXRpb24/LnJlZnJlc2hUb2tlbiB8fCBudWxsKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgodG9rZW46IFRva2VuIHwgbnVsbCkgPT4gdGhpcy5zZXRUb2tlbih0b2tlbikpXG4gICAgICApO1xuICB9XG5cbiAgc2V0UHVibGljVG9rZW4odG9rZW46IFB1YmxpY0F1dGhlbnRpY2F0aW9uKSB7XG4gICAgdGhpcy5wdWJsaWNBdXRoZW50aWNhdGlvbiA9IG5ldyBQdWJsaWNBdXRoZW50aWNhdGlvbih0b2tlbi50b2tlbiwgdG9rZW4udG9rZW5FeHBpcmVzKTtcbiAgfVxuXG4gIHNldFRva2VuKHRva2VuOiBUb2tlbiB8IG51bGwpIHtcbiAgICB0aGlzLmN1cnJlbnRUb2tlblN1YmplY3QubmV4dCh0b2tlbik7XG4gICAgdGhpcy5zZXRBdXRoZW50aWNhdGlvbih0b2tlbik7XG4gIH1cblxuICBwcml2YXRlIHNldEF1dGhlbnRpY2F0aW9uKHRva2VuOiBUb2tlbiB8IG51bGwpIHtcbiAgICB0aGlzLmF1dGhlbnRpY2F0aW9uID0gISF0b2tlbiA/IG5ldyBBdXRoZW50aWNhdGlvbih0b2tlbi5hY2Nlc3NUb2tlbiwgdG9rZW4ucmVmcmVzaFRva2VuKSA6IG51bGw7XG4gIH1cbn1cbiJdfQ==