@tiba-spark/client-shared-lib 25.2.1-559 → 25.2.2-18

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.
@@ -263,17 +263,17 @@ export class SignalR {
263
263
  this.devicesStatusChanged(DeviceStatusDto.fromJS(data));
264
264
  break;
265
265
  case RtEventType.DynamicPricingCondition:
266
- datadogLogs.logger.info(`RT - Got ${JSON.stringify(data)} event`);
266
+ datadogLogs.logger.debug(`RT - Got ${JSON.stringify(data)} event`);
267
267
  this.notificationChanged(NotificationDto.fromJS(data), obj.guid);
268
268
  break;
269
269
  case RtEventType.Alert:
270
270
  case RtEventType.LostTicket:
271
271
  case RtEventType.LPRmismatch:
272
- datadogLogs.logger.info(`RT - Got ${JSON.stringify(data)} event`);
272
+ datadogLogs.logger.debug(`RT - Got ${JSON.stringify(data)} event`);
273
273
  this.alertChanged(AlertDto.fromJS(data), obj.guid);
274
274
  break;
275
275
  case RtEventType.ParkState:
276
- datadogLogs.logger.info(`RT - Got ${JSON.stringify(data)} event`);
276
+ datadogLogs.logger.debug(`RT - Got ${JSON.stringify(data)} event`);
277
277
  this.deviceActivityChanged(data);
278
278
  this.parkActivityChanged(data);
279
279
  break;
@@ -439,4 +439,4 @@ export function getSecondsBackoff(retryCount) {
439
439
  const [minSeconds, maxSeconds] = delaysTableInSeconds[retryCount] || [0, 0];
440
440
  return (Math.floor(Math.random() * (maxSeconds - minSeconds + 1)) + minSeconds) * ONE_SECOND_IN_MILLISECONDS;
441
441
  }
442
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9zZXJ2aWNlcy9zaWduYWxyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsaUJBQWlCLEVBQWlCLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBNEIsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLHlCQUF5QixFQUFFLHdCQUF3QixFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0VBQXNFLENBQUM7QUFDOU0sT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG1DQUFtQyxFQUFFLGtDQUFrQyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDekssT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ25FLE9BQU8sRUFB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dXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBTdGF0dXNDb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBkYXRhZG9nTG9ncyB9IGZyb20gJ0BkYXRhZG9nL2Jyb3dzZXItbG9ncyc7XHJcbmltcG9ydCB7IEh0dHBUcmFuc3BvcnRUeXBlLCBIdWJDb25uZWN0aW9uLCBIdWJDb25uZWN0aW9uQnVpbGRlciwgSHViQ29ubmVjdGlvblN0YXRlIH0gZnJvbSAnQG1pY3Jvc29mdC9zaWduYWxyJztcclxuaW1wb3J0IHsgRGlzcGF0Y2ggfSBmcm9tICdAbmd4cy1sYWJzL2Rpc3BhdGNoLWRlY29yYXRvcic7XHJcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbiwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb25FdmVudFNlcnZpY2UgfSBmcm9tICcuLi9jb21wb25lbnRzL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24tZXZlbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IE9ORV9TRUNPTkRfSU5fTUlMTElTRUNPTkRTIH0gZnJvbSAnLi4vY29uc3RhbnRzL2dsb2JhbC1jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBBcHBUeXBlIH0gZnJvbSAnLi4vZW51bXMvYXBwLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IEFsZXJ0Q2hhbmdlZEFjdGlvbiwgSGFuZGxlQWxlcnRzQWN0aW9uLCBIYW5kbGVkTm90aWZpY2F0aW9uQWN0aW9uLCBIYW5kbGVOb3RpZmljYXRpb25BY3Rpb24sIE5vdGlmaWNhdGlvbkNoYW5nZWRBY3Rpb24gfSBmcm9tICcuLi9tb2R1bGVzL2FsZXJ0cy1hbmQtbm90aWZpY2F0aW9ucy9hbGVydHMtYW5kLW5vdGlmaWNhdGlvbnMuYWN0aW9ucyc7XHJcbmltcG9ydCB7IFNpZ25hbFJSZWZyZXNoVG9rZW5BY3Rpb24gfSBmcm9tICcuLi9tb2R1bGVzL2F1dGgvcmVmcmVzaC10b2tlbi5hY3Rpb25zJztcclxuaW1wb3J0IHsgRmFjaWxpdHlDaGFuZ2VkQWN0aW9uLCBGYWNpbGl0eVJlbW90ZUNvbW1hbmRFeGVjdXRlZEFjdGlvbiwgU2VydmljZXNSdW5uaW5nU3RhdHVzQ2hhbmdlZEFjdGlvbiwgWm9uZUNoYW5nZWRBY3Rpb24gfSBmcm9tICcuLi9tb2R1bGVzL2ZhY2lsaXR5L2ZhY2lsaXR5LmFjdGlvbnMnO1xyXG5pbXBvcnQgeyBGYWNpbGl0eVN0YXRlIH0gZnJvbSAnLi4vbW9kdWxlcy9mYWNpbGl0eS9mYWNpbGl0eS5zdGF0ZSc7XHJcbmltcG9ydCB7IFBhcmtBY3Rpdml0eUNoYW5nZWRBY3Rpb24gfSBmcm9tICcuLi9tb2R1bGVzL3BhcmstYWN0aXZpdGllcy9wYXJrLWFjdGl2aXRpZXMuYWN0aW9ucyc7XHJcbmltcG9ydCB7IERldmljZUFjdGl2aXR5Q2hhbmdlZEFjdGlvbiwgRGV2aWNlRXZlbnRDaGFuZ2VkQWN0aW9uLCBEZXZpY2VTdGF0dXNDaGFuZ2VkQWN0aW9uLCBMcHJUcmFuc2FjdGlvbnNDaGFuZ2VkQWN0aW9uIH0gZnJvbSAnLi4vbW9kdWxlcy9wYXJrLW1hbmFnZXIvcGFyay1tYW5hZ2VyLmFjdGlvbnMnO1xyXG5pbXBvcnQgeyBTaWRlbmF2U3RhdGUgfSBmcm9tICcuLi9tb2R1bGVzL3NpZGVuYXYvc2lkZW5hdi5zdGF0ZSc7XHJcbmltcG9ydCB7IEFkZFNtYXJ0cGFya0FjdGlvbiB9IGZyb20gJy4uL21vZHVsZXMvc21hcnRwYXJrcy9zbWFydHBhcmstZGlhbG9nLmFjdGlvbnMnO1xyXG5pbXBvcnQgeyBBbGVydER0bywgTm90aWZpY2F0aW9uRHRvLCBTbWFydHBhcmtEdG8gfSBmcm9tICcuLi9zZXJ2aWNlLXByb3h5L2Nsb3VkLXNlcnZpY2UtcHJveGllcyc7XHJcbmltcG9ydCB7XHJcbiAgRGV2aWNlRXZlbnREdG8sIERldmljZVN0YXR1c0R0bywgRXZlbnRBY3Rpdml0eUR0bywgRmFjaWxpdHlEdG8sIEZhY2lsaXR5UmVtb3RlQ29tbWFuZEV2ZW50LFxyXG4gIEZhY2lsaXR5UmVtb3RlQ29tbWFuZFR5cGVzLCBMcHJUcmFuc2FjdGlvbkR0bywgTm90aWZpY2F0aW9uRXZlbnRUeXBlLCBOb3RpZmljYXRpb25TdWJzY3JpcHRpb25EdG8sXHJcbiAgUlRFdmVudFN1YnNjcmlwdGlvbkR0bywgUnRFdmVudFR5cGUsIFNlcnZpY2VzUnVubmluZ1N0YXR1c0R0bywgWm9uZUR0b1xyXG59IGZyb20gJy4uL3NlcnZpY2UtcHJveHkvZWRnZS1zZXJ2aWNlLXByb3hpZXMnO1xyXG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9hcHAtY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHZW5lcmFsQWN0aW9uU2VydmljZSB9IGZyb20gJy4vZ2VuZXJhbC1hY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFJlYWx0aW1lRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi9yZWFsdGltZS1ldmVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9zZXNzaW9uLXN0b3JhZ2Uuc2VydmljZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgU2lnbmFsUk9iamVjdCB7XHJcbiAgY29uc3RydWN0b3IocHVibGljIGd1aWQ6IHN0cmluZywgcHVibGljIGpzb25QYXlsb2FkOiBzdHJpbmcpIHtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSVE9iamVjdE9iamVjdCBleHRlbmRzIFNpZ25hbFJPYmplY3Qge1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBydEV2ZW50VHlwZTogUnRFdmVudFR5cGUsIHB1YmxpYyBwYXJrSWQ6IG51bWJlciwgcHVibGljIGd1aWQ6IHN0cmluZywgcHVibGljIGpzb25QYXlsb2FkOiBzdHJpbmcpIHtcclxuICAgIHN1cGVyKGd1aWQsIGpzb25QYXlsb2FkKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBTcGFya05vdGlmaWNhdGlvbiBleHRlbmRzIFNpZ25hbFJPYmplY3Qge1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBub3RpZmljYXRpb25UeXBlOiBOb3RpZmljYXRpb25FdmVudFR5cGUsIHB1YmxpYyBndWlkOiBzdHJpbmcsIHB1YmxpYyBpZGVudGlmaWVyOiBzdHJpbmcsIHB1YmxpYyBqc29uUGF5bG9hZDogc3RyaW5nKSB7XHJcbiAgICBzdXBlcihndWlkLCBqc29uUGF5bG9hZCk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2lnbmFsUiB7XHJcblxyXG4gIHB1YmxpYyBjb25uZWN0aW9uOiBIdWJDb25uZWN0aW9uO1xyXG4gIHB1YmxpYyBzdWJzY3JpcHRpb25RdWV1ZTogYW55W10gPSBbXTtcclxuICBwdWJsaWMgbm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uUXVldWU6IGFueVtdID0gW107XHJcblxyXG4gIHByb3RlY3RlZCBzdG9yZTogU3RvcmU7XHJcbiAgcHJvdGVjdGVkIHJlYWx0aW1lRXZlbnRTZXJ2aWNlOiBSZWFsdGltZUV2ZW50U2VydmljZTtcclxuICBwcm90ZWN0ZWQgbm90aWZpY2F0aW9uRXZlbnRTZXJ2aWNlOiBOb3RpZmljYXRpb25FdmVudFNlcnZpY2U7XHJcbiAgcHJvdGVjdGVkIHNlc3Npb25TdG9yYWdlU2VydmljZTogU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlO1xyXG4gIHByb3RlY3RlZCBhcHBDb25maWc6IEFwcENvbmZpZ1NlcnZpY2U7XHJcbiAgcHJvdGVjdGVkIGdlbmVyYWxBY3Rpb25TZXJ2aWNlOiBHZW5lcmFsQWN0aW9uU2VydmljZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgdGhpcy5zdG9yZSA9IGluamVjdG9yLmdldChTdG9yZSk7XHJcbiAgICB0aGlzLnJlYWx0aW1lRXZlbnRTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFJlYWx0aW1lRXZlbnRTZXJ2aWNlKTtcclxuICAgIHRoaXMubm90aWZpY2F0aW9uRXZlbnRTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KE5vdGlmaWNhdGlvbkV2ZW50U2VydmljZSk7XHJcbiAgICB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZSA9IGluamVjdG9yLmdldChTZXNzaW9uU3RvcmFnZVNlcnZpY2UpO1xyXG4gICAgdGhpcy5hcHBDb25maWcgPSBpbmplY3Rvci5nZXQoQXBwQ29uZmlnU2VydmljZSk7XHJcbiAgICB0aGlzLmdlbmVyYWxBY3Rpb25TZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KEdlbmVyYWxBY3Rpb25TZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbml0UmVhbHRpbWVFdmVudExpc3RlbmVycygpIHtcclxuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuYXBwQ29uZmlnLmdldENvbmZpZygpO1xyXG4gICAgY29uc3QgYmFzZVVybCA9IGNvbmZpZy5hcHBUeXBlID09PSBBcHBUeXBlLk1vYmlsZSA/IGNvbmZpZy5hcGlCYXNlVVJMIDogJyc7XHJcbiAgICBjb25zdCB1cmwgPSBgJHtiYXNlVXJsfS9yZWFsdGltZWA7XHJcblxyXG4gICAgZGF0YWRvZ0xvZ3MubG9nZ2VyLmluZm8oYFJUIEFQSSBCYXNlIFVybCAtICR7dXJsfWApO1xyXG5cclxuICAgIGNvbnN0IG1heENvbnNlY3V0aXZlRmFpbGVkUmV0cnlDb3VudCA9IGNvbmZpZy5zaWduYWxSLm1heENvbnNlY3V0aXZlRmFpbGVkUmV0cnlDb3VudDtcclxuXHJcbiAgICB0aGlzLmNvbm5lY3Rpb24gPSBuZXcgSHViQ29ubmVjdGlvbkJ1aWxkZXIoKVxyXG4gICAgICAud2l0aFVybCh1cmwsIHtcclxuICAgICAgICBhY2Nlc3NUb2tlbkZhY3Rvcnk6ICgpID0+IHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmFjY2Vzc1Rva2VuLFxyXG4gICAgICAgIHNraXBOZWdvdGlhdGlvbjogdHJ1ZSwgIC8vIFNraXAgdGhlIG5lZ290aWF0aW9uIHN0ZXBcclxuICAgICAgICB0cmFuc3BvcnQ6IEh0dHBUcmFuc3BvcnRUeXBlLldlYlNvY2tldHMgIC8vIFVzZSBXZWJTb2NrZXRzIGRpcmVjdGx5XHJcbiAgICAgIH0pXHJcbiAgICAgIC53aXRoQXV0b21hdGljUmVjb25uZWN0KG5ldyBUaWJhUmV0cnlQb2xpY3kobWF4Q29uc2VjdXRpdmVGYWlsZWRSZXRyeUNvdW50KSlcclxuICAgICAgLmJ1aWxkKCk7XHJcblxyXG4gICAgdGhpcy5jb25uZWN0aW9uLm9ucmVjb25uZWN0aW5nKChlcnJvcikgPT4ge1xyXG4gICAgICBkYXRhZG9nTG9ncy5sb2dnZXIuaW5mbygnQXR0ZW1wdGluZyB0byByZWNvbm5lY3Q6JywgZXJyb3IpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jb25uZWN0aW9uLm9uY2xvc2UoKGVycm9yKSA9PiB7XHJcbiAgICAgIGRhdGFkb2dMb2dzLmxvZ2dlci5pbmZvKCdDb25uZWN0aW9uIGNsb3NlZCBhZnRlciBhbGwgcmV0cnkgYXR0ZW1wdHM6JywgZXJyb3IpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jb25uZWN0aW9uLm9ucmVjb25uZWN0ZWQoKGNvbm5lY3Rpb25JZCkgPT4ge1xyXG4gICAgICBkYXRhZG9nTG9ncy5sb2dnZXIuaW5mbyhgU3VjY2Vzc2Z1bGx5IHJlY29ubmVjdGVkIFNJR05BTFIhLiBDb25uZWN0aW9uSWQ6ICR7Y29ubmVjdGlvbklkfWApO1xyXG5cclxuICAgICAgdGhpcy5jaGVja0ZvclVwZGF0ZSgpO1xyXG4gICAgICBjb25zdCBndWlkID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmd1aWQpO1xyXG4gICAgICBpZiAoISFndWlkKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTcGFya0NvcmVDb25uZWN0aW9uKHRydWUsIGd1aWQpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHJlY29ubmVjdFJ0RXZlbnRzU3Vic2NyaXB0aW9ucyA9IHRoaXMucmVhbHRpbWVFdmVudFNlcnZpY2UuZ2V0U3Vic2NyaXB0aW9uRm9yUmVjb25uZWN0KCk7XHJcbiAgICAgIHRoaXMuaW52b2tlUmVhbHRpbWVSZWdpc3RyYXRpb24ocmVjb25uZWN0UnRFdmVudHNTdWJzY3JpcHRpb25zLCB0aGlzLmhhbmRsZVJlYWxUaW1lQXdhaXRpbmdTdWJzY3JpcHRpb25zLmJpbmQodGhpcykpO1xyXG5cclxuICAgICAgY29uc3Qgbm90aWZpY2F0aW9uU3Vic2NyaXB0aW9ucyA9IHRoaXMubm90aWZpY2F0aW9uRXZlbnRTZXJ2aWNlLmdldFN1YnNjcmlwdGlvbkZvclJlY29ubmVjdCgpO1xyXG4gICAgICBub3RpZmljYXRpb25TdWJzY3JpcHRpb25zLmZvckVhY2gobm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uID0+IHtcclxuICAgICAgICB0aGlzLmludm9rZU5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihub3RpZmljYXRpb25TdWJzY3JpcHRpb24pO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuaGFuZGxlTm90aWZpY2F0aW9uQXdhaXRpbmdTdWJzY3JpcHRpb24oKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuY29ubmVjdGlvbi5vbignUnRFdmVudCcsIChydEV2ZW50VHlwZTogUnRFdmVudFR5cGUsIHBhcmtJZDogbnVtYmVyLCBndWlkOiBzdHJpbmcsIGpzb25QYXlsb2FkOiBzdHJpbmcpID0+IHtcclxuICAgICAgb2YobmV3IFJUT2JqZWN0T2JqZWN0KHJ0RXZlbnRUeXBlLCBwYXJrSWQsIGd1aWQsIGpzb25QYXlsb2FkKSlcclxuICAgICAgICAucGlwZSh0aGlzLmhhbmRsZUpzb25QYXlsb2FkVG9Mb3dlcigpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fZGlzcGF0Y2hSdEV2ZW50KHJlcyBhcyBSVE9iamVjdE9iamVjdCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmNvbm5lY3Rpb24ub24oJ05vdGlmaWNhdGlvbicsICh0eXBlOiBOb3RpZmljYXRpb25FdmVudFR5cGUsIGd1aWQ6IHN0cmluZywgaWRlbnRpZmllcjogc3RyaW5nLCBqc29uUGF5bG9hZDogc3RyaW5nKSA9PiB7XHJcbiAgICAgIG9mKG5ldyBTcGFya05vdGlmaWNhdGlvbih0eXBlLCBndWlkLCBpZGVudGlmaWVyLCBqc29uUGF5bG9hZCkpXHJcbiAgICAgICAgLnBpcGUodGhpcy5oYW5kbGVKc29uUGF5bG9hZFRvTG93ZXIoKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICAgIHRoaXMuX2Rpc3BhdGNoTm90aWZpY2F0aW9uKHJlcyBhcyBTcGFya05vdGlmaWNhdGlvbik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBjaGVja0ZvclVwZGF0ZSgpOiB2b2lkO1xyXG5cclxuICBwdWJsaWMgY29ubmVjdCgpIHtcclxuICAgIHRoaXMuX2Nvbm5lY3QodGhpcy5jb25uZWN0aW9uKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkaXNjb25uZWN0KCkge1xyXG4gICAgdGhpcy5fZGlzY29ubmVjdCh0aGlzLmNvbm5lY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgc3Vic2NyaWJlRm9yUmVhbHRpbWUocnRFdmVudFN1YnNjcmlwdGlvbnM6IFJURXZlbnRTdWJzY3JpcHRpb25EdG8sIHRyaWdnZXJGdW5jdGlvbj86ICgpID0+IHZvaWQpIHtcclxuICAgIGlmICh0aGlzLmNvbm5lY3Rpb24pIHtcclxuICAgICAgaWYgKHRoaXMuY29ubmVjdGlvbi5zdGF0ZSAhPT0gSHViQ29ubmVjdGlvblN0YXRlLkNvbm5lY3RlZCkge1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uUXVldWUucHVzaCgoKSA9PiB0aGlzLnN1YnNjcmliZUZvclJlYWx0aW1lKHJ0RXZlbnRTdWJzY3JpcHRpb25zLCB0cmlnZ2VyRnVuY3Rpb24pKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBydEV2ZW50U3Vic2NyaXB0aW9uRGVsdGEgPSB0aGlzLnJlYWx0aW1lRXZlbnRTZXJ2aWNlLmhhbmRsZVJlYWx0aW1lRXZlbnRzU3Vic2NyaXB0aW9ucyhydEV2ZW50U3Vic2NyaXB0aW9ucyk7XHJcbiAgICAgICAgaWYgKHJ0RXZlbnRTdWJzY3JpcHRpb25EZWx0YS5zdWJzY3JpYmUubGVuZ3RoIHx8IHJ0RXZlbnRTdWJzY3JpcHRpb25EZWx0YS51blN1YnNjcmliZS5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMuaW52b2tlUmVhbHRpbWVSZWdpc3RyYXRpb24ocnRFdmVudFN1YnNjcmlwdGlvbkRlbHRhLCB0cmlnZ2VyRnVuY3Rpb24pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3Vic2NyaWJlRm9yTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25TdWJzY3JpcHRpb246IE5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbkR0bywgdHJpZ2dlckZ1bmN0aW9uPzogKCkgPT4gdm9pZCkge1xyXG4gICAgaWYgKHRoaXMuY29ubmVjdGlvbikge1xyXG4gICAgICBpZiAodGhpcy5jb25uZWN0aW9uLnN0YXRlICE9PSBIdWJDb25uZWN0aW9uU3RhdGUuQ29ubmVjdGVkKSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TdWJzY3JpcHRpb25RdWV1ZS5wdXNoKCgpID0+IHRoaXMuc3Vic2NyaWJlRm9yTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25TdWJzY3JpcHRpb24sIHRyaWdnZXJGdW5jdGlvbikpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbkRlbHRhID0gdGhpcy5ub3RpZmljYXRpb25FdmVudFNlcnZpY2UuaGFuZGxlTm90aWZpY2F0aW9uU3Vic2NyaXB0aW9ucyhub3RpZmljYXRpb25TdWJzY3JpcHRpb24pO1xyXG4gICAgICAgIGlmICghIW5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbkRlbHRhKSB7XHJcbiAgICAgICAgICB0aGlzLmludm9rZU5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihub3RpZmljYXRpb25TdWJzY3JpcHRpb25EZWx0YSwgdHJpZ2dlckZ1bmN0aW9uKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW52b2tlUmVhbHRpbWVSZWdpc3RyYXRpb24ocnRFdmVudFN1YnNjcmlwdGlvbnM6IFJURXZlbnRTdWJzY3JpcHRpb25EdG8sIHRyaWdnZXJGdW5jdGlvbj86ICgpID0+IHZvaWQpIHtcclxuICAgIGNvbnN0IGFwcE1vZHVsZSA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoU2lkZW5hdlN0YXRlLmFwcE1vZHVsZSk7XHJcbiAgICBpZiAocnRFdmVudFN1YnNjcmlwdGlvbnMudXNlcklkKSB7XHJcbiAgICAgIHRoaXMuY29ubmVjdGlvbi5pbnZva2U8UlRFdmVudFN1YnNjcmlwdGlvbkR0bz4oJ1JlZ2lzdGVyUGFyaycsIHJ0RXZlbnRTdWJzY3JpcHRpb25zLCBhcHBNb2R1bGUpLnRoZW4oKHN1YlRvKSA9PiB7XHJcbiAgICAgICAgaWYgKHRyaWdnZXJGdW5jdGlvbikge1xyXG4gICAgICAgICAgdHJpZ2dlckZ1bmN0aW9uKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW52b2tlTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbjogTm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uRHRvLCB0cmlnZ2VyRnVuY3Rpb24/OiAoKSA9PiB2b2lkKSB7XHJcbiAgICBpZiAobm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uICYmIG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbi51c2VySWQpIHtcclxuICAgICAgdGhpcy5jb25uZWN0aW9uLmludm9rZTxOb3RpZmljYXRpb25TdWJzY3JpcHRpb25EdG8+KCdSZWdpc3Rlck5vdGlmaWNhdGlvbnMnLCBub3RpZmljYXRpb25TdWJzY3JpcHRpb24pLnRoZW4oKHN1YlRvKSA9PiB7XHJcbiAgICAgICAgaWYgKHRyaWdnZXJGdW5jdGlvbikge1xyXG4gICAgICAgICAgdHJpZ2dlckZ1bmN0aW9uKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRTcGFya0NvcmVDb25uZWN0aW9uKGlzQ29ubmVjdGVkOiBib29sZWFuLCBndWlkOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHNlcnZpY2VzUnVubmluZ1N0YXR1cyA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5zZXJ2aWNlc1J1bm5pbmdTdGF0dXNEaWN0aW9uYXJ5KVtndWlkXTtcclxuICAgIHNlcnZpY2VzUnVubmluZ1N0YXR1cy5pc1NwYXJrQ29yZUNvbm5lY3RlZCA9IGlzQ29ubmVjdGVkO1xyXG4gICAgaWYgKCFpc0Nvbm5lY3RlZCkge1xyXG4gICAgICBjb25zdCBmYWNpbGl0eUd1aWQgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuZ3VpZCk7XHJcbiAgICAgIGNvbnN0IHNlcnZlckNsaWVudFRpbWVTcGFuID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmNsaWVudFNlcnZlckRpZmZEaWN0aW9uYXJ5KVtmYWNpbGl0eUd1aWRdIHx8IDA7XHJcbiAgICAgIHNlcnZpY2VzUnVubmluZ1N0YXR1cy5zcGFya0NvcmVEaXNjb25uZWN0ZWRUaW1lc3RhbXAgPSBtb21lbnQoKS5zdWJ0cmFjdChzZXJ2ZXJDbGllbnRUaW1lU3BhbiwgJ21pbGxpc2Vjb25kcycpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2VydmljZXNSdW5uaW5nU3RhdHVzLnNwYXJrQ29yZURpc2Nvbm5lY3RlZFRpbWVzdGFtcCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlcnZpY2VzUnVubmluZ1N0YXR1c0NoYW5nZWQoc2VydmljZXNSdW5uaW5nU3RhdHVzLCBndWlkKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlSnNvblBheWxvYWRUb0xvd2VyKCk6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxTaWduYWxST2JqZWN0PiB7XHJcbiAgICByZXR1cm4gJGlucHV0ID0+ICRpbnB1dC5waXBlKG1hcChyZXMgPT4ge1xyXG4gICAgICBjb25zdCBvYmogPSBKU09OLnBhcnNlKHJlcy5qc29uUGF5bG9hZCk7XHJcbiAgICAgIHJlcy5qc29uUGF5bG9hZCA9IEpTT04uc3RyaW5naWZ5KG9iaiwgKGtleSwgdmFsdWUpID0+IHtcclxuICAgICAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID0ge307XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGsgaW4gdmFsdWUpIHtcclxuICAgICAgICAgICAgaWYgKE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBrKSkge1xyXG4gICAgICAgICAgICAgIGlmIChrLmxlbmd0aCA9PT0gMikge1xyXG4gICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRbayAmJiBrLnRvTG93ZXJDYXNlKCldID0gdmFsdWVba107XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50W2sgJiYgay5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIGsuc3Vic3RyaW5nKDEpXSA9IHZhbHVlW2tdO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIHJlcGxhY2VtZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gcmVzO1xyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGRpc3BhdGNoTm90aWZpY2F0aW9uKG9iajogU3BhcmtOb3RpZmljYXRpb24pOiB2b2lkO1xyXG5cclxuICBwcml2YXRlIF9kaXNwYXRjaE5vdGlmaWNhdGlvbihvYmo6IFNwYXJrTm90aWZpY2F0aW9uKSB7XHJcbiAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShvYmouanNvblBheWxvYWQpO1xyXG4gICAgY29uc29sZS5kZWJ1ZyhgUmVjZWl2ZWQgTm90aWZpY2F0aW9uIHR5cGUgPT09PiAke29iai5ub3RpZmljYXRpb25UeXBlfWApO1xyXG4gICAgc3dpdGNoIChvYmoubm90aWZpY2F0aW9uVHlwZSkge1xyXG4gICAgICBjYXNlIE5vdGlmaWNhdGlvbkV2ZW50VHlwZS5Jbml0aWFsQ2xvdWRDb25uZWN0OlxyXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZVNtYXJ0UGFya0Nvbm5lY3Rpb24oZGF0YSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlLkZhY2lsaXR5UmVtb3RlQ29tbWFuZEV4ZWN1dGVkOlxyXG4gICAgICAgIC8vIFRPRE86IHRoaXMgY29uZGl0aW9uIHdpbGwgYmUgcmVtb3ZlZCB3aGVuIGFsbCBcIkZhY2lsaXR5UmVtb3RlQ29tbWFuZEV4ZWN1dGVkXCIgbm90aWZpY2F0aW9uXHJcbiAgICAgICAgLy8gd2lsbCBiZSByZW1vdmVkIHVwb24gYmVpbmcgZXhlY3V0ZWQgaW4gdGhlIHNlcnZlclxyXG4gICAgICAgIC8vIEZvciBtb3JlIGV4cGxhbmF0aW9uIHNlZTogU1BSSzMtNjcwNFxyXG4gICAgICAgIGlmIChkYXRhLnR5cGUgPT09IEZhY2lsaXR5UmVtb3RlQ29tbWFuZFR5cGVzLlRyYW5zbWl0U3BlY2lhbERheXMpIHtcclxuICAgICAgICAgIGNvbnN0IG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbiA9IHRoaXMubm90aWZpY2F0aW9uRXZlbnRTZXJ2aWNlLmdldE5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbnNFbnRpdHkoKTtcclxuICAgICAgICAgIG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbi50eXBlID0gb2JqLm5vdGlmaWNhdGlvblR5cGU7XHJcbiAgICAgICAgICBub3RpZmljYXRpb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUgPSB0cnVlO1xyXG4gICAgICAgICAgbm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uLmlkZW50aWZpZXIgPSB0aGlzLm5vdGlmaWNhdGlvbkV2ZW50U2VydmljZS5nZXROb3RpZmljYXRpb25JZGVudGlmaWVyKGRhdGEuZ3VpZCwgZGF0YS5wYXJrSWQsXHJcbiAgICAgICAgICAgIG9iai5ub3RpZmljYXRpb25UeXBlLCBub3RpZmljYXRpb25TdWJzY3JpcHRpb24udXNlcklkKTtcclxuICAgICAgICAgIHRoaXMuc3Vic2NyaWJlRm9yTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25TdWJzY3JpcHRpb24pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5mYWNpbGl0eVJlbW90ZUNvbW1hbmRFeGVjdXRlZChkYXRhKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBOb3RpZmljYXRpb25FdmVudFR5cGUuR2VuZXJhbEFjdGlvbnM6XHJcbiAgICAgICAgdGhpcy5nZW5lcmFsQWN0aW9uU2VydmljZS5kaXNwYXRjaEdlbmVyYWxBY3Rpb25zKGRhdGEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIE5vdGlmaWNhdGlvbkV2ZW50VHlwZS5IYW5kbGVBbGVydDpcclxuICAgICAgICB0aGlzLmhhbmRsZUFsZXJ0cyhBbGVydER0by5mcm9tSlMoZGF0YSksIG9iai5ndWlkKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBOb3RpZmljYXRpb25FdmVudFR5cGUuSGFuZGxlZE5vdGlmaWNhdGlvbjpcclxuICAgICAgICB0aGlzLmhhbmRsZWROb3RpZmljYXRpb24oTm90aWZpY2F0aW9uRHRvLmZyb21KUyhkYXRhKSwgb2JqLmd1aWQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIE5vdGlmaWNhdGlvbkV2ZW50VHlwZS5IYW5kbGVOb3RpZmljYXRpb246XHJcbiAgICAgICAgdGhpcy5oYW5kbGVOb3RpZmljYXRpb24oTm90aWZpY2F0aW9uRHRvLmZyb21KUyhkYXRhKSwgb2JqLmd1aWQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBOb3RpZmljYXRpb25FdmVudFR5cGUuUmVwb3J0R2VuZXJhdGVkOlxyXG4gICAgICBjYXNlIE5vdGlmaWNhdGlvbkV2ZW50VHlwZS5SZWNlaXB0R2VuZXJhdGVkOlxyXG4gICAgICBjYXNlIE5vdGlmaWNhdGlvbkV2ZW50VHlwZS5TdGlja2VyR2VuZXJhdGVkOlxyXG4gICAgICBjYXNlIE5vdGlmaWNhdGlvbkV2ZW50VHlwZS5BcHBsaWNhdGlvblVwZGF0ZTpcclxuICAgICAgY2FzZSBOb3RpZmljYXRpb25FdmVudFR5cGUuQ3JlYXRlUm9sZTpcclxuICAgICAgY2FzZSBOb3RpZmljYXRpb25FdmVudFR5cGUuVXBkYXRlUm9sZTpcclxuICAgICAgICB0aGlzLmRpc3BhdGNoTm90aWZpY2F0aW9uKG9iaik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgY29uc29sZS5kZWJ1ZyhgVW5rbm93biBub3RpZmljYXRpb24gdHlwZSA9PT0+ICR7b2JqLm5vdGlmaWNhdGlvblR5cGV9YCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZGlzcGF0Y2hSdEV2ZW50KG9iajogUlRPYmplY3RPYmplY3QpOiB2b2lkO1xyXG5cclxuICBwcml2YXRlIF9kaXNwYXRjaFJ0RXZlbnQob2JqOiBSVE9iamVjdE9iamVjdCkge1xyXG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2Uob2JqLmpzb25QYXlsb2FkKTtcclxuICAgIHN3aXRjaCAob2JqLnJ0RXZlbnRUeXBlKSB7XHJcbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuRGV2aWNlU3RhdHVzOlxyXG4gICAgICAgIHRoaXMuZGV2aWNlc1N0YXR1c0NoYW5nZWQoRGV2aWNlU3RhdHVzRHRvLmZyb21KUyhkYXRhKSk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLkR5bmFtaWNQcmljaW5nQ29uZGl0aW9uOlxyXG4gICAgICAgIGRhdGFkb2dMb2dzLmxvZ2dlci5pbmZvKGBSVCAtIEdvdCAke0pTT04uc3RyaW5naWZ5KGRhdGEpfSBldmVudGApO1xyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uQ2hhbmdlZChOb3RpZmljYXRpb25EdG8uZnJvbUpTKGRhdGEpLCBvYmouZ3VpZCk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLkFsZXJ0OlxyXG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLkxvc3RUaWNrZXQ6XHJcbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuTFBSbWlzbWF0Y2g6XHJcbiAgICAgICAgZGF0YWRvZ0xvZ3MubG9nZ2VyLmluZm8oYFJUIC0gR290ICR7SlNPTi5zdHJpbmdpZnkoZGF0YSl9IGV2ZW50YCk7XHJcbiAgICAgICAgdGhpcy5hbGVydENoYW5nZWQoQWxlcnREdG8uZnJvbUpTKGRhdGEpLCBvYmouZ3VpZCk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLlBhcmtTdGF0ZTpcclxuICAgICAgICBkYXRhZG9nTG9ncy5sb2dnZXIuaW5mbyhgUlQgLSBHb3QgJHtKU09OLnN0cmluZ2lmeShkYXRhKX0gZXZlbnRgKTtcclxuICAgICAgICB0aGlzLmRldmljZUFjdGl2aXR5Q2hhbmdlZChkYXRhKTtcclxuICAgICAgICB0aGlzLnBhcmtBY3Rpdml0eUNoYW5nZWQoZGF0YSk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLkRldmljZUV2ZW50OlxyXG4gICAgICAgIHRoaXMuZGV2aWNlRXZlbnRDaGFuZ2VkKGRhdGEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBSdEV2ZW50VHlwZS5TZXJ2aWNlc1N0YXR1czpcclxuICAgICAgICB0aGlzLnNlcnZpY2VzUnVubmluZ1N0YXR1c0NoYW5nZWQoU2VydmljZXNSdW5uaW5nU3RhdHVzRHRvLmZyb21KUyhkYXRhKSwgb2JqLmd1aWQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBSdEV2ZW50VHlwZS5ab25lOlxyXG4gICAgICAgIHRoaXMuem9uZUNoYW5nZWQoWm9uZUR0by5mcm9tSlMoZGF0YSksIG9iai5wYXJrSWQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBSdEV2ZW50VHlwZS5GYWNpbGl0eTpcclxuICAgICAgICB0aGlzLmZhY2lsaXR5Q2hhbmdlZChGYWNpbGl0eUR0by5mcm9tSlMoZGF0YSksIG9iai5ndWlkKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuT2NjdXBhbmN5OlxyXG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLlJldmVudWU6XHJcbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuT3BlblRpY2tldFRyYW5zYWN0aW9uOlxyXG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLkNsb3NlVGlja2V0VHJhbnNhY3Rpb246XHJcbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuTW9udGhseVRyYW5zYWN0aW9uOlxyXG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLkd1ZXN0VHJhbnNhY3Rpb246XHJcbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuUGF5bWVudFRyYW5zYWN0aW9uOlxyXG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLkxQUlRyYW5zYWN0aW9uOlxyXG4gICAgICAgIHRoaXMuZGlzcGF0Y2hSdEV2ZW50KG9iaik7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGNvbnNvbGUuZGVidWcoYFVua25vd24gZXZlbnQgdHlwZSA9PT0+ICR7b2JqLnJ0RXZlbnRUeXBlfWApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY29ubmVjdChjb25uZWN0aW9uOiBIdWJDb25uZWN0aW9uKSB7XHJcbiAgICBjb25zb2xlLmRlYnVnKCdTaWduYWxSIEVzdGFibGlzaGluZyBDb25uZWN0aW9uLi4uJyk7XHJcbiAgICBjb25uZWN0aW9uLnN0YXJ0KClcclxuICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZGVidWcoYFNpZ25hbFIgQ29ubmVjdGlvbiBFc3RhYmxpc2hlZCFgKTtcclxuICAgICAgICB0aGlzLmhhbmRsZVJlYWxUaW1lQXdhaXRpbmdTdWJzY3JpcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVOb3RpZmljYXRpb25Bd2FpdGluZ1N1YnNjcmlwdGlvbigpO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goYXN5bmMgKGUpID0+IHtcclxuICAgICAgICB0aGlzLnJldHJ5Q29ubmVjdGlvbihjb25uZWN0aW9uLCAxKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9kaXNjb25uZWN0KGNvbm5lY3Rpb246IEh1YkNvbm5lY3Rpb24pIHtcclxuICAgIGNvbnNvbGUuZGVidWcoJ1NpZ25hbFIgU3RvcHBpbmcgQ29ubmVjdGlvbi4uLicpO1xyXG4gICAgY29ubmVjdGlvbj8uc3RvcCgpXHJcbiAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICBjb25zb2xlLmRlYnVnKGBTaWduYWxSIENvbm5lY3Rpb24gU3RvcHBlZCFgKTtcclxuICAgICAgICB0aGlzLmhhbmRsZURpc2Nvbm5lY3QoKTtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKGFzeW5jIChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciA9PiAke2Vycn0sIFRpbWVzdGFtcDogJHtuZXcgRGF0ZSgpfWApO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmV0cnlDb25uZWN0aW9uKGNvbm5lY3Rpb246IEh1YkNvbm5lY3Rpb24sIHJldHJ5Q291bnQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUuZGVidWcoYFNpZ25hbFIgRXN0YWJsaXNoaW5nIENvbm5lY3Rpb24uIFJldHJ5ICMke3JldHJ5Q291bnR9LiBUaW1lc3RhbXA6ICR7bmV3IERhdGUoKX1gKTtcclxuICAgICAgY29ubmVjdGlvbi5zdGFydCgpXHJcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5kZWJ1ZyhgU2lnbmFsUiBDb25uZWN0aW9uIEVzdGFibGlzaGVkISBSZXRyeSAjJHtyZXRyeUNvdW50fWApO1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVSZWFsVGltZUF3YWl0aW5nU3Vic2NyaXB0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVOb3RpZmljYXRpb25Bd2FpdGluZ1N1YnNjcmlwdGlvbigpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKCgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuYXBwQ29uZmlnLmdldENvbmZpZygpO1xyXG5cclxuICAgICAgICAgIGlmIChyZXRyeUNvdW50IDw9IGNvbmZpZy5zaWduYWxSLm1heENvbnNlY3V0aXZlRmFpbGVkUmV0cnlDb3VudCkge1xyXG4gICAgICAgICAgICB0aGlzLnJldHJ5Q29ubmVjdGlvbihjb25uZWN0aW9uLCByZXRyeUNvdW50ICsgMSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9LCBnZXRTZWNvbmRzQmFja29mZihyZXRyeUNvdW50KSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZVJlYWxUaW1lQXdhaXRpbmdTdWJzY3JpcHRpb25zKCkge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25RdWV1ZS5mb3JFYWNoKGF3YWl0aW5nU3Vic2NyaXB0aW9uID0+IGF3YWl0aW5nU3Vic2NyaXB0aW9uKCkpO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25RdWV1ZS5zcGxpY2UoMCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgaGFuZGxlTm90aWZpY2F0aW9uQXdhaXRpbmdTdWJzY3JpcHRpb24oKSB7XHJcbiAgICB0aGlzLm5vdGlmaWNhdGlvblN1YnNjcmlwdGlvblF1ZXVlLmZvckVhY2goYXdhaXRpbmdTdWJzY3JpcHRpb24gPT4gYXdhaXRpbmdTdWJzY3JpcHRpb24oKSk7XHJcbiAgICB0aGlzLm5vdGlmaWNhdGlvblN1YnNjcmlwdGlvblF1ZXVlLnNwbGljZSgwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlRGlzY29ubmVjdCgpIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uUXVldWUgPSBbXTtcclxuICAgIHRoaXMubm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uUXVldWUgPSBbXTtcclxuICAgIHRoaXMucmVhbHRpbWVFdmVudFNlcnZpY2UucmVzZXRBbGxTdWJzY3JpcHRpb25zKCk7XHJcbiAgfVxyXG5cclxuICBARGlzcGF0Y2goKSBkZXZpY2VzU3RhdHVzQ2hhbmdlZCA9IChkZXZpY2VTdGF0dXM6IERldmljZVN0YXR1c0R0bykgPT5cclxuICAgIG5ldyBEZXZpY2VTdGF0dXNDaGFuZ2VkQWN0aW9uKGRldmljZVN0YXR1cyk7XHJcbiAgQERpc3BhdGNoKCkgZmFjaWxpdHlDaGFuZ2VkID0gKGRhdGE6IEZhY2lsaXR5RHRvLCBndWlkOiBzdHJpbmcpID0+XHJcbiAgICBuZXcgRmFjaWxpdHlDaGFuZ2VkQWN0aW9uKGRhdGEsIGd1aWQpO1xyXG4gIEBEaXNwYXRjaCgpIHNlcnZpY2VzUnVubmluZ1N0YXR1c0NoYW5nZWQgPSAoc2VydmljZXNSdW5uaW5nU3RhdHVzOiBTZXJ2aWNlc1J1bm5pbmdTdGF0dXNEdG8sIGd1aWQ6IHN0cmluZykgPT5cclxuICAgIG5ldyBTZXJ2aWNlc1J1bm5pbmdTdGF0dXNDaGFuZ2VkQWN0aW9uKHNlcnZpY2VzUnVubmluZ1N0YXR1cywgZ3VpZCk7XHJcbiAgQERpc3BhdGNoKCkgcGFya0FjdGl2aXR5Q2hhbmdlZCA9IChhY3Rpdml0eTogRXZlbnRBY3Rpdml0eUR0bykgPT5cclxuICAgIG5ldyBQYXJrQWN0aXZpdHlDaGFuZ2VkQWN0aW9uKGFjdGl2aXR5KTtcclxuICBARGlzcGF0Y2goKSBkZXZpY2VFdmVudENoYW5nZWQgPSAoZGV2RXZlbnQ6IERldmljZUV2ZW50RHRvKSA9PlxyXG4gICAgbmV3IERldmljZUV2ZW50Q2hhbmdlZEFjdGlvbihkZXZFdmVudCk7XHJcbiAgQERpc3BhdGNoKCkgZGV2aWNlQWN0aXZpdHlDaGFuZ2VkID0gKGV2ZW50QWN0aXZpdHk6IEV2ZW50QWN0aXZpdHlEdG8pID0+XHJcbiAgICBuZXcgRGV2aWNlQWN0aXZpdHlDaGFuZ2VkQWN0aW9uKGV2ZW50QWN0aXZpdHkpO1xyXG4gIEBEaXNwYXRjaCgpIGxwclRyYW5zYWN0aW9uc0NoYW5nZWQgPSAobHByVHJhbnM6IExwclRyYW5zYWN0aW9uRHRvKSA9PlxyXG4gICAgbmV3IExwclRyYW5zYWN0aW9uc0NoYW5nZWRBY3Rpb24obHByVHJhbnMpO1xyXG4gIEBEaXNwYXRjaCgpIGFsZXJ0Q2hhbmdlZCA9IChhbGVydER0bzogQWxlcnREdG8sIGd1aWQ6IHN0cmluZykgPT5cclxuICAgIG5ldyBBbGVydENoYW5nZWRBY3Rpb24oYWxlcnREdG8sIGd1aWQpO1xyXG4gIEBEaXNwYXRjaCgpIG5vdGlmaWNhdGlvbkNoYW5nZWQgPSAobm90aWZpY2F0aW9uRHRvOiBOb3RpZmljYXRpb25EdG8sIGd1aWQ6IHN0cmluZykgPT5cclxuICAgIG5ldyBOb3RpZmljYXRpb25DaGFuZ2VkQWN0aW9uKG5vdGlmaWNhdGlvbkR0bywgZ3VpZCk7XHJcbiAgQERpc3BhdGNoKCkgaGFuZGxlZE5vdGlmaWNhdGlvbiA9IChub3RpZmljYXRpb25EdG86IE5vdGlmaWNhdGlvbkR0bywgZ3VpZDogc3RyaW5nKSA9PlxyXG4gICAgbmV3IEhhbmRsZWROb3RpZmljYXRpb25BY3Rpb24obm90aWZpY2F0aW9uRHRvLCBndWlkKTtcclxuICBARGlzcGF0Y2goKSBoYW5kbGVBbGVydHMgPSAoYWxlcnREdG86IEFsZXJ0RHRvLCBndWlkOiBzdHJpbmcpID0+XHJcbiAgICBuZXcgSGFuZGxlQWxlcnRzQWN0aW9uKGFsZXJ0RHRvLCBndWlkKTtcclxuICBARGlzcGF0Y2goKSBoYW5kbGVOb3RpZmljYXRpb24gPSAobm90aWZpY2F0aW9uRHRvOiBOb3RpZmljYXRpb25EdG8sIGd1aWQ6IHN0cmluZykgPT5cclxuICAgIG5ldyBIYW5kbGVOb3RpZmljYXRpb25BY3Rpb24obm90aWZpY2F0aW9uRHRvLCBndWlkKTtcclxuICBARGlzcGF0Y2goKSB6b25lQ2hhbmdlZCA9ICh6b25lRHRvOiBab25lRHRvLCBwYXJrSWQ6IG51bWJlcikgPT5cclxuICAgIG5ldyBab25lQ2hhbmdlZEFjdGlvbih6b25lRHRvLCBwYXJrSWQpO1xyXG4gIEBEaXNwYXRjaCgpIGluaXRpYWxpemVTbWFydFBhcmtDb25uZWN0aW9uID0gKHNtYXJ0cGFyazogU21hcnRwYXJrRHRvKSA9PlxyXG4gICAgbmV3IEFkZFNtYXJ0cGFya0FjdGlvbihzbWFydHBhcmspO1xyXG4gIEBEaXNwYXRjaCgpIGZhY2lsaXR5UmVtb3RlQ29tbWFuZEV4ZWN1dGVkID0gKGZhY2lsaXR5UmVtb3RlQ29tbWFuZEV2ZW50OiBGYWNpbGl0eVJlbW90ZUNvbW1hbmRFdmVudCkgPT5cclxuICAgIG5ldyBGYWNpbGl0eVJlbW90ZUNvbW1hbmRFeGVjdXRlZEFjdGlvbihmYWNpbGl0eVJlbW90ZUNvbW1hbmRFdmVudCk7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUaWJhUmV0cnlQb2xpY3kgaW1wbGVtZW50cyBzaWduYWxSLklSZXRyeVBvbGljeSB7XHJcblxyXG4gIHByaXZhdGUgbWF4Q29uc2VjdXRpdmVGYWlsZWRSZXRyeUNvdW50OiBudW1iZXI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKG1heENvbnNlY3V0aXZlRmFpbGVkUmV0cnlDb3VudDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLm1heENvbnNlY3V0aXZlRmFpbGVkUmV0cnlDb3VudCA9IG1heENvbnNlY3V0aXZlRmFpbGVkUmV0cnlDb3VudDtcclxuICB9XHJcblxyXG4gIG5leHRSZXRyeURlbGF5SW5NaWxsaXNlY29uZHMocmV0cnlDb250ZXh0OiBzaWduYWxSLlJldHJ5Q29udGV4dCk6IG51bWJlciB7XHJcbiAgICBsZXQgbWlsbGlzZWNvbmRzOiBudW1iZXIgPSBudWxsO1xyXG4gICAgY29uc3QgY3VycmVudFJldHJ5Q291bnQgPSByZXRyeUNvbnRleHQucHJldmlvdXNSZXRyeUNvdW50ICsgMTtcclxuXHJcbiAgICBpZiAoY3VycmVudFJldHJ5Q291bnQgPCB0aGlzLm1heENvbnNlY3V0aXZlRmFpbGVkUmV0cnlDb3VudCkge1xyXG4gICAgICBjb25zdCB1bmF1dGhvcml6ZWQgPSByZXRyeUNvbnRleHQucmV0cnlSZWFzb24ubWVzc2FnZS5pbmNsdWRlcyhgU3RhdHVzIGNvZGUgJyR7SHR0cFN0YXR1c0NvZGUuVW5hdXRob3JpemVkfSdgKTtcclxuXHJcbiAgICAgIGlmICh1bmF1dGhvcml6ZWQpIHtcclxuICAgICAgICBkYXRhZG9nTG9ncy5sb2dnZXIuaW5mbyhgVGliYVJldHJ5UG9saWN5IC0+IHVuYXV0aG9yaXplZCB0b2tlbi4gTWVzc2FnZTogICR7cmV0cnlDb250ZXh0LnJldHJ5UmVhc29uLm1lc3NhZ2V9YCk7XHJcbiAgICAgICAgdGhpcy5zaWduYWxSUmVmcmVzaFRva2VuKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZGF0YWRvZ0xvZ3MubG9nZ2VyLmluZm8oYFRpYmFSZXRyeVBvbGljeSAtPiBmYWlsZWQgbmVnb3RpYXRpb24gIyR7Y3VycmVudFJldHJ5Q291bnR9LiBNZXNzYWdlOiAke3JldHJ5Q29udGV4dC5yZXRyeVJlYXNvbi5tZXNzYWdlfWApO1xyXG5cclxuICAgICAgICBtaWxsaXNlY29uZHMgPSBnZXRTZWNvbmRzQmFja29mZihjdXJyZW50UmV0cnlDb3VudCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbWlsbGlzZWNvbmRzO1xyXG4gIH1cclxuXHJcbiAgQERpc3BhdGNoKCkgc2lnbmFsUlJlZnJlc2hUb2tlbiA9ICgpID0+IG5ldyBTaWduYWxSUmVmcmVzaFRva2VuQWN0aW9uKCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWNvbmRzQmFja29mZihyZXRyeUNvdW50OiBudW1iZXIpOiBudW1iZXIge1xyXG4gIGNvbnN0IGRlbGF5c1RhYmxlSW5TZWNvbmRzOiB7IFtrZXk6IG51bWJlcl06IG51bWJlcltdOyB9ID0ge1xyXG4gICAgMTogWzUsIDIwXSwgLy81cyAtIDIwc1xyXG4gICAgMjogWzI1LCA0MF0sIC8vIDI1cyAtIDQwc1xyXG4gICAgMzogWzQ1LCA2MF0sIC8vIDQ1cyAtIDYwc1xyXG4gICAgNDogWzY1LCA4MF0sIC8vIDY1cyAtIDgwc1xyXG4gICAgNTogWzYwMCwgOTAwXSwgIC8vIDEwbSAtIDE1bVxyXG4gIH07XHJcbiAgY29uc3QgW21pblNlY29uZHMsIG1heFNlY29uZHNdID0gZGVsYXlzVGFibGVJblNlY29uZHNbcmV0cnlDb3VudF0gfHwgWzAsIDBdO1xyXG4gIHJldHVybiAoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heFNlY29uZHMgLSBtaW5TZWNvbmRzICsgMSkpICsgbWluU2Vjb25kcykgKiBPTkVfU0VDT05EX0lOX01JTExJU0VDT05EUztcclxufVxyXG4iXX0=
442
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9zZXJ2aWNlcy9zaWduYWxyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsaUJBQWlCLEVBQWlCLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBNEIsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLHlCQUF5QixFQUFFLHdCQUF3QixFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0VBQXNFLENBQUM7QUFDOU0sT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG1DQUFtQyxFQUFFLGtDQUFrQyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDekssT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ25FLE9BQU8sRUFB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dXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBTdGF0dXNDb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBkYXRhZG9nTG9ncyB9IGZyb20gJ0BkYXRhZG9nL2Jyb3dzZXItbG9ncyc7XHJcbmltcG9ydCB7IEh0dHBUcmFuc3BvcnRUeXBlLCBIdWJDb25uZWN0aW9uLCBIdWJDb25uZWN0aW9uQnVpbGRlciwgSHViQ29ubmVjdGlvblN0YXRlIH0gZnJvbSAnQG1pY3Jvc29mdC9zaWduYWxyJztcclxuaW1wb3J0IHsgRGlzcGF0Y2ggfSBmcm9tICdAbmd4cy1sYWJzL2Rpc3BhdGNoLWRlY29yYXRvcic7XHJcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbiwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb25FdmVudFNlcnZpY2UgfSBmcm9tICcuLi9jb21wb25lbnRzL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24tZXZlbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IE9ORV9TRUNPTkRfSU5fTUlMTElTRUNPTkRTIH0gZnJvbSAnLi4vY29uc3RhbnRzL2dsb2JhbC1jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBBcHBUeXBlIH0gZnJvbSAnLi4vZW51bXMvYXBwLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IEFsZXJ0Q2hhbmdlZEFjdGlvbiwgSGFuZGxlQWxlcnRzQWN0aW9uLCBIYW5kbGVkTm90aWZpY2F0aW9uQWN0aW9uLCBIYW5kbGVOb3RpZmljYXRpb25BY3Rpb24sIE5vdGlmaWNhdGlvbkNoYW5nZWRBY3Rpb24gfSBmcm9tICcuLi9tb2R1bGVzL2FsZXJ0cy1hbmQtbm90aWZpY2F0aW9ucy9hbGVydHMtYW5kLW5vdGlmaWNhdGlvbnMuYWN0aW9ucyc7XHJcbmltcG9ydCB7IFNpZ25hbFJSZWZyZXNoVG9rZW5BY3Rpb24gfSBmcm9tICcuLi9tb2R1bGVzL2F1dGgvcmVmcmVzaC10b2tlbi5hY3Rpb25zJztcclxuaW1wb3J0IHsgRmFjaWxpdHlDaGFuZ2VkQWN0aW9uLCBGYWNpbGl0eVJlbW90ZUNvbW1hbmRFeGVjdXRlZEFjdGlvbiwgU2VydmljZXNSdW5uaW5nU3RhdHVzQ2hhbmdlZEFjdGlvbiwgWm9uZUNoYW5nZWRBY3Rpb24gfSBmcm9tICcuLi9tb2R1bGVzL2ZhY2lsaXR5L2ZhY2lsaXR5LmFjdGlvbnMnO1xyXG5pbXBvcnQgeyBGYWNpbGl0eVN0YXRlIH0gZnJvbSAnLi4vbW9kdWxlcy9mYWNpbGl0eS9mYWNpbGl0eS5zdGF0ZSc7XHJcbmltcG9ydCB7IFBhcmtBY3Rpdml0eUNoYW5nZWRBY3Rpb24gfSBmcm9tICcuLi9tb2R1bGVzL3BhcmstYWN0aXZpdGllcy9wYXJrLWFjdGl2aXRpZXMuYWN0aW9ucyc7XHJcbmltcG9ydCB7IERldmljZUFjdGl2aXR5Q2hhbmdlZEFjdGlvbiwgRGV2aWNlRXZlbnRDaGFuZ2VkQWN0aW9uLCBEZXZpY2VTdGF0dXNDaGFuZ2VkQWN0aW9uLCBMcHJUcmFuc2FjdGlvbnNDaGFuZ2VkQWN0aW9uIH0gZnJvbSAnLi4vbW9kdWxlcy9wYXJrLW1hbmFnZXIvcGFyay1tYW5hZ2VyLmFjdGlvbnMnO1xyXG5pbXBvcnQgeyBTaWRlbmF2U3RhdGUgfSBmcm9tICcuLi9tb2R1bGVzL3NpZGVuYXYvc2lkZW5hdi5zdGF0ZSc7XHJcbmltcG9ydCB7IEFkZFNtYXJ0cGFya0FjdGlvbiB9IGZyb20gJy4uL21vZHVsZXMvc21hcnRwYXJrcy9zbWFydHBhcmstZGlhbG9nLmFjdGlvbnMnO1xyXG5pbXBvcnQgeyBBbGVydER0bywgTm90aWZpY2F0aW9uRHRvLCBTbWFydHBhcmtEdG8gfSBmcm9tICcuLi9zZXJ2aWNlLXByb3h5L2Nsb3VkLXNlcnZpY2UtcHJveGllcyc7XHJcbmltcG9ydCB7XHJcbiAgRGV2aWNlRXZlbnREdG8sIERldmljZVN0YXR1c0R0bywgRXZlbnRBY3Rpdml0eUR0bywgRmFjaWxpdHlEdG8sIEZhY2lsaXR5UmVtb3RlQ29tbWFuZEV2ZW50LFxyXG4gIEZhY2lsaXR5UmVtb3RlQ29tbWFuZFR5cGVzLCBMcHJUcmFuc2FjdGlvbkR0bywgTm90aWZpY2F0aW9uRXZlbnRUeXBlLCBOb3RpZmljYXRpb25TdWJzY3JpcHRpb25EdG8sXHJcbiAgUlRFdmVudFN1YnNjcmlwdGlvbkR0bywgUnRFdmVudFR5cGUsIFNlcnZpY2VzUnVubmluZ1N0YXR1c0R0bywgWm9uZUR0b1xyXG59IGZyb20gJy4uL3NlcnZpY2UtcHJveHkvZWRnZS1zZXJ2aWNlLXByb3hpZXMnO1xyXG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9hcHAtY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHZW5lcmFsQWN0aW9uU2VydmljZSB9IGZyb20gJy4vZ2VuZXJhbC1hY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFJlYWx0aW1lRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi9yZWFsdGltZS1ldmVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9zZXNzaW9uLXN0b3JhZ2Uuc2VydmljZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgU2lnbmFsUk9iamVjdCB7XHJcbiAgY29uc3RydWN0b3IocHVibGljIGd1aWQ6IHN0cmluZywgcHVibGljIGpzb25QYXlsb2FkOiBzdHJpbmcpIHtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSVE9iamVjdE9iamVjdCBleHRlbmRzIFNpZ25hbFJPYmplY3Qge1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBydEV2ZW50VHlwZTogUnRFdmVudFR5cGUsIHB1YmxpYyBwYXJrSWQ6IG51bWJlciwgcHVibGljIGd1aWQ6IHN0cmluZywgcHVibGljIGpzb25QYXlsb2FkOiBzdHJpbmcpIHtcclxuICAgIHN1cGVyKGd1aWQsIGpzb25QYXlsb2FkKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBTcGFya05vdGlmaWNhdGlvbiBleHRlbmRzIFNpZ25hbFJPYmplY3Qge1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBub3RpZmljYXRpb25UeXBlOiBOb3RpZmljYXRpb25FdmVudFR5cGUsIHB1YmxpYyBndWlkOiBzdHJpbmcsIHB1YmxpYyBpZGVudGlmaWVyOiBzdHJpbmcsIHB1YmxpYyBqc29uUGF5bG9hZDogc3RyaW5nKSB7XHJcbiAgICBzdXBlcihndWlkLCBqc29uUGF5bG9hZCk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2lnbmFsUiB7XHJcblxyXG4gIHB1YmxpYyBjb25uZWN0aW9uOiBIdWJDb25uZWN0aW9uO1xyXG4gIHB1YmxpYyBzdWJzY3JpcHRpb25RdWV1ZTogYW55W10gPSBbXTtcclxuICBwdWJsaWMgbm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uUXVldWU6IGFueVtdID0gW107XHJcblxyXG4gIHByb3RlY3RlZCBzdG9yZTogU3RvcmU7XHJcbiAgcHJvdGVjdGVkIHJlYWx0aW1lRXZlbnRTZXJ2aWNlOiBSZWFsdGltZUV2ZW50U2VydmljZTtcclxuICBwcm90ZWN0ZWQgbm90aWZpY2F0aW9uRXZlbnRTZXJ2aWNlOiBOb3RpZmljYXRpb25FdmVudFNlcnZpY2U7XHJcbiAgcHJvdGVjdGVkIHNlc3Npb25TdG9yYWdlU2VydmljZTogU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlO1xyXG4gIHByb3RlY3RlZCBhcHBDb25maWc6IEFwcENvbmZpZ1NlcnZpY2U7XHJcbiAgcHJvdGVjdGVkIGdlbmVyYWxBY3Rpb25TZXJ2aWNlOiBHZW5lcmFsQWN0aW9uU2VydmljZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgdGhpcy5zdG9yZSA9IGluamVjdG9yLmdldChTdG9yZSk7XHJcbiAgICB0aGlzLnJlYWx0aW1lRXZlbnRTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFJlYWx0aW1lRXZlbnRTZXJ2aWNlKTtcclxuICAgIHRoaXMubm90aWZpY2F0aW9uRXZlbnRTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KE5vdGlmaWNhdGlvbkV2ZW50U2VydmljZSk7XHJcbiAgICB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZSA9IGluamVjdG9yLmdldChTZXNzaW9uU3RvcmFnZVNlcnZpY2UpO1xyXG4gICAgdGhpcy5hcHBDb25maWcgPSBpbmplY3Rvci5nZXQoQXBwQ29uZmlnU2VydmljZSk7XHJcbiAgICB0aGlzLmdlbmVyYWxBY3Rpb25TZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KEdlbmVyYWxBY3Rpb25TZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbml0UmVhbHRpbWVFdmVudExpc3RlbmVycygpIHtcclxuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuYXBwQ29uZmlnLmdldENvbmZpZygpO1xyXG4gICAgY29uc3QgYmFzZVVybCA9IGNvbmZpZy5hcHBUeXBlID09PSBBcHBUeXBlLk1vYmlsZSA/IGNvbmZpZy5hcGlCYXNlVVJMIDogJyc7XHJcbiAgICBjb25zdCB1cmwgPSBgJHtiYXNlVXJsfS9yZWFsdGltZWA7XHJcblxyXG4gICAgZGF0YWRvZ0xvZ3MubG9nZ2VyLmluZm8oYFJUIEFQSSBCYXNlIFVybCAtICR7dXJsfWApO1xyXG5cclxuICAgIGNvbnN0IG1heENvbnNlY3V0aXZlRmFpbGVkUmV0cnlDb3VudCA9IGNvbmZpZy5zaWduYWxSLm1heENvbnNlY3V0aXZlRmFpbGVkUmV0cnlDb3VudDtcclxuXHJcbiAgICB0aGlzLmNvbm5lY3Rpb24gPSBuZXcgSHViQ29ubmVjdGlvbkJ1aWxkZXIoKVxyXG4gICAgICAud2l0aFVybCh1cmwsIHtcclxuICAgICAgICBhY2Nlc3NUb2tlbkZhY3Rvcnk6ICgpID0+IHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmFjY2Vzc1Rva2VuLFxyXG4gICAgICAgIHNraXBOZWdvdGlhdGlvbjogdHJ1ZSwgIC8vIFNraXAgdGhlIG5lZ290aWF0aW9uIHN0ZXBcclxuICAgICAgICB0cmFuc3BvcnQ6IEh0dHBUcmFuc3BvcnRUeXBlLldlYlNvY2tldHMgIC8vIFVzZSBXZWJTb2NrZXRzIGRpcmVjdGx5XHJcbiAgICAgIH0pXHJcbiAgICAgIC53aXRoQXV0b21hdGljUmVjb25uZWN0KG5ldyBUaWJhUmV0cnlQb2xpY3kobWF4Q29uc2VjdXRpdmVGYWlsZWRSZXRyeUNvdW50KSlcclxuICAgICAgLmJ1aWxkKCk7XHJcblxyXG4gICAgdGhpcy5jb25uZWN0aW9uLm9ucmVjb25uZWN0aW5nKChlcnJvcikgPT4ge1xyXG4gICAgICBkYXRhZG9nTG9ncy5sb2dnZXIuaW5mbygnQXR0ZW1wdGluZyB0byByZWNvbm5lY3Q6JywgZXJyb3IpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jb25uZWN0aW9uLm9uY2xvc2UoKGVycm9yKSA9PiB7XHJcbiAgICAgIGRhdGFkb2dMb2dzLmxvZ2dlci5pbmZvKCdDb25uZWN0aW9uIGNsb3NlZCBhZnRlciBhbGwgcmV0cnkgYXR0ZW1wdHM6JywgZXJyb3IpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jb25uZWN0aW9uLm9ucmVjb25uZWN0ZWQoKGNvbm5lY3Rpb25JZCkgPT4ge1xyXG4gICAgICBkYXRhZG9nTG9ncy5sb2dnZXIuaW5mbyhgU3VjY2Vzc2Z1bGx5IHJlY29ubmVjdGVkIFNJR05BTFIhLiBDb25uZWN0aW9uSWQ6ICR7Y29ubmVjdGlvbklkfWApO1xyXG5cclxuICAgICAgdGhpcy5jaGVja0ZvclVwZGF0ZSgpO1xyXG4gICAgICBjb25zdCBndWlkID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmd1aWQpO1xyXG4gICAgICBpZiAoISFndWlkKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTcGFya0NvcmVDb25uZWN0aW9uKHRydWUsIGd1aWQpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHJlY29ubmVjdFJ0RXZlbnRzU3Vic2NyaXB0aW9ucyA9IHRoaXMucmVhbHRpbWVFdmVudFNlcnZpY2UuZ2V0U3Vic2NyaXB0aW9uRm9yUmVjb25uZWN0KCk7XHJcbiAgICAgIHRoaXMuaW52b2tlUmVhbHRpbWVSZWdpc3RyYXRpb24ocmVjb25uZWN0UnRFdmVudHNTdWJzY3JpcHRpb25zLCB0aGlzLmhhbmRsZVJlYWxUaW1lQXdhaXRpbmdTdWJzY3JpcHRpb25zLmJpbmQodGhpcykpO1xyXG5cclxuICAgICAgY29uc3Qgbm90aWZpY2F0aW9uU3Vic2NyaXB0aW9ucyA9IHRoaXMubm90aWZpY2F0aW9uRXZlbnRTZXJ2aWNlLmdldFN1YnNjcmlwdGlvbkZvclJlY29ubmVjdCgpO1xyXG4gICAgICBub3RpZmljYXRpb25TdWJzY3JpcHRpb25zLmZvckVhY2gobm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uID0+IHtcclxuICAgICAgICB0aGlzLmludm9rZU5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihub3RpZmljYXRpb25TdWJzY3JpcHRpb24pO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuaGFuZGxlTm90aWZpY2F0aW9uQXdhaXRpbmdTdWJzY3JpcHRpb24oKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuY29ubmVjdGlvbi5vbignUnRFdmVudCcsIChydEV2ZW50VHlwZTogUnRFdmVudFR5cGUsIHBhcmtJZDogbnVtYmVyLCBndWlkOiBzdHJpbmcsIGpzb25QYXlsb2FkOiBzdHJpbmcpID0+IHtcclxuICAgICAgb2YobmV3IFJUT2JqZWN0T2JqZWN0KHJ0RXZlbnRUeXBlLCBwYXJrSWQsIGd1aWQsIGpzb25QYXlsb2FkKSlcclxuICAgICAgICAucGlwZSh0aGlzLmhhbmRsZUpzb25QYXlsb2FkVG9Mb3dlcigpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fZGlzcGF0Y2hSdEV2ZW50KHJlcyBhcyBSVE9iamVjdE9iamVjdCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmNvbm5lY3Rpb24ub24oJ05vdGlmaWNhdGlvbicsICh0eXBlOiBOb3RpZmljYXRpb25FdmVudFR5cGUsIGd1aWQ6IHN0cmluZywgaWRlbnRpZmllcjogc3RyaW5nLCBqc29uUGF5bG9hZDogc3RyaW5nKSA9PiB7XHJcbiAgICAgIG9mKG5ldyBTcGFya05vdGlmaWNhdGlvbih0eXBlLCBndWlkLCBpZGVudGlmaWVyLCBqc29uUGF5bG9hZCkpXHJcbiAgICAgICAgLnBpcGUodGhpcy5oYW5kbGVKc29uUGF5bG9hZFRvTG93ZXIoKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICAgIHRoaXMuX2Rpc3BhdGNoTm90aWZpY2F0aW9uKHJlcyBhcyBTcGFya05vdGlmaWNhdGlvbik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBjaGVja0ZvclVwZGF0ZSgpOiB2b2lkO1xyXG5cclxuICBwdWJsaWMgY29ubmVjdCgpIHtcclxuICAgIHRoaXMuX2Nvbm5lY3QodGhpcy5jb25uZWN0aW9uKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkaXNjb25uZWN0KCkge1xyXG4gICAgdGhpcy5fZGlzY29ubmVjdCh0aGlzLmNvbm5lY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgc3Vic2NyaWJlRm9yUmVhbHRpbWUocnRFdmVudFN1YnNjcmlwdGlvbnM6IFJURXZlbnRTdWJzY3JpcHRpb25EdG8sIHRyaWdnZXJGdW5jdGlvbj86ICgpID0+IHZvaWQpIHtcclxuICAgIGlmICh0aGlzLmNvbm5lY3Rpb24pIHtcclxuICAgICAgaWYgKHRoaXMuY29ubmVjdGlvbi5zdGF0ZSAhPT0gSHViQ29ubmVjdGlvblN0YXRlLkNvbm5lY3RlZCkge1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uUXVldWUucHVzaCgoKSA9PiB0aGlzLnN1YnNjcmliZUZvclJlYWx0aW1lKHJ0RXZlbnRTdWJzY3JpcHRpb25zLCB0cmlnZ2VyRnVuY3Rpb24pKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBydEV2ZW50U3Vic2NyaXB0aW9uRGVsdGEgPSB0aGlzLnJlYWx0aW1lRXZlbnRTZXJ2aWNlLmhhbmRsZVJlYWx0aW1lRXZlbnRzU3Vic2NyaXB0aW9ucyhydEV2ZW50U3Vic2NyaXB0aW9ucyk7XHJcbiAgICAgICAgaWYgKHJ0RXZlbnRTdWJzY3JpcHRpb25EZWx0YS5zdWJzY3JpYmUubGVuZ3RoIHx8IHJ0RXZlbnRTdWJzY3JpcHRpb25EZWx0YS51blN1YnNjcmliZS5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMuaW52b2tlUmVhbHRpbWVSZWdpc3RyYXRpb24ocnRFdmVudFN1YnNjcmlwdGlvbkRlbHRhLCB0cmlnZ2VyRnVuY3Rpb24pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3Vic2NyaWJlRm9yTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25TdWJzY3JpcHRpb246IE5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbkR0bywgdHJpZ2dlckZ1bmN0aW9uPzogKCkgPT4gdm9pZCkge1xyXG4gICAgaWYgKHRoaXMuY29ubmVjdGlvbikge1xyXG4gICAgICBpZiAodGhpcy5jb25uZWN0aW9uLnN0YXRlICE9PSBIdWJDb25uZWN0aW9uU3RhdGUuQ29ubmVjdGVkKSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TdWJzY3JpcHRpb25RdWV1ZS5wdXNoKCgpID0+IHRoaXMuc3Vic2NyaWJlRm9yTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25TdWJzY3JpcHRpb24sIHRyaWdnZXJGdW5jdGlvbikpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbkRlbHRhID0gdGhpcy5ub3RpZmljYXRpb25FdmVudFNlcnZpY2UuaGFuZGxlTm90aWZpY2F0aW9uU3Vic2NyaXB0aW9ucyhub3RpZmljYXRpb25TdWJzY3JpcHRpb24pO1xyXG4gICAgICAgIGlmICghIW5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbkRlbHRhKSB7XHJcbiAgICAgICAgICB0aGlzLmludm9rZU5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihub3RpZmljYXRpb25TdWJzY3JpcHRpb25EZWx0YSwgdHJpZ2dlckZ1bmN0aW9uKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW52b2tlUmVhbHRpbWVSZWdpc3RyYXRpb24ocnRFdmVudFN1YnNjcmlwdGlvbnM6IFJURXZlbnRTdWJzY3JpcHRpb25EdG8sIHRyaWdnZXJGdW5jdGlvbj86ICgpID0+IHZvaWQpIHtcclxuICAgIGNvbnN0IGFwcE1vZHVsZSA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoU2lkZW5hdlN0YXRlLmFwcE1vZHVsZSk7XHJcbiAgICBpZiAocnRFdmVudFN1YnNjcmlwdGlvbnMudXNlcklkKSB7XHJcbiAgICAgIHRoaXMuY29ubmVjdGlvbi5pbnZva2U8UlRFdmVudFN1YnNjcmlwdGlvbkR0bz4oJ1JlZ2lzdGVyUGFyaycsIHJ0RXZlbnRTdWJzY3JpcHRpb25zLCBhcHBNb2R1bGUpLnRoZW4oKHN1YlRvKSA9PiB7XHJcbiAgICAgICAgaWYgKHRyaWdnZXJGdW5jdGlvbikge1xyXG4gICAgICAgICAgdHJpZ2dlckZ1bmN0aW9uKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW52b2tlTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbjogTm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uRHRvLCB0cmlnZ2VyRnVuY3Rpb24/OiAoKSA9PiB2b2lkKSB7XHJcbiAgICBpZiAobm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uICYmIG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbi51c2VySWQpIHtcclxuICAgICAgdGhpcy5jb25uZWN0aW9uLmludm9rZTxOb3RpZmljYXRpb25TdWJzY3JpcHRpb25EdG8+KCdSZWdpc3Rlck5vdGlmaWNhdGlvbnMnLCBub3RpZmljYXRpb25TdWJzY3JpcHRpb24pLnRoZW4oKHN1YlRvKSA9PiB7XHJcbiAgICAgICAgaWYgKHRyaWdnZXJGdW5jdGlvbikge1xyXG4gICAgICAgICAgdHJpZ2dlckZ1bmN0aW9uKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRTcGFya0NvcmVDb25uZWN0aW9uKGlzQ29ubmVjdGVkOiBib29sZWFuLCBndWlkOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHNlcnZpY2VzUnVubmluZ1N0YXR1cyA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoRmFjaWxpdHlTdGF0ZS5zZXJ2aWNlc1J1bm5pbmdTdGF0dXNEaWN0aW9uYXJ5KVtndWlkXTtcclxuICAgIHNlcnZpY2VzUnVubmluZ1N0YXR1cy5pc1NwYXJrQ29yZUNvbm5lY3RlZCA9IGlzQ29ubmVjdGVkO1xyXG4gICAgaWYgKCFpc0Nvbm5lY3RlZCkge1xyXG4gICAgICBjb25zdCBmYWNpbGl0eUd1aWQgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuZ3VpZCk7XHJcbiAgICAgIGNvbnN0IHNlcnZlckNsaWVudFRpbWVTcGFuID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmNsaWVudFNlcnZlckRpZmZEaWN0aW9uYXJ5KVtmYWNpbGl0eUd1aWRdIHx8IDA7XHJcbiAgICAgIHNlcnZpY2VzUnVubmluZ1N0YXR1cy5zcGFya0NvcmVEaXNjb25uZWN0ZWRUaW1lc3RhbXAgPSBtb21lbnQoKS5zdWJ0cmFjdChzZXJ2ZXJDbGllbnRUaW1lU3BhbiwgJ21pbGxpc2Vjb25kcycpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2VydmljZXNSdW5uaW5nU3RhdHVzLnNwYXJrQ29yZURpc2Nvbm5lY3RlZFRpbWVzdGFtcCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlcnZpY2VzUnVubmluZ1N0YXR1c0NoYW5nZWQoc2VydmljZXNSdW5uaW5nU3RhdHVzLCBndWlkKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlSnNvblBheWxvYWRUb0xvd2VyKCk6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxTaWduYWxST2JqZWN0PiB7XHJcbiAgICByZXR1cm4gJGlucHV0ID0+ICRpbnB1dC5waXBlKG1hcChyZXMgPT4ge1xyXG4gICAgICBjb25zdCBvYmogPSBKU09OLnBhcnNlKHJlcy5qc29uUGF5bG9hZCk7XHJcbiAgICAgIHJlcy5qc29uUGF5bG9hZCA9IEpTT04uc3RyaW5naWZ5KG9iaiwgKGtleSwgdmFsdWUpID0+IHtcclxuICAgICAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID0ge307XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGsgaW4gdmFsdWUpIHtcclxuICAgICAgICAgICAgaWYgKE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBrKSkge1xyXG4gICAgICAgICAgICAgIGlmIChrLmxlbmd0aCA9PT0gMikge1xyXG4gICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRbayAmJiBrLnRvTG93ZXJDYXNlKCldID0gdmFsdWVba107XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50W2sgJiYgay5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIGsuc3Vic3RyaW5nKDEpXSA9IHZhbHVlW2tdO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIHJlcGxhY2VtZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gcmVzO1xyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGRpc3BhdGNoTm90aWZpY2F0aW9uKG9iajogU3BhcmtOb3RpZmljYXRpb24pOiB2b2lkO1xyXG5cclxuICBwcml2YXRlIF9kaXNwYXRjaE5vdGlmaWNhdGlvbihvYmo6IFNwYXJrTm90aWZpY2F0aW9uKSB7XHJcbiAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShvYmouanNvblBheWxvYWQpO1xyXG4gICAgY29uc29sZS5kZWJ1ZyhgUmVjZWl2ZWQgTm90aWZpY2F0aW9uIHR5cGUgPT09PiAke29iai5ub3RpZmljYXRpb25UeXBlfWApO1xyXG4gICAgc3dpdGNoIChvYmoubm90aWZpY2F0aW9uVHlwZSkge1xyXG4gICAgICBjYXNlIE5vdGlmaWNhdGlvbkV2ZW50VHlwZS5Jbml0aWFsQ2xvdWRDb25uZWN0OlxyXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZVNtYXJ0UGFya0Nvbm5lY3Rpb24oZGF0YSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uRXZlbnRUeXBlLkZhY2lsaXR5UmVtb3RlQ29tbWFuZEV4ZWN1dGVkOlxyXG4gICAgICAgIC8vIFRPRE86IHRoaXMgY29uZGl0aW9uIHdpbGwgYmUgcmVtb3ZlZCB3aGVuIGFsbCBcIkZhY2lsaXR5UmVtb3RlQ29tbWFuZEV4ZWN1dGVkXCIgbm90aWZpY2F0aW9uXHJcbiAgICAgICAgLy8gd2lsbCBiZSByZW1vdmVkIHVwb24gYmVpbmcgZXhlY3V0ZWQgaW4gdGhlIHNlcnZlclxyXG4gICAgICAgIC8vIEZvciBtb3JlIGV4cGxhbmF0aW9uIHNlZTogU1BSSzMtNjcwNFxyXG4gICAgICAgIGlmIChkYXRhLnR5cGUgPT09IEZhY2lsaXR5UmVtb3RlQ29tbWFuZFR5cGVzLlRyYW5zbWl0U3BlY2lhbERheXMpIHtcclxuICAgICAgICAgIGNvbnN0IG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbiA9IHRoaXMubm90aWZpY2F0aW9uRXZlbnRTZXJ2aWNlLmdldE5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbnNFbnRpdHkoKTtcclxuICAgICAgICAgIG5vdGlmaWNhdGlvblN1YnNjcmlwdGlvbi50eXBlID0gb2JqLm5vdGlmaWNhdGlvblR5cGU7XHJcbiAgICAgICAgICBub3RpZmljYXRpb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUgPSB0cnVlO1xyXG4gICAgICAgICAgbm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uLmlkZW50aWZpZXIgPSB0aGlzLm5vdGlmaWNhdGlvbkV2ZW50U2VydmljZS5nZXROb3RpZmljYXRpb25JZGVudGlmaWVyKGRhdGEuZ3VpZCwgZGF0YS5wYXJrSWQsXHJcbiAgICAgICAgICAgIG9iai5ub3RpZmljYXRpb25UeXBlLCBub3RpZmljYXRpb25TdWJzY3JpcHRpb24udXNlcklkKTtcclxuICAgICAgICAgIHRoaXMuc3Vic2NyaWJlRm9yTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25TdWJzY3JpcHRpb24pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5mYWNpbGl0eVJlbW90ZUNvbW1hbmRFeGVjdXRlZChkYXRhKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBOb3RpZmljYXRpb25FdmVudFR5cGUuR2VuZXJhbEFjdGlvbnM6XHJcbiAgICAgICAgdGhpcy5nZW5lcmFsQWN0aW9uU2VydmljZS5kaXNwYXRjaEdlbmVyYWxBY3Rpb25zKGRhdGEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIE5vdGlmaWNhdGlvbkV2ZW50VHlwZS5IYW5kbGVBbGVydDpcclxuICAgICAgICB0aGlzLmhhbmRsZUFsZXJ0cyhBbGVydER0by5mcm9tSlMoZGF0YSksIG9iai5ndWlkKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBOb3RpZmljYXRpb25FdmVudFR5cGUuSGFuZGxlZE5vdGlmaWNhdGlvbjpcclxuICAgICAgICB0aGlzLmhhbmRsZWROb3RpZmljYXRpb24oTm90aWZpY2F0aW9uRHRvLmZyb21KUyhkYXRhKSwgb2JqLmd1aWQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIE5vdGlmaWNhdGlvbkV2ZW50VHlwZS5IYW5kbGVOb3RpZmljYXRpb246XHJcbiAgICAgICAgdGhpcy5oYW5kbGVOb3RpZmljYXRpb24oTm90aWZpY2F0aW9uRHRvLmZyb21KUyhkYXRhKSwgb2JqLmd1aWQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBOb3RpZmljYXRpb25FdmVudFR5cGUuUmVwb3J0R2VuZXJhdGVkOlxyXG4gICAgICBjYXNlIE5vdGlmaWNhdGlvbkV2ZW50VHlwZS5SZWNlaXB0R2VuZXJhdGVkOlxyXG4gICAgICBjYXNlIE5vdGlmaWNhdGlvbkV2ZW50VHlwZS5TdGlja2VyR2VuZXJhdGVkOlxyXG4gICAgICBjYXNlIE5vdGlmaWNhdGlvbkV2ZW50VHlwZS5BcHBsaWNhdGlvblVwZGF0ZTpcclxuICAgICAgY2FzZSBOb3RpZmljYXRpb25FdmVudFR5cGUuQ3JlYXRlUm9sZTpcclxuICAgICAgY2FzZSBOb3RpZmljYXRpb25FdmVudFR5cGUuVXBkYXRlUm9sZTpcclxuICAgICAgICB0aGlzLmRpc3BhdGNoTm90aWZpY2F0aW9uKG9iaik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgY29uc29sZS5kZWJ1ZyhgVW5rbm93biBub3RpZmljYXRpb24gdHlwZSA9PT0+ICR7b2JqLm5vdGlmaWNhdGlvblR5cGV9YCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZGlzcGF0Y2hSdEV2ZW50KG9iajogUlRPYmplY3RPYmplY3QpOiB2b2lkO1xyXG5cclxuICBwcml2YXRlIF9kaXNwYXRjaFJ0RXZlbnQob2JqOiBSVE9iamVjdE9iamVjdCkge1xyXG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2Uob2JqLmpzb25QYXlsb2FkKTtcclxuICAgIHN3aXRjaCAob2JqLnJ0RXZlbnRUeXBlKSB7XHJcbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuRGV2aWNlU3RhdHVzOlxyXG4gICAgICAgIHRoaXMuZGV2aWNlc1N0YXR1c0NoYW5nZWQoRGV2aWNlU3RhdHVzRHRvLmZyb21KUyhkYXRhKSk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLkR5bmFtaWNQcmljaW5nQ29uZGl0aW9uOlxyXG4gICAgICAgIGRhdGFkb2dMb2dzLmxvZ2dlci5kZWJ1ZyhgUlQgLSBHb3QgJHtKU09OLnN0cmluZ2lmeShkYXRhKX0gZXZlbnRgKTtcclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkNoYW5nZWQoTm90aWZpY2F0aW9uRHRvLmZyb21KUyhkYXRhKSwgb2JqLmd1aWQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBSdEV2ZW50VHlwZS5BbGVydDpcclxuICAgICAgY2FzZSBSdEV2ZW50VHlwZS5Mb3N0VGlja2V0OlxyXG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLkxQUm1pc21hdGNoOlxyXG4gICAgICAgIGRhdGFkb2dMb2dzLmxvZ2dlci5kZWJ1ZyhgUlQgLSBHb3QgJHtKU09OLnN0cmluZ2lmeShkYXRhKX0gZXZlbnRgKTtcclxuICAgICAgICB0aGlzLmFsZXJ0Q2hhbmdlZChBbGVydER0by5mcm9tSlMoZGF0YSksIG9iai5ndWlkKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuUGFya1N0YXRlOlxyXG4gICAgICAgIGRhdGFkb2dMb2dzLmxvZ2dlci5kZWJ1ZyhgUlQgLSBHb3QgJHtKU09OLnN0cmluZ2lmeShkYXRhKX0gZXZlbnRgKTtcclxuICAgICAgICB0aGlzLmRldmljZUFjdGl2aXR5Q2hhbmdlZChkYXRhKTtcclxuICAgICAgICB0aGlzLnBhcmtBY3Rpdml0eUNoYW5nZWQoZGF0YSk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLkRldmljZUV2ZW50OlxyXG4gICAgICAgIHRoaXMuZGV2aWNlRXZlbnRDaGFuZ2VkKGRhdGEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBSdEV2ZW50VHlwZS5TZXJ2aWNlc1N0YXR1czpcclxuICAgICAgICB0aGlzLnNlcnZpY2VzUnVubmluZ1N0YXR1c0NoYW5nZWQoU2VydmljZXNSdW5uaW5nU3RhdHVzRHRvLmZyb21KUyhkYXRhKSwgb2JqLmd1aWQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBSdEV2ZW50VHlwZS5ab25lOlxyXG4gICAgICAgIHRoaXMuem9uZUNoYW5nZWQoWm9uZUR0by5mcm9tSlMoZGF0YSksIG9iai5wYXJrSWQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBSdEV2ZW50VHlwZS5GYWNpbGl0eTpcclxuICAgICAgICB0aGlzLmZhY2lsaXR5Q2hhbmdlZChGYWNpbGl0eUR0by5mcm9tSlMoZGF0YSksIG9iai5ndWlkKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuT2NjdXBhbmN5OlxyXG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLlJldmVudWU6XHJcbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuT3BlblRpY2tldFRyYW5zYWN0aW9uOlxyXG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLkNsb3NlVGlja2V0VHJhbnNhY3Rpb246XHJcbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuTW9udGhseVRyYW5zYWN0aW9uOlxyXG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLkd1ZXN0VHJhbnNhY3Rpb246XHJcbiAgICAgIGNhc2UgUnRFdmVudFR5cGUuUGF5bWVudFRyYW5zYWN0aW9uOlxyXG4gICAgICBjYXNlIFJ0RXZlbnRUeXBlLkxQUlRyYW5zYWN0aW9uOlxyXG4gICAgICAgIHRoaXMuZGlzcGF0Y2hSdEV2ZW50KG9iaik7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGNvbnNvbGUuZGVidWcoYFVua25vd24gZXZlbnQgdHlwZSA9PT0+ICR7b2JqLnJ0RXZlbnRUeXBlfWApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY29ubmVjdChjb25uZWN0aW9uOiBIdWJDb25uZWN0aW9uKSB7XHJcbiAgICBjb25zb2xlLmRlYnVnKCdTaWduYWxSIEVzdGFibGlzaGluZyBDb25uZWN0aW9uLi4uJyk7XHJcbiAgICBjb25uZWN0aW9uLnN0YXJ0KClcclxuICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZGVidWcoYFNpZ25hbFIgQ29ubmVjdGlvbiBFc3RhYmxpc2hlZCFgKTtcclxuICAgICAgICB0aGlzLmhhbmRsZVJlYWxUaW1lQXdhaXRpbmdTdWJzY3JpcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVOb3RpZmljYXRpb25Bd2FpdGluZ1N1YnNjcmlwdGlvbigpO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goYXN5bmMgKGUpID0+IHtcclxuICAgICAgICB0aGlzLnJldHJ5Q29ubmVjdGlvbihjb25uZWN0aW9uLCAxKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9kaXNjb25uZWN0KGNvbm5lY3Rpb246IEh1YkNvbm5lY3Rpb24pIHtcclxuICAgIGNvbnNvbGUuZGVidWcoJ1NpZ25hbFIgU3RvcHBpbmcgQ29ubmVjdGlvbi4uLicpO1xyXG4gICAgY29ubmVjdGlvbj8uc3RvcCgpXHJcbiAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICBjb25zb2xlLmRlYnVnKGBTaWduYWxSIENvbm5lY3Rpb24gU3RvcHBlZCFgKTtcclxuICAgICAgICB0aGlzLmhhbmRsZURpc2Nvbm5lY3QoKTtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKGFzeW5jIChlcnIpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciA9PiAke2Vycn0sIFRpbWVzdGFtcDogJHtuZXcgRGF0ZSgpfWApO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmV0cnlDb25uZWN0aW9uKGNvbm5lY3Rpb246IEh1YkNvbm5lY3Rpb24sIHJldHJ5Q291bnQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUuZGVidWcoYFNpZ25hbFIgRXN0YWJsaXNoaW5nIENvbm5lY3Rpb24uIFJldHJ5ICMke3JldHJ5Q291bnR9LiBUaW1lc3RhbXA6ICR7bmV3IERhdGUoKX1gKTtcclxuICAgICAgY29ubmVjdGlvbi5zdGFydCgpXHJcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5kZWJ1ZyhgU2lnbmFsUiBDb25uZWN0aW9uIEVzdGFibGlzaGVkISBSZXRyeSAjJHtyZXRyeUNvdW50fWApO1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVSZWFsVGltZUF3YWl0aW5nU3Vic2NyaXB0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVOb3RpZmljYXRpb25Bd2FpdGluZ1N1YnNjcmlwdGlvbigpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKCgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuYXBwQ29uZmlnLmdldENvbmZpZygpO1xyXG5cclxuICAgICAgICAgIGlmIChyZXRyeUNvdW50IDw9IGNvbmZpZy5zaWduYWxSLm1heENvbnNlY3V0aXZlRmFpbGVkUmV0cnlDb3VudCkge1xyXG4gICAgICAgICAgICB0aGlzLnJldHJ5Q29ubmVjdGlvbihjb25uZWN0aW9uLCByZXRyeUNvdW50ICsgMSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9LCBnZXRTZWNvbmRzQmFja29mZihyZXRyeUNvdW50KSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZVJlYWxUaW1lQXdhaXRpbmdTdWJzY3JpcHRpb25zKCkge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25RdWV1ZS5mb3JFYWNoKGF3YWl0aW5nU3Vic2NyaXB0aW9uID0+IGF3YWl0aW5nU3Vic2NyaXB0aW9uKCkpO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25RdWV1ZS5zcGxpY2UoMCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgaGFuZGxlTm90aWZpY2F0aW9uQXdhaXRpbmdTdWJzY3JpcHRpb24oKSB7XHJcbiAgICB0aGlzLm5vdGlmaWNhdGlvblN1YnNjcmlwdGlvblF1ZXVlLmZvckVhY2goYXdhaXRpbmdTdWJzY3JpcHRpb24gPT4gYXdhaXRpbmdTdWJzY3JpcHRpb24oKSk7XHJcbiAgICB0aGlzLm5vdGlmaWNhdGlvblN1YnNjcmlwdGlvblF1ZXVlLnNwbGljZSgwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlRGlzY29ubmVjdCgpIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uUXVldWUgPSBbXTtcclxuICAgIHRoaXMubm90aWZpY2F0aW9uU3Vic2NyaXB0aW9uUXVldWUgPSBbXTtcclxuICAgIHRoaXMucmVhbHRpbWVFdmVudFNlcnZpY2UucmVzZXRBbGxTdWJzY3JpcHRpb25zKCk7XHJcbiAgfVxyXG5cclxuICBARGlzcGF0Y2goKSBkZXZpY2VzU3RhdHVzQ2hhbmdlZCA9IChkZXZpY2VTdGF0dXM6IERldmljZVN0YXR1c0R0bykgPT5cclxuICAgIG5ldyBEZXZpY2VTdGF0dXNDaGFuZ2VkQWN0aW9uKGRldmljZVN0YXR1cyk7XHJcbiAgQERpc3BhdGNoKCkgZmFjaWxpdHlDaGFuZ2VkID0gKGRhdGE6IEZhY2lsaXR5RHRvLCBndWlkOiBzdHJpbmcpID0+XHJcbiAgICBuZXcgRmFjaWxpdHlDaGFuZ2VkQWN0aW9uKGRhdGEsIGd1aWQpO1xyXG4gIEBEaXNwYXRjaCgpIHNlcnZpY2VzUnVubmluZ1N0YXR1c0NoYW5nZWQgPSAoc2VydmljZXNSdW5uaW5nU3RhdHVzOiBTZXJ2aWNlc1J1bm5pbmdTdGF0dXNEdG8sIGd1aWQ6IHN0cmluZykgPT5cclxuICAgIG5ldyBTZXJ2aWNlc1J1bm5pbmdTdGF0dXNDaGFuZ2VkQWN0aW9uKHNlcnZpY2VzUnVubmluZ1N0YXR1cywgZ3VpZCk7XHJcbiAgQERpc3BhdGNoKCkgcGFya0FjdGl2aXR5Q2hhbmdlZCA9IChhY3Rpdml0eTogRXZlbnRBY3Rpdml0eUR0bykgPT5cclxuICAgIG5ldyBQYXJrQWN0aXZpdHlDaGFuZ2VkQWN0aW9uKGFjdGl2aXR5KTtcclxuICBARGlzcGF0Y2goKSBkZXZpY2VFdmVudENoYW5nZWQgPSAoZGV2RXZlbnQ6IERldmljZUV2ZW50RHRvKSA9PlxyXG4gICAgbmV3IERldmljZUV2ZW50Q2hhbmdlZEFjdGlvbihkZXZFdmVudCk7XHJcbiAgQERpc3BhdGNoKCkgZGV2aWNlQWN0aXZpdHlDaGFuZ2VkID0gKGV2ZW50QWN0aXZpdHk6IEV2ZW50QWN0aXZpdHlEdG8pID0+XHJcbiAgICBuZXcgRGV2aWNlQWN0aXZpdHlDaGFuZ2VkQWN0aW9uKGV2ZW50QWN0aXZpdHkpO1xyXG4gIEBEaXNwYXRjaCgpIGxwclRyYW5zYWN0aW9uc0NoYW5nZWQgPSAobHByVHJhbnM6IExwclRyYW5zYWN0aW9uRHRvKSA9PlxyXG4gICAgbmV3IExwclRyYW5zYWN0aW9uc0NoYW5nZWRBY3Rpb24obHByVHJhbnMpO1xyXG4gIEBEaXNwYXRjaCgpIGFsZXJ0Q2hhbmdlZCA9IChhbGVydER0bzogQWxlcnREdG8sIGd1aWQ6IHN0cmluZykgPT5cclxuICAgIG5ldyBBbGVydENoYW5nZWRBY3Rpb24oYWxlcnREdG8sIGd1aWQpO1xyXG4gIEBEaXNwYXRjaCgpIG5vdGlmaWNhdGlvbkNoYW5nZWQgPSAobm90aWZpY2F0aW9uRHRvOiBOb3RpZmljYXRpb25EdG8sIGd1aWQ6IHN0cmluZykgPT5cclxuICAgIG5ldyBOb3RpZmljYXRpb25DaGFuZ2VkQWN0aW9uKG5vdGlmaWNhdGlvbkR0bywgZ3VpZCk7XHJcbiAgQERpc3BhdGNoKCkgaGFuZGxlZE5vdGlmaWNhdGlvbiA9IChub3RpZmljYXRpb25EdG86IE5vdGlmaWNhdGlvbkR0bywgZ3VpZDogc3RyaW5nKSA9PlxyXG4gICAgbmV3IEhhbmRsZWROb3RpZmljYXRpb25BY3Rpb24obm90aWZpY2F0aW9uRHRvLCBndWlkKTtcclxuICBARGlzcGF0Y2goKSBoYW5kbGVBbGVydHMgPSAoYWxlcnREdG86IEFsZXJ0RHRvLCBndWlkOiBzdHJpbmcpID0+XHJcbiAgICBuZXcgSGFuZGxlQWxlcnRzQWN0aW9uKGFsZXJ0RHRvLCBndWlkKTtcclxuICBARGlzcGF0Y2goKSBoYW5kbGVOb3RpZmljYXRpb24gPSAobm90aWZpY2F0aW9uRHRvOiBOb3RpZmljYXRpb25EdG8sIGd1aWQ6IHN0cmluZykgPT5cclxuICAgIG5ldyBIYW5kbGVOb3RpZmljYXRpb25BY3Rpb24obm90aWZpY2F0aW9uRHRvLCBndWlkKTtcclxuICBARGlzcGF0Y2goKSB6b25lQ2hhbmdlZCA9ICh6b25lRHRvOiBab25lRHRvLCBwYXJrSWQ6IG51bWJlcikgPT5cclxuICAgIG5ldyBab25lQ2hhbmdlZEFjdGlvbih6b25lRHRvLCBwYXJrSWQpO1xyXG4gIEBEaXNwYXRjaCgpIGluaXRpYWxpemVTbWFydFBhcmtDb25uZWN0aW9uID0gKHNtYXJ0cGFyazogU21hcnRwYXJrRHRvKSA9PlxyXG4gICAgbmV3IEFkZFNtYXJ0cGFya0FjdGlvbihzbWFydHBhcmspO1xyXG4gIEBEaXNwYXRjaCgpIGZhY2lsaXR5UmVtb3RlQ29tbWFuZEV4ZWN1dGVkID0gKGZhY2lsaXR5UmVtb3RlQ29tbWFuZEV2ZW50OiBGYWNpbGl0eVJlbW90ZUNvbW1hbmRFdmVudCkgPT5cclxuICAgIG5ldyBGYWNpbGl0eVJlbW90ZUNvbW1hbmRFeGVjdXRlZEFjdGlvbihmYWNpbGl0eVJlbW90ZUNvbW1hbmRFdmVudCk7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUaWJhUmV0cnlQb2xpY3kgaW1wbGVtZW50cyBzaWduYWxSLklSZXRyeVBvbGljeSB7XHJcblxyXG4gIHByaXZhdGUgbWF4Q29uc2VjdXRpdmVGYWlsZWRSZXRyeUNvdW50OiBudW1iZXI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKG1heENvbnNlY3V0aXZlRmFpbGVkUmV0cnlDb3VudDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLm1heENvbnNlY3V0aXZlRmFpbGVkUmV0cnlDb3VudCA9IG1heENvbnNlY3V0aXZlRmFpbGVkUmV0cnlDb3VudDtcclxuICB9XHJcblxyXG4gIG5leHRSZXRyeURlbGF5SW5NaWxsaXNlY29uZHMocmV0cnlDb250ZXh0OiBzaWduYWxSLlJldHJ5Q29udGV4dCk6IG51bWJlciB7XHJcbiAgICBsZXQgbWlsbGlzZWNvbmRzOiBudW1iZXIgPSBudWxsO1xyXG4gICAgY29uc3QgY3VycmVudFJldHJ5Q291bnQgPSByZXRyeUNvbnRleHQucHJldmlvdXNSZXRyeUNvdW50ICsgMTtcclxuXHJcbiAgICBpZiAoY3VycmVudFJldHJ5Q291bnQgPCB0aGlzLm1heENvbnNlY3V0aXZlRmFpbGVkUmV0cnlDb3VudCkge1xyXG4gICAgICBjb25zdCB1bmF1dGhvcml6ZWQgPSByZXRyeUNvbnRleHQucmV0cnlSZWFzb24ubWVzc2FnZS5pbmNsdWRlcyhgU3RhdHVzIGNvZGUgJyR7SHR0cFN0YXR1c0NvZGUuVW5hdXRob3JpemVkfSdgKTtcclxuXHJcbiAgICAgIGlmICh1bmF1dGhvcml6ZWQpIHtcclxuICAgICAgICBkYXRhZG9nTG9ncy5sb2dnZXIuaW5mbyhgVGliYVJldHJ5UG9saWN5IC0+IHVuYXV0aG9yaXplZCB0b2tlbi4gTWVzc2FnZTogICR7cmV0cnlDb250ZXh0LnJldHJ5UmVhc29uLm1lc3NhZ2V9YCk7XHJcbiAgICAgICAgdGhpcy5zaWduYWxSUmVmcmVzaFRva2VuKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZGF0YWRvZ0xvZ3MubG9nZ2VyLmluZm8oYFRpYmFSZXRyeVBvbGljeSAtPiBmYWlsZWQgbmVnb3RpYXRpb24gIyR7Y3VycmVudFJldHJ5Q291bnR9LiBNZXNzYWdlOiAke3JldHJ5Q29udGV4dC5yZXRyeVJlYXNvbi5tZXNzYWdlfWApO1xyXG5cclxuICAgICAgICBtaWxsaXNlY29uZHMgPSBnZXRTZWNvbmRzQmFja29mZihjdXJyZW50UmV0cnlDb3VudCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbWlsbGlzZWNvbmRzO1xyXG4gIH1cclxuXHJcbiAgQERpc3BhdGNoKCkgc2lnbmFsUlJlZnJlc2hUb2tlbiA9ICgpID0+IG5ldyBTaWduYWxSUmVmcmVzaFRva2VuQWN0aW9uKCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWNvbmRzQmFja29mZihyZXRyeUNvdW50OiBudW1iZXIpOiBudW1iZXIge1xyXG4gIGNvbnN0IGRlbGF5c1RhYmxlSW5TZWNvbmRzOiB7IFtrZXk6IG51bWJlcl06IG51bWJlcltdOyB9ID0ge1xyXG4gICAgMTogWzUsIDIwXSwgLy81cyAtIDIwc1xyXG4gICAgMjogWzI1LCA0MF0sIC8vIDI1cyAtIDQwc1xyXG4gICAgMzogWzQ1LCA2MF0sIC8vIDQ1cyAtIDYwc1xyXG4gICAgNDogWzY1LCA4MF0sIC8vIDY1cyAtIDgwc1xyXG4gICAgNTogWzYwMCwgOTAwXSwgIC8vIDEwbSAtIDE1bVxyXG4gIH07XHJcbiAgY29uc3QgW21pblNlY29uZHMsIG1heFNlY29uZHNdID0gZGVsYXlzVGFibGVJblNlY29uZHNbcmV0cnlDb3VudF0gfHwgWzAsIDBdO1xyXG4gIHJldHVybiAoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heFNlY29uZHMgLSBtaW5TZWNvbmRzICsgMSkpICsgbWluU2Vjb25kcykgKiBPTkVfU0VDT05EX0lOX01JTExJU0VDT05EUztcclxufVxyXG4iXX0=
@@ -92816,17 +92816,17 @@ class SignalR {
92816
92816
  this.devicesStatusChanged(DeviceStatusDto.fromJS(data));
92817
92817
  break;
92818
92818
  case RtEventType.DynamicPricingCondition:
92819
- datadogLogs.logger.info(`RT - Got ${JSON.stringify(data)} event`);
92819
+ datadogLogs.logger.debug(`RT - Got ${JSON.stringify(data)} event`);
92820
92820
  this.notificationChanged(NotificationDto.fromJS(data), obj.guid);
92821
92821
  break;
92822
92822
  case RtEventType.Alert:
92823
92823
  case RtEventType.LostTicket:
92824
92824
  case RtEventType.LPRmismatch:
92825
- datadogLogs.logger.info(`RT - Got ${JSON.stringify(data)} event`);
92825
+ datadogLogs.logger.debug(`RT - Got ${JSON.stringify(data)} event`);
92826
92826
  this.alertChanged(AlertDto$1.fromJS(data), obj.guid);
92827
92827
  break;
92828
92828
  case RtEventType.ParkState:
92829
- datadogLogs.logger.info(`RT - Got ${JSON.stringify(data)} event`);
92829
+ datadogLogs.logger.debug(`RT - Got ${JSON.stringify(data)} event`);
92830
92830
  this.deviceActivityChanged(data);
92831
92831
  this.parkActivityChanged(data);
92832
92832
  break;