tas-uell-sdk 0.0.1 → 0.0.3

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.
Files changed (31) hide show
  1. package/INSTALL_AND_TEST.md +427 -0
  2. package/README.md +122 -229
  3. package/esm2020/lib/components/tas-btn/tas-btn.component.mjs +79 -95
  4. package/esm2020/lib/components/tas-floating-call/tas-floating-call.component.mjs +74 -24
  5. package/esm2020/lib/components/tas-videocall/tas-videocall.component.mjs +50 -45
  6. package/esm2020/lib/components/tas-waiting-room/tas-waiting-room.component.mjs +179 -0
  7. package/esm2020/lib/config/tas.config.mjs +10 -0
  8. package/esm2020/lib/interfaces/tas.interfaces.mjs +32 -2
  9. package/esm2020/lib/services/tas.service.mjs +27 -48
  10. package/esm2020/lib/tas-uell-sdk.module.mjs +82 -0
  11. package/esm2020/public-api.mjs +13 -12
  12. package/esm2020/tas-uell-sdk.mjs +1 -1
  13. package/fesm2015/tas-uell-sdk.mjs +440 -218
  14. package/fesm2015/tas-uell-sdk.mjs.map +1 -1
  15. package/fesm2020/tas-uell-sdk.mjs +437 -216
  16. package/fesm2020/tas-uell-sdk.mjs.map +1 -1
  17. package/lib/components/tas-btn/tas-btn.component.d.ts +15 -11
  18. package/lib/components/tas-floating-call/tas-floating-call.component.d.ts +3 -2
  19. package/lib/components/tas-videocall/tas-videocall.component.d.ts +4 -3
  20. package/lib/components/tas-waiting-room/tas-waiting-room.component.d.ts +56 -0
  21. package/lib/config/tas.config.d.ts +28 -0
  22. package/lib/interfaces/tas.interfaces.d.ts +41 -6
  23. package/lib/services/tas.service.d.ts +6 -16
  24. package/lib/tas-uell-sdk.module.d.ts +46 -0
  25. package/package.json +36 -23
  26. package/public-api.d.ts +8 -7
  27. package/src/lib/styles/tas-global.scss +37 -0
  28. package/esm2020/lib/tas.config.mjs +0 -14
  29. package/esm2020/lib/tas.module.mjs +0 -73
  30. package/lib/tas.config.d.ts +0 -51
  31. package/lib/tas.module.d.ts +0 -34
@@ -1,2 +1,32 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzLmludGVyZmFjZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2ludGVyZmFjZXMvdGFzLmludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlUm9vbVJlcXVlc3Qge1xuICB0ZW5hbnQ6IHN0cmluZztcbiAgdXNlcklkOiBzdHJpbmc7XG4gIHByb2R1Y3Q6IHN0cmluZztcbiAgcmVjb3JkOiBib29sZWFuO1xuICByb29tVHlwZTogVGFzUm9vbVR5cGU7XG4gIHR5cGU6IFRhc1Nlc3Npb25UeXBlO1xuICB1dGNTY2hlZHVsZWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlUm9vbVJlc3BvbnNlIHtcbiAgY29udGVudDoge1xuICAgIHJvb21UeXBlOiBzdHJpbmcgfCBudWxsO1xuICAgIHRlbmFudDogc3RyaW5nIHwgbnVsbDtcbiAgICB1c2VyX2lkOiBzdHJpbmcgfCBudWxsO1xuICAgIHByb2R1Y3Q6IHN0cmluZyB8IG51bGw7XG4gICAgcmVjb3JkOiBib29sZWFuIHwgbnVsbDtcbiAgICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgVGFzUm9vbVR5cGUgPSBcIlRBU1wiIHwgXCJKTVwiIHwgXCJXRUJJTkFSXCI7XG5cbmV4cG9ydCB0eXBlIFRhc1Nlc3Npb25UeXBlID0gXCJTUE9OVEFORU9VU1wiIHwgXCJTQ0hFRFVMRURcIjtcblxuZXhwb3J0IGludGVyZmFjZSBHZW5lcmF0ZVRva2VuUmVxdWVzdCB7XG4gIHNlc3Npb25JZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGxhc3RuYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJhdGVUb2tlblJlc3BvbnNlIHtcbiAgY29udGVudDoge1xuICAgIHRva2VuOiBzdHJpbmc7XG4gIH07XG59XG4iXX0=
1
+ export var TasRoomType;
2
+ (function (TasRoomType) {
3
+ TasRoomType["TAS"] = "TAS";
4
+ TasRoomType["JM"] = "JM";
5
+ TasRoomType["WEBINAR"] = "WEBINAR";
6
+ })(TasRoomType || (TasRoomType = {}));
7
+ export var TasSessionType;
8
+ (function (TasSessionType) {
9
+ TasSessionType["SPONTANEOUS"] = "SPONTANEOUS";
10
+ TasSessionType["SCHEDULED"] = "SCHEDULED";
11
+ })(TasSessionType || (TasSessionType = {}));
12
+ export var TasUserRole;
13
+ (function (TasUserRole) {
14
+ TasUserRole["OWNER"] = "OWNER";
15
+ TasUserRole["USER"] = "USER";
16
+ TasUserRole["MODERATOR"] = "MODERATOR";
17
+ })(TasUserRole || (TasUserRole = {}));
18
+ // Enums for TAS Service state management
19
+ export var CallState;
20
+ (function (CallState) {
21
+ CallState["IDLE"] = "IDLE";
22
+ CallState["CONNECTING"] = "CONNECTING";
23
+ CallState["CONNECTED"] = "CONNECTED";
24
+ CallState["DISCONNECTED"] = "DISCONNECTED";
25
+ CallState["ERROR"] = "ERROR";
26
+ })(CallState || (CallState = {}));
27
+ export var ViewMode;
28
+ (function (ViewMode) {
29
+ ViewMode["FULLSCREEN"] = "FULLSCREEN";
30
+ ViewMode["PIP"] = "PIP";
31
+ })(ViewMode || (ViewMode = {}));
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzLmludGVyZmFjZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YXMtdWVsbC1zZGsvc3JjL2xpYi9pbnRlcmZhY2VzL3Rhcy5pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTRCQSxNQUFNLENBQU4sSUFBWSxXQUlYO0FBSkQsV0FBWSxXQUFXO0lBQ3RCLDBCQUFXLENBQUE7SUFDWCx3QkFBUyxDQUFBO0lBQ1Qsa0NBQW1CLENBQUE7QUFDcEIsQ0FBQyxFQUpXLFdBQVcsS0FBWCxXQUFXLFFBSXRCO0FBRUQsTUFBTSxDQUFOLElBQVksY0FHWDtBQUhELFdBQVksY0FBYztJQUN6Qiw2Q0FBMkIsQ0FBQTtJQUMzQix5Q0FBdUIsQ0FBQTtBQUN4QixDQUFDLEVBSFcsY0FBYyxLQUFkLGNBQWMsUUFHekI7QUFFRCxNQUFNLENBQU4sSUFBWSxXQUlYO0FBSkQsV0FBWSxXQUFXO0lBQ3RCLDhCQUFlLENBQUE7SUFDZiw0QkFBYSxDQUFBO0lBQ2Isc0NBQXVCLENBQUE7QUFDeEIsQ0FBQyxFQUpXLFdBQVcsS0FBWCxXQUFXLFFBSXRCO0FBcUJELHlDQUF5QztBQUN6QyxNQUFNLENBQU4sSUFBWSxTQU1YO0FBTkQsV0FBWSxTQUFTO0lBQ3BCLDBCQUFhLENBQUE7SUFDYixzQ0FBeUIsQ0FBQTtJQUN6QixvQ0FBdUIsQ0FBQTtJQUN2QiwwQ0FBNkIsQ0FBQTtJQUM3Qiw0QkFBZSxDQUFBO0FBQ2hCLENBQUMsRUFOVyxTQUFTLEtBQVQsU0FBUyxRQU1wQjtBQUVELE1BQU0sQ0FBTixJQUFZLFFBR1g7QUFIRCxXQUFZLFFBQVE7SUFDbkIscUNBQXlCLENBQUE7SUFDekIsdUJBQVcsQ0FBQTtBQUNaLENBQUMsRUFIVyxRQUFRLEtBQVIsUUFBUSxRQUduQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlUm9vbVVzZXIge1xuXHR1c2VyRXh0ZXJuYWxJZDogbnVtYmVyO1xuXHRyb2w6IFRhc1VzZXJSb2xlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVJvb21SZXF1ZXN0IHtcblx0cm9vbVR5cGU6IFRhc1Jvb21UeXBlO1xuXHR0eXBlOiBUYXNTZXNzaW9uVHlwZTtcblx0dXRjU2NoZWR1bGVkPzogc3RyaW5nO1xuXHRwcm9kdWN0OiBzdHJpbmc7XG5cdHRlbmFudDogc3RyaW5nO1xuXHRhcHBvaW50bWVudElkOiBudW1iZXI7XG5cdHVzZXJzOiBDcmVhdGVSb29tVXNlcltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVJvb21SZXNwb25zZSB7XG5cdGNvbnRlbnQ6IHtcblx0XHRyb29tVHlwZTogc3RyaW5nIHwgbnVsbDtcblx0XHR0ZW5hbnQ6IHN0cmluZyB8IG51bGw7XG5cdFx0dXNlcl9pZDogc3RyaW5nIHwgbnVsbDtcblx0XHRwcm9kdWN0OiBzdHJpbmcgfCBudWxsO1xuXHRcdHJlY29yZDogYm9vbGVhbiB8IG51bGw7XG5cdFx0c2Vzc2lvbklkOiBzdHJpbmc7XG5cdFx0cm9vbUlkOiBudW1iZXI7XG5cdFx0c3RhdHVzOiBUYXNTZXNzaW9uVHlwZTtcblx0fTtcbn1cblxuZXhwb3J0IGVudW0gVGFzUm9vbVR5cGUge1xuXHRUQVMgPSBcIlRBU1wiLFxuXHRKTSA9IFwiSk1cIixcblx0V0VCSU5BUiA9IFwiV0VCSU5BUlwiXG59XG5cbmV4cG9ydCBlbnVtIFRhc1Nlc3Npb25UeXBlIHtcblx0U1BPTlRBTkVPVVMgPSBcIlNQT05UQU5FT1VTXCIsXG5cdFNDSEVEVUxFRCA9IFwiU0NIRURVTEVEXCJcbn1cblxuZXhwb3J0IGVudW0gVGFzVXNlclJvbGUge1xuXHRPV05FUiA9IFwiT1dORVJcIixcblx0VVNFUiA9IFwiVVNFUlwiLFxuXHRNT0RFUkFUT1IgPSBcIk1PREVSQVRPUlwiXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFzQ3VycmVudFVzZXIge1xuXHRuYW1lOiBzdHJpbmc7XG5cdGxhc3RuYW1lOiBzdHJpbmc7XG5cdHJvbGU6IFRhc1VzZXJSb2xlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRlVG9rZW5SZXF1ZXN0IHtcblx0c2Vzc2lvbklkOiBzdHJpbmc7XG5cdG5hbWU6IHN0cmluZztcblx0bGFzdG5hbWU6IHN0cmluZztcblx0cm9sZVZDOiBUYXNVc2VyUm9sZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZW5lcmF0ZVRva2VuUmVzcG9uc2Uge1xuXHRjb250ZW50OiB7XG5cdFx0dG9rZW46IHN0cmluZztcblx0fTtcbn1cblxuLy8gRW51bXMgZm9yIFRBUyBTZXJ2aWNlIHN0YXRlIG1hbmFnZW1lbnRcbmV4cG9ydCBlbnVtIENhbGxTdGF0ZSB7XG5cdElETEUgPSAnSURMRScsXG5cdENPTk5FQ1RJTkcgPSAnQ09OTkVDVElORycsXG5cdENPTk5FQ1RFRCA9ICdDT05ORUNURUQnLFxuXHRESVNDT05ORUNURUQgPSAnRElTQ09OTkVDVEVEJyxcblx0RVJST1IgPSAnRVJST1InXG59XG5cbmV4cG9ydCBlbnVtIFZpZXdNb2RlIHtcblx0RlVMTFNDUkVFTiA9ICdGVUxMU0NSRUVOJyxcblx0UElQID0gJ1BJUCdcbn1cblxuIl19
@@ -1,26 +1,16 @@
1
- import { Injectable, Inject, Optional } from "@angular/core";
1
+ import { Injectable, Inject } from "@angular/core";
2
2
  import { BehaviorSubject } from "rxjs";
3
3
  import { catchError, map } from "rxjs/operators";
4
4
  import * as OT from "@opentok/client";
5
- import { TAS_CONFIG, TAS_HTTP_CLIENT, } from "../tas.config";
5
+ import { CallState, ViewMode, } from "../interfaces/tas.interfaces";
6
+ import { TAS_CONFIG, TAS_HTTP_CLIENT } from "../config/tas.config";
6
7
  import * as i0 from "@angular/core";
7
- export var CallState;
8
- (function (CallState) {
9
- CallState["IDLE"] = "IDLE";
10
- CallState["CONNECTING"] = "CONNECTING";
11
- CallState["CONNECTED"] = "CONNECTED";
12
- CallState["DISCONNECTED"] = "DISCONNECTED";
13
- CallState["ERROR"] = "ERROR";
14
- })(CallState || (CallState = {}));
15
- export var ViewMode;
16
- (function (ViewMode) {
17
- ViewMode["FULLSCREEN"] = "FULLSCREEN";
18
- ViewMode["PIP"] = "PIP";
19
- })(ViewMode || (ViewMode = {}));
8
+ // Re-export enums for backward compatibility
9
+ export { CallState, ViewMode };
20
10
  export class TasService {
21
- constructor(config, httpClient) {
22
- this.config = config;
11
+ constructor(httpClient, config) {
23
12
  this.httpClient = httpClient;
13
+ this.config = config;
24
14
  this.session = null;
25
15
  this.publisher = null;
26
16
  this.subscribers = [];
@@ -33,9 +23,6 @@ export class TasService {
33
23
  // Session info for PiP mode restoration
34
24
  this.currentSessionId = null;
35
25
  this.currentToken = null;
36
- if (!this.config || !this.httpClient) {
37
- console.warn("TasService: Configuration not provided. Make sure to use TasModule.forRoot()");
38
- }
39
26
  }
40
27
  // Getters
41
28
  get currentSession() {
@@ -73,7 +60,14 @@ export class TasService {
73
60
  toggleMute() {
74
61
  if (this.publisher) {
75
62
  const newMuteState = !this.isMutedSubject.getValue();
76
- this.publisher.publishAudio(!newMuteState);
63
+ const shouldEnableAudio = !newMuteState;
64
+ // Use OpenTok's publishAudio
65
+ this.publisher.publishAudio(shouldEnableAudio);
66
+ // Also directly control the MediaStreamTrack as backup
67
+ const audioTrack = this.publisher.getAudioSource?.();
68
+ if (audioTrack) {
69
+ audioTrack.enabled = shouldEnableAudio;
70
+ }
77
71
  this.isMutedSubject.next(newMuteState);
78
72
  }
79
73
  }
@@ -93,7 +87,7 @@ export class TasService {
93
87
  this.subscribers = [];
94
88
  this.currentSessionId = null;
95
89
  this.currentToken = null;
96
- this.isMutedSubject.next(false);
90
+ this.isMutedSubject.next(false); // Reset mute state
97
91
  this.viewModeSubject.next(ViewMode.FULLSCREEN);
98
92
  this.callStateSubject.next(CallState.DISCONNECTED);
99
93
  }
@@ -102,21 +96,13 @@ export class TasService {
102
96
  }
103
97
  // API Methods
104
98
  createRoom(payload) {
105
- if (!this.config || !this.httpClient) {
106
- throw new Error("TasService not configured. Use TasModule.forRoot()");
107
- }
108
- const url = `${this.config.apiBaseUrl}/v2/room`;
109
- return this.httpClient.post(url, payload).pipe(map((response) => response), catchError((error) => {
99
+ return this.httpClient.post("v2/room", { body: payload, headers: {} }).pipe(map((response) => response), catchError((error) => {
110
100
  console.error("TAS Service: createRoom failed", error);
111
101
  throw error;
112
102
  }));
113
103
  }
114
104
  generateToken(payload) {
115
- if (!this.config || !this.httpClient) {
116
- throw new Error("TasService not configured. Use TasModule.forRoot()");
117
- }
118
- const url = `${this.config.apiBaseUrl}/v2/room/token`;
119
- return this.httpClient.post(url, payload).pipe(map((response) => response), catchError((error) => {
105
+ return this.httpClient.post("v2/room/token", { body: payload, headers: {} }).pipe(map((response) => response), catchError((error) => {
120
106
  console.error("TAS Service: generateToken failed", error);
121
107
  throw error;
122
108
  }));
@@ -129,11 +115,6 @@ export class TasService {
129
115
  this.currentSessionId = sessionId;
130
116
  this.currentToken = token;
131
117
  return new Promise((resolve, reject) => {
132
- if (!this.config) {
133
- this.callStateSubject.next(CallState.ERROR);
134
- reject(new Error("TasService not configured. Use TasModule.forRoot()"));
135
- return;
136
- }
137
118
  if (!OT.checkSystemRequirements()) {
138
119
  this.callStateSubject.next(CallState.ERROR);
139
120
  reject(new Error("Browser not compatible with TokBox"));
@@ -242,24 +223,22 @@ export class TasService {
242
223
  * Moves videos back to fullscreen containers
243
224
  */
244
225
  moveVideosToFullscreen() {
245
- this.moveSubscribersTo("subscriber-container");
246
- this.movePublisherTo("publisher-container");
226
+ this.moveSubscribersTo('subscriber-container');
227
+ this.movePublisherTo('publisher-container');
247
228
  }
248
229
  }
249
- TasService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TasService, deps: [{ token: TAS_CONFIG, optional: true }, { token: TAS_HTTP_CLIENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
230
+ TasService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TasService, deps: [{ token: TAS_HTTP_CLIENT }, { token: TAS_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });
250
231
  TasService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TasService, providedIn: "root" });
251
232
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TasService, decorators: [{
252
233
  type: Injectable,
253
- args: [{ providedIn: "root" }]
234
+ args: [{
235
+ providedIn: "root",
236
+ }]
254
237
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
255
- type: Optional
256
- }, {
257
238
  type: Inject,
258
- args: [TAS_CONFIG]
239
+ args: [TAS_HTTP_CLIENT]
259
240
  }] }, { type: undefined, decorators: [{
260
- type: Optional
261
- }, {
262
241
  type: Inject,
263
- args: [TAS_HTTP_CLIENT]
242
+ args: [TAS_CONFIG]
264
243
  }] }]; } });
265
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3Rhcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEVBQ0wsVUFBVSxFQUNWLGVBQWUsR0FHaEIsTUFBTSxlQUFlLENBQUM7O0FBUXZCLE1BQU0sQ0FBTixJQUFZLFNBTVg7QUFORCxXQUFZLFNBQVM7SUFDbkIsMEJBQWEsQ0FBQTtJQUNiLHNDQUF5QixDQUFBO0lBQ3pCLG9DQUF1QixDQUFBO0lBQ3ZCLDBDQUE2QixDQUFBO0lBQzdCLDRCQUFlLENBQUE7QUFDakIsQ0FBQyxFQU5XLFNBQVMsS0FBVCxTQUFTLFFBTXBCO0FBRUQsTUFBTSxDQUFOLElBQVksUUFHWDtBQUhELFdBQVksUUFBUTtJQUNsQixxQ0FBeUIsQ0FBQTtJQUN6Qix1QkFBVyxDQUFBO0FBQ2IsQ0FBQyxFQUhXLFFBQVEsS0FBUixRQUFRLFFBR25CO0FBR0QsTUFBTSxPQUFPLFVBQVU7SUFrQnJCLFlBQzBDLE1BQXdCLEVBQ25CLFVBQWdDO1FBRHJDLFdBQU0sR0FBTixNQUFNLENBQWtCO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQXNCO1FBbkJ2RSxZQUFPLEdBQXNCLElBQUksQ0FBQztRQUNsQyxjQUFTLEdBQXdCLElBQUksQ0FBQztRQUN0QyxnQkFBVyxHQUFvQixFQUFFLENBQUM7UUFFbEMscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBQVksU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFD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QUVEOzs7T0FHRztJQUNJLGVBQWUsQ0FBQyxjQUFzQjtRQUMzQyxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTztRQUUxQiwyQ0FBMkM7UUFDM0MsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUU7WUFDOUQsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RELE9BQU87U0FDUjtRQUVELHVDQUF1QztRQUN2QyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFO1lBQzNCLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNsRDtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNJLHNCQUFzQjtRQUMzQixJQUFJLENBQUMsaUJBQWlCLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDOUMsQ0FBQzs7dUdBcFNVLFVBQVUsa0JBbUJDLFVBQVUsNkJBQ1YsZUFBZTsyR0FwQjFCLFVBQVUsY0FERyxNQUFNOzJGQUNuQixVQUFVO2tCQUR0QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBb0I3QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLFVBQVU7OzBCQUM3QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCAqIGFzIE9UIGZyb20gXCJAb3BlbnRvay9jbGllbnRcIjtcbmltcG9ydCB7XG4gIFRBU19DT05GSUcsXG4gIFRBU19IVFRQX0NMSUVOVCxcbiAgVGFzQ29uZmlnLFxuICBUYXNIdHRwQ2xpZW50LFxufSBmcm9tIFwiLi4vdGFzLmNvbmZpZ1wiO1xuaW1wb3J0IHtcbiAgQ3JlYXRlUm9vbVJlcXVlc3QsXG4gIENyZWF0ZVJvb21SZXNwb25zZSxcbiAgR2VuZXJhdGVUb2tlblJlcXVlc3QsXG4gIEdlbmVyYXRlVG9rZW5SZXNwb25zZSxcbn0gZnJvbSBcIi4uL2ludGVyZmFjZXMvdGFzLmludGVyZmFjZXNcIjtcblxuZXhwb3J0IGVudW0gQ2FsbFN0YXRlIHtcbiAgSURMRSA9IFwiSURMRVwiLFxuICBDT05ORUNUSU5HID0gXCJDT05ORUNUSU5HXCIsXG4gIENPTk5FQ1RFRCA9IFwiQ09OTkVDVEVEXCIsXG4gIERJU0NPTk5FQ1RFRCA9IFwiRElTQ09OTkVDVEVEXCIsXG4gIEVSUk9SID0gXCJFUlJPUlwiLFxufVxuXG5leHBvcnQgZW51bSBWaWV3TW9kZSB7XG4gIEZVTExTQ1JFRU4gPSBcIkZVTExTQ1JFRU5cIixcbiAgUElQID0gXCJQSVBcIixcbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiBcInJvb3RcIiB9KVxuZXhwb3J0IGNsYXNzIFRhc1NlcnZpY2Uge1xuICBwcml2YXRlIHNlc3Npb246IE9ULlNlc3Npb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBwdWJsaXNoZXI6IE9ULlB1Ymxpc2hlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHN1YnNjcmliZXJzOiBPVC5TdWJzY3JpYmVyW10gPSBbXTtcblxuICBwcml2YXRlIGNhbGxTdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENhbGxTdGF0ZT4oQ2FsbFN0YXRlLklETEUpO1xuICBwdWJsaWMgY2FsbFN0YXRlJCA9IHRoaXMuY2FsbFN0YXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIHZpZXdNb2RlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Vmlld01vZGU+KFZpZXdNb2RlLkZVTExTQ1JFRU4pO1xuICBwdWJsaWMgdmlld01vZGUkID0gdGhpcy52aWV3TW9kZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgcHJpdmF0ZSBpc011dGVkU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgaXNNdXRlZCQgPSB0aGlzLmlzTXV0ZWRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIC8vIFNlc3Npb24gaW5mbyBmb3IgUGlQIG1vZGUgcmVzdG9yYXRpb25cbiAgcHJpdmF0ZSBjdXJyZW50U2Vzc2lvbklkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBjdXJyZW50VG9rZW46IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVEFTX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IFRhc0NvbmZpZyB8IG51bGwsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChUQVNfSFRUUF9DTElFTlQpIHByaXZhdGUgaHR0cENsaWVudDogVGFzSHR0cENsaWVudCB8IG51bGxcbiAgKSB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZyB8fCAhdGhpcy5odHRwQ2xpZW50KSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIFwiVGFzU2VydmljZTogQ29uZmlndXJhdGlvbiBub3QgcHJvdmlkZWQuIE1ha2Ugc3VyZSB0byB1c2UgVGFzTW9kdWxlLmZvclJvb3QoKVwiXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vIEdldHRlcnNcbiAgcHVibGljIGdldCBjdXJyZW50U2Vzc2lvbigpOiBPVC5TZXNzaW9uIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY3VycmVudFB1Ymxpc2hlcigpOiBPVC5QdWJsaXNoZXIgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5wdWJsaXNoZXI7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGN1cnJlbnRTdWJzY3JpYmVycygpOiBPVC5TdWJzY3JpYmVyW10ge1xuICAgIHJldHVybiB0aGlzLnN1YnNjcmliZXJzO1xuICB9XG5cbiAgcHVibGljIGdldCBzZXNzaW9uSWQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFNlc3Npb25JZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdG9rZW4oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFRva2VuO1xuICB9XG5cbiAgcHVibGljIGdldCBpc011dGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzTXV0ZWRTdWJqZWN0LmdldFZhbHVlKCk7XG4gIH1cblxuICAvLyBWaWV3IE1vZGUgTWV0aG9kc1xuICBwdWJsaWMgc2V0Vmlld01vZGUobW9kZTogVmlld01vZGUpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdNb2RlU3ViamVjdC5uZXh0KG1vZGUpO1xuICB9XG5cbiAgcHVibGljIGVudGVyUGlwTW9kZSgpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdNb2RlU3ViamVjdC5uZXh0KFZpZXdNb2RlLlBJUCk7XG4gIH1cblxuICBwdWJsaWMgZXhpdFBpcE1vZGUoKTogdm9pZCB7XG4gICAgdGhpcy52aWV3TW9kZVN1YmplY3QubmV4dChWaWV3TW9kZS5GVUxMU0NSRUVOKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1BpcE1vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmlld01vZGVTdWJqZWN0LmdldFZhbHVlKCkgPT09IFZpZXdNb2RlLlBJUDtcbiAgfVxuXG4gIC8vIEF1ZGlvIENvbnRyb2xcbiAgcHVibGljIHRvZ2dsZU11dGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHVibGlzaGVyKSB7XG4gICAgICBjb25zdCBuZXdNdXRlU3RhdGUgPSAhdGhpcy5pc011dGVkU3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgdGhpcy5wdWJsaXNoZXIucHVibGlzaEF1ZGlvKCFuZXdNdXRlU3RhdGUpO1xuICAgICAgdGhpcy5pc011dGVkU3ViamVjdC5uZXh0KG5ld011dGVTdGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldE11dGUobXV0ZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wdWJsaXNoZXIpIHtcbiAgICAgIHRoaXMucHVibGlzaGVyLnB1Ymxpc2hBdWRpbyghbXV0ZWQpO1xuICAgICAgdGhpcy5pc011dGVkU3ViamVjdC5uZXh0KG11dGVkKTtcbiAgICB9XG4gIH1cblxuICAvLyBTZXNzaW9uIE1hbmFnZW1lbnRcbiAgcHVibGljIGRpc2Nvbm5lY3RTZXNzaW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlc3Npb24pIHtcbiAgICAgIHRoaXMuc2Vzc2lvbi5kaXNjb25uZWN0KCk7XG4gICAgICB0aGlzLnNlc3Npb24gPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLnB1Ymxpc2hlciA9IG51bGw7XG4gICAgdGhpcy5zdWJzY3JpYmVycyA9IFtdO1xuICAgIHRoaXMuY3VycmVudFNlc3Npb25JZCA9IG51bGw7XG4gICAgdGhpcy5jdXJyZW50VG9rZW4gPSBudWxsO1xuICAgIHRoaXMuaXNNdXRlZFN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgdGhpcy52aWV3TW9kZVN1YmplY3QubmV4dChWaWV3TW9kZS5GVUxMU0NSRUVOKTtcbiAgICB0aGlzLmNhbGxTdGF0ZVN1YmplY3QubmV4dChDYWxsU3RhdGUuRElTQ09OTkVDVEVEKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0NhbGxBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbFN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpID09PSBDYWxsU3RhdGUuQ09OTkVDVEVEO1xuICB9XG5cbiAgLy8gQVBJIE1ldGhvZHNcbiAgcHVibGljIGNyZWF0ZVJvb20oXG4gICAgcGF5bG9hZDogQ3JlYXRlUm9vbVJlcXVlc3RcbiAgKTogT2JzZXJ2YWJsZTxDcmVhdGVSb29tUmVzcG9uc2U+IHtcbiAgICBpZiAoIXRoaXMuY29uZmlnIHx8ICF0aGlzLmh0dHBDbGllbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlRhc1NlcnZpY2Ugbm90IGNvbmZpZ3VyZWQuIFVzZSBUYXNNb2R1bGUuZm9yUm9vdCgpXCIpO1xuICAgIH1cbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmNvbmZpZy5hcGlCYXNlVXJsfS92Mi9yb29tYDtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8Q3JlYXRlUm9vbVJlc3BvbnNlPih1cmwsIHBheWxvYWQpLnBpcGUoXG4gICAgICBtYXAoKHJlc3BvbnNlKSA9PiByZXNwb25zZSBhcyBDcmVhdGVSb29tUmVzcG9uc2UpLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIlRBUyBTZXJ2aWNlOiBjcmVhdGVSb29tIGZhaWxlZFwiLCBlcnJvcik7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdlbmVyYXRlVG9rZW4oXG4gICAgcGF5bG9hZDogR2VuZXJhdGVUb2tlblJlcXVlc3RcbiAgKTogT2JzZXJ2YWJsZTxHZW5lcmF0ZVRva2VuUmVzcG9uc2U+IHtcbiAgICBpZiAoIXRoaXMuY29uZmlnIHx8ICF0aGlzLmh0dHBDbGllbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlRhc1NlcnZpY2Ugbm90IGNvbmZpZ3VyZWQuIFVzZSBUYXNNb2R1bGUuZm9yUm9vdCgpXCIpO1xuICAgIH1cbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmNvbmZpZy5hcGlCYXNlVXJsfS92Mi9yb29tL3Rva2VuYDtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8R2VuZXJhdGVUb2tlblJlc3BvbnNlPih1cmwsIHBheWxvYWQpLnBpcGUoXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHJlc3BvbnNlIGFzIEdlbmVyYXRlVG9rZW5SZXNwb25zZSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiVEFTIFNlcnZpY2U6IGdlbmVyYXRlVG9rZW4gZmFpbGVkXCIsIGVycm9yKTtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ29ubmVjdHMgdG8gYSBUb2tCb3ggdmlkZW8gc2Vzc2lvblxuICAgKi9cbiAgcHVibGljIGNvbm5lY3RTZXNzaW9uKFxuICAgIHNlc3Npb25JZDogc3RyaW5nLFxuICAgIHRva2VuOiBzdHJpbmcsXG4gICAgcHVibGlzaGVyRWxlbWVudDogc3RyaW5nLFxuICAgIHN1YnNjcmliZXJFbGVtZW50OiBzdHJpbmdcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoQ2FsbFN0YXRlLkNPTk5FQ1RJTkcpO1xuICAgIHRoaXMuY3VycmVudFNlc3Npb25JZCA9IHNlc3Npb25JZDtcbiAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHRva2VuO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsgICBcbiAgICAgIGlmICghdGhpcy5jb25maWcpIHtcbiAgICAgICAgdGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoQ2FsbFN0YXRlLkVSUk9SKTtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihcIlRhc1NlcnZpY2Ugbm90IGNvbmZpZ3VyZWQuIFVzZSBUYXNNb2R1bGUuZm9yUm9vdCgpXCIpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIU9ULmNoZWNrU3lzdGVtUmVxdWlyZW1lbnRzKCkpIHtcbiAgICAgICAgdGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoQ2FsbFN0YXRlLkVSUk9SKTtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihcIkJyb3dzZXIgbm90IGNvbXBhdGlibGUgd2l0aCBUb2tCb3hcIikpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2Vzc2lvbiA9IE9ULmluaXRTZXNzaW9uKHRoaXMuY29uZmlnLnRva0JveEFwaUtleSwgc2Vzc2lvbklkKTtcblxuICAgICAgLy8gSGFuZGxlIG5ldyBzdHJlYW1zIChyZW1vdGUgcGFydGljaXBhbnRzIGpvaW5pbmcpXG4gICAgICB0aGlzLnNlc3Npb24ub24oXCJzdHJlYW1DcmVhdGVkXCIsIChldmVudCkgPT4ge1xuICAgICAgICBjb25zdCBzdWJzY3JpYmVyID0gdGhpcy5zZXNzaW9uPy5zdWJzY3JpYmUoXG4gICAgICAgICAgZXZlbnQuc3RyZWFtLFxuICAgICAgICAgIHN1YnNjcmliZXJFbGVtZW50LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGluc2VydE1vZGU6IFwiYXBwZW5kXCIsXG4gICAgICAgICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICAgICAgICBoZWlnaHQ6IFwiMTAwJVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIHN1YnNjcmliaW5nIHRvIHN0cmVhbTpcIiwgZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHN1YnNjcmliZXIpIHtcbiAgICAgICAgICB0aGlzLnN1YnNjcmliZXJzLnB1c2goc3Vic2NyaWJlcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyBIYW5kbGUgc3RyZWFtcyBlbmRpbmcgKHJlbW90ZSBwYXJ0aWNpcGFudHMgbGVhdmluZylcbiAgICAgIHRoaXMuc2Vzc2lvbi5vbihcInN0cmVhbURlc3Ryb3llZFwiLCAoZXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVycyA9IHRoaXMuc3Vic2NyaWJlcnMuZmlsdGVyKFxuICAgICAgICAgIChzdWIpID0+IHN1Yi5zdHJlYW0/LnN0cmVhbUlkICE9PSBldmVudC5zdHJlYW0uc3RyZWFtSWRcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBIYW5kbGUgc2Vzc2lvbiBkaXNjb25uZWN0aW9uXG4gICAgICB0aGlzLnNlc3Npb24ub24oXCJzZXNzaW9uRGlzY29ubmVjdGVkXCIsICgpID0+IHtcbiAgICAgICAgdGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoQ2FsbFN0YXRlLkRJU0NPTk5FQ1RFRCk7XG4gICAgICB9KTtcblxuICAgICAgLy8gQ29ubmVjdCB0byBzZXNzaW9uXG4gICAgICB0aGlzLnNlc3Npb24uY29ubmVjdCh0b2tlbiwgKGVycm9yKSA9PiB7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBjb25uZWN0aW5nIHRvIHNlc3Npb246XCIsIGVycm9yKTtcbiAgICAgICAgICB0aGlzLmNhbGxTdGF0ZVN1YmplY3QubmV4dChDYWxsU3RhdGUuRVJST1IpO1xuICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSW5pdGlhbGl6ZSBwdWJsaXNoZXIgKGxvY2FsIHZpZGVvKVxuICAgICAgICB0aGlzLnB1Ymxpc2hlciA9IE9ULmluaXRQdWJsaXNoZXIoXG4gICAgICAgICAgcHVibGlzaGVyRWxlbWVudCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpbnNlcnRNb2RlOiBcImFwcGVuZFwiLFxuICAgICAgICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgICAgICAgICAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGluaXRpYWxpemluZyBwdWJsaXNoZXI6XCIsIGVycik7XG4gICAgICAgICAgICAgIHRoaXMuY2FsbFN0YXRlU3ViamVjdC5uZXh0KENhbGxTdGF0ZS5FUlJPUik7XG4gICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFB1Ymxpc2ggdG8gc2Vzc2lvblxuICAgICAgICAgICAgdGhpcy5zZXNzaW9uPy5wdWJsaXNoKHRoaXMucHVibGlzaGVyISwgKHB1YkVycikgPT4ge1xuICAgICAgICAgICAgICBpZiAocHViRXJyKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIHB1Ymxpc2hpbmcgc3RyZWFtOlwiLCBwdWJFcnIpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2FsbFN0YXRlU3ViamVjdC5uZXh0KENhbGxTdGF0ZS5FUlJPUik7XG4gICAgICAgICAgICAgICAgcmVqZWN0KHB1YkVycik7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoQ2FsbFN0YXRlLkNPTk5FQ1RFRCk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFZpZGVvIEVsZW1lbnQgTW92ZW1lbnQgTWV0aG9kc1xuICBwdWJsaWMgbW92ZVB1Ymxpc2hlclRvKG5ld0NvbnRhaW5lcklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucHVibGlzaGVyKSByZXR1cm47XG5cbiAgICBjb25zdCBwdWJsaXNoZXJFbGVtZW50ID0gdGhpcy5wdWJsaXNoZXIuZWxlbWVudDtcbiAgICBjb25zdCBuZXdDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChuZXdDb250YWluZXJJZCk7XG5cbiAgICBpZiAocHVibGlzaGVyRWxlbWVudCAmJiBuZXdDb250YWluZXIpIHtcbiAgICAgIG5ld0NvbnRhaW5lci5hcHBlbmRDaGlsZChwdWJsaXNoZXJFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbW92ZVN1YnNjcmliZXJzVG8obmV3Q29udGFpbmVySWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IG5ld0NvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG5ld0NvbnRhaW5lcklkKTtcbiAgICBpZiAoIW5ld0NvbnRhaW5lcikgcmV0dXJuO1xuXG4gICAgdGhpcy5zdWJzY3JpYmVycy5mb3JFYWNoKChzdWJzY3JpYmVyKSA9PiB7XG4gICAgICBjb25zdCBzdWJzY3JpYmVyRWxlbWVudCA9IHN1YnNjcmliZXIuZWxlbWVudDtcbiAgICAgIGlmIChzdWJzY3JpYmVyRWxlbWVudCkge1xuICAgICAgICBuZXdDb250YWluZXIuYXBwZW5kQ2hpbGQoc3Vic2NyaWJlckVsZW1lbnQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1vdmVzIHRoZSBtYWluIHZpZGVvIChzdWJzY3JpYmVyIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIHB1Ymxpc2hlcikgdG8gYSBjb250YWluZXIuXG4gICAqIFVzZWQgZm9yIFBpUCBtb2RlIHRvIHNob3cgb25seSBvbmUgdmlkZW8uXG4gICAqL1xuICBwdWJsaWMgbW92ZU1haW5WaWRlb1RvKG5ld0NvbnRhaW5lcklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBuZXdDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChuZXdDb250YWluZXJJZCk7XG4gICAgaWYgKCFuZXdDb250YWluZXIpIHJldHVybjtcblxuICAgIC8vIFByZWZlciByZW1vdGUgdmlkZW8gKHN1YnNjcmliZXIpIGFzIG1haW5cbiAgICBpZiAodGhpcy5zdWJzY3JpYmVycy5sZW5ndGggPiAwICYmIHRoaXMuc3Vic2NyaWJlcnNbMF0uZWxlbWVudCkge1xuICAgICAgbmV3Q29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuc3Vic2NyaWJlcnNbMF0uZWxlbWVudCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRmFsbCBiYWNrIHRvIGxvY2FsIHZpZGVvIChwdWJsaXNoZXIpXG4gICAgaWYgKHRoaXMucHVibGlzaGVyPy5lbGVtZW50KSB7XG4gICAgICBuZXdDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5wdWJsaXNoZXIuZWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1vdmVzIHZpZGVvcyBiYWNrIHRvIGZ1bGxzY3JlZW4gY29udGFpbmVyc1xuICAgKi9cbiAgcHVibGljIG1vdmVWaWRlb3NUb0Z1bGxzY3JlZW4oKTogdm9pZCB7XG4gICAgdGhpcy5tb3ZlU3Vic2NyaWJlcnNUbyhcInN1YnNjcmliZXItY29udGFpbmVyXCIpO1xuICAgIHRoaXMubW92ZVB1Ymxpc2hlclRvKFwicHVibGlzaGVyLWNvbnRhaW5lclwiKTtcbiAgfVxufVxuIl19
244
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YXMtdWVsbC1zZGsvc3JjL2xpYi9zZXJ2aWNlcy90YXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEVBS04sU0FBUyxFQUNULFFBQVEsR0FDUixNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUE0QixNQUFNLHNCQUFzQixDQUFDOztBQUU3Riw2Q0FBNkM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsQ0FBQztBQUsvQixNQUFNLE9BQU8sVUFBVTtJQWtCdEIsWUFDa0MsVUFBeUIsRUFDOUIsTUFBaUI7UUFEWixlQUFVLEdBQVYsVUFBVSxDQUFlO1FBQzlCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFuQnRDLFlBQU8sR0FBc0IsSUFBSSxDQUFDO1FBQ2xDLGNBQVMsR0FBd0IsSUFBSSxDQUFDO1FBQ3RDLGdCQUFXLEdBQW9CLEVBQUUsQ0FBQztRQUVsQyxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBWSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkUsZUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVqRCxvQkFBZSxHQUFHLElBQUksZUFBZSxDQUFXLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0RSxjQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVB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QUMsc0JBQXNCLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDN0MsQ0FBQzs7dUdBdFJXLFVBQVUsa0JBbUJiLGVBQWUsYUFDZixVQUFVOzJHQXBCUCxVQUFVLGNBRlYsTUFBTTsyRkFFTixVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQjs7MEJBb0JFLE1BQU07MkJBQUMsZUFBZTs7MEJBQ3RCLE1BQU07MkJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgKiBhcyBPVCBmcm9tIFwiQG9wZW50b2svY2xpZW50XCI7XG5pbXBvcnQge1xuXHRDcmVhdGVSb29tUmVxdWVzdCxcblx0Q3JlYXRlUm9vbVJlc3BvbnNlLFxuXHRHZW5lcmF0ZVRva2VuUmVxdWVzdCxcblx0R2VuZXJhdGVUb2tlblJlc3BvbnNlLFxuXHRDYWxsU3RhdGUsXG5cdFZpZXdNb2RlLFxufSBmcm9tIFwiLi4vaW50ZXJmYWNlcy90YXMuaW50ZXJmYWNlc1wiO1xuaW1wb3J0IHsgVEFTX0NPTkZJRywgVEFTX0hUVFBfQ0xJRU5ULCBUYXNDb25maWcsIFRhc0h0dHBDbGllbnQgfSBmcm9tIFwiLi4vY29uZmlnL3Rhcy5jb25maWdcIjtcblxuLy8gUmUtZXhwb3J0IGVudW1zIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG5leHBvcnQgeyBDYWxsU3RhdGUsIFZpZXdNb2RlIH07XG5cbkBJbmplY3RhYmxlKHtcblx0cHJvdmlkZWRJbjogXCJyb290XCIsXG59KVxuZXhwb3J0IGNsYXNzIFRhc1NlcnZpY2Uge1xuXHRwcml2YXRlIHNlc3Npb246IE9ULlNlc3Npb24gfCBudWxsID0gbnVsbDtcblx0cHJpdmF0ZSBwdWJsaXNoZXI6IE9ULlB1Ymxpc2hlciB8IG51bGwgPSBudWxsO1xuXHRwcml2YXRlIHN1YnNjcmliZXJzOiBPVC5TdWJzY3JpYmVyW10gPSBbXTtcblxuXHRwcml2YXRlIGNhbGxTdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENhbGxTdGF0ZT4oQ2FsbFN0YXRlLklETEUpO1xuXHRwdWJsaWMgY2FsbFN0YXRlJCA9IHRoaXMuY2FsbFN0YXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuXHRwcml2YXRlIHZpZXdNb2RlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Vmlld01vZGU+KFZpZXdNb2RlLkZVTExTQ1JFRU4pO1xuXHRwdWJsaWMgdmlld01vZGUkID0gdGhpcy52aWV3TW9kZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cblx0cHJpdmF0ZSBpc011dGVkU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXHRwdWJsaWMgaXNNdXRlZCQgPSB0aGlzLmlzTXV0ZWRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG5cdC8vIFNlc3Npb24gaW5mbyBmb3IgUGlQIG1vZGUgcmVzdG9yYXRpb25cblx0cHJpdmF0ZSBjdXJyZW50U2Vzc2lvbklkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblx0cHJpdmF0ZSBjdXJyZW50VG9rZW46IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdEBJbmplY3QoVEFTX0hUVFBfQ0xJRU5UKSBwcml2YXRlIGh0dHBDbGllbnQ6IFRhc0h0dHBDbGllbnQsXG5cdFx0QEluamVjdChUQVNfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogVGFzQ29uZmlnXG5cdCkge31cblxuXHQvLyBHZXR0ZXJzXG5cdHB1YmxpYyBnZXQgY3VycmVudFNlc3Npb24oKTogT1QuU2Vzc2lvbiB8IG51bGwge1xuXHRcdHJldHVybiB0aGlzLnNlc3Npb247XG5cdH1cblxuXHRwdWJsaWMgZ2V0IGN1cnJlbnRQdWJsaXNoZXIoKTogT1QuUHVibGlzaGVyIHwgbnVsbCB7XG5cdFx0cmV0dXJuIHRoaXMucHVibGlzaGVyO1xuXHR9XG5cblx0cHVibGljIGdldCBjdXJyZW50U3Vic2NyaWJlcnMoKTogT1QuU3Vic2NyaWJlcltdIHtcblx0XHRyZXR1cm4gdGhpcy5zdWJzY3JpYmVycztcblx0fVxuXG5cdHB1YmxpYyBnZXQgc2Vzc2lvbklkKCk6IHN0cmluZyB8IG51bGwge1xuXHRcdHJldHVybiB0aGlzLmN1cnJlbnRTZXNzaW9uSWQ7XG5cdH1cblxuXHRwdWJsaWMgZ2V0IHRva2VuKCk6IHN0cmluZyB8IG51bGwge1xuXHRcdHJldHVybiB0aGlzLmN1cnJlbnRUb2tlbjtcblx0fVxuXG5cdHB1YmxpYyBnZXQgaXNNdXRlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5pc011dGVkU3ViamVjdC5nZXRWYWx1ZSgpO1xuXHR9XG5cblx0Ly8gVmlldyBNb2RlIE1ldGhvZHNcblx0cHVibGljIHNldFZpZXdNb2RlKG1vZGU6IFZpZXdNb2RlKTogdm9pZCB7XG5cdFx0dGhpcy52aWV3TW9kZVN1YmplY3QubmV4dChtb2RlKTtcblx0fVxuXG5cdHB1YmxpYyBlbnRlclBpcE1vZGUoKTogdm9pZCB7XG5cdFx0dGhpcy52aWV3TW9kZVN1YmplY3QubmV4dChWaWV3TW9kZS5QSVApO1xuXHR9XG5cblx0cHVibGljIGV4aXRQaXBNb2RlKCk6IHZvaWQge1xuXHRcdHRoaXMudmlld01vZGVTdWJqZWN0Lm5leHQoVmlld01vZGUuRlVMTFNDUkVFTik7XG5cdH1cblxuXHRwdWJsaWMgaXNQaXBNb2RlKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLnZpZXdNb2RlU3ViamVjdC5nZXRWYWx1ZSgpID09PSBWaWV3TW9kZS5QSVA7XG5cdH1cblxuXHQvLyBBdWRpbyBDb250cm9sXG5cdHB1YmxpYyB0b2dnbGVNdXRlKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLnB1Ymxpc2hlcikge1xuXHRcdFx0Y29uc3QgbmV3TXV0ZVN0YXRlID0gIXRoaXMuaXNNdXRlZFN1YmplY3QuZ2V0VmFsdWUoKTtcblx0XHRcdGNvbnN0IHNob3VsZEVuYWJsZUF1ZGlvID0gIW5ld011dGVTdGF0ZTtcblx0XHRcdFxuXHRcdFx0Ly8gVXNlIE9wZW5Ub2sncyBwdWJsaXNoQXVkaW9cblx0XHRcdHRoaXMucHVibGlzaGVyLnB1Ymxpc2hBdWRpbyhzaG91bGRFbmFibGVBdWRpbyk7XG5cdFx0XHRcblx0XHRcdC8vIEFsc28gZGlyZWN0bHkgY29udHJvbCB0aGUgTWVkaWFTdHJlYW1UcmFjayBhcyBiYWNrdXBcblx0XHRcdGNvbnN0IGF1ZGlvVHJhY2sgPSB0aGlzLnB1Ymxpc2hlci5nZXRBdWRpb1NvdXJjZT8uKCk7XG5cdFx0XHRpZiAoYXVkaW9UcmFjaykge1xuXHRcdFx0XHRhdWRpb1RyYWNrLmVuYWJsZWQgPSBzaG91bGRFbmFibGVBdWRpbztcblx0XHRcdH1cblx0XHRcdFxuXHRcdFx0dGhpcy5pc011dGVkU3ViamVjdC5uZXh0KG5ld011dGVTdGF0ZSk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHNldE11dGUobXV0ZWQ6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRpZiAodGhpcy5wdWJsaXNoZXIpIHtcblx0XHRcdHRoaXMucHVibGlzaGVyLnB1Ymxpc2hBdWRpbyghbXV0ZWQpO1xuXHRcdFx0dGhpcy5pc011dGVkU3ViamVjdC5uZXh0KG11dGVkKTtcblx0XHR9XG5cdH1cblxuXHQvLyBTZXNzaW9uIE1hbmFnZW1lbnRcblx0cHVibGljIGRpc2Nvbm5lY3RTZXNzaW9uKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLnNlc3Npb24pIHtcblx0XHRcdHRoaXMuc2Vzc2lvbi5kaXNjb25uZWN0KCk7XG5cdFx0XHR0aGlzLnNlc3Npb24gPSBudWxsO1xuXHRcdH1cblx0XHR0aGlzLnB1Ymxpc2hlciA9IG51bGw7XG5cdFx0dGhpcy5zdWJzY3JpYmVycyA9IFtdO1xuXHRcdHRoaXMuY3VycmVudFNlc3Npb25JZCA9IG51bGw7XG5cdFx0dGhpcy5jdXJyZW50VG9rZW4gPSBudWxsO1xuXHRcdHRoaXMuaXNNdXRlZFN1YmplY3QubmV4dChmYWxzZSk7IC8vIFJlc2V0IG11dGUgc3RhdGVcblx0XHR0aGlzLnZpZXdNb2RlU3ViamVjdC5uZXh0KFZpZXdNb2RlLkZVTExTQ1JFRU4pO1xuXHRcdHRoaXMuY2FsbFN0YXRlU3ViamVjdC5uZXh0KENhbGxTdGF0ZS5ESVNDT05ORUNURUQpO1xuXHR9XG5cblx0cHVibGljIGlzQ2FsbEFjdGl2ZSgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5jYWxsU3RhdGVTdWJqZWN0LmdldFZhbHVlKCkgPT09IENhbGxTdGF0ZS5DT05ORUNURUQ7XG5cdH1cblxuXHQvLyBBUEkgTWV0aG9kc1xuXHRwdWJsaWMgY3JlYXRlUm9vbShwYXlsb2FkOiBDcmVhdGVSb29tUmVxdWVzdCk6IE9ic2VydmFibGU8Q3JlYXRlUm9vbVJlc3BvbnNlPiB7XG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PENyZWF0ZVJvb21SZXNwb25zZT4oXCJ2Mi9yb29tXCIsIHsgYm9keTogcGF5bG9hZCwgaGVhZGVyczoge30gfSkucGlwZShcblx0XHRcdG1hcCgocmVzcG9uc2UpID0+IHJlc3BvbnNlIGFzIENyZWF0ZVJvb21SZXNwb25zZSksXG5cdFx0XHRjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuXHRcdFx0XHRjb25zb2xlLmVycm9yKFwiVEFTIFNlcnZpY2U6IGNyZWF0ZVJvb20gZmFpbGVkXCIsIGVycm9yKTtcblx0XHRcdFx0dGhyb3cgZXJyb3I7XG5cdFx0XHR9KVxuXHRcdCk7XG5cdH1cblxuXHRwdWJsaWMgZ2VuZXJhdGVUb2tlbihwYXlsb2FkOiBHZW5lcmF0ZVRva2VuUmVxdWVzdCk6IE9ic2VydmFibGU8R2VuZXJhdGVUb2tlblJlc3BvbnNlPiB7XG5cdFx0cmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PEdlbmVyYXRlVG9rZW5SZXNwb25zZT4oXCJ2Mi9yb29tL3Rva2VuXCIsIHsgYm9keTogcGF5bG9hZCwgaGVhZGVyczoge30gfSkucGlwZShcblx0XHRcdG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UgYXMgR2VuZXJhdGVUb2tlblJlc3BvbnNlKSxcblx0XHRcdGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoXCJUQVMgU2VydmljZTogZ2VuZXJhdGVUb2tlbiBmYWlsZWRcIiwgZXJyb3IpO1xuXHRcdFx0XHR0aHJvdyBlcnJvcjtcblx0XHRcdH0pXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb25uZWN0cyB0byBhIFRva0JveCB2aWRlbyBzZXNzaW9uXG5cdCAqL1xuXHRwdWJsaWMgY29ubmVjdFNlc3Npb24oXG5cdFx0c2Vzc2lvbklkOiBzdHJpbmcsXG5cdFx0dG9rZW46IHN0cmluZyxcblx0XHRwdWJsaXNoZXJFbGVtZW50OiBzdHJpbmcsXG5cdFx0c3Vic2NyaWJlckVsZW1lbnQ6IHN0cmluZ1xuXHQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0aGlzLmNhbGxTdGF0ZVN1YmplY3QubmV4dChDYWxsU3RhdGUuQ09OTkVDVElORyk7XG5cdFx0dGhpcy5jdXJyZW50U2Vzc2lvbklkID0gc2Vzc2lvbklkO1xuXHRcdHRoaXMuY3VycmVudFRva2VuID0gdG9rZW47XG5cdFx0XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdGlmICghT1QuY2hlY2tTeXN0ZW1SZXF1aXJlbWVudHMoKSkge1xuXHRcdFx0XHR0aGlzLmNhbGxTdGF0ZVN1YmplY3QubmV4dChDYWxsU3RhdGUuRVJST1IpO1xuXHRcdFx0XHRyZWplY3QobmV3IEVycm9yKFwiQnJvd3NlciBub3QgY29tcGF0aWJsZSB3aXRoIFRva0JveFwiKSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0dGhpcy5zZXNzaW9uID0gT1QuaW5pdFNlc3Npb24odGhpcy5jb25maWcudG9rQm94QXBpS2V5LCBzZXNzaW9uSWQpO1xuXG5cdFx0XHQvLyBIYW5kbGUgbmV3IHN0cmVhbXMgKHJlbW90ZSBwYXJ0aWNpcGFudHMgam9pbmluZylcblx0XHRcdHRoaXMuc2Vzc2lvbi5vbihcInN0cmVhbUNyZWF0ZWRcIiwgKGV2ZW50KSA9PiB7XG5cdFx0XHRcdGNvbnN0IHN1YnNjcmliZXIgPSB0aGlzLnNlc3Npb24/LnN1YnNjcmliZShcblx0XHRcdFx0XHRldmVudC5zdHJlYW0sXG5cdFx0XHRcdFx0c3Vic2NyaWJlckVsZW1lbnQsXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0aW5zZXJ0TW9kZTogXCJhcHBlbmRcIixcblx0XHRcdFx0XHRcdHdpZHRoOiBcIjEwMCVcIixcblx0XHRcdFx0XHRcdGhlaWdodDogXCIxMDAlXCIsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQoZXJyb3IpID0+IHtcblx0XHRcdFx0XHRcdGlmIChlcnJvcikge1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmVycm9yKFwiRXJyb3Igc3Vic2NyaWJpbmcgdG8gc3RyZWFtOlwiLCBlcnJvcik7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRpZiAoc3Vic2NyaWJlcikge1xuXHRcdFx0XHRcdHRoaXMuc3Vic2NyaWJlcnMucHVzaChzdWJzY3JpYmVyKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cblx0XHRcdC8vIEhhbmRsZSBzdHJlYW1zIGVuZGluZyAocmVtb3RlIHBhcnRpY2lwYW50cyBsZWF2aW5nKVxuXHRcdFx0dGhpcy5zZXNzaW9uLm9uKFwic3RyZWFtRGVzdHJveWVkXCIsIChldmVudCkgPT4ge1xuXHRcdFx0XHR0aGlzLnN1YnNjcmliZXJzID0gdGhpcy5zdWJzY3JpYmVycy5maWx0ZXIoXG5cdFx0XHRcdFx0KHN1YikgPT4gc3ViLnN0cmVhbT8uc3RyZWFtSWQgIT09IGV2ZW50LnN0cmVhbS5zdHJlYW1JZFxuXHRcdFx0XHQpO1xuXHRcdFx0fSk7XG5cblx0XHRcdC8vIEhhbmRsZSBzZXNzaW9uIGRpc2Nvbm5lY3Rpb25cblx0XHRcdHRoaXMuc2Vzc2lvbi5vbihcInNlc3Npb25EaXNjb25uZWN0ZWRcIiwgKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmNhbGxTdGF0ZVN1YmplY3QubmV4dChDYWxsU3RhdGUuRElTQ09OTkVDVEVEKTtcblx0XHRcdH0pO1xuXG5cdFx0XHQvLyBDb25uZWN0IHRvIHNlc3Npb25cblx0XHRcdHRoaXMuc2Vzc2lvbi5jb25uZWN0KHRva2VuLCAoZXJyb3IpID0+IHtcblx0XHRcdFx0aWYgKGVycm9yKSB7XG5cdFx0XHRcdFx0Y29uc29sZS5lcnJvcihcIkVycm9yIGNvbm5lY3RpbmcgdG8gc2Vzc2lvbjpcIiwgZXJyb3IpO1xuXHRcdFx0XHRcdHRoaXMuY2FsbFN0YXRlU3ViamVjdC5uZXh0KENhbGxTdGF0ZS5FUlJPUik7XG5cdFx0XHRcdFx0cmVqZWN0KGVycm9yKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBJbml0aWFsaXplIHB1Ymxpc2hlciAobG9jYWwgdmlkZW8pXG5cdFx0XHRcdHRoaXMucHVibGlzaGVyID0gT1QuaW5pdFB1Ymxpc2hlcihcblx0XHRcdFx0XHRwdWJsaXNoZXJFbGVtZW50LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGluc2VydE1vZGU6IFwiYXBwZW5kXCIsXG5cdFx0XHRcdFx0XHR3aWR0aDogXCIxMDAlXCIsXG5cdFx0XHRcdFx0XHRoZWlnaHQ6IFwiMTAwJVwiLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0KGVycikgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKGVycikge1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmVycm9yKFwiRXJyb3IgaW5pdGlhbGl6aW5nIHB1Ymxpc2hlcjpcIiwgZXJyKTtcblx0XHRcdFx0XHRcdFx0dGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoQ2FsbFN0YXRlLkVSUk9SKTtcblx0XHRcdFx0XHRcdFx0cmVqZWN0KGVycik7XG5cdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Ly8gUHVibGlzaCB0byBzZXNzaW9uXG5cdFx0XHRcdFx0XHR0aGlzLnNlc3Npb24/LnB1Ymxpc2godGhpcy5wdWJsaXNoZXIsIChwdWJFcnIpID0+IHtcblx0XHRcdFx0XHRcdFx0aWYgKHB1YkVycikge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoXCJFcnJvciBwdWJsaXNoaW5nIHN0cmVhbTpcIiwgcHViRXJyKTtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmNhbGxTdGF0ZVN1YmplY3QubmV4dChDYWxsU3RhdGUuRVJST1IpO1xuXHRcdFx0XHRcdFx0XHRcdHJlamVjdChwdWJFcnIpO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuY2FsbFN0YXRlU3ViamVjdC5uZXh0KENhbGxTdGF0ZS5DT05ORUNURUQpO1xuXHRcdFx0XHRcdFx0XHRcdHJlc29sdmUoKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cblxuXHQvLyBWaWRlbyBFbGVtZW50IE1vdmVtZW50IE1ldGhvZHNcblx0cHVibGljIG1vdmVQdWJsaXNoZXJUbyhuZXdDb250YWluZXJJZDogc3RyaW5nKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLnB1Ymxpc2hlcikgcmV0dXJuO1xuXHRcdFxuXHRcdGNvbnN0IHB1Ymxpc2hlckVsZW1lbnQgPSB0aGlzLnB1Ymxpc2hlci5lbGVtZW50O1xuXHRcdGNvbnN0IG5ld0NvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG5ld0NvbnRhaW5lcklkKTtcblx0XHRcblx0XHRpZiAocHVibGlzaGVyRWxlbWVudCAmJiBuZXdDb250YWluZXIpIHtcblx0XHRcdG5ld0NvbnRhaW5lci5hcHBlbmRDaGlsZChwdWJsaXNoZXJFbGVtZW50KTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgbW92ZVN1YnNjcmliZXJzVG8obmV3Q29udGFpbmVySWQ6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IG5ld0NvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG5ld0NvbnRhaW5lcklkKTtcblx0XHRpZiAoIW5ld0NvbnRhaW5lcikgcmV0dXJuO1xuXHRcdFxuXHRcdHRoaXMuc3Vic2NyaWJlcnMuZm9yRWFjaCgoc3Vic2NyaWJlcikgPT4ge1xuXHRcdFx0Y29uc3Qgc3Vic2NyaWJlckVsZW1lbnQgPSBzdWJzY3JpYmVyLmVsZW1lbnQ7XG5cdFx0XHRpZiAoc3Vic2NyaWJlckVsZW1lbnQpIHtcblx0XHRcdFx0bmV3Q29udGFpbmVyLmFwcGVuZENoaWxkKHN1YnNjcmliZXJFbGVtZW50KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBNb3ZlcyB0aGUgbWFpbiB2aWRlbyAoc3Vic2NyaWJlciBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSBwdWJsaXNoZXIpIHRvIGEgY29udGFpbmVyLlxuXHQgKiBVc2VkIGZvciBQaVAgbW9kZSB0byBzaG93IG9ubHkgb25lIHZpZGVvLlxuXHQgKi9cblx0cHVibGljIG1vdmVNYWluVmlkZW9UbyhuZXdDb250YWluZXJJZDogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3QgbmV3Q29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobmV3Q29udGFpbmVySWQpO1xuXHRcdGlmICghbmV3Q29udGFpbmVyKSByZXR1cm47XG5cblx0XHQvLyBQcmVmZXIgcmVtb3RlIHZpZGVvIChzdWJzY3JpYmVyKSBhcyBtYWluXG5cdFx0aWYgKHRoaXMuc3Vic2NyaWJlcnMubGVuZ3RoID4gMCAmJiB0aGlzLnN1YnNjcmliZXJzWzBdLmVsZW1lbnQpIHtcblx0XHRcdG5ld0NvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLnN1YnNjcmliZXJzWzBdLmVsZW1lbnQpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIEZhbGwgYmFjayB0byBsb2NhbCB2aWRlbyAocHVibGlzaGVyKVxuXHRcdGlmICh0aGlzLnB1Ymxpc2hlcj8uZWxlbWVudCkge1xuXHRcdFx0bmV3Q29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMucHVibGlzaGVyLmVsZW1lbnQpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBNb3ZlcyB2aWRlb3MgYmFjayB0byBmdWxsc2NyZWVuIGNvbnRhaW5lcnNcblx0ICovXG5cdHB1YmxpYyBtb3ZlVmlkZW9zVG9GdWxsc2NyZWVuKCk6IHZvaWQge1xuXHRcdHRoaXMubW92ZVN1YnNjcmliZXJzVG8oJ3N1YnNjcmliZXItY29udGFpbmVyJyk7XG5cdFx0dGhpcy5tb3ZlUHVibGlzaGVyVG8oJ3B1Ymxpc2hlci1jb250YWluZXInKTtcblx0fVxufVxuXG4iXX0=
@@ -0,0 +1,82 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { TasButtonComponent } from './components/tas-btn/tas-btn.component';
4
+ import { TasVideocallComponent } from './components/tas-videocall/tas-videocall.component';
5
+ import { TasFloatingCallComponent } from './components/tas-floating-call/tas-floating-call.component';
6
+ import { TasWaitingRoomComponent } from './components/tas-waiting-room/tas-waiting-room.component';
7
+ import { TasService } from './services/tas.service';
8
+ import { TAS_CONFIG, TAS_HTTP_CLIENT } from './config/tas.config';
9
+ import * as i0 from "@angular/core";
10
+ export class TasUellSdkModule {
11
+ /**
12
+ * Use forRoot() to configure the TAS SDK module with required dependencies.
13
+ * This should only be called once in your root AppModule.
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * import { TasUellSdkModule, TasHttpClient } from 'tas-uell-sdk';
18
+ *
19
+ * // Create an adapter that implements TasHttpClient
20
+ * @Injectable({ providedIn: 'root' })
21
+ * export class MyHttpAdapter implements TasHttpClient {
22
+ * constructor(private http: HttpClient) {}
23
+ * post<T>(url: string, options: { body: any; headers?: Record<string, string> }): Observable<T> {
24
+ * return this.http.post<T>(url, options.body, { headers: options.headers });
25
+ * }
26
+ * }
27
+ *
28
+ * // In your AppModule
29
+ * @NgModule({
30
+ * imports: [
31
+ * TasUellSdkModule.forRoot({
32
+ * config: { tokBoxApiKey: 'YOUR_TOKBOX_API_KEY' },
33
+ * httpClient: MyHttpAdapter
34
+ * })
35
+ * ]
36
+ * })
37
+ * export class AppModule { }
38
+ * ```
39
+ */
40
+ static forRoot(options) {
41
+ return {
42
+ ngModule: TasUellSdkModule,
43
+ providers: [
44
+ { provide: TAS_CONFIG, useValue: options.config },
45
+ { provide: TAS_HTTP_CLIENT, useClass: options.httpClient },
46
+ TasService
47
+ ]
48
+ };
49
+ }
50
+ }
51
+ TasUellSdkModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TasUellSdkModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
52
+ TasUellSdkModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TasUellSdkModule, declarations: [TasButtonComponent,
53
+ TasVideocallComponent,
54
+ TasFloatingCallComponent,
55
+ TasWaitingRoomComponent], imports: [CommonModule], exports: [TasButtonComponent,
56
+ TasVideocallComponent,
57
+ TasFloatingCallComponent,
58
+ TasWaitingRoomComponent] });
59
+ TasUellSdkModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TasUellSdkModule, imports: [[
60
+ CommonModule,
61
+ ]] });
62
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TasUellSdkModule, decorators: [{
63
+ type: NgModule,
64
+ args: [{
65
+ declarations: [
66
+ TasButtonComponent,
67
+ TasVideocallComponent,
68
+ TasFloatingCallComponent,
69
+ TasWaitingRoomComponent
70
+ ],
71
+ imports: [
72
+ CommonModule,
73
+ ],
74
+ exports: [
75
+ TasButtonComponent,
76
+ TasVideocallComponent,
77
+ TasFloatingCallComponent,
78
+ TasWaitingRoomComponent
79
+ ]
80
+ }]
81
+ }] });
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzLXVlbGwtc2RrLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3Rhcy11ZWxsLXNkay9zcmMvbGliL3Rhcy11ZWxsLXNkay5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ25HLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBNEIsTUFBTSxxQkFBcUIsQ0FBQzs7QUFtQjVGLE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0E0Qkc7SUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLE9BR2Q7UUFDQyxPQUFPO1lBQ0wsUUFBUSxFQUFFLGdCQUFnQjtZQUMxQixTQUFTLEVBQUU7Z0JBQ1QsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFO2dCQUNqRCxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUU7Z0JBQzFELFVBQVU7YUFDWDtTQUNGLENBQUM7SUFDSixDQUFDOzs2R0ExQ1UsZ0JBQWdCOzhHQUFoQixnQkFBZ0IsaUJBZnpCLGtCQUFrQjtRQUNsQixxQkFBcUI7UUFDckIsd0JBQXdCO1FBQ3hCLHVCQUF1QixhQUd2QixZQUFZLGFBR1osa0JBQWtCO1FBQ2xCLHFCQUFxQjtRQUNyQix3QkFBd0I7UUFDeEIsdUJBQXVCOzhHQUdkLGdCQUFnQixZQVZsQjtZQUNQLFlBQVk7U0FDYjsyRkFRVSxnQkFBZ0I7a0JBakI1QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixrQkFBa0I7d0JBQ2xCLHFCQUFxQjt3QkFDckIsd0JBQXdCO3dCQUN4Qix1QkFBdUI7cUJBQ3hCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3FCQUNiO29CQUNELE9BQU8sRUFBRTt3QkFDUCxrQkFBa0I7d0JBQ2xCLHFCQUFxQjt3QkFDckIsd0JBQXdCO3dCQUN4Qix1QkFBdUI7cUJBQ3hCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUYXNCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFzLWJ0bi90YXMtYnRuLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYXNWaWRlb2NhbGxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFzLXZpZGVvY2FsbC90YXMtdmlkZW9jYWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYXNGbG9hdGluZ0NhbGxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFzLWZsb2F0aW5nLWNhbGwvdGFzLWZsb2F0aW5nLWNhbGwuY29tcG9uZW50JztcbmltcG9ydCB7IFRhc1dhaXRpbmdSb29tQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Rhcy13YWl0aW5nLXJvb20vdGFzLXdhaXRpbmctcm9vbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFzU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdGFzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVEFTX0NPTkZJRywgVEFTX0hUVFBfQ0xJRU5ULCBUYXNDb25maWcsIFRhc0h0dHBDbGllbnQgfSBmcm9tICcuL2NvbmZpZy90YXMuY29uZmlnJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgVGFzQnV0dG9uQ29tcG9uZW50LFxuICAgIFRhc1ZpZGVvY2FsbENvbXBvbmVudCxcbiAgICBUYXNGbG9hdGluZ0NhbGxDb21wb25lbnQsXG4gICAgVGFzV2FpdGluZ1Jvb21Db21wb25lbnRcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFRhc0J1dHRvbkNvbXBvbmVudCxcbiAgICBUYXNWaWRlb2NhbGxDb21wb25lbnQsXG4gICAgVGFzRmxvYXRpbmdDYWxsQ29tcG9uZW50LFxuICAgIFRhc1dhaXRpbmdSb29tQ29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgVGFzVWVsbFNka01vZHVsZSB7XG4gIC8qKlxuICAgKiBVc2UgZm9yUm9vdCgpIHRvIGNvbmZpZ3VyZSB0aGUgVEFTIFNESyBtb2R1bGUgd2l0aCByZXF1aXJlZCBkZXBlbmRlbmNpZXMuXG4gICAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uY2UgaW4geW91ciByb290IEFwcE1vZHVsZS5cbiAgICogXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogaW1wb3J0IHsgVGFzVWVsbFNka01vZHVsZSwgVGFzSHR0cENsaWVudCB9IGZyb20gJ3Rhcy11ZWxsLXNkayc7XG4gICAqIFxuICAgKiAvLyBDcmVhdGUgYW4gYWRhcHRlciB0aGF0IGltcGxlbWVudHMgVGFzSHR0cENsaWVudFxuICAgKiBASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuICAgKiBleHBvcnQgY2xhc3MgTXlIdHRwQWRhcHRlciBpbXBsZW1lbnRzIFRhc0h0dHBDbGllbnQge1xuICAgKiAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge31cbiAgICogICBwb3N0PFQ+KHVybDogc3RyaW5nLCBvcHRpb25zOiB7IGJvZHk6IGFueTsgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfSk6IE9ic2VydmFibGU8VD4ge1xuICAgKiAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFQ+KHVybCwgb3B0aW9ucy5ib2R5LCB7IGhlYWRlcnM6IG9wdGlvbnMuaGVhZGVycyB9KTtcbiAgICogICB9XG4gICAqIH1cbiAgICogXG4gICAqIC8vIEluIHlvdXIgQXBwTW9kdWxlXG4gICAqIEBOZ01vZHVsZSh7XG4gICAqICAgaW1wb3J0czogW1xuICAgKiAgICAgVGFzVWVsbFNka01vZHVsZS5mb3JSb290KHtcbiAgICogICAgICAgY29uZmlnOiB7IHRva0JveEFwaUtleTogJ1lPVVJfVE9LQk9YX0FQSV9LRVknIH0sXG4gICAqICAgICAgIGh0dHBDbGllbnQ6IE15SHR0cEFkYXB0ZXJcbiAgICogICAgIH0pXG4gICAqICAgXVxuICAgKiB9KVxuICAgKiBleHBvcnQgY2xhc3MgQXBwTW9kdWxlIHsgfVxuICAgKiBgYGBcbiAgICovXG4gIHN0YXRpYyBmb3JSb290KG9wdGlvbnM6IHtcbiAgICBjb25maWc6IFRhc0NvbmZpZztcbiAgICBodHRwQ2xpZW50OiBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBUYXNIdHRwQ2xpZW50O1xuICB9KTogTW9kdWxlV2l0aFByb3ZpZGVyczxUYXNVZWxsU2RrTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBUYXNVZWxsU2RrTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogVEFTX0NPTkZJRywgdXNlVmFsdWU6IG9wdGlvbnMuY29uZmlnIH0sXG4gICAgICAgIHsgcHJvdmlkZTogVEFTX0hUVFBfQ0xJRU5ULCB1c2VDbGFzczogb3B0aW9ucy5odHRwQ2xpZW50IH0sXG4gICAgICAgIFRhc1NlcnZpY2VcbiAgICAgIF1cbiAgICB9O1xuICB9XG59XG5cbiJdfQ==
@@ -1,16 +1,17 @@
1
1
  /*
2
2
  * Public API Surface of tas-uell-sdk
3
3
  */
4
- // Module
5
- export * from "./lib/tas.module";
6
- // Configuration
7
- export * from "./lib/tas.config";
8
- // Services
9
- export * from "./lib/services/tas.service";
10
- // Components
11
- export * from "./lib/components/tas-btn/tas-btn.component";
12
- export * from "./lib/components/tas-videocall/tas-videocall.component";
13
- export * from "./lib/components/tas-floating-call/tas-floating-call.component";
4
+ // Configuration and tokens
5
+ export * from './lib/config/tas.config';
14
6
  // Interfaces
15
- export * from "./lib/interfaces/tas.interfaces";
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsU0FBUztBQUNULGNBQWMsa0JBQWtCLENBQUM7QUFFakMsZ0JBQWdCO0FBQ2hCLGNBQWMsa0JBQWtCLENBQUM7QUFFakMsV0FBVztBQUNYLGNBQWMsNEJBQTRCLENBQUM7QUFFM0MsYUFBYTtBQUNiLGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyx3REFBd0QsQ0FBQztBQUN2RSxjQUFjLGdFQUFnRSxDQUFDO0FBRS9FLGFBQWE7QUFDYixjQUFjLGlDQUFpQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiB0YXMtdWVsbC1zZGtcbiAqL1xuXG4vLyBNb2R1bGVcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi90YXMubW9kdWxlXCI7XG5cbi8vIENvbmZpZ3VyYXRpb25cbmV4cG9ydCAqIGZyb20gXCIuL2xpYi90YXMuY29uZmlnXCI7XG5cbi8vIFNlcnZpY2VzXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvc2VydmljZXMvdGFzLnNlcnZpY2VcIjtcblxuLy8gQ29tcG9uZW50c1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudHMvdGFzLWJ0bi90YXMtYnRuLmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudHMvdGFzLXZpZGVvY2FsbC90YXMtdmlkZW9jYWxsLmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudHMvdGFzLWZsb2F0aW5nLWNhbGwvdGFzLWZsb2F0aW5nLWNhbGwuY29tcG9uZW50XCI7XG5cbi8vIEludGVyZmFjZXNcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9pbnRlcmZhY2VzL3Rhcy5pbnRlcmZhY2VzXCI7XG4iXX0=
7
+ export * from './lib/interfaces/tas.interfaces';
8
+ // Service
9
+ export * from './lib/services/tas.service';
10
+ // Components
11
+ export * from './lib/components/tas-btn/tas-btn.component';
12
+ export * from './lib/components/tas-waiting-room/tas-waiting-room.component';
13
+ export * from './lib/components/tas-videocall/tas-videocall.component';
14
+ export * from './lib/components/tas-floating-call/tas-floating-call.component';
15
+ // Module
16
+ export * from './lib/tas-uell-sdk.module';
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3Rhcy11ZWxsLXNkay9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILDJCQUEyQjtBQUMzQixjQUFjLHlCQUF5QixDQUFDO0FBRXhDLGFBQWE7QUFDYixjQUFjLGlDQUFpQyxDQUFDO0FBRWhELFVBQVU7QUFDVixjQUFjLDRCQUE0QixDQUFDO0FBRTNDLGFBQWE7QUFDYixjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsOERBQThELENBQUM7QUFDN0UsY0FBYyx3REFBd0QsQ0FBQztBQUN2RSxjQUFjLGdFQUFnRSxDQUFDO0FBRS9FLFNBQVM7QUFDVCxjQUFjLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiB0YXMtdWVsbC1zZGtcbiAqL1xuXG4vLyBDb25maWd1cmF0aW9uIGFuZCB0b2tlbnNcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbmZpZy90YXMuY29uZmlnJztcblxuLy8gSW50ZXJmYWNlc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJmYWNlcy90YXMuaW50ZXJmYWNlcyc7XG5cbi8vIFNlcnZpY2VcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3Rhcy5zZXJ2aWNlJztcblxuLy8gQ29tcG9uZW50c1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90YXMtYnRuL3Rhcy1idG4uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdGFzLXdhaXRpbmctcm9vbS90YXMtd2FpdGluZy1yb29tLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Rhcy12aWRlb2NhbGwvdGFzLXZpZGVvY2FsbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90YXMtZmxvYXRpbmctY2FsbC90YXMtZmxvYXRpbmctY2FsbC5jb21wb25lbnQnO1xuXG4vLyBNb2R1bGVcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rhcy11ZWxsLXNkay5tb2R1bGUnO1xuIl19
@@ -2,4 +2,4 @@
2
2
  * Generated bundle index. Do not edit.
3
3
  */
4
4
  export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzLXVlbGwtc2RrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rhcy11ZWxsLXNkay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzLXVlbGwtc2RrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvdGFzLXVlbGwtc2RrL3NyYy90YXMtdWVsbC1zZGsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==