@posiwise/common-services 0.1.66 → 0.1.68

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.
@@ -10,8 +10,10 @@ export class BrainApiHttpService extends BaseHttpService {
10
10
  super(http, injector);
11
11
  }
12
12
  getConfig() {
13
- this.injector.get(AppConfigService).appConfig$.subscribe(config => {
14
- this.baseUrl = isDevMode() ? BRAIN_API_PREFIX : config?.['links']['brain_api'] || '';
13
+ this.injector.get(AppConfigService).appConfig$.subscribe((config) => {
14
+ this.baseUrl = isDevMode()
15
+ ? BRAIN_API_PREFIX
16
+ : config?.['links']['brain_api'] || '';
15
17
  });
16
18
  }
17
19
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: BrainApiHttpService, deps: [{ token: i1.HttpClient }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -20,7 +22,7 @@ export class BrainApiHttpService extends BaseHttpService {
20
22
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: BrainApiHttpService, decorators: [{
21
23
  type: Injectable,
22
24
  args: [{
23
- providedIn: 'root'
25
+ providedIn: 'root',
24
26
  }]
25
27
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i0.Injector }] });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhaW4tYXBpLWh0dHAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uLXNlcnZpY2VzL3NyYy9saWIvYnJhaW4tYXBpLWh0dHAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBS3RELE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxlQUFlO0lBQ3BELFlBQVksSUFBZ0IsRUFBRSxRQUFrQjtRQUM1QyxLQUFLLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFUSxTQUFTO1FBQ2QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzlELElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekYsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQVRRLG1CQUFtQjttSEFBbkIsbUJBQW1CLGNBRmhCLE1BQU07OzRGQUVULG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1jb25maWctc2VydmljZSc7XG5pbXBvcnQgeyBCUkFJTl9BUElfUFJFRklYIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuXG5pbXBvcnQgeyBCYXNlSHR0cFNlcnZpY2UgfSBmcm9tICcuL2Jhc2UtaHR0cC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBCcmFpbkFwaUh0dHBTZXJ2aWNlIGV4dGVuZHMgQmFzZUh0dHBTZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3RvcihodHRwOiBIdHRwQ2xpZW50LCBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgc3VwZXIoaHR0cCwgaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIGdldENvbmZpZygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbmplY3Rvci5nZXQoQXBwQ29uZmlnU2VydmljZSkuYXBwQ29uZmlnJC5zdWJzY3JpYmUoY29uZmlnID0+IHtcbiAgICAgICAgICAgIHRoaXMuYmFzZVVybCA9IGlzRGV2TW9kZSgpID8gQlJBSU5fQVBJX1BSRUZJWCA6IGNvbmZpZz8uWydsaW5rcyddWydicmFpbl9hcGknXSB8fCAnJztcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhaW4tYXBpLWh0dHAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uLXNlcnZpY2VzL3NyYy9saWIvYnJhaW4tYXBpLWh0dHAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBS3RELE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxlQUFlO0lBQ3RELFlBQVksSUFBZ0IsRUFBRSxRQUFrQjtRQUM5QyxLQUFLLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFUSxTQUFTO1FBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ2xFLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxFQUFFO2dCQUN4QixDQUFDLENBQUMsZ0JBQWdCO2dCQUNsQixDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FYVSxtQkFBbUI7bUhBQW5CLG1CQUFtQixjQUZsQixNQUFNOzs0RkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9hcHAtY29uZmlnLXNlcnZpY2UnO1xuaW1wb3J0IHsgQlJBSU5fQVBJX1BSRUZJWCB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tdXRpbGl0aWVzJztcblxuaW1wb3J0IHsgQmFzZUh0dHBTZXJ2aWNlIH0gZnJvbSAnLi9iYXNlLWh0dHAuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBCcmFpbkFwaUh0dHBTZXJ2aWNlIGV4dGVuZHMgQmFzZUh0dHBTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoaHR0cDogSHR0cENsaWVudCwgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgc3VwZXIoaHR0cCwgaW5qZWN0b3IpO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0Q29uZmlnKCk6IHZvaWQge1xuICAgIHRoaXMuaW5qZWN0b3IuZ2V0KEFwcENvbmZpZ1NlcnZpY2UpLmFwcENvbmZpZyQuc3Vic2NyaWJlKChjb25maWcpID0+IHtcbiAgICAgIHRoaXMuYmFzZVVybCA9IGlzRGV2TW9kZSgpXG4gICAgICAgID8gQlJBSU5fQVBJX1BSRUZJWFxuICAgICAgICA6IGNvbmZpZz8uWydsaW5rcyddWydicmFpbl9hcGknXSB8fCAnJztcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -2,14 +2,14 @@ import { Injectable } from '@angular/core';
2
2
  import { BrainApiHttpService } from './brain-api-http.service';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "./brain-api-http.service";
5
- export class BrainApiService {
5
+ export class BrainService {
6
6
  constructor(api) {
7
7
  this.api = api;
8
8
  }
9
9
  invokeClaude(sessionId, prompt) {
10
10
  return this.api.post('/anthropic/claude/opus4', {
11
11
  session_id: sessionId,
12
- prompt
12
+ prompt,
13
13
  });
14
14
  }
15
15
  invokeDeepseek(sessionId, prompt, temperature = 0.7, max_tokens = 512) {
@@ -17,16 +17,16 @@ export class BrainApiService {
17
17
  session_id: sessionId,
18
18
  prompt,
19
19
  temperature,
20
- max_tokens
20
+ max_tokens,
21
21
  });
22
22
  }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: BrainApiService, deps: [{ token: i1.BrainApiHttpService }], target: i0.ɵɵFactoryTarget.Injectable }); }
24
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: BrainApiService, providedIn: 'root' }); }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: BrainService, deps: [{ token: i1.BrainApiHttpService }], target: i0.ɵɵFactoryTarget.Injectable }); }
24
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: BrainService, providedIn: 'root' }); }
25
25
  }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: BrainApiService, decorators: [{
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: BrainService, decorators: [{
27
27
  type: Injectable,
28
28
  args: [{
29
- providedIn: 'root'
29
+ providedIn: 'root',
30
30
  }]
31
31
  }], ctorParameters: () => [{ type: i1.BrainApiHttpService }] });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhaW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uLXNlcnZpY2VzL3NyYy9saWIvYnJhaW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7QUFLL0QsTUFBTSxPQUFPLGVBQWU7SUFDeEIsWUFBb0IsR0FBd0I7UUFBeEIsUUFBRyxHQUFILEdBQUcsQ0FBcUI7SUFBRyxDQUFDO0lBRWhELFlBQVksQ0FBQyxTQUFpQixFQUFFLE1BQWM7UUFDMUMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRTtZQUM1QyxVQUFVLEVBQUUsU0FBUztZQUNyQixNQUFNO1NBQ1QsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGNBQWMsQ0FBQyxTQUFpQixFQUFFLE1BQWMsRUFBRSxXQUFXLEdBQUcsR0FBRyxFQUFFLFVBQVUsR0FBRyxHQUFHO1FBQ2pGLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ2pDLFVBQVUsRUFBRSxTQUFTO1lBQ3JCLE1BQU07WUFDTixXQUFXO1lBQ1gsVUFBVTtTQUNiLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBakJRLGVBQWU7bUhBQWYsZUFBZSxjQUZaLE1BQU07OzRGQUVULGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCcmFpbkFwaUh0dHBTZXJ2aWNlIH0gZnJvbSAnLi9icmFpbi1hcGktaHR0cC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBCcmFpbkFwaVNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgYXBpOiBCcmFpbkFwaUh0dHBTZXJ2aWNlKSB7fVxuXG4gICAgaW52b2tlQ2xhdWRlKHNlc3Npb25JZDogc3RyaW5nLCBwcm9tcHQ6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucG9zdCgnL2FudGhyb3BpYy9jbGF1ZGUvb3B1czQnLCB7XG4gICAgICAgICAgICBzZXNzaW9uX2lkOiBzZXNzaW9uSWQsXG4gICAgICAgICAgICBwcm9tcHRcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaW52b2tlRGVlcHNlZWsoc2Vzc2lvbklkOiBzdHJpbmcsIHByb21wdDogc3RyaW5nLCB0ZW1wZXJhdHVyZSA9IDAuNywgbWF4X3Rva2VucyA9IDUxMikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucG9zdCgnL2RlZXBzZWVrL3IxJywge1xuICAgICAgICAgICAgc2Vzc2lvbl9pZDogc2Vzc2lvbklkLFxuICAgICAgICAgICAgcHJvbXB0LFxuICAgICAgICAgICAgdGVtcGVyYXR1cmUsXG4gICAgICAgICAgICBtYXhfdG9rZW5zXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhaW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uLXNlcnZpY2VzL3NyYy9saWIvYnJhaW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7QUFLL0QsTUFBTSxPQUFPLFlBQVk7SUFDdkIsWUFBb0IsR0FBd0I7UUFBeEIsUUFBRyxHQUFILEdBQUcsQ0FBcUI7SUFBRyxDQUFDO0lBRWhELFlBQVksQ0FBQyxTQUFpQixFQUFFLE1BQWM7UUFDNUMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRTtZQUM5QyxVQUFVLEVBQUUsU0FBUztZQUNyQixNQUFNO1NBQ1AsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWMsQ0FBQyxTQUFpQixFQUFFLE1BQWMsRUFBRSxXQUFXLEdBQUcsR0FBRyxFQUFFLFVBQVUsR0FBRyxHQUFHO1FBQ25GLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ25DLFVBQVUsRUFBRSxTQUFTO1lBQ3JCLE1BQU07WUFDTixXQUFXO1lBQ1gsVUFBVTtTQUNYLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBakJVLFlBQVk7bUhBQVosWUFBWSxjQUZYLE1BQU07OzRGQUVQLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnJhaW5BcGlIdHRwU2VydmljZSB9IGZyb20gJy4vYnJhaW4tYXBpLWh0dHAuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBCcmFpblNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwaTogQnJhaW5BcGlIdHRwU2VydmljZSkge31cblxuICBpbnZva2VDbGF1ZGUoc2Vzc2lvbklkOiBzdHJpbmcsIHByb21wdDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpLnBvc3QoJy9hbnRocm9waWMvY2xhdWRlL29wdXM0Jywge1xuICAgICAgc2Vzc2lvbl9pZDogc2Vzc2lvbklkLFxuICAgICAgcHJvbXB0LFxuICAgIH0pO1xuICB9XG5cbiAgaW52b2tlRGVlcHNlZWsoc2Vzc2lvbklkOiBzdHJpbmcsIHByb21wdDogc3RyaW5nLCB0ZW1wZXJhdHVyZSA9IDAuNywgbWF4X3Rva2VucyA9IDUxMikge1xuICAgIHJldHVybiB0aGlzLmFwaS5wb3N0KCcvZGVlcHNlZWsvcjEnLCB7XG4gICAgICBzZXNzaW9uX2lkOiBzZXNzaW9uSWQsXG4gICAgICBwcm9tcHQsXG4gICAgICB0ZW1wZXJhdHVyZSxcbiAgICAgIG1heF90b2tlbnMsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -195,7 +195,7 @@ export class PermissionService {
195
195
  product = this.getCurrentProduct();
196
196
  }
197
197
  const subscriptionSlug = product?.subscription_slug;
198
- return !!this.user.auth.granted[`Pages.Product.${subscriptionSlug}.${product.permission_key}.${product.feature_key}.SubscriptionOwner`];
198
+ return !!this.user.auth.granted[`Pages.Product.${subscriptionSlug}.${product?.permission_key}.${product.feature_key}.SubscriptionOwner`];
199
199
  }
200
200
  /**
201
201
  * Any Product Admin regardless of the product being master product or not.
@@ -207,8 +207,8 @@ export class PermissionService {
207
207
  product = this.getCurrentProduct();
208
208
  }
209
209
  const subscriptionSlug = product?.subscription_slug;
210
- return (!!this.user.auth.granted[`Pages.Product.${subscriptionSlug}.${product.permission_key}.${product.feature_key}.SubscriptionAdmin`] ||
211
- !!this.user.auth.granted[`Pages.Product.${subscriptionSlug}.${product.permission_key}.${product.feature_key}.SubscriptionOwner`]);
210
+ return (!!this.user.auth.granted[`Pages.Product.${subscriptionSlug}.${product?.permission_key}.${product.feature_key}.SubscriptionAdmin`] ||
211
+ !!this.user.auth.granted[`Pages.Product.${subscriptionSlug}.${product?.permission_key}.${product.feature_key}.SubscriptionOwner`]);
212
212
  }
213
213
  /**
214
214
  * Any Product Admin of the product being the master product
@@ -218,14 +218,14 @@ export class PermissionService {
218
218
  product = this.getCurrentProduct();
219
219
  }
220
220
  const subscriptionSlug = product?.subscription_slug;
221
- return (!!this.user.auth.granted[`Pages.Product.${subscriptionSlug}.${product.permission_key}.${product.feature_key}.SubscriptionSuperAdmin`] ||
222
- !!this.user.auth.granted[`Pages.Product.${subscriptionSlug}.${product.permission_key}.${product.feature_key}.SubscriptionSuperOwner`]);
221
+ return (!!this.user.auth.granted[`Pages.Product.${subscriptionSlug}.${product?.permission_key}.${product.feature_key}.SubscriptionSuperAdmin`] ||
222
+ !!this.user.auth.granted[`Pages.Product.${subscriptionSlug}.${product?.permission_key}.${product.feature_key}.SubscriptionSuperOwner`]);
223
223
  }
224
224
  isUserMasterSubscriptionSuperAdmin(product) {
225
225
  if (!product) {
226
226
  product = this.getCurrentProduct();
227
227
  }
228
- return !!this.user.auth.granted[`Pages.Product.${product.permission_key}.${product.feature_key}.SubscriptionSuperAdmin`];
228
+ return !!this.user.auth.granted[`Pages.Product.${product?.permission_key}.${product.feature_key}.SubscriptionSuperAdmin`];
229
229
  }
230
230
  /**
231
231
  * Any Product Admin of the product being the master product
@@ -235,12 +235,12 @@ export class PermissionService {
235
235
  product = this.getCurrentProduct();
236
236
  }
237
237
  const subscriptionSlug = product?.subscription_slug;
238
- return !!this.user.auth.granted[`Pages.Product.${subscriptionSlug}.${product.permission_key}.${product.feature_key}.SubscriptionSuperOwner`];
238
+ return !!this.user.auth.granted[`Pages.Product.${subscriptionSlug}.${product?.permission_key}.${product.feature_key}.SubscriptionSuperOwner`];
239
239
  }
240
240
  setCurrentProduct(product) {
241
241
  localStorage.setItem('product', JSON.stringify({
242
242
  id: product.id,
243
- permission_key: product.permission_key,
243
+ permission_key: product?.permission_key,
244
244
  feature_key: product.feature_key,
245
245
  subscriptionId: product.subscriptionId,
246
246
  subscription_slug: product.subscription_slug
@@ -258,4 +258,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
258
258
  providedIn: 'root'
259
259
  }]
260
260
  }], ctorParameters: () => [{ type: i1.MainApiHttpService }] });
261
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24tc2VydmljZXMvc3JjL2xpYi9wZXJtaXNzaW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUU5RixPQUFPLFNBQVMsTUFBTSxrQkFBa0IsQ0FBQztBQUN6QyxPQUFPLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFFbkMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQUs3RCxNQUFNLE9BQU8saUJBQWlCO0lBUzFCLFlBQTZCLEdBQXVCO1FBQXZCLFFBQUcsR0FBSCxHQUFHLENBQW9CO1FBRnBELFNBQUksR0FBUyxJQUFJLENBQUM7SUFFcUMsQ0FBQztJQUV4RCxzQkFBc0IsQ0FBQyxZQUFZO1FBQy9CLGlCQUFpQixDQUFDLG9CQUFvQixHQUFHLFlBQVksQ0FBQztJQUMxRCxDQUFDO0lBRUQsU0FBUyxDQUNMLGNBQXNCLEVBQ3RCLFVBQVUsR0FBRyxJQUFJLEVBQ2pCLGNBQWMsR0FBRyxJQUFJLEVBQ3JCLFdBQVcsR0FBRyxJQUFJO1FBRWxCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1osTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztZQUV0QixzQ0FBc0M7WUFDdEMseUJBQXlCO1lBQ3pCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7Z0JBQ3RCLE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7WUFFRCxJQUFJLGNBQWMsRUFBRSxDQUFDO2dCQUNqQixjQUFjLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUMsQ0FBQztZ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SUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNYLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRTtZQUNkLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYztZQUN0QyxXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVc7WUFDaEMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxjQUFjO1lBQ3RDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxpQkFBaUI7U0FDL0MsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRU0saUJBQWlCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQzsrR0FuVVEsaUJBQWlCO21IQUFqQixpQkFBaUIsY0FGZCxNQUFNOzs0RkFFVCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBRE1JTl9TVUJfTUVOVV9XSElURUxJU1QsIFBFUk1JU1NJT05fTkFNRVMsIFVzZXIgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5cbmltcG9ydCBjbG9uZURlZXAgZnJvbSAnbG9kYXNoL2Nsb25lRGVlcCc7XG5pbXBvcnQgcGlja0J5IGZyb20gJ2xvZGFzaC9waWNrQnknO1xuXG5pbXBvcnQgeyBNYWluQXBpSHR0cFNlcnZpY2UgfSBmcm9tICcuL21haW4tYXBpLWh0dHAuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvblNlcnZpY2Uge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgc3RhdGljIHNlbGVjdGVkUHJvZHVjdDogYW55OyAvLyBOT1NPTkFSXG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHN0YXRpYyBzZWxlY3RlZFN1YnNjcmlwdGlvbjogYW55OyAvLyBOT1NPTkFSXG5cbiAgICB1c2VyOiBVc2VyID0gbnVsbDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYXBpOiBNYWluQXBpSHR0cFNlcnZpY2UpIHt9XG5cbiAgICBzZXRDdXJyZW50U3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbikge1xuICAgICAgICBQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZFN1YnNjcmlwdGlvbiA9IHN1YnNjcmlwdGlvbjtcbiAgICB9XG5cbiAgICBpc0dyYW50ZWQoXG4gICAgICAgIHBlcm1pc3Npb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIHByb2R1Y3RLZXkgPSBudWxsLFxuICAgICAgICBwZXJtaXNzaW9uX2tleSA9IG51bGwsXG4gICAgICAgIHByb2R1Y3RTbHVnID0gbnVsbFxuICAgICk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy51c2VyKSB7XG4gICAgICAgICAgICBjb25zdCB7IHVzZXIgfSA9IHRoaXM7XG5cbiAgICAgICAgICAgIC8vIEFkbWluIGhhdmUgYWNjZXNzIHRvIGFsbCB0aGUgbWVudXMuXG4gICAgICAgICAgICAvLyBFLmcuLCBQYWdlcy5TdXBlckFkbWluXG4gICAgICAgICAgICBpZiAodGhpcy5pc1N1cGVyQWRtaW4oKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGVybWlzc2lvbk5hbWUpIHtcbiAgICAgICAgICAgICAgICBwZXJtaXNzaW9uTmFtZSA9IHRoaXMuZ2V0Rm9ybWF0dGVkUGVybWlzc2lvbk5hbWUocGVybWlzc2lvbk5hbWUsIHByb2R1Y3RTbHVnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUmV0dXJuaW5nIHRydWUgaWYgdXNlciBoYXMgYSBnaXZlbiBwZXJtaXNzaW9uXG4gICAgICAgICAgICAvLyBFLmcuLCBQYWdlcy5Sb2xlLkNsb3VkT2xpdmUuU2FsZXNNYW5hZ2VyXG4gICAgICAgICAgICAvLyBvciBQYWdlcy5CZXRhIG9yIFBhZ2VzLkFscGhhXG5cbiAgICAgICAgICAgIGlmIChwZXJtaXNzaW9uTmFtZT8uaW5jbHVkZXMoJ3x8JykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJ0cyA9IHBlcm1pc3Npb25OYW1lLnNwbGl0KCd8fCcpLm1hcChwID0+IHAudHJpbSgpKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHBhcnQgb2YgcGFydHMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVzZXJbJ2F1dGgnXT8uWydncmFudGVkJ11bcGFydF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh1c2VyWydhdXRoJ10/LlsnZ3JhbnRlZCddW3Blcm1pc3Npb25OYW1lXSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZFBlcm1pc3Npb25zID0gdGhpcy5oYW5kbGVQcm9kdWN0S2V5KFxuICAgICAgICAgICAgICAgIHByb2R1Y3RLZXksXG4gICAgICAgICAgICAgICAgdXNlcixcbiAgICAgICAgICAgICAgICBwZXJtaXNzaW9uX2tleSxcbiAgICAgICAgICAgICAgICBwZXJtaXNzaW9uTmFtZVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGZpbHRlcmVkUGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyZWRQZXJtaXNzaW9ucztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gbm8gdmFsaWQgcGVybWlzc2lvbiB3YXMgZGV0ZWN0ZWQgZm9yIHRoaXMgdXNlclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIHVzZXIgbm90IGxvZ2dlZC1pblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaGFuZGxlUHJvZHVjdEtleShwcm9kdWN0S2V5LCB1c2VyLCBwZXJtaXNzaW9uX2tleSwgcGVybWlzc2lvbk5hbWUpIHtcbiAgICAgICAgaWYgKHByb2R1Y3RLZXkpIHtcbiAgICAgICAgICAgIC8vIGZpbHRlcnMgdGhlIHBlcm1pc3Npb24gb25seSBmb3IgdGhlIHNlbGVjdGVkIHByb2R1Y3QuXG4gICAgICAgICAgICBsZXQgZmlsdGVyZWRQZXJtaXNzaW9ucyA9IHBpY2tCeShjbG9uZURlZXAodXNlclsnYXV0aCddWydncmFudGVkJ10pLCAoX3ZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ga2V5LmluY2x1ZGVzKHByb2R1Y3RLZXkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBhZGQgUGFnZXMuUHJvZHVjdC57cGVybWlzc2lvbl9rZXl9XG4gICAgICAgICAgICBmaWx0ZXJlZFBlcm1pc3Npb25zID0ge1xuICAgICAgICAgICAgICAgIC4uLnsgW2BQYWdlcy5Qcm9kdWN0LiR7cGVybWlzc2lvbl9rZXl9YF06IHRydWUgfSxcbiAgICAgICAgICAgICAgICAuLi5maWx0ZXJlZFBlcm1pc3Npb25zXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvLyBFLmcuLCBQYWdlcy5Qcm9kdWN0LkNsb3VkT2xpdmUuQ2xvdWRPbGl2ZV9Nc3BLZXlcbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXJlZFBlcm1pc3Npb25zW3Blcm1pc3Npb25OYW1lXSB8fCBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Rm9ybWF0dGVkUGVybWlzc2lvbk5hbWUocGVybWlzc2lvbk5hbWU6IHN0cmluZywgcHJvZHVjdFNsdWc6IHN0cmluZyB8IG51bGwpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBzZWxlY3RlZFByb2R1Y3QgPSBQZXJtaXNzaW9uU2VydmljZT8uc2VsZWN0ZWRQcm9kdWN0IHx8IHRoaXMuZ2V0Q3VycmVudFByb2R1Y3QoKTtcbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uU2x1ZyA9IHNlbGVjdGVkUHJvZHVjdD8uc3Vic2NyaXB0aW9uX3NsdWc7XG5cbiAgICAgICAgbGV0IHNsdWdUb0NoZWNrOiBzdHJpbmc7XG4gICAgICAgIGlmICghcHJvZHVjdFNsdWcpIHtcbiAgICAgICAgICAgIGlmIChwZXJtaXNzaW9uTmFtZS5pbmNsdWRlcygnUGFnZXMuUHJvZHVjdC4nKSkge1xuICAgICAgICAgICAgICAgIHNsdWdUb0NoZWNrID0gYFBhZ2VzLlByb2R1Y3QuJHtzdWJzY3JpcHRpb25TbHVnfS5gO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGVybWlzc2lvbk5hbWUuaW5jbHVkZXMoJ1BhZ2VzLlJvbGUuJykpIHtcbiAgICAgICAgICAgICAgICBzbHVnVG9DaGVjayA9IGBQYWdlcy5Sb2xlLiR7c3Vic2NyaXB0aW9uU2x1Z30uYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNsdWdUb0NoZWNrID0gcHJvZHVjdFNsdWc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXBlcm1pc3Npb25OYW1lLmluY2x1ZGVzKHNsdWdUb0NoZWNrKSAmJiBwZXJtaXNzaW9uTmFtZS5pbmNsdWRlcygnUGFnZXMuUHJvZHVjdC4nKSkge1xuICAgICAgICAgICAgcGVybWlzc2lvbk5hbWUgPSBwZXJtaXNzaW9uTmFtZS5yZXBsYWNlKCdQYWdlcy5Qcm9kdWN0LicsIHNsdWdUb0NoZWNrKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwZXJtaXNzaW9uTmFtZS5pbmNsdWRlcygnUGFnZXMuUm9sZS4nKSAmJiAhcGVybWlzc2lvbk5hbWUuaW5jbHVkZXMoc2x1Z1RvQ2hlY2spKSB7XG4gICAgICAgICAgICBwZXJtaXNzaW9uTmFtZSA9IHBlcm1pc3Npb25OYW1lLnJlcGxhY2UoJ1BhZ2VzLlJvbGUuJywgc2x1Z1RvQ2hlY2spO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBlcm1pc3Npb25OYW1lO1xuICAgIH1cblxuICAgIGdldFBlcm1pc3Npb25UcmVlRGF0YUJ5Um9sZShkYXRhKSB7XG4gICAgICAgIGNvbnN0IHBlcm1pc3Npb25zID0gW107XG4gICAgICAgIGRhdGEuYWxsLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IG5hbWUgfSA9IGVsZW1lbnQ7XG4gICAgICAgICAgICBwZXJtaXNzaW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZDogZWxlbWVudC5pZCwgLy8gcGVybWlzc2lvbklkOiBVc2VkIHRvIHVwZGF0ZSB0aGUgcGVybWlzc2lvbnMgb24gY2hhbmdlXG4gICAgICAgICAgICAgICAgcGFyZW50TmFtZTogbmFtZS5pbmNsdWRlcygnLicpID8gbmFtZS5zdWJzdHJpbmcoMCwgbmFtZS5sYXN0SW5kZXhPZignLicpKSA6IG51bGwsXG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogZWxlbWVudC5uYW1lXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHBlcm1pc3Npb25zLFxuICAgICAgICAgICAgZ3JhbnRlZFBlcm1pc3Npb25OYW1lczogT2JqZWN0LmtleXMoZGF0YS5ncmFudGVkKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGV2YWx1YXRlUGVybWlzc2lvbnMoXG4gICAgICAgIHBlcm1pc3Npb246IHN0cmluZyxcbiAgICAgICAgcHJvZHVjdEtleTogc3RyaW5nID0gbnVsbCxcbiAgICAgICAgcGVybWlzc2lvbl9rZXk6IHN0cmluZyA9IG51bGwsXG4gICAgICAgIHByb2R1Y3RTbHVnOiBzdHJpbmcgPSBudWxsXG4gICAgKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghcGVybWlzc2lvbikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGV4cHIgPSAnJztcblxuICAgICAgICBpZiAocGVybWlzc2lvbiA9PT0gUEVSTUlTU0lPTl9OQU1FUy5TdXBlckFkbWluKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc1N1cGVyQWRtaW4oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGVybWlzc2lvbiA9PT0gUEVSTUlTU0lPTl9OQU1FUy5TdWJzY3JpcHRpb25BZG1pbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNVc2VyU3Vic2NyaXB0aW9uQWRtaW4oKSB8fCB0aGlzLmlzVXNlclN1YnNjcmlwdGlvbk93bmVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBlcm1pc3Npb24gPT09IFBFUk1JU1NJT05fTkFNRVMuU3Vic2NyaXB0aW9uT3duZXIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzVXNlclN1YnNjcmlwdGlvbk93bmVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBlcm1pc3Npb24gPT09IFBFUk1JU1NJT05fTkFNRVMuU3Vic2NyaXB0aW9uU3VwZXJBZG1pbikge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICB0aGlzLmlzVXNlclN1YnNjcmlwdGlvblN1cGVyQWRtaW4oKSB8fFxuICAgICAgICAgICAgICAgIHRoaXMuaXNVc2VyU3Vic2NyaXB0aW9uU3VwZXJPd25lcigpIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5pc1N1cGVyQWRtaW4oKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGVybWlzc2lvbiA9PT0gUEVSTUlTU0lPTl9OQU1FUy5TdWJzY3JpcHRpb25TdXBlck93bmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc1VzZXJTdWJzY3JpcHRpb25TdXBlck93bmVyKCkgfHwgdGhpcy5pc1N1cGVyQWRtaW4oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0eXBlb2YgcGVybWlzc2lvbiA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgIEFETUlOX1NVQl9NRU5VX1dISVRFTElTVC5zb21lKHYgPT4gcGVybWlzc2lvbi5pbmNsdWRlcyh2KSkgJiZcbiAgICAgICAgICAgICh0aGlzLmlzVXNlclN1YnNjcmlwdGlvblN1cGVyQWRtaW4oKSB8fCB0aGlzLmlzVXNlclN1YnNjcmlwdGlvblN1cGVyT3duZXIoKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV4cHIgPSB0aGlzLmhhbmRsZU5vbkJvb2xlYW5QZXJtaXNzaW9ucyhcbiAgICAgICAgICAgIHBlcm1pc3Npb24sXG4gICAgICAgICAgICBleHByLFxuICAgICAgICAgICAgcHJvZHVjdEtleSxcbiAgICAgICAgICAgIHBlcm1pc3Npb25fa2V5LFxuICAgICAgICAgICAgcHJvZHVjdFNsdWdcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBOb3cgZXhwciBpcyBtYWRlIG9mIHRydWUvZmFsc2UgdmFsdWVzIHdpdGggJiYsIHx8LCAoKVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXZhbFxuICAgICAgICByZXR1cm4gZXZhbChleHByKTsgLy8gTk9TT05BUlxuICAgIH1cblxuICAgIGhhbmRsZU5vbkJvb2xlYW5QZXJtaXNzaW9ucyhwZXJtaXNzaW9uLCBleHByLCBwcm9kdWN0S2V5LCBwZXJtaXNzaW9uX2tleSwgcHJvZHVjdFNsdWcpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBwZXJtaXNzaW9uICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIHBlcm1pc3Npb24uc3BsaXQoJyAnKS5mb3JFYWNoKHggPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJhdyA9IHgudHJpbSgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKFsnfHwnLCAnJiYnLCAnKCcsICcpJ10uaW5jbHVkZXMocmF3KSkge1xuICAgICAgICAgICAgICAgICAgICBleHByICs9IGAgJHtyYXd9IGA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGV2YWx1YXRlZDogYm9vbGVhbjtcblxuICAgICAgICAgICAgICAgICAgICBpZiAocmF3ID09PSBQRVJNSVNTSU9OX05BTUVTLlN1cGVyQWRtaW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWx1YXRlZCA9IHRoaXMuaXNTdXBlckFkbWluKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmF3ID09PSBQRVJNSVNTSU9OX05BTUVTLlN1YnNjcmlwdGlvbkFkbWluKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmFsdWF0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNVc2VyU3Vic2NyaXB0aW9uQWRtaW4oKSB8fCB0aGlzLmlzVXNlclN1YnNjcmlwdGlvbk93bmVyKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmF3ID09PSBQRVJNSVNTSU9OX05BTUVTLlN1YnNjcmlwdGlvbk93bmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmFsdWF0ZWQgPSB0aGlzLmlzVXNlclN1YnNjcmlwdGlvbk93bmVyKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmF3ID09PSBQRVJNSVNTSU9OX05BTUVTLlN1YnNjcmlwdGlvblN1cGVyQWRtaW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWx1YXRlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1VzZXJTdWJzY3JpcHRpb25TdXBlckFkbWluKCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzVXNlclN1YnNjcmlwdGlvblN1cGVyT3duZXIoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTdXBlckFkbWluKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmF3ID09PSBQRVJNSVNTSU9OX05BTUVTLlN1YnNjcmlwdGlvblN1cGVyT3duZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWx1YXRlZCA9IHRoaXMuaXNVc2VyU3Vic2NyaXB0aW9uU3VwZXJPd25lcigpIHx8IHRoaXMuaXNTdXBlckFkbWluKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvZHVjdEtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXNzdW1lIGl0J3MgUGFnZXMuUHJvZHVjdCBvciBQYWdlcy5Sb2xlIHdpdGggcHJvZHVjdEtleVxuICAgICAgICAgICAgICAgICAgICAgICAgZXZhbHVhdGVkID0gdGhpcy5pc0dyYW50ZWQocmF3LCBwcm9kdWN0S2V5LCBwZXJtaXNzaW9uX2tleSwgcHJvZHVjdFNsdWcpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZhbHVhdGVkID0gdGhpcy5pc0dyYW50ZWQocmF3KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGV4cHIgKz0gYCAke2V2YWx1YXRlZH0gYDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZXhwcjtcbiAgICB9XG5cbiAgICBnZXRQZXJtaXNzaW9uQnlSb2xlKHJvbGVJZDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXQoYC9hZG1pbi9yb2xlX3Blcm1pc3Npb25zLyR7cm9sZUlkfWApO1xuICAgIH1cblxuICAgIHNhdmVVc2VyUGVybWlzc2lvbihwYXlsb2FkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wb3N0KGAvYWRtaW4vcm9sZV9wZXJtaXNzaW9uc2AsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGRldGVybWluZSB1c2VyIGlzIHN1cGVyX2FkbWluIHVzaW5nIHVzZXIuYXV0aC5ncmFudGVkWydQYWdlcy5TdXBlckFkbWluJ11cbiAgICAgKi9cbiAgICBpc1N1cGVyQWRtaW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMudXNlci5hdXRoLmdyYW50ZWRbJ1BhZ2VzLlN1cGVyQWRtaW4nXSB8fCBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgQW55IFByb2R1Y3QgQWRtaW4gcmVnYXJkbGVzcyBvZiB0aGUgcHJvZHVjdCBiZWluZyBtYXN0ZXIgcHJvZHVjdCBvciBub3QuXG4gICAgICovXG4gICAgcHVibGljIGlzVXNlclN1YnNjcmlwdGlvbk93bmVyKHByb2R1Y3Q/KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghcHJvZHVjdCkge1xuICAgICAgICAgICAgcHJvZHVjdCA9IHRoaXMuZ2V0Q3VycmVudFByb2R1Y3QoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb25TbHVnID0gcHJvZHVjdD8uc3Vic2NyaXB0aW9uX3NsdWc7XG4gICAgICAgIHJldHVybiAhIXRoaXMudXNlci5hdXRoLmdyYW50ZWRbXG4gICAgICAgICAgICBgUGFnZXMuUHJvZHVjdC4ke3N1YnNjcmlwdGlvblNsdWd9LiR7cHJvZHVjdC5wZXJtaXNzaW9uX2tleX0uJHtwcm9kdWN0LmZlYXR1cmVfa2V5fS5TdWJzY3JpcHRpb25Pd25lcmBcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBbnkgUHJvZHVjdCBBZG1pbiByZWdhcmRsZXNzIG9mIHRoZSBwcm9kdWN0IGJlaW5nIG1hc3RlciBwcm9kdWN0IG9yIG5vdC5cbiAgICAgKiAqcmJhY0FsbG93PVwiU3Vic2NyaXB0aW9uQWRtaW5cIlxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgcHVibGljIGlzVXNlclN1YnNjcmlwdGlvbkFkbWluKHByb2R1Y3Q/KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghcHJvZHVjdCkge1xuICAgICAgICAgICAgcHJvZHVjdCA9IHRoaXMuZ2V0Q3VycmVudFByb2R1Y3QoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb25TbHVnID0gcHJvZHVjdD8uc3Vic2NyaXB0aW9uX3NsdWc7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhIXRoaXMudXNlci5hdXRoLmdyYW50ZWRbXG4gICAgICAgICAgICAgICAgYFBhZ2VzLlByb2R1Y3QuJHtzdWJzY3JpcHRpb25TbHVnfS4ke3Byb2R1Y3QucGVybWlzc2lvbl9rZXl9LiR7cHJvZHVjdC5mZWF0dXJlX2tleX0uU3Vic2NyaXB0aW9uQWRtaW5gXG4gICAgICAgICAgICBdIHx8XG4gICAgICAgICAgICAhIXRoaXMudXNlci5hdXRoLmdyYW50ZWRbXG4gICAgICAgICAgICAgICAgYFBhZ2VzLlByb2R1Y3QuJHtzdWJzY3JpcHRpb25TbHVnfS4ke3Byb2R1Y3QucGVybWlzc2lvbl9rZXl9LiR7cHJvZHVjdC5mZWF0dXJlX2tleX0uU3Vic2NyaXB0aW9uT3duZXJgXG4gICAgICAgICAgICBdXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQW55IFByb2R1Y3QgQWRtaW4gb2YgdGhlIHByb2R1Y3QgYmVpbmcgdGhlIG1hc3RlciBwcm9kdWN0XG4gICAgICovXG4gICAgaXNVc2VyU3Vic2NyaXB0aW9uU3VwZXJBZG1pbihwcm9kdWN0Pyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXByb2R1Y3QpIHtcbiAgICAgICAgICAgIHByb2R1Y3QgPSB0aGlzLmdldEN1cnJlbnRQcm9kdWN0KCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uU2x1ZyA9IHByb2R1Y3Q/LnN1YnNjcmlwdGlvbl9zbHVnO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgISF0aGlzLnVzZXIuYXV0aC5ncmFudGVkW1xuICAgICAgICAgICAgICAgIGBQYWdlcy5Qcm9kdWN0LiR7c3Vic2NyaXB0aW9uU2x1Z30uJHtwcm9kdWN0LnBlcm1pc3Npb25fa2V5fS4ke3Byb2R1Y3QuZmVhdHVyZV9rZXl9LlN1YnNjcmlwdGlvblN1cGVyQWRtaW5gXG4gICAgICAgICAgICBdIHx8XG4gICAgICAgICAgICAhIXRoaXMudXNlci5hdXRoLmdyYW50ZWRbXG4gICAgICAgICAgICAgICAgYFBhZ2VzLlByb2R1Y3QuJHtzdWJzY3JpcHRpb25TbHVnfS4ke3Byb2R1Y3QucGVybWlzc2lvbl9rZXl9LiR7cHJvZHVjdC5mZWF0dXJlX2tleX0uU3Vic2NyaXB0aW9uU3VwZXJPd25lcmBcbiAgICAgICAgICAgIF1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpc1VzZXJNYXN0ZXJTdWJzY3JpcHRpb25TdXBlckFkbWluKHByb2R1Y3Q/KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghcHJvZHVjdCkge1xuICAgICAgICAgICAgcHJvZHVjdCA9IHRoaXMuZ2V0Q3VycmVudFByb2R1Y3QoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gISF0aGlzLnVzZXIuYXV0aC5ncmFudGVkW1xuICAgICAgICAgICAgYFBhZ2VzLlByb2R1Y3QuJHtwcm9kdWN0LnBlcm1pc3Npb25fa2V5fS4ke3Byb2R1Y3QuZmVhdHVyZV9rZXl9LlN1YnNjcmlwdGlvblN1cGVyQWRtaW5gXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQW55IFByb2R1Y3QgQWRtaW4gb2YgdGhlIHByb2R1Y3QgYmVpbmcgdGhlIG1hc3RlciBwcm9kdWN0XG4gICAgICovXG4gICAgcHVibGljIGlzVXNlclN1YnNjcmlwdGlvblN1cGVyT3duZXIocHJvZHVjdD8pOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCFwcm9kdWN0KSB7XG4gICAgICAgICAgICBwcm9kdWN0ID0gdGhpcy5nZXRDdXJyZW50UHJvZHVjdCgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvblNsdWcgPSBwcm9kdWN0Py5zdWJzY3JpcHRpb25fc2x1ZztcbiAgICAgICAgcmV0dXJuICEhdGhpcy51c2VyLmF1dGguZ3JhbnRlZFtcbiAgICAgICAgICAgIGBQYWdlcy5Qcm9kdWN0LiR7c3Vic2NyaXB0aW9uU2x1Z30uJHtwcm9kdWN0LnBlcm1pc3Npb25fa2V5fS4ke3Byb2R1Y3QuZmVhdHVyZV9rZXl9LlN1YnNjcmlwdGlvblN1cGVyT3duZXJgXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgc2V0Q3VycmVudFByb2R1Y3QocHJvZHVjdCkge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgICAgICAgICdwcm9kdWN0JyxcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBpZDogcHJvZHVjdC5pZCxcbiAgICAgICAgICAgICAgICBwZXJtaXNzaW9uX2tleTogcHJvZHVjdC5wZXJtaXNzaW9uX2tleSxcbiAgICAgICAgICAgICAgICBmZWF0dXJlX2tleTogcHJvZHVjdC5mZWF0dXJlX2tleSxcbiAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb25JZDogcHJvZHVjdC5zdWJzY3JpcHRpb25JZCxcbiAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb25fc2x1ZzogcHJvZHVjdC5zdWJzY3JpcHRpb25fc2x1Z1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q3VycmVudFByb2R1Y3QoKSB7XG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdwcm9kdWN0JykpO1xuICAgIH1cbn1cbiJdfQ==
261
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24tc2VydmljZXMvc3JjL2xpYi9wZXJtaXNzaW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUU5RixPQUFPLFNBQVMsTUFBTSxrQkFBa0IsQ0FBQztBQUN6QyxPQUFPLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFFbkMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQUs3RCxNQUFNLE9BQU8saUJBQWlCO0lBUzFCLFlBQTZCLEdBQXVCO1FBQXZCLFFBQUcsR0FBSCxHQUFHLENBQW9CO1FBRnBELFNBQUksR0FBUyxJQUFJLENBQUM7SUFFcUMsQ0FBQztJQUV4RCxzQkFBc0IsQ0FBQyxZQUFZO1FBQy9CLGlCQUFpQixDQUFDLG9CQUFvQixHQUFHLFlBQVksQ0FBQztJQUMxRCxDQUFDO0lBRUQsU0FBUyxDQUNMLGNBQXNCLEVBQ3RCLFVBQVUsR0FBRyxJQUFJLEVBQ2pCLGNBQWMsR0FBRyxJQUFJLEVBQ3JCLFdBQVcsR0FBRyxJQUFJO1FBRWxCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1osTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztZQUV0QixzQ0FBc0M7WUFDdEMseUJBQXlCO1lBQ3pCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7Z0JBQ3RCLE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7WUFFRCxJQUFJLGNBQWMsRUFBRSxDQUFDO2dCQUNqQixjQUFjLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUMsQ0FBQztZ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SUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNYLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRTtZQUNkLGNBQWMsRUFBRSxPQUFPLEVBQUUsY0FBYztZQUN2QyxXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVc7WUFDaEMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxjQUFjO1lBQ3RDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxpQkFBaUI7U0FDL0MsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRU0saUJBQWlCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQzsrR0FuVVEsaUJBQWlCO21IQUFqQixpQkFBaUIsY0FGZCxNQUFNOzs0RkFFVCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBRE1JTl9TVUJfTUVOVV9XSElURUxJU1QsIFBFUk1JU1NJT05fTkFNRVMsIFVzZXIgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5cbmltcG9ydCBjbG9uZURlZXAgZnJvbSAnbG9kYXNoL2Nsb25lRGVlcCc7XG5pbXBvcnQgcGlja0J5IGZyb20gJ2xvZGFzaC9waWNrQnknO1xuXG5pbXBvcnQgeyBNYWluQXBpSHR0cFNlcnZpY2UgfSBmcm9tICcuL21haW4tYXBpLWh0dHAuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvblNlcnZpY2Uge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgc3RhdGljIHNlbGVjdGVkUHJvZHVjdDogYW55OyAvLyBOT1NPTkFSXG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHN0YXRpYyBzZWxlY3RlZFN1YnNjcmlwdGlvbjogYW55OyAvLyBOT1NPTkFSXG5cbiAgICB1c2VyOiBVc2VyID0gbnVsbDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYXBpOiBNYWluQXBpSHR0cFNlcnZpY2UpIHt9XG5cbiAgICBzZXRDdXJyZW50U3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbikge1xuICAgICAgICBQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZFN1YnNjcmlwdGlvbiA9IHN1YnNjcmlwdGlvbjtcbiAgICB9XG5cbiAgICBpc0dyYW50ZWQoXG4gICAgICAgIHBlcm1pc3Npb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIHByb2R1Y3RLZXkgPSBudWxsLFxuICAgICAgICBwZXJtaXNzaW9uX2tleSA9IG51bGwsXG4gICAgICAgIHByb2R1Y3RTbHVnID0gbnVsbFxuICAgICk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy51c2VyKSB7XG4gICAgICAgICAgICBjb25zdCB7IHVzZXIgfSA9IHRoaXM7XG5cbiAgICAgICAgICAgIC8vIEFkbWluIGhhdmUgYWNjZXNzIHRvIGFsbCB0aGUgbWVudXMuXG4gICAgICAgICAgICAvLyBFLmcuLCBQYWdlcy5TdXBlckFkbWluXG4gICAgICAgICAgICBpZiAodGhpcy5pc1N1cGVyQWRtaW4oKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGVybWlzc2lvbk5hbWUpIHtcbiAgICAgICAgICAgICAgICBwZXJtaXNzaW9uTmFtZSA9IHRoaXMuZ2V0Rm9ybWF0dGVkUGVybWlzc2lvbk5hbWUocGVybWlzc2lvbk5hbWUsIHByb2R1Y3RTbHVnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUmV0dXJuaW5nIHRydWUgaWYgdXNlciBoYXMgYSBnaXZlbiBwZXJtaXNzaW9uXG4gICAgICAgICAgICAvLyBFLmcuLCBQYWdlcy5Sb2xlLkNsb3VkT2xpdmUuU2FsZXNNYW5hZ2VyXG4gICAgICAgICAgICAvLyBvciBQYWdlcy5CZXRhIG9yIFBhZ2VzLkFscGhhXG5cbiAgICAgICAgICAgIGlmIChwZXJtaXNzaW9uTmFtZT8uaW5jbHVkZXMoJ3x8JykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJ0cyA9IHBlcm1pc3Npb25OYW1lLnNwbGl0KCd8fCcpLm1hcChwID0+IHAudHJpbSgpKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHBhcnQgb2YgcGFydHMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVzZXJbJ2F1dGgnXT8uWydncmFudGVkJ11bcGFydF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh1c2VyWydhdXRoJ10/LlsnZ3JhbnRlZCddW3Blcm1pc3Npb25OYW1lXSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZFBlcm1pc3Npb25zID0gdGhpcy5oYW5kbGVQcm9kdWN0S2V5KFxuICAgICAgICAgICAgICAgIHByb2R1Y3RLZXksXG4gICAgICAgICAgICAgICAgdXNlcixcbiAgICAgICAgICAgICAgICBwZXJtaXNzaW9uX2tleSxcbiAgICAgICAgICAgICAgICBwZXJtaXNzaW9uTmFtZVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGZpbHRlcmVkUGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyZWRQZXJtaXNzaW9ucztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gbm8gdmFsaWQgcGVybWlzc2lvbiB3YXMgZGV0ZWN0ZWQgZm9yIHRoaXMgdXNlclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIHVzZXIgbm90IGxvZ2dlZC1pblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaGFuZGxlUHJvZHVjdEtleShwcm9kdWN0S2V5LCB1c2VyLCBwZXJtaXNzaW9uX2tleSwgcGVybWlzc2lvbk5hbWUpIHtcbiAgICAgICAgaWYgKHByb2R1Y3RLZXkpIHtcbiAgICAgICAgICAgIC8vIGZpbHRlcnMgdGhlIHBlcm1pc3Npb24gb25seSBmb3IgdGhlIHNlbGVjdGVkIHByb2R1Y3QuXG4gICAgICAgICAgICBsZXQgZmlsdGVyZWRQZXJtaXNzaW9ucyA9IHBpY2tCeShjbG9uZURlZXAodXNlclsnYXV0aCddWydncmFudGVkJ10pLCAoX3ZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ga2V5LmluY2x1ZGVzKHByb2R1Y3RLZXkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBhZGQgUGFnZXMuUHJvZHVjdC57cGVybWlzc2lvbl9rZXl9XG4gICAgICAgICAgICBmaWx0ZXJlZFBlcm1pc3Npb25zID0ge1xuICAgICAgICAgICAgICAgIC4uLnsgW2BQYWdlcy5Qcm9kdWN0LiR7cGVybWlzc2lvbl9rZXl9YF06IHRydWUgfSxcbiAgICAgICAgICAgICAgICAuLi5maWx0ZXJlZFBlcm1pc3Npb25zXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvLyBFLmcuLCBQYWdlcy5Qcm9kdWN0LkNsb3VkT2xpdmUuQ2xvdWRPbGl2ZV9Nc3BLZXlcbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXJlZFBlcm1pc3Npb25zW3Blcm1pc3Npb25OYW1lXSB8fCBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Rm9ybWF0dGVkUGVybWlzc2lvbk5hbWUocGVybWlzc2lvbk5hbWU6IHN0cmluZywgcHJvZHVjdFNsdWc6IHN0cmluZyB8IG51bGwpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBzZWxlY3RlZFByb2R1Y3QgPSBQZXJtaXNzaW9uU2VydmljZT8uc2VsZWN0ZWRQcm9kdWN0IHx8IHRoaXMuZ2V0Q3VycmVudFByb2R1Y3QoKTtcbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uU2x1ZyA9IHNlbGVjdGVkUHJvZHVjdD8uc3Vic2NyaXB0aW9uX3NsdWc7XG5cbiAgICAgICAgbGV0IHNsdWdUb0NoZWNrOiBzdHJpbmc7XG4gICAgICAgIGlmICghcHJvZHVjdFNsdWcpIHtcbiAgICAgICAgICAgIGlmIChwZXJtaXNzaW9uTmFtZS5pbmNsdWRlcygnUGFnZXMuUHJvZHVjdC4nKSkge1xuICAgICAgICAgICAgICAgIHNsdWdUb0NoZWNrID0gYFBhZ2VzLlByb2R1Y3QuJHtzdWJzY3JpcHRpb25TbHVnfS5gO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGVybWlzc2lvbk5hbWUuaW5jbHVkZXMoJ1BhZ2VzLlJvbGUuJykpIHtcbiAgICAgICAgICAgICAgICBzbHVnVG9DaGVjayA9IGBQYWdlcy5Sb2xlLiR7c3Vic2NyaXB0aW9uU2x1Z30uYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNsdWdUb0NoZWNrID0gcHJvZHVjdFNsdWc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXBlcm1pc3Npb25OYW1lLmluY2x1ZGVzKHNsdWdUb0NoZWNrKSAmJiBwZXJtaXNzaW9uTmFtZS5pbmNsdWRlcygnUGFnZXMuUHJvZHVjdC4nKSkge1xuICAgICAgICAgICAgcGVybWlzc2lvbk5hbWUgPSBwZXJtaXNzaW9uTmFtZS5yZXBsYWNlKCdQYWdlcy5Qcm9kdWN0LicsIHNsdWdUb0NoZWNrKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwZXJtaXNzaW9uTmFtZS5pbmNsdWRlcygnUGFnZXMuUm9sZS4nKSAmJiAhcGVybWlzc2lvbk5hbWUuaW5jbHVkZXMoc2x1Z1RvQ2hlY2spKSB7XG4gICAgICAgICAgICBwZXJtaXNzaW9uTmFtZSA9IHBlcm1pc3Npb25OYW1lLnJlcGxhY2UoJ1BhZ2VzLlJvbGUuJywgc2x1Z1RvQ2hlY2spO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBlcm1pc3Npb25OYW1lO1xuICAgIH1cblxuICAgIGdldFBlcm1pc3Npb25UcmVlRGF0YUJ5Um9sZShkYXRhKSB7XG4gICAgICAgIGNvbnN0IHBlcm1pc3Npb25zID0gW107XG4gICAgICAgIGRhdGEuYWxsLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IG5hbWUgfSA9IGVsZW1lbnQ7XG4gICAgICAgICAgICBwZXJtaXNzaW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZDogZWxlbWVudC5pZCwgLy8gcGVybWlzc2lvbklkOiBVc2VkIHRvIHVwZGF0ZSB0aGUgcGVybWlzc2lvbnMgb24gY2hhbmdlXG4gICAgICAgICAgICAgICAgcGFyZW50TmFtZTogbmFtZS5pbmNsdWRlcygnLicpID8gbmFtZS5zdWJzdHJpbmcoMCwgbmFtZS5sYXN0SW5kZXhPZignLicpKSA6IG51bGwsXG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogZWxlbWVudC5uYW1lXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHBlcm1pc3Npb25zLFxuICAgICAgICAgICAgZ3JhbnRlZFBlcm1pc3Npb25OYW1lczogT2JqZWN0LmtleXMoZGF0YS5ncmFudGVkKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGV2YWx1YXRlUGVybWlzc2lvbnMoXG4gICAgICAgIHBlcm1pc3Npb246IHN0cmluZyxcbiAgICAgICAgcHJvZHVjdEtleTogc3RyaW5nID0gbnVsbCxcbiAgICAgICAgcGVybWlzc2lvbl9rZXk6IHN0cmluZyA9IG51bGwsXG4gICAgICAgIHByb2R1Y3RTbHVnOiBzdHJpbmcgPSBudWxsXG4gICAgKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghcGVybWlzc2lvbikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGV4cHIgPSAnJztcblxuICAgICAgICBpZiAocGVybWlzc2lvbiA9PT0gUEVSTUlTU0lPTl9OQU1FUy5TdXBlckFkbWluKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc1N1cGVyQWRtaW4oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGVybWlzc2lvbiA9PT0gUEVSTUlTU0lPTl9OQU1FUy5TdWJzY3JpcHRpb25BZG1pbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNVc2VyU3Vic2NyaXB0aW9uQWRtaW4oKSB8fCB0aGlzLmlzVXNlclN1YnNjcmlwdGlvbk93bmVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBlcm1pc3Npb24gPT09IFBFUk1JU1NJT05fTkFNRVMuU3Vic2NyaXB0aW9uT3duZXIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzVXNlclN1YnNjcmlwdGlvbk93bmVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBlcm1pc3Npb24gPT09IFBFUk1JU1NJT05fTkFNRVMuU3Vic2NyaXB0aW9uU3VwZXJBZG1pbikge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICB0aGlzLmlzVXNlclN1YnNjcmlwdGlvblN1cGVyQWRtaW4oKSB8fFxuICAgICAgICAgICAgICAgIHRoaXMuaXNVc2VyU3Vic2NyaXB0aW9uU3VwZXJPd25lcigpIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5pc1N1cGVyQWRtaW4oKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGVybWlzc2lvbiA9PT0gUEVSTUlTU0lPTl9OQU1FUy5TdWJzY3JpcHRpb25TdXBlck93bmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc1VzZXJTdWJzY3JpcHRpb25TdXBlck93bmVyKCkgfHwgdGhpcy5pc1N1cGVyQWRtaW4oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0eXBlb2YgcGVybWlzc2lvbiA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgIEFETUlOX1NVQl9NRU5VX1dISVRFTElTVC5zb21lKHYgPT4gcGVybWlzc2lvbi5pbmNsdWRlcyh2KSkgJiZcbiAgICAgICAgICAgICh0aGlzLmlzVXNlclN1YnNjcmlwdGlvblN1cGVyQWRtaW4oKSB8fCB0aGlzLmlzVXNlclN1YnNjcmlwdGlvblN1cGVyT3duZXIoKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV4cHIgPSB0aGlzLmhhbmRsZU5vbkJvb2xlYW5QZXJtaXNzaW9ucyhcbiAgICAgICAgICAgIHBlcm1pc3Npb24sXG4gICAgICAgICAgICBleHByLFxuICAgICAgICAgICAgcHJvZHVjdEtleSxcbiAgICAgICAgICAgIHBlcm1pc3Npb25fa2V5LFxuICAgICAgICAgICAgcHJvZHVjdFNsdWdcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBOb3cgZXhwciBpcyBtYWRlIG9mIHRydWUvZmFsc2UgdmFsdWVzIHdpdGggJiYsIHx8LCAoKVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXZhbFxuICAgICAgICByZXR1cm4gZXZhbChleHByKTsgLy8gTk9TT05BUlxuICAgIH1cblxuICAgIGhhbmRsZU5vbkJvb2xlYW5QZXJtaXNzaW9ucyhwZXJtaXNzaW9uLCBleHByLCBwcm9kdWN0S2V5LCBwZXJtaXNzaW9uX2tleSwgcHJvZHVjdFNsdWcpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBwZXJtaXNzaW9uICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIHBlcm1pc3Npb24uc3BsaXQoJyAnKS5mb3JFYWNoKHggPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJhdyA9IHgudHJpbSgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKFsnfHwnLCAnJiYnLCAnKCcsICcpJ10uaW5jbHVkZXMocmF3KSkge1xuICAgICAgICAgICAgICAgICAgICBleHByICs9IGAgJHtyYXd9IGA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGV2YWx1YXRlZDogYm9vbGVhbjtcblxuICAgICAgICAgICAgICAgICAgICBpZiAocmF3ID09PSBQRVJNSVNTSU9OX05BTUVTLlN1cGVyQWRtaW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWx1YXRlZCA9IHRoaXMuaXNTdXBlckFkbWluKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmF3ID09PSBQRVJNSVNTSU9OX05BTUVTLlN1YnNjcmlwdGlvbkFkbWluKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmFsdWF0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNVc2VyU3Vic2NyaXB0aW9uQWRtaW4oKSB8fCB0aGlzLmlzVXNlclN1YnNjcmlwdGlvbk93bmVyKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmF3ID09PSBQRVJNSVNTSU9OX05BTUVTLlN1YnNjcmlwdGlvbk93bmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmFsdWF0ZWQgPSB0aGlzLmlzVXNlclN1YnNjcmlwdGlvbk93bmVyKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmF3ID09PSBQRVJNSVNTSU9OX05BTUVTLlN1YnNjcmlwdGlvblN1cGVyQWRtaW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWx1YXRlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1VzZXJTdWJzY3JpcHRpb25TdXBlckFkbWluKCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzVXNlclN1YnNjcmlwdGlvblN1cGVyT3duZXIoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTdXBlckFkbWluKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmF3ID09PSBQRVJNSVNTSU9OX05BTUVTLlN1YnNjcmlwdGlvblN1cGVyT3duZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWx1YXRlZCA9IHRoaXMuaXNVc2VyU3Vic2NyaXB0aW9uU3VwZXJPd25lcigpIHx8IHRoaXMuaXNTdXBlckFkbWluKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvZHVjdEtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXNzdW1lIGl0J3MgUGFnZXMuUHJvZHVjdCBvciBQYWdlcy5Sb2xlIHdpdGggcHJvZHVjdEtleVxuICAgICAgICAgICAgICAgICAgICAgICAgZXZhbHVhdGVkID0gdGhpcy5pc0dyYW50ZWQocmF3LCBwcm9kdWN0S2V5LCBwZXJtaXNzaW9uX2tleSwgcHJvZHVjdFNsdWcpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZhbHVhdGVkID0gdGhpcy5pc0dyYW50ZWQocmF3KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGV4cHIgKz0gYCAke2V2YWx1YXRlZH0gYDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZXhwcjtcbiAgICB9XG5cbiAgICBnZXRQZXJtaXNzaW9uQnlSb2xlKHJvbGVJZDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXQoYC9hZG1pbi9yb2xlX3Blcm1pc3Npb25zLyR7cm9sZUlkfWApO1xuICAgIH1cblxuICAgIHNhdmVVc2VyUGVybWlzc2lvbihwYXlsb2FkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wb3N0KGAvYWRtaW4vcm9sZV9wZXJtaXNzaW9uc2AsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGRldGVybWluZSB1c2VyIGlzIHN1cGVyX2FkbWluIHVzaW5nIHVzZXIuYXV0aC5ncmFudGVkWydQYWdlcy5TdXBlckFkbWluJ11cbiAgICAgKi9cbiAgICBpc1N1cGVyQWRtaW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMudXNlci5hdXRoLmdyYW50ZWRbJ1BhZ2VzLlN1cGVyQWRtaW4nXSB8fCBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgQW55IFByb2R1Y3QgQWRtaW4gcmVnYXJkbGVzcyBvZiB0aGUgcHJvZHVjdCBiZWluZyBtYXN0ZXIgcHJvZHVjdCBvciBub3QuXG4gICAgICovXG4gICAgcHVibGljIGlzVXNlclN1YnNjcmlwdGlvbk93bmVyKHByb2R1Y3Q/KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghcHJvZHVjdCkge1xuICAgICAgICAgICAgcHJvZHVjdCA9IHRoaXMuZ2V0Q3VycmVudFByb2R1Y3QoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb25TbHVnID0gcHJvZHVjdD8uc3Vic2NyaXB0aW9uX3NsdWc7XG4gICAgICAgIHJldHVybiAhIXRoaXMudXNlci5hdXRoLmdyYW50ZWRbXG4gICAgICAgICAgICBgUGFnZXMuUHJvZHVjdC4ke3N1YnNjcmlwdGlvblNsdWd9LiR7cHJvZHVjdD8ucGVybWlzc2lvbl9rZXl9LiR7cHJvZHVjdC5mZWF0dXJlX2tleX0uU3Vic2NyaXB0aW9uT3duZXJgXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQW55IFByb2R1Y3QgQWRtaW4gcmVnYXJkbGVzcyBvZiB0aGUgcHJvZHVjdCBiZWluZyBtYXN0ZXIgcHJvZHVjdCBvciBub3QuXG4gICAgICogKnJiYWNBbGxvdz1cIlN1YnNjcmlwdGlvbkFkbWluXCJcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIHB1YmxpYyBpc1VzZXJTdWJzY3JpcHRpb25BZG1pbihwcm9kdWN0Pyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXByb2R1Y3QpIHtcbiAgICAgICAgICAgIHByb2R1Y3QgPSB0aGlzLmdldEN1cnJlbnRQcm9kdWN0KCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uU2x1ZyA9IHByb2R1Y3Q/LnN1YnNjcmlwdGlvbl9zbHVnO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgISF0aGlzLnVzZXIuYXV0aC5ncmFudGVkW1xuICAgICAgICAgICAgICAgIGBQYWdlcy5Qcm9kdWN0LiR7c3Vic2NyaXB0aW9uU2x1Z30uJHtwcm9kdWN0Py5wZXJtaXNzaW9uX2tleX0uJHtwcm9kdWN0LmZlYXR1cmVfa2V5fS5TdWJzY3JpcHRpb25BZG1pbmBcbiAgICAgICAgICAgIF0gfHxcbiAgICAgICAgICAgICEhdGhpcy51c2VyLmF1dGguZ3JhbnRlZFtcbiAgICAgICAgICAgICAgICBgUGFnZXMuUHJvZHVjdC4ke3N1YnNjcmlwdGlvblNsdWd9LiR7cHJvZHVjdD8ucGVybWlzc2lvbl9rZXl9LiR7cHJvZHVjdC5mZWF0dXJlX2tleX0uU3Vic2NyaXB0aW9uT3duZXJgXG4gICAgICAgICAgICBdXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQW55IFByb2R1Y3QgQWRtaW4gb2YgdGhlIHByb2R1Y3QgYmVpbmcgdGhlIG1hc3RlciBwcm9kdWN0XG4gICAgICovXG4gICAgaXNVc2VyU3Vic2NyaXB0aW9uU3VwZXJBZG1pbihwcm9kdWN0Pyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXByb2R1Y3QpIHtcbiAgICAgICAgICAgIHByb2R1Y3QgPSB0aGlzLmdldEN1cnJlbnRQcm9kdWN0KCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uU2x1ZyA9IHByb2R1Y3Q/LnN1YnNjcmlwdGlvbl9zbHVnO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgISF0aGlzLnVzZXIuYXV0aC5ncmFudGVkW1xuICAgICAgICAgICAgICAgIGBQYWdlcy5Qcm9kdWN0LiR7c3Vic2NyaXB0aW9uU2x1Z30uJHtwcm9kdWN0Py5wZXJtaXNzaW9uX2tleX0uJHtwcm9kdWN0LmZlYXR1cmVfa2V5fS5TdWJzY3JpcHRpb25TdXBlckFkbWluYFxuICAgICAgICAgICAgXSB8fFxuICAgICAgICAgICAgISF0aGlzLnVzZXIuYXV0aC5ncmFudGVkW1xuICAgICAgICAgICAgICAgIGBQYWdlcy5Qcm9kdWN0LiR7c3Vic2NyaXB0aW9uU2x1Z30uJHtwcm9kdWN0Py5wZXJtaXNzaW9uX2tleX0uJHtwcm9kdWN0LmZlYXR1cmVfa2V5fS5TdWJzY3JpcHRpb25TdXBlck93bmVyYFxuICAgICAgICAgICAgXVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGlzVXNlck1hc3RlclN1YnNjcmlwdGlvblN1cGVyQWRtaW4ocHJvZHVjdD8pOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCFwcm9kdWN0KSB7XG4gICAgICAgICAgICBwcm9kdWN0ID0gdGhpcy5nZXRDdXJyZW50UHJvZHVjdCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhIXRoaXMudXNlci5hdXRoLmdyYW50ZWRbXG4gICAgICAgICAgICBgUGFnZXMuUHJvZHVjdC4ke3Byb2R1Y3Q/LnBlcm1pc3Npb25fa2V5fS4ke3Byb2R1Y3QuZmVhdHVyZV9rZXl9LlN1YnNjcmlwdGlvblN1cGVyQWRtaW5gXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQW55IFByb2R1Y3QgQWRtaW4gb2YgdGhlIHByb2R1Y3QgYmVpbmcgdGhlIG1hc3RlciBwcm9kdWN0XG4gICAgICovXG4gICAgcHVibGljIGlzVXNlclN1YnNjcmlwdGlvblN1cGVyT3duZXIocHJvZHVjdD8pOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCFwcm9kdWN0KSB7XG4gICAgICAgICAgICBwcm9kdWN0ID0gdGhpcy5nZXRDdXJyZW50UHJvZHVjdCgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvblNsdWcgPSBwcm9kdWN0Py5zdWJzY3JpcHRpb25fc2x1ZztcbiAgICAgICAgcmV0dXJuICEhdGhpcy51c2VyLmF1dGguZ3JhbnRlZFtcbiAgICAgICAgICAgIGBQYWdlcy5Qcm9kdWN0LiR7c3Vic2NyaXB0aW9uU2x1Z30uJHtwcm9kdWN0Py5wZXJtaXNzaW9uX2tleX0uJHtwcm9kdWN0LmZlYXR1cmVfa2V5fS5TdWJzY3JpcHRpb25TdXBlck93bmVyYFxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHNldEN1cnJlbnRQcm9kdWN0KHByb2R1Y3QpIHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXG4gICAgICAgICAgICAncHJvZHVjdCcsXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgaWQ6IHByb2R1Y3QuaWQsXG4gICAgICAgICAgICAgICAgcGVybWlzc2lvbl9rZXk6IHByb2R1Y3Q/LnBlcm1pc3Npb25fa2V5LFxuICAgICAgICAgICAgICAgIGZlYXR1cmVfa2V5OiBwcm9kdWN0LmZlYXR1cmVfa2V5LFxuICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbklkOiBwcm9kdWN0LnN1YnNjcmlwdGlvbklkLFxuICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbl9zbHVnOiBwcm9kdWN0LnN1YnNjcmlwdGlvbl9zbHVnXG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDdXJyZW50UHJvZHVjdCgpIHtcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3Byb2R1Y3QnKSk7XG4gICAgfVxufVxuIl19
@@ -17,11 +17,25 @@ export class TagService {
17
17
  deleteTagById(id, subscription_id) {
18
18
  return this.api.delete(`${this.ADMIN_TAG_PATH}${id}?subscription_id=${subscription_id}`);
19
19
  }
20
- updateTagById(id, data, subscription_id) {
21
- return this.api.put(`${this.ADMIN_TAG_PATH}${id}`, { ...data, subscription_id });
20
+ updateTagById(id, data) {
21
+ const formData = new FormData();
22
+ // eslint-disable-next-line no-restricted-syntax
23
+ for (const key in data) {
24
+ if (key in data) {
25
+ formData.append(key, data[key]);
26
+ }
27
+ }
28
+ return this.api.put(`${this.ADMIN_TAG_PATH}${id}`, formData);
22
29
  }
23
- addAdminTag(data, subscription_id) {
24
- return this.api.post(this.ADMIN_TAG_PATH, { ...data, subscription_id });
30
+ addAdminTag(data) {
31
+ const formData = new FormData();
32
+ // eslint-disable-next-line no-restricted-syntax
33
+ for (const key in data) {
34
+ if (key in data) {
35
+ formData.append(key, data[key]);
36
+ }
37
+ }
38
+ return this.api.post(this.ADMIN_TAG_PATH, formData);
25
39
  }
26
40
  /// //////////////////////
27
41
  /// /// Tags API's
@@ -61,6 +75,13 @@ export class TagService {
61
75
  ...HelperService.getPagingParams(params)
62
76
  });
63
77
  }
78
+ getAllTagCategories(params, subscription_id) {
79
+ console.log(subscription_id);
80
+ return this.api.getWithParams(`tag_categories/get_all`, {
81
+ subscription_id,
82
+ ...HelperService.getPagingParams(params)
83
+ });
84
+ }
64
85
  deleteTagCategoryById(id, subscription_id) {
65
86
  return this.api.delete(`${this.ADMIN_TAG_CATEGORIES_PATH}${id}?subscription_id=${subscription_id}`);
66
87
  }
@@ -79,4 +100,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
79
100
  providedIn: 'root'
80
101
  }]
81
102
  }], ctorParameters: () => [{ type: i1.MainApiHttpService }] });
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi1zZXJ2aWNlcy9zcmMvbGliL3RhZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUNILFVBQVUsRUFDVix5QkFBeUIsRUFDekIsY0FBYyxFQUVqQixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBSzdELE1BQU0sT0FBTyxVQUFVO0lBS25CLFlBQTZCLEdBQXVCO1FBQXZCLFFBQUcsR0FBSCxHQUFHLENBQW9CO1FBSnBELG1CQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ2hDLDhCQUF5QixHQUFHLHlCQUF5QixDQUFDO1FBQ3RELGVBQVUsR0FBRyxVQUFVLENBQUM7SUFFK0IsQ0FBQztJQUV4RCwwQkFBMEI7SUFDMUIseUJBQXlCO0lBQ3pCLDBCQUEwQjtJQUMxQixhQUFhLENBQUMsRUFBVSxFQUFFLGVBQXVCO1FBQzdDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsb0JBQW9CLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVELGFBQWEsQ0FBQyxFQUFVLEVBQUUsSUFBSSxFQUFFLGVBQXVCO1FBQ25ELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQsV0FBVyxDQUFDLElBQUksRUFBRSxlQUF1QjtRQUNyQyxPQUFP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YXIvY29yZSc7XG5cbmltcG9ydCB7XG4gICAgQURNSU5fUEFUSCxcbiAgICBBRE1JTl9UQUdfQ0FURUdPUklFU19QQVRILFxuICAgIEFETUlOX1RBR19QQVRILFxuICAgIFBhZ2luZ1xufSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2hlbHBlci1zZXJ2aWNlJztcblxuaW1wb3J0IHsgTWFpbkFwaUh0dHBTZXJ2aWNlIH0gZnJvbSAnLi9tYWluLWFwaS1odHRwLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFRhZ1NlcnZpY2Uge1xuICAgIEFETUlOX1RBR19QQVRIID0gQURNSU5fVEFHX1BBVEg7XG4gICAgQURNSU5fVEFHX0NBVEVHT1JJRVNfUEFUSCA9IEFETUlOX1RBR19DQVRFR09SSUVTX1BBVEg7XG4gICAgQURNSU5fUEFUSCA9IEFETUlOX1BBVEg7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGFwaTogTWFpbkFwaUh0dHBTZXJ2aWNlKSB7fVxuXG4gICAgLy8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLy8gLy8vIEFkbWluIFRhZyBTZWN0aW9uXG4gICAgLy8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICBkZWxldGVUYWdCeUlkKGlkOiBudW1iZXIsIHN1YnNjcmlwdGlvbl9pZDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5kZWxldGUoYCR7dGhpcy5BRE1JTl9UQUdfUEFUSH0ke2lkfT9zdWJzY3JpcHRpb25faWQ9JHtzdWJzY3JpcHRpb25faWR9YCk7XG4gICAgfVxuXG4gICAgdXBkYXRlVGFnQnlJZChpZDogbnVtYmVyLCBkYXRhLCBzdWJzY3JpcHRpb25faWQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucHV0KGAke3RoaXMuQURNSU5fVEFHX1BBVEh9JHtpZH1gLCB7IC4uLmRhdGEsIHN1YnNjcmlwdGlvbl9pZCB9KTtcbiAgICB9XG5cbiAgICBhZGRBZG1pblRhZyhkYXRhLCBzdWJzY3JpcHRpb25faWQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucG9zdCh0aGlzLkFETUlOX1RBR19QQVRILCB7IC4uLmRhdGEsIHN1YnNjcmlwdGlvbl9pZCB9KTtcbiAgICB9XG5cbiAgICAvLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vLyAvLy8gVGFncyBBUEknc1xuICAgIC8vLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgZ2V0VGFnc0J5VHlwZSh0YWdfdHlwZTogc3RyaW5nLCBwYWdpbmc6IFBhZ2luZywgc3Vic2NyaXB0aW9uX2lkPzogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXRXaXRoUGFyYW1zKCcvdGFncy9nZXRfYWxsX3RhZ3MnLCB7XG4gICAgICAgICAgICB0YWdfdHlwZSxcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbl9pZCxcbiAgICAgICAgICAgIC4uLkhlbHBlclNlcnZpY2UuZ2V0UGFnaW5nUGFyYW1zKHBhZ2luZylcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0QXZhaWxhYmxlVGFnVHlwZShzdWJzY3JpcHRpb25faWQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcygnL3RhZ3MvYXZhaWxhYmxlX3RhZ190eXBlcycsIHsgc3Vic2NyaXB0aW9uX2lkIH0pO1xuICAgIH1cblxuICAgIGFkZFRhZ3MoZGF0YSwgc3Vic2NyaXB0aW9uX2lkPzogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wb3N0KCcvdGFncycsIHsgLi4uZGF0YSwgc3Vic2NyaXB0aW9uX2lkIH0pO1xuICAgIH1cblxuICAgIGdldFRhZ3NCeUVudGl0eShzbHVnOiBzdHJpbmcsIHRhZ19lbnRpdHk6IHN0cmluZywgdGFnX3R5cGU6IHN0cmluZywgc3Vic2NyaXB0aW9uX2lkPzogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXRXaXRoUGFyYW1zKCcvdGFncy9nZXRfZW50aXR5X3RhZ3MnLCB7XG4gICAgICAgICAgICBzbHVnLFxuICAgICAgICAgICAgdGFnX2VudGl0eSxcbiAgICAgICAgICAgIHRhZ190eXBlLFxuICAgICAgICAgICAgc3Vic2NyaXB0aW9uX2lkLFxuICAgICAgICAgICAgLi4uSGVscGVyU2VydmljZS5nZXRQYWdpbmdQYXJhbXMoe30pXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldEdyb3VwZWRTa2lsbHMoc2x1Zzogc3RyaW5nLCB0YWdFbnRpdHk6IHN0cmluZywgdGFnVHlwZTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXQoXG4gICAgICAgICAgICBgL3RhZ3MvZ3JvdXBlZF90YWdzP3NsdWc9JHtzbHVnfSZ0YWdfZW50aXR5PSR7dGFnRW50aXR5fSZ0YWdfdHlwZT0ke3RhZ1R5cGV9YFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8vLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8vIC8vLy8vIFRhZyBDYXRlZ29yaWVzXG4gICAgLy8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICBnZXRUYWdDYXRlZ29yaWVzKHBhcmFtczogUGFnaW5nLCBzdWJzY3JpcHRpb25faWQ6IG51bWJlcikge1xuICAgICAgICBjb25zb2xlLmxvZyhzdWJzY3JpcHRpb25faWQpO1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhgJHt0aGlzLkFETUlOX1RBR19DQVRFR09SSUVTX1BBVEh9Z2V0X2FsbGAsIHtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbl9pZCxcbiAgICAgICAgICAgIC4uLkhlbHBlclNlcnZpY2UuZ2V0UGFnaW5nUGFyYW1zKHBhcmFtcylcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZGVsZXRlVGFnQ2F0ZWdvcnlCeUlkKGlkOiBudW1iZXIsIHN1YnNjcmlwdGlvbl9pZDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5kZWxldGUoXG4gICAgICAgICAgICBgJHt0aGlzLkFETUlOX1RBR19DQVRFR09SSUVTX1BBVEh9JHtpZH0/c3Vic2NyaXB0aW9uX2lkPSR7c3Vic2NyaXB0aW9uX2lkfWBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICB1cGRhdGVUYWdDYXRlZ29yeUJ5SWQoaWQ6IG51bWJlciwgZGF0YSwgc3Vic2NyaXB0aW9uX2lkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnB1dChgJHt0aGlzLkFETUlOX1RBR19DQVRFR09SSUVTX1BBVEh9JHtpZH1gLCB7IC4uLmRhdGEsIHN1YnNjcmlwdGlvbl9pZCB9KTtcbiAgICB9XG5cbiAgICBhZGRUYWdDYXRlZ29yeUJ5SWQoZGF0YSwgc3Vic2NyaXB0aW9uX2lkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnBvc3QodGhpcy5BRE1JTl9UQUdfQ0FURUdPUklFU19QQVRILCB7IC4uLmRhdGEsIHN1YnNjcmlwdGlvbl9pZCB9KTtcbiAgICB9XG59XG4iXX0=
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi1zZXJ2aWNlcy9zcmMvbGliL3RhZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUNILFVBQVUsRUFDVix5QkFBeUIsRUFDekIsY0FBYyxFQUVqQixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBSzdELE1BQU0sT0FBTyxVQUFVO0lBS25CLFlBQTZCLEdBQXVCO1FBQXZCLFFBQUcsR0FBSCxHQUFHLENBQW9CO1FBSnBELG1CQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ2hDLDhCQUF5QixHQUFHLHlCQUF5QixDQUFDO1FBQ3RELGVBQVUsR0FBRyxVQUFVLENBQUM7SUFFK0IsQ0FBQztJQUV4RCwwQkFBMEI7SUFDMUIseUJBQXlCO0lBQ3pCLDBCQUEwQjtJQUMxQixhQUFhLENBQUMsRUFBVSxFQUFFLGVBQXVCO1FBQzdDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsb0JBQW9CLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVELGFBQWEsQ0FBQyxFQUFVLEVBQUUsSUFBSTtRQUMxQixNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBRWhDLGdEQUFnRDtRQUNoRCxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3JCLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNkLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENB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Q0FBQyxHQUFHLENBQUMsTUFBTSxDQUNsQixHQUFHLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxFQUFFLG9CQUFvQixlQUFlLEVBQUUsQ0FDOUUsQ0FBQztJQUNOLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxFQUFVLEVBQUUsSUFBSSxFQUFFLGVBQXVCO1FBQzNELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMseUJBQXlCLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsZUFBdUI7UUFDNUMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7K0dBMUdRLFVBQVU7bUhBQVYsVUFBVSxjQUZQLE1BQU07OzRGQUVULFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICAgIEFETUlOX1BBVEgsXG4gICAgQURNSU5fVEFHX0NBVEVHT1JJRVNfUEFUSCxcbiAgICBBRE1JTl9UQUdfUEFUSCxcbiAgICBQYWdpbmdcbn0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgSGVscGVyU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9oZWxwZXItc2VydmljZSc7XG5cbmltcG9ydCB7IE1haW5BcGlIdHRwU2VydmljZSB9IGZyb20gJy4vbWFpbi1hcGktaHR0cC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBUYWdTZXJ2aWNlIHtcbiAgICBBRE1JTl9UQUdfUEFUSCA9IEFETUlOX1RBR19QQVRIO1xuICAgIEFETUlOX1RBR19DQVRFR09SSUVTX1BBVEggPSBBRE1JTl9UQUdfQ0FURUdPUklFU19QQVRIO1xuICAgIEFETUlOX1BBVEggPSBBRE1JTl9QQVRIO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBhcGk6IE1haW5BcGlIdHRwU2VydmljZSkge31cblxuICAgIC8vLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8vIC8vLyBBZG1pbiBUYWcgU2VjdGlvblxuICAgIC8vLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgZGVsZXRlVGFnQnlJZChpZDogbnVtYmVyLCBzdWJzY3JpcHRpb25faWQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZGVsZXRlKGAke3RoaXMuQURNSU5fVEFHX1BBVEh9JHtpZH0/c3Vic2NyaXB0aW9uX2lkPSR7c3Vic2NyaXB0aW9uX2lkfWApO1xuICAgIH1cblxuICAgIHVwZGF0ZVRhZ0J5SWQoaWQ6IG51bWJlciwgZGF0YSkge1xuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBkYXRhKSB7XG4gICAgICAgICAgICBpZiAoa2V5IGluIGRhdGEpIHtcbiAgICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoa2V5LCBkYXRhW2tleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnB1dChgJHt0aGlzLkFETUlOX1RBR19QQVRIfSR7aWR9YCwgZm9ybURhdGEpO1xuICAgIH1cblxuICAgIGFkZEFkbWluVGFnKGRhdGEpIHtcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcblxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZGF0YSkge1xuICAgICAgICAgICAgaWYgKGtleSBpbiBkYXRhKSB7XG4gICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGtleSwgZGF0YVtrZXldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wb3N0KHRoaXMuQURNSU5fVEFHX1BBVEgsIGZvcm1EYXRhKTtcbiAgICB9XG5cbiAgICAvLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vLyAvLy8gVGFncyBBUEknc1xuICAgIC8vLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgZ2V0VGFnc0J5VHlwZSh0YWdfdHlwZTogc3RyaW5nLCBwYWdpbmc6IFBhZ2luZywgc3Vic2NyaXB0aW9uX2lkPzogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXRXaXRoUGFyYW1zKCcvdGFncy9nZXRfYWxsX3RhZ3MnLCB7XG4gICAgICAgICAgICB0YWdfdHlwZSxcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbl9pZCxcbiAgICAgICAgICAgIC4uLkhlbHBlclNlcnZpY2UuZ2V0UGFnaW5nUGFyYW1zKHBhZ2luZylcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0QXZhaWxhYmxlVGFnVHlwZShzdWJzY3JpcHRpb25faWQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcygnL3RhZ3MvYXZhaWxhYmxlX3RhZ190eXBlcycsIHsgc3Vic2NyaXB0aW9uX2lkIH0pO1xuICAgIH1cblxuICAgIGFkZFRhZ3MoZGF0YSwgc3Vic2NyaXB0aW9uX2lkPzogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wb3N0KCcvdGFncycsIHsgLi4uZGF0YSwgc3Vic2NyaXB0aW9uX2lkIH0pO1xuICAgIH1cblxuICAgIGdldFRhZ3NCeUVudGl0eShzbHVnOiBzdHJpbmcsIHRhZ19lbnRpdHk6IHN0cmluZywgdGFnX3R5cGU6IHN0cmluZywgc3Vic2NyaXB0aW9uX2lkPzogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXRXaXRoUGFyYW1zKCcvdGFncy9nZXRfZW50aXR5X3RhZ3MnLCB7XG4gICAgICAgICAgICBzbHVnLFxuICAgICAgICAgICAgdGFnX2VudGl0eSxcbiAgICAgICAgICAgIHRhZ190eXBlLFxuICAgICAgICAgICAgc3Vic2NyaXB0aW9uX2lkLFxuICAgICAgICAgICAgLi4uSGVscGVyU2VydmljZS5nZXRQYWdpbmdQYXJhbXMoe30pXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldEdyb3VwZWRTa2lsbHMoc2x1Zzogc3RyaW5nLCB0YWdFbnRpdHk6IHN0cmluZywgdGFnVHlwZTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXQoXG4gICAgICAgICAgICBgL3RhZ3MvZ3JvdXBlZF90YWdzP3NsdWc9JHtzbHVnfSZ0YWdfZW50aXR5PSR7dGFnRW50aXR5fSZ0YWdfdHlwZT0ke3RhZ1R5cGV9YFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8vLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8vIC8vLy8vIFRhZyBDYXRlZ29yaWVzXG4gICAgLy8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICBnZXRUYWdDYXRlZ29yaWVzKHBhcmFtczogUGFnaW5nLCBzdWJzY3JpcHRpb25faWQ6IG51bWJlcikge1xuICAgICAgICBjb25zb2xlLmxvZyhzdWJzY3JpcHRpb25faWQpO1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhgJHt0aGlzLkFETUlOX1RBR19DQVRFR09SSUVTX1BBVEh9Z2V0X2FsbGAsIHtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbl9pZCxcbiAgICAgICAgICAgIC4uLkhlbHBlclNlcnZpY2UuZ2V0UGFnaW5nUGFyYW1zKHBhcmFtcylcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0QWxsVGFnQ2F0ZWdvcmllcyhwYXJhbXM6IFBhZ2luZywgc3Vic2NyaXB0aW9uX2lkOiBudW1iZXIpIHtcbiAgICAgICAgY29uc29sZS5sb2coc3Vic2NyaXB0aW9uX2lkKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldFdpdGhQYXJhbXMoYHRhZ19jYXRlZ29yaWVzL2dldF9hbGxgLCB7XG4gICAgICAgICAgICBzdWJzY3JpcHRpb25faWQsXG4gICAgICAgICAgICAuLi5IZWxwZXJTZXJ2aWNlLmdldFBhZ2luZ1BhcmFtcyhwYXJhbXMpXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGRlbGV0ZVRhZ0NhdGVnb3J5QnlJZChpZDogbnVtYmVyLCBzdWJzY3JpcHRpb25faWQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZGVsZXRlKFxuICAgICAgICAgICAgYCR7dGhpcy5BRE1JTl9UQUdfQ0FURUdPUklFU19QQVRIfSR7aWR9P3N1YnNjcmlwdGlvbl9pZD0ke3N1YnNjcmlwdGlvbl9pZH1gXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgdXBkYXRlVGFnQ2F0ZWdvcnlCeUlkKGlkOiBudW1iZXIsIGRhdGEsIHN1YnNjcmlwdGlvbl9pZDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wdXQoYCR7dGhpcy5BRE1JTl9UQUdfQ0FURUdPUklFU19QQVRIfSR7aWR9YCwgeyAuLi5kYXRhLCBzdWJzY3JpcHRpb25faWQgfSk7XG4gICAgfVxuXG4gICAgYWRkVGFnQ2F0ZWdvcnlCeUlkKGRhdGEsIHN1YnNjcmlwdGlvbl9pZDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wb3N0KHRoaXMuQURNSU5fVEFHX0NBVEVHT1JJRVNfUEFUSCwgeyAuLi5kYXRhLCBzdWJzY3JpcHRpb25faWQgfSk7XG4gICAgfVxufVxuIl19
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, Inject, isDevMode, inject, NgModule, ViewEncapsulation } from '@angular/core';
2
+ import { Inject, Injectable, isDevMode, inject, NgModule, ViewEncapsulation } from '@angular/core';
3
3
  import * as i1 from '@angular/router';
4
4
  import { NavigationEnd } from '@angular/router';
5
5
  import * as i1$1 from '@posiwise/app-config-service';
@@ -1058,7 +1058,7 @@ class PermissionService {
1058
1058
  product = this.getCurrentProduct();
1059
1059
  }
1060
1060
  const subscriptionSlug = product?.subscription_slug;
1061
- return !!this.user.auth.granted[`Pages.Product.${subscriptionSlug}.${product.permission_key}.${product.feature_key}.SubscriptionOwner`];
1061
+ return !!this.user.auth.granted[`Pages.Product.${subscriptionSlug}.${product?.permission_key}.${product.feature_key}.SubscriptionOwner`];
1062
1062
  }
1063
1063
  /**
1064
1064
  * Any Product Admin regardless of the product being master product or not.
@@ -1070,8 +1070,8 @@ class PermissionService {
1070
1070
  product = this.getCurrentProduct();
1071
1071
  }
1072
1072
  const subscriptionSlug = product?.subscription_slug;
1073
- return (!!this.user.auth.granted[`Pages.Product.${subscriptionSlug}.${product.permission_key}.${product.feature_key}.SubscriptionAdmin`] ||
1074
- !!this.user.auth.granted[`Pages.Product.${subscriptionSlug}.${product.permission_key}.${product.feature_key}.SubscriptionOwner`]);
1073
+ return (!!this.user.auth.granted[`Pages.Product.${subscriptionSlug}.${product?.permission_key}.${product.feature_key}.SubscriptionAdmin`] ||
1074
+ !!this.user.auth.granted[`Pages.Product.${subscriptionSlug}.${product?.permission_key}.${product.feature_key}.SubscriptionOwner`]);
1075
1075
  }
1076
1076
  /**
1077
1077
  * Any Product Admin of the product being the master product
@@ -1081,14 +1081,14 @@ class PermissionService {
1081
1081
  product = this.getCurrentProduct();
1082
1082
  }
1083
1083
  const subscriptionSlug = product?.subscription_slug;
1084
- return (!!this.user.auth.granted[`Pages.Product.${subscriptionSlug}.${product.permission_key}.${product.feature_key}.SubscriptionSuperAdmin`] ||
1085
- !!this.user.auth.granted[`Pages.Product.${subscriptionSlug}.${product.permission_key}.${product.feature_key}.SubscriptionSuperOwner`]);
1084
+ return (!!this.user.auth.granted[`Pages.Product.${subscriptionSlug}.${product?.permission_key}.${product.feature_key}.SubscriptionSuperAdmin`] ||
1085
+ !!this.user.auth.granted[`Pages.Product.${subscriptionSlug}.${product?.permission_key}.${product.feature_key}.SubscriptionSuperOwner`]);
1086
1086
  }
1087
1087
  isUserMasterSubscriptionSuperAdmin(product) {
1088
1088
  if (!product) {
1089
1089
  product = this.getCurrentProduct();
1090
1090
  }
1091
- return !!this.user.auth.granted[`Pages.Product.${product.permission_key}.${product.feature_key}.SubscriptionSuperAdmin`];
1091
+ return !!this.user.auth.granted[`Pages.Product.${product?.permission_key}.${product.feature_key}.SubscriptionSuperAdmin`];
1092
1092
  }
1093
1093
  /**
1094
1094
  * Any Product Admin of the product being the master product
@@ -1098,12 +1098,12 @@ class PermissionService {
1098
1098
  product = this.getCurrentProduct();
1099
1099
  }
1100
1100
  const subscriptionSlug = product?.subscription_slug;
1101
- return !!this.user.auth.granted[`Pages.Product.${subscriptionSlug}.${product.permission_key}.${product.feature_key}.SubscriptionSuperOwner`];
1101
+ return !!this.user.auth.granted[`Pages.Product.${subscriptionSlug}.${product?.permission_key}.${product.feature_key}.SubscriptionSuperOwner`];
1102
1102
  }
1103
1103
  setCurrentProduct(product) {
1104
1104
  localStorage.setItem('product', JSON.stringify({
1105
1105
  id: product.id,
1106
- permission_key: product.permission_key,
1106
+ permission_key: product?.permission_key,
1107
1107
  feature_key: product.feature_key,
1108
1108
  subscriptionId: product.subscriptionId,
1109
1109
  subscription_slug: product.subscription_slug
@@ -1890,11 +1890,25 @@ class TagService {
1890
1890
  deleteTagById(id, subscription_id) {
1891
1891
  return this.api.delete(`${this.ADMIN_TAG_PATH}${id}?subscription_id=${subscription_id}`);
1892
1892
  }
1893
- updateTagById(id, data, subscription_id) {
1894
- return this.api.put(`${this.ADMIN_TAG_PATH}${id}`, { ...data, subscription_id });
1893
+ updateTagById(id, data) {
1894
+ const formData = new FormData();
1895
+ // eslint-disable-next-line no-restricted-syntax
1896
+ for (const key in data) {
1897
+ if (key in data) {
1898
+ formData.append(key, data[key]);
1899
+ }
1900
+ }
1901
+ return this.api.put(`${this.ADMIN_TAG_PATH}${id}`, formData);
1895
1902
  }
1896
- addAdminTag(data, subscription_id) {
1897
- return this.api.post(this.ADMIN_TAG_PATH, { ...data, subscription_id });
1903
+ addAdminTag(data) {
1904
+ const formData = new FormData();
1905
+ // eslint-disable-next-line no-restricted-syntax
1906
+ for (const key in data) {
1907
+ if (key in data) {
1908
+ formData.append(key, data[key]);
1909
+ }
1910
+ }
1911
+ return this.api.post(this.ADMIN_TAG_PATH, formData);
1898
1912
  }
1899
1913
  /// //////////////////////
1900
1914
  /// /// Tags API's
@@ -1934,6 +1948,13 @@ class TagService {
1934
1948
  ...HelperService.getPagingParams(params)
1935
1949
  });
1936
1950
  }
1951
+ getAllTagCategories(params, subscription_id) {
1952
+ console.log(subscription_id);
1953
+ return this.api.getWithParams(`tag_categories/get_all`, {
1954
+ subscription_id,
1955
+ ...HelperService.getPagingParams(params)
1956
+ });
1957
+ }
1937
1958
  deleteTagCategoryById(id, subscription_id) {
1938
1959
  return this.api.delete(`${this.ADMIN_TAG_CATEGORIES_PATH}${id}?subscription_id=${subscription_id}`);
1939
1960
  }
@@ -2829,8 +2850,10 @@ class BrainApiHttpService extends BaseHttpService {
2829
2850
  super(http, injector);
2830
2851
  }
2831
2852
  getConfig() {
2832
- this.injector.get(AppConfigService).appConfig$.subscribe(config => {
2833
- this.baseUrl = isDevMode() ? BRAIN_API_PREFIX : config?.['links']['brain_api'] || '';
2853
+ this.injector.get(AppConfigService).appConfig$.subscribe((config) => {
2854
+ this.baseUrl = isDevMode()
2855
+ ? BRAIN_API_PREFIX
2856
+ : config?.['links']['brain_api'] || '';
2834
2857
  });
2835
2858
  }
2836
2859
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: BrainApiHttpService, deps: [{ token: i1$3.HttpClient }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -2839,18 +2862,18 @@ class BrainApiHttpService extends BaseHttpService {
2839
2862
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: BrainApiHttpService, decorators: [{
2840
2863
  type: Injectable,
2841
2864
  args: [{
2842
- providedIn: 'root'
2865
+ providedIn: 'root',
2843
2866
  }]
2844
2867
  }], ctorParameters: () => [{ type: i1$3.HttpClient }, { type: i0.Injector }] });
2845
2868
 
2846
- class BrainApiService {
2869
+ class BrainService {
2847
2870
  constructor(api) {
2848
2871
  this.api = api;
2849
2872
  }
2850
2873
  invokeClaude(sessionId, prompt) {
2851
2874
  return this.api.post('/anthropic/claude/opus4', {
2852
2875
  session_id: sessionId,
2853
- prompt
2876
+ prompt,
2854
2877
  });
2855
2878
  }
2856
2879
  invokeDeepseek(sessionId, prompt, temperature = 0.7, max_tokens = 512) {
@@ -2858,16 +2881,16 @@ class BrainApiService {
2858
2881
  session_id: sessionId,
2859
2882
  prompt,
2860
2883
  temperature,
2861
- max_tokens
2884
+ max_tokens,
2862
2885
  });
2863
2886
  }
2864
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: BrainApiService, deps: [{ token: BrainApiHttpService }], target: i0.ɵɵFactoryTarget.Injectable }); }
2865
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: BrainApiService, providedIn: 'root' }); }
2887
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: BrainService, deps: [{ token: BrainApiHttpService }], target: i0.ɵɵFactoryTarget.Injectable }); }
2888
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: BrainService, providedIn: 'root' }); }
2866
2889
  }
2867
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: BrainApiService, decorators: [{
2890
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: BrainService, decorators: [{
2868
2891
  type: Injectable,
2869
2892
  args: [{
2870
- providedIn: 'root'
2893
+ providedIn: 'root',
2871
2894
  }]
2872
2895
  }], ctorParameters: () => [{ type: BrainApiHttpService }] });
2873
2896
 
@@ -2879,5 +2902,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
2879
2902
  * Generated bundle index. Do not edit.
2880
2903
  */
2881
2904
 
2882
- export { AbTestService, AhoyService, AuthService, BaseHttpService, BrainApiHttpService, BrainApiService, CommonService, CommonServicesModule, CustomPreloadingStrategy, CustomToastService, DashboardService, DataService, FormHelperService, GeoService, GoogleAnalyticsService, GroupService, HopscotchService, IntegrationsApiHttpService, LinkService, LocalStorage, LogoCacheService, MailBoxService, MainApiHttpService, NgbDateCustomParserFormatter, NotificationService, NumberPickerService, PermissionService, PrimeNgHelper, ProductService, ProfileService, QualificationService, ScriptLoaderService, SentryErrorHandler, SubscriptionService, TagService, TipsService, UserEffects, UserService, ValidationService, WebsocketService, WindowService };
2905
+ export { AbTestService, AhoyService, AuthService, BaseHttpService, BrainApiHttpService, BrainService, CommonService, CommonServicesModule, CustomPreloadingStrategy, CustomToastService, DashboardService, DataService, FormHelperService, GeoService, GoogleAnalyticsService, GroupService, HopscotchService, IntegrationsApiHttpService, LinkService, LocalStorage, LogoCacheService, MailBoxService, MainApiHttpService, NgbDateCustomParserFormatter, NotificationService, NumberPickerService, PermissionService, PrimeNgHelper, ProductService, ProfileService, QualificationService, ScriptLoaderService, SentryErrorHandler, SubscriptionService, TagService, TipsService, UserEffects, UserService, ValidationService, WebsocketService, WindowService };
2883
2906
  //# sourceMappingURL=posiwise-common-services.mjs.map