@tiba-spark/client-shared-lib 25.4.1-44 → 25.4.1-50

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.
@@ -148,6 +148,7 @@ export class AuthTokenService {
148
148
  switch (e.status) {
149
149
  case HttpStatusCode.Unauthorized:
150
150
  if (this.shouldHandleRefreshToken(req)) {
151
+ req = this.setRequestHeaders(req);
151
152
  response = this.refreshTokenService.handleRefreshToken(req, next);
152
153
  }
153
154
  else {
@@ -165,6 +166,7 @@ export class AuthTokenService {
165
166
  switch (e.status) {
166
167
  case HttpStatusCode.Unauthorized:
167
168
  if (this.shouldHandleMobileRefreshToken(req)) {
169
+ req = this.setRequestHeaders(req);
168
170
  response = this.refreshTokenService.handleMobileRefreshToken(req, next);
169
171
  }
170
172
  else {
@@ -190,6 +192,7 @@ export class AuthTokenService {
190
192
  ;
191
193
  setRequestHeaders(req) {
192
194
  const applicationType = AppTypeMap.get(this.appConfig.getConfig().appType);
195
+ const platformType = this.appConfig.getConfig().platformType;
193
196
  const appModule = this.store.selectSnapshot(SidenavState.appModule);
194
197
  const subModule = this.store.selectSnapshot(SidenavState.subModule);
195
198
  const appModuleStr = appModule?.toString() || '';
@@ -201,6 +204,7 @@ export class AuthTokenService {
201
204
  req = req.clone({
202
205
  headers: req.headers
203
206
  .set('Authorization', `Bearer ${this.sessionStorageService.accessToken}`)
207
+ .set('x-platform-type', platformType.toString())
204
208
  .set('Application-Type', applicationType.toString())
205
209
  .set('ngsw-bypass', 'true')
206
210
  .set('Access-Control-Allow-Origin', '*')
@@ -216,6 +220,7 @@ export class AuthTokenService {
216
220
  else {
217
221
  req = req.clone({
218
222
  headers: req.headers
223
+ .set('x-platform-type', platformType.toString())
219
224
  .set('Application-Type', applicationType.toString())
220
225
  .set('timeZone', getUserTimeZone())
221
226
  .set('Access-Control-Allow-Origin', '*')
@@ -349,4 +354,4 @@ __decorate([
349
354
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthTokenService, decorators: [{
350
355
  type: Injectable
351
356
  }], ctorParameters: () => [{ type: i1.SessionStorageService }, { type: i2.Store }, { type: i3.Router }, { type: i4.AppConfigService }, { type: i5.RefreshTokenService }, { type: i6.LocalStorageService }], propDecorators: { logout: [], servicesRunningStatusChanged: [], setConflictDetected: [], clearConflictDetected: [] } });
352
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC10b2tlbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9zZXJ2aWNlcy9hdXRoLXRva2VuLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBd0UsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFekQsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFHMUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTNHLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQXFELE1BQU0sd0NBQXdDLENBQUM7QUFLdEgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7OztBQUtyRCxN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LEVBQUUsQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUM5RSxNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQztRQUVwQyx3RUFBd0U7UUFDeEUsTUFBTSxHQUFHLEdBQUcsZUFBZTtZQUN6QixDQUFDLENBQUMsRUFBRTtZQUNKLENBQUMsQ0FBQyxVQUFVO2dCQUNWLENBQUMsQ0FBQyxHQUFHLFVBQVUsR0FBRyxVQUFVLEVBQUU7Z0JBQzlCLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFFakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7K0dBaFNVLGdCQUFnQjttSEFBaEIsZ0JBQWdCOztBQW1TUDtJQUFuQixRQUFRLEVBQUU7Z0RBQWlJO0FBRWhJO0lBQVgsUUFBUSxFQUFFO3NFQUMyRDtBQUUxRDtJQUFYLFFBQVEsRUFBRTs2REFBb0Y7QUFDbkY7SUFBWCxRQUFRLEVBQUU7K0RBQTJEOzRGQXpTM0QsZ0JBQWdCO2tCQUQ1QixVQUFVO3NPQW9TVyxNQUFNLE1BRWQsNEJBQTRCLE1BRzVCLG1CQUFtQixNQUNuQixxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEV2ZW50LCBIdHRwSGFuZGxlciwgSHR0cFJlcXVlc3QsIEh0dHBSZXNwb25zZSwgSHR0cFN0YXR1c0NvZGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRGlzcGF0Y2ggfSBmcm9tICdAbmd4cy1sYWJzL2Rpc3BhdGNoLWRlY29yYXRvcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNFU1NJT04gfSBmcm9tICcuLi9jb25zdGFudHMva2V5cy1jb25zdGFudHMnO1xuaW1wb3J0IHsgQXBwVHlwZU1hcCB9IGZyb20gJy4uL2VudW1zL2FwcC10eXBlLW1hcC5lbnVtJztcbmltcG9ydCB7IEFwcFR5cGUgfSBmcm9tICcuLi9lbnVtcy9hcHAtdHlwZS5lbnVtJztcbmltcG9ydCB7IFBhcmtDb25uZWN0aW9uU3RhdHVzIH0gZnJvbSAnLi4vZW51bXMvcHJpb3JpdHktbGluay1zdGF0dXMuZW51bSc7XG5pbXBvcnQgeyBTcGFya1Nlc3Npb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NwYXJrLXNlc3Npb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlZnJlc2hJbmZvIH0gZnJvbSAnLi4vbW9kdWxlcy9hdXRoL21vZGVsL3JlZnJlc2gtaW5mby5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ2xlYXJDb25mbGljdERldGVjdGVkLCBMb2dvdXRBY3Rpb24sIFNldENvbmZsaWN0RGV0ZWN0ZWQgfSBmcm9tICcuLi9tb2R1bGVzL2F1dGgvc2Vzc2lvbi5hY3Rpb25zJztcbmltcG9ydCB7IENvbm5lY3Rpb25TdGF0dXNEaWN0aW9uYXJ5IH0gZnJvbSAnLi4vbW9kdWxlcy9mYWNpbGl0eS9mYWNpbGl0eS1tb2RhbCc7XG5pbXBvcnQgeyBTZXJ2aWNlc1J1bm5pbmdTdGF0dXNDaGFuZ2VkQWN0aW9uIH0gZnJvbSAnLi4vbW9kdWxlcy9mYWNpbGl0eS9mYWNpbGl0eS5hY3Rpb25zJztcbmltcG9ydCB7IEZhY2lsaXR5U3RhdGUgfSBmcm9tICcuLi9tb2R1bGVzL2ZhY2lsaXR5L2ZhY2lsaXR5LnN0YXRlJztcbmltcG9ydCB7IFNpZGVuYXZTdGF0ZSB9IGZyb20gJy4uL21vZHVsZXMvc2lkZW5hdi9zaWRlbmF2LnN0YXRlJztcbmltcG9ydCB7IFNtYXJ0cGFya1N0YXRlIH0gZnJvbSAnLi4vbW9kdWxlcy9zbWFydHBhcmtzL3NtYXJ0cGFyay5zdGF0ZSc7XG5pbXBvcnQgeyBBcHBNb2R1bGUsIFNlcnZpY2VzUnVubmluZ1N0YXR1c0R0bywgU21hcnRwYXJrRHRvLCBTdWJNb2R1bGUgfSBmcm9tICcuLi9zZXJ2aWNlLXByb3h5L2Nsb3VkLXNlcnZpY2UtcHJveGllcyc7XG5pbXBvcnQgeyBTbWFydHBhcmtCYXNpY0R0byB9IGZyb20gJy4uL3NlcnZpY2UtcHJveHkvaWRlbnRpdHktc2VydmljZS1wcm94aWVzJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uVHlwZSB9IGZyb20gJy4uL3NlcnZpY2UtcHJveHkvcnBjLXNlcnZpY2UtcHJveGllcyc7XG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYXBwLWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IFNlc3Npb25TdG9yYWdlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Nlc3Npb24tc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IGdldFVzZXJUaW1lWm9uZSB9IGZyb20gJy4uL3V0aWxzL2RhdGUudXRpbCc7XG5pbXBvcnQgeyBTdHJpbmdNYXAgfSBmcm9tICcuLi91dGlscy9sYW5nLnV0aWwnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlZnJlc2hUb2tlblNlcnZpY2UgfSBmcm9tICcuL3JlZnJlc2gtdG9rZW4uc2VydmljZSc7XG5cbmNvbnN0IEFVVEhFTlRJQ0FURV9BUElTID0gW1xuICAvLyBXZWJcbiAgJ2FwaS9zZXJ2aWNlcy93ZWIvdXNlcnMvdmVyaWZ5LTJmYS1hdXRoJyxcbiAgJ2FwaS9zZXJ2aWNlcy93ZWIvdXNlcnMvYXV0aGVudGljYXRlJyxcbiAgJ2FwaS9zZXJ2aWNlcy93ZWIvdXNlcnMvbXVsdGktdGVuYW50cy1hdXRoZW50aWNhdGUnLFxuXG4gIC8vIEJhY2tvZmZpY2VcbiAgJ2FwaS9zZXJ2aWNlcy9iYWNrb2ZmaWNldXNlci9hdXRoZW50aWNhdGUnLFxuXG4gIC8vIE1vYmlsZVxuICAnYXBpL3NlcnZpY2VzL3YyL21vYmlsZS91c2Vycy92ZXJpZnktMmZhLWF1dGgnLFxuICAnYXBpL3NlcnZpY2VzL3YyL21vYmlsZS91c2Vycy9hdXRoZW50aWNhdGUnLFxuICAnYXBpL3NlcnZpY2VzL3YyL21vYmlsZS91c2Vycy9tdWx0aS10ZW5hbnRzLWF1dGhlbnRpY2F0ZScsXG5dO1xuXG5jb25zdCBFREdFX1BSRUZJWF9BUEkgPSAnL2FwaS9zZXJ2aWNlcy93ZWIvc3AnO1xuY29uc3QgTU9CT0lMRV9FREdFX1BSRUZJWF9BUEkgPSAnL2FwaS9zZXJ2aWNlcy92Mi9tb2JpbGUvc3AnO1xuXG5jb25zdCBSRUZSRVNIX1RPS0VOX0FQSSA9ICdhcGkvc2VydmljZXMvd2ViL3VzZXJzL3JlZnJlc2gtdG9rZW4nO1xuY29uc3QgUkVGUkVTSF9NT0JJTEVfVE9LRU5fQVBJID0gJ2FwaS9zZXJ2aWNlcy92Mi9tb2JpbGUvdXNlcnMvcmVmcmVzaC10b2tlbic7XG5cbmNvbnN0IEVYVEVSTkFMX0FQSVMgPSBbXG4gICdhcGkvc2VydmljZXMvc2VsZnZhbGlkYXRpb24vZGV0YWlscycsXG4gICcvZXhlY3V0ZS9zZWxmLXZhbGlkYXRpb24nLCAvLyBUT0RPOiBSZW1vdmUgd2hlbiBzZWxmLXZhbGlkYXRpb24gaXMgaGFuZGxlZCBieSB0aGUgbmV3IHByb2plY3QgKE1hdGFuU2hvbWVyKVxuXTtcbmNvbnN0IEFOT05ZTU9VU19BUElTID0gW1xuICBSRUZSRVNIX1RPS0VOX0FQSSxcbiAgLy8gTGF0ZXN0IFdlYiBVUkxzXG4gICdhcGkvc2VydmljZXMvd2ViL3VzZXJzL211bHRpLXRlbmFudHMtYXV0aGVudGljYXRlJyxcbiAgJ2FwaS9zZXJ2aWNlcy93ZWIvdXNlcnMvYXV0aGVudGljYXRlJyxcbiAgJ2FwaS9zZXJ2aWNlcy93ZWIvdXNlcnMvdmVyaWZ5LTJmYS1hdXRoJyxcbiAgJ2FwaS9zZXJ2aWNlcy93ZWIvdXNlcnMvdmVyaWZ5LTJmYS1hdXRoLWxvZ2luJyxcbiAgJ2FwaS9zZXJ2aWNlcy93ZWIvdXNlcnMvdmFsaWRhdGUtYWN0aXZhdGlvbicsXG4gICdhcGkvc2VydmljZXMvd2ViL3VzZXJzL29pZGMtYXV0aCcsXG4gICdhcGkvc2VydmljZXMvd2ViL2Fzc2V0L2xvZ28nLFxuICAnYXBpL3NlcnZpY2VzL3dlYi90ZW5hbnQvZGV0YWlscycsXG4gICdhcGkvc2VydmljZXMvd2ViL2NvbmZpZ3VyYXRpb24vc3BhcmstbW9iaWxlLXZlcnNpb24nLFxuICAnYXBpL3NlcnZpY2VzL3dlYi90ZW5hbnQvZGF0YScsXG4gICdhcGkvc2VydmljZXMvd2ViL3VzZXJzL2ZvcmdvdC1wYXNzd29yZCcsXG4gICdhcGkvc2VydmljZXMvd2ViL3VzZXJzL2ZvcmdvdC1wYXNzd29yZC10ZW5hbnRsZXNzJyxcbiAgJ2FwaS9zZXJ2aWNlcy93ZWIvdXNlcnMvYWN0aXZhdGUnLFxuICBcbiAgLy8gQmFja29mZmljZSBVUkxzXG4gICdhcGkvc2VydmljZXMvYmFja29mZmljZXVzZXIvYXV0aGVudGljYXRlJyxcbl07XG5cbmNvbnN0IE1PQklMRV9BTk9OWU1PVVNfQVBJUyA9IFtcbiAgLy8gTW9iaWxlXG4gIFJFRlJFU0hfTU9CSUxFX1RPS0VOX0FQSSxcbiAgJ2FwaS9zZXJ2aWNlcy92Mi9tb2JpbGUvdXNlcnMvbXVsdGktdGVuYW50cy1hdXRoZW50aWNhdGUnLFxuICAnYXBpL3NlcnZpY2VzL3YyL21vYmlsZS91c2Vycy9hdXRoZW50aWNhdGUnLFxuICAnYXBpL3NlcnZpY2VzL3YyL21vYmlsZS91c2Vycy92ZXJpZnktMmZhLWF1dGgnLFxuICAnYXBpL3NlcnZpY2VzL3YyL21vYmlsZS91c2Vycy92ZXJpZnktMmZhLWF1dGgtbG9naW4nLFxuICAnYXBpL3NlcnZpY2VzL3YyL21vYmlsZS9hc3NldC9sb2dvJyxcbiAgJ2FwaS9zZXJ2aWNlcy92Mi9tb2JpbGUvY29uZmlndXJhdGlvbi9zcGFyay1tb2JpbGUtdmVyc2lvbicsXG4gICdhcGkvc2VydmljZXMvdjIvbW9iaWxlL3RlbmFudC9kYXRhJyxcbl07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBdXRoVG9rZW5TZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlc3Npb25TdG9yYWdlU2VydmljZTogU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLCBwcml2YXRlIHN0b3JlOiBTdG9yZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGFwcENvbmZpZzogQXBwQ29uZmlnU2VydmljZSwgcHJpdmF0ZSByZWZyZXNoVG9rZW5TZXJ2aWNlOiBSZWZyZXNoVG9rZW5TZXJ2aWNlLCBwcml2YXRlIGxvY2FsU3RvcmFnZVNlcnZpY2U6IExvY2FsU3RvcmFnZVNlcnZpY2UpIHtcbiAgfVxuXG4gIHB1YmxpYyBpc1JlZnJlc2hUb2tlbkV4cGlyZWQgPSAocmVmcmVzaEluZm86IFJlZnJlc2hJbmZvKSA9PlxuICAgICFyZWZyZXNoSW5mbyB8fCBuZXcgRGF0ZSgpID4gbmV3IERhdGUobW9tZW50KHJlZnJlc2hJbmZvLmV4cGlyYXRpb24pLmFkZCgtIHJlZnJlc2hJbmZvLnJlZnJlc2hJbnRlcnZhbCAqIDAuMSwgJ21pbGxpc2Vjb25kcycpLmZvcm1hdCgpKTtcblxuICBwdWJsaWMgaGFuZGxlUmVxdWVzdChyZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKSB7XG4gICAgcmVxID0gdGhpcy5zZXRSZXF1ZXN0SGVhZGVycyhyZXEpO1xuICAgIGxldCByZXF1ZXN0OiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiA9IG5leHQuaGFuZGxlKHJlcSk7XG4gICAgY29uc3QgcmVmcmVzaEluZm86IFJlZnJlc2hJbmZvID0gdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0QXV0aDtcbiAgICBpZiAodGhpcy5zaG91bGRIYW5kbGVSZWZyZXNoVG9rZW4ocmVxKSAmJiB0aGlzLmlzUmVmcmVzaFRva2VuRXhwaXJlZChyZWZyZXNoSW5mbykpIHtcbiAgICAgIHJlcXVlc3QgPSB0aGlzLnJlZnJlc2hUb2tlblNlcnZpY2UuaGFuZGxlUmVmcmVzaFRva2VuKHJlcSwgbmV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcXVlc3Q7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlQmFja09mZmljZVJlcXVlc3QocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcikge1xuICAgIHJlcSA9IHRoaXMuc2V0QmFja09mZmljZVJlcXVlc3RIZWFkZXJzKHJlcSk7XG4gICAgbGV0IHJlcXVlc3Q6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+ID0gbmV4dC5oYW5kbGUocmVxKTtcbiAgICByZXR1cm4gcmVxdWVzdDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0QmFja09mZmljZVJlcXVlc3RIZWFkZXJzKHJlcTogSHR0cFJlcXVlc3Q8YW55Pikge1xuICAgIGNvbnN0IGFwcGxpY2F0aW9uVHlwZTogQXBwbGljYXRpb25UeXBlID0gQXBwVHlwZU1hcC5nZXQodGhpcy5hcHBDb25maWcuZ2V0Q29uZmlnKCkuYXBwVHlwZSk7XG4gICAgaWYgKHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmFjY2Vzc1Rva2VuKSB7XG4gICAgICByZXEgPSByZXEuY2xvbmUoe1xuICAgICAgICBoZWFkZXJzOiByZXEuaGVhZGVyc1xuICAgICAgICAgIC5zZXQoJ0F1dGhvcml6YXRpb24nLCBgQmVhcmVyICR7dGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuYWNjZXNzVG9rZW59YClcbiAgICAgICAgICAuc2V0KCdBcHBsaWNhdGlvbi1UeXBlJywgYXBwbGljYXRpb25UeXBlLnRvU3RyaW5nKCkpXG4gICAgICAgICAgLnNldCgnbmdzdy1ieXBhc3MnLCAndHJ1ZScpXG4gICAgICAgICAgLnNldCgnQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJywgJyonKVxuICAgICAgICAgIC5zZXQoJ3RpbWVab25lJywgZ2V0VXNlclRpbWVab25lKCkpXG4gICAgICAgICAgLnNldCgnQ2xpZW50VmVyc2lvbicsIHRoaXMuYXBwQ29uZmlnLmdldENvbmZpZygpLnBhY2thZ2VJbmZvLnZlcnNpb24pXG4gICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICByZXEgPSByZXEuY2xvbmUoe1xuICAgICAgICBoZWFkZXJzOiByZXEuaGVhZGVyc1xuICAgICAgICAgIC5zZXQoJ3RpbWVab25lJywgZ2V0VXNlclRpbWVab25lKCkpXG4gICAgICAgICAgLnNldCgnQXBwbGljYXRpb24tVHlwZScsIGFwcGxpY2F0aW9uVHlwZS50b1N0cmluZygpKVxuICAgICAgICAgIC5zZXQoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbicsICcqJylcbiAgICAgICAgICAuc2V0KCdDbGllbnRWZXJzaW9uJywgdGhpcy5hcHBDb25maWcuZ2V0Q29uZmlnKCkucGFja2FnZUluZm8udmVyc2lvbilcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVxO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZU1vYmlsZVJlcXVlc3QocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcikge1xuICAgIHJlcSA9IHRoaXMuc2V0UmVxdWVzdEhlYWRlcnMocmVxKTtcbiAgICBsZXQgcmVxdWVzdDogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4gPSBuZXh0LmhhbmRsZShyZXEpO1xuICAgIGNvbnN0IHJlZnJlc2hJbmZvOiBSZWZyZXNoSW5mbyA9IHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldEF1dGg7XG4gICAgaWYgKHRoaXMuc2hvdWxkSGFuZGxlTW9iaWxlUmVmcmVzaFRva2VuKHJlcSkgJiYgdGhpcy5pc1JlZnJlc2hUb2tlbkV4cGlyZWQocmVmcmVzaEluZm8pKSB7XG4gICAgICByZXF1ZXN0ID0gdGhpcy5yZWZyZXNoVG9rZW5TZXJ2aWNlLmhhbmRsZVJlZnJlc2hUb2tlbihyZXEsIG5leHQpO1xuICAgIH1cblxuICAgIHJldHVybiByZXF1ZXN0O1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUJhY2tvZmZpY2VFdmVudFN0YXR1c0Vycm9yKGU6IEh0dHBFcnJvclJlc3BvbnNlLCByZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKSB7XG4gICAgbGV0IHJlc3BvbnNlOiBPYnNlcnZhYmxlPGFueT47XG4gICAgcmVzcG9uc2UgPSB0aGlzLmhhbmRsZUJhY2tvZmZpY2VFcnJvclJlc3BvbnNlKGUpO1xuICAgIHJldHVybiByZXNwb25zZTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVFdmVudFN0YXR1c0Vycm9yKGU6IEh0dHBFcnJvclJlc3BvbnNlLCByZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKSB7XG4gICAgbGV0IHJlc3BvbnNlOiBPYnNlcnZhYmxlPGFueT47XG4gICAgc3dpdGNoIChlLnN0YXR1cykge1xuICAgICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5VbmF1dGhvcml6ZWQ6XG4gICAgICAgIGlmICh0aGlzLnNob3VsZEhhbmRsZVJlZnJlc2hUb2tlbihyZXEpKSB7XG4gICAgICAgICAgcmVzcG9uc2UgPSB0aGlzLnJlZnJlc2hUb2tlblNlcnZpY2UuaGFuZGxlUmVmcmVzaFRva2VuKHJlcSwgbmV4dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzcG9uc2UgPSB0aGlzLmhhbmRsZUVycm9yUmVzcG9uc2UoZSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXNwb25zZSA9IHRoaXMuaGFuZGxlRXJyb3JSZXNwb25zZShlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZU1vYmlsZUV2ZW50U3RhdHVzRXJyb3IoZTogSHR0cEVycm9yUmVzcG9uc2UsIHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpIHtcbiAgICBsZXQgcmVzcG9uc2U6IE9ic2VydmFibGU8YW55PjtcbiAgICBzd2l0Y2ggKGUuc3RhdHVzKSB7XG4gICAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlVuYXV0aG9yaXplZDpcbiAgICAgICAgaWYgKHRoaXMuc2hvdWxkSGFuZGxlTW9iaWxlUmVmcmVzaFRva2VuKHJlcSkpIHtcbiAgICAgICAgICByZXNwb25zZSA9IHRoaXMucmVmcmVzaFRva2VuU2VydmljZS5oYW5kbGVNb2JpbGVSZWZyZXNoVG9rZW4ocmVxLCBuZXh0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNwb25zZSA9IHRoaXMuaGFuZGxlRXJyb3JSZXNwb25zZShlKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJlc3BvbnNlID0gdGhpcy5oYW5kbGVFcnJvclJlc3BvbnNlKGUpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlU3VjY2Vzc1Jlc3BvbnNlKHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgZXZlbnQ6IEh0dHBSZXNwb25zZTxhbnk+KSB7XG4gICAgaWYgKGV2ZW50Py5zdGF0dXMgPT09IEh0dHBTdGF0dXNDb2RlLk9rIHx8IGV2ZW50Py5zdGF0dXMgPT09IEh0dHBTdGF0dXNDb2RlLkFjY2VwdGVkKSB7XG4gICAgICB0aGlzLmNoZWNrQW5kQ2xlYXJQYXJrU3RhdHVzR2xvYmFsRXJyb3JOb3RpZmljYXRpb24ocmVxLnVybCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG1vYmlsZUhhbmRsZVN1Y2Nlc3NSZXNwb25zZShyZXE6IEh0dHBSZXF1ZXN0PGFueT4sIGV2ZW50OiBIdHRwUmVzcG9uc2U8YW55Pikge1xuICAgIGlmIChldmVudD8uc3RhdHVzID09PSBIdHRwU3RhdHVzQ29kZS5PayB8fCBldmVudD8uc3RhdHVzID09PSBIdHRwU3RhdHVzQ29kZS5BY2NlcHRlZCkge1xuICAgICAgdGhpcy5tb2JpbGVDaGVja0FuZENsZWFyUGFya1N0YXR1c0dsb2JhbEVycm9yTm90aWZpY2F0aW9uKHJlcS51cmwpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc1JlZnJlc2hUb2tlblJlcXVlc3QgPSAocmVxOiBIdHRwUmVxdWVzdDxhbnk+KSA9PiByZXEudXJsLmluY2x1ZGVzKFJFRlJFU0hfVE9LRU5fQVBJKSB8fCByZXEudXJsLmluY2x1ZGVzKFJFRlJFU0hfTU9CSUxFX1RPS0VOX0FQSSk7O1xuXG4gIHByaXZhdGUgc2V0UmVxdWVzdEhlYWRlcnMocmVxOiBIdHRwUmVxdWVzdDxhbnk+KSB7XG4gICAgY29uc3QgYXBwbGljYXRpb25UeXBlOiBBcHBsaWNhdGlvblR5cGUgPSBBcHBUeXBlTWFwLmdldCh0aGlzLmFwcENvbmZpZy5nZXRDb25maWcoKS5hcHBUeXBlKTtcbiAgICBjb25zdCBhcHBNb2R1bGU6IEFwcE1vZHVsZSA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoU2lkZW5hdlN0YXRlLmFwcE1vZHVsZSk7XG4gICAgY29uc3Qgc3ViTW9kdWxlOiBTdWJNb2R1bGUgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNpZGVuYXZTdGF0ZS5zdWJNb2R1bGUpO1xuICAgIGNvbnN0IGFwcE1vZHVsZVN0ciA9IGFwcE1vZHVsZT8udG9TdHJpbmcoKSB8fCAnJztcbiAgICBjb25zdCBzdWJNb2R1bGVTdHIgPSBzdWJNb2R1bGU/LnRvU3RyaW5nKCkgfHwgJyc7XG5cbiAgICBjb25zdCBzbWFydFBhcmtEdG8gPSB0aGlzLmdldFNtYXJ0UGFya0R0byhyZXEudXJsKSB8fCB7fTtcbiAgICBjb25zdCBzcGFya1ZlcnNpb24gPSBzbWFydFBhcmtEdG9bXCJzcGFya1ZlcnNpb25cIl0gPz8gJyc7XG4gICAgY29uc3Qgc21hcnRQYXJrVmVyc2lvbiA9IChzbWFydFBhcmtEdG9bXCJzbWFydFBhcmtWZXJzaW9uXCJdID8/ICcnKS5yZXBsYWNlKFwiIEJ1aWxkKFwiLCBcIl9cIikucmVwbGFjZShcIilcIiwgXCJcIikudHJpbSgpO1xuXG4gICAgaWYgKHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmFjY2Vzc1Rva2VuKSB7XG4gICAgICByZXEgPSByZXEuY2xvbmUoe1xuICAgICAgICBoZWFkZXJzOiByZXEuaGVhZGVyc1xuICAgICAgICAgIC5zZXQoJ0F1dGhvcml6YXRpb24nLCBgQmVhcmVyICR7dGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuYWNjZXNzVG9rZW59YClcbiAgICAgICAgICAuc2V0KCdBcHBsaWNhdGlvbi1UeXBlJywgYXBwbGljYXRpb25UeXBlLnRvU3RyaW5nKCkpXG4gICAgICAgICAgLnNldCgnbmdzdy1ieXBhc3MnLCAndHJ1ZScpXG4gICAgICAgICAgLnNldCgnQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJywgJyonKVxuICAgICAgICAgIC5zZXQoJ2FwcE1vZHVsZScsIGFwcE1vZHVsZVN0cikgLy8gVE9ETzogUmVtb3ZlIHdoZW4gOC4xIGlzIGRlcHJlY2F0ZWQgPz9cbiAgICAgICAgICAuc2V0KCdBcHAtTW9kdWxlJywgYXBwTW9kdWxlU3RyKVxuICAgICAgICAgIC5zZXQoJ1N1Yi1Nb2R1bGUnLCBzdWJNb2R1bGVTdHIpXG4gICAgICAgICAgLnNldCgndGltZVpvbmUnLCBnZXRVc2VyVGltZVpvbmUoKSlcbiAgICAgICAgICAuc2V0KCdDbGllbnRWZXJzaW9uJywgdGhpcy5hcHBDb25maWcuZ2V0Q29uZmlnKCkucGFja2FnZUluZm8udmVyc2lvbilcbiAgICAgICAgICAuc2V0KCdTcGFya1ZlcnNpb24nLCBzcGFya1ZlcnNpb24pXG4gICAgICAgICAgLnNldCgnU21hcnRQYXJrVmVyc2lvbicsIHNtYXJ0UGFya1ZlcnNpb24pXG4gICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICByZXEgPSByZXEuY2xvbmUoe1xuICAgICAgICBoZWFkZXJzOiByZXEuaGVhZGVyc1xuICAgICAgICAgIC5zZXQoJ0FwcGxpY2F0aW9uLVR5cGUnLCBhcHBsaWNhdGlvblR5cGUudG9TdHJpbmcoKSlcbiAgICAgICAgICAuc2V0KCd0aW1lWm9uZScsIGdldFVzZXJUaW1lWm9uZSgpKVxuICAgICAgICAgIC5zZXQoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbicsICcqJylcbiAgICAgICAgICAuc2V0KCdDbGllbnRWZXJzaW9uJywgdGhpcy5hcHBDb25maWcuZ2V0Q29uZmlnKCkucGFja2FnZUluZm8udmVyc2lvbilcbiAgICAgICAgICAuc2V0KCdTcGFya1ZlcnNpb24nLCBzcGFya1ZlcnNpb24pXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVxO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRIYW5kbGVSZWZyZXNoVG9rZW4ocmVxOiBIdHRwUmVxdWVzdDxhbnk+KSB7XG4gICAgcmV0dXJuICFBTk9OWU1PVVNfQVBJUy5zb21lKGFwaSA9PiByZXEudXJsLmluY2x1ZGVzKGFwaSkpICYmICF0aGlzLmlzUmVmcmVzaFRva2VuUmVxdWVzdChyZXEpICYmICFFWFRFUk5BTF9BUElTLnNvbWUoYXBpID0+IHJlcS51cmwuaW5jbHVkZXMoYXBpKSkgJiYgIXRoaXMuaXNTZWxmVmFsaWRhdGlvbkxpbmtVUkw7XG4gIH1cblxuICBwcml2YXRlIHNob3VsZEhhbmRsZU1vYmlsZVJlZnJlc2hUb2tlbihyZXE6IEh0dHBSZXF1ZXN0PGFueT4pIHtcbiAgICByZXR1cm4gIU1PQklMRV9BTk9OWU1PVVNfQVBJUy5zb21lKGFwaSA9PiByZXEudXJsLmluY2x1ZGVzKGFwaSkpICYmICF0aGlzLmlzUmVmcmVzaFRva2VuUmVxdWVzdChyZXEpO1xuICB9XG5cbiAgLy8gVGVtcG9yYXJ5IGNoZWNrIGZvciAnc2VsZi12YWxpZGF0aW9uP3Rva2VuPScgaW4gVVJMLlxuICAvLyBUaGlzIGNhbiBiZSByZW1vdmVkIG9uY2Ugc2VsZiB2YWxpZGF0aW9uIGxpbmtzIGFyZSBoYW5kbGVkIGJ5IHRoZSBuZXcgcHJvamVjdC5cbiAgcHJpdmF0ZSBpc1NlbGZWYWxpZGF0aW9uTGlua1VSTCA9IGxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJy9zZWxmLXZhbGlkYXRpb24/dG9rZW49Jyk7XG5cbiAgcHJpdmF0ZSBnZXRTbWFydFBhcmtEdG8ocmVxdWVzdFVybDogc3RyaW5nKTogU21hcnRwYXJrRHRvIHwgU21hcnRwYXJrQmFzaWNEdG8ge1xuICAgIGxldCBndWlkID0gbnVsbDtcblxuICAgIGNvbnN0IGd1aWRQYXR0ZXJuID0gL1thLWZBLUYwLTldezh9LVthLWZBLUYwLTldezR9LVthLWZBLUYwLTldezR9LVthLWZBLUYwLTldezR9LVthLWZBLUYwLTldezEyfS87XG4gICAgY29uc3QgbWF0Y2hlcyA9IHJlcXVlc3RVcmwubWF0Y2goZ3VpZFBhdHRlcm4pO1xuXG4gICAgaWYgKG1hdGNoZXMgJiYgbWF0Y2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICBndWlkID0gbWF0Y2hlc1swXTtcbiAgICB9IGVsc2UgaWYgKHJlcXVlc3RVcmwuaW5jbHVkZXMoJy9zZW5kLW1haWwtZnJvbS1lbnRpdHknKSkge1xuICAgICAgZ3VpZCA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5ndWlkKTtcbiAgICB9XG5cbiAgICBjb25zdCBzbWFydFBhcmtEdG8gPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNtYXJ0cGFya1N0YXRlLnNtYXJ0cGFya3MpPy5maW5kKHNtYXJ0UGFyayA9PiBzbWFydFBhcmsuZ3VpZCA9PT0gZ3VpZCk7XG4gICAgcmV0dXJuIHNtYXJ0UGFya0R0bztcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tBbmRDbGVhclBhcmtTdGF0dXNHbG9iYWxFcnJvck5vdGlmaWNhdGlvbih1cmw6IHN0cmluZykge1xuICAgIGlmICh1cmw/LnN0YXJ0c1dpdGgoRURHRV9QUkVGSVhfQVBJKSkge1xuICAgICAgY29uc3QgYXBwTW9kdWxlID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChTaWRlbmF2U3RhdGUuYXBwTW9kdWxlKTtcbiAgICAgIGlmIChhcHBNb2R1bGUgPT0gQXBwTW9kdWxlLkNjIHx8IGFwcE1vZHVsZSA9PSBBcHBNb2R1bGUuTWFuYWdlbWVudCkge1xuICAgICAgICBjb25zdCBjb25uZWN0aW9uU3RhdHVzRGljdGlvbmFyeTogQ29ubmVjdGlvblN0YXR1c0RpY3Rpb25hcnkgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUucGFya0Nvbm5lY3Rpb25TdGF0dXNNYXApO1xuICAgICAgICBjb25zdCBndWlkOiBzdHJpbmcgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuZ3VpZCk7XG4gICAgICAgIGNvbnN0IHBhcmtJZDogbnVtYmVyID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLnBhcmtJZCk7XG5cbiAgICAgICAgaWYgKGd1aWQgJiYgcGFya0lkICYmIGNvbm5lY3Rpb25TdGF0dXNEaWN0aW9uYXJ5W2d1aWRdKSB7XG4gICAgICAgICAgdmFyIHBhcmtDb25uZWN0aW9uU3RhdHVzID0gY29ubmVjdGlvblN0YXR1c0RpY3Rpb25hcnlbZ3VpZF1bcGFya0lkXTtcbiAgICAgICAgICBpZiAocGFya0Nvbm5lY3Rpb25TdGF0dXMuc3RhdHVzID09IFBhcmtDb25uZWN0aW9uU3RhdHVzLlNwYXJrQ29yZVNlcnZlckRpc2Nvbm5lY3RlZCB8fFxuICAgICAgICAgICAgcGFya0Nvbm5lY3Rpb25TdGF0dXMuc3RhdHVzID09IFBhcmtDb25uZWN0aW9uU3RhdHVzLlNwYXJrQ29yZUNsb3VkU2VydmVyRGlzY29ubmVjdGVkKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNlcnZpY2VzUnVubmluZ1N0YXR1cyhndWlkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1vYmlsZUNoZWNrQW5kQ2xlYXJQYXJrU3RhdHVzR2xvYmFsRXJyb3JOb3RpZmljYXRpb24odXJsOiBzdHJpbmcpIHtcbiAgICBpZiAodXJsPy5zdGFydHNXaXRoKE1PQk9JTEVfRURHRV9QUkVGSVhfQVBJKSkge1xuICAgICAgY29uc3QgYXBwTW9kdWxlID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChTaWRlbmF2U3RhdGUuYXBwTW9kdWxlKTtcbiAgICAgIGlmIChhcHBNb2R1bGUgPT0gQXBwTW9kdWxlLkNjIHx8IGFwcE1vZHVsZSA9PSBBcHBNb2R1bGUuTWFuYWdlbWVudCkge1xuICAgICAgICBjb25zdCBjb25uZWN0aW9uU3RhdHVzRGljdGlvbmFyeTogQ29ubmVjdGlvblN0YXR1c0RpY3Rpb25hcnkgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUucGFya0Nvbm5lY3Rpb25TdGF0dXNNYXApO1xuICAgICAgICBjb25zdCBndWlkOiBzdHJpbmcgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuZ3VpZCk7XG4gICAgICAgIGNvbnN0IHBhcmtJZDogbnVtYmVyID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLnBhcmtJZCk7XG5cbiAgICAgICAgaWYgKGd1aWQgJiYgcGFya0lkICYmIGNvbm5lY3Rpb25TdGF0dXNEaWN0aW9uYXJ5W2d1aWRdKSB7XG4gICAgICAgICAgdmFyIHBhcmtDb25uZWN0aW9uU3RhdHVzID0gY29ubmVjdGlvblN0YXR1c0RpY3Rpb25hcnlbZ3VpZF1bcGFya0lkXTtcbiAgICAgICAgICBpZiAocGFya0Nvbm5lY3Rpb25TdGF0dXMuc3RhdHVzID09IFBhcmtDb25uZWN0aW9uU3RhdHVzLlNwYXJrQ29yZVNlcnZlckRpc2Nvbm5lY3RlZCB8fFxuICAgICAgICAgICAgcGFya0Nvbm5lY3Rpb25TdGF0dXMuc3RhdHVzID09IFBhcmtDb25uZWN0aW9uU3RhdHVzLlNwYXJrQ29yZUNsb3VkU2VydmVyRGlzY29ubmVjdGVkKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNlcnZpY2VzUnVubmluZ1N0YXR1cyhndWlkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVNlcnZpY2VzUnVubmluZ1N0YXR1cyhzbWFydFBhcmtHdWlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBzZXJ2aWNlc1J1bm5pbmdTdGF0dXNEaWN0aW9uYXJ5ID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLnNlcnZpY2VzUnVubmluZ1N0YXR1c0RpY3Rpb25hcnkpO1xuICAgIGNvbnN0IGN1cnJlbnRGYWNpbGl0eVNlcnZpY2VzUnVubmluZ1N0YXR1czogU2VydmljZXNSdW5uaW5nU3RhdHVzRHRvID0gc2VydmljZXNSdW5uaW5nU3RhdHVzRGljdGlvbmFyeVtzbWFydFBhcmtHdWlkXTtcbiAgICBjdXJyZW50RmFjaWxpdHlTZXJ2aWNlc1J1bm5pbmdTdGF0dXMuaXNTcGFya0NvcmVDb25uZWN0ZWQgPSB0cnVlO1xuICAgIGN1cnJlbnRGYWNpbGl0eVNlcnZpY2VzUnVubmluZ1N0YXR1cy5pc1NwYXJrQ2xvdWRDb25uZWN0ZWQgPSB0cnVlO1xuICAgIGN1cnJlbnRGYWNpbGl0eVNlcnZpY2VzUnVubmluZ1N0YXR1cy5zcGFya0Nsb3VkRGlzY29ubmVjdGVkVGltZXN0YW1wID0gbnVsbDtcbiAgICBjdXJyZW50RmFjaWxpdHlTZXJ2aWNlc1J1bm5pbmdTdGF0dXMuc3BhcmtDb3JlRGlzY29ubmVjdGVkVGltZXN0YW1wID0gbnVsbDtcbiAgICB0aGlzLnNlcnZpY2VzUnVubmluZ1N0YXR1c0NoYW5nZWQoY3VycmVudEZhY2lsaXR5U2VydmljZXNSdW5uaW5nU3RhdHVzLCBzbWFydFBhcmtHdWlkKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRXJyb3JSZXNwb25zZShlOiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgIGlmIChlLnN0YXR1cyA9PT0gSHR0cFN0YXR1c0NvZGUuVW5hdXRob3JpemVkICYmICFBVVRIRU5USUNBVEVfQVBJUy5zb21lKGFwaSA9PiBlLnVybC5pbmNsdWRlcyhhcGkpKSAmJiAhRVhURVJOQUxfQVBJUy5zb21lKGFwaSA9PiBlLnVybC5pbmNsdWRlcyhhcGkpKSkge1xuICAgICAgY29uc3Qgc3BhcmtTZXNzaW9ucyA9IHRoaXMuZ2V0U3BhcmtTZXNzaW9ucygpO1xuICAgICAgY29uc3QgdGVuYW50ID0gc3BhcmtTZXNzaW9uc1t0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS50ZW5hbnRdO1xuICAgICAgaWYgKHRlbmFudD8udXNlcj8uc3NvQXV0aGVudGljYXRlZCkge1xuICAgICAgICB0aGlzLm5hdmlnYXRlVG9Mb2dpbih0ZW5hbnQ/LnRlbmFudD8udGVuYW50TmFtZSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2dvdXQoZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZS5zdGF0dXMgPT09IEh0dHBTdGF0dXNDb2RlLkNvbmZsaWN0KSB7XG4gICAgICB0aGlzLnNldENvbmZsaWN0RGV0ZWN0ZWQoZSk7XG4gICAgICB0aGlzLmxvZ291dChmYWxzZSwgZmFsc2UpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2xlYXJDb25mbGljdERldGVjdGVkKCk7XG4gICAgICB9LCAzMDAwKTsgLy8gRGVsYXkgdGhlIHJlc2V0IHRvIGVuc3VyZSB0aGUgVUkgcmVhY3RzIGZpcnN0XG4gICAgfVxuXG4gICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZSk7XG4gIH1cblxuICBwcml2YXRlIGdldFNwYXJrU2Vzc2lvbnMgPSAoKTogU3RyaW5nTWFwPFNwYXJrU2Vzc2lvbj4gPT4gSlNPTi5wYXJzZSh0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbShTRVNTSU9OKSk/LnNwYXJrU2Vzc2lvbnMgPz8ge307XG5cbiAgcHJpdmF0ZSBoYW5kbGVCYWNrb2ZmaWNlRXJyb3JSZXNwb25zZShlOiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgIGlmIChlLnN0YXR1cyA9PT0gSHR0cFN0YXR1c0NvZGUuVW5hdXRob3JpemVkICYmICFBVVRIRU5USUNBVEVfQVBJUy5zb21lKGFwaSA9PiBlLnVybC5pbmNsdWRlcyhhcGkpKSAmJiAhRVhURVJOQUxfQVBJUy5zb21lKGFwaSA9PiBlLnVybC5pbmNsdWRlcyhhcGkpKSkge1xuXG4gICAgICB0aGlzLm5hdmlnYXRlVG9Mb2dpbigpO1xuICAgIH1cblxuICAgIGlmIChlLnN0YXR1cyA9PT0gSHR0cFN0YXR1c0NvZGUuQ29uZmxpY3QpIHtcbiAgICAgIHRoaXMuc2V0Q29uZmxpY3REZXRlY3RlZChlKTtcbiAgICAgIHRoaXMubmF2aWdhdGVUb0xvZ2luKCk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jbGVhckNvbmZsaWN0RGV0ZWN0ZWQoKTtcbiAgICAgIH0sIDMwMDApOyAvLyBEZWxheSB0aGUgcmVzZXQgdG8gZW5zdXJlIHRoZSBVSSByZWFjdHMgZmlyc3RcbiAgICB9XG4gICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZSk7XG4gIH1cblxuICBwcml2YXRlIG5hdmlnYXRlVG9Mb2dpbih0ZW5hbnROYW1lPzogc3RyaW5nKSB7XG4gICAgY29uc3QgaXNNb2JpbGVBcHBNb2RlID0gdGhpcy5hcHBDb25maWcuZ2V0Q29uZmlnKCkuYXBwVHlwZSA9PT0gQXBwVHlwZS5Nb2JpbGU7XG4gICAgY29uc3QgbG9naW5Sb3V0ZSA9ICcvYWNjb3VudC9sb2dpbic7XG5cbiAgICAvLyBJZiBtb2JpbGUg4oaSIGFsd2F5cyAnJywgb3RoZXJ3aXNlIGJ1aWxkIHJvdXRlICh3aXRoIG9yIHdpdGhvdXQgdGVuYW50KVxuICAgIGNvbnN0IHVybCA9IGlzTW9iaWxlQXBwTW9kZVxuICAgICAgPyAnJ1xuICAgICAgOiB0ZW5hbnROYW1lXG4gICAgICAgID8gYCR7dGVuYW50TmFtZX0ke2xvZ2luUm91dGV9YFxuICAgICAgICA6IGxvZ2luUm91dGU7XG5cbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdXJsXSk7XG4gIH1cblxuXG4gIEBEaXNwYXRjaCgpIHByaXZhdGUgbG9nb3V0ID0gKGxvZ291dEF1ZGl0OiBib29sZWFuLCBsb2dvdXRCYWNrb2ZmaWNlQXVkaXQ6IGJvb2xlYW4pID0+IG5ldyBMb2dvdXRBY3Rpb24obG9nb3V0QXVkaXQsIGxvZ291dEJhY2tvZmZpY2VBdWRpdCk7IC8vIHdoZW4gNDAxIGRvIG5vdCBpbnZva2UgaW4gdGhlIGxvZ291dCBhY3Rpb24gdGhlIGxvZ291dCBBdWRpdFxuXG4gIEBEaXNwYXRjaCgpIHNlcnZpY2VzUnVubmluZ1N0YXR1c0NoYW5nZWQgPSAoc2VydmljZXNSdW5uaW5nU3RhdHVzOiBTZXJ2aWNlc1J1bm5pbmdTdGF0dXNEdG8sIGd1aWQ6IHN0cmluZykgPT5cbiAgICBuZXcgU2VydmljZXNSdW5uaW5nU3RhdHVzQ2hhbmdlZEFjdGlvbihzZXJ2aWNlc1J1bm5pbmdTdGF0dXMsIGd1aWQpO1xuXG4gIEBEaXNwYXRjaCgpIHNldENvbmZsaWN0RGV0ZWN0ZWQgPSAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBuZXcgU2V0Q29uZmxpY3REZXRlY3RlZChlcnJvcik7XG4gIEBEaXNwYXRjaCgpIGNsZWFyQ29uZmxpY3REZXRlY3RlZCA9ICgpID0+IG5ldyBDbGVhckNvbmZsaWN0RGV0ZWN0ZWQoKTtcbn1cbiJdfQ==
357
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC10b2tlbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9zZXJ2aWNlcy9hdXRoLXRva2VuLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBd0UsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFekQsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFHMUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTNHLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQW1FLE1BQU0sd0NBQXdDLENBQUM7QUFLcEksT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7OztBQUtyRCxN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QyxDQUFDLENBQUM7WUFDNUIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDL0IsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsZ0RBQWdEO1FBQzVELENBQUM7UUFDRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRU8sZUFBZSxDQUFDLFVBQW1CO1FBQ3pDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUMsT0FBTyxLQUFLLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDOUUsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLENBQUM7UUFFcEMsd0VBQXdFO1FBQ3hFLE1BQU0sR0FBRyxHQUFHLGVBQWU7WUFDekIsQ0FBQyxDQUFDLEVBQUU7WUFDSixDQUFDLENBQUMsVUFBVTtnQkFDVixDQUFDLENBQUMsR0FBRyxVQUFVLEdBQUcsVUFBVSxFQUFFO2dCQUM5QixDQUFDLENBQUMsVUFBVSxDQUFDO1FBRWpCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDOytHQXJTVSxnQkFBZ0I7bUhBQWhCLGdCQUFnQjs7QUF3U1A7SUFBbkIsUUFBUSxFQUFFO2dEQUFpSTtBQUVoSTtJQUFYLFFBQVEsRUFBRTtzRUFDMkQ7QUFFMUQ7SUFBWCxRQUFRLEVBQUU7NkRBQW9GO0FBQ25GO0lBQVgsUUFBUSxFQUFFOytEQUEyRDs0RkE5UzNELGdCQUFnQjtrQkFENUIsVUFBVTtzT0F5U1csTUFBTSxNQUVkLDRCQUE0QixNQUc1QixtQkFBbUIsTUFDbkIscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBFdmVudCwgSHR0cEhhbmRsZXIsIEh0dHBSZXF1ZXN0LCBIdHRwUmVzcG9uc2UsIEh0dHBTdGF0dXNDb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IERpc3BhdGNoIH0gZnJvbSAnQG5neHMtbGFicy9kaXNwYXRjaC1kZWNvcmF0b3InO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTRVNTSU9OIH0gZnJvbSAnLi4vY29uc3RhbnRzL2tleXMtY29uc3RhbnRzJztcbmltcG9ydCB7IEFwcFR5cGVNYXAgfSBmcm9tICcuLi9lbnVtcy9hcHAtdHlwZS1tYXAuZW51bSc7XG5pbXBvcnQgeyBBcHBUeXBlIH0gZnJvbSAnLi4vZW51bXMvYXBwLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBQYXJrQ29ubmVjdGlvblN0YXR1cyB9IGZyb20gJy4uL2VudW1zL3ByaW9yaXR5LWxpbmstc3RhdHVzLmVudW0nO1xuaW1wb3J0IHsgU3BhcmtTZXNzaW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zcGFyay1zZXNzaW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZWZyZXNoSW5mbyB9IGZyb20gJy4uL21vZHVsZXMvYXV0aC9tb2RlbC9yZWZyZXNoLWluZm8uaW50ZXJmYWNlJztcbmltcG9ydCB7IENsZWFyQ29uZmxpY3REZXRlY3RlZCwgTG9nb3V0QWN0aW9uLCBTZXRDb25mbGljdERldGVjdGVkIH0gZnJvbSAnLi4vbW9kdWxlcy9hdXRoL3Nlc3Npb24uYWN0aW9ucyc7XG5pbXBvcnQgeyBDb25uZWN0aW9uU3RhdHVzRGljdGlvbmFyeSB9IGZyb20gJy4uL21vZHVsZXMvZmFjaWxpdHkvZmFjaWxpdHktbW9kYWwnO1xuaW1wb3J0IHsgU2VydmljZXNSdW5uaW5nU3RhdHVzQ2hhbmdlZEFjdGlvbiB9IGZyb20gJy4uL21vZHVsZXMvZmFjaWxpdHkvZmFjaWxpdHkuYWN0aW9ucyc7XG5pbXBvcnQgeyBGYWNpbGl0eVN0YXRlIH0gZnJvbSAnLi4vbW9kdWxlcy9mYWNpbGl0eS9mYWNpbGl0eS5zdGF0ZSc7XG5pbXBvcnQgeyBTaWRlbmF2U3RhdGUgfSBmcm9tICcuLi9tb2R1bGVzL3NpZGVuYXYvc2lkZW5hdi5zdGF0ZSc7XG5pbXBvcnQgeyBTbWFydHBhcmtTdGF0ZSB9IGZyb20gJy4uL21vZHVsZXMvc21hcnRwYXJrcy9zbWFydHBhcmsuc3RhdGUnO1xuaW1wb3J0IHsgQXBwTW9kdWxlLCBQbGF0Zm9ybVR5cGUsIFNlcnZpY2VzUnVubmluZ1N0YXR1c0R0bywgU21hcnRwYXJrRHRvLCBTdWJNb2R1bGUgfSBmcm9tICcuLi9zZXJ2aWNlLXByb3h5L2Nsb3VkLXNlcnZpY2UtcHJveGllcyc7XG5pbXBvcnQgeyBTbWFydHBhcmtCYXNpY0R0byB9IGZyb20gJy4uL3NlcnZpY2UtcHJveHkvaWRlbnRpdHktc2VydmljZS1wcm94aWVzJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uVHlwZSB9IGZyb20gJy4uL3NlcnZpY2UtcHJveHkvcnBjLXNlcnZpY2UtcHJveGllcyc7XG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYXBwLWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IFNlc3Npb25TdG9yYWdlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Nlc3Npb24tc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IGdldFVzZXJUaW1lWm9uZSB9IGZyb20gJy4uL3V0aWxzL2RhdGUudXRpbCc7XG5pbXBvcnQgeyBTdHJpbmdNYXAgfSBmcm9tICcuLi91dGlscy9sYW5nLnV0aWwnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlZnJlc2hUb2tlblNlcnZpY2UgfSBmcm9tICcuL3JlZnJlc2gtdG9rZW4uc2VydmljZSc7XG5cbmNvbnN0IEFVVEhFTlRJQ0FURV9BUElTID0gW1xuICAvLyBXZWJcbiAgJ2FwaS9zZXJ2aWNlcy93ZWIvdXNlcnMvdmVyaWZ5LTJmYS1hdXRoJyxcbiAgJ2FwaS9zZXJ2aWNlcy93ZWIvdXNlcnMvYXV0aGVudGljYXRlJyxcbiAgJ2FwaS9zZXJ2aWNlcy93ZWIvdXNlcnMvbXVsdGktdGVuYW50cy1hdXRoZW50aWNhdGUnLFxuXG4gIC8vIEJhY2tvZmZpY2VcbiAgJ2FwaS9zZXJ2aWNlcy9iYWNrb2ZmaWNldXNlci9hdXRoZW50aWNhdGUnLFxuXG4gIC8vIE1vYmlsZVxuICAnYXBpL3NlcnZpY2VzL3YyL21vYmlsZS91c2Vycy92ZXJpZnktMmZhLWF1dGgnLFxuICAnYXBpL3NlcnZpY2VzL3YyL21vYmlsZS91c2Vycy9hdXRoZW50aWNhdGUnLFxuICAnYXBpL3NlcnZpY2VzL3YyL21vYmlsZS91c2Vycy9tdWx0aS10ZW5hbnRzLWF1dGhlbnRpY2F0ZScsXG5dO1xuXG5jb25zdCBFREdFX1BSRUZJWF9BUEkgPSAnL2FwaS9zZXJ2aWNlcy93ZWIvc3AnO1xuY29uc3QgTU9CT0lMRV9FREdFX1BSRUZJWF9BUEkgPSAnL2FwaS9zZXJ2aWNlcy92Mi9tb2JpbGUvc3AnO1xuXG5jb25zdCBSRUZSRVNIX1RPS0VOX0FQSSA9ICdhcGkvc2VydmljZXMvd2ViL3VzZXJzL3JlZnJlc2gtdG9rZW4nO1xuY29uc3QgUkVGUkVTSF9NT0JJTEVfVE9LRU5fQVBJID0gJ2FwaS9zZXJ2aWNlcy92Mi9tb2JpbGUvdXNlcnMvcmVmcmVzaC10b2tlbic7XG5cbmNvbnN0IEVYVEVSTkFMX0FQSVMgPSBbXG4gICdhcGkvc2VydmljZXMvc2VsZnZhbGlkYXRpb24vZGV0YWlscycsXG4gICcvZXhlY3V0ZS9zZWxmLXZhbGlkYXRpb24nLCAvLyBUT0RPOiBSZW1vdmUgd2hlbiBzZWxmLXZhbGlkYXRpb24gaXMgaGFuZGxlZCBieSB0aGUgbmV3IHByb2plY3QgKE1hdGFuU2hvbWVyKVxuXTtcbmNvbnN0IEFOT05ZTU9VU19BUElTID0gW1xuICBSRUZSRVNIX1RPS0VOX0FQSSxcbiAgLy8gTGF0ZXN0IFdlYiBVUkxzXG4gICdhcGkvc2VydmljZXMvd2ViL3VzZXJzL211bHRpLXRlbmFudHMtYXV0aGVudGljYXRlJyxcbiAgJ2FwaS9zZXJ2aWNlcy93ZWIvdXNlcnMvYXV0aGVudGljYXRlJyxcbiAgJ2FwaS9zZXJ2aWNlcy93ZWIvdXNlcnMvdmVyaWZ5LTJmYS1hdXRoJyxcbiAgJ2FwaS9zZXJ2aWNlcy93ZWIvdXNlcnMvdmVyaWZ5LTJmYS1hdXRoLWxvZ2luJyxcbiAgJ2FwaS9zZXJ2aWNlcy93ZWIvdXNlcnMvdmFsaWRhdGUtYWN0aXZhdGlvbicsXG4gICdhcGkvc2VydmljZXMvd2ViL3VzZXJzL29pZGMtYXV0aCcsXG4gICdhcGkvc2VydmljZXMvd2ViL2Fzc2V0L2xvZ28nLFxuICAnYXBpL3NlcnZpY2VzL3dlYi90ZW5hbnQvZGV0YWlscycsXG4gICdhcGkvc2VydmljZXMvd2ViL2NvbmZpZ3VyYXRpb24vc3BhcmstbW9iaWxlLXZlcnNpb24nLFxuICAnYXBpL3NlcnZpY2VzL3dlYi90ZW5hbnQvZGF0YScsXG4gICdhcGkvc2VydmljZXMvd2ViL3VzZXJzL2ZvcmdvdC1wYXNzd29yZCcsXG4gICdhcGkvc2VydmljZXMvd2ViL3VzZXJzL2ZvcmdvdC1wYXNzd29yZC10ZW5hbnRsZXNzJyxcbiAgJ2FwaS9zZXJ2aWNlcy93ZWIvdXNlcnMvYWN0aXZhdGUnLFxuICBcbiAgLy8gQmFja29mZmljZSBVUkxzXG4gICdhcGkvc2VydmljZXMvYmFja29mZmljZXVzZXIvYXV0aGVudGljYXRlJyxcbl07XG5cbmNvbnN0IE1PQklMRV9BTk9OWU1PVVNfQVBJUyA9IFtcbiAgLy8gTW9iaWxlXG4gIFJFRlJFU0hfTU9CSUxFX1RPS0VOX0FQSSxcbiAgJ2FwaS9zZXJ2aWNlcy92Mi9tb2JpbGUvdXNlcnMvbXVsdGktdGVuYW50cy1hdXRoZW50aWNhdGUnLFxuICAnYXBpL3NlcnZpY2VzL3YyL21vYmlsZS91c2Vycy9hdXRoZW50aWNhdGUnLFxuICAnYXBpL3NlcnZpY2VzL3YyL21vYmlsZS91c2Vycy92ZXJpZnktMmZhLWF1dGgnLFxuICAnYXBpL3NlcnZpY2VzL3YyL21vYmlsZS91c2Vycy92ZXJpZnktMmZhLWF1dGgtbG9naW4nLFxuICAnYXBpL3NlcnZpY2VzL3YyL21vYmlsZS9hc3NldC9sb2dvJyxcbiAgJ2FwaS9zZXJ2aWNlcy92Mi9tb2JpbGUvY29uZmlndXJhdGlvbi9zcGFyay1tb2JpbGUtdmVyc2lvbicsXG4gICdhcGkvc2VydmljZXMvdjIvbW9iaWxlL3RlbmFudC9kYXRhJyxcbl07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBdXRoVG9rZW5TZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlc3Npb25TdG9yYWdlU2VydmljZTogU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLCBwcml2YXRlIHN0b3JlOiBTdG9yZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGFwcENvbmZpZzogQXBwQ29uZmlnU2VydmljZSwgcHJpdmF0ZSByZWZyZXNoVG9rZW5TZXJ2aWNlOiBSZWZyZXNoVG9rZW5TZXJ2aWNlLCBwcml2YXRlIGxvY2FsU3RvcmFnZVNlcnZpY2U6IExvY2FsU3RvcmFnZVNlcnZpY2UpIHtcbiAgfVxuXG4gIHB1YmxpYyBpc1JlZnJlc2hUb2tlbkV4cGlyZWQgPSAocmVmcmVzaEluZm86IFJlZnJlc2hJbmZvKSA9PlxuICAgICFyZWZyZXNoSW5mbyB8fCBuZXcgRGF0ZSgpID4gbmV3IERhdGUobW9tZW50KHJlZnJlc2hJbmZvLmV4cGlyYXRpb24pLmFkZCgtIHJlZnJlc2hJbmZvLnJlZnJlc2hJbnRlcnZhbCAqIDAuMSwgJ21pbGxpc2Vjb25kcycpLmZvcm1hdCgpKTtcblxuICBwdWJsaWMgaGFuZGxlUmVxdWVzdChyZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKSB7XG4gICAgcmVxID0gdGhpcy5zZXRSZXF1ZXN0SGVhZGVycyhyZXEpO1xuICAgIGxldCByZXF1ZXN0OiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiA9IG5leHQuaGFuZGxlKHJlcSk7XG4gICAgY29uc3QgcmVmcmVzaEluZm86IFJlZnJlc2hJbmZvID0gdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0QXV0aDtcbiAgICBpZiAodGhpcy5zaG91bGRIYW5kbGVSZWZyZXNoVG9rZW4ocmVxKSAmJiB0aGlzLmlzUmVmcmVzaFRva2VuRXhwaXJlZChyZWZyZXNoSW5mbykpIHtcbiAgICAgIHJlcXVlc3QgPSB0aGlzLnJlZnJlc2hUb2tlblNlcnZpY2UuaGFuZGxlUmVmcmVzaFRva2VuKHJlcSwgbmV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcXVlc3Q7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlQmFja09mZmljZVJlcXVlc3QocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcikge1xuICAgIHJlcSA9IHRoaXMuc2V0QmFja09mZmljZVJlcXVlc3RIZWFkZXJzKHJlcSk7XG4gICAgbGV0IHJlcXVlc3Q6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+ID0gbmV4dC5oYW5kbGUocmVxKTtcbiAgICByZXR1cm4gcmVxdWVzdDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0QmFja09mZmljZVJlcXVlc3RIZWFkZXJzKHJlcTogSHR0cFJlcXVlc3Q8YW55Pikge1xuICAgIGNvbnN0IGFwcGxpY2F0aW9uVHlwZTogQXBwbGljYXRpb25UeXBlID0gQXBwVHlwZU1hcC5nZXQodGhpcy5hcHBDb25maWcuZ2V0Q29uZmlnKCkuYXBwVHlwZSk7XG4gICAgaWYgKHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmFjY2Vzc1Rva2VuKSB7XG4gICAgICByZXEgPSByZXEuY2xvbmUoe1xuICAgICAgICBoZWFkZXJzOiByZXEuaGVhZGVyc1xuICAgICAgICAgIC5zZXQoJ0F1dGhvcml6YXRpb24nLCBgQmVhcmVyICR7dGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuYWNjZXNzVG9rZW59YClcbiAgICAgICAgICAuc2V0KCdBcHBsaWNhdGlvbi1UeXBlJywgYXBwbGljYXRpb25UeXBlLnRvU3RyaW5nKCkpXG4gICAgICAgICAgLnNldCgnbmdzdy1ieXBhc3MnLCAndHJ1ZScpXG4gICAgICAgICAgLnNldCgnQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJywgJyonKVxuICAgICAgICAgIC5zZXQoJ3RpbWVab25lJywgZ2V0VXNlclRpbWVab25lKCkpXG4gICAgICAgICAgLnNldCgnQ2xpZW50VmVyc2lvbicsIHRoaXMuYXBwQ29uZmlnLmdldENvbmZpZygpLnBhY2thZ2VJbmZvLnZlcnNpb24pXG4gICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICByZXEgPSByZXEuY2xvbmUoe1xuICAgICAgICBoZWFkZXJzOiByZXEuaGVhZGVyc1xuICAgICAgICAgIC5zZXQoJ3RpbWVab25lJywgZ2V0VXNlclRpbWVab25lKCkpXG4gICAgICAgICAgLnNldCgnQXBwbGljYXRpb24tVHlwZScsIGFwcGxpY2F0aW9uVHlwZS50b1N0cmluZygpKVxuICAgICAgICAgIC5zZXQoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbicsICcqJylcbiAgICAgICAgICAuc2V0KCdDbGllbnRWZXJzaW9uJywgdGhpcy5hcHBDb25maWcuZ2V0Q29uZmlnKCkucGFja2FnZUluZm8udmVyc2lvbilcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVxO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZU1vYmlsZVJlcXVlc3QocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcikge1xuICAgIHJlcSA9IHRoaXMuc2V0UmVxdWVzdEhlYWRlcnMocmVxKTtcbiAgICBsZXQgcmVxdWVzdDogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4gPSBuZXh0LmhhbmRsZShyZXEpO1xuICAgIGNvbnN0IHJlZnJlc2hJbmZvOiBSZWZyZXNoSW5mbyA9IHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldEF1dGg7XG4gICAgaWYgKHRoaXMuc2hvdWxkSGFuZGxlTW9iaWxlUmVmcmVzaFRva2VuKHJlcSkgJiYgdGhpcy5pc1JlZnJlc2hUb2tlbkV4cGlyZWQocmVmcmVzaEluZm8pKSB7XG4gICAgICByZXF1ZXN0ID0gdGhpcy5yZWZyZXNoVG9rZW5TZXJ2aWNlLmhhbmRsZVJlZnJlc2hUb2tlbihyZXEsIG5leHQpO1xuICAgIH1cblxuICAgIHJldHVybiByZXF1ZXN0O1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUJhY2tvZmZpY2VFdmVudFN0YXR1c0Vycm9yKGU6IEh0dHBFcnJvclJlc3BvbnNlLCByZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKSB7XG4gICAgbGV0IHJlc3BvbnNlOiBPYnNlcnZhYmxlPGFueT47XG4gICAgcmVzcG9uc2UgPSB0aGlzLmhhbmRsZUJhY2tvZmZpY2VFcnJvclJlc3BvbnNlKGUpO1xuICAgIHJldHVybiByZXNwb25zZTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVFdmVudFN0YXR1c0Vycm9yKGU6IEh0dHBFcnJvclJlc3BvbnNlLCByZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKSB7XG4gICAgbGV0IHJlc3BvbnNlOiBPYnNlcnZhYmxlPGFueT47XG4gICAgc3dpdGNoIChlLnN0YXR1cykge1xuICAgICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5VbmF1dGhvcml6ZWQ6XG4gICAgICAgIGlmICh0aGlzLnNob3VsZEhhbmRsZVJlZnJlc2hUb2tlbihyZXEpKSB7XG4gICAgICAgICAgcmVxID0gdGhpcy5zZXRSZXF1ZXN0SGVhZGVycyhyZXEpO1xuICAgICAgICAgIHJlc3BvbnNlID0gdGhpcy5yZWZyZXNoVG9rZW5TZXJ2aWNlLmhhbmRsZVJlZnJlc2hUb2tlbihyZXEsIG5leHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3BvbnNlID0gdGhpcy5oYW5kbGVFcnJvclJlc3BvbnNlKGUpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmVzcG9uc2UgPSB0aGlzLmhhbmRsZUVycm9yUmVzcG9uc2UoZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiByZXNwb25zZTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVNb2JpbGVFdmVudFN0YXR1c0Vycm9yKGU6IEh0dHBFcnJvclJlc3BvbnNlLCByZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKSB7XG4gICAgbGV0IHJlc3BvbnNlOiBPYnNlcnZhYmxlPGFueT47XG4gICAgc3dpdGNoIChlLnN0YXR1cykge1xuICAgICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5VbmF1dGhvcml6ZWQ6XG4gICAgICAgIGlmICh0aGlzLnNob3VsZEhhbmRsZU1vYmlsZVJlZnJlc2hUb2tlbihyZXEpKSB7XG4gICAgICAgICAgcmVxID0gdGhpcy5zZXRSZXF1ZXN0SGVhZGVycyhyZXEpO1xuICAgICAgICAgIHJlc3BvbnNlID0gdGhpcy5yZWZyZXNoVG9rZW5TZXJ2aWNlLmhhbmRsZU1vYmlsZVJlZnJlc2hUb2tlbihyZXEsIG5leHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3BvbnNlID0gdGhpcy5oYW5kbGVFcnJvclJlc3BvbnNlKGUpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmVzcG9uc2UgPSB0aGlzLmhhbmRsZUVycm9yUmVzcG9uc2UoZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiByZXNwb25zZTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVTdWNjZXNzUmVzcG9uc2UocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBldmVudDogSHR0cFJlc3BvbnNlPGFueT4pIHtcbiAgICBpZiAoZXZlbnQ/LnN0YXR1cyA9PT0gSHR0cFN0YXR1c0NvZGUuT2sgfHwgZXZlbnQ/LnN0YXR1cyA9PT0gSHR0cFN0YXR1c0NvZGUuQWNjZXB0ZWQpIHtcbiAgICAgIHRoaXMuY2hlY2tBbmRDbGVhclBhcmtTdGF0dXNHbG9iYWxFcnJvck5vdGlmaWNhdGlvbihyZXEudXJsKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbW9iaWxlSGFuZGxlU3VjY2Vzc1Jlc3BvbnNlKHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgZXZlbnQ6IEh0dHBSZXNwb25zZTxhbnk+KSB7XG4gICAgaWYgKGV2ZW50Py5zdGF0dXMgPT09IEh0dHBTdGF0dXNDb2RlLk9rIHx8IGV2ZW50Py5zdGF0dXMgPT09IEh0dHBTdGF0dXNDb2RlLkFjY2VwdGVkKSB7XG4gICAgICB0aGlzLm1vYmlsZUNoZWNrQW5kQ2xlYXJQYXJrU3RhdHVzR2xvYmFsRXJyb3JOb3RpZmljYXRpb24ocmVxLnVybCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzUmVmcmVzaFRva2VuUmVxdWVzdCA9IChyZXE6IEh0dHBSZXF1ZXN0PGFueT4pID0+IHJlcS51cmwuaW5jbHVkZXMoUkVGUkVTSF9UT0tFTl9BUEkpIHx8IHJlcS51cmwuaW5jbHVkZXMoUkVGUkVTSF9NT0JJTEVfVE9LRU5fQVBJKTs7XG5cbiAgcHJpdmF0ZSBzZXRSZXF1ZXN0SGVhZGVycyhyZXE6IEh0dHBSZXF1ZXN0PGFueT4pIHtcbiAgICBjb25zdCBhcHBsaWNhdGlvblR5cGU6IEFwcGxpY2F0aW9uVHlwZSA9IEFwcFR5cGVNYXAuZ2V0KHRoaXMuYXBwQ29uZmlnLmdldENvbmZpZygpLmFwcFR5cGUpO1xuICAgIGNvbnN0IHBsYXRmb3JtVHlwZTogUGxhdGZvcm1UeXBlID0gdGhpcy5hcHBDb25maWcuZ2V0Q29uZmlnKCkucGxhdGZvcm1UeXBlO1xuICAgIGNvbnN0IGFwcE1vZHVsZTogQXBwTW9kdWxlID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChTaWRlbmF2U3RhdGUuYXBwTW9kdWxlKTtcbiAgICBjb25zdCBzdWJNb2R1bGU6IFN1Yk1vZHVsZSA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoU2lkZW5hdlN0YXRlLnN1Yk1vZHVsZSk7XG4gICAgY29uc3QgYXBwTW9kdWxlU3RyID0gYXBwTW9kdWxlPy50b1N0cmluZygpIHx8ICcnO1xuICAgIGNvbnN0IHN1Yk1vZHVsZVN0ciA9IHN1Yk1vZHVsZT8udG9TdHJpbmcoKSB8fCAnJztcblxuICAgIGNvbnN0IHNtYXJ0UGFya0R0byA9IHRoaXMuZ2V0U21hcnRQYXJrRHRvKHJlcS51cmwpIHx8IHt9O1xuICAgIGNvbnN0IHNwYXJrVmVyc2lvbiA9IHNtYXJ0UGFya0R0b1tcInNwYXJrVmVyc2lvblwiXSA/PyAnJztcbiAgICBjb25zdCBzbWFydFBhcmtWZXJzaW9uID0gKHNtYXJ0UGFya0R0b1tcInNtYXJ0UGFya1ZlcnNpb25cIl0gPz8gJycpLnJlcGxhY2UoXCIgQnVpbGQoXCIsIFwiX1wiKS5yZXBsYWNlKFwiKVwiLCBcIlwiKS50cmltKCk7XG5cbiAgICBpZiAodGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuYWNjZXNzVG9rZW4pIHtcbiAgICAgIHJlcSA9IHJlcS5jbG9uZSh7XG4gICAgICAgIGhlYWRlcnM6IHJlcS5oZWFkZXJzXG4gICAgICAgICAgLnNldCgnQXV0aG9yaXphdGlvbicsIGBCZWFyZXIgJHt0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5hY2Nlc3NUb2tlbn1gKVxuICAgICAgICAgIC5zZXQoJ3gtcGxhdGZvcm0tdHlwZScsIHBsYXRmb3JtVHlwZS50b1N0cmluZygpKVxuICAgICAgICAgIC5zZXQoJ0FwcGxpY2F0aW9uLVR5cGUnLCBhcHBsaWNhdGlvblR5cGUudG9TdHJpbmcoKSlcbiAgICAgICAgICAuc2V0KCduZ3N3LWJ5cGFzcycsICd0cnVlJylcbiAgICAgICAgICAuc2V0KCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nLCAnKicpXG4gICAgICAgICAgLnNldCgnYXBwTW9kdWxlJywgYXBwTW9kdWxlU3RyKSAvLyBUT0RPOiBSZW1vdmUgd2hlbiA4LjEgaXMgZGVwcmVjYXRlZCA/P1xuICAgICAgICAgIC5zZXQoJ0FwcC1Nb2R1bGUnLCBhcHBNb2R1bGVTdHIpXG4gICAgICAgICAgLnNldCgnU3ViLU1vZHVsZScsIHN1Yk1vZHVsZVN0cilcbiAgICAgICAgICAuc2V0KCd0aW1lWm9uZScsIGdldFVzZXJUaW1lWm9uZSgpKVxuICAgICAgICAgIC5zZXQoJ0NsaWVudFZlcnNpb24nLCB0aGlzLmFwcENvbmZpZy5nZXRDb25maWcoKS5wYWNrYWdlSW5mby52ZXJzaW9uKVxuICAgICAgICAgIC5zZXQoJ1NwYXJrVmVyc2lvbicsIHNwYXJrVmVyc2lvbilcbiAgICAgICAgICAuc2V0KCdTbWFydFBhcmtWZXJzaW9uJywgc21hcnRQYXJrVmVyc2lvbilcbiAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHJlcSA9IHJlcS5jbG9uZSh7XG4gICAgICAgIGhlYWRlcnM6IHJlcS5oZWFkZXJzXG4gICAgICAgICAgLnNldCgneC1wbGF0Zm9ybS10eXBlJywgcGxhdGZvcm1UeXBlLnRvU3RyaW5nKCkpXG4gICAgICAgICAgLnNldCgnQXBwbGljYXRpb24tVHlwZScsIGFwcGxpY2F0aW9uVHlwZS50b1N0cmluZygpKVxuICAgICAgICAgIC5zZXQoJ3RpbWVab25lJywgZ2V0VXNlclRpbWVab25lKCkpXG4gICAgICAgICAgLnNldCgnQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJywgJyonKVxuICAgICAgICAgIC5zZXQoJ0NsaWVudFZlcnNpb24nLCB0aGlzLmFwcENvbmZpZy5nZXRDb25maWcoKS5wYWNrYWdlSW5mby52ZXJzaW9uKVxuICAgICAgICAgIC5zZXQoJ1NwYXJrVmVyc2lvbicsIHNwYXJrVmVyc2lvbilcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXE7XG4gIH1cblxuICBwcml2YXRlIHNob3VsZEhhbmRsZVJlZnJlc2hUb2tlbihyZXE6IEh0dHBSZXF1ZXN0PGFueT4pIHtcbiAgICByZXR1cm4gIUFOT05ZTU9VU19BUElTLnNvbWUoYXBpID0+IHJlcS51cmwuaW5jbHVkZXMoYXBpKSkgJiYgIXRoaXMuaXNSZWZyZXNoVG9rZW5SZXF1ZXN0KHJlcSkgJiYgIUVYVEVSTkFMX0FQSVMuc29tZShhcGkgPT4gcmVxLnVybC5pbmNsdWRlcyhhcGkpKSAmJiAhdGhpcy5pc1NlbGZWYWxpZGF0aW9uTGlua1VSTDtcbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkSGFuZGxlTW9iaWxlUmVmcmVzaFRva2VuKHJlcTogSHR0cFJlcXVlc3Q8YW55Pikge1xuICAgIHJldHVybiAhTU9CSUxFX0FOT05ZTU9VU19BUElTLnNvbWUoYXBpID0+IHJlcS51cmwuaW5jbHVkZXMoYXBpKSkgJiYgIXRoaXMuaXNSZWZyZXNoVG9rZW5SZXF1ZXN0KHJlcSk7XG4gIH1cblxuICAvLyBUZW1wb3JhcnkgY2hlY2sgZm9yICdzZWxmLXZhbGlkYXRpb24/dG9rZW49JyBpbiBVUkwuXG4gIC8vIFRoaXMgY2FuIGJlIHJlbW92ZWQgb25jZSBzZWxmIHZhbGlkYXRpb24gbGlua3MgYXJlIGhhbmRsZWQgYnkgdGhlIG5ldyBwcm9qZWN0LlxuICBwcml2YXRlIGlzU2VsZlZhbGlkYXRpb25MaW5rVVJMID0gbG9jYXRpb24uaHJlZi5pbmNsdWRlcygnL3NlbGYtdmFsaWRhdGlvbj90b2tlbj0nKTtcblxuICBwcml2YXRlIGdldFNtYXJ0UGFya0R0byhyZXF1ZXN0VXJsOiBzdHJpbmcpOiBTbWFydHBhcmtEdG8gfCBTbWFydHBhcmtCYXNpY0R0byB7XG4gICAgbGV0IGd1aWQgPSBudWxsO1xuXG4gICAgY29uc3QgZ3VpZFBhdHRlcm4gPSAvW2EtZkEtRjAtOV17OH0tW2EtZkEtRjAtOV17NH0tW2EtZkEtRjAtOV17NH0tW2EtZkEtRjAtOV17NH0tW2EtZkEtRjAtOV17MTJ9LztcbiAgICBjb25zdCBtYXRjaGVzID0gcmVxdWVzdFVybC5tYXRjaChndWlkUGF0dGVybik7XG5cbiAgICBpZiAobWF0Y2hlcyAmJiBtYXRjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGd1aWQgPSBtYXRjaGVzWzBdO1xuICAgIH0gZWxzZSBpZiAocmVxdWVzdFVybC5pbmNsdWRlcygnL3NlbmQtbWFpbC1mcm9tLWVudGl0eScpKSB7XG4gICAgICBndWlkID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmd1aWQpO1xuICAgIH1cblxuICAgIGNvbnN0IHNtYXJ0UGFya0R0byA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoU21hcnRwYXJrU3RhdGUuc21hcnRwYXJrcyk/LmZpbmQoc21hcnRQYXJrID0+IHNtYXJ0UGFyay5ndWlkID09PSBndWlkKTtcbiAgICByZXR1cm4gc21hcnRQYXJrRHRvO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0FuZENsZWFyUGFya1N0YXR1c0dsb2JhbEVycm9yTm90aWZpY2F0aW9uKHVybDogc3RyaW5nKSB7XG4gICAgaWYgKHVybD8uc3RhcnRzV2l0aChFREdFX1BSRUZJWF9BUEkpKSB7XG4gICAgICBjb25zdCBhcHBNb2R1bGUgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNpZGVuYXZTdGF0ZS5hcHBNb2R1bGUpO1xuICAgICAgaWYgKGFwcE1vZHVsZSA9PSBBcHBNb2R1bGUuQ2MgfHwgYXBwTW9kdWxlID09IEFwcE1vZHVsZS5NYW5hZ2VtZW50KSB7XG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb25TdGF0dXNEaWN0aW9uYXJ5OiBDb25uZWN0aW9uU3RhdHVzRGljdGlvbmFyeSA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5wYXJrQ29ubmVjdGlvblN0YXR1c01hcCk7XG4gICAgICAgIGNvbnN0IGd1aWQ6IHN0cmluZyA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5ndWlkKTtcbiAgICAgICAgY29uc3QgcGFya0lkOiBudW1iZXIgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUucGFya0lkKTtcblxuICAgICAgICBpZiAoZ3VpZCAmJiBwYXJrSWQgJiYgY29ubmVjdGlvblN0YXR1c0RpY3Rpb25hcnlbZ3VpZF0pIHtcbiAgICAgICAgICB2YXIgcGFya0Nvbm5lY3Rpb25TdGF0dXMgPSBjb25uZWN0aW9uU3RhdHVzRGljdGlvbmFyeVtndWlkXVtwYXJrSWRdO1xuICAgICAgICAgIGlmIChwYXJrQ29ubmVjdGlvblN0YXR1cy5zdGF0dXMgPT0gUGFya0Nvbm5lY3Rpb25TdGF0dXMuU3BhcmtDb3JlU2VydmVyRGlzY29ubmVjdGVkIHx8XG4gICAgICAgICAgICBwYXJrQ29ubmVjdGlvblN0YXR1cy5zdGF0dXMgPT0gUGFya0Nvbm5lY3Rpb25TdGF0dXMuU3BhcmtDb3JlQ2xvdWRTZXJ2ZXJEaXNjb25uZWN0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VydmljZXNSdW5uaW5nU3RhdHVzKGd1aWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbW9iaWxlQ2hlY2tBbmRDbGVhclBhcmtTdGF0dXNHbG9iYWxFcnJvck5vdGlmaWNhdGlvbih1cmw6IHN0cmluZykge1xuICAgIGlmICh1cmw/LnN0YXJ0c1dpdGgoTU9CT0lMRV9FREdFX1BSRUZJWF9BUEkpKSB7XG4gICAgICBjb25zdCBhcHBNb2R1bGUgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNpZGVuYXZTdGF0ZS5hcHBNb2R1bGUpO1xuICAgICAgaWYgKGFwcE1vZHVsZSA9PSBBcHBNb2R1bGUuQ2MgfHwgYXBwTW9kdWxlID09IEFwcE1vZHVsZS5NYW5hZ2VtZW50KSB7XG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb25TdGF0dXNEaWN0aW9uYXJ5OiBDb25uZWN0aW9uU3RhdHVzRGljdGlvbmFyeSA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5wYXJrQ29ubmVjdGlvblN0YXR1c01hcCk7XG4gICAgICAgIGNvbnN0IGd1aWQ6IHN0cmluZyA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5ndWlkKTtcbiAgICAgICAgY29uc3QgcGFya0lkOiBudW1iZXIgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUucGFya0lkKTtcblxuICAgICAgICBpZiAoZ3VpZCAmJiBwYXJrSWQgJiYgY29ubmVjdGlvblN0YXR1c0RpY3Rpb25hcnlbZ3VpZF0pIHtcbiAgICAgICAgICB2YXIgcGFya0Nvbm5lY3Rpb25TdGF0dXMgPSBjb25uZWN0aW9uU3RhdHVzRGljdGlvbmFyeVtndWlkXVtwYXJrSWRdO1xuICAgICAgICAgIGlmIChwYXJrQ29ubmVjdGlvblN0YXR1cy5zdGF0dXMgPT0gUGFya0Nvbm5lY3Rpb25TdGF0dXMuU3BhcmtDb3JlU2VydmVyRGlzY29ubmVjdGVkIHx8XG4gICAgICAgICAgICBwYXJrQ29ubmVjdGlvblN0YXR1cy5zdGF0dXMgPT0gUGFya0Nvbm5lY3Rpb25TdGF0dXMuU3BhcmtDb3JlQ2xvdWRTZXJ2ZXJEaXNjb25uZWN0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VydmljZXNSdW5uaW5nU3RhdHVzKGd1aWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU2VydmljZXNSdW5uaW5nU3RhdHVzKHNtYXJ0UGFya0d1aWQ6IHN0cmluZykge1xuICAgIGNvbnN0IHNlcnZpY2VzUnVubmluZ1N0YXR1c0RpY3Rpb25hcnkgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuc2VydmljZXNSdW5uaW5nU3RhdHVzRGljdGlvbmFyeSk7XG4gICAgY29uc3QgY3VycmVudEZhY2lsaXR5U2VydmljZXNSdW5uaW5nU3RhdHVzOiBTZXJ2aWNlc1J1bm5pbmdTdGF0dXNEdG8gPSBzZXJ2aWNlc1J1bm5pbmdTdGF0dXNEaWN0aW9uYXJ5W3NtYXJ0UGFya0d1aWRdO1xuICAgIGN1cnJlbnRGYWNpbGl0eVNlcnZpY2VzUnVubmluZ1N0YXR1cy5pc1NwYXJrQ29yZUNvbm5lY3RlZCA9IHRydWU7XG4gICAgY3VycmVudEZhY2lsaXR5U2VydmljZXNSdW5uaW5nU3RhdHVzLmlzU3BhcmtDbG91ZENvbm5lY3RlZCA9IHRydWU7XG4gICAgY3VycmVudEZhY2lsaXR5U2VydmljZXNSdW5uaW5nU3RhdHVzLnNwYXJrQ2xvdWREaXNjb25uZWN0ZWRUaW1lc3RhbXAgPSBudWxsO1xuICAgIGN1cnJlbnRGYWNpbGl0eVNlcnZpY2VzUnVubmluZ1N0YXR1cy5zcGFya0NvcmVEaXNjb25uZWN0ZWRUaW1lc3RhbXAgPSBudWxsO1xuICAgIHRoaXMuc2VydmljZXNSdW5uaW5nU3RhdHVzQ2hhbmdlZChjdXJyZW50RmFjaWxpdHlTZXJ2aWNlc1J1bm5pbmdTdGF0dXMsIHNtYXJ0UGFya0d1aWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvclJlc3BvbnNlKGU6IEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgaWYgKGUuc3RhdHVzID09PSBIdHRwU3RhdHVzQ29kZS5VbmF1dGhvcml6ZWQgJiYgIUFVVEhFTlRJQ0FURV9BUElTLnNvbWUoYXBpID0+IGUudXJsLmluY2x1ZGVzKGFwaSkpICYmICFFWFRFUk5BTF9BUElTLnNvbWUoYXBpID0+IGUudXJsLmluY2x1ZGVzKGFwaSkpKSB7XG4gICAgICBjb25zdCBzcGFya1Nlc3Npb25zID0gdGhpcy5nZXRTcGFya1Nlc3Npb25zKCk7XG4gICAgICBjb25zdCB0ZW5hbnQgPSBzcGFya1Nlc3Npb25zW3RoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnRlbmFudF07XG4gICAgICBpZiAodGVuYW50Py51c2VyPy5zc29BdXRoZW50aWNhdGVkKSB7XG4gICAgICAgIHRoaXMubmF2aWdhdGVUb0xvZ2luKHRlbmFudD8udGVuYW50Py50ZW5hbnROYW1lKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB0aGlzLmxvZ291dChmYWxzZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlLnN0YXR1cyA9PT0gSHR0cFN0YXR1c0NvZGUuQ29uZmxpY3QpIHtcbiAgICAgIHRoaXMuc2V0Q29uZmxpY3REZXRlY3RlZChlKTtcbiAgICAgIHRoaXMubG9nb3V0KGZhbHNlLCBmYWxzZSk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jbGVhckNvbmZsaWN0RGV0ZWN0ZWQoKTtcbiAgICAgIH0sIDMwMDApOyAvLyBEZWxheSB0aGUgcmVzZXQgdG8gZW5zdXJlIHRoZSBVSSByZWFjdHMgZmlyc3RcbiAgICB9XG5cbiAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3BhcmtTZXNzaW9ucyA9ICgpOiBTdHJpbmdNYXA8U3BhcmtTZXNzaW9uPiA9PiBKU09OLnBhcnNlKHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS5nZXRJdGVtKFNFU1NJT04pKT8uc3BhcmtTZXNzaW9ucyA/PyB7fTtcblxuICBwcml2YXRlIGhhbmRsZUJhY2tvZmZpY2VFcnJvclJlc3BvbnNlKGU6IEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgaWYgKGUuc3RhdHVzID09PSBIdHRwU3RhdHVzQ29kZS5VbmF1dGhvcml6ZWQgJiYgIUFVVEhFTlRJQ0FURV9BUElTLnNvbWUoYXBpID0+IGUudXJsLmluY2x1ZGVzKGFwaSkpICYmICFFWFRFUk5BTF9BUElTLnNvbWUoYXBpID0+IGUudXJsLmluY2x1ZGVzKGFwaSkpKSB7XG5cbiAgICAgIHRoaXMubmF2aWdhdGVUb0xvZ2luKCk7XG4gICAgfVxuXG4gICAgaWYgKGUuc3RhdHVzID09PSBIdHRwU3RhdHVzQ29kZS5Db25mbGljdCkge1xuICAgICAgdGhpcy5zZXRDb25mbGljdERldGVjdGVkKGUpO1xuICAgICAgdGhpcy5uYXZpZ2F0ZVRvTG9naW4oKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNsZWFyQ29uZmxpY3REZXRlY3RlZCgpO1xuICAgICAgfSwgMzAwMCk7IC8vIERlbGF5IHRoZSByZXNldCB0byBlbnN1cmUgdGhlIFVJIHJlYWN0cyBmaXJzdFxuICAgIH1cbiAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlKTtcbiAgfVxuXG4gIHByaXZhdGUgbmF2aWdhdGVUb0xvZ2luKHRlbmFudE5hbWU/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBpc01vYmlsZUFwcE1vZGUgPSB0aGlzLmFwcENvbmZpZy5nZXRDb25maWcoKS5hcHBUeXBlID09PSBBcHBUeXBlLk1vYmlsZTtcbiAgICBjb25zdCBsb2dpblJvdXRlID0gJy9hY2NvdW50L2xvZ2luJztcblxuICAgIC8vIElmIG1vYmlsZSDihpIgYWx3YXlzICcnLCBvdGhlcndpc2UgYnVpbGQgcm91dGUgKHdpdGggb3Igd2l0aG91dCB0ZW5hbnQpXG4gICAgY29uc3QgdXJsID0gaXNNb2JpbGVBcHBNb2RlXG4gICAgICA/ICcnXG4gICAgICA6IHRlbmFudE5hbWVcbiAgICAgICAgPyBgJHt0ZW5hbnROYW1lfSR7bG9naW5Sb3V0ZX1gXG4gICAgICAgIDogbG9naW5Sb3V0ZTtcblxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt1cmxdKTtcbiAgfVxuXG5cbiAgQERpc3BhdGNoKCkgcHJpdmF0ZSBsb2dvdXQgPSAobG9nb3V0QXVkaXQ6IGJvb2xlYW4sIGxvZ291dEJhY2tvZmZpY2VBdWRpdDogYm9vbGVhbikgPT4gbmV3IExvZ291dEFjdGlvbihsb2dvdXRBdWRpdCwgbG9nb3V0QmFja29mZmljZUF1ZGl0KTsgLy8gd2hlbiA0MDEgZG8gbm90IGludm9rZSBpbiB0aGUgbG9nb3V0IGFjdGlvbiB0aGUgbG9nb3V0IEF1ZGl0XG5cbiAgQERpc3BhdGNoKCkgc2VydmljZXNSdW5uaW5nU3RhdHVzQ2hhbmdlZCA9IChzZXJ2aWNlc1J1bm5pbmdTdGF0dXM6IFNlcnZpY2VzUnVubmluZ1N0YXR1c0R0bywgZ3VpZDogc3RyaW5nKSA9PlxuICAgIG5ldyBTZXJ2aWNlc1J1bm5pbmdTdGF0dXNDaGFuZ2VkQWN0aW9uKHNlcnZpY2VzUnVubmluZ1N0YXR1cywgZ3VpZCk7XG5cbiAgQERpc3BhdGNoKCkgc2V0Q29uZmxpY3REZXRlY3RlZCA9IChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG5ldyBTZXRDb25mbGljdERldGVjdGVkKGVycm9yKTtcbiAgQERpc3BhdGNoKCkgY2xlYXJDb25mbGljdERldGVjdGVkID0gKCkgPT4gbmV3IENsZWFyQ29uZmxpY3REZXRlY3RlZCgpO1xufVxuIl19
@@ -18150,6 +18150,14 @@ class PingFederationSettings {
18150
18150
  return result;
18151
18151
  }
18152
18152
  }
18153
+ var PlatformType;
18154
+ (function (PlatformType) {
18155
+ PlatformType[PlatformType["None"] = 0] = "None";
18156
+ PlatformType[PlatformType["IOS"] = 1] = "IOS";
18157
+ PlatformType[PlatformType["Android"] = 2] = "Android";
18158
+ PlatformType[PlatformType["Mail"] = 3] = "Mail";
18159
+ PlatformType[PlatformType["Web"] = 4] = "Web";
18160
+ })(PlatformType || (PlatformType = {}));
18153
18161
  class PreferencesSettingDetailsDto {
18154
18162
  constructor(data) {
18155
18163
  if (data) {
@@ -24198,6 +24206,7 @@ var cloudServiceProxies = /*#__PURE__*/Object.freeze({
24198
24206
  get PermissionType () { return PermissionType$2; },
24199
24207
  PermissionsCloudServiceProxy: PermissionsCloudServiceProxy,
24200
24208
  PingFederationSettings: PingFederationSettings,
24209
+ get PlatformType () { return PlatformType; },
24201
24210
  PreferencesSettingDetailsDto: PreferencesSettingDetailsDto,
24202
24211
  PrinterDto: PrinterDto$1,
24203
24212
  ProblemDetails: ProblemDetails$3,
@@ -109940,6 +109949,7 @@ class AuthTokenService {
109940
109949
  switch (e.status) {
109941
109950
  case HttpStatusCode$4.Unauthorized:
109942
109951
  if (this.shouldHandleRefreshToken(req)) {
109952
+ req = this.setRequestHeaders(req);
109943
109953
  response = this.refreshTokenService.handleRefreshToken(req, next);
109944
109954
  }
109945
109955
  else {
@@ -109957,6 +109967,7 @@ class AuthTokenService {
109957
109967
  switch (e.status) {
109958
109968
  case HttpStatusCode$4.Unauthorized:
109959
109969
  if (this.shouldHandleMobileRefreshToken(req)) {
109970
+ req = this.setRequestHeaders(req);
109960
109971
  response = this.refreshTokenService.handleMobileRefreshToken(req, next);
109961
109972
  }
109962
109973
  else {
@@ -109982,6 +109993,7 @@ class AuthTokenService {
109982
109993
  ;
109983
109994
  setRequestHeaders(req) {
109984
109995
  const applicationType = AppTypeMap.get(this.appConfig.getConfig().appType);
109996
+ const platformType = this.appConfig.getConfig().platformType;
109985
109997
  const appModule = this.store.selectSnapshot(SidenavState.appModule);
109986
109998
  const subModule = this.store.selectSnapshot(SidenavState.subModule);
109987
109999
  const appModuleStr = appModule?.toString() || '';
@@ -109993,6 +110005,7 @@ class AuthTokenService {
109993
110005
  req = req.clone({
109994
110006
  headers: req.headers
109995
110007
  .set('Authorization', `Bearer ${this.sessionStorageService.accessToken}`)
110008
+ .set('x-platform-type', platformType.toString())
109996
110009
  .set('Application-Type', applicationType.toString())
109997
110010
  .set('ngsw-bypass', 'true')
109998
110011
  .set('Access-Control-Allow-Origin', '*')
@@ -110008,6 +110021,7 @@ class AuthTokenService {
110008
110021
  else {
110009
110022
  req = req.clone({
110010
110023
  headers: req.headers
110024
+ .set('x-platform-type', platformType.toString())
110011
110025
  .set('Application-Type', applicationType.toString())
110012
110026
  .set('timeZone', getUserTimeZone())
110013
110027
  .set('Access-Control-Allow-Origin', '*')