@provoly/hypervisor 1.7.4 → 1.7.6
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.
|
@@ -73,6 +73,7 @@ export class EventDetailComponent extends SubscriptionnerDirective {
|
|
|
73
73
|
this.setCreatorForEvents();
|
|
74
74
|
}
|
|
75
75
|
set events(events) {
|
|
76
|
+
this.equipControls.clear();
|
|
76
77
|
this._events = events.filter((ev) => !!ev);
|
|
77
78
|
this.eventModifications = new Array(this._events.length);
|
|
78
79
|
if (this._events.length === 1) {
|
|
@@ -445,6 +446,11 @@ export class EventDetailComponent extends SubscriptionnerDirective {
|
|
|
445
446
|
this.changeStatusContext.status = $event;
|
|
446
447
|
this.changeStatusContext.all = false;
|
|
447
448
|
this.toggleConfirm();
|
|
449
|
+
if ($event === 'DONE') {
|
|
450
|
+
this.equipControls.controls.forEach(control => {
|
|
451
|
+
control.disable();
|
|
452
|
+
});
|
|
453
|
+
}
|
|
448
454
|
}
|
|
449
455
|
closeAll() {
|
|
450
456
|
this.changeStatusContext.all = true;
|
|
@@ -740,4 +746,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
740
746
|
}], cancelModifications: [{
|
|
741
747
|
type: Input
|
|
742
748
|
}] } });
|
|
743
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvaHlwZXJ2aXNvci9zcmMvbGliL2V2ZW50L2RldGFpbC9ldmVudC1kZXRhaWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9oeXBlcnZpc29yL3NyYy9saWIvZXZlbnQvZGV0YWlsL2V2ZW50LWRldGFpbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxFQUNULFlBQVksRUFFYixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNuRixPQUFPLEVBQ0wseUJBQXlCLEVBTXpCLHdCQUF3QixFQUN6QixNQUFNLG9CQUFvQixDQUFDO0FBRzVCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFL0QsT0FBTyxFQUFXLGFBQWEsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYyxXQUFXLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdEQsT0FBTyxLQUFLLE1BQU0scUJBQXFCLENBQUM7QUFDeEMsT0FBTyxFQUFFLGtDQUFrQyxF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Q0FBQztJQUM5QixDQUFDOzhHQXZ0QlUsb0JBQW9CO2tHQUFwQixvQkFBb0IsZ3JCQXlDSyxXQUFXLGdHQUlOLFVBQVUsb0RDdklyRCxreHdCQW1nQkE7OzJGRHphYSxvQkFBb0I7a0JBSmhDLFNBQVM7K0JBQ0Usa0JBQWtCO3NVQVFuQixhQUFhO3NCQUFyQixLQUFLO2dCQUtJLGNBQWM7c0JBQXZCLE1BQU07Z0JBR0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUVHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFTRSxLQUFLO3NCQUFiLEtBQUs7Z0JBRU8sZ0JBQWdCO3NCQUE1QixLQUFLO2dCQVNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUU2QyxhQUFhO3NCQUEvRCxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBQ3ZDLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFHZ0QsZUFBZTtzQkFBckUsWUFBWTt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBSTNDLFNBQVM7c0JBQWxCLE1BQU07Z0JBU00sRUFBRTtzQkFBZCxLQUFLO2dCQUtPLE1BQU07c0JBQWxCLEtBQUs7Z0JBdURPLFNBQVM7c0JBQXJCLEtBQUs7Z0JBS08sbUJBQW1CO3NCQUEvQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLFxuICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHlwUHJvY2VkdXJlIH0gZnJvbSAnLi4vLi4vbW9kZWwvcHJvY2VkdXJlL2h5cC1wcm9jZWR1cmUuaW50ZXJmYWNlJztcbmltcG9ydCB7IEh5cEV2ZW50RGV0YWlscyB9IGZyb20gJy4uLy4uL21vZGVsL2V2ZW50L2h5cC1ldmVudC1kZXRhaWwuaW50ZXJmYWNlJztcbmltcG9ydCB7IEh5cEV2ZW50Q3JpdGljYWxpdHkgfSBmcm9tICcuLi8uLi9tb2RlbC9ldmVudC9oeXAtZXZlbnQtY3JpdGljYWxpdHkudHlwZSc7XG5pbXBvcnQge1xuICBQcnlEaWFsb2dDb25maXJtQ29tcG9uZW50LFxuICBQcnlEaWFsb2dDb25maXJtRGF0YSxcbiAgUHJ5RGlhbG9nUmVmLFxuICBQcnlEaWFsb2dTZXJ2aWNlLFxuICBQcnlJMThuU2VydmljZSxcbiAgUHJ5SWNvbkNvbXBvbmVudCxcbiAgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlXG59IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQge0VxdWlwbWVudEZvckV2ZW50LCBIeXBFcXVpcG1lbnR9IGZyb20gJy4uLy4uL21vZGVsL2h5cC1lcXVpcG1lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEVxdWlwbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zdG9yZS9lcXVpcG1lbnQvZXF1aXBtZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgRE9NQUlOUyB9IGZyb20gJy4uLy4uL21vZGVsL2RvbWFpbnMuY29uc3RhbnQnO1xuaW1wb3J0IHsgRXZlbnRBY3Rpb25zIH0gZnJvbSAnLi4vLi4vc3RvcmUvZXZlbnQvZXZlbnQuYWN0aW9ucyc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkZWxheSwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFrZSwgdGhyb3dFcnJvciwgemlwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBwYWRJZCB9IGZyb20gJy4uLy4uL2dlbmVyYWwvcGFkLWlkLmZ1bmN0aW9uJztcbmltcG9ydCBlcXVhbCBmcm9tICdmYXN0LWRlZXAtZXF1YWwvZXM2JztcbmltcG9ydCB7IFByb2NlZHVyZUFzc29jaWF0aW9uTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9wcm9jZWR1cmUtYXNzb2NpYXRpb24tbW9kYWwvcHJvY2VkdXJlLWFzc29jaWF0aW9uLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcm9jZWR1cmVBY3Rpb25zIH0gZnJvbSAnLi4vLi4vc3RvcmUvcHJvY2VkdXJlL3Byb2NlZHVyZS5hY3Rpb25zJztcbmltcG9ydCB7IEh5cEV2ZW50Q2F0ZWdvcnksIEh5cEV2ZW50U3ViQ2F0ZWdvcnkgfSBmcm9tICcuLi8uLi9tb2RlbC9ldmVudC9oeXAtZXZlbnQtY2F0ZWdvcnkudHlwZSc7XG5pbXBvcnQgeyBIeXBDb21tZW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zdG9yZS9jb21tZW50cy9jb21tZW50cy5zZXJ2aWNlJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSHlwU2VydmljZVRvb2x0aXB9IGZyb20gJy4uLy4uL21vZGVsL2V2ZW50L2h5cC1ldmVudC10b29sdGlwLmludGVyZmFjZSc7XG5pbXBvcnQgeyBIdnlFdmVudERldGFpbHNUb29sdGlwQ29tcG9uZW50IH0gZnJvbSAnLi9ldmVudC1kZXRhaWxzLXRvb2x0aXAuY29tcG9uZW50JztcbmltcG9ydCB7IEV2ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3N0b3JlL2V2ZW50L2V2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgSHZ5RXZlbnRBZGRFdmVudENvbXBvbmVudCB9IGZyb20gJy4vYWRkLWV2ZW50L2FkZC1ldmVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSHlwQWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWwvcHJvY2VkdXJlL2h5cC1hY3Rpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IEh5cENvbW1lbnQgfSBmcm9tICcuLi8uLi9tb2RlbC9jb21tZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBBY3Rpb25zLCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IEV2ZW50U2VsZWN0b3JzIH0gZnJvbSAnLi4vLi4vc3RvcmUvZXZlbnQvZXZlbnQuc2VsZWN0b3JzJztcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcblxuZXhwb3J0IHR5cGUgQ2hhbmdlU3RhdHVzQ29udGV4dCA9IHtcbiAgY29tbWVudDogc3RyaW5nO1xuICBldmVudHM6IEh5cEV2ZW50RGV0YWlsc1tdO1xuICBzdGF0dXM6IHN0cmluZztcbiAgYWxsOiBib29sZWFuO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBIeXBFdmVudERldGFpbHNXaXRoTWF0Y2hpbmcgZXh0ZW5kcyBIeXBFdmVudERldGFpbHMge1xuICBodG1sOiBzdHJpbmc7XG4gIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBFVkVOVF9ERVRBSUxfQUNDRVNTX0ZOID0ge1xuICB2YWx1ZTogKGV2ZW50OiBIeXBFdmVudERldGFpbHMsIGNvbXBvbmVudDogRXZlbnREZXRhaWxDb21wb25lbnQpID0+IHtcbiAgICBjb25zdCByZWFkb25seSA9XG4gICAgICBjb21wb25lbnQucmVhZG9ubHkgfHxcbiAgICAgIGV2ZW50LnN0YXR1cyA9PT0gJ0RPTkUnIHx8XG4gICAgICAoWydMSU1JVCcsICdPVVRPRk9SREVSJywgJ0FOT01BTFknXS5pbmNsdWRlcyhldmVudC5jYXRlZ29yeSkgJiYgZXZlbnQuZXh0ZXJuYWxTb3VyY2VSZWYgIT09ICdIeXBlcnZpc2V1cicpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHJlYWRvbmx5LFxuICAgICAgY2F0ZWdvcnk6IHJlYWRvbmx5LFxuICAgICAgc3ViQ2F0ZWdvcnk6IHJlYWRvbmx5LFxuICAgICAgY3JpdGljYWxpdHk6IHJlYWRvbmx5LFxuICAgICAgZGVzY3JpcHRpb246IHJlYWRvbmx5LFxuICAgICAgYWRkcmVzczogcmVhZG9ubHksXG4gICAgICBzb3VyY2U6IHRydWUsXG4gICAgICBkb21haW46IHJlYWRvbmx5LFxuICAgICAgZXFOYW1lOiByZWFkb25seSxcbiAgICAgIGVxRW50aXR5OiByZWFkb25seSxcbiAgICAgIHN0YXJ0RGF0ZTogcmVhZG9ubHksXG4gICAgICBlbmREYXRlOiByZWFkb25seSxcbiAgICAgIHBhcmVudDogY29tcG9uZW50LnJlYWRvbmx5IHx8IGV2ZW50LnN0YXR1cyA9PT0gJ0RPTkUnXG4gICAgfTtcbiAgfVxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaHZ5LWV2ZW50LWRldGFpbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9ldmVudC1kZXRhaWwuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEV2ZW50RGV0YWlsQ29tcG9uZW50IGV4dGVuZHMgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIHtcbiAgZXZlbnRGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7ZXF1aXBzOiB0aGlzLmZvcm1CdWlsZGVyLmFycmF5KFtdKX0pO1xuICBnZXQgZXF1aXBDb250cm9scygpe1xuICAgIHJldHVybiB0aGlzLmV2ZW50Rm9ybS5nZXQoJ2VxdWlwcycpIGFzIEZvcm1BcnJheTtcbiAgfVxuICBASW5wdXQoKSBwbGFjZXNDaG9pY2VzOiAoe2tleTogc3RyaW5nLCBkaXNwbGF5OiBzdHJpbmd9KVtdID0gW107XG4gIG9wZW5lZDogYm9vbGVhbltdID0gW107XG4gIGNyaXRpY2FsaXRpZXMgPSBIeXBFdmVudENyaXRpY2FsaXR5LnZhbHVlcztcbiAgX2V2ZW50czogSHlwRXZlbnREZXRhaWxzW10gPSBbXTtcbiAgZXZlbnRNb2RpZmljYXRpb25zOiBQYXJ0aWFsPEh5cEV2ZW50RGV0YWlscz5bXSA9IFtdO1xuICBAT3V0cHV0KCkgbW9kaWZpZWRFdmVudHMgPSBuZXcgRXZlbnRFbWl0dGVyPFtQYXJ0aWFsPEh5cEV2ZW50RGV0YWlscz4sIEh5cEV2ZW50RGV0YWlsc11bXT4oKTtcbiAgX3Byb2NlZHVyZT86IEh5cFByb2NlZHVyZTtcbiAgcHJvY2VkdXJlTW9kaWZpY2F0aW9uczogUGFydGlhbDxIeXBQcm9jZWR1cmU+ID0ge307XG4gIEBPdXRwdXQoKSBtb2RpZmllZFByb2NlZHVyZSA9IG5ldyBFdmVudEVtaXR0ZXI8W1BhcnRpYWw8SHlwUHJvY2VkdXJlPiwgSHlwUHJvY2VkdXJlXSB8IHVuZGVmaW5lZD4oKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IERPTUFJTlMgPSBET01BSU5TLnZhbHVlcztcbiAgQE91dHB1dCgpIGV2ZW50RXJyb3JzID0gbmV3IEV2ZW50RW1pdHRlcjx7IGZpZWxkOiBzdHJpbmc7IGNvZGU6IHN0cmluZyB9W11bXT4oKTtcbiAgQE91dHB1dCgpIGFkZGVkRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEh5cEV2ZW50RGV0YWlscz4oKTtcbiAgZXJyb3JzOiB7IGZpZWxkOiBzdHJpbmc7IGNvZGU6IHN0cmluZyB9W11bXSA9IFtdO1xuICBjYW5DbG9zZVNvbWUgPSBmYWxzZTtcbiAgY2hhbmdlU3RhdHVzQ29udGV4dDogQ2hhbmdlU3RhdHVzQ29udGV4dCA9IHtcbiAgICBjb21tZW50OiAnJyxcbiAgICBldmVudHM6IFtdLFxuICAgIHN0YXR1czogJ0RPTkUnLFxuICAgIGFsbDogZmFsc2VcbiAgfTtcbiAgQElucHV0KCkgdGl0bGU/OiBzdHJpbmc7XG5cbiAgQElucHV0KCkgc2V0IGVxdWlwbWVudEZyb21NYXAoXG4gICAgZXF1aXBtZW50RnJvbU1hcDoge2VxdWlwbWVudDogRXF1aXBtZW50Rm9yRXZlbnQgfCBudWxsLCBmYW1pbHk6IHN0cmluZyB8IG51bGx9IHwgbnVsbCkge1xuICAgIGlmKGVxdWlwbWVudEZyb21NYXAgJiYgdGhpcy5lcXVpcENvbnRyb2xzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmKGVxdWlwbWVudEZyb21NYXAuZXF1aXBtZW50KSB7XG4gICAgICAgIHRoaXMuZXF1aXBDb250cm9scy5hdCgwKS5zZXRWYWx1ZShlcXVpcG1lbnRGcm9tTWFwLmVxdWlwbWVudCk7XG4gICAgICAgIHRoaXMubWFuYWdlRXF1aXBtZW50KDApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiB8IG51bGwgPSBmYWxzZTtcbiAgQElucHV0KCkgcmVhZG9ubHlQcm9jZWR1cmU6IGJvb2xlYW4gfCBudWxsID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVuYWJsZUVkaXRBY3Rpb25zOiBib29sZWFuIHwgbnVsbCA9IGZhbHNlO1xuICBASW5wdXQoKSByZWFkT25seUNvbW1lbnQ6IGJvb2xlYW4gfCBudWxsID0gZmFsc2U7XG4gIG92ZXJsYXlSZWY/OiBPdmVybGF5UmVmO1xuICBAVmlld0NoaWxkKCdjb25maXJtRGlhbG9nJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSBjb25maXJtRGlhbG9nITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQE91dHB1dCgpIGNvbWZpcm1EaWFsb2dPcGVuZWQgPSBuZXcgRXZlbnRFbWl0dGVyPENoYW5nZVN0YXR1c0NvbnRleHQ+KCk7XG4gIGVxdWlwbWVudFNlbGVjdFZhbHVlOiAoc3RyaW5nIHwgSHlwRXF1aXBtZW50IHwgdW5kZWZpbmVkKVtdID0gW107XG4gIGVxdWlwbWVudHMkOiBPYnNlcnZhYmxlPEVxdWlwbWVudEZvckV2ZW50W10+W10gPSBbXTtcbiAgQFZpZXdDaGlsZHJlbignZGV0YWlsSG92ZXJJY29uJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGRldGFpbEhvdmVySWNvbiE6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPFByeUljb25Db21wb25lbnQ+PjtcbiAgb25FdmVudFNlYXJjaCQgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG4gIGV2ZW50U2VsZWN0VmFsdWU6IChzdHJpbmcgfCBIeXBFdmVudERldGFpbHMgfCB1bmRlZmluZWQpW10gPSBbXTtcbiAgZXZlbnRzJDogT2JzZXJ2YWJsZTxIeXBFdmVudERldGFpbHNXaXRoTWF0Y2hpbmdbXT47XG4gIEBPdXRwdXQoKSBjb21tZW50ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIHwgeyBldmVudDogSHlwRXZlbnREZXRhaWxzOyBjb21tZW50czogSHlwQ29tbWVudFtdIH1bXVxuICAgIHwge1xuICAgICAgICBhY3Rpb246IEh5cEFjdGlvbjtcbiAgICAgICAgY29tbWVudHM6IEh5cENvbW1lbnRbXTtcbiAgICAgIH1cbiAgPigpO1xuICBwcm9maWxlOiB7IHN1Yjogc3RyaW5nIHwgdW5kZWZpbmVkOyB1c2VyTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkIH0gfCBudWxsID0gbnVsbDtcblxuICBASW5wdXQoKSBzZXQgbWUobWU6IHsgc3ViOiBzdHJpbmcgfCB1bmRlZmluZWQ7IHVzZXJOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQgfSB8IG51bGwpIHtcbiAgICB0aGlzLnByb2ZpbGUgPSBtZTtcbiAgICB0aGlzLnNldENyZWF0b3JGb3JFdmVudHMoKTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBldmVudHMoZXZlbnRzOiBIeXBFdmVudERldGFpbHNbXSkge1xuICAgIHRoaXMuX2V2ZW50cyA9IGV2ZW50cy5maWx0ZXIoKGV2KSA9PiAhIWV2KTtcbiAgICB0aGlzLmV2ZW50TW9kaWZpY2F0aW9ucyA9IG5ldyBBcnJheSh0aGlzLl9ldmVudHMubGVuZ3RoKTtcbiAgICBpZiAodGhpcy5fZXZlbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5vcGVuZWQgPSBbdHJ1ZV07XG4gICAgfVxuICAgIHRoaXMuY2FuQ2xvc2VTb21lID0gdGhpcy5fZXZlbnRzLmZpbHRlcigoZXYpID0+IGV2LnN0YXR1cyAhPT0gJ0RPTkUnKS5sZW5ndGggPiAwO1xuICAgIHRoaXMuX2V2ZW50cy5mb3JFYWNoKChldiwgaWR4KSA9PiB7XG4gICAgICBsZXQgZ2V0RXF1aXBtZW50ID0gdGhpcy5fZXZlbnRzW2lkeF0uZXF1aXBtZW50IGFzIEVxdWlwbWVudEZvckV2ZW50O1xuICAgICAgaWYodGhpcy5fZXZlbnRzW2lkeF0uYWRkcmVzcyAmJiAhIWdldEVxdWlwbWVudCl7XG4gICAgICAgIGdldEVxdWlwbWVudCA9IHsuLi5nZXRFcXVpcG1lbnQsIGFkZHJlc3M6IHRoaXMuX2V2ZW50c1tpZHhdLmFkZHJlc3N9O1xuICAgICAgfVxuICAgICAgY29uc3QgZXF1aXBDb250cm9sID0gbmV3IEZvcm1Db250cm9sPEVxdWlwbWVudEZvckV2ZW50IHwgc3RyaW5nIHwgbnVsbD4oZ2V0RXF1aXBtZW50KTtcbiAgICAgIGlmKGV2LnN0YXR1cyA9PT0gJ0RPTkUnKSB7XG4gICAgICAgIGVxdWlwQ29udHJvbC5kaXNhYmxlKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmVxdWlwQ29udHJvbHMucHVzaChlcXVpcENvbnRyb2wpO1xuICAgICAgaWYodHlwZW9mIGdldEVxdWlwbWVudCA9PT0gJ29iamVjdCcgJiYgISFnZXRFcXVpcG1lbnQpe1xuICAgICAgICB0aGlzLmdldERhdGFGb3JUb29sdGlwKGdldEVxdWlwbWVudCBhcyBIeXBFcXVpcG1lbnQsIGlkeCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFcXVpcG1lbnRbaWR4XSA9IHRydWU7XG4gICAgICAgIHRoaXMuYWRyZXNzRGlzYWJsZWRbaWR4XSA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRXF1aXBtZW50W2lkeF0gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5hZHJlc3NEaXNhYmxlZFtpZHhdID0gZmFsc2U7XG4gICAgICB9XG4gICAgICB0aGlzLmVxdWlwbWVudFNlbGVjdFZhbHVlW2lkeF0gPSBnZXRFcXVpcG1lbnQ7XG4gICAgICBpZiAoZXYucGFyZW50ICYmIGV2LnBhcmVudC5pZCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUGFyZW50Q2hhbmdlKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC4uLmV2LnBhcmVudCxcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBgJHtwYWRJZC5mbihldi5wYXJlbnQuaWQpfSAtICR7ZXYucGFyZW50Lm5hbWV9YFxuICAgICAgICAgIH0gYXMgdW5rbm93biBhcyBIeXBFdmVudERldGFpbHNXaXRoTWF0Y2hpbmcsXG4gICAgICAgICAgaWR4XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmVxdWlwQ29udHJvbHMuY29udHJvbHMuZm9yRWFjaCgoY29udHJvbCwgaW5kZXgpPT4ge1xuICAgICAgdGhpcy5lcXVpcG1lbnRzJFtpbmRleF0gPSBjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aChjb250cm9sLnZhbHVlKSwgZGVib3VuY2VUaW1lKDIwMCksXG4gICAgICAgIHN3aXRjaE1hcChlcXVpcG1lbnQgPT4ge1xuICAgICAgICAgIGNvbnN0IGRvbWFpbiA9IHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XT8uZG9tYWluID8/IHRoaXMuX2V2ZW50c1tpbmRleF0/LmRvbWFpbiA/PyB1bmRlZmluZWQ7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZXF1aXBtZW50U2VydmljZS5zZWFyY2godHlwZW9mIGVxdWlwbWVudCA9PT0gJ29iamVjdCcgPyBlcXVpcG1lbnQ/Lm5hbWUgOiBlcXVpcG1lbnQsIGRvbWFpbikucGlwZShcbiAgICAgICAgICAgIG1hcCgoZXF1aXBtZW50cykgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gZXF1aXBtZW50cztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ1NlYXJjaCBFcXVpcG1lbnQgcHJvYmxlbScpKSksXG4gICAgICAgIHNoYXJlUmVwbGF5KClcbiAgICAgICk7XG4gICAgfSlcbiAgICB0aGlzLnNldENyZWF0b3JGb3JFdmVudHMoKTtcbiAgICB0aGlzLnNldERpc3RyaWN0Rm9yRXZlbnRzKCk7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgcHJvY2VkdXJlKHByb2NlZHVyZTogSHlwUHJvY2VkdXJlKSB7XG4gICAgdGhpcy5fcHJvY2VkdXJlID0gcHJvY2VkdXJlO1xuICAgIHRoaXMucHJvY2VkdXJlTW9kaWZpY2F0aW9ucyA9IHt9O1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGNhbmNlbE1vZGlmaWNhdGlvbnMoZXZ0OiBhbnkpIHtcbiAgICB0aGlzLmVxdWlwQ29udHJvbHMuY29udHJvbHMuZm9yRWFjaCgoY29udHJvbCwgaW5kZXgpPT4ge1xuICAgICAgY29uc3QgaW5pdGlhbEVxdWlwbWVudCA9IHRoaXMuZXF1aXBtZW50U2VsZWN0VmFsdWVbaW5kZXhdO1xuICAgICAgY29udHJvbC5zZXRWYWx1ZShpbml0aWFsRXF1aXBtZW50KTtcbiAgICAgIGlmKHR5cGVvZiBpbml0aWFsRXF1aXBtZW50ID09PSAnb2JqZWN0JyAmJiAhIWluaXRpYWxFcXVpcG1lbnQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEVxdWlwbWVudFtpbmRleF0gPSB0cnVlO1xuICAgICAgICB0aGlzLmFkcmVzc0Rpc2FibGVkW2luZGV4XSA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRXF1aXBtZW50W2luZGV4XSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmFkcmVzc0Rpc2FibGVkW2luZGV4XSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pXG4gICAgdGhpcy5ldmVudFNlbGVjdFZhbHVlID0gdGhpcy5ldmVudFNlbGVjdFZhbHVlLm1hcCgoZXZlbnRQYXJlbnQsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBpbml0aWFsUGFyZW50ID0gdGhpcy5fZXZlbnRzW2luZGV4XS5wYXJlbnQ7XG4gICAgICBpZiAoaW5pdGlhbFBhcmVudCkge1xuICAgICAgICBjb25zdCByZWdleCA9IHRoaXMuZ2V0Q29tYm9Cb3hSZWdFeHAoaW5pdGlhbFBhcmVudC5uYW1lKTtcbiAgICAgICAgY29uc3QgaHRtbCA9IGAke3BhZElkLmZuKGluaXRpYWxQYXJlbnQuaWQpfSAtICR7aW5pdGlhbFBhcmVudC5uYW1lfWA7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uaW5pdGlhbFBhcmVudCxcbiAgICAgICAgICBodG1sOiBodG1sLnJlcGxhY2VBbGwocmVnZXgsIChtYXRjaGVkOiBzdHJpbmcsIGNhcHR1cmUxOiBzdHJpbmcpID0+IGA8Yj4ke2NhcHR1cmUxfTwvYj5gKSxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogaHRtbFxuICAgICAgICB9IGFzIEh5cEV2ZW50RGV0YWlsc1dpdGhNYXRjaGluZztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnMgPSBuZXcgQXJyYXkodGhpcy5fZXZlbnRzLmxlbmd0aCk7XG4gICAgdGhpcy5wcm9jZWR1cmVNb2RpZmljYXRpb25zID0ge307XG4gICAgdGhpcy5fb3V0cHV0TW9kaWZpY2F0aW9ucygpO1xuICB9XG5cbiAgc2VsZWN0ZWRFcXVpcG1lbnQgPSBbZmFsc2VdO1xuICBhZHJlc3NEaXNhYmxlZCA9IFtmYWxzZV07XG4gIG9wZW5lZEF1dG9jb21wbGV0ZSA9IFtmYWxzZV07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlcXVpcG1lbnRTZXJ2aWNlOiBFcXVpcG1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlLFxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHVibGljIGkxOG5TZXJ2aWNlOiBQcnlJMThuU2VydmljZSxcbiAgICBwcml2YXRlIHByeURpYWxvZzogUHJ5RGlhbG9nU2VydmljZSxcbiAgICBwcml2YXRlIGNvbW1lbnRzU2VydmljZTogSHlwQ29tbWVudHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY3Rpb25zJDogQWN0aW9ucyxcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlclxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUob2ZUeXBlKEV2ZW50QWN0aW9ucy5zdGF0dXMpLCBkZWxheSgxMDAwKSkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlc3VsdCkgPT4ge1xuICAgICAgICAgIGlmIChyZXN1bHQuZXZlbnQgJiYgcmVzdWx0LmV2ZW50LmlkKSB7XG4gICAgICAgICAgICB0aGlzLmV2ZW50U2VydmljZS5nZXQocmVzdWx0LmV2ZW50LmlkKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuY29tbWVudHNTZXJ2aWNlLmdldChyZXN1bHQuZXZlbnQhLmlkLCAnZXZlbnRzJykuc3Vic2NyaWJlKChjb21tZW50cykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29tbWVudGVkLm5leHQoW3sgZXZlbnQsIGNvbW1lbnRzIH1dKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdC5wcm9jZWR1cmUgJiYgcmVzdWx0LnRhcmdldFN0YXR1cyA9PT0gJ0RPTkUnKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlXG4gICAgICAgICAgICAgIC5zZWxlY3QoRXZlbnRTZWxlY3RvcnMuZGV0YWlscylcbiAgICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZGV0YWlscykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChkZXRhaWxzLnByb2NlZHVyZSAmJiBkZXRhaWxzLnByb2NlZHVyZS5ldmVudHMpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2FuQ2xvc2VTb21lID0gISFkZXRhaWxzLnByb2NlZHVyZS5ldmVudHMuZmluZCgoZXZlbnQpID0+IGV2ZW50LnN0YXR1cyAhPT0gJ0RPTkUnKTtcbiAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5jYW5DbG9zZVNvbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXZlbnRzLmZvckVhY2goKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RhdHVzID0gJ0RPTkUnO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChFdmVudEFjdGlvbnMuc2VsZWN0KHsgaWRzOiBbXSwgY3VtdWxhdGl2ZTogZmFsc2UgfSkpO1xuXG4gICAgdGhpcy5ldmVudHMkID0gdGhpcy5vbkV2ZW50U2VhcmNoJC5waXBlKHN0YXJ0V2l0aCgpLCBkZWJvdW5jZVRpbWUoNTAwKSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBzZWFyY2ggPVxuICAgICAgICAgIHR5cGVvZiB0aGlzLmV2ZW50U2VsZWN0VmFsdWVbaW5kZXhdID09PSAnc3RyaW5nJyAmJiAodGhpcy5ldmVudFNlbGVjdFZhbHVlW2luZGV4XSBhcyBzdHJpbmcpLmxlbmd0aCA+IDJcbiAgICAgICAgICAgID8gKHRoaXMuZXZlbnRTZWxlY3RWYWx1ZVtpbmRleF0gYXMgc3RyaW5nKVxuICAgICAgICAgICAgOiAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgIHRoaXMuZXZlbnRTZWxlY3RWYWx1ZVtpbmRleF1cbiAgICAgICAgICAgICAgPyBwYWRJZC5mbigodGhpcy5ldmVudFNlbGVjdFZhbHVlW2luZGV4XSBhcyBIeXBFdmVudERldGFpbHMpLmlkKVxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXZlbnRTZXJ2aWNlLnNlYXJjaChzZWFyY2gsIFsnbmFtZScsICdpZCddKS5waXBlKFxuICAgICAgICAgIG1hcCgoZXZlbnRzKSA9PlxuICAgICAgICAgICAgZXZlbnRzLm1hcCgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgcmVnZXggPSB0aGlzLmdldENvbWJvQm94UmVnRXhwKHNlYXJjaCk7XG4gICAgICAgICAgICAgIGNvbnN0IGh0bWwgPSBgJHtwYWRJZC5mbihldmVudC5pZCl9IC0gJHtldmVudC5uYW1lfWA7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uZXZlbnQsXG4gICAgICAgICAgICAgICAgaHRtbDogaHRtbC5yZXBsYWNlQWxsKHJlZ2V4LCAobWF0Y2hlZDogc3RyaW5nLCBjYXB0dXJlMTogc3RyaW5nKSA9PiBgPGI+JHtjYXB0dXJlMX08L2I+YCksXG4gICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6IGh0bWxcbiAgICAgICAgICAgICAgfSBhcyBIeXBFdmVudERldGFpbHNXaXRoTWF0Y2hpbmc7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcignU2VhcmNoIEVxdWlwbWVudCBwcm9ibGVtJykpO1xuICAgICAgfSksXG4gICAgICBzaGFyZVJlcGxheSgpXG4gICAgKTtcbiAgfVxuXG4gIGlzRXZlbnRNb2RpZmllZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5ldmVudE1vZGlmaWNhdGlvbnMuc29tZSgobW9kaWYsIGluZGV4KSA9PlxuICAgICAgT2JqZWN0LmtleXModGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdKS5sZW5ndGggIT09IDBcbiAgICApXG4gIH1cblxuICBwcml2YXRlIHNldERpc3RyaWN0Rm9yRXZlbnRzKCl7XG4gICAgdGhpcy5fZXZlbnRzID0gdGhpcy5fZXZlbnRzLm1hcCgoZXZlKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5ldmUsXG4gICAgICAgIGRpc3RyaWN0OiBldmUuZGlzdHJpY3QgPyBldmUuZGlzdHJpY3QgOiBldmUuZXF1aXBtZW50Py5kaXN0cmljdCA/IGV2ZS5lcXVpcG1lbnQuZGlzdHJpY3QgOiAnJ1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q3JlYXRvckZvckV2ZW50cygpIHtcbiAgICB0aGlzLl9ldmVudHMgPSB0aGlzLl9ldmVudHMubWFwKChldmUpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmV2ZSxcbiAgICAgICAgY3JlYXRvcjogZXZlLmNyZWF0b3JcbiAgICAgICAgICA/IGV2ZS5jcmVhdG9yXG4gICAgICAgICAgOiBldmUuZXh0ZXJuYWxTb3VyY2VSZWYgPT09ICdIeXBlcnZpc2V1cidcbiAgICAgICAgICAgID8gKHRoaXMucHJvZmlsZT8udXNlck5hbWUgYXMgc3RyaW5nKVxuICAgICAgICAgICAgOiAnLS0nXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb21ib0JveFJlZ0V4cChzZWFyY2g6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBSZWdFeHAoYCgke3NlYXJjaH0pYCA/PyAnKC8tLy0vKScsICdnaWQnKTtcbiAgfVxuXG4gIGdldCBtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9maWxlO1xuICB9XG5cbiAgZ2V0IGV2ZW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5fZXZlbnRzLm1hcCgoZXZ0LCBpZHgpID0+ICh7IC4uLmV2dCwgLi4uKHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2lkeF0gPz8ge30pIH0pKTtcbiAgfVxuXG4gIGdldCBjYW5Bc3NvY2lhdGVQcm9jZWR1cmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50cy5ldmVyeSgoZXZ0KSA9PiBldnQuc3RhdHVzID09PSAnTkVXJyAmJiBldnQuaWQgIT09IC0xKTtcbiAgfVxuXG4gIGdldCBwcm9jZWR1cmUoKTogSHlwUHJvY2VkdXJlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcHJvY2VkdXJlXG4gICAgICA/IHtcbiAgICAgICAgICAuLi50aGlzLl9wcm9jZWR1cmUsXG4gICAgICAgICAgLi4uKHRoaXMucHJvY2VkdXJlTW9kaWZpY2F0aW9ucyA/PyB7fSksXG4gICAgICAgICAgZXZlbnRzOiB0aGlzLmV2ZW50c1xuICAgICAgICB9XG4gICAgICA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBjbG9zZUNvbW1lbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9jZWR1cmU/LmNsb3NlQ29tbWVudCA/PyAnJztcbiAgfVxuXG4gIHRvZ2dsZShpOiBudW1iZXIpIHtcbiAgICB0aGlzLm9wZW5lZFtpXSA9ICF0aGlzLm9wZW5lZFtpXTtcbiAgfVxuXG4gIG1hbmFnZUVxdWlwbWVudChpbmRleDogbnVtYmVyKXtcbiAgICBjb25zdCBnZXRFcXVpcG1lbnQgPSB0aGlzLmVxdWlwQ29udHJvbHMuYXQoaW5kZXgpLnZhbHVlO1xuICAgIGlmICh0eXBlb2YgZ2V0RXF1aXBtZW50ID09PSAnb2JqZWN0Jykge1xuICAgICAgdGhpcy5zZWxlY3RlZEVxdWlwbWVudFtpbmRleF0gPSB0cnVlO1xuICAgICAgdGhpcy5nZXREYXRhRm9yVG9vbHRpcChnZXRFcXVpcG1lbnQgYXMgSHlwRXF1aXBtZW50LCBpbmRleCk7XG4gICAgICBpZiAoIXRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XSkge1xuICAgICAgICB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0gPSB7fTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XS5hZGRyZXNzID0gZ2V0RXF1aXBtZW50Py5hZGRyZXNzO1xuICAgICAgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdLmRpc3RyaWN0ID0gZ2V0RXF1aXBtZW50Py5kaXN0cmljdDtcbiAgICAgIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XS5lcXVpcG1lbnQgPSBnZXRFcXVpcG1lbnQgYXMgSHlwRXF1aXBtZW50O1xuICAgICAgdGhpcy5hZHJlc3NEaXNhYmxlZFtpbmRleF0gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRXF1aXBtZW50W2luZGV4XSA9IGZhbHNlO1xuICAgICAgaWYoIXRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XSl7XG4gICAgICAgIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XSA9IHt9O1xuICAgICAgfVxuICAgICAgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdLmFkZHJlc3MgPSAnJztcbiAgICAgIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XS5kaXN0cmljdCA9ICcnO1xuICAgICAgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdLmVxdWlwbWVudCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuYWRyZXNzRGlzYWJsZWRbaW5kZXhdID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYodGhpcy5fZXZlbnRzW2luZGV4XS5lcXVpcG1lbnQ/Lm5hbWUgPT09IGdldEVxdWlwbWVudD8ubmFtZSB8fCB0aGlzLl9ldmVudHNbaW5kZXhdLmVxdWlwbWVudCA9PT0gZ2V0RXF1aXBtZW50KXtcbiAgICAgIGlmICghIXRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XSkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGRlbGV0ZSB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0uZXF1aXBtZW50O1xuICAgICAgICBkZWxldGUgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdLmFkZHJlc3M7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0uZGlzdHJpY3Q7XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0pLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGRlbGV0ZSB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBtb2RpZnlFdmVudChpbmRleDogbnVtYmVyLCBwcm9wOiBzdHJpbmcsICRldmVudDogRXZlbnQgfCBzdHJpbmcpIHtcbiAgICB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0gPSB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0gPz8gKHt9IGFzIFBhcnRpYWw8SHlwRXZlbnREZXRhaWxzPik7XG4gICAgaWYgKHByb3AgPT09ICdjYXRlZ29yeScpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0uc3ViQ2F0ZWdvcnk7XG4gICAgICBpZiAoJGV2ZW50ID09PSAnQU5PTUFMWScpIHtcbiAgICAgICAgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdLnN1YkNhdGVnb3J5ID0gJ05PTkUnO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocHJvcCA9PT0gJ2RvbWFpbicgJiYgdGhpcy5lcXVpcENvbnRyb2xzLmF0KGluZGV4KS52YWx1ZT8uZG9tYWluICE9PSAkZXZlbnQpIHtcbiAgICAgIHRoaXMuZXF1aXBDb250cm9scy5hdChpbmRleCkuc2V0VmFsdWUoJycpO1xuICAgICAgdGhpcy5tYW5hZ2VFcXVpcG1lbnQoaW5kZXgpO1xuICAgIH1cbiAgICBjb25zdCBpc0RhdGUgPSBwcm9wLmluZGV4T2YoJ0RhdGUnKSA+IC0xO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBuZXdWYWx1ZSA9ICRldmVudCBpbnN0YW5jZW9mIEV2ZW50ID8gJGV2ZW50LnRhcmdldD8udmFsdWUgOiAkZXZlbnQ7XG5cbiAgICBjb25zdCBjb3JyZWN0ZWRWYWx1ZSA9ICFpc0RhdGUgPyBuZXdWYWx1ZSA6IHRoaXMuY29udmVydERhdGUobmV3VmFsdWUpO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAodGhpcy5fZXZlbnRzW2luZGV4XVtwcm9wXSAhPT0gY29ycmVjdGVkVmFsdWUpIHtcbiAgICAgIGlmICghdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdKSB7XG4gICAgICAgIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XSA9IHt9O1xuICAgICAgfVxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdW3Byb3BdID0gY29ycmVjdGVkVmFsdWU7XG5cbiAgICAgIHRoaXMuX291dHB1dE1vZGlmaWNhdGlvbnMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCEhdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgZGVsZXRlIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XVtwcm9wXTtcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgZGVsZXRlIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9vdXRwdXRNb2RpZmljYXRpb25zKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYWNjZXNzKGV2ZW50OiBIeXBFdmVudERldGFpbHMpIHtcbiAgICByZXR1cm4gRVZFTlRfREVUQUlMX0FDQ0VTU19GTi52YWx1ZShldmVudCwgdGhpcyk7XG4gIH1cblxuICBfb3V0cHV0TW9kaWZpY2F0aW9ucygpIHtcbiAgICB0aGlzLnZhbGlkYXRlRXZlbnRzKHRoaXMuZXZlbnRzKTtcbiAgICB0aGlzLm1vZGlmaWVkRXZlbnRzLm5leHQodGhpcy5ldmVudHMubWFwKChldiwgaWR4KSA9PiBbdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaWR4XSwgZXZdKSk7XG4gICAgdGhpcy5tb2RpZmllZFByb2NlZHVyZS5uZXh0KHRoaXMucHJvY2VkdXJlID8gW3RoaXMucHJvY2VkdXJlTW9kaWZpY2F0aW9ucywgdGhpcy5wcm9jZWR1cmUhXSA6IHVuZGVmaW5lZCk7XG4gIH1cblxuICB2YWxpZGF0ZUV2ZW50cyhldmVudHM6IEh5cEV2ZW50RGV0YWlsc1tdKSB7XG4gICAgdGhpcy5lcnJvcnMgPSBbXTtcbiAgICBldmVudHMuZm9yRWFjaCgoZXZlbnQsIGlkeCkgPT4ge1xuICAgICAgY29uc3QgZXZlbnRFcnJvcnMgPSBbXTtcbiAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cCgvXlxccyskLyk7XG4gICAgICBpZiAoIWV2ZW50Lm5hbWUgfHwgZXZlbnQubmFtZS5sZW5ndGggPT09IDAgfHwgcmVnZXgudGVzdChldmVudC5uYW1lKSkge1xuICAgICAgICBldmVudEVycm9ycy5wdXNoKHsgZmllbGQ6ICduYW1lJywgY29kZTogJ3JlcXVpcmVkJyB9KTtcbiAgICAgIH1cbiAgICAgIGlmICghZXZlbnQuY2F0ZWdvcnkgfHwgZXZlbnQuY2F0ZWdvcnkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGV2ZW50RXJyb3JzLnB1c2goeyBmaWVsZDogJ2NhdGVnb3J5JywgY29kZTogJ3JlcXVpcmVkJyB9KTtcbiAgICAgIH1cbiAgICAgIGlmICghZXZlbnQuY3JpdGljYWxpdHkgfHwgZXZlbnQuY3JpdGljYWxpdHkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGV2ZW50RXJyb3JzLnB1c2goeyBmaWVsZDogJ2NyaXRpY2FsaXR5JywgY29kZTogJ3JlcXVpcmVkJyB9KTtcbiAgICAgIH1cbiAgICAgIGlmICghZXZlbnQuZGVzY3JpcHRpb24gfHwgZXZlbnQuZGVzY3JpcHRpb24ubGVuZ3RoID09PSAwIHx8IHJlZ2V4LnRlc3QoZXZlbnQuZGVzY3JpcHRpb24pKSB7XG4gICAgICAgIGV2ZW50RXJyb3JzLnB1c2goeyBmaWVsZDogJ2Rlc2NyaXB0aW9uJywgY29kZTogJ3JlcXVpcmVkJyB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZXF1aXBDb250cm9scy5jb250cm9scy5mb3JFYWNoKChjb250cm9sLCBpbmRleCkgPT4ge1xuICAgICAgICBpZiggdHlwZW9mIGNvbnRyb2wudmFsdWUgPT09ICdzdHJpbmcnICYmIGNvbnRyb2wudmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGV2ZW50RXJyb3JzLnB1c2goeyBmaWVsZDogJ2VxdWlwbWVudCcsIGNvZGU6ICduby1lcXVpcG1lbnQnIH0pO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgY29uc3QgcGFyZW50ID0gZXZlbnQucGFyZW50O1xuICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICBjb25zdCBwYXJlbnROYW1lID0gYCR7cGFkSWQuZm4oZXZlbnQucGFyZW50Py5pZCA/PyAnJyl9IC0gJHtldmVudC5wYXJlbnQ/Lm5hbWV9YDtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRQYXJlbnROYW1lID0gKHRoaXMuZXZlbnRTZWxlY3RWYWx1ZVtpZHhdIGFzIEh5cEV2ZW50RGV0YWlsc1dpdGhNYXRjaGluZyk/LmRpc3BsYXlOYW1lXG4gICAgICAgICAgPyAodGhpcy5ldmVudFNlbGVjdFZhbHVlW2lkeF0gYXMgSHlwRXZlbnREZXRhaWxzV2l0aE1hdGNoaW5nKS5kaXNwbGF5TmFtZVxuICAgICAgICAgIDogdGhpcy5ldmVudFNlbGVjdFZhbHVlW2lkeF07XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhIXRoaXMuZXZlbnRTZWxlY3RWYWx1ZVtpZHhdICYmXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHBhcmVudE5hbWUgIT09IHNlbGVjdGVkUGFyZW50TmFtZVxuICAgICAgICApIHtcbiAgICAgICAgICBldmVudEVycm9ycy5wdXNoKHsgZmllbGQ6ICdwYXJlbnQnLCBjb2RlOiAnbm90LWZvdW5kJyB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LmNhdGVnb3J5ID09PSAnTUFOSUZFU1RBVElPTicpIHtcbiAgICAgICAgaWYgKCFldmVudC5zdGFydERhdGUgfHwgZXZlbnQuc3RhcnREYXRlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGV2ZW50RXJyb3JzLnB1c2goeyBmaWVsZDogJ3N0YXJ0RGF0ZScsIGNvZGU6ICdyZXF1aXJlZCcgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFldmVudC5lbmREYXRlIHx8IGV2ZW50LmVuZERhdGUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgZXZlbnRFcnJvcnMucHVzaCh7IGZpZWxkOiAnZW5kRGF0ZScsIGNvZGU6ICdyZXF1aXJlZCcgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCgoZXZlbnQuc3RhcnREYXRlIGFzIHN0cmluZyk/LmxvY2FsZUNvbXBhcmUoZXZlbnQuZW5kRGF0ZSA/PyAnJykgPz8gMCkgPiAwKSB7XG4gICAgICAgICAgZXZlbnRFcnJvcnMucHVzaCh7IGZpZWxkOiAnc3RhcnREYXRlJywgY29kZTogJ2JlZm9yZScgfSk7XG4gICAgICAgICAgZXZlbnRFcnJvcnMucHVzaCh7IGZpZWxkOiAnZW5kRGF0ZScsIGNvZGU6ICdhZnRlcicgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChldmVudC5zdGFydERhdGUgJiYgZXZlbnQuZW5kRGF0ZSAmJiBldmVudC5zdGFydERhdGUubG9jYWxlQ29tcGFyZShldmVudC5lbmREYXRlKSA+IDApIHtcbiAgICAgICAgICBldmVudEVycm9ycy5wdXNoKHsgZmllbGQ6ICdzdGFydERhdGUnLCBjb2RlOiAnYmVmb3JlJyB9KTtcbiAgICAgICAgICBldmVudEVycm9ycy5wdXNoKHsgZmllbGQ6ICdlbmREYXRlJywgY29kZTogJ2FmdGVyJyB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5lcnJvcnMucHVzaChldmVudEVycm9ycyk7XG4gICAgfSk7XG4gICAgdGhpcy5ldmVudEVycm9ycy5uZXh0KHRoaXMuZXJyb3JzKTtcbiAgfVxuXG4gIGhhc0Vycm9yKHByb3A6IHN0cmluZywgaWR4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5lcnJvcnNbaWR4XT8uZmluZCgoZXJyKSA9PiBlcnIuZmllbGQgPT09IHByb3ApID8/IGZhbHNlO1xuICB9XG5cbiAgY2F0ZWdvcmllcyhldmVudDogSHlwRXZlbnREZXRhaWxzKSB7XG4gICAgcmV0dXJuIEh5cEV2ZW50Q2F0ZWdvcnkudmFsdWVzO1xuICB9XG5cbiAgY2hhbmdlU3RhdHVzKCRldmVudDogc3RyaW5nLCBldmVudDogSHlwRXZlbnREZXRhaWxzKSB7XG4gICAgdGhpcy5jaGFuZ2VTdGF0dXNDb250ZXh0LmV2ZW50cyA9IFtldmVudF07XG4gICAgdGhpcy5jaGFuZ2VTdGF0dXNDb250ZXh0LnN0YXR1cyA9ICRldmVudDtcbiAgICB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuYWxsID0gZmFsc2U7XG4gICAgdGhpcy50b2dnbGVDb25maXJtKCk7XG4gIH1cblxuICBjbG9zZUFsbCgpIHtcbiAgICB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuYWxsID0gdHJ1ZTtcbiAgICB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuZXZlbnRzID0gdGhpcy5ldmVudHM7XG4gICAgdGhpcy5jaGFuZ2VTdGF0dXNDb250ZXh0LnN0YXR1cyA9ICdET05FJztcbiAgICB0aGlzLnRvZ2dsZUNvbmZpcm0oKTtcbiAgfVxuXG4gIGNvbmZpcm1lZENsb3NlKCkge1xuICAgIGlmICh0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuYWxsKSB7XG4gICAgICBpZiAoIXRoaXMucHJvY2VkdXJlKSB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgRXZlbnRBY3Rpb25zLnN0YXR1cyh7XG4gICAgICAgICAgICB0YXJnZXRTdGF0dXM6IHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5zdGF0dXMsXG4gICAgICAgICAgICBldmVudDogdGhpcy5jaGFuZ2VTdGF0dXNDb250ZXh0LmV2ZW50c1swXSxcbiAgICAgICAgICAgIHByb2NlZHVyZTogdGhpcy5wcm9jZWR1cmUsXG4gICAgICAgICAgICBjb21tZW50OiB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuY29tbWVudFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICAgIEV2ZW50QWN0aW9ucy5zdGF0dXMoe1xuICAgICAgICAgICAgdGFyZ2V0U3RhdHVzOiB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuc3RhdHVzLFxuICAgICAgICAgICAgcHJvY2VkdXJlOiB0aGlzLnByb2NlZHVyZSxcbiAgICAgICAgICAgIGNvbW1lbnQ6IHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5jb21tZW50XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgRXZlbnRBY3Rpb25zLnN0YXR1cyh7XG4gICAgICAgICAgdGFyZ2V0U3RhdHVzOiB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuc3RhdHVzLFxuICAgICAgICAgIGV2ZW50OiB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuZXZlbnRzWzBdLFxuICAgICAgICAgIHByb2NlZHVyZTogdGhpcy5wcm9jZWR1cmUsXG4gICAgICAgICAgY29tbWVudDogdGhpcy5jaGFuZ2VTdGF0dXNDb250ZXh0LmNvbW1lbnRcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMudG9nZ2xlQ29uZmlybSgpO1xuICB9XG5cbiAgdG9nZ2xlQ29uZmlybSgpIHtcbiAgICBpZiAoIXRoaXMub3ZlcmxheVJlZikge1xuICAgICAgdGhpcy5jb21maXJtRGlhbG9nT3BlbmVkLm5leHQodGhpcy5jaGFuZ2VTdGF0dXNDb250ZXh0KTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoXG4gICAgICAgIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgICBiYWNrZHJvcENsYXNzOiAnYmFja2Ryb3AtZGFyaycsXG4gICAgICAgICAgcGFuZWxDbGFzczogWydvLWh2eS1jbG9zZS1jb25maXJtJ11cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnRvZ2dsZUNvbmZpcm0oKSk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLmNvbmZpcm1EaWFsb2csIHRoaXMudmlld0NvbnRhaW5lclJlZikpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuY29tbWVudCA9ICcnO1xuICB9XG5cbiAgY29uZmlybURpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuY29tbWVudC5sZW5ndGggPT09IDA7XG4gIH1cblxuICBnZXQgY2FsY3VsYXRlZFByb2dyZXNzKCkge1xuICAgIGlmICh0aGlzLnByb2NlZHVyZSEuYWN0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5yb3VuZChcbiAgICAgICh0aGlzLnByb2NlZHVyZSEuYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gYWN0aW9uLnN0YXR1cyA9PT0gJ0RPTkUnIHx8IGFjdGlvbi5zdGF0dXMgPT09ICdPVF9DTE9TRUQnKS5sZW5ndGggLyB0aGlzLnByb2NlZHVyZSEuYWN0aW9ucy5sZW5ndGgpICpcbiAgICAgICAgMTAwXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBwYWRJZCA9IHBhZElkO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3ViQ2F0ZWdvcmllcyA9IFt1bmRlZmluZWQsIC4uLkh5cEV2ZW50U3ViQ2F0ZWdvcnkudmFsdWVzWydBTk9NQUxZJ11dO1xuXG4gIG1vZGlmaWVkQWN0aW9ucygkZXZlbnQ6IGFueSkge1xuICAgIGlmIChlcXVhbCgkZXZlbnQsIHRoaXMuX3Byb2NlZHVyZSEuYWN0aW9ucykpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLnByb2NlZHVyZU1vZGlmaWNhdGlvbnMuYWN0aW9ucztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcm9jZWR1cmVNb2RpZmljYXRpb25zLmFjdGlvbnMgPSAkZXZlbnQ7XG4gICAgfVxuICAgIHRoaXMuX291dHB1dE1vZGlmaWNhdGlvbnMoKTtcbiAgfVxuXG4gIHJlZnJlc2hBY3Rpb25zKCRldmVudDogSHlwQWN0aW9uW10pIHtcbiAgICBpZiAodGhpcy5wcm9jZWR1cmUgJiYgdGhpcy5wcm9jZWR1cmUuYWN0aW9ucykge1xuICAgICAgdGhpcy5wcm9jZWR1cmUgPSB7XG4gICAgICAgIC4uLnRoaXMucHJvY2VkdXJlLFxuICAgICAgICBhY3Rpb25zOiAkZXZlbnRcbiAgICAgIH07XG4gICAgICB0aGlzLl9vdXRwdXRNb2RpZmljYXRpb25zKCk7XG4gICAgfVxuICB9XG5cbiAgb3BlbkFzc29jaWF0aW9uTW9kYWwoKSB7XG4gICAgY29uc3QgcmVmID0gdGhpcy5wcnlEaWFsb2cub3BlbihQcm9jZWR1cmVBc3NvY2lhdGlvbk1vZGFsQ29tcG9uZW50LCB7XG4gICAgICBiYWNrZHJvcENsYXNzOiAnby1odnktYXNzb2NpYXRpb24tbW9kYWxfX2JhY2tkcm9wJ1xuICAgIH0pO1xuICAgIGlmICghIXJlZiAmJiAhIXJlZi5jb21wb25lbnQpIHtcbiAgICAgIHJlZi5jb21wb25lbnQuZXZlbnRzID0gdGhpcy5ldmVudHM7XG4gICAgfVxuICB9XG5cbiAgb3BlbkRlbGV0ZU1vZGFsKCkge1xuICAgIGNvbnN0IGRhdGE6IFByeURpYWxvZ0NvbmZpcm1EYXRhID0ge1xuICAgICAgdGl0bGU6ICdAY2hoLmV2ZW50LmRlbGV0ZVQnLFxuICAgICAgbWVzc2FnZTogdGhpcy5pMThuU2VydmljZS5pbnN0YW50KHRoaXMuZXZlbnRzLmxlbmd0aCA+IDEgPyAnQGNoaC5ldmVudC5kZWxldGVNKycgOiAnQGNoaC5ldmVudC5kZWxldGVNMScsIHtcbiAgICAgICAgbmJFdmVudHM6IHRoaXMuZXZlbnRzLmxlbmd0aFxuICAgICAgfSksXG4gICAgICBhY3Rpb25zOiBbXG4gICAgICAgIHsgaWQ6IDAsIGxhYmVsOiAnQGNoaC5hY3Rpb24uY2FuY2VsJywgY29sb3I6ICdzZWNvbmRhcnknIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogMSxcbiAgICAgICAgICBsYWJlbDogJ0BjaGguYWN0aW9uLnZhbGlkYXRlJyxcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICBQcm9jZWR1cmVBY3Rpb25zLmRlbGV0ZUluc3RhbmNlKHtcbiAgICAgICAgICAgICAgaWQ6IHRoaXMucHJvY2VkdXJlIS5pZCxcbiAgICAgICAgICAgICAgcmV0dXJuVG9FdmVudDogdGhpcy5ldmVudHMubGVuZ3RoID09PSAxID8gKHRoaXMuZXZlbnRzWzBdIGFzIEh5cEV2ZW50RGV0YWlsc1dpdGhNYXRjaGluZykuaWQgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcbiAgICB0aGlzLnByeURpYWxvZy5vcGVuKFByeURpYWxvZ0NvbmZpcm1Db21wb25lbnQsIHtcbiAgICAgIGRhdGEsXG4gICAgICBiYWNrZHJvcENsYXNzOiAnYmFja2Ryb3AtZGFyaycsXG4gICAgICBwYW5lbENsYXNzOiBbJ28taHZ5LWRlbGV0ZS1wcm9jZWR1cmUnXVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0RGF0ZShuZXdWYWx1ZT86IHN0cmluZykge1xuICAgIHJldHVybiBuZXdWYWx1ZSA/IG5ldyBEYXRlKG5ld1ZhbHVlKS50b0lTT1N0cmluZygpIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZGlzcGxheUVxdWlwbWVudChlcXVpcG1lbnQ6IEVxdWlwbWVudEZvckV2ZW50KSB7XG4gICAgaWYoZXF1aXBtZW50ICYmIGVxdWlwbWVudC5uYW1lICYmIGVxdWlwbWVudC5mYW1pbHkpIHtcbiAgICAgIHJldHVybiBlcXVpcG1lbnQubmFtZS5jb25jYXQoXCIgLSBcIiwgdGhpcy5pMThuU2VydmljZS5pbnN0YW50KCdAaHZ5LmV2ZW50LmZhbWlseS4nICsgZXF1aXBtZW50LmZhbWlseSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgZ2V0RXF1aXBDb250cm9sKGluZGV4OiBudW1iZXIpe1xuICAgIHJldHVybiB0aGlzLmVxdWlwQ29udHJvbHMuYXQoaW5kZXgpIGFzIEZvcm1Db250cm9sO1xuICB9XG5cbiAgb3BlbkF1dG9jb21wbGV0ZShpbmRleDogbnVtYmVyKXtcbiAgICB0aGlzLm9wZW5lZEF1dG9jb21wbGV0ZVtpbmRleF0gPSAhdGhpcy5vcGVuZWRBdXRvY29tcGxldGVbaW5kZXhdO1xuICB9XG5cbiAgY2xvc2VBdXRvY29tcGxldGUoaW5kZXg6IG51bWJlcil7XG4gICAgdGhpcy5vcGVuZWRBdXRvY29tcGxldGVbaW5kZXhdID0gIXRoaXMub3BlbmVkQXV0b2NvbXBsZXRlW2luZGV4XTtcbiAgICB0aGlzLm1hbmFnZUVxdWlwbWVudChpbmRleCk7XG4gICAgdGhpcy5fb3V0cHV0TW9kaWZpY2F0aW9ucygpO1xuICB9XG5cbiAgZXF1aXBtZW50RXZlbnRzRm9yVG9vbHRpcDogeyBldmVudHM/OiBIeXBFdmVudERldGFpbHNbXTsgc2VydmljZXM/OiBIeXBTZXJ2aWNlVG9vbHRpcFtdIH1bXSA9IFtdO1xuXG4gIHByaXZhdGUgZ2V0RGF0YUZvclRvb2x0aXAoJGV2ZW50OiBIeXBFcXVpcG1lbnQgfCB1bmRlZmluZWQsIGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmVxdWlwbWVudEV2ZW50c0ZvclRvb2x0aXBbaW5kZXhdID0ge307XG4gICAgaWYgKCRldmVudCkge1xuICAgICAgdGhpcy5lcXVpcG1lbnRTZXJ2aWNlLmZpbmRCeU5hbWUoJGV2ZW50Lm5hbWUpLnN1YnNjcmliZSgoZXF1aXApID0+IHtcbiAgICAgICAgdGhpcy5lcXVpcG1lbnRFdmVudHNGb3JUb29sdGlwW2luZGV4XS5ldmVudHMgPSBlcXVpcC5ldmVudHM7XG4gICAgICAgIHRoaXMuZXF1aXBtZW50RXZlbnRzRm9yVG9vbHRpcFtpbmRleF0uc2VydmljZXMgPSBlcXVpcC5zZXJ2aWNlcztcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHRvb2x0aXBSZWY/OiBQcnlEaWFsb2dSZWY8SHZ5RXZlbnREZXRhaWxzVG9vbHRpcENvbXBvbmVudD47XG5cbiAgdG9nZ2xlRGV0YWlsc1Rvb2x0aXAoaWR4OiBudW1iZXIpIHtcbiAgICBpZiAoIXRoaXMudG9vbHRpcFJlZikge1xuICAgICAgbGV0IGlkeE9wZW5lZCA9IDA7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlkeDsgaSsrKSB7XG4gICAgICAgIGlmICh0aGlzLm9wZW5lZFtpXSkge1xuICAgICAgICAgIGlkeE9wZW5lZCsrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMudG9vbHRpcFJlZiA9IHRoaXMucHJ5RGlhbG9nLm9wZW4oSHZ5RXZlbnREZXRhaWxzVG9vbHRpcENvbXBvbmVudCwge1xuICAgICAgICBkYXRhOiB0aGlzLmVxdWlwbWVudEV2ZW50c0ZvclRvb2x0aXBbaWR4XSA/PyB7IGV2ZW50czogW10sIHNlcnZpY2VzOiBbXSB9LFxuICAgICAgICBvdmVybGF5Q29uZmlnOiB7XG4gICAgICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5vdmVybGF5XG4gICAgICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5kZXRhaWxIb3Zlckljb24uZ2V0KGlkeE9wZW5lZCkhKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMoW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgICAgICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0pXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy50b29sdGlwUmVmLmNsb3NlVmFsdWUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIHRoaXMudG9vbHRpcFJlZiA9IHVuZGVmaW5lZDtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRvb2x0aXBSZWYuY2xvc2UoKTtcbiAgICAgIHRoaXMudG9vbHRpcFJlZiA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RlZFBhcmVudENoYW5nZSgkZXZlbnQ6IHN0cmluZyB8IEh5cEV2ZW50RGV0YWlscywgaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuZXZlbnRTZWxlY3RWYWx1ZVtpbmRleF0gPSAkZXZlbnQ7XG4gICAgdGhpcy5vbkV2ZW50U2VhcmNoJC5uZXh0KGluZGV4KTtcbiAgICBpZiAodHlwZW9mICRldmVudCA9PT0gJ29iamVjdCcgfHwgJGV2ZW50ID09PSAnJykge1xuICAgICAgY29uc3QgcGFyZW50Rm9yRXZlbnQgPSAkZXZlbnQgIT09ICcnID8geyBpZDogJGV2ZW50LmlkLCBuYW1lOiAkZXZlbnQubmFtZSB9IDogdW5kZWZpbmVkO1xuICAgICAgaWYgKCFwYXJlbnRGb3JFdmVudCB8fCB0aGlzLl9ldmVudHNbaW5kZXhdLnBhcmVudD8uaWQgIT09IHBhcmVudEZvckV2ZW50LmlkKSB7XG4gICAgICAgIGlmICghdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdKSB7XG4gICAgICAgICAgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdID0ge307XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdLnBhcmVudCA9IHBhcmVudEZvckV2ZW50O1xuICAgICAgICB0aGlzLl9vdXRwdXRNb2RpZmljYXRpb25zKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoISF0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0pIHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgZGVsZXRlIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XS5wYXJlbnQ7XG4gICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLl9vdXRwdXRNb2RpZmljYXRpb25zKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fb3V0cHV0TW9kaWZpY2F0aW9ucygpO1xuICAgIH1cbiAgfVxuXG4gIGFkZE9uZUV2ZW50KCkge1xuICAgIGNvbnN0IHJlZiA9IHRoaXMucHJ5RGlhbG9nLm9wZW4oSHZ5RXZlbnRBZGRFdmVudENvbXBvbmVudCwge1xuICAgICAgZGF0YTogeyBwcm9jZWR1cmU6IHRoaXMucHJvY2VkdXJlIH0sXG4gICAgICBiYWNrZHJvcENsYXNzOiAnYmFja2Ryb3AtZGFyaydcbiAgICB9KTtcblxuICAgIHJlZi5jbG9zZVZhbHVlLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgIHN3aXRjaCAodmFsdWUudmFsdWUpIHtcbiAgICAgICAgY2FzZSAnYWRkJzpcbiAgICAgICAgICB0aGlzLmFkZGVkRXZlbnQubmV4dCh2YWx1ZS5ldmVudCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICByZWYuY2xvc2UoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFjdGlvbkNvbW1lbnRlZCgkZXZlbnQ6IHsgYWN0aW9uOiBIeXBBY3Rpb247IGNvbW1lbnRzOiBIeXBDb21tZW50W10gfSkge1xuICAgIHRoaXMuY29tbWVudGVkLm5leHQoJGV2ZW50KTtcbiAgfVxuXG4gIHVwZGF0ZUNvbW1lbnQoZXZlbnQ6IEh5cEV2ZW50RGV0YWlscywgY29tbWVudDogeyBpZDogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmcgfSkge1xuICAgIHRoaXMuY29tbWVudHNTZXJ2aWNlLnNhdmUoZXZlbnQuaWQsICdldmVudHMnLCBjb21tZW50KS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgbGV0IGV2ZW50c0FuZENvbW1lbnRzOiB7IGV2ZW50OiBIeXBFdmVudERldGFpbHM7IGNvbW1lbnRzOiBIeXBDb21tZW50W10gfVtdID0gW107XG4gICAgICBsZXQgY29tbWVudHMkOiBPYnNlcnZhYmxlPEh5cENvbW1lbnRbXT5bXSA9IFtdO1xuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuX2V2ZW50cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgY29tbWVudHMkLnB1c2godGhpcy5jb21tZW50c1NlcnZpY2UuZ2V0KHRoaXMuX2V2ZW50c1tpbmRleF0uaWQsICdldmVudHMnKSk7XG4gICAgICB9XG4gICAgICB6aXAoY29tbWVudHMkKVxuICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAoY29tbWVudHNBcnJheSkgPT4ge1xuICAgICAgICAgICAgY29tbWVudHNBcnJheS5mb3JFYWNoKChjb21tZW50cywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgZXZlbnRzQW5kQ29tbWVudHMucHVzaCh7IGV2ZW50OiB0aGlzLl9ldmVudHNbaW5kZXhdLCBjb21tZW50czogY29tbWVudHMgYXMgSHlwQ29tbWVudFtdIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb21tZW50ZWQubmV4dChldmVudHNBbmRDb21tZW50cyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCkge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgdGhpcy50b29sdGlwUmVmPy5jbG9zZSgpO1xuICAgIHRoaXMudG9vbHRpcFJlZiA9IHVuZGVmaW5lZDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxcIj5cbiAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX2hlYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19oZWFkZXJfX3NwbGl0XCI+XG4gICAgICA8aDE+e3sgdGl0bGUgPz8gJ0BodnkuZXZlbnQuZGV0YWlsJyB8IGkxOG4gfX08L2gxPlxuICAgICAgQGlmIChwcm9jZWR1cmUgJiYgY2FuQ2xvc2VTb21lKSB7XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJhZGQtYnV0dG9uXCIgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCIgKGNsaWNrKT1cImFkZE9uZUV2ZW50KClcIj5cbiAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImFkZFwiIFt3aWR0aF09XCIxOFwiIFtoZWlnaHRdPVwiMThcIj48L3ByeS1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIH1cbiAgICAgIEBpZiAoZXZlbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgQGlmIChjYW5DbG9zZVNvbWUgJiYgIXJlYWRvbmx5KSB7XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnkgLWZpeC1yaWdodFwiIFtkaXNhYmxlZF09XCIhY2FuQ2xvc2VTb21lXCIgKGNsaWNrKT1cImNsb3NlQWxsKClcIj5cbiAgICAgICAgICAgIHt7IChjYW5DbG9zZVNvbWUgPyAnQGh2eS5ldmVudC5sb2cuZXZlbnQuY2xvc2UnIDogJ0BodnkuZXZlbnQubG9nLmV2ZW50LmNsb3NlZCcpIHwgaTE4biB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoIWNhbkNsb3NlU29tZSAmJiBjbG9zZUNvbW1lbnQgJiYgY2xvc2VDb21tZW50Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYS10b29sdGlwXCIgW2F0dHIuZGF0YS10b29sdGlwXT1cImNsb3NlQ29tbWVudFwiIGRhdGEtdG9vbHRpcC1wb3NpdGlvbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImlcIiBbaGVpZ2h0XT1cIjE4XCIgW3dpZHRoXT1cIjE4XCI+aTwvcHJ5LWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9faGVhZGVyX19zcGxpdFwiPlxuICAgICAgQGlmIChwcm9jZWR1cmUgJiYgIXJlYWRvbmx5KSB7XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cIm9wZW5EZWxldGVNb2RhbCgpXCIgW2Rpc2FibGVkXT1cInJlYWRvbmx5UHJvY2VkdXJlXCI+XG4gICAgICAgICAge3sgJ0BodnkuZXZlbnQubG9nLnByb2NlZHVyZS5kZWxldGUnIHwgaTE4biB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fY29udGFpbmVyX19zY3JvbGxhYmxlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fZXZlbnRzXCI+XG4gICAgICAgIEBmb3IgKGV2ZW50IG9mIGV2ZW50czsgdHJhY2sgZXZlbnQuaWQ7IGxldCBpZHggPSAkaW5kZXgpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fZXZlbnRzX19ldmVudFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX2V2ZW50c19fZXZlbnRfX2hlYWRlclwiPlxuICAgICAgICAgICAgICA8cHJ5LWljb25cbiAgICAgICAgICAgICAgICBpY29uU3ZnPVwiYXJyb3dfZG93bl9yb3VuZGVkXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuLXJvdGF0ZWRdPVwib3BlbmVkW2lkeF1cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiLWhhbmRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGUoaWR4KVwiXG4gICAgICAgICAgICAgICAgW3dpZHRoXT1cIjEwXCJcbiAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjEwXCJcbiAgICAgICAgICAgICAgPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgIDxodnktaWNvbi1kaXNwbGF5IFtldmVudF09XCJldmVudFwiPjwvaHZ5LWljb24tZGlzcGxheT5cbiAgICAgICAgICAgICAgPGgyPnt7IGV2ZW50Lm5hbWUgfX08L2gyPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fZXZlbnRzX19ldmVudF9faGVhZGVyX19jb21tZW50XCI+XG4gICAgICAgICAgICAgICAgQGlmIChldmVudC5jb21tZW50Q291bnQgPiAwKSB7XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57e1xuICAgICAgICAgICAgICAgICAgICAoZXZlbnQuY29tbWVudENvdW50ID4gMSA/ICdAaHZ5LmV2ZW50LmNvbW1lbnQuaGVhZHMnIDogJ0BodnkuZXZlbnQuY29tbWVudC5oZWFkJylcbiAgICAgICAgICAgICAgICAgICAgICB8IGkxOG46IHsgbmI6IGV2ZW50LmNvbW1lbnRDb3VudCB9XG4gICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8aHZ5LXN0YXR1cy1kaXNwbGF5XG4gICAgICAgICAgICAgICAgW2l0ZW1dPVwiZXZlbnRcIlxuICAgICAgICAgICAgICAgIFttb2RpZmlhYmxlXT1cImV2ZW50LnN0YXR1cyAhPT0gJ0RPTkUnXCJcbiAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgIChtb2RpZmllZCk9XCJjaGFuZ2VTdGF0dXMoJGV2ZW50LCBldmVudClcIlxuICAgICAgICAgICAgICA+PC9odnktc3RhdHVzLWRpc3BsYXk+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19ldmVudHNfX2V2ZW50X19jb250ZW50XCI+XG4gICAgICAgICAgICAgIEBpZiAoIW9wZW5lZFtpZHhdKSB7XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIHt7ICdAaHZ5LmV2ZW50LmxvZy5ldmVudC5jYXRlZ29yeScgfCBpMThuIH19IDoge3sgJ0BodnkuZXZlbnQuY2F0ZWdvcnkuJyArIGV2ZW50LmNhdGVnb3J5IHwgaTE4biB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXY+e3sgJ0BodnkuZXZlbnQubG9nLmV2ZW50LmRlc2NyaXB0aW9uJyB8IGkxOG4gfX0gOiB7eyBldmVudC5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICBAaWYgKGFjY2VzcyhldmVudCk7IGFzIGFjY2Vzc1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fZXZlbnRzX19ldmVudF9fY29udGVudF9faGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMz57eyAnQGh2eS5ldmVudC5sb2cuZXZlbnQuZGV0YWlsJyB8IGkxOG4gfX08L2gzPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+e3sgJ0BodnkuZXZlbnQubG9nLmV2ZW50Lm1hbmRhdG9yeScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8dGFibGU+XG4gICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0taWRlbnRpZmlhbnQtLT5cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKGV2ZW50LmlkID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQubG9nLmV2ZW50LmlkJyB8IGkxOG4gfX08c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj4gOjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImEtZm9ybS1maWVsZFwiIFt2YWx1ZV09XCJwYWRJZC5mbihldmVudC5pZClcIiBbcmVhZG9ubHldPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLW5vbS0tPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5sb2cuZXZlbnQubmFtZScgfCBpMThuIH19PHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy4tZXJyb3JdPVwiaGFzRXJyb3IoJ25hbWUnLCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZXZlbnQubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJtb2RpZnlFdmVudChpZHgsICduYW1lJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImFjY2Vzc1ZhbHVlLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhMZW5ndGhdPVwiNTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLWNhdGVnb3JpZS0tPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5sb2cuZXZlbnQuY2F0ZWdvcnknIHwgaTE4biB9fTxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJldmVudC5jYXRlZ29yeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cImNhdGVnb3JpZXMoZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuLWVycm9yXT1cImhhc0Vycm9yKCdjYXRlZ29yeScsIGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1vZGlmeUV2ZW50KGlkeCwgJ2NhdGVnb3J5JywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaTE4blByZWZpeD1cIkBodnkuZXZlbnQuY2F0ZWdvcnkuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWNjZXNzVmFsdWUuY2F0ZWdvcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLXNvdXMgY2F0ZWdvcmllLS0+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChldmVudC5jYXRlZ29yeSA9PT0gJ0FOT01BTFknKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5zdWJDYXRlZ29yeS5uYW1lJyB8IGkxOG4gfX08c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj4gOjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZXZlbnQuc3ViQ2F0ZWdvcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cInN1YkNhdGVnb3JpZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLi1lcnJvcl09XCJoYXNFcnJvcignc3ViQ2F0ZWdvcnknLCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1vZGlmeUV2ZW50KGlkeCwgJ3N1YkNhdGVnb3J5JywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpMThuUHJlZml4PVwiQGh2eS5ldmVudC5zdWJDYXRlZ29yeS5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFjY2Vzc1ZhbHVlLnN1YkNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwhLS1jcml0aWNpdGUtLT5cbiAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQuY3JpdGljYWxpdHkubmFtZScgfCBpMThuIH19PHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImV2ZW50LmNyaXRpY2FsaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiY3JpdGljYWxpdGllc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLi1lcnJvcl09XCJoYXNFcnJvcignY3JpdGljYWxpdHknLCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpMThuUHJlZml4PVwiQGh2eS5ldmVudC5jcml0aWNhbGl0eS5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhY2Nlc3NWYWx1ZS5jcml0aWNhbGl0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwibW9kaWZ5RXZlbnQoaWR4LCAnY3JpdGljYWxpdHknLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDwhLS1tZXRpZXItLT5cbiAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQuZG9tYWluLm5hbWUnIHwgaTE4biB9fSA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiRE9NQUlOU1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZXZlbnQuZG9tYWluXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpMThuUHJlZml4PVwiQGh2eS5ldmVudC5kb21haW4uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuLWVycm9yXT1cImhhc0Vycm9yKCdkb21haW4nLCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJtb2RpZnlFdmVudChpZHgsICdkb21haW4nLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWNjZXNzVmFsdWUuZG9tYWluXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDwhLS1lcXVpcGVtZW50LS0+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LmVxdWlwbWVudCcgfCBpMThuIH19IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGQtYXV0b2NvbXBsZXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiaW5wdXQtYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQGh2eS5ldmVudC5lcXVpcG1lbnRQbGFjZWhvbGRlcicgfCBpMThuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZ2V0RXF1aXBDb250cm9sKGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydlcXVpcG1lbnQtZGlzYWJsZWQnOiBldmVudC5zdGF0dXMgPT09ICdET05FJ31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLi1lcnJvcl09XCJoYXNFcnJvcignZXF1aXBtZW50JywgaWR4KVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1hdXRvY29tcGxldGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc3BsYXlXaXRoXT1cImRpc3BsYXlFcXVpcG1lbnQuYmluZCh0aGlzKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9wZW5lZCk9XCJvcGVuQXV0b2NvbXBsZXRlKGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbG9zZWQpPVwiY2xvc2VBdXRvY29tcGxldGUoaWR4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChlcXVpcG1lbnQgb2YgZXF1aXBtZW50cyRbaWR4XSB8IGFzeW5jOyB0cmFjayBlcXVpcG1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJlcXVpcG1lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tlcXVpcG1lbnQubmFtZX19IC0ge3snQGh2eS5ldmVudC5mYW1pbHkuJyArIGVxdWlwbWVudC5mYW1pbHkgfCBpMThufX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHByeS1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLXByeS1zZWxlY3RfX3RvZ2dsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25TdmddPVwiJ2NoZXZyb25fYm90dG9tJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCJvcGVuZWRBdXRvY29tcGxldGVbaWR4XVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3dpZHRoXT1cIjEwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjE2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNlbGVjdGVkRXF1aXBtZW50W2lkeF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJ5LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25Tdmc9XCJpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiLWhhbmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2RldGFpbEhvdmVySWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURldGFpbHNUb29sdGlwKGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3dpZHRoXT1cIjE4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiMThcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3ByeS1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLWVudGl0ZS0tPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5lcXVpcG1lbnRFbnRpdHknIHwgaTE4biB9fSA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuLWVycm9yXT1cImhhc0Vycm9yKCdlcXVpcG1lbnQnLCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXZlbnQuZXF1aXBtZW50Py5lbnRpdHkgPyAnQGh2eS5ldmVudC5lbnRpdHkuJyArIGV2ZW50LmVxdWlwbWVudD8uZW50aXR5IDogJycpIHwgaTE4blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDwhLS1hZHJlc3NlLS0+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LmxvZy5ldmVudC5hZGRyZXNzJyB8IGkxOG4gfX0gOjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImV2ZW50LmFkZHJlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuLWVycm9yXT1cImhhc0Vycm9yKCdhZGRyZXNzJywgaWR4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImFjY2Vzc1ZhbHVlLmFkZHJlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1vZGlmeUV2ZW50KGlkeCwgJ2FkZHJlc3MnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4TGVuZ3RoXT1cIjI1NlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFkcmVzc0Rpc2FibGVkW2lkeF0gfHwgZXZlbnQuc3RhdHVzID09PSAnRE9ORSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDwhLS12aWxsZS0tPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5kaXN0cmljdCcgfCBpMThuIH19IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJwbGFjZXNDaG9pY2VzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJldmVudC5kaXN0cmljdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2JpbmRWYWx1ZV09XCIna2V5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZExhYmVsPVwiZGlzcGxheVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaTE4blByZWZpeD1cIkBodnkuZXZlbnQucGxhY2VzLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwibW9kaWZ5RXZlbnQoaWR4LCAnZGlzdHJpY3QnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWRyZXNzRGlzYWJsZWRbaWR4XSB8fCBldmVudC5zdGF0dXMgPT09ICdET05FJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0tZXZlbmVtZW50IHBhcmVudC0tPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5wYXJlbnRFdmVudC5uYW1lJyB8IGkxOG4gfX0gOjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cImV2ZW50cyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZExhYmVsPVwiZGlzcGxheU5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImV2ZW50U2VsZWN0VmFsdWVbaWR4XVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VsZWN0ZWRQYXJlbnRDaGFuZ2UoJGV2ZW50LCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtleHRlcm5hbEF1dG9jb21wbGV0ZVNlcnZpY2VdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidAaHZ5LmV2ZW50LnBhcmVudEV2ZW50LnBsYWNlaG9sZGVyJyB8IGkxOG5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwicGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGVtcGxhdGVdPVwidGVtcGxhdGVQYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhY2Nlc3NWYWx1ZS5wYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy4tZXJyb3JdPVwiaGFzRXJyb3IoJ3BhcmVudCcsIGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fZXZlbnRzX19ldmVudF9fY29udGVudF9fZXF1aXBtZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZVBhcmVudCBsZXQtaXRlbT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidS1kaXNwbGF5LWZsZXggLWNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJpdGVtLmh0bWxcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0tZGVzY3JpcHRpb24tLT5cbiAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQubG9nLmV2ZW50LmRlc2NyaXB0aW9uJyB8IGkxOG4gfX08c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj4gOjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImV2ZW50LmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLi1lcnJvcl09XCJoYXNFcnJvcignZGVzY3JpcHRpb24nLCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiYWNjZXNzVmFsdWUuZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1vZGlmeUV2ZW50KGlkeCwgJ2Rlc2NyaXB0aW9uJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heExlbmd0aF09XCIyNTZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDwhLS1kYXRlIGRlYnV0LS0+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnQGh2eS5ldmVudC5zdGFydERhdGUnIHwgaTE4biB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGV2ZW50LmNhdGVnb3J5ID09PSAnTUFOSUZFU1RBVElPTicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZXZlbnQuc3RhcnREYXRlIHwgZm9yRGF0ZVRpbWVMb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLi1lcnJvcl09XCJoYXNFcnJvcignc3RhcnREYXRlJywgaWR4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImFjY2Vzc1ZhbHVlLnN0YXJ0RGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJtb2RpZnlFdmVudChpZHgsICdzdGFydERhdGUnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDwhLS1kYXRlIGZpbi0tPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ0BodnkuZXZlbnQuZW5kRGF0ZScgfCBpMThuIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZXZlbnQuY2F0ZWdvcnkgPT09ICdNQU5JRkVTVEFUSU9OJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJkYXRldGltZS1sb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJldmVudC5lbmREYXRlIHwgZm9yRGF0ZVRpbWVMb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLi1lcnJvcl09XCJoYXNFcnJvcignZW5kRGF0ZScsIGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJhY2Nlc3NWYWx1ZS5lbmREYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm1vZGlmeUV2ZW50KGlkeCwgJ2VuZERhdGUnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChoYXNFcnJvcignZW5kRGF0ZScsIGlkeCkgJiYgZXZlbnQuZW5kRGF0ZSAmJiBldmVudC5zdGFydERhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImEtZm9ybS1maWVsZCAtZXJyb3JcIj57eyAnQGh2eS5ldmVudC5lcnJvckRhdGUnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLXNvdXJjZS0tPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5zb3VyY2UnIHwgaTE4biB9fTxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZXZlbnQuZXh0ZXJuYWxTb3VyY2VSZWYgPz8gKCdAaHZ5LmV2ZW50Lmh5cGVydmlzb3InIHwgaTE4bilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy4tZXJyb3JdPVwiaGFzRXJyb3IoJ3NvdXJjZScsIGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJhY2Nlc3NWYWx1ZS5zb3VyY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwibW9kaWZ5RXZlbnQoaWR4LCAnc291cmNlJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0tcmVmw6lyZW5jZSBleHRlcm5lLS0+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChldmVudC5leHRlcm5hbFNvdXJjZVJlZiAhPT0gJ0h5cGVydmlzZXVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQuZXh0ZXJuYWxJZCcgfCBpMThuIH19PHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZXZlbnQuZXh0ZXJuYWxJZCA/PyAnLSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLWNyZWF0ZXVyLS0+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LmNyZWF0b3InIHwgaTE4biB9fTxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJhLWZvcm0tZmllbGRcIiBbdmFsdWVdPVwiZXZlbnQuY3JlYXRvclwiIFtyZWFkb25seV09XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDwhLS1kYXRlIGNyZWF0aW9uLS0+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LmNyZWF0aW9uRGF0ZScgfCBpMThuIH19PHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZXZlbnQuY3JlYXRpb25EYXRlIHwgZm9yRGF0ZVRpbWVMb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDwhLS1kYXRlIG1vZGlmaWNhdGlvbi0tPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5sYXN0TW9kaWZpY2F0aW9uRGF0ZScgfCBpMThuIH19PHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZXZlbnQubGFzdE1vZGlmaWNhdGlvbkRhdGUgfCBmb3JEYXRlVGltZUxvY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLWRhdGUgY2xvdHVyZS0tPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5jbG9zZURhdGUnIHwgaTE4biB9fSA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImV2ZW50LmNsb3NlRGF0ZSB8IGZvckRhdGVUaW1lTG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgICAgICAgICBAaWYgKGV2ZW50LmlkICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICA8aHZ5LWNvbW1lbnRzXG4gICAgICAgICAgICAgICAgICAgICAgW2xhc3RDb21tZW50XT1cImV2ZW50Lmxhc3RDb21tZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICBbY29tbWVudENvdW50XT1cImV2ZW50LmNvbW1lbnRDb3VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNvbW1lbnRlZCk9XCJ1cGRhdGVDb21tZW50KGV2ZW50LCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIidldmVudHMnXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbWVdPVwibWU/LnN1YlwiXG4gICAgICAgICAgICAgICAgICAgICAgW29iamVjdElkXT1cImV2ZW50LmlkXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvaHZ5LWNvbW1lbnRzPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX3Byb2NlZHVyZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fcHJvY2VkdXJlX19oZWFkZXJcIj5cbiAgICAgICAgICA8aDI+XG4gICAgICAgICAgICB7eyAoZXZlbnRzLmxlbmd0aCA9PT0gMSA/ICdAaHZ5LmV2ZW50LmxvZy5wcm9jZWR1cmUubmFtZTEnIDogJ0BodnkuZXZlbnQubG9nLnByb2NlZHVyZS5uYW1lJykgfCBpMThuIH19XG4gICAgICAgICAgPC9oMj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIEBpZiAocHJvY2VkdXJlKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX3Byb2NlZHVyZV9fZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICA8c3Bhbj57eyBwcm9jZWR1cmUubmFtZSB9fSZuYnNwOzo8L3NwYW4+XG4gICAgICAgICAgICAgIHt7IHByb2NlZHVyZS5kZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19wcm9jZWR1cmVfX3Byb2dyZXNzXCI+XG4gICAgICAgICAgICA8cD57eyAnQGh2eS5ldmVudC5sb2cucHJvY2VkdXJlLnByb2dyZXNzJyB8IGkxOG4gfX08L3A+XG4gICAgICAgICAgICA8aHZ5LXByb2dyZXNzLWRpc3BsYXkgW3Byb2dyZXNzXT1cImNhbGN1bGF0ZWRQcm9ncmVzc1wiPjwvaHZ5LXByb2dyZXNzLWRpc3BsYXk+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGh2eS1wcm9jZWR1cmUtYWN0aW9uc1xuICAgICAgICAgICAgW3Byb2NlZHVyZU1vZGlmaWNhdGlvbnNBY3Rpb25zXT1cInByb2NlZHVyZU1vZGlmaWNhdGlvbnM/LmFjdGlvbnNcIlxuICAgICAgICAgICAgW2luaXRpYWxBY3Rpb25zXSA9IHRoaXMuX3Byb2NlZHVyZT8uYWN0aW9uc1xuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5UHJvY2VkdXJlIHx8IHJlYWRvbmx5XCJcbiAgICAgICAgICAgIFtyZWFkT25seUNvbW1lbnRdPVwicmVhZE9ubHlDb21tZW50XCJcbiAgICAgICAgICAgIFtkaXNhYmxlU2F2ZURJQnV0dG9uXT1cImlzRXZlbnRNb2RpZmllZCgpXCJcbiAgICAgICAgICAgIFtlbmFibGVFZGl0QWN0aW9uc109XCJlbmFibGVFZGl0QWN0aW9uc1wiXG4gICAgICAgICAgICBbYWN0aW9uc109XCJwcm9jZWR1cmUuYWN0aW9uc1wiXG4gICAgICAgICAgICAobW9kaWZpZWQpPVwibW9kaWZpZWRBY3Rpb25zKCRldmVudClcIlxuICAgICAgICAgICAgKHJlZnJlc2hBY3Rpb25zKT1cInJlZnJlc2hBY3Rpb25zKCRldmVudClcIlxuICAgICAgICAgICAgW21lXT1cIm1lPy5zdWJcIlxuICAgICAgICAgICAgW2V2ZW50c109XCJ0aGlzLmV2ZW50c1wiXG4gICAgICAgICAgICAoY29tbWVudGVkKT1cImFjdGlvbkNvbW1lbnRlZCgkZXZlbnQpXCJcbiAgICAgICAgICA+PC9odnktcHJvY2VkdXJlLWFjdGlvbnM+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIEBpZiAoIXJlYWRvbmx5KSB7XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG4gYS1idG4tLXNlY29uZGFyeVwiIFtkaXNhYmxlZF09XCIhY2FuQXNzb2NpYXRlUHJvY2VkdXJlXCIgKGNsaWNrKT1cIm9wZW5Bc3NvY2lhdGlvbk1vZGFsKClcIj5cbiAgICAgICAgICAgICAge3sgJ0BodnkuYWN0aW9uLmFzc29jaWF0ZScgfCBpMThuIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fcHJvY2VkdXJlX19lbXB0eVwiPnt7ICdAaHZ5LmV2ZW50LmxvZy5wcm9jZWR1cmUubm9uZScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjY29uZmlybURpYWxvZz5cbiAgPGRpdlxuICAgIGNsYXNzPVwiby1odnktY2xvc2UtY29uZmlybV9fZGlhbG9nXCJcbiAgICBhcmlhLWxhYmVsbGVkYnk9XCJjb25maXJtXCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgICBpZD1cImNob2ljZVwiXG4gICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgYXJpYS1tb2RhbD1cInRydWVcIlxuICA+XG4gICAgPGgyPlxuICAgICAge3tcbiAgICAgICAgKGNoYW5nZVN0YXR1c0NvbnRleHQuZXZlbnRzLmxlbmd0aCA9PT0gMSA/ICdAaHZ5LmV2ZW50LmNsb3NlLm9uZVRpdGxlJyA6ICdAaHZ5LmV2ZW50LmNsb3NlLm11bHRpVGl0bGUnKSB8IGkxOG5cbiAgICAgIH19XG4gICAgPC9oMj5cbiAgICA8cD57eyAoY2hhbmdlU3RhdHVzQ29udGV4dC5ldmVudHMubGVuZ3RoID09PSAxID8gJ0BodnkuZXZlbnQuY2xvc2Uub25lJyA6ICdAaHZ5LmV2ZW50LmNsb3NlLm11bHRpJykgfCBpMThuIH19PC9wPlxuICAgIDx1bD5cbiAgICAgIEBmb3IgKGV2ZW50IG9mIGNoYW5nZVN0YXR1c0NvbnRleHQuZXZlbnRzOyB0cmFjayBldmVudC5pZCkge1xuICAgICAgICA8bGk+e3sgZXZlbnQubmFtZSB9fTwvbGk+XG4gICAgICB9XG4gICAgPC91bD5cbiAgICA8cCBjbGFzcz1cIm8taHZ5LWNsb3NlLWNvbmZpcm1fX2RpYWxvZ19fY29tbWVudC10aXRsZVwiPlxuICAgICAge3sgJ0BodnkuZXZlbnQuY2xvc2UuY29tbWVudCcgfCBpMThuIH19PHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+IDpcbiAgICA8L3A+XG4gICAgPGRpdiBjbGFzcz1cIm8taHZ5LWNsb3NlLWNvbmZpcm1fX2RpYWxvZ19fY29tbWVudFwiPlxuICAgICAgPHRleHRhcmVhIFsobmdNb2RlbCldPVwiY2hhbmdlU3RhdHVzQ29udGV4dC5jb21tZW50XCIgY2xhc3M9XCJhLWZvcm0tZmllbGRcIiBbbWF4TGVuZ3RoXT1cIjI1NVwiPjwvdGV4dGFyZWE+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm8taHZ5LWNsb3NlLWNvbmZpcm1fX2RpYWxvZ19fYWN0aW9uc1wiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCIgKGNsaWNrKT1cImNvbmZpcm1lZENsb3NlKClcIiBbZGlzYWJsZWRdPVwiY29uZmlybURpc2FibGVkKClcIj5cbiAgICAgICAge3sgJ0BodnkuYWN0aW9uLnZhbGlkYXRlJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIiAoY2xpY2spPVwidG9nZ2xlQ29uZmlybSgpXCI+e3sgJ0BodnkuYWN0aW9uLmNhbmNlbCcgfCBpMThuIH19PC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
749
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvaHlwZXJ2aXNvci9zcmMvbGliL2V2ZW50L2RldGFpbC9ldmVudC1kZXRhaWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9oeXBlcnZpc29yL3NyYy9saWIvZXZlbnQvZGV0YWlsL2V2ZW50LWRldGFpbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxFQUNULFlBQVksRUFFYixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNuRixPQUFPLEVBQ0wseUJBQXlCLEVBTXpCLHdCQUF3QixFQUN6QixNQUFNLG9CQUFvQixDQUFDO0FBRzVCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFL0QsT0FBTyxFQUFXLGFBQWEsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYyxXQUFXLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdEQsT0FBTyxLQUFLLE1BQU0scUJBQXFCLENBQUM7QUFDeEMsT0FBTyxFQUFFLGtDQUFrQyxF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b25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG4gIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIeXBQcm9jZWR1cmUgfSBmcm9tICcuLi8uLi9tb2RlbC9wcm9jZWR1cmUvaHlwLXByb2NlZHVyZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSHlwRXZlbnREZXRhaWxzIH0gZnJvbSAnLi4vLi4vbW9kZWwvZXZlbnQvaHlwLWV2ZW50LWRldGFpbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSHlwRXZlbnRDcml0aWNhbGl0eSB9IGZyb20gJy4uLy4uL21vZGVsL2V2ZW50L2h5cC1ldmVudC1jcml0aWNhbGl0eS50eXBlJztcbmltcG9ydCB7XG4gIFByeURpYWxvZ0NvbmZpcm1Db21wb25lbnQsXG4gIFByeURpYWxvZ0NvbmZpcm1EYXRhLFxuICBQcnlEaWFsb2dSZWYsXG4gIFByeURpYWxvZ1NlcnZpY2UsXG4gIFByeUkxOG5TZXJ2aWNlLFxuICBQcnlJY29uQ29tcG9uZW50LFxuICBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmVcbn0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7RXF1aXBtZW50Rm9yRXZlbnQsIEh5cEVxdWlwbWVudH0gZnJvbSAnLi4vLi4vbW9kZWwvaHlwLWVxdWlwbWVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRXF1aXBtZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3N0b3JlL2VxdWlwbWVudC9lcXVpcG1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBET01BSU5TIH0gZnJvbSAnLi4vLi4vbW9kZWwvZG9tYWlucy5jb25zdGFudCc7XG5pbXBvcnQgeyBFdmVudEFjdGlvbnMgfSBmcm9tICcuLi8uLi9zdG9yZS9ldmVudC9ldmVudC5hY3Rpb25zJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRlbGF5LCBPYnNlcnZhYmxlLCBzaGFyZVJlcGxheSwgU3ViamVjdCwgc3dpdGNoTWFwLCB0YWtlLCB0aHJvd0Vycm9yLCB6aXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHBhZElkIH0gZnJvbSAnLi4vLi4vZ2VuZXJhbC9wYWQtaWQuZnVuY3Rpb24nO1xuaW1wb3J0IGVxdWFsIGZyb20gJ2Zhc3QtZGVlcC1lcXVhbC9lczYnO1xuaW1wb3J0IHsgUHJvY2VkdXJlQXNzb2NpYXRpb25Nb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL3Byb2NlZHVyZS1hc3NvY2lhdGlvbi1tb2RhbC9wcm9jZWR1cmUtYXNzb2NpYXRpb24tbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IFByb2NlZHVyZUFjdGlvbnMgfSBmcm9tICcuLi8uLi9zdG9yZS9wcm9jZWR1cmUvcHJvY2VkdXJlLmFjdGlvbnMnO1xuaW1wb3J0IHsgSHlwRXZlbnRDYXRlZ29yeSwgSHlwRXZlbnRTdWJDYXRlZ29yeSB9IGZyb20gJy4uLy4uL21vZGVsL2V2ZW50L2h5cC1ldmVudC1jYXRlZ29yeS50eXBlJztcbmltcG9ydCB7IEh5cENvbW1lbnRzU2VydmljZSB9IGZyb20gJy4uLy4uL3N0b3JlL2NvbW1lbnRzL2NvbW1lbnRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBIeXBTZXJ2aWNlVG9vbHRpcH0gZnJvbSAnLi4vLi4vbW9kZWwvZXZlbnQvaHlwLWV2ZW50LXRvb2x0aXAuaW50ZXJmYWNlJztcbmltcG9ydCB7IEh2eUV2ZW50RGV0YWlsc1Rvb2x0aXBDb21wb25lbnQgfSBmcm9tICcuL2V2ZW50LWRldGFpbHMtdG9vbHRpcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc3RvcmUvZXZlbnQvZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBIdnlFdmVudEFkZEV2ZW50Q29tcG9uZW50IH0gZnJvbSAnLi9hZGQtZXZlbnQvYWRkLWV2ZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBIeXBBY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbC9wcm9jZWR1cmUvaHlwLWFjdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSHlwQ29tbWVudCB9IGZyb20gJy4uLy4uL21vZGVsL2NvbW1lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEFjdGlvbnMsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHsgRXZlbnRTZWxlY3RvcnMgfSBmcm9tICcuLi8uLi9zdG9yZS9ldmVudC9ldmVudC5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2x9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG5leHBvcnQgdHlwZSBDaGFuZ2VTdGF0dXNDb250ZXh0ID0ge1xuICBjb21tZW50OiBzdHJpbmc7XG4gIGV2ZW50czogSHlwRXZlbnREZXRhaWxzW107XG4gIHN0YXR1czogc3RyaW5nO1xuICBhbGw6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEh5cEV2ZW50RGV0YWlsc1dpdGhNYXRjaGluZyBleHRlbmRzIEh5cEV2ZW50RGV0YWlscyB7XG4gIGh0bWw6IHN0cmluZztcbiAgZGlzcGxheU5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IEVWRU5UX0RFVEFJTF9BQ0NFU1NfRk4gPSB7XG4gIHZhbHVlOiAoZXZlbnQ6IEh5cEV2ZW50RGV0YWlscywgY29tcG9uZW50OiBFdmVudERldGFpbENvbXBvbmVudCkgPT4ge1xuICAgIGNvbnN0IHJlYWRvbmx5ID1cbiAgICAgIGNvbXBvbmVudC5yZWFkb25seSB8fFxuICAgICAgZXZlbnQuc3RhdHVzID09PSAnRE9ORScgfHxcbiAgICAgIChbJ0xJTUlUJywgJ09VVE9GT1JERVInLCAnQU5PTUFMWSddLmluY2x1ZGVzKGV2ZW50LmNhdGVnb3J5KSAmJiBldmVudC5leHRlcm5hbFNvdXJjZVJlZiAhPT0gJ0h5cGVydmlzZXVyJyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogcmVhZG9ubHksXG4gICAgICBjYXRlZ29yeTogcmVhZG9ubHksXG4gICAgICBzdWJDYXRlZ29yeTogcmVhZG9ubHksXG4gICAgICBjcml0aWNhbGl0eTogcmVhZG9ubHksXG4gICAgICBkZXNjcmlwdGlvbjogcmVhZG9ubHksXG4gICAgICBhZGRyZXNzOiByZWFkb25seSxcbiAgICAgIHNvdXJjZTogdHJ1ZSxcbiAgICAgIGRvbWFpbjogcmVhZG9ubHksXG4gICAgICBlcU5hbWU6IHJlYWRvbmx5LFxuICAgICAgZXFFbnRpdHk6IHJlYWRvbmx5LFxuICAgICAgc3RhcnREYXRlOiByZWFkb25seSxcbiAgICAgIGVuZERhdGU6IHJlYWRvbmx5LFxuICAgICAgcGFyZW50OiBjb21wb25lbnQucmVhZG9ubHkgfHwgZXZlbnQuc3RhdHVzID09PSAnRE9ORSdcbiAgICB9O1xuICB9XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdodnktZXZlbnQtZGV0YWlsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2V2ZW50LWRldGFpbC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRXZlbnREZXRhaWxDb21wb25lbnQgZXh0ZW5kcyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUge1xuICBldmVudEZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtlcXVpcHM6IHRoaXMuZm9ybUJ1aWxkZXIuYXJyYXkoW10pfSk7XG4gIGdldCBlcXVpcENvbnRyb2xzKCl7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRGb3JtLmdldCgnZXF1aXBzJykgYXMgRm9ybUFycmF5O1xuICB9XG4gIEBJbnB1dCgpIHBsYWNlc0Nob2ljZXM6ICh7a2V5OiBzdHJpbmcsIGRpc3BsYXk6IHN0cmluZ30pW10gPSBbXTtcbiAgb3BlbmVkOiBib29sZWFuW10gPSBbXTtcbiAgY3JpdGljYWxpdGllcyA9IEh5cEV2ZW50Q3JpdGljYWxpdHkudmFsdWVzO1xuICBfZXZlbnRzOiBIeXBFdmVudERldGFpbHNbXSA9IFtdO1xuICBldmVudE1vZGlmaWNhdGlvbnM6IFBhcnRpYWw8SHlwRXZlbnREZXRhaWxzPltdID0gW107XG4gIEBPdXRwdXQoKSBtb2RpZmllZEV2ZW50cyA9IG5ldyBFdmVudEVtaXR0ZXI8W1BhcnRpYWw8SHlwRXZlbnREZXRhaWxzPiwgSHlwRXZlbnREZXRhaWxzXVtdPigpO1xuICBfcHJvY2VkdXJlPzogSHlwUHJvY2VkdXJlO1xuICBwcm9jZWR1cmVNb2RpZmljYXRpb25zOiBQYXJ0aWFsPEh5cFByb2NlZHVyZT4gPSB7fTtcbiAgQE91dHB1dCgpIG1vZGlmaWVkUHJvY2VkdXJlID0gbmV3IEV2ZW50RW1pdHRlcjxbUGFydGlhbDxIeXBQcm9jZWR1cmU+LCBIeXBQcm9jZWR1cmVdIHwgdW5kZWZpbmVkPigpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgRE9NQUlOUyA9IERPTUFJTlMudmFsdWVzO1xuICBAT3V0cHV0KCkgZXZlbnRFcnJvcnMgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZmllbGQ6IHN0cmluZzsgY29kZTogc3RyaW5nIH1bXVtdPigpO1xuICBAT3V0cHV0KCkgYWRkZWRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8SHlwRXZlbnREZXRhaWxzPigpO1xuICBlcnJvcnM6IHsgZmllbGQ6IHN0cmluZzsgY29kZTogc3RyaW5nIH1bXVtdID0gW107XG4gIGNhbkNsb3NlU29tZSA9IGZhbHNlO1xuICBjaGFuZ2VTdGF0dXNDb250ZXh0OiBDaGFuZ2VTdGF0dXNDb250ZXh0ID0ge1xuICAgIGNvbW1lbnQ6ICcnLFxuICAgIGV2ZW50czogW10sXG4gICAgc3RhdHVzOiAnRE9ORScsXG4gICAgYWxsOiBmYWxzZVxuICB9O1xuICBASW5wdXQoKSB0aXRsZT86IHN0cmluZztcblxuICBASW5wdXQoKSBzZXQgZXF1aXBtZW50RnJvbU1hcChcbiAgICBlcXVpcG1lbnRGcm9tTWFwOiB7ZXF1aXBtZW50OiBFcXVpcG1lbnRGb3JFdmVudCB8IG51bGwsIGZhbWlseTogc3RyaW5nIHwgbnVsbH0gfCBudWxsKSB7XG4gICAgaWYoZXF1aXBtZW50RnJvbU1hcCAmJiB0aGlzLmVxdWlwQ29udHJvbHMubGVuZ3RoID4gMCkge1xuICAgICAgaWYoZXF1aXBtZW50RnJvbU1hcC5lcXVpcG1lbnQpIHtcbiAgICAgICAgdGhpcy5lcXVpcENvbnRyb2xzLmF0KDApLnNldFZhbHVlKGVxdWlwbWVudEZyb21NYXAuZXF1aXBtZW50KTtcbiAgICAgICAgdGhpcy5tYW5hZ2VFcXVpcG1lbnQoMCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuIHwgbnVsbCA9IGZhbHNlO1xuICBASW5wdXQoKSByZWFkb25seVByb2NlZHVyZTogYm9vbGVhbiB8IG51bGwgPSBmYWxzZTtcbiAgQElucHV0KCkgZW5hYmxlRWRpdEFjdGlvbnM6IGJvb2xlYW4gfCBudWxsID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJlYWRPbmx5Q29tbWVudDogYm9vbGVhbiB8IG51bGwgPSBmYWxzZTtcbiAgb3ZlcmxheVJlZj86IE92ZXJsYXlSZWY7XG4gIEBWaWV3Q2hpbGQoJ2NvbmZpcm1EaWFsb2cnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIGNvbmZpcm1EaWFsb2chOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAT3V0cHV0KCkgY29tZmlybURpYWxvZ09wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q2hhbmdlU3RhdHVzQ29udGV4dD4oKTtcbiAgZXF1aXBtZW50U2VsZWN0VmFsdWU6IChzdHJpbmcgfCBIeXBFcXVpcG1lbnQgfCB1bmRlZmluZWQpW10gPSBbXTtcbiAgZXF1aXBtZW50cyQ6IE9ic2VydmFibGU8RXF1aXBtZW50Rm9yRXZlbnRbXT5bXSA9IFtdO1xuICBAVmlld0NoaWxkcmVuKCdkZXRhaWxIb3Zlckljb24nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgZGV0YWlsSG92ZXJJY29uITogUXVlcnlMaXN0PEVsZW1lbnRSZWY8UHJ5SWNvbkNvbXBvbmVudD4+O1xuICBvbkV2ZW50U2VhcmNoJCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcbiAgZXZlbnRTZWxlY3RWYWx1ZTogKHN0cmluZyB8IEh5cEV2ZW50RGV0YWlscyB8IHVuZGVmaW5lZClbXSA9IFtdO1xuICBldmVudHMkOiBPYnNlcnZhYmxlPEh5cEV2ZW50RGV0YWlsc1dpdGhNYXRjaGluZ1tdPjtcbiAgQE91dHB1dCgpIGNvbW1lbnRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgfCB7IGV2ZW50OiBIeXBFdmVudERldGFpbHM7IGNvbW1lbnRzOiBIeXBDb21tZW50W10gfVtdXG4gICAgfCB7XG4gICAgICAgIGFjdGlvbjogSHlwQWN0aW9uO1xuICAgICAgICBjb21tZW50czogSHlwQ29tbWVudFtdO1xuICAgICAgfVxuICA+KCk7XG4gIHByb2ZpbGU6IHsgc3ViOiBzdHJpbmcgfCB1bmRlZmluZWQ7IHVzZXJOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQgfSB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpIHNldCBtZShtZTogeyBzdWI6IHN0cmluZyB8IHVuZGVmaW5lZDsgdXNlck5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCB9IHwgbnVsbCkge1xuICAgIHRoaXMucHJvZmlsZSA9IG1lO1xuICAgIHRoaXMuc2V0Q3JlYXRvckZvckV2ZW50cygpO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGV2ZW50cyhldmVudHM6IEh5cEV2ZW50RGV0YWlsc1tdKSB7XG4gICAgdGhpcy5lcXVpcENvbnRyb2xzLmNsZWFyKCk7XG4gICAgdGhpcy5fZXZlbnRzID0gZXZlbnRzLmZpbHRlcigoZXYpID0+ICEhZXYpO1xuICAgIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zID0gbmV3IEFycmF5KHRoaXMuX2V2ZW50cy5sZW5ndGgpO1xuICAgIGlmICh0aGlzLl9ldmVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICB0aGlzLm9wZW5lZCA9IFt0cnVlXTtcbiAgICB9XG4gICAgdGhpcy5jYW5DbG9zZVNvbWUgPSB0aGlzLl9ldmVudHMuZmlsdGVyKChldikgPT4gZXYuc3RhdHVzICE9PSAnRE9ORScpLmxlbmd0aCA+IDA7XG4gICAgdGhpcy5fZXZlbnRzLmZvckVhY2goKGV2LCBpZHgpID0+IHtcbiAgICAgIGxldCBnZXRFcXVpcG1lbnQgPSB0aGlzLl9ldmVudHNbaWR4XS5lcXVpcG1lbnQgYXMgRXF1aXBtZW50Rm9yRXZlbnQ7XG4gICAgICBpZih0aGlzLl9ldmVudHNbaWR4XS5hZGRyZXNzICYmICEhZ2V0RXF1aXBtZW50KXtcbiAgICAgICAgZ2V0RXF1aXBtZW50ID0gey4uLmdldEVxdWlwbWVudCwgYWRkcmVzczogdGhpcy5fZXZlbnRzW2lkeF0uYWRkcmVzc307XG4gICAgICB9XG4gICAgICBjb25zdCBlcXVpcENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8RXF1aXBtZW50Rm9yRXZlbnQgfCBzdHJpbmcgfCBudWxsPihnZXRFcXVpcG1lbnQpO1xuICAgICAgaWYoZXYuc3RhdHVzID09PSAnRE9ORScpIHtcbiAgICAgICAgZXF1aXBDb250cm9sLmRpc2FibGUoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZXF1aXBDb250cm9scy5wdXNoKGVxdWlwQ29udHJvbCk7XG4gICAgICBpZih0eXBlb2YgZ2V0RXF1aXBtZW50ID09PSAnb2JqZWN0JyAmJiAhIWdldEVxdWlwbWVudCl7XG4gICAgICAgIHRoaXMuZ2V0RGF0YUZvclRvb2x0aXAoZ2V0RXF1aXBtZW50IGFzIEh5cEVxdWlwbWVudCwgaWR4KTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEVxdWlwbWVudFtpZHhdID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5hZHJlc3NEaXNhYmxlZFtpZHhdID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFcXVpcG1lbnRbaWR4XSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmFkcmVzc0Rpc2FibGVkW2lkeF0gPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZXF1aXBtZW50U2VsZWN0VmFsdWVbaWR4XSA9IGdldEVxdWlwbWVudDtcbiAgICAgIGlmIChldi5wYXJlbnQgJiYgZXYucGFyZW50LmlkKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQYXJlbnRDaGFuZ2UoXG4gICAgICAgICAge1xuICAgICAgICAgICAgLi4uZXYucGFyZW50LFxuICAgICAgICAgICAgZGlzcGxheU5hbWU6IGAke3BhZElkLmZuKGV2LnBhcmVudC5pZCl9IC0gJHtldi5wYXJlbnQubmFtZX1gXG4gICAgICAgICAgfSBhcyB1bmtub3duIGFzIEh5cEV2ZW50RGV0YWlsc1dpdGhNYXRjaGluZyxcbiAgICAgICAgICBpZHhcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuZXF1aXBDb250cm9scy5jb250cm9scy5mb3JFYWNoKChjb250cm9sLCBpbmRleCk9PiB7XG4gICAgICB0aGlzLmVxdWlwbWVudHMkW2luZGV4XSA9IGNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKGNvbnRyb2wudmFsdWUpLCBkZWJvdW5jZVRpbWUoMjAwKSxcbiAgICAgICAgc3dpdGNoTWFwKGVxdWlwbWVudCA9PiB7XG4gICAgICAgICAgY29uc3QgZG9tYWluID0gdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdPy5kb21haW4gPz8gdGhpcy5fZXZlbnRzW2luZGV4XT8uZG9tYWluID8/IHVuZGVmaW5lZDtcbiAgICAgICAgICByZXR1cm4gdGhpcy5lcXVpcG1lbnRTZXJ2aWNlLnNlYXJjaCh0eXBlb2YgZXF1aXBtZW50ID09PSAnb2JqZWN0JyA/IGVxdWlwbWVudD8ubmFtZSA6IGVxdWlwbWVudCwgZG9tYWluKS5waXBlKFxuICAgICAgICAgICAgbWFwKChlcXVpcG1lbnRzKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBlcXVpcG1lbnRzO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcignU2VhcmNoIEVxdWlwbWVudCBwcm9ibGVtJykpKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoKVxuICAgICAgKTtcbiAgICB9KVxuICAgIHRoaXMuc2V0Q3JlYXRvckZvckV2ZW50cygpO1xuICAgIHRoaXMuc2V0RGlzdHJpY3RGb3JFdmVudHMoKTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBwcm9jZWR1cmUocHJvY2VkdXJlOiBIeXBQcm9jZWR1cmUpIHtcbiAgICB0aGlzLl9wcm9jZWR1cmUgPSBwcm9jZWR1cmU7XG4gICAgdGhpcy5wcm9jZWR1cmVNb2RpZmljYXRpb25zID0ge307XG4gIH1cblxuICBASW5wdXQoKSBzZXQgY2FuY2VsTW9kaWZpY2F0aW9ucyhldnQ6IGFueSkge1xuICAgIHRoaXMuZXF1aXBDb250cm9scy5jb250cm9scy5mb3JFYWNoKChjb250cm9sLCBpbmRleCk9PiB7XG4gICAgICBjb25zdCBpbml0aWFsRXF1aXBtZW50ID0gdGhpcy5lcXVpcG1lbnRTZWxlY3RWYWx1ZVtpbmRleF07XG4gICAgICBjb250cm9sLnNldFZhbHVlKGluaXRpYWxFcXVpcG1lbnQpO1xuICAgICAgaWYodHlwZW9mIGluaXRpYWxFcXVpcG1lbnQgPT09ICdvYmplY3QnICYmICEhaW5pdGlhbEVxdWlwbWVudCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRXF1aXBtZW50W2luZGV4XSA9IHRydWU7XG4gICAgICAgIHRoaXMuYWRyZXNzRGlzYWJsZWRbaW5kZXhdID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFcXVpcG1lbnRbaW5kZXhdID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYWRyZXNzRGlzYWJsZWRbaW5kZXhdID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSlcbiAgICB0aGlzLmV2ZW50U2VsZWN0VmFsdWUgPSB0aGlzLmV2ZW50U2VsZWN0VmFsdWUubWFwKChldmVudFBhcmVudCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGluaXRpYWxQYXJlbnQgPSB0aGlzLl9ldmVudHNbaW5kZXhdLnBhcmVudDtcbiAgICAgIGlmIChpbml0aWFsUGFyZW50KSB7XG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gdGhpcy5nZXRDb21ib0JveFJlZ0V4cChpbml0aWFsUGFyZW50Lm5hbWUpO1xuICAgICAgICBjb25zdCBodG1sID0gYCR7cGFkSWQuZm4oaW5pdGlhbFBhcmVudC5pZCl9IC0gJHtpbml0aWFsUGFyZW50Lm5hbWV9YDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5pbml0aWFsUGFyZW50LFxuICAgICAgICAgIGh0bWw6IGh0bWwucmVwbGFjZUFsbChyZWdleCwgKG1hdGNoZWQ6IHN0cmluZywgY2FwdHVyZTE6IHN0cmluZykgPT4gYDxiPiR7Y2FwdHVyZTF9PC9iPmApLFxuICAgICAgICAgIGRpc3BsYXlOYW1lOiBodG1sXG4gICAgICAgIH0gYXMgSHlwRXZlbnREZXRhaWxzV2l0aE1hdGNoaW5nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmV2ZW50TW9kaWZpY2F0aW9ucyA9IG5ldyBBcnJheSh0aGlzLl9ldmVudHMubGVuZ3RoKTtcbiAgICB0aGlzLnByb2NlZHVyZU1vZGlmaWNhdGlvbnMgPSB7fTtcbiAgICB0aGlzLl9vdXRwdXRNb2RpZmljYXRpb25zKCk7XG4gIH1cblxuICBzZWxlY3RlZEVxdWlwbWVudCA9IFtmYWxzZV07XG4gIGFkcmVzc0Rpc2FibGVkID0gW2ZhbHNlXTtcbiAgb3BlbmVkQXV0b2NvbXBsZXRlID0gW2ZhbHNlXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVxdWlwbWVudFNlcnZpY2U6IEVxdWlwbWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmUsXG4gICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwdWJsaWMgaTE4blNlcnZpY2U6IFByeUkxOG5TZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJ5RGlhbG9nOiBQcnlEaWFsb2dTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29tbWVudHNTZXJ2aWNlOiBIeXBDb21tZW50c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIGFjdGlvbnMkOiBBY3Rpb25zLFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuYWN0aW9ucyQucGlwZShvZlR5cGUoRXZlbnRBY3Rpb25zLnN0YXR1cyksIGRlbGF5KDEwMDApKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3VsdC5ldmVudCAmJiByZXN1bHQuZXZlbnQuaWQpIHtcbiAgICAgICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLmdldChyZXN1bHQuZXZlbnQuaWQpLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5jb21tZW50c1NlcnZpY2UuZ2V0KHJlc3VsdC5ldmVudCEuaWQsICdldmVudHMnKS5zdWJzY3JpYmUoKGNvbW1lbnRzKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21tZW50ZWQubmV4dChbeyBldmVudCwgY29tbWVudHMgfV0pO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0LnByb2NlZHVyZSAmJiByZXN1bHQudGFyZ2V0U3RhdHVzID09PSAnRE9ORScpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmVcbiAgICAgICAgICAgICAgLnNlbGVjdChFdmVudFNlbGVjdG9ycy5kZXRhaWxzKVxuICAgICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKChkZXRhaWxzKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGRldGFpbHMucHJvY2VkdXJlICYmIGRldGFpbHMucHJvY2VkdXJlLmV2ZW50cykge1xuICAgICAgICAgICAgICAgICAgdGhpcy5jYW5DbG9zZVNvbWUgPSAhIWRldGFpbHMucHJvY2VkdXJlLmV2ZW50cy5maW5kKChldmVudCkgPT4gZXZlbnQuc3RhdHVzICE9PSAnRE9ORScpO1xuICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNhbkNsb3NlU29tZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ldmVudHMuZm9yRWFjaCgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBldmVudC5zdGF0dXMgPSAnRE9ORSc7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKEV2ZW50QWN0aW9ucy5zZWxlY3QoeyBpZHM6IFtdLCBjdW11bGF0aXZlOiBmYWxzZSB9KSk7XG5cbiAgICB0aGlzLmV2ZW50cyQgPSB0aGlzLm9uRXZlbnRTZWFyY2gkLnBpcGUoc3RhcnRXaXRoKCksIGRlYm91bmNlVGltZSg1MDApKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlYXJjaCA9XG4gICAgICAgICAgdHlwZW9mIHRoaXMuZXZlbnRTZWxlY3RWYWx1ZVtpbmRleF0gPT09ICdzdHJpbmcnICYmICh0aGlzLmV2ZW50U2VsZWN0VmFsdWVbaW5kZXhdIGFzIHN0cmluZykubGVuZ3RoID4gMlxuICAgICAgICAgICAgPyAodGhpcy5ldmVudFNlbGVjdFZhbHVlW2luZGV4XSBhcyBzdHJpbmcpXG4gICAgICAgICAgICA6IC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgdGhpcy5ldmVudFNlbGVjdFZhbHVlW2luZGV4XVxuICAgICAgICAgICAgICA/IHBhZElkLmZuKCh0aGlzLmV2ZW50U2VsZWN0VmFsdWVbaW5kZXhdIGFzIEh5cEV2ZW50RGV0YWlscykuaWQpXG4gICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gdGhpcy5ldmVudFNlcnZpY2Uuc2VhcmNoKHNlYXJjaCwgWyduYW1lJywgJ2lkJ10pLnBpcGUoXG4gICAgICAgICAgbWFwKChldmVudHMpID0+XG4gICAgICAgICAgICBldmVudHMubWFwKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCByZWdleCA9IHRoaXMuZ2V0Q29tYm9Cb3hSZWdFeHAoc2VhcmNoKTtcbiAgICAgICAgICAgICAgY29uc3QgaHRtbCA9IGAke3BhZElkLmZuKGV2ZW50LmlkKX0gLSAke2V2ZW50Lm5hbWV9YDtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5ldmVudCxcbiAgICAgICAgICAgICAgICBodG1sOiBodG1sLnJlcGxhY2VBbGwocmVnZXgsIChtYXRjaGVkOiBzdHJpbmcsIGNhcHR1cmUxOiBzdHJpbmcpID0+IGA8Yj4ke2NhcHR1cmUxfTwvYj5gKSxcbiAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogaHRtbFxuICAgICAgICAgICAgICB9IGFzIEh5cEV2ZW50RGV0YWlsc1dpdGhNYXRjaGluZztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCdTZWFyY2ggRXF1aXBtZW50IHByb2JsZW0nKSk7XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KClcbiAgICApO1xuICB9XG5cbiAgaXNFdmVudE1vZGlmaWVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmV2ZW50TW9kaWZpY2F0aW9ucy5zb21lKChtb2RpZiwgaW5kZXgpID0+XG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0pLmxlbmd0aCAhPT0gMFxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgc2V0RGlzdHJpY3RGb3JFdmVudHMoKXtcbiAgICB0aGlzLl9ldmVudHMgPSB0aGlzLl9ldmVudHMubWFwKChldmUpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmV2ZSxcbiAgICAgICAgZGlzdHJpY3Q6IGV2ZS5kaXN0cmljdCA/IGV2ZS5kaXN0cmljdCA6IGV2ZS5lcXVpcG1lbnQ/LmRpc3RyaWN0ID8gZXZlLmVxdWlwbWVudC5kaXN0cmljdCA6ICcnXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDcmVhdG9yRm9yRXZlbnRzKCkge1xuICAgIHRoaXMuX2V2ZW50cyA9IHRoaXMuX2V2ZW50cy5tYXAoKGV2ZSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZXZlLFxuICAgICAgICBjcmVhdG9yOiBldmUuY3JlYXRvclxuICAgICAgICAgID8gZXZlLmNyZWF0b3JcbiAgICAgICAgICA6IGV2ZS5leHRlcm5hbFNvdXJjZVJlZiA9PT0gJ0h5cGVydmlzZXVyJ1xuICAgICAgICAgICAgPyAodGhpcy5wcm9maWxlPy51c2VyTmFtZSBhcyBzdHJpbmcpXG4gICAgICAgICAgICA6ICctLSdcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldENvbWJvQm94UmVnRXhwKHNlYXJjaDogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIFJlZ0V4cChgKCR7c2VhcmNofSlgID8/ICcoLy0vLS8pJywgJ2dpZCcpO1xuICB9XG5cbiAgZ2V0IG1lKCkge1xuICAgIHJldHVybiB0aGlzLnByb2ZpbGU7XG4gIH1cblxuICBnZXQgZXZlbnRzKCkge1xuICAgIHJldHVybiB0aGlzLl9ldmVudHMubWFwKChldnQsIGlkeCkgPT4gKHsgLi4uZXZ0LCAuLi4odGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaWR4XSA/PyB7fSkgfSkpO1xuICB9XG5cbiAgZ2V0IGNhbkFzc29jaWF0ZVByb2NlZHVyZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZXZlbnRzLmV2ZXJ5KChldnQpID0+IGV2dC5zdGF0dXMgPT09ICdORVcnICYmIGV2dC5pZCAhPT0gLTEpO1xuICB9XG5cbiAgZ2V0IHByb2NlZHVyZSgpOiBIeXBQcm9jZWR1cmUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9wcm9jZWR1cmVcbiAgICAgID8ge1xuICAgICAgICAgIC4uLnRoaXMuX3Byb2NlZHVyZSxcbiAgICAgICAgICAuLi4odGhpcy5wcm9jZWR1cmVNb2RpZmljYXRpb25zID8/IHt9KSxcbiAgICAgICAgICBldmVudHM6IHRoaXMuZXZlbnRzXG4gICAgICAgIH1cbiAgICAgIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0IGNsb3NlQ29tbWVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByb2NlZHVyZT8uY2xvc2VDb21tZW50ID8/ICcnO1xuICB9XG5cbiAgdG9nZ2xlKGk6IG51bWJlcikge1xuICAgIHRoaXMub3BlbmVkW2ldID0gIXRoaXMub3BlbmVkW2ldO1xuICB9XG5cbiAgbWFuYWdlRXF1aXBtZW50KGluZGV4OiBudW1iZXIpe1xuICAgIGNvbnN0IGdldEVxdWlwbWVudCA9IHRoaXMuZXF1aXBDb250cm9scy5hdChpbmRleCkudmFsdWU7XG4gICAgaWYgKHR5cGVvZiBnZXRFcXVpcG1lbnQgPT09ICdvYmplY3QnKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRXF1aXBtZW50W2luZGV4XSA9IHRydWU7XG4gICAgICB0aGlzLmdldERhdGFGb3JUb29sdGlwKGdldEVxdWlwbWVudCBhcyBIeXBFcXVpcG1lbnQsIGluZGV4KTtcbiAgICAgIGlmICghdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdKSB7XG4gICAgICAgIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XSA9IHt9O1xuICAgICAgfVxuICAgICAgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdLmFkZHJlc3MgPSBnZXRFcXVpcG1lbnQ/LmFkZHJlc3M7XG4gICAgICB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0uZGlzdHJpY3QgPSBnZXRFcXVpcG1lbnQ/LmRpc3RyaWN0O1xuICAgICAgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdLmVxdWlwbWVudCA9IGdldEVxdWlwbWVudCBhcyBIeXBFcXVpcG1lbnQ7XG4gICAgICB0aGlzLmFkcmVzc0Rpc2FibGVkW2luZGV4XSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFcXVpcG1lbnRbaW5kZXhdID0gZmFsc2U7XG4gICAgICBpZighdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdKXtcbiAgICAgICAgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdID0ge307XG4gICAgICB9XG4gICAgICB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0uYWRkcmVzcyA9ICcnO1xuICAgICAgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdLmRpc3RyaWN0ID0gJyc7XG4gICAgICB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0uZXF1aXBtZW50ID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5hZHJlc3NEaXNhYmxlZFtpbmRleF0gPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZih0aGlzLl9ldmVudHNbaW5kZXhdLmVxdWlwbWVudD8ubmFtZSA9PT0gZ2V0RXF1aXBtZW50Py5uYW1lIHx8IHRoaXMuX2V2ZW50c1tpbmRleF0uZXF1aXBtZW50ID09PSBnZXRFcXVpcG1lbnQpe1xuICAgICAgaWYgKCEhdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgZGVsZXRlIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XS5lcXVpcG1lbnQ7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0uYWRkcmVzcztcbiAgICAgICAgZGVsZXRlIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XS5kaXN0cmljdDtcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgZGVsZXRlIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG1vZGlmeUV2ZW50KGluZGV4OiBudW1iZXIsIHByb3A6IHN0cmluZywgJGV2ZW50OiBFdmVudCB8IHN0cmluZykge1xuICAgIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XSA9IHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XSA/PyAoe30gYXMgUGFydGlhbDxIeXBFdmVudERldGFpbHM+KTtcbiAgICBpZiAocHJvcCA9PT0gJ2NhdGVnb3J5Jykge1xuICAgICAgZGVsZXRlIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XS5zdWJDYXRlZ29yeTtcbiAgICAgIGlmICgkZXZlbnQgPT09ICdBTk9NQUxZJykge1xuICAgICAgICB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0uc3ViQ2F0ZWdvcnkgPSAnTk9ORSc7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChwcm9wID09PSAnZG9tYWluJyAmJiB0aGlzLmVxdWlwQ29udHJvbHMuYXQoaW5kZXgpLnZhbHVlPy5kb21haW4gIT09ICRldmVudCkge1xuICAgICAgdGhpcy5lcXVpcENvbnRyb2xzLmF0KGluZGV4KS5zZXRWYWx1ZSgnJyk7XG4gICAgICB0aGlzLm1hbmFnZUVxdWlwbWVudChpbmRleCk7XG4gICAgfVxuICAgIGNvbnN0IGlzRGF0ZSA9IHByb3AuaW5kZXhPZignRGF0ZScpID4gLTE7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IG5ld1ZhbHVlID0gJGV2ZW50IGluc3RhbmNlb2YgRXZlbnQgPyAkZXZlbnQudGFyZ2V0Py52YWx1ZSA6ICRldmVudDtcblxuICAgIGNvbnN0IGNvcnJlY3RlZFZhbHVlID0gIWlzRGF0ZSA/IG5ld1ZhbHVlIDogdGhpcy5jb252ZXJ0RGF0ZShuZXdWYWx1ZSk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmICh0aGlzLl9ldmVudHNbaW5kZXhdW3Byb3BdICE9PSBjb3JyZWN0ZWRWYWx1ZSkge1xuICAgICAgaWYgKCF0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0pIHtcbiAgICAgICAgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdID0ge307XG4gICAgICB9XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF1bcHJvcF0gPSBjb3JyZWN0ZWRWYWx1ZTtcblxuICAgICAgdGhpcy5fb3V0cHV0TW9kaWZpY2F0aW9ucygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoISF0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0pIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBkZWxldGUgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdW3Byb3BdO1xuICAgICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBkZWxldGUgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX291dHB1dE1vZGlmaWNhdGlvbnMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhY2Nlc3MoZXZlbnQ6IEh5cEV2ZW50RGV0YWlscykge1xuICAgIHJldHVybiBFVkVOVF9ERVRBSUxfQUNDRVNTX0ZOLnZhbHVlKGV2ZW50LCB0aGlzKTtcbiAgfVxuXG4gIF9vdXRwdXRNb2RpZmljYXRpb25zKCkge1xuICAgIHRoaXMudmFsaWRhdGVFdmVudHModGhpcy5ldmVudHMpO1xuICAgIHRoaXMubW9kaWZpZWRFdmVudHMubmV4dCh0aGlzLmV2ZW50cy5tYXAoKGV2LCBpZHgpID0+IFt0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpZHhdLCBldl0pKTtcbiAgICB0aGlzLm1vZGlmaWVkUHJvY2VkdXJlLm5leHQodGhpcy5wcm9jZWR1cmUgPyBbdGhpcy5wcm9jZWR1cmVNb2RpZmljYXRpb25zLCB0aGlzLnByb2NlZHVyZSFdIDogdW5kZWZpbmVkKTtcbiAgfVxuXG4gIHZhbGlkYXRlRXZlbnRzKGV2ZW50czogSHlwRXZlbnREZXRhaWxzW10pIHtcbiAgICB0aGlzLmVycm9ycyA9IFtdO1xuICAgIGV2ZW50cy5mb3JFYWNoKChldmVudCwgaWR4KSA9PiB7XG4gICAgICBjb25zdCBldmVudEVycm9ycyA9IFtdO1xuICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKC9eXFxzKyQvKTtcbiAgICAgIGlmICghZXZlbnQubmFtZSB8fCBldmVudC5uYW1lLmxlbmd0aCA9PT0gMCB8fCByZWdleC50ZXN0KGV2ZW50Lm5hbWUpKSB7XG4gICAgICAgIGV2ZW50RXJyb3JzLnB1c2goeyBmaWVsZDogJ25hbWUnLCBjb2RlOiAncmVxdWlyZWQnIH0pO1xuICAgICAgfVxuICAgICAgaWYgKCFldmVudC5jYXRlZ29yeSB8fCBldmVudC5jYXRlZ29yeS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgZXZlbnRFcnJvcnMucHVzaCh7IGZpZWxkOiAnY2F0ZWdvcnknLCBjb2RlOiAncmVxdWlyZWQnIH0pO1xuICAgICAgfVxuICAgICAgaWYgKCFldmVudC5jcml0aWNhbGl0eSB8fCBldmVudC5jcml0aWNhbGl0eS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgZXZlbnRFcnJvcnMucHVzaCh7IGZpZWxkOiAnY3JpdGljYWxpdHknLCBjb2RlOiAncmVxdWlyZWQnIH0pO1xuICAgICAgfVxuICAgICAgaWYgKCFldmVudC5kZXNjcmlwdGlvbiB8fCBldmVudC5kZXNjcmlwdGlvbi5sZW5ndGggPT09IDAgfHwgcmVnZXgudGVzdChldmVudC5kZXNjcmlwdGlvbikpIHtcbiAgICAgICAgZXZlbnRFcnJvcnMucHVzaCh7IGZpZWxkOiAnZGVzY3JpcHRpb24nLCBjb2RlOiAncmVxdWlyZWQnIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5lcXVpcENvbnRyb2xzLmNvbnRyb2xzLmZvckVhY2goKGNvbnRyb2wsIGluZGV4KSA9PiB7XG4gICAgICAgIGlmKCB0eXBlb2YgY29udHJvbC52YWx1ZSA9PT0gJ3N0cmluZycgJiYgY29udHJvbC52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZXZlbnRFcnJvcnMucHVzaCh7IGZpZWxkOiAnZXF1aXBtZW50JywgY29kZTogJ25vLWVxdWlwbWVudCcgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICBjb25zdCBwYXJlbnQgPSBldmVudC5wYXJlbnQ7XG4gICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgIGNvbnN0IHBhcmVudE5hbWUgPSBgJHtwYWRJZC5mbihldmVudC5wYXJlbnQ/LmlkID8/ICcnKX0gLSAke2V2ZW50LnBhcmVudD8ubmFtZX1gO1xuICAgICAgICBjb25zdCBzZWxlY3RlZFBhcmVudE5hbWUgPSAodGhpcy5ldmVudFNlbGVjdFZhbHVlW2lkeF0gYXMgSHlwRXZlbnREZXRhaWxzV2l0aE1hdGNoaW5nKT8uZGlzcGxheU5hbWVcbiAgICAgICAgICA/ICh0aGlzLmV2ZW50U2VsZWN0VmFsdWVbaWR4XSBhcyBIeXBFdmVudERldGFpbHNXaXRoTWF0Y2hpbmcpLmRpc3BsYXlOYW1lXG4gICAgICAgICAgOiB0aGlzLmV2ZW50U2VsZWN0VmFsdWVbaWR4XTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICEhdGhpcy5ldmVudFNlbGVjdFZhbHVlW2lkeF0gJiZcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgcGFyZW50TmFtZSAhPT0gc2VsZWN0ZWRQYXJlbnROYW1lXG4gICAgICAgICkge1xuICAgICAgICAgIGV2ZW50RXJyb3JzLnB1c2goeyBmaWVsZDogJ3BhcmVudCcsIGNvZGU6ICdub3QtZm91bmQnIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQuY2F0ZWdvcnkgPT09ICdNQU5JRkVTVEFUSU9OJykge1xuICAgICAgICBpZiAoIWV2ZW50LnN0YXJ0RGF0ZSB8fCBldmVudC5zdGFydERhdGUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgZXZlbnRFcnJvcnMucHVzaCh7IGZpZWxkOiAnc3RhcnREYXRlJywgY29kZTogJ3JlcXVpcmVkJyB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWV2ZW50LmVuZERhdGUgfHwgZXZlbnQuZW5kRGF0ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBldmVudEVycm9ycy5wdXNoKHsgZmllbGQ6ICdlbmREYXRlJywgY29kZTogJ3JlcXVpcmVkJyB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKChldmVudC5zdGFydERhdGUgYXMgc3RyaW5nKT8ubG9jYWxlQ29tcGFyZShldmVudC5lbmREYXRlID8/ICcnKSA/PyAwKSA+IDApIHtcbiAgICAgICAgICBldmVudEVycm9ycy5wdXNoKHsgZmllbGQ6ICdzdGFydERhdGUnLCBjb2RlOiAnYmVmb3JlJyB9KTtcbiAgICAgICAgICBldmVudEVycm9ycy5wdXNoKHsgZmllbGQ6ICdlbmREYXRlJywgY29kZTogJ2FmdGVyJyB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGV2ZW50LnN0YXJ0RGF0ZSAmJiBldmVudC5lbmREYXRlICYmIGV2ZW50LnN0YXJ0RGF0ZS5sb2NhbGVDb21wYXJlKGV2ZW50LmVuZERhdGUpID4gMCkge1xuICAgICAgICAgIGV2ZW50RXJyb3JzLnB1c2goeyBmaWVsZDogJ3N0YXJ0RGF0ZScsIGNvZGU6ICdiZWZvcmUnIH0pO1xuICAgICAgICAgIGV2ZW50RXJyb3JzLnB1c2goeyBmaWVsZDogJ2VuZERhdGUnLCBjb2RlOiAnYWZ0ZXInIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmVycm9ycy5wdXNoKGV2ZW50RXJyb3JzKTtcbiAgICB9KTtcbiAgICB0aGlzLmV2ZW50RXJyb3JzLm5leHQodGhpcy5lcnJvcnMpO1xuICB9XG5cbiAgaGFzRXJyb3IocHJvcDogc3RyaW5nLCBpZHg6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmVycm9yc1tpZHhdPy5maW5kKChlcnIpID0+IGVyci5maWVsZCA9PT0gcHJvcCkgPz8gZmFsc2U7XG4gIH1cblxuICBjYXRlZ29yaWVzKGV2ZW50OiBIeXBFdmVudERldGFpbHMpIHtcbiAgICByZXR1cm4gSHlwRXZlbnRDYXRlZ29yeS52YWx1ZXM7XG4gIH1cblxuICBjaGFuZ2VTdGF0dXMoJGV2ZW50OiBzdHJpbmcsIGV2ZW50OiBIeXBFdmVudERldGFpbHMpIHtcbiAgICB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuZXZlbnRzID0gW2V2ZW50XTtcbiAgICB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuc3RhdHVzID0gJGV2ZW50O1xuICAgIHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5hbGwgPSBmYWxzZTtcbiAgICB0aGlzLnRvZ2dsZUNvbmZpcm0oKTtcbiAgICBpZigkZXZlbnQgPT09ICdET05FJykge1xuICAgICAgdGhpcy5lcXVpcENvbnRyb2xzLmNvbnRyb2xzLmZvckVhY2goY29udHJvbCA9PiB7XG4gICAgICAgIGNvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBjbG9zZUFsbCgpIHtcbiAgICB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuYWxsID0gdHJ1ZTtcbiAgICB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuZXZlbnRzID0gdGhpcy5ldmVudHM7XG4gICAgdGhpcy5jaGFuZ2VTdGF0dXNDb250ZXh0LnN0YXR1cyA9ICdET05FJztcbiAgICB0aGlzLnRvZ2dsZUNvbmZpcm0oKTtcbiAgfVxuXG4gIGNvbmZpcm1lZENsb3NlKCkge1xuICAgIGlmICh0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuYWxsKSB7XG4gICAgICBpZiAoIXRoaXMucHJvY2VkdXJlKSB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgRXZlbnRBY3Rpb25zLnN0YXR1cyh7XG4gICAgICAgICAgICB0YXJnZXRTdGF0dXM6IHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5zdGF0dXMsXG4gICAgICAgICAgICBldmVudDogdGhpcy5jaGFuZ2VTdGF0dXNDb250ZXh0LmV2ZW50c1swXSxcbiAgICAgICAgICAgIHByb2NlZHVyZTogdGhpcy5wcm9jZWR1cmUsXG4gICAgICAgICAgICBjb21tZW50OiB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuY29tbWVudFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICAgIEV2ZW50QWN0aW9ucy5zdGF0dXMoe1xuICAgICAgICAgICAgdGFyZ2V0U3RhdHVzOiB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuc3RhdHVzLFxuICAgICAgICAgICAgcHJvY2VkdXJlOiB0aGlzLnByb2NlZHVyZSxcbiAgICAgICAgICAgIGNvbW1lbnQ6IHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5jb21tZW50XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgRXZlbnRBY3Rpb25zLnN0YXR1cyh7XG4gICAgICAgICAgdGFyZ2V0U3RhdHVzOiB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuc3RhdHVzLFxuICAgICAgICAgIGV2ZW50OiB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuZXZlbnRzWzBdLFxuICAgICAgICAgIHByb2NlZHVyZTogdGhpcy5wcm9jZWR1cmUsXG4gICAgICAgICAgY29tbWVudDogdGhpcy5jaGFuZ2VTdGF0dXNDb250ZXh0LmNvbW1lbnRcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMudG9nZ2xlQ29uZmlybSgpO1xuICB9XG5cbiAgdG9nZ2xlQ29uZmlybSgpIHtcbiAgICBpZiAoIXRoaXMub3ZlcmxheVJlZikge1xuICAgICAgdGhpcy5jb21maXJtRGlhbG9nT3BlbmVkLm5leHQodGhpcy5jaGFuZ2VTdGF0dXNDb250ZXh0KTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoXG4gICAgICAgIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgICBiYWNrZHJvcENsYXNzOiAnYmFja2Ryb3AtZGFyaycsXG4gICAgICAgICAgcGFuZWxDbGFzczogWydvLWh2eS1jbG9zZS1jb25maXJtJ11cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnRvZ2dsZUNvbmZpcm0oKSk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLmNvbmZpcm1EaWFsb2csIHRoaXMudmlld0NvbnRhaW5lclJlZikpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuY29tbWVudCA9ICcnO1xuICB9XG5cbiAgY29uZmlybURpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuY29tbWVudC5sZW5ndGggPT09IDA7XG4gIH1cblxuICBnZXQgY2FsY3VsYXRlZFByb2dyZXNzKCkge1xuICAgIGlmICh0aGlzLnByb2NlZHVyZSEuYWN0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5yb3VuZChcbiAgICAgICh0aGlzLnByb2NlZHVyZSEuYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gYWN0aW9uLnN0YXR1cyA9PT0gJ0RPTkUnIHx8IGFjdGlvbi5zdGF0dXMgPT09ICdPVF9DTE9TRUQnKS5sZW5ndGggLyB0aGlzLnByb2NlZHVyZSEuYWN0aW9ucy5sZW5ndGgpICpcbiAgICAgICAgMTAwXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBwYWRJZCA9IHBhZElkO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3ViQ2F0ZWdvcmllcyA9IFt1bmRlZmluZWQsIC4uLkh5cEV2ZW50U3ViQ2F0ZWdvcnkudmFsdWVzWydBTk9NQUxZJ11dO1xuXG4gIG1vZGlmaWVkQWN0aW9ucygkZXZlbnQ6IGFueSkge1xuICAgIGlmIChlcXVhbCgkZXZlbnQsIHRoaXMuX3Byb2NlZHVyZSEuYWN0aW9ucykpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLnByb2NlZHVyZU1vZGlmaWNhdGlvbnMuYWN0aW9ucztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcm9jZWR1cmVNb2RpZmljYXRpb25zLmFjdGlvbnMgPSAkZXZlbnQ7XG4gICAgfVxuICAgIHRoaXMuX291dHB1dE1vZGlmaWNhdGlvbnMoKTtcbiAgfVxuXG4gIHJlZnJlc2hBY3Rpb25zKCRldmVudDogSHlwQWN0aW9uW10pIHtcbiAgICBpZiAodGhpcy5wcm9jZWR1cmUgJiYgdGhpcy5wcm9jZWR1cmUuYWN0aW9ucykge1xuICAgICAgdGhpcy5wcm9jZWR1cmUgPSB7XG4gICAgICAgIC4uLnRoaXMucHJvY2VkdXJlLFxuICAgICAgICBhY3Rpb25zOiAkZXZlbnRcbiAgICAgIH07XG4gICAgICB0aGlzLl9vdXRwdXRNb2RpZmljYXRpb25zKCk7XG4gICAgfVxuICB9XG5cbiAgb3BlbkFzc29jaWF0aW9uTW9kYWwoKSB7XG4gICAgY29uc3QgcmVmID0gdGhpcy5wcnlEaWFsb2cub3BlbihQcm9jZWR1cmVBc3NvY2lhdGlvbk1vZGFsQ29tcG9uZW50LCB7XG4gICAgICBiYWNrZHJvcENsYXNzOiAnby1odnktYXNzb2NpYXRpb24tbW9kYWxfX2JhY2tkcm9wJ1xuICAgIH0pO1xuICAgIGlmICghIXJlZiAmJiAhIXJlZi5jb21wb25lbnQpIHtcbiAgICAgIHJlZi5jb21wb25lbnQuZXZlbnRzID0gdGhpcy5ldmVudHM7XG4gICAgfVxuICB9XG5cbiAgb3BlbkRlbGV0ZU1vZGFsKCkge1xuICAgIGNvbnN0IGRhdGE6IFByeURpYWxvZ0NvbmZpcm1EYXRhID0ge1xuICAgICAgdGl0bGU6ICdAY2hoLmV2ZW50LmRlbGV0ZVQnLFxuICAgICAgbWVzc2FnZTogdGhpcy5pMThuU2VydmljZS5pbnN0YW50KHRoaXMuZXZlbnRzLmxlbmd0aCA+IDEgPyAnQGNoaC5ldmVudC5kZWxldGVNKycgOiAnQGNoaC5ldmVudC5kZWxldGVNMScsIHtcbiAgICAgICAgbmJFdmVudHM6IHRoaXMuZXZlbnRzLmxlbmd0aFxuICAgICAgfSksXG4gICAgICBhY3Rpb25zOiBbXG4gICAgICAgIHsgaWQ6IDAsIGxhYmVsOiAnQGNoaC5hY3Rpb24uY2FuY2VsJywgY29sb3I6ICdzZWNvbmRhcnknIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogMSxcbiAgICAgICAgICBsYWJlbDogJ0BjaGguYWN0aW9uLnZhbGlkYXRlJyxcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICBQcm9jZWR1cmVBY3Rpb25zLmRlbGV0ZUluc3RhbmNlKHtcbiAgICAgICAgICAgICAgaWQ6IHRoaXMucHJvY2VkdXJlIS5pZCxcbiAgICAgICAgICAgICAgcmV0dXJuVG9FdmVudDogdGhpcy5ldmVudHMubGVuZ3RoID09PSAxID8gKHRoaXMuZXZlbnRzWzBdIGFzIEh5cEV2ZW50RGV0YWlsc1dpdGhNYXRjaGluZykuaWQgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcbiAgICB0aGlzLnByeURpYWxvZy5vcGVuKFByeURpYWxvZ0NvbmZpcm1Db21wb25lbnQsIHtcbiAgICAgIGRhdGEsXG4gICAgICBiYWNrZHJvcENsYXNzOiAnYmFja2Ryb3AtZGFyaycsXG4gICAgICBwYW5lbENsYXNzOiBbJ28taHZ5LWRlbGV0ZS1wcm9jZWR1cmUnXVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0RGF0ZShuZXdWYWx1ZT86IHN0cmluZykge1xuICAgIHJldHVybiBuZXdWYWx1ZSA/IG5ldyBEYXRlKG5ld1ZhbHVlKS50b0lTT1N0cmluZygpIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZGlzcGxheUVxdWlwbWVudChlcXVpcG1lbnQ6IEVxdWlwbWVudEZvckV2ZW50KSB7XG4gICAgaWYoZXF1aXBtZW50ICYmIGVxdWlwbWVudC5uYW1lICYmIGVxdWlwbWVudC5mYW1pbHkpIHtcbiAgICAgIHJldHVybiBlcXVpcG1lbnQubmFtZS5jb25jYXQoXCIgLSBcIiwgdGhpcy5pMThuU2VydmljZS5pbnN0YW50KCdAaHZ5LmV2ZW50LmZhbWlseS4nICsgZXF1aXBtZW50LmZhbWlseSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgZ2V0RXF1aXBDb250cm9sKGluZGV4OiBudW1iZXIpe1xuICAgIHJldHVybiB0aGlzLmVxdWlwQ29udHJvbHMuYXQoaW5kZXgpIGFzIEZvcm1Db250cm9sO1xuICB9XG5cbiAgb3BlbkF1dG9jb21wbGV0ZShpbmRleDogbnVtYmVyKXtcbiAgICB0aGlzLm9wZW5lZEF1dG9jb21wbGV0ZVtpbmRleF0gPSAhdGhpcy5vcGVuZWRBdXRvY29tcGxldGVbaW5kZXhdO1xuICB9XG5cbiAgY2xvc2VBdXRvY29tcGxldGUoaW5kZXg6IG51bWJlcil7XG4gICAgdGhpcy5vcGVuZWRBdXRvY29tcGxldGVbaW5kZXhdID0gIXRoaXMub3BlbmVkQXV0b2NvbXBsZXRlW2luZGV4XTtcbiAgICB0aGlzLm1hbmFnZUVxdWlwbWVudChpbmRleCk7XG4gICAgdGhpcy5fb3V0cHV0TW9kaWZpY2F0aW9ucygpO1xuICB9XG5cbiAgZXF1aXBtZW50RXZlbnRzRm9yVG9vbHRpcDogeyBldmVudHM/OiBIeXBFdmVudERldGFpbHNbXTsgc2VydmljZXM/OiBIeXBTZXJ2aWNlVG9vbHRpcFtdIH1bXSA9IFtdO1xuXG4gIHByaXZhdGUgZ2V0RGF0YUZvclRvb2x0aXAoJGV2ZW50OiBIeXBFcXVpcG1lbnQgfCB1bmRlZmluZWQsIGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmVxdWlwbWVudEV2ZW50c0ZvclRvb2x0aXBbaW5kZXhdID0ge307XG4gICAgaWYgKCRldmVudCkge1xuICAgICAgdGhpcy5lcXVpcG1lbnRTZXJ2aWNlLmZpbmRCeU5hbWUoJGV2ZW50Lm5hbWUpLnN1YnNjcmliZSgoZXF1aXApID0+IHtcbiAgICAgICAgdGhpcy5lcXVpcG1lbnRFdmVudHNGb3JUb29sdGlwW2luZGV4XS5ldmVudHMgPSBlcXVpcC5ldmVudHM7XG4gICAgICAgIHRoaXMuZXF1aXBtZW50RXZlbnRzRm9yVG9vbHRpcFtpbmRleF0uc2VydmljZXMgPSBlcXVpcC5zZXJ2aWNlcztcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHRvb2x0aXBSZWY/OiBQcnlEaWFsb2dSZWY8SHZ5RXZlbnREZXRhaWxzVG9vbHRpcENvbXBvbmVudD47XG5cbiAgdG9nZ2xlRGV0YWlsc1Rvb2x0aXAoaWR4OiBudW1iZXIpIHtcbiAgICBpZiAoIXRoaXMudG9vbHRpcFJlZikge1xuICAgICAgbGV0IGlkeE9wZW5lZCA9IDA7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlkeDsgaSsrKSB7XG4gICAgICAgIGlmICh0aGlzLm9wZW5lZFtpXSkge1xuICAgICAgICAgIGlkeE9wZW5lZCsrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMudG9vbHRpcFJlZiA9IHRoaXMucHJ5RGlhbG9nLm9wZW4oSHZ5RXZlbnREZXRhaWxzVG9vbHRpcENvbXBvbmVudCwge1xuICAgICAgICBkYXRhOiB0aGlzLmVxdWlwbWVudEV2ZW50c0ZvclRvb2x0aXBbaWR4XSA/PyB7IGV2ZW50czogW10sIHNlcnZpY2VzOiBbXSB9LFxuICAgICAgICBvdmVybGF5Q29uZmlnOiB7XG4gICAgICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5vdmVybGF5XG4gICAgICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5kZXRhaWxIb3Zlckljb24uZ2V0KGlkeE9wZW5lZCkhKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMoW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgICAgICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0pXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy50b29sdGlwUmVmLmNsb3NlVmFsdWUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIHRoaXMudG9vbHRpcFJlZiA9IHVuZGVmaW5lZDtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRvb2x0aXBSZWYuY2xvc2UoKTtcbiAgICAgIHRoaXMudG9vbHRpcFJlZiA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RlZFBhcmVudENoYW5nZSgkZXZlbnQ6IHN0cmluZyB8IEh5cEV2ZW50RGV0YWlscywgaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuZXZlbnRTZWxlY3RWYWx1ZVtpbmRleF0gPSAkZXZlbnQ7XG4gICAgdGhpcy5vbkV2ZW50U2VhcmNoJC5uZXh0KGluZGV4KTtcbiAgICBpZiAodHlwZW9mICRldmVudCA9PT0gJ29iamVjdCcgfHwgJGV2ZW50ID09PSAnJykge1xuICAgICAgY29uc3QgcGFyZW50Rm9yRXZlbnQgPSAkZXZlbnQgIT09ICcnID8geyBpZDogJGV2ZW50LmlkLCBuYW1lOiAkZXZlbnQubmFtZSB9IDogdW5kZWZpbmVkO1xuICAgICAgaWYgKCFwYXJlbnRGb3JFdmVudCB8fCB0aGlzLl9ldmVudHNbaW5kZXhdLnBhcmVudD8uaWQgIT09IHBhcmVudEZvckV2ZW50LmlkKSB7XG4gICAgICAgIGlmICghdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdKSB7XG4gICAgICAgICAgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdID0ge307XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdLnBhcmVudCA9IHBhcmVudEZvckV2ZW50O1xuICAgICAgICB0aGlzLl9vdXRwdXRNb2RpZmljYXRpb25zKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoISF0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0pIHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgZGVsZXRlIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XS5wYXJlbnQ7XG4gICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLl9vdXRwdXRNb2RpZmljYXRpb25zKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fb3V0cHV0TW9kaWZpY2F0aW9ucygpO1xuICAgIH1cbiAgfVxuXG4gIGFkZE9uZUV2ZW50KCkge1xuICAgIGNvbnN0IHJlZiA9IHRoaXMucHJ5RGlhbG9nLm9wZW4oSHZ5RXZlbnRBZGRFdmVudENvbXBvbmVudCwge1xuICAgICAgZGF0YTogeyBwcm9jZWR1cmU6IHRoaXMucHJvY2VkdXJlIH0sXG4gICAgICBiYWNrZHJvcENsYXNzOiAnYmFja2Ryb3AtZGFyaydcbiAgICB9KTtcblxuICAgIHJlZi5jbG9zZVZhbHVlLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgIHN3aXRjaCAodmFsdWUudmFsdWUpIHtcbiAgICAgICAgY2FzZSAnYWRkJzpcbiAgICAgICAgICB0aGlzLmFkZGVkRXZlbnQubmV4dCh2YWx1ZS5ldmVudCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICByZWYuY2xvc2UoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFjdGlvbkNvbW1lbnRlZCgkZXZlbnQ6IHsgYWN0aW9uOiBIeXBBY3Rpb247IGNvbW1lbnRzOiBIeXBDb21tZW50W10gfSkge1xuICAgIHRoaXMuY29tbWVudGVkLm5leHQoJGV2ZW50KTtcbiAgfVxuXG4gIHVwZGF0ZUNvbW1lbnQoZXZlbnQ6IEh5cEV2ZW50RGV0YWlscywgY29tbWVudDogeyBpZDogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmcgfSkge1xuICAgIHRoaXMuY29tbWVudHNTZXJ2aWNlLnNhdmUoZXZlbnQuaWQsICdldmVudHMnLCBjb21tZW50KS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgbGV0IGV2ZW50c0FuZENvbW1lbnRzOiB7IGV2ZW50OiBIeXBFdmVudERldGFpbHM7IGNvbW1lbnRzOiBIeXBDb21tZW50W10gfVtdID0gW107XG4gICAgICBsZXQgY29tbWVudHMkOiBPYnNlcnZhYmxlPEh5cENvbW1lbnRbXT5bXSA9IFtdO1xuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuX2V2ZW50cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgY29tbWVudHMkLnB1c2godGhpcy5jb21tZW50c1NlcnZpY2UuZ2V0KHRoaXMuX2V2ZW50c1tpbmRleF0uaWQsICdldmVudHMnKSk7XG4gICAgICB9XG4gICAgICB6aXAoY29tbWVudHMkKVxuICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAoY29tbWVudHNBcnJheSkgPT4ge1xuICAgICAgICAgICAgY29tbWVudHNBcnJheS5mb3JFYWNoKChjb21tZW50cywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgZXZlbnRzQW5kQ29tbWVudHMucHVzaCh7IGV2ZW50OiB0aGlzLl9ldmVudHNbaW5kZXhdLCBjb21tZW50czogY29tbWVudHMgYXMgSHlwQ29tbWVudFtdIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb21tZW50ZWQubmV4dChldmVudHNBbmRDb21tZW50cyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCkge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgdGhpcy50b29sdGlwUmVmPy5jbG9zZSgpO1xuICAgIHRoaXMudG9vbHRpcFJlZiA9IHVuZGVmaW5lZDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxcIj5cbiAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX2hlYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19oZWFkZXJfX3NwbGl0XCI+XG4gICAgICA8aDE+e3sgdGl0bGUgPz8gJ0BodnkuZXZlbnQuZGV0YWlsJyB8IGkxOG4gfX08L2gxPlxuICAgICAgQGlmIChwcm9jZWR1cmUgJiYgY2FuQ2xvc2VTb21lKSB7XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJhZGQtYnV0dG9uXCIgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCIgKGNsaWNrKT1cImFkZE9uZUV2ZW50KClcIj5cbiAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImFkZFwiIFt3aWR0aF09XCIxOFwiIFtoZWlnaHRdPVwiMThcIj48L3ByeS1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIH1cbiAgICAgIEBpZiAoZXZlbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgQGlmIChjYW5DbG9zZVNvbWUgJiYgIXJlYWRvbmx5KSB7XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnkgLWZpeC1yaWdodFwiIFtkaXNhYmxlZF09XCIhY2FuQ2xvc2VTb21lXCIgKGNsaWNrKT1cImNsb3NlQWxsKClcIj5cbiAgICAgICAgICAgIHt7IChjYW5DbG9zZVNvbWUgPyAnQGh2eS5ldmVudC5sb2cuZXZlbnQuY2xvc2UnIDogJ0BodnkuZXZlbnQubG9nLmV2ZW50LmNsb3NlZCcpIHwgaTE4biB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoIWNhbkNsb3NlU29tZSAmJiBjbG9zZUNvbW1lbnQgJiYgY2xvc2VDb21tZW50Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYS10b29sdGlwXCIgW2F0dHIuZGF0YS10b29sdGlwXT1cImNsb3NlQ29tbWVudFwiIGRhdGEtdG9vbHRpcC1wb3NpdGlvbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImlcIiBbaGVpZ2h0XT1cIjE4XCIgW3dpZHRoXT1cIjE4XCI+aTwvcHJ5LWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9faGVhZGVyX19zcGxpdFwiPlxuICAgICAgQGlmIChwcm9jZWR1cmUgJiYgIXJlYWRvbmx5KSB7XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cIm9wZW5EZWxldGVNb2RhbCgpXCIgW2Rpc2FibGVkXT1cInJlYWRvbmx5UHJvY2VkdXJlXCI+XG4gICAgICAgICAge3sgJ0BodnkuZXZlbnQubG9nLnByb2NlZHVyZS5kZWxldGUnIHwgaTE4biB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fY29udGFpbmVyX19zY3JvbGxhYmxlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fZXZlbnRzXCI+XG4gICAgICAgIEBmb3IgKGV2ZW50IG9mIGV2ZW50czsgdHJhY2sgZXZlbnQuaWQ7IGxldCBpZHggPSAkaW5kZXgpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fZXZlbnRzX19ldmVudFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX2V2ZW50c19fZXZlbnRfX2hlYWRlclwiPlxuICAgICAgICAgICAgICA8cHJ5LWljb25cbiAgICAgICAgICAgICAgICBpY29uU3ZnPVwiYXJyb3dfZG93bl9yb3VuZGVkXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuLXJvdGF0ZWRdPVwib3BlbmVkW2lkeF1cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiLWhhbmRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGUoaWR4KVwiXG4gICAgICAgICAgICAgICAgW3dpZHRoXT1cIjEwXCJcbiAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjEwXCJcbiAgICAgICAgICAgICAgPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgIDxodnktaWNvbi1kaXNwbGF5IFtldmVudF09XCJldmVudFwiPjwvaHZ5LWljb24tZGlzcGxheT5cbiAgICAgICAgICAgICAgPGgyPnt7IGV2ZW50Lm5hbWUgfX08L2gyPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fZXZlbnRzX19ldmVudF9faGVhZGVyX19jb21tZW50XCI+XG4gICAgICAgICAgICAgICAgQGlmIChldmVudC5jb21tZW50Q291bnQgPiAwKSB7XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57e1xuICAgICAgICAgICAgICAgICAgICAoZXZlbnQuY29tbWVudENvdW50ID4gMSA/ICdAaHZ5LmV2ZW50LmNvbW1lbnQuaGVhZHMnIDogJ0BodnkuZXZlbnQuY29tbWVudC5oZWFkJylcbiAgICAgICAgICAgICAgICAgICAgICB8IGkxOG46IHsgbmI6IGV2ZW50LmNvbW1lbnRDb3VudCB9XG4gICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8aHZ5LXN0YXR1cy1kaXNwbGF5XG4gICAgICAgICAgICAgICAgW2l0ZW1dPVwiZXZlbnRcIlxuICAgICAgICAgICAgICAgIFttb2RpZmlhYmxlXT1cImV2ZW50LnN0YXR1cyAhPT0gJ0RPTkUnXCJcbiAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgIChtb2RpZmllZCk9XCJjaGFuZ2VTdGF0dXMoJGV2ZW50LCBldmVudClcIlxuICAgICAgICAgICAgICA+PC9odnktc3RhdHVzLWRpc3BsYXk+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19ldmVudHNfX2V2ZW50X19jb250ZW50XCI+XG4gICAgICAgICAgICAgIEBpZiAoIW9wZW5lZFtpZHhdKSB7XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIHt7ICdAaHZ5LmV2ZW50LmxvZy5ldmVudC5jYXRlZ29yeScgfCBpMThuIH19IDoge3sgJ0BodnkuZXZlbnQuY2F0ZWdvcnkuJyArIGV2ZW50LmNhdGVnb3J5IHwgaTE4biB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXY+e3sgJ0BodnkuZXZlbnQubG9nLmV2ZW50LmRlc2NyaXB0aW9uJyB8IGkxOG4gfX0gOiB7eyBldmVudC5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICBAaWYgKGFjY2VzcyhldmVudCk7IGFzIGFjY2Vzc1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fZXZlbnRzX19ldmVudF9fY29udGVudF9faGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMz57eyAnQGh2eS5ldmVudC5sb2cuZXZlbnQuZGV0YWlsJyB8IGkxOG4gfX08L2gzPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+e3sgJ0BodnkuZXZlbnQubG9nLmV2ZW50Lm1hbmRhdG9yeScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8dGFibGU+XG4gICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0taWRlbnRpZmlhbnQtLT5cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKGV2ZW50LmlkID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQubG9nLmV2ZW50LmlkJyB8IGkxOG4gfX08c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj4gOjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImEtZm9ybS1maWVsZFwiIFt2YWx1ZV09XCJwYWRJZC5mbihldmVudC5pZClcIiBbcmVhZG9ubHldPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLW5vbS0tPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5sb2cuZXZlbnQubmFtZScgfCBpMThuIH19PHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy4tZXJyb3JdPVwiaGFzRXJyb3IoJ25hbWUnLCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZXZlbnQubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJtb2RpZnlFdmVudChpZHgsICduYW1lJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImFjY2Vzc1ZhbHVlLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhMZW5ndGhdPVwiNTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLWNhdGVnb3JpZS0tPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5sb2cuZXZlbnQuY2F0ZWdvcnknIHwgaTE4biB9fTxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJldmVudC5jYXRlZ29yeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cImNhdGVnb3JpZXMoZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuLWVycm9yXT1cImhhc0Vycm9yKCdjYXRlZ29yeScsIGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1vZGlmeUV2ZW50KGlkeCwgJ2NhdGVnb3J5JywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaTE4blByZWZpeD1cIkBodnkuZXZlbnQuY2F0ZWdvcnkuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWNjZXNzVmFsdWUuY2F0ZWdvcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLXNvdXMgY2F0ZWdvcmllLS0+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChldmVudC5jYXRlZ29yeSA9PT0gJ0FOT01BTFknKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5zdWJDYXRlZ29yeS5uYW1lJyB8IGkxOG4gfX08c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj4gOjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZXZlbnQuc3ViQ2F0ZWdvcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cInN1YkNhdGVnb3JpZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLi1lcnJvcl09XCJoYXNFcnJvcignc3ViQ2F0ZWdvcnknLCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1vZGlmeUV2ZW50KGlkeCwgJ3N1YkNhdGVnb3J5JywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpMThuUHJlZml4PVwiQGh2eS5ldmVudC5zdWJDYXRlZ29yeS5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFjY2Vzc1ZhbHVlLnN1YkNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwhLS1jcml0aWNpdGUtLT5cbiAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQuY3JpdGljYWxpdHkubmFtZScgfCBpMThuIH19PHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImV2ZW50LmNyaXRpY2FsaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiY3JpdGljYWxpdGllc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLi1lcnJvcl09XCJoYXNFcnJvcignY3JpdGljYWxpdHknLCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpMThuUHJlZml4PVwiQGh2eS5ldmVudC5jcml0aWNhbGl0eS5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhY2Nlc3NWYWx1ZS5jcml0aWNhbGl0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwibW9kaWZ5RXZlbnQoaWR4LCAnY3JpdGljYWxpdHknLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDwhLS1tZXRpZXItLT5cbiAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQuZG9tYWluLm5hbWUnIHwgaTE4biB9fSA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiRE9NQUlOU1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZXZlbnQuZG9tYWluXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpMThuUHJlZml4PVwiQGh2eS5ldmVudC5kb21haW4uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuLWVycm9yXT1cImhhc0Vycm9yKCdkb21haW4nLCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJtb2RpZnlFdmVudChpZHgsICdkb21haW4nLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWNjZXNzVmFsdWUuZG9tYWluXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDwhLS1lcXVpcGVtZW50LS0+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LmVxdWlwbWVudCcgfCBpMThuIH19IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGQtYXV0b2NvbXBsZXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiaW5wdXQtYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQGh2eS5ldmVudC5lcXVpcG1lbnRQbGFjZWhvbGRlcicgfCBpMThuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZ2V0RXF1aXBDb250cm9sKGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydlcXVpcG1lbnQtZGlzYWJsZWQnOiBldmVudC5zdGF0dXMgPT09ICdET05FJ31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLi1lcnJvcl09XCJoYXNFcnJvcignZXF1aXBtZW50JywgaWR4KVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1hdXRvY29tcGxldGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc3BsYXlXaXRoXT1cImRpc3BsYXlFcXVpcG1lbnQuYmluZCh0aGlzKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9wZW5lZCk9XCJvcGVuQXV0b2NvbXBsZXRlKGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbG9zZWQpPVwiY2xvc2VBdXRvY29tcGxldGUoaWR4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChlcXVpcG1lbnQgb2YgZXF1aXBtZW50cyRbaWR4XSB8IGFzeW5jOyB0cmFjayBlcXVpcG1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJlcXVpcG1lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tlcXVpcG1lbnQubmFtZX19IC0ge3snQGh2eS5ldmVudC5mYW1pbHkuJyArIGVxdWlwbWVudC5mYW1pbHkgfCBpMThufX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHByeS1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLXByeS1zZWxlY3RfX3RvZ2dsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25TdmddPVwiJ2NoZXZyb25fYm90dG9tJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCJvcGVuZWRBdXRvY29tcGxldGVbaWR4XVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3dpZHRoXT1cIjEwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjE2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNlbGVjdGVkRXF1aXBtZW50W2lkeF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJ5LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25Tdmc9XCJpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiLWhhbmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2RldGFpbEhvdmVySWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURldGFpbHNUb29sdGlwKGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3dpZHRoXT1cIjE4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiMThcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3ByeS1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLWVudGl0ZS0tPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5lcXVpcG1lbnRFbnRpdHknIHwgaTE4biB9fSA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuLWVycm9yXT1cImhhc0Vycm9yKCdlcXVpcG1lbnQnLCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXZlbnQuZXF1aXBtZW50Py5lbnRpdHkgPyAnQGh2eS5ldmVudC5lbnRpdHkuJyArIGV2ZW50LmVxdWlwbWVudD8uZW50aXR5IDogJycpIHwgaTE4blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDwhLS1hZHJlc3NlLS0+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LmxvZy5ldmVudC5hZGRyZXNzJyB8IGkxOG4gfX0gOjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImV2ZW50LmFkZHJlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuLWVycm9yXT1cImhhc0Vycm9yKCdhZGRyZXNzJywgaWR4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImFjY2Vzc1ZhbHVlLmFkZHJlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1vZGlmeUV2ZW50KGlkeCwgJ2FkZHJlc3MnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4TGVuZ3RoXT1cIjI1NlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFkcmVzc0Rpc2FibGVkW2lkeF0gfHwgZXZlbnQuc3RhdHVzID09PSAnRE9ORSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDwhLS12aWxsZS0tPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5kaXN0cmljdCcgfCBpMThuIH19IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJwbGFjZXNDaG9pY2VzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJldmVudC5kaXN0cmljdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2JpbmRWYWx1ZV09XCIna2V5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZExhYmVsPVwiZGlzcGxheVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaTE4blByZWZpeD1cIkBodnkuZXZlbnQucGxhY2VzLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwibW9kaWZ5RXZlbnQoaWR4LCAnZGlzdHJpY3QnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWRyZXNzRGlzYWJsZWRbaWR4XSB8fCBldmVudC5zdGF0dXMgPT09ICdET05FJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0tZXZlbmVtZW50IHBhcmVudC0tPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5wYXJlbnRFdmVudC5uYW1lJyB8IGkxOG4gfX0gOjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cImV2ZW50cyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZExhYmVsPVwiZGlzcGxheU5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImV2ZW50U2VsZWN0VmFsdWVbaWR4XVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VsZWN0ZWRQYXJlbnRDaGFuZ2UoJGV2ZW50LCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtleHRlcm5hbEF1dG9jb21wbGV0ZVNlcnZpY2VdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidAaHZ5LmV2ZW50LnBhcmVudEV2ZW50LnBsYWNlaG9sZGVyJyB8IGkxOG5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwicGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGVtcGxhdGVdPVwidGVtcGxhdGVQYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhY2Nlc3NWYWx1ZS5wYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy4tZXJyb3JdPVwiaGFzRXJyb3IoJ3BhcmVudCcsIGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fZXZlbnRzX19ldmVudF9fY29udGVudF9fZXF1aXBtZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZVBhcmVudCBsZXQtaXRlbT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidS1kaXNwbGF5LWZsZXggLWNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJpdGVtLmh0bWxcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0tZGVzY3JpcHRpb24tLT5cbiAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQubG9nLmV2ZW50LmRlc2NyaXB0aW9uJyB8IGkxOG4gfX08c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj4gOjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImV2ZW50LmRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLi1lcnJvcl09XCJoYXNFcnJvcignZGVzY3JpcHRpb24nLCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiYWNjZXNzVmFsdWUuZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1vZGlmeUV2ZW50KGlkeCwgJ2Rlc2NyaXB0aW9uJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heExlbmd0aF09XCIyNTZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDwhLS1kYXRlIGRlYnV0LS0+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnQGh2eS5ldmVudC5zdGFydERhdGUnIHwgaTE4biB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGV2ZW50LmNhdGVnb3J5ID09PSAnTUFOSUZFU1RBVElPTicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZXZlbnQuc3RhcnREYXRlIHwgZm9yRGF0ZVRpbWVMb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLi1lcnJvcl09XCJoYXNFcnJvcignc3RhcnREYXRlJywgaWR4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImFjY2Vzc1ZhbHVlLnN0YXJ0RGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJtb2RpZnlFdmVudChpZHgsICdzdGFydERhdGUnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDwhLS1kYXRlIGZpbi0tPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ0BodnkuZXZlbnQuZW5kRGF0ZScgfCBpMThuIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZXZlbnQuY2F0ZWdvcnkgPT09ICdNQU5JRkVTVEFUSU9OJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJkYXRldGltZS1sb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJldmVudC5lbmREYXRlIHwgZm9yRGF0ZVRpbWVMb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLi1lcnJvcl09XCJoYXNFcnJvcignZW5kRGF0ZScsIGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJhY2Nlc3NWYWx1ZS5lbmREYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm1vZGlmeUV2ZW50KGlkeCwgJ2VuZERhdGUnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChoYXNFcnJvcignZW5kRGF0ZScsIGlkeCkgJiYgZXZlbnQuZW5kRGF0ZSAmJiBldmVudC5zdGFydERhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImEtZm9ybS1maWVsZCAtZXJyb3JcIj57eyAnQGh2eS5ldmVudC5lcnJvckRhdGUnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLXNvdXJjZS0tPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5zb3VyY2UnIHwgaTE4biB9fTxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZXZlbnQuZXh0ZXJuYWxTb3VyY2VSZWYgPz8gKCdAaHZ5LmV2ZW50Lmh5cGVydmlzb3InIHwgaTE4bilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy4tZXJyb3JdPVwiaGFzRXJyb3IoJ3NvdXJjZScsIGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJhY2Nlc3NWYWx1ZS5zb3VyY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwibW9kaWZ5RXZlbnQoaWR4LCAnc291cmNlJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICA8IS0tcmVmw6lyZW5jZSBleHRlcm5lLS0+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChldmVudC5leHRlcm5hbFNvdXJjZVJlZiAhPT0gJ0h5cGVydmlzZXVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQuZXh0ZXJuYWxJZCcgfCBpMThuIH19PHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZXZlbnQuZXh0ZXJuYWxJZCA/PyAnLSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLWNyZWF0ZXVyLS0+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LmNyZWF0b3InIHwgaTE4biB9fTxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJhLWZvcm0tZmllbGRcIiBbdmFsdWVdPVwiZXZlbnQuY3JlYXRvclwiIFtyZWFkb25seV09XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDwhLS1kYXRlIGNyZWF0aW9uLS0+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LmNyZWF0aW9uRGF0ZScgfCBpMThuIH19PHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZXZlbnQuY3JlYXRpb25EYXRlIHwgZm9yRGF0ZVRpbWVMb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDwhLS1kYXRlIG1vZGlmaWNhdGlvbi0tPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5sYXN0TW9kaWZpY2F0aW9uRGF0ZScgfCBpMThuIH19PHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZXZlbnQubGFzdE1vZGlmaWNhdGlvbkRhdGUgfCBmb3JEYXRlVGltZUxvY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLWRhdGUgY2xvdHVyZS0tPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5jbG9zZURhdGUnIHwgaTE4biB9fSA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImV2ZW50LmNsb3NlRGF0ZSB8IGZvckRhdGVUaW1lTG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgICAgICAgICBAaWYgKGV2ZW50LmlkICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICA8aHZ5LWNvbW1lbnRzXG4gICAgICAgICAgICAgICAgICAgICAgW2xhc3RDb21tZW50XT1cImV2ZW50Lmxhc3RDb21tZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICBbY29tbWVudENvdW50XT1cImV2ZW50LmNvbW1lbnRDb3VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNvbW1lbnRlZCk9XCJ1cGRhdGVDb21tZW50KGV2ZW50LCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIidldmVudHMnXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbWVdPVwibWU/LnN1YlwiXG4gICAgICAgICAgICAgICAgICAgICAgW29iamVjdElkXT1cImV2ZW50LmlkXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvaHZ5LWNvbW1lbnRzPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX3Byb2NlZHVyZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fcHJvY2VkdXJlX19oZWFkZXJcIj5cbiAgICAgICAgICA8aDI+XG4gICAgICAgICAgICB7eyAoZXZlbnRzLmxlbmd0aCA9PT0gMSA/ICdAaHZ5LmV2ZW50LmxvZy5wcm9jZWR1cmUubmFtZTEnIDogJ0BodnkuZXZlbnQubG9nLnByb2NlZHVyZS5uYW1lJykgfCBpMThuIH19XG4gICAgICAgICAgPC9oMj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIEBpZiAocHJvY2VkdXJlKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX3Byb2NlZHVyZV9fZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICA8c3Bhbj57eyBwcm9jZWR1cmUubmFtZSB9fSZuYnNwOzo8L3NwYW4+XG4gICAgICAgICAgICAgIHt7IHByb2NlZHVyZS5kZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19wcm9jZWR1cmVfX3Byb2dyZXNzXCI+XG4gICAgICAgICAgICA8cD57eyAnQGh2eS5ldmVudC5sb2cucHJvY2VkdXJlLnByb2dyZXNzJyB8IGkxOG4gfX08L3A+XG4gICAgICAgICAgICA8aHZ5LXByb2dyZXNzLWRpc3BsYXkgW3Byb2dyZXNzXT1cImNhbGN1bGF0ZWRQcm9ncmVzc1wiPjwvaHZ5LXByb2dyZXNzLWRpc3BsYXk+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGh2eS1wcm9jZWR1cmUtYWN0aW9uc1xuICAgICAgICAgICAgW3Byb2NlZHVyZU1vZGlmaWNhdGlvbnNBY3Rpb25zXT1cInByb2NlZHVyZU1vZGlmaWNhdGlvbnM/LmFjdGlvbnNcIlxuICAgICAgICAgICAgW2luaXRpYWxBY3Rpb25zXSA9IHRoaXMuX3Byb2NlZHVyZT8uYWN0aW9uc1xuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5UHJvY2VkdXJlIHx8IHJlYWRvbmx5XCJcbiAgICAgICAgICAgIFtyZWFkT25seUNvbW1lbnRdPVwicmVhZE9ubHlDb21tZW50XCJcbiAgICAgICAgICAgIFtkaXNhYmxlU2F2ZURJQnV0dG9uXT1cImlzRXZlbnRNb2RpZmllZCgpXCJcbiAgICAgICAgICAgIFtlbmFibGVFZGl0QWN0aW9uc109XCJlbmFibGVFZGl0QWN0aW9uc1wiXG4gICAgICAgICAgICBbYWN0aW9uc109XCJwcm9jZWR1cmUuYWN0aW9uc1wiXG4gICAgICAgICAgICAobW9kaWZpZWQpPVwibW9kaWZpZWRBY3Rpb25zKCRldmVudClcIlxuICAgICAgICAgICAgKHJlZnJlc2hBY3Rpb25zKT1cInJlZnJlc2hBY3Rpb25zKCRldmVudClcIlxuICAgICAgICAgICAgW21lXT1cIm1lPy5zdWJcIlxuICAgICAgICAgICAgW2V2ZW50c109XCJ0aGlzLmV2ZW50c1wiXG4gICAgICAgICAgICAoY29tbWVudGVkKT1cImFjdGlvbkNvbW1lbnRlZCgkZXZlbnQpXCJcbiAgICAgICAgICA+PC9odnktcHJvY2VkdXJlLWFjdGlvbnM+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIEBpZiAoIXJlYWRvbmx5KSB7XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG4gYS1idG4tLXNlY29uZGFyeVwiIFtkaXNhYmxlZF09XCIhY2FuQXNzb2NpYXRlUHJvY2VkdXJlXCIgKGNsaWNrKT1cIm9wZW5Bc3NvY2lhdGlvbk1vZGFsKClcIj5cbiAgICAgICAgICAgICAge3sgJ0BodnkuYWN0aW9uLmFzc29jaWF0ZScgfCBpMThuIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fcHJvY2VkdXJlX19lbXB0eVwiPnt7ICdAaHZ5LmV2ZW50LmxvZy5wcm9jZWR1cmUubm9uZScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjY29uZmlybURpYWxvZz5cbiAgPGRpdlxuICAgIGNsYXNzPVwiby1odnktY2xvc2UtY29uZmlybV9fZGlhbG9nXCJcbiAgICBhcmlhLWxhYmVsbGVkYnk9XCJjb25maXJtXCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgICBpZD1cImNob2ljZVwiXG4gICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgYXJpYS1tb2RhbD1cInRydWVcIlxuICA+XG4gICAgPGgyPlxuICAgICAge3tcbiAgICAgICAgKGNoYW5nZVN0YXR1c0NvbnRleHQuZXZlbnRzLmxlbmd0aCA9PT0gMSA/ICdAaHZ5LmV2ZW50LmNsb3NlLm9uZVRpdGxlJyA6ICdAaHZ5LmV2ZW50LmNsb3NlLm11bHRpVGl0bGUnKSB8IGkxOG5cbiAgICAgIH19XG4gICAgPC9oMj5cbiAgICA8cD57eyAoY2hhbmdlU3RhdHVzQ29udGV4dC5ldmVudHMubGVuZ3RoID09PSAxID8gJ0BodnkuZXZlbnQuY2xvc2Uub25lJyA6ICdAaHZ5LmV2ZW50LmNsb3NlLm11bHRpJykgfCBpMThuIH19PC9wPlxuICAgIDx1bD5cbiAgICAgIEBmb3IgKGV2ZW50IG9mIGNoYW5nZVN0YXR1c0NvbnRleHQuZXZlbnRzOyB0cmFjayBldmVudC5pZCkge1xuICAgICAgICA8bGk+e3sgZXZlbnQubmFtZSB9fTwvbGk+XG4gICAgICB9XG4gICAgPC91bD5cbiAgICA8cCBjbGFzcz1cIm8taHZ5LWNsb3NlLWNvbmZpcm1fX2RpYWxvZ19fY29tbWVudC10aXRsZVwiPlxuICAgICAge3sgJ0BodnkuZXZlbnQuY2xvc2UuY29tbWVudCcgfCBpMThuIH19PHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+IDpcbiAgICA8L3A+XG4gICAgPGRpdiBjbGFzcz1cIm8taHZ5LWNsb3NlLWNvbmZpcm1fX2RpYWxvZ19fY29tbWVudFwiPlxuICAgICAgPHRleHRhcmVhIFsobmdNb2RlbCldPVwiY2hhbmdlU3RhdHVzQ29udGV4dC5jb21tZW50XCIgY2xhc3M9XCJhLWZvcm0tZmllbGRcIiBbbWF4TGVuZ3RoXT1cIjI1NVwiPjwvdGV4dGFyZWE+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm8taHZ5LWNsb3NlLWNvbmZpcm1fX2RpYWxvZ19fYWN0aW9uc1wiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCIgKGNsaWNrKT1cImNvbmZpcm1lZENsb3NlKClcIiBbZGlzYWJsZWRdPVwiY29uZmlybURpc2FibGVkKClcIj5cbiAgICAgICAge3sgJ0BodnkuYWN0aW9uLnZhbGlkYXRlJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIiAoY2xpY2spPVwidG9nZ2xlQ29uZmlybSgpXCI+e3sgJ0BodnkuYWN0aW9uLmNhbmNlbCcgfCBpMThuIH19PC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -1946,6 +1946,7 @@ class EventDetailComponent extends SubscriptionnerDirective {
|
|
|
1946
1946
|
this.setCreatorForEvents();
|
|
1947
1947
|
}
|
|
1948
1948
|
set events(events) {
|
|
1949
|
+
this.equipControls.clear();
|
|
1949
1950
|
this._events = events.filter((ev) => !!ev);
|
|
1950
1951
|
this.eventModifications = new Array(this._events.length);
|
|
1951
1952
|
if (this._events.length === 1) {
|
|
@@ -2318,6 +2319,11 @@ class EventDetailComponent extends SubscriptionnerDirective {
|
|
|
2318
2319
|
this.changeStatusContext.status = $event;
|
|
2319
2320
|
this.changeStatusContext.all = false;
|
|
2320
2321
|
this.toggleConfirm();
|
|
2322
|
+
if ($event === 'DONE') {
|
|
2323
|
+
this.equipControls.controls.forEach(control => {
|
|
2324
|
+
control.disable();
|
|
2325
|
+
});
|
|
2326
|
+
}
|
|
2321
2327
|
}
|
|
2322
2328
|
closeAll() {
|
|
2323
2329
|
this.changeStatusContext.all = true;
|