@tiba-spark/client-shared-lib 25.1.0-1235 → 25.1.0-1240

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.
@@ -24,6 +24,7 @@ const AUTHENTICATE_APIS = [
24
24
  ];
25
25
  const EDGE_PREFIX_API = '/api/services/sp';
26
26
  const REFRESH_TOKEN_API = 'api/services/users/refreshtoken';
27
+ const REFRESH_MOBILE_TOKEN_API = 'api/services/v1/mobile/users/refresh-token';
27
28
  const ANONYMOUS_APIS = [
28
29
  REFRESH_TOKEN_API,
29
30
  'api/services/users/authenticate',
@@ -50,7 +51,7 @@ export class AuthTokenService {
50
51
  this.appConfig = appConfig;
51
52
  this.refreshTokenService = refreshTokenService;
52
53
  this.isRefreshTokenExpired = (refreshInfo) => !refreshInfo || new Date() > new Date(moment(refreshInfo.expiration).add(-refreshInfo.refreshInterval * 0.1, 'milliseconds').format());
53
- this.isRefreshTokenRequest = (req) => req.url.includes(REFRESH_TOKEN_API);
54
+ this.isRefreshTokenRequest = (req) => req.url.includes(REFRESH_TOKEN_API) || req.url.includes(REFRESH_MOBILE_TOKEN_API);
54
55
  this.logout = () => new LogoutAction(false); // when 401 do not invoke in the logout action the logout Audit
55
56
  this.servicesRunningStatusChanged = (servicesRunningStatus, guid) => new ServicesRunningStatusChangedAction(servicesRunningStatus, guid);
56
57
  }
@@ -63,6 +64,15 @@ export class AuthTokenService {
63
64
  }
64
65
  return request;
65
66
  }
67
+ handleMobileRequest(req, next) {
68
+ req = this.setRequestHeaders(req);
69
+ let request = next.handle(req);
70
+ const refreshInfo = this.sessionStorageService.getAuth;
71
+ if (this.shouldHandleRefreshToken(req) && this.isRefreshTokenExpired(refreshInfo)) {
72
+ request = this.refreshTokenService.handleMobileRefreshToken(req, next);
73
+ }
74
+ return request;
75
+ }
66
76
  handleEventStatusError(e, req, next) {
67
77
  let response;
68
78
  switch (e.status) {
@@ -181,4 +191,4 @@ __decorate([
181
191
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthTokenService, decorators: [{
182
192
  type: Injectable
183
193
  }], ctorParameters: function () { return [{ type: i1.SessionStorageService }, { type: i2.Store }, { type: i3.AppConfigService }, { type: i4.RefreshTokenService }]; }, propDecorators: { logout: [], servicesRunningStatusChanged: [] } });
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC10b2tlbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9zZXJ2aWNlcy9hdXRoLXRva2VuLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXpELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUUxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFL0QsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDMUYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBcUQsTUFBTSx3Q0FBd0MsQ0FBQztBQUl0SCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7OztBQUdyRCxNQUFNLGlCQUFpQixHQUFHO0lBQ3hCLG9DQUFvQztJQUNwQyxpQ0FBaUM7SUFDakMsK0NBQStDO0NBQ2hELENBQUM7QUFDRixNQUFNLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQztBQUMzQyxNQUFNLGlCQUFpQixHQUFHLGlDQUFpQyxDQUFDO0FBQzVELE1BQU0sY0FBYyxHQUFHO0lB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QUMsQ0FBb0I7UUFDOUMsSUFBSSxDQUFDLENBQUMsTUFBTSwwQ0FBZ0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDbkcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ2Y7UUFFRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDOytHQTdJVSxnQkFBZ0I7bUhBQWhCLGdCQUFnQjs7QUErSWY7SUFBWCxRQUFRLEVBQUU7Z0RBQXdDO0FBRXZDO0lBQVgsUUFBUSxFQUFFO3NFQUMyRDs0RkFsSjNELGdCQUFnQjtrQkFENUIsVUFBVTtpTUFnSkcsTUFBTSxNQUVOLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwRXZlbnQsIEh0dHBIYW5kbGVyLCBIdHRwUmVxdWVzdCwgSHR0cFJlc3BvbnNlLCBIdHRwU3RhdHVzQ29kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpc3BhdGNoIH0gZnJvbSAnQG5neHMtbGFicy9kaXNwYXRjaC1kZWNvcmF0b3InO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBcHBUeXBlTWFwIH0gZnJvbSAnLi4vZW51bXMvYXBwLXR5cGUtbWFwLmVudW0nO1xuaW1wb3J0IHsgUGFya0Nvbm5lY3Rpb25TdGF0dXMgfSBmcm9tICcuLi9lbnVtcy9wcmlvcml0eS1saW5rLXN0YXR1cy5lbnVtJztcbmltcG9ydCB7IFJlZnJlc2hJbmZvIH0gZnJvbSAnLi4vbW9kdWxlcy9hdXRoL21vZGVsL3JlZnJlc2gtaW5mby5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTG9nb3V0QWN0aW9uIH0gZnJvbSAnLi4vbW9kdWxlcy9hdXRoL3Nlc3Npb24uYWN0aW9ucyc7XG5pbXBvcnQgeyBDb25uZWN0aW9uU3RhdHVzRGljdGlvbmFyeSB9IGZyb20gJy4uL21vZHVsZXMvZmFjaWxpdHkvZmFjaWxpdHktbW9kYWwnO1xuaW1wb3J0IHsgU2VydmljZXNSdW5uaW5nU3RhdHVzQ2hhbmdlZEFjdGlvbiB9IGZyb20gJy4uL21vZHVsZXMvZmFjaWxpdHkvZmFjaWxpdHkuYWN0aW9ucyc7XG5pbXBvcnQgeyBGYWNpbGl0eVN0YXRlIH0gZnJvbSAnLi4vbW9kdWxlcy9mYWNpbGl0eS9mYWNpbGl0eS5zdGF0ZSc7XG5pbXBvcnQgeyBTaWRlbmF2U3RhdGUgfSBmcm9tICcuLi9tb2R1bGVzL3NpZGVuYXYvc2lkZW5hdi5zdGF0ZSc7XG5pbXBvcnQgeyBTbWFydHBhcmtTdGF0ZSB9IGZyb20gJy4uL21vZHVsZXMvc21hcnRwYXJrcy9zbWFydHBhcmsuc3RhdGUnO1xuaW1wb3J0IHsgQXBwTW9kdWxlLCBTZXJ2aWNlc1J1bm5pbmdTdGF0dXNEdG8sIFNtYXJ0cGFya0R0bywgU3ViTW9kdWxlIH0gZnJvbSAnLi4vc2VydmljZS1wcm94eS9jbG91ZC1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25UeXBlLCBTbWFydHBhcmtCYXNpY0R0byB9IGZyb20gJy4uL3NlcnZpY2UtcHJveHkvZWRnZS1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2FwcC1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zZXNzaW9uLXN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBnZXRVc2VyVGltZVpvbmUgfSBmcm9tICcuLi91dGlscy9kYXRlLnV0aWwnO1xuaW1wb3J0IHsgUmVmcmVzaFRva2VuU2VydmljZSB9IGZyb20gJy4vcmVmcmVzaC10b2tlbi5zZXJ2aWNlJztcblxuY29uc3QgQVVUSEVOVElDQVRFX0FQSVMgPSBbXG4gICdhcGkvc2VydmljZXMvdXNlcnMvdmVyaWZ5LTJmYS1hdXRoJyxcbiAgJ2FwaS9zZXJ2aWNlcy91c2Vycy9hdXRoZW50aWNhdGUnLFxuICAnYXBpL3NlcnZpY2VzL3VzZXJzL211bHRpLXRlbmFudHMtYXV0aGVudGljYXRlJyxcbl07XG5jb25zdCBFREdFX1BSRUZJWF9BUEkgPSAnL2FwaS9zZXJ2aWNlcy9zcCc7XG5jb25zdCBSRUZSRVNIX1RPS0VOX0FQSSA9ICdhcGkvc2VydmljZXMvdXNlcnMvcmVmcmVzaHRva2VuJztcbmNvbnN0IEFOT05ZTU9VU19BUElTID0gW1xuICBSRUZSRVNIX1RPS0VOX0FQSSxcbiAgJ2FwaS9zZXJ2aWNlcy91c2Vycy9hdXRoZW50aWNhdGUnLFxuICAnYXBpL3NlcnZpY2VzL3VzZXJzL211bHRpLXRlbmFudHMtYXV0aGVudGljYXRlJyxcbiAgJ2FwaS9zZXJ2aWNlcy9hc3NldC9sb2dvJyxcbiAgJ2FwaS9zZXJ2aWNlcy90ZW5hbnQvZGF0YScsXG4gICdhcGkvc2VydmljZXMvdXNlcnMvdmVyaWZ5LTJmYS1hdXRoJyxcbiAgJ2FwaS9zZXJ2aWNlcy91c2Vycy9mb3Jnb3QtcGFzc3dvcmQnLFxuICAnYXBpL3NlcnZpY2VzL3VzZXJzL2ZvcmdvdC1wYXNzd29yZC10ZW5hbnRsZXNzJyxcbiAgJ2FwaS9zZXJ2aWNlcy91c2Vycy9hY3RpdmF0ZScsXG4gICdhcGkvc2VydmljZXMvdXNlcnMvdmFsaWRhdGUtYWN0aXZhdGlvbicsXG4gICdhcGkvc2VydmljZXMvdGVuYW50L2RldGFpbHMnLFxuICAnYXBpL3NlcnZpY2VzL3VzZXJzL29pZGMtYXV0aCcsXG4gICdhcGkvc2VydmljZXMvY29uZmlndXJhdGlvbi9zcGFyay1tb2JpbGUtdmVyc2lvbicsXG4gICdhcGkvc2VydmljZXMvdjEvbW9iaWxlL3VzZXJzL2F1dGhlbnRpY2F0ZScsXG4gICdhcGkvc2VydmljZXMvdjEvbW9iaWxlL2Fzc2V0L2xvZ28nLFxuICAnYXBpL3NlcnZpY2VzL3YxL21vYmlsZS90ZW5hbnQvZGF0YScsXG4gICdhcGkvc2VydmljZXMvdjEvbW9iaWxlL2NvbmZpZ3VyYXRpb24vc3BhcmstbW9iaWxlLXZlcnNpb24nXG5dO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXV0aFRva2VuU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXNzaW9uU3RvcmFnZVNlcnZpY2U6IFNlc3Npb25TdG9yYWdlU2VydmljZSwgcHJpdmF0ZSBzdG9yZTogU3RvcmUsXG4gICAgcHJpdmF0ZSBhcHBDb25maWc6IEFwcENvbmZpZ1NlcnZpY2UsIHByaXZhdGUgcmVmcmVzaFRva2VuU2VydmljZTogUmVmcmVzaFRva2VuU2VydmljZSkge1xuICB9XG5cbiAgcHVibGljIGlzUmVmcmVzaFRva2VuRXhwaXJlZCA9IChyZWZyZXNoSW5mbzogUmVmcmVzaEluZm8pID0+XG4gICAgIXJlZnJlc2hJbmZvIHx8IG5ldyBEYXRlKCkgPiBuZXcgRGF0ZShtb21lbnQocmVmcmVzaEluZm8uZXhwaXJhdGlvbikuYWRkKC0gcmVmcmVzaEluZm8ucmVmcmVzaEludGVydmFsICogMC4xLCAnbWlsbGlzZWNvbmRzJykuZm9ybWF0KCkpO1xuXG4gIHB1YmxpYyBoYW5kbGVSZXF1ZXN0KHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpIHtcbiAgICByZXEgPSB0aGlzLnNldFJlcXVlc3RIZWFkZXJzKHJlcSk7XG4gICAgbGV0IHJlcXVlc3Q6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+ID0gbmV4dC5oYW5kbGUocmVxKTtcbiAgICBjb25zdCByZWZyZXNoSW5mbzogUmVmcmVzaEluZm8gPSB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRBdXRoO1xuICAgIGlmICh0aGlzLnNob3VsZEhhbmRsZVJlZnJlc2hUb2tlbihyZXEpICYmIHRoaXMuaXNSZWZyZXNoVG9rZW5FeHBpcmVkKHJlZnJlc2hJbmZvKSkge1xuICAgICAgcmVxdWVzdCA9IHRoaXMucmVmcmVzaFRva2VuU2VydmljZS5oYW5kbGVSZWZyZXNoVG9rZW4ocmVxLCBuZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVxdWVzdDtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVFdmVudFN0YXR1c0Vycm9yKGU6IEh0dHBFcnJvclJlc3BvbnNlLCByZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKSB7XG4gICAgbGV0IHJlc3BvbnNlOiBPYnNlcnZhYmxlPGFueT47XG4gICAgc3dpdGNoIChlLnN0YXR1cykge1xuICAgICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5VbmF1dGhvcml6ZWQ6XG4gICAgICAgIGlmICh0aGlzLnNob3VsZEhhbmRsZVJlZnJlc2hUb2tlbihyZXEpKSB7XG4gICAgICAgICAgcmVzcG9uc2UgPSB0aGlzLnJlZnJlc2hUb2tlblNlcnZpY2UuaGFuZGxlUmVmcmVzaFRva2VuKHJlcSwgbmV4dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzcG9uc2UgPSB0aGlzLmhhbmRsZUVycm9yUmVzcG9uc2UoZSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXNwb25zZSA9IHRoaXMuaGFuZGxlRXJyb3JSZXNwb25zZShlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZVN1Y2Nlc3NSZXNwb25zZShyZXE6IEh0dHBSZXF1ZXN0PGFueT4sIGV2ZW50OiBIdHRwUmVzcG9uc2U8YW55Pikge1xuICAgIGlmIChldmVudD8uc3RhdHVzID09PSBIdHRwU3RhdHVzQ29kZS5PayB8fCBldmVudD8uc3RhdHVzID09PSBIdHRwU3RhdHVzQ29kZS5BY2NlcHRlZCkge1xuICAgICAgdGhpcy5jaGVja0FuZENsZWFyUGFya1N0YXR1c0dsb2JhbEVycm9yTm90aWZpY2F0aW9uKHJlcS51cmwpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc1JlZnJlc2hUb2tlblJlcXVlc3QgPSAocmVxOiBIdHRwUmVxdWVzdDxhbnk+KSA9PiByZXEudXJsLmluY2x1ZGVzKFJFRlJFU0hfVE9LRU5fQVBJKTtcblxuICBwcml2YXRlIHNldFJlcXVlc3RIZWFkZXJzKHJlcTogSHR0cFJlcXVlc3Q8YW55Pikge1xuICAgIGNvbnN0IGFwcGxpY2F0aW9uVHlwZTogQXBwbGljYXRpb25UeXBlID0gQXBwVHlwZU1hcC5nZXQodGhpcy5hcHBDb25maWcuZ2V0Q29uZmlnKCkuYXBwVHlwZSk7XG4gICAgY29uc3QgYXBwTW9kdWxlOiBBcHBNb2R1bGUgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNpZGVuYXZTdGF0ZS5hcHBNb2R1bGUpO1xuICAgIGNvbnN0IHN1Yk1vZHVsZTogU3ViTW9kdWxlID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChTaWRlbmF2U3RhdGUuc3ViTW9kdWxlKTtcbiAgICBjb25zdCBhcHBNb2R1bGVTdHIgPSBhcHBNb2R1bGU/LnRvU3RyaW5nKCkgfHwgJyc7XG4gICAgY29uc3Qgc3ViTW9kdWxlU3RyID0gc3ViTW9kdWxlPy50b1N0cmluZygpIHx8ICcnO1xuXG4gICAgY29uc3Qgc21hcnRQYXJrRHRvID0gdGhpcy5nZXRTbWFydFBhcmtEdG8ocmVxLnVybCkgfHwge307XG4gICAgY29uc3Qgc3BhcmtWZXJzaW9uID0gc21hcnRQYXJrRHRvW1wic3BhcmtWZXJzaW9uXCJdID8/ICcnO1xuICAgIGNvbnN0IHNtYXJ0UGFya1ZlcnNpb24gPSAoc21hcnRQYXJrRHRvW1wic21hcnRQYXJrVmVyc2lvblwiXSA/PyAnJykucmVwbGFjZShcIiBCdWlsZChcIiwgXCJfXCIpLnJlcGxhY2UoXCIpXCIsIFwiXCIpLnRyaW0oKTtcblxuICAgIGlmICh0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5hY2Nlc3NUb2tlbikge1xuICAgICAgcmVxID0gcmVxLmNsb25lKHtcbiAgICAgICAgaGVhZGVyczogcmVxLmhlYWRlcnNcbiAgICAgICAgICAuc2V0KCdBdXRob3JpemF0aW9uJywgYEJlYXJlciAke3RoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmFjY2Vzc1Rva2VufWApXG4gICAgICAgICAgLnNldCgnQXBwbGljYXRpb24tVHlwZScsIGFwcGxpY2F0aW9uVHlwZS50b1N0cmluZygpKVxuICAgICAgICAgIC5zZXQoJ25nc3ctYnlwYXNzJywgJ3RydWUnKVxuICAgICAgICAgIC5zZXQoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbicsICcqJylcbiAgICAgICAgICAuc2V0KCdhcHBNb2R1bGUnLCBhcHBNb2R1bGVTdHIpIC8vIFRPRE86IFJlbW92ZSB3aGVuIDguMSBpcyBkZXByZWNhdGVkID8/XG4gICAgICAgICAgLnNldCgnQXBwLU1vZHVsZScsIGFwcE1vZHVsZVN0cilcbiAgICAgICAgICAuc2V0KCdTdWItTW9kdWxlJywgc3ViTW9kdWxlU3RyKVxuICAgICAgICAgIC5zZXQoJ3RpbWVab25lJywgZ2V0VXNlclRpbWVab25lKCkpXG4gICAgICAgICAgLnNldCgnQ2xpZW50VmVyc2lvbicsIHRoaXMuYXBwQ29uZmlnLmdldENvbmZpZygpLnBhY2thZ2VJbmZvLnZlcnNpb24pXG4gICAgICAgICAgLnNldCgnU3BhcmtWZXJzaW9uJywgc3BhcmtWZXJzaW9uKVxuICAgICAgICAgIC5zZXQoJ1NtYXJ0UGFya1ZlcnNpb24nLCBzbWFydFBhcmtWZXJzaW9uKVxuICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgcmVxID0gcmVxLmNsb25lKHtcbiAgICAgICAgaGVhZGVyczogcmVxLmhlYWRlcnNcbiAgICAgICAgICAuc2V0KCd0aW1lWm9uZScsIGdldFVzZXJUaW1lWm9uZSgpKVxuICAgICAgICAgIC5zZXQoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbicsICcqJylcbiAgICAgICAgICAuc2V0KCdDbGllbnRWZXJzaW9uJywgdGhpcy5hcHBDb25maWcuZ2V0Q29uZmlnKCkucGFja2FnZUluZm8udmVyc2lvbilcbiAgICAgICAgICAuc2V0KCdTcGFya1ZlcnNpb24nLCBzcGFya1ZlcnNpb24pXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVxO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRIYW5kbGVSZWZyZXNoVG9rZW4ocmVxOiBIdHRwUmVxdWVzdDxhbnk+KSB7XG4gICAgcmV0dXJuICFBTk9OWU1PVVNfQVBJUy5zb21lKGFwaSA9PiByZXEudXJsLmluY2x1ZGVzKGFwaSkpICYmICF0aGlzLmlzUmVmcmVzaFRva2VuUmVxdWVzdChyZXEpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTbWFydFBhcmtEdG8ocmVxdWVzdFVybDogc3RyaW5nKTogU21hcnRwYXJrRHRvIHwgU21hcnRwYXJrQmFzaWNEdG8ge1xuICAgIGxldCBndWlkID0gbnVsbDtcblxuICAgIGNvbnN0IGd1aWRQYXR0ZXJuID0gL1thLWZBLUYwLTldezh9LVthLWZBLUYwLTldezR9LVthLWZBLUYwLTldezR9LVthLWZBLUYwLTldezR9LVthLWZBLUYwLTldezEyfS87XG4gICAgY29uc3QgbWF0Y2hlcyA9IHJlcXVlc3RVcmwubWF0Y2goZ3VpZFBhdHRlcm4pO1xuXG4gICAgaWYgKG1hdGNoZXMgJiYgbWF0Y2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICBndWlkID0gbWF0Y2hlc1swXTtcbiAgICB9IGVsc2UgaWYgKHJlcXVlc3RVcmwuaW5jbHVkZXMoJy9zZW5kLW1haWwtZnJvbS1lbnRpdHknKSkge1xuICAgICAgZ3VpZCA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5ndWlkKTtcbiAgICB9XG5cbiAgICBjb25zdCBzbWFydFBhcmtEdG8gPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNtYXJ0cGFya1N0YXRlLnNtYXJ0cGFya3MpPy5maW5kKHNtYXJ0UGFyayA9PiBzbWFydFBhcmsuZ3VpZCA9PT0gZ3VpZCk7XG4gICAgcmV0dXJuIHNtYXJ0UGFya0R0bztcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tBbmRDbGVhclBhcmtTdGF0dXNHbG9iYWxFcnJvck5vdGlmaWNhdGlvbih1cmw6IHN0cmluZykge1xuICAgIGlmICh1cmw/LnN0YXJ0c1dpdGgoRURHRV9QUkVGSVhfQVBJKSkge1xuICAgICAgY29uc3QgYXBwTW9kdWxlID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChTaWRlbmF2U3RhdGUuYXBwTW9kdWxlKTtcbiAgICAgIGlmIChhcHBNb2R1bGUgPT0gQXBwTW9kdWxlLkNjIHx8IGFwcE1vZHVsZSA9PSBBcHBNb2R1bGUuTWFuYWdlbWVudCkge1xuICAgICAgICBjb25zdCBjb25uZWN0aW9uU3RhdHVzRGljdGlvbmFyeTogQ29ubmVjdGlvblN0YXR1c0RpY3Rpb25hcnkgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUucGFya0Nvbm5lY3Rpb25TdGF0dXNNYXApO1xuICAgICAgICBjb25zdCBndWlkOiBzdHJpbmcgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuZ3VpZCk7XG4gICAgICAgIGNvbnN0IHBhcmtJZDogbnVtYmVyID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLnBhcmtJZCk7XG5cbiAgICAgICAgaWYgKGd1aWQgJiYgcGFya0lkICYmIGNvbm5lY3Rpb25TdGF0dXNEaWN0aW9uYXJ5W2d1aWRdKSB7XG4gICAgICAgICAgdmFyIHBhcmtDb25uZWN0aW9uU3RhdHVzID0gY29ubmVjdGlvblN0YXR1c0RpY3Rpb25hcnlbZ3VpZF1bcGFya0lkXTtcbiAgICAgICAgICBpZiAocGFya0Nvbm5lY3Rpb25TdGF0dXMuc3RhdHVzID09IFBhcmtDb25uZWN0aW9uU3RhdHVzLlNwYXJrQ29yZVNlcnZlckRpc2Nvbm5lY3RlZCB8fFxuICAgICAgICAgICAgcGFya0Nvbm5lY3Rpb25TdGF0dXMuc3RhdHVzID09IFBhcmtDb25uZWN0aW9uU3RhdHVzLlNwYXJrQ29yZUNsb3VkU2VydmVyRGlzY29ubmVjdGVkKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNlcnZpY2VzUnVubmluZ1N0YXR1cyhndWlkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVNlcnZpY2VzUnVubmluZ1N0YXR1cyhzbWFydFBhcmtHdWlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBzZXJ2aWNlc1J1bm5pbmdTdGF0dXNEaWN0aW9uYXJ5ID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLnNlcnZpY2VzUnVubmluZ1N0YXR1c0RpY3Rpb25hcnkpO1xuICAgIGNvbnN0IGN1cnJlbnRGYWNpbGl0eVNlcnZpY2VzUnVubmluZ1N0YXR1czogU2VydmljZXNSdW5uaW5nU3RhdHVzRHRvID0gc2VydmljZXNSdW5uaW5nU3RhdHVzRGljdGlvbmFyeVtzbWFydFBhcmtHdWlkXTtcbiAgICBjdXJyZW50RmFjaWxpdHlTZXJ2aWNlc1J1bm5pbmdTdGF0dXMuaXNTcGFya0NvcmVDb25uZWN0ZWQgPSB0cnVlO1xuICAgIGN1cnJlbnRGYWNpbGl0eVNlcnZpY2VzUnVubmluZ1N0YXR1cy5pc1NwYXJrQ2xvdWRDb25uZWN0ZWQgPSB0cnVlO1xuICAgIGN1cnJlbnRGYWNpbGl0eVNlcnZpY2VzUnVubmluZ1N0YXR1cy5zcGFya0Nsb3VkRGlzY29ubmVjdGVkVGltZXN0YW1wID0gbnVsbDtcbiAgICBjdXJyZW50RmFjaWxpdHlTZXJ2aWNlc1J1bm5pbmdTdGF0dXMuc3BhcmtDb3JlRGlzY29ubmVjdGVkVGltZXN0YW1wID0gbnVsbDtcbiAgICB0aGlzLnNlcnZpY2VzUnVubmluZ1N0YXR1c0NoYW5nZWQoY3VycmVudEZhY2lsaXR5U2VydmljZXNSdW5uaW5nU3RhdHVzLCBzbWFydFBhcmtHdWlkKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRXJyb3JSZXNwb25zZShlOiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgIGlmIChlLnN0YXR1cyA9PT0gSHR0cFN0YXR1c0NvZGUuVW5hdXRob3JpemVkICYmICFBVVRIRU5USUNBVEVfQVBJUy5zb21lKGFwaSA9PiBlLnVybC5pbmNsdWRlcyhhcGkpKSkge1xuICAgICAgdGhpcy5sb2dvdXQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlKTtcbiAgfVxuXG4gIEBEaXNwYXRjaCgpIGxvZ291dCA9ICgpID0+IG5ldyBMb2dvdXRBY3Rpb24oZmFsc2UpOyAvLyB3aGVuIDQwMSBkbyBub3QgaW52b2tlIGluIHRoZSBsb2dvdXQgYWN0aW9uIHRoZSBsb2dvdXQgQXVkaXRcblxuICBARGlzcGF0Y2goKSBzZXJ2aWNlc1J1bm5pbmdTdGF0dXNDaGFuZ2VkID0gKHNlcnZpY2VzUnVubmluZ1N0YXR1czogU2VydmljZXNSdW5uaW5nU3RhdHVzRHRvLCBndWlkOiBzdHJpbmcpID0+XG4gICAgbmV3IFNlcnZpY2VzUnVubmluZ1N0YXR1c0NoYW5nZWRBY3Rpb24oc2VydmljZXNSdW5uaW5nU3RhdHVzLCBndWlkKTtcbn1cbiJdfQ==
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC10b2tlbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9zZXJ2aWNlcy9hdXRoLXRva2VuLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXpELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUUxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFL0QsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDMUYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBcUQsTUFBTSx3Q0FBd0MsQ0FBQztBQUl0SCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7OztBQUdyRCxNQUFNLGlCQUFpQixHQUFHO0lBQ3hCLG9DQUFvQztJQUNwQyxpQ0FBaUM7SUFDakMsK0NBQStDO0NBQ2hELENBQUM7QUFDRixNQUFNLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQztBQUMzQyxNQUFNLGlCQUFpQixHQUFJLGlDQUFpQyxDQUFDO0FBQzdELE1BQU0sd0JBQXdCLEdBQUks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LCBIdHRwRXZlbnQsIEh0dHBIYW5kbGVyLCBIdHRwUmVxdWVzdCwgSHR0cFJlc3BvbnNlLCBIdHRwU3RhdHVzQ29kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpc3BhdGNoIH0gZnJvbSAnQG5neHMtbGFicy9kaXNwYXRjaC1kZWNvcmF0b3InO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBcHBUeXBlTWFwIH0gZnJvbSAnLi4vZW51bXMvYXBwLXR5cGUtbWFwLmVudW0nO1xuaW1wb3J0IHsgUGFya0Nvbm5lY3Rpb25TdGF0dXMgfSBmcm9tICcuLi9lbnVtcy9wcmlvcml0eS1saW5rLXN0YXR1cy5lbnVtJztcbmltcG9ydCB7IFJlZnJlc2hJbmZvIH0gZnJvbSAnLi4vbW9kdWxlcy9hdXRoL21vZGVsL3JlZnJlc2gtaW5mby5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTG9nb3V0QWN0aW9uIH0gZnJvbSAnLi4vbW9kdWxlcy9hdXRoL3Nlc3Npb24uYWN0aW9ucyc7XG5pbXBvcnQgeyBDb25uZWN0aW9uU3RhdHVzRGljdGlvbmFyeSB9IGZyb20gJy4uL21vZHVsZXMvZmFjaWxpdHkvZmFjaWxpdHktbW9kYWwnO1xuaW1wb3J0IHsgU2VydmljZXNSdW5uaW5nU3RhdHVzQ2hhbmdlZEFjdGlvbiB9IGZyb20gJy4uL21vZHVsZXMvZmFjaWxpdHkvZmFjaWxpdHkuYWN0aW9ucyc7XG5pbXBvcnQgeyBGYWNpbGl0eVN0YXRlIH0gZnJvbSAnLi4vbW9kdWxlcy9mYWNpbGl0eS9mYWNpbGl0eS5zdGF0ZSc7XG5pbXBvcnQgeyBTaWRlbmF2U3RhdGUgfSBmcm9tICcuLi9tb2R1bGVzL3NpZGVuYXYvc2lkZW5hdi5zdGF0ZSc7XG5pbXBvcnQgeyBTbWFydHBhcmtTdGF0ZSB9IGZyb20gJy4uL21vZHVsZXMvc21hcnRwYXJrcy9zbWFydHBhcmsuc3RhdGUnO1xuaW1wb3J0IHsgQXBwTW9kdWxlLCBTZXJ2aWNlc1J1bm5pbmdTdGF0dXNEdG8sIFNtYXJ0cGFya0R0bywgU3ViTW9kdWxlIH0gZnJvbSAnLi4vc2VydmljZS1wcm94eS9jbG91ZC1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25UeXBlLCBTbWFydHBhcmtCYXNpY0R0byB9IGZyb20gJy4uL3NlcnZpY2UtcHJveHkvZWRnZS1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2FwcC1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zZXNzaW9uLXN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBnZXRVc2VyVGltZVpvbmUgfSBmcm9tICcuLi91dGlscy9kYXRlLnV0aWwnO1xuaW1wb3J0IHsgUmVmcmVzaFRva2VuU2VydmljZSB9IGZyb20gJy4vcmVmcmVzaC10b2tlbi5zZXJ2aWNlJztcblxuY29uc3QgQVVUSEVOVElDQVRFX0FQSVMgPSBbXG4gICdhcGkvc2VydmljZXMvdXNlcnMvdmVyaWZ5LTJmYS1hdXRoJyxcbiAgJ2FwaS9zZXJ2aWNlcy91c2Vycy9hdXRoZW50aWNhdGUnLFxuICAnYXBpL3NlcnZpY2VzL3VzZXJzL211bHRpLXRlbmFudHMtYXV0aGVudGljYXRlJyxcbl07XG5jb25zdCBFREdFX1BSRUZJWF9BUEkgPSAnL2FwaS9zZXJ2aWNlcy9zcCc7XG5jb25zdCBSRUZSRVNIX1RPS0VOX0FQSSA9ICAnYXBpL3NlcnZpY2VzL3VzZXJzL3JlZnJlc2h0b2tlbic7XG5jb25zdCBSRUZSRVNIX01PQklMRV9UT0tFTl9BUEkgPSAgJ2FwaS9zZXJ2aWNlcy92MS9tb2JpbGUvdXNlcnMvcmVmcmVzaC10b2tlbic7XG5jb25zdCBBTk9OWU1PVVNfQVBJUyA9IFtcbiAgUkVGUkVTSF9UT0tFTl9BUEksXG4gICdhcGkvc2VydmljZXMvdXNlcnMvYXV0aGVudGljYXRlJyxcbiAgJ2FwaS9zZXJ2aWNlcy91c2Vycy9tdWx0aS10ZW5hbnRzLWF1dGhlbnRpY2F0ZScsXG4gICdhcGkvc2VydmljZXMvYXNzZXQvbG9nbycsXG4gICdhcGkvc2VydmljZXMvdGVuYW50L2RhdGEnLFxuICAnYXBpL3NlcnZpY2VzL3VzZXJzL3ZlcmlmeS0yZmEtYXV0aCcsXG4gICdhcGkvc2VydmljZXMvdXNlcnMvZm9yZ290LXBhc3N3b3JkJyxcbiAgJ2FwaS9zZXJ2aWNlcy91c2Vycy9mb3Jnb3QtcGFzc3dvcmQtdGVuYW50bGVzcycsXG4gICdhcGkvc2VydmljZXMvdXNlcnMvYWN0aXZhdGUnLFxuICAnYXBpL3NlcnZpY2VzL3VzZXJzL3ZhbGlkYXRlLWFjdGl2YXRpb24nLFxuICAnYXBpL3NlcnZpY2VzL3RlbmFudC9kZXRhaWxzJyxcbiAgJ2FwaS9zZXJ2aWNlcy91c2Vycy9vaWRjLWF1dGgnLFxuICAnYXBpL3NlcnZpY2VzL2NvbmZpZ3VyYXRpb24vc3BhcmstbW9iaWxlLXZlcnNpb24nLFxuICAnYXBpL3NlcnZpY2VzL3YxL21vYmlsZS91c2Vycy9hdXRoZW50aWNhdGUnLFxuICAnYXBpL3NlcnZpY2VzL3YxL21vYmlsZS9hc3NldC9sb2dvJyxcbiAgJ2FwaS9zZXJ2aWNlcy92MS9tb2JpbGUvdGVuYW50L2RhdGEnLFxuICAnYXBpL3NlcnZpY2VzL3YxL21vYmlsZS9jb25maWd1cmF0aW9uL3NwYXJrLW1vYmlsZS12ZXJzaW9uJ1xuXTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEF1dGhUb2tlblNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlOiBTZXNzaW9uU3RvcmFnZVNlcnZpY2UsIHByaXZhdGUgc3RvcmU6IFN0b3JlLFxuICAgIHByaXZhdGUgYXBwQ29uZmlnOiBBcHBDb25maWdTZXJ2aWNlLCBwcml2YXRlIHJlZnJlc2hUb2tlblNlcnZpY2U6IFJlZnJlc2hUb2tlblNlcnZpY2UpIHtcbiAgfVxuXG4gIHB1YmxpYyBpc1JlZnJlc2hUb2tlbkV4cGlyZWQgPSAocmVmcmVzaEluZm86IFJlZnJlc2hJbmZvKSA9PlxuICAgICFyZWZyZXNoSW5mbyB8fCBuZXcgRGF0ZSgpID4gbmV3IERhdGUobW9tZW50KHJlZnJlc2hJbmZvLmV4cGlyYXRpb24pLmFkZCgtIHJlZnJlc2hJbmZvLnJlZnJlc2hJbnRlcnZhbCAqIDAuMSwgJ21pbGxpc2Vjb25kcycpLmZvcm1hdCgpKTtcblxuICBwdWJsaWMgaGFuZGxlUmVxdWVzdChyZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKSB7XG4gICAgcmVxID0gdGhpcy5zZXRSZXF1ZXN0SGVhZGVycyhyZXEpO1xuICAgIGxldCByZXF1ZXN0OiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiA9IG5leHQuaGFuZGxlKHJlcSk7XG4gICAgY29uc3QgcmVmcmVzaEluZm86IFJlZnJlc2hJbmZvID0gdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0QXV0aDtcbiAgICBpZiAodGhpcy5zaG91bGRIYW5kbGVSZWZyZXNoVG9rZW4ocmVxKSAmJiB0aGlzLmlzUmVmcmVzaFRva2VuRXhwaXJlZChyZWZyZXNoSW5mbykpIHtcbiAgICAgIHJlcXVlc3QgPSB0aGlzLnJlZnJlc2hUb2tlblNlcnZpY2UuaGFuZGxlUmVmcmVzaFRva2VuKHJlcSwgbmV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcXVlc3Q7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTW9iaWxlUmVxdWVzdChyZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKSB7XG4gICAgcmVxID0gdGhpcy5zZXRSZXF1ZXN0SGVhZGVycyhyZXEpO1xuICAgIGxldCByZXF1ZXN0OiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiA9IG5leHQuaGFuZGxlKHJlcSk7XG4gICAgY29uc3QgcmVmcmVzaEluZm86IFJlZnJlc2hJbmZvID0gdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0QXV0aDtcbiAgICBpZiAodGhpcy5zaG91bGRIYW5kbGVSZWZyZXNoVG9rZW4ocmVxKSAmJiB0aGlzLmlzUmVmcmVzaFRva2VuRXhwaXJlZChyZWZyZXNoSW5mbykpIHtcbiAgICAgIHJlcXVlc3QgPSB0aGlzLnJlZnJlc2hUb2tlblNlcnZpY2UuaGFuZGxlTW9iaWxlUmVmcmVzaFRva2VuKHJlcSwgbmV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcXVlc3Q7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlRXZlbnRTdGF0dXNFcnJvcihlOiBIdHRwRXJyb3JSZXNwb25zZSwgcmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcikge1xuICAgIGxldCByZXNwb25zZTogT2JzZXJ2YWJsZTxhbnk+O1xuICAgIHN3aXRjaCAoZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuVW5hdXRob3JpemVkOlxuICAgICAgICBpZiAodGhpcy5zaG91bGRIYW5kbGVSZWZyZXNoVG9rZW4ocmVxKSkge1xuICAgICAgICAgIHJlc3BvbnNlID0gdGhpcy5yZWZyZXNoVG9rZW5TZXJ2aWNlLmhhbmRsZVJlZnJlc2hUb2tlbihyZXEsIG5leHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3BvbnNlID0gdGhpcy5oYW5kbGVFcnJvclJlc3BvbnNlKGUpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmVzcG9uc2UgPSB0aGlzLmhhbmRsZUVycm9yUmVzcG9uc2UoZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiByZXNwb25zZTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVTdWNjZXNzUmVzcG9uc2UocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBldmVudDogSHR0cFJlc3BvbnNlPGFueT4pIHtcbiAgICBpZiAoZXZlbnQ/LnN0YXR1cyA9PT0gSHR0cFN0YXR1c0NvZGUuT2sgfHwgZXZlbnQ/LnN0YXR1cyA9PT0gSHR0cFN0YXR1c0NvZGUuQWNjZXB0ZWQpIHtcbiAgICAgIHRoaXMuY2hlY2tBbmRDbGVhclBhcmtTdGF0dXNHbG9iYWxFcnJvck5vdGlmaWNhdGlvbihyZXEudXJsKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNSZWZyZXNoVG9rZW5SZXF1ZXN0ID0gKHJlcTogSHR0cFJlcXVlc3Q8YW55PikgPT4gcmVxLnVybC5pbmNsdWRlcyhSRUZSRVNIX1RPS0VOX0FQSSkgfHwgcmVxLnVybC5pbmNsdWRlcyhSRUZSRVNIX01PQklMRV9UT0tFTl9BUEkpO1xuXG4gIHByaXZhdGUgc2V0UmVxdWVzdEhlYWRlcnMocmVxOiBIdHRwUmVxdWVzdDxhbnk+KSB7XG4gICAgY29uc3QgYXBwbGljYXRpb25UeXBlOiBBcHBsaWNhdGlvblR5cGUgPSBBcHBUeXBlTWFwLmdldCh0aGlzLmFwcENvbmZpZy5nZXRDb25maWcoKS5hcHBUeXBlKTtcbiAgICBjb25zdCBhcHBNb2R1bGU6IEFwcE1vZHVsZSA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoU2lkZW5hdlN0YXRlLmFwcE1vZHVsZSk7XG4gICAgY29uc3Qgc3ViTW9kdWxlOiBTdWJNb2R1bGUgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNpZGVuYXZTdGF0ZS5zdWJNb2R1bGUpO1xuICAgIGNvbnN0IGFwcE1vZHVsZVN0ciA9IGFwcE1vZHVsZT8udG9TdHJpbmcoKSB8fCAnJztcbiAgICBjb25zdCBzdWJNb2R1bGVTdHIgPSBzdWJNb2R1bGU/LnRvU3RyaW5nKCkgfHwgJyc7XG5cbiAgICBjb25zdCBzbWFydFBhcmtEdG8gPSB0aGlzLmdldFNtYXJ0UGFya0R0byhyZXEudXJsKSB8fCB7fTtcbiAgICBjb25zdCBzcGFya1ZlcnNpb24gPSBzbWFydFBhcmtEdG9bXCJzcGFya1ZlcnNpb25cIl0gPz8gJyc7XG4gICAgY29uc3Qgc21hcnRQYXJrVmVyc2lvbiA9IChzbWFydFBhcmtEdG9bXCJzbWFydFBhcmtWZXJzaW9uXCJdID8/ICcnKS5yZXBsYWNlKFwiIEJ1aWxkKFwiLCBcIl9cIikucmVwbGFjZShcIilcIiwgXCJcIikudHJpbSgpO1xuXG4gICAgaWYgKHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmFjY2Vzc1Rva2VuKSB7XG4gICAgICByZXEgPSByZXEuY2xvbmUoe1xuICAgICAgICBoZWFkZXJzOiByZXEuaGVhZGVyc1xuICAgICAgICAgIC5zZXQoJ0F1dGhvcml6YXRpb24nLCBgQmVhcmVyICR7dGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuYWNjZXNzVG9rZW59YClcbiAgICAgICAgICAuc2V0KCdBcHBsaWNhdGlvbi1UeXBlJywgYXBwbGljYXRpb25UeXBlLnRvU3RyaW5nKCkpXG4gICAgICAgICAgLnNldCgnbmdzdy1ieXBhc3MnLCAndHJ1ZScpXG4gICAgICAgICAgLnNldCgnQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJywgJyonKVxuICAgICAgICAgIC5zZXQoJ2FwcE1vZHVsZScsIGFwcE1vZHVsZVN0cikgLy8gVE9ETzogUmVtb3ZlIHdoZW4gOC4xIGlzIGRlcHJlY2F0ZWQgPz9cbiAgICAgICAgICAuc2V0KCdBcHAtTW9kdWxlJywgYXBwTW9kdWxlU3RyKVxuICAgICAgICAgIC5zZXQoJ1N1Yi1Nb2R1bGUnLCBzdWJNb2R1bGVTdHIpXG4gICAgICAgICAgLnNldCgndGltZVpvbmUnLCBnZXRVc2VyVGltZVpvbmUoKSlcbiAgICAgICAgICAuc2V0KCdDbGllbnRWZXJzaW9uJywgdGhpcy5hcHBDb25maWcuZ2V0Q29uZmlnKCkucGFja2FnZUluZm8udmVyc2lvbilcbiAgICAgICAgICAuc2V0KCdTcGFya1ZlcnNpb24nLCBzcGFya1ZlcnNpb24pXG4gICAgICAgICAgLnNldCgnU21hcnRQYXJrVmVyc2lvbicsIHNtYXJ0UGFya1ZlcnNpb24pXG4gICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICByZXEgPSByZXEuY2xvbmUoe1xuICAgICAgICBoZWFkZXJzOiByZXEuaGVhZGVyc1xuICAgICAgICAgIC5zZXQoJ3RpbWVab25lJywgZ2V0VXNlclRpbWVab25lKCkpXG4gICAgICAgICAgLnNldCgnQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJywgJyonKVxuICAgICAgICAgIC5zZXQoJ0NsaWVudFZlcnNpb24nLCB0aGlzLmFwcENvbmZpZy5nZXRDb25maWcoKS5wYWNrYWdlSW5mby52ZXJzaW9uKVxuICAgICAgICAgIC5zZXQoJ1NwYXJrVmVyc2lvbicsIHNwYXJrVmVyc2lvbilcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXE7XG4gIH1cblxuICBwcml2YXRlIHNob3VsZEhhbmRsZVJlZnJlc2hUb2tlbihyZXE6IEh0dHBSZXF1ZXN0PGFueT4pIHtcbiAgICByZXR1cm4gIUFOT05ZTU9VU19BUElTLnNvbWUoYXBpID0+IHJlcS51cmwuaW5jbHVkZXMoYXBpKSkgJiYgIXRoaXMuaXNSZWZyZXNoVG9rZW5SZXF1ZXN0KHJlcSk7XG4gIH1cblxuICBwcml2YXRlIGdldFNtYXJ0UGFya0R0byhyZXF1ZXN0VXJsOiBzdHJpbmcpOiBTbWFydHBhcmtEdG8gfCBTbWFydHBhcmtCYXNpY0R0byB7XG4gICAgbGV0IGd1aWQgPSBudWxsO1xuXG4gICAgY29uc3QgZ3VpZFBhdHRlcm4gPSAvW2EtZkEtRjAtOV17OH0tW2EtZkEtRjAtOV17NH0tW2EtZkEtRjAtOV17NH0tW2EtZkEtRjAtOV17NH0tW2EtZkEtRjAtOV17MTJ9LztcbiAgICBjb25zdCBtYXRjaGVzID0gcmVxdWVzdFVybC5tYXRjaChndWlkUGF0dGVybik7XG5cbiAgICBpZiAobWF0Y2hlcyAmJiBtYXRjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGd1aWQgPSBtYXRjaGVzWzBdO1xuICAgIH0gZWxzZSBpZiAocmVxdWVzdFVybC5pbmNsdWRlcygnL3NlbmQtbWFpbC1mcm9tLWVudGl0eScpKSB7XG4gICAgICBndWlkID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmd1aWQpO1xuICAgIH1cblxuICAgIGNvbnN0IHNtYXJ0UGFya0R0byA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoU21hcnRwYXJrU3RhdGUuc21hcnRwYXJrcyk/LmZpbmQoc21hcnRQYXJrID0+IHNtYXJ0UGFyay5ndWlkID09PSBndWlkKTtcbiAgICByZXR1cm4gc21hcnRQYXJrRHRvO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0FuZENsZWFyUGFya1N0YXR1c0dsb2JhbEVycm9yTm90aWZpY2F0aW9uKHVybDogc3RyaW5nKSB7XG4gICAgaWYgKHVybD8uc3RhcnRzV2l0aChFREdFX1BSRUZJWF9BUEkpKSB7XG4gICAgICBjb25zdCBhcHBNb2R1bGUgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNpZGVuYXZTdGF0ZS5hcHBNb2R1bGUpO1xuICAgICAgaWYgKGFwcE1vZHVsZSA9PSBBcHBNb2R1bGUuQ2MgfHwgYXBwTW9kdWxlID09IEFwcE1vZHVsZS5NYW5hZ2VtZW50KSB7XG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb25TdGF0dXNEaWN0aW9uYXJ5OiBDb25uZWN0aW9uU3RhdHVzRGljdGlvbmFyeSA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5wYXJrQ29ubmVjdGlvblN0YXR1c01hcCk7XG4gICAgICAgIGNvbnN0IGd1aWQ6IHN0cmluZyA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5ndWlkKTtcbiAgICAgICAgY29uc3QgcGFya0lkOiBudW1iZXIgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUucGFya0lkKTtcblxuICAgICAgICBpZiAoZ3VpZCAmJiBwYXJrSWQgJiYgY29ubmVjdGlvblN0YXR1c0RpY3Rpb25hcnlbZ3VpZF0pIHtcbiAgICAgICAgICB2YXIgcGFya0Nvbm5lY3Rpb25TdGF0dXMgPSBjb25uZWN0aW9uU3RhdHVzRGljdGlvbmFyeVtndWlkXVtwYXJrSWRdO1xuICAgICAgICAgIGlmIChwYXJrQ29ubmVjdGlvblN0YXR1cy5zdGF0dXMgPT0gUGFya0Nvbm5lY3Rpb25TdGF0dXMuU3BhcmtDb3JlU2VydmVyRGlzY29ubmVjdGVkIHx8XG4gICAgICAgICAgICBwYXJrQ29ubmVjdGlvblN0YXR1cy5zdGF0dXMgPT0gUGFya0Nvbm5lY3Rpb25TdGF0dXMuU3BhcmtDb3JlQ2xvdWRTZXJ2ZXJEaXNjb25uZWN0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VydmljZXNSdW5uaW5nU3RhdHVzKGd1aWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU2VydmljZXNSdW5uaW5nU3RhdHVzKHNtYXJ0UGFya0d1aWQ6IHN0cmluZykge1xuICAgIGNvbnN0IHNlcnZpY2VzUnVubmluZ1N0YXR1c0RpY3Rpb25hcnkgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuc2VydmljZXNSdW5uaW5nU3RhdHVzRGljdGlvbmFyeSk7XG4gICAgY29uc3QgY3VycmVudEZhY2lsaXR5U2VydmljZXNSdW5uaW5nU3RhdHVzOiBTZXJ2aWNlc1J1bm5pbmdTdGF0dXNEdG8gPSBzZXJ2aWNlc1J1bm5pbmdTdGF0dXNEaWN0aW9uYXJ5W3NtYXJ0UGFya0d1aWRdO1xuICAgIGN1cnJlbnRGYWNpbGl0eVNlcnZpY2VzUnVubmluZ1N0YXR1cy5pc1NwYXJrQ29yZUNvbm5lY3RlZCA9IHRydWU7XG4gICAgY3VycmVudEZhY2lsaXR5U2VydmljZXNSdW5uaW5nU3RhdHVzLmlzU3BhcmtDbG91ZENvbm5lY3RlZCA9IHRydWU7XG4gICAgY3VycmVudEZhY2lsaXR5U2VydmljZXNSdW5uaW5nU3RhdHVzLnNwYXJrQ2xvdWREaXNjb25uZWN0ZWRUaW1lc3RhbXAgPSBudWxsO1xuICAgIGN1cnJlbnRGYWNpbGl0eVNlcnZpY2VzUnVubmluZ1N0YXR1cy5zcGFya0NvcmVEaXNjb25uZWN0ZWRUaW1lc3RhbXAgPSBudWxsO1xuICAgIHRoaXMuc2VydmljZXNSdW5uaW5nU3RhdHVzQ2hhbmdlZChjdXJyZW50RmFjaWxpdHlTZXJ2aWNlc1J1bm5pbmdTdGF0dXMsIHNtYXJ0UGFya0d1aWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvclJlc3BvbnNlKGU6IEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgaWYgKGUuc3RhdHVzID09PSBIdHRwU3RhdHVzQ29kZS5VbmF1dGhvcml6ZWQgJiYgIUFVVEhFTlRJQ0FURV9BUElTLnNvbWUoYXBpID0+IGUudXJsLmluY2x1ZGVzKGFwaSkpKSB7XG4gICAgICB0aGlzLmxvZ291dCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGUpO1xuICB9XG5cbiAgQERpc3BhdGNoKCkgbG9nb3V0ID0gKCkgPT4gbmV3IExvZ291dEFjdGlvbihmYWxzZSk7IC8vIHdoZW4gNDAxIGRvIG5vdCBpbnZva2UgaW4gdGhlIGxvZ291dCBhY3Rpb24gdGhlIGxvZ291dCBBdWRpdFxuXG4gIEBEaXNwYXRjaCgpIHNlcnZpY2VzUnVubmluZ1N0YXR1c0NoYW5nZWQgPSAoc2VydmljZXNSdW5uaW5nU3RhdHVzOiBTZXJ2aWNlc1J1bm5pbmdTdGF0dXNEdG8sIGd1aWQ6IHN0cmluZykgPT5cbiAgICBuZXcgU2VydmljZXNSdW5uaW5nU3RhdHVzQ2hhbmdlZEFjdGlvbihzZXJ2aWNlc1J1bm5pbmdTdGF0dXMsIGd1aWQpO1xufVxuIl19
@@ -1,16 +1,19 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { Subject, throwError } from 'rxjs';
3
3
  import { catchError, filter, finalize, switchMap, take, tap } from 'rxjs/operators';
4
+ import { VERSION_V1 } from '../constants/version-constants';
4
5
  import { SetStateAction } from '../modules/auth/session.actions';
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "@ngxs/store";
7
8
  import * as i2 from "../service-proxy/identity-service-proxies";
8
9
  import * as i3 from "./session-storage.service";
10
+ import * as i4 from "../service-proxy";
9
11
  export class RefreshTokenService {
10
- constructor(store, usersServiceProxyIdentity, sessionStorageService) {
12
+ constructor(store, usersServiceProxyIdentity, sessionStorageService, mobileServiceProxyIdentity) {
11
13
  this.store = store;
12
14
  this.usersServiceProxyIdentity = usersServiceProxyIdentity;
13
15
  this.sessionStorageService = sessionStorageService;
16
+ this.mobileServiceProxyIdentity = mobileServiceProxyIdentity;
14
17
  this.isRefreshing = false;
15
18
  this.refreshTokenSubject = new Subject();
16
19
  }
@@ -32,6 +35,24 @@ export class RefreshTokenService {
32
35
  return this.handleRefreshTokenQueue(request, next);
33
36
  }
34
37
  }
38
+ handleMobileRefreshToken(request, next) {
39
+ if (!this.isRefreshing) {
40
+ this.isRefreshing = true;
41
+ const refreshInfo = this.sessionStorageService.getAuth;
42
+ return this.mobileServiceProxyIdentity.mobileRefreshToken(refreshInfo?.refreshToken, VERSION_V1).pipe(switchMap(tokenResult => {
43
+ this.setAuthSession(tokenResult.data);
44
+ return next.handle(this.addToken(request, tokenResult.data.accessToken));
45
+ }), catchError((error) => throwError(() => error)), finalize(() => {
46
+ this.isRefreshing = false;
47
+ // Process the request queue after token refresh completes
48
+ this.refreshTokenSubject.next(this.sessionStorageService.accessToken);
49
+ }));
50
+ }
51
+ else {
52
+ // Queue the failed request
53
+ return this.handleRefreshTokenQueue(request, next);
54
+ }
55
+ }
35
56
  getRefreshToken() {
36
57
  const refreshInfo = this.sessionStorageService.getAuth;
37
58
  return this.usersServiceProxyIdentity.refreshToken(refreshInfo?.refreshToken).pipe(tap({
@@ -62,10 +83,10 @@ export class RefreshTokenService {
62
83
  }
63
84
  });
64
85
  }
65
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RefreshTokenService, deps: [{ token: i1.Store }, { token: i2.UsersServiceProxyIdentity }, { token: i3.SessionStorageService }], target: i0.ɵɵFactoryTarget.Injectable }); }
86
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RefreshTokenService, deps: [{ token: i1.Store }, { token: i2.UsersServiceProxyIdentity }, { token: i3.SessionStorageService }, { token: i4.Identity.MobileServiceProxyIdentity }], target: i0.ɵɵFactoryTarget.Injectable }); }
66
87
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RefreshTokenService }); }
67
88
  }
68
89
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RefreshTokenService, decorators: [{
69
90
  type: Injectable
70
- }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.UsersServiceProxyIdentity }, { type: i3.SessionStorageService }]; } });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmcmVzaC10b2tlbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9zZXJ2aWNlcy9yZWZyZXNoLXRva2VuLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQWMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7O0FBS2pFLE1BQU0sT0FBTyxtQkFBbUI7SUFLOUIsWUFBb0IsS0FBWSxFQUFVLHlCQUFvRCxFQUFVLHFCQUE0QztRQUFoSSxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQVUsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEyQjtRQUFVLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFINUksaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsd0JBQW1CLEdBQWlCLElBQUksT0FBTyxFQUFPLENBQUM7SUFHL0QsQ0FBQztJQUVNLGtCQUFrQixDQUFDLE9BQXlCLEVBQUUsSUFBaUI7UUFDcEUsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDdEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDekIsTUFBTSxXQUFXLEdBQWdCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUM7WUFDcEUsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQ2hGLFNBQVMsQ0FBQyxX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dXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBIYW5kbGVyLCBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBmaW5hbGl6ZSwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBSZWZyZXNoSW5mbyB9IGZyb20gJy4uL21vZHVsZXMvYXV0aC9tb2RlbC9yZWZyZXNoLWluZm8uaW50ZXJmYWNlJztcbmltcG9ydCB7IFNldFN0YXRlQWN0aW9uIH0gZnJvbSAnLi4vbW9kdWxlcy9hdXRoL3Nlc3Npb24uYWN0aW9ucyc7XG5pbXBvcnQgeyBSZWZyZXNoVG9rZW5EdG8sIFVzZXJzU2VydmljZVByb3h5SWRlbnRpdHkgfSBmcm9tICcuLi9zZXJ2aWNlLXByb3h5L2lkZW50aXR5LXNlcnZpY2UtcHJveGllcyc7XG5pbXBvcnQgeyBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL3Nlc3Npb24tc3RvcmFnZS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJlZnJlc2hUb2tlblNlcnZpY2Uge1xuXG4gIHByaXZhdGUgaXNSZWZyZXNoaW5nID0gZmFsc2U7XG4gIHByaXZhdGUgcmVmcmVzaFRva2VuU3ViamVjdDogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3Q8YW55PigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlLCBwcml2YXRlIHVzZXJzU2VydmljZVByb3h5SWRlbnRpdHk6IFVzZXJzU2VydmljZVByb3h5SWRlbnRpdHksIHByaXZhdGUgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlOiBTZXNzaW9uU3RvcmFnZVNlcnZpY2UpIHtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVSZWZyZXNoVG9rZW4ocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmICghdGhpcy5pc1JlZnJlc2hpbmcpIHtcbiAgICAgIHRoaXMuaXNSZWZyZXNoaW5nID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHJlZnJlc2hJbmZvOiBSZWZyZXNoSW5mbyA9IHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldEF1dGg7XG4gICAgICByZXR1cm4gdGhpcy51c2Vyc1NlcnZpY2VQcm94eUlkZW50aXR5LnJlZnJlc2hUb2tlbihyZWZyZXNoSW5mbz8ucmVmcmVzaFRva2VuKS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAodG9rZW5SZXN1bHQgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0QXV0aFNlc3Npb24odG9rZW5SZXN1bHQuZGF0YSk7XG5cbiAgICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUodGhpcy5hZGRUb2tlbihyZXF1ZXN0LCB0b2tlblJlc3VsdC5kYXRhLmFjY2Vzc1Rva2VuKSk7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcikpLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc1JlZnJlc2hpbmcgPSBmYWxzZTtcbiAgICAgICAgICAvLyBQcm9jZXNzIHRoZSByZXF1ZXN0IHF1ZXVlIGFmdGVyIHRva2VuIHJlZnJlc2ggY29tcGxldGVzXG4gICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW5TdWJqZWN0Lm5leHQodGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuYWNjZXNzVG9rZW4pO1xuICAgICAgICB9KVxuICAgICAgKTtcblxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBRdWV1ZSB0aGUgZmFpbGVkIHJlcXVlc3RcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZVJlZnJlc2hUb2tlblF1ZXVlKHJlcXVlc3QsIG5leHQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRSZWZyZXNoVG9rZW4oKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCByZWZyZXNoSW5mbzogUmVmcmVzaEluZm8gPSB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRBdXRoO1xuICAgIHJldHVybiB0aGlzLnVzZXJzU2VydmljZVByb3h5SWRlbnRpdHkucmVmcmVzaFRva2VuKHJlZnJlc2hJbmZvPy5yZWZyZXNoVG9rZW4pLnBpcGUodGFwKHtcbiAgICAgIG5leHQ6IHRva2VuUmVzdWx0ID0+IHRoaXMuc2V0QXV0aFNlc3Npb24odG9rZW5SZXN1bHQuZGF0YSlcbiAgICB9KSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TmV3UmVmcmVzaEluZm8odG9rZW5SZXN1bHQ6IFJlZnJlc2hUb2tlbkR0byk6IFJlZnJlc2hJbmZvIHtcbiAgICBjb25zdCByZWZyZXNoSW5mbzogUmVmcmVzaEluZm8gPSB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRBdXRoO1xuICAgIGNvbnN0IG5ld1JlZnJlc2hEYXRhOiBSZWZyZXNoSW5mbyA9IHtcbiAgICAgIHJlZnJlc2hUb2tlbjogdG9rZW5SZXN1bHQucmVmcmVzaFRva2VuLFxuICAgICAgZXhwaXJhdGlvbjogdG9rZW5SZXN1bHQuZXhwaXJhdGlvbixcbiAgICAgIHJlZnJlc2hJbnRlcnZhbDogcmVmcmVzaEluZm8ucmVmcmVzaEludGVydmFsLFxuICAgIH07XG5cbiAgICByZXR1cm4gbmV3UmVmcmVzaERhdGE7XG4gIH1cblxuICBwdWJsaWMgc2V0QXV0aFNlc3Npb24odG9rZW5SZXN1bHQ6IFJlZnJlc2hUb2tlbkR0bykge1xuICAgIGNvbnN0IG5ld1JlZnJlc2hEYXRhOiBSZWZyZXNoSW5mbyA9IHRoaXMuZ2V0TmV3UmVmcmVzaEluZm8odG9rZW5SZXN1bHQpO1xuICAgIHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnNldEF1dGhTZXNzaW9uKHRva2VuUmVzdWx0LmFjY2Vzc1Rva2VuLCBuZXdSZWZyZXNoRGF0YSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2V0U3RhdGVBY3Rpb24odG9rZW5SZXN1bHQuYWNjZXNzVG9rZW4sIG5ld1JlZnJlc2hEYXRhKSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVJlZnJlc2hUb2tlblF1ZXVlKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yZWZyZXNoVG9rZW5TdWJqZWN0LnBpcGUoXG4gICAgICBmaWx0ZXIoKHRva2VuKSA9PiAhdGhpcy5pc1JlZnJlc2hpbmcgJiYgISF0b2tlbiksXG4gICAgICB0YWtlKDEpLFxuICAgICAgc3dpdGNoTWFwKCh0b2tlbjogc3RyaW5nKSA9PiBuZXh0LmhhbmRsZSh0aGlzLmFkZFRva2VuKHJlcXVlc3QsIHRva2VuKSkpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkVG9rZW4ocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgdG9rZW46IHN0cmluZyk6IEh0dHBSZXF1ZXN0PGFueT4ge1xuICAgIHJldHVybiByZXF1ZXN0LmNsb25lKHtcbiAgICAgIHNldEhlYWRlcnM6IHtcbiAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWBcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19
91
+ }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.UsersServiceProxyIdentity }, { type: i3.SessionStorageService }, { type: i4.Identity.MobileServiceProxyIdentity }]; } });
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmcmVzaC10b2tlbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9zZXJ2aWNlcy9yZWZyZXNoLXRva2VuLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQWMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7QUFNakUsTUFBTSxPQUFPLG1CQUFtQjtJQUs5QixZQUFvQixLQUFZLEVBQVUseUJBQW9ELEVBQVUscUJBQTRDLEVBQzFJLDBCQUErRDtRQURyRCxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQVUsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEyQjtRQUFVLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDMUksK0JBQTBCLEdBQTFCLDBCQUEwQixDQUFxQztRQUpqRSxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQix3QkFBbUIsR0FBaUIsSUFBSSxPQUFPLEVBQU8sQ0FBQztJQUsvRCxDQUFDO0lBRU0sa0JBQWtCLENBQUMsT0FBeUIsRUFBRSxJQUFpQjtRQUNwRSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN0QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztZQUN6QixNQUFNLFdBQVcsR0FBZ0IsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQztZ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dCI6WyJpbXBvcnQgeyBIdHRwSGFuZGxlciwgSHR0cFJlcXVlc3QgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgZmluYWxpemUsIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVkVSU0lPTl9WMSB9IGZyb20gJy4uL2NvbnN0YW50cy92ZXJzaW9uLWNvbnN0YW50cyc7XG5pbXBvcnQgeyBSZWZyZXNoSW5mbyB9IGZyb20gJy4uL21vZHVsZXMvYXV0aC9tb2RlbC9yZWZyZXNoLWluZm8uaW50ZXJmYWNlJztcbmltcG9ydCB7IFNldFN0YXRlQWN0aW9uIH0gZnJvbSAnLi4vbW9kdWxlcy9hdXRoL3Nlc3Npb24uYWN0aW9ucyc7XG5pbXBvcnQgeyBJZGVudGl0eSB9IGZyb20gJy4uL3NlcnZpY2UtcHJveHknO1xuaW1wb3J0IHsgUmVmcmVzaFRva2VuRHRvLCBVc2Vyc1NlcnZpY2VQcm94eUlkZW50aXR5IH0gZnJvbSAnLi4vc2VydmljZS1wcm94eS9pZGVudGl0eS1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9zZXNzaW9uLXN0b3JhZ2Uuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSZWZyZXNoVG9rZW5TZXJ2aWNlIHtcblxuICBwcml2YXRlIGlzUmVmcmVzaGluZyA9IGZhbHNlO1xuICBwcml2YXRlIHJlZnJlc2hUb2tlblN1YmplY3Q6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0PGFueT4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JlOiBTdG9yZSwgcHJpdmF0ZSB1c2Vyc1NlcnZpY2VQcm94eUlkZW50aXR5OiBVc2Vyc1NlcnZpY2VQcm94eUlkZW50aXR5LCBwcml2YXRlIHNlc3Npb25TdG9yYWdlU2VydmljZTogU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9iaWxlU2VydmljZVByb3h5SWRlbnRpdHk6IElkZW50aXR5Lk1vYmlsZVNlcnZpY2VQcm94eUlkZW50aXR5LFxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVSZWZyZXNoVG9rZW4ocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmICghdGhpcy5pc1JlZnJlc2hpbmcpIHtcbiAgICAgIHRoaXMuaXNSZWZyZXNoaW5nID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHJlZnJlc2hJbmZvOiBSZWZyZXNoSW5mbyA9IHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldEF1dGg7XG4gICAgICByZXR1cm4gdGhpcy51c2Vyc1NlcnZpY2VQcm94eUlkZW50aXR5LnJlZnJlc2hUb2tlbihyZWZyZXNoSW5mbz8ucmVmcmVzaFRva2VuKS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAodG9rZW5SZXN1bHQgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0QXV0aFNlc3Npb24odG9rZW5SZXN1bHQuZGF0YSk7XG5cbiAgICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUodGhpcy5hZGRUb2tlbihyZXF1ZXN0LCB0b2tlblJlc3VsdC5kYXRhLmFjY2Vzc1Rva2VuKSk7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcikpLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc1JlZnJlc2hpbmcgPSBmYWxzZTtcbiAgICAgICAgICAvLyBQcm9jZXNzIHRoZSByZXF1ZXN0IHF1ZXVlIGFmdGVyIHRva2VuIHJlZnJlc2ggY29tcGxldGVzXG4gICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW5TdWJqZWN0Lm5leHQodGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuYWNjZXNzVG9rZW4pO1xuICAgICAgICB9KVxuICAgICAgKTtcblxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBRdWV1ZSB0aGUgZmFpbGVkIHJlcXVlc3RcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZVJlZnJlc2hUb2tlblF1ZXVlKHJlcXVlc3QsIG5leHQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNb2JpbGVSZWZyZXNoVG9rZW4ocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmICghdGhpcy5pc1JlZnJlc2hpbmcpIHtcbiAgICAgIHRoaXMuaXNSZWZyZXNoaW5nID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHJlZnJlc2hJbmZvOiBSZWZyZXNoSW5mbyA9IHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldEF1dGg7XG4gICAgICByZXR1cm4gdGhpcy5tb2JpbGVTZXJ2aWNlUHJveHlJZGVudGl0eS5tb2JpbGVSZWZyZXNoVG9rZW4ocmVmcmVzaEluZm8/LnJlZnJlc2hUb2tlbiwgVkVSU0lPTl9WMSkucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKHRva2VuUmVzdWx0ID0+IHtcbiAgICAgICAgICB0aGlzLnNldEF1dGhTZXNzaW9uKHRva2VuUmVzdWx0LmRhdGEpO1xuXG4gICAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHRoaXMuYWRkVG9rZW4ocmVxdWVzdCwgdG9rZW5SZXN1bHQuZGF0YS5hY2Nlc3NUb2tlbikpO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHRocm93RXJyb3IoKCkgPT4gZXJyb3IpKSxcbiAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNSZWZyZXNoaW5nID0gZmFsc2U7XG4gICAgICAgICAgLy8gUHJvY2VzcyB0aGUgcmVxdWVzdCBxdWV1ZSBhZnRlciB0b2tlbiByZWZyZXNoIGNvbXBsZXRlc1xuICAgICAgICAgIHRoaXMucmVmcmVzaFRva2VuU3ViamVjdC5uZXh0KHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmFjY2Vzc1Rva2VuKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUXVldWUgdGhlIGZhaWxlZCByZXF1ZXN0XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVSZWZyZXNoVG9rZW5RdWV1ZShyZXF1ZXN0LCBuZXh0KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0UmVmcmVzaFRva2VuKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgcmVmcmVzaEluZm86IFJlZnJlc2hJbmZvID0gdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0QXV0aDtcbiAgICByZXR1cm4gdGhpcy51c2Vyc1NlcnZpY2VQcm94eUlkZW50aXR5LnJlZnJlc2hUb2tlbihyZWZyZXNoSW5mbz8ucmVmcmVzaFRva2VuKS5waXBlKHRhcCh7XG4gICAgICBuZXh0OiB0b2tlblJlc3VsdCA9PiB0aGlzLnNldEF1dGhTZXNzaW9uKHRva2VuUmVzdWx0LmRhdGEpXG4gICAgfSkpO1xuICB9XG5cbiAgcHVibGljIGdldE5ld1JlZnJlc2hJbmZvKHRva2VuUmVzdWx0OiBSZWZyZXNoVG9rZW5EdG8pOiBSZWZyZXNoSW5mbyB7XG4gICAgY29uc3QgcmVmcmVzaEluZm86IFJlZnJlc2hJbmZvID0gdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0QXV0aDtcbiAgICBjb25zdCBuZXdSZWZyZXNoRGF0YTogUmVmcmVzaEluZm8gPSB7XG4gICAgICByZWZyZXNoVG9rZW46IHRva2VuUmVzdWx0LnJlZnJlc2hUb2tlbixcbiAgICAgIGV4cGlyYXRpb246IHRva2VuUmVzdWx0LmV4cGlyYXRpb24sXG4gICAgICByZWZyZXNoSW50ZXJ2YWw6IHJlZnJlc2hJbmZvLnJlZnJlc2hJbnRlcnZhbCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ld1JlZnJlc2hEYXRhO1xuICB9XG5cbiAgcHVibGljIHNldEF1dGhTZXNzaW9uKHRva2VuUmVzdWx0OiBSZWZyZXNoVG9rZW5EdG8pIHtcbiAgICBjb25zdCBuZXdSZWZyZXNoRGF0YTogUmVmcmVzaEluZm8gPSB0aGlzLmdldE5ld1JlZnJlc2hJbmZvKHRva2VuUmVzdWx0KTtcbiAgICB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5zZXRBdXRoU2Vzc2lvbih0b2tlblJlc3VsdC5hY2Nlc3NUb2tlbiwgbmV3UmVmcmVzaERhdGEpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldFN0YXRlQWN0aW9uKHRva2VuUmVzdWx0LmFjY2Vzc1Rva2VuLCBuZXdSZWZyZXNoRGF0YSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVSZWZyZXNoVG9rZW5RdWV1ZShyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucmVmcmVzaFRva2VuU3ViamVjdC5waXBlKFxuICAgICAgZmlsdGVyKCh0b2tlbikgPT4gIXRoaXMuaXNSZWZyZXNoaW5nICYmICEhdG9rZW4pLFxuICAgICAgdGFrZSgxKSxcbiAgICAgIHN3aXRjaE1hcCgodG9rZW46IHN0cmluZykgPT4gbmV4dC5oYW5kbGUodGhpcy5hZGRUb2tlbihyZXF1ZXN0LCB0b2tlbikpKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFkZFRva2VuKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sIHRva2VuOiBzdHJpbmcpOiBIdHRwUmVxdWVzdDxhbnk+IHtcbiAgICByZXR1cm4gcmVxdWVzdC5jbG9uZSh7XG4gICAgICBzZXRIZWFkZXJzOiB7XG4gICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0b2tlbn1gXG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -405,11 +405,13 @@ __decorate([
405
405
  ], TibaRetryPolicy.prototype, "signalRRefreshToken", void 0);
406
406
  export function getSecondsBackoff(retryCount) {
407
407
  const delaysTableInSeconds = {
408
- 1: [20, 120],
409
- 2: [1200, 1800],
410
- 3: [3000, 3600], // 50m - 60m
408
+ 1: [5, 20],
409
+ 2: [25, 40],
410
+ 3: [45, 60],
411
+ 4: [65, 80],
412
+ 5: [600, 900], // 10m - 15m
411
413
  };
412
414
  const [minSeconds, maxSeconds] = delaysTableInSeconds[retryCount] || [0, 0];
413
415
  return (Math.floor(Math.random() * (maxSeconds - minSeconds + 1)) + minSeconds) * ONE_SECOND_IN_MILLISECONDS;
414
416
  }
415
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9zZXJ2aWNlcy9zaWduYWxyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQWlCLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0YsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBNEIsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG1DQUFtQyxFQUFFLGtDQUFrQyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDekssT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3BILE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSwy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Q2hCLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG9EQUFvRCxZQUFZLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQ2hILElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2FBQzVCO2lCQUFNO2dCQUNMLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDBDQUEwQyxpQkFBaUIsY0FBYyxZQUFZLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBRXJJLFlBQVksR0FBRyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2FBQ3JEO1NBQ0Y7UUFFRCxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0NBR0Y7QUFEYTtJQUFYLFFBQVEsRUFBRTs0REFBNkQ7QUFHMUUsTUFBTSxVQUFVLGlCQUFpQixDQUFDLFVBQWtCO0lBQ2xELE1BQU0sb0JBQW9CLEdBQWdDO1FBQ3hELENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUM7UUFDWixDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO1FBQ2YsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFHLFlBQVk7S0FDL0IsQ0FBQztJQUNGLE1BQU0sQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLEdBQUcsb0JBQW9CLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUUsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsVUFBVSxHQUFHLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLDBCQUEwQixDQUFDO0FBQy9HLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwU3RhdHVzQ29kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkYXRhZG9nTG9ncyB9IGZyb20gJ0BkYXRhZG9nL2Jyb3dzZXItbG9ncyc7XG5pbXBvcnQgeyBIdWJDb25uZWN0aW9uLCBIdWJDb25uZWN0aW9uQnVpbGRlciwgSHViQ29ubmVjdGlvblN0YXRlIH0gZnJvbSAnQG1pY3Jvc29mdC9zaWduYWxyJztcbmltcG9ydCB7IERpc3BhdGNoIH0gZnJvbSAnQG5neHMtbGFicy9kaXNwYXRjaC1kZWNvcmF0b3InO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb24sIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25FdmVudFNlcnZpY2UgfSBmcm9tICcuLi9jb21wb25lbnRzL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24tZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBPTkVfU0VDT05EX0lOX01JTExJU0VDT05EUyB9IGZyb20gJy4uL2NvbnN0YW50cy9nbG9iYWwtY29uc3RhbnRzJztcbmltcG9ydCB7IEFwcFR5cGUgfSBmcm9tICcuLi9lbnVtcy9hcHAtdHlwZS5lbnVtJztcbmltcG9ydCB7IFNpZ25hbFJSZWZyZXNoVG9rZW5BY3Rpb24gfSBmcm9tICcuLi9tb2R1bGVzL2F1dGgvcmVmcmVzaC10b2tlbi5hY3Rpb25zJztcbmltcG9ydCB7IEZhY2lsaXR5Q2hhbmdlZEFjdGlvbiwgRmFjaWxpdHlSZW1vdGVDb21tYW5kRXhlY3V0ZWRBY3Rpb24sIFNlcnZpY2VzUnVubmluZ1N0YXR1c0NoYW5nZWRBY3Rpb24sIFpvbmVDaGFuZ2VkQWN0aW9uIH0gZnJvbSAnLi4vbW9kdWxlcy9mYWNpbGl0eS9mYWNpbGl0eS5hY3Rpb25zJztcbmltcG9ydCB7IEZhY2lsaXR5U3RhdGUgfSBmcm9tICcuLi9tb2R1bGVzL2ZhY2lsaXR5L2ZhY2lsaXR5LnN0YXRlJztcbmltcG9ydCB7IEhhbmRsZU5vdGlmaWNhdGlvbkFjdGlvbiwgTm90aWZpY2F0aW9uQ2hhbmdlQWN0aW9uIH0gZnJvbSAnLi4vbW9kdWxlcy9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMuYWN0aW9ucyc7XG5pbXBvcnQgeyBQYXJrQWN0aXZpdHlDaGFuZ2VkQWN0aW9uIH0gZnJvbSAnLi4vbW9kdWxlcy9wYXJrLWFjdGl2aXRpZXMvcGFyay1hY3Rpdml0aWVzLmFjdGlvbnMnO1xuaW1wb3J0IHsgRGV2aWNlQWN0aXZpdHlDaGFuZ2VkQWN0aW9uLCBEZXZpY2VFdmVudENoYW5nZWRBY3Rpb24sIERldmljZVN0YXR1c0NoYW5nZWRBY3Rpb24sIExwclRyYW5zYWN0aW9uc0NoYW5nZWRBY3Rpb24gfSBmcm9tICcuLi9tb2R1bGVzL3BhcmstbWFuYWdlci9wYXJrLW1hbmFnZXIuYWN0aW9ucyc7XG5pbXBvcnQgeyBTaWRlbmF2U3RhdGUgfSBmcm9tICcuLi9tb2R1bGVzL3NpZGVuYXYvc2lkZW5hdi5zdGF0ZSc7XG5pbXBvcnQgeyBBZGRTbWFydHBhcmtBY3Rpb24gfSBmcm9tICcuLi9tb2R1bGVzL3NtYXJ0cGFya3Mvc21hcnRwYXJrLWRpYWxvZy5hY3Rpb25zJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbkR0bywgU21hcnRwYXJrRHRvIH0gZnJvbSAnLi4vc2VydmljZS1wcm94eS9jbG91ZC1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHtcbiAgRGV2aWNlRXZlbnREdG8sIERldmljZVN0YXR1c0R0bywgRXZlbnRBY3Rpdml0eUR0bywgRmFjaWxpdHlEdG8sIEZhY2lsaXR5UmVtb3RlQ29tbWFuZEV2ZW50LFxuICBGYWNpbGl0eVJlbW90ZUNvbW1hbmRUeXBlcywgTHByVHJhbnNhY3Rpb25EdG8sIE5vdGlmaWNhdGlvbkV2ZW50VHlwZSwgTm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uRHRvLFxuICBSVEV2ZW50U3Vic2NyaXB0aW9uRHRvLCBSdEV2ZW50VHlwZSwgU2VydmljZXNSdW5uaW5nU3RhdHVzRHRvLCBab25lRHRvXG59IGZyb20gJy4uL3NlcnZpY2UtcHJveHkvZWRnZS1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4vYXBwLWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IEdlbmVyYWxBY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9nZW5lcmFsLWFjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFJlYWx0aW1lRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi9yZWFsdGltZS1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IFNlc3Npb25TdG9yYWdlU2VydmljZSB9IGZyb20gJy4vc2Vzc2lvbi1zdG9yYWdlLnNlcnZpY2UnO1xuXG5leHBvcnQgY2xhc3MgU2lnbmFsUk9iamVjdCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBndWlkOiBzdHJpbmcsIHB1YmxpYyBqc29uUGF5bG9hZDogc3RyaW5nKSB7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJUT2JqZWN0T2JqZWN0IGV4dGVuZHMgU2lnbmFsUk9iamVjdCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBydEV2ZW50VHlwZTogUnRFdmVudFR5cGUsIHB1YmxpYyBwYXJrSWQ6IG51bWJlciwgcHVibGljIGd1aWQ6IHN0cmluZywgcHVibGljIGpzb25QYXlsb2FkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihndWlkLCBqc29uUGF5bG9hZCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNwYXJrTm90aWZpY2F0aW9uIGV4dGVuZHMgU2lnbmFsUk9iamVjdCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBub3RpZmljYXRpb25UeXBlOiBOb3RpZmljYXRpb25FdmVudFR5cGUsIHB1YmxpYyBndWlkOiBzdHJpbmcsIHB1YmxpYyBpZGVudGlmaWVyOiBzdHJpbmcsIHB1YmxpYyBqc29uUGF5bG9hZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoZ3VpZCwganNvblBheWxvYWQpO1xuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTaWduYWxSIHtcblxuICBwdWJsaWMgY29ubmVjdGlvbjogSHViQ29ubmVjdGlvbjtcbiAgcHVibGljIHN1YnNjcmlwdGlvblF1ZXVlOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgbm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uUXVldWU6IGFueVtdID0gW107XG5cbiAgcHJvdGVjdGVkIHN0b3JlOiBTdG9yZTtcbiAgcHJvdGVjdGVkIHJlYWx0aW1lRXZlbnRTZXJ2aWNlOiBSZWFsdGltZUV2ZW50U2VydmljZTtcbiAgcHJvdGVjdGVkIG5vdGlmaWNhdGlvbkV2ZW50U2VydmljZTogTm90aWZpY2F0aW9uRXZlbnRTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlOiBTZXNzaW9uU3RvcmFnZVNlcnZpY2U7XG4gIHByb3RlY3RlZCBhcHBDb25maWc6IEFwcENvbmZpZ1NlcnZpY2U7XG4gIHByb3RlY3RlZCBnZW5lcmFsQWN0aW9uU2VydmljZTogR2VuZXJhbEFjdGlvblNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHRoaXMuc3RvcmUgPSBpbmplY3Rvci5nZXQoU3RvcmUpO1xuICAgIHRoaXMucmVhbHRpbWVFdmVudFNlcnZpY2UgPSBpbmplY3Rvci5nZXQoUmVhbHRpbWVFdmVudFNlcnZpY2UpO1xuICAgIHRoaXMubm90aWZpY2F0aW9uRXZlbnRTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KE5vdGlmaWNhdGlvbkV2ZW50U2VydmljZSk7XG4gICAgdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlKTtcbiAgICB0aGlzLmFwcENvbmZpZyA9IGluamVjdG9yLmdldChBcHBDb25maWdTZXJ2aWNlKTtcbiAgICB0aGlzLmdlbmVyYWxBY3Rpb25TZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KEdlbmVyYWxBY3Rpb25TZXJ2aWNlKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0UmVhbHRpbWVFdmVudExpc3RlbmVycygpIHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmFwcENvbmZpZy5nZXRDb25maWcoKTtcbiAgICBjb25zdCBiYXNlVXJsID0gY29uZmlnLmFwcFR5cGUgPT09IEFwcFR5cGUuTW9iaWxlID8gY29uZmlnLmFwaUJhc2VVUkwgOiAnJztcbiAgICBjb25zdCB1cmwgPSBgJHtiYXNlVXJsfS9yZWFsdGltZWA7XG5cbiAgICBkYXRhZG9nTG9ncy5sb2dnZXIuaW5mbyhgUlQgQVBJIEJhc2UgVXJsIC0gJHt1cmx9YCk7XG5cbiAgICBjb25zdCBtYXhDb25zZWN1dGl2ZUZhaWxlZFJldHJ5Q291bnQgPSBjb25maWcuc2lnbmFsUi5tYXhDb25zZWN1dGl2ZUZhaWxlZFJldHJ5Q291bnQ7XG5cbiAgICB0aGlzLmNvbm5lY3Rpb24gPSBuZXcgSHViQ29ubmVjdGlvbkJ1aWxkZXIoKVxuICAgICAgLndpdGhVcmwodXJsLCB7IGFjY2Vzc1Rva2VuRmFjdG9yeTogKCkgPT4gdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuYWNjZXNzVG9rZW4gfSlcbiAgICAgIC53aXRoQXV0b21hdGljUmVjb25uZWN0KG5ldyBUaWJhUmV0cnlQb2xpY3kobWF4Q29uc2VjdXRpdmVGYWlsZWRSZXRyeUNvdW50KSlcbiAgICAgIC5idWlsZCgpO1xuXG4gICAgdGhpcy5jb25uZWN0aW9uLm9ucmVjb25uZWN0aW5nKChlcnJvcikgPT4ge1xuICAgICAgZGF0YWRvZ0xvZ3MubG9nZ2VyLmluZm8oJ0F0dGVtcHRpbmcgdG8gcmVjb25uZWN0OicsIGVycm9yKTtcbiAgICB9KTtcblxuICAgIHRoaXMuY29ubmVjdGlvbi5vbmNsb3NlKChlcnJvcikgPT4ge1xuICAgICAgZGF0YWRvZ0xvZ3MubG9nZ2VyLmluZm8oJ0Nvbm5lY3Rpb24gY2xvc2VkIGFmdGVyIGFsbCByZXRyeSBhdHRlbXB0czonLCBlcnJvcik7XG4gICAgfSk7XG5cbiAgICB0aGlzLmNvbm5lY3Rpb24ub25yZWNvbm5lY3RlZCgoY29ubmVjdGlvbklkKSA9PiB7XG4gICAgICBkYXRhZG9nTG9ncy5sb2dnZXIuaW5mbyhgU3VjY2Vzc2Z1bGx5IHJlY29ubmVjdGVkIFNJR05BTFIhLiBDb25uZWN0aW9uSWQ6ICR7Y29ubmVjdGlvbklkfWApO1xuXG4gICAgICB0aGlzLmNoZWNrRm9yVXBkYXRlKCk7XG4gICAgICBjb25zdCBndWlkID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmd1aWQpO1xuICAgICAgaWYgKCEhZ3VpZCkge1xuICAgICAgICB0aGlzLnNldFNwYXJrQ29yZUNvbm5lY3Rpb24odHJ1ZSwgZ3VpZCk7XG4gICAgICB9XG4gICAgICBjb25zdCByZWNvbm5lY3RSdEV2ZW50c1N1YnNjcmlwdGlvbnMgPSB0aGlzLnJlYWx0aW1lRXZlbnRTZXJ2aWNlLmdldFN1YnNjcmlwdGlvbkZvclJlY29ubmVjdCgpO1xuICAgICAgdGhpcy5pbnZva2VSZWFsdGltZVJlZ2lzdHJhdGlvbihyZWNvbm5lY3RSdEV2ZW50c1N1YnNjcmlwdGlvbnMsIHRoaXMuaGFuZGxlUmVhbFRpbWVBd2FpdGluZ1N1YnNjcmlwdGlvbnMuYmluZCh0aGlzKSk7XG5cbiAgICAgIGNvbnN0IG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbnMgPSB0aGlzLm5vdGlmaWNhdGlvbkV2ZW50U2VydmljZS5nZXRTdWJzY3JpcHRpb25Gb3JSZWNvbm5lY3QoKTtcbiAgICAgIG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbnMuZm9yRWFjaChub3RpZmljYXRpb25TdWJzY3JpcHRpb24gPT4ge1xuICAgICAgICB0aGlzLmludm9rZU5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihub3RpZmljYXRpb25TdWJzY3JpcHRpb24pO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuaGFuZGxlTm90aWZpY2F0aW9uQXdhaXRpbmdTdWJzY3JpcHRpb24oKTtcbiAgICB9KTtcblxuICAgIHRoaXMuY29ubmVjdGlvbi5vbignUnRFdmVudCcsIChydEV2ZW50VHlwZTogUnRFdmVudFR5cGUsIHBhcmtJZDogbnVtYmVyLCBndWlkOiBzdHJpbmcsIGpzb25QYXlsb2FkOiBzdHJpbmcpID0+IHtcbiAgICAgIG9mKG5ldyBSVE9iamVjdE9iamVjdChydEV2ZW50VHlwZSwgcGFya0lkLCBndWlkLCBqc29uUGF5bG9hZCkpXG4gICAgICAgIC5waXBlKHRoaXMuaGFuZGxlSnNvblBheWxvYWRUb0xvd2VyKCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICAgIHRoaXMuX2Rpc3BhdGNoUnRFdmVudChyZXMgYXMgUlRPYmplY3RPYmplY3QpO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuY29ubmVjdGlvbi5vbignTm90aWZpY2F0aW9uJywgKHR5cGU6IE5vdGlmaWNhdGlvbkV2ZW50VHlwZSwgZ3VpZDogc3RyaW5nLCBpZGVudGlmaWVyOiBzdHJpbmcsIGpzb25QYXlsb2FkOiBzdHJpbmcpID0+IHtcbiAgICAgIG9mKG5ldyBTcGFya05vdGlmaWNhdGlvbih0eXBlLCBndWlkLCBpZGVudGlmaWVyLCBqc29uUGF5bG9hZCkpXG4gICAgICAgIC5waXBlKHRoaXMuaGFuZGxlSnNvblBheWxvYWRUb0xvd2VyKCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICAgIHRoaXMuX2Rpc3BhdGNoTm90aWZpY2F0aW9uKHJlcyBhcyBTcGFya05vdGlmaWNhdGlvbik7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGNoZWNrRm9yVXBkYXRlKCk6IHZvaWQ7XG5cbiAgcHVibGljIGNvbm5lY3QoKSB7XG4gICAgdGhpcy5fY29ubmVjdCh0aGlzLmNvbm5lY3Rpb24pO1xuICB9XG5cbiAgcHVibGljIGRpc2Nvbm5lY3QoKSB7XG4gICAgdGhpcy5fZGlzY29ubmVjdCh0aGlzLmNvbm5lY3Rpb24pO1xuICB9XG5cbiAgc3Vic2NyaWJlRm9yUmVhbHRpbWUocnRFdmVudFN1YnNjcmlwdGlvbnM6IFJURXZlbnRTdWJzY3JpcHRpb25EdG8sIHRyaWdnZXJGdW5jdGlvbj86ICgpID0+IHZvaWQpIHtcbiAgICBpZiAodGhpcy5jb25uZWN0aW9uKSB7XG4gICAgICBpZiAodGhpcy5jb25uZWN0aW9uLnN0YXRlICE9PSBIdWJDb25uZWN0aW9uU3RhdGUuQ29ubmVjdGVkKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uUXVldWUucHVzaCgoKSA9PiB0aGlzLnN1YnNjcmliZUZvclJlYWx0aW1lKHJ0RXZlbnRTdWJzY3JpcHRpb25zLCB0cmlnZ2VyRnVuY3Rpb24pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJ0RXZlbnRTdWJzY3JpcHRpb25EZWx0YSA9IHRoaXMucmVhbHRpbWVFdmVudFNlcnZpY2UuaGFuZGxlUmVhbHRpbWVFdmVudHNTdWJzY3JpcHRpb25zKHJ0RXZlbnRTdWJzY3JpcHRpb25zKTtcbiAgICAgICAgaWYgKHJ0RXZlbnRTdWJzY3JpcHRpb25EZWx0YS5zdWJzY3JpYmUubGVuZ3RoIHx8IHJ0RXZlbnRTdWJzY3JpcHRpb25EZWx0YS51blN1YnNjcmliZS5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLmludm9rZVJlYWx0aW1lUmVnaXN0cmF0aW9uKHJ0RXZlbnRTdWJzY3JpcHRpb25EZWx0YSwgdHJpZ2dlckZ1bmN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN1YnNjcmliZUZvck5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uOiBOb3RpZmljYXRpb25TdWJzY3JpcHRpb25EdG8sIHRyaWdnZXJGdW5jdGlvbj86ICgpID0+IHZvaWQpIHtcbiAgICBpZiAodGhpcy5jb25uZWN0aW9uKSB7XG4gICAgICBpZiAodGhpcy5jb25uZWN0aW9uLnN0YXRlICE9PSBIdWJDb25uZWN0aW9uU3RhdGUuQ29ubmVjdGVkKSB7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uUXVldWUucHVzaCgoKSA9PiB0aGlzLnN1YnNjcmliZUZvck5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uLCB0cmlnZ2VyRnVuY3Rpb24pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbkRlbHRhID0gdGhpcy5ub3RpZmljYXRpb25FdmVudFNlcnZpY2UuaGFuZGxlTm90aWZpY2F0aW9uU3Vic2NyaXB0aW9ucyhub3RpZmljYXRpb25TdWJzY3JpcHRpb24pO1xuICAgICAgICBpZiAoISFub3RpZmljYXRpb25TdWJzY3JpcHRpb25EZWx0YSkge1xuICAgICAgICAgIHRoaXMuaW52b2tlTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbkRlbHRhLCB0cmlnZ2VyRnVuY3Rpb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbnZva2VSZWFsdGltZVJlZ2lzdHJhdGlvbihydEV2ZW50U3Vic2NyaXB0aW9uczogUlRFdmVudFN1YnNjcmlwdGlvbkR0bywgdHJpZ2dlckZ1bmN0aW9uPzogKCkgPT4gdm9pZCkge1xuICAgIGNvbnN0IGFwcE1vZHVsZSA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoU2lkZW5hdlN0YXRlLmFwcE1vZHVsZSk7XG4gICAgaWYgKHJ0RXZlbnRTdWJzY3JpcHRpb25zLnVzZXJJZCkge1xuICAgICAgdGhpcy5jb25uZWN0aW9uLmludm9rZTxSVEV2ZW50U3Vic2NyaXB0aW9uRHRvPignUmVnaXN0ZXJQYXJrJywgcnRFdmVudFN1YnNjcmlwdGlvbnMsIGFwcE1vZHVsZSkudGhlbigoc3ViVG8pID0+IHtcbiAgICAgICAgaWYgKHRyaWdnZXJGdW5jdGlvbikge1xuICAgICAgICAgIHRyaWdnZXJGdW5jdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGludm9rZU5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihub3RpZmljYXRpb25TdWJzY3JpcHRpb246IE5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbkR0bywgdHJpZ2dlckZ1bmN0aW9uPzogKCkgPT4gdm9pZCkge1xuICAgIGlmIChub3RpZmljYXRpb25TdWJzY3JpcHRpb24gJiYgbm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uLnVzZXJJZCkge1xuICAgICAgdGhpcy5jb25uZWN0aW9uLmludm9rZTxOb3RpZmljYXRpb25TdWJzY3JpcHRpb25EdG8+KCdSZWdpc3Rlck5vdGlmaWNhdGlvbnMnLCBub3RpZmljYXRpb25TdWJzY3JpcHRpb24pLnRoZW4oKHN1YlRvKSA9PiB7XG4gICAgICAgIGlmICh0cmlnZ2VyRnVuY3Rpb24pIHtcbiAgICAgICAgICB0cmlnZ2VyRnVuY3Rpb24oKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFNwYXJrQ29yZUNvbm5lY3Rpb24oaXNDb25uZWN0ZWQ6IGJvb2xlYW4sIGd1aWQ6IHN0cmluZykge1xuICAgIGNvbnN0IHNlcnZpY2VzUnVubmluZ1N0YXR1cyA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5zZXJ2aWNlc1J1bm5pbmdTdGF0dXNEaWN0aW9uYXJ5KVtndWlkXTtcbiAgICBzZXJ2aWNlc1J1bm5pbmdTdGF0dXMuaXNTcGFya0NvcmVDb25uZWN0ZWQgPSBpc0Nvbm5lY3RlZDtcbiAgICBpZiAoIWlzQ29ubmVjdGVkKSB7XG4gICAgICBjb25zdCBmYWNpbGl0eUd1aWQgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuZ3VpZCk7XG4gICAgICBjb25zdCBzZXJ2ZXJDbGllbnRUaW1lU3BhbiA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5jbGllbnRTZXJ2ZXJEaWZmRGljdGlvbmFyeSlbZmFjaWxpdHlHdWlkXSB8fCAwO1xuICAgICAgc2VydmljZXNSdW5uaW5nU3RhdHVzLnNwYXJrQ29yZURpc2Nvbm5lY3RlZFRpbWVzdGFtcCA9IG1vbWVudCgpLnN1YnRyYWN0KHNlcnZlckNsaWVudFRpbWVTcGFuLCAnbWlsbGlzZWNvbmRzJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlcnZpY2VzUnVubmluZ1N0YXR1cy5zcGFya0NvcmVEaXNjb25uZWN0ZWRUaW1lc3RhbXAgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLnNlcnZpY2VzUnVubmluZ1N0YXR1c0NoYW5nZWQoc2VydmljZXNSdW5uaW5nU3RhdHVzLCBndWlkKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlSnNvblBheWxvYWRUb0xvd2VyKCk6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxTaWduYWxST2JqZWN0PiB7XG4gICAgcmV0dXJuICRpbnB1dCA9PiAkaW5wdXQucGlwZShtYXAocmVzID0+IHtcbiAgICAgIGNvbnN0IG9iaiA9IEpTT04ucGFyc2UocmVzLmpzb25QYXlsb2FkKTtcbiAgICAgIHJlcy5qc29uUGF5bG9hZCA9IEpTT04uc3RyaW5naWZ5KG9iaiwgKGtleSwgdmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgY29uc3QgcmVwbGFjZW1lbnQgPSB7fTtcbiAgICAgICAgICBmb3IgKGNvbnN0IGsgaW4gdmFsdWUpIHtcbiAgICAgICAgICAgIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgaykpIHtcbiAgICAgICAgICAgICAgaWYgKGsubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRbayAmJiBrLnRvTG93ZXJDYXNlKCldID0gdmFsdWVba107XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRbayAmJiBrLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgay5zdWJzdHJpbmcoMSldID0gdmFsdWVba107XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJlcGxhY2VtZW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9KSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZGlzcGF0Y2hOb3RpZmljYXRpb24ob2JqOiBTcGFya05vdGlmaWNhdGlvbik6IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfZGlzcGF0Y2hOb3RpZmljYXRpb24ob2JqOiBTcGFya05vdGlmaWNhdGlvbikge1xuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKG9iai5qc29uUGF5bG9hZCk7XG4gICAgY29uc29sZS5kZWJ1ZyhgUmVjZWl2ZWQgTm90aWZpY2F0aW9uIHR5cGUgPT09PiAke29iai5ub3RpZmljYXRpb25UeXBlfWApO1xuICAgIHN3aXRjaCAob2JqLm5vdGlmaWNhdGlvblR5cGUpIHtcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlLkluaXRpYWxDbG91ZENvbm5lY3Q6XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZVNtYXJ0UGFya0Nvbm5lY3Rpb24oZGF0YSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBOb3RpZmljYXRpb25FdmVudFR5cGUuRmFjaWxpdHlSZW1vdGVDb21tYW5kRXhlY3V0ZWQ6XG4gICAgICAgIC8vIFRPRE86IHRoaXMgY29uZGl0aW9uIHdpbGwgYmUgcmVtb3ZlZCB3aGVuIGFsbCBcIkZhY2lsaXR5UmVtb3RlQ29tbWFuZEV4ZWN1dGVkXCIgbm90aWZpY2F0aW9uXG4gICAgICAgIC8vIHdpbGwgYmUgcmVtb3ZlZCB1cG9uIGJlaW5nIGV4ZWN1dGVkIGluIHRoZSBzZXJ2ZXJcbiAgICAgICAgLy8gRm9yIG1vcmUgZXhwbGFuYXRpb24gc2VlOiBTUFJLMy02NzA0XG4gICAgICAgIGlmIChkYXRhLnR5cGUgPT09IEZhY2lsaXR5UmVtb3RlQ29tbWFuZFR5cGVzLlRyYW5zbWl0U3BlY2lhbERheXMpIHtcbiAgICAgICAgICBjb25zdCBub3RpZmljYXRpb25TdWJzY3JpcHRpb24gPSB0aGlzLm5vdGlmaWNhdGlvbkV2ZW50U2VydmljZS5nZXROb3RpZmljYXRpb25TdWJzY3JpcHRpb25zRW50aXR5KCk7XG4gICAgICAgICAgbm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uLnR5cGUgPSBvYmoubm90aWZpY2F0aW9uVHlwZTtcbiAgICAgICAgICBub3RpZmljYXRpb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUgPSB0cnVlO1xuICAgICAgICAgIG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbi5pZGVudGlmaWVyID0gdGhpcy5ub3RpZmljYXRpb25FdmVudFNlcnZpY2UuZ2V0Tm90aWZpY2F0aW9uSWRlbnRpZmllcihkYXRhLmd1aWQsIGRhdGEucGFya0lkLFxuICAgICAgICAgICAgb2JqLm5vdGlmaWNhdGlvblR5cGUsIG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbi51c2VySWQpO1xuICAgICAgICAgIHRoaXMuc3Vic2NyaWJlRm9yTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25TdWJzY3JpcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5mYWNpbGl0eVJlbW90ZUNvbW1hbmRFeGVjdXRlZChkYXRhKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE5vdGlmaWNhdGlvbkV2ZW50VHlwZS5HZW5lcmFsQWN0aW9uczpcbiAgICAgICAgdGhpcy5nZW5lcmFsQWN0aW9uU2VydmljZS5kaXNwYXRjaEdlbmVyYWxBY3Rpb25zKGRhdGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlLkhhbmRsZU5vdGlmaWNhdGlvbjpcbiAgICAgICAgdGhpcy5oYW5kbGVOb3RpZmljYXRpb24oTm90aWZpY2F0aW9uRHRvLmZyb21KUyhkYXRhKSwgb2JqLmd1aWQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBOb3RpZmljYXRpb25FdmVudFR5cGUuUmVwb3J0R2VuZXJhdGVkOlxuICAgICAgY2FzZSBOb3RpZmljYXRpb25FdmVudFR5cGUuUmVjZWlwdEdlbmVyYXRlZDpcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlLlN0aWNrZXJHZW5lcmF0ZWQ6XG4gICAgICBjYXNlIE5vdGlmaWNhdGlvbkV2ZW50VHlwZS5BcHBsaWNhdGlvblVwZGF0ZTpcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlLkNyZWF0ZVJvbGU6XG4gICAgICBjYXNlIE5vdGlmaWNhdGlvbkV2ZW50VHlwZS5VcGRhdGVSb2xlOlxuICAgICAgICB0aGlzLmRpc3BhdGNoTm90aWZpY2F0aW9uKG9iaik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29uc29sZS5kZWJ1ZyhgVW5rbm93biBub3RpZmljYXRpb24gdHlwZSA9PT0+ICR7b2JqLm5vdGlmaWNhdGlvblR5cGV9YCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBkaXNwYXRjaFJ0RXZlbnQob2JqOiBSVE9iamVjdE9iamVjdCk6IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfZGlzcGF0Y2hSdEV2ZW50KG9iajogUlRPYmplY3RPYmplY3QpIHtcbiAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShvYmouanNvblBheWxvYWQpO1xuICAgIHN3aXRjaCAob2JqLnJ0RXZlbnRUeXBlKSB7XG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLkRldmljZVN0YXR1czpcbiAgICAgICAgdGhpcy5kZXZpY2VzU3RhdHVzQ2hhbmdlZChEZXZpY2VTdGF0dXNEdG8uZnJvbUpTKGRhdGEpKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuRHluYW1pY1ByaWNpbmdDb25kaXRpb246XG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLkFsZXJ0OlxuICAgICAgY2FzZSBSdEV2ZW50VHlwZS5Mb3N0VGlja2V0OlxuICAgICAgY2FzZSBSdEV2ZW50VHlwZS5MUFJtaXNtYXRjaDpcbiAgICAgICAgZGF0YWRvZ0xvZ3MubG9nZ2VyLmluZm8oYFJUIC0gR290ICR7SlNPTi5zdHJpbmdpZnkoZGF0YSl9IGV2ZW50YCk7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uQ2hhbmdlZChOb3RpZmljYXRpb25EdG8uZnJvbUpTKGRhdGEpLCBvYmouZ3VpZCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLlBhcmtTdGF0ZTpcbiAgICAgICAgZGF0YWRvZ0xvZ3MubG9nZ2VyLmluZm8oYFJUIC0gR290ICR7SlNPTi5zdHJpbmdpZnkoZGF0YSl9IGV2ZW50YCk7XG4gICAgICAgIHRoaXMuZGV2aWNlQWN0aXZpdHlDaGFuZ2VkKGRhdGEpO1xuICAgICAgICB0aGlzLnBhcmtBY3Rpdml0eUNoYW5nZWQoZGF0YSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLkRldmljZUV2ZW50OlxuICAgICAgICB0aGlzLmRldmljZUV2ZW50Q2hhbmdlZChkYXRhKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuU2VydmljZXNTdGF0dXM6XG4gICAgICAgIHRoaXMuc2VydmljZXNSdW5uaW5nU3RhdHVzQ2hhbmdlZChTZXJ2aWNlc1J1bm5pbmdTdGF0dXNEdG8uZnJvbUpTKGRhdGEpLCBvYmouZ3VpZCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLlpvbmU6XG4gICAgICAgIHRoaXMuem9uZUNoYW5nZWQoWm9uZUR0by5mcm9tSlMoZGF0YSksIG9iai5wYXJrSWQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBSdEV2ZW50VHlwZS5GYWNpbGl0eTpcbiAgICAgICAgdGhpcy5mYWNpbGl0eUNoYW5nZWQoRmFjaWxpdHlEdG8uZnJvbUpTKGRhdGEpLCBvYmouZ3VpZCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLk9jY3VwYW5jeTpcbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuUmV2ZW51ZTpcbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuT3BlblRpY2tldFRyYW5zYWN0aW9uOlxuICAgICAgY2FzZSBSdEV2ZW50VHlwZS5DbG9zZVRpY2tldFRyYW5zYWN0aW9uOlxuICAgICAgY2FzZSBSdEV2ZW50VHlwZS5Nb250aGx5VHJhbnNhY3Rpb246XG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLkd1ZXN0VHJhbnNhY3Rpb246XG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLlBheW1lbnRUcmFuc2FjdGlvbjpcbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuTFBSVHJhbnNhY3Rpb246XG4gICAgICAgIHRoaXMuZGlzcGF0Y2hSdEV2ZW50KG9iaik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLmRlYnVnKGBVbmtub3duIGV2ZW50IHR5cGUgPT09PiAke29iai5ydEV2ZW50VHlwZX1gKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY29ubmVjdChjb25uZWN0aW9uOiBIdWJDb25uZWN0aW9uKSB7XG4gICAgY29uc29sZS5kZWJ1ZygnU2lnbmFsUiBFc3RhYmxpc2hpbmcgQ29ubmVjdGlvbi4uLicpO1xuICAgIGNvbm5lY3Rpb24uc3RhcnQoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBjb25zb2xlLmRlYnVnKGBTaWduYWxSIENvbm5lY3Rpb24gRXN0YWJsaXNoZWQhYCk7XG4gICAgICAgIHRoaXMuaGFuZGxlUmVhbFRpbWVBd2FpdGluZ1N1YnNjcmlwdGlvbnMoKTtcbiAgICAgICAgdGhpcy5oYW5kbGVOb3RpZmljYXRpb25Bd2FpdGluZ1N1YnNjcmlwdGlvbigpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChhc3luYyAoZSkgPT4ge1xuICAgICAgICB0aGlzLnJldHJ5Q29ubmVjdGlvbihjb25uZWN0aW9uLCAxKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGlzY29ubmVjdChjb25uZWN0aW9uOiBIdWJDb25uZWN0aW9uKSB7XG4gICAgY29uc29sZS5kZWJ1ZygnU2lnbmFsUiBTdG9wcGluZyBDb25uZWN0aW9uLi4uJyk7XG4gICAgY29ubmVjdGlvbj8uc3RvcCgpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZGVidWcoYFNpZ25hbFIgQ29ubmVjdGlvbiBTdG9wcGVkIWApO1xuICAgICAgICB0aGlzLmhhbmRsZURpc2Nvbm5lY3QoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goYXN5bmMgKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciA9PiAke2Vycn0sIFRpbWVzdGFtcDogJHtuZXcgRGF0ZSgpfWApO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJldHJ5Q29ubmVjdGlvbihjb25uZWN0aW9uOiBIdWJDb25uZWN0aW9uLCByZXRyeUNvdW50OiBudW1iZXIpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnNvbGUuZGVidWcoYFNpZ25hbFIgRXN0YWJsaXNoaW5nIENvbm5lY3Rpb24uIFJldHJ5ICMke3JldHJ5Q291bnR9LiBUaW1lc3RhbXA6ICR7bmV3IERhdGUoKX1gKVxuICAgICAgY29ubmVjdGlvbi5zdGFydCgpXG4gICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmRlYnVnKGBTaWduYWxSIENvbm5lY3Rpb24gRXN0YWJsaXNoZWQhIFJldHJ5ICMke3JldHJ5Q291bnR9YCk7XG4gICAgICAgICAgdGhpcy5oYW5kbGVSZWFsVGltZUF3YWl0aW5nU3Vic2NyaXB0aW9ucygpO1xuICAgICAgICAgIHRoaXMuaGFuZGxlTm90aWZpY2F0aW9uQXdhaXRpbmdTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLmFwcENvbmZpZy5nZXRDb25maWcoKTtcblxuICAgICAgICAgIGlmIChyZXRyeUNvdW50IDw9IGNvbmZpZy5zaWduYWxSLm1heENvbnNlY3V0aXZlRmFpbGVkUmV0cnlDb3VudCkge1xuICAgICAgICAgICAgdGhpcy5yZXRyeUNvbm5lY3Rpb24oY29ubmVjdGlvbiwgcmV0cnlDb3VudCArIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSwgZ2V0U2Vjb25kc0JhY2tvZmYocmV0cnlDb3VudCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVSZWFsVGltZUF3YWl0aW5nU3Vic2NyaXB0aW9ucygpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvblF1ZXVlLmZvckVhY2goYXdhaXRpbmdTdWJzY3JpcHRpb24gPT4gYXdhaXRpbmdTdWJzY3JpcHRpb24oKSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25RdWV1ZS5zcGxpY2UoMCk7XG4gIH1cbiAgcHJpdmF0ZSBoYW5kbGVOb3RpZmljYXRpb25Bd2FpdGluZ1N1YnNjcmlwdGlvbigpIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblN1YnNjcmlwdGlvblF1ZXVlLmZvckVhY2goYXdhaXRpbmdTdWJzY3JpcHRpb24gPT4gYXdhaXRpbmdTdWJzY3JpcHRpb24oKSk7XG4gICAgdGhpcy5ub3RpZmljYXRpb25TdWJzY3JpcHRpb25RdWV1ZS5zcGxpY2UoMCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZURpc2Nvbm5lY3QoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25RdWV1ZSA9IFtdO1xuICAgIHRoaXMubm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uUXVldWUgPSBbXTtcbiAgICB0aGlzLnJlYWx0aW1lRXZlbnRTZXJ2aWNlLnJlc2V0QWxsU3Vic2NyaXB0aW9ucygpO1xuICB9XG5cbiAgQERpc3BhdGNoKCkgZGV2aWNlc1N0YXR1c0NoYW5nZWQgPSAoZGV2aWNlU3RhdHVzOiBEZXZpY2VTdGF0dXNEdG8pID0+XG4gICAgbmV3IERldmljZVN0YXR1c0NoYW5nZWRBY3Rpb24oZGV2aWNlU3RhdHVzKTtcbiAgQERpc3BhdGNoKCkgZmFjaWxpdHlDaGFuZ2VkID0gKGRhdGE6IEZhY2lsaXR5RHRvLCBndWlkOiBzdHJpbmcpID0+XG4gICAgbmV3IEZhY2lsaXR5Q2hhbmdlZEFjdGlvbihkYXRhLCBndWlkKTtcbiAgQERpc3BhdGNoKCkgc2VydmljZXNSdW5uaW5nU3RhdHVzQ2hhbmdlZCA9IChzZXJ2aWNlc1J1bm5pbmdTdGF0dXM6IFNlcnZpY2VzUnVubmluZ1N0YXR1c0R0bywgZ3VpZDogc3RyaW5nKSA9PlxuICAgIG5ldyBTZXJ2aWNlc1J1bm5pbmdTdGF0dXNDaGFuZ2VkQWN0aW9uKHNlcnZpY2VzUnVubmluZ1N0YXR1cywgZ3VpZCk7XG4gIEBEaXNwYXRjaCgpIHBhcmtBY3Rpdml0eUNoYW5nZWQgPSAoYWN0aXZpdHk6IEV2ZW50QWN0aXZpdHlEdG8pID0+XG4gICAgbmV3IFBhcmtBY3Rpdml0eUNoYW5nZWRBY3Rpb24oYWN0aXZpdHkpO1xuICBARGlzcGF0Y2goKSBkZXZpY2VFdmVudENoYW5nZWQgPSAoZGV2RXZlbnQ6IERldmljZUV2ZW50RHRvKSA9PlxuICAgIG5ldyBEZXZpY2VFdmVudENoYW5nZWRBY3Rpb24oZGV2RXZlbnQpO1xuICBARGlzcGF0Y2goKSBkZXZpY2VBY3Rpdml0eUNoYW5nZWQgPSAoZXZlbnRBY3Rpdml0eTogRXZlbnRBY3Rpdml0eUR0bykgPT5cbiAgICBuZXcgRGV2aWNlQWN0aXZpdHlDaGFuZ2VkQWN0aW9uKGV2ZW50QWN0aXZpdHkpO1xuICBARGlzcGF0Y2goKSBscHJUcmFuc2FjdGlvbnNDaGFuZ2VkID0gKGxwclRyYW5zOiBMcHJUcmFuc2FjdGlvbkR0bykgPT5cbiAgICBuZXcgTHByVHJhbnNhY3Rpb25zQ2hhbmdlZEFjdGlvbihscHJUcmFucyk7XG4gIEBEaXNwYXRjaCgpIG5vdGlmaWNhdGlvbkNoYW5nZWQgPSAobm90aWZpY2F0aW9uRHRvOiBOb3RpZmljYXRpb25EdG8sIGd1aWQ6IHN0cmluZykgPT5cbiAgICBuZXcgTm90aWZpY2F0aW9uQ2hhbmdlQWN0aW9uKG5vdGlmaWNhdGlvbkR0bywgZ3VpZCk7XG4gIEBEaXNwYXRjaCgpIGhhbmRsZU5vdGlmaWNhdGlvbiA9IChub3RpZmljYXRpb25EdG86IE5vdGlmaWNhdGlvbkR0bywgZ3VpZDogc3RyaW5nKSA9PlxuICAgIG5ldyBIYW5kbGVOb3RpZmljYXRpb25BY3Rpb24obm90aWZpY2F0aW9uRHRvLCBndWlkKTtcbiAgQERpc3BhdGNoKCkgem9uZUNoYW5nZWQgPSAoem9uZUR0bzogWm9uZUR0bywgcGFya0lkOiBudW1iZXIpID0+XG4gICAgbmV3IFpvbmVDaGFuZ2VkQWN0aW9uKHpvbmVEdG8sIHBhcmtJZCk7XG4gIEBEaXNwYXRjaCgpIGluaXRpYWxpemVTbWFydFBhcmtDb25uZWN0aW9uID0gKHNtYXJ0cGFyazogU21hcnRwYXJrRHRvKSA9PlxuICAgIG5ldyBBZGRTbWFydHBhcmtBY3Rpb24oc21hcnRwYXJrKTtcbiAgQERpc3BhdGNoKCkgZmFjaWxpdHlSZW1vdGVDb21tYW5kRXhlY3V0ZWQgPSAoZmFjaWxpdHlSZW1vdGVDb21tYW5kRXZlbnQ6IEZhY2lsaXR5UmVtb3RlQ29tbWFuZEV2ZW50KSA9PlxuICAgIG5ldyBGYWNpbGl0eVJlbW90ZUNvbW1hbmRFeGVjdXRlZEFjdGlvbihmYWNpbGl0eVJlbW90ZUNvbW1hbmRFdmVudCk7XG59XG5cbmV4cG9ydCBjbGFzcyBUaWJhUmV0cnlQb2xpY3kgaW1wbGVtZW50cyBzaWduYWxSLklSZXRyeVBvbGljeSB7XG5cbiAgcHJpdmF0ZSBtYXhDb25zZWN1dGl2ZUZhaWxlZFJldHJ5Q291bnQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihtYXhDb25zZWN1dGl2ZUZhaWxlZFJldHJ5Q291bnQ6IG51bWJlcikge1xuICAgIHRoaXMubWF4Q29uc2VjdXRpdmVGYWlsZWRSZXRyeUNvdW50ID0gbWF4Q29uc2VjdXRpdmVGYWlsZWRSZXRyeUNvdW50O1xuICB9XG5cbiAgbmV4dFJldHJ5RGVsYXlJbk1pbGxpc2Vjb25kcyhyZXRyeUNvbnRleHQ6IHNpZ25hbFIuUmV0cnlDb250ZXh0KTogbnVtYmVyIHtcbiAgICBsZXQgbWlsbGlzZWNvbmRzOiBudW1iZXIgPSBudWxsO1xuICAgIGNvbnN0IGN1cnJlbnRSZXRyeUNvdW50ID0gcmV0cnlDb250ZXh0LnByZXZpb3VzUmV0cnlDb3VudCArIDE7XG5cbiAgICBpZiAoY3VycmVudFJldHJ5Q291bnQgPCB0aGlzLm1heENvbnNlY3V0aXZlRmFpbGVkUmV0cnlDb3VudCkge1xuICAgICAgY29uc3QgdW5hdXRob3JpemVkID0gcmV0cnlDb250ZXh0LnJldHJ5UmVhc29uLm1lc3NhZ2UuaW5jbHVkZXMoYFN0YXR1cyBjb2RlICcke0h0dHBTdGF0dXNDb2RlLlVuYXV0aG9yaXplZH0nYCk7XG5cbiAgICAgIGlmICh1bmF1dGhvcml6ZWQpIHtcbiAgICAgICAgZGF0YWRvZ0xvZ3MubG9nZ2VyLmluZm8oYFRpYmFSZXRyeVBvbGljeSAtPiB1bmF1dGhvcml6ZWQgdG9rZW4uIE1lc3NhZ2U6ICAke3JldHJ5Q29udGV4dC5yZXRyeVJlYXNvbi5tZXNzYWdlfWApO1xuICAgICAgICB0aGlzLnNpZ25hbFJSZWZyZXNoVG9rZW4oKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGFkb2dMb2dzLmxvZ2dlci5pbmZvKGBUaWJhUmV0cnlQb2xpY3kgLT4gZmFpbGVkIG5lZ290aWF0aW9uICMke2N1cnJlbnRSZXRyeUNvdW50fS4gTWVzc2FnZTogJHtyZXRyeUNvbnRleHQucmV0cnlSZWFzb24ubWVzc2FnZX1gKTtcblxuICAgICAgICBtaWxsaXNlY29uZHMgPSBnZXRTZWNvbmRzQmFja29mZihjdXJyZW50UmV0cnlDb3VudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1pbGxpc2Vjb25kcztcbiAgfVxuXG4gIEBEaXNwYXRjaCgpIHNpZ25hbFJSZWZyZXNoVG9rZW4gPSAoKSA9PiBuZXcgU2lnbmFsUlJlZnJlc2hUb2tlbkFjdGlvbigpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2Vjb25kc0JhY2tvZmYocmV0cnlDb3VudDogbnVtYmVyKTogbnVtYmVyIHtcbiAgY29uc3QgZGVsYXlzVGFibGVJblNlY29uZHM6IHsgW2tleTogbnVtYmVyXTogbnVtYmVyW10gfSA9IHtcbiAgICAxOiBbMjAsIDEyMF0sICAgICAvLyAyMHMgLSAybVxuICAgIDI6IFsxMjAwLCAxODAwXSwgIC8vIDIwbSAtIDMwbVxuICAgIDM6IFszMDAwLCAzNjAwXSwgIC8vIDUwbSAtIDYwbVxuICB9O1xuICBjb25zdCBbbWluU2Vjb25kcywgbWF4U2Vjb25kc10gPSBkZWxheXNUYWJsZUluU2Vjb25kc1tyZXRyeUNvdW50XSB8fCBbMCwgMF07XG4gIHJldHVybiAoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heFNlY29uZHMgLSBtaW5TZWNvbmRzICsgMSkpICsgbWluU2Vjb25kcykgKiBPTkVfU0VDT05EX0lOX01JTExJU0VDT05EUztcbn1cbiJdfQ==
417
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9zZXJ2aWNlcy9zaWduYWxyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQWlCLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0YsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBNEIsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG1DQUFtQyxFQUFFLGtDQUFrQyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDekssT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3BILE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSwy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dXNDb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRhdGFkb2dMb2dzIH0gZnJvbSAnQGRhdGFkb2cvYnJvd3Nlci1sb2dzJztcbmltcG9ydCB7IEh1YkNvbm5lY3Rpb24sIEh1YkNvbm5lY3Rpb25CdWlsZGVyLCBIdWJDb25uZWN0aW9uU3RhdGUgfSBmcm9tICdAbWljcm9zb2Z0L3NpZ25hbHInO1xuaW1wb3J0IHsgRGlzcGF0Y2ggfSBmcm9tICdAbmd4cy1sYWJzL2Rpc3BhdGNoLWRlY29yYXRvcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbiwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbkV2ZW50U2VydmljZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IE9ORV9TRUNPTkRfSU5fTUlMTElTRUNPTkRTIH0gZnJvbSAnLi4vY29uc3RhbnRzL2dsb2JhbC1jb25zdGFudHMnO1xuaW1wb3J0IHsgQXBwVHlwZSB9IGZyb20gJy4uL2VudW1zL2FwcC10eXBlLmVudW0nO1xuaW1wb3J0IHsgU2lnbmFsUlJlZnJlc2hUb2tlbkFjdGlvbiB9IGZyb20gJy4uL21vZHVsZXMvYXV0aC9yZWZyZXNoLXRva2VuLmFjdGlvbnMnO1xuaW1wb3J0IHsgRmFjaWxpdHlDaGFuZ2VkQWN0aW9uLCBGYWNpbGl0eVJlbW90ZUNvbW1hbmRFeGVjdXRlZEFjdGlvbiwgU2VydmljZXNSdW5uaW5nU3RhdHVzQ2hhbmdlZEFjdGlvbiwgWm9uZUNoYW5nZWRBY3Rpb24gfSBmcm9tICcuLi9tb2R1bGVzL2ZhY2lsaXR5L2ZhY2lsaXR5LmFjdGlvbnMnO1xuaW1wb3J0IHsgRmFjaWxpdHlTdGF0ZSB9IGZyb20gJy4uL21vZHVsZXMvZmFjaWxpdHkvZmFjaWxpdHkuc3RhdGUnO1xuaW1wb3J0IHsgSGFuZGxlTm90aWZpY2F0aW9uQWN0aW9uLCBOb3RpZmljYXRpb25DaGFuZ2VBY3Rpb24gfSBmcm9tICcuLi9tb2R1bGVzL25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9ucy5hY3Rpb25zJztcbmltcG9ydCB7IFBhcmtBY3Rpdml0eUNoYW5nZWRBY3Rpb24gfSBmcm9tICcuLi9tb2R1bGVzL3BhcmstYWN0aXZpdGllcy9wYXJrLWFjdGl2aXRpZXMuYWN0aW9ucyc7XG5pbXBvcnQgeyBEZXZpY2VBY3Rpdml0eUNoYW5nZWRBY3Rpb24sIERldmljZUV2ZW50Q2hhbmdlZEFjdGlvbiwgRGV2aWNlU3RhdHVzQ2hhbmdlZEFjdGlvbiwgTHByVHJhbnNhY3Rpb25zQ2hhbmdlZEFjdGlvbiB9IGZyb20gJy4uL21vZHVsZXMvcGFyay1tYW5hZ2VyL3BhcmstbWFuYWdlci5hY3Rpb25zJztcbmltcG9ydCB7IFNpZGVuYXZTdGF0ZSB9IGZyb20gJy4uL21vZHVsZXMvc2lkZW5hdi9zaWRlbmF2LnN0YXRlJztcbmltcG9ydCB7IEFkZFNtYXJ0cGFya0FjdGlvbiB9IGZyb20gJy4uL21vZHVsZXMvc21hcnRwYXJrcy9zbWFydHBhcmstZGlhbG9nLmFjdGlvbnMnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uRHRvLCBTbWFydHBhcmtEdG8gfSBmcm9tICcuLi9zZXJ2aWNlLXByb3h5L2Nsb3VkLXNlcnZpY2UtcHJveGllcyc7XG5pbXBvcnQge1xuICBEZXZpY2VFdmVudER0bywgRGV2aWNlU3RhdHVzRHRvLCBFdmVudEFjdGl2aXR5RHRvLCBGYWNpbGl0eUR0bywgRmFjaWxpdHlSZW1vdGVDb21tYW5kRXZlbnQsXG4gIEZhY2lsaXR5UmVtb3RlQ29tbWFuZFR5cGVzLCBMcHJUcmFuc2FjdGlvbkR0bywgTm90aWZpY2F0aW9uRXZlbnRUeXBlLCBOb3RpZmljYXRpb25TdWJzY3JpcHRpb25EdG8sXG4gIFJURXZlbnRTdWJzY3JpcHRpb25EdG8sIFJ0RXZlbnRUeXBlLCBTZXJ2aWNlc1J1bm5pbmdTdGF0dXNEdG8sIFpvbmVEdG9cbn0gZnJvbSAnLi4vc2VydmljZS1wcm94eS9lZGdlLXNlcnZpY2UtcHJveGllcyc7XG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9hcHAtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgR2VuZXJhbEFjdGlvblNlcnZpY2UgfSBmcm9tICcuL2dlbmVyYWwtYWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVhbHRpbWVFdmVudFNlcnZpY2UgfSBmcm9tICcuL3JlYWx0aW1lLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9zZXNzaW9uLXN0b3JhZ2Uuc2VydmljZSc7XG5cbmV4cG9ydCBjbGFzcyBTaWduYWxST2JqZWN0IHtcbiAgY29uc3RydWN0b3IocHVibGljIGd1aWQ6IHN0cmluZywgcHVibGljIGpzb25QYXlsb2FkOiBzdHJpbmcpIHtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUlRPYmplY3RPYmplY3QgZXh0ZW5kcyBTaWduYWxST2JqZWN0IHtcbiAgY29uc3RydWN0b3IocHVibGljIHJ0RXZlbnRUeXBlOiBSdEV2ZW50VHlwZSwgcHVibGljIHBhcmtJZDogbnVtYmVyLCBwdWJsaWMgZ3VpZDogc3RyaW5nLCBwdWJsaWMganNvblBheWxvYWQ6IHN0cmluZykge1xuICAgIHN1cGVyKGd1aWQsIGpzb25QYXlsb2FkKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU3BhcmtOb3RpZmljYXRpb24gZXh0ZW5kcyBTaWduYWxST2JqZWN0IHtcbiAgY29uc3RydWN0b3IocHVibGljIG5vdGlmaWNhdGlvblR5cGU6IE5vdGlmaWNhdGlvbkV2ZW50VHlwZSwgcHVibGljIGd1aWQ6IHN0cmluZywgcHVibGljIGlkZW50aWZpZXI6IHN0cmluZywgcHVibGljIGpzb25QYXlsb2FkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihndWlkLCBqc29uUGF5bG9hZCk7XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNpZ25hbFIge1xuXG4gIHB1YmxpYyBjb25uZWN0aW9uOiBIdWJDb25uZWN0aW9uO1xuICBwdWJsaWMgc3Vic2NyaXB0aW9uUXVldWU6IGFueVtdID0gW107XG4gIHB1YmxpYyBub3RpZmljYXRpb25TdWJzY3JpcHRpb25RdWV1ZTogYW55W10gPSBbXTtcblxuICBwcm90ZWN0ZWQgc3RvcmU6IFN0b3JlO1xuICBwcm90ZWN0ZWQgcmVhbHRpbWVFdmVudFNlcnZpY2U6IFJlYWx0aW1lRXZlbnRTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgbm90aWZpY2F0aW9uRXZlbnRTZXJ2aWNlOiBOb3RpZmljYXRpb25FdmVudFNlcnZpY2U7XG4gIHByb3RlY3RlZCBzZXNzaW9uU3RvcmFnZVNlcnZpY2U6IFNlc3Npb25TdG9yYWdlU2VydmljZTtcbiAgcHJvdGVjdGVkIGFwcENvbmZpZzogQXBwQ29uZmlnU2VydmljZTtcbiAgcHJvdGVjdGVkIGdlbmVyYWxBY3Rpb25TZXJ2aWNlOiBHZW5lcmFsQWN0aW9uU2VydmljZTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgdGhpcy5zdG9yZSA9IGluamVjdG9yLmdldChTdG9yZSk7XG4gICAgdGhpcy5yZWFsdGltZUV2ZW50U2VydmljZSA9IGluamVjdG9yLmdldChSZWFsdGltZUV2ZW50U2VydmljZSk7XG4gICAgdGhpcy5ub3RpZmljYXRpb25FdmVudFNlcnZpY2UgPSBpbmplY3Rvci5nZXQoTm90aWZpY2F0aW9uRXZlbnRTZXJ2aWNlKTtcbiAgICB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZSA9IGluamVjdG9yLmdldChTZXNzaW9uU3RvcmFnZVNlcnZpY2UpO1xuICAgIHRoaXMuYXBwQ29uZmlnID0gaW5qZWN0b3IuZ2V0KEFwcENvbmZpZ1NlcnZpY2UpO1xuICAgIHRoaXMuZ2VuZXJhbEFjdGlvblNlcnZpY2UgPSBpbmplY3Rvci5nZXQoR2VuZXJhbEFjdGlvblNlcnZpY2UpO1xuICB9XG5cbiAgcHVibGljIGluaXRSZWFsdGltZUV2ZW50TGlzdGVuZXJzKCkge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuYXBwQ29uZmlnLmdldENvbmZpZygpO1xuICAgIGNvbnN0IGJhc2VVcmwgPSBjb25maWcuYXBwVHlwZSA9PT0gQXBwVHlwZS5Nb2JpbGUgPyBjb25maWcuYXBpQmFzZVVSTCA6ICcnO1xuICAgIGNvbnN0IHVybCA9IGAke2Jhc2VVcmx9L3JlYWx0aW1lYDtcblxuICAgIGRhdGFkb2dMb2dzLmxvZ2dlci5pbmZvKGBSVCBBUEkgQmFzZSBVcmwgLSAke3VybH1gKTtcblxuICAgIGNvbnN0IG1heENvbnNlY3V0aXZlRmFpbGVkUmV0cnlDb3VudCA9IGNvbmZpZy5zaWduYWxSLm1heENvbnNlY3V0aXZlRmFpbGVkUmV0cnlDb3VudDtcblxuICAgIHRoaXMuY29ubmVjdGlvbiA9IG5ldyBIdWJDb25uZWN0aW9uQnVpbGRlcigpXG4gICAgICAud2l0aFVybCh1cmwsIHsgYWNjZXNzVG9rZW5GYWN0b3J5OiAoKSA9PiB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5hY2Nlc3NUb2tlbiB9KVxuICAgICAgLndpdGhBdXRvbWF0aWNSZWNvbm5lY3QobmV3IFRpYmFSZXRyeVBvbGljeShtYXhDb25zZWN1dGl2ZUZhaWxlZFJldHJ5Q291bnQpKVxuICAgICAgLmJ1aWxkKCk7XG5cbiAgICB0aGlzLmNvbm5lY3Rpb24ub25yZWNvbm5lY3RpbmcoKGVycm9yKSA9PiB7XG4gICAgICBkYXRhZG9nTG9ncy5sb2dnZXIuaW5mbygnQXR0ZW1wdGluZyB0byByZWNvbm5lY3Q6JywgZXJyb3IpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jb25uZWN0aW9uLm9uY2xvc2UoKGVycm9yKSA9PiB7XG4gICAgICBkYXRhZG9nTG9ncy5sb2dnZXIuaW5mbygnQ29ubmVjdGlvbiBjbG9zZWQgYWZ0ZXIgYWxsIHJldHJ5IGF0dGVtcHRzOicsIGVycm9yKTtcbiAgICB9KTtcblxuICAgIHRoaXMuY29ubmVjdGlvbi5vbnJlY29ubmVjdGVkKChjb25uZWN0aW9uSWQpID0+IHtcbiAgICAgIGRhdGFkb2dMb2dzLmxvZ2dlci5pbmZvKGBTdWNjZXNzZnVsbHkgcmVjb25uZWN0ZWQgU0lHTkFMUiEuIENvbm5lY3Rpb25JZDogJHtjb25uZWN0aW9uSWR9YCk7XG5cbiAgICAgIHRoaXMuY2hlY2tGb3JVcGRhdGUoKTtcbiAgICAgIGNvbnN0IGd1aWQgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuZ3VpZCk7XG4gICAgICBpZiAoISFndWlkKSB7XG4gICAgICAgIHRoaXMuc2V0U3BhcmtDb3JlQ29ubmVjdGlvbih0cnVlLCBndWlkKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlY29ubmVjdFJ0RXZlbnRzU3Vic2NyaXB0aW9ucyA9IHRoaXMucmVhbHRpbWVFdmVudFNlcnZpY2UuZ2V0U3Vic2NyaXB0aW9uRm9yUmVjb25uZWN0KCk7XG4gICAgICB0aGlzLmludm9rZVJlYWx0aW1lUmVnaXN0cmF0aW9uKHJlY29ubmVjdFJ0RXZlbnRzU3Vic2NyaXB0aW9ucywgdGhpcy5oYW5kbGVSZWFsVGltZUF3YWl0aW5nU3Vic2NyaXB0aW9ucy5iaW5kKHRoaXMpKTtcblxuICAgICAgY29uc3Qgbm90aWZpY2F0aW9uU3Vic2NyaXB0aW9ucyA9IHRoaXMubm90aWZpY2F0aW9uRXZlbnRTZXJ2aWNlLmdldFN1YnNjcmlwdGlvbkZvclJlY29ubmVjdCgpO1xuICAgICAgbm90aWZpY2F0aW9uU3Vic2NyaXB0aW9ucy5mb3JFYWNoKG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbiA9PiB7XG4gICAgICAgIHRoaXMuaW52b2tlTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbik7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5oYW5kbGVOb3RpZmljYXRpb25Bd2FpdGluZ1N1YnNjcmlwdGlvbigpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jb25uZWN0aW9uLm9uKCdSdEV2ZW50JywgKHJ0RXZlbnRUeXBlOiBSdEV2ZW50VHlwZSwgcGFya0lkOiBudW1iZXIsIGd1aWQ6IHN0cmluZywganNvblBheWxvYWQ6IHN0cmluZykgPT4ge1xuICAgICAgb2YobmV3IFJUT2JqZWN0T2JqZWN0KHJ0RXZlbnRUeXBlLCBwYXJrSWQsIGd1aWQsIGpzb25QYXlsb2FkKSlcbiAgICAgICAgLnBpcGUodGhpcy5oYW5kbGVKc29uUGF5bG9hZFRvTG93ZXIoKSlcbiAgICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAgICAgdGhpcy5fZGlzcGF0Y2hSdEV2ZW50KHJlcyBhcyBSVE9iamVjdE9iamVjdCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jb25uZWN0aW9uLm9uKCdOb3RpZmljYXRpb24nLCAodHlwZTogTm90aWZpY2F0aW9uRXZlbnRUeXBlLCBndWlkOiBzdHJpbmcsIGlkZW50aWZpZXI6IHN0cmluZywganNvblBheWxvYWQ6IHN0cmluZykgPT4ge1xuICAgICAgb2YobmV3IFNwYXJrTm90aWZpY2F0aW9uKHR5cGUsIGd1aWQsIGlkZW50aWZpZXIsIGpzb25QYXlsb2FkKSlcbiAgICAgICAgLnBpcGUodGhpcy5oYW5kbGVKc29uUGF5bG9hZFRvTG93ZXIoKSlcbiAgICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAgICAgdGhpcy5fZGlzcGF0Y2hOb3RpZmljYXRpb24ocmVzIGFzIFNwYXJrTm90aWZpY2F0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY2hlY2tGb3JVcGRhdGUoKTogdm9pZDtcblxuICBwdWJsaWMgY29ubmVjdCgpIHtcbiAgICB0aGlzLl9jb25uZWN0KHRoaXMuY29ubmVjdGlvbik7XG4gIH1cblxuICBwdWJsaWMgZGlzY29ubmVjdCgpIHtcbiAgICB0aGlzLl9kaXNjb25uZWN0KHRoaXMuY29ubmVjdGlvbik7XG4gIH1cblxuICBzdWJzY3JpYmVGb3JSZWFsdGltZShydEV2ZW50U3Vic2NyaXB0aW9uczogUlRFdmVudFN1YnNjcmlwdGlvbkR0bywgdHJpZ2dlckZ1bmN0aW9uPzogKCkgPT4gdm9pZCkge1xuICAgIGlmICh0aGlzLmNvbm5lY3Rpb24pIHtcbiAgICAgIGlmICh0aGlzLmNvbm5lY3Rpb24uc3RhdGUgIT09IEh1YkNvbm5lY3Rpb25TdGF0ZS5Db25uZWN0ZWQpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25RdWV1ZS5wdXNoKCgpID0+IHRoaXMuc3Vic2NyaWJlRm9yUmVhbHRpbWUocnRFdmVudFN1YnNjcmlwdGlvbnMsIHRyaWdnZXJGdW5jdGlvbikpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcnRFdmVudFN1YnNjcmlwdGlvbkRlbHRhID0gdGhpcy5yZWFsdGltZUV2ZW50U2VydmljZS5oYW5kbGVSZWFsdGltZUV2ZW50c1N1YnNjcmlwdGlvbnMocnRFdmVudFN1YnNjcmlwdGlvbnMpO1xuICAgICAgICBpZiAocnRFdmVudFN1YnNjcmlwdGlvbkRlbHRhLnN1YnNjcmliZS5sZW5ndGggfHwgcnRFdmVudFN1YnNjcmlwdGlvbkRlbHRhLnVuU3Vic2NyaWJlLmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMuaW52b2tlUmVhbHRpbWVSZWdpc3RyYXRpb24ocnRFdmVudFN1YnNjcmlwdGlvbkRlbHRhLCB0cmlnZ2VyRnVuY3Rpb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3Vic2NyaWJlRm9yTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25TdWJzY3JpcHRpb246IE5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbkR0bywgdHJpZ2dlckZ1bmN0aW9uPzogKCkgPT4gdm9pZCkge1xuICAgIGlmICh0aGlzLmNvbm5lY3Rpb24pIHtcbiAgICAgIGlmICh0aGlzLmNvbm5lY3Rpb24uc3RhdGUgIT09IEh1YkNvbm5lY3Rpb25TdGF0ZS5Db25uZWN0ZWQpIHtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TdWJzY3JpcHRpb25RdWV1ZS5wdXNoKCgpID0+IHRoaXMuc3Vic2NyaWJlRm9yTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25TdWJzY3JpcHRpb24sIHRyaWdnZXJGdW5jdGlvbikpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uRGVsdGEgPSB0aGlzLm5vdGlmaWNhdGlvbkV2ZW50U2VydmljZS5oYW5kbGVOb3RpZmljYXRpb25TdWJzY3JpcHRpb25zKG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbik7XG4gICAgICAgIGlmICghIW5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbkRlbHRhKSB7XG4gICAgICAgICAgdGhpcy5pbnZva2VOb3RpZmljYXRpb25SZWdpc3RyYXRpb24obm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uRGVsdGEsIHRyaWdnZXJGdW5jdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGludm9rZVJlYWx0aW1lUmVnaXN0cmF0aW9uKHJ0RXZlbnRTdWJzY3JpcHRpb25zOiBSVEV2ZW50U3Vic2NyaXB0aW9uRHRvLCB0cmlnZ2VyRnVuY3Rpb24/OiAoKSA9PiB2b2lkKSB7XG4gICAgY29uc3QgYXBwTW9kdWxlID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChTaWRlbmF2U3RhdGUuYXBwTW9kdWxlKTtcbiAgICBpZiAocnRFdmVudFN1YnNjcmlwdGlvbnMudXNlcklkKSB7XG4gICAgICB0aGlzLmNvbm5lY3Rpb24uaW52b2tlPFJURXZlbnRTdWJzY3JpcHRpb25EdG8+KCdSZWdpc3RlclBhcmsnLCBydEV2ZW50U3Vic2NyaXB0aW9ucywgYXBwTW9kdWxlKS50aGVuKChzdWJUbykgPT4ge1xuICAgICAgICBpZiAodHJpZ2dlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgdHJpZ2dlckZ1bmN0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW52b2tlTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbjogTm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uRHRvLCB0cmlnZ2VyRnVuY3Rpb24/OiAoKSA9PiB2b2lkKSB7XG4gICAgaWYgKG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbiAmJiBub3RpZmljYXRpb25TdWJzY3JpcHRpb24udXNlcklkKSB7XG4gICAgICB0aGlzLmNvbm5lY3Rpb24uaW52b2tlPE5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbkR0bz4oJ1JlZ2lzdGVyTm90aWZpY2F0aW9ucycsIG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbikudGhlbigoc3ViVG8pID0+IHtcbiAgICAgICAgaWYgKHRyaWdnZXJGdW5jdGlvbikge1xuICAgICAgICAgIHRyaWdnZXJGdW5jdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0U3BhcmtDb3JlQ29ubmVjdGlvbihpc0Nvbm5lY3RlZDogYm9vbGVhbiwgZ3VpZDogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2VydmljZXNSdW5uaW5nU3RhdHVzID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLnNlcnZpY2VzUnVubmluZ1N0YXR1c0RpY3Rpb25hcnkpW2d1aWRdO1xuICAgIHNlcnZpY2VzUnVubmluZ1N0YXR1cy5pc1NwYXJrQ29yZUNvbm5lY3RlZCA9IGlzQ29ubmVjdGVkO1xuICAgIGlmICghaXNDb25uZWN0ZWQpIHtcbiAgICAgIGNvbnN0IGZhY2lsaXR5R3VpZCA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5ndWlkKTtcbiAgICAgIGNvbnN0IHNlcnZlckNsaWVudFRpbWVTcGFuID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmNsaWVudFNlcnZlckRpZmZEaWN0aW9uYXJ5KVtmYWNpbGl0eUd1aWRdIHx8IDA7XG4gICAgICBzZXJ2aWNlc1J1bm5pbmdTdGF0dXMuc3BhcmtDb3JlRGlzY29ubmVjdGVkVGltZXN0YW1wID0gbW9tZW50KCkuc3VidHJhY3Qoc2VydmVyQ2xpZW50VGltZVNwYW4sICdtaWxsaXNlY29uZHMnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VydmljZXNSdW5uaW5nU3RhdHVzLnNwYXJrQ29yZURpc2Nvbm5lY3RlZFRpbWVzdGFtcCA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMuc2VydmljZXNSdW5uaW5nU3RhdHVzQ2hhbmdlZChzZXJ2aWNlc1J1bm5pbmdTdGF0dXMsIGd1aWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVKc29uUGF5bG9hZFRvTG93ZXIoKTogTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uPFNpZ25hbFJPYmplY3Q+IHtcbiAgICByZXR1cm4gJGlucHV0ID0+ICRpbnB1dC5waXBlKG1hcChyZXMgPT4ge1xuICAgICAgY29uc3Qgb2JqID0gSlNPTi5wYXJzZShyZXMuanNvblBheWxvYWQpO1xuICAgICAgcmVzLmpzb25QYXlsb2FkID0gSlNPTi5zdHJpbmdpZnkob2JqLCAoa2V5LCB2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICBjb25zdCByZXBsYWNlbWVudCA9IHt9O1xuICAgICAgICAgIGZvciAoY29uc3QgayBpbiB2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBrKSkge1xuICAgICAgICAgICAgICBpZiAoay5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICByZXBsYWNlbWVudFtrICYmIGsudG9Mb3dlckNhc2UoKV0gPSB2YWx1ZVtrXTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXBsYWNlbWVudFtrICYmIGsuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgKyBrLnN1YnN0cmluZygxKV0gPSB2YWx1ZVtrXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmVwbGFjZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0pKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBkaXNwYXRjaE5vdGlmaWNhdGlvbihvYmo6IFNwYXJrTm90aWZpY2F0aW9uKTogdm9pZDtcblxuICBwcml2YXRlIF9kaXNwYXRjaE5vdGlmaWNhdGlvbihvYmo6IFNwYXJrTm90aWZpY2F0aW9uKSB7XG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2Uob2JqLmpzb25QYXlsb2FkKTtcbiAgICBjb25zb2xlLmRlYnVnKGBSZWNlaXZlZCBOb3RpZmljYXRpb24gdHlwZSA9PT0+ICR7b2JqLm5vdGlmaWNhdGlvblR5cGV9YCk7XG4gICAgc3dpdGNoIChvYmoubm90aWZpY2F0aW9uVHlwZSkge1xuICAgICAgY2FzZSBOb3RpZmljYXRpb25FdmVudFR5cGUuSW5pdGlhbENsb3VkQ29ubmVjdDpcbiAgICAgICAgdGhpcy5pbml0aWFsaXplU21hcnRQYXJrQ29ubmVjdGlvbihkYXRhKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE5vdGlmaWNhdGlvbkV2ZW50VHlwZS5GYWNpbGl0eVJlbW90ZUNvbW1hbmRFeGVjdXRlZDpcbiAgICAgICAgLy8gVE9ETzogdGhpcyBjb25kaXRpb24gd2lsbCBiZSByZW1vdmVkIHdoZW4gYWxsIFwiRmFjaWxpdHlSZW1vdGVDb21tYW5kRXhlY3V0ZWRcIiBub3RpZmljYXRpb25cbiAgICAgICAgLy8gd2lsbCBiZSByZW1vdmVkIHVwb24gYmVpbmcgZXhlY3V0ZWQgaW4gdGhlIHNlcnZlclxuICAgICAgICAvLyBGb3IgbW9yZSBleHBsYW5hdGlvbiBzZWU6IFNQUkszLTY3MDRcbiAgICAgICAgaWYgKGRhdGEudHlwZSA9PT0gRmFjaWxpdHlSZW1vdGVDb21tYW5kVHlwZXMuVHJhbnNtaXRTcGVjaWFsRGF5cykge1xuICAgICAgICAgIGNvbnN0IG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbiA9IHRoaXMubm90aWZpY2F0aW9uRXZlbnRTZXJ2aWNlLmdldE5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbnNFbnRpdHkoKTtcbiAgICAgICAgICBub3RpZmljYXRpb25TdWJzY3JpcHRpb24udHlwZSA9IG9iai5ub3RpZmljYXRpb25UeXBlO1xuICAgICAgICAgIG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSA9IHRydWU7XG4gICAgICAgICAgbm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uLmlkZW50aWZpZXIgPSB0aGlzLm5vdGlmaWNhdGlvbkV2ZW50U2VydmljZS5nZXROb3RpZmljYXRpb25JZGVudGlmaWVyKGRhdGEuZ3VpZCwgZGF0YS5wYXJrSWQsXG4gICAgICAgICAgICBvYmoubm90aWZpY2F0aW9uVHlwZSwgbm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uLnVzZXJJZCk7XG4gICAgICAgICAgdGhpcy5zdWJzY3JpYmVGb3JOb3RpZmljYXRpb25zKG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZhY2lsaXR5UmVtb3RlQ29tbWFuZEV4ZWN1dGVkKGRhdGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlLkdlbmVyYWxBY3Rpb25zOlxuICAgICAgICB0aGlzLmdlbmVyYWxBY3Rpb25TZXJ2aWNlLmRpc3BhdGNoR2VuZXJhbEFjdGlvbnMoZGF0YSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBOb3RpZmljYXRpb25FdmVudFR5cGUuSGFuZGxlTm90aWZpY2F0aW9uOlxuICAgICAgICB0aGlzLmhhbmRsZU5vdGlmaWNhdGlvbihOb3RpZmljYXRpb25EdG8uZnJvbUpTKGRhdGEpLCBvYmouZ3VpZCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIE5vdGlmaWNhdGlvbkV2ZW50VHlwZS5SZXBvcnRHZW5lcmF0ZWQ6XG4gICAgICBjYXNlIE5vdGlmaWNhdGlvbkV2ZW50VHlwZS5SZWNlaXB0R2VuZXJhdGVkOlxuICAgICAgY2FzZSBOb3RpZmljYXRpb25FdmVudFR5cGUuU3RpY2tlckdlbmVyYXRlZDpcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlLkFwcGxpY2F0aW9uVXBkYXRlOlxuICAgICAgY2FzZSBOb3RpZmljYXRpb25FdmVudFR5cGUuQ3JlYXRlUm9sZTpcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlLlVwZGF0ZVJvbGU6XG4gICAgICAgIHRoaXMuZGlzcGF0Y2hOb3RpZmljYXRpb24ob2JqKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLmRlYnVnKGBVbmtub3duIG5vdGlmaWNhdGlvbiB0eXBlID09PT4gJHtvYmoubm90aWZpY2F0aW9uVHlwZX1gKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGRpc3BhdGNoUnRFdmVudChvYmo6IFJUT2JqZWN0T2JqZWN0KTogdm9pZDtcblxuICBwcml2YXRlIF9kaXNwYXRjaFJ0RXZlbnQob2JqOiBSVE9iamVjdE9iamVjdCkge1xuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKG9iai5qc29uUGF5bG9hZCk7XG4gICAgc3dpdGNoIChvYmoucnRFdmVudFR5cGUpIHtcbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuRGV2aWNlU3RhdHVzOlxuICAgICAgICB0aGlzLmRldmljZXNTdGF0dXNDaGFuZ2VkKERldmljZVN0YXR1c0R0by5mcm9tSlMoZGF0YSkpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBSdEV2ZW50VHlwZS5EeW5hbWljUHJpY2luZ0NvbmRpdGlvbjpcbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuQWxlcnQ6XG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLkxvc3RUaWNrZXQ6XG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLkxQUm1pc21hdGNoOlxuICAgICAgICBkYXRhZG9nTG9ncy5sb2dnZXIuaW5mbyhgUlQgLSBHb3QgJHtKU09OLnN0cmluZ2lmeShkYXRhKX0gZXZlbnRgKTtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25DaGFuZ2VkKE5vdGlmaWNhdGlvbkR0by5mcm9tSlMoZGF0YSksIG9iai5ndWlkKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuUGFya1N0YXRlOlxuICAgICAgICBkYXRhZG9nTG9ncy5sb2dnZXIuaW5mbyhgUlQgLSBHb3QgJHtKU09OLnN0cmluZ2lmeShkYXRhKX0gZXZlbnRgKTtcbiAgICAgICAgdGhpcy5kZXZpY2VBY3Rpdml0eUNoYW5nZWQoZGF0YSk7XG4gICAgICAgIHRoaXMucGFya0FjdGl2aXR5Q2hhbmdlZChkYXRhKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuRGV2aWNlRXZlbnQ6XG4gICAgICAgIHRoaXMuZGV2aWNlRXZlbnRDaGFuZ2VkKGRhdGEpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBSdEV2ZW50VHlwZS5TZXJ2aWNlc1N0YXR1czpcbiAgICAgICAgdGhpcy5zZXJ2aWNlc1J1bm5pbmdTdGF0dXNDaGFuZ2VkKFNlcnZpY2VzUnVubmluZ1N0YXR1c0R0by5mcm9tSlMoZGF0YSksIG9iai5ndWlkKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuWm9uZTpcbiAgICAgICAgdGhpcy56b25lQ2hhbmdlZChab25lRHRvLmZyb21KUyhkYXRhKSwgb2JqLnBhcmtJZCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLkZhY2lsaXR5OlxuICAgICAgICB0aGlzLmZhY2lsaXR5Q2hhbmdlZChGYWNpbGl0eUR0by5mcm9tSlMoZGF0YSksIG9iai5ndWlkKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuT2NjdXBhbmN5OlxuICAgICAgY2FzZSBSdEV2ZW50VHlwZS5SZXZlbnVlOlxuICAgICAgY2FzZSBSdEV2ZW50VHlwZS5PcGVuVGlja2V0VHJhbnNhY3Rpb246XG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLkNsb3NlVGlja2V0VHJhbnNhY3Rpb246XG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLk1vbnRobHlUcmFuc2FjdGlvbjpcbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuR3Vlc3RUcmFuc2FjdGlvbjpcbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuUGF5bWVudFRyYW5zYWN0aW9uOlxuICAgICAgY2FzZSBSdEV2ZW50VHlwZS5MUFJUcmFuc2FjdGlvbjpcbiAgICAgICAgdGhpcy5kaXNwYXRjaFJ0RXZlbnQob2JqKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnNvbGUuZGVidWcoYFVua25vd24gZXZlbnQgdHlwZSA9PT0+ICR7b2JqLnJ0RXZlbnRUeXBlfWApO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jb25uZWN0KGNvbm5lY3Rpb246IEh1YkNvbm5lY3Rpb24pIHtcbiAgICBjb25zb2xlLmRlYnVnKCdTaWduYWxSIEVzdGFibGlzaGluZyBDb25uZWN0aW9uLi4uJyk7XG4gICAgY29ubmVjdGlvbi5zdGFydCgpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZGVidWcoYFNpZ25hbFIgQ29ubmVjdGlvbiBFc3RhYmxpc2hlZCFgKTtcbiAgICAgICAgdGhpcy5oYW5kbGVSZWFsVGltZUF3YWl0aW5nU3Vic2NyaXB0aW9ucygpO1xuICAgICAgICB0aGlzLmhhbmRsZU5vdGlmaWNhdGlvbkF3YWl0aW5nU3Vic2NyaXB0aW9uKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGFzeW5jIChlKSA9PiB7XG4gICAgICAgIHRoaXMucmV0cnlDb25uZWN0aW9uKGNvbm5lY3Rpb24sIDEpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9kaXNjb25uZWN0KGNvbm5lY3Rpb246IEh1YkNvbm5lY3Rpb24pIHtcbiAgICBjb25zb2xlLmRlYnVnKCdTaWduYWxSIFN0b3BwaW5nIENvbm5lY3Rpb24uLi4nKTtcbiAgICBjb25uZWN0aW9uPy5zdG9wKClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgY29uc29sZS5kZWJ1ZyhgU2lnbmFsUiBDb25uZWN0aW9uIFN0b3BwZWQhYCk7XG4gICAgICAgIHRoaXMuaGFuZGxlRGlzY29ubmVjdCgpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChhc3luYyAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yID0+ICR7ZXJyfSwgVGltZXN0YW1wOiAke25ldyBEYXRlKCl9YCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmV0cnlDb25uZWN0aW9uKGNvbm5lY3Rpb246IEh1YkNvbm5lY3Rpb24sIHJldHJ5Q291bnQ6IG51bWJlcik6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc29sZS5kZWJ1ZyhgU2lnbmFsUiBFc3RhYmxpc2hpbmcgQ29ubmVjdGlvbi4gUmV0cnkgIyR7cmV0cnlDb3VudH0uIFRpbWVzdGFtcDogJHtuZXcgRGF0ZSgpfWApXG4gICAgICBjb25uZWN0aW9uLnN0YXJ0KClcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZGVidWcoYFNpZ25hbFIgQ29ubmVjdGlvbiBFc3RhYmxpc2hlZCEgUmV0cnkgIyR7cmV0cnlDb3VudH1gKTtcbiAgICAgICAgICB0aGlzLmhhbmRsZVJlYWxUaW1lQXdhaXRpbmdTdWJzY3JpcHRpb25zKCk7XG4gICAgICAgICAgdGhpcy5oYW5kbGVOb3RpZmljYXRpb25Bd2FpdGluZ1N1YnNjcmlwdGlvbigpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuYXBwQ29uZmlnLmdldENvbmZpZygpO1xuXG4gICAgICAgICAgaWYgKHJldHJ5Q291bnQgPD0gY29uZmlnLnNpZ25hbFIubWF4Q29uc2VjdXRpdmVGYWlsZWRSZXRyeUNvdW50KSB7XG4gICAgICAgICAgICB0aGlzLnJldHJ5Q29ubmVjdGlvbihjb25uZWN0aW9uLCByZXRyeUNvdW50ICsgMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9LCBnZXRTZWNvbmRzQmFja29mZihyZXRyeUNvdW50KSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVJlYWxUaW1lQXdhaXRpbmdTdWJzY3JpcHRpb25zKCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uUXVldWUuZm9yRWFjaChhd2FpdGluZ1N1YnNjcmlwdGlvbiA9PiBhd2FpdGluZ1N1YnNjcmlwdGlvbigpKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvblF1ZXVlLnNwbGljZSgwKTtcbiAgfVxuICBwcml2YXRlIGhhbmRsZU5vdGlmaWNhdGlvbkF3YWl0aW5nU3Vic2NyaXB0aW9uKCkge1xuICAgIHRoaXMubm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uUXVldWUuZm9yRWFjaChhd2FpdGluZ1N1YnNjcmlwdGlvbiA9PiBhd2FpdGluZ1N1YnNjcmlwdGlvbigpKTtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblN1YnNjcmlwdGlvblF1ZXVlLnNwbGljZSgwKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRGlzY29ubmVjdCgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvblF1ZXVlID0gW107XG4gICAgdGhpcy5ub3RpZmljYXRpb25TdWJzY3JpcHRpb25RdWV1ZSA9IFtdO1xuICAgIHRoaXMucmVhbHRpbWVFdmVudFNlcnZpY2UucmVzZXRBbGxTdWJzY3JpcHRpb25zKCk7XG4gIH1cblxuICBARGlzcGF0Y2goKSBkZXZpY2VzU3RhdHVzQ2hhbmdlZCA9IChkZXZpY2VTdGF0dXM6IERldmljZVN0YXR1c0R0bykgPT5cbiAgICBuZXcgRGV2aWNlU3RhdHVzQ2hhbmdlZEFjdGlvbihkZXZpY2VTdGF0dXMpO1xuICBARGlzcGF0Y2goKSBmYWNpbGl0eUNoYW5nZWQgPSAoZGF0YTogRmFjaWxpdHlEdG8sIGd1aWQ6IHN0cmluZykgPT5cbiAgICBuZXcgRmFjaWxpdHlDaGFuZ2VkQWN0aW9uKGRhdGEsIGd1aWQpO1xuICBARGlzcGF0Y2goKSBzZXJ2aWNlc1J1bm5pbmdTdGF0dXNDaGFuZ2VkID0gKHNlcnZpY2VzUnVubmluZ1N0YXR1czogU2VydmljZXNSdW5uaW5nU3RhdHVzRHRvLCBndWlkOiBzdHJpbmcpID0+XG4gICAgbmV3IFNlcnZpY2VzUnVubmluZ1N0YXR1c0NoYW5nZWRBY3Rpb24oc2VydmljZXNSdW5uaW5nU3RhdHVzLCBndWlkKTtcbiAgQERpc3BhdGNoKCkgcGFya0FjdGl2aXR5Q2hhbmdlZCA9IChhY3Rpdml0eTogRXZlbnRBY3Rpdml0eUR0bykgPT5cbiAgICBuZXcgUGFya0FjdGl2aXR5Q2hhbmdlZEFjdGlvbihhY3Rpdml0eSk7XG4gIEBEaXNwYXRjaCgpIGRldmljZUV2ZW50Q2hhbmdlZCA9IChkZXZFdmVudDogRGV2aWNlRXZlbnREdG8pID0+XG4gICAgbmV3IERldmljZUV2ZW50Q2hhbmdlZEFjdGlvbihkZXZFdmVudCk7XG4gIEBEaXNwYXRjaCgpIGRldmljZUFjdGl2aXR5Q2hhbmdlZCA9IChldmVudEFjdGl2aXR5OiBFdmVudEFjdGl2aXR5RHRvKSA9PlxuICAgIG5ldyBEZXZpY2VBY3Rpdml0eUNoYW5nZWRBY3Rpb24oZXZlbnRBY3Rpdml0eSk7XG4gIEBEaXNwYXRjaCgpIGxwclRyYW5zYWN0aW9uc0NoYW5nZWQgPSAobHByVHJhbnM6IExwclRyYW5zYWN0aW9uRHRvKSA9PlxuICAgIG5ldyBMcHJUcmFuc2FjdGlvbnNDaGFuZ2VkQWN0aW9uKGxwclRyYW5zKTtcbiAgQERpc3BhdGNoKCkgbm90aWZpY2F0aW9uQ2hhbmdlZCA9IChub3RpZmljYXRpb25EdG86IE5vdGlmaWNhdGlvbkR0bywgZ3VpZDogc3RyaW5nKSA9PlxuICAgIG5ldyBOb3RpZmljYXRpb25DaGFuZ2VBY3Rpb24obm90aWZpY2F0aW9uRHRvLCBndWlkKTtcbiAgQERpc3BhdGNoKCkgaGFuZGxlTm90aWZpY2F0aW9uID0gKG5vdGlmaWNhdGlvbkR0bzogTm90aWZpY2F0aW9uRHRvLCBndWlkOiBzdHJpbmcpID0+XG4gICAgbmV3IEhhbmRsZU5vdGlmaWNhdGlvbkFjdGlvbihub3RpZmljYXRpb25EdG8sIGd1aWQpO1xuICBARGlzcGF0Y2goKSB6b25lQ2hhbmdlZCA9ICh6b25lRHRvOiBab25lRHRvLCBwYXJrSWQ6IG51bWJlcikgPT5cbiAgICBuZXcgWm9uZUNoYW5nZWRBY3Rpb24oem9uZUR0bywgcGFya0lkKTtcbiAgQERpc3BhdGNoKCkgaW5pdGlhbGl6ZVNtYXJ0UGFya0Nvbm5lY3Rpb24gPSAoc21hcnRwYXJrOiBTbWFydHBhcmtEdG8pID0+XG4gICAgbmV3IEFkZFNtYXJ0cGFya0FjdGlvbihzbWFydHBhcmspO1xuICBARGlzcGF0Y2goKSBmYWNpbGl0eVJlbW90ZUNvbW1hbmRFeGVjdXRlZCA9IChmYWNpbGl0eVJlbW90ZUNvbW1hbmRFdmVudDogRmFjaWxpdHlSZW1vdGVDb21tYW5kRXZlbnQpID0+XG4gICAgbmV3IEZhY2lsaXR5UmVtb3RlQ29tbWFuZEV4ZWN1dGVkQWN0aW9uKGZhY2lsaXR5UmVtb3RlQ29tbWFuZEV2ZW50KTtcbn1cblxuZXhwb3J0IGNsYXNzIFRpYmFSZXRyeVBvbGljeSBpbXBsZW1lbnRzIHNpZ25hbFIuSVJldHJ5UG9saWN5IHtcblxuICBwcml2YXRlIG1heENvbnNlY3V0aXZlRmFpbGVkUmV0cnlDb3VudDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKG1heENvbnNlY3V0aXZlRmFpbGVkUmV0cnlDb3VudDogbnVtYmVyKSB7XG4gICAgdGhpcy5tYXhDb25zZWN1dGl2ZUZhaWxlZFJldHJ5Q291bnQgPSBtYXhDb25zZWN1dGl2ZUZhaWxlZFJldHJ5Q291bnQ7XG4gIH1cblxuICBuZXh0UmV0cnlEZWxheUluTWlsbGlzZWNvbmRzKHJldHJ5Q29udGV4dDogc2lnbmFsUi5SZXRyeUNvbnRleHQpOiBudW1iZXIge1xuICAgIGxldCBtaWxsaXNlY29uZHM6IG51bWJlciA9IG51bGw7XG4gICAgY29uc3QgY3VycmVudFJldHJ5Q291bnQgPSByZXRyeUNvbnRleHQucHJldmlvdXNSZXRyeUNvdW50ICsgMTtcblxuICAgIGlmIChjdXJyZW50UmV0cnlDb3VudCA8IHRoaXMubWF4Q29uc2VjdXRpdmVGYWlsZWRSZXRyeUNvdW50KSB7XG4gICAgICBjb25zdCB1bmF1dGhvcml6ZWQgPSByZXRyeUNvbnRleHQucmV0cnlSZWFzb24ubWVzc2FnZS5pbmNsdWRlcyhgU3RhdHVzIGNvZGUgJyR7SHR0cFN0YXR1c0NvZGUuVW5hdXRob3JpemVkfSdgKTtcblxuICAgICAgaWYgKHVuYXV0aG9yaXplZCkge1xuICAgICAgICBkYXRhZG9nTG9ncy5sb2dnZXIuaW5mbyhgVGliYVJldHJ5UG9saWN5IC0+IHVuYXV0aG9yaXplZCB0b2tlbi4gTWVzc2FnZTogICR7cmV0cnlDb250ZXh0LnJldHJ5UmVhc29uLm1lc3NhZ2V9YCk7XG4gICAgICAgIHRoaXMuc2lnbmFsUlJlZnJlc2hUb2tlbigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGF0YWRvZ0xvZ3MubG9nZ2VyLmluZm8oYFRpYmFSZXRyeVBvbGljeSAtPiBmYWlsZWQgbmVnb3RpYXRpb24gIyR7Y3VycmVudFJldHJ5Q291bnR9LiBNZXNzYWdlOiAke3JldHJ5Q29udGV4dC5yZXRyeVJlYXNvbi5tZXNzYWdlfWApO1xuXG4gICAgICAgIG1pbGxpc2Vjb25kcyA9IGdldFNlY29uZHNCYWNrb2ZmKGN1cnJlbnRSZXRyeUNvdW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWlsbGlzZWNvbmRzO1xuICB9XG5cbiAgQERpc3BhdGNoKCkgc2lnbmFsUlJlZnJlc2hUb2tlbiA9ICgpID0+IG5ldyBTaWduYWxSUmVmcmVzaFRva2VuQWN0aW9uKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWNvbmRzQmFja29mZihyZXRyeUNvdW50OiBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCBkZWxheXNUYWJsZUluU2Vjb25kczogeyBba2V5OiBudW1iZXJdOiBudW1iZXJbXSB9ID0ge1xuICAgIDE6IFs1LCAyMF0sIC8vNXMgLSAyMHNcbiAgICAyOiBbMjUsIDQwXSwgLy8gMjVzIC0gNDBzXG4gICAgMzogWzQ1LCA2MF0sIC8vIDQ1cyAtIDYwc1xuICAgIDQ6IFs2NSwgODBdLCAvLyA2NXMgLSA4MHNcbiAgICA1OiBbNjAwLCA5MDBdLCAgLy8gMTBtIC0gMTVtXG4gIH07XG4gIGNvbnN0IFttaW5TZWNvbmRzLCBtYXhTZWNvbmRzXSA9IGRlbGF5c1RhYmxlSW5TZWNvbmRzW3JldHJ5Q291bnRdIHx8IFswLCAwXTtcbiAgcmV0dXJuIChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4U2Vjb25kcyAtIG1pblNlY29uZHMgKyAxKSkgKyBtaW5TZWNvbmRzKSAqIE9ORV9TRUNPTkRfSU5fTUlMTElTRUNPTkRTO1xufVxuIl19
@@ -87489,9 +87489,11 @@ __decorate([
87489
87489
  ], TibaRetryPolicy.prototype, "signalRRefreshToken", void 0);
87490
87490
  function getSecondsBackoff(retryCount) {
87491
87491
  const delaysTableInSeconds = {
87492
- 1: [20, 120],
87493
- 2: [1200, 1800],
87494
- 3: [3000, 3600], // 50m - 60m
87492
+ 1: [5, 20],
87493
+ 2: [25, 40],
87494
+ 3: [45, 60],
87495
+ 4: [65, 80],
87496
+ 5: [600, 900], // 10m - 15m
87495
87497
  };
87496
87498
  const [minSeconds, maxSeconds] = delaysTableInSeconds[retryCount] || [0, 0];
87497
87499
  return (Math.floor(Math.random() * (maxSeconds - minSeconds + 1)) + minSeconds) * ONE_SECOND_IN_MILLISECONDS;
@@ -88713,7 +88715,11 @@ let FacilityState = FacilityState_1 = class FacilityState {
88713
88715
  zone.vacancy = zone.capacity - zone.occupancy;
88714
88716
  selected.zones[zoneIndex] = zone;
88715
88717
  selected.zones = clone(selected.zones);
88718
+ const facilityDictionary = ctx.getState().dictionary;
88719
+ const guid = ctx.getState().guid;
88720
+ facilityDictionary[guid][selected.id].zones = selected.zones;
88716
88721
  ctx.patchState({
88722
+ dictionary: facilityDictionary,
88717
88723
  selected,
88718
88724
  zones: selected.zones,
88719
88725
  });
@@ -91886,11 +91892,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
91886
91892
  type: Injectable
91887
91893
  }], ctorParameters: function () { return [{ type: i1$8.Router }, { type: i1$2.Store }, { type: AppConfigService }, { type: i2.Location }]; } });
91888
91894
 
91895
+ // Module
91896
+
91889
91897
  class RefreshTokenService {
91890
- constructor(store, usersServiceProxyIdentity, sessionStorageService) {
91898
+ constructor(store, usersServiceProxyIdentity, sessionStorageService, mobileServiceProxyIdentity) {
91891
91899
  this.store = store;
91892
91900
  this.usersServiceProxyIdentity = usersServiceProxyIdentity;
91893
91901
  this.sessionStorageService = sessionStorageService;
91902
+ this.mobileServiceProxyIdentity = mobileServiceProxyIdentity;
91894
91903
  this.isRefreshing = false;
91895
91904
  this.refreshTokenSubject = new Subject();
91896
91905
  }
@@ -91912,6 +91921,24 @@ class RefreshTokenService {
91912
91921
  return this.handleRefreshTokenQueue(request, next);
91913
91922
  }
91914
91923
  }
91924
+ handleMobileRefreshToken(request, next) {
91925
+ if (!this.isRefreshing) {
91926
+ this.isRefreshing = true;
91927
+ const refreshInfo = this.sessionStorageService.getAuth;
91928
+ return this.mobileServiceProxyIdentity.mobileRefreshToken(refreshInfo?.refreshToken, VERSION_V1).pipe(switchMap$1(tokenResult => {
91929
+ this.setAuthSession(tokenResult.data);
91930
+ return next.handle(this.addToken(request, tokenResult.data.accessToken));
91931
+ }), catchError((error) => throwError(() => error)), finalize(() => {
91932
+ this.isRefreshing = false;
91933
+ // Process the request queue after token refresh completes
91934
+ this.refreshTokenSubject.next(this.sessionStorageService.accessToken);
91935
+ }));
91936
+ }
91937
+ else {
91938
+ // Queue the failed request
91939
+ return this.handleRefreshTokenQueue(request, next);
91940
+ }
91941
+ }
91915
91942
  getRefreshToken() {
91916
91943
  const refreshInfo = this.sessionStorageService.getAuth;
91917
91944
  return this.usersServiceProxyIdentity.refreshToken(refreshInfo?.refreshToken).pipe(tap({
@@ -91942,12 +91969,12 @@ class RefreshTokenService {
91942
91969
  }
91943
91970
  });
91944
91971
  }
91945
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RefreshTokenService, deps: [{ token: i1$2.Store }, { token: UsersServiceProxyIdentity }, { token: SessionStorageService }], target: i0.ɵɵFactoryTarget.Injectable }); }
91972
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RefreshTokenService, deps: [{ token: i1$2.Store }, { token: UsersServiceProxyIdentity }, { token: SessionStorageService }, { token: MobileServiceProxyIdentity }], target: i0.ɵɵFactoryTarget.Injectable }); }
91946
91973
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RefreshTokenService }); }
91947
91974
  }
91948
91975
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RefreshTokenService, decorators: [{
91949
91976
  type: Injectable
91950
- }], ctorParameters: function () { return [{ type: i1$2.Store }, { type: UsersServiceProxyIdentity }, { type: SessionStorageService }]; } });
91977
+ }], ctorParameters: function () { return [{ type: i1$2.Store }, { type: UsersServiceProxyIdentity }, { type: SessionStorageService }, { type: MobileServiceProxyIdentity }]; } });
91951
91978
 
91952
91979
  const defaultRefreshTokenState = {};
91953
91980
  let RefreshTokenState = class RefreshTokenState {
@@ -97118,6 +97145,7 @@ const AUTHENTICATE_APIS = [
97118
97145
  ];
97119
97146
  const EDGE_PREFIX_API = '/api/services/sp';
97120
97147
  const REFRESH_TOKEN_API = 'api/services/users/refreshtoken';
97148
+ const REFRESH_MOBILE_TOKEN_API = 'api/services/v1/mobile/users/refresh-token';
97121
97149
  const ANONYMOUS_APIS = [
97122
97150
  REFRESH_TOKEN_API,
97123
97151
  'api/services/users/authenticate',
@@ -97144,7 +97172,7 @@ class AuthTokenService {
97144
97172
  this.appConfig = appConfig;
97145
97173
  this.refreshTokenService = refreshTokenService;
97146
97174
  this.isRefreshTokenExpired = (refreshInfo) => !refreshInfo || new Date() > new Date(moment(refreshInfo.expiration).add(-refreshInfo.refreshInterval * 0.1, 'milliseconds').format());
97147
- this.isRefreshTokenRequest = (req) => req.url.includes(REFRESH_TOKEN_API);
97175
+ this.isRefreshTokenRequest = (req) => req.url.includes(REFRESH_TOKEN_API) || req.url.includes(REFRESH_MOBILE_TOKEN_API);
97148
97176
  this.logout = () => new LogoutAction(false); // when 401 do not invoke in the logout action the logout Audit
97149
97177
  this.servicesRunningStatusChanged = (servicesRunningStatus, guid) => new ServicesRunningStatusChangedAction(servicesRunningStatus, guid);
97150
97178
  }
@@ -97157,6 +97185,15 @@ class AuthTokenService {
97157
97185
  }
97158
97186
  return request;
97159
97187
  }
97188
+ handleMobileRequest(req, next) {
97189
+ req = this.setRequestHeaders(req);
97190
+ let request = next.handle(req);
97191
+ const refreshInfo = this.sessionStorageService.getAuth;
97192
+ if (this.shouldHandleRefreshToken(req) && this.isRefreshTokenExpired(refreshInfo)) {
97193
+ request = this.refreshTokenService.handleMobileRefreshToken(req, next);
97194
+ }
97195
+ return request;
97196
+ }
97160
97197
  handleEventStatusError(e, req, next) {
97161
97198
  let response;
97162
97199
  switch (e.status) {
@@ -100308,8 +100345,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
100308
100345
 
100309
100346
  // Module
100310
100347
 
100311
- // Module
100312
-
100313
100348
  class ChangePasswordAction {
100314
100349
  static { this.type = '[security] ChangePassword'; }
100315
100350
  constructor(currentPassword, newPassword) {