@vcd/sdk 15.0.8 → 15.0.10

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.
@@ -1,7 +1,9 @@
1
1
  import { HttpHandler, HttpInterceptor, HttpRequest, HttpEvent } from '@angular/common/http';
2
2
  import { Observable } from 'rxjs';
3
+ import { AuthTokenHolderService } from "../../common";
3
4
  import * as i0 from "@angular/core";
4
5
  export declare class RequestHeadersInterceptor implements HttpInterceptor {
6
+ private authTokenHolderService;
5
7
  private _enabled;
6
8
  set enabled(_enabled: boolean);
7
9
  private _actAs;
@@ -14,9 +16,13 @@ export declare class RequestHeadersInterceptor implements HttpInterceptor {
14
16
  private _authenticationHeader;
15
17
  private _authentication;
16
18
  set authentication(_authentication: string);
19
+ constructor(authTokenHolderService: AuthTokenHolderService);
17
20
  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>;
21
+ private handleRequest;
18
22
  private setAcceptHeader;
19
23
  private setContentTypeHeader;
24
+ private updateToken;
25
+ private isExpired;
20
26
  static ɵfac: i0.ɵɵFactoryDeclaration<RequestHeadersInterceptor, never>;
21
27
  static ɵprov: i0.ɵɵInjectableDeclaration<RequestHeadersInterceptor>;
22
28
  }
@@ -0,0 +1,10 @@
1
+ export declare class DecodedJwt {
2
+ private rawToken;
3
+ header: Record<string, any>;
4
+ payload: Record<string, any>;
5
+ signature: string;
6
+ constructor(rawToken: string);
7
+ private decodeBase64Url;
8
+ isExpired(): boolean;
9
+ toJSON(): Record<string, any>;
10
+ }
@@ -81,10 +81,18 @@ export interface AuthTokenHolderService {
81
81
  * JWT token
82
82
  */
83
83
  jwt?: string;
84
+ /**
85
+ * JWT token async.
86
+ *
87
+ * This method tracks JWT for changes and emits the latest JWT value.
88
+ * The main use case is when the JWT need to refreshed at runtime,
89
+ * this is handled by Refresh-Access-Token feature.
90
+ *
91
+ * If the JWT needs to be renewed all users of it must obtain the last JWT token.
92
+ */
93
+ jwtAsync?: Observable<string>;
84
94
  }
85
- export declare const AuthTokenHolderService: {
86
- token: string;
87
- };
95
+ export declare const AuthTokenHolderService: AuthTokenHolderService;
88
96
  /**
89
97
  * This represents a menu item that can be clicked to perform an action on an entity (e.g. VM).
90
98
  */
@@ -1,16 +1,14 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { HttpResponse } from '@angular/common/http';
3
- import { map } from 'rxjs/operators';
3
+ import { of } from 'rxjs';
4
+ import { filter, first, map, switchMap } from 'rxjs/operators';
4
5
  import { parseHeaderHateoasLinks } from '.';
5
6
  import { HTTP_HEADERS } from './constants';
7
+ import { DecodedJwt } from "../jwt/decoded-jwt";
6
8
  import * as i0 from "@angular/core";
9
+ import * as i1 from "../../common";
7
10
  // tslint:disable:variable-name
8
11
  export class RequestHeadersInterceptor {
9
- constructor() {
10
- this._enabled = true;
11
- this._version = '';
12
- this._authenticationHeader = HTTP_HEADERS.Authorization;
13
- }
14
12
  set enabled(_enabled) {
15
13
  this._enabled = _enabled;
16
14
  }
@@ -31,6 +29,12 @@ export class RequestHeadersInterceptor {
31
29
  this._authenticationHeader = (this._authentication && this._authentication.length > 32) ?
32
30
  HTTP_HEADERS.Authorization : HTTP_HEADERS.x_vcloud_authorization;
33
31
  }
32
+ constructor(authTokenHolderService) {
33
+ this.authTokenHolderService = authTokenHolderService;
34
+ this._enabled = true;
35
+ this._version = '';
36
+ this._authenticationHeader = HTTP_HEADERS.Authorization;
37
+ }
34
38
  intercept(req, next) {
35
39
  let headers = req.headers;
36
40
  if (!headers.has('Accept')) {
@@ -57,7 +61,16 @@ export class RequestHeadersInterceptor {
57
61
  const customReq = req.clone({
58
62
  headers
59
63
  });
60
- return next.handle(customReq).pipe(map((res) => {
64
+ return this.updateToken().pipe(map((jwt) => {
65
+ const doesItUseJWT = (this._authentication && this._authentication.length > 32);
66
+ if (doesItUseJWT) {
67
+ this._authentication = `Bearer ${jwt}`;
68
+ }
69
+ return customReq.clone({ setHeaders: { [this._authenticationHeader]: this._authentication } });
70
+ }), switchMap((clonedRequest) => this.handleRequest(next, clonedRequest)));
71
+ }
72
+ handleRequest(next, clonedRequest) {
73
+ return next.handle(clonedRequest).pipe(map((res) => {
61
74
  if (res instanceof HttpResponse) {
62
75
  if (!res.body || !res.headers) {
63
76
  return res;
@@ -91,10 +104,20 @@ export class RequestHeadersInterceptor {
91
104
  return headers.set('Content-Type', 'application/*+json');
92
105
  }
93
106
  }
107
+ updateToken() {
108
+ if (!this.authTokenHolderService.jwtAsync) {
109
+ return of(this.authTokenHolderService.jwt);
110
+ }
111
+ return this.authTokenHolderService.jwtAsync.pipe(filter((jwt) => !this.isExpired(jwt)), first());
112
+ }
113
+ isExpired(jwt) {
114
+ const decodedJwt = new DecodedJwt(jwt);
115
+ return decodedJwt.isExpired();
116
+ }
94
117
  }
95
- RequestHeadersInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: RequestHeadersInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
118
+ RequestHeadersInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: RequestHeadersInterceptor, deps: [{ token: i1.AuthTokenHolderService }], target: i0.ɵɵFactoryTarget.Injectable });
96
119
  RequestHeadersInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: RequestHeadersInterceptor });
97
120
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: RequestHeadersInterceptor, decorators: [{
98
121
  type: Injectable
99
- }] });
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5oZWFkZXJzLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmNkL3Nkay9zcmMvY2xpZW50L2NsaWVudC9yZXF1ZXN0LmhlYWRlcnMuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQXFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXZILE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxHQUFHLENBQUM7QUFDNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFFM0MsK0JBQStCO0FBRS9CLE1BQU0sT0FBTyx5QkFBeUI7SUFEdEM7UUFFWSxhQUFRLEdBQUcsSUFBSSxDQUFDO1FBZWhCLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFRZCwwQkFBcUIsR0FBVyxZQUFZLENBQUMsYUFBYSxDQUFDO0tBb0Z0RTtJQTFHRyxJQUFJLE9BQU8sQ0FBQyxRQUFpQjtRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUM3QixDQUFDO0lBR0QsSUFBSSxLQUFLLENBQUMsTUFBYztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN6QixDQUFDO0lBR0QsSUFBSSxZQUFZLENBQUMsYUFBcUI7UUFDbEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDdkMsQ0FBQztJQUdELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsUUFBZ0I7UUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDN0IsQ0FBQztJQUlELElBQUksY0FB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LENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ3REO2FBQ0o7WUFDRCxPQUFPLEdBQUcsQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRU8sZUFBZSxDQUFDLE9BQW9CO1FBQ3hDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFdkMsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUNkLFFBQVEsRUFBRTtZQUNOLDhCQUE4QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsY0FBYyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2xGLDRCQUE0QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsY0FBYyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1NBQ25GLENBQ0osQ0FBQztJQUNOLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxPQUFvQixFQUFFLEdBQVc7UUFDMUQsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQzlCLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztTQUMxRDthQUFNO1lBQ0gsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1NBQzVEO0lBQ0wsQ0FBQzs7c0hBM0dRLHlCQUF5QjswSEFBekIseUJBQXlCOzJGQUF6Qix5QkFBeUI7a0JBRHJDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwSGFuZGxlciwgSHR0cEludGVyY2VwdG9yLCBIdHRwUmVxdWVzdCwgSHR0cEV2ZW50LCBIdHRwSGVhZGVycywgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgcGFyc2VIZWFkZXJIYXRlb2FzTGlua3MgfSBmcm9tICcuJztcbmltcG9ydCB7IEhUVFBfSEVBREVSUyB9IGZyb20gJy4vY29uc3RhbnRzJztcblxuLy8gdHNsaW50OmRpc2FibGU6dmFyaWFibGUtbmFtZVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJlcXVlc3RIZWFkZXJzSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICAgIHByaXZhdGUgX2VuYWJsZWQgPSB0cnVlO1xuICAgIHNldCBlbmFibGVkKF9lbmFibGVkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2VuYWJsZWQgPSBfZW5hYmxlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9hY3RBczogc3RyaW5nO1xuICAgIHNldCBhY3RBcyhfYWN0QXM6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9hY3RBcyA9IF9hY3RBcztcbiAgICB9XG4gICAgXG4gICAgcHJpdmF0ZSBfYWN0QXNPcmdOYW1lOiBzdHJpbmc7XG4gICAgc2V0IGFjdEFzT3JnTmFtZShfYWN0QXNPcmdOYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fYWN0QXNPcmdOYW1lID0gX2FjdEFzT3JnTmFtZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF92ZXJzaW9uID0gJyc7XG4gICAgZ2V0IHZlcnNpb24oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZlcnNpb247XG4gICAgfVxuICAgIHNldCB2ZXJzaW9uKF92ZXJzaW9uOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdmVyc2lvbiA9IF92ZXJzaW9uO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2F1dGhlbnRpY2F0aW9uSGVhZGVyOiBzdHJpbmcgPSBIVFRQX0hFQURFUlMuQXV0aG9yaXphdGlvbjtcbiAgICBwcml2YXRlIF9hdXRoZW50aWNhdGlvbjogc3RyaW5nO1xuICAgIHNldCBhdXRoZW50aWNhdGlvbihfYXV0aGVudGljYXRpb246IHN0cmluZykge1xuICAgICAgICB0aGlzLl9hdXRoZW50aWNhdGlvbiA9IF9hdXRoZW50aWNhdGlvbjtcbiAgICAgICAgdGhpcy5fYXV0aGVudGljYXRpb25IZWFkZXIgPSAodGhpcy5fYXV0aGVudGljYXRpb24gJiYgdGhpcy5fYXV0aGVudGljYXRpb24ubGVuZ3RoID4gMzIpID9cbiAgICAgICAgICAgIEhUVFBfSEVBREVSUy5BdXRob3JpemF0aW9uIDogSFRUUF9IRUFERVJTLnhfdmNsb3VkX2F1dGhvcml6YXRpb247XG4gICAgfVxuXG4gICAgaW50ZXJjZXB0KHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgICAgIGxldCBoZWFkZXJzID0gcmVxLmhlYWRlcnM7XG5cbiAgICAgICAgaWYgKCFoZWFkZXJzLmhhcygnQWNjZXB0JykpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSB0aGlzLnNldEFjY2VwdEhlYWRlcihoZWFkZXJzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaGVhZGVycy5oYXMoJ0NvbnRlbnQtVHlwZScpKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gdGhpcy5zZXRDb250ZW50VHlwZUhlYWRlcihoZWFkZXJzLCByZXEudXJsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9hdXRoZW50aWNhdGlvbiAmJiAhaGVhZGVycy5oYXMoSFRUUF9IRUFERVJTLkF1dGhvcml6YXRpb24pKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQodGhpcy5fYXV0aGVudGljYXRpb25IZWFkZXIsIHRoaXMuX2F1dGhlbnRpY2F0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDb3ZlcnMgdGhlIGNhc2Ugd2hlcmUgdGhlIFVzZXIgc2V0IHRoZSBBY3RBcyB0b2tlbiBoaW1zZWxmXG4gICAgICAgICAqL1xuICAgICAgICBpZiAoIWhlYWRlcnMuaGFzKCdYLVZNV0FSRS1WQ0xPVUQtVEVOQU5ULUNPTlRFWFQnKSAmJiB0aGlzLl9hY3RBcykge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdYLVZNV0FSRS1WQ0xPVUQtVEVOQU5ULUNPTlRFWFQnLCB0aGlzLl9hY3RBcyk7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogQ292ZXJzIHRoZSBjYXNlIHdoZXJlIHRoZSBVc2VyIHNldCB0aGUgQWN0QXMgdG9rZW4gaGltc2VsZlxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKCFoZWFkZXJzLmhhcygnWC1WTVdBUkUtVkNMT1VELUFVVEgtQ09OVEVYVCcpICYmIHRoaXMuX2FjdEFzT3JnTmFtZSkge1xuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdYLVZNV0FSRS1WQ0xPVUQtQVVUSC1DT05URVhUJywgdGhpcy5fYWN0QXNPcmdOYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGN1c3RvbVJlcTogSHR0cFJlcXVlc3Q8YW55PiA9IHJlcS5jbG9uZSh7XG4gICAgICAgICAgICBoZWFkZXJzXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShjdXN0b21SZXEpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHJlczogSHR0cEV2ZW50PGFueT4pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzIGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVzLmJvZHkgfHwgIXJlcy5oZWFkZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5oZWFkZXJzLmhhcyhIVFRQX0hFQURFUlMubGluaykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5ib2R5LmxpbmsgPSBwYXJzZUhlYWRlckhhdGVvYXNMaW5rcyhyZXMuaGVhZGVycy5nZXQoSFRUUF9IRUFERVJTLmxpbmspKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMuaGVhZGVycy5oYXMoSFRUUF9IRUFERVJTLkxpbmspKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXMuYm9keS5saW5rID0gcGFyc2VIZWFkZXJIYXRlb2FzTGlua3MocmVzLmhlYWRlcnMuZ2V0KEhUVFBfSEVBREVSUy5MaW5rKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmhlYWRlcnMuaGFzKEhUVFBfSEVBREVSUy5ldGFnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLmJvZHkuZXRhZyA9IHJlcy5oZWFkZXJzLmdldChIVFRQX0hFQURFUlMuZXRhZyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRBY2NlcHRIZWFkZXIoaGVhZGVyczogSHR0cEhlYWRlcnMpOiBIdHRwSGVhZGVycyB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gaGVhZGVycy5nZXQoJ19tdWx0aXNpdGUnKTtcbiAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuZGVsZXRlKCdfbXVsdGlzaXRlJyk7XG5cbiAgICAgICAgcmV0dXJuIGhlYWRlcnMuc2V0KFxuICAgICAgICAgICAgJ0FjY2VwdCcsIFtcbiAgICAgICAgICAgICAgICBgYXBwbGljYXRpb24vKitqc29uO3ZlcnNpb249JHt0aGlzLl92ZXJzaW9ufSR7dmFsdWUgPyBgO211bHRpc2l0ZT0ke3ZhbHVlfWAgOiAnJ31gLFxuICAgICAgICAgICAgICAgIGBhcHBsaWNhdGlvbi9qc29uO3ZlcnNpb249JHt0aGlzLl92ZXJzaW9ufSR7dmFsdWUgPyBgO211bHRpc2l0ZT0ke3ZhbHVlfWAgOiAnJ31gXG4gICAgICAgICAgICBdXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRDb250ZW50VHlwZUhlYWRlcihoZWFkZXJzOiBIdHRwSGVhZGVycywgdXJsOiBzdHJpbmcpOiBIdHRwSGVhZGVycyB7XG4gICAgICAgIGlmICh1cmwuaW5kZXhPZignY2xvdWRhcGknKSA+IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gaGVhZGVycy5zZXQoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gaGVhZGVycy5zZXQoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi8qK2pzb24nKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
122
+ }], ctorParameters: function () { return [{ type: i1.AuthTokenHolderService }]; } });
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5oZWFkZXJzLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmNkL3Nkay9zcmMvY2xpZW50L2NsaWVudC9yZXF1ZXN0LmhlYWRlcnMuaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQXFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZILE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLEdBQUcsQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBRWhELCtCQUErQjtBQUUvQixNQUFNLE9BQU8seUJBQXlCO0lBRWxDLElBQUksT0FBTyxDQUFDLFFBQWlCO1FBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzdCLENBQUM7SUFHRCxJQUFJLEtBQUssQ0FBQyxNQUFjO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3pCLENBQUM7SUFHRCxJQUFJLFlBQVksQ0FBQyxhQUFxQjtRQUNsQyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztJQUN2QyxDQUFDO0lBR0QsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxRQUFnQjtRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUM3QixDQUFD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QXpCLHlCQUF5QjsyRkFBekIseUJBQXlCO2tCQURyQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cEhhbmRsZXIsIEh0dHBJbnRlcmNlcHRvciwgSHR0cFJlcXVlc3QsIEh0dHBFdmVudCwgSHR0cEhlYWRlcnMsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIGZpcnN0LCBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHBhcnNlSGVhZGVySGF0ZW9hc0xpbmtzIH0gZnJvbSAnLic7XG5pbXBvcnQgeyBIVFRQX0hFQURFUlMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBBdXRoVG9rZW5Ib2xkZXJTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvbW1vblwiO1xuaW1wb3J0IHsgRGVjb2RlZEp3dCB9IGZyb20gXCIuLi9qd3QvZGVjb2RlZC1qd3RcIjtcblxuLy8gdHNsaW50OmRpc2FibGU6dmFyaWFibGUtbmFtZVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJlcXVlc3RIZWFkZXJzSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICAgIHByaXZhdGUgX2VuYWJsZWQgPSB0cnVlO1xuICAgIHNldCBlbmFibGVkKF9lbmFibGVkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2VuYWJsZWQgPSBfZW5hYmxlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9hY3RBczogc3RyaW5nO1xuICAgIHNldCBhY3RBcyhfYWN0QXM6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9hY3RBcyA9IF9hY3RBcztcbiAgICB9XG4gICAgXG4gICAgcHJpdmF0ZSBfYWN0QXNPcmdOYW1lOiBzdHJpbmc7XG4gICAgc2V0IGFjdEFzT3JnTmFtZShfYWN0QXNPcmdOYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fYWN0QXNPcmdOYW1lID0gX2FjdEFzT3JnTmFtZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF92ZXJzaW9uID0gJyc7XG4gICAgZ2V0IHZlcnNpb24oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZlcnNpb247XG4gICAgfVxuICAgIHNldCB2ZXJzaW9uKF92ZXJzaW9uOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdmVyc2lvbiA9IF92ZXJzaW9uO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2F1dGhlbnRpY2F0aW9uSGVhZGVyOiBzdHJpbmcgPSBIVFRQX0hFQURFUlMuQXV0aG9yaXphdGlvbjtcbiAgICBwcml2YXRlIF9hdXRoZW50aWNhdGlvbjogc3RyaW5nO1xuICAgIHNldCBhdXRoZW50aWNhdGlvbihfYXV0aGVudGljYXRpb246IHN0cmluZykge1xuICAgICAgICB0aGlzLl9hdXRoZW50aWNhdGlvbiA9IF9hdXRoZW50aWNhdGlvbjtcbiAgICAgICAgdGhpcy5fYXV0aGVudGljYXRpb25IZWFkZXIgPSAodGhpcy5fYXV0aGVudGljYXRpb24gJiYgdGhpcy5fYXV0aGVudGljYXRpb24ubGVuZ3RoID4gMzIpID9cbiAgICAgICAgICAgIEhUVFBfSEVBREVSUy5BdXRob3JpemF0aW9uIDogSFRUUF9IRUFERVJTLnhfdmNsb3VkX2F1dGhvcml6YXRpb247XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgYXV0aFRva2VuSG9sZGVyU2VydmljZTogQXV0aFRva2VuSG9sZGVyU2VydmljZSxcbiAgICApIHt9XG5cbiAgICBpbnRlcmNlcHQocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICAgICAgbGV0IGhlYWRlcnMgPSByZXEuaGVhZGVycztcblxuICAgICAgICBpZiAoIWhlYWRlcnMuaGFzKCdBY2NlcHQnKSkge1xuICAgICAgICAgICAgaGVhZGVycyA9IHRoaXMuc2V0QWNjZXB0SGVhZGVyKGhlYWRlcnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFoZWFkZXJzLmhhcygnQ29udGVudC1UeXBlJykpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSB0aGlzLnNldENvbnRlbnRUeXBlSGVhZGVyKGhlYWRlcnMsIHJlcS51cmwpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2F1dGhlbnRpY2F0aW9uICYmICFoZWFkZXJzLmhhcyhIVFRQX0hFQURFUlMuQXV0aG9yaXphdGlvbikpIHtcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCh0aGlzLl9hdXRoZW50aWNhdGlvbkhlYWRlciwgdGhpcy5fYXV0aGVudGljYXRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENvdmVycyB0aGUgY2FzZSB3aGVyZSB0aGUgVXNlciBzZXQgdGhlIEFjdEFzIHRva2VuIGhpbXNlbGZcbiAgICAgICAgICovXG4gICAgICAgIGlmICghaGVhZGVycy5oYXMoJ1gtVk1XQVJFLVZDTE9VRC1URU5BTlQtQ09OVEVYVCcpICYmIHRoaXMuX2FjdEFzKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ1gtVk1XQVJFLVZDTE9VRC1URU5BTlQtQ09OVEVYVCcsIHRoaXMuX2FjdEFzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDb3ZlcnMgdGhlIGNhc2Ugd2hlcmUgdGhlIFVzZXIgc2V0IHRoZSBBY3RBcyB0b2tlbiBoaW1zZWxmXG4gICAgICAgICAqL1xuICAgICAgICBpZiAoIWhlYWRlcnMuaGFzKCdYLVZNV0FSRS1WQ0xPVUQtQVVUSC1DT05URVhUJykgJiYgdGhpcy5fYWN0QXNPcmdOYW1lKSB7XG4gICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ1gtVk1XQVJFLVZDTE9VRC1BVVRILUNPTlRFWFQnLCB0aGlzLl9hY3RBc09yZ05hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3VzdG9tUmVxOiBIdHRwUmVxdWVzdDxhbnk+ID0gcmVxLmNsb25lKHtcbiAgICAgICAgICAgIGhlYWRlcnNcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZVRva2VuKCkucGlwZShcbiAgICAgICAgICAgIG1hcCgoand0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZG9lc0l0VXNlSldUID0gKHRoaXMuX2F1dGhlbnRpY2F0aW9uICYmIHRoaXMuX2F1dGhlbnRpY2F0aW9uLmxlbmd0aCA+IDMyKTtcbiAgICAgICAgICAgICAgICBpZiAoZG9lc0l0VXNlSldUKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2F1dGhlbnRpY2F0aW9uID0gYEJlYXJlciAke2p3dH1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gY3VzdG9tUmVxLmNsb25lKHsgc2V0SGVhZGVyczogeyBbdGhpcy5fYXV0aGVudGljYXRpb25IZWFkZXJdOiB0aGlzLl9hdXRoZW50aWNhdGlvbiB9IH0pO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKGNsb25lZFJlcXVlc3QpID0+IHRoaXMuaGFuZGxlUmVxdWVzdChuZXh0LCBjbG9uZWRSZXF1ZXN0KSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVSZXF1ZXN0KG5leHQ6IEh0dHBIYW5kbGVyLCBjbG9uZWRSZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+KSB7XG4gICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShjbG9uZWRSZXF1ZXN0KS5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXM6IEh0dHBFdmVudDxhbnk+KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcyBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlcy5ib2R5IHx8ICFyZXMuaGVhZGVycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMuaGVhZGVycy5oYXMoSFRUUF9IRUFERVJTLmxpbmspKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXMuYm9keS5saW5rID0gcGFyc2VIZWFkZXJIYXRlb2FzTGlua3MocmVzLmhlYWRlcnMuZ2V0KEhUVFBfSEVBREVSUy5saW5rKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmhlYWRlcnMuaGFzKEhUVFBfSEVBREVSUy5MaW5rKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLmJvZHkubGluayA9IHBhcnNlSGVhZGVySGF0ZW9hc0xpbmtzKHJlcy5oZWFkZXJzLmdldChIVFRQX0hFQURFUlMuTGluaykpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5oZWFkZXJzLmhhcyhIVFRQX0hFQURFUlMuZXRhZykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5ib2R5LmV0YWcgPSByZXMuaGVhZGVycy5nZXQoSFRUUF9IRUFERVJTLmV0YWcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0QWNjZXB0SGVhZGVyKGhlYWRlcnM6IEh0dHBIZWFkZXJzKTogSHR0cEhlYWRlcnMge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGhlYWRlcnMuZ2V0KCdfbXVsdGlzaXRlJyk7XG4gICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLmRlbGV0ZSgnX211bHRpc2l0ZScpO1xuXG4gICAgICAgIHJldHVybiBoZWFkZXJzLnNldChcbiAgICAgICAgICAgICdBY2NlcHQnLCBbXG4gICAgICAgICAgICAgICAgYGFwcGxpY2F0aW9uLyoranNvbjt2ZXJzaW9uPSR7dGhpcy5fdmVyc2lvbn0ke3ZhbHVlID8gYDttdWx0aXNpdGU9JHt2YWx1ZX1gIDogJyd9YCxcbiAgICAgICAgICAgICAgICBgYXBwbGljYXRpb24vanNvbjt2ZXJzaW9uPSR7dGhpcy5fdmVyc2lvbn0ke3ZhbHVlID8gYDttdWx0aXNpdGU9JHt2YWx1ZX1gIDogJyd9YFxuICAgICAgICAgICAgXVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Q29udGVudFR5cGVIZWFkZXIoaGVhZGVyczogSHR0cEhlYWRlcnMsIHVybDogc3RyaW5nKTogSHR0cEhlYWRlcnMge1xuICAgICAgICBpZiAodXJsLmluZGV4T2YoJ2Nsb3VkYXBpJykgPiAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIGhlYWRlcnMuc2V0KCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGhlYWRlcnMuc2V0KCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vKitqc29uJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVRva2VuKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIGlmICghdGhpcy5hdXRoVG9rZW5Ib2xkZXJTZXJ2aWNlLmp3dEFzeW5jKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YodGhpcy5hdXRoVG9rZW5Ib2xkZXJTZXJ2aWNlLmp3dCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5hdXRoVG9rZW5Ib2xkZXJTZXJ2aWNlLmp3dEFzeW5jLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIoKGp3dCkgPT4gIXRoaXMuaXNFeHBpcmVkKGp3dCkpLFxuICAgICAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgKVxuICAgIH1cblxuICAgIHByaXZhdGUgaXNFeHBpcmVkKGp3dDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGRlY29kZWRKd3QgPSBuZXcgRGVjb2RlZEp3dChqd3QpO1xuICAgICAgICByZXR1cm4gZGVjb2RlZEp3dC5pc0V4cGlyZWQoKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,37 @@
1
+ /*
2
+ * Copyright (c) 2025-2025 Broadcom. All Rights Reserved. Broadcom Confidential. The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
3
+ */
4
+ export class DecodedJwt {
5
+ constructor(rawToken) {
6
+ this.rawToken = rawToken;
7
+ const parts = rawToken.split(".");
8
+ if (parts.length !== 3) {
9
+ throw new Error(`Invalid JWT format: '${rawToken}'`);
10
+ }
11
+ this.header = this.decodeBase64Url(parts[0]);
12
+ this.payload = this.decodeBase64Url(parts[1]);
13
+ this.signature = parts[2];
14
+ }
15
+ decodeBase64Url(base64Url) {
16
+ const base64 = base64Url.replace(/-/g, "+").replace(/_/g, "/");
17
+ const json = decodeURIComponent(Array.prototype.map.call(atob(base64), escapeMultibyteCharacter).join(""));
18
+ return JSON.parse(json);
19
+ }
20
+ isExpired() {
21
+ const OFFSET_SECONDS = 60;
22
+ const exp = this.payload["exp"] || 0;
23
+ const current = Math.floor(Date.now() / 1000) + OFFSET_SECONDS;
24
+ return current >= exp;
25
+ }
26
+ toJSON() {
27
+ return {
28
+ header: this.header,
29
+ payload: this.payload,
30
+ signature: this.signature,
31
+ };
32
+ }
33
+ }
34
+ function escapeMultibyteCharacter(c) {
35
+ return "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2);
36
+ }
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb2RlZC1qd3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92Y2Qvc2RrL3NyYy9jbGllbnQvand0L2RlY29kZWQtand0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsTUFBTSxPQUFPLFVBQVU7SUFLbkIsWUFBb0IsUUFBZ0I7UUFBaEIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsUUFBUSxHQUFHLENBQUMsQ0FBQztTQUN4RDtRQUVELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVPLGVBQWUsQ0FBQyxTQUFpQjtRQUNyQyxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sSUFBSSxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsd0JBQXdCLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzRyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELFNBQVM7UUFDTCxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFDMUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsY0FBYyxDQUFDO1FBQy9ELE9BQU8sT0FBTyxJQUFJLEdBQUcsQ0FBQztJQUMxQixDQUFDO0lBRUQsTUFBTTtRQUNGLE9BQU87WUFDSCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztTQUM1QixDQUFDO0lBQ04sQ0FBQztDQUNKO0FBRUQsU0FBUyx3QkFBd0IsQ0FBQyxDQUFTO0lBQ3ZDLE9BQU8sR0FBRyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjUtMjAyNSBCcm9hZGNvbS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gQnJvYWRjb20gQ29uZmlkZW50aWFsLiBUaGUgdGVybSBcIkJyb2FkY29tXCIgcmVmZXJzIHRvIEJyb2FkY29tIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuXG4gKi9cblxuZXhwb3J0IGNsYXNzIERlY29kZWRKd3Qge1xuICAgIGhlYWRlcjogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBwYXlsb2FkOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByYXdUb2tlbjogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHBhcnRzID0gcmF3VG9rZW4uc3BsaXQoXCIuXCIpO1xuICAgICAgICBpZiAocGFydHMubGVuZ3RoICE9PSAzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgSldUIGZvcm1hdDogJyR7cmF3VG9rZW59J2ApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5oZWFkZXIgPSB0aGlzLmRlY29kZUJhc2U2NFVybChwYXJ0c1swXSk7XG4gICAgICAgIHRoaXMucGF5bG9hZCA9IHRoaXMuZGVjb2RlQmFzZTY0VXJsKHBhcnRzWzFdKTtcbiAgICAgICAgdGhpcy5zaWduYXR1cmUgPSBwYXJ0c1syXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlY29kZUJhc2U2NFVybChiYXNlNjRVcmw6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgICAgICBjb25zdCBiYXNlNjQgPSBiYXNlNjRVcmwucmVwbGFjZSgvLS9nLCBcIitcIikucmVwbGFjZSgvXy9nLCBcIi9cIik7XG4gICAgICAgIGNvbnN0IGpzb24gPSBkZWNvZGVVUklDb21wb25lbnQoQXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKGF0b2IoYmFzZTY0KSwgZXNjYXBlTXVsdGlieXRlQ2hhcmFjdGVyKS5qb2luKFwiXCIpKTtcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoanNvbik7XG4gICAgfVxuXG4gICAgaXNFeHBpcmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBPRkZTRVRfU0VDT05EUyA9IDYwO1xuICAgICAgICBjb25zdCBleHAgPSB0aGlzLnBheWxvYWRbXCJleHBcIl0gfHwgMDtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApICsgT0ZGU0VUX1NFQ09ORFM7XG4gICAgICAgIHJldHVybiBjdXJyZW50ID49IGV4cDtcbiAgICB9XG5cbiAgICB0b0pTT04oKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBoZWFkZXI6IHRoaXMuaGVhZGVyLFxuICAgICAgICAgICAgcGF5bG9hZDogdGhpcy5wYXlsb2FkLFxuICAgICAgICAgICAgc2lnbmF0dXJlOiB0aGlzLnNpZ25hdHVyZSxcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGVzY2FwZU11bHRpYnl0ZUNoYXJhY3RlcihjOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBcIiVcIiArIChcIjAwXCIgKyBjLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtMik7XG59XG4iXX0=
@@ -82,4 +82,4 @@ export class _WizardExtensionWithContextComponent extends _WizardExtensionCompon
82
82
  }
83
83
  // tslint:disable-next-line:max-line-length
84
84
  export const WizardExtensionWithContextComponent = containerHooks.WizardExtensionWithContextComponent;
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLWhvb2tzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmNkL3Nkay9zcmMvY29tbW9uL2NvbnRhaW5lci1ob29rcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHN0MsMERBQTBEO0FBQzFELElBQUksQ0FBRSxNQUFjLENBQUMsTUFBTSxJQUFJLENBQUUsTUFBYyxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksQ0FBRSxNQUFjLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUU7SUFDckcsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0NBQ2xEO0FBRUQsSUFBSSxjQUFjLEdBQVMsTUFBYyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQzdFLElBQUksQ0FBQyxjQUFjLEVBQUU7SUFDakIsY0FBYyxHQUFJLE1BQWMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0NBQzFFO0FBRUQsSUFBSSxDQUFDLGNBQWMsRUFBRTtJQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7Q0FDOUU7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQTJCLGNBQWMsQ0FBQyxZQUFZLENBQUM7QUFFaEY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQTJCLGNBQWMsQ0FBQyxZQUFZLENBQUM7QUFFaEY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUEyQixjQUFjLENBQUMsYUFBYSxDQUFDO0FBRWxGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUEyQixjQUFjLENBQUMsb0JBQW9CLENBQUM7QUFFaEc7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUEyQixjQUFjLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFFekg7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQTJCLGNBQWMsQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBRTNJOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUEyQixjQUFjLENBQUMsZUFBZSxDQUFDO0FBRXRGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUE0QixjQUFjLENBQUMsUUFBUSxDQUFDO0FBZ0N6RSxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBdUMsY0FBYyxDQUFDLDhCQUE4QixDQUFDO0FBaUJoSSxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBb0IsY0FBYyxDQUFDLHNCQUFzQixDQUFDO0FBK0M3Rjs7R0FFRztBQUNILHNDQUFzQztBQUN0QyxNQUFNLE9BQWdCLCtCQUErQjtDQWlCcEQ7QUFDRCxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBMkMsY0FBYyxDQUFDLDhCQUE4QixDQUFDO0FBRXBJLHNDQUFzQztBQUN0QyxNQUFNLE9BQWdCLHlCQUF5QjtDQVM5QztBQUVELE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFxQyxjQUFjLENBQUMsd0JBQXdCLENBQUM7QUFNbEgsc0NBQXNDO0FBQ3RDLE1BQU0sT0FBZ0IsdUNBQWlELFNBQVEseUJBQWtDO0NBS2hIO0FBRUQsMkNBQTJDO0FBQzNDLE1BQU0sQ0FBQyxNQUFNLHNDQUFzQyxHQUFtRCxjQUFjLENBQUMsc0NBQXNDLENBQUM7QUFFNUo7Ozs7O0dBS0c7QUFDSCxzQ0FBc0M7QUFDdEMsTUFBTSxPQUFnQixvQ0FBOEMsU0FBUSx5QkFBa0M7Q0FRN0c7QUFFRCwyQ0FBMkM7QUFDM0MsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQWdELGNBQWMsQ0FBQyxtQ0FBbUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBpcyB0aGUgY3VycmVudGx5IHN1cHBvcnRlZCAtIGFsYmVpdCB2ZXJ5IG1pbmltYWwgLSBwdWJsaWMgU0RLLlxuICovXG5pbXBvcnQge0luamVjdGlvblRva2VufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbi8vIEJpbmQgc3RyYWlnaHQgaW50byB0aGUgaG9va3MgcHJvdmlkZWQgYnkgdGhlIGNvbnRhaW5lci5cbmlmICghKHdpbmRvdyBhcyBhbnkpLlN5c3RlbSB8fCAhKHdpbmRvdyBhcyBhbnkpLlN5c3RlbS5yZWdpc3RyeSB8fCAhKHdpbmRvdyBhcyBhbnkpLlN5c3RlbS5yZWdpc3RyeS5nZXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1N5c3RlbUpTIHJlZ2lzdHJ5IG5vdCBmb3VuZCcpO1xufVxuXG5sZXQgY29udGFpbmVySG9va3M6IGFueSA9ICh3aW5kb3cgYXMgYW55KS5TeXN0ZW0ucmVnaXN0cnkuZ2V0KCdAdmNkL2NvbW1vbicpO1xuaWYgKCFjb250YWluZXJIb29rcykge1xuICAgIGNvbnRhaW5lckhvb2tzID0gKHdpbmRvdyBhcyBhbnkpLlN5c3RlbS5yZWdpc3RyeS5nZXQoJ0B2Y2QtdWkvY29tbW9uJyk7XG59XG5cbmlmICghY29udGFpbmVySG9va3MpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZDRCBVSSBjb250YWluZXIgaG9va3Mgbm90IHByZXNlbnQgaW4gU3lzdGVtSlMgcmVnaXN0cnknKTtcbn1cblxuLyoqXG4gKiBXaXJlIGluIGFzIGEgc3RyaW5nLiAgR2l2ZXMgdGhlIHJvb3QgVVJMIGZvciBBUEkgYWNjZXNzIChmb3IgZXhhbXBsZSwgdGhlIGxvYWQgYmFsYW5jZXIgVVJMXG4gKiBvciB0aGUgc2luZ2xlLWNlbGwgVVJMKS5cbiAqL1xuZXhwb3J0IGNvbnN0IEFQSV9ST09UX1VSTDogSW5qZWN0aW9uVG9rZW48c3RyaW5nPiA9IGNvbnRhaW5lckhvb2tzLkFQSV9ST09UX1VSTDtcblxuLyoqXG4gKiBXaXJlIGluIGFzIGEgc3RyaW5nLiAgR2l2ZXMgdGhlIHJvb3QgVVJMIGZvciB0aGUgbGVnYWN5IEZsZXggYXBwbGljYXRpb24uXG4gKi9cbmV4cG9ydCBjb25zdCBGTEVYX0FQUF9VUkw6IEluamVjdGlvblRva2VuPHN0cmluZz4gPSBjb250YWluZXJIb29rcy5BUElfUk9PVF9VUkw7XG5cbi8qKlxuICogV2lyZSBpbiBhcyBhIHN0cmluZy4gIEdpdmVzIHRoZSBjdXJyZW50IHNjb3BlIG9mIHRoZSBWQ0QtVUkuICBBcyBvZiBjdXJyZW50LCB0aGlzIHdpbGwgYmVcbiAqIGVpdGhlciAndGVuYW50JyBmb3IgdGhlIHRlbmFudCBwb3J0YWwsIG9yICdzZXJ2aWNlLXByb3ZpZGVyJyBmb3IgdGhlIHNlcnZpY2UtcHJvdmlkZXIgcG9ydGFsLlxuICovXG5leHBvcnQgY29uc3QgU0VTU0lPTl9TQ09QRTogSW5qZWN0aW9uVG9rZW48c3RyaW5nPiA9IGNvbnRhaW5lckhvb2tzLlNFU1NJT05fU0NPUEU7XG5cbi8qKlxuICogV2lyZSBpbiBhcyBhIHN0cmluZy4gIEdpdmVzIHRoZSB1bmlxdWUgbmFtZSAobm90IHRoZSBkaXNwbGF5IG5hbWUpIG9mIHRoZSBjdXJyZW50IHRlbmFudFxuICogb3JnYW5pemF0aW9uIHRoYXQgdGhlIFZDRC1VSSBpcyBiZWluZyB1c2VkIGZvci5cbiAqL1xuZXhwb3J0IGNvbnN0IFNFU1NJT05fT1JHQU5JWkFUSU9OOiBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+ID0gY29udGFpbmVySG9va3MuU0VTU0lPTl9PUkdBTklaQVRJT047XG5cbi8qKlxuICogV2lyZSBpbiBhcyBhIHN0cmluZy4gIEdpdmVzIHRoZSBVVUlEIGlkZW50aWZpZXIgb2YgdGhlIGN1cnJlbnQgdGVuYW50XG4gKiBvcmdhbml6YXRpb24gdGhhdCB0aGUgVkNELVVJIGlzIGJlaW5nIHVzZWQgZm9yLlxuICovXG5leHBvcnQgY29uc3QgU0VTU0lPTl9PUkdfSUQ6IEluamVjdGlvblRva2VuPHN0cmluZz4gPSBjb250YWluZXJIb29rcy5TRVNTSU9OX09SR19JRCA/IGNvbnRhaW5lckhvb2tzLlNFU1NJT05fT1JHX0lEIDogJyc7XG5cbi8qKlxuICogV2lyZSBpbiBhcyBhIHN0cmluZy4gIEdpdmVzIHRoZSBmdWxsIHJvb3QgcGF0aCBmb3IgbW9kdWxlIGFzc2V0cyAoZS5nLiBpbWFnZXMsIHNjcmlwdHMsIHRleHQgZmlsZXMpXG4gKlxuICogQVRURU5USU9OIVxuICogQWRkIHx8IG5ldyBJbmplY3Rpb25Ub2tlbiB0byB3b3JrYXJvdW5kIHRoZSBBbmd1bGFyIHNlY3VyaXR5IG1lY2hhbmljcyB3aGljaCBwcmV2ZW50IHVzZSBvZiBpbmplY3Rpb24gdG9rZW5zXG4gKiB3aGljaCBwb3RlbnRpYWxseSBhcmUgbm90IGRlZmllbmQuIFRoZSBzYW1lIGZpeCBjYW4gYmUgYXBwbGllZCBmb3IgdGhlIHJlc3QgdG9rZW5zIGlmIG5lZWRlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IEVYVEVOU0lPTl9BU1NFVF9VUkw6IEluamVjdGlvblRva2VuPHN0cmluZz4gPSBjb250YWluZXJIb29rcy5FWFRFTlNJT05fQVNTRVRfVVJMIHx8IG5ldyBJbmplY3Rpb25Ub2tlbignRVhURU5TSU9OX0FTU0VUX1VSTCcpO1xuXG4vKipcbiAqIFdpcmUgaW4gYXMgYSBzdHJpbmcuICBHaXZlcyB0aGUgQW5ndWxhciAyIHJvdXRlIHRoYXQgdGhlIG1vZHVsZSBpcyByZWdpc3RlcmVkIHVuZGVyLlxuICovXG5leHBvcnQgY29uc3QgRVhURU5TSU9OX1JPVVRFOiBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+ID0gY29udGFpbmVySG9va3MuRVhURU5TSU9OX1JPVVRFO1xuXG4vKipcbiAqIFdpcmUgaW4gYXMgYSBib29sZWFuLiAgVHJ1ZSBpZiBydW5uaW5nIHVuZGVyIHRoZSBTREssIGZhbHNlIGlmIHJ1bm5pbmcgaW4gcHJvZHVjdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IFNES19NT0RFOiBJbmplY3Rpb25Ub2tlbjxib29sZWFuPiA9IGNvbnRhaW5lckhvb2tzLlNES19NT0RFO1xuXG4vKipcbiAqIFBheWxvYWQgZm9yIHJlZ2lzdGVyaW5nIGEgbmF2aWdhdGlvbiBtZW51IGVudHJ5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuc2lvbk5hdlJlZ2lzdHJhdGlvbiB7XG4gICAgLyoqXG4gICAgICogVGhlIHJvdXRlciBwYXRoIHRvIG5hdmlnYXRlIHRvIHdoZW4gc2VsZWN0ZWQuXG4gICAgICovXG4gICAgcGF0aDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogaTE4IGtleSBmb3IgbmFtZSBvZiBleHRlbnNpb24sIHRvIGJlIHVzZWQgYXMgdGV4dCBmb3IgbGlua3NcbiAgICAgKi9cbiAgICBuYW1lQ29kZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogaTE4biBrZXkgZm9yIGRlc2NyaXB0aW9uIG9mIGV4dGVuc2lvbiwgdG8gYmUgdXNlZCBvbiBob3ZlciBmb3IgbGlua3NcbiAgICAgKi9cbiAgICBkZXNjcmlwdGlvbkNvZGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBEaXNwYXRjaCB0aGlzIHRvIHRoZSByZWR1eCBzdG9yZSB0byByZWdpc3RlciBhIG5hdmlnYXRpb24gbWVudS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25OYXZSZWdpc3RyYXRpb25BY3Rpb24ge1xuICAgIHBheWxvYWQ6IEV4dGVuc2lvbk5hdlJlZ2lzdHJhdGlvbjtcbiAgICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEV4dGVuc2lvbk5hdlJlZ2lzdHJhdGlvbkFjdGlvbkN0b3IgPSBuZXcocGF5bG9hZDogRXh0ZW5zaW9uTmF2UmVnaXN0cmF0aW9uKSA9PiBFeHRlbnNpb25OYXZSZWdpc3RyYXRpb25BY3Rpb247XG5cbmV4cG9ydCBjb25zdCBFeHRlbnNpb25OYXZSZWdpc3RyYXRpb25BY3Rpb246IEV4dGVuc2lvbk5hdlJlZ2lzdHJhdGlvbkFjdGlvbkN0b3IgPSBjb250YWluZXJIb29rcy5FeHRlbnNpb25OYXZSZWdpc3RyYXRpb25BY3Rpb247XG5cbi8qKlxuICogSW5qZWN0IHRoaXMgdG8gYWNjZXNzIHRoZSBhdXRoZW50aWNhdGlvbiB0b2tlbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRoVG9rZW5Ib2xkZXJTZXJ2aWNlIHtcbiAgICAvKipcbiAgICAgKiBUaGUgYXV0aGVudGljYXRpb24gdG9rZW4uXG4gICAgICovXG4gICAgdG9rZW46IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEpXVCB0b2tlblxuICAgICAqL1xuICAgIGp3dD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IEF1dGhUb2tlbkhvbGRlclNlcnZpY2U6IHt0b2tlbjogc3RyaW5nfSA9IGNvbnRhaW5lckhvb2tzLkF1dGhUb2tlbkhvbGRlclNlcnZpY2U7XG5cbi8qKlxuICogVGhpcyByZXByZXNlbnRzIGEgbWVudSBpdGVtIHRoYXQgY2FuIGJlIGNsaWNrZWQgdG8gcGVyZm9ybSBhbiBhY3Rpb24gb24gYW4gZW50aXR5IChlLmcuIFZNKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlBY3Rpb25FeHRlbnNpb25NZW51SXRlbSB7XG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBhIHVuaXF1ZSBVUk4gaWRlbnRpZnlpbmcgdGhlIGFjdGlvbi4gVGhpcyBpcyBzbyB0aGUgY29tcG9uZW50IGNhbiBiZSBub3RpZmllZCB3aGljaCBhY3Rpb24gd2FzIHJlcXVlc3RlZC5cbiAgICAgKi9cbiAgICB1cm46IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgdGhlIGxhYmVsIGZvciB0aGUgbWVudSBpdGVtLiBJdCBpcyBub3QgYXV0b21hdGljYWxseSB0cmFuc2xhdGVkLlxuICAgICAqL1xuICAgIHRleHQ6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgdGhlIGVuYWJsZWQgc3RhdGUgZm9yIHRoZSBtZW51IGl0ZW0uXG4gICAgICovXG4gICAgZW5hYmxlZDogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgdGhlIGJ1c3kgc3RhdGUgZm9yIHRoZSBtZW51IGl0ZW0uXG4gICAgICovXG4gICAgYnVzeTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUaGlzIHJlcHJlc2VudHMgYSBzdWItbWVudSB0aGF0IGNvbnRhaW5zIG90aGVyIHN1Yi1tZW51cyBvciBtZW51IGFjdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5QWN0aW9uRXh0ZW5zaW9uU3VibWVudSB7XG4gICAgLyoqXG4gICAgICogVGhpcyBpcyB0aGUgbGFiZWwgZm9yIHRoZSBzdWItbWVudS4gSXQgaXMgbm90IGF1dG9tYXRpY2FsbHkgdHJhbnNsYXRlZC5cbiAgICAgKi9cbiAgICB0ZXh0OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGFuIGFyYml0cmFyeSwgb3JkZXJlZCBsaXN0IG9mIEVudGl0eUFjdGlvbk1lbnVJdGVtLlxuICAgICAqL1xuICAgIGNoaWxkcmVuOiBFbnRpdHlBY3Rpb25FeHRlbnNpb25NZW51SXRlbVtdO1xufVxuXG4vKipcbiAqIFRoaXMgcmVwcmVzZW50cyBtZW51IGluZm9ybWF0aW9uIGZvciBhbiBlbnRpdHkgYWN0aW9uLlxuICovXG5leHBvcnQgdHlwZSBFbnRpdHlBY3Rpb25FeHRlbnNpb25NZW51RW50cnkgPSBFbnRpdHlBY3Rpb25FeHRlbnNpb25NZW51SXRlbSB8IEVudGl0eUFjdGlvbkV4dGVuc2lvblN1Ym1lbnU7XG5cbi8qKlxuICogRXZlcnkgY29tcG9uZW50IHJlZmVyZW5jZWQgYnkgYW4gZW50aXR5IGFjdGlvbiBleHRlbnNpb24gcG9pbnQgbXVzdCBpbmhlcml0IGZyb20gdGhpcy5cbiAqL1xuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNsYXNzLW5hbWVcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBfRW50aXR5QWN0aW9uRXh0ZW5zaW9uQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiBUaGlzIHJldHVybnMgaXMgYW4gT2JzZXJ2YWJsZSB0aGF0IGRlZmluZXMgdGhlIG1lbnUgZW50cnkgZm9yIHRoaXMgY29tcG9uZW50LiBUaGlzIGlzIGFjdGl2ZWx5IGJvdW5kIC1cbiAgICAgKiB0aGUgY29tcG9uZW50IGlzIGFibGUgdG8gY2hhbmdlIGl0IGluIG9yZGVyIHRvIGhhdmUgdGhlIG1lbnUgY2hhbmdlIChmb3IgZXhhbXBsZSwgdG8gY2hhbmdlIGJ1c3lcbiAgICAgKiBvciBlbmFibGVkIHN0YXRlcykuXG4gICAgICovXG4gICAgYWJzdHJhY3QgZ2V0TWVudUVudHJ5KGVudGl0eVVybjogc3RyaW5nKTogT2JzZXJ2YWJsZTxFbnRpdHlBY3Rpb25FeHRlbnNpb25NZW51RW50cnk+O1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBmaWVsZCBpcyBhIG1ldGhvZCB0aGF0IGlzIGNhbGxlZCBpZiBhIG1lbnUgaXRlbSBpcyBjbGlja2VkIHdoaWxlIGVuYWJsZWQuIEl0IHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIG1lbnVcbiAgICAgKiBpdGVtJ3MgVVJOIGFuZCB0aGUgVVJOIG9mIHRoZSBlbnRpdHkgdGhhdCB0aGUgYWN0aW9uIGlzIGJlaW5nIGNhbGxlZCBmb3IgKGUuZy4gdGhlIFVSTiBvZiB0aGUgVk0gYmVpbmcgZWRpdGVkKS5cbiAgICAgKiBJdCBtdXN0IHJldHVybiBhIHNpbmdsZS1zaG90IChlLmcuIG9mLCBmcm9tUHJvbWlzZSBvciAuZmlyc3QpIE9ic2VydmFibGUgb24gY29tcGxldGlvbi4gVGhpcyBPYnNlcnZhYmxlIHJldHVybnNcbiAgICAgKiBhIHNpbmdsZSB2YWx1ZSwgcmVmcmVzaFJlcXVlc3RlZC4gSWYgdGhpcyBpcyB0cnVlLCB0aGUgZW50aXR5IGJlaW5nIGVkaXRlZCB3aWxsIGJlIGltbWVkaWF0ZWx5IHJlZnJlc2hlZC5cbiAgICAgKiBAcGFyYW0gbWVudUl0ZW1Vcm4gdGhlIFVSTiBvZiB0aGUgY2xpY2tlZCBtZW51IGl0ZW1cbiAgICAgKiBAcGFyYW0gZW50aXR5VXJuVGhlIFVSTiBvZiB0aGUgZW50aXR5IHRoYXQgdGhlIGFjdGlvbiBpcyBiZWluZyBjYWxsZWQgZm9yXG4gICAgICovXG4gICAgIGFic3RyYWN0IHBlcmZvcm1BY3Rpb24obWVudUl0ZW1Vcm46IHN0cmluZywgZW50aXR5VXJuOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHsgcmVmcmVzaFJlcXVlc3RlZDogYm9vbGVhbiB9Pjtcbn1cbmV4cG9ydCBjb25zdCBFbnRpdHlBY3Rpb25FeHRlbnNpb25Db21wb25lbnQ6IHR5cGVvZiBfRW50aXR5QWN0aW9uRXh0ZW5zaW9uQ29tcG9uZW50ID0gY29udGFpbmVySG9va3MuRW50aXR5QWN0aW9uRXh0ZW5zaW9uQ29tcG9uZW50O1xuXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Y2xhc3MtbmFtZVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIF9XaXphcmRFeHRlbnNpb25Db21wb25lbnQ8UCwgUiwgRT4ge1xuICAgIC8qKlxuICAgICAqIERlZmluZSBtZXRob2Qgd2hpY2ggd2lsbCBiZSBleGVjdXRlZCBieSB0aGUgRXh0ZW5zaW9uIFBvaW50IE9yY2hlc3RyYXRvcixcbiAgICAgKiB3aGVuIGNlcnRhaW4gZXZlbnQgaXMgdHJpZ2dlcmVkLlxuICAgICAqIEBwYXJhbSBwYXlsb2FkIC0gdGhlIHBheWxvYWQgb2YgdGhlIHJlcXVlc3QgdHJpZ2dlcmVkIGJ5IHRoZSBDb3JlIFVJLlxuICAgICAqIEBwYXJhbSByZXNwb25zZSAtIHRoZSByZXNwb25zZSBmcm9tIHRoZSByZXF1ZXN0IHRyaWdnZXJlZCBieSB0aGUgQ29yZSBVSS5cbiAgICAgKiBAcGFyYW0gZXJyb3IgLSB0aGUgQ29yZSBVSSB3aWxsIHJlcHJvdCBhbnkgZXJyb3IgdGhhdCBtYXkgYXBwZWFyIGR1cmluZyBleGVjdXRpb24uXG4gICAgICovXG4gICAgYWJzdHJhY3QgcGVyZm9ybUFjdGlvbihwYXlsb2FkOiBQLCByZXNwb25zZTogUiwgZXJyb3I6IEUpOiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgV2l6YXJkRXh0ZW5zaW9uQ29tcG9uZW50OiB0eXBlb2YgX1dpemFyZEV4dGVuc2lvbkNvbXBvbmVudCA9IGNvbnRhaW5lckhvb2tzLldpemFyZEV4dGVuc2lvbkNvbXBvbmVudDtcblxuZXhwb3J0IGludGVyZmFjZSBXaXphcmRFeHRlbnNpb25TdGF0ZSB7XG4gICAgaXNWYWxpZDogYm9vbGVhbjtcbn1cblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNsYXNzLW5hbWVcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBfV2l6YXJkRXh0ZW5zaW9uV2l0aFZhbGlkYXRpb25Db21wb25lbnQ8UCwgUiwgRT4gZXh0ZW5kcyBfV2l6YXJkRXh0ZW5zaW9uQ29tcG9uZW50PFAsIFIsIEU+IHtcbiAgICAvKipcbiAgICAgKiBHZXQgZXh0ZW5zaW9uIHBvaW50IHN0YXRlLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldFN0YXRlKCk6IE9ic2VydmFibGU8V2l6YXJkRXh0ZW5zaW9uU3RhdGU+O1xufVxuXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bWF4LWxpbmUtbGVuZ3RoXG5leHBvcnQgY29uc3QgV2l6YXJkRXh0ZW5zaW9uV2l0aFZhbGlkYXRpb25Db21wb25lbnQ6IHR5cGVvZiBfV2l6YXJkRXh0ZW5zaW9uV2l0aFZhbGlkYXRpb25Db21wb25lbnQgPSBjb250YWluZXJIb29rcy5XaXphcmRFeHRlbnNpb25XaXRoVmFsaWRhdGlvbkNvbXBvbmVudDtcblxuLyoqXG4gKiBFdmVyeSBjb21wb25lbnQtYmFzZWQgRXh0ZW5zaW9uIFBvaW50IHRoYXQgaXMgcmVuZGVyZCBpbiBDbG91ZCBEaXJlY3RvciBVSSBFbnRpdHkgRGV0YWlsc1xuICogbXVzdCBleHRlbmQgdGhhdCBjbGFzcyB0byBvYnRhaW4gY29udGV4dCBhYm91dCB0aGUgRW50aXR5LlxuICogXG4gKiBTZWUgY29tbWVudHMgb2YgdGhlIG1ldGhvZHMgb2YgdGhlIGFic3RyYWN0IGNsYXNzIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICovXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Y2xhc3MtbmFtZVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIF9XaXphcmRFeHRlbnNpb25XaXRoQ29udGV4dENvbXBvbmVudDxQLCBSLCBFPiBleHRlbmRzIF9XaXphcmRFeHRlbnNpb25Db21wb25lbnQ8UCwgUiwgRT4ge1xuICAgICAvKipcbiAgICAgKiBEZWZpbmUgbWV0aG9kIHdoaWNoIHdpbGwgYmUgZXhlY3V0ZWQgb24gaW5pdCBhbmQgaW5mb3JtYXRpb25cbiAgICAgKiBhYm91dCBjb250ZXh0IG9iamVjdCB3aWxsIGJlIHBhc3NlZCB0byB0aGUgRXh0ZW5zaW9uIFBvaW50LlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBjb250ZXh0IHJlZmVyZW5jZSB0byB0aGUgY29udGV4dCBvYmplY3QuXG4gICAgICovXG4gICAgIGFic3RyYWN0IG9uQ29udGV4dChjb250ZXh0OiBzdHJpbmcpOiB2b2lkO1xufVxuXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bWF4LWxpbmUtbGVuZ3RoXG5leHBvcnQgY29uc3QgV2l6YXJkRXh0ZW5zaW9uV2l0aENvbnRleHRDb21wb25lbnQ6IHR5cGVvZiBfV2l6YXJkRXh0ZW5zaW9uV2l0aENvbnRleHRDb21wb25lbnQgPSBjb250YWluZXJIb29rcy5XaXphcmRFeHRlbnNpb25XaXRoQ29udGV4dENvbXBvbmVudDtcbiJdfQ==
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLWhvb2tzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmNkL3Nkay9zcmMvY29tbW9uL2NvbnRhaW5lci1ob29rcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHN0MsMERBQTBEO0FBQzFELElBQUksQ0FBRSxNQUFjLENBQUMsTUFBTSxJQUFJLENBQUUsTUFBYyxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksQ0FBRSxNQUFjLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUU7SUFDckcsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0NBQ2xEO0FBRUQsSUFBSSxjQUFjLEdBQVMsTUFBYyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQzdFLElBQUksQ0FBQyxjQUFjLEVBQUU7SUFDakIsY0FBYyxHQUFJLE1BQWMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0NBQzFFO0FBRUQsSUFBSSxDQUFDLGNBQWMsRUFBRTtJQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7Q0FDOUU7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQTJCLGNBQWMsQ0FBQyxZQUFZLENBQUM7QUFFaEY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQTJCLGNBQWMsQ0FBQyxZQUFZLENBQUM7QUFFaEY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUEyQixjQUFjLENBQUMsYUFBYSxDQUFDO0FBRWxGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUEyQixjQUFjLENBQUMsb0JBQW9CLENBQUM7QUFFaEc7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUEyQixjQUFjLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFFekg7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQTJCLGNBQWMsQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBRTNJOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUEyQixjQUFjLENBQUMsZUFBZSxDQUFDO0FBRXRGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUE0QixjQUFjLENBQUMsUUFBUSxDQUFDO0FBZ0N6RSxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBdUMsY0FBYyxDQUFDLDhCQUE4QixDQUFDO0FBNEJoSSxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBMkIsY0FBYyxDQUFDLHNCQUFzQixDQUFDO0FBK0NwRzs7R0FFRztBQUNILHNDQUFzQztBQUN0QyxNQUFNLE9BQWdCLCtCQUErQjtDQWlCcEQ7QUFDRCxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBMkMsY0FBYyxDQUFDLDhCQUE4QixDQUFDO0FBRXBJLHNDQUFzQztBQUN0QyxNQUFNLE9BQWdCLHlCQUF5QjtDQVM5QztBQUVELE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFxQyxjQUFjLENBQUMsd0JBQXdCLENBQUM7QUFNbEgsc0NBQXNDO0FBQ3RDLE1BQU0sT0FBZ0IsdUNBQWlELFNBQVEseUJBQWtDO0NBS2hIO0FBRUQsMkNBQTJDO0FBQzNDLE1BQU0sQ0FBQyxNQUFNLHNDQUFzQyxHQUFtRCxjQUFjLENBQUMsc0NBQXNDLENBQUM7QUFFNUo7Ozs7O0dBS0c7QUFDSCxzQ0FBc0M7QUFDdEMsTUFBTSxPQUFnQixvQ0FBOEMsU0FBUSx5QkFBa0M7Q0FRN0c7QUFFRCwyQ0FBMkM7QUFDM0MsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQWdELGNBQWMsQ0FBQyxtQ0FBbUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBpcyB0aGUgY3VycmVudGx5IHN1cHBvcnRlZCAtIGFsYmVpdCB2ZXJ5IG1pbmltYWwgLSBwdWJsaWMgU0RLLlxuICovXG5pbXBvcnQge0luamVjdGlvblRva2VufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbi8vIEJpbmQgc3RyYWlnaHQgaW50byB0aGUgaG9va3MgcHJvdmlkZWQgYnkgdGhlIGNvbnRhaW5lci5cbmlmICghKHdpbmRvdyBhcyBhbnkpLlN5c3RlbSB8fCAhKHdpbmRvdyBhcyBhbnkpLlN5c3RlbS5yZWdpc3RyeSB8fCAhKHdpbmRvdyBhcyBhbnkpLlN5c3RlbS5yZWdpc3RyeS5nZXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1N5c3RlbUpTIHJlZ2lzdHJ5IG5vdCBmb3VuZCcpO1xufVxuXG5sZXQgY29udGFpbmVySG9va3M6IGFueSA9ICh3aW5kb3cgYXMgYW55KS5TeXN0ZW0ucmVnaXN0cnkuZ2V0KCdAdmNkL2NvbW1vbicpO1xuaWYgKCFjb250YWluZXJIb29rcykge1xuICAgIGNvbnRhaW5lckhvb2tzID0gKHdpbmRvdyBhcyBhbnkpLlN5c3RlbS5yZWdpc3RyeS5nZXQoJ0B2Y2QtdWkvY29tbW9uJyk7XG59XG5cbmlmICghY29udGFpbmVySG9va3MpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZDRCBVSSBjb250YWluZXIgaG9va3Mgbm90IHByZXNlbnQgaW4gU3lzdGVtSlMgcmVnaXN0cnknKTtcbn1cblxuLyoqXG4gKiBXaXJlIGluIGFzIGEgc3RyaW5nLiAgR2l2ZXMgdGhlIHJvb3QgVVJMIGZvciBBUEkgYWNjZXNzIChmb3IgZXhhbXBsZSwgdGhlIGxvYWQgYmFsYW5jZXIgVVJMXG4gKiBvciB0aGUgc2luZ2xlLWNlbGwgVVJMKS5cbiAqL1xuZXhwb3J0IGNvbnN0IEFQSV9ST09UX1VSTDogSW5qZWN0aW9uVG9rZW48c3RyaW5nPiA9IGNvbnRhaW5lckhvb2tzLkFQSV9ST09UX1VSTDtcblxuLyoqXG4gKiBXaXJlIGluIGFzIGEgc3RyaW5nLiAgR2l2ZXMgdGhlIHJvb3QgVVJMIGZvciB0aGUgbGVnYWN5IEZsZXggYXBwbGljYXRpb24uXG4gKi9cbmV4cG9ydCBjb25zdCBGTEVYX0FQUF9VUkw6IEluamVjdGlvblRva2VuPHN0cmluZz4gPSBjb250YWluZXJIb29rcy5BUElfUk9PVF9VUkw7XG5cbi8qKlxuICogV2lyZSBpbiBhcyBhIHN0cmluZy4gIEdpdmVzIHRoZSBjdXJyZW50IHNjb3BlIG9mIHRoZSBWQ0QtVUkuICBBcyBvZiBjdXJyZW50LCB0aGlzIHdpbGwgYmVcbiAqIGVpdGhlciAndGVuYW50JyBmb3IgdGhlIHRlbmFudCBwb3J0YWwsIG9yICdzZXJ2aWNlLXByb3ZpZGVyJyBmb3IgdGhlIHNlcnZpY2UtcHJvdmlkZXIgcG9ydGFsLlxuICovXG5leHBvcnQgY29uc3QgU0VTU0lPTl9TQ09QRTogSW5qZWN0aW9uVG9rZW48c3RyaW5nPiA9IGNvbnRhaW5lckhvb2tzLlNFU1NJT05fU0NPUEU7XG5cbi8qKlxuICogV2lyZSBpbiBhcyBhIHN0cmluZy4gIEdpdmVzIHRoZSB1bmlxdWUgbmFtZSAobm90IHRoZSBkaXNwbGF5IG5hbWUpIG9mIHRoZSBjdXJyZW50IHRlbmFudFxuICogb3JnYW5pemF0aW9uIHRoYXQgdGhlIFZDRC1VSSBpcyBiZWluZyB1c2VkIGZvci5cbiAqL1xuZXhwb3J0IGNvbnN0IFNFU1NJT05fT1JHQU5JWkFUSU9OOiBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+ID0gY29udGFpbmVySG9va3MuU0VTU0lPTl9PUkdBTklaQVRJT047XG5cbi8qKlxuICogV2lyZSBpbiBhcyBhIHN0cmluZy4gIEdpdmVzIHRoZSBVVUlEIGlkZW50aWZpZXIgb2YgdGhlIGN1cnJlbnQgdGVuYW50XG4gKiBvcmdhbml6YXRpb24gdGhhdCB0aGUgVkNELVVJIGlzIGJlaW5nIHVzZWQgZm9yLlxuICovXG5leHBvcnQgY29uc3QgU0VTU0lPTl9PUkdfSUQ6IEluamVjdGlvblRva2VuPHN0cmluZz4gPSBjb250YWluZXJIb29rcy5TRVNTSU9OX09SR19JRCA/IGNvbnRhaW5lckhvb2tzLlNFU1NJT05fT1JHX0lEIDogJyc7XG5cbi8qKlxuICogV2lyZSBpbiBhcyBhIHN0cmluZy4gIEdpdmVzIHRoZSBmdWxsIHJvb3QgcGF0aCBmb3IgbW9kdWxlIGFzc2V0cyAoZS5nLiBpbWFnZXMsIHNjcmlwdHMsIHRleHQgZmlsZXMpXG4gKlxuICogQVRURU5USU9OIVxuICogQWRkIHx8IG5ldyBJbmplY3Rpb25Ub2tlbiB0byB3b3JrYXJvdW5kIHRoZSBBbmd1bGFyIHNlY3VyaXR5IG1lY2hhbmljcyB3aGljaCBwcmV2ZW50IHVzZSBvZiBpbmplY3Rpb24gdG9rZW5zXG4gKiB3aGljaCBwb3RlbnRpYWxseSBhcmUgbm90IGRlZmllbmQuIFRoZSBzYW1lIGZpeCBjYW4gYmUgYXBwbGllZCBmb3IgdGhlIHJlc3QgdG9rZW5zIGlmIG5lZWRlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IEVYVEVOU0lPTl9BU1NFVF9VUkw6IEluamVjdGlvblRva2VuPHN0cmluZz4gPSBjb250YWluZXJIb29rcy5FWFRFTlNJT05fQVNTRVRfVVJMIHx8IG5ldyBJbmplY3Rpb25Ub2tlbignRVhURU5TSU9OX0FTU0VUX1VSTCcpO1xuXG4vKipcbiAqIFdpcmUgaW4gYXMgYSBzdHJpbmcuICBHaXZlcyB0aGUgQW5ndWxhciAyIHJvdXRlIHRoYXQgdGhlIG1vZHVsZSBpcyByZWdpc3RlcmVkIHVuZGVyLlxuICovXG5leHBvcnQgY29uc3QgRVhURU5TSU9OX1JPVVRFOiBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+ID0gY29udGFpbmVySG9va3MuRVhURU5TSU9OX1JPVVRFO1xuXG4vKipcbiAqIFdpcmUgaW4gYXMgYSBib29sZWFuLiAgVHJ1ZSBpZiBydW5uaW5nIHVuZGVyIHRoZSBTREssIGZhbHNlIGlmIHJ1bm5pbmcgaW4gcHJvZHVjdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IFNES19NT0RFOiBJbmplY3Rpb25Ub2tlbjxib29sZWFuPiA9IGNvbnRhaW5lckhvb2tzLlNES19NT0RFO1xuXG4vKipcbiAqIFBheWxvYWQgZm9yIHJlZ2lzdGVyaW5nIGEgbmF2aWdhdGlvbiBtZW51IGVudHJ5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuc2lvbk5hdlJlZ2lzdHJhdGlvbiB7XG4gICAgLyoqXG4gICAgICogVGhlIHJvdXRlciBwYXRoIHRvIG5hdmlnYXRlIHRvIHdoZW4gc2VsZWN0ZWQuXG4gICAgICovXG4gICAgcGF0aDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogaTE4IGtleSBmb3IgbmFtZSBvZiBleHRlbnNpb24sIHRvIGJlIHVzZWQgYXMgdGV4dCBmb3IgbGlua3NcbiAgICAgKi9cbiAgICBuYW1lQ29kZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogaTE4biBrZXkgZm9yIGRlc2NyaXB0aW9uIG9mIGV4dGVuc2lvbiwgdG8gYmUgdXNlZCBvbiBob3ZlciBmb3IgbGlua3NcbiAgICAgKi9cbiAgICBkZXNjcmlwdGlvbkNvZGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBEaXNwYXRjaCB0aGlzIHRvIHRoZSByZWR1eCBzdG9yZSB0byByZWdpc3RlciBhIG5hdmlnYXRpb24gbWVudS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25OYXZSZWdpc3RyYXRpb25BY3Rpb24ge1xuICAgIHBheWxvYWQ6IEV4dGVuc2lvbk5hdlJlZ2lzdHJhdGlvbjtcbiAgICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEV4dGVuc2lvbk5hdlJlZ2lzdHJhdGlvbkFjdGlvbkN0b3IgPSBuZXcocGF5bG9hZDogRXh0ZW5zaW9uTmF2UmVnaXN0cmF0aW9uKSA9PiBFeHRlbnNpb25OYXZSZWdpc3RyYXRpb25BY3Rpb247XG5cbmV4cG9ydCBjb25zdCBFeHRlbnNpb25OYXZSZWdpc3RyYXRpb25BY3Rpb246IEV4dGVuc2lvbk5hdlJlZ2lzdHJhdGlvbkFjdGlvbkN0b3IgPSBjb250YWluZXJIb29rcy5FeHRlbnNpb25OYXZSZWdpc3RyYXRpb25BY3Rpb247XG5cbi8qKlxuICogSW5qZWN0IHRoaXMgdG8gYWNjZXNzIHRoZSBhdXRoZW50aWNhdGlvbiB0b2tlbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRoVG9rZW5Ib2xkZXJTZXJ2aWNlIHtcbiAgICAvKipcbiAgICAgKiBUaGUgYXV0aGVudGljYXRpb24gdG9rZW4uXG4gICAgICovXG4gICAgdG9rZW46IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEpXVCB0b2tlblxuICAgICAqL1xuICAgIGp3dD86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEpXVCB0b2tlbiBhc3luYy5cbiAgICAgKiBcbiAgICAgKiBUaGlzIG1ldGhvZCB0cmFja3MgSldUIGZvciBjaGFuZ2VzIGFuZCBlbWl0cyB0aGUgbGF0ZXN0IEpXVCB2YWx1ZS5cbiAgICAgKiBUaGUgbWFpbiB1c2UgY2FzZSBpcyB3aGVuIHRoZSBKV1QgbmVlZCB0byByZWZyZXNoZWQgYXQgcnVudGltZSxcbiAgICAgKiB0aGlzIGlzIGhhbmRsZWQgYnkgUmVmcmVzaC1BY2Nlc3MtVG9rZW4gZmVhdHVyZS5cbiAgICAgKiBcbiAgICAgKiBJZiB0aGUgSldUIG5lZWRzIHRvIGJlIHJlbmV3ZWQgYWxsIHVzZXJzIG9mIGl0IG11c3Qgb2J0YWluIHRoZSBsYXN0IEpXVCB0b2tlbi5cbiAgICAgKi9cbiAgICBqd3RBc3luYz86IE9ic2VydmFibGU8c3RyaW5nPjtcbn1cblxuZXhwb3J0IGNvbnN0IEF1dGhUb2tlbkhvbGRlclNlcnZpY2U6IEF1dGhUb2tlbkhvbGRlclNlcnZpY2UgPSBjb250YWluZXJIb29rcy5BdXRoVG9rZW5Ib2xkZXJTZXJ2aWNlO1xuXG4vKipcbiAqIFRoaXMgcmVwcmVzZW50cyBhIG1lbnUgaXRlbSB0aGF0IGNhbiBiZSBjbGlja2VkIHRvIHBlcmZvcm0gYW4gYWN0aW9uIG9uIGFuIGVudGl0eSAoZS5nLiBWTSkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5QWN0aW9uRXh0ZW5zaW9uTWVudUl0ZW0ge1xuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgYSB1bmlxdWUgVVJOIGlkZW50aWZ5aW5nIHRoZSBhY3Rpb24uIFRoaXMgaXMgc28gdGhlIGNvbXBvbmVudCBjYW4gYmUgbm90aWZpZWQgd2hpY2ggYWN0aW9uIHdhcyByZXF1ZXN0ZWQuXG4gICAgICovXG4gICAgdXJuOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIHRoZSBsYWJlbCBmb3IgdGhlIG1lbnUgaXRlbS4gSXQgaXMgbm90IGF1dG9tYXRpY2FsbHkgdHJhbnNsYXRlZC5cbiAgICAgKi9cbiAgICB0ZXh0OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIHRoZSBlbmFibGVkIHN0YXRlIGZvciB0aGUgbWVudSBpdGVtLlxuICAgICAqL1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIHRoZSBidXN5IHN0YXRlIGZvciB0aGUgbWVudSBpdGVtLlxuICAgICAqL1xuICAgIGJ1c3k6IGJvb2xlYW47XG59XG5cbi8qKlxuICogVGhpcyByZXByZXNlbnRzIGEgc3ViLW1lbnUgdGhhdCBjb250YWlucyBvdGhlciBzdWItbWVudXMgb3IgbWVudSBhY3Rpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eUFjdGlvbkV4dGVuc2lvblN1Ym1lbnUge1xuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgdGhlIGxhYmVsIGZvciB0aGUgc3ViLW1lbnUuIEl0IGlzIG5vdCBhdXRvbWF0aWNhbGx5IHRyYW5zbGF0ZWQuXG4gICAgICovXG4gICAgdGV4dDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBhbiBhcmJpdHJhcnksIG9yZGVyZWQgbGlzdCBvZiBFbnRpdHlBY3Rpb25NZW51SXRlbS5cbiAgICAgKi9cbiAgICBjaGlsZHJlbjogRW50aXR5QWN0aW9uRXh0ZW5zaW9uTWVudUl0ZW1bXTtcbn1cblxuLyoqXG4gKiBUaGlzIHJlcHJlc2VudHMgbWVudSBpbmZvcm1hdGlvbiBmb3IgYW4gZW50aXR5IGFjdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgRW50aXR5QWN0aW9uRXh0ZW5zaW9uTWVudUVudHJ5ID0gRW50aXR5QWN0aW9uRXh0ZW5zaW9uTWVudUl0ZW0gfCBFbnRpdHlBY3Rpb25FeHRlbnNpb25TdWJtZW51O1xuXG4vKipcbiAqIEV2ZXJ5IGNvbXBvbmVudCByZWZlcmVuY2VkIGJ5IGFuIGVudGl0eSBhY3Rpb24gZXh0ZW5zaW9uIHBvaW50IG11c3QgaW5oZXJpdCBmcm9tIHRoaXMuXG4gKi9cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpjbGFzcy1uYW1lXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgX0VudGl0eUFjdGlvbkV4dGVuc2lvbkNvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICogVGhpcyByZXR1cm5zIGlzIGFuIE9ic2VydmFibGUgdGhhdCBkZWZpbmVzIHRoZSBtZW51IGVudHJ5IGZvciB0aGlzIGNvbXBvbmVudC4gVGhpcyBpcyBhY3RpdmVseSBib3VuZCAtXG4gICAgICogdGhlIGNvbXBvbmVudCBpcyBhYmxlIHRvIGNoYW5nZSBpdCBpbiBvcmRlciB0byBoYXZlIHRoZSBtZW51IGNoYW5nZSAoZm9yIGV4YW1wbGUsIHRvIGNoYW5nZSBidXN5XG4gICAgICogb3IgZW5hYmxlZCBzdGF0ZXMpLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldE1lbnVFbnRyeShlbnRpdHlVcm46IHN0cmluZyk6IE9ic2VydmFibGU8RW50aXR5QWN0aW9uRXh0ZW5zaW9uTWVudUVudHJ5PjtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZmllbGQgaXMgYSBtZXRob2QgdGhhdCBpcyBjYWxsZWQgaWYgYSBtZW51IGl0ZW0gaXMgY2xpY2tlZCB3aGlsZSBlbmFibGVkLiBJdCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSBtZW51XG4gICAgICogaXRlbSdzIFVSTiBhbmQgdGhlIFVSTiBvZiB0aGUgZW50aXR5IHRoYXQgdGhlIGFjdGlvbiBpcyBiZWluZyBjYWxsZWQgZm9yIChlLmcuIHRoZSBVUk4gb2YgdGhlIFZNIGJlaW5nIGVkaXRlZCkuXG4gICAgICogSXQgbXVzdCByZXR1cm4gYSBzaW5nbGUtc2hvdCAoZS5nLiBvZiwgZnJvbVByb21pc2Ugb3IgLmZpcnN0KSBPYnNlcnZhYmxlIG9uIGNvbXBsZXRpb24uIFRoaXMgT2JzZXJ2YWJsZSByZXR1cm5zXG4gICAgICogYSBzaW5nbGUgdmFsdWUsIHJlZnJlc2hSZXF1ZXN0ZWQuIElmIHRoaXMgaXMgdHJ1ZSwgdGhlIGVudGl0eSBiZWluZyBlZGl0ZWQgd2lsbCBiZSBpbW1lZGlhdGVseSByZWZyZXNoZWQuXG4gICAgICogQHBhcmFtIG1lbnVJdGVtVXJuIHRoZSBVUk4gb2YgdGhlIGNsaWNrZWQgbWVudSBpdGVtXG4gICAgICogQHBhcmFtIGVudGl0eVVyblRoZSBVUk4gb2YgdGhlIGVudGl0eSB0aGF0IHRoZSBhY3Rpb24gaXMgYmVpbmcgY2FsbGVkIGZvclxuICAgICAqL1xuICAgICBhYnN0cmFjdCBwZXJmb3JtQWN0aW9uKG1lbnVJdGVtVXJuOiBzdHJpbmcsIGVudGl0eVVybjogc3RyaW5nKTogT2JzZXJ2YWJsZTx7IHJlZnJlc2hSZXF1ZXN0ZWQ6IGJvb2xlYW4gfT47XG59XG5leHBvcnQgY29uc3QgRW50aXR5QWN0aW9uRXh0ZW5zaW9uQ29tcG9uZW50OiB0eXBlb2YgX0VudGl0eUFjdGlvbkV4dGVuc2lvbkNvbXBvbmVudCA9IGNvbnRhaW5lckhvb2tzLkVudGl0eUFjdGlvbkV4dGVuc2lvbkNvbXBvbmVudDtcblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNsYXNzLW5hbWVcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBfV2l6YXJkRXh0ZW5zaW9uQ29tcG9uZW50PFAsIFIsIEU+IHtcbiAgICAvKipcbiAgICAgKiBEZWZpbmUgbWV0aG9kIHdoaWNoIHdpbGwgYmUgZXhlY3V0ZWQgYnkgdGhlIEV4dGVuc2lvbiBQb2ludCBPcmNoZXN0cmF0b3IsXG4gICAgICogd2hlbiBjZXJ0YWluIGV2ZW50IGlzIHRyaWdnZXJlZC5cbiAgICAgKiBAcGFyYW0gcGF5bG9hZCAtIHRoZSBwYXlsb2FkIG9mIHRoZSByZXF1ZXN0IHRyaWdnZXJlZCBieSB0aGUgQ29yZSBVSS5cbiAgICAgKiBAcGFyYW0gcmVzcG9uc2UgLSB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgcmVxdWVzdCB0cmlnZ2VyZWQgYnkgdGhlIENvcmUgVUkuXG4gICAgICogQHBhcmFtIGVycm9yIC0gdGhlIENvcmUgVUkgd2lsbCByZXByb3QgYW55IGVycm9yIHRoYXQgbWF5IGFwcGVhciBkdXJpbmcgZXhlY3V0aW9uLlxuICAgICAqL1xuICAgIGFic3RyYWN0IHBlcmZvcm1BY3Rpb24ocGF5bG9hZDogUCwgcmVzcG9uc2U6IFIsIGVycm9yOiBFKTogdm9pZDtcbn1cblxuZXhwb3J0IGNvbnN0IFdpemFyZEV4dGVuc2lvbkNvbXBvbmVudDogdHlwZW9mIF9XaXphcmRFeHRlbnNpb25Db21wb25lbnQgPSBjb250YWluZXJIb29rcy5XaXphcmRFeHRlbnNpb25Db21wb25lbnQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2l6YXJkRXh0ZW5zaW9uU3RhdGUge1xuICAgIGlzVmFsaWQ6IGJvb2xlYW47XG59XG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpjbGFzcy1uYW1lXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgX1dpemFyZEV4dGVuc2lvbldpdGhWYWxpZGF0aW9uQ29tcG9uZW50PFAsIFIsIEU+IGV4dGVuZHMgX1dpemFyZEV4dGVuc2lvbkNvbXBvbmVudDxQLCBSLCBFPiB7XG4gICAgLyoqXG4gICAgICogR2V0IGV4dGVuc2lvbiBwb2ludCBzdGF0ZS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXRTdGF0ZSgpOiBPYnNlcnZhYmxlPFdpemFyZEV4dGVuc2lvblN0YXRlPjtcbn1cblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1heC1saW5lLWxlbmd0aFxuZXhwb3J0IGNvbnN0IFdpemFyZEV4dGVuc2lvbldpdGhWYWxpZGF0aW9uQ29tcG9uZW50OiB0eXBlb2YgX1dpemFyZEV4dGVuc2lvbldpdGhWYWxpZGF0aW9uQ29tcG9uZW50ID0gY29udGFpbmVySG9va3MuV2l6YXJkRXh0ZW5zaW9uV2l0aFZhbGlkYXRpb25Db21wb25lbnQ7XG5cbi8qKlxuICogRXZlcnkgY29tcG9uZW50LWJhc2VkIEV4dGVuc2lvbiBQb2ludCB0aGF0IGlzIHJlbmRlcmQgaW4gQ2xvdWQgRGlyZWN0b3IgVUkgRW50aXR5IERldGFpbHNcbiAqIG11c3QgZXh0ZW5kIHRoYXQgY2xhc3MgdG8gb2J0YWluIGNvbnRleHQgYWJvdXQgdGhlIEVudGl0eS5cbiAqIFxuICogU2VlIGNvbW1lbnRzIG9mIHRoZSBtZXRob2RzIG9mIHRoZSBhYnN0cmFjdCBjbGFzcyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqL1xuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNsYXNzLW5hbWVcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBfV2l6YXJkRXh0ZW5zaW9uV2l0aENvbnRleHRDb21wb25lbnQ8UCwgUiwgRT4gZXh0ZW5kcyBfV2l6YXJkRXh0ZW5zaW9uQ29tcG9uZW50PFAsIFIsIEU+IHtcbiAgICAgLyoqXG4gICAgICogRGVmaW5lIG1ldGhvZCB3aGljaCB3aWxsIGJlIGV4ZWN1dGVkIG9uIGluaXQgYW5kIGluZm9ybWF0aW9uXG4gICAgICogYWJvdXQgY29udGV4dCBvYmplY3Qgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIEV4dGVuc2lvbiBQb2ludC5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gY29udGV4dCByZWZlcmVuY2UgdG8gdGhlIGNvbnRleHQgb2JqZWN0LlxuICAgICAqL1xuICAgICBhYnN0cmFjdCBvbkNvbnRleHQoY29udGV4dDogc3RyaW5nKTogdm9pZDtcbn1cblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1heC1saW5lLWxlbmd0aFxuZXhwb3J0IGNvbnN0IFdpemFyZEV4dGVuc2lvbldpdGhDb250ZXh0Q29tcG9uZW50OiB0eXBlb2YgX1dpemFyZEV4dGVuc2lvbldpdGhDb250ZXh0Q29tcG9uZW50ID0gY29udGFpbmVySG9va3MuV2l6YXJkRXh0ZW5zaW9uV2l0aENvbnRleHRDb21wb25lbnQ7XG4iXX0=
@@ -3,8 +3,8 @@ import { HttpResponse, HttpClient, HttpHeaders, HttpClientModule } from '@angula
3
3
  import * as i0 from '@angular/core';
4
4
  import { Injectable, InjectionToken, Optional, Inject, NgModule } from '@angular/core';
5
5
  import { CommonModule } from '@angular/common';
6
- import { tap, finalize, map, catchError, switchMap, retry, flatMap, skipWhile, share, concatMap, filter, withLatestFrom } from 'rxjs/operators';
7
- import { Observable, throwError, BehaviorSubject, of, ReplaySubject, merge } from 'rxjs';
6
+ import { tap, finalize, map, switchMap, filter, first, catchError, retry, flatMap, skipWhile, share, concatMap, withLatestFrom } from 'rxjs/operators';
7
+ import { of, Observable, throwError, BehaviorSubject, ReplaySubject, merge } from 'rxjs';
8
8
  import { TaskType } from '@vcd/bindings/vcloud/api/rest/schema_v1_5';
9
9
 
10
10
  // tslint:disable:variable-name
@@ -480,13 +480,45 @@ const HTTP_HEADERS = Object.freeze({
480
480
  x_vcloud_authorization: 'x-vcloud-authorization'
481
481
  });
482
482
 
483
+ /*
484
+ * Copyright (c) 2025-2025 Broadcom. All Rights Reserved. Broadcom Confidential. The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
485
+ */
486
+ class DecodedJwt {
487
+ constructor(rawToken) {
488
+ this.rawToken = rawToken;
489
+ const parts = rawToken.split(".");
490
+ if (parts.length !== 3) {
491
+ throw new Error(`Invalid JWT format: '${rawToken}'`);
492
+ }
493
+ this.header = this.decodeBase64Url(parts[0]);
494
+ this.payload = this.decodeBase64Url(parts[1]);
495
+ this.signature = parts[2];
496
+ }
497
+ decodeBase64Url(base64Url) {
498
+ const base64 = base64Url.replace(/-/g, "+").replace(/_/g, "/");
499
+ const json = decodeURIComponent(Array.prototype.map.call(atob(base64), escapeMultibyteCharacter).join(""));
500
+ return JSON.parse(json);
501
+ }
502
+ isExpired() {
503
+ const OFFSET_SECONDS = 60;
504
+ const exp = this.payload["exp"] || 0;
505
+ const current = Math.floor(Date.now() / 1000) + OFFSET_SECONDS;
506
+ return current >= exp;
507
+ }
508
+ toJSON() {
509
+ return {
510
+ header: this.header,
511
+ payload: this.payload,
512
+ signature: this.signature,
513
+ };
514
+ }
515
+ }
516
+ function escapeMultibyteCharacter(c) {
517
+ return "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2);
518
+ }
519
+
483
520
  // tslint:disable:variable-name
484
521
  class RequestHeadersInterceptor {
485
- constructor() {
486
- this._enabled = true;
487
- this._version = '';
488
- this._authenticationHeader = HTTP_HEADERS.Authorization;
489
- }
490
522
  set enabled(_enabled) {
491
523
  this._enabled = _enabled;
492
524
  }
@@ -507,6 +539,12 @@ class RequestHeadersInterceptor {
507
539
  this._authenticationHeader = (this._authentication && this._authentication.length > 32) ?
508
540
  HTTP_HEADERS.Authorization : HTTP_HEADERS.x_vcloud_authorization;
509
541
  }
542
+ constructor(authTokenHolderService) {
543
+ this.authTokenHolderService = authTokenHolderService;
544
+ this._enabled = true;
545
+ this._version = '';
546
+ this._authenticationHeader = HTTP_HEADERS.Authorization;
547
+ }
510
548
  intercept(req, next) {
511
549
  let headers = req.headers;
512
550
  if (!headers.has('Accept')) {
@@ -533,7 +571,16 @@ class RequestHeadersInterceptor {
533
571
  const customReq = req.clone({
534
572
  headers
535
573
  });
536
- return next.handle(customReq).pipe(map((res) => {
574
+ return this.updateToken().pipe(map((jwt) => {
575
+ const doesItUseJWT = (this._authentication && this._authentication.length > 32);
576
+ if (doesItUseJWT) {
577
+ this._authentication = `Bearer ${jwt}`;
578
+ }
579
+ return customReq.clone({ setHeaders: { [this._authenticationHeader]: this._authentication } });
580
+ }), switchMap((clonedRequest) => this.handleRequest(next, clonedRequest)));
581
+ }
582
+ handleRequest(next, clonedRequest) {
583
+ return next.handle(clonedRequest).pipe(map((res) => {
537
584
  if (res instanceof HttpResponse) {
538
585
  if (!res.body || !res.headers) {
539
586
  return res;
@@ -567,12 +614,22 @@ class RequestHeadersInterceptor {
567
614
  return headers.set('Content-Type', 'application/*+json');
568
615
  }
569
616
  }
617
+ updateToken() {
618
+ if (!this.authTokenHolderService.jwtAsync) {
619
+ return of(this.authTokenHolderService.jwt);
620
+ }
621
+ return this.authTokenHolderService.jwtAsync.pipe(filter((jwt) => !this.isExpired(jwt)), first());
622
+ }
623
+ isExpired(jwt) {
624
+ const decodedJwt = new DecodedJwt(jwt);
625
+ return decodedJwt.isExpired();
626
+ }
570
627
  }
571
- RequestHeadersInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: RequestHeadersInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
628
+ RequestHeadersInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: RequestHeadersInterceptor, deps: [{ token: AuthTokenHolderService }], target: i0.ɵɵFactoryTarget.Injectable });
572
629
  RequestHeadersInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: RequestHeadersInterceptor });
573
630
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: RequestHeadersInterceptor, decorators: [{
574
631
  type: Injectable
575
- }] });
632
+ }], ctorParameters: function () { return [{ type: AuthTokenHolderService }]; } });
576
633
 
577
634
  // tslint:disable:jsdoc-format
578
635
  /**