@provoly/hypervisor 1.4.46 → 1.4.48

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.
@@ -40,6 +40,9 @@ export class EventDetailComponent extends SubscriptionnerDirective {
40
40
  set events(events) {
41
41
  this._events = events.filter((ev) => !!ev);
42
42
  this.eventModifications = new Array(this._events.length);
43
+ if (this._events.length === 1) {
44
+ this.opened = [true];
45
+ }
43
46
  this.canCloseSome = this._events.filter((ev) => ev.status !== 'DONE').length > 0;
44
47
  this._events.forEach((ev, idx) => {
45
48
  this.onEquipmentSearch$.next(idx);
@@ -747,4 +750,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
747
750
  }], equipmentName: [{
748
751
  type: Input
749
752
  }] } });
750
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvaHlwZXJ2aXNvci9zcmMvbGliL2V2ZW50L2RldGFpbC9ldmVudC1kZXRhaWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9oeXBlcnZpc29yL3NyYy9saWIvZXZlbnQvZGV0YWlsL2V2ZW50LWRldGFpbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxFQUNULFlBQVksRUFFYixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNuRixPQUFPLEVBQ0wseUJBQXlCLEVBTXpCLHdCQUF3QixFQUN6QixNQUFNLG9CQUFvQixDQUFDO0FBRzVCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFL0QsT0FBTyxFQUFXLGFBQWEsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsWUFBWSxFQUNaLEtBQUssRUFFTCxXQUFXLEVBQ1gsT0FBTyxFQUNQLFNBQVMsRUFBRSxJQUFJLEVBQ2YsVUFBVSxFQUFFLEdBQUcsRUFDaEIsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdEQsT0FBTyxLQUFLLE1BQU0scUJBQXFCLENBQUM7QUFDeEMsT0FBTyxFQUFFLGtDQUFrQyxF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b0I7a0JBSmhDLFNBQVM7K0JBQ0Usa0JBQWtCOzRTQVFsQixjQUFjO3NCQUF2QixNQUFNO2dCQUdHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFFRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBU0UsS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUU2QyxhQUFhO3NCQUEvRCxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBQ3ZDLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFJZ0QsZUFBZTtzQkFBckUsWUFBWTt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBSTNDLFNBQVM7c0JBQWxCLE1BQU07Z0JBUU0sRUFBRTtzQkFBZCxLQUFLO2dCQUtPLE1BQU07c0JBQWxCLEtBQUs7Z0JBNEJPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBS08sbUJBQW1CO3NCQUEvQixLQUFLO2dCQWtDTyxhQUFhO3NCQUF6QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLFxuICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHlwUHJvY2VkdXJlIH0gZnJvbSAnLi4vLi4vbW9kZWwvcHJvY2VkdXJlL2h5cC1wcm9jZWR1cmUuaW50ZXJmYWNlJztcbmltcG9ydCB7IEh5cEV2ZW50RGV0YWlscyB9IGZyb20gJy4uLy4uL21vZGVsL2V2ZW50L2h5cC1ldmVudC1kZXRhaWwuaW50ZXJmYWNlJztcbmltcG9ydCB7IEh5cEV2ZW50Q3JpdGljYWxpdHkgfSBmcm9tICcuLi8uLi9tb2RlbC9ldmVudC9oeXAtZXZlbnQtY3JpdGljYWxpdHkudHlwZSc7XG5pbXBvcnQge1xuICBQcnlEaWFsb2dDb25maXJtQ29tcG9uZW50LFxuICBQcnlEaWFsb2dDb25maXJtRGF0YSxcbiAgUHJ5RGlhbG9nUmVmLFxuICBQcnlEaWFsb2dTZXJ2aWNlLFxuICBQcnlJMThuU2VydmljZSxcbiAgUHJ5SWNvbkNvbXBvbmVudCxcbiAgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlXG59IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBIeXBFcXVpcG1lbnQgfSBmcm9tICcuLi8uLi9tb2RlbC9oeXAtZXF1aXBtZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBFcXVpcG1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc3RvcmUvZXF1aXBtZW50L2VxdWlwbWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IERPTUFJTlMgfSBmcm9tICcuLi8uLi9tb2RlbC9kb21haW5zLmNvbnN0YW50JztcbmltcG9ydCB7IEV2ZW50QWN0aW9ucyB9IGZyb20gJy4uLy4uL3N0b3JlL2V2ZW50L2V2ZW50LmFjdGlvbnMnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gIGRlYm91bmNlVGltZSxcbiAgZGVsYXksXG4gIE9ic2VydmFibGUsXG4gIHNoYXJlUmVwbGF5LFxuICBTdWJqZWN0LFxuICBzd2l0Y2hNYXAsIHRha2UsXG4gIHRocm93RXJyb3IsIHppcFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHBhZElkIH0gZnJvbSAnLi4vLi4vZ2VuZXJhbC9wYWQtaWQuZnVuY3Rpb24nO1xuaW1wb3J0IGVxdWFsIGZyb20gJ2Zhc3QtZGVlcC1lcXVhbC9lczYnO1xuaW1wb3J0IHsgUHJvY2VkdXJlQXNzb2NpYXRpb25Nb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL3Byb2NlZHVyZS1hc3NvY2lhdGlvbi1tb2RhbC9wcm9jZWR1cmUtYXNzb2NpYXRpb24tbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IFByb2NlZHVyZUFjdGlvbnMgfSBmcm9tICcuLi8uLi9zdG9yZS9wcm9jZWR1cmUvcHJvY2VkdXJlLmFjdGlvbnMnO1xuaW1wb3J0IHsgSHlwRXZlbnRDYXRlZ29yeSwgSHlwRXZlbnRTdWJDYXRlZ29yeSB9IGZyb20gJy4uLy4uL21vZGVsL2V2ZW50L2h5cC1ldmVudC1jYXRlZ29yeS50eXBlJztcbmltcG9ydCB7IEh5cENvbW1lbnRzU2VydmljZSB9IGZyb20gJy4uLy4uL3N0b3JlL2NvbW1lbnRzL2NvbW1lbnRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBIeXBTZXJ2aWNlVG9vbHRpcCB9IGZyb20gJy4uLy4uL21vZGVsL2V2ZW50L2h5cC1ldmVudC10b29sdGlwLmludGVyZmFjZSc7XG5pbXBvcnQgeyBIdnlFdmVudERldGFpbHNUb29sdGlwQ29tcG9uZW50IH0gZnJvbSAnLi9ldmVudC1kZXRhaWxzLXRvb2x0aXAuY29tcG9uZW50JztcbmltcG9ydCB7IEV2ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3N0b3JlL2V2ZW50L2V2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgSHZ5RXZlbnRBZGRFdmVudENvbXBvbmVudCB9IGZyb20gJy4vYWRkLWV2ZW50L2FkZC1ldmVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSHlwQWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWwvcHJvY2VkdXJlL2h5cC1hY3Rpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IEh5cENvbW1lbnQgfSBmcm9tICcuLi8uLi9tb2RlbC9jb21tZW50LmludGVyZmFjZSc7XG5pbXBvcnQge0FjdGlvbnMsIG9mVHlwZX0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQge0V2ZW50U2VsZWN0b3JzfSBmcm9tIFwiLi4vLi4vc3RvcmUvZXZlbnQvZXZlbnQuc2VsZWN0b3JzXCI7XG5cbmV4cG9ydCB0eXBlIENoYW5nZVN0YXR1c0NvbnRleHQgPSB7XG4gIGNvbW1lbnQ6IHN0cmluZztcbiAgZXZlbnRzOiBIeXBFdmVudERldGFpbHNbXTtcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIGFsbDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSHlwRXF1aXBtZW50V2l0aE1hdGNoaW5nIGV4dGVuZHMgSHlwRXF1aXBtZW50IHtcbiAgaHRtbDogc3RyaW5nO1xuICBkaXNwbGF5TmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEh5cEV2ZW50RGV0YWlsc1dpdGhNYXRjaGluZyBleHRlbmRzIEh5cEV2ZW50RGV0YWlscyB7XG4gIGh0bWw6IHN0cmluZztcbiAgZGlzcGxheU5hbWU6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaHZ5LWV2ZW50LWRldGFpbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9ldmVudC1kZXRhaWwuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEV2ZW50RGV0YWlsQ29tcG9uZW50IGV4dGVuZHMgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZle1xuICBvcGVuZWQ6IGJvb2xlYW5bXSA9IFtdO1xuICBjcml0aWNhbGl0aWVzID0gSHlwRXZlbnRDcml0aWNhbGl0eS52YWx1ZXM7XG4gIF9ldmVudHM6IEh5cEV2ZW50RGV0YWlsc1tdID0gW107XG4gIGV2ZW50TW9kaWZpY2F0aW9uczogUGFydGlhbDxIeXBFdmVudERldGFpbHM+W10gPSBbXTtcbiAgQE91dHB1dCgpIG1vZGlmaWVkRXZlbnRzID0gbmV3IEV2ZW50RW1pdHRlcjxbUGFydGlhbDxIeXBFdmVudERldGFpbHM+LCBIeXBFdmVudERldGFpbHNdW10+KCk7XG4gIF9wcm9jZWR1cmU/OiBIeXBQcm9jZWR1cmU7XG4gIHByb2NlZHVyZU1vZGlmaWNhdGlvbnM6IFBhcnRpYWw8SHlwUHJvY2VkdXJlPiA9IHt9O1xuICBAT3V0cHV0KCkgbW9kaWZpZWRQcm9jZWR1cmUgPSBuZXcgRXZlbnRFbWl0dGVyPFtQYXJ0aWFsPEh5cFByb2NlZHVyZT4sIEh5cFByb2NlZHVyZV0gfCB1bmRlZmluZWQ+KCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBET01BSU5TID0gRE9NQUlOUy52YWx1ZXM7XG4gIEBPdXRwdXQoKSBldmVudEVycm9ycyA9IG5ldyBFdmVudEVtaXR0ZXI8eyBmaWVsZDogc3RyaW5nOyBjb2RlOiBzdHJpbmcgfVtdW10+KCk7XG4gIEBPdXRwdXQoKSBhZGRlZEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxIeXBFdmVudERldGFpbHM+KCk7XG4gIGVycm9yczogeyBmaWVsZDogc3RyaW5nOyBjb2RlOiBzdHJpbmcgfVtdW10gPSBbXTtcbiAgY2FuQ2xvc2VTb21lID0gZmFsc2U7XG4gIGNoYW5nZVN0YXR1c0NvbnRleHQ6IENoYW5nZVN0YXR1c0NvbnRleHQgPSB7XG4gICAgY29tbWVudDogJycsXG4gICAgZXZlbnRzOiBbXSxcbiAgICBzdGF0dXM6ICdET05FJyxcbiAgICBhbGw6IGZhbHNlXG4gIH07XG4gIEBJbnB1dCgpIHRpdGxlPzogc3RyaW5nO1xuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiB8IG51bGwgPSBmYWxzZTtcbiAgQElucHV0KCkgcmVhZG9ubHlQcm9jZWR1cmU6IGJvb2xlYW4gfCBudWxsID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVuYWJsZUVkaXRBY3Rpb25zOiBib29sZWFuIHwgbnVsbCA9IGZhbHNlO1xuICBASW5wdXQoKSByZWFkT25seUNvbW1lbnQgPSBmYWxzZTtcbiAgb3ZlcmxheVJlZj86IE92ZXJsYXlSZWY7XG4gIEBWaWV3Q2hpbGQoJ2NvbmZpcm1EaWFsb2cnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIGNvbmZpcm1EaWFsb2chOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAT3V0cHV0KCkgY29tZmlybURpYWxvZ09wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q2hhbmdlU3RhdHVzQ29udGV4dD4oKTtcbiAgb25FcXVpcG1lbnRTZWFyY2gkID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuICBlcXVpcG1lbnRTZWxlY3RWYWx1ZTogKHN0cmluZyB8IEh5cEVxdWlwbWVudCB8IHVuZGVmaW5lZClbXSA9IFtdO1xuICBlcXVpcG1lbnRzJDogT2JzZXJ2YWJsZTxIeXBFcXVpcG1lbnRXaXRoTWF0Y2hpbmdbXT47XG4gIEBWaWV3Q2hpbGRyZW4oJ2RldGFpbEhvdmVySWNvbicsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBkZXRhaWxIb3Zlckljb24hOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxQcnlJY29uQ29tcG9uZW50Pj47XG4gIG9uRXZlbnRTZWFyY2gkID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuICBldmVudFNlbGVjdFZhbHVlOiAoc3RyaW5nIHwgSHlwRXZlbnREZXRhaWxzIHwgdW5kZWZpbmVkKVtdID0gW107XG4gIGV2ZW50cyQ6IE9ic2VydmFibGU8SHlwRXZlbnREZXRhaWxzV2l0aE1hdGNoaW5nW10+O1xuICBAT3V0cHV0KCkgY29tbWVudGVkID0gbmV3IEV2ZW50RW1pdHRlcjxcbiAgICB8IHsgZXZlbnQ6IEh5cEV2ZW50RGV0YWlsczsgY29tbWVudHM6IEh5cENvbW1lbnRbXSB9W11cbiAgICB8IHtcbiAgICAgICAgYWN0aW9uOiBIeXBBY3Rpb247XG4gICAgICAgIGNvbW1lbnRzOiBIeXBDb21tZW50W107XG4gICAgICB9XG4gID4oKTtcbiAgcHJvZmlsZTogeyBzdWI6IHN0cmluZyB8IHVuZGVmaW5lZCwgdXNlck5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCB9IHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIHNldCBtZShtZTogeyBzdWI6IHN0cmluZyB8IHVuZGVmaW5lZCwgdXNlck5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCB9IHwgbnVsbCkge1xuICAgIHRoaXMucHJvZmlsZSA9IG1lO1xuICAgIHRoaXMuc2V0Q3JlYXRvckZvckV2ZW50cygpO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGV2ZW50cyhldmVudHM6IEh5cEV2ZW50RGV0YWlsc1tdKSB7XG4gICAgdGhpcy5fZXZlbnRzID0gZXZlbnRzLmZpbHRlcigoZXYpID0+ICEhZXYpO1xuICAgIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zID0gbmV3IEFycmF5KHRoaXMuX2V2ZW50cy5sZW5ndGgpO1xuICAgIHRoaXMuY2FuQ2xvc2VTb21lID0gdGhpcy5fZXZlbnRzLmZpbHRlcigoZXYpID0+IGV2LnN0YXR1cyAhPT0gJ0RPTkUnKS5sZW5ndGggPiAwO1xuICAgIHRoaXMuX2V2ZW50cy5mb3JFYWNoKChldiwgaWR4KSA9PiB7XG4gICAgICB0aGlzLm9uRXF1aXBtZW50U2VhcmNoJC5uZXh0KGlkeCk7XG4gICAgICBpZiAoZXYuZXF1aXBtZW50ICYmIGV2LmVxdWlwbWVudC5pZCAmJiBldi5lcXVpcG1lbnQuaWQubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRXF1aXBtZW50Q2hhbmdlKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC4uLmV2LmVxdWlwbWVudCxcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBgJHtldi5lcXVpcG1lbnQubmFtZX0gLSAke3RoaXMuaTE4blNlcnZpY2UuaW5zdGFudCgnQGh2eS5ldmVudC5mYW1pbHkuJyArIGV2LmVxdWlwbWVudC5mYW1pbHkpfWBcbiAgICAgICAgICB9IGFzIHVua25vd24gYXMgSHlwRXF1aXBtZW50V2l0aE1hdGNoaW5nLFxuICAgICAgICAgIGlkeFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKGV2LnBhcmVudCAmJiBldi5wYXJlbnQuaWQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudENoYW5nZShcbiAgICAgICAgICB7XG4gICAgICAgICAgICAuLi5ldi5wYXJlbnQsXG4gICAgICAgICAgICBkaXNwbGF5TmFtZTogYCR7cGFkSWQuZm4oZXYucGFyZW50LmlkKX0gLSAke2V2LnBhcmVudC5uYW1lfWBcbiAgICAgICAgICB9IGFzIHVua25vd24gYXMgSHlwRXZlbnREZXRhaWxzV2l0aE1hdGNoaW5nLFxuICAgICAgICAgIGlkeFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuc2V0Q3JlYXRvckZvckV2ZW50cygpO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHByb2NlZHVyZShwcm9jZWR1cmU6IEh5cFByb2NlZHVyZSkge1xuICAgIHRoaXMuX3Byb2NlZHVyZSA9IHByb2NlZHVyZTtcbiAgICB0aGlzLnByb2NlZHVyZU1vZGlmaWNhdGlvbnMgPSB7fTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBjYW5jZWxNb2RpZmljYXRpb25zKGV2dDogYW55KSB7XG4gICAgdGhpcy5lcXVpcG1lbnRTZWxlY3RWYWx1ZSA9IHRoaXMuZXF1aXBtZW50U2VsZWN0VmFsdWUubWFwKChlcXVpcG1lbnQsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBpbml0aWFsRXF1aXBtZW50ID0gdGhpcy5fZXZlbnRzW2luZGV4XS5lcXVpcG1lbnQ7XG4gICAgICBpZihpbml0aWFsRXF1aXBtZW50KXtcbiAgICAgICAgY29uc3QgcmVnZXggPSB0aGlzLmdldENvbWJvQm94UmVnRXhwKGluaXRpYWxFcXVpcG1lbnQubmFtZSk7XG4gICAgICAgIGNvbnN0IGh0bWwgPSBgJHtpbml0aWFsRXF1aXBtZW50Lm5hbWV9IC0gJHt0aGlzLmkxOG5TZXJ2aWNlLmluc3RhbnQoJ0BodnkuZXZlbnQuZmFtaWx5LicgKyBpbml0aWFsRXF1aXBtZW50LmZhbWlseSl9YDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi4gaW5pdGlhbEVxdWlwbWVudCxcbiAgICAgICAgICBodG1sOiBodG1sLnJlcGxhY2VBbGwocmVnZXgsIChtYXRjaGVkOiBzdHJpbmcsIGNhcHR1cmUxOiBzdHJpbmcpID0+IGA8Yj4ke2NhcHR1cmUxfTwvYj5gKSxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogaHRtbFxuICAgICAgICB9IGFzIEh5cEVxdWlwbWVudFdpdGhNYXRjaGluZ1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH0pXG4gICAgdGhpcy5ldmVudFNlbGVjdFZhbHVlID0gdGhpcy5ldmVudFNlbGVjdFZhbHVlLm1hcCgoZXZlbnRQYXJlbnQsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBpbml0aWFsUGFyZW50ID0gdGhpcy5fZXZlbnRzW2luZGV4XS5wYXJlbnQ7XG4gICAgICBpZihpbml0aWFsUGFyZW50KXtcbiAgICAgICAgY29uc3QgcmVnZXggPSB0aGlzLmdldENvbWJvQm94UmVnRXhwKGluaXRpYWxQYXJlbnQubmFtZSk7XG4gICAgICAgIGNvbnN0IGh0bWwgPSBgJHtwYWRJZC5mbihpbml0aWFsUGFyZW50LmlkKX0gLSAke2luaXRpYWxQYXJlbnQubmFtZX1gO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmluaXRpYWxQYXJlbnQsXG4gICAgICAgICAgaHRtbDogaHRtbC5yZXBsYWNlQWxsKHJlZ2V4LCAobWF0Y2hlZDogc3RyaW5nLCBjYXB0dXJlMTogc3RyaW5nKSA9PiBgPGI+JHtjYXB0dXJlMX08L2I+YCksXG4gICAgICAgICAgZGlzcGxheU5hbWU6IGh0bWxcbiAgICAgICAgfSBhcyBIeXBFdmVudERldGFpbHNXaXRoTWF0Y2hpbmdcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgIH1cbiAgICB9KVxuICAgIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zID0gbmV3IEFycmF5KHRoaXMuX2V2ZW50cy5sZW5ndGgpO1xuICAgIHRoaXMucHJvY2VkdXJlTW9kaWZpY2F0aW9ucyA9IHt9O1xuICAgIHRoaXMuX291dHB1dE1vZGlmaWNhdGlvbnMoKTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBlcXVpcG1lbnROYW1lKHJlcXVlc3Q6IHsgaW5kZXg6IG51bWJlcjsgZXF1aXBtZW50TmFtZT86IHN0cmluZyB9KSB7XG4gICAgaWYgKHJlcXVlc3QuZXF1aXBtZW50TmFtZSkge1xuICAgICAgY29uc3QgaW5kID0gcmVxdWVzdC5lcXVpcG1lbnROYW1lLmxhc3RJbmRleE9mKCctJyk7XG4gICAgICBjb25zdCBlcXVpcE5hbWUgPSByZXF1ZXN0LmVxdWlwbWVudE5hbWUuc2xpY2UoMCwgaW5kISAtIDEpLnRvVXBwZXJDYXNlKCk7XG4gICAgICB0aGlzLmVxdWlwbWVudFNlcnZpY2UuZmluZEJ5TmFtZShlcXVpcE5hbWUpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgIGNvbnN0IGVxdWlwID0ge1xuICAgICAgICAgIGlkOiByZXN1bHQuaWQsXG4gICAgICAgICAgbmFtZTogcmVzdWx0Lm5hbWUsXG4gICAgICAgICAgZW50aXR5OiByZXN1bHQuZW50aXR5LFxuICAgICAgICAgIGZhbWlseTogcmVzdWx0LmZhbWlseSxcbiAgICAgICAgICBkb21haW46IHJlc3VsdC5kb21haW4sXG4gICAgICAgICAgZGlzcGxheU5hbWU6IHJlcXVlc3QuZXF1aXBtZW50TmFtZVxuICAgICAgICB9IGFzIEh5cEVxdWlwbWVudFdpdGhNYXRjaGluZ1xuICAgICAgICB0aGlzLnNlbGVjdGVkRXF1aXBtZW50Q2hhbmdlKGVxdWlwLCByZXF1ZXN0LmluZGV4KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdGVkRXF1aXBtZW50ID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlcXVpcG1lbnRTZXJ2aWNlOiBFcXVpcG1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlLFxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBpMThuU2VydmljZTogUHJ5STE4blNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcnlEaWFsb2c6IFByeURpYWxvZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb21tZW50c1NlcnZpY2U6IEh5cENvbW1lbnRzU2VydmljZSxcbiAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWN0aW9ucyQ6IEFjdGlvbnNcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoRXZlbnRBY3Rpb25zLnN0YXR1cyksXG4gICAgICAgIGRlbGF5KDEwMDApXG4gICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IHJlc3VsdCA9PiB7XG4gICAgICAgICAgICBpZihyZXN1bHQuZXZlbnQgJiYgcmVzdWx0LmV2ZW50LmlkKSB7XG4gICAgICAgICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLmdldChyZXN1bHQuZXZlbnQuaWQpLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21tZW50c1NlcnZpY2UuZ2V0KHJlc3VsdC5ldmVudCEuaWQsICdldmVudHMnKVxuICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoY29tbWVudHMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tZW50ZWQubmV4dChbeyBldmVudCwgY29tbWVudHMgfV0pO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9IGVsc2UgaWYocmVzdWx0LnByb2NlZHVyZSAmJiByZXN1bHQudGFyZ2V0U3RhdHVzID09PSAnRE9ORScpe1xuICAgICAgICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChFdmVudFNlbGVjdG9ycy5kZXRhaWxzKS5waXBlKFxuICAgICAgICAgICAgICAgIHRha2UoMSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShkZXRhaWxzID0+IHtcbiAgICAgICAgICAgICAgICBpZihkZXRhaWxzLnByb2NlZHVyZSAmJiBkZXRhaWxzLnByb2NlZHVyZS5ldmVudHMpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2FuQ2xvc2VTb21lID0gISFkZXRhaWxzLnByb2NlZHVyZS5ldmVudHMuZmluZChldmVudCA9PiBldmVudC5zdGF0dXMgIT09ICdET05FJyk7XG4gICAgICAgICAgICAgICAgICBpZighdGhpcy5jYW5DbG9zZVNvbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXZlbnRzLmZvckVhY2goZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0YXR1cyA9ICdET05FJztcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKEV2ZW50QWN0aW9ucy5zZWxlY3QoeyBpZHM6IFtdLCBjdW11bGF0aXZlOiBmYWxzZSB9KSk7XG4gICAgdGhpcy5lcXVpcG1lbnRzJCA9IHRoaXMub25FcXVpcG1lbnRTZWFyY2gkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZXF1aXBtZW50U2VsZWN0VmFsdWVbaW5kZXhdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmVxdWlwbWVudFNlbGVjdFZhbHVlW2luZGV4XSA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIGxldCBzZWFyY2g7XG4gICAgICAgIGlmKCB0eXBlb2YgdGhpcy5lcXVpcG1lbnRTZWxlY3RWYWx1ZVtpbmRleF0gPT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgKHRoaXMuZXF1aXBtZW50U2VsZWN0VmFsdWVbaW5kZXhdIGFzIHN0cmluZykubGVuZ3RoID4gMil7XG4gICAgICAgICAgY29uc3QgZXF1aXBWYWx1ZSA9IHRoaXMuZXF1aXBtZW50U2VsZWN0VmFsdWVbaW5kZXhdIGFzIHN0cmluZztcbiAgICAgICAgICBjb25zdCBmaXJzdEluZGV4ID0gZXF1aXBWYWx1ZS5pbmRleE9mKCctJyk7XG4gICAgICAgICAgY29uc3QgbGFzdEluZGV4ID0gZXF1aXBWYWx1ZS5sYXN0SW5kZXhPZignLScpO1xuICAgICAgICAgIGlmKGZpcnN0SW5kZXggIT09IC0xICYmIGxhc3RJbmRleCAhPT0gZmlyc3RJbmRleCl7XG4gICAgICAgICAgICBzZWFyY2ggPSBlcXVpcFZhbHVlLnN1YnN0cmluZygwLCBsYXN0SW5kZXgtMSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlYXJjaCA9IGVxdWlwVmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNlYXJjaCA9ICh0aGlzLmVxdWlwbWVudFNlbGVjdFZhbHVlW2luZGV4XSBhcyBIeXBFcXVpcG1lbnRXaXRoTWF0Y2hpbmcpLm5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZXF1aXBtZW50U2VydmljZS5zZWFyY2goc2VhcmNoKS5waXBlKFxuICAgICAgICAgIG1hcCgoZXF1aXBtZW50cykgPT4ge1xuICAgICAgICAgICAgZXF1aXBtZW50cyA9IHRoaXMuZmlsdGVyRXF1aXBtZW50c0lmU2VsZWN0ZWQoaW5kZXgsIHNlYXJjaCwgZXF1aXBtZW50cyk7XG4gICAgICAgICAgICByZXR1cm4gZXF1aXBtZW50cy5tYXAoKGVxdWlwbWVudCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCByZWdleCA9IHRoaXMuZ2V0Q29tYm9Cb3hSZWdFeHAoc2VhcmNoKTtcbiAgICAgICAgICAgICAgY29uc3QgaHRtbCA9IGAke2VxdWlwbWVudC5uYW1lfSAtICR7dGhpcy5pMThuU2VydmljZS5pbnN0YW50KCdAaHZ5LmV2ZW50LmZhbWlseS4nICsgZXF1aXBtZW50LmZhbWlseSl9YDtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5lcXVpcG1lbnQsXG4gICAgICAgICAgICAgICAgaHRtbDogaHRtbC5yZXBsYWNlQWxsKHJlZ2V4LCAobWF0Y2hlZDogc3RyaW5nLCBjYXB0dXJlMTogc3RyaW5nKSA9PiBgPGI+JHtjYXB0dXJlMX08L2I+YCksXG4gICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6IGh0bWxcbiAgICAgICAgICAgICAgfSBhcyBIeXBFcXVpcG1lbnRXaXRoTWF0Y2hpbmc7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcignU2VhcmNoIEVxdWlwbWVudCBwcm9ibGVtJykpKSxcbiAgICAgIHNoYXJlUmVwbGF5KClcbiAgICApO1xuXG4gICAgdGhpcy5ldmVudHMkID0gdGhpcy5vbkV2ZW50U2VhcmNoJC5waXBlKHN0YXJ0V2l0aCgpLCBkZWJvdW5jZVRpbWUoNTAwKSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBzZWFyY2ggPVxuICAgICAgICAgIHR5cGVvZiB0aGlzLmV2ZW50U2VsZWN0VmFsdWVbaW5kZXhdID09PSAnc3RyaW5nJyAmJiAodGhpcy5ldmVudFNlbGVjdFZhbHVlW2luZGV4XSBhcyBzdHJpbmcpLmxlbmd0aCA+IDJcbiAgICAgICAgICAgID8gKHRoaXMuZXZlbnRTZWxlY3RWYWx1ZVtpbmRleF0gYXMgc3RyaW5nKVxuICAgICAgICAgICAgOiAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIHRoaXMuZXZlbnRTZWxlY3RWYWx1ZVtpbmRleF1cbiAgICAgICAgICAgICAgPyBwYWRJZC5mbigodGhpcy5ldmVudFNlbGVjdFZhbHVlW2luZGV4XSBhcyBIeXBFdmVudERldGFpbHMpLmlkKVxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXZlbnRTZXJ2aWNlLnNlYXJjaChzZWFyY2gsIFsnbmFtZScsICdpZCddKS5waXBlKFxuICAgICAgICAgIG1hcCgoZXZlbnRzKSA9PlxuICAgICAgICAgICAgZXZlbnRzLm1hcCgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgcmVnZXggPSB0aGlzLmdldENvbWJvQm94UmVnRXhwKHNlYXJjaCk7XG4gICAgICAgICAgICAgIGNvbnN0IGh0bWwgPSBgJHtwYWRJZC5mbihldmVudC5pZCl9IC0gJHtldmVudC5uYW1lfWA7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uZXZlbnQsXG4gICAgICAgICAgICAgICAgaHRtbDogaHRtbC5yZXBsYWNlQWxsKHJlZ2V4LCAobWF0Y2hlZDogc3RyaW5nLCBjYXB0dXJlMTogc3RyaW5nKSA9PiBgPGI+JHtjYXB0dXJlMX08L2I+YCksXG4gICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6IGh0bWxcbiAgICAgICAgICAgICAgfSBhcyBIeXBFdmVudERldGFpbHNXaXRoTWF0Y2hpbmc7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcignU2VhcmNoIEVxdWlwbWVudCBwcm9ibGVtJykpO1xuICAgICAgfSksXG4gICAgICBzaGFyZVJlcGxheSgpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q3JlYXRvckZvckV2ZW50cygpe1xuICAgIHRoaXMuX2V2ZW50cyA9IHRoaXMuX2V2ZW50cy5tYXAoKGV2ZSkgPT4ge1xuICAgICAgICByZXR1cm4gey4uLmV2ZSxcbiAgICAgICAgICBjcmVhdG9yOiBldmUuY3JlYXRvciA/IGV2ZS5jcmVhdG9yIDogZXZlLmV4dGVybmFsU291cmNlUmVmID09PSAnSHlwZXJ2aXNldXInID8gdGhpcy5wcm9maWxlPy51c2VyTmFtZSBhcyBzdHJpbmcgOiAnLS0nXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApXG4gIH1cblxuICBwcml2YXRlIGdldENvbWJvQm94UmVnRXhwKHNlYXJjaDogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIFJlZ0V4cChgKCR7c2VhcmNofSlgID8/ICcoLy0vLS8pJywgJ2dpZCcpO1xuICB9XG5cbiAgZmlsdGVyRXF1aXBtZW50c0lmU2VsZWN0ZWQoaW5kZXg6IG51bWJlciwgc2VhcmNoOiBzdHJpbmcsIGVxdWlwbWVudHM6IEh5cEVxdWlwbWVudFtdKXtcbiAgICBsZXQgbmFtZTtcbiAgICBsZXQgZmFtaWx5O1xuICAgIGxldCBzZWxlY3RlZE5hbWU7XG4gICAgbGV0IHNlbGVjdGVkRmFtaWx5O1xuICAgIC8vIGNyZWF0ZVxuICAgIGlmKHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XSAmJiB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0uZXF1aXBtZW50KSB7XG4gICAgICBjb25zdCBlcXVpcG1lbnQgPSB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0uZXF1aXBtZW50IGFzIEh5cEVxdWlwbWVudFdpdGhNYXRjaGluZztcbiAgICAgIG5hbWUgPSBlcXVpcG1lbnQ/Lm5hbWU7XG4gICAgICBjb25zdCBkaXNwbGF5TmFtZSA9IGVxdWlwbWVudD8uZGlzcGxheU5hbWU7XG4gICAgICBjb25zdCBpbmQgPSBkaXNwbGF5TmFtZT8ubGFzdEluZGV4T2YoJy0nKTtcbiAgICAgIGZhbWlseSA9IGRpc3BsYXlOYW1lPy5zbGljZShpbmQhICsgMikudG9VcHBlckNhc2UoKTtcbiAgICAgIC8vIHVwZGF0ZVxuICAgIH0gZWxzZSBpZiAodGhpcy5fZXZlbnRzICYmIHRoaXMuX2V2ZW50c1tpbmRleF0gJiYgdGhpcy5fZXZlbnRzW2luZGV4XS5lcXVpcG1lbnQpIHtcbiAgICAgIG5hbWUgPSB0aGlzLl9ldmVudHNbaW5kZXhdLmVxdWlwbWVudC5uYW1lO1xuICAgICAgZmFtaWx5ID0gdGhpcy5fZXZlbnRzW2luZGV4XS5lcXVpcG1lbnQuZmFtaWx5O1xuICAgICAgLy8gbGUgZm9ybWF0IGZhbWlseSBlc3QgZGUgc3R5bGUgRVBfT1VWUkFHRSBvdSBFUF9GT1lFUl9MVU1JTkVVWCBvdSBWUF9DQU1cbiAgICAgIC8vIHBvdXIgcG91dm9pciBmYWlyZSBsYSBjb21wYXJhaXNvbiwgaWwgZmF1dCBlbmxldmVyIGxlIHByw6lmaXhlXG4gICAgICBjb25zdCBpbmQgPSBmYW1pbHkuaW5kZXhPZignXycpO1xuICAgICAgZmFtaWx5ID0gZmFtaWx5LnNsaWNlKGluZCEgKyAxKTtcbiAgICAgIGZhbWlseSA9IGZhbWlseS5yZXBsYWNlQWxsKCdfJywnICcpO1xuICAgICAgLy8gaWNpIG9uIHJlbXBsYWNlIENBTSBwYXIgQ0FNw4lSQSBjYXIgZW4gY2FzIGRlIGNvbWJvIGJveCBvdXZlcnRlIHB1aXMgZmVybcOpZSBhdmVjXG4gICAgICAvLyB1biDDqXF1aXBlbWVudCBzw6lsZWN0aW9ubsOpLCBsYSBmYW1pbGxlIHNlcmEgY2Ftw6lyYSBldCBwYXMgY2FtXG4gICAgICBpZiAoZmFtaWx5ID09PSAnQ0FNJyl7XG4gICAgICAgIGZhbWlseSA9ICdDQU3DiVJBJztcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gw6lxdWlwZW1lbnQgc8OpbGVjdGlvbm7DqSAxIGZvaXMgZGFucyBsYSBjb21ibyBib3hcbiAgICBpZih0eXBlb2YgdGhpcy5lcXVpcG1lbnRTZWxlY3RWYWx1ZVtpbmRleF0gPT09ICdvYmplY3QnKXtcbiAgICAgIGNvbnN0IHNlbGVjdGVkRXF1aXBtZW50ID0gdGhpcy5lcXVpcG1lbnRTZWxlY3RWYWx1ZVtpbmRleF0gYXMgSHlwRXF1aXBtZW50V2l0aE1hdGNoaW5nXG4gICAgICBzZWxlY3RlZE5hbWUgPSBzZWxlY3RlZEVxdWlwbWVudC5uYW1lO1xuICAgICAgY29uc3QgZGlzcGxheU5hbWUgPSBzZWxlY3RlZEVxdWlwbWVudC5kaXNwbGF5TmFtZTtcbiAgICAgIGNvbnN0IGluZCA9IGRpc3BsYXlOYW1lLmxhc3RJbmRleE9mKCctJyk7XG4gICAgICBzZWxlY3RlZEZhbWlseSA9IGRpc3BsYXlOYW1lPy5zbGljZShpbmQhICsgMikudG9VcHBlckNhc2UoKTtcbiAgICAgIC8vIGNvbWJvIGJveCBvdXZlcnRlIHB1aXMgZmVybcOpZSBhdmVjIHVuIMOpcXVpcGVtZW50IHPDqWxlY3Rpb25uw6lcbiAgICB9IGVsc2UgaWYodHlwZW9mIHRoaXMuZXF1aXBtZW50U2VsZWN0VmFsdWVbaW5kZXhdID09PSAnc3RyaW5nJyl7XG4gICAgICBsZXQgZnVsbE5hbWUgPSB0aGlzLmVxdWlwbWVudFNlbGVjdFZhbHVlW2luZGV4XSBhcyBzdHJpbmc7XG4gICAgICBjb25zdCBpbmQgPSBmdWxsTmFtZS5sYXN0SW5kZXhPZignLScpO1xuICAgICAgc2VsZWN0ZWRGYW1pbHkgPSBmdWxsTmFtZS5zbGljZShpbmQhICsgMikudG9VcHBlckNhc2UoKTtcbiAgICAgIHNlbGVjdGVkTmFtZSA9IGZ1bGxOYW1lLnNsaWNlKDAsIGluZCEgLSAxKS50b1VwcGVyQ2FzZSgpO1xuICAgIH1cblxuICAgIGlmKHNlbGVjdGVkTmFtZSA9PT0gbmFtZSAmJiBzZWxlY3RlZEZhbWlseSA9PT0gZmFtaWx5KSB7XG4gICAgICBlcXVpcG1lbnRzID0gZXF1aXBtZW50cy5maWx0ZXIoZXF1aXAgPT4gZXF1aXAubmFtZSA9PT0gc2VhcmNoKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFcXVpcG1lbnQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRXF1aXBtZW50ID0gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBlcXVpcG1lbnRzO1xuICB9XG5cbiAgZ2V0IG1lKCkge1xuICAgIHJldHVybiB0aGlzLnByb2ZpbGU7XG4gIH1cblxuICBnZXQgZXZlbnRzKCkge1xuICAgIHJldHVybiB0aGlzLl9ldmVudHMubWFwKChldnQsIGlkeCkgPT4gKHsgLi4uZXZ0LCAuLi4odGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaWR4XSA/PyB7fSkgfSkpO1xuICB9XG5cbiAgZ2V0IGNhbkFzc29jaWF0ZVByb2NlZHVyZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZXZlbnRzLmV2ZXJ5KChldnQpID0+IGV2dC5zdGF0dXMgPT09ICdORVcnICYmIGV2dC5pZCAhPT0gLTEpO1xuICB9XG5cbiAgZ2V0IHByb2NlZHVyZSgpOiBIeXBQcm9jZWR1cmUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9wcm9jZWR1cmVcbiAgICAgID8ge1xuICAgICAgICAgIC4uLnRoaXMuX3Byb2NlZHVyZSxcbiAgICAgICAgICAuLi4odGhpcy5wcm9jZWR1cmVNb2RpZmljYXRpb25zID8/IHt9KSxcbiAgICAgICAgICBldmVudHM6IHRoaXMuZXZlbnRzXG4gICAgICAgIH1cbiAgICAgIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0IGNsb3NlQ29tbWVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByb2NlZHVyZT8uY2xvc2VDb21tZW50ID8/ICcnO1xuICB9XG5cbiAgdG9nZ2xlKGk6IG51bWJlcikge1xuICAgIHRoaXMub3BlbmVkW2ldID0gIXRoaXMub3BlbmVkW2ldO1xuICB9XG5cbiAgbW9kaWZ5RXZlbnQoaW5kZXg6IG51bWJlciwgcHJvcDogc3RyaW5nLCAkZXZlbnQ6IEV2ZW50IHwgc3RyaW5nKSB7XG4gICAgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdID0gdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdID8/IHt9IGFzIFBhcnRpYWw8SHlwRXZlbnREZXRhaWxzPjtcbiAgICBpZihwcm9wID09PSAnY2F0ZWdvcnknKSB7XG4gICAgICBkZWxldGUgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdLnN1YkNhdGVnb3J5O1xuICAgICAgaWYoJGV2ZW50ID09PSAnQU5PTUFMWScpIHtcbiAgICAgICAgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdLnN1YkNhdGVnb3J5ID0gJ05PTkUnO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGlzRGF0ZSA9IHByb3AuaW5kZXhPZignRGF0ZScpID4gLTE7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IG5ld1ZhbHVlID0gJGV2ZW50IGluc3RhbmNlb2YgRXZlbnQgPyAkZXZlbnQudGFyZ2V0Py52YWx1ZSA6ICRldmVudDtcblxuICAgIGNvbnN0IGNvcnJlY3RlZFZhbHVlID0gIWlzRGF0ZSA/IG5ld1ZhbHVlIDogdGhpcy5jb252ZXJ0RGF0ZShuZXdWYWx1ZSk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmICh0aGlzLl9ldmVudHNbaW5kZXhdW3Byb3BdICE9PSBjb3JyZWN0ZWRWYWx1ZSkge1xuICAgICAgaWYgKCF0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0pIHtcbiAgICAgICAgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdID0ge307XG4gICAgICB9XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF1bcHJvcF0gPSBjb3JyZWN0ZWRWYWx1ZTtcblxuICAgICAgdGhpcy5fb3V0cHV0TW9kaWZpY2F0aW9ucygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoISF0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0pIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBkZWxldGUgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdW3Byb3BdO1xuICAgICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBkZWxldGUgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX291dHB1dE1vZGlmaWNhdGlvbnMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhY2Nlc3MoZXZlbnQ6IEh5cEV2ZW50RGV0YWlscykge1xuICAgIGNvbnN0IHJlYWRvbmx5ID1cbiAgICAgIHRoaXMucmVhZG9ubHkgfHxcbiAgICAgIGV2ZW50LnN0YXR1cyA9PT0gJ0RPTkUnIHx8XG4gICAgICAoWydMSU1JVCcsICdPVVRPRk9SREVSJywgJ0FOT01BTFknXS5pbmNsdWRlcyhldmVudC5jYXRlZ29yeSkgJiYgZXZlbnQuZXh0ZXJuYWxTb3VyY2VSZWYgIT09ICdIeXBlcnZpc2V1cicpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHJlYWRvbmx5LFxuICAgICAgY2F0ZWdvcnk6IHJlYWRvbmx5LFxuICAgICAgc3ViQ2F0ZWdvcnk6IHJlYWRvbmx5LFxuICAgICAgY3JpdGljYWxpdHk6IGV2ZW50LnN0YXR1cyA9PT0gJ0RPTkUnLFxuICAgICAgZGVzY3JpcHRpb246IHJlYWRvbmx5LFxuICAgICAgYWRkcmVzczogcmVhZG9ubHksXG4gICAgICBzb3VyY2U6IHRydWUsXG4gICAgICBkb21haW46IGV2ZW50LmV4dGVybmFsU291cmNlUmVmID09PSAnV2ludGljcycgfHwgZXZlbnQuZXh0ZXJuYWxTb3VyY2VSZWYgPT09ICdDaXR5bGlueCcgfHwgZXZlbnQuc3RhdHVzID09PSAnRE9ORScsXG4gICAgICBlcU5hbWU6IGV2ZW50LmV4dGVybmFsU291cmNlUmVmID09PSAnV2ludGljcycgfHwgZXZlbnQuZXh0ZXJuYWxTb3VyY2VSZWYgPT09ICdDaXR5bGlueCcgfHwgZXZlbnQuc3RhdHVzID09PSAnRE9ORScsXG4gICAgICBlcUVudGl0eTogcmVhZG9ubHksXG4gICAgICBzdGFydERhdGU6IGV2ZW50LnN0YXR1cyA9PT0gJ0RPTkUnLFxuICAgICAgZW5kRGF0ZTogZXZlbnQuc3RhdHVzID09PSAnRE9ORScsXG4gICAgICBwYXJlbnQ6IGV2ZW50LnN0YXR1cyA9PT0gJ0RPTkUnXG4gICAgfTtcbiAgfVxuXG4gICBfb3V0cHV0TW9kaWZpY2F0aW9ucygpIHtcbiAgICB0aGlzLnZhbGlkYXRlRXZlbnRzKHRoaXMuZXZlbnRzKTtcbiAgICB0aGlzLm1vZGlmaWVkRXZlbnRzLm5leHQodGhpcy5ldmVudHMubWFwKChldiwgaWR4KSA9PiBbdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaWR4XSwgZXZdKSk7XG4gICAgdGhpcy5tb2RpZmllZFByb2NlZHVyZS5uZXh0KHRoaXMucHJvY2VkdXJlID8gW3RoaXMucHJvY2VkdXJlTW9kaWZpY2F0aW9ucywgdGhpcy5wcm9jZWR1cmUhXSA6IHVuZGVmaW5lZCk7XG4gIH1cblxuICB2YWxpZGF0ZUV2ZW50cyhldmVudHM6IEh5cEV2ZW50RGV0YWlsc1tdKSB7XG4gICAgdGhpcy5lcnJvcnMgPSBbXTtcbiAgICBldmVudHMuZm9yRWFjaCgoZXZlbnQsIGlkeCkgPT4ge1xuICAgICAgY29uc3QgZXZlbnRFcnJvcnMgPSBbXTtcbiAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cCggL15cXHMrJC8pO1xuICAgICAgaWYgKCFldmVudC5uYW1lIHx8IGV2ZW50Lm5hbWUubGVuZ3RoID09PSAwIHx8IHJlZ2V4LnRlc3QoZXZlbnQubmFtZSkpIHtcbiAgICAgICAgZXZlbnRFcnJvcnMucHVzaCh7IGZpZWxkOiAnbmFtZScsIGNvZGU6ICdyZXF1aXJlZCcgfSk7XG4gICAgICB9XG4gICAgICBpZiAoIWV2ZW50LmNhdGVnb3J5IHx8IGV2ZW50LmNhdGVnb3J5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBldmVudEVycm9ycy5wdXNoKHsgZmllbGQ6ICdjYXRlZ29yeScsIGNvZGU6ICdyZXF1aXJlZCcgfSk7XG4gICAgICB9XG4gICAgICBpZiAoIWV2ZW50LmNyaXRpY2FsaXR5IHx8IGV2ZW50LmNyaXRpY2FsaXR5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBldmVudEVycm9ycy5wdXNoKHsgZmllbGQ6ICdjcml0aWNhbGl0eScsIGNvZGU6ICdyZXF1aXJlZCcgfSk7XG4gICAgICB9XG4gICAgICBpZiAoIWV2ZW50LmRlc2NyaXB0aW9uIHx8IGV2ZW50LmRlc2NyaXB0aW9uLmxlbmd0aCA9PT0gMCB8fCByZWdleC50ZXN0KGV2ZW50LmRlc2NyaXB0aW9uKSkge1xuICAgICAgICBldmVudEVycm9ycy5wdXNoKHsgZmllbGQ6ICdkZXNjcmlwdGlvbicsIGNvZGU6ICdyZXF1aXJlZCcgfSk7XG4gICAgICB9XG4gICAgICBjb25zdCBlcXVpcG1lbnQgPSBldmVudC5lcXVpcG1lbnQ7XG4gICAgICBpZiAoISFlcXVpcG1lbnQpIHtcbiAgICAgICAgY29uc3QgZXF1aXBtZW50TmFtZSA9IGAke2VxdWlwbWVudCEubmFtZX0gLSAke3RoaXMuaTE4blNlcnZpY2UuaW5zdGFudCgnQGh2eS5ldmVudC5mYW1pbHkuJyArIGVxdWlwbWVudCEuZmFtaWx5KX1gO1xuICAgICAgICBjb25zdCBzZWxlY3RlZEVxdWlwbWVudE5hbWUgPSAodGhpcy5lcXVpcG1lbnRTZWxlY3RWYWx1ZVtpZHhdIGFzIEh5cEVxdWlwbWVudFdpdGhNYXRjaGluZyk/LmRpc3BsYXlOYW1lID9cbiAgICAgICAgICAodGhpcy5lcXVpcG1lbnRTZWxlY3RWYWx1ZVtpZHhdIGFzIEh5cEVxdWlwbWVudFdpdGhNYXRjaGluZykuZGlzcGxheU5hbWUgOiB0aGlzLmVxdWlwbWVudFNlbGVjdFZhbHVlW2lkeF07XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhIXRoaXMuZXF1aXBtZW50U2VsZWN0VmFsdWVbaWR4XSAmJlxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBlcXVpcG1lbnROYW1lICE9PSBzZWxlY3RlZEVxdWlwbWVudE5hbWVcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXZlbnRFcnJvcnMucHVzaCh7IGZpZWxkOiAnZXF1aXBtZW50JywgY29kZTogJ25vdC1mb3VuZCcgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhcmVudCA9IGV2ZW50LnBhcmVudDtcbiAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgY29uc3QgcGFyZW50TmFtZSA9IGAke3BhZElkLmZuKGV2ZW50LnBhcmVudD8uaWQgPz8gJycpfSAtICR7ZXZlbnQucGFyZW50Py5uYW1lfWA7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkUGFyZW50TmFtZSA9ICh0aGlzLmV2ZW50U2VsZWN0VmFsdWVbaWR4XSBhcyBIeXBFdmVudERldGFpbHNXaXRoTWF0Y2hpbmcpPy5kaXNwbGF5TmFtZSA/XG4gICAgICAgICAgKHRoaXMuZXZlbnRTZWxlY3RWYWx1ZVtpZHhdIGFzIEh5cEV2ZW50RGV0YWlsc1dpdGhNYXRjaGluZykuZGlzcGxheU5hbWUgOiB0aGlzLmV2ZW50U2VsZWN0VmFsdWVbaWR4XTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICEhdGhpcy5ldmVudFNlbGVjdFZhbHVlW2lkeF0gJiZcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgcGFyZW50TmFtZSAhPT0gc2VsZWN0ZWRQYXJlbnROYW1lXG4gICAgICAgICkge1xuICAgICAgICAgIGV2ZW50RXJyb3JzLnB1c2goeyBmaWVsZDogJ3BhcmVudCcsIGNvZGU6ICdub3QtZm91bmQnIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQuY2F0ZWdvcnkgPT09ICdNQU5JRkVTVEFUSU9OJykge1xuICAgICAgICBpZiAoIWV2ZW50LnN0YXJ0RGF0ZSB8fCBldmVudC5zdGFydERhdGUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgZXZlbnRFcnJvcnMucHVzaCh7IGZpZWxkOiAnc3RhcnREYXRlJywgY29kZTogJ3JlcXVpcmVkJyB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWV2ZW50LmVuZERhdGUgfHwgZXZlbnQuZW5kRGF0ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBldmVudEVycm9ycy5wdXNoKHsgZmllbGQ6ICdlbmREYXRlJywgY29kZTogJ3JlcXVpcmVkJyB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKChldmVudC5zdGFydERhdGUgYXMgc3RyaW5nKT8ubG9jYWxlQ29tcGFyZShldmVudC5lbmREYXRlID8/ICcnKSA/PyAwKSA+IDApIHtcbiAgICAgICAgICBldmVudEVycm9ycy5wdXNoKHsgZmllbGQ6ICdzdGFydERhdGUnLCBjb2RlOiAnYmVmb3JlJyB9KTtcbiAgICAgICAgICBldmVudEVycm9ycy5wdXNoKHsgZmllbGQ6ICdlbmREYXRlJywgY29kZTogJ2FmdGVyJyB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYoZXZlbnQuc3RhcnREYXRlICYmIGV2ZW50LmVuZERhdGUgJiZcbiAgICAgICAgICAoZXZlbnQuc3RhcnREYXRlKS5sb2NhbGVDb21wYXJlKGV2ZW50LmVuZERhdGUpID4gMCkge1xuICAgICAgICAgIGV2ZW50RXJyb3JzLnB1c2goeyBmaWVsZDogJ3N0YXJ0RGF0ZScsIGNvZGU6ICdiZWZvcmUnIH0pO1xuICAgICAgICAgIGV2ZW50RXJyb3JzLnB1c2goeyBmaWVsZDogJ2VuZERhdGUnLCBjb2RlOiAnYWZ0ZXInIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmVycm9ycy5wdXNoKGV2ZW50RXJyb3JzKTtcbiAgICB9KTtcbiAgICB0aGlzLmV2ZW50RXJyb3JzLm5leHQodGhpcy5lcnJvcnMpO1xuICB9XG5cbiAgaGFzRXJyb3IocHJvcDogc3RyaW5nLCBpZHg6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmVycm9yc1tpZHhdPy5maW5kKChlcnIpID0+IGVyci5maWVsZCA9PT0gcHJvcCkgPz8gZmFsc2U7XG4gIH1cblxuICBjYXRlZ29yaWVzKGV2ZW50OiBIeXBFdmVudERldGFpbHMpIHtcbiAgICByZXR1cm4gSHlwRXZlbnRDYXRlZ29yeS52YWx1ZXM7XG4gIH1cblxuICBjaGFuZ2VTdGF0dXMoJGV2ZW50OiBzdHJpbmcsIGV2ZW50OiBIeXBFdmVudERldGFpbHMpIHtcbiAgICB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuZXZlbnRzID0gW2V2ZW50XTtcbiAgICB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuc3RhdHVzID0gJGV2ZW50O1xuICAgIHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5hbGwgPSBmYWxzZTtcbiAgICB0aGlzLnRvZ2dsZUNvbmZpcm0oKTtcbiAgfVxuXG4gIGNsb3NlQWxsKCkge1xuICAgIHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5hbGwgPSB0cnVlO1xuICAgIHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5ldmVudHMgPSB0aGlzLmV2ZW50cztcbiAgICB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuc3RhdHVzID0gJ0RPTkUnO1xuICAgIHRoaXMudG9nZ2xlQ29uZmlybSgpO1xuICB9XG5cbiAgY29uZmlybWVkQ2xvc2UoKSB7XG4gICAgaWYgKHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5hbGwpIHtcbiAgICAgIGlmICghdGhpcy5wcm9jZWR1cmUpIHtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgICBFdmVudEFjdGlvbnMuc3RhdHVzKHtcbiAgICAgICAgICAgIHRhcmdldFN0YXR1czogdGhpcy5jaGFuZ2VTdGF0dXNDb250ZXh0LnN0YXR1cyxcbiAgICAgICAgICAgIGV2ZW50OiB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuZXZlbnRzWzBdLFxuICAgICAgICAgICAgcHJvY2VkdXJlOiB0aGlzLnByb2NlZHVyZSxcbiAgICAgICAgICAgIGNvbW1lbnQ6IHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5jb21tZW50XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgRXZlbnRBY3Rpb25zLnN0YXR1cyh7XG4gICAgICAgICAgICB0YXJnZXRTdGF0dXM6IHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5zdGF0dXMsXG4gICAgICAgICAgICBwcm9jZWR1cmU6IHRoaXMucHJvY2VkdXJlLFxuICAgICAgICAgICAgY29tbWVudDogdGhpcy5jaGFuZ2VTdGF0dXNDb250ZXh0LmNvbW1lbnRcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICBFdmVudEFjdGlvbnMuc3RhdHVzKHtcbiAgICAgICAgICB0YXJnZXRTdGF0dXM6IHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5zdGF0dXMsXG4gICAgICAgICAgZXZlbnQ6IHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5ldmVudHNbMF0sXG4gICAgICAgICAgcHJvY2VkdXJlOiB0aGlzLnByb2NlZHVyZSxcbiAgICAgICAgICBjb21tZW50OiB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuY29tbWVudFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy50b2dnbGVDb25maXJtKCk7XG4gIH1cblxuICB0b2dnbGVDb25maXJtKCkge1xuICAgIGlmICghdGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLmNvbWZpcm1EaWFsb2dPcGVuZWQubmV4dCh0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShcbiAgICAgICAgbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdiYWNrZHJvcC1kYXJrJyxcbiAgICAgICAgICBwYW5lbENsYXNzOiBbJ28taHZ5LWNsb3NlLWNvbmZpcm0nXVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMudG9nZ2xlQ29uZmlybSgpKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gobmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMuY29uZmlybURpYWxvZywgdGhpcy52aWV3Q29udGFpbmVyUmVmKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5jb21tZW50ID0gJyc7XG4gIH1cblxuICBjb25maXJtRGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5jb21tZW50Lmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIGdldCBjYWxjdWxhdGVkUHJvZ3Jlc3MoKSB7XG4gICAgaWYgKHRoaXMucHJvY2VkdXJlIS5hY3Rpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnJvdW5kKFxuICAgICAgKHRoaXMucHJvY2VkdXJlIS5hY3Rpb25zLmZpbHRlcigoYWN0aW9uKSA9PiBhY3Rpb24uc3RhdHVzID09PSAnRE9ORScpLmxlbmd0aCAvIHRoaXMucHJvY2VkdXJlIS5hY3Rpb25zLmxlbmd0aCkgKlxuICAgICAgICAxMDBcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBhZElkID0gcGFkSWQ7XG4gIHByb3RlY3RlZCByZWFkb25seSBzdWJDYXRlZ29yaWVzID0gW3VuZGVmaW5lZCwgLi4uSHlwRXZlbnRTdWJDYXRlZ29yeS52YWx1ZXNbJ0FOT01BTFknXV07XG5cbiAgbW9kaWZpZWRBY3Rpb25zKCRldmVudDogYW55KSB7XG4gICAgaWYgKGVxdWFsKCRldmVudCwgdGhpcy5fcHJvY2VkdXJlIS5hY3Rpb25zKSkge1xuICAgICAgZGVsZXRlIHRoaXMucHJvY2VkdXJlTW9kaWZpY2F0aW9ucy5hY3Rpb25zO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByb2NlZHVyZU1vZGlmaWNhdGlvbnMuYWN0aW9ucyA9ICRldmVudDtcbiAgICB9XG4gICAgdGhpcy5fb3V0cHV0TW9kaWZpY2F0aW9ucygpO1xuICB9XG5cbiAgb3BlbkFzc29jaWF0aW9uTW9kYWwoKSB7XG4gICAgY29uc3QgcmVmID0gdGhpcy5wcnlEaWFsb2cub3BlbihQcm9jZWR1cmVBc3NvY2lhdGlvbk1vZGFsQ29tcG9uZW50LCB7XG4gICAgICBiYWNrZHJvcENsYXNzOiAnby1odnktYXNzb2NpYXRpb24tbW9kYWxfX2JhY2tkcm9wJ1xuICAgIH0pO1xuICAgIGlmICghIXJlZiAmJiAhIXJlZi5jb21wb25lbnQpIHtcbiAgICAgIHJlZi5jb21wb25lbnQuZXZlbnRzID0gdGhpcy5ldmVudHM7XG4gICAgfVxuICB9XG5cbiAgb3BlbkRlbGV0ZU1vZGFsKCkge1xuICAgIGNvbnN0IGRhdGE6IFByeURpYWxvZ0NvbmZpcm1EYXRhID0ge1xuICAgICAgdGl0bGU6ICdAY2hoLmV2ZW50LmRlbGV0ZVQnLFxuICAgICAgbWVzc2FnZTogdGhpcy5pMThuU2VydmljZS5pbnN0YW50KHRoaXMuZXZlbnRzLmxlbmd0aCA+IDEgPyAnQGNoaC5ldmVudC5kZWxldGVNKycgOiAnQGNoaC5ldmVudC5kZWxldGVNMScsIHtcbiAgICAgICAgbmJFdmVudHM6IHRoaXMuZXZlbnRzLmxlbmd0aFxuICAgICAgfSksXG4gICAgICBhY3Rpb25zOiBbXG4gICAgICAgIHsgaWQ6IDAsIGxhYmVsOiAnQGNoaC5hY3Rpb24uY2FuY2VsJywgY29sb3I6ICdzZWNvbmRhcnknIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogMSxcbiAgICAgICAgICBsYWJlbDogJ0BjaGguYWN0aW9uLnZhbGlkYXRlJyxcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICBQcm9jZWR1cmVBY3Rpb25zLmRlbGV0ZUluc3RhbmNlKHtcbiAgICAgICAgICAgICAgaWQ6IHRoaXMucHJvY2VkdXJlIS5pZCxcbiAgICAgICAgICAgICAgcmV0dXJuVG9FdmVudDogdGhpcy5ldmVudHMubGVuZ3RoID09PSAxID8gKHRoaXMuZXZlbnRzWzBdIGFzIEh5cEV2ZW50RGV0YWlsc1dpdGhNYXRjaGluZykuaWQgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcbiAgICB0aGlzLnByeURpYWxvZy5vcGVuKFByeURpYWxvZ0NvbmZpcm1Db21wb25lbnQsIHtcbiAgICAgIGRhdGEsXG4gICAgICBiYWNrZHJvcENsYXNzOiAnYmFja2Ryb3AtZGFyaycsXG4gICAgICBwYW5lbENsYXNzOiBbJ28taHZ5LWRlbGV0ZS1wcm9jZWR1cmUnXVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0RGF0ZShuZXdWYWx1ZT86IHN0cmluZykge1xuICAgIHJldHVybiBuZXdWYWx1ZSA/IG5ldyBEYXRlKG5ld1ZhbHVlKS50b0lTT1N0cmluZygpIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgc2VsZWN0ZWRFcXVpcG1lbnRDaGFuZ2UoJGV2ZW50OiBzdHJpbmcgfCBIeXBFcXVpcG1lbnQsIGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmVxdWlwbWVudFNlbGVjdFZhbHVlW2luZGV4XSA9ICRldmVudDtcbiAgICB0aGlzLm9uRXF1aXBtZW50U2VhcmNoJC5uZXh0KGluZGV4KTtcbiAgICBpZiAodHlwZW9mICRldmVudCA9PT0gJ29iamVjdCcgfHwgJGV2ZW50ID09PSAnJykge1xuICAgICAgY29uc3QgZXF1aXBtZW50Rm9yRXZlbnQgPSAkZXZlbnQgIT09ICcnID8gJGV2ZW50IDogdW5kZWZpbmVkO1xuICAgICAgaWYgKCghIXRoaXMuX2V2ZW50c1tpbmRleF0uZXF1aXBtZW50ICYmICFlcXVpcG1lbnRGb3JFdmVudCkgfHwgdGhpcy5fZXZlbnRzW2luZGV4XS5lcXVpcG1lbnQ/Lm5hbWUgIT09IGVxdWlwbWVudEZvckV2ZW50Py5uYW1lKSB7XG4gICAgICAgIGlmICghdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdKSB7XG4gICAgICAgICAgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdID0ge307XG4gICAgICAgIH1cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0uZXF1aXBtZW50ID0gZXF1aXBtZW50Rm9yRXZlbnQ7XG4gICAgICAgIHRoaXMuX291dHB1dE1vZGlmaWNhdGlvbnMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghIXRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XSkge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBkZWxldGUgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdLmVxdWlwbWVudDtcbiAgICAgICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF07XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuX291dHB1dE1vZGlmaWNhdGlvbnMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5wb3B1bGF0ZUVxdWlwbWVudChlcXVpcG1lbnRGb3JFdmVudCwgaW5kZXgpO1xuICAgIH0gZWxzZSBpZiAoISEkZXZlbnQgJiYgIXRoaXMuZXF1aXBtZW50c0V2ZW50c1tpbmRleF0/LmV2ZW50cyl7XG4gICAgICBjb25zdCBmaXJzdEluZGV4ID0gJGV2ZW50LmluZGV4T2YoJy0nKTtcbiAgICAgIGNvbnN0IGxhc3RJbmRleCA9ICRldmVudC5sYXN0SW5kZXhPZignLScpO1xuICAgICAgaWYoZmlyc3RJbmRleCAhPT0gLTEgJiYgbGFzdEluZGV4ICE9PSBmaXJzdEluZGV4KXtcbiAgICAgICAgY29uc3QgbmFtZSA9ICRldmVudC5zdWJzdHJpbmcoMCwgbGFzdEluZGV4LTEpO1xuICAgICAgICB0aGlzLnBvcHVsYXRlRXF1aXBtZW50KHtuYW1lfSBhcyBIeXBFcXVpcG1lbnQsIGluZGV4KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYoISRldmVudCkge1xuICAgICAgdGhpcy5wb3B1bGF0ZUVxdWlwbWVudCh1bmRlZmluZWQsIGluZGV4KTtcbiAgICAgIHRoaXMuX291dHB1dE1vZGlmaWNhdGlvbnMoKTtcbiAgICB9XG4gIH1cblxuICBlcXVpcG1lbnRzRXZlbnRzOiB7IGV2ZW50cz86IEh5cEV2ZW50RGV0YWlsc1tdOyBzZXJ2aWNlcz86IEh5cFNlcnZpY2VUb29sdGlwW10gfVtdID0gW107XG5cbiAgcHJpdmF0ZSBwb3B1bGF0ZUVxdWlwbWVudCgkZXZlbnQ6IEh5cEVxdWlwbWVudCB8IHVuZGVmaW5lZCwgaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuZXF1aXBtZW50c0V2ZW50c1tpbmRleF0gPSB7fTtcbiAgICBpZiAoJGV2ZW50KSB7XG4gICAgICB0aGlzLmVxdWlwbWVudFNlcnZpY2UuZmluZEJ5TmFtZSgkZXZlbnQubmFtZSkuc3Vic2NyaWJlKChlcXVpcCkgPT4ge1xuICAgICAgICB0aGlzLmVxdWlwbWVudHNFdmVudHNbaW5kZXhdLmV2ZW50cyA9IGVxdWlwLmV2ZW50cztcbiAgICAgICAgdGhpcy5lcXVpcG1lbnRzRXZlbnRzW2luZGV4XS5zZXJ2aWNlcyA9IGVxdWlwLnNlcnZpY2VzO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdG9vbHRpcFJlZj86IFByeURpYWxvZ1JlZjxIdnlFdmVudERldGFpbHNUb29sdGlwQ29tcG9uZW50PjtcblxuICB0b2dnbGVEZXRhaWxzVG9vbHRpcChpZHg6IG51bWJlcikge1xuICAgIGlmICghdGhpcy50b29sdGlwUmVmKSB7XG4gICAgICBsZXQgaWR4T3BlbmVkID0gMDtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaWR4OyBpKyspIHtcbiAgICAgICAgaWYgKHRoaXMub3BlbmVkW2ldKSB7XG4gICAgICAgICAgaWR4T3BlbmVkKys7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy50b29sdGlwUmVmID0gdGhpcy5wcnlEaWFsb2cub3BlbihIdnlFdmVudERldGFpbHNUb29sdGlwQ29tcG9uZW50LCB7XG4gICAgICAgIGRhdGE6IHRoaXMuZXF1aXBtZW50c0V2ZW50c1tpZHhdID8/IHsgZXZlbnRzOiBbXSwgc2VydmljZXM6IFtdIH0sXG4gICAgICAgIG92ZXJsYXlDb25maWc6IHtcbiAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLm92ZXJsYXlcbiAgICAgICAgICAgIC5wb3NpdGlvbigpXG4gICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLmRldGFpbEhvdmVySWNvbi5nZXQoaWR4T3BlbmVkKSEpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcbiAgICAgICAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgICBvdmVybGF5WTogJ3RvcCdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSlcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudG9vbHRpcFJlZi5jbG9zZSgpO1xuICAgICAgdGhpcy50b29sdGlwUmVmID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdGVkUGFyZW50Q2hhbmdlKCRldmVudDogc3RyaW5nIHwgSHlwRXZlbnREZXRhaWxzLCBpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5ldmVudFNlbGVjdFZhbHVlW2luZGV4XSA9ICRldmVudDtcbiAgICB0aGlzLm9uRXZlbnRTZWFyY2gkLm5leHQoaW5kZXgpO1xuICAgIGlmICh0eXBlb2YgJGV2ZW50ID09PSAnb2JqZWN0JyB8fCAkZXZlbnQgPT09ICcnKSB7XG4gICAgICBjb25zdCBwYXJlbnRGb3JFdmVudCA9ICRldmVudCAhPT0gJycgPyB7IGlkOiAkZXZlbnQuaWQsIG5hbWU6ICRldmVudC5uYW1lIH0gOiB1bmRlZmluZWQ7XG4gICAgICBpZiAoIXBhcmVudEZvckV2ZW50IHx8IHRoaXMuX2V2ZW50c1tpbmRleF0ucGFyZW50Py5pZCAhPT0gcGFyZW50Rm9yRXZlbnQuaWQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0pIHtcbiAgICAgICAgICB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0gPSB7fTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0ucGFyZW50ID0gcGFyZW50Rm9yRXZlbnQ7XG4gICAgICAgIHRoaXMuX291dHB1dE1vZGlmaWNhdGlvbnMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghIXRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XSkge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBkZWxldGUgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdLnBhcmVudDtcbiAgICAgICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF07XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuX291dHB1dE1vZGlmaWNhdGlvbnMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9vdXRwdXRNb2RpZmljYXRpb25zKCk7XG4gICAgfVxuICB9XG5cbiAgYWRkT25lRXZlbnQoKSB7XG4gICAgY29uc3QgcmVmID0gdGhpcy5wcnlEaWFsb2cub3BlbihIdnlFdmVudEFkZEV2ZW50Q29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB7IHByb2NlZHVyZTogdGhpcy5wcm9jZWR1cmUgfSxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICdiYWNrZHJvcC1kYXJrJ1xuICAgIH0pO1xuXG4gICAgcmVmLmNsb3NlVmFsdWUuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgc3dpdGNoICh2YWx1ZS52YWx1ZSkge1xuICAgICAgICBjYXNlICdhZGQnOlxuICAgICAgICAgIHRoaXMuYWRkZWRFdmVudC5uZXh0KHZhbHVlLmV2ZW50KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHJlZi5jbG9zZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgYWN0aW9uQ29tbWVudGVkKCRldmVudDogeyBhY3Rpb246IEh5cEFjdGlvbjsgY29tbWVudHM6IEh5cENvbW1lbnRbXSB9KSB7XG4gICAgdGhpcy5jb21tZW50ZWQubmV4dCgkZXZlbnQpO1xuICB9XG5cbiAgdXBkYXRlQ29tbWVudChldmVudDogSHlwRXZlbnREZXRhaWxzLCBjb21tZW50OiB7IGlkOiBzdHJpbmc7IG1lc3NhZ2U6IHN0cmluZyB9KSB7XG4gICAgdGhpcy5jb21tZW50c1NlcnZpY2Uuc2F2ZShldmVudC5pZCwgJ2V2ZW50cycsIGNvbW1lbnQpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBsZXQgZXZlbnRzQW5kQ29tbWVudHM6ICB7ZXZlbnQ6IEh5cEV2ZW50RGV0YWlsczsgY29tbWVudHM6IEh5cENvbW1lbnRbXSB9W10gPSBbXTtcbiAgICAgIGxldCBjb21tZW50cyQ6IE9ic2VydmFibGU8SHlwQ29tbWVudFtdPltdID0gW107XG4gICAgICBmb3IobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLl9ldmVudHMubGVuZ3RoOyBpbmRleCsrKXtcbiAgICAgICAgY29tbWVudHMkLnB1c2godGhpcy5jb21tZW50c1NlcnZpY2UuZ2V0KHRoaXMuX2V2ZW50c1tpbmRleF0uaWQsICdldmVudHMnKSk7XG4gICAgICB9XG4gICAgICB6aXAoY29tbWVudHMkKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQgOiBjb21tZW50c0FycmF5ID0+IHtcbiAgICAgICAgICBjb21tZW50c0FycmF5LmZvckVhY2goKGNvbW1lbnRzLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgZXZlbnRzQW5kQ29tbWVudHMucHVzaCh7IGV2ZW50OiB0aGlzLl9ldmVudHNbaW5kZXhdLCBjb21tZW50czogY29tbWVudHMgYXMgSHlwQ29tbWVudFtdIH0pO1xuICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jb21tZW50ZWQubmV4dChldmVudHNBbmRDb21tZW50cyk7XG4gICAgICB9fSlcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxcIj5cbiAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX2hlYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19oZWFkZXJfX3NwbGl0XCI+XG4gICAgICA8aDE+e3sgdGl0bGUgPz8gJ0BodnkuZXZlbnQuZGV0YWlsJyB8IGkxOG4gfX08L2gxPlxuICAgICAgQGlmIChwcm9jZWR1cmUgJiYgY2FuQ2xvc2VTb21lKSB7XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJhZGQtYnV0dG9uXCIgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCIgKGNsaWNrKT1cImFkZE9uZUV2ZW50KClcIj5cbiAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImFkZFwiIFt3aWR0aF09XCIxOFwiIFtoZWlnaHRdPVwiMThcIj48L3ByeS1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIH1cbiAgICAgIEBpZiAoZXZlbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgQGlmIChjYW5DbG9zZVNvbWUgJiYgIXJlYWRvbmx5KSB7XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnkgLWZpeC1yaWdodFwiIFtkaXNhYmxlZF09XCIhY2FuQ2xvc2VTb21lXCIgKGNsaWNrKT1cImNsb3NlQWxsKClcIj5cbiAgICAgICAgICAgIHt7IChjYW5DbG9zZVNvbWUgPyAnQGh2eS5ldmVudC5sb2cuZXZlbnQuY2xvc2UnIDogJ0BodnkuZXZlbnQubG9nLmV2ZW50LmNsb3NlZCcpIHwgaTE4biB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoIWNhbkNsb3NlU29tZSAmJiBjbG9zZUNvbW1lbnQgJiYgY2xvc2VDb21tZW50Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYS10b29sdGlwXCIgW2F0dHIuZGF0YS10b29sdGlwXT1cImNsb3NlQ29tbWVudFwiIGRhdGEtdG9vbHRpcC1wb3NpdGlvbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImlcIiBbaGVpZ2h0XT1cIjE4XCIgW3dpZHRoXT1cIjE4XCI+aTwvcHJ5LWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9faGVhZGVyX19zcGxpdFwiPlxuICAgICAgQGlmIChwcm9jZWR1cmUgJiYgIXJlYWRvbmx5KSB7XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cIm9wZW5EZWxldGVNb2RhbCgpXCIgW2Rpc2FibGVkXT1cInJlYWRvbmx5UHJvY2VkdXJlXCI+XG4gICAgICAgICAge3sgJ0BodnkuZXZlbnQubG9nLnByb2NlZHVyZS5kZWxldGUnIHwgaTE4biB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fY29udGFpbmVyX19zY3JvbGxhYmxlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fZXZlbnRzXCI+XG4gICAgICAgIEBmb3IgKGV2ZW50IG9mIGV2ZW50czsgdHJhY2sgZXZlbnQuaWQ7IGxldCBpZHggPSAkaW5kZXgpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fZXZlbnRzX19ldmVudFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX2V2ZW50c19fZXZlbnRfX2hlYWRlclwiPlxuICAgICAgICAgICAgICA8cHJ5LWljb25cbiAgICAgICAgICAgICAgICBpY29uU3ZnPVwiYXJyb3dfZG93bl9yb3VuZGVkXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuLXJvdGF0ZWRdPVwib3BlbmVkW2lkeF1cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiLWhhbmRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGUoaWR4KVwiXG4gICAgICAgICAgICAgICAgW3dpZHRoXT1cIjEwXCJcbiAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjEwXCJcbiAgICAgICAgICAgICAgPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgIDxodnktaWNvbi1kaXNwbGF5IFtldmVudF09XCJldmVudFwiPjwvaHZ5LWljb24tZGlzcGxheT5cbiAgICAgICAgICAgICAgPGgyPnt7IGV2ZW50Lm5hbWUgfX08L2gyPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fZXZlbnRzX19ldmVudF9faGVhZGVyX19jb21tZW50XCI+XG4gICAgICAgICAgICAgICAgQGlmIChldmVudC5jb21tZW50Q291bnQgPiAwKSB7XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57e1xuICAgICAgICAgICAgICAgICAgICAoZXZlbnQuY29tbWVudENvdW50ID4gMSA/ICdAaHZ5LmV2ZW50LmNvbW1lbnQuaGVhZHMnIDogJ0BodnkuZXZlbnQuY29tbWVudC5oZWFkJylcbiAgICAgICAgICAgICAgICAgICAgICB8IGkxOG46IHsgbmI6IGV2ZW50LmNvbW1lbnRDb3VudCB9XG4gICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8aHZ5LXN0YXR1cy1kaXNwbGF5XG4gICAgICAgICAgICAgICAgW2l0ZW1dPVwiZXZlbnRcIlxuICAgICAgICAgICAgICAgIFttb2RpZmlhYmxlXT1cImV2ZW50LnN0YXR1cyAhPT0gJ0RPTkUnXCJcbiAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgIChtb2RpZmllZCk9XCJjaGFuZ2VTdGF0dXMoJGV2ZW50LCBldmVudClcIlxuICAgICAgICAgICAgICA+PC9odnktc3RhdHVzLWRpc3BsYXk+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19ldmVudHNfX2V2ZW50X19jb250ZW50XCI+XG4gICAgICAgICAgICAgIEBpZiAoIW9wZW5lZFtpZHhdKSB7XG4gICAgICAgICAgICAgICAgPGRpdj57eyAnQGh2eS5ldmVudC5sb2cuZXZlbnQuZGVzY3JpcHRpb24nIHwgaTE4biB9fSA6IHt7IGV2ZW50LmRlc2NyaXB0aW9uIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdj57eyAnQGh2eS5ldmVudC5sb2cuZXZlbnQuYWRkcmVzcycgfCBpMThuIH19IDoge3sgZXZlbnQuYWRkcmVzcyB9fTwvZGl2PlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICBAaWYgKGFjY2VzcyhldmVudCk7IGFzIGFjY2Vzc1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fZXZlbnRzX19ldmVudF9fY29udGVudF9faGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMz57eyAnQGh2eS5ldmVudC5sb2cuZXZlbnQuZGV0YWlsJyB8IGkxOG4gfX08L2gzPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+e3sgJ0BodnkuZXZlbnQubG9nLmV2ZW50Lm1hbmRhdG9yeScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8dGFibGU+XG4gICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQubG9nLmV2ZW50Lm5hbWUnIHwgaTE4biB9fTxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuLWVycm9yXT1cImhhc0Vycm9yKCduYW1lJywgaWR4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImV2ZW50Lm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwibW9kaWZ5RXZlbnQoaWR4LCAnbmFtZScsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJhY2Nlc3NWYWx1ZS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4TGVuZ3RoXT1cIjUwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZXZlbnQuaWQgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5sb2cuZXZlbnQuaWQnIHwgaTE4biB9fTxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCIgW3ZhbHVlXT1cInBhZElkLmZuKGV2ZW50LmlkKVwiIFtyZWFkb25seV09XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQubG9nLmV2ZW50LmNhdGVnb3J5JyB8IGkxOG4gfX08c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj4gOjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZXZlbnQuY2F0ZWdvcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJjYXRlZ29yaWVzKGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLi1lcnJvcl09XCJoYXNFcnJvcignY2F0ZWdvcnknLCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJtb2RpZnlFdmVudChpZHgsICdjYXRlZ29yeScsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkxOG5QcmVmaXg9XCJAaHZ5LmV2ZW50LmNhdGVnb3J5LlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFjY2Vzc1ZhbHVlLmNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZXZlbnQuY2F0ZWdvcnkgPT09ICdBTk9NQUxZJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQuc3ViQ2F0ZWdvcnkubmFtZScgfCBpMThuIH19PHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImV2ZW50LnN1YkNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJzdWJDYXRlZ29yaWVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy4tZXJyb3JdPVwiaGFzRXJyb3IoJ3N1YkNhdGVnb3J5JywgaWR4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJtb2RpZnlFdmVudChpZHgsICdzdWJDYXRlZ29yeScsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTE4blByZWZpeD1cIkBodnkuZXZlbnQuc3ViQ2F0ZWdvcnkuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhY2Nlc3NWYWx1ZS5zdWJDYXRlZ29yeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQuY3JpdGljYWxpdHkubmFtZScgfCBpMThuIH19PHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImV2ZW50LmNyaXRpY2FsaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiY3JpdGljYWxpdGllc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLi1lcnJvcl09XCJoYXNFcnJvcignY3JpdGljYWxpdHknLCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpMThuUHJlZml4PVwiQGh2eS5ldmVudC5jcml0aWNhbGl0eS5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhY2Nlc3NWYWx1ZS5jcml0aWNhbGl0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwibW9kaWZ5RXZlbnQoaWR4LCAnY3JpdGljYWxpdHknLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LmxvZy5ldmVudC5kZXNjcmlwdGlvbicgfCBpMThuIH19PHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJldmVudC5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy4tZXJyb3JdPVwiaGFzRXJyb3IoJ2Rlc2NyaXB0aW9uJywgaWR4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImFjY2Vzc1ZhbHVlLmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJtb2RpZnlFdmVudChpZHgsICdkZXNjcmlwdGlvbicsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhMZW5ndGhdPVwiMjU2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQubG9nLmV2ZW50LmFkZHJlc3MnIHwgaTE4biB9fSA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZXZlbnQuYWRkcmVzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy4tZXJyb3JdPVwiaGFzRXJyb3IoJ2FkZHJlc3MnLCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiYWNjZXNzVmFsdWUuYWRkcmVzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwibW9kaWZ5RXZlbnQoaWR4LCAnYWRkcmVzcycsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhMZW5ndGhdPVwiMjU2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQuc291cmNlJyB8IGkxOG4gfX08c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj4gOjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImV2ZW50LmV4dGVybmFsU291cmNlUmVmID8/ICgnQGh2eS5ldmVudC5oeXBlcnZpc29yJyB8IGkxOG4pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuLWVycm9yXT1cImhhc0Vycm9yKCdzb3VyY2UnLCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiYWNjZXNzVmFsdWUuc291cmNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm1vZGlmeUV2ZW50KGlkeCwgJ3NvdXJjZScsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LmVxdWlwbWVudCcgfCBpMThuIH19IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJlcXVpcG1lbnRzJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kTGFiZWw9XCJkaXNwbGF5TmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZXF1aXBtZW50U2VsZWN0VmFsdWVbaWR4XVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VsZWN0ZWRFcXVpcG1lbnRDaGFuZ2UoJGV2ZW50LCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtleHRlcm5hbEF1dG9jb21wbGV0ZVNlcnZpY2VdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidAaHZ5LmV2ZW50LmVxdWlwbWVudFBsYWNlaG9sZGVyJyB8IGkxOG5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwicHJvY2VkdXJlLWZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RlbXBsYXRlXT1cInRlbXBsYXRlT3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuLWVycm9yXT1cImhhc0Vycm9yKCdlcXVpcG1lbnQnLCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWNjZXNzVmFsdWUuZXFOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX2V2ZW50c19fZXZlbnRfX2NvbnRlbnRfX2VxdWlwbWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGVtcGxhdGVPcHRpb24gbGV0LWl0ZW09XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInUtZGlzcGxheS1mbGV4IC1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiaXRlbS5odG1sXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEVxdWlwbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJ5LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25Tdmc9XCJpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiLWhhbmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2RldGFpbEhvdmVySWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwidG9nZ2xlRGV0YWlsc1Rvb2x0aXAoaWR4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJ0b2dnbGVEZXRhaWxzVG9vbHRpcChpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt3aWR0aF09XCIxOFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjE4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5lcXVpcG1lbnRFbnRpdHknIHwgaTE4biB9fSA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuLWVycm9yXT1cImhhc0Vycm9yKCdlcXVpcG1lbnQnLCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXZlbnQuZXF1aXBtZW50Py5lbnRpdHkgPyAnQGh2eS5ldmVudC5lbnRpdHkuJyArIGV2ZW50LmVxdWlwbWVudD8uZW50aXR5IDogJycpIHwgaTE4blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5kb21haW4ubmFtZScgfCBpMThuIH19IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJET01BSU5TXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJldmVudC5kb21haW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkxOG5QcmVmaXg9XCJAaHZ5LmV2ZW50LmRvbWFpbi5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy4tZXJyb3JdPVwiaGFzRXJyb3IoJ2RvbWFpbicsIGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1vZGlmeUV2ZW50KGlkeCwgJ2RvbWFpbicsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhY2Nlc3NWYWx1ZS5kb21haW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LnBhcmVudEV2ZW50Lm5hbWUnIHwgaTE4biB9fSA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiZXZlbnRzJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kTGFiZWw9XCJkaXNwbGF5TmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZXZlbnRTZWxlY3RWYWx1ZVtpZHhdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWxlY3RlZFBhcmVudENoYW5nZSgkZXZlbnQsIGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2V4dGVybmFsQXV0b2NvbXBsZXRlU2VydmljZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0BodnkuZXZlbnQucGFyZW50RXZlbnQucGxhY2Vob2xkZXInIHwgaTE4blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZW1wbGF0ZV09XCJ0ZW1wbGF0ZVBhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFjY2Vzc1ZhbHVlLnBhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLi1lcnJvcl09XCJoYXNFcnJvcigncGFyZW50JywgaWR4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19ldmVudHNfX2V2ZW50X19jb250ZW50X19lcXVpcG1lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3RlbXBsYXRlUGFyZW50IGxldC1pdGVtPVwiaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1LWRpc3BsYXktZmxleCAtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cIml0ZW0uaHRtbFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ0BodnkuZXZlbnQuc3RhcnREYXRlJyB8IGkxOG4gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChldmVudC5jYXRlZ29yeSA9PT0gJ01BTklGRVNUQVRJT04nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImV2ZW50LnN0YXJ0RGF0ZSB8IGZvckRhdGVUaW1lTG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy4tZXJyb3JdPVwiaGFzRXJyb3IoJ3N0YXJ0RGF0ZScsIGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJhY2Nlc3NWYWx1ZS5zdGFydERhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwibW9kaWZ5RXZlbnQoaWR4LCAnc3RhcnREYXRlJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdAaHZ5LmV2ZW50LmVuZERhdGUnIHwgaTE4biB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGV2ZW50LmNhdGVnb3J5ID09PSAnTUFOSUZFU1RBVElPTicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZXZlbnQuZW5kRGF0ZSB8IGZvckRhdGVUaW1lTG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy4tZXJyb3JdPVwiaGFzRXJyb3IoJ2VuZERhdGUnLCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiYWNjZXNzVmFsdWUuZW5kRGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJtb2RpZnlFdmVudChpZHgsICdlbmREYXRlJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaGFzRXJyb3IoJ2VuZERhdGUnLCBpZHgpICYmIGV2ZW50LmVuZERhdGUgJiYgZXZlbnQuc3RhcnREYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhLWZvcm0tZmllbGQgLWVycm9yXCI+e3sgJ0BodnkuZXZlbnQuZXJyb3JEYXRlJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5jcmVhdG9yJyB8IGkxOG4gfX08c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj4gOjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImV2ZW50LmNyZWF0b3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5jcmVhdGlvbkRhdGUnIHwgaTE4biB9fTxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImV2ZW50LmNyZWF0aW9uRGF0ZSB8IGZvckRhdGVUaW1lTG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQubGFzdE1vZGlmaWNhdGlvbkRhdGUnIHwgaTE4biB9fTxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImV2ZW50Lmxhc3RNb2RpZmljYXRpb25EYXRlIHwgZm9yRGF0ZVRpbWVMb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5jbG9zZURhdGUnIHwgaTE4biB9fSA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImV2ZW50LmNsb3NlRGF0ZSB8IGZvckRhdGVUaW1lTG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgICAgICAgICBAaWYgKGV2ZW50LmlkICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICA8aHZ5LWNvbW1lbnRzXG4gICAgICAgICAgICAgICAgICAgICAgW2xhc3RDb21tZW50XT1cImV2ZW50Lmxhc3RDb21tZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICBbY29tbWVudENvdW50XT1cImV2ZW50LmNvbW1lbnRDb3VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNvbW1lbnRlZCk9XCJ1cGRhdGVDb21tZW50KGV2ZW50LCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiZXZlbnQuc3RhdHVzID09PSAnRE9ORSdcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIidldmVudHMnXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbWVdPVwibWU/LnN1YlwiXG4gICAgICAgICAgICAgICAgICAgICAgW29iamVjdElkXT1cImV2ZW50LmlkXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvaHZ5LWNvbW1lbnRzPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX3Byb2NlZHVyZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fcHJvY2VkdXJlX19oZWFkZXJcIj5cbiAgICAgICAgICA8aDI+XG4gICAgICAgICAgICB7eyAoZXZlbnRzLmxlbmd0aCA9PT0gMSA/ICdAaHZ5LmV2ZW50LmxvZy5wcm9jZWR1cmUubmFtZTEnIDogJ0BodnkuZXZlbnQubG9nLnByb2NlZHVyZS5uYW1lJykgfCBpMThuIH19XG4gICAgICAgICAgPC9oMj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIEBpZiAocHJvY2VkdXJlKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX3Byb2NlZHVyZV9fZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgIDxwPnt7IHByb2NlZHVyZS5kZXNjcmlwdGlvbiB9fTwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fcHJvY2VkdXJlX19wcm9ncmVzc1wiPlxuICAgICAgICAgICAgPHA+e3sgJ0BodnkuZXZlbnQubG9nLnByb2NlZHVyZS5wcm9ncmVzcycgfCBpMThuIH19PC9wPlxuICAgICAgICAgICAgPGh2eS1wcm9ncmVzcy1kaXNwbGF5IFtwcm9ncmVzc109XCJjYWxjdWxhdGVkUHJvZ3Jlc3NcIj48L2h2eS1wcm9ncmVzcy1kaXNwbGF5PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxodnktcHJvY2VkdXJlLWFjdGlvbnNcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVByb2NlZHVyZSB8fCByZWFkb25seVwiXG4gICAgICAgICAgICBbcmVhZE9ubHlDb21tZW50XT1cInJlYWRPbmx5Q29tbWVudFwiXG4gICAgICAgICAgICBbZW5hYmxlRWRpdEFjdGlvbnNdPVwiZW5hYmxlRWRpdEFjdGlvbnNcIlxuICAgICAgICAgICAgW2FjdGlvbnNdPVwicHJvY2VkdXJlLmFjdGlvbnNcIlxuICAgICAgICAgICAgKG1vZGlmaWVkKT1cIm1vZGlmaWVkQWN0aW9ucygkZXZlbnQpXCJcbiAgICAgICAgICAgIFttZV09XCJtZT8uc3ViXCJcbiAgICAgICAgICAgIFtldmVudHNdPVwidGhpcy5ldmVudHNcIlxuICAgICAgICAgICAgKGNvbW1lbnRlZCk9XCJhY3Rpb25Db21tZW50ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgPjwvaHZ5LXByb2NlZHVyZS1hY3Rpb25zPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICBAaWYgKCFyZWFkb25seSkge1xuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIiBbZGlzYWJsZWRdPVwiIWNhbkFzc29jaWF0ZVByb2NlZHVyZVwiIChjbGljayk9XCJvcGVuQXNzb2NpYXRpb25Nb2RhbCgpXCI+XG4gICAgICAgICAgICAgIHt7ICdAaHZ5LmFjdGlvbi5hc3NvY2lhdGUnIHwgaTE4biB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX3Byb2NlZHVyZV9fZW1wdHlcIj57eyAnQGh2eS5ldmVudC5sb2cucHJvY2VkdXJlLm5vbmUnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2NvbmZpcm1EaWFsb2c+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm8taHZ5LWNsb3NlLWNvbmZpcm1fX2RpYWxvZ1wiXG4gICAgYXJpYS1sYWJlbGxlZGJ5PVwiY29uZmlybVwiXG4gICAgdGFiaW5kZXg9XCItMVwiXG4gICAgaWQ9XCJjaG9pY2VcIlxuICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgIGFyaWEtbW9kYWw9XCJ0cnVlXCJcbiAgPlxuICAgIDxoMj5cbiAgICAgIHt7XG4gICAgICAgIChjaGFuZ2VTdGF0dXNDb250ZXh0LmV2ZW50cy5sZW5ndGggPT09IDEgPyAnQGh2eS5ldmVudC5jbG9zZS5vbmVUaXRsZScgOiAnQGh2eS5ldmVudC5jbG9zZS5tdWx0aVRpdGxlJykgfCBpMThuXG4gICAgICB9fVxuICAgIDwvaDI+XG4gICAgPHA+e3sgKGNoYW5nZVN0YXR1c0NvbnRleHQuZXZlbnRzLmxlbmd0aCA9PT0gMSA/ICdAaHZ5LmV2ZW50LmNsb3NlLm9uZScgOiAnQGh2eS5ldmVudC5jbG9zZS5tdWx0aScpIHwgaTE4biB9fTwvcD5cbiAgICA8dWw+XG4gICAgICBAZm9yIChldmVudCBvZiBjaGFuZ2VTdGF0dXNDb250ZXh0LmV2ZW50czsgdHJhY2sgZXZlbnQuaWQpIHtcbiAgICAgICAgPGxpPnt7IGV2ZW50Lm5hbWUgfX08L2xpPlxuICAgICAgfVxuICAgIDwvdWw+XG4gICAgPHAgY2xhc3M9XCJvLWh2eS1jbG9zZS1jb25maXJtX19kaWFsb2dfX2NvbW1lbnQtdGl0bGVcIj5cbiAgICAgIHt7ICdAaHZ5LmV2ZW50LmNsb3NlLmNvbW1lbnQnIHwgaTE4biB9fTxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6XG4gICAgPC9wPlxuICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1jbG9zZS1jb25maXJtX19kaWFsb2dfX2NvbW1lbnRcIj5cbiAgICAgIDx0ZXh0YXJlYSBbKG5nTW9kZWwpXT1cImNoYW5nZVN0YXR1c0NvbnRleHQuY29tbWVudFwiIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCIgW21heExlbmd0aF09XCIyNTVcIj48L3RleHRhcmVhPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1jbG9zZS1jb25maXJtX19kaWFsb2dfX2FjdGlvbnNcIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiIChjbGljayk9XCJjb25maXJtZWRDbG9zZSgpXCIgW2Rpc2FibGVkXT1cImNvbmZpcm1EaXNhYmxlZCgpXCI+XG4gICAgICAgIHt7ICdAaHZ5LmFjdGlvbi52YWxpZGF0ZScgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cInRvZ2dsZUNvbmZpcm0oKVwiPnt7ICdAaHZ5LmFjdGlvbi5jYW5jZWwnIHwgaTE4biB9fTwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
753
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvaHlwZXJ2aXNvci9zcmMvbGliL2V2ZW50L2RldGFpbC9ldmVudC1kZXRhaWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9oeXBlcnZpc29yL3NyYy9saWIvZXZlbnQvZGV0YWlsL2V2ZW50LWRldGFpbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxFQUNULFlBQVksRUFFYixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNuRixPQUFPLEVBQ0wseUJBQXlCLEVBTXpCLHdCQUF3QixFQUN6QixNQUFNLG9CQUFvQixDQUFDO0FBRzVCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFL0QsT0FBTyxFQUFXLGFBQWEsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsWUFBWSxFQUNaLEtBQUssRUFFTCxXQUFXLEVBQ1gsT0FBTyxFQUNQLFNBQVMsRUFBRSxJQUFJLEVBQ2YsVUFBVSxFQUFFLEdBQUcsRUFDaEIsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdEQsT0FBTyxLQUFLLE1BQU0scUJBQXFCLENBQUM7QUFDeEMsT0FBTyxFQUFFLGtDQUFrQyxF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UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBeHZCVSxvQkFBb0I7a0dBQXBCLG9CQUFvQiwwb0JBMEJLLFdBQVcsZ0dBS04sVUFBVSxvREM1R3JELHFnckJBMmNBOzsyRkQ5WGEsb0JBQW9CO2tCQUpoQyxTQUFTOytCQUNFLGtCQUFrQjs0U0FRbEIsY0FBYztzQkFBdkIsTUFBTTtnQkFHRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBRUcsV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQVNFLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFFNkMsYUFBYTtzQkFBL0QsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUN2QyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBSWdELGVBQWU7c0JBQXJFLFlBQVk7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUkzQyxTQUFTO3NCQUFsQixNQUFNO2dCQVFNLEVBQUU7c0JBQWQsS0FBSztnQkFLTyxNQUFNO3NCQUFsQixLQUFLO2dCQStCTyxTQUFTO3NCQUFyQixLQUFLO2dCQUtPLG1CQUFtQjtzQkFBL0IsS0FBSztnQkFrQ08sYUFBYTtzQkFBekIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlbixcbiAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh5cFByb2NlZHVyZSB9IGZyb20gJy4uLy4uL21vZGVsL3Byb2NlZHVyZS9oeXAtcHJvY2VkdXJlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBIeXBFdmVudERldGFpbHMgfSBmcm9tICcuLi8uLi9tb2RlbC9ldmVudC9oeXAtZXZlbnQtZGV0YWlsLmludGVyZmFjZSc7XG5pbXBvcnQgeyBIeXBFdmVudENyaXRpY2FsaXR5IH0gZnJvbSAnLi4vLi4vbW9kZWwvZXZlbnQvaHlwLWV2ZW50LWNyaXRpY2FsaXR5LnR5cGUnO1xuaW1wb3J0IHtcbiAgUHJ5RGlhbG9nQ29uZmlybUNvbXBvbmVudCxcbiAgUHJ5RGlhbG9nQ29uZmlybURhdGEsXG4gIFByeURpYWxvZ1JlZixcbiAgUHJ5RGlhbG9nU2VydmljZSxcbiAgUHJ5STE4blNlcnZpY2UsXG4gIFByeUljb25Db21wb25lbnQsXG4gIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZVxufSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgSHlwRXF1aXBtZW50IH0gZnJvbSAnLi4vLi4vbW9kZWwvaHlwLWVxdWlwbWVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRXF1aXBtZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3N0b3JlL2VxdWlwbWVudC9lcXVpcG1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBET01BSU5TIH0gZnJvbSAnLi4vLi4vbW9kZWwvZG9tYWlucy5jb25zdGFudCc7XG5pbXBvcnQgeyBFdmVudEFjdGlvbnMgfSBmcm9tICcuLi8uLi9zdG9yZS9ldmVudC9ldmVudC5hY3Rpb25zJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICBkZWJvdW5jZVRpbWUsXG4gIGRlbGF5LFxuICBPYnNlcnZhYmxlLFxuICBzaGFyZVJlcGxheSxcbiAgU3ViamVjdCxcbiAgc3dpdGNoTWFwLCB0YWtlLFxuICB0aHJvd0Vycm9yLCB6aXBcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBwYWRJZCB9IGZyb20gJy4uLy4uL2dlbmVyYWwvcGFkLWlkLmZ1bmN0aW9uJztcbmltcG9ydCBlcXVhbCBmcm9tICdmYXN0LWRlZXAtZXF1YWwvZXM2JztcbmltcG9ydCB7IFByb2NlZHVyZUFzc29jaWF0aW9uTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9wcm9jZWR1cmUtYXNzb2NpYXRpb24tbW9kYWwvcHJvY2VkdXJlLWFzc29jaWF0aW9uLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcm9jZWR1cmVBY3Rpb25zIH0gZnJvbSAnLi4vLi4vc3RvcmUvcHJvY2VkdXJlL3Byb2NlZHVyZS5hY3Rpb25zJztcbmltcG9ydCB7IEh5cEV2ZW50Q2F0ZWdvcnksIEh5cEV2ZW50U3ViQ2F0ZWdvcnkgfSBmcm9tICcuLi8uLi9tb2RlbC9ldmVudC9oeXAtZXZlbnQtY2F0ZWdvcnkudHlwZSc7XG5pbXBvcnQgeyBIeXBDb21tZW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zdG9yZS9jb21tZW50cy9jb21tZW50cy5zZXJ2aWNlJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSHlwU2VydmljZVRvb2x0aXAgfSBmcm9tICcuLi8uLi9tb2RlbC9ldmVudC9oeXAtZXZlbnQtdG9vbHRpcC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSHZ5RXZlbnREZXRhaWxzVG9vbHRpcENvbXBvbmVudCB9IGZyb20gJy4vZXZlbnQtZGV0YWlscy10b29sdGlwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFdmVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zdG9yZS9ldmVudC9ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEh2eUV2ZW50QWRkRXZlbnRDb21wb25lbnQgfSBmcm9tICcuL2FkZC1ldmVudC9hZGQtZXZlbnQuY29tcG9uZW50JztcbmltcG9ydCB7IEh5cEFjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVsL3Byb2NlZHVyZS9oeXAtYWN0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBIeXBDb21tZW50IH0gZnJvbSAnLi4vLi4vbW9kZWwvY29tbWVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtBY3Rpb25zLCBvZlR5cGV9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHtFdmVudFNlbGVjdG9yc30gZnJvbSBcIi4uLy4uL3N0b3JlL2V2ZW50L2V2ZW50LnNlbGVjdG9yc1wiO1xuXG5leHBvcnQgdHlwZSBDaGFuZ2VTdGF0dXNDb250ZXh0ID0ge1xuICBjb21tZW50OiBzdHJpbmc7XG4gIGV2ZW50czogSHlwRXZlbnREZXRhaWxzW107XG4gIHN0YXR1czogc3RyaW5nO1xuICBhbGw6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEh5cEVxdWlwbWVudFdpdGhNYXRjaGluZyBleHRlbmRzIEh5cEVxdWlwbWVudCB7XG4gIGh0bWw6IHN0cmluZztcbiAgZGlzcGxheU5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBIeXBFdmVudERldGFpbHNXaXRoTWF0Y2hpbmcgZXh0ZW5kcyBIeXBFdmVudERldGFpbHMge1xuICBodG1sOiBzdHJpbmc7XG4gIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2h2eS1ldmVudC1kZXRhaWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vZXZlbnQtZGV0YWlsLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBFdmVudERldGFpbENvbXBvbmVudCBleHRlbmRzIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZXtcbiAgb3BlbmVkOiBib29sZWFuW10gPSBbXTtcbiAgY3JpdGljYWxpdGllcyA9IEh5cEV2ZW50Q3JpdGljYWxpdHkudmFsdWVzO1xuICBfZXZlbnRzOiBIeXBFdmVudERldGFpbHNbXSA9IFtdO1xuICBldmVudE1vZGlmaWNhdGlvbnM6IFBhcnRpYWw8SHlwRXZlbnREZXRhaWxzPltdID0gW107XG4gIEBPdXRwdXQoKSBtb2RpZmllZEV2ZW50cyA9IG5ldyBFdmVudEVtaXR0ZXI8W1BhcnRpYWw8SHlwRXZlbnREZXRhaWxzPiwgSHlwRXZlbnREZXRhaWxzXVtdPigpO1xuICBfcHJvY2VkdXJlPzogSHlwUHJvY2VkdXJlO1xuICBwcm9jZWR1cmVNb2RpZmljYXRpb25zOiBQYXJ0aWFsPEh5cFByb2NlZHVyZT4gPSB7fTtcbiAgQE91dHB1dCgpIG1vZGlmaWVkUHJvY2VkdXJlID0gbmV3IEV2ZW50RW1pdHRlcjxbUGFydGlhbDxIeXBQcm9jZWR1cmU+LCBIeXBQcm9jZWR1cmVdIHwgdW5kZWZpbmVkPigpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgRE9NQUlOUyA9IERPTUFJTlMudmFsdWVzO1xuICBAT3V0cHV0KCkgZXZlbnRFcnJvcnMgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZmllbGQ6IHN0cmluZzsgY29kZTogc3RyaW5nIH1bXVtdPigpO1xuICBAT3V0cHV0KCkgYWRkZWRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8SHlwRXZlbnREZXRhaWxzPigpO1xuICBlcnJvcnM6IHsgZmllbGQ6IHN0cmluZzsgY29kZTogc3RyaW5nIH1bXVtdID0gW107XG4gIGNhbkNsb3NlU29tZSA9IGZhbHNlO1xuICBjaGFuZ2VTdGF0dXNDb250ZXh0OiBDaGFuZ2VTdGF0dXNDb250ZXh0ID0ge1xuICAgIGNvbW1lbnQ6ICcnLFxuICAgIGV2ZW50czogW10sXG4gICAgc3RhdHVzOiAnRE9ORScsXG4gICAgYWxsOiBmYWxzZVxuICB9O1xuICBASW5wdXQoKSB0aXRsZT86IHN0cmluZztcbiAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW4gfCBudWxsID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJlYWRvbmx5UHJvY2VkdXJlOiBib29sZWFuIHwgbnVsbCA9IGZhbHNlO1xuICBASW5wdXQoKSBlbmFibGVFZGl0QWN0aW9uczogYm9vbGVhbiB8IG51bGwgPSBmYWxzZTtcbiAgQElucHV0KCkgcmVhZE9ubHlDb21tZW50ID0gZmFsc2U7XG4gIG92ZXJsYXlSZWY/OiBPdmVybGF5UmVmO1xuICBAVmlld0NoaWxkKCdjb25maXJtRGlhbG9nJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSBjb25maXJtRGlhbG9nITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQE91dHB1dCgpIGNvbWZpcm1EaWFsb2dPcGVuZWQgPSBuZXcgRXZlbnRFbWl0dGVyPENoYW5nZVN0YXR1c0NvbnRleHQ+KCk7XG4gIG9uRXF1aXBtZW50U2VhcmNoJCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcbiAgZXF1aXBtZW50U2VsZWN0VmFsdWU6IChzdHJpbmcgfCBIeXBFcXVpcG1lbnQgfCB1bmRlZmluZWQpW10gPSBbXTtcbiAgZXF1aXBtZW50cyQ6IE9ic2VydmFibGU8SHlwRXF1aXBtZW50V2l0aE1hdGNoaW5nW10+O1xuICBAVmlld0NoaWxkcmVuKCdkZXRhaWxIb3Zlckljb24nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgZGV0YWlsSG92ZXJJY29uITogUXVlcnlMaXN0PEVsZW1lbnRSZWY8UHJ5SWNvbkNvbXBvbmVudD4+O1xuICBvbkV2ZW50U2VhcmNoJCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcbiAgZXZlbnRTZWxlY3RWYWx1ZTogKHN0cmluZyB8IEh5cEV2ZW50RGV0YWlscyB8IHVuZGVmaW5lZClbXSA9IFtdO1xuICBldmVudHMkOiBPYnNlcnZhYmxlPEh5cEV2ZW50RGV0YWlsc1dpdGhNYXRjaGluZ1tdPjtcbiAgQE91dHB1dCgpIGNvbW1lbnRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgfCB7IGV2ZW50OiBIeXBFdmVudERldGFpbHM7IGNvbW1lbnRzOiBIeXBDb21tZW50W10gfVtdXG4gICAgfCB7XG4gICAgICAgIGFjdGlvbjogSHlwQWN0aW9uO1xuICAgICAgICBjb21tZW50czogSHlwQ29tbWVudFtdO1xuICAgICAgfVxuICA+KCk7XG4gIHByb2ZpbGU6IHsgc3ViOiBzdHJpbmcgfCB1bmRlZmluZWQsIHVzZXJOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQgfSB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBzZXQgbWUobWU6IHsgc3ViOiBzdHJpbmcgfCB1bmRlZmluZWQsIHVzZXJOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQgfSB8IG51bGwpIHtcbiAgICB0aGlzLnByb2ZpbGUgPSBtZTtcbiAgICB0aGlzLnNldENyZWF0b3JGb3JFdmVudHMoKTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBldmVudHMoZXZlbnRzOiBIeXBFdmVudERldGFpbHNbXSkge1xuICAgIHRoaXMuX2V2ZW50cyA9IGV2ZW50cy5maWx0ZXIoKGV2KSA9PiAhIWV2KTtcbiAgICB0aGlzLmV2ZW50TW9kaWZpY2F0aW9ucyA9IG5ldyBBcnJheSh0aGlzLl9ldmVudHMubGVuZ3RoKTtcbiAgICBpZih0aGlzLl9ldmVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICB0aGlzLm9wZW5lZCA9IFt0cnVlXTtcbiAgICB9XG4gICAgdGhpcy5jYW5DbG9zZVNvbWUgPSB0aGlzLl9ldmVudHMuZmlsdGVyKChldikgPT4gZXYuc3RhdHVzICE9PSAnRE9ORScpLmxlbmd0aCA+IDA7XG4gICAgdGhpcy5fZXZlbnRzLmZvckVhY2goKGV2LCBpZHgpID0+IHtcbiAgICAgIHRoaXMub25FcXVpcG1lbnRTZWFyY2gkLm5leHQoaWR4KTtcbiAgICAgIGlmIChldi5lcXVpcG1lbnQgJiYgZXYuZXF1aXBtZW50LmlkICYmIGV2LmVxdWlwbWVudC5pZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFcXVpcG1lbnRDaGFuZ2UoXG4gICAgICAgICAge1xuICAgICAgICAgICAgLi4uZXYuZXF1aXBtZW50LFxuICAgICAgICAgICAgZGlzcGxheU5hbWU6IGAke2V2LmVxdWlwbWVudC5uYW1lfSAtICR7dGhpcy5pMThuU2VydmljZS5pbnN0YW50KCdAaHZ5LmV2ZW50LmZhbWlseS4nICsgZXYuZXF1aXBtZW50LmZhbWlseSl9YFxuICAgICAgICAgIH0gYXMgdW5rbm93biBhcyBIeXBFcXVpcG1lbnRXaXRoTWF0Y2hpbmcsXG4gICAgICAgICAgaWR4XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoZXYucGFyZW50ICYmIGV2LnBhcmVudC5pZCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUGFyZW50Q2hhbmdlKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC4uLmV2LnBhcmVudCxcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBgJHtwYWRJZC5mbihldi5wYXJlbnQuaWQpfSAtICR7ZXYucGFyZW50Lm5hbWV9YFxuICAgICAgICAgIH0gYXMgdW5rbm93biBhcyBIeXBFdmVudERldGFpbHNXaXRoTWF0Y2hpbmcsXG4gICAgICAgICAgaWR4XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5zZXRDcmVhdG9yRm9yRXZlbnRzKCk7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgcHJvY2VkdXJlKHByb2NlZHVyZTogSHlwUHJvY2VkdXJlKSB7XG4gICAgdGhpcy5fcHJvY2VkdXJlID0gcHJvY2VkdXJlO1xuICAgIHRoaXMucHJvY2VkdXJlTW9kaWZpY2F0aW9ucyA9IHt9O1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGNhbmNlbE1vZGlmaWNhdGlvbnMoZXZ0OiBhbnkpIHtcbiAgICB0aGlzLmVxdWlwbWVudFNlbGVjdFZhbHVlID0gdGhpcy5lcXVpcG1lbnRTZWxlY3RWYWx1ZS5tYXAoKGVxdWlwbWVudCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGluaXRpYWxFcXVpcG1lbnQgPSB0aGlzLl9ldmVudHNbaW5kZXhdLmVxdWlwbWVudDtcbiAgICAgIGlmKGluaXRpYWxFcXVpcG1lbnQpe1xuICAgICAgICBjb25zdCByZWdleCA9IHRoaXMuZ2V0Q29tYm9Cb3hSZWdFeHAoaW5pdGlhbEVxdWlwbWVudC5uYW1lKTtcbiAgICAgICAgY29uc3QgaHRtbCA9IGAke2luaXRpYWxFcXVpcG1lbnQubmFtZX0gLSAke3RoaXMuaTE4blNlcnZpY2UuaW5zdGFudCgnQGh2eS5ldmVudC5mYW1pbHkuJyArIGluaXRpYWxFcXVpcG1lbnQuZmFtaWx5KX1gO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLiBpbml0aWFsRXF1aXBtZW50LFxuICAgICAgICAgIGh0bWw6IGh0bWwucmVwbGFjZUFsbChyZWdleCwgKG1hdGNoZWQ6IHN0cmluZywgY2FwdHVyZTE6IHN0cmluZykgPT4gYDxiPiR7Y2FwdHVyZTF9PC9iPmApLFxuICAgICAgICAgIGRpc3BsYXlOYW1lOiBodG1sXG4gICAgICAgIH0gYXMgSHlwRXF1aXBtZW50V2l0aE1hdGNoaW5nXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICB9XG4gICAgfSlcbiAgICB0aGlzLmV2ZW50U2VsZWN0VmFsdWUgPSB0aGlzLmV2ZW50U2VsZWN0VmFsdWUubWFwKChldmVudFBhcmVudCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGluaXRpYWxQYXJlbnQgPSB0aGlzLl9ldmVudHNbaW5kZXhdLnBhcmVudDtcbiAgICAgIGlmKGluaXRpYWxQYXJlbnQpe1xuICAgICAgICBjb25zdCByZWdleCA9IHRoaXMuZ2V0Q29tYm9Cb3hSZWdFeHAoaW5pdGlhbFBhcmVudC5uYW1lKTtcbiAgICAgICAgY29uc3QgaHRtbCA9IGAke3BhZElkLmZuKGluaXRpYWxQYXJlbnQuaWQpfSAtICR7aW5pdGlhbFBhcmVudC5uYW1lfWA7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uaW5pdGlhbFBhcmVudCxcbiAgICAgICAgICBodG1sOiBodG1sLnJlcGxhY2VBbGwocmVnZXgsIChtYXRjaGVkOiBzdHJpbmcsIGNhcHR1cmUxOiBzdHJpbmcpID0+IGA8Yj4ke2NhcHR1cmUxfTwvYj5gKSxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogaHRtbFxuICAgICAgICB9IGFzIEh5cEV2ZW50RGV0YWlsc1dpdGhNYXRjaGluZ1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH0pXG4gICAgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnMgPSBuZXcgQXJyYXkodGhpcy5fZXZlbnRzLmxlbmd0aCk7XG4gICAgdGhpcy5wcm9jZWR1cmVNb2RpZmljYXRpb25zID0ge307XG4gICAgdGhpcy5fb3V0cHV0TW9kaWZpY2F0aW9ucygpO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGVxdWlwbWVudE5hbWUocmVxdWVzdDogeyBpbmRleDogbnVtYmVyOyBlcXVpcG1lbnROYW1lPzogc3RyaW5nIH0pIHtcbiAgICBpZiAocmVxdWVzdC5lcXVpcG1lbnROYW1lKSB7XG4gICAgICBjb25zdCBpbmQgPSByZXF1ZXN0LmVxdWlwbWVudE5hbWUubGFzdEluZGV4T2YoJy0nKTtcbiAgICAgIGNvbnN0IGVxdWlwTmFtZSA9IHJlcXVlc3QuZXF1aXBtZW50TmFtZS5zbGljZSgwLCBpbmQhIC0gMSkudG9VcHBlckNhc2UoKTtcbiAgICAgIHRoaXMuZXF1aXBtZW50U2VydmljZS5maW5kQnlOYW1lKGVxdWlwTmFtZSkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgY29uc3QgZXF1aXAgPSB7XG4gICAgICAgICAgaWQ6IHJlc3VsdC5pZCxcbiAgICAgICAgICBuYW1lOiByZXN1bHQubmFtZSxcbiAgICAgICAgICBlbnRpdHk6IHJlc3VsdC5lbnRpdHksXG4gICAgICAgICAgZmFtaWx5OiByZXN1bHQuZmFtaWx5LFxuICAgICAgICAgIGRvbWFpbjogcmVzdWx0LmRvbWFpbixcbiAgICAgICAgICBkaXNwbGF5TmFtZTogcmVxdWVzdC5lcXVpcG1lbnROYW1lXG4gICAgICAgIH0gYXMgSHlwRXF1aXBtZW50V2l0aE1hdGNoaW5nXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFcXVpcG1lbnRDaGFuZ2UoZXF1aXAsIHJlcXVlc3QuaW5kZXgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0ZWRFcXVpcG1lbnQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVxdWlwbWVudFNlcnZpY2U6IEVxdWlwbWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmUsXG4gICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcml2YXRlIGkxOG5TZXJ2aWNlOiBQcnlJMThuU2VydmljZSxcbiAgICBwcml2YXRlIHByeURpYWxvZzogUHJ5RGlhbG9nU2VydmljZSxcbiAgICBwcml2YXRlIGNvbW1lbnRzU2VydmljZTogSHlwQ29tbWVudHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY3Rpb25zJDogQWN0aW9uc1xuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShFdmVudEFjdGlvbnMuc3RhdHVzKSxcbiAgICAgICAgZGVsYXkoMTAwMClcbiAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogcmVzdWx0ID0+IHtcbiAgICAgICAgICAgIGlmKHJlc3VsdC5ldmVudCAmJiByZXN1bHQuZXZlbnQuaWQpIHtcbiAgICAgICAgICAgICAgdGhpcy5ldmVudFNlcnZpY2UuZ2V0KHJlc3VsdC5ldmVudC5pZCkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1lbnRzU2VydmljZS5nZXQocmVzdWx0LmV2ZW50IS5pZCwgJ2V2ZW50cycpXG4gICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChjb21tZW50cykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1lbnRlZC5uZXh0KFt7IGV2ZW50LCBjb21tZW50cyB9XSk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0gZWxzZSBpZihyZXN1bHQucHJvY2VkdXJlICYmIHJlc3VsdC50YXJnZXRTdGF0dXMgPT09ICdET05FJyl7XG4gICAgICAgICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KEV2ZW50U2VsZWN0b3JzLmRldGFpbHMpLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZSgxKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKGRldGFpbHMgPT4ge1xuICAgICAgICAgICAgICAgIGlmKGRldGFpbHMucHJvY2VkdXJlICYmIGRldGFpbHMucHJvY2VkdXJlLmV2ZW50cykge1xuICAgICAgICAgICAgICAgICAgdGhpcy5jYW5DbG9zZVNvbWUgPSAhIWRldGFpbHMucHJvY2VkdXJlLmV2ZW50cy5maW5kKGV2ZW50ID0+IGV2ZW50LnN0YXR1cyAhPT0gJ0RPTkUnKTtcbiAgICAgICAgICAgICAgICAgIGlmKCF0aGlzLmNhbkNsb3NlU29tZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ldmVudHMuZm9yRWFjaChldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RhdHVzID0gJ0RPTkUnO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRXZlbnRBY3Rpb25zLnNlbGVjdCh7IGlkczogW10sIGN1bXVsYXRpdmU6IGZhbHNlIH0pKTtcbiAgICB0aGlzLmVxdWlwbWVudHMkID0gdGhpcy5vbkVxdWlwbWVudFNlYXJjaCQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBpZiAodGhpcy5lcXVpcG1lbnRTZWxlY3RWYWx1ZVtpbmRleF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuZXF1aXBtZW50U2VsZWN0VmFsdWVbaW5kZXhdID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHNlYXJjaDtcbiAgICAgICAgaWYoIHR5cGVvZiB0aGlzLmVxdWlwbWVudFNlbGVjdFZhbHVlW2luZGV4XSA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAodGhpcy5lcXVpcG1lbnRTZWxlY3RWYWx1ZVtpbmRleF0gYXMgc3RyaW5nKS5sZW5ndGggPiAyKXtcbiAgICAgICAgICBjb25zdCBlcXVpcFZhbHVlID0gdGhpcy5lcXVpcG1lbnRTZWxlY3RWYWx1ZVtpbmRleF0gYXMgc3RyaW5nO1xuICAgICAgICAgIGNvbnN0IGZpcnN0SW5kZXggPSBlcXVpcFZhbHVlLmluZGV4T2YoJy0nKTtcbiAgICAgICAgICBjb25zdCBsYXN0SW5kZXggPSBlcXVpcFZhbHVlLmxhc3RJbmRleE9mKCctJyk7XG4gICAgICAgICAgaWYoZmlyc3RJbmRleCAhPT0gLTEgJiYgbGFzdEluZGV4ICE9PSBmaXJzdEluZGV4KXtcbiAgICAgICAgICAgIHNlYXJjaCA9IGVxdWlwVmFsdWUuc3Vic3RyaW5nKDAsIGxhc3RJbmRleC0xKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2VhcmNoID0gZXF1aXBWYWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VhcmNoID0gKHRoaXMuZXF1aXBtZW50U2VsZWN0VmFsdWVbaW5kZXhdIGFzIEh5cEVxdWlwbWVudFdpdGhNYXRjaGluZykubmFtZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5lcXVpcG1lbnRTZXJ2aWNlLnNlYXJjaChzZWFyY2gpLnBpcGUoXG4gICAgICAgICAgbWFwKChlcXVpcG1lbnRzKSA9PiB7XG4gICAgICAgICAgICBlcXVpcG1lbnRzID0gdGhpcy5maWx0ZXJFcXVpcG1lbnRzSWZTZWxlY3RlZChpbmRleCwgc2VhcmNoLCBlcXVpcG1lbnRzKTtcbiAgICAgICAgICAgIHJldHVybiBlcXVpcG1lbnRzLm1hcCgoZXF1aXBtZW50KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gdGhpcy5nZXRDb21ib0JveFJlZ0V4cChzZWFyY2gpO1xuICAgICAgICAgICAgICBjb25zdCBodG1sID0gYCR7ZXF1aXBtZW50Lm5hbWV9IC0gJHt0aGlzLmkxOG5TZXJ2aWNlLmluc3RhbnQoJ0BodnkuZXZlbnQuZmFtaWx5LicgKyBlcXVpcG1lbnQuZmFtaWx5KX1gO1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLmVxdWlwbWVudCxcbiAgICAgICAgICAgICAgICBodG1sOiBodG1sLnJlcGxhY2VBbGwocmVnZXgsIChtYXRjaGVkOiBzdHJpbmcsIGNhcHR1cmUxOiBzdHJpbmcpID0+IGA8Yj4ke2NhcHR1cmUxfTwvYj5gKSxcbiAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogaHRtbFxuICAgICAgICAgICAgICB9IGFzIEh5cEVxdWlwbWVudFdpdGhNYXRjaGluZztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKCgpID0+IHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCdTZWFyY2ggRXF1aXBtZW50IHByb2JsZW0nKSkpLFxuICAgICAgc2hhcmVSZXBsYXkoKVxuICAgICk7XG5cbiAgICB0aGlzLmV2ZW50cyQgPSB0aGlzLm9uRXZlbnRTZWFyY2gkLnBpcGUoc3RhcnRXaXRoKCksIGRlYm91bmNlVGltZSg1MDApKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlYXJjaCA9XG4gICAgICAgICAgdHlwZW9mIHRoaXMuZXZlbnRTZWxlY3RWYWx1ZVtpbmRleF0gPT09ICdzdHJpbmcnICYmICh0aGlzLmV2ZW50U2VsZWN0VmFsdWVbaW5kZXhdIGFzIHN0cmluZykubGVuZ3RoID4gMlxuICAgICAgICAgICAgPyAodGhpcy5ldmVudFNlbGVjdFZhbHVlW2luZGV4XSBhcyBzdHJpbmcpXG4gICAgICAgICAgICA6IC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgdGhpcy5ldmVudFNlbGVjdFZhbHVlW2luZGV4XVxuICAgICAgICAgICAgICA/IHBhZElkLmZuKCh0aGlzLmV2ZW50U2VsZWN0VmFsdWVbaW5kZXhdIGFzIEh5cEV2ZW50RGV0YWlscykuaWQpXG4gICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gdGhpcy5ldmVudFNlcnZpY2Uuc2VhcmNoKHNlYXJjaCwgWyduYW1lJywgJ2lkJ10pLnBpcGUoXG4gICAgICAgICAgbWFwKChldmVudHMpID0+XG4gICAgICAgICAgICBldmVudHMubWFwKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCByZWdleCA9IHRoaXMuZ2V0Q29tYm9Cb3hSZWdFeHAoc2VhcmNoKTtcbiAgICAgICAgICAgICAgY29uc3QgaHRtbCA9IGAke3BhZElkLmZuKGV2ZW50LmlkKX0gLSAke2V2ZW50Lm5hbWV9YDtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5ldmVudCxcbiAgICAgICAgICAgICAgICBodG1sOiBodG1sLnJlcGxhY2VBbGwocmVnZXgsIChtYXRjaGVkOiBzdHJpbmcsIGNhcHR1cmUxOiBzdHJpbmcpID0+IGA8Yj4ke2NhcHR1cmUxfTwvYj5gKSxcbiAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogaHRtbFxuICAgICAgICAgICAgICB9IGFzIEh5cEV2ZW50RGV0YWlsc1dpdGhNYXRjaGluZztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCdTZWFyY2ggRXF1aXBtZW50IHByb2JsZW0nKSk7XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDcmVhdG9yRm9yRXZlbnRzKCl7XG4gICAgdGhpcy5fZXZlbnRzID0gdGhpcy5fZXZlbnRzLm1hcCgoZXZlKSA9PiB7XG4gICAgICAgIHJldHVybiB7Li4uZXZlLFxuICAgICAgICAgIGNyZWF0b3I6IGV2ZS5jcmVhdG9yID8gZXZlLmNyZWF0b3IgOiBldmUuZXh0ZXJuYWxTb3VyY2VSZWYgPT09ICdIeXBlcnZpc2V1cicgPyB0aGlzLnByb2ZpbGU/LnVzZXJOYW1lIGFzIHN0cmluZyA6ICctLSdcbiAgICAgICAgfVxuICAgICAgfVxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29tYm9Cb3hSZWdFeHAoc2VhcmNoOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gUmVnRXhwKGAoJHtzZWFyY2h9KWAgPz8gJygvLS8tLyknLCAnZ2lkJyk7XG4gIH1cblxuICBmaWx0ZXJFcXVpcG1lbnRzSWZTZWxlY3RlZChpbmRleDogbnVtYmVyLCBzZWFyY2g6IHN0cmluZywgZXF1aXBtZW50czogSHlwRXF1aXBtZW50W10pe1xuICAgIGxldCBuYW1lO1xuICAgIGxldCBmYW1pbHk7XG4gICAgbGV0IHNlbGVjdGVkTmFtZTtcbiAgICBsZXQgc2VsZWN0ZWRGYW1pbHk7XG4gICAgLy8gY3JlYXRlXG4gICAgaWYodGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdICYmIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XS5lcXVpcG1lbnQpIHtcbiAgICAgIGNvbnN0IGVxdWlwbWVudCA9IHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XS5lcXVpcG1lbnQgYXMgSHlwRXF1aXBtZW50V2l0aE1hdGNoaW5nO1xuICAgICAgbmFtZSA9IGVxdWlwbWVudD8ubmFtZTtcbiAgICAgIGNvbnN0IGRpc3BsYXlOYW1lID0gZXF1aXBtZW50Py5kaXNwbGF5TmFtZTtcbiAgICAgIGNvbnN0IGluZCA9IGRpc3BsYXlOYW1lPy5sYXN0SW5kZXhPZignLScpO1xuICAgICAgZmFtaWx5ID0gZGlzcGxheU5hbWU/LnNsaWNlKGluZCEgKyAyKS50b1VwcGVyQ2FzZSgpO1xuICAgICAgLy8gdXBkYXRlXG4gICAgfSBlbHNlIGlmICh0aGlzLl9ldmVudHMgJiYgdGhpcy5fZXZlbnRzW2luZGV4XSAmJiB0aGlzLl9ldmVudHNbaW5kZXhdLmVxdWlwbWVudCkge1xuICAgICAgbmFtZSA9IHRoaXMuX2V2ZW50c1tpbmRleF0uZXF1aXBtZW50Lm5hbWU7XG4gICAgICBmYW1pbHkgPSB0aGlzLl9ldmVudHNbaW5kZXhdLmVxdWlwbWVudC5mYW1pbHk7XG4gICAgICAvLyBsZSBmb3JtYXQgZmFtaWx5IGVzdCBkZSBzdHlsZSBFUF9PVVZSQUdFIG91IEVQX0ZPWUVSX0xVTUlORVVYIG91IFZQX0NBTVxuICAgICAgLy8gcG91ciBwb3V2b2lyIGZhaXJlIGxhIGNvbXBhcmFpc29uLCBpbCBmYXV0IGVubGV2ZXIgbGUgcHLDqWZpeGVcbiAgICAgIGNvbnN0IGluZCA9IGZhbWlseS5pbmRleE9mKCdfJyk7XG4gICAgICBmYW1pbHkgPSBmYW1pbHkuc2xpY2UoaW5kISArIDEpO1xuICAgICAgZmFtaWx5ID0gZmFtaWx5LnJlcGxhY2VBbGwoJ18nLCcgJyk7XG4gICAgICAvLyBpY2kgb24gcmVtcGxhY2UgQ0FNIHBhciBDQU3DiVJBIGNhciBlbiBjYXMgZGUgY29tYm8gYm94IG91dmVydGUgcHVpcyBmZXJtw6llIGF2ZWNcbiAgICAgIC8vIHVuIMOpcXVpcGVtZW50IHPDqWxlY3Rpb25uw6ksIGxhIGZhbWlsbGUgc2VyYSBjYW3DqXJhIGV0IHBhcyBjYW1cbiAgICAgIGlmIChmYW1pbHkgPT09ICdDQU0nKXtcbiAgICAgICAgZmFtaWx5ID0gJ0NBTcOJUkEnO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyDDqXF1aXBlbWVudCBzw6lsZWN0aW9ubsOpIDEgZm9pcyBkYW5zIGxhIGNvbWJvIGJveFxuICAgIGlmKHR5cGVvZiB0aGlzLmVxdWlwbWVudFNlbGVjdFZhbHVlW2luZGV4XSA9PT0gJ29iamVjdCcpe1xuICAgICAgY29uc3Qgc2VsZWN0ZWRFcXVpcG1lbnQgPSB0aGlzLmVxdWlwbWVudFNlbGVjdFZhbHVlW2luZGV4XSBhcyBIeXBFcXVpcG1lbnRXaXRoTWF0Y2hpbmdcbiAgICAgIHNlbGVjdGVkTmFtZSA9IHNlbGVjdGVkRXF1aXBtZW50Lm5hbWU7XG4gICAgICBjb25zdCBkaXNwbGF5TmFtZSA9IHNlbGVjdGVkRXF1aXBtZW50LmRpc3BsYXlOYW1lO1xuICAgICAgY29uc3QgaW5kID0gZGlzcGxheU5hbWUubGFzdEluZGV4T2YoJy0nKTtcbiAgICAgIHNlbGVjdGVkRmFtaWx5ID0gZGlzcGxheU5hbWU/LnNsaWNlKGluZCEgKyAyKS50b1VwcGVyQ2FzZSgpO1xuICAgICAgLy8gY29tYm8gYm94IG91dmVydGUgcHVpcyBmZXJtw6llIGF2ZWMgdW4gw6lxdWlwZW1lbnQgc8OpbGVjdGlvbm7DqVxuICAgIH0gZWxzZSBpZih0eXBlb2YgdGhpcy5lcXVpcG1lbnRTZWxlY3RWYWx1ZVtpbmRleF0gPT09ICdzdHJpbmcnKXtcbiAgICAgIGxldCBmdWxsTmFtZSA9IHRoaXMuZXF1aXBtZW50U2VsZWN0VmFsdWVbaW5kZXhdIGFzIHN0cmluZztcbiAgICAgIGNvbnN0IGluZCA9IGZ1bGxOYW1lLmxhc3RJbmRleE9mKCctJyk7XG4gICAgICBzZWxlY3RlZEZhbWlseSA9IGZ1bGxOYW1lLnNsaWNlKGluZCEgKyAyKS50b1VwcGVyQ2FzZSgpO1xuICAgICAgc2VsZWN0ZWROYW1lID0gZnVsbE5hbWUuc2xpY2UoMCwgaW5kISAtIDEpLnRvVXBwZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgaWYoc2VsZWN0ZWROYW1lID09PSBuYW1lICYmIHNlbGVjdGVkRmFtaWx5ID09PSBmYW1pbHkpIHtcbiAgICAgIGVxdWlwbWVudHMgPSBlcXVpcG1lbnRzLmZpbHRlcihlcXVpcCA9PiBlcXVpcC5uYW1lID09PSBzZWFyY2gpO1xuICAgICAgdGhpcy5zZWxlY3RlZEVxdWlwbWVudCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFcXVpcG1lbnQgPSBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGVxdWlwbWVudHM7XG4gIH1cblxuICBnZXQgbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZmlsZTtcbiAgfVxuXG4gIGdldCBldmVudHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50cy5tYXAoKGV2dCwgaWR4KSA9PiAoeyAuLi5ldnQsIC4uLih0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpZHhdID8/IHt9KSB9KSk7XG4gIH1cblxuICBnZXQgY2FuQXNzb2NpYXRlUHJvY2VkdXJlKCkge1xuICAgIHJldHVybiB0aGlzLl9ldmVudHMuZXZlcnkoKGV2dCkgPT4gZXZ0LnN0YXR1cyA9PT0gJ05FVycgJiYgZXZ0LmlkICE9PSAtMSk7XG4gIH1cblxuICBnZXQgcHJvY2VkdXJlKCk6IEh5cFByb2NlZHVyZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3Byb2NlZHVyZVxuICAgICAgPyB7XG4gICAgICAgICAgLi4udGhpcy5fcHJvY2VkdXJlLFxuICAgICAgICAgIC4uLih0aGlzLnByb2NlZHVyZU1vZGlmaWNhdGlvbnMgPz8ge30pLFxuICAgICAgICAgIGV2ZW50czogdGhpcy5ldmVudHNcbiAgICAgICAgfVxuICAgICAgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgY2xvc2VDb21tZW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvY2VkdXJlPy5jbG9zZUNvbW1lbnQgPz8gJyc7XG4gIH1cblxuICB0b2dnbGUoaTogbnVtYmVyKSB7XG4gICAgdGhpcy5vcGVuZWRbaV0gPSAhdGhpcy5vcGVuZWRbaV07XG4gIH1cblxuICBtb2RpZnlFdmVudChpbmRleDogbnVtYmVyLCBwcm9wOiBzdHJpbmcsICRldmVudDogRXZlbnQgfCBzdHJpbmcpIHtcbiAgICB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0gPSB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0gPz8ge30gYXMgUGFydGlhbDxIeXBFdmVudERldGFpbHM+O1xuICAgIGlmKHByb3AgPT09ICdjYXRlZ29yeScpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0uc3ViQ2F0ZWdvcnk7XG4gICAgICBpZigkZXZlbnQgPT09ICdBTk9NQUxZJykge1xuICAgICAgICB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0uc3ViQ2F0ZWdvcnkgPSAnTk9ORSc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaXNEYXRlID0gcHJvcC5pbmRleE9mKCdEYXRlJykgPiAtMTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgbmV3VmFsdWUgPSAkZXZlbnQgaW5zdGFuY2VvZiBFdmVudCA/ICRldmVudC50YXJnZXQ/LnZhbHVlIDogJGV2ZW50O1xuXG4gICAgY29uc3QgY29ycmVjdGVkVmFsdWUgPSAhaXNEYXRlID8gbmV3VmFsdWUgOiB0aGlzLmNvbnZlcnREYXRlKG5ld1ZhbHVlKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKHRoaXMuX2V2ZW50c1tpbmRleF1bcHJvcF0gIT09IGNvcnJlY3RlZFZhbHVlKSB7XG4gICAgICBpZiAoIXRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XSkge1xuICAgICAgICB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0gPSB7fTtcbiAgICAgIH1cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XVtwcm9wXSA9IGNvcnJlY3RlZFZhbHVlO1xuXG4gICAgICB0aGlzLl9vdXRwdXRNb2RpZmljYXRpb25zKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghIXRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XSkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGRlbGV0ZSB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF1bcHJvcF07XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0pLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGRlbGV0ZSB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fb3V0cHV0TW9kaWZpY2F0aW9ucygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFjY2VzcyhldmVudDogSHlwRXZlbnREZXRhaWxzKSB7XG4gICAgY29uc3QgcmVhZG9ubHkgPVxuICAgICAgdGhpcy5yZWFkb25seSB8fFxuICAgICAgZXZlbnQuc3RhdHVzID09PSAnRE9ORScgfHxcbiAgICAgIChbJ0xJTUlUJywgJ09VVE9GT1JERVInLCAnQU5PTUFMWSddLmluY2x1ZGVzKGV2ZW50LmNhdGVnb3J5KSAmJiBldmVudC5leHRlcm5hbFNvdXJjZVJlZiAhPT0gJ0h5cGVydmlzZXVyJyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogcmVhZG9ubHksXG4gICAgICBjYXRlZ29yeTogcmVhZG9ubHksXG4gICAgICBzdWJDYXRlZ29yeTogcmVhZG9ubHksXG4gICAgICBjcml0aWNhbGl0eTogZXZlbnQuc3RhdHVzID09PSAnRE9ORScsXG4gICAgICBkZXNjcmlwdGlvbjogcmVhZG9ubHksXG4gICAgICBhZGRyZXNzOiByZWFkb25seSxcbiAgICAgIHNvdXJjZTogdHJ1ZSxcbiAgICAgIGRvbWFpbjogZXZlbnQuZXh0ZXJuYWxTb3VyY2VSZWYgPT09ICdXaW50aWNzJyB8fCBldmVudC5leHRlcm5hbFNvdXJjZVJlZiA9PT0gJ0NpdHlsaW54JyB8fCBldmVudC5zdGF0dXMgPT09ICdET05FJyxcbiAgICAgIGVxTmFtZTogZXZlbnQuZXh0ZXJuYWxTb3VyY2VSZWYgPT09ICdXaW50aWNzJyB8fCBldmVudC5leHRlcm5hbFNvdXJjZVJlZiA9PT0gJ0NpdHlsaW54JyB8fCBldmVudC5zdGF0dXMgPT09ICdET05FJyxcbiAgICAgIGVxRW50aXR5OiByZWFkb25seSxcbiAgICAgIHN0YXJ0RGF0ZTogZXZlbnQuc3RhdHVzID09PSAnRE9ORScsXG4gICAgICBlbmREYXRlOiBldmVudC5zdGF0dXMgPT09ICdET05FJyxcbiAgICAgIHBhcmVudDogZXZlbnQuc3RhdHVzID09PSAnRE9ORSdcbiAgICB9O1xuICB9XG5cbiAgIF9vdXRwdXRNb2RpZmljYXRpb25zKCkge1xuICAgIHRoaXMudmFsaWRhdGVFdmVudHModGhpcy5ldmVudHMpO1xuICAgIHRoaXMubW9kaWZpZWRFdmVudHMubmV4dCh0aGlzLmV2ZW50cy5tYXAoKGV2LCBpZHgpID0+IFt0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpZHhdLCBldl0pKTtcbiAgICB0aGlzLm1vZGlmaWVkUHJvY2VkdXJlLm5leHQodGhpcy5wcm9jZWR1cmUgPyBbdGhpcy5wcm9jZWR1cmVNb2RpZmljYXRpb25zLCB0aGlzLnByb2NlZHVyZSFdIDogdW5kZWZpbmVkKTtcbiAgfVxuXG4gIHZhbGlkYXRlRXZlbnRzKGV2ZW50czogSHlwRXZlbnREZXRhaWxzW10pIHtcbiAgICB0aGlzLmVycm9ycyA9IFtdO1xuICAgIGV2ZW50cy5mb3JFYWNoKChldmVudCwgaWR4KSA9PiB7XG4gICAgICBjb25zdCBldmVudEVycm9ycyA9IFtdO1xuICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKCAvXlxccyskLyk7XG4gICAgICBpZiAoIWV2ZW50Lm5hbWUgfHwgZXZlbnQubmFtZS5sZW5ndGggPT09IDAgfHwgcmVnZXgudGVzdChldmVudC5uYW1lKSkge1xuICAgICAgICBldmVudEVycm9ycy5wdXNoKHsgZmllbGQ6ICduYW1lJywgY29kZTogJ3JlcXVpcmVkJyB9KTtcbiAgICAgIH1cbiAgICAgIGlmICghZXZlbnQuY2F0ZWdvcnkgfHwgZXZlbnQuY2F0ZWdvcnkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGV2ZW50RXJyb3JzLnB1c2goeyBmaWVsZDogJ2NhdGVnb3J5JywgY29kZTogJ3JlcXVpcmVkJyB9KTtcbiAgICAgIH1cbiAgICAgIGlmICghZXZlbnQuY3JpdGljYWxpdHkgfHwgZXZlbnQuY3JpdGljYWxpdHkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGV2ZW50RXJyb3JzLnB1c2goeyBmaWVsZDogJ2NyaXRpY2FsaXR5JywgY29kZTogJ3JlcXVpcmVkJyB9KTtcbiAgICAgIH1cbiAgICAgIGlmICghZXZlbnQuZGVzY3JpcHRpb24gfHwgZXZlbnQuZGVzY3JpcHRpb24ubGVuZ3RoID09PSAwIHx8IHJlZ2V4LnRlc3QoZXZlbnQuZGVzY3JpcHRpb24pKSB7XG4gICAgICAgIGV2ZW50RXJyb3JzLnB1c2goeyBmaWVsZDogJ2Rlc2NyaXB0aW9uJywgY29kZTogJ3JlcXVpcmVkJyB9KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGVxdWlwbWVudCA9IGV2ZW50LmVxdWlwbWVudDtcbiAgICAgIGlmICghIWVxdWlwbWVudCkge1xuICAgICAgICBjb25zdCBlcXVpcG1lbnROYW1lID0gYCR7ZXF1aXBtZW50IS5uYW1lfSAtICR7dGhpcy5pMThuU2VydmljZS5pbnN0YW50KCdAaHZ5LmV2ZW50LmZhbWlseS4nICsgZXF1aXBtZW50IS5mYW1pbHkpfWA7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRXF1aXBtZW50TmFtZSA9ICh0aGlzLmVxdWlwbWVudFNlbGVjdFZhbHVlW2lkeF0gYXMgSHlwRXF1aXBtZW50V2l0aE1hdGNoaW5nKT8uZGlzcGxheU5hbWUgP1xuICAgICAgICAgICh0aGlzLmVxdWlwbWVudFNlbGVjdFZhbHVlW2lkeF0gYXMgSHlwRXF1aXBtZW50V2l0aE1hdGNoaW5nKS5kaXNwbGF5TmFtZSA6IHRoaXMuZXF1aXBtZW50U2VsZWN0VmFsdWVbaWR4XTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICEhdGhpcy5lcXVpcG1lbnRTZWxlY3RWYWx1ZVtpZHhdICYmXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGVxdWlwbWVudE5hbWUgIT09IHNlbGVjdGVkRXF1aXBtZW50TmFtZVxuICAgICAgICApIHtcbiAgICAgICAgICBldmVudEVycm9ycy5wdXNoKHsgZmllbGQ6ICdlcXVpcG1lbnQnLCBjb2RlOiAnbm90LWZvdW5kJyB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgcGFyZW50ID0gZXZlbnQucGFyZW50O1xuICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICBjb25zdCBwYXJlbnROYW1lID0gYCR7cGFkSWQuZm4oZXZlbnQucGFyZW50Py5pZCA/PyAnJyl9IC0gJHtldmVudC5wYXJlbnQ/Lm5hbWV9YDtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRQYXJlbnROYW1lID0gKHRoaXMuZXZlbnRTZWxlY3RWYWx1ZVtpZHhdIGFzIEh5cEV2ZW50RGV0YWlsc1dpdGhNYXRjaGluZyk/LmRpc3BsYXlOYW1lID9cbiAgICAgICAgICAodGhpcy5ldmVudFNlbGVjdFZhbHVlW2lkeF0gYXMgSHlwRXZlbnREZXRhaWxzV2l0aE1hdGNoaW5nKS5kaXNwbGF5TmFtZSA6IHRoaXMuZXZlbnRTZWxlY3RWYWx1ZVtpZHhdO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgISF0aGlzLmV2ZW50U2VsZWN0VmFsdWVbaWR4XSAmJlxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBwYXJlbnROYW1lICE9PSBzZWxlY3RlZFBhcmVudE5hbWVcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXZlbnRFcnJvcnMucHVzaCh7IGZpZWxkOiAncGFyZW50JywgY29kZTogJ25vdC1mb3VuZCcgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChldmVudC5jYXRlZ29yeSA9PT0gJ01BTklGRVNUQVRJT04nKSB7XG4gICAgICAgIGlmICghZXZlbnQuc3RhcnREYXRlIHx8IGV2ZW50LnN0YXJ0RGF0ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBldmVudEVycm9ycy5wdXNoKHsgZmllbGQ6ICdzdGFydERhdGUnLCBjb2RlOiAncmVxdWlyZWQnIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZXZlbnQuZW5kRGF0ZSB8fCBldmVudC5lbmREYXRlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGV2ZW50RXJyb3JzLnB1c2goeyBmaWVsZDogJ2VuZERhdGUnLCBjb2RlOiAncmVxdWlyZWQnIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoKGV2ZW50LnN0YXJ0RGF0ZSBhcyBzdHJpbmcpPy5sb2NhbGVDb21wYXJlKGV2ZW50LmVuZERhdGUgPz8gJycpID8/IDApID4gMCkge1xuICAgICAgICAgIGV2ZW50RXJyb3JzLnB1c2goeyBmaWVsZDogJ3N0YXJ0RGF0ZScsIGNvZGU6ICdiZWZvcmUnIH0pO1xuICAgICAgICAgIGV2ZW50RXJyb3JzLnB1c2goeyBmaWVsZDogJ2VuZERhdGUnLCBjb2RlOiAnYWZ0ZXInIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZihldmVudC5zdGFydERhdGUgJiYgZXZlbnQuZW5kRGF0ZSAmJlxuICAgICAgICAgIChldmVudC5zdGFydERhdGUpLmxvY2FsZUNvbXBhcmUoZXZlbnQuZW5kRGF0ZSkgPiAwKSB7XG4gICAgICAgICAgZXZlbnRFcnJvcnMucHVzaCh7IGZpZWxkOiAnc3RhcnREYXRlJywgY29kZTogJ2JlZm9yZScgfSk7XG4gICAgICAgICAgZXZlbnRFcnJvcnMucHVzaCh7IGZpZWxkOiAnZW5kRGF0ZScsIGNvZGU6ICdhZnRlcicgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuZXJyb3JzLnB1c2goZXZlbnRFcnJvcnMpO1xuICAgIH0pO1xuICAgIHRoaXMuZXZlbnRFcnJvcnMubmV4dCh0aGlzLmVycm9ycyk7XG4gIH1cblxuICBoYXNFcnJvcihwcm9wOiBzdHJpbmcsIGlkeDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuZXJyb3JzW2lkeF0/LmZpbmQoKGVycikgPT4gZXJyLmZpZWxkID09PSBwcm9wKSA/PyBmYWxzZTtcbiAgfVxuXG4gIGNhdGVnb3JpZXMoZXZlbnQ6IEh5cEV2ZW50RGV0YWlscykge1xuICAgIHJldHVybiBIeXBFdmVudENhdGVnb3J5LnZhbHVlcztcbiAgfVxuXG4gIGNoYW5nZVN0YXR1cygkZXZlbnQ6IHN0cmluZywgZXZlbnQ6IEh5cEV2ZW50RGV0YWlscykge1xuICAgIHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5ldmVudHMgPSBbZXZlbnRdO1xuICAgIHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5zdGF0dXMgPSAkZXZlbnQ7XG4gICAgdGhpcy5jaGFuZ2VTdGF0dXNDb250ZXh0LmFsbCA9IGZhbHNlO1xuICAgIHRoaXMudG9nZ2xlQ29uZmlybSgpO1xuICB9XG5cbiAgY2xvc2VBbGwoKSB7XG4gICAgdGhpcy5jaGFuZ2VTdGF0dXNDb250ZXh0LmFsbCA9IHRydWU7XG4gICAgdGhpcy5jaGFuZ2VTdGF0dXNDb250ZXh0LmV2ZW50cyA9IHRoaXMuZXZlbnRzO1xuICAgIHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5zdGF0dXMgPSAnRE9ORSc7XG4gICAgdGhpcy50b2dnbGVDb25maXJtKCk7XG4gIH1cblxuICBjb25maXJtZWRDbG9zZSgpIHtcbiAgICBpZiAodGhpcy5jaGFuZ2VTdGF0dXNDb250ZXh0LmFsbCkge1xuICAgICAgaWYgKCF0aGlzLnByb2NlZHVyZSkge1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICAgIEV2ZW50QWN0aW9ucy5zdGF0dXMoe1xuICAgICAgICAgICAgdGFyZ2V0U3RhdHVzOiB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuc3RhdHVzLFxuICAgICAgICAgICAgZXZlbnQ6IHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5ldmVudHNbMF0sXG4gICAgICAgICAgICBwcm9jZWR1cmU6IHRoaXMucHJvY2VkdXJlLFxuICAgICAgICAgICAgY29tbWVudDogdGhpcy5jaGFuZ2VTdGF0dXNDb250ZXh0LmNvbW1lbnRcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgICBFdmVudEFjdGlvbnMuc3RhdHVzKHtcbiAgICAgICAgICAgIHRhcmdldFN0YXR1czogdGhpcy5jaGFuZ2VTdGF0dXNDb250ZXh0LnN0YXR1cyxcbiAgICAgICAgICAgIHByb2NlZHVyZTogdGhpcy5wcm9jZWR1cmUsXG4gICAgICAgICAgICBjb21tZW50OiB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuY29tbWVudFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgIEV2ZW50QWN0aW9ucy5zdGF0dXMoe1xuICAgICAgICAgIHRhcmdldFN0YXR1czogdGhpcy5jaGFuZ2VTdGF0dXNDb250ZXh0LnN0YXR1cyxcbiAgICAgICAgICBldmVudDogdGhpcy5jaGFuZ2VTdGF0dXNDb250ZXh0LmV2ZW50c1swXSxcbiAgICAgICAgICBwcm9jZWR1cmU6IHRoaXMucHJvY2VkdXJlLFxuICAgICAgICAgIGNvbW1lbnQ6IHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5jb21tZW50XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLnRvZ2dsZUNvbmZpcm0oKTtcbiAgfVxuXG4gIHRvZ2dsZUNvbmZpcm0oKSB7XG4gICAgaWYgKCF0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMuY29tZmlybURpYWxvZ09wZW5lZC5uZXh0KHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dCk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKFxuICAgICAgICBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICAgICAgYmFja2Ryb3BDbGFzczogJ2JhY2tkcm9wLWRhcmsnLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnby1odnktY2xvc2UtY29uZmlybSddXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy50b2dnbGVDb25maXJtKCkpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaChuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5jb25maXJtRGlhbG9nLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdGhpcy5jaGFuZ2VTdGF0dXNDb250ZXh0LmNvbW1lbnQgPSAnJztcbiAgfVxuXG4gIGNvbmZpcm1EaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5jaGFuZ2VTdGF0dXNDb250ZXh0LmNvbW1lbnQubGVuZ3RoID09PSAwO1xuICB9XG5cbiAgZ2V0IGNhbGN1bGF0ZWRQcm9ncmVzcygpIHtcbiAgICBpZiAodGhpcy5wcm9jZWR1cmUhLmFjdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgucm91bmQoXG4gICAgICAodGhpcy5wcm9jZWR1cmUhLmFjdGlvbnMuZmlsdGVyKChhY3Rpb24pID0+IGFjdGlvbi5zdGF0dXMgPT09ICdET05FJykubGVuZ3RoIC8gdGhpcy5wcm9jZWR1cmUhLmFjdGlvbnMubGVuZ3RoKSAqXG4gICAgICAgIDEwMFxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGFkSWQgPSBwYWRJZDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHN1YkNhdGVnb3JpZXMgPSBbdW5kZWZpbmVkLCAuLi5IeXBFdmVudFN1YkNhdGVnb3J5LnZhbHVlc1snQU5PTUFMWSddXTtcblxuICBtb2RpZmllZEFjdGlvbnMoJGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoZXF1YWwoJGV2ZW50LCB0aGlzLl9wcm9jZWR1cmUhLmFjdGlvbnMpKSB7XG4gICAgICBkZWxldGUgdGhpcy5wcm9jZWR1cmVNb2RpZmljYXRpb25zLmFjdGlvbnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJvY2VkdXJlTW9kaWZpY2F0aW9ucy5hY3Rpb25zID0gJGV2ZW50O1xuICAgIH1cbiAgICB0aGlzLl9vdXRwdXRNb2RpZmljYXRpb25zKCk7XG4gIH1cblxuICBvcGVuQXNzb2NpYXRpb25Nb2RhbCgpIHtcbiAgICBjb25zdCByZWYgPSB0aGlzLnByeURpYWxvZy5vcGVuKFByb2NlZHVyZUFzc29jaWF0aW9uTW9kYWxDb21wb25lbnQsIHtcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICdvLWh2eS1hc3NvY2lhdGlvbi1tb2RhbF9fYmFja2Ryb3AnXG4gICAgfSk7XG4gICAgaWYgKCEhcmVmICYmICEhcmVmLmNvbXBvbmVudCkge1xuICAgICAgcmVmLmNvbXBvbmVudC5ldmVudHMgPSB0aGlzLmV2ZW50cztcbiAgICB9XG4gIH1cblxuICBvcGVuRGVsZXRlTW9kYWwoKSB7XG4gICAgY29uc3QgZGF0YTogUHJ5RGlhbG9nQ29uZmlybURhdGEgPSB7XG4gICAgICB0aXRsZTogJ0BjaGguZXZlbnQuZGVsZXRlVCcsXG4gICAgICBtZXNzYWdlOiB0aGlzLmkxOG5TZXJ2aWNlLmluc3RhbnQodGhpcy5ldmVudHMubGVuZ3RoID4gMSA/ICdAY2hoLmV2ZW50LmRlbGV0ZU0rJyA6ICdAY2hoLmV2ZW50LmRlbGV0ZU0xJywge1xuICAgICAgICBuYkV2ZW50czogdGhpcy5ldmVudHMubGVuZ3RoXG4gICAgICB9KSxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgeyBpZDogMCwgbGFiZWw6ICdAY2hoLmFjdGlvbi5jYW5jZWwnLCBjb2xvcjogJ3NlY29uZGFyeScgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAxLFxuICAgICAgICAgIGxhYmVsOiAnQGNoaC5hY3Rpb24udmFsaWRhdGUnLFxuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgIFByb2NlZHVyZUFjdGlvbnMuZGVsZXRlSW5zdGFuY2Uoe1xuICAgICAgICAgICAgICBpZDogdGhpcy5wcm9jZWR1cmUhLmlkLFxuICAgICAgICAgICAgICByZXR1cm5Ub0V2ZW50OiB0aGlzLmV2ZW50cy5sZW5ndGggPT09IDEgPyAodGhpcy5ldmVudHNbMF0gYXMgSHlwRXZlbnREZXRhaWxzV2l0aE1hdGNoaW5nKS5pZCA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuICAgIHRoaXMucHJ5RGlhbG9nLm9wZW4oUHJ5RGlhbG9nQ29uZmlybUNvbXBvbmVudCwge1xuICAgICAgZGF0YSxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICdiYWNrZHJvcC1kYXJrJyxcbiAgICAgIHBhbmVsQ2xhc3M6IFsnby1odnktZGVsZXRlLXByb2NlZHVyZSddXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnREYXRlKG5ld1ZhbHVlPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ld1ZhbHVlID8gbmV3IERhdGUobmV3VmFsdWUpLnRvSVNPU3RyaW5nKCkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBzZWxlY3RlZEVxdWlwbWVudENoYW5nZSgkZXZlbnQ6IHN0cmluZyB8IEh5cEVxdWlwbWVudCwgaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuZXF1aXBtZW50U2VsZWN0VmFsdWVbaW5kZXhdID0gJGV2ZW50O1xuICAgIHRoaXMub25FcXVpcG1lbnRTZWFyY2gkLm5leHQoaW5kZXgpO1xuICAgIGlmICh0eXBlb2YgJGV2ZW50ID09PSAnb2JqZWN0JyB8fCAkZXZlbnQgPT09ICcnKSB7XG4gICAgICBjb25zdCBlcXVpcG1lbnRGb3JFdmVudCA9ICRldmVudCAhPT0gJycgPyAkZXZlbnQgOiB1bmRlZmluZWQ7XG4gICAgICBpZiAoKCEhdGhpcy5fZXZlbnRzW2luZGV4XS5lcXVpcG1lbnQgJiYgIWVxdWlwbWVudEZvckV2ZW50KSB8fCB0aGlzLl9ldmVudHNbaW5kZXhdLmVxdWlwbWVudD8ubmFtZSAhPT0gZXF1aXBtZW50Rm9yRXZlbnQ/Lm5hbWUpIHtcbiAgICAgICAgaWYgKCF0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0pIHtcbiAgICAgICAgICB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0gPSB7fTtcbiAgICAgICAgfVxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XS5lcXVpcG1lbnQgPSBlcXVpcG1lbnRGb3JFdmVudDtcbiAgICAgICAgdGhpcy5fb3V0cHV0TW9kaWZpY2F0aW9ucygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCEhdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdKSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGRlbGV0ZSB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0uZXF1aXBtZW50O1xuICAgICAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0pLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5fb3V0cHV0TW9kaWZpY2F0aW9ucygpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnBvcHVsYXRlRXF1aXBtZW50KGVxdWlwbWVudEZvckV2ZW50LCBpbmRleCk7XG4gICAgfSBlbHNlIGlmICghISRldmVudCAmJiAhdGhpcy5lcXVpcG1lbnRzRXZlbnRzW2luZGV4XT8uZXZlbnRzKXtcbiAgICAgIGNvbnN0IGZpcnN0SW5kZXggPSAkZXZlbnQuaW5kZXhPZignLScpO1xuICAgICAgY29uc3QgbGFzdEluZGV4ID0gJGV2ZW50Lmxhc3RJbmRleE9mKCctJyk7XG4gICAgICBpZihmaXJzdEluZGV4ICE9PSAtMSAmJiBsYXN0SW5kZXggIT09IGZpcnN0SW5kZXgpe1xuICAgICAgICBjb25zdCBuYW1lID0gJGV2ZW50LnN1YnN0cmluZygwLCBsYXN0SW5kZXgtMSk7XG4gICAgICAgIHRoaXMucG9wdWxhdGVFcXVpcG1lbnQoe25hbWV9IGFzIEh5cEVxdWlwbWVudCwgaW5kZXgpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZighJGV2ZW50KSB7XG4gICAgICB0aGlzLnBvcHVsYXRlRXF1aXBtZW50KHVuZGVmaW5lZCwgaW5kZXgpO1xuICAgICAgdGhpcy5fb3V0cHV0TW9kaWZpY2F0aW9ucygpO1xuICAgIH1cbiAgfVxuXG4gIGVxdWlwbWVudHNFdmVudHM6IHsgZXZlbnRzPzogSHlwRXZlbnREZXRhaWxzW107IHNlcnZpY2VzPzogSHlwU2VydmljZVRvb2x0aXBbXSB9W10gPSBbXTtcblxuICBwcml2YXRlIHBvcHVsYXRlRXF1aXBtZW50KCRldmVudDogSHlwRXF1aXBtZW50IHwgdW5kZWZpbmVkLCBpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5lcXVpcG1lbnRzRXZlbnRzW2luZGV4XSA9IHt9O1xuICAgIGlmICgkZXZlbnQpIHtcbiAgICAgIHRoaXMuZXF1aXBtZW50U2VydmljZS5maW5kQnlOYW1lKCRldmVudC5uYW1lKS5zdWJzY3JpYmUoKGVxdWlwKSA9PiB7XG4gICAgICAgIHRoaXMuZXF1aXBtZW50c0V2ZW50c1tpbmRleF0uZXZlbnRzID0gZXF1aXAuZXZlbnRzO1xuICAgICAgICB0aGlzLmVxdWlwbWVudHNFdmVudHNbaW5kZXhdLnNlcnZpY2VzID0gZXF1aXAuc2VydmljZXM7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB0b29sdGlwUmVmPzogUHJ5RGlhbG9nUmVmPEh2eUV2ZW50RGV0YWlsc1Rvb2x0aXBDb21wb25lbnQ+O1xuXG4gIHRvZ2dsZURldGFpbHNUb29sdGlwKGlkeDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLnRvb2x0aXBSZWYpIHtcbiAgICAgIGxldCBpZHhPcGVuZWQgPSAwO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpZHg7IGkrKykge1xuICAgICAgICBpZiAodGhpcy5vcGVuZWRbaV0pIHtcbiAgICAgICAgICBpZHhPcGVuZWQrKztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLnRvb2x0aXBSZWYgPSB0aGlzLnByeURpYWxvZy5vcGVuKEh2eUV2ZW50RGV0YWlsc1Rvb2x0aXBDb21wb25lbnQsIHtcbiAgICAgICAgZGF0YTogdGhpcy5lcXVpcG1lbnRzRXZlbnRzW2lkeF0gPz8geyBldmVudHM6IFtdLCBzZXJ2aWNlczogW10gfSxcbiAgICAgICAgb3ZlcmxheUNvbmZpZzoge1xuICAgICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMub3ZlcmxheVxuICAgICAgICAgICAgLnBvc2l0aW9uKClcbiAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZGV0YWlsSG92ZXJJY29uLmdldChpZHhPcGVuZWQpISlcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb25zKFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxuICAgICAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJ1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdKVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50b29sdGlwUmVmLmNsb3NlKCk7XG4gICAgICB0aGlzLnRvb2x0aXBSZWYgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0ZWRQYXJlbnRDaGFuZ2UoJGV2ZW50OiBzdHJpbmcgfCBIeXBFdmVudERldGFpbHMsIGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmV2ZW50U2VsZWN0VmFsdWVbaW5kZXhdID0gJGV2ZW50O1xuICAgIHRoaXMub25FdmVudFNlYXJjaCQubmV4dChpbmRleCk7XG4gICAgaWYgKHR5cGVvZiAkZXZlbnQgPT09ICdvYmplY3QnIHx8ICRldmVudCA9PT0gJycpIHtcbiAgICAgIGNvbnN0IHBhcmVudEZvckV2ZW50ID0gJGV2ZW50ICE9PSAnJyA/IHsgaWQ6ICRldmVudC5pZCwgbmFtZTogJGV2ZW50Lm5hbWUgfSA6IHVuZGVmaW5lZDtcbiAgICAgIGlmICghcGFyZW50Rm9yRXZlbnQgfHwgdGhpcy5fZXZlbnRzW2luZGV4XS5wYXJlbnQ/LmlkICE9PSBwYXJlbnRGb3JFdmVudC5pZCkge1xuICAgICAgICBpZiAoIXRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XSkge1xuICAgICAgICAgIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XSA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XS5wYXJlbnQgPSBwYXJlbnRGb3JFdmVudDtcbiAgICAgICAgdGhpcy5fb3V0cHV0TW9kaWZpY2F0aW9ucygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCEhdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdKSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGRlbGV0ZSB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0ucGFyZW50O1xuICAgICAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0pLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5fb3V0cHV0TW9kaWZpY2F0aW9ucygpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX291dHB1dE1vZGlmaWNhdGlvbnMoKTtcbiAgICB9XG4gIH1cblxuICBhZGRPbmVFdmVudCgpIHtcbiAgICBjb25zdCByZWYgPSB0aGlzLnByeURpYWxvZy5vcGVuKEh2eUV2ZW50QWRkRXZlbnRDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHsgcHJvY2VkdXJlOiB0aGlzLnByb2NlZHVyZSB9LFxuICAgICAgYmFja2Ryb3BDbGFzczogJ2JhY2tkcm9wLWRhcmsnXG4gICAgfSk7XG5cbiAgICByZWYuY2xvc2VWYWx1ZS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICBzd2l0Y2ggKHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIGNhc2UgJ2FkZCc6XG4gICAgICAgICAgdGhpcy5hZGRlZEV2ZW50Lm5leHQodmFsdWUuZXZlbnQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgcmVmLmNsb3NlKCk7XG4gICAgfSk7XG4gIH1cblxuICBhY3Rpb25Db21tZW50ZWQoJGV2ZW50OiB7IGFjdGlvbjogSHlwQWN0aW9uOyBjb21tZW50czogSHlwQ29tbWVudFtdIH0pIHtcbiAgICB0aGlzLmNvbW1lbnRlZC5uZXh0KCRldmVudCk7XG4gIH1cblxuICB1cGRhdGVDb21tZW50KGV2ZW50OiBIeXBFdmVudERldGFpbHMsIGNvbW1lbnQ6IHsgaWQ6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nIH0pIHtcbiAgICB0aGlzLmNvbW1lbnRzU2VydmljZS5zYXZlKGV2ZW50LmlkLCAnZXZlbnRzJywgY29tbWVudCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGxldCBldmVudHNBbmRDb21tZW50czogIHtldmVudDogSHlwRXZlbnREZXRhaWxzOyBjb21tZW50czogSHlwQ29tbWVudFtdIH1bXSA9IFtdO1xuICAgICAgbGV0IGNvbW1lbnRzJDogT2JzZXJ2YWJsZTxIeXBDb21tZW50W10+W10gPSBbXTtcbiAgICAgIGZvcihsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuX2V2ZW50cy5sZW5ndGg7IGluZGV4Kyspe1xuICAgICAgICBjb21tZW50cyQucHVzaCh0aGlzLmNvbW1lbnRzU2VydmljZS5nZXQodGhpcy5fZXZlbnRzW2luZGV4XS5pZCwgJ2V2ZW50cycpKTtcbiAgICAgIH1cbiAgICAgIHppcChjb21tZW50cyQpLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dCA6IGNvbW1lbnRzQXJyYXkgPT4ge1xuICAgICAgICAgIGNvbW1lbnRzQXJyYXkuZm9yRWFjaCgoY29tbWVudHMsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBldmVudHNBbmRDb21tZW50cy5wdXNoKHsgZXZlbnQ6IHRoaXMuX2V2ZW50c1tpbmRleF0sIGNvbW1lbnRzOiBjb21tZW50cyBhcyBIeXBDb21tZW50W10gfSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLmNvbW1lbnRlZC5uZXh0KGV2ZW50c0FuZENvbW1lbnRzKTtcbiAgICAgIH19KVxuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbFwiPlxuICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9faGVhZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX2hlYWRlcl9fc3BsaXRcIj5cbiAgICAgIDxoMT57eyB0aXRsZSA/PyAnQGh2eS5ldmVudC5kZXRhaWwnIHwgaTE4biB9fTwvaDE+XG4gICAgICBAaWYgKHByb2NlZHVyZSAmJiBjYW5DbG9zZVNvbWUpIHtcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFkZC1idXR0b25cIiBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIiAoY2xpY2spPVwiYWRkT25lRXZlbnQoKVwiPlxuICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiYWRkXCIgW3dpZHRoXT1cIjE4XCIgW2hlaWdodF09XCIxOFwiPjwvcHJ5LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgfVxuICAgICAgQGlmIChldmVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICBAaWYgKGNhbkNsb3NlU29tZSAmJiAhcmVhZG9ubHkpIHtcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG4gYS1idG4tLXNlY29uZGFyeSAtZml4LXJpZ2h0XCIgW2Rpc2FibGVkXT1cIiFjYW5DbG9zZVNvbWVcIiAoY2xpY2spPVwiY2xvc2VBbGwoKVwiPlxuICAgICAgICAgICAge3sgKGNhbkNsb3NlU29tZSA/ICdAaHZ5LmV2ZW50LmxvZy5ldmVudC5jbG9zZScgOiAnQGh2eS5ldmVudC5sb2cuZXZlbnQuY2xvc2VkJykgfCBpMThuIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgICAgQGlmICghY2FuQ2xvc2VTb21lICYmIGNsb3NlQ29tbWVudCAmJiBjbG9zZUNvbW1lbnQubGVuZ3RoID4gMCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhLXRvb2x0aXBcIiBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiY2xvc2VDb21tZW50XCIgZGF0YS10b29sdGlwLXBvc2l0aW9uPVwicmlnaHRcIj5cbiAgICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiaVwiIFtoZWlnaHRdPVwiMThcIiBbd2lkdGhdPVwiMThcIj5pPC9wcnktaWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19oZWFkZXJfX3NwbGl0XCI+XG4gICAgICBAaWYgKHByb2NlZHVyZSAmJiAhcmVhZG9ubHkpIHtcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIiAoY2xpY2spPVwib3BlbkRlbGV0ZU1vZGFsKClcIiBbZGlzYWJsZWRdPVwicmVhZG9ubHlQcm9jZWR1cmVcIj5cbiAgICAgICAgICB7eyAnQGh2eS5ldmVudC5sb2cucHJvY2VkdXJlLmRlbGV0ZScgfCBpMThuIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX2NvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19jb250YWluZXJfX3Njcm9sbGFibGVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19ldmVudHNcIj5cbiAgICAgICAgQGZvciAoZXZlbnQgb2YgZXZlbnRzOyB0cmFjayBldmVudC5pZDsgbGV0IGlkeCA9ICRpbmRleCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19ldmVudHNfX2V2ZW50XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fZXZlbnRzX19ldmVudF9faGVhZGVyXCI+XG4gICAgICAgICAgICAgIDxwcnktaWNvblxuICAgICAgICAgICAgICAgIGljb25Tdmc9XCJhcnJvd19kb3duX3JvdW5kZWRcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy4tcm90YXRlZF09XCJvcGVuZWRbaWR4XVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCItaGFuZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZShpZHgpXCJcbiAgICAgICAgICAgICAgICBbd2lkdGhdPVwiMTBcIlxuICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiMTBcIlxuICAgICAgICAgICAgICA+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgPGh2eS1pY29uLWRpc3BsYXkgW2V2ZW50XT1cImV2ZW50XCI+PC9odnktaWNvbi1kaXNwbGF5PlxuICAgICAgICAgICAgICA8aDI+e3sgZXZlbnQubmFtZSB9fTwvaDI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19ldmVudHNfX2V2ZW50X19oZWFkZXJfX2NvbW1lbnRcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGV2ZW50LmNvbW1lbnRDb3VudCA+IDApIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7XG4gICAgICAgICAgICAgICAgICAgIChldmVudC5jb21tZW50Q291bnQgPiAxID8gJ0BodnkuZXZlbnQuY29tbWVudC5oZWFkcycgOiAnQGh2eS5ldmVudC5jb21tZW50LmhlYWQnKVxuICAgICAgICAgICAgICAgICAgICAgIHwgaTE4bjogeyBuYjogZXZlbnQuY29tbWVudENvdW50IH1cbiAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxodnktc3RhdHVzLWRpc3BsYXlcbiAgICAgICAgICAgICAgICBbaXRlbV09XCJldmVudFwiXG4gICAgICAgICAgICAgICAgW21vZGlmaWFibGVdPVwiZXZlbnQuc3RhdHVzICE9PSAnRE9ORSdcIlxuICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgICAgICAgKG1vZGlmaWVkKT1cImNoYW5nZVN0YXR1cygkZXZlbnQsIGV2ZW50KVwiXG4gICAgICAgICAgICAgID48L2h2eS1zdGF0dXMtZGlzcGxheT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX2V2ZW50c19fZXZlbnRfX2NvbnRlbnRcIj5cbiAgICAgICAgICAgICAgQGlmICghb3BlbmVkW2lkeF0pIHtcbiAgICAgICAgICAgICAgICA8ZGl2Pnt7ICdAaHZ5LmV2ZW50LmxvZy5ldmVudC5kZXNjcmlwdGlvbicgfCBpMThuIH19IDoge3sgZXZlbnQuZGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2Pnt7ICdAaHZ5LmV2ZW50LmxvZy5ldmVudC5hZGRyZXNzJyB8IGkxOG4gfX0gOiB7eyBldmVudC5hZGRyZXNzIH19PC9kaXY+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIEBpZiAoYWNjZXNzKGV2ZW50KTsgYXMgYWNjZXNzVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19ldmVudHNfX2V2ZW50X19jb250ZW50X19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGgzPnt7ICdAaHZ5LmV2ZW50LmxvZy5ldmVudC5kZXRhaWwnIHwgaTE4biB9fTwvaDM+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj57eyAnQGh2eS5ldmVudC5sb2cuZXZlbnQubWFuZGF0b3J5JyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDx0YWJsZT5cbiAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5sb2cuZXZlbnQubmFtZScgfCBpMThuIH19PHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy4tZXJyb3JdPVwiaGFzRXJyb3IoJ25hbWUnLCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZXZlbnQubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJtb2RpZnlFdmVudChpZHgsICduYW1lJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImFjY2Vzc1ZhbHVlLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhMZW5ndGhdPVwiNTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChldmVudC5pZCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LmxvZy5ldmVudC5pZCcgfCBpMThuIH19PHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJhLWZvcm0tZmllbGRcIiBbdmFsdWVdPVwicGFkSWQuZm4oZXZlbnQuaWQpXCIgW3JlYWRvbmx5XT1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5sb2cuZXZlbnQuY2F0ZWdvcnknIHwgaTE4biB9fTxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJldmVudC5jYXRlZ29yeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cImNhdGVnb3JpZXMoZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuLWVycm9yXT1cImhhc0Vycm9yKCdjYXRlZ29yeScsIGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1vZGlmeUV2ZW50KGlkeCwgJ2NhdGVnb3J5JywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaTE4blByZWZpeD1cIkBodnkuZXZlbnQuY2F0ZWdvcnkuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWNjZXNzVmFsdWUuY2F0ZWdvcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChldmVudC5jYXRlZ29yeSA9PT0gJ0FOT01BTFknKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5zdWJDYXRlZ29yeS5uYW1lJyB8IGkxOG4gfX08c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj4gOjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZXZlbnQuc3ViQ2F0ZWdvcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cInN1YkNhdGVnb3JpZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLi1lcnJvcl09XCJoYXNFcnJvcignc3ViQ2F0ZWdvcnknLCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1vZGlmeUV2ZW50KGlkeCwgJ3N1YkNhdGVnb3J5JywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpMThuUHJlZml4PVwiQGh2eS5ldmVudC5zdWJDYXRlZ29yeS5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFjY2Vzc1ZhbHVlLnN1YkNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5jcml0aWNhbGl0eS5uYW1lJyB8IGkxOG4gfX08c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj4gOjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZXZlbnQuY3JpdGljYWxpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJjcml0aWNhbGl0aWVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuLWVycm9yXT1cImhhc0Vycm9yKCdjcml0aWNhbGl0eScsIGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkxOG5QcmVmaXg9XCJAaHZ5LmV2ZW50LmNyaXRpY2FsaXR5LlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFjY2Vzc1ZhbHVlLmNyaXRpY2FsaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJtb2RpZnlFdmVudChpZHgsICdjcml0aWNhbGl0eScsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQubG9nLmV2ZW50LmRlc2NyaXB0aW9uJyB8IGkxOG4gfX08c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj4gOjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImV2ZW50LmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLi1lcnJvcl09XCJoYXNFcnJvcignZGVzY3JpcHRpb24nLCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiYWNjZXNzVmFsdWUuZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1vZGlmeUV2ZW50KGlkeCwgJ2Rlc2NyaXB0aW9uJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heExlbmd0aF09XCIyNTZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5sb2cuZXZlbnQuYWRkcmVzcycgfCBpMThuIH19IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJldmVudC5hZGRyZXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLi1lcnJvcl09XCJoYXNFcnJvcignYWRkcmVzcycsIGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJhY2Nlc3NWYWx1ZS5hZGRyZXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJtb2RpZnlFdmVudChpZHgsICdhZGRyZXNzJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heExlbmd0aF09XCIyNTZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5zb3VyY2UnIHwgaTE4biB9fTxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZXZlbnQuZXh0ZXJuYWxTb3VyY2VSZWYgPz8gKCdAaHZ5LmV2ZW50Lmh5cGVydmlzb3InIHwgaTE4bilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy4tZXJyb3JdPVwiaGFzRXJyb3IoJ3NvdXJjZScsIGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJhY2Nlc3NWYWx1ZS5zb3VyY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwibW9kaWZ5RXZlbnQoaWR4LCAnc291cmNlJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQuZXF1aXBtZW50JyB8IGkxOG4gfX0gOjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cImVxdWlwbWVudHMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRMYWJlbD1cImRpc3BsYXlOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJlcXVpcG1lbnRTZWxlY3RWYWx1ZVtpZHhdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWxlY3RlZEVxdWlwbWVudENoYW5nZSgkZXZlbnQsIGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2V4dGVybmFsQXV0b2NvbXBsZXRlU2VydmljZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0BodnkuZXZlbnQuZXF1aXBtZW50UGxhY2Vob2xkZXInIHwgaTE4blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJwcm9jZWR1cmUtZmlsdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGVtcGxhdGVdPVwidGVtcGxhdGVPcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy4tZXJyb3JdPVwiaGFzRXJyb3IoJ2VxdWlwbWVudCcsIGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhY2Nlc3NWYWx1ZS5lcU5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fZXZlbnRzX19ldmVudF9fY29udGVudF9fZXF1aXBtZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZU9wdGlvbiBsZXQtaXRlbT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidS1kaXNwbGF5LWZsZXggLWNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJpdGVtLmh0bWxcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRXF1aXBtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcnktaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvblN2Zz1cImlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCItaGFuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZGV0YWlsSG92ZXJJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJ0b2dnbGVEZXRhaWxzVG9vbHRpcChpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cInRvZ2dsZURldGFpbHNUb29sdGlwKGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3dpZHRoXT1cIjE4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiMThcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3ByeS1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LmVxdWlwbWVudEVudGl0eScgfCBpMThuIH19IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy4tZXJyb3JdPVwiaGFzRXJyb3IoJ2VxdWlwbWVudCcsIGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChldmVudC5lcXVpcG1lbnQ/LmVudGl0eSA/ICdAaHZ5LmV2ZW50LmVudGl0eS4nICsgZXZlbnQuZXF1aXBtZW50Py5lbnRpdHkgOiAnJykgfCBpMThuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LmRvbWFpbi5uYW1lJyB8IGkxOG4gfX0gOjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cIkRPTUFJTlNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImV2ZW50LmRvbWFpblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaTE4blByZWZpeD1cIkBodnkuZXZlbnQuZG9tYWluLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLi1lcnJvcl09XCJoYXNFcnJvcignZG9tYWluJywgaWR4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwibW9kaWZ5RXZlbnQoaWR4LCAnZG9tYWluJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFjY2Vzc1ZhbHVlLmRvbWFpblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQucGFyZW50RXZlbnQubmFtZScgfCBpMThuIH19IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJldmVudHMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRMYWJlbD1cImRpc3BsYXlOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJldmVudFNlbGVjdFZhbHVlW2lkeF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlbGVjdGVkUGFyZW50Q2hhbmdlKCRldmVudCwgaWR4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXh0ZXJuYWxBdXRvY29tcGxldGVTZXJ2aWNlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQGh2eS5ldmVudC5wYXJlbnRFdmVudC5wbGFjZWhvbGRlcicgfCBpMThuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInBhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RlbXBsYXRlXT1cInRlbXBsYXRlUGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWNjZXNzVmFsdWUucGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuLWVycm9yXT1cImhhc0Vycm9yKCdwYXJlbnQnLCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX2V2ZW50c19fZXZlbnRfX2NvbnRlbnRfX2VxdWlwbWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGVtcGxhdGVQYXJlbnQgbGV0LWl0ZW09XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInUtZGlzcGxheS1mbGV4IC1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiaXRlbS5odG1sXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnQGh2eS5ldmVudC5zdGFydERhdGUnIHwgaTE4biB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGV2ZW50LmNhdGVnb3J5ID09PSAnTUFOSUZFU1RBVElPTicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZXZlbnQuc3RhcnREYXRlIHwgZm9yRGF0ZVRpbWVMb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLi1lcnJvcl09XCJoYXNFcnJvcignc3RhcnREYXRlJywgaWR4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImFjY2Vzc1ZhbHVlLnN0YXJ0RGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJtb2RpZnlFdmVudChpZHgsICdzdGFydERhdGUnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ0BodnkuZXZlbnQuZW5kRGF0ZScgfCBpMThuIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZXZlbnQuY2F0ZWdvcnkgPT09ICdNQU5JRkVTVEFUSU9OJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJkYXRldGltZS1sb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJldmVudC5lbmREYXRlIHwgZm9yRGF0ZVRpbWVMb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLi1lcnJvcl09XCJoYXNFcnJvcignZW5kRGF0ZScsIGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJhY2Nlc3NWYWx1ZS5lbmREYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm1vZGlmeUV2ZW50KGlkeCwgJ2VuZERhdGUnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChoYXNFcnJvcignZW5kRGF0ZScsIGlkeCkgJiYgZXZlbnQuZW5kRGF0ZSAmJiBldmVudC5zdGFydERhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImEtZm9ybS1maWVsZCAtZXJyb3JcIj57eyAnQGh2eS5ldmVudC5lcnJvckRhdGUnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LmNyZWF0b3InIHwgaTE4biB9fTxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZXZlbnQuY3JlYXRvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LmNyZWF0aW9uRGF0ZScgfCBpMThuIH19PHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZXZlbnQuY3JlYXRpb25EYXRlIHwgZm9yRGF0ZVRpbWVMb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5sYXN0TW9kaWZpY2F0aW9uRGF0ZScgfCBpMThuIH19PHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZXZlbnQubGFzdE1vZGlmaWNhdGlvbkRhdGUgfCBmb3JEYXRlVGltZUxvY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LmNsb3NlRGF0ZScgfCBpMThuIH19IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZXZlbnQuY2xvc2VEYXRlIHwgZm9yRGF0ZVRpbWVMb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgICAgICAgIEBpZiAoZXZlbnQuaWQgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIDxodnktY29tbWVudHNcbiAgICAgICAgICAgICAgICAgICAgICBbbGFzdENvbW1lbnRdPVwiZXZlbnQubGFzdENvbW1lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjb21tZW50Q291bnRdPVwiZXZlbnQuY29tbWVudENvdW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAoY29tbWVudGVkKT1cInVwZGF0ZUNvbW1lbnQoZXZlbnQsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJldmVudC5zdGF0dXMgPT09ICdET05FJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiJ2V2ZW50cydcIlxuICAgICAgICAgICAgICAgICAgICAgIFttZV09XCJtZT8uc3ViXCJcbiAgICAgICAgICAgICAgICAgICAgICBbb2JqZWN0SWRdPVwiZXZlbnQuaWRcIlxuICAgICAgICAgICAgICAgICAgICA+PC9odnktY29tbWVudHM+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fcHJvY2VkdXJlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19wcm9jZWR1cmVfX2hlYWRlclwiPlxuICAgICAgICAgIDxoMj5cbiAgICAgICAgICAgIHt7IChldmVudHMubGVuZ3RoID09PSAxID8gJ0BodnkuZXZlbnQubG9nLnByb2NlZHVyZS5uYW1lMScgOiAnQGh2eS5ldmVudC5sb2cucHJvY2VkdXJlLm5hbWUnKSB8IGkxOG4gfX1cbiAgICAgICAgICA8L2gyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgQGlmIChwcm9jZWR1cmUpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fcHJvY2VkdXJlX19kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgPHA+e3sgcHJvY2VkdXJlLmRlc2NyaXB0aW9uIH19PC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19wcm9jZWR1cmVfX3Byb2dyZXNzXCI+XG4gICAgICAgICAgICA8cD57eyAnQGh2eS5ldmVudC5sb2cucHJvY2VkdXJlLnByb2dyZXNzJyB8IGkxOG4gfX08L3A+XG4gICAgICAgICAgICA8aHZ5LXByb2dyZXNzLWRpc3BsYXkgW3Byb2dyZXNzXT1cImNhbGN1bGF0ZWRQcm9ncmVzc1wiPjwvaHZ5LXByb2dyZXNzLWRpc3BsYXk+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGh2eS1wcm9jZWR1cmUtYWN0aW9uc1xuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5UHJvY2VkdXJlIHx8IHJlYWRvbmx5XCJcbiAgICAgICAgICAgIFtyZWFkT25seUNvbW1lbnRdPVwicmVhZE9ubHlDb21tZW50XCJcbiAgICAgICAgICAgIFtlbmFibGVFZGl0QWN0aW9uc109XCJlbmFibGVFZGl0QWN0aW9uc1wiXG4gICAgICAgICAgICBbYWN0aW9uc109XCJwcm9jZWR1cmUuYWN0aW9uc1wiXG4gICAgICAgICAgICAobW9kaWZpZWQpPVwibW9kaWZpZWRBY3Rpb25zKCRldmVudClcIlxuICAgICAgICAgICAgW21lXT1cIm1lPy5zdWJcIlxuICAgICAgICAgICAgW2V2ZW50c109XCJ0aGlzLmV2ZW50c1wiXG4gICAgICAgICAgICAoY29tbWVudGVkKT1cImFjdGlvbkNvbW1lbnRlZCgkZXZlbnQpXCJcbiAgICAgICAgICA+PC9odnktcHJvY2VkdXJlLWFjdGlvbnM+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIEBpZiAoIXJlYWRvbmx5KSB7XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG4gYS1idG4tLXNlY29uZGFyeVwiIFtkaXNhYmxlZF09XCIhY2FuQXNzb2NpYXRlUHJvY2VkdXJlXCIgKGNsaWNrKT1cIm9wZW5Bc3NvY2lhdGlvbk1vZGFsKClcIj5cbiAgICAgICAgICAgICAge3sgJ0BodnkuYWN0aW9uLmFzc29jaWF0ZScgfCBpMThuIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fcHJvY2VkdXJlX19lbXB0eVwiPnt7ICdAaHZ5LmV2ZW50LmxvZy5wcm9jZWR1cmUubm9uZScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjY29uZmlybURpYWxvZz5cbiAgPGRpdlxuICAgIGNsYXNzPVwiby1odnktY2xvc2UtY29uZmlybV9fZGlhbG9nXCJcbiAgICBhcmlhLWxhYmVsbGVkYnk9XCJjb25maXJtXCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgICBpZD1cImNob2ljZVwiXG4gICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgYXJpYS1tb2RhbD1cInRydWVcIlxuICA+XG4gICAgPGgyPlxuICAgICAge3tcbiAgICAgICAgKGNoYW5nZVN0YXR1c0NvbnRleHQuZXZlbnRzLmxlbmd0aCA9PT0gMSA/ICdAaHZ5LmV2ZW50LmNsb3NlLm9uZVRpdGxlJyA6ICdAaHZ5LmV2ZW50LmNsb3NlLm11bHRpVGl0bGUnKSB8IGkxOG5cbiAgICAgIH19XG4gICAgPC9oMj5cbiAgICA8cD57eyAoY2hhbmdlU3RhdHVzQ29udGV4dC5ldmVudHMubGVuZ3RoID09PSAxID8gJ0BodnkuZXZlbnQuY2xvc2Uub25lJyA6ICdAaHZ5LmV2ZW50LmNsb3NlLm11bHRpJykgfCBpMThuIH19PC9wPlxuICAgIDx1bD5cbiAgICAgIEBmb3IgKGV2ZW50IG9mIGNoYW5nZVN0YXR1c0NvbnRleHQuZXZlbnRzOyB0cmFjayBldmVudC5pZCkge1xuICAgICAgICA8bGk+e3sgZXZlbnQubmFtZSB9fTwvbGk+XG4gICAgICB9XG4gICAgPC91bD5cbiAgICA8cCBjbGFzcz1cIm8taHZ5LWNsb3NlLWNvbmZpcm1fX2RpYWxvZ19fY29tbWVudC10aXRsZVwiPlxuICAgICAge3sgJ0BodnkuZXZlbnQuY2xvc2UuY29tbWVudCcgfCBpMThuIH19PHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+IDpcbiAgICA8L3A+XG4gICAgPGRpdiBjbGFzcz1cIm8taHZ5LWNsb3NlLWNvbmZpcm1fX2RpYWxvZ19fY29tbWVudFwiPlxuICAgICAgPHRleHRhcmVhIFsobmdNb2RlbCldPVwiY2hhbmdlU3RhdHVzQ29udGV4dC5jb21tZW50XCIgY2xhc3M9XCJhLWZvcm0tZmllbGRcIiBbbWF4TGVuZ3RoXT1cIjI1NVwiPjwvdGV4dGFyZWE+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm8taHZ5LWNsb3NlLWNvbmZpcm1fX2RpYWxvZ19fYWN0aW9uc1wiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCIgKGNsaWNrKT1cImNvbmZpcm1lZENsb3NlKClcIiBbZGlzYWJsZWRdPVwiY29uZmlybURpc2FibGVkKClcIj5cbiAgICAgICAge3sgJ0BodnkuYWN0aW9uLnZhbGlkYXRlJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIiAoY2xpY2spPVwidG9nZ2xlQ29uZmlybSgpXCI+e3sgJ0BodnkuYWN0aW9uLmNhbmNlbCcgfCBpMThuIH19PC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==