@dereekb/dbx-form 9.24.19 → 9.24.21

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.
@@ -13,7 +13,7 @@ export class DbxScheduleSelectionCalendarDateDaysComponent {
13
13
  constructor(dbxCalendarStore, dbxCalendarScheduleSelectionStore) {
14
14
  this.dbxCalendarStore = dbxCalendarStore;
15
15
  this.dbxCalendarScheduleSelectionStore = dbxCalendarScheduleSelectionStore;
16
- this.template$ = this.dbxCalendarScheduleSelectionStore.scheduleDays$.pipe(map(enabledDaysFromDateScheduleDayCodes), shareReplay());
16
+ this.template$ = this.dbxCalendarScheduleSelectionStore.scheduleDays$.pipe(map(enabledDaysFromDateScheduleDayCodes), shareReplay(1));
17
17
  this.isFormModified = (value) => {
18
18
  const newSetValue = new Set(dateScheduleDayCodesFromEnabledDays(value));
19
19
  return this.dbxCalendarScheduleSelectionStore.scheduleDays$.pipe(map((currentSet) => {
@@ -44,4 +44,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
44
44
  `
45
45
  }]
46
46
  }], ctorParameters: function () { return [{ type: i1.DbxCalendarStore }, { type: i2.DbxCalendarScheduleSelectionStore }]; } });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLmRheXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vY2FsZW5kYXIvc3JjL2xpYi9jYWxlbmRhci5zY2hlZHVsZS5zZWxlY3Rpb24uZGF5cy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUscUNBQXFDLEVBQUUsbUNBQW1DLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEosT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFN0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXhELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7O0FBVXhGLE1BQU0sT0FBTyw2Q0FBNkM7SUFheEQsWUFBcUIsZ0JBQWtDLEVBQVcsaUNBQW9FO1FBQWpILHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFBVyxzQ0FBaUMsR0FBakMsaUNBQWlDLENBQW1DO1FBWjdILGNBQVMsR0FBOEQsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLG1DQUFtQyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUUxTCxtQkFBYyxHQUFzRSxDQUFDLEtBQW9ELEVBQUUsRUFBRTtZQUNwSixNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxtQ0FBbUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLE9BQU8sSUFBSSxDQUFDLGlDQUFpQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQzlELEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO2dCQUNqQixNQUFNLE1BQU0sR0FBRyxDQUFDLHFDQUFxQyxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFDL0UsT0FBTyxNQUFNLENBQUM7WUFDaEIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUMsQ0FBQztRQUlPLHVCQUFrQixHQUF3RSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzNHLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxHQUFHLENBQUMsbUNBQW1DLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVHLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLENBQUMsQ0FBQztJQUx1SSxDQUFDOzsySUFiL0gsNkNBQTZDOytIQUE3Qyw2Q0FBNkMsaUZBTjlDOzs7O0dBSVQ7NEZBRVUsNkNBQTZDO2tCQVJ6RCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwyQ0FBMkM7b0JBQ3JELFFBQVEsRUFBRTs7OztHQUlUO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkYXRlU2NoZWR1bGVEYXlDb2Rlc0FyZVNldHNFcXVpdmFsZW50LCBkYXRlU2NoZWR1bGVEYXlDb2Rlc0Zyb21FbmFibGVkRGF5cywgZW5hYmxlZERheXNGcm9tRGF0ZVNjaGVkdWxlRGF5Q29kZXMgfSBmcm9tICdAZGVyZWVrYi9kYXRlJztcbmltcG9ydCB7IEhhbmRsZUFjdGlvbkZ1bmN0aW9uIH0gZnJvbSAnQGRlcmVla2IvZGJ4LWNvcmUnO1xuaW1wb3J0IHsgRGJ4Q2FsZW5kYXJTdG9yZSB9IGZyb20gJ0BkZXJlZWtiL2RieC13ZWIvY2FsZW5kYXInO1xuaW1wb3J0IHsgSXNNb2RpZmllZEZ1bmN0aW9uIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBtYXAsIHNoYXJlUmVwbGF5LCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGJ4U2NoZWR1bGVTZWxlY3Rpb25DYWxlbmRhckRhdGVEYXlzRm9ybVZhbHVlIH0gZnJvbSAnLi9jYWxlbmRhci5zY2hlZHVsZS5zZWxlY3Rpb24uZGF5cy5mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUgfSBmcm9tICcuL2NhbGVuZGFyLnNjaGVkdWxlLnNlbGVjdGlvbi5zdG9yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RieC1zY2hlZHVsZS1zZWxlY3Rpb24tY2FsZW5kYXItZGF0ZS1kYXlzJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiZGJ4LXNjaGVkdWxlLXNlbGVjdGlvbi1jYWxlbmRhci1kYXRlLWRheXNcIiBkYnhBY3Rpb24gZGJ4QWN0aW9uQXV0b1RyaWdnZXIgZGJ4QWN0aW9uRW5mb3JjZU1vZGlmaWVkIFtpbnN0YW50VHJpZ2dlcl09XCJ0cnVlXCIgW2RieEFjdGlvbkhhbmRsZXJdPVwidXBkYXRlU2NoZWR1bGVEYXlzXCI+XG4gICAgICA8ZGJ4LXNjaGVkdWxlLXNlbGVjdGlvbi1jYWxlbmRhci1kYXRlLWRheXMtZm9ybSBkYnhBY3Rpb25Gb3JtIFtkYnhGb3JtU291cmNlXT1cInRlbXBsYXRlJFwiIFtkYnhBY3Rpb25Gb3JtTW9kaWZpZWRdPVwiaXNGb3JtTW9kaWZpZWRcIj48L2RieC1zY2hlZHVsZS1zZWxlY3Rpb24tY2FsZW5kYXItZGF0ZS1kYXlzLWZvcm0+XG4gICAgPC9kaXY+XG4gIGBcbn0pXG5leHBvcnQgY2xhc3MgRGJ4U2NoZWR1bGVTZWxlY3Rpb25DYWxlbmRhckRhdGVEYXlzQ29tcG9uZW50IHtcbiAgcmVhZG9ubHkgdGVtcGxhdGUkOiBPYnNlcnZhYmxlPERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJEYXRlRGF5c0Zvcm1WYWx1ZT4gPSB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5zY2hlZHVsZURheXMkLnBpcGUobWFwKGVuYWJsZWREYXlzRnJvbURhdGVTY2hlZHVsZURheUNvZGVzKSwgc2hhcmVSZXBsYXkoKSk7XG5cbiAgcmVhZG9ubHkgaXNGb3JtTW9kaWZpZWQ6IElzTW9kaWZpZWRGdW5jdGlvbjxEYnhTY2hlZHVsZVNlbGVjdGlvbkNhbGVuZGFyRGF0ZURheXNGb3JtVmFsdWU+ID0gKHZhbHVlOiBEYnhTY2hlZHVsZVNlbGVjdGlvbkNhbGVuZGFyRGF0ZURheXNGb3JtVmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdTZXRWYWx1ZSA9IG5ldyBTZXQoZGF0ZVNjaGVkdWxlRGF5Q29kZXNGcm9tRW5hYmxlZERheXModmFsdWUpKTtcbiAgICByZXR1cm4gdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUuc2NoZWR1bGVEYXlzJC5waXBlKFxuICAgICAgbWFwKChjdXJyZW50U2V0KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9ICFkYXRlU2NoZWR1bGVEYXlDb2Rlc0FyZVNldHNFcXVpdmFsZW50KG5ld1NldFZhbHVlLCBjdXJyZW50U2V0KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pXG4gICAgKTtcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBkYnhDYWxlbmRhclN0b3JlOiBEYnhDYWxlbmRhclN0b3JlLCByZWFkb25seSBkYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmU6IERieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZSkge31cblxuICByZWFkb25seSB1cGRhdGVTY2hlZHVsZURheXM6IEhhbmRsZUFjdGlvbkZ1bmN0aW9uPERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJEYXRlRGF5c0Zvcm1WYWx1ZT4gPSAodmFsdWUpID0+IHtcbiAgICB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5zZXRTY2hlZHVsZURheXMobmV3IFNldChkYXRlU2NoZWR1bGVEYXlDb2Rlc0Zyb21FbmFibGVkRGF5cyh2YWx1ZSkpKTtcbiAgICByZXR1cm4gb2YodHJ1ZSk7XG4gIH07XG59XG4iXX0=
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLmRheXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vY2FsZW5kYXIvc3JjL2xpYi9jYWxlbmRhci5zY2hlZHVsZS5zZWxlY3Rpb24uZGF5cy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUscUNBQXFDLEVBQUUsbUNBQW1DLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEosT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFN0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXhELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7O0FBVXhGLE1BQU0sT0FBTyw2Q0FBNkM7SUFheEQsWUFBcUIsZ0JBQWtDLEVBQVcsaUNBQW9FO1FBQWpILHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFBVyxzQ0FBaUMsR0FBakMsaUNBQWlDLENBQW1DO1FBWjdILGNBQVMsR0FBOEQsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLG1DQUFtQyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFM0wsbUJBQWMsR0FBc0UsQ0FBQyxLQUFvRCxFQUFFLEVBQUU7WUFDcEosTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQUMsbUNBQW1DLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN4RSxPQUFPLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUM5RCxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtnQkFDakIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxxQ0FBcUMsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBQy9FLE9BQU8sTUFBTSxDQUFDO1lBQ2hCLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDLENBQUM7UUFJTyx1QkFBa0IsR0FBd0UsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUMzRyxJQUFJLENBQUMsaUNBQWlDLENBQUMsZUFBZSxDQUFDLElBQUksR0FBRyxDQUFDLG1DQUFtQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1RyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQixDQUFDLENBQUM7SUFMdUksQ0FBQzs7MklBYi9ILDZDQUE2QzsrSEFBN0MsNkNBQTZDLGlGQU45Qzs7OztHQUlUOzRGQUVVLDZDQUE2QztrQkFSekQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMkNBQTJDO29CQUNyRCxRQUFRLEVBQUU7Ozs7R0FJVDtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZGF0ZVNjaGVkdWxlRGF5Q29kZXNBcmVTZXRzRXF1aXZhbGVudCwgZGF0ZVNjaGVkdWxlRGF5Q29kZXNGcm9tRW5hYmxlZERheXMsIGVuYWJsZWREYXlzRnJvbURhdGVTY2hlZHVsZURheUNvZGVzIH0gZnJvbSAnQGRlcmVla2IvZGF0ZSc7XG5pbXBvcnQgeyBIYW5kbGVBY3Rpb25GdW5jdGlvbiB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IERieENhbGVuZGFyU3RvcmUgfSBmcm9tICdAZGVyZWVrYi9kYngtd2ViL2NhbGVuZGFyJztcbmltcG9ydCB7IElzTW9kaWZpZWRGdW5jdGlvbiB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgbWFwLCBzaGFyZVJlcGxheSwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJEYXRlRGF5c0Zvcm1WYWx1ZSB9IGZyb20gJy4vY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLmRheXMuZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlIH0gZnJvbSAnLi9jYWxlbmRhci5zY2hlZHVsZS5zZWxlY3Rpb24uc3RvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYngtc2NoZWR1bGUtc2VsZWN0aW9uLWNhbGVuZGFyLWRhdGUtZGF5cycsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImRieC1zY2hlZHVsZS1zZWxlY3Rpb24tY2FsZW5kYXItZGF0ZS1kYXlzXCIgZGJ4QWN0aW9uIGRieEFjdGlvbkF1dG9UcmlnZ2VyIGRieEFjdGlvbkVuZm9yY2VNb2RpZmllZCBbaW5zdGFudFRyaWdnZXJdPVwidHJ1ZVwiIFtkYnhBY3Rpb25IYW5kbGVyXT1cInVwZGF0ZVNjaGVkdWxlRGF5c1wiPlxuICAgICAgPGRieC1zY2hlZHVsZS1zZWxlY3Rpb24tY2FsZW5kYXItZGF0ZS1kYXlzLWZvcm0gZGJ4QWN0aW9uRm9ybSBbZGJ4Rm9ybVNvdXJjZV09XCJ0ZW1wbGF0ZSRcIiBbZGJ4QWN0aW9uRm9ybU1vZGlmaWVkXT1cImlzRm9ybU1vZGlmaWVkXCI+PC9kYngtc2NoZWR1bGUtc2VsZWN0aW9uLWNhbGVuZGFyLWRhdGUtZGF5cy1mb3JtPlxuICAgIDwvZGl2PlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJEYXRlRGF5c0NvbXBvbmVudCB7XG4gIHJlYWRvbmx5IHRlbXBsYXRlJDogT2JzZXJ2YWJsZTxEYnhTY2hlZHVsZVNlbGVjdGlvbkNhbGVuZGFyRGF0ZURheXNGb3JtVmFsdWU+ID0gdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUuc2NoZWR1bGVEYXlzJC5waXBlKG1hcChlbmFibGVkRGF5c0Zyb21EYXRlU2NoZWR1bGVEYXlDb2RlcyksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBpc0Zvcm1Nb2RpZmllZDogSXNNb2RpZmllZEZ1bmN0aW9uPERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJEYXRlRGF5c0Zvcm1WYWx1ZT4gPSAodmFsdWU6IERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJEYXRlRGF5c0Zvcm1WYWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld1NldFZhbHVlID0gbmV3IFNldChkYXRlU2NoZWR1bGVEYXlDb2Rlc0Zyb21FbmFibGVkRGF5cyh2YWx1ZSkpO1xuICAgIHJldHVybiB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5zY2hlZHVsZURheXMkLnBpcGUoXG4gICAgICBtYXAoKGN1cnJlbnRTZXQpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gIWRhdGVTY2hlZHVsZURheUNvZGVzQXJlU2V0c0VxdWl2YWxlbnQobmV3U2V0VmFsdWUsIGN1cnJlbnRTZXQpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSlcbiAgICApO1xuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGRieENhbGVuZGFyU3RvcmU6IERieENhbGVuZGFyU3RvcmUsIHJlYWRvbmx5IGRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZTogRGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlKSB7fVxuXG4gIHJlYWRvbmx5IHVwZGF0ZVNjaGVkdWxlRGF5czogSGFuZGxlQWN0aW9uRnVuY3Rpb248RGJ4U2NoZWR1bGVTZWxlY3Rpb25DYWxlbmRhckRhdGVEYXlzRm9ybVZhbHVlPiA9ICh2YWx1ZSkgPT4ge1xuICAgIHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLnNldFNjaGVkdWxlRGF5cyhuZXcgU2V0KGRhdGVTY2hlZHVsZURheUNvZGVzRnJvbUVuYWJsZWREYXlzKHZhbHVlKSkpO1xuICAgIHJldHVybiBvZih0cnVlKTtcbiAgfTtcbn1cbiJdfQ==
@@ -595,4 +595,4 @@ export function computeCalendarScheduleSelectionDateBlockRange(state) {
595
595
  return undefined;
596
596
  }
597
597
  }
598
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLnN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vY2FsZW5kYXIvc3JjL2xpYi9jYWxlbmRhci5zY2hlZHVsZS5zZWxlY3Rpb24uc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBRUwseUJBQXlCLEVBR3pCLDBCQUEwQixFQUcxQixzQkFBc0IsRUFDdEIsZ0NBQWdDLEVBRWhDLG1CQUFtQixFQUNuQix1QkFBdUIsRUFJdkIsOEJBQThCLEVBQzlCLDBCQUEwQixFQUMxQix3Q0FBd0MsRUFDeEMsV0FBVyxFQUNYLFdBQVcsRUFDWCx5QkFBeUIsRUFFekIsa0NBQWtDLEVBQ2xDLFVBQVUsRUFDVixhQUFhLEVBQ2IsZUFBZSxFQUNmLHVCQUF1QixFQUV2QixtQ0FBbUMsRUFDbkMsbUJBQW1CLEVBQ25CLDJCQUEyQixFQUMzQixxQkFBcUIsRUFFckIsdUJBQXVCLEVBR3ZCLHdCQUF3QixFQUV4QixxQ0FBcUMsRUFFckMsNEJBQTRCLEVBQzVCLDJCQUEyQixFQUM1QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsK0JBQStCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBNEQsZUFBZSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsaUNBQWlDLEVBQVksZUFBZSxFQUFnQyxLQUFLLEVBQXNCLE1BQU0sRUFBRSxXQUFXLEVBQWdCLGFBQWEsRUFBdUMsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9WLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDMUQsT0FB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QkFBb0I7UUFDcEIsS0FBSyxJQUFJLENBQUMsR0FBRyxZQUFZLEVBQUUsQ0FBQyxJQUFJLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3RELElBQUksa0JBQWtCLENBQUMsQ0FBQyxDQUFDLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUM1QyxRQUFRLEdBQUcsQ0FBQyxDQUFDO2dCQUNiLE1BQU07YUFDUDtTQUNGO0tBQ0Y7SUFFRCxJQUFJLFVBQVUsSUFBSSxJQUFJLElBQUksUUFBUSxJQUFJLElBQUksRUFBRTtRQUMxQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUM7S0FDeEM7U0FBTTtRQUNMLE9BQU8sU0FBUyxDQUFDO0tBQ2xCO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIERhdGVCbG9ja0RheU9mV2Vla0ZhY3RvcnksXG4gIGRhdGVCbG9ja0RheU9mV2Vla0ZhY3RvcnksXG4gIERhdGVCbG9ja0luZGV4LFxuICBEYXRlQmxvY2tSYW5nZVdpdGhSYW5nZSxcbiAgZGF0ZUJsb2NrVGltaW5nRGF0ZUZhY3RvcnksXG4gIERhdGVPckRhdGVCbG9ja0luZGV4LFxuICBEYXRlUmFuZ2UsXG4gIGRhdGVTY2hlZHVsZURhdGVGaWx0ZXIsXG4gIGNvcHlEYXRlU2NoZWR1bGVEYXRlRmlsdGVyQ29uZmlnLFxuICBEYXRlU2NoZWR1bGVEYXRlRmlsdGVyQ29uZmlnLFxuICBEYXRlU2NoZWR1bGVEYXlDb2RlLFxuICBkYXRlU2NoZWR1bGVFbmNvZGVkV2VlayxcbiAgRGF0ZVNjaGVkdWxlRW5jb2RlZFdlZWssXG4gIERhdGVTY2hlZHVsZVJhbmdlLFxuICBEYXRlVGltaW5nUmVsYXRpdmVJbmRleEZhY3RvcnksXG4gIGRhdGVUaW1pbmdSZWxhdGl2ZUluZGV4RmFjdG9yeSxcbiAgZXhwYW5kRGF0ZVNjaGVkdWxlRGF5Q29kZXMsXG4gIGV4cGFuZERhdGVTY2hlZHVsZURheUNvZGVzVG9EYXlPZldlZWtTZXQsXG4gIGZpbmRNYXhEYXRlLFxuICBmaW5kTWluRGF0ZSxcbiAgaXNEYXRlSW5EYXRlUmFuZ2VGdW5jdGlvbixcbiAgSXNEYXRlV2l0aGluRGF0ZUJsb2NrUmFuZ2VGdW5jdGlvbixcbiAgaXNEYXRlV2l0aGluRGF0ZUJsb2NrUmFuZ2VGdW5jdGlvbixcbiAgaXNTYW1lRGF0ZSxcbiAgaXNTYW1lRGF0ZURheSxcbiAgaXNTYW1lRGF0ZVJhbmdlLFxuICBpc1NhbWVEYXRlU2NoZWR1bGVSYW5nZSxcbiAgRGF0ZU9yRGF0ZVJhbmdlT3JEYXRlQmxvY2tJbmRleE9yRGF0ZUJsb2NrUmFuZ2UsXG4gIGRhdGVUaW1pbmdSZWxhdGl2ZUluZGV4QXJyYXlGYWN0b3J5LFxuICBpc0luZmluaXRlRGF0ZVJhbmdlLFxuICBjb3B5SG91cnNBbmRNaW51dGVzRnJvbURhdGUsXG4gIGRhdGVUaW1lem9uZVV0Y05vcm1hbCxcbiAgRGF0ZVRpbWV6b25lVXRjTm9ybWFsSW5zdGFuY2UsXG4gIGV4cGFuZERhdGVTY2hlZHVsZVJhbmdlLFxuICBEYXRlQmxvY2ssXG4gIERhdGVCbG9ja0R1cmF0aW9uU3BhbixcbiAgZm9ybWF0VG9JU084NjAxRGF5U3RyaW5nLFxuICBEYXRlVGltaW5nUmVsYXRpdmVJbmRleEZhY3RvcnlJbnB1dCxcbiAgZGF0ZVNjaGVkdWxlRGF5Q29kZXNBcmVTZXRzRXF1aXZhbGVudCxcbiAgZGF0ZVNjaGVkdWxlRGF5Q29kZXNTZXRGcm9tRGF5c09mV2VlayxcbiAgc2ltcGxpZnlEYXRlU2NoZWR1bGVEYXlDb2RlcyxcbiAgZnVsbFdlZWtEYXlTY2hlZHVsZURheUNvZGVzXG59IGZyb20gJ0BkZXJlZWtiL2RhdGUnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbEhhc0RpZmZlcmVudFZhbHVlcywgZmlsdGVyTWF5YmUgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IE1heWJlLCBUaW1lem9uZVN0cmluZywgRGVjaXNpb25GdW5jdGlvbiwgSXRlcmFibGVPclZhbHVlLCBpdGVyYWJsZVRvQXJyYXksIGFkZFRvU2V0LCB0b2dnbGVJblNldCwgaXNJbmRleE51bWJlckluSW5kZXhSYW5nZUZ1bmN0aW9uLCBNYXliZU1hcCwgbWluQW5kTWF4TnVtYmVyLCBzZXRzQXJlRXF1aXZhbGVudCwgRGF5T2ZXZWVrLCByYW5nZSwgQWxsT3JOb25lU2VsZWN0aW9uLCB1bmlxdWUsIG1lcmdlQXJyYXlzLCBBcnJheU9yVmFsdWUsIHJlbW92ZUZyb21TZXQsIElTTzg2MDFEYXlTdHJpbmcsIGZpbHRlclZhbHVlc1RvU2V0LCBtYXBWYWx1ZXNUb1NldCB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgQ29tcG9uZW50U3RvcmUgfSBmcm9tICdAbmdyeC9jb21wb25lbnQtc3RvcmUnO1xuaW1wb3J0IHsgc3RhcnRPZkRheSwgZW5kT2ZEYXksIGlzQmVmb3JlIH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCwgdGFwLCBmaXJzdCwgY29tYmluZUxhdGVzdFdpdGgsIG9mLCBzY2hlZHVsZWQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25DZWxsQ29udGVudEZhY3RvcnksIENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25WYWx1ZSwgZGVmYXVsdENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25DZWxsQ29udGVudEZhY3RvcnkgfSBmcm9tICcuL2NhbGVuZGFyLnNjaGVkdWxlLnNlbGVjdGlvbic7XG5pbXBvcnQgZXhwIGZyb20gJ2NvbnN0YW50cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvbklucHV0RGF0ZVJhbmdlIHtcbiAgLyoqXG4gICAqIElucHV0IFN0YXJ0IERhdGVcbiAgICovXG4gIGlucHV0U3RhcnQ6IERhdGU7XG4gIC8qKlxuICAgKiBJbnB1dCBFbmQgRGF0ZVxuICAgKi9cbiAgaW5wdXRFbmQ6IERhdGU7XG59XG5cbmV4cG9ydCB0eXBlIFBhcnRpYWxDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uSW5wdXREYXRlUmFuZ2UgPSBQYXJ0aWFsPE1heWJlTWFwPENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25JbnB1dERhdGVSYW5nZT4+O1xuXG5leHBvcnQgaW50ZXJmYWNlIENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSBleHRlbmRzIFBhcnRpYWxDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uSW5wdXREYXRlUmFuZ2Uge1xuICAvKipcbiAgICogUmVhZG9ubHkgc3RhdGUgb2YgdGhlIHZpZXcuXG4gICAqXG4gICAqIERvZXMgbm90IGFmZmVjdCBzdGF0ZSBjaGFuZ2VzIGRpcmVjdGx5LCBidXQgaW5zdGVhZCBhY3RzIGFzIGEgZmxhZyBmb3IgdGhlIHBhcmVudCB2aWV3IHRvIHNldCBhbmQgdGhlIGNvbnN1bWluZyB2aWV3cyB0byB1cGRhdGUgb24uXG4gICAqL1xuICBpc1ZpZXdSZWFkb25seT86IE1heWJlPGJvb2xlYW4+O1xuICAvKipcbiAgICogU2V0IG9mIHRoZSBkYXlzIG9mIHdlZWsgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LlxuICAgKi9cbiAgZGVmYXVsdFNjaGVkdWxlRGF5czogU2V0PERhdGVTY2hlZHVsZURheUNvZGU+O1xuICAvKipcbiAgICogRmlsdGVycyB0aGUgZGF5cyBvZiB0aGUgc2NoZWR1bGUgdG8gb25seSBhbGxvdyBzZWxlY3RpbmcgZGF5cyBpbiB0aGUgc2NoZWR1bGUuXG4gICAqXG4gICAqIElmIGZpbHRlci5zdGFydCBpcyBwcm92aWRlZCwgdGhlbiB0aGUgdGltZXpvbmUgaXMgaWdub3JlZCwgaWYgb25lIGlzIHByZXNlbnQuXG4gICAqL1xuICBmaWx0ZXI/OiBNYXliZTxEYXRlU2NoZWR1bGVEYXRlRmlsdGVyQ29uZmlnPjtcbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZXhjbHVzaW9ucyB0aGF0IG1heSBub3QgYmUgZGVmaW5lZCB3aXRoaW4gdGhlIGZpbHRlci5cbiAgICovXG4gIGlucHV0RXhjbHVzaW9ucz86IE1heWJlPEFycmF5T3JWYWx1ZTxEYXRlT3JEYXRlUmFuZ2VPckRhdGVCbG9ja0luZGV4T3JEYXRlQmxvY2tSYW5nZT4+O1xuICAvKipcbiAgICogVGhlIGNvbXB1dGVkIGV4Y2x1c2lvbnMgZ2l2ZW4gdGhlIGlucHV0IGV4Y2x1c2lvbnMuXG4gICAqL1xuICBjb21wdXRlZEV4Y2x1c2lvbnM/OiBNYXliZTxEYXRlQmxvY2tJbmRleFtdPjtcbiAgLyoqXG4gICAqIFRoZSBtaW4vbWF4IGRhdGUgcmFuZ2UuIFVzZWQgZm9yIHJlc3RyaWN0aW5nIHRoZSBtaW4vbWF4IHZhbHVlLiBXb3JrcyB3aXRoIHRoZSBmaWx0ZXIuIFRoZSBncmVhdGVyL2xlc3NlciBvZiB0aGUgc3RhcnQvZW5kIGRhdGVzIGFyZSB1c2VkIGlmIGJvdGggYXJlIHByb3ZpZGVkLlxuICAgKi9cbiAgbWluTWF4RGF0ZVJhbmdlPzogTWF5YmU8UGFydGlhbDxEYXRlUmFuZ2U+PjtcbiAgLyoqXG4gICAqIFN0YXJ0IGRhdGUuIElzIHVwZGF0ZWQgYXMgdGhlIGlucHV0U3RhcnQgaXMgbW9kaWZpZWQgb3IgZmlsdGVyIGlzIHByb3ZpZGVkIHRoYXQgcHJvdmlkZXMgdGhlIHN0YXJ0IGRhdGUuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIHRvZGF5IGFuZCB0aGUgY3VycmVudCB0aW1lem9uZS5cbiAgICovXG4gIHN0YXJ0OiBEYXRlO1xuICAvKipcbiAgICogVGltZXpvbmUgdG8gdXNlLiBPbmx5SW5mbHVlbmNlcyB0aGUgb3V0cHV0IHN0YXJ0IGRhdGUuXG4gICAqL1xuICB0aW1lem9uZT86IE1heWJlPFRpbWV6b25lU3RyaW5nPjtcbiAgLyoqXG4gICAqIEN1cnJlbnQgdGltZXpvbmUgbm9ybWFsIHdpdGggdGhlIGN1cnJlbnQgdGltZXpvbmUuXG4gICAqL1xuICB0aW1lem9uZU5vcm1hbD86IE1heWJlPERhdGVUaW1lem9uZVV0Y05vcm1hbEluc3RhbmNlPjtcbiAgLyoqXG4gICAqIERhdGVUaW1pbmdSZWxhdGl2ZUluZGV4RmFjdG9yeVxuICAgKi9cbiAgaW5kZXhGYWN0b3J5OiBEYXRlVGltaW5nUmVsYXRpdmVJbmRleEZhY3Rvcnk7XG4gIC8qKlxuICAgKiBBcnJheSBvZiBtYW51YWxseSBzZWxlY3RlZCBkYXRlcyB3aXRoaW4gdGhlIHBpY2tlZCByYW5nZS4gVGhpcyBpcyBOT1QgdGhlIHNldCBvZiBhbGwgc2VsZWN0ZWQgaW5kZXhlcyBpbiB0ZXJtcyBvZiBvdXRwdXQuXG4gICAqXG4gICAqIFZhbHVlcyB0aGF0IGV4aXN0IG91dHNpZGUgb2YgdGhlIFwiaW5wdXRcIiByYW5nZSBhcmUgY29uc2lkZXJlZCB0b2dnbGVkIG9uLCB3aGlsZSB0aG9zZVxuICAgKiB0aGF0IGFyZSBzZWxlY3RlZCB3aXRoaW4gdGhlIHJhbmdlIGFyZSBjb25zaWRlcmVkIHRvZ2dsZWQgb2ZmLlxuICAgKlxuICAgKiBJZiBkYXRlcyBhcmUgc2VsZWN0ZWQsIGFuZCB0aGVuIGEgcmFuZ2UgaXMgc2VsZWN0ZWQsIHRoZW4gdGhvc2UgZGF0ZXMgd2l0aGluIHRoZSByYW5nZSB0aGF0IGZhbGxcbiAgICogd2l0aGluIHRoZSByYW5nZSBhcmUgY2xlYXJlZCBmcm9tIHNlbGVjdGlvbi5cbiAgICpcbiAgICogVGhlc2UgaW5kZXhlcyBhcmUgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IGRhdGUuXG4gICAqL1xuICB0b2dnbGVkSW5kZXhlczogU2V0PERhdGVCbG9ja0luZGV4PjtcbiAgLyoqXG4gICAqIERheXMgb2YgdGhlIHNjaGVkdWxlIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUgcGlja2VkLiBJZiBub3QgZGVmaW5lZCwgZGVmYXVsdHMgdG8gZGVmYXVsdFNjaGVkdWxlRGF5cy5cbiAgICovXG4gIHNjaGVkdWxlRGF5cz86IE1heWJlPFNldDxEYXRlU2NoZWR1bGVEYXlDb2RlPj47XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBEYXRlU2NoZWR1bGVEYXlDb2RlIHZhbHVlLlxuICAgKi9cbiAgZWZmZWN0aXZlU2NoZWR1bGVEYXlzOiBTZXQ8RGF0ZVNjaGVkdWxlRGF5Q29kZT47XG4gIC8qKlxuICAgKiBTZXQgb2YgdGhlIGRheXMgb2Ygd2VlayB0aGF0IGFyZSBhbGxvd2VkLiBEZXJpdmVkIGZyb20gdGhlIGN1cnJlbnQgc2NoZWR1bGUgZGF5cyB2YWx1ZS5cbiAgICovXG4gIGFsbG93ZWREYXlzT2ZXZWVrOiBTZXQ8RGF5T2ZXZWVrPjtcbiAgLyoqXG4gICAqXG4gICAqL1xuICBpbmRleERheU9mV2VlazogRGF0ZUJsb2NrRGF5T2ZXZWVrRmFjdG9yeTtcbiAgLyoqXG4gICAqIERlY2lzaW9uIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0cnVlIGlmIGEgdmFsdWUgaXMgZW5hYmxlZCBnaXZlbiB0aGUgY3VycmVudCBmaWx0ZXIuXG4gICAqL1xuICBpc0VuYWJsZWRGaWx0ZXJEYXk6IERlY2lzaW9uRnVuY3Rpb248RGF0ZVRpbWluZ1JlbGF0aXZlSW5kZXhGYWN0b3J5SW5wdXQ+O1xuICAvKipcbiAgICogRGVjaXNpb24gZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRydWUgaWYgYSB2YWx1ZSBpcyBlbmFibGVkLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHRha2UgdGhlIGN1cnJlbnQgZmlsdGVyIGludG8gYWNjb3VudC5cbiAgICovXG4gIGlzRW5hYmxlZERheTogRGVjaXNpb25GdW5jdGlvbjxEYXRlVGltaW5nUmVsYXRpdmVJbmRleEZhY3RvcnlJbnB1dD47XG4gIC8qKlxuICAgKiBDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uQ2VsbENvbnRlbnRGYWN0b3J5IGZvciB0aGUgdmlldy5cbiAgICovXG4gIGNlbGxDb250ZW50RmFjdG9yeTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvbkNlbGxDb250ZW50RmFjdG9yeTtcbiAgLyoqXG4gICAqIEN1cnJlbnQgc2VsZWN0aW9uIHZhbHVlLlxuICAgKi9cbiAgY3VycmVudFNlbGVjdGlvblZhbHVlPzogTWF5YmU8Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblZhbHVlPjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIHVzZSB0aGUgZmlsdGVyIGFzIHRoZSBzdGFydCBhbmQgZW5kIHJhbmdlIGluc3RlYWQgb2Ygb3B0aW1pemluZyBmb3IgdGhlIGN1cnJlbnQgaW5kZXguXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIHRydWUuXG4gICAqL1xuICBjb21wdXRlU2VsZWN0aW9uUmVzdWx0UmVsYXRpdmVUb0ZpbHRlcj86IE1heWJlPGJvb2xlYW4+O1xuICAvKipcbiAgICogVGhlIGluaXRpYWwgc2VsZWN0aW9uIHN0YXRlIHdoZW4gdGhlIGNhbGVuZGFyIGlzIHJlc2V0LlxuICAgKi9cbiAgaW5pdGlhbFNlbGVjdGlvblN0YXRlPzogTWF5YmU8QWxsT3JOb25lU2VsZWN0aW9uPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUoKTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlIHtcbiAgY29uc3QgZGVmYXVsdFNjaGVkdWxlRGF5cyA9IG5ldyBTZXQoW0RhdGVTY2hlZHVsZURheUNvZGUuV0VFS0RBWSwgRGF0ZVNjaGVkdWxlRGF5Q29kZS5XRUVLRU5EXSk7XG4gIGNvbnN0IGFsbG93ZWREYXlzT2ZXZWVrID0gZXhwYW5kRGF0ZVNjaGVkdWxlRGF5Q29kZXNUb0RheU9mV2Vla1NldChkZWZhdWx0U2NoZWR1bGVEYXlzKTtcbiAgY29uc3Qgc3RhcnQgPSBzdGFydE9mRGF5KG5ldyBEYXRlKCkpO1xuICBjb25zdCBpbmRleEZhY3RvcnkgPSBkYXRlVGltaW5nUmVsYXRpdmVJbmRleEZhY3RvcnkoeyBzdGFydCB9KTtcbiAgY29uc3QgaW5kZXhEYXlPZldlZWsgPSBkYXRlQmxvY2tEYXlPZldlZWtGYWN0b3J5KHN0YXJ0KTtcblxuICByZXR1cm4ge1xuICAgIHN0YXJ0LFxuICAgIGluZGV4RmFjdG9yeSxcbiAgICB0b2dnbGVkSW5kZXhlczogbmV3IFNldCgpLFxuICAgIGRlZmF1bHRTY2hlZHVsZURheXMsXG4gICAgZWZmZWN0aXZlU2NoZWR1bGVEYXlzOiBkZWZhdWx0U2NoZWR1bGVEYXlzLFxuICAgIGFsbG93ZWREYXlzT2ZXZWVrLFxuICAgIGluZGV4RGF5T2ZXZWVrLFxuICAgIGlzRW5hYmxlZEZpbHRlckRheTogKCkgPT4gdHJ1ZSxcbiAgICBpc0VuYWJsZWREYXk6ICgpID0+IGZhbHNlLFxuICAgIGNvbXB1dGVTZWxlY3Rpb25SZXN1bHRSZWxhdGl2ZVRvRmlsdGVyOiB0cnVlLFxuICAgIGNlbGxDb250ZW50RmFjdG9yeTogZGVmYXVsdENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25DZWxsQ29udGVudEZhY3RvcnlcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGVuZGFyU2NoZWR1bGVNaW5EYXRlKHg6IFBpY2s8Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlLCAnZmlsdGVyJyB8ICdtaW5NYXhEYXRlUmFuZ2UnPik6IE1heWJlPERhdGU+IHtcbiAgcmV0dXJuIGZpbmRNYXhEYXRlKFt4LmZpbHRlcj8uc3RhcnQsIHgubWluTWF4RGF0ZVJhbmdlPy5zdGFydF0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FsZW5kYXJTY2hlZHVsZU1heERhdGUoeDogUGljazxDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUsICdmaWx0ZXInIHwgJ21pbk1heERhdGVSYW5nZSc+KTogTWF5YmU8RGF0ZT4ge1xuICByZXR1cm4gZmluZE1pbkRhdGUoW3guZmlsdGVyPy5lbmQsIHgubWluTWF4RGF0ZVJhbmdlPy5lbmRdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGVuZGFyU2NoZWR1bGVNaW5BbmRNYXhEYXRlUmFuZ2UoeDogUGljazxDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUsICdmaWx0ZXInIHwgJ21pbk1heERhdGVSYW5nZSc+KTogUGFydGlhbDxEYXRlUmFuZ2U+IHtcbiAgcmV0dXJuIHtcbiAgICBzdGFydDogY2FsZW5kYXJTY2hlZHVsZU1pbkRhdGUoeCkgfHwgdW5kZWZpbmVkLFxuICAgIGVuZDogY2FsZW5kYXJTY2hlZHVsZU1heERhdGUoeCkgfHwgdW5kZWZpbmVkXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWxlbmRhclNjaGVkdWxlU3RhcnRCZWluZ1VzZWRGcm9tRmlsdGVyKHg6IFBpY2s8Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlLCAnZmlsdGVyJyB8ICdjb21wdXRlU2VsZWN0aW9uUmVzdWx0UmVsYXRpdmVUb0ZpbHRlcic+KSB7XG4gIHJldHVybiB4LmNvbXB1dGVTZWxlY3Rpb25SZXN1bHRSZWxhdGl2ZVRvRmlsdGVyICYmIHguZmlsdGVyPy5zdGFydCAhPSBudWxsO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlIGV4dGVuZHMgQ29tcG9uZW50U3RvcmU8Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlPiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGluaXRpYWxDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUoKSk7XG4gIH1cblxuICAvLyBNQVJLOlxuICByZWFkb25seSB0b2dnbGVTZWxlY3Rpb24gPSB0aGlzLmVmZmVjdCgoaW5wdXQ6IE9ic2VydmFibGU8dm9pZD4pID0+IHtcbiAgICByZXR1cm4gaW5wdXQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICB0aGlzLm5leHRUb2dnbGVTZWxlY3Rpb24kLnBpcGUoXG4gICAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgICBmaWx0ZXJNYXliZSgpLFxuICAgICAgICAgIHRhcCgoeCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RBbGxEYXRlcyh4KTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgfSk7XG5cbiAgLy8gTUFSSzogQWNjZXNzb3JzXG4gIHJlYWRvbmx5IGZpbHRlciQgPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5maWx0ZXIpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBtaW5NYXhEYXRlUmFuZ2UkID0gdGhpcy5zdGF0ZSQucGlwZShtYXAoY2FsZW5kYXJTY2hlZHVsZU1pbkFuZE1heERhdGVSYW5nZSksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKGlzU2FtZURhdGVSYW5nZSksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBtaW5EYXRlJCA9IHRoaXMubWluTWF4RGF0ZVJhbmdlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geD8uc3RhcnQpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKGlzU2FtZURhdGVEYXkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG4gIHJlYWRvbmx5IG1heERhdGUkID0gdGhpcy5taW5NYXhEYXRlUmFuZ2UkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4Py5lbmQpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKGlzU2FtZURhdGVEYXkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgaGFzQ29uZmlndXJlZE1pbk1heFJhbmdlJCA9IHRoaXMubWluTWF4RGF0ZVJhbmdlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geCAhPSBudWxsICYmIHguc3RhcnQgIT0gbnVsbCAmJiB4LmVuZCAhPSBudWxsKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgaW5wdXRTdGFydCQgPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5pbnB1dFN0YXJ0KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChpc1NhbWVEYXRlKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGlucHV0RW5kJCA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmlucHV0RW5kKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChpc1NhbWVEYXRlKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRJbnB1dFJhbmdlJDogT2JzZXJ2YWJsZTxNYXliZTxDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uSW5wdXREYXRlUmFuZ2U+PiA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh7IGlucHV0U3RhcnQsIGlucHV0RW5kIH0pID0+ICh7IGlucHV0U3RhcnQsIGlucHV0RW5kIH0pKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gaXNTYW1lRGF0ZShhLmlucHV0U3RhcnQsIGIuaW5wdXRTdGFydCkgJiYgaXNTYW1lRGF0ZShhLmlucHV0RW5kLCBiLmlucHV0RW5kKSksXG4gICAgbWFwKCh4KSA9PiB7XG4gICAgICBpZiAoeC5pbnB1dFN0YXJ0ICYmIHguaW5wdXRFbmQpIHtcbiAgICAgICAgcmV0dXJuIHggYXMgQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvbklucHV0RGF0ZVJhbmdlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGlucHV0UmFuZ2UkOiBPYnNlcnZhYmxlPENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25JbnB1dERhdGVSYW5nZT4gPSB0aGlzLmN1cnJlbnRJbnB1dFJhbmdlJC5waXBlKGZpbHRlck1heWJlKCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVGhpcyBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIHZhbHVlLiBUaGlzIGlzIHRoZSBzZXQgb2YgbWFudWFsbHkgdG9nZ2VkIG9mZiBkYXRlcy4gSXQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHVwZGF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHNlbGVjdGVkRGF0ZXMkOiBPYnNlcnZhYmxlPFNldDxEYXRlQmxvY2tJbmRleD4+ID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHgudG9nZ2xlZEluZGV4ZXMpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBpc0VuYWJsZWRGaWx0ZXJEYXlGdW5jdGlvbiQ6IE9ic2VydmFibGU8RGVjaXNpb25GdW5jdGlvbjxEYXRlVGltaW5nUmVsYXRpdmVJbmRleEZhY3RvcnlJbnB1dD4+ID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHguaXNFbmFibGVkRmlsdGVyRGF5KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGlzRW5hYmxlZERheUZ1bmN0aW9uJDogT2JzZXJ2YWJsZTxEZWNpc2lvbkZ1bmN0aW9uPERhdGVUaW1pbmdSZWxhdGl2ZUluZGV4RmFjdG9yeUlucHV0Pj4gPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5pc0VuYWJsZWREYXkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgY3VycmVudERhdGVSYW5nZSQ6IE9ic2VydmFibGU8TWF5YmU8RGF0ZVJhbmdlPj4gPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcChjb21wdXRlQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblJhbmdlKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gaXNTYW1lRGF0ZVJhbmdlKGEsIGIpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGNvbXB1dGVTZWxlY3Rpb25SZXN1bHRSZWxhdGl2ZVRvRmlsdGVyJDogT2JzZXJ2YWJsZTxNYXliZTxib29sZWFuPj4gPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5jb21wdXRlU2VsZWN0aW9uUmVzdWx0UmVsYXRpdmVUb0ZpbHRlciksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBzdGFydEJlaW5nVXNlZEZyb21GaWx0ZXIkOiBPYnNlcnZhYmxlPE1heWJlPGJvb2xlYW4+PiA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgLy9cbiAgICBtYXAoY2FsZW5kYXJTY2hlZHVsZVN0YXJ0QmVpbmdVc2VkRnJvbUZpbHRlciksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRhdGVSYW5nZSQ6IE9ic2VydmFibGU8RGF0ZVJhbmdlPiA9IHRoaXMuY3VycmVudERhdGVSYW5nZSQucGlwZShmaWx0ZXJNYXliZSgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgYWxsb3dlZERheXNPZldlZWskOiBPYnNlcnZhYmxlPFNldDxEYXlPZldlZWs+PiA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmFsbG93ZWREYXlzT2ZXZWVrKSxcbiAgICBkaXN0aW5jdFVudGlsSGFzRGlmZmVyZW50VmFsdWVzKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBzY2hlZHVsZURheXMkOiBPYnNlcnZhYmxlPFNldDxEYXRlU2NoZWR1bGVEYXlDb2RlPj4gPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5lZmZlY3RpdmVTY2hlZHVsZURheXMpLFxuICAgIGRpc3RpbmN0VW50aWxIYXNEaWZmZXJlbnRWYWx1ZXMoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRUaW1lem9uZSQ6IE9ic2VydmFibGU8TWF5YmU8VGltZXpvbmVTdHJpbmc+PiA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LnRpbWV6b25lKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZWZmZWN0aXZlVGltZXpvbmUkOiBPYnNlcnZhYmxlPE1heWJlPFRpbWV6b25lU3RyaW5nPj4gPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4gKCFjYWxlbmRhclNjaGVkdWxlU3RhcnRCZWluZ1VzZWRGcm9tRmlsdGVyKHgpICYmIHgudGltZXpvbmUgPyB4LnRpbWV6b25lIDogdW5kZWZpbmVkKSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGVmZmVjdGl2ZVRpbWV6b25lTm9ybWFsJCA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiAoIWNhbGVuZGFyU2NoZWR1bGVTdGFydEJlaW5nVXNlZEZyb21GaWx0ZXIoeCkgJiYgeC50aW1lem9uZU5vcm1hbCA/IHgudGltZXpvbmVOb3JtYWwgOiB1bmRlZmluZWQpKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgY3VycmVudFNlbGVjdGlvblZhbHVlJCA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmN1cnJlbnRTZWxlY3Rpb25WYWx1ZSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBjdXJyZW50U2VsZWN0aW9uVmFsdWVTdGFydCQgPSB0aGlzLmN1cnJlbnRTZWxlY3Rpb25WYWx1ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHg/LmRhdGVTY2hlZHVsZVJhbmdlLnN0YXJ0KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChpc1NhbWVEYXRlKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRTZWxlY3Rpb25WYWx1ZURhdGVCbG9ja1RpbWluZ0RhdGVGYWN0b3J5JCA9IHRoaXMuY3VycmVudFNlbGVjdGlvblZhbHVlU3RhcnQkLnBpcGUoXG4gICAgbWFwKChzdGFydCkgPT4gKHN0YXJ0ID8gZGF0ZUJsb2NrVGltaW5nRGF0ZUZhY3RvcnkoeyBzdGFydCB9KSA6IHVuZGVmaW5lZCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgY3VycmVudFNlbGVjdGlvblZhbHVlRGF0ZUJsb2NrRHVyYXRpb25TcGFuJDogT2JzZXJ2YWJsZTxEYXRlQmxvY2tEdXJhdGlvblNwYW48RGF0ZUJsb2NrPltdPiA9IHRoaXMuY3VycmVudFNlbGVjdGlvblZhbHVlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4gKHggPyBleHBhbmREYXRlU2NoZWR1bGVSYW5nZSh4KSA6IFtdKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBzZWxlY3Rpb25WYWx1ZVNlbGVjdGVkSW5kZXhlcyQ6IE9ic2VydmFibGU8U2V0PERhdGVCbG9ja0luZGV4Pj4gPSB0aGlzLmN1cnJlbnRTZWxlY3Rpb25WYWx1ZURhdGVCbG9ja0R1cmF0aW9uU3BhbiQucGlwZShcbiAgICBtYXAoKHgpID0+IG5ldyBTZXQoeC5tYXAoKHkpID0+IHkuaSkpKSxcbiAgICBkaXN0aW5jdFVudGlsSGFzRGlmZmVyZW50VmFsdWVzKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBzZWxlY3Rpb25WYWx1ZVNlbGVjdGVkRGF0ZXMkOiBPYnNlcnZhYmxlPFNldDxJU084NjAxRGF5U3RyaW5nPj4gPSB0aGlzLmN1cnJlbnRTZWxlY3Rpb25WYWx1ZURhdGVCbG9ja1RpbWluZ0RhdGVGYWN0b3J5JC5waXBlKFxuICAgIHN3aXRjaE1hcCgoZGF0ZUZhY3RvcnkpID0+IHtcbiAgICAgIHJldHVybiBkYXRlRmFjdG9yeSA/IHRoaXMuc2VsZWN0aW9uVmFsdWVTZWxlY3RlZEluZGV4ZXMkLnBpcGUobWFwKCh4KSA9PiBtYXBWYWx1ZXNUb1NldCh4LCAoeSkgPT4gZm9ybWF0VG9JU084NjAxRGF5U3RyaW5nKGRhdGVGYWN0b3J5KHkpKSkpKSA6IG9mKG5ldyBTZXQ8SVNPODYwMURheVN0cmluZz4oKSk7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBzZWxlY3Rpb25WYWx1ZSQgPSB0aGlzLmN1cnJlbnRTZWxlY3Rpb25WYWx1ZSQucGlwZShmaWx0ZXJNYXliZSgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgY3VycmVudFNlbGVjdGlvblZhbHVlV2l0aFRpbWV6b25lJCA9IHRoaXMuY3VycmVudFNlbGVjdGlvblZhbHVlJC5waXBlKFxuICAgIGNvbWJpbmVMYXRlc3RXaXRoKHRoaXMuZWZmZWN0aXZlVGltZXpvbmVOb3JtYWwkKSxcbiAgICBtYXAoKFt4LCB0aW1lem9uZU5vcm1hbF0pID0+IHtcbiAgICAgIGlmICh4ICYmIHRpbWV6b25lTm9ybWFsKSB7XG4gICAgICAgIHggPSB7XG4gICAgICAgICAgZGF0ZVNjaGVkdWxlUmFuZ2U6IHtcbiAgICAgICAgICAgIC4uLnguZGF0ZVNjaGVkdWxlUmFuZ2UsXG4gICAgICAgICAgICBzdGFydDogdGltZXpvbmVOb3JtYWwudGFyZ2V0RGF0ZVRvU3lzdGVtRGF0ZSh4LmRhdGVTY2hlZHVsZVJhbmdlLnN0YXJ0KSxcbiAgICAgICAgICAgIGVuZDogdGltZXpvbmVOb3JtYWwudGFyZ2V0RGF0ZVRvU3lzdGVtRGF0ZSh4LmRhdGVTY2hlZHVsZVJhbmdlLmVuZClcbiAgICAgICAgICB9XG4gICAgICAgIH0gYXMgQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblZhbHVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4geDtcbiAgICB9KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0aW9uVmFsdWVXaXRoVGltZXpvbmUkID0gdGhpcy5jdXJyZW50U2VsZWN0aW9uVmFsdWVXaXRoVGltZXpvbmUkLnBpcGUoZmlsdGVyTWF5YmUoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IHNlbGVjdGlvblZhbHVlV2l0aFRpbWV6b25lRGF0ZUJsb2NrRHVyYXRpb25TcGFuJDogT2JzZXJ2YWJsZTxEYXRlQmxvY2tEdXJhdGlvblNwYW48RGF0ZUJsb2NrPltdPiA9IHRoaXMuc2VsZWN0aW9uVmFsdWVXaXRoVGltZXpvbmUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiBleHBhbmREYXRlU2NoZWR1bGVSYW5nZSh4KSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBuZXh0VG9nZ2xlU2VsZWN0aW9uJDogT2JzZXJ2YWJsZTxNYXliZTxBbGxPck5vbmVTZWxlY3Rpb24+PiA9IHRoaXMuaGFzQ29uZmlndXJlZE1pbk1heFJhbmdlJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoaGFzQ29uZmlndXJlZE1pbk1heFJhbmdlKSA9PiB7XG4gICAgICBsZXQgb2JzOiBPYnNlcnZhYmxlPE1heWJlPEFsbE9yTm9uZVNlbGVjdGlvbj4+O1xuXG4gICAgICBpZiAoaGFzQ29uZmlndXJlZE1pbk1heFJhbmdlKSB7XG4gICAgICAgIG9icyA9IHRoaXMuY3VycmVudFNlbGVjdGlvblZhbHVlJC5waXBlKG1hcCgoeCkgPT4gKHggPyAnbm9uZScgOiAnYWxsJykpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9icyA9IHRoaXMuY3VycmVudFNlbGVjdGlvblZhbHVlJC5waXBlKG1hcCgoeCkgPT4gKHggPyAnbm9uZScgOiB1bmRlZmluZWQpKSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYnM7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBjdXJyZW50RGF0ZVNjaGVkdWxlUmFuZ2VWYWx1ZSQgPSB0aGlzLmN1cnJlbnRTZWxlY3Rpb25WYWx1ZVdpdGhUaW1lem9uZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHg/LmRhdGVTY2hlZHVsZVJhbmdlKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChpc1NhbWVEYXRlU2NoZWR1bGVSYW5nZSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkYXRlU2NoZWR1bGVSYW5nZVZhbHVlJCA9IHRoaXMuY3VycmVudERhdGVTY2hlZHVsZVJhbmdlVmFsdWUkLnBpcGUoZmlsdGVyTWF5YmUoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IGNlbGxDb250ZW50RmFjdG9yeSQgPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5jZWxsQ29udGVudEZhY3RvcnkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBpc0N1c3RvbWl6ZWQkID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHgudG9nZ2xlZEluZGV4ZXMuc2l6ZSA+IDApLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBpc1ZpZXdSZWFkb25seSQgPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5pc1ZpZXdSZWFkb25seSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIC8vIE1BUks6IFN0YXRlIENoYW5nZXNcbiAgcmVhZG9ubHkgc2V0TWluTWF4RGF0ZVJhbmdlID0gdGhpcy51cGRhdGVyKHVwZGF0ZVN0YXRlV2l0aE1pbk1heERhdGVSYW5nZSk7XG4gIHJlYWRvbmx5IHNldERlZmF1bHRXZWVrID0gdGhpcy51cGRhdGVyKHVwZGF0ZVN0YXRlV2l0aE1pbk1heERhdGVSYW5nZSk7XG4gIHJlYWRvbmx5IHNldEZpbHRlciA9IHRoaXMudXBkYXRlcih1cGRhdGVTdGF0ZVdpdGhGaWx0ZXIpO1xuICByZWFkb25seSBzZXRFeGNsdXNpb25zID0gdGhpcy51cGRhdGVyKHVwZGF0ZVN0YXRlV2l0aEV4Y2x1c2lvbnMpO1xuICByZWFkb25seSBzZXRDb21wdXRlU2VsZWN0aW9uUmVzdWx0UmVsYXRpdmVUb0ZpbHRlciA9IHRoaXMudXBkYXRlcih1cGRhdGVTdGF0ZVdpdGhDb21wdXRlU2VsZWN0aW9uUmVzdWx0UmVsYXRpdmVUb0ZpbHRlcik7XG4gIHJlYWRvbmx5IGNsZWFyRmlsdGVyID0gdGhpcy51cGRhdGVyKChzdGF0ZSkgPT4gdXBkYXRlU3RhdGVXaXRoRmlsdGVyKHN0YXRlLCB1bmRlZmluZWQpKTtcblxuICByZWFkb25seSBzZXRUaW1lem9uZSA9IHRoaXMudXBkYXRlcih1cGRhdGVTdGF0ZVdpdGhUaW1lem9uZVZhbHVlKTtcbiAgcmVhZG9ubHkgc2V0SW5wdXRSYW5nZSA9IHRoaXMudXBkYXRlcih1cGRhdGVTdGF0ZVdpdGhDaGFuZ2VkUmFuZ2UpO1xuXG4gIC8vIE5PVEU6IFNlbGVjdGVkIGRhdGVzIGFyZSBOT1Qgc2VsZWN0ZWQgaW5kZXhlcy4gVGhleSBhcmUgdGhlIGludGVybmFsIHNlbGVjdGVkIGRhdGVzIHRoYXQgYXJlIGV4Y2x1ZGVkIGZyb20gdGhlIHNlbGVjdGlvbi5cbiAgcmVhZG9ubHkgdG9nZ2xlU2VsZWN0ZWREYXRlcyA9IHRoaXMudXBkYXRlcigoc3RhdGUsIHRvZ2dsZTogSXRlcmFibGVPclZhbHVlPERhdGVUaW1pbmdSZWxhdGl2ZUluZGV4RmFjdG9yeUlucHV0PikgPT4gdXBkYXRlU3RhdGVXaXRoQ2hhbmdlZERhdGVzKHN0YXRlLCB7IHRvZ2dsZSB9KSk7XG4gIHJlYWRvbmx5IGFkZFNlbGVjdGVkRGF0ZXMgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBhZGQ6IEl0ZXJhYmxlT3JWYWx1ZTxEYXRlVGltaW5nUmVsYXRpdmVJbmRleEZhY3RvcnlJbnB1dD4pID0+IHVwZGF0ZVN0YXRlV2l0aENoYW5nZWREYXRlcyhzdGF0ZSwgeyBhZGQgfSkpO1xuICByZWFkb25seSByZW1vdmVTZWxlY3RlZERhdGVzID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgcmVtb3ZlOiBJdGVyYWJsZU9yVmFsdWU8RGF0ZVRpbWluZ1JlbGF0aXZlSW5kZXhGYWN0b3J5SW5wdXQ+KSA9PiB1cGRhdGVTdGF0ZVdpdGhDaGFuZ2VkRGF0ZXMoc3RhdGUsIHsgcmVtb3ZlIH0pKTtcbiAgcmVhZG9ubHkgc2V0U2VsZWN0ZWREYXRlcyA9IHRoaXMudXBkYXRlcigoc3RhdGUsIHNldDogSXRlcmFibGVPclZhbHVlPERhdGVUaW1pbmdSZWxhdGl2ZUluZGV4RmFjdG9yeUlucHV0PikgPT4gdXBkYXRlU3RhdGVXaXRoQ2hhbmdlZERhdGVzKHN0YXRlLCB7IHNldCB9KSk7XG5cbiAgLy8gTk9URTogU2VsZWN0ZWQgaW5kZXhlcyBhcmUgdGhlIHR5cGljYWwvZXhwZWN0ZWQgaW5kZXhlcyB0aGF0IGFyZSBzZWxlY3RlZCBvciBub3QuXG4gIHJlYWRvbmx5IHNldFNlbGVjdGVkSW5kZXhlcyA9IHRoaXMudXBkYXRlcigoc3RhdGUsIHNldDogSXRlcmFibGVPclZhbHVlPERhdGVUaW1pbmdSZWxhdGl2ZUluZGV4RmFjdG9yeUlucHV0PikgPT4gdXBkYXRlU3RhdGVXaXRoQ2hhbmdlZERhdGVzKHN0YXRlLCB7IHNldCwgaW52ZXJ0U2V0QmVoYXZpb3I6IHRydWUgfSkpO1xuXG4gIHJlYWRvbmx5IHNlbGVjdEFsbERhdGVzID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgc2VsZWN0QWxsOiBBbGxPck5vbmVTZWxlY3Rpb24gPSAnYWxsJykgPT4gdXBkYXRlU3RhdGVXaXRoQ2hhbmdlZERhdGVzKHN0YXRlLCB7IHNlbGVjdEFsbCB9KSk7XG4gIHJlYWRvbmx5IHNldEluaXRpYWxTZWxlY3Rpb25TdGF0ZSA9IHRoaXMudXBkYXRlcih1cGRhdGVTdGF0ZVdpdGhJbml0aWFsU2VsZWN0aW9uU3RhdGUpO1xuXG4gIHJlYWRvbmx5IHNldERlZmF1bHRTY2hlZHVsZURheXMgPSB0aGlzLnVwZGF0ZXIodXBkYXRlU3RhdGVXaXRoQ2hhbmdlZERlZmF1bHRTY2hlZHVsZURheXMpO1xuICByZWFkb25seSBzZXRTY2hlZHVsZURheXMgPSB0aGlzLnVwZGF0ZXIodXBkYXRlU3RhdGVXaXRoQ2hhbmdlZFNjaGVkdWxlRGF5cyk7XG4gIHJlYWRvbmx5IHNldEFsbG93QWxsU2NoZWR1bGVEYXlzID0gdGhpcy51cGRhdGVyKChzdGF0ZSkgPT4gdXBkYXRlU3RhdGVXaXRoQ2hhbmdlZFNjaGVkdWxlRGF5cyhzdGF0ZSwgW0RhdGVTY2hlZHVsZURheUNvZGUuV0VFS0RBWSwgRGF0ZVNjaGVkdWxlRGF5Q29kZS5XRUVLRU5EXSkpO1xuXG4gIHJlYWRvbmx5IHNldERhdGVTY2hlZHVsZVJhbmdlVmFsdWUgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCB2YWx1ZTogTWF5YmU8RGF0ZVNjaGVkdWxlUmFuZ2U+KSA9PiB1cGRhdGVTdGF0ZVdpdGhEYXRlU2NoZWR1bGVSYW5nZVZhbHVlKHN0YXRlLCB2YWx1ZSkpO1xuICByZWFkb25seSBzZXRDZWxsQ29udGVudEZhY3RvcnkgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBjZWxsQ29udGVudEZhY3Rvcnk6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25DZWxsQ29udGVudEZhY3RvcnkpID0+ICh7IC4uLnN0YXRlLCBjZWxsQ29udGVudEZhY3RvcnkgfSkpO1xuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IHRoZSBwYXJlbnQgdmlldyB0byBwcm9wb2dhdGUgYSByZWFkb25seSBzdGF0ZS5cbiAgICpcbiAgICogU2hvdWxkIHR5cGljYWxseSBub3QgYmUgdXNlZCBieSB0aGUgdXNlciBkaXJlY3RseSB3aXRoIHRoZSBpbnRlbnRpb24gb2YgdGhlIHBhcmVudCBzeW5jaHJvbml6aW5nIHRvIHRoaXMgc3RhdGUuXG4gICAqL1xuICByZWFkb25seSBzZXRWaWV3UmVhZG9ubHlTdGF0ZSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGlzVmlld1JlYWRvbmx5OiBib29sZWFuKSA9PiAoeyAuLi5zdGF0ZSwgaXNWaWV3UmVhZG9ubHkgfSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlU3RhdGVXaXRoSW5pdGlhbFNlbGVjdGlvblN0YXRlKHN0YXRlOiBDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUsIGluaXRpYWxTZWxlY3Rpb25TdGF0ZTogTWF5YmU8QWxsT3JOb25lU2VsZWN0aW9uPik6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSB7XG4gIGNvbnN0IHsgdG9nZ2xlZEluZGV4ZXMgfSA9IHN0YXRlO1xuXG4gIGlmICh0b2dnbGVkSW5kZXhlcy5zaXplID09PSAwICYmIGluaXRpYWxTZWxlY3Rpb25TdGF0ZSA9PT0gJ2FsbCcpIHtcbiAgICBzdGF0ZSA9IHVwZGF0ZVN0YXRlV2l0aENoYW5nZWREYXRlcyhzdGF0ZSwgeyBzZWxlY3RBbGw6IGluaXRpYWxTZWxlY3Rpb25TdGF0ZSB9KTtcbiAgfVxuXG4gIHJldHVybiB7IC4uLnN0YXRlLCBpbml0aWFsU2VsZWN0aW9uU3RhdGUgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVN0YXRlV2l0aENvbXB1dGVTZWxlY3Rpb25SZXN1bHRSZWxhdGl2ZVRvRmlsdGVyKGN1cnJlbnRTdGF0ZTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlLCBjb21wdXRlU2VsZWN0aW9uUmVzdWx0UmVsYXRpdmVUb0ZpbHRlcjogTWF5YmU8Ym9vbGVhbj4pOiBDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUge1xuICBsZXQgc3RhdGU6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSA9IHsgLi4uY3VycmVudFN0YXRlLCBjb21wdXRlU2VsZWN0aW9uUmVzdWx0UmVsYXRpdmVUb0ZpbHRlciB9O1xuXG4gIGlmIChCb29sZWFuKGN1cnJlbnRTdGF0ZS5jb21wdXRlU2VsZWN0aW9uUmVzdWx0UmVsYXRpdmVUb0ZpbHRlcikgIT09IEJvb2xlYW4oY29tcHV0ZVNlbGVjdGlvblJlc3VsdFJlbGF0aXZlVG9GaWx0ZXIpKSB7XG4gICAgc3RhdGUgPSB1cGRhdGVTdGF0ZVdpdGhDaGFuZ2VkRGF0ZXMoc3RhdGUsIHt9KTsgLy8gcmVjYWxjdWxhdGUgaWYgY2hhbmdlIG9jY3VycyBhcyBpdCB3aWxsIGFmZmVjdCB0aGUgb3V0cHV0IHZhbHVlXG4gIH1cblxuICByZXR1cm4gc3RhdGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVTdGF0ZVdpdGhFeGNsdXNpb25zKHN0YXRlOiBDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUsIGlucHV0RXhjbHVzaW9uczogTWF5YmU8QXJyYXlPclZhbHVlPERhdGVPckRhdGVSYW5nZU9yRGF0ZUJsb2NrSW5kZXhPckRhdGVCbG9ja1JhbmdlPj4pOiBDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUge1xuICBsZXQgY29tcHV0ZWRFeGNsdXNpb25zOiBNYXliZTxEYXRlQmxvY2tJbmRleFtdPjtcblxuICBpZiAoaW5wdXRFeGNsdXNpb25zKSB7XG4gICAgY29uc3QgeyBpbmRleEZhY3RvcnkgfSA9IHN0YXRlO1xuICAgIGNvbnN0IGluZGV4QXJyYXlGYWN0b3J5ID0gZGF0ZVRpbWluZ1JlbGF0aXZlSW5kZXhBcnJheUZhY3RvcnkoaW5kZXhGYWN0b3J5KTtcbiAgICBjb21wdXRlZEV4Y2x1c2lvbnMgPSBpbmRleEFycmF5RmFjdG9yeShpbnB1dEV4Y2x1c2lvbnMpO1xuICB9XG5cbiAgc3RhdGUgPSB7IC4uLnN0YXRlLCBpbnB1dEV4Y2x1c2lvbnMsIGNvbXB1dGVkRXhjbHVzaW9ucyB9O1xuICByZXR1cm4gdXBkYXRlU3RhdGVXaXRoRmlsdGVyKHN0YXRlLCBzdGF0ZS5maWx0ZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlU3RhdGVXaXRoTWluTWF4RGF0ZVJhbmdlKHN0YXRlOiBDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUsIG1pbk1heERhdGVSYW5nZTogTWF5YmU8UGFydGlhbDxEYXRlUmFuZ2U+Pik6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSB7XG4gIHN0YXRlID0geyAuLi5zdGF0ZSB9O1xuXG4gIGlmIChtaW5NYXhEYXRlUmFuZ2UgIT0gbnVsbCAmJiAhaXNJbmZpbml0ZURhdGVSYW5nZShtaW5NYXhEYXRlUmFuZ2UpKSB7XG4gICAgc3RhdGUubWluTWF4RGF0ZVJhbmdlID0ge1xuICAgICAgc3RhcnQ6IG1pbk1heERhdGVSYW5nZS5zdGFydCAhPSBudWxsID8gc3RhcnRPZkRheShtaW5NYXhEYXRlUmFuZ2Uuc3RhcnQpIDogdW5kZWZpbmVkLFxuICAgICAgZW5kOiBtaW5NYXhEYXRlUmFuZ2UuZW5kICE9IG51bGwgPyBlbmRPZkRheShtaW5NYXhEYXRlUmFuZ2UuZW5kKSA6IHVuZGVmaW5lZFxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgZGVsZXRlIHN0YXRlLm1pbk1heERhdGVSYW5nZTtcbiAgfVxuXG4gIHJldHVybiB1cGRhdGVTdGF0ZVdpdGhGaWx0ZXIoc3RhdGUsIHN0YXRlLmZpbHRlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVTdGF0ZVdpdGhGaWx0ZXIoc3RhdGU6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSwgaW5wdXRGaWx0ZXI6IE1heWJlPERhdGVTY2hlZHVsZURhdGVGaWx0ZXJDb25maWc+KTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlIHtcbiAgY29uc3QgeyBjb21wdXRlZEV4Y2x1c2lvbnM6IGV4Y2x1c2lvbnMsIG1pbk1heERhdGVSYW5nZSB9ID0gc3RhdGU7XG5cbiAgbGV0IGlzRW5hYmxlZEZpbHRlckRheTogTWF5YmU8RGVjaXNpb25GdW5jdGlvbjxEYXRlVGltaW5nUmVsYXRpdmVJbmRleEZhY3RvcnlJbnB1dD4+ID0gKCkgPT4gdHJ1ZTtcbiAgbGV0IGZpbHRlcjogTWF5YmU8RGF0ZVNjaGVkdWxlRGF0ZUZpbHRlckNvbmZpZz4gPSBudWxsO1xuXG4gIC8vIGNyZWF0ZSB0aGUgZmlsdGVyIHVzaW5nIGlucHV0RmlsdGVyLCBleGNsdXNpb25zLCBhbmQgbWluTWF4RGF0ZVJhbmdlXG4gIGlmIChpbnB1dEZpbHRlciB8fCBleGNsdXNpb25zPy5sZW5ndGggfHwgbWluTWF4RGF0ZVJhbmdlKSB7XG4gICAgbGV0IGVuYWJsZWRGaWx0ZXI6IERhdGVTY2hlZHVsZURhdGVGaWx0ZXJDb25maWc7XG5cbiAgICBpZiAoaW5wdXRGaWx0ZXIpIHtcbiAgICAgIGZpbHRlciA9IGNvcHlEYXRlU2NoZWR1bGVEYXRlRmlsdGVyQ29uZmlnKGlucHV0RmlsdGVyKTsgLy8gY29weSBmaWx0ZXJcblxuICAgICAgaWYgKGV4Y2x1c2lvbnM/Lmxlbmd0aCkge1xuICAgICAgICBlbmFibGVkRmlsdGVyID0ge1xuICAgICAgICAgIC4uLmZpbHRlcixcbiAgICAgICAgICBleDogdW5pcXVlKG1lcmdlQXJyYXlzKFtmaWx0ZXIuZXgsIGV4Y2x1c2lvbnNdKSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVuYWJsZWRGaWx0ZXIgPSBmaWx0ZXI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGVuYWJsZWRGaWx0ZXIgPSB7XG4gICAgICAgIHc6ICc4OScsXG4gICAgICAgIGV4OiBleGNsdXNpb25zIGFzIG51bWJlcltdXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChtaW5NYXhEYXRlUmFuZ2UpIHtcbiAgICAgIGVuYWJsZWRGaWx0ZXIubWluTWF4RGF0ZVJhbmdlID0gbWluTWF4RGF0ZVJhbmdlO1xuICAgICAgZW5hYmxlZEZpbHRlci5zZXRTdGFydEFzTWluRGF0ZSA9IGZpbHRlcj8uc3RhcnQgPyB0cnVlIDogZmFsc2U7IC8vIElmIGEgc3RhcnQgZGF0ZSBpcyBzZXQsIHRoZW4gaXQgYmVjb21lcyB0aGUgZmxvb3IuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSWYgdGhlIGlucHV0IGZpbHRlciBoYXMgYSBzdGFydCBkYXRlLCB1c2UgdGhhdCBhcyB0aGUgcmVsYXRpdmUgc3RhcnQgdG8gZW5zdXJlIGluZGV4ZXMgYXJlIGNvbXBhcmVkIHRoZSBzYW1lLFxuICAgICAqIG90aGVyd2lzZSB1c2UgdGhlIHN0YXRlJ3Mgc3RhcnQuIFRoaXMgaXMgaW1wb3J0YW50IGZvciB0aGUgaW5kZXggY2FsY3VsYXRpb25zLlxuICAgICAqL1xuICAgIGVuYWJsZWRGaWx0ZXIuc3RhcnQgPSBpbnB1dEZpbHRlcj8uc3RhcnQgPz8gc3RhdGUuc3RhcnQ7XG5cbiAgICAvLyBjcmVhdGUgdGhlIGZpbHRlclxuICAgIGlzRW5hYmxlZEZpbHRlckRheSA9IGRhdGVTY2hlZHVsZURhdGVGaWx0ZXIoZW5hYmxlZEZpbHRlcik7XG4gIH1cblxuICBzdGF0ZSA9IHsgLi4uc3RhdGUsIGZpbHRlciwgaXNFbmFibGVkRmlsdGVyRGF5IH07XG5cbiAgLy8gRm9yIHRoZSBzYW1lIHJlYXNvbiBhcyBhYm92ZSwgdXNlIHRoZSBmaWx0ZXIncyBzdGFydCBkYXRlIGFzIHRoZSByZWxhdGl2ZSBzdGFydCBpZiBhcHBsaWNhYmxlLlxuICBpZiAoZmlsdGVyICYmIGZpbHRlci5zdGFydCkge1xuICAgIGNvbnN0IHN0YXJ0ID0gZmlsdGVyLnN0YXJ0O1xuICAgIHN0YXRlLnN0YXJ0ID0gc3RhcnQ7XG4gICAgc3RhdGUuaW5kZXhGYWN0b3J5ID0gZGF0ZVRpbWluZ1JlbGF0aXZlSW5kZXhGYWN0b3J5KHsgc3RhcnQgfSk7XG4gICAgc3RhdGUuaW5kZXhEYXlPZldlZWsgPSBkYXRlQmxvY2tEYXlPZldlZWtGYWN0b3J5KHN0YXJ0KTtcbiAgfVxuXG4gIC8vIGF0dGVtcHQgdG8gcmUtYXBwbHkgdGhlIGluaXRpYWwgc2VsZWN0aW9uIHN0YXRlIG9uY2UgZmlsdGVyIGlzIGFwcGxpZWRcbiAgaWYgKHN0YXRlLmluaXRpYWxTZWxlY3Rpb25TdGF0ZSkge1xuICAgIHN0YXRlID0gdXBkYXRlU3RhdGVXaXRoSW5pdGlhbFNlbGVjdGlvblN0YXRlKHN0YXRlLCBzdGF0ZS5pbml0aWFsU2VsZWN0aW9uU3RhdGUpO1xuICB9XG5cbiAgLy8gcmUtY2FsY3VsYXRlIHRoZSBzZWxlY3Rpb24gZ2l2ZW4gdGhlIGZpbHRlclxuICBjb25zdCB7IGlucHV0U3RhcnQsIGlucHV0RW5kIH0gPSBzdGF0ZTtcblxuICBpZiAoaW5wdXRTdGFydCAmJiBpbnB1dEVuZCkge1xuICAgIHN0YXRlID0gdXBkYXRlU3RhdGVXaXRoQ2hhbmdlZFJhbmdlKHN0YXRlLCB7IGlucHV0U3RhcnQsIGlucHV0RW5kIH0pO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlU3RhdGVXaXRoVGltZXpvbmVWYWx1ZShzdGF0ZTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlLCB0aW1lem9uZTogTWF5YmU8VGltZXpvbmVTdHJpbmc+KTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlIHtcbiAgY29uc3QgeyBjdXJyZW50U2VsZWN0aW9uVmFsdWUgfSA9IHN0YXRlO1xuXG4gIGNvbnN0IHRpbWV6b25lTm9ybWFsID0gdGltZXpvbmUgPyBkYXRlVGltZXpvbmVVdGNOb3JtYWwoeyB0aW1lem9uZSB9KSA6IHVuZGVmaW5lZDtcblxuICBpZiAodGltZXpvbmVOb3JtYWwgJiYgY3VycmVudFNlbGVjdGlvblZhbHVlKSB7XG4gICAgLy8gdXBkYXRlIHRoZSBzZWxlY3Rpb24gdmFsdWUgdG8gcmVmbGVjdCB0aGUgdGltZXpvbmUgY2hhbmdlcy5cblxuICAgIGNvbnN0IHsgZGF0ZVNjaGVkdWxlUmFuZ2U6IGN1cnJlbnREYXRlU2NoZWR1bGVSYW5nZSB9ID0gY3VycmVudFNlbGVjdGlvblZhbHVlO1xuICAgIGNvbnN0IHN0YXJ0ID0gdGltZXpvbmVOb3JtYWwudGFyZ2V0RGF0ZVRvU3lzdGVtRGF0ZShjdXJyZW50RGF0ZVNjaGVkdWxlUmFuZ2Uuc3RhcnQpO1xuICAgIGNvbnN0IGVuZCA9IHRpbWV6b25lTm9ybWFsLnRhcmdldERhdGVUb1N5c3RlbURhdGUoY3VycmVudERhdGVTY2hlZHVsZVJhbmdlLmVuZCk7XG5cbiAgICBjb25zdCBuZXdSYW5nZTogRGF0ZVNjaGVkdWxlUmFuZ2UgPSB7XG4gICAgICAuLi5jdXJyZW50U2VsZWN0aW9uVmFsdWUuZGF0ZVNjaGVkdWxlUmFuZ2UsXG4gICAgICBzdGFydCxcbiAgICAgIGVuZFxuICAgIH07XG5cbiAgICByZXR1cm4gdXBkYXRlU3RhdGVXaXRoRGF0ZVNjaGVkdWxlUmFuZ2VWYWx1ZSh7IC4uLnN0YXRlLCB0aW1lem9uZSwgdGltZXpvbmVOb3JtYWwgfSwgbmV3UmFuZ2UpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB7IC4uLnN0YXRlLCB0aW1lem9uZSwgdGltZXpvbmVOb3JtYWwgfTsgLy8gbm8gY2hhbmdlIGluIHZhbHVlXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVN0YXRlV2l0aERhdGVTY2hlZHVsZVJhbmdlVmFsdWUoc3RhdGU6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSwgY2hhbmdlOiBNYXliZTxEYXRlU2NoZWR1bGVSYW5nZT4pOiBDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUge1xuICBjb25zdCB7IHRpbWV6b25lTm9ybWFsLCBjdXJyZW50U2VsZWN0aW9uVmFsdWUgfSA9IHN0YXRlO1xuICBjb25zdCBjdXJyZW50RGF0ZVNjaGVkdWxlUmFuZ2UgPSBjdXJyZW50U2VsZWN0aW9uVmFsdWU/LmRhdGVTY2hlZHVsZVJhbmdlOyAvLyBjdXJyZW50IHJhbmdlIGlzIGFsd2F5cyBpbiBzeXN0ZW0gdGltZVxuXG4gIGlmICghY2FsZW5kYXJTY2hlZHVsZVN0YXJ0QmVpbmdVc2VkRnJvbUZpbHRlcihzdGF0ZSkgJiYgdGltZXpvbmVOb3JtYWwpIHtcbiAgICAvLyBXaGVuIHVzaW5nIHRpbWV6b25lcywgYWx3YXlzIHJldHVybiBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZGF5LiBJbnB1dHMgYXJlIGNvbnZlcnRlZCB0byB0aGUgc3lzdGVtIHRpbWUgYW5kIHVzZWQgYXMgdGhlIHN0YXJ0IG9mIHRoZSBkYXkuXG4gICAgLy8gT3V0cHV0cyByZW1haW4gYWNjdXJhdGUuXG5cbiAgICBpZiAoY2hhbmdlKSB7XG4gICAgICBjaGFuZ2UgPSB7XG4gICAgICAgIC4uLmNoYW5nZSxcbiAgICAgICAgc3RhcnQ6IHN0YXJ0T2ZEYXkodGltZXpvbmVOb3JtYWwuc3lzdGVtRGF0ZVRvVGFyZ2V0RGF0ZShjaGFuZ2Uuc3RhcnQpKSxcbiAgICAgICAgZW5kOiBzdGFydE9mRGF5KHRpbWV6b25lTm9ybWFsLnN5c3RlbURhdGVUb1RhcmdldERhdGUoY2hhbmdlLmVuZCkpXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGlzU2FtZVZhbHVlID0gaXNTYW1lRGF0ZVNjaGVkdWxlUmFuZ2UoY3VycmVudERhdGVTY2hlZHVsZVJhbmdlLCBjaGFuZ2UpO1xuXG4gIGlmIChpc1NhbWVWYWx1ZSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoY2hhbmdlICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IG5leHRTdGF0ZTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlID0geyAuLi5zdGF0ZSwgaW5wdXRTdGFydDogY2hhbmdlLnN0YXJ0LCBpbnB1dEVuZDogY2hhbmdlLmVuZCwgdG9nZ2xlZEluZGV4ZXM6IG5ldyBTZXQoY2hhbmdlLmV4KSB9O1xuICAgICAgcmV0dXJuIHVwZGF0ZVN0YXRlV2l0aENoYW5nZWRTY2hlZHVsZURheXMoZmluYWxpemVOZXdDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUobmV4dFN0YXRlKSwgZXhwYW5kRGF0ZVNjaGVkdWxlRGF5Q29kZXMoY2hhbmdlLncgfHwgJzg5JykpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbm9TZWxlY3Rpb25DYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUoc3RhdGUpOyAvLyBjbGVhciBzZWxlY3Rpb24sIHJldGFpbiBkaXNhYmxlZCBkYXlzXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVTdGF0ZVdpdGhDaGFuZ2VkRGVmYXVsdFNjaGVkdWxlRGF5cyhzdGF0ZTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlLCBjaGFuZ2U6IE1heWJlPEl0ZXJhYmxlPERhdGVTY2hlZHVsZURheUNvZGU+Pik6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSB7XG4gIGNvbnN0IHsgZGVmYXVsdFNjaGVkdWxlRGF5czogY3VycmVudERlZmF1bHRTY2hlZHVsZURheXMgfSA9IHN0YXRlO1xuICBjb25zdCBkZWZhdWx0U2NoZWR1bGVEYXlzID0gbmV3IFNldChjaGFuZ2UgPz8gZnVsbFdlZWtEYXlTY2hlZHVsZURheUNvZGVzKCkpO1xuXG4gIGlmIChkYXRlU2NoZWR1bGVEYXlDb2Rlc0FyZVNldHNFcXVpdmFsZW50KGRlZmF1bHRTY2hlZHVsZURheXMsIGN1cnJlbnREZWZhdWx0U2NoZWR1bGVEYXlzKSkge1xuICAgIHJldHVybiBzdGF0ZTsgLy8gbm8gY2hhbmdlXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZpbmFsaXplVXBkYXRlU3RhdGVXaXRoQ2hhbmdlZFNjaGVkdWxlRGF5cyhzdGF0ZSwgeyAuLi5zdGF0ZSwgZGVmYXVsdFNjaGVkdWxlRGF5cyB9KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlU3RhdGVXaXRoQ2hhbmdlZFNjaGVkdWxlRGF5cyhzdGF0ZTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlLCBjaGFuZ2U6IE1heWJlPEl0ZXJhYmxlPERhdGVTY2hlZHVsZURheUNvZGU+Pik6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSB7XG4gIGNvbnN0IHsgc2NoZWR1bGVEYXlzOiBjdXJyZW50U2NoZWR1bGVEYXlzIH0gPSBzdGF0ZTtcbiAgY29uc3Qgc2NoZWR1bGVEYXlzID0gbmV3IFNldChjaGFuZ2UgPz8gW10pO1xuXG4gIGxldCBuZXdTY2hlZHVsZURheXM6IFNldDxEYXRlU2NoZWR1bGVEYXlDb2RlPiB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbiAgaWYgKGN1cnJlbnRTY2hlZHVsZURheXMgIT0gbnVsbCAmJiBjaGFuZ2UgIT0gbnVsbCkge1xuICAgIGlmIChkYXRlU2NoZWR1bGVEYXlDb2Rlc0FyZVNldHNFcXVpdmFsZW50KHNjaGVkdWxlRGF5cywgY3VycmVudFNjaGVkdWxlRGF5cykpIHtcbiAgICAgIG5ld1NjaGVkdWxlRGF5cyA9IHVuZGVmaW5lZDsgLy9ubyBjaGFuZ2VcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3U2NoZWR1bGVEYXlzID0gc2NoZWR1bGVEYXlzO1xuICAgIH1cbiAgfSBlbHNlIGlmIChjdXJyZW50U2NoZWR1bGVEYXlzICE9PSBjaGFuZ2UpIHtcbiAgICBuZXdTY2hlZHVsZURheXMgPSBjaGFuZ2UgPyBzY2hlZHVsZURheXMgOiBudWxsOyAvLyBzZXQgdGhlIG5ldyBvbmUsIG9yIGNsZWFyIGl0XG4gIH1cblxuICBpZiAobmV3U2NoZWR1bGVEYXlzID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZpbmFsaXplVXBkYXRlU3RhdGVXaXRoQ2hhbmdlZFNjaGVkdWxlRGF5cyhzdGF0ZSwgeyAuLi5zdGF0ZSwgc2NoZWR1bGVEYXlzOiBuZXdTY2hlZHVsZURheXMgPz8gdW5kZWZpbmVkIH0pO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5hbGl6ZVVwZGF0ZVN0YXRlV2l0aENoYW5nZWRTY2hlZHVsZURheXMocHJldmlvdXNTdGF0ZTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlLCBuZXh0U3RhdGU6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSk6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSB7XG4gIGNvbnN0IHByZXZpb3VzU2NoZWR1bGVEYXlzID0gcHJldmlvdXNTdGF0ZS5lZmZlY3RpdmVTY2hlZHVsZURheXM7XG4gIGNvbnN0IG5leHRTY2hlZHVsZURheXMgPSBuZXh0U3RhdGUuc2NoZWR1bGVEYXlzID8/IG5leHRTdGF0ZS5kZWZhdWx0U2NoZWR1bGVEYXlzO1xuXG4gIGlmIChkYXRlU2NoZWR1bGVEYXlDb2Rlc0FyZVNldHNFcXVpdmFsZW50KG5leHRTY2hlZHVsZURheXMsIHByZXZpb3VzU2NoZWR1bGVEYXlzKSkge1xuICAgIHJldHVybiBuZXh0U3RhdGU7IC8vIHRoZSBkZWZhdWx0IG9yIGlucHV0IHNjaGVkdWxlIGNoYW5nZWQgYnV0IHRoZSBzY2hlZHVsZSBpcyBzdGlsbCB0aGUgc2FtZSwgc28gbm8gbmVlZCBmb3IgYW4gdXBkYXRlLlxuICB9IGVsc2Uge1xuICAgIGNvbnN0IGVmZmVjdGl2ZVNjaGVkdWxlRGF5cyA9IG5ldyBTZXQoc2ltcGxpZnlEYXRlU2NoZWR1bGVEYXlDb2RlcyhuZXh0U2NoZWR1bGVEYXlzKSk7XG4gICAgY29uc3QgYWxsb3dlZERheXNPZldlZWsgPSBleHBhbmREYXRlU2NoZWR1bGVEYXlDb2Rlc1RvRGF5T2ZXZWVrU2V0KG5leHRTY2hlZHVsZURheXMpO1xuXG4gICAgcmV0dXJuIGZpbmFsaXplTmV3Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlKHtcbiAgICAgIC4uLm5leHRTdGF0ZSxcbiAgICAgIC8vIHVwZGF0ZSB0aGUgZWZmZWN0aXZlIHNjaGVkdWxlIGRheXMgYW5kIGFsbG93ZWQgZGF5cyBvZiB3ZWVrXG4gICAgICBlZmZlY3RpdmVTY2hlZHVsZURheXMsXG4gICAgICBhbGxvd2VkRGF5c09mV2Vla1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlRGF0ZXNDaGFuZ2Uge1xuICByZXNldD86IHRydWU7XG4gIHRvZ2dsZT86IEl0ZXJhYmxlT3JWYWx1ZTxEYXRlVGltaW5nUmVsYXRpdmVJbmRleEZhY3RvcnlJbnB1dD47XG4gIGFkZD86IEl0ZXJhYmxlT3JWYWx1ZTxEYXRlVGltaW5nUmVsYXRpdmVJbmRleEZhY3RvcnlJbnB1dD47XG4gIHJlbW92ZT86IEl0ZXJhYmxlT3JWYWx1ZTxEYXRlVGltaW5nUmVsYXRpdmVJbmRleEZhY3RvcnlJbnB1dD47XG4gIHNldD86IEl0ZXJhYmxlT3JWYWx1ZTxEYXRlVGltaW5nUmVsYXRpdmVJbmRleEZhY3RvcnlJbnB1dD47XG4gIHNlbGVjdEFsbD86IEFsbE9yTm9uZVNlbGVjdGlvbjtcbiAgLyoqXG4gICAqIEludmVydHMgdGhlIHNldCBkYXRlIGNoYW5naW5nIGJlaGF2aW9yIHNvIHRoYXQgdGhlIHNldCBpbnB1dCBpcyB0cmVhdGVkIGFzIGl0ZW1zIHRoYXQgc2hvdWxkIGJlIHJldGFpbmVkIGluc3RlYWQgb2YgZXhjbHVkZWQuXG4gICAqXG4gICAqIElnbm9yZWQgd2hlbiBzZXQgaXMgbm90IHVzZWQuIElnbm9yZWQgZm9yIHNlbGVjdEFsbC5cbiAgICovXG4gIGludmVydFNldEJlaGF2aW9yPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVN0YXRlV2l0aENoYW5nZWREYXRlcyhzdGF0ZTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlLCBjaGFuZ2U6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZURhdGVzQ2hhbmdlKTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlIHtcbiAgY29uc3QgeyBhbGxvd2VkRGF5c09mV2VlaywgaW5kZXhGYWN0b3J5LCBpbmRleERheU9mV2VlaywgaW5wdXRTdGFydDogY3VycmVudElucHV0U3RhcnQsIGlucHV0RW5kOiBjdXJyZW50SW5wdXRFbmQsIG1pbk1heERhdGVSYW5nZSwgZmlsdGVyIH0gPSBzdGF0ZTtcbiAgY29uc3QgeyBzdGFydDogbWluRGF0ZSwgZW5kOiBtYXhEYXRlIH0gPSBjYWxlbmRhclNjaGVkdWxlTWluQW5kTWF4RGF0ZVJhbmdlKHN0YXRlKTtcbiAgbGV0IGlucHV0U3RhcnQgPSBjdXJyZW50SW5wdXRTdGFydDtcbiAgbGV0IGlucHV0RW5kID0gY3VycmVudElucHV0RW5kO1xuXG4gIC8qKlxuICAgKiBUaGlzIGlzIGEgc2V0IG9mIGluZGV4ZXMgdGhhdCBhcmUgaW50ZXJuYWxseSBcInNlbGVjdGVkXCIgc28gdGhhdCB0aGV5IGFyZSBleGNsdWRlZCBmcm9tIHRoZSBpbnB1dFN0YXJ0L2lucHV0RW5kIGRhdGUgcmFuZ2UuXG4gICAqXG4gICAqIERvIG5vdCBjb25mdXNlIHRoaXMgd2l0aCB0aGUgYWN0dWFsIGluZGV4ZXMgdGhhdCBhcmUgc2VsZWN0ZWQuXG4gICAqL1xuICBsZXQgdG9nZ2xlZEluZGV4ZXM6IFNldDxEYXRlQmxvY2tJbmRleD47XG5cbiAgZnVuY3Rpb24gYXNJbmRleGVzKGluZGV4ZXM6IEl0ZXJhYmxlT3JWYWx1ZTxEYXRlVGltaW5nUmVsYXRpdmVJbmRleEZhY3RvcnlJbnB1dD4pOiBEYXRlQmxvY2tJbmRleFtdIHtcbiAgICByZXR1cm4gaXRlcmFibGVUb0FycmF5KGluZGV4ZXMpLm1hcChpbmRleEZhY3RvcnkpO1xuICB9XG5cbiAgaWYgKGNoYW5nZS5yZXNldCB8fCBjaGFuZ2Uuc2VsZWN0QWxsICE9IG51bGwgfHwgY2hhbmdlLnNldCAhPSBudWxsKSB7XG4gICAgbGV0IHNldDogTWF5YmU8SXRlcmFibGVPclZhbHVlPERhdGVUaW1pbmdSZWxhdGl2ZUluZGV4RmFjdG9yeUlucHV0Pj4gPSBjaGFuZ2Uuc2V0ID8/IFtdO1xuICAgIGNvbnN0IHNlbGVjdEFsbDogTWF5YmU8QWxsT3JOb25lU2VsZWN0aW9uPiA9IGNoYW5nZS5yZXNldCA9PT0gdHJ1ZSA/IHN0YXRlLmluaXRpYWxTZWxlY3Rpb25TdGF0ZSA6IGNoYW5nZS5zZWxlY3RBbGw7XG5cbiAgICBzd2l0Y2ggKHNlbGVjdEFsbCkge1xuICAgICAgY2FzZSAnYWxsJzpcbiAgICAgICAgaWYgKG1pbkRhdGUgIT0gbnVsbCAmJiBtYXhEYXRlICE9IG51bGwpIHtcbiAgICAgICAgICBpbnB1dFN0YXJ0ID0gbWluRGF0ZTtcbiAgICAgICAgICBpbnB1dEVuZCA9IG1heERhdGU7XG4gICAgICAgICAgc2V0ID0gW107XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdub25lJzpcbiAgICAgICAgaW5wdXRTdGFydCA9IG51bGw7XG4gICAgICAgIGlucHV0RW5kID0gbnVsbDtcbiAgICAgICAgc2V0ID0gW107XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRvZ2dsZWRJbmRleGVzID0gbmV3IFNldChhc0luZGV4ZXMoc2V0KSk7XG5cbiAgICBpZiAoY2hhbmdlLmludmVydFNldEJlaGF2aW9yICYmIG1pbkRhdGUgJiYgbWF4RGF0ZSAmJiAhc2VsZWN0QWxsKSB7XG4gICAgICBjb25zdCBtaW5JbmRleCA9IGluZGV4RmFjdG9yeShtaW5EYXRlKTtcbiAgICAgIGNvbnN0IG1heEluZGV4ID0gaW5kZXhGYWN0b3J5KG1heERhdGUpO1xuXG4gICAgICBpbnB1dFN0YXJ0ID0gbWluRGF0ZTtcbiAgICAgIGlucHV0RW5kID0gbWF4RGF0ZTtcbiAgICAgIHRvZ2dsZWRJbmRleGVzID0gbmV3IFNldChyYW5nZShtaW5JbmRleCwgbWF4SW5kZXggKyAxKS5maWx0ZXIoKHgpID0+ICF0b2dnbGVkSW5kZXhlcy5oYXMoeCkpKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdG9nZ2xlZEluZGV4ZXMgPSBuZXcgU2V0KHN0YXRlLnRvZ2dsZWRJbmRleGVzKTtcblxuICAgIGlmIChjaGFuZ2UudG9nZ2xlKSB7XG4gICAgICBjb25zdCBhbGxvd2VkVG9Ub2dnbGUgPSBhc0luZGV4ZXMoY2hhbmdlLnRvZ2dsZSkuZmlsdGVyKChpKSA9PiBhbGxvd2VkRGF5c09mV2Vlay5oYXMoaW5kZXhEYXlPZldlZWsoaSkpKTtcbiAgICAgIHRvZ2dsZUluU2V0KHRvZ2dsZWRJbmRleGVzLCBhbGxvd2VkVG9Ub2dnbGUpO1xuICAgIH1cblxuICAgIGxldCBhZGRUb0V4Y2x1c2lvbjogTWF5YmU8SXRlcmFibGVPclZhbHVlPERhdGVUaW1pbmdSZWxhdGl2ZUluZGV4RmFjdG9yeUlucHV0Pj47XG4gICAgbGV0IHJlbW92ZUZyb21FeGNsdXNpb246IE1heWJlPEl0ZXJhYmxlT3JWYWx1ZTxEYXRlVGltaW5nUmVsYXRpdmVJbmRleEZhY3RvcnlJbnB1dD4+O1xuXG4gICAgaWYgKGNoYW5nZS5hZGQpIHtcbiAgICAgIGlmIChjaGFuZ2UuaW52ZXJ0U2V0QmVoYXZpb3IpIHtcbiAgICAgICAgYWRkVG9FeGNsdXNpb24gPSBjaGFuZ2UuYWRkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVtb3ZlRnJvbUV4Y2x1c2lvbiA9IGNoYW5nZS5hZGQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZS5yZW1vdmUpIHtcbiAgICAgIGlmIChjaGFuZ2UuaW52ZXJ0U2V0QmVoYXZpb3IpIHtcbiAgICAgICAgcmVtb3ZlRnJvbUV4Y2x1c2lvbiA9IGNoYW5nZS5yZW1vdmU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhZGRUb0V4Y2x1c2lvbiA9IGNoYW5nZS5yZW1vdmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGFkZFRvRXhjbHVzaW9uKSB7XG4gICAgICByZW1vdmVGcm9tU2V0KHRvZ2dsZWRJbmRleGVzLCBhc0luZGV4ZXMoYWRkVG9FeGNsdXNpb24pKTtcbiAgICB9XG5cbiAgICBpZiAocmVtb3ZlRnJvbUV4Y2x1c2lvbikge1xuICAgICAgYWRkVG9TZXQodG9nZ2xlZEluZGV4ZXMsIGFzSW5kZXhlcyhyZW1vdmVGcm9tRXhjbHVzaW9uKSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgbmV4dFN0YXRlID0geyAuLi5zdGF0ZSwgaW5wdXRTdGFydCwgaW5wdXRFbmQsIHRvZ2dsZWRJbmRleGVzIH07XG4gIG5leHRTdGF0ZS5pc0VuYWJsZWREYXkgPSBpc0VuYWJsZWREYXlJbkNhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZShuZXh0U3RhdGUpO1xuXG4gIC8vIFJlY2FsY3VsYXRlIHRoZSByYW5nZSBhbmQgc2ltcGxpZmllZCB0byBleGNsdXNpb25zXG4gIGNvbnN0IHJhbmdlQW5kRXhjbHVzaW9uID0gY29tcHV0ZVNjaGVkdWxlU2VsZWN0aW9uUmFuZ2VBbmRFeGNsdXNpb24obmV4dFN0YXRlKTtcblxuICBpZiAocmFuZ2VBbmRFeGNsdXNpb24pIHtcbiAgICByZXR1cm4gZmluYWxpemVOZXdDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUoeyAuLi5uZXh0U3RhdGUsIHRvZ2dsZWRJbmRleGVzOiBuZXcgU2V0KHJhbmdlQW5kRXhjbHVzaW9uLmV4Y2x1ZGVkKSwgaW5wdXRTdGFydDogcmFuZ2VBbmRFeGNsdXNpb24uc3RhcnQsIGlucHV0RW5kOiByYW5nZUFuZEV4Y2x1c2lvbi5lbmQgfSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gbm8gc2VsZWN0ZWQgZGF5c1xuICAgIHJldHVybiBub1NlbGVjdGlvbkNhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZShuZXh0U3RhdGUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub1NlbGVjdGlvbkNhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZShzdGF0ZTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlKTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlIHtcbiAgcmV0dXJuIGZpbmFsaXplTmV3Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlKHsgLi4uc3RhdGUsIHRvZ2dsZWRJbmRleGVzOiBuZXcgU2V0KCksIGlucHV0U3RhcnQ6IG51bGwsIGlucHV0RW5kOiBudWxsIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlU3RhdGVXaXRoQ2hhbmdlZFJhbmdlKHN0YXRlOiBDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUsIGNoYW5nZTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvbklucHV0RGF0ZVJhbmdlKTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlIHtcbiAgY29uc3QgeyBpbnB1dFN0YXJ0OiBjdXJyZW50SW5wdXRTdGFydCwgaW5wdXRFbmQ6IGN1cnJlbnRJbnB1dEVuZCwgaW5kZXhGYWN0b3J5LCBtaW5NYXhEYXRlUmFuZ2UgfSA9IHN0YXRlO1xuICBjb25zdCB7IHN0YXJ0OiBtaW5EYXRlLCBlbmQ6IG1heERhdGUgfTogUGFydGlhbDxEYXRlUmFuZ2U+ID0gbWluTWF4RGF0ZVJhbmdlID8/IHt9O1xuXG4gIGNvbnN0IGlucHV0U3RhcnQ6IERhdGUgPSBzdGFydE9mRGF5KGNoYW5nZS5pbnB1dFN0YXJ0KTtcbiAgY29uc3QgaW5wdXRFbmQ6IERhdGUgPSBlbmRPZkRheShjaGFuZ2UuaW5wdXRFbmQpO1xuXG4gIGNvbnN0IGlzVmFsaWRSYW5nZSA9IG1pbkRhdGUgIT0gbnVsbCB8fCBtYXhEYXRlICE9IG51bGwgPyBpc0RhdGVJbkRhdGVSYW5nZUZ1bmN0aW9uKHsgc3RhcnQ6IG1pbkRhdGUgPz8gdW5kZWZpbmVkLCBlbmQ6IG1heERhdGUgPz8gdW5kZWZpbmVkIH0pIDogKCkgPT4gdHJ1ZTtcblxuICBpZiAoIWlzVmFsaWRSYW5nZShpbnB1dFN0YXJ0KSB8fCAhaXNWYWxpZFJhbmdlKGlucHV0RW5kKSB8fCAoaXNTYW1lRGF0ZURheShpbnB1dFN0YXJ0LCBjdXJyZW50SW5wdXRTdGFydCkgJiYgaXNTYW1lRGF0ZURheShpbnB1dEVuZCwgY3VycmVudElucHV0RW5kKSkpIHtcbiAgICByZXR1cm4gc3RhdGU7IC8vIGlmIG5vIGNoYW5nZSwgcmV0dXJuIHRoZSBjdXJyZW50IHN0YXRlLlxuICB9XG5cbiAgLy8gcmV0YWluIGFsbCBpbmRleGVzIHRoYXQgYXJlIHdpdGhpbiB0aGUgbmV3IHJhbmdlXG4gIGNvbnN0IG1pbkluZGV4ID0gaW5kZXhGYWN0b3J5KGlucHV0U3RhcnQpO1xuICBjb25zdCBtYXhJbmRleCA9IGluZGV4RmFjdG9yeShpbnB1dEVuZCkgKyAxO1xuXG4gIGNvbnN0IGN1cnJlbnRJbmRleGVzOiBEYXRlQmxvY2tJbmRleFtdID0gQXJyYXkuZnJvbShzdGF0ZS50b2dnbGVkSW5kZXhlcyk7XG4gIGNvbnN0IGlzSW5DdXJyZW50UmFuZ2UgPSBpc0luZGV4TnVtYmVySW5JbmRleFJhbmdlRnVuY3Rpb24oeyBtaW5JbmRleCwgbWF4SW5kZXggfSk7XG4gIGNvbnN0IGV4Y2x1ZGVkSW5kZXhlc0luTmV3UmFuZ2UgPSBjdXJyZW50SW5kZXhlcy5maWx0ZXIoaXNJbkN1cnJlbnRSYW5nZSk7XG4gIGNvbnN0IHRvZ2dsZWRJbmRleGVzID0gbmV3IFNldChleGNsdWRlZEluZGV4ZXNJbk5ld1JhbmdlKTtcblxuICBjb25zdCBuZXh0U3RhdGUgPSB7IC4uLnN0YXRlLCB0b2dnbGVkSW5kZXhlcywgaW5wdXRTdGFydCwgaW5wdXRFbmQgfTtcbiAgcmV0dXJuIGZpbmFsaXplTmV3Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlKG5leHRTdGF0ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5hbGl6ZU5ld0NhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZShuZXh0U3RhdGU6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSk6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSB7XG4gIG5leHRTdGF0ZS5pc0VuYWJsZWREYXkgPSBpc0VuYWJsZWREYXlJbkNhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZShuZXh0U3RhdGUpO1xuICBuZXh0U3RhdGUuY3VycmVudFNlbGVjdGlvblZhbHVlID0gY29tcHV0ZVNjaGVkdWxlU2VsZWN0aW9uVmFsdWUobmV4dFN0YXRlKTtcbiAgcmV0dXJuIG5leHRTdGF0ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW5hYmxlZERheUluQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlKHN0YXRlOiBDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUpOiBEZWNpc2lvbkZ1bmN0aW9uPERhdGVUaW1pbmdSZWxhdGl2ZUluZGV4RmFjdG9yeUlucHV0PiB7XG4gIGNvbnN0IHsgYWxsb3dlZERheXNPZldlZWssIGluZGV4RmFjdG9yeSwgaW5wdXRTdGFydCwgaW5wdXRFbmQsIGluZGV4RGF5T2ZXZWVrIH0gPSBzdGF0ZTtcbiAgbGV0IGlzSW5TdGFydEFuZEVuZFJhbmdlOiBJc0RhdGVXaXRoaW5EYXRlQmxvY2tSYW5nZUZ1bmN0aW9uO1xuXG4gIGlmIChpbnB1dFN0YXJ0ICYmIGlucHV0RW5kKSB7XG4gICAgaXNJblN0YXJ0QW5kRW5kUmFuZ2UgPSBpc0RhdGVXaXRoaW5EYXRlQmxvY2tSYW5nZUZ1bmN0aW9uKHsgc3RhcnQ6IHN0YXRlLnN0YXJ0LCByYW5nZTogeyBzdGFydDogaW5wdXRTdGFydCwgZW5kOiBpbnB1dEVuZCB9IH0pO1xuICB9IGVsc2Uge1xuICAgIGlzSW5TdGFydEFuZEVuZFJhbmdlID0gKCkgPT4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gKGlucHV0OiBEYXRlVGltaW5nUmVsYXRpdmVJbmRleEZhY3RvcnlJbnB1dCkgPT4ge1xuICAgIGNvbnN0IGluZGV4ID0gaW5kZXhGYWN0b3J5KGlucHV0KTtcbiAgICBjb25zdCBkYXlPZldlZWsgPSBpbmRleERheU9mV2VlayhpbmRleCk7XG5cbiAgICBjb25zdCBpc0luU2VsZWN0ZWRSYW5nZSA9IGlzSW5TdGFydEFuZEVuZFJhbmdlKGluZGV4KTtcbiAgICBjb25zdCBpc1NlbGVjdGVkID0gc3RhdGUudG9nZ2xlZEluZGV4ZXMuaGFzKGluZGV4KTtcbiAgICBjb25zdCBpc0FsbG93ZWREYXlPZldlZWsgPSBhbGxvd2VkRGF5c09mV2Vlay5oYXMoZGF5T2ZXZWVrKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGlzQWxsb3dlZERheU9mV2VlayAmJiAoKGlzSW5TZWxlY3RlZFJhbmdlICYmICFpc1NlbGVjdGVkKSB8fCAoaXNTZWxlY3RlZCAmJiAhaXNJblNlbGVjdGVkUmFuZ2UpKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVNjaGVkdWxlU2VsZWN0aW9uVmFsdWUoc3RhdGU6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSk6IE1heWJlPENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25WYWx1ZT4ge1xuICBjb25zdCB7IGluZGV4RmFjdG9yeSwgYWxsb3dlZERheXNPZldlZWssIGVmZmVjdGl2ZVNjaGVkdWxlRGF5cywgaW5kZXhEYXlPZldlZWssIGNvbXB1dGVTZWxlY3Rpb25SZXN1bHRSZWxhdGl2ZVRvRmlsdGVyLCBmaWx0ZXIgfSA9IHN0YXRlO1xuICBjb25zdCByYW5nZUFuZEV4Y2x1c2lvbiA9IGNvbXB1dGVTY2hlZHVsZVNlbGVjdGlvblJhbmdlQW5kRXhjbHVzaW9uKHN0YXRlKTtcblxuICBpZiAocmFuZ2VBbmRFeGNsdXNpb24gPT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgeyBzdGFydDogcmFuZ2VTdGFydCwgZW5kOiByYW5nZUVuZCwgZXhjbHVkZWQ6IGFsbEV4Y2x1ZGVkLCBkYXRlQmxvY2tSYW5nZSB9ID0gcmFuZ2VBbmRFeGNsdXNpb247XG4gIGxldCBmaWx0ZXJPZmZzZXRFeGNsdWRlZFJhbmdlOiBEYXRlQmxvY2tJbmRleFtdID0gW107XG4gIGxldCBpbmRleE9mZnNldCA9IGRhdGVCbG9ja1JhbmdlLmk7XG5cbiAgbGV0IHN0YXJ0ID0gcmFuZ2VTdGFydDtcbiAgbGV0IGVuZCA9IHJhbmdlRW5kO1xuXG4gIC8vIElmIGNvbXB1dGVTZWxlY3Rpb25SZXN1bHRSZWxhdGl2ZVRvRmlsdGVyIGlzIHRydWUsIHRoZW4gd2UgbmVlZCB0byBvZmZzZXQgdGhlIHZhbHVlcyB0byBiZSByZWxhdGl2ZSB0byB0aGF0IHN0YXJ0LlxuICBpZiAoY29tcHV0ZVNlbGVjdGlvblJlc3VsdFJlbGF0aXZlVG9GaWx0ZXIgJiYgZmlsdGVyPy5zdGFydCkge1xuICAgIHN0YXJ0ID0gZmlsdGVyLnN0YXJ0O1xuXG4gICAgaWYgKGZpbHRlcj8uZW5kKSB7XG4gICAgICBlbmQgPSBjb3B5SG91cnNBbmRNaW51dGVzRnJvbURhdGUoZW5kLCBmaWx0ZXIuZW5kKTtcbiAgICB9XG5cbiAgICBjb25zdCBmaWx0ZXJTdGFydEluZGV4T2Zmc2V0ID0gaW5kZXhGYWN0b3J5KHJhbmdlU3RhcnQpIC0gaW5kZXhGYWN0b3J5KHN0YXJ0KTtcbiAgICBmaWx0ZXJPZmZzZXRFeGNsdWRlZFJhbmdlID0gcmFuZ2UoMCwgZmlsdGVyU3RhcnRJbmRleE9mZnNldCk7XG4gICAgaW5kZXhPZmZzZXQgPSBpbmRleE9mZnNldCAtIGZpbHRlclN0YXJ0SW5kZXhPZmZzZXQ7XG4gIH1cblxuICBjb25zdCBleGNsdWRlZCA9IGNvbXB1dGVTZWxlY3Rpb25SZXN1bHRSZWxhdGl2ZVRvRmlsdGVyXG4gICAgPyBhbGxFeGNsdWRlZC5maWx0ZXIoKHgpID0+IHtcbiAgICAgICAgY29uc3QgaXNFeGNsdWRlZEluZGV4ID0gYWxsb3dlZERheXNPZldlZWsuaGFzKGluZGV4RGF5T2ZXZWVrKHgpKTsgLy8gPz8/XG4gICAgICAgIHJldHVybiBpc0V4Y2x1ZGVkSW5kZXg7XG4gICAgICB9KVxuICAgIDogYWxsRXhjbHVkZWQ7XG5cbiAgY29uc3Qgb2Zmc2V0RXhjbHVkZWQ6IERhdGVCbG9ja0luZGV4W10gPSBleGNsdWRlZC5tYXAoKHgpID0+IHggLSBpbmRleE9mZnNldCk7IC8vIHNldCB0byB0aGUgcHJvcGVyIG9mZnNldFxuXG4gIGNvbnN0IGV4ID0gWy4uLmZpbHRlck9mZnNldEV4Y2x1ZGVkUmFuZ2UsIC4uLm9mZnNldEV4Y2x1ZGVkXTtcblxuICBjb25zdCB3OiBEYXRlU2NoZWR1bGVFbmNvZGVkV2VlayA9IGRhdGVTY2hlZHVsZUVuY29kZWRXZWVrKGVmZmVjdGl2ZVNjaGVkdWxlRGF5cyk7XG4gIGNvbnN0IGQ6IERhdGVCbG9ja0luZGV4W10gPSBbXTsgLy8gXCJpbmNsdWRlZFwiIGJsb2NrcyBhcmUgbmV2ZXIgdXNlZC9jYWxjdWxhdGVkLlxuXG4gIC8vIEFsd2F5cyBlbnN1cmUgdGhlIGVuZCBpcyBhZnRlciBvciBlcXVhbCB0byB0aGUgc3RhcnQuXG4gIGlmIChpc0JlZm9yZShlbmQsIHN0YXJ0KSkge1xuICAgIGVuZCA9IHN0YXJ0OyAvLyBlbmQgaXMgc3RhcnRcbiAgfVxuXG4gIGNvbnN0IGRhdGVTY2hlZHVsZVJhbmdlOiBEYXRlU2NoZWR1bGVSYW5nZSA9IHtcbiAgICBzdGFydCxcbiAgICBlbmQsXG4gICAgdyxcbiAgICBkLFxuICAgIGV4XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBkYXRlU2NoZWR1bGVSYW5nZSxcbiAgICBtaW5NYXhSYW5nZTogeyBzdGFydCwgZW5kIH1cbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uUmFuZ2VBbmRFeGNsdXNpb24gZXh0ZW5kcyBEYXRlUmFuZ2Uge1xuICBkYXRlQmxvY2tSYW5nZTogRGF0ZUJsb2NrUmFuZ2VXaXRoUmFuZ2U7XG4gIGV4Y2x1ZGVkOiBEYXRlQmxvY2tJbmRleFtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVNjaGVkdWxlU2VsZWN0aW9uUmFuZ2VBbmRFeGNsdXNpb24oc3RhdGU6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSk6IE1heWJlPENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25SYW5nZUFuZEV4Y2x1c2lvbj4ge1xuICBjb25zdCB7IGlzRW5hYmxlZERheSwgaXNFbmFibGVkRmlsdGVyRGF5IH0gPSBzdGF0ZTtcbiAgY29uc3QgZGF0ZUZhY3RvcnkgPSBkYXRlQmxvY2tUaW1pbmdEYXRlRmFjdG9yeShzdGF0ZSk7XG4gIGNvbnN0IGRhdGVCbG9ja1JhbmdlID0gY29tcHV0ZUNhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25EYXRlQmxvY2tSYW5nZShzdGF0ZSk7XG5cbiAgaWYgKGRhdGVCbG9ja1JhbmdlID09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDsgLy8gcmV0dXJucyBudWxsIGlmIG5vIGl0ZW1zIGFyZSBzZWxlY3RlZC5cbiAgfVxuXG4gIGNvbnN0IHN0YXJ0ID0gZGF0ZUZhY3RvcnkoZGF0ZUJsb2NrUmFuZ2UuaSk7XG4gIGNvbnN0IGVuZCA9IGRhdGVGYWN0b3J5KGRhdGVCbG9ja1JhbmdlLnRvKTtcblxuICBjb25zdCBleGNsdWRlZDogRGF0ZUJsb2NrSW5kZXhbXSA9IHJhbmdlKGRhdGVCbG9ja1JhbmdlLmksIGRhdGVCbG9ja1JhbmdlLnRvICsgMSkuZmlsdGVyKCh4KSA9PiB7XG4gICAgY29uc3QgaXNFeGNsdWRlZEluZGV4ID0gIWlzRW5hYmxlZERheSh4KSB8fCAhaXNFbmFibGVkRmlsdGVyRGF5KHgpO1xuICAgIHJldHVybiBpc0V4Y2x1ZGVkSW5kZXg7XG4gIH0pO1xuXG4gIGNvbnN0IHJlc3VsdDogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblJhbmdlQW5kRXhjbHVzaW9uID0ge1xuICAgIGRhdGVCbG9ja1JhbmdlLFxuICAgIHN0YXJ0LFxuICAgIGVuZCxcbiAgICBleGNsdWRlZFxuICB9O1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblJhbmdlKHN0YXRlOiBDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUpOiBNYXliZTxEYXRlUmFuZ2U+IHtcbiAgY29uc3QgZGF0ZUZhY3RvcnkgPSBkYXRlQmxvY2tUaW1pbmdEYXRlRmFjdG9yeShzdGF0ZSk7XG4gIGNvbnN0IGRhdGVCbG9ja1JhbmdlID0gY29tcHV0ZUNhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25EYXRlQmxvY2tSYW5nZShzdGF0ZSk7XG4gIGNvbnN0IGRhdGVSYW5nZTogTWF5YmU8RGF0ZVJhbmdlPiA9IGRhdGVCbG9ja1JhbmdlICE9IG51bGwgPyB7IHN0YXJ0OiBkYXRlRmFjdG9yeShkYXRlQmxvY2tSYW5nZS5pKSwgZW5kOiBkYXRlRmFjdG9yeShkYXRlQmxvY2tSYW5nZS50byBhcyBudW1iZXIpIH0gOiB1bmRlZmluZWQ7XG4gIHJldHVybiBkYXRlUmFuZ2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvbkRhdGVCbG9ja1JhbmdlKHN0YXRlOiBDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUpOiBNYXliZTxEYXRlQmxvY2tSYW5nZVdpdGhSYW5nZT4ge1xuICBjb25zdCB7IGFsbG93ZWREYXlzT2ZXZWVrLCBpbmRleEZhY3RvcnksIGlucHV0U3RhcnQsIGlucHV0RW5kLCBpbmRleERheU9mV2VlaywgaXNFbmFibGVkRGF5LCBpc0VuYWJsZWRGaWx0ZXJEYXkgfSA9IHN0YXRlO1xuICBjb25zdCBlbmFibGVkRXhjbHVzaW9uSW5kZXhlcyA9IEFycmF5LmZyb20oc3RhdGUudG9nZ2xlZEluZGV4ZXMpLmZpbHRlcigoaSkgPT4gYWxsb3dlZERheXNPZldlZWsuaGFzKGluZGV4RGF5T2ZXZWVrKGkpKSk7XG4gIGNvbnN0IG1pbkFuZE1heFNlbGVjdGVkVmFsdWVzID0gbWluQW5kTWF4TnVtYmVyKGVuYWJsZWRFeGNsdXNpb25JbmRleGVzKTtcblxuICBsZXQgc3RhcnRSYW5nZTogTWF5YmU8RGF0ZUJsb2NrSW5kZXg+O1xuICBsZXQgZW5kUmFuZ2U6IE1heWJlPERhdGVCbG9ja0luZGV4PjtcblxuICBpZiAobWluQW5kTWF4U2VsZWN0ZWRWYWx1ZXMpIHtcbiAgICBzdGFydFJhbmdlID0gbWluQW5kTWF4U2VsZWN0ZWRWYWx1ZXMubWluO1xuICAgIGVuZFJhbmdlID0gbWluQW5kTWF4U2VsZWN0ZWRWYWx1ZXMubWF4O1xuICB9XG5cbiAgaWYgKGlucHV0U3RhcnQgIT0gbnVsbCAmJiBpbnB1dEVuZCAhPSBudWxsKSB7XG4gICAgY29uc3QgaW5wdXRTdGFydEluZGV4ID0gaW5kZXhGYWN0b3J5KGlucHV0U3RhcnQpO1xuICAgIGNvbnN0IGlucHV0RW5kSW5kZXggPSBpbmRleEZhY3RvcnkoaW5wdXRFbmQpO1xuXG4gICAgc3RhcnRSYW5nZSA9IHN0YXJ0UmFuZ2UgIT0gbnVsbCA/IE1hdGgubWluKGlucHV0U3RhcnRJbmRleCwgc3RhcnRSYW5nZSkgOiBpbnB1dFN0YXJ0SW5kZXg7XG4gICAgZW5kUmFuZ2UgPSBlbmRSYW5nZSAhPSBudWxsID8gTWF0aC5tYXgoaW5wdXRFbmRJbmRleCwgZW5kUmFuZ2UpIDogaW5wdXRFbmRJbmRleDtcbiAgfVxuXG4gIGlmIChzdGFydFJhbmdlICE9IG51bGwgJiYgZW5kUmFuZ2UgIT0gbnVsbCkge1xuICAgIGNvbnN0IHNjYW5TdGFydEluZGV4ID0gc3RhcnRSYW5nZTtcbiAgICBjb25zdCBzY2FuRW5kSW5kZXggPSBlbmRSYW5nZTtcblxuICAgIC8vIGNsZWFyIHN0YXJ0IGFuZCBlbmRcbiAgICBzdGFydFJhbmdlID0gdW5kZWZpbmVkO1xuICAgIGVuZFJhbmdlID0gdW5kZWZpbmVkO1xuXG4gICAgLy8gaWYgdGhlIG1pbiBpcyBlcXVhbCB0byB0aGUgc3RhcnQgaW5kZXgsIHRoZW4gd2UgYXJlIGluIHRoZSByYW5nZSBhbmQgbmVlZCB0byBpdGVyYXRlIGRhdGVzIHVudGlsIHdlIGZpbmQgb25lIHRoYXQgaXMgbm90IHNlbGVjdGVkL2V4Y2x1ZGVkLlxuICAgIGZvciAobGV0IGkgPSBzY2FuU3RhcnRJbmRleDsgaSA8PSBzY2FuRW5kSW5kZXg7IGkgKz0gMSkge1xuICAgICAgaWYgKGlzRW5hYmxlZEZpbHRlckRheShpKSAmJiBpc0VuYWJsZWREYXkoaSkpIHtcbiAgICAgICAgc3RhcnRSYW5nZSA9IGk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHNhbWUgd2l0aCB0aGUgbWF4XG4gICAgZm9yIChsZXQgaSA9IHNjYW5FbmRJbmRleDsgaSA+PSBzY2FuU3RhcnRJbmRleDsgaSAtPSAxKSB7XG4gICAgICBpZiAoaXNFbmFibGVkRmlsdGVyRGF5KGkpICYmIGlzRW5hYmxlZERheShpKSkge1xuICAgICAgICBlbmRSYW5nZSA9IGk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChzdGFydFJhbmdlICE9IG51bGwgJiYgZW5kUmFuZ2UgIT0gbnVsbCkge1xuICAgIHJldHVybiB7IGk6IHN0YXJ0UmFuZ2UsIHRvOiBlbmRSYW5nZSB9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cbiJdfQ==
598
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLnN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vY2FsZW5kYXIvc3JjL2xpYi9jYWxlbmRhci5zY2hlZHVsZS5zZWxlY3Rpb24uc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBRUwseUJBQXlCLEVBR3pCLDBCQUEwQixFQUcxQixzQkFBc0IsRUFDdEIsZ0NBQWdDLEVBRWhDLG1CQUFtQixFQUNuQix1QkFBdUIsRUFJdkIsOEJBQThCLEVBQzlCLDBCQUEwQixFQUMxQix3Q0FBd0MsRUFDeEMsV0FBVyxFQUNYLFdBQVcsRUFDWCx5QkFBeUIsRUFFekIsa0NBQWtDLEVBQ2xDLFVBQVUsRUFDVixhQUFhLEVBQ2IsZUFBZSxFQUNmLHVCQUF1QixFQUV2QixtQ0FBbUMsRUFDbkMsbUJBQW1CLEVBQ25CLDJCQUEyQixFQUMzQixxQkFBcUIsRUFFckIsdUJBQXVCLEVBR3ZCLHdCQUF3QixFQUV4QixxQ0FBcUMsRUFFckMsNEJBQTRCLEVBQzVCLDJCQUEyQixFQUM1QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsK0JBQStCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBNEQsZUFBZSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsaUNBQWlDLEVBQVksZUFBZSxFQUFnQyxLQUFLLEVBQXNCLE1BQU0sRUFBRSxXQUFXLEVBQWdCLGFBQWEsRUFBdUMsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9WLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDMUQsT0FB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QkFBb0I7UUFDcEIsS0FBSyxJQUFJLENBQUMsR0FBRyxZQUFZLEVBQUUsQ0FBQyxJQUFJLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3RELElBQUksa0JBQWtCLENBQUMsQ0FBQyxDQUFDLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUM1QyxRQUFRLEdBQUcsQ0FBQyxDQUFDO2dCQUNiLE1BQU07YUFDUDtTQUNGO0tBQ0Y7SUFFRCxJQUFJLFVBQVUsSUFBSSxJQUFJLElBQUksUUFBUSxJQUFJLElBQUksRUFBRTtRQUMxQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUM7S0FDeEM7U0FBTTtRQUNMLE9BQU8sU0FBUyxDQUFDO0tBQ2xCO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIERhdGVCbG9ja0RheU9mV2Vla0ZhY3RvcnksXG4gIGRhdGVCbG9ja0RheU9mV2Vla0ZhY3RvcnksXG4gIERhdGVCbG9ja0luZGV4LFxuICBEYXRlQmxvY2tSYW5nZVdpdGhSYW5nZSxcbiAgZGF0ZUJsb2NrVGltaW5nRGF0ZUZhY3RvcnksXG4gIERhdGVPckRhdGVCbG9ja0luZGV4LFxuICBEYXRlUmFuZ2UsXG4gIGRhdGVTY2hlZHVsZURhdGVGaWx0ZXIsXG4gIGNvcHlEYXRlU2NoZWR1bGVEYXRlRmlsdGVyQ29uZmlnLFxuICBEYXRlU2NoZWR1bGVEYXRlRmlsdGVyQ29uZmlnLFxuICBEYXRlU2NoZWR1bGVEYXlDb2RlLFxuICBkYXRlU2NoZWR1bGVFbmNvZGVkV2VlayxcbiAgRGF0ZVNjaGVkdWxlRW5jb2RlZFdlZWssXG4gIERhdGVTY2hlZHVsZVJhbmdlLFxuICBEYXRlVGltaW5nUmVsYXRpdmVJbmRleEZhY3RvcnksXG4gIGRhdGVUaW1pbmdSZWxhdGl2ZUluZGV4RmFjdG9yeSxcbiAgZXhwYW5kRGF0ZVNjaGVkdWxlRGF5Q29kZXMsXG4gIGV4cGFuZERhdGVTY2hlZHVsZURheUNvZGVzVG9EYXlPZldlZWtTZXQsXG4gIGZpbmRNYXhEYXRlLFxuICBmaW5kTWluRGF0ZSxcbiAgaXNEYXRlSW5EYXRlUmFuZ2VGdW5jdGlvbixcbiAgSXNEYXRlV2l0aGluRGF0ZUJsb2NrUmFuZ2VGdW5jdGlvbixcbiAgaXNEYXRlV2l0aGluRGF0ZUJsb2NrUmFuZ2VGdW5jdGlvbixcbiAgaXNTYW1lRGF0ZSxcbiAgaXNTYW1lRGF0ZURheSxcbiAgaXNTYW1lRGF0ZVJhbmdlLFxuICBpc1NhbWVEYXRlU2NoZWR1bGVSYW5nZSxcbiAgRGF0ZU9yRGF0ZVJhbmdlT3JEYXRlQmxvY2tJbmRleE9yRGF0ZUJsb2NrUmFuZ2UsXG4gIGRhdGVUaW1pbmdSZWxhdGl2ZUluZGV4QXJyYXlGYWN0b3J5LFxuICBpc0luZmluaXRlRGF0ZVJhbmdlLFxuICBjb3B5SG91cnNBbmRNaW51dGVzRnJvbURhdGUsXG4gIGRhdGVUaW1lem9uZVV0Y05vcm1hbCxcbiAgRGF0ZVRpbWV6b25lVXRjTm9ybWFsSW5zdGFuY2UsXG4gIGV4cGFuZERhdGVTY2hlZHVsZVJhbmdlLFxuICBEYXRlQmxvY2ssXG4gIERhdGVCbG9ja0R1cmF0aW9uU3BhbixcbiAgZm9ybWF0VG9JU084NjAxRGF5U3RyaW5nLFxuICBEYXRlVGltaW5nUmVsYXRpdmVJbmRleEZhY3RvcnlJbnB1dCxcbiAgZGF0ZVNjaGVkdWxlRGF5Q29kZXNBcmVTZXRzRXF1aXZhbGVudCxcbiAgZGF0ZVNjaGVkdWxlRGF5Q29kZXNTZXRGcm9tRGF5c09mV2VlayxcbiAgc2ltcGxpZnlEYXRlU2NoZWR1bGVEYXlDb2RlcyxcbiAgZnVsbFdlZWtEYXlTY2hlZHVsZURheUNvZGVzXG59IGZyb20gJ0BkZXJlZWtiL2RhdGUnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbEhhc0RpZmZlcmVudFZhbHVlcywgZmlsdGVyTWF5YmUgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IE1heWJlLCBUaW1lem9uZVN0cmluZywgRGVjaXNpb25GdW5jdGlvbiwgSXRlcmFibGVPclZhbHVlLCBpdGVyYWJsZVRvQXJyYXksIGFkZFRvU2V0LCB0b2dnbGVJblNldCwgaXNJbmRleE51bWJlckluSW5kZXhSYW5nZUZ1bmN0aW9uLCBNYXliZU1hcCwgbWluQW5kTWF4TnVtYmVyLCBzZXRzQXJlRXF1aXZhbGVudCwgRGF5T2ZXZWVrLCByYW5nZSwgQWxsT3JOb25lU2VsZWN0aW9uLCB1bmlxdWUsIG1lcmdlQXJyYXlzLCBBcnJheU9yVmFsdWUsIHJlbW92ZUZyb21TZXQsIElTTzg2MDFEYXlTdHJpbmcsIGZpbHRlclZhbHVlc1RvU2V0LCBtYXBWYWx1ZXNUb1NldCB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgQ29tcG9uZW50U3RvcmUgfSBmcm9tICdAbmdyeC9jb21wb25lbnQtc3RvcmUnO1xuaW1wb3J0IHsgc3RhcnRPZkRheSwgZW5kT2ZEYXksIGlzQmVmb3JlIH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCwgdGFwLCBmaXJzdCwgY29tYmluZUxhdGVzdFdpdGgsIG9mLCBzY2hlZHVsZWQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25DZWxsQ29udGVudEZhY3RvcnksIENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25WYWx1ZSwgZGVmYXVsdENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25DZWxsQ29udGVudEZhY3RvcnkgfSBmcm9tICcuL2NhbGVuZGFyLnNjaGVkdWxlLnNlbGVjdGlvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvbklucHV0RGF0ZVJhbmdlIHtcbiAgLyoqXG4gICAqIElucHV0IFN0YXJ0IERhdGVcbiAgICovXG4gIGlucHV0U3RhcnQ6IERhdGU7XG4gIC8qKlxuICAgKiBJbnB1dCBFbmQgRGF0ZVxuICAgKi9cbiAgaW5wdXRFbmQ6IERhdGU7XG59XG5cbmV4cG9ydCB0eXBlIFBhcnRpYWxDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uSW5wdXREYXRlUmFuZ2UgPSBQYXJ0aWFsPE1heWJlTWFwPENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25JbnB1dERhdGVSYW5nZT4+O1xuXG5leHBvcnQgaW50ZXJmYWNlIENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSBleHRlbmRzIFBhcnRpYWxDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uSW5wdXREYXRlUmFuZ2Uge1xuICAvKipcbiAgICogUmVhZG9ubHkgc3RhdGUgb2YgdGhlIHZpZXcuXG4gICAqXG4gICAqIERvZXMgbm90IGFmZmVjdCBzdGF0ZSBjaGFuZ2VzIGRpcmVjdGx5LCBidXQgaW5zdGVhZCBhY3RzIGFzIGEgZmxhZyBmb3IgdGhlIHBhcmVudCB2aWV3IHRvIHNldCBhbmQgdGhlIGNvbnN1bWluZyB2aWV3cyB0byB1cGRhdGUgb24uXG4gICAqL1xuICBpc1ZpZXdSZWFkb25seT86IE1heWJlPGJvb2xlYW4+O1xuICAvKipcbiAgICogU2V0IG9mIHRoZSBkYXlzIG9mIHdlZWsgdGhhdCBhcmUgYWxsb3dlZCBieSBkZWZhdWx0LlxuICAgKi9cbiAgZGVmYXVsdFNjaGVkdWxlRGF5czogU2V0PERhdGVTY2hlZHVsZURheUNvZGU+O1xuICAvKipcbiAgICogRmlsdGVycyB0aGUgZGF5cyBvZiB0aGUgc2NoZWR1bGUgdG8gb25seSBhbGxvdyBzZWxlY3RpbmcgZGF5cyBpbiB0aGUgc2NoZWR1bGUuXG4gICAqXG4gICAqIElmIGZpbHRlci5zdGFydCBpcyBwcm92aWRlZCwgdGhlbiB0aGUgdGltZXpvbmUgaXMgaWdub3JlZCwgaWYgb25lIGlzIHByZXNlbnQuXG4gICAqL1xuICBmaWx0ZXI/OiBNYXliZTxEYXRlU2NoZWR1bGVEYXRlRmlsdGVyQ29uZmlnPjtcbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZXhjbHVzaW9ucyB0aGF0IG1heSBub3QgYmUgZGVmaW5lZCB3aXRoaW4gdGhlIGZpbHRlci5cbiAgICovXG4gIGlucHV0RXhjbHVzaW9ucz86IE1heWJlPEFycmF5T3JWYWx1ZTxEYXRlT3JEYXRlUmFuZ2VPckRhdGVCbG9ja0luZGV4T3JEYXRlQmxvY2tSYW5nZT4+O1xuICAvKipcbiAgICogVGhlIGNvbXB1dGVkIGV4Y2x1c2lvbnMgZ2l2ZW4gdGhlIGlucHV0IGV4Y2x1c2lvbnMuXG4gICAqL1xuICBjb21wdXRlZEV4Y2x1c2lvbnM/OiBNYXliZTxEYXRlQmxvY2tJbmRleFtdPjtcbiAgLyoqXG4gICAqIFRoZSBtaW4vbWF4IGRhdGUgcmFuZ2UuIFVzZWQgZm9yIHJlc3RyaWN0aW5nIHRoZSBtaW4vbWF4IHZhbHVlLiBXb3JrcyB3aXRoIHRoZSBmaWx0ZXIuIFRoZSBncmVhdGVyL2xlc3NlciBvZiB0aGUgc3RhcnQvZW5kIGRhdGVzIGFyZSB1c2VkIGlmIGJvdGggYXJlIHByb3ZpZGVkLlxuICAgKi9cbiAgbWluTWF4RGF0ZVJhbmdlPzogTWF5YmU8UGFydGlhbDxEYXRlUmFuZ2U+PjtcbiAgLyoqXG4gICAqIFN0YXJ0IGRhdGUuIElzIHVwZGF0ZWQgYXMgdGhlIGlucHV0U3RhcnQgaXMgbW9kaWZpZWQgb3IgZmlsdGVyIGlzIHByb3ZpZGVkIHRoYXQgcHJvdmlkZXMgdGhlIHN0YXJ0IGRhdGUuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIHRvZGF5IGFuZCB0aGUgY3VycmVudCB0aW1lem9uZS5cbiAgICovXG4gIHN0YXJ0OiBEYXRlO1xuICAvKipcbiAgICogVGltZXpvbmUgdG8gdXNlLiBPbmx5SW5mbHVlbmNlcyB0aGUgb3V0cHV0IHN0YXJ0IGRhdGUuXG4gICAqL1xuICB0aW1lem9uZT86IE1heWJlPFRpbWV6b25lU3RyaW5nPjtcbiAgLyoqXG4gICAqIEN1cnJlbnQgdGltZXpvbmUgbm9ybWFsIHdpdGggdGhlIGN1cnJlbnQgdGltZXpvbmUuXG4gICAqL1xuICB0aW1lem9uZU5vcm1hbD86IE1heWJlPERhdGVUaW1lem9uZVV0Y05vcm1hbEluc3RhbmNlPjtcbiAgLyoqXG4gICAqIERhdGVUaW1pbmdSZWxhdGl2ZUluZGV4RmFjdG9yeVxuICAgKi9cbiAgaW5kZXhGYWN0b3J5OiBEYXRlVGltaW5nUmVsYXRpdmVJbmRleEZhY3Rvcnk7XG4gIC8qKlxuICAgKiBBcnJheSBvZiBtYW51YWxseSBzZWxlY3RlZCBkYXRlcyB3aXRoaW4gdGhlIHBpY2tlZCByYW5nZS4gVGhpcyBpcyBOT1QgdGhlIHNldCBvZiBhbGwgc2VsZWN0ZWQgaW5kZXhlcyBpbiB0ZXJtcyBvZiBvdXRwdXQuXG4gICAqXG4gICAqIFZhbHVlcyB0aGF0IGV4aXN0IG91dHNpZGUgb2YgdGhlIFwiaW5wdXRcIiByYW5nZSBhcmUgY29uc2lkZXJlZCB0b2dnbGVkIG9uLCB3aGlsZSB0aG9zZVxuICAgKiB0aGF0IGFyZSBzZWxlY3RlZCB3aXRoaW4gdGhlIHJhbmdlIGFyZSBjb25zaWRlcmVkIHRvZ2dsZWQgb2ZmLlxuICAgKlxuICAgKiBJZiBkYXRlcyBhcmUgc2VsZWN0ZWQsIGFuZCB0aGVuIGEgcmFuZ2UgaXMgc2VsZWN0ZWQsIHRoZW4gdGhvc2UgZGF0ZXMgd2l0aGluIHRoZSByYW5nZSB0aGF0IGZhbGxcbiAgICogd2l0aGluIHRoZSByYW5nZSBhcmUgY2xlYXJlZCBmcm9tIHNlbGVjdGlvbi5cbiAgICpcbiAgICogVGhlc2UgaW5kZXhlcyBhcmUgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IGRhdGUuXG4gICAqL1xuICB0b2dnbGVkSW5kZXhlczogU2V0PERhdGVCbG9ja0luZGV4PjtcbiAgLyoqXG4gICAqIERheXMgb2YgdGhlIHNjaGVkdWxlIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUgcGlja2VkLiBJZiBub3QgZGVmaW5lZCwgZGVmYXVsdHMgdG8gZGVmYXVsdFNjaGVkdWxlRGF5cy5cbiAgICovXG4gIHNjaGVkdWxlRGF5cz86IE1heWJlPFNldDxEYXRlU2NoZWR1bGVEYXlDb2RlPj47XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBEYXRlU2NoZWR1bGVEYXlDb2RlIHZhbHVlLlxuICAgKi9cbiAgZWZmZWN0aXZlU2NoZWR1bGVEYXlzOiBTZXQ8RGF0ZVNjaGVkdWxlRGF5Q29kZT47XG4gIC8qKlxuICAgKiBTZXQgb2YgdGhlIGRheXMgb2Ygd2VlayB0aGF0IGFyZSBhbGxvd2VkLiBEZXJpdmVkIGZyb20gdGhlIGN1cnJlbnQgc2NoZWR1bGUgZGF5cyB2YWx1ZS5cbiAgICovXG4gIGFsbG93ZWREYXlzT2ZXZWVrOiBTZXQ8RGF5T2ZXZWVrPjtcbiAgLyoqXG4gICAqXG4gICAqL1xuICBpbmRleERheU9mV2VlazogRGF0ZUJsb2NrRGF5T2ZXZWVrRmFjdG9yeTtcbiAgLyoqXG4gICAqIERlY2lzaW9uIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0cnVlIGlmIGEgdmFsdWUgaXMgZW5hYmxlZCBnaXZlbiB0aGUgY3VycmVudCBmaWx0ZXIuXG4gICAqL1xuICBpc0VuYWJsZWRGaWx0ZXJEYXk6IERlY2lzaW9uRnVuY3Rpb248RGF0ZVRpbWluZ1JlbGF0aXZlSW5kZXhGYWN0b3J5SW5wdXQ+O1xuICAvKipcbiAgICogRGVjaXNpb24gZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRydWUgaWYgYSB2YWx1ZSBpcyBlbmFibGVkLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHRha2UgdGhlIGN1cnJlbnQgZmlsdGVyIGludG8gYWNjb3VudC5cbiAgICovXG4gIGlzRW5hYmxlZERheTogRGVjaXNpb25GdW5jdGlvbjxEYXRlVGltaW5nUmVsYXRpdmVJbmRleEZhY3RvcnlJbnB1dD47XG4gIC8qKlxuICAgKiBDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uQ2VsbENvbnRlbnRGYWN0b3J5IGZvciB0aGUgdmlldy5cbiAgICovXG4gIGNlbGxDb250ZW50RmFjdG9yeTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvbkNlbGxDb250ZW50RmFjdG9yeTtcbiAgLyoqXG4gICAqIEN1cnJlbnQgc2VsZWN0aW9uIHZhbHVlLlxuICAgKi9cbiAgY3VycmVudFNlbGVjdGlvblZhbHVlPzogTWF5YmU8Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblZhbHVlPjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIHVzZSB0aGUgZmlsdGVyIGFzIHRoZSBzdGFydCBhbmQgZW5kIHJhbmdlIGluc3RlYWQgb2Ygb3B0aW1pemluZyBmb3IgdGhlIGN1cnJlbnQgaW5kZXguXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIHRydWUuXG4gICAqL1xuICBjb21wdXRlU2VsZWN0aW9uUmVzdWx0UmVsYXRpdmVUb0ZpbHRlcj86IE1heWJlPGJvb2xlYW4+O1xuICAvKipcbiAgICogVGhlIGluaXRpYWwgc2VsZWN0aW9uIHN0YXRlIHdoZW4gdGhlIGNhbGVuZGFyIGlzIHJlc2V0LlxuICAgKi9cbiAgaW5pdGlhbFNlbGVjdGlvblN0YXRlPzogTWF5YmU8QWxsT3JOb25lU2VsZWN0aW9uPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUoKTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlIHtcbiAgY29uc3QgZGVmYXVsdFNjaGVkdWxlRGF5cyA9IG5ldyBTZXQoW0RhdGVTY2hlZHVsZURheUNvZGUuV0VFS0RBWSwgRGF0ZVNjaGVkdWxlRGF5Q29kZS5XRUVLRU5EXSk7XG4gIGNvbnN0IGFsbG93ZWREYXlzT2ZXZWVrID0gZXhwYW5kRGF0ZVNjaGVkdWxlRGF5Q29kZXNUb0RheU9mV2Vla1NldChkZWZhdWx0U2NoZWR1bGVEYXlzKTtcbiAgY29uc3Qgc3RhcnQgPSBzdGFydE9mRGF5KG5ldyBEYXRlKCkpO1xuICBjb25zdCBpbmRleEZhY3RvcnkgPSBkYXRlVGltaW5nUmVsYXRpdmVJbmRleEZhY3RvcnkoeyBzdGFydCB9KTtcbiAgY29uc3QgaW5kZXhEYXlPZldlZWsgPSBkYXRlQmxvY2tEYXlPZldlZWtGYWN0b3J5KHN0YXJ0KTtcblxuICByZXR1cm4ge1xuICAgIHN0YXJ0LFxuICAgIGluZGV4RmFjdG9yeSxcbiAgICB0b2dnbGVkSW5kZXhlczogbmV3IFNldCgpLFxuICAgIGRlZmF1bHRTY2hlZHVsZURheXMsXG4gICAgZWZmZWN0aXZlU2NoZWR1bGVEYXlzOiBkZWZhdWx0U2NoZWR1bGVEYXlzLFxuICAgIGFsbG93ZWREYXlzT2ZXZWVrLFxuICAgIGluZGV4RGF5T2ZXZWVrLFxuICAgIGlzRW5hYmxlZEZpbHRlckRheTogKCkgPT4gdHJ1ZSxcbiAgICBpc0VuYWJsZWREYXk6ICgpID0+IGZhbHNlLFxuICAgIGNvbXB1dGVTZWxlY3Rpb25SZXN1bHRSZWxhdGl2ZVRvRmlsdGVyOiB0cnVlLFxuICAgIGNlbGxDb250ZW50RmFjdG9yeTogZGVmYXVsdENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25DZWxsQ29udGVudEZhY3RvcnlcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGVuZGFyU2NoZWR1bGVNaW5EYXRlKHg6IFBpY2s8Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlLCAnZmlsdGVyJyB8ICdtaW5NYXhEYXRlUmFuZ2UnPik6IE1heWJlPERhdGU+IHtcbiAgcmV0dXJuIGZpbmRNYXhEYXRlKFt4LmZpbHRlcj8uc3RhcnQsIHgubWluTWF4RGF0ZVJhbmdlPy5zdGFydF0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FsZW5kYXJTY2hlZHVsZU1heERhdGUoeDogUGljazxDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUsICdmaWx0ZXInIHwgJ21pbk1heERhdGVSYW5nZSc+KTogTWF5YmU8RGF0ZT4ge1xuICByZXR1cm4gZmluZE1pbkRhdGUoW3guZmlsdGVyPy5lbmQsIHgubWluTWF4RGF0ZVJhbmdlPy5lbmRdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGVuZGFyU2NoZWR1bGVNaW5BbmRNYXhEYXRlUmFuZ2UoeDogUGljazxDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUsICdmaWx0ZXInIHwgJ21pbk1heERhdGVSYW5nZSc+KTogUGFydGlhbDxEYXRlUmFuZ2U+IHtcbiAgcmV0dXJuIHtcbiAgICBzdGFydDogY2FsZW5kYXJTY2hlZHVsZU1pbkRhdGUoeCkgfHwgdW5kZWZpbmVkLFxuICAgIGVuZDogY2FsZW5kYXJTY2hlZHVsZU1heERhdGUoeCkgfHwgdW5kZWZpbmVkXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWxlbmRhclNjaGVkdWxlU3RhcnRCZWluZ1VzZWRGcm9tRmlsdGVyKHg6IFBpY2s8Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlLCAnZmlsdGVyJyB8ICdjb21wdXRlU2VsZWN0aW9uUmVzdWx0UmVsYXRpdmVUb0ZpbHRlcic+KSB7XG4gIHJldHVybiB4LmNvbXB1dGVTZWxlY3Rpb25SZXN1bHRSZWxhdGl2ZVRvRmlsdGVyICYmIHguZmlsdGVyPy5zdGFydCAhPSBudWxsO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlIGV4dGVuZHMgQ29tcG9uZW50U3RvcmU8Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlPiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGluaXRpYWxDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUoKSk7XG4gIH1cblxuICAvLyBNQVJLOlxuICByZWFkb25seSB0b2dnbGVTZWxlY3Rpb24gPSB0aGlzLmVmZmVjdCgoaW5wdXQ6IE9ic2VydmFibGU8dm9pZD4pID0+IHtcbiAgICByZXR1cm4gaW5wdXQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICB0aGlzLm5leHRUb2dnbGVTZWxlY3Rpb24kLnBpcGUoXG4gICAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgICBmaWx0ZXJNYXliZSgpLFxuICAgICAgICAgIHRhcCgoeCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RBbGxEYXRlcyh4KTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgfSk7XG5cbiAgLy8gTUFSSzogQWNjZXNzb3JzXG4gIHJlYWRvbmx5IGZpbHRlciQgPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5maWx0ZXIpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBtaW5NYXhEYXRlUmFuZ2UkID0gdGhpcy5zdGF0ZSQucGlwZShtYXAoY2FsZW5kYXJTY2hlZHVsZU1pbkFuZE1heERhdGVSYW5nZSksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKGlzU2FtZURhdGVSYW5nZSksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBtaW5EYXRlJCA9IHRoaXMubWluTWF4RGF0ZVJhbmdlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geD8uc3RhcnQpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKGlzU2FtZURhdGVEYXkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG4gIHJlYWRvbmx5IG1heERhdGUkID0gdGhpcy5taW5NYXhEYXRlUmFuZ2UkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4Py5lbmQpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKGlzU2FtZURhdGVEYXkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgaGFzQ29uZmlndXJlZE1pbk1heFJhbmdlJCA9IHRoaXMubWluTWF4RGF0ZVJhbmdlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geCAhPSBudWxsICYmIHguc3RhcnQgIT0gbnVsbCAmJiB4LmVuZCAhPSBudWxsKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgaW5wdXRTdGFydCQgPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5pbnB1dFN0YXJ0KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChpc1NhbWVEYXRlKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGlucHV0RW5kJCA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmlucHV0RW5kKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChpc1NhbWVEYXRlKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRJbnB1dFJhbmdlJDogT2JzZXJ2YWJsZTxNYXliZTxDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uSW5wdXREYXRlUmFuZ2U+PiA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh7IGlucHV0U3RhcnQsIGlucHV0RW5kIH0pID0+ICh7IGlucHV0U3RhcnQsIGlucHV0RW5kIH0pKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gaXNTYW1lRGF0ZShhLmlucHV0U3RhcnQsIGIuaW5wdXRTdGFydCkgJiYgaXNTYW1lRGF0ZShhLmlucHV0RW5kLCBiLmlucHV0RW5kKSksXG4gICAgbWFwKCh4KSA9PiB7XG4gICAgICBpZiAoeC5pbnB1dFN0YXJ0ICYmIHguaW5wdXRFbmQpIHtcbiAgICAgICAgcmV0dXJuIHggYXMgQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvbklucHV0RGF0ZVJhbmdlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGlucHV0UmFuZ2UkOiBPYnNlcnZhYmxlPENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25JbnB1dERhdGVSYW5nZT4gPSB0aGlzLmN1cnJlbnRJbnB1dFJhbmdlJC5waXBlKGZpbHRlck1heWJlKCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVGhpcyBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIHZhbHVlLiBUaGlzIGlzIHRoZSBzZXQgb2YgbWFudWFsbHkgdG9nZ2VkIG9mZiBkYXRlcy4gSXQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHVwZGF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHNlbGVjdGVkRGF0ZXMkOiBPYnNlcnZhYmxlPFNldDxEYXRlQmxvY2tJbmRleD4+ID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHgudG9nZ2xlZEluZGV4ZXMpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBpc0VuYWJsZWRGaWx0ZXJEYXlGdW5jdGlvbiQ6IE9ic2VydmFibGU8RGVjaXNpb25GdW5jdGlvbjxEYXRlVGltaW5nUmVsYXRpdmVJbmRleEZhY3RvcnlJbnB1dD4+ID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHguaXNFbmFibGVkRmlsdGVyRGF5KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGlzRW5hYmxlZERheUZ1bmN0aW9uJDogT2JzZXJ2YWJsZTxEZWNpc2lvbkZ1bmN0aW9uPERhdGVUaW1pbmdSZWxhdGl2ZUluZGV4RmFjdG9yeUlucHV0Pj4gPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5pc0VuYWJsZWREYXkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgY3VycmVudERhdGVSYW5nZSQ6IE9ic2VydmFibGU8TWF5YmU8RGF0ZVJhbmdlPj4gPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcChjb21wdXRlQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblJhbmdlKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gaXNTYW1lRGF0ZVJhbmdlKGEsIGIpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGNvbXB1dGVTZWxlY3Rpb25SZXN1bHRSZWxhdGl2ZVRvRmlsdGVyJDogT2JzZXJ2YWJsZTxNYXliZTxib29sZWFuPj4gPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5jb21wdXRlU2VsZWN0aW9uUmVzdWx0UmVsYXRpdmVUb0ZpbHRlciksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBzdGFydEJlaW5nVXNlZEZyb21GaWx0ZXIkOiBPYnNlcnZhYmxlPE1heWJlPGJvb2xlYW4+PiA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgLy9cbiAgICBtYXAoY2FsZW5kYXJTY2hlZHVsZVN0YXJ0QmVpbmdVc2VkRnJvbUZpbHRlciksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRhdGVSYW5nZSQ6IE9ic2VydmFibGU8RGF0ZVJhbmdlPiA9IHRoaXMuY3VycmVudERhdGVSYW5nZSQucGlwZShmaWx0ZXJNYXliZSgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgYWxsb3dlZERheXNPZldlZWskOiBPYnNlcnZhYmxlPFNldDxEYXlPZldlZWs+PiA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmFsbG93ZWREYXlzT2ZXZWVrKSxcbiAgICBkaXN0aW5jdFVudGlsSGFzRGlmZmVyZW50VmFsdWVzKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBzY2hlZHVsZURheXMkOiBPYnNlcnZhYmxlPFNldDxEYXRlU2NoZWR1bGVEYXlDb2RlPj4gPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5lZmZlY3RpdmVTY2hlZHVsZURheXMpLFxuICAgIGRpc3RpbmN0VW50aWxIYXNEaWZmZXJlbnRWYWx1ZXMoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRUaW1lem9uZSQ6IE9ic2VydmFibGU8TWF5YmU8VGltZXpvbmVTdHJpbmc+PiA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LnRpbWV6b25lKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgZWZmZWN0aXZlVGltZXpvbmUkOiBPYnNlcnZhYmxlPE1heWJlPFRpbWV6b25lU3RyaW5nPj4gPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4gKCFjYWxlbmRhclNjaGVkdWxlU3RhcnRCZWluZ1VzZWRGcm9tRmlsdGVyKHgpICYmIHgudGltZXpvbmUgPyB4LnRpbWV6b25lIDogdW5kZWZpbmVkKSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGVmZmVjdGl2ZVRpbWV6b25lTm9ybWFsJCA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiAoIWNhbGVuZGFyU2NoZWR1bGVTdGFydEJlaW5nVXNlZEZyb21GaWx0ZXIoeCkgJiYgeC50aW1lem9uZU5vcm1hbCA/IHgudGltZXpvbmVOb3JtYWwgOiB1bmRlZmluZWQpKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgY3VycmVudFNlbGVjdGlvblZhbHVlJCA9IHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmN1cnJlbnRTZWxlY3Rpb25WYWx1ZSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBjdXJyZW50U2VsZWN0aW9uVmFsdWVTdGFydCQgPSB0aGlzLmN1cnJlbnRTZWxlY3Rpb25WYWx1ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHg/LmRhdGVTY2hlZHVsZVJhbmdlLnN0YXJ0KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChpc1NhbWVEYXRlKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRTZWxlY3Rpb25WYWx1ZURhdGVCbG9ja1RpbWluZ0RhdGVGYWN0b3J5JCA9IHRoaXMuY3VycmVudFNlbGVjdGlvblZhbHVlU3RhcnQkLnBpcGUoXG4gICAgbWFwKChzdGFydCkgPT4gKHN0YXJ0ID8gZGF0ZUJsb2NrVGltaW5nRGF0ZUZhY3RvcnkoeyBzdGFydCB9KSA6IHVuZGVmaW5lZCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgY3VycmVudFNlbGVjdGlvblZhbHVlRGF0ZUJsb2NrRHVyYXRpb25TcGFuJDogT2JzZXJ2YWJsZTxEYXRlQmxvY2tEdXJhdGlvblNwYW48RGF0ZUJsb2NrPltdPiA9IHRoaXMuY3VycmVudFNlbGVjdGlvblZhbHVlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4gKHggPyBleHBhbmREYXRlU2NoZWR1bGVSYW5nZSh4KSA6IFtdKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBzZWxlY3Rpb25WYWx1ZVNlbGVjdGVkSW5kZXhlcyQ6IE9ic2VydmFibGU8U2V0PERhdGVCbG9ja0luZGV4Pj4gPSB0aGlzLmN1cnJlbnRTZWxlY3Rpb25WYWx1ZURhdGVCbG9ja0R1cmF0aW9uU3BhbiQucGlwZShcbiAgICBtYXAoKHgpID0+IG5ldyBTZXQoeC5tYXAoKHkpID0+IHkuaSkpKSxcbiAgICBkaXN0aW5jdFVudGlsSGFzRGlmZmVyZW50VmFsdWVzKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBzZWxlY3Rpb25WYWx1ZVNlbGVjdGVkRGF0ZXMkOiBPYnNlcnZhYmxlPFNldDxJU084NjAxRGF5U3RyaW5nPj4gPSB0aGlzLmN1cnJlbnRTZWxlY3Rpb25WYWx1ZURhdGVCbG9ja1RpbWluZ0RhdGVGYWN0b3J5JC5waXBlKFxuICAgIHN3aXRjaE1hcCgoZGF0ZUZhY3RvcnkpID0+IHtcbiAgICAgIHJldHVybiBkYXRlRmFjdG9yeSA/IHRoaXMuc2VsZWN0aW9uVmFsdWVTZWxlY3RlZEluZGV4ZXMkLnBpcGUobWFwKCh4KSA9PiBtYXBWYWx1ZXNUb1NldCh4LCAoeSkgPT4gZm9ybWF0VG9JU084NjAxRGF5U3RyaW5nKGRhdGVGYWN0b3J5KHkpKSkpKSA6IG9mKG5ldyBTZXQ8SVNPODYwMURheVN0cmluZz4oKSk7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBzZWxlY3Rpb25WYWx1ZSQgPSB0aGlzLmN1cnJlbnRTZWxlY3Rpb25WYWx1ZSQucGlwZShmaWx0ZXJNYXliZSgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgY3VycmVudFNlbGVjdGlvblZhbHVlV2l0aFRpbWV6b25lJCA9IHRoaXMuY3VycmVudFNlbGVjdGlvblZhbHVlJC5waXBlKFxuICAgIGNvbWJpbmVMYXRlc3RXaXRoKHRoaXMuZWZmZWN0aXZlVGltZXpvbmVOb3JtYWwkKSxcbiAgICBtYXAoKFt4LCB0aW1lem9uZU5vcm1hbF0pID0+IHtcbiAgICAgIGlmICh4ICYmIHRpbWV6b25lTm9ybWFsKSB7XG4gICAgICAgIHggPSB7XG4gICAgICAgICAgZGF0ZVNjaGVkdWxlUmFuZ2U6IHtcbiAgICAgICAgICAgIC4uLnguZGF0ZVNjaGVkdWxlUmFuZ2UsXG4gICAgICAgICAgICBzdGFydDogdGltZXpvbmVOb3JtYWwudGFyZ2V0RGF0ZVRvU3lzdGVtRGF0ZSh4LmRhdGVTY2hlZHVsZVJhbmdlLnN0YXJ0KSxcbiAgICAgICAgICAgIGVuZDogdGltZXpvbmVOb3JtYWwudGFyZ2V0RGF0ZVRvU3lzdGVtRGF0ZSh4LmRhdGVTY2hlZHVsZVJhbmdlLmVuZClcbiAgICAgICAgICB9XG4gICAgICAgIH0gYXMgQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblZhbHVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4geDtcbiAgICB9KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0aW9uVmFsdWVXaXRoVGltZXpvbmUkID0gdGhpcy5jdXJyZW50U2VsZWN0aW9uVmFsdWVXaXRoVGltZXpvbmUkLnBpcGUoZmlsdGVyTWF5YmUoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IHNlbGVjdGlvblZhbHVlV2l0aFRpbWV6b25lRGF0ZUJsb2NrRHVyYXRpb25TcGFuJDogT2JzZXJ2YWJsZTxEYXRlQmxvY2tEdXJhdGlvblNwYW48RGF0ZUJsb2NrPltdPiA9IHRoaXMuc2VsZWN0aW9uVmFsdWVXaXRoVGltZXpvbmUkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiBleHBhbmREYXRlU2NoZWR1bGVSYW5nZSh4KSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBuZXh0VG9nZ2xlU2VsZWN0aW9uJDogT2JzZXJ2YWJsZTxNYXliZTxBbGxPck5vbmVTZWxlY3Rpb24+PiA9IHRoaXMuaGFzQ29uZmlndXJlZE1pbk1heFJhbmdlJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoaGFzQ29uZmlndXJlZE1pbk1heFJhbmdlKSA9PiB7XG4gICAgICBsZXQgb2JzOiBPYnNlcnZhYmxlPE1heWJlPEFsbE9yTm9uZVNlbGVjdGlvbj4+O1xuXG4gICAgICBpZiAoaGFzQ29uZmlndXJlZE1pbk1heFJhbmdlKSB7XG4gICAgICAgIG9icyA9IHRoaXMuY3VycmVudFNlbGVjdGlvblZhbHVlJC5waXBlKG1hcCgoeCkgPT4gKHggPyAnbm9uZScgOiAnYWxsJykpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9icyA9IHRoaXMuY3VycmVudFNlbGVjdGlvblZhbHVlJC5waXBlKG1hcCgoeCkgPT4gKHggPyAnbm9uZScgOiB1bmRlZmluZWQpKSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYnM7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBjdXJyZW50RGF0ZVNjaGVkdWxlUmFuZ2VWYWx1ZSQgPSB0aGlzLmN1cnJlbnRTZWxlY3Rpb25WYWx1ZVdpdGhUaW1lem9uZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHg/LmRhdGVTY2hlZHVsZVJhbmdlKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChpc1NhbWVEYXRlU2NoZWR1bGVSYW5nZSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBkYXRlU2NoZWR1bGVSYW5nZVZhbHVlJCA9IHRoaXMuY3VycmVudERhdGVTY2hlZHVsZVJhbmdlVmFsdWUkLnBpcGUoZmlsdGVyTWF5YmUoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IGNlbGxDb250ZW50RmFjdG9yeSQgPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5jZWxsQ29udGVudEZhY3RvcnkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBpc0N1c3RvbWl6ZWQkID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBtYXAoKHgpID0+IHgudG9nZ2xlZEluZGV4ZXMuc2l6ZSA+IDApLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBpc1ZpZXdSZWFkb25seSQgPSB0aGlzLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5pc1ZpZXdSZWFkb25seSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIC8vIE1BUks6IFN0YXRlIENoYW5nZXNcbiAgcmVhZG9ubHkgc2V0TWluTWF4RGF0ZVJhbmdlID0gdGhpcy51cGRhdGVyKHVwZGF0ZVN0YXRlV2l0aE1pbk1heERhdGVSYW5nZSk7XG4gIHJlYWRvbmx5IHNldERlZmF1bHRXZWVrID0gdGhpcy51cGRhdGVyKHVwZGF0ZVN0YXRlV2l0aE1pbk1heERhdGVSYW5nZSk7XG4gIHJlYWRvbmx5IHNldEZpbHRlciA9IHRoaXMudXBkYXRlcih1cGRhdGVTdGF0ZVdpdGhGaWx0ZXIpO1xuICByZWFkb25seSBzZXRFeGNsdXNpb25zID0gdGhpcy51cGRhdGVyKHVwZGF0ZVN0YXRlV2l0aEV4Y2x1c2lvbnMpO1xuICByZWFkb25seSBzZXRDb21wdXRlU2VsZWN0aW9uUmVzdWx0UmVsYXRpdmVUb0ZpbHRlciA9IHRoaXMudXBkYXRlcih1cGRhdGVTdGF0ZVdpdGhDb21wdXRlU2VsZWN0aW9uUmVzdWx0UmVsYXRpdmVUb0ZpbHRlcik7XG4gIHJlYWRvbmx5IGNsZWFyRmlsdGVyID0gdGhpcy51cGRhdGVyKChzdGF0ZSkgPT4gdXBkYXRlU3RhdGVXaXRoRmlsdGVyKHN0YXRlLCB1bmRlZmluZWQpKTtcblxuICByZWFkb25seSBzZXRUaW1lem9uZSA9IHRoaXMudXBkYXRlcih1cGRhdGVTdGF0ZVdpdGhUaW1lem9uZVZhbHVlKTtcbiAgcmVhZG9ubHkgc2V0SW5wdXRSYW5nZSA9IHRoaXMudXBkYXRlcih1cGRhdGVTdGF0ZVdpdGhDaGFuZ2VkUmFuZ2UpO1xuXG4gIC8vIE5PVEU6IFNlbGVjdGVkIGRhdGVzIGFyZSBOT1Qgc2VsZWN0ZWQgaW5kZXhlcy4gVGhleSBhcmUgdGhlIGludGVybmFsIHNlbGVjdGVkIGRhdGVzIHRoYXQgYXJlIGV4Y2x1ZGVkIGZyb20gdGhlIHNlbGVjdGlvbi5cbiAgcmVhZG9ubHkgdG9nZ2xlU2VsZWN0ZWREYXRlcyA9IHRoaXMudXBkYXRlcigoc3RhdGUsIHRvZ2dsZTogSXRlcmFibGVPclZhbHVlPERhdGVUaW1pbmdSZWxhdGl2ZUluZGV4RmFjdG9yeUlucHV0PikgPT4gdXBkYXRlU3RhdGVXaXRoQ2hhbmdlZERhdGVzKHN0YXRlLCB7IHRvZ2dsZSB9KSk7XG4gIHJlYWRvbmx5IGFkZFNlbGVjdGVkRGF0ZXMgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBhZGQ6IEl0ZXJhYmxlT3JWYWx1ZTxEYXRlVGltaW5nUmVsYXRpdmVJbmRleEZhY3RvcnlJbnB1dD4pID0+IHVwZGF0ZVN0YXRlV2l0aENoYW5nZWREYXRlcyhzdGF0ZSwgeyBhZGQgfSkpO1xuICByZWFkb25seSByZW1vdmVTZWxlY3RlZERhdGVzID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgcmVtb3ZlOiBJdGVyYWJsZU9yVmFsdWU8RGF0ZVRpbWluZ1JlbGF0aXZlSW5kZXhGYWN0b3J5SW5wdXQ+KSA9PiB1cGRhdGVTdGF0ZVdpdGhDaGFuZ2VkRGF0ZXMoc3RhdGUsIHsgcmVtb3ZlIH0pKTtcbiAgcmVhZG9ubHkgc2V0U2VsZWN0ZWREYXRlcyA9IHRoaXMudXBkYXRlcigoc3RhdGUsIHNldDogSXRlcmFibGVPclZhbHVlPERhdGVUaW1pbmdSZWxhdGl2ZUluZGV4RmFjdG9yeUlucHV0PikgPT4gdXBkYXRlU3RhdGVXaXRoQ2hhbmdlZERhdGVzKHN0YXRlLCB7IHNldCB9KSk7XG5cbiAgLy8gTk9URTogU2VsZWN0ZWQgaW5kZXhlcyBhcmUgdGhlIHR5cGljYWwvZXhwZWN0ZWQgaW5kZXhlcyB0aGF0IGFyZSBzZWxlY3RlZCBvciBub3QuXG4gIHJlYWRvbmx5IHNldFNlbGVjdGVkSW5kZXhlcyA9IHRoaXMudXBkYXRlcigoc3RhdGUsIHNldDogSXRlcmFibGVPclZhbHVlPERhdGVUaW1pbmdSZWxhdGl2ZUluZGV4RmFjdG9yeUlucHV0PikgPT4gdXBkYXRlU3RhdGVXaXRoQ2hhbmdlZERhdGVzKHN0YXRlLCB7IHNldCwgaW52ZXJ0U2V0QmVoYXZpb3I6IHRydWUgfSkpO1xuXG4gIHJlYWRvbmx5IHNlbGVjdEFsbERhdGVzID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgc2VsZWN0QWxsOiBBbGxPck5vbmVTZWxlY3Rpb24gPSAnYWxsJykgPT4gdXBkYXRlU3RhdGVXaXRoQ2hhbmdlZERhdGVzKHN0YXRlLCB7IHNlbGVjdEFsbCB9KSk7XG4gIHJlYWRvbmx5IHNldEluaXRpYWxTZWxlY3Rpb25TdGF0ZSA9IHRoaXMudXBkYXRlcih1cGRhdGVTdGF0ZVdpdGhJbml0aWFsU2VsZWN0aW9uU3RhdGUpO1xuXG4gIHJlYWRvbmx5IHNldERlZmF1bHRTY2hlZHVsZURheXMgPSB0aGlzLnVwZGF0ZXIodXBkYXRlU3RhdGVXaXRoQ2hhbmdlZERlZmF1bHRTY2hlZHVsZURheXMpO1xuICByZWFkb25seSBzZXRTY2hlZHVsZURheXMgPSB0aGlzLnVwZGF0ZXIodXBkYXRlU3RhdGVXaXRoQ2hhbmdlZFNjaGVkdWxlRGF5cyk7XG4gIHJlYWRvbmx5IHNldEFsbG93QWxsU2NoZWR1bGVEYXlzID0gdGhpcy51cGRhdGVyKChzdGF0ZSkgPT4gdXBkYXRlU3RhdGVXaXRoQ2hhbmdlZFNjaGVkdWxlRGF5cyhzdGF0ZSwgW0RhdGVTY2hlZHVsZURheUNvZGUuV0VFS0RBWSwgRGF0ZVNjaGVkdWxlRGF5Q29kZS5XRUVLRU5EXSkpO1xuXG4gIHJlYWRvbmx5IHNldERhdGVTY2hlZHVsZVJhbmdlVmFsdWUgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCB2YWx1ZTogTWF5YmU8RGF0ZVNjaGVkdWxlUmFuZ2U+KSA9PiB1cGRhdGVTdGF0ZVdpdGhEYXRlU2NoZWR1bGVSYW5nZVZhbHVlKHN0YXRlLCB2YWx1ZSkpO1xuICByZWFkb25seSBzZXRDZWxsQ29udGVudEZhY3RvcnkgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBjZWxsQ29udGVudEZhY3Rvcnk6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25DZWxsQ29udGVudEZhY3RvcnkpID0+ICh7IC4uLnN0YXRlLCBjZWxsQ29udGVudEZhY3RvcnkgfSkpO1xuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IHRoZSBwYXJlbnQgdmlldyB0byBwcm9wb2dhdGUgYSByZWFkb25seSBzdGF0ZS5cbiAgICpcbiAgICogU2hvdWxkIHR5cGljYWxseSBub3QgYmUgdXNlZCBieSB0aGUgdXNlciBkaXJlY3RseSB3aXRoIHRoZSBpbnRlbnRpb24gb2YgdGhlIHBhcmVudCBzeW5jaHJvbml6aW5nIHRvIHRoaXMgc3RhdGUuXG4gICAqL1xuICByZWFkb25seSBzZXRWaWV3UmVhZG9ubHlTdGF0ZSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGlzVmlld1JlYWRvbmx5OiBib29sZWFuKSA9PiAoeyAuLi5zdGF0ZSwgaXNWaWV3UmVhZG9ubHkgfSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlU3RhdGVXaXRoSW5pdGlhbFNlbGVjdGlvblN0YXRlKHN0YXRlOiBDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUsIGluaXRpYWxTZWxlY3Rpb25TdGF0ZTogTWF5YmU8QWxsT3JOb25lU2VsZWN0aW9uPik6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSB7XG4gIGNvbnN0IHsgdG9nZ2xlZEluZGV4ZXMgfSA9IHN0YXRlO1xuXG4gIGlmICh0b2dnbGVkSW5kZXhlcy5zaXplID09PSAwICYmIGluaXRpYWxTZWxlY3Rpb25TdGF0ZSA9PT0gJ2FsbCcpIHtcbiAgICBzdGF0ZSA9IHVwZGF0ZVN0YXRlV2l0aENoYW5nZWREYXRlcyhzdGF0ZSwgeyBzZWxlY3RBbGw6IGluaXRpYWxTZWxlY3Rpb25TdGF0ZSB9KTtcbiAgfVxuXG4gIHJldHVybiB7IC4uLnN0YXRlLCBpbml0aWFsU2VsZWN0aW9uU3RhdGUgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVN0YXRlV2l0aENvbXB1dGVTZWxlY3Rpb25SZXN1bHRSZWxhdGl2ZVRvRmlsdGVyKGN1cnJlbnRTdGF0ZTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlLCBjb21wdXRlU2VsZWN0aW9uUmVzdWx0UmVsYXRpdmVUb0ZpbHRlcjogTWF5YmU8Ym9vbGVhbj4pOiBDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUge1xuICBsZXQgc3RhdGU6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSA9IHsgLi4uY3VycmVudFN0YXRlLCBjb21wdXRlU2VsZWN0aW9uUmVzdWx0UmVsYXRpdmVUb0ZpbHRlciB9O1xuXG4gIGlmIChCb29sZWFuKGN1cnJlbnRTdGF0ZS5jb21wdXRlU2VsZWN0aW9uUmVzdWx0UmVsYXRpdmVUb0ZpbHRlcikgIT09IEJvb2xlYW4oY29tcHV0ZVNlbGVjdGlvblJlc3VsdFJlbGF0aXZlVG9GaWx0ZXIpKSB7XG4gICAgc3RhdGUgPSB1cGRhdGVTdGF0ZVdpdGhDaGFuZ2VkRGF0ZXMoc3RhdGUsIHt9KTsgLy8gcmVjYWxjdWxhdGUgaWYgY2hhbmdlIG9jY3VycyBhcyBpdCB3aWxsIGFmZmVjdCB0aGUgb3V0cHV0IHZhbHVlXG4gIH1cblxuICByZXR1cm4gc3RhdGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVTdGF0ZVdpdGhFeGNsdXNpb25zKHN0YXRlOiBDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUsIGlucHV0RXhjbHVzaW9uczogTWF5YmU8QXJyYXlPclZhbHVlPERhdGVPckRhdGVSYW5nZU9yRGF0ZUJsb2NrSW5kZXhPckRhdGVCbG9ja1JhbmdlPj4pOiBDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUge1xuICBsZXQgY29tcHV0ZWRFeGNsdXNpb25zOiBNYXliZTxEYXRlQmxvY2tJbmRleFtdPjtcblxuICBpZiAoaW5wdXRFeGNsdXNpb25zKSB7XG4gICAgY29uc3QgeyBpbmRleEZhY3RvcnkgfSA9IHN0YXRlO1xuICAgIGNvbnN0IGluZGV4QXJyYXlGYWN0b3J5ID0gZGF0ZVRpbWluZ1JlbGF0aXZlSW5kZXhBcnJheUZhY3RvcnkoaW5kZXhGYWN0b3J5KTtcbiAgICBjb21wdXRlZEV4Y2x1c2lvbnMgPSBpbmRleEFycmF5RmFjdG9yeShpbnB1dEV4Y2x1c2lvbnMpO1xuICB9XG5cbiAgc3RhdGUgPSB7IC4uLnN0YXRlLCBpbnB1dEV4Y2x1c2lvbnMsIGNvbXB1dGVkRXhjbHVzaW9ucyB9O1xuICByZXR1cm4gdXBkYXRlU3RhdGVXaXRoRmlsdGVyKHN0YXRlLCBzdGF0ZS5maWx0ZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlU3RhdGVXaXRoTWluTWF4RGF0ZVJhbmdlKHN0YXRlOiBDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUsIG1pbk1heERhdGVSYW5nZTogTWF5YmU8UGFydGlhbDxEYXRlUmFuZ2U+Pik6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSB7XG4gIHN0YXRlID0geyAuLi5zdGF0ZSB9O1xuXG4gIGlmIChtaW5NYXhEYXRlUmFuZ2UgIT0gbnVsbCAmJiAhaXNJbmZpbml0ZURhdGVSYW5nZShtaW5NYXhEYXRlUmFuZ2UpKSB7XG4gICAgc3RhdGUubWluTWF4RGF0ZVJhbmdlID0ge1xuICAgICAgc3RhcnQ6IG1pbk1heERhdGVSYW5nZS5zdGFydCAhPSBudWxsID8gc3RhcnRPZkRheShtaW5NYXhEYXRlUmFuZ2Uuc3RhcnQpIDogdW5kZWZpbmVkLFxuICAgICAgZW5kOiBtaW5NYXhEYXRlUmFuZ2UuZW5kICE9IG51bGwgPyBlbmRPZkRheShtaW5NYXhEYXRlUmFuZ2UuZW5kKSA6IHVuZGVmaW5lZFxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgZGVsZXRlIHN0YXRlLm1pbk1heERhdGVSYW5nZTtcbiAgfVxuXG4gIHJldHVybiB1cGRhdGVTdGF0ZVdpdGhGaWx0ZXIoc3RhdGUsIHN0YXRlLmZpbHRlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVTdGF0ZVdpdGhGaWx0ZXIoc3RhdGU6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSwgaW5wdXRGaWx0ZXI6IE1heWJlPERhdGVTY2hlZHVsZURhdGVGaWx0ZXJDb25maWc+KTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlIHtcbiAgY29uc3QgeyBjb21wdXRlZEV4Y2x1c2lvbnM6IGV4Y2x1c2lvbnMsIG1pbk1heERhdGVSYW5nZSB9ID0gc3RhdGU7XG5cbiAgbGV0IGlzRW5hYmxlZEZpbHRlckRheTogTWF5YmU8RGVjaXNpb25GdW5jdGlvbjxEYXRlVGltaW5nUmVsYXRpdmVJbmRleEZhY3RvcnlJbnB1dD4+ID0gKCkgPT4gdHJ1ZTtcbiAgbGV0IGZpbHRlcjogTWF5YmU8RGF0ZVNjaGVkdWxlRGF0ZUZpbHRlckNvbmZpZz4gPSBudWxsO1xuXG4gIC8vIGNyZWF0ZSB0aGUgZmlsdGVyIHVzaW5nIGlucHV0RmlsdGVyLCBleGNsdXNpb25zLCBhbmQgbWluTWF4RGF0ZVJhbmdlXG4gIGlmIChpbnB1dEZpbHRlciB8fCBleGNsdXNpb25zPy5sZW5ndGggfHwgbWluTWF4RGF0ZVJhbmdlKSB7XG4gICAgbGV0IGVuYWJsZWRGaWx0ZXI6IERhdGVTY2hlZHVsZURhdGVGaWx0ZXJDb25maWc7XG5cbiAgICBpZiAoaW5wdXRGaWx0ZXIpIHtcbiAgICAgIGZpbHRlciA9IGNvcHlEYXRlU2NoZWR1bGVEYXRlRmlsdGVyQ29uZmlnKGlucHV0RmlsdGVyKTsgLy8gY29weSBmaWx0ZXJcblxuICAgICAgaWYgKGV4Y2x1c2lvbnM/Lmxlbmd0aCkge1xuICAgICAgICBlbmFibGVkRmlsdGVyID0ge1xuICAgICAgICAgIC4uLmZpbHRlcixcbiAgICAgICAgICBleDogdW5pcXVlKG1lcmdlQXJyYXlzKFtmaWx0ZXIuZXgsIGV4Y2x1c2lvbnNdKSlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVuYWJsZWRGaWx0ZXIgPSBmaWx0ZXI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGVuYWJsZWRGaWx0ZXIgPSB7XG4gICAgICAgIHc6ICc4OScsXG4gICAgICAgIGV4OiBleGNsdXNpb25zIGFzIG51bWJlcltdXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChtaW5NYXhEYXRlUmFuZ2UpIHtcbiAgICAgIGVuYWJsZWRGaWx0ZXIubWluTWF4RGF0ZVJhbmdlID0gbWluTWF4RGF0ZVJhbmdlO1xuICAgICAgZW5hYmxlZEZpbHRlci5zZXRTdGFydEFzTWluRGF0ZSA9IGZpbHRlcj8uc3RhcnQgPyB0cnVlIDogZmFsc2U7IC8vIElmIGEgc3RhcnQgZGF0ZSBpcyBzZXQsIHRoZW4gaXQgYmVjb21lcyB0aGUgZmxvb3IuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSWYgdGhlIGlucHV0IGZpbHRlciBoYXMgYSBzdGFydCBkYXRlLCB1c2UgdGhhdCBhcyB0aGUgcmVsYXRpdmUgc3RhcnQgdG8gZW5zdXJlIGluZGV4ZXMgYXJlIGNvbXBhcmVkIHRoZSBzYW1lLFxuICAgICAqIG90aGVyd2lzZSB1c2UgdGhlIHN0YXRlJ3Mgc3RhcnQuIFRoaXMgaXMgaW1wb3J0YW50IGZvciB0aGUgaW5kZXggY2FsY3VsYXRpb25zLlxuICAgICAqL1xuICAgIGVuYWJsZWRGaWx0ZXIuc3RhcnQgPSBpbnB1dEZpbHRlcj8uc3RhcnQgPz8gc3RhdGUuc3RhcnQ7XG5cbiAgICAvLyBjcmVhdGUgdGhlIGZpbHRlclxuICAgIGlzRW5hYmxlZEZpbHRlckRheSA9IGRhdGVTY2hlZHVsZURhdGVGaWx0ZXIoZW5hYmxlZEZpbHRlcik7XG4gIH1cblxuICBzdGF0ZSA9IHsgLi4uc3RhdGUsIGZpbHRlciwgaXNFbmFibGVkRmlsdGVyRGF5IH07XG5cbiAgLy8gRm9yIHRoZSBzYW1lIHJlYXNvbiBhcyBhYm92ZSwgdXNlIHRoZSBmaWx0ZXIncyBzdGFydCBkYXRlIGFzIHRoZSByZWxhdGl2ZSBzdGFydCBpZiBhcHBsaWNhYmxlLlxuICBpZiAoZmlsdGVyICYmIGZpbHRlci5zdGFydCkge1xuICAgIGNvbnN0IHN0YXJ0ID0gZmlsdGVyLnN0YXJ0O1xuICAgIHN0YXRlLnN0YXJ0ID0gc3RhcnQ7XG4gICAgc3RhdGUuaW5kZXhGYWN0b3J5ID0gZGF0ZVRpbWluZ1JlbGF0aXZlSW5kZXhGYWN0b3J5KHsgc3RhcnQgfSk7XG4gICAgc3RhdGUuaW5kZXhEYXlPZldlZWsgPSBkYXRlQmxvY2tEYXlPZldlZWtGYWN0b3J5KHN0YXJ0KTtcbiAgfVxuXG4gIC8vIGF0dGVtcHQgdG8gcmUtYXBwbHkgdGhlIGluaXRpYWwgc2VsZWN0aW9uIHN0YXRlIG9uY2UgZmlsdGVyIGlzIGFwcGxpZWRcbiAgaWYgKHN0YXRlLmluaXRpYWxTZWxlY3Rpb25TdGF0ZSkge1xuICAgIHN0YXRlID0gdXBkYXRlU3RhdGVXaXRoSW5pdGlhbFNlbGVjdGlvblN0YXRlKHN0YXRlLCBzdGF0ZS5pbml0aWFsU2VsZWN0aW9uU3RhdGUpO1xuICB9XG5cbiAgLy8gcmUtY2FsY3VsYXRlIHRoZSBzZWxlY3Rpb24gZ2l2ZW4gdGhlIGZpbHRlclxuICBjb25zdCB7IGlucHV0U3RhcnQsIGlucHV0RW5kIH0gPSBzdGF0ZTtcblxuICBpZiAoaW5wdXRTdGFydCAmJiBpbnB1dEVuZCkge1xuICAgIHN0YXRlID0gdXBkYXRlU3RhdGVXaXRoQ2hhbmdlZFJhbmdlKHN0YXRlLCB7IGlucHV0U3RhcnQsIGlucHV0RW5kIH0pO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlU3RhdGVXaXRoVGltZXpvbmVWYWx1ZShzdGF0ZTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlLCB0aW1lem9uZTogTWF5YmU8VGltZXpvbmVTdHJpbmc+KTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlIHtcbiAgY29uc3QgeyBjdXJyZW50U2VsZWN0aW9uVmFsdWUgfSA9IHN0YXRlO1xuXG4gIGNvbnN0IHRpbWV6b25lTm9ybWFsID0gdGltZXpvbmUgPyBkYXRlVGltZXpvbmVVdGNOb3JtYWwoeyB0aW1lem9uZSB9KSA6IHVuZGVmaW5lZDtcblxuICBpZiAodGltZXpvbmVOb3JtYWwgJiYgY3VycmVudFNlbGVjdGlvblZhbHVlKSB7XG4gICAgLy8gdXBkYXRlIHRoZSBzZWxlY3Rpb24gdmFsdWUgdG8gcmVmbGVjdCB0aGUgdGltZXpvbmUgY2hhbmdlcy5cblxuICAgIGNvbnN0IHsgZGF0ZVNjaGVkdWxlUmFuZ2U6IGN1cnJlbnREYXRlU2NoZWR1bGVSYW5nZSB9ID0gY3VycmVudFNlbGVjdGlvblZhbHVlO1xuICAgIGNvbnN0IHN0YXJ0ID0gdGltZXpvbmVOb3JtYWwudGFyZ2V0RGF0ZVRvU3lzdGVtRGF0ZShjdXJyZW50RGF0ZVNjaGVkdWxlUmFuZ2Uuc3RhcnQpO1xuICAgIGNvbnN0IGVuZCA9IHRpbWV6b25lTm9ybWFsLnRhcmdldERhdGVUb1N5c3RlbURhdGUoY3VycmVudERhdGVTY2hlZHVsZVJhbmdlLmVuZCk7XG5cbiAgICBjb25zdCBuZXdSYW5nZTogRGF0ZVNjaGVkdWxlUmFuZ2UgPSB7XG4gICAgICAuLi5jdXJyZW50U2VsZWN0aW9uVmFsdWUuZGF0ZVNjaGVkdWxlUmFuZ2UsXG4gICAgICBzdGFydCxcbiAgICAgIGVuZFxuICAgIH07XG5cbiAgICByZXR1cm4gdXBkYXRlU3RhdGVXaXRoRGF0ZVNjaGVkdWxlUmFuZ2VWYWx1ZSh7IC4uLnN0YXRlLCB0aW1lem9uZSwgdGltZXpvbmVOb3JtYWwgfSwgbmV3UmFuZ2UpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB7IC4uLnN0YXRlLCB0aW1lem9uZSwgdGltZXpvbmVOb3JtYWwgfTsgLy8gbm8gY2hhbmdlIGluIHZhbHVlXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVN0YXRlV2l0aERhdGVTY2hlZHVsZVJhbmdlVmFsdWUoc3RhdGU6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSwgY2hhbmdlOiBNYXliZTxEYXRlU2NoZWR1bGVSYW5nZT4pOiBDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUge1xuICBjb25zdCB7IHRpbWV6b25lTm9ybWFsLCBjdXJyZW50U2VsZWN0aW9uVmFsdWUgfSA9IHN0YXRlO1xuICBjb25zdCBjdXJyZW50RGF0ZVNjaGVkdWxlUmFuZ2UgPSBjdXJyZW50U2VsZWN0aW9uVmFsdWU/LmRhdGVTY2hlZHVsZVJhbmdlOyAvLyBjdXJyZW50IHJhbmdlIGlzIGFsd2F5cyBpbiBzeXN0ZW0gdGltZVxuXG4gIGlmICghY2FsZW5kYXJTY2hlZHVsZVN0YXJ0QmVpbmdVc2VkRnJvbUZpbHRlcihzdGF0ZSkgJiYgdGltZXpvbmVOb3JtYWwpIHtcbiAgICAvLyBXaGVuIHVzaW5nIHRpbWV6b25lcywgYWx3YXlzIHJldHVybiBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZGF5LiBJbnB1dHMgYXJlIGNvbnZlcnRlZCB0byB0aGUgc3lzdGVtIHRpbWUgYW5kIHVzZWQgYXMgdGhlIHN0YXJ0IG9mIHRoZSBkYXkuXG4gICAgLy8gT3V0cHV0cyByZW1haW4gYWNjdXJhdGUuXG5cbiAgICBpZiAoY2hhbmdlKSB7XG4gICAgICBjaGFuZ2UgPSB7XG4gICAgICAgIC4uLmNoYW5nZSxcbiAgICAgICAgc3RhcnQ6IHN0YXJ0T2ZEYXkodGltZXpvbmVOb3JtYWwuc3lzdGVtRGF0ZVRvVGFyZ2V0RGF0ZShjaGFuZ2Uuc3RhcnQpKSxcbiAgICAgICAgZW5kOiBzdGFydE9mRGF5KHRpbWV6b25lTm9ybWFsLnN5c3RlbURhdGVUb1RhcmdldERhdGUoY2hhbmdlLmVuZCkpXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGlzU2FtZVZhbHVlID0gaXNTYW1lRGF0ZVNjaGVkdWxlUmFuZ2UoY3VycmVudERhdGVTY2hlZHVsZVJhbmdlLCBjaGFuZ2UpO1xuXG4gIGlmIChpc1NhbWVWYWx1ZSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoY2hhbmdlICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IG5leHRTdGF0ZTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlID0geyAuLi5zdGF0ZSwgaW5wdXRTdGFydDogY2hhbmdlLnN0YXJ0LCBpbnB1dEVuZDogY2hhbmdlLmVuZCwgdG9nZ2xlZEluZGV4ZXM6IG5ldyBTZXQoY2hhbmdlLmV4KSB9O1xuICAgICAgcmV0dXJuIHVwZGF0ZVN0YXRlV2l0aENoYW5nZWRTY2hlZHVsZURheXMoZmluYWxpemVOZXdDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUobmV4dFN0YXRlKSwgZXhwYW5kRGF0ZVNjaGVkdWxlRGF5Q29kZXMoY2hhbmdlLncgfHwgJzg5JykpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbm9TZWxlY3Rpb25DYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUoc3RhdGUpOyAvLyBjbGVhciBzZWxlY3Rpb24sIHJldGFpbiBkaXNhYmxlZCBkYXlzXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVTdGF0ZVdpdGhDaGFuZ2VkRGVmYXVsdFNjaGVkdWxlRGF5cyhzdGF0ZTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlLCBjaGFuZ2U6IE1heWJlPEl0ZXJhYmxlPERhdGVTY2hlZHVsZURheUNvZGU+Pik6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSB7XG4gIGNvbnN0IHsgZGVmYXVsdFNjaGVkdWxlRGF5czogY3VycmVudERlZmF1bHRTY2hlZHVsZURheXMgfSA9IHN0YXRlO1xuICBjb25zdCBkZWZhdWx0U2NoZWR1bGVEYXlzID0gbmV3IFNldChjaGFuZ2UgPz8gZnVsbFdlZWtEYXlTY2hlZHVsZURheUNvZGVzKCkpO1xuXG4gIGlmIChkYXRlU2NoZWR1bGVEYXlDb2Rlc0FyZVNldHNFcXVpdmFsZW50KGRlZmF1bHRTY2hlZHVsZURheXMsIGN1cnJlbnREZWZhdWx0U2NoZWR1bGVEYXlzKSkge1xuICAgIHJldHVybiBzdGF0ZTsgLy8gbm8gY2hhbmdlXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZpbmFsaXplVXBkYXRlU3RhdGVXaXRoQ2hhbmdlZFNjaGVkdWxlRGF5cyhzdGF0ZSwgeyAuLi5zdGF0ZSwgZGVmYXVsdFNjaGVkdWxlRGF5cyB9KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlU3RhdGVXaXRoQ2hhbmdlZFNjaGVkdWxlRGF5cyhzdGF0ZTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlLCBjaGFuZ2U6IE1heWJlPEl0ZXJhYmxlPERhdGVTY2hlZHVsZURheUNvZGU+Pik6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSB7XG4gIGNvbnN0IHsgc2NoZWR1bGVEYXlzOiBjdXJyZW50U2NoZWR1bGVEYXlzIH0gPSBzdGF0ZTtcbiAgY29uc3Qgc2NoZWR1bGVEYXlzID0gbmV3IFNldChjaGFuZ2UgPz8gW10pO1xuXG4gIGxldCBuZXdTY2hlZHVsZURheXM6IFNldDxEYXRlU2NoZWR1bGVEYXlDb2RlPiB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbiAgaWYgKGN1cnJlbnRTY2hlZHVsZURheXMgIT0gbnVsbCAmJiBjaGFuZ2UgIT0gbnVsbCkge1xuICAgIGlmIChkYXRlU2NoZWR1bGVEYXlDb2Rlc0FyZVNldHNFcXVpdmFsZW50KHNjaGVkdWxlRGF5cywgY3VycmVudFNjaGVkdWxlRGF5cykpIHtcbiAgICAgIG5ld1NjaGVkdWxlRGF5cyA9IHVuZGVmaW5lZDsgLy9ubyBjaGFuZ2VcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3U2NoZWR1bGVEYXlzID0gc2NoZWR1bGVEYXlzO1xuICAgIH1cbiAgfSBlbHNlIGlmIChjdXJyZW50U2NoZWR1bGVEYXlzICE9PSBjaGFuZ2UpIHtcbiAgICBuZXdTY2hlZHVsZURheXMgPSBjaGFuZ2UgPyBzY2hlZHVsZURheXMgOiBudWxsOyAvLyBzZXQgdGhlIG5ldyBvbmUsIG9yIGNsZWFyIGl0XG4gIH1cblxuICBpZiAobmV3U2NoZWR1bGVEYXlzID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZpbmFsaXplVXBkYXRlU3RhdGVXaXRoQ2hhbmdlZFNjaGVkdWxlRGF5cyhzdGF0ZSwgeyAuLi5zdGF0ZSwgc2NoZWR1bGVEYXlzOiBuZXdTY2hlZHVsZURheXMgPz8gdW5kZWZpbmVkIH0pO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5hbGl6ZVVwZGF0ZVN0YXRlV2l0aENoYW5nZWRTY2hlZHVsZURheXMocHJldmlvdXNTdGF0ZTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlLCBuZXh0U3RhdGU6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSk6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSB7XG4gIGNvbnN0IHByZXZpb3VzU2NoZWR1bGVEYXlzID0gcHJldmlvdXNTdGF0ZS5lZmZlY3RpdmVTY2hlZHVsZURheXM7XG4gIGNvbnN0IG5leHRTY2hlZHVsZURheXMgPSBuZXh0U3RhdGUuc2NoZWR1bGVEYXlzID8/IG5leHRTdGF0ZS5kZWZhdWx0U2NoZWR1bGVEYXlzO1xuXG4gIGlmIChkYXRlU2NoZWR1bGVEYXlDb2Rlc0FyZVNldHNFcXVpdmFsZW50KG5leHRTY2hlZHVsZURheXMsIHByZXZpb3VzU2NoZWR1bGVEYXlzKSkge1xuICAgIHJldHVybiBuZXh0U3RhdGU7IC8vIHRoZSBkZWZhdWx0IG9yIGlucHV0IHNjaGVkdWxlIGNoYW5nZWQgYnV0IHRoZSBzY2hlZHVsZSBpcyBzdGlsbCB0aGUgc2FtZSwgc28gbm8gbmVlZCBmb3IgYW4gdXBkYXRlLlxuICB9IGVsc2Uge1xuICAgIGNvbnN0IGVmZmVjdGl2ZVNjaGVkdWxlRGF5cyA9IG5ldyBTZXQoc2ltcGxpZnlEYXRlU2NoZWR1bGVEYXlDb2RlcyhuZXh0U2NoZWR1bGVEYXlzKSk7XG4gICAgY29uc3QgYWxsb3dlZERheXNPZldlZWsgPSBleHBhbmREYXRlU2NoZWR1bGVEYXlDb2Rlc1RvRGF5T2ZXZWVrU2V0KG5leHRTY2hlZHVsZURheXMpO1xuXG4gICAgcmV0dXJuIGZpbmFsaXplTmV3Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlKHtcbiAgICAgIC4uLm5leHRTdGF0ZSxcbiAgICAgIC8vIHVwZGF0ZSB0aGUgZWZmZWN0aXZlIHNjaGVkdWxlIGRheXMgYW5kIGFsbG93ZWQgZGF5cyBvZiB3ZWVrXG4gICAgICBlZmZlY3RpdmVTY2hlZHVsZURheXMsXG4gICAgICBhbGxvd2VkRGF5c09mV2Vla1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlRGF0ZXNDaGFuZ2Uge1xuICByZXNldD86IHRydWU7XG4gIHRvZ2dsZT86IEl0ZXJhYmxlT3JWYWx1ZTxEYXRlVGltaW5nUmVsYXRpdmVJbmRleEZhY3RvcnlJbnB1dD47XG4gIGFkZD86IEl0ZXJhYmxlT3JWYWx1ZTxEYXRlVGltaW5nUmVsYXRpdmVJbmRleEZhY3RvcnlJbnB1dD47XG4gIHJlbW92ZT86IEl0ZXJhYmxlT3JWYWx1ZTxEYXRlVGltaW5nUmVsYXRpdmVJbmRleEZhY3RvcnlJbnB1dD47XG4gIHNldD86IEl0ZXJhYmxlT3JWYWx1ZTxEYXRlVGltaW5nUmVsYXRpdmVJbmRleEZhY3RvcnlJbnB1dD47XG4gIHNlbGVjdEFsbD86IEFsbE9yTm9uZVNlbGVjdGlvbjtcbiAgLyoqXG4gICAqIEludmVydHMgdGhlIHNldCBkYXRlIGNoYW5naW5nIGJlaGF2aW9yIHNvIHRoYXQgdGhlIHNldCBpbnB1dCBpcyB0cmVhdGVkIGFzIGl0ZW1zIHRoYXQgc2hvdWxkIGJlIHJldGFpbmVkIGluc3RlYWQgb2YgZXhjbHVkZWQuXG4gICAqXG4gICAqIElnbm9yZWQgd2hlbiBzZXQgaXMgbm90IHVzZWQuIElnbm9yZWQgZm9yIHNlbGVjdEFsbC5cbiAgICovXG4gIGludmVydFNldEJlaGF2aW9yPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVN0YXRlV2l0aENoYW5nZWREYXRlcyhzdGF0ZTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlLCBjaGFuZ2U6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZURhdGVzQ2hhbmdlKTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlIHtcbiAgY29uc3QgeyBhbGxvd2VkRGF5c09mV2VlaywgaW5kZXhGYWN0b3J5LCBpbmRleERheU9mV2VlaywgaW5wdXRTdGFydDogY3VycmVudElucHV0U3RhcnQsIGlucHV0RW5kOiBjdXJyZW50SW5wdXRFbmQsIG1pbk1heERhdGVSYW5nZSwgZmlsdGVyIH0gPSBzdGF0ZTtcbiAgY29uc3QgeyBzdGFydDogbWluRGF0ZSwgZW5kOiBtYXhEYXRlIH0gPSBjYWxlbmRhclNjaGVkdWxlTWluQW5kTWF4RGF0ZVJhbmdlKHN0YXRlKTtcbiAgbGV0IGlucHV0U3RhcnQgPSBjdXJyZW50SW5wdXRTdGFydDtcbiAgbGV0IGlucHV0RW5kID0gY3VycmVudElucHV0RW5kO1xuXG4gIC8qKlxuICAgKiBUaGlzIGlzIGEgc2V0IG9mIGluZGV4ZXMgdGhhdCBhcmUgaW50ZXJuYWxseSBcInNlbGVjdGVkXCIgc28gdGhhdCB0aGV5IGFyZSBleGNsdWRlZCBmcm9tIHRoZSBpbnB1dFN0YXJ0L2lucHV0RW5kIGRhdGUgcmFuZ2UuXG4gICAqXG4gICAqIERvIG5vdCBjb25mdXNlIHRoaXMgd2l0aCB0aGUgYWN0dWFsIGluZGV4ZXMgdGhhdCBhcmUgc2VsZWN0ZWQuXG4gICAqL1xuICBsZXQgdG9nZ2xlZEluZGV4ZXM6IFNldDxEYXRlQmxvY2tJbmRleD47XG5cbiAgZnVuY3Rpb24gYXNJbmRleGVzKGluZGV4ZXM6IEl0ZXJhYmxlT3JWYWx1ZTxEYXRlVGltaW5nUmVsYXRpdmVJbmRleEZhY3RvcnlJbnB1dD4pOiBEYXRlQmxvY2tJbmRleFtdIHtcbiAgICByZXR1cm4gaXRlcmFibGVUb0FycmF5KGluZGV4ZXMpLm1hcChpbmRleEZhY3RvcnkpO1xuICB9XG5cbiAgaWYgKGNoYW5nZS5yZXNldCB8fCBjaGFuZ2Uuc2VsZWN0QWxsICE9IG51bGwgfHwgY2hhbmdlLnNldCAhPSBudWxsKSB7XG4gICAgbGV0IHNldDogTWF5YmU8SXRlcmFibGVPclZhbHVlPERhdGVUaW1pbmdSZWxhdGl2ZUluZGV4RmFjdG9yeUlucHV0Pj4gPSBjaGFuZ2Uuc2V0ID8/IFtdO1xuICAgIGNvbnN0IHNlbGVjdEFsbDogTWF5YmU8QWxsT3JOb25lU2VsZWN0aW9uPiA9IGNoYW5nZS5yZXNldCA9PT0gdHJ1ZSA/IHN0YXRlLmluaXRpYWxTZWxlY3Rpb25TdGF0ZSA6IGNoYW5nZS5zZWxlY3RBbGw7XG5cbiAgICBzd2l0Y2ggKHNlbGVjdEFsbCkge1xuICAgICAgY2FzZSAnYWxsJzpcbiAgICAgICAgaWYgKG1pbkRhdGUgIT0gbnVsbCAmJiBtYXhEYXRlICE9IG51bGwpIHtcbiAgICAgICAgICBpbnB1dFN0YXJ0ID0gbWluRGF0ZTtcbiAgICAgICAgICBpbnB1dEVuZCA9IG1heERhdGU7XG4gICAgICAgICAgc2V0ID0gW107XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdub25lJzpcbiAgICAgICAgaW5wdXRTdGFydCA9IG51bGw7XG4gICAgICAgIGlucHV0RW5kID0gbnVsbDtcbiAgICAgICAgc2V0ID0gW107XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRvZ2dsZWRJbmRleGVzID0gbmV3IFNldChhc0luZGV4ZXMoc2V0KSk7XG5cbiAgICBpZiAoY2hhbmdlLmludmVydFNldEJlaGF2aW9yICYmIG1pbkRhdGUgJiYgbWF4RGF0ZSAmJiAhc2VsZWN0QWxsKSB7XG4gICAgICBjb25zdCBtaW5JbmRleCA9IGluZGV4RmFjdG9yeShtaW5EYXRlKTtcbiAgICAgIGNvbnN0IG1heEluZGV4ID0gaW5kZXhGYWN0b3J5KG1heERhdGUpO1xuXG4gICAgICBpbnB1dFN0YXJ0ID0gbWluRGF0ZTtcbiAgICAgIGlucHV0RW5kID0gbWF4RGF0ZTtcbiAgICAgIHRvZ2dsZWRJbmRleGVzID0gbmV3IFNldChyYW5nZShtaW5JbmRleCwgbWF4SW5kZXggKyAxKS5maWx0ZXIoKHgpID0+ICF0b2dnbGVkSW5kZXhlcy5oYXMoeCkpKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdG9nZ2xlZEluZGV4ZXMgPSBuZXcgU2V0KHN0YXRlLnRvZ2dsZWRJbmRleGVzKTtcblxuICAgIGlmIChjaGFuZ2UudG9nZ2xlKSB7XG4gICAgICBjb25zdCBhbGxvd2VkVG9Ub2dnbGUgPSBhc0luZGV4ZXMoY2hhbmdlLnRvZ2dsZSkuZmlsdGVyKChpKSA9PiBhbGxvd2VkRGF5c09mV2Vlay5oYXMoaW5kZXhEYXlPZldlZWsoaSkpKTtcbiAgICAgIHRvZ2dsZUluU2V0KHRvZ2dsZWRJbmRleGVzLCBhbGxvd2VkVG9Ub2dnbGUpO1xuICAgIH1cblxuICAgIGxldCBhZGRUb0V4Y2x1c2lvbjogTWF5YmU8SXRlcmFibGVPclZhbHVlPERhdGVUaW1pbmdSZWxhdGl2ZUluZGV4RmFjdG9yeUlucHV0Pj47XG4gICAgbGV0IHJlbW92ZUZyb21FeGNsdXNpb246IE1heWJlPEl0ZXJhYmxlT3JWYWx1ZTxEYXRlVGltaW5nUmVsYXRpdmVJbmRleEZhY3RvcnlJbnB1dD4+O1xuXG4gICAgaWYgKGNoYW5nZS5hZGQpIHtcbiAgICAgIGlmIChjaGFuZ2UuaW52ZXJ0U2V0QmVoYXZpb3IpIHtcbiAgICAgICAgYWRkVG9FeGNsdXNpb24gPSBjaGFuZ2UuYWRkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVtb3ZlRnJvbUV4Y2x1c2lvbiA9IGNoYW5nZS5hZGQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZS5yZW1vdmUpIHtcbiAgICAgIGlmIChjaGFuZ2UuaW52ZXJ0U2V0QmVoYXZpb3IpIHtcbiAgICAgICAgcmVtb3ZlRnJvbUV4Y2x1c2lvbiA9IGNoYW5nZS5yZW1vdmU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhZGRUb0V4Y2x1c2lvbiA9IGNoYW5nZS5yZW1vdmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGFkZFRvRXhjbHVzaW9uKSB7XG4gICAgICByZW1vdmVGcm9tU2V0KHRvZ2dsZWRJbmRleGVzLCBhc0luZGV4ZXMoYWRkVG9FeGNsdXNpb24pKTtcbiAgICB9XG5cbiAgICBpZiAocmVtb3ZlRnJvbUV4Y2x1c2lvbikge1xuICAgICAgYWRkVG9TZXQodG9nZ2xlZEluZGV4ZXMsIGFzSW5kZXhlcyhyZW1vdmVGcm9tRXhjbHVzaW9uKSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgbmV4dFN0YXRlID0geyAuLi5zdGF0ZSwgaW5wdXRTdGFydCwgaW5wdXRFbmQsIHRvZ2dsZWRJbmRleGVzIH07XG4gIG5leHRTdGF0ZS5pc0VuYWJsZWREYXkgPSBpc0VuYWJsZWREYXlJbkNhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZShuZXh0U3RhdGUpO1xuXG4gIC8vIFJlY2FsY3VsYXRlIHRoZSByYW5nZSBhbmQgc2ltcGxpZmllZCB0byBleGNsdXNpb25zXG4gIGNvbnN0IHJhbmdlQW5kRXhjbHVzaW9uID0gY29tcHV0ZVNjaGVkdWxlU2VsZWN0aW9uUmFuZ2VBbmRFeGNsdXNpb24obmV4dFN0YXRlKTtcblxuICBpZiAocmFuZ2VBbmRFeGNsdXNpb24pIHtcbiAgICByZXR1cm4gZmluYWxpemVOZXdDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUoeyAuLi5uZXh0U3RhdGUsIHRvZ2dsZWRJbmRleGVzOiBuZXcgU2V0KHJhbmdlQW5kRXhjbHVzaW9uLmV4Y2x1ZGVkKSwgaW5wdXRTdGFydDogcmFuZ2VBbmRFeGNsdXNpb24uc3RhcnQsIGlucHV0RW5kOiByYW5nZUFuZEV4Y2x1c2lvbi5lbmQgfSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gbm8gc2VsZWN0ZWQgZGF5c1xuICAgIHJldHVybiBub1NlbGVjdGlvbkNhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZShuZXh0U3RhdGUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub1NlbGVjdGlvbkNhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZShzdGF0ZTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlKTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlIHtcbiAgcmV0dXJuIGZpbmFsaXplTmV3Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlKHsgLi4uc3RhdGUsIHRvZ2dsZWRJbmRleGVzOiBuZXcgU2V0KCksIGlucHV0U3RhcnQ6IG51bGwsIGlucHV0RW5kOiBudWxsIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlU3RhdGVXaXRoQ2hhbmdlZFJhbmdlKHN0YXRlOiBDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUsIGNoYW5nZTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvbklucHV0RGF0ZVJhbmdlKTogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlIHtcbiAgY29uc3QgeyBpbnB1dFN0YXJ0OiBjdXJyZW50SW5wdXRTdGFydCwgaW5wdXRFbmQ6IGN1cnJlbnRJbnB1dEVuZCwgaW5kZXhGYWN0b3J5LCBtaW5NYXhEYXRlUmFuZ2UgfSA9IHN0YXRlO1xuICBjb25zdCB7IHN0YXJ0OiBtaW5EYXRlLCBlbmQ6IG1heERhdGUgfTogUGFydGlhbDxEYXRlUmFuZ2U+ID0gbWluTWF4RGF0ZVJhbmdlID8/IHt9O1xuXG4gIGNvbnN0IGlucHV0U3RhcnQ6IERhdGUgPSBzdGFydE9mRGF5KGNoYW5nZS5pbnB1dFN0YXJ0KTtcbiAgY29uc3QgaW5wdXRFbmQ6IERhdGUgPSBlbmRPZkRheShjaGFuZ2UuaW5wdXRFbmQpO1xuXG4gIGNvbnN0IGlzVmFsaWRSYW5nZSA9IG1pbkRhdGUgIT0gbnVsbCB8fCBtYXhEYXRlICE9IG51bGwgPyBpc0RhdGVJbkRhdGVSYW5nZUZ1bmN0aW9uKHsgc3RhcnQ6IG1pbkRhdGUgPz8gdW5kZWZpbmVkLCBlbmQ6IG1heERhdGUgPz8gdW5kZWZpbmVkIH0pIDogKCkgPT4gdHJ1ZTtcblxuICBpZiAoIWlzVmFsaWRSYW5nZShpbnB1dFN0YXJ0KSB8fCAhaXNWYWxpZFJhbmdlKGlucHV0RW5kKSB8fCAoaXNTYW1lRGF0ZURheShpbnB1dFN0YXJ0LCBjdXJyZW50SW5wdXRTdGFydCkgJiYgaXNTYW1lRGF0ZURheShpbnB1dEVuZCwgY3VycmVudElucHV0RW5kKSkpIHtcbiAgICByZXR1cm4gc3RhdGU7IC8vIGlmIG5vIGNoYW5nZSwgcmV0dXJuIHRoZSBjdXJyZW50IHN0YXRlLlxuICB9XG5cbiAgLy8gcmV0YWluIGFsbCBpbmRleGVzIHRoYXQgYXJlIHdpdGhpbiB0aGUgbmV3IHJhbmdlXG4gIGNvbnN0IG1pbkluZGV4ID0gaW5kZXhGYWN0b3J5KGlucHV0U3RhcnQpO1xuICBjb25zdCBtYXhJbmRleCA9IGluZGV4RmFjdG9yeShpbnB1dEVuZCkgKyAxO1xuXG4gIGNvbnN0IGN1cnJlbnRJbmRleGVzOiBEYXRlQmxvY2tJbmRleFtdID0gQXJyYXkuZnJvbShzdGF0ZS50b2dnbGVkSW5kZXhlcyk7XG4gIGNvbnN0IGlzSW5DdXJyZW50UmFuZ2UgPSBpc0luZGV4TnVtYmVySW5JbmRleFJhbmdlRnVuY3Rpb24oeyBtaW5JbmRleCwgbWF4SW5kZXggfSk7XG4gIGNvbnN0IGV4Y2x1ZGVkSW5kZXhlc0luTmV3UmFuZ2UgPSBjdXJyZW50SW5kZXhlcy5maWx0ZXIoaXNJbkN1cnJlbnRSYW5nZSk7XG4gIGNvbnN0IHRvZ2dsZWRJbmRleGVzID0gbmV3IFNldChleGNsdWRlZEluZGV4ZXNJbk5ld1JhbmdlKTtcblxuICBjb25zdCBuZXh0U3RhdGUgPSB7IC4uLnN0YXRlLCB0b2dnbGVkSW5kZXhlcywgaW5wdXRTdGFydCwgaW5wdXRFbmQgfTtcbiAgcmV0dXJuIGZpbmFsaXplTmV3Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlKG5leHRTdGF0ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5hbGl6ZU5ld0NhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZShuZXh0U3RhdGU6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSk6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSB7XG4gIG5leHRTdGF0ZS5pc0VuYWJsZWREYXkgPSBpc0VuYWJsZWREYXlJbkNhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZShuZXh0U3RhdGUpO1xuICBuZXh0U3RhdGUuY3VycmVudFNlbGVjdGlvblZhbHVlID0gY29tcHV0ZVNjaGVkdWxlU2VsZWN0aW9uVmFsdWUobmV4dFN0YXRlKTtcbiAgcmV0dXJuIG5leHRTdGF0ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW5hYmxlZERheUluQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlKHN0YXRlOiBDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUpOiBEZWNpc2lvbkZ1bmN0aW9uPERhdGVUaW1pbmdSZWxhdGl2ZUluZGV4RmFjdG9yeUlucHV0PiB7XG4gIGNvbnN0IHsgYWxsb3dlZERheXNPZldlZWssIGluZGV4RmFjdG9yeSwgaW5wdXRTdGFydCwgaW5wdXRFbmQsIGluZGV4RGF5T2ZXZWVrIH0gPSBzdGF0ZTtcbiAgbGV0IGlzSW5TdGFydEFuZEVuZFJhbmdlOiBJc0RhdGVXaXRoaW5EYXRlQmxvY2tSYW5nZUZ1bmN0aW9uO1xuXG4gIGlmIChpbnB1dFN0YXJ0ICYmIGlucHV0RW5kKSB7XG4gICAgaXNJblN0YXJ0QW5kRW5kUmFuZ2UgPSBpc0RhdGVXaXRoaW5EYXRlQmxvY2tSYW5nZUZ1bmN0aW9uKHsgc3RhcnQ6IHN0YXRlLnN0YXJ0LCByYW5nZTogeyBzdGFydDogaW5wdXRTdGFydCwgZW5kOiBpbnB1dEVuZCB9IH0pO1xuICB9IGVsc2Uge1xuICAgIGlzSW5TdGFydEFuZEVuZFJhbmdlID0gKCkgPT4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gKGlucHV0OiBEYXRlVGltaW5nUmVsYXRpdmVJbmRleEZhY3RvcnlJbnB1dCkgPT4ge1xuICAgIGNvbnN0IGluZGV4ID0gaW5kZXhGYWN0b3J5KGlucHV0KTtcbiAgICBjb25zdCBkYXlPZldlZWsgPSBpbmRleERheU9mV2VlayhpbmRleCk7XG5cbiAgICBjb25zdCBpc0luU2VsZWN0ZWRSYW5nZSA9IGlzSW5TdGFydEFuZEVuZFJhbmdlKGluZGV4KTtcbiAgICBjb25zdCBpc1NlbGVjdGVkID0gc3RhdGUudG9nZ2xlZEluZGV4ZXMuaGFzKGluZGV4KTtcbiAgICBjb25zdCBpc0FsbG93ZWREYXlPZldlZWsgPSBhbGxvd2VkRGF5c09mV2Vlay5oYXMoZGF5T2ZXZWVrKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGlzQWxsb3dlZERheU9mV2VlayAmJiAoKGlzSW5TZWxlY3RlZFJhbmdlICYmICFpc1NlbGVjdGVkKSB8fCAoaXNTZWxlY3RlZCAmJiAhaXNJblNlbGVjdGVkUmFuZ2UpKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVNjaGVkdWxlU2VsZWN0aW9uVmFsdWUoc3RhdGU6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSk6IE1heWJlPENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25WYWx1ZT4ge1xuICBjb25zdCB7IGluZGV4RmFjdG9yeSwgYWxsb3dlZERheXNPZldlZWssIGVmZmVjdGl2ZVNjaGVkdWxlRGF5cywgaW5kZXhEYXlPZldlZWssIGNvbXB1dGVTZWxlY3Rpb25SZXN1bHRSZWxhdGl2ZVRvRmlsdGVyLCBmaWx0ZXIgfSA9IHN0YXRlO1xuICBjb25zdCByYW5nZUFuZEV4Y2x1c2lvbiA9IGNvbXB1dGVTY2hlZHVsZVNlbGVjdGlvblJhbmdlQW5kRXhjbHVzaW9uKHN0YXRlKTtcblxuICBpZiAocmFuZ2VBbmRFeGNsdXNpb24gPT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgeyBzdGFydDogcmFuZ2VTdGFydCwgZW5kOiByYW5nZUVuZCwgZXhjbHVkZWQ6IGFsbEV4Y2x1ZGVkLCBkYXRlQmxvY2tSYW5nZSB9ID0gcmFuZ2VBbmRFeGNsdXNpb247XG4gIGxldCBmaWx0ZXJPZmZzZXRFeGNsdWRlZFJhbmdlOiBEYXRlQmxvY2tJbmRleFtdID0gW107XG4gIGxldCBpbmRleE9mZnNldCA9IGRhdGVCbG9ja1JhbmdlLmk7XG5cbiAgbGV0IHN0YXJ0ID0gcmFuZ2VTdGFydDtcbiAgbGV0IGVuZCA9IHJhbmdlRW5kO1xuXG4gIC8vIElmIGNvbXB1dGVTZWxlY3Rpb25SZXN1bHRSZWxhdGl2ZVRvRmlsdGVyIGlzIHRydWUsIHRoZW4gd2UgbmVlZCB0byBvZmZzZXQgdGhlIHZhbHVlcyB0byBiZSByZWxhdGl2ZSB0byB0aGF0IHN0YXJ0LlxuICBpZiAoY29tcHV0ZVNlbGVjdGlvblJlc3VsdFJlbGF0aXZlVG9GaWx0ZXIgJiYgZmlsdGVyPy5zdGFydCkge1xuICAgIHN0YXJ0ID0gZmlsdGVyLnN0YXJ0O1xuXG4gICAgaWYgKGZpbHRlcj8uZW5kKSB7XG4gICAgICBlbmQgPSBjb3B5SG91cnNBbmRNaW51dGVzRnJvbURhdGUoZW5kLCBmaWx0ZXIuZW5kKTtcbiAgICB9XG5cbiAgICBjb25zdCBmaWx0ZXJTdGFydEluZGV4T2Zmc2V0ID0gaW5kZXhGYWN0b3J5KHJhbmdlU3RhcnQpIC0gaW5kZXhGYWN0b3J5KHN0YXJ0KTtcbiAgICBmaWx0ZXJPZmZzZXRFeGNsdWRlZFJhbmdlID0gcmFuZ2UoMCwgZmlsdGVyU3RhcnRJbmRleE9mZnNldCk7XG4gICAgaW5kZXhPZmZzZXQgPSBpbmRleE9mZnNldCAtIGZpbHRlclN0YXJ0SW5kZXhPZmZzZXQ7XG4gIH1cblxuICBjb25zdCBleGNsdWRlZCA9IGNvbXB1dGVTZWxlY3Rpb25SZXN1bHRSZWxhdGl2ZVRvRmlsdGVyXG4gICAgPyBhbGxFeGNsdWRlZC5maWx0ZXIoKHgpID0+IHtcbiAgICAgICAgY29uc3QgaXNFeGNsdWRlZEluZGV4ID0gYWxsb3dlZERheXNPZldlZWsuaGFzKGluZGV4RGF5T2ZXZWVrKHgpKTsgLy8gPz8/XG4gICAgICAgIHJldHVybiBpc0V4Y2x1ZGVkSW5kZXg7XG4gICAgICB9KVxuICAgIDogYWxsRXhjbHVkZWQ7XG5cbiAgY29uc3Qgb2Zmc2V0RXhjbHVkZWQ6IERhdGVCbG9ja0luZGV4W10gPSBleGNsdWRlZC5tYXAoKHgpID0+IHggLSBpbmRleE9mZnNldCk7IC8vIHNldCB0byB0aGUgcHJvcGVyIG9mZnNldFxuXG4gIGNvbnN0IGV4ID0gWy4uLmZpbHRlck9mZnNldEV4Y2x1ZGVkUmFuZ2UsIC4uLm9mZnNldEV4Y2x1ZGVkXTtcblxuICBjb25zdCB3OiBEYXRlU2NoZWR1bGVFbmNvZGVkV2VlayA9IGRhdGVTY2hlZHVsZUVuY29kZWRXZWVrKGVmZmVjdGl2ZVNjaGVkdWxlRGF5cyk7XG4gIGNvbnN0IGQ6IERhdGVCbG9ja0luZGV4W10gPSBbXTsgLy8gXCJpbmNsdWRlZFwiIGJsb2NrcyBhcmUgbmV2ZXIgdXNlZC9jYWxjdWxhdGVkLlxuXG4gIC8vIEFsd2F5cyBlbnN1cmUgdGhlIGVuZCBpcyBhZnRlciBvciBlcXVhbCB0byB0aGUgc3RhcnQuXG4gIGlmIChpc0JlZm9yZShlbmQsIHN0YXJ0KSkge1xuICAgIGVuZCA9IHN0YXJ0OyAvLyBlbmQgaXMgc3RhcnRcbiAgfVxuXG4gIGNvbnN0IGRhdGVTY2hlZHVsZVJhbmdlOiBEYXRlU2NoZWR1bGVSYW5nZSA9IHtcbiAgICBzdGFydCxcbiAgICBlbmQsXG4gICAgdyxcbiAgICBkLFxuICAgIGV4XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBkYXRlU2NoZWR1bGVSYW5nZSxcbiAgICBtaW5NYXhSYW5nZTogeyBzdGFydCwgZW5kIH1cbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uUmFuZ2VBbmRFeGNsdXNpb24gZXh0ZW5kcyBEYXRlUmFuZ2Uge1xuICBkYXRlQmxvY2tSYW5nZTogRGF0ZUJsb2NrUmFuZ2VXaXRoUmFuZ2U7XG4gIGV4Y2x1ZGVkOiBEYXRlQmxvY2tJbmRleFtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVNjaGVkdWxlU2VsZWN0aW9uUmFuZ2VBbmRFeGNsdXNpb24oc3RhdGU6IENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSk6IE1heWJlPENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25SYW5nZUFuZEV4Y2x1c2lvbj4ge1xuICBjb25zdCB7IGlzRW5hYmxlZERheSwgaXNFbmFibGVkRmlsdGVyRGF5IH0gPSBzdGF0ZTtcbiAgY29uc3QgZGF0ZUZhY3RvcnkgPSBkYXRlQmxvY2tUaW1pbmdEYXRlRmFjdG9yeShzdGF0ZSk7XG4gIGNvbnN0IGRhdGVCbG9ja1JhbmdlID0gY29tcHV0ZUNhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25EYXRlQmxvY2tSYW5nZShzdGF0ZSk7XG5cbiAgaWYgKGRhdGVCbG9ja1JhbmdlID09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDsgLy8gcmV0dXJucyBudWxsIGlmIG5vIGl0ZW1zIGFyZSBzZWxlY3RlZC5cbiAgfVxuXG4gIGNvbnN0IHN0YXJ0ID0gZGF0ZUZhY3RvcnkoZGF0ZUJsb2NrUmFuZ2UuaSk7XG4gIGNvbnN0IGVuZCA9IGRhdGVGYWN0b3J5KGRhdGVCbG9ja1JhbmdlLnRvKTtcblxuICBjb25zdCBleGNsdWRlZDogRGF0ZUJsb2NrSW5kZXhbXSA9IHJhbmdlKGRhdGVCbG9ja1JhbmdlLmksIGRhdGVCbG9ja1JhbmdlLnRvICsgMSkuZmlsdGVyKCh4KSA9PiB7XG4gICAgY29uc3QgaXNFeGNsdWRlZEluZGV4ID0gIWlzRW5hYmxlZERheSh4KSB8fCAhaXNFbmFibGVkRmlsdGVyRGF5KHgpO1xuICAgIHJldHVybiBpc0V4Y2x1ZGVkSW5kZXg7XG4gIH0pO1xuXG4gIGNvbnN0IHJlc3VsdDogQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblJhbmdlQW5kRXhjbHVzaW9uID0ge1xuICAgIGRhdGVCbG9ja1JhbmdlLFxuICAgIHN0YXJ0LFxuICAgIGVuZCxcbiAgICBleGNsdWRlZFxuICB9O1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblJhbmdlKHN0YXRlOiBDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUpOiBNYXliZTxEYXRlUmFuZ2U+IHtcbiAgY29uc3QgZGF0ZUZhY3RvcnkgPSBkYXRlQmxvY2tUaW1pbmdEYXRlRmFjdG9yeShzdGF0ZSk7XG4gIGNvbnN0IGRhdGVCbG9ja1JhbmdlID0gY29tcHV0ZUNhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25EYXRlQmxvY2tSYW5nZShzdGF0ZSk7XG4gIGNvbnN0IGRhdGVSYW5nZTogTWF5YmU8RGF0ZVJhbmdlPiA9IGRhdGVCbG9ja1JhbmdlICE9IG51bGwgPyB7IHN0YXJ0OiBkYXRlRmFjdG9yeShkYXRlQmxvY2tSYW5nZS5pKSwgZW5kOiBkYXRlRmFjdG9yeShkYXRlQmxvY2tSYW5nZS50byBhcyBudW1iZXIpIH0gOiB1bmRlZmluZWQ7XG4gIHJldHVybiBkYXRlUmFuZ2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvbkRhdGVCbG9ja1JhbmdlKHN0YXRlOiBDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RhdGUpOiBNYXliZTxEYXRlQmxvY2tSYW5nZVdpdGhSYW5nZT4ge1xuICBjb25zdCB7IGFsbG93ZWREYXlzT2ZXZWVrLCBpbmRleEZhY3RvcnksIGlucHV0U3RhcnQsIGlucHV0RW5kLCBpbmRleERheU9mV2VlaywgaXNFbmFibGVkRGF5LCBpc0VuYWJsZWRGaWx0ZXJEYXkgfSA9IHN0YXRlO1xuICBjb25zdCBlbmFibGVkRXhjbHVzaW9uSW5kZXhlcyA9IEFycmF5LmZyb20oc3RhdGUudG9nZ2xlZEluZGV4ZXMpLmZpbHRlcigoaSkgPT4gYWxsb3dlZERheXNPZldlZWsuaGFzKGluZGV4RGF5T2ZXZWVrKGkpKSk7XG4gIGNvbnN0IG1pbkFuZE1heFNlbGVjdGVkVmFsdWVzID0gbWluQW5kTWF4TnVtYmVyKGVuYWJsZWRFeGNsdXNpb25JbmRleGVzKTtcblxuICBsZXQgc3RhcnRSYW5nZTogTWF5YmU8RGF0ZUJsb2NrSW5kZXg+O1xuICBsZXQgZW5kUmFuZ2U6IE1heWJlPERhdGVCbG9ja0luZGV4PjtcblxuICBpZiAobWluQW5kTWF4U2VsZWN0ZWRWYWx1ZXMpIHtcbiAgICBzdGFydFJhbmdlID0gbWluQW5kTWF4U2VsZWN0ZWRWYWx1ZXMubWluO1xuICAgIGVuZFJhbmdlID0gbWluQW5kTWF4U2VsZWN0ZWRWYWx1ZXMubWF4O1xuICB9XG5cbiAgaWYgKGlucHV0U3RhcnQgIT0gbnVsbCAmJiBpbnB1dEVuZCAhPSBudWxsKSB7XG4gICAgY29uc3QgaW5wdXRTdGFydEluZGV4ID0gaW5kZXhGYWN0b3J5KGlucHV0U3RhcnQpO1xuICAgIGNvbnN0IGlucHV0RW5kSW5kZXggPSBpbmRleEZhY3RvcnkoaW5wdXRFbmQpO1xuXG4gICAgc3RhcnRSYW5nZSA9IHN0YXJ0UmFuZ2UgIT0gbnVsbCA/IE1hdGgubWluKGlucHV0U3RhcnRJbmRleCwgc3RhcnRSYW5nZSkgOiBpbnB1dFN0YXJ0SW5kZXg7XG4gICAgZW5kUmFuZ2UgPSBlbmRSYW5nZSAhPSBudWxsID8gTWF0aC5tYXgoaW5wdXRFbmRJbmRleCwgZW5kUmFuZ2UpIDogaW5wdXRFbmRJbmRleDtcbiAgfVxuXG4gIGlmIChzdGFydFJhbmdlICE9IG51bGwgJiYgZW5kUmFuZ2UgIT0gbnVsbCkge1xuICAgIGNvbnN0IHNjYW5TdGFydEluZGV4ID0gc3RhcnRSYW5nZTtcbiAgICBjb25zdCBzY2FuRW5kSW5kZXggPSBlbmRSYW5nZTtcblxuICAgIC8vIGNsZWFyIHN0YXJ0IGFuZCBlbmRcbiAgICBzdGFydFJhbmdlID0gdW5kZWZpbmVkO1xuICAgIGVuZFJhbmdlID0gdW5kZWZpbmVkO1xuXG4gICAgLy8gaWYgdGhlIG1pbiBpcyBlcXVhbCB0byB0aGUgc3RhcnQgaW5kZXgsIHRoZW4gd2UgYXJlIGluIHRoZSByYW5nZSBhbmQgbmVlZCB0byBpdGVyYXRlIGRhdGVzIHVudGlsIHdlIGZpbmQgb25lIHRoYXQgaXMgbm90IHNlbGVjdGVkL2V4Y2x1ZGVkLlxuICAgIGZvciAobGV0IGkgPSBzY2FuU3RhcnRJbmRleDsgaSA8PSBzY2FuRW5kSW5kZXg7IGkgKz0gMSkge1xuICAgICAgaWYgKGlzRW5hYmxlZEZpbHRlckRheShpKSAmJiBpc0VuYWJsZWREYXkoaSkpIHtcbiAgICAgICAgc3RhcnRSYW5nZSA9IGk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHNhbWUgd2l0aCB0aGUgbWF4XG4gICAgZm9yIChsZXQgaSA9IHNjYW5FbmRJbmRleDsgaSA+PSBzY2FuU3RhcnRJbmRleDsgaSAtPSAxKSB7XG4gICAgICBpZiAoaXNFbmFibGVkRmlsdGVyRGF5KGkpICYmIGlzRW5hYmxlZERheShpKSkge1xuICAgICAgICBlbmRSYW5nZSA9IGk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChzdGFydFJhbmdlICE9IG51bGwgJiYgZW5kUmFuZ2UgIT0gbnVsbCkge1xuICAgIHJldHVybiB7IGk6IHN0YXJ0UmFuZ2UsIHRvOiBlbmRSYW5nZSB9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cbiJdfQ==
@@ -41,7 +41,7 @@ export class DbxItemListFieldComponent extends FieldType {
41
41
  }));
42
42
  this.isSelectedModifierFunction$ = this.values$.pipe(distinctUntilHasDifferentValues(), map((values) => {
43
43
  return dbxValueListItemDecisionFunction(isSelectedDecisionFunctionFactory({ readKey: this.readKey })(values));
44
- }), shareReplay());
44
+ }), shareReplay(1));
45
45
  }
46
46
  get label() {
47
47
  return this.field.props.label;
@@ -87,4 +87,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
87
87
  type: Component,
88
88
  args: [{ template: "<div class=\"dbx-list-item-field\" [dbxListItemModifier] [dbxListItemIsSelectedModifier]=\"isSelectedModifierFunction$ | async\">\n <dbx-label class=\"dbx-label-padded\" *ngIf=\"label\">{{ label }}</dbx-label>\n <div class=\"dbx-list-item-field-content\">\n <dbx-injection [config]=\"config$ | async\"></dbx-injection>\n </div>\n <mat-divider></mat-divider>\n <dbx-form-description *ngIf=\"description\">{{ description }}</dbx-form-description>\n</div>\n" }]
89
89
  }] });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC9zZWxlY3Rpb24vbGlzdC9saXN0LmZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3NlbGVjdGlvbi9saXN0L2xpc3QuZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBMkIsTUFBTSxlQUFlLENBQUM7QUFHbkUsT0FBTyxFQUFrRyxnQ0FBZ0MsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BLLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxXQUFXLEVBQW9CLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RJLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxpQ0FBaUMsRUFBd0MsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9KLE9BQU8sRUFBb0IsU0FBUyxFQUFtQixNQUFNLGtCQUFrQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxHQUFHLEVBQWMsV0FBVyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7QUFxQjNGOztHQUVHO0FBSUgsTUFBTSxPQUFPLHlCQUFtTCxTQUFRLFNBQTBEO0lBSGxROztRQUlVLHVCQUFrQixHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUM5QyxpQkFBWSxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUV4QyxvQkFBZSxHQUFHLElBQUksZUFBZSxDQUF5QixTQUFTLENBQUMsQ0FBQztRQUN4RSxpQkFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENB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dXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERieEluamVjdGlvbkNvbXBvbmVudENvbmZpZyB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0RGJ4U2VsZWN0aW9uTGlzdFdyYXBwZXJEaXJlY3RpdmUsIExpc3RTZWxlY3Rpb25TdGF0ZSwgRGJ4VmFsdWVMaXN0SXRlbURlY2lzaW9uRnVuY3Rpb24sIGRieFZhbHVlTGlzdEl0ZW1EZWNpc2lvbkZ1bmN0aW9uIH0gZnJvbSAnQGRlcmVla2IvZGJ4LXdlYic7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsSGFzRGlmZmVyZW50VmFsdWVzLCBmaWx0ZXJNYXliZSwgTGlzdExvYWRpbmdTdGF0ZSwgU3Vic2NyaXB0aW9uT2JqZWN0LCBzd2l0Y2hNYXBNYXliZU9icyB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgY29udmVydE1heWJlVG9BcnJheSwgaGFzRGlmZmVyZW50VmFsdWVzLCBpc1NlbGVjdGVkRGVjaXNpb25GdW5jdGlvbkZhY3RvcnksIE1heWJlLCBQcmltYXRpdmVLZXksIFJlYWRLZXlGdW5jdGlvbiwgcmVhZEtleXNGcm9tIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZFByb3BzLCBGaWVsZFR5cGUsIEZpZWxkVHlwZUNvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlLCBzaGFyZVJlcGxheSwgQmVoYXZpb3JTdWJqZWN0LCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERieEl0ZW1MaXN0RmllbGRQcm9wczxUID0gdW5rbm93biwgQyBleHRlbmRzIEFic3RyYWN0RGJ4U2VsZWN0aW9uTGlzdFdyYXBwZXJEaXJlY3RpdmU8VD4gPSBBYnN0cmFjdERieFNlbGVjdGlvbkxpc3RXcmFwcGVyRGlyZWN0aXZlPFQ+LCBLIGV4dGVuZHMgUHJpbWF0aXZlS2V5ID0gUHJpbWF0aXZlS2V5PiBleHRlbmRzIFBpY2s8Rm9ybWx5RmllbGRQcm9wcywgJ2xhYmVsJyB8ICdkZXNjcmlwdGlvbic+IHtcbiAgLyoqXG4gICAqIExpc3QgdG8gcmVuZGVyIGNvbXBvbmVudHMgZnJvbVxuICAgKi9cbiAgcmVhZG9ubHkgbGlzdENvbXBvbmVudENsYXNzOiBPYnNlcnZhYmxlPFR5cGU8Qz4+O1xuICAvKipcbiAgICogUmVhZCBrZXkgZnVuY3Rpb24gdG8gcmVhZCB0aGUgaWRlbnRpZmllciBmcm9tIHRoZSBpbnB1dFxuICAgKi9cbiAgcmVhZG9ubHkgcmVhZEtleTogUmVhZEtleUZ1bmN0aW9uPFQsIEs+O1xuICAvKipcbiAgICogT2JzZXJ2YWJsZSB0aGF0IHByb3ZpZGVzIHRoZSBpdGVtcyB0byBzZWxlY3QuXG4gICAqL1xuICByZWFkb25seSBzdGF0ZSQ6IE9ic2VydmFibGU8TGlzdExvYWRpbmdTdGF0ZTxUPj47XG4gIC8qKlxuICAgKiBGdW5jdGlvbiB0aGF0IHNpZ25hbHMgdG8gbG9hZCBtb3JlIGl0ZW1zLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZE1vcmU/OiAoKSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIFVzZWQgZm9yIHBpY2tpbmcgaXRlbXMgYnkgaWRlbnRpZmllciBmcm9tIGEgRGJ4TGlzdCBjb21wb25lbnQuXG4gKi9cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJ2xpc3QuZmllbGQuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIERieEl0ZW1MaXN0RmllbGRDb21wb25lbnQ8VCA9IHVua25vd24sIEMgZXh0ZW5kcyBBYnN0cmFjdERieFNlbGVjdGlvbkxpc3RXcmFwcGVyRGlyZWN0aXZlPFQ+ID0gQWJzdHJhY3REYnhTZWxlY3Rpb25MaXN0V3JhcHBlckRpcmVjdGl2ZTxUPiwgSyBleHRlbmRzIFByaW1hdGl2ZUtleSA9IFByaW1hdGl2ZUtleT4gZXh0ZW5kcyBGaWVsZFR5cGU8RmllbGRUeXBlQ29uZmlnPERieEl0ZW1MaXN0RmllbGRQcm9wczxULCBDLCBLPj4+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9zZWxlY3Rpb25FdmVudFN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSBfbG9hZE1vcmVTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG5cbiAgcHJpdmF0ZSBfZm9ybUNvbnRyb2xPYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPEFic3RyYWN0Q29udHJvbD4+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGZvcm1Db250cm9sJCA9IHRoaXMuX2Zvcm1Db250cm9sT2JzLnBpcGUoZmlsdGVyTWF5YmUoKSk7XG5cbiAgcmVhZG9ubHkgX2Zvcm1Db250cm9sVmFsdWUkOiBPYnNlcnZhYmxlPE1heWJlPEtbXT4+ID0gdGhpcy5mb3JtQ29udHJvbCQucGlwZShzd2l0Y2hNYXAoKGNvbnRyb2wpID0+IGNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKGNvbnRyb2wudmFsdWUpLCBzaGFyZVJlcGxheSgxKSkpKTtcbiAgcmVhZG9ubHkgdmFsdWVzJDogT2JzZXJ2YWJsZTxLW10+ID0gdGhpcy5fZm9ybUNvbnRyb2xWYWx1ZSQucGlwZShtYXAoY29udmVydE1heWJlVG9BcnJheSksIHNoYXJlUmVwbGF5KDEpKTtcblxuICBwcml2YXRlIF9saXN0Q29tcG9uZW50Q2xhc3NPYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPE9ic2VydmFibGU8VHlwZTxDPj4+Pih1bmRlZmluZWQpO1xuICByZWFkb25seSBsaXN0Q29tcG9uZW50Q2xhc3MkID0gdGhpcy5fbGlzdENvbXBvbmVudENsYXNzT2JzLnBpcGUoc3dpdGNoTWFwTWF5YmVPYnMoKSk7XG4gIHJlYWRvbmx5IGNvbmZpZyQ6IE9ic2VydmFibGU8RGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnPEM+PiA9IHRoaXMubGlzdENvbXBvbmVudENsYXNzJC5waXBlKFxuICAgIG1hcCgoY29tcG9uZW50Q2xhc3MpID0+IHtcbiAgICAgIGNvbnN0IGxvYWRNb3JlID0gdGhpcy5sb2FkTW9yZTtcbiAgICAgIGNvbnN0IGNvbmZpZzogRGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnPEM+ID0ge1xuICAgICAgICBjb21wb25lbnRDbGFzcyxcbiAgICAgICAgaW5pdDogKGxpc3RWaWV3KSA9PiB7XG4gICAgICAgICAgbGlzdFZpZXcuc2VsZWN0aW9uTW9kZSA9ICdzZWxlY3QnOyAvLyBhbHdheXMgZW5hYmxlIHNlbGVjdFxuXG4gICAgICAgICAgbGlzdFZpZXcuc3RhdGUkID0gdGhpcy5maWVsZC5wcm9wcy5zdGF0ZSQ7XG5cbiAgICAgICAgICBpZiAobG9hZE1vcmUgIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5fbG9hZE1vcmVTdWIuc3Vic2NyaXB0aW9uID0gbGlzdFZpZXcubG9hZE1vcmUuc3Vic2NyaWJlKCgpID0+IGxvYWRNb3JlKCkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIHNldCBzdWJzY3JpcHRpb25cbiAgICAgICAgICB0aGlzLl9zZWxlY3Rpb25FdmVudFN1Yi5zdWJzY3JpcHRpb24gPSBsaXN0Vmlldy5zZWxlY3Rpb25DaGFuZ2Uuc3Vic2NyaWJlKCh4KSA9PiB0aGlzLnVwZGF0ZUZvclNlbGVjdGlvbih4KSk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBjb25maWc7XG4gICAgfSlcbiAgKTtcblxuICByZWFkb25seSBpc1NlbGVjdGVkTW9kaWZpZXJGdW5jdGlvbiQ6IE9ic2VydmFibGU8RGJ4VmFsdWVMaXN0SXRlbURlY2lzaW9uRnVuY3Rpb248VD4+ID0gdGhpcy52YWx1ZXMkLnBpcGUoXG4gICAgZGlzdGluY3RVbnRpbEhhc0RpZmZlcmVudFZhbHVlcygpLFxuICAgIG1hcCgodmFsdWVzKSA9PiB7XG4gICAgICByZXR1cm4gZGJ4VmFsdWVMaXN0SXRlbURlY2lzaW9uRnVuY3Rpb24oaXNTZWxlY3RlZERlY2lzaW9uRnVuY3Rpb25GYWN0b3J5KHsgcmVhZEtleTogdGhpcy5yZWFkS2V5IH0pKHZhbHVlcykpO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KClcbiAgKTtcblxuICBnZXQgbGFiZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHMubGFiZWw7XG4gIH1cblxuICBnZXQgZGVzY3JpcHRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHMuZGVzY3JpcHRpb247XG4gIH1cblxuICBnZXQgbGlzdENvbXBvbmVudENsYXNzKCkge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzLmxpc3RDb21wb25lbnRDbGFzcztcbiAgfVxuXG4gIGdldCByZWFkS2V5KCkge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzLnJlYWRLZXk7XG4gIH1cblxuICBnZXQgbG9hZE1vcmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHMubG9hZE1vcmU7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5uZXh0KHRoaXMuZm9ybUNvbnRyb2wpO1xuICAgIHRoaXMuX2xpc3RDb21wb25lbnRDbGFzc09icy5uZXh0KHRoaXMubGlzdENvbXBvbmVudENsYXNzKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Zvcm1Db250cm9sT2JzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fc2VsZWN0aW9uRXZlbnRTdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX2xpc3RDb21wb25lbnRDbGFzc09icy5jb21wbGV0ZSgpO1xuICB9XG5cbiAgdXBkYXRlRm9yU2VsZWN0aW9uKGxpc3Q6IExpc3RTZWxlY3Rpb25TdGF0ZTxUPikge1xuICAgIGNvbnN0IGl0ZW1zID0gbGlzdC5pdGVtcy5maWx0ZXIoKHgpID0+IHguc2VsZWN0ZWQpLm1hcCgoeCkgPT4geC5pdGVtVmFsdWUpO1xuICAgIGNvbnN0IHZhbHVlcyA9IHJlYWRLZXlzRnJvbSh0aGlzLnJlYWRLZXksIGl0ZW1zKTtcbiAgICB0aGlzLnNldFZhbHVlcyh2YWx1ZXMpO1xuICB9XG5cbiAgc2V0VmFsdWVzKHZhbHVlczogTWF5YmU8S1tdPik6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZXMgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlO1xuXG4gICAgaWYgKGN1cnJlbnRWYWx1ZXMgPT0gbnVsbCB8fCBoYXNEaWZmZXJlbnRWYWx1ZXMoY3VycmVudFZhbHVlcywgdmFsdWVzKSkge1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZXMpO1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZGJ4LWxpc3QtaXRlbS1maWVsZFwiIFtkYnhMaXN0SXRlbU1vZGlmaWVyXSBbZGJ4TGlzdEl0ZW1Jc1NlbGVjdGVkTW9kaWZpZXJdPVwiaXNTZWxlY3RlZE1vZGlmaWVyRnVuY3Rpb24kIHwgYXN5bmNcIj5cbiAgPGRieC1sYWJlbCBjbGFzcz1cImRieC1sYWJlbC1wYWRkZWRcIiAqbmdJZj1cImxhYmVsXCI+e3sgbGFiZWwgfX08L2RieC1sYWJlbD5cbiAgPGRpdiBjbGFzcz1cImRieC1saXN0LWl0ZW0tZmllbGQtY29udGVudFwiPlxuICAgIDxkYngtaW5qZWN0aW9uIFtjb25maWddPVwiY29uZmlnJCB8IGFzeW5jXCI+PC9kYngtaW5qZWN0aW9uPlxuICA8L2Rpdj5cbiAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gIDxkYngtZm9ybS1kZXNjcmlwdGlvbiAqbmdJZj1cImRlc2NyaXB0aW9uXCI+e3sgZGVzY3JpcHRpb24gfX08L2RieC1mb3JtLWRlc2NyaXB0aW9uPlxuPC9kaXY+XG4iXX0=
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC9zZWxlY3Rpb24vbGlzdC9saXN0LmZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3NlbGVjdGlvbi9saXN0L2xpc3QuZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBMkIsTUFBTSxlQUFlLENBQUM7QUFHbkUsT0FBTyxFQUFrRyxnQ0FBZ0MsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BLLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxXQUFXLEVBQW9CLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RJLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxpQ0FBaUMsRUFBd0MsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9KLE9BQU8sRUFBb0IsU0FBUyxFQUFtQixNQUFNLGtCQUFrQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxHQUFHLEVBQWMsV0FBVyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7QUFxQjNGOztHQUVHO0FBSUgsTUFBTSxPQUFPLHlCQUFtTCxTQUFRLFNBQTBEO0lBSGxROztRQUlVLHVCQUFrQixHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUM5QyxpQkFBWSxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUV4QyxvQkFBZSxHQUFHLElBQUksZUFBZSxDQUF5QixTQUFTLENBQUMsQ0FBQztRQUN4RSxpQkFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENB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LFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWcgfSBmcm9tICdAZGVyZWVrYi9kYngtY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdERieFNlbGVjdGlvbkxpc3RXcmFwcGVyRGlyZWN0aXZlLCBMaXN0U2VsZWN0aW9uU3RhdGUsIERieFZhbHVlTGlzdEl0ZW1EZWNpc2lvbkZ1bmN0aW9uLCBkYnhWYWx1ZUxpc3RJdGVtRGVjaXNpb25GdW5jdGlvbiB9IGZyb20gJ0BkZXJlZWtiL2RieC13ZWInO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbEhhc0RpZmZlcmVudFZhbHVlcywgZmlsdGVyTWF5YmUsIExpc3RMb2FkaW5nU3RhdGUsIFN1YnNjcmlwdGlvbk9iamVjdCwgc3dpdGNoTWFwTWF5YmVPYnMgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IGNvbnZlcnRNYXliZVRvQXJyYXksIGhhc0RpZmZlcmVudFZhbHVlcywgaXNTZWxlY3RlZERlY2lzaW9uRnVuY3Rpb25GYWN0b3J5LCBNYXliZSwgUHJpbWF0aXZlS2V5LCBSZWFkS2V5RnVuY3Rpb24sIHJlYWRLZXlzRnJvbSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRQcm9wcywgRmllbGRUeXBlLCBGaWVsZFR5cGVDb25maWcgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIEJlaGF2aW9yU3ViamVjdCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGludGVyZmFjZSBEYnhJdGVtTGlzdEZpZWxkUHJvcHM8VCA9IHVua25vd24sIEMgZXh0ZW5kcyBBYnN0cmFjdERieFNlbGVjdGlvbkxpc3RXcmFwcGVyRGlyZWN0aXZlPFQ+ID0gQWJzdHJhY3REYnhTZWxlY3Rpb25MaXN0V3JhcHBlckRpcmVjdGl2ZTxUPiwgSyBleHRlbmRzIFByaW1hdGl2ZUtleSA9IFByaW1hdGl2ZUtleT4gZXh0ZW5kcyBQaWNrPEZvcm1seUZpZWxkUHJvcHMsICdsYWJlbCcgfCAnZGVzY3JpcHRpb24nPiB7XG4gIC8qKlxuICAgKiBMaXN0IHRvIHJlbmRlciBjb21wb25lbnRzIGZyb21cbiAgICovXG4gIHJlYWRvbmx5IGxpc3RDb21wb25lbnRDbGFzczogT2JzZXJ2YWJsZTxUeXBlPEM+PjtcbiAgLyoqXG4gICAqIFJlYWQga2V5IGZ1bmN0aW9uIHRvIHJlYWQgdGhlIGlkZW50aWZpZXIgZnJvbSB0aGUgaW5wdXRcbiAgICovXG4gIHJlYWRvbmx5IHJlYWRLZXk6IFJlYWRLZXlGdW5jdGlvbjxULCBLPjtcbiAgLyoqXG4gICAqIE9ic2VydmFibGUgdGhhdCBwcm92aWRlcyB0aGUgaXRlbXMgdG8gc2VsZWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdGUkOiBPYnNlcnZhYmxlPExpc3RMb2FkaW5nU3RhdGU8VD4+O1xuICAvKipcbiAgICogRnVuY3Rpb24gdGhhdCBzaWduYWxzIHRvIGxvYWQgbW9yZSBpdGVtcy5cbiAgICovXG4gIHJlYWRvbmx5IGxvYWRNb3JlPzogKCkgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBVc2VkIGZvciBwaWNraW5nIGl0ZW1zIGJ5IGlkZW50aWZpZXIgZnJvbSBhIERieExpc3QgY29tcG9uZW50LlxuICovXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICdsaXN0LmZpZWxkLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEYnhJdGVtTGlzdEZpZWxkQ29tcG9uZW50PFQgPSB1bmtub3duLCBDIGV4dGVuZHMgQWJzdHJhY3REYnhTZWxlY3Rpb25MaXN0V3JhcHBlckRpcmVjdGl2ZTxUPiA9IEFic3RyYWN0RGJ4U2VsZWN0aW9uTGlzdFdyYXBwZXJEaXJlY3RpdmU8VD4sIEsgZXh0ZW5kcyBQcmltYXRpdmVLZXkgPSBQcmltYXRpdmVLZXk+IGV4dGVuZHMgRmllbGRUeXBlPEZpZWxkVHlwZUNvbmZpZzxEYnhJdGVtTGlzdEZpZWxkUHJvcHM8VCwgQywgSz4+PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfc2VsZWN0aW9uRXZlbnRTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX2xvYWRNb3JlU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuXG4gIHByaXZhdGUgX2Zvcm1Db250cm9sT2JzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxBYnN0cmFjdENvbnRyb2w+Pih1bmRlZmluZWQpO1xuICByZWFkb25seSBmb3JtQ29udHJvbCQgPSB0aGlzLl9mb3JtQ29udHJvbE9icy5waXBlKGZpbHRlck1heWJlKCkpO1xuXG4gIHJlYWRvbmx5IF9mb3JtQ29udHJvbFZhbHVlJDogT2JzZXJ2YWJsZTxNYXliZTxLW10+PiA9IHRoaXMuZm9ybUNvbnRyb2wkLnBpcGUoc3dpdGNoTWFwKChjb250cm9sKSA9PiBjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aChjb250cm9sLnZhbHVlKSwgc2hhcmVSZXBsYXkoMSkpKSk7XG4gIHJlYWRvbmx5IHZhbHVlcyQ6IE9ic2VydmFibGU8S1tdPiA9IHRoaXMuX2Zvcm1Db250cm9sVmFsdWUkLnBpcGUobWFwKGNvbnZlcnRNYXliZVRvQXJyYXkpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcHJpdmF0ZSBfbGlzdENvbXBvbmVudENsYXNzT2JzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxPYnNlcnZhYmxlPFR5cGU8Qz4+Pj4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgbGlzdENvbXBvbmVudENsYXNzJCA9IHRoaXMuX2xpc3RDb21wb25lbnRDbGFzc09icy5waXBlKHN3aXRjaE1hcE1heWJlT2JzKCkpO1xuICByZWFkb25seSBjb25maWckOiBPYnNlcnZhYmxlPERieEluamVjdGlvbkNvbXBvbmVudENvbmZpZzxDPj4gPSB0aGlzLmxpc3RDb21wb25lbnRDbGFzcyQucGlwZShcbiAgICBtYXAoKGNvbXBvbmVudENsYXNzKSA9PiB7XG4gICAgICBjb25zdCBsb2FkTW9yZSA9IHRoaXMubG9hZE1vcmU7XG4gICAgICBjb25zdCBjb25maWc6IERieEluamVjdGlvbkNvbXBvbmVudENvbmZpZzxDPiA9IHtcbiAgICAgICAgY29tcG9uZW50Q2xhc3MsXG4gICAgICAgIGluaXQ6IChsaXN0VmlldykgPT4ge1xuICAgICAgICAgIGxpc3RWaWV3LnNlbGVjdGlvbk1vZGUgPSAnc2VsZWN0JzsgLy8gYWx3YXlzIGVuYWJsZSBzZWxlY3RcblxuICAgICAgICAgIGxpc3RWaWV3LnN0YXRlJCA9IHRoaXMuZmllbGQucHJvcHMuc3RhdGUkO1xuXG4gICAgICAgICAgaWYgKGxvYWRNb3JlICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvYWRNb3JlU3ViLnN1YnNjcmlwdGlvbiA9IGxpc3RWaWV3LmxvYWRNb3JlLnN1YnNjcmliZSgoKSA9PiBsb2FkTW9yZSgpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBzZXQgc3Vic2NyaXB0aW9uXG4gICAgICAgICAgdGhpcy5fc2VsZWN0aW9uRXZlbnRTdWIuc3Vic2NyaXB0aW9uID0gbGlzdFZpZXcuc2VsZWN0aW9uQ2hhbmdlLnN1YnNjcmliZSgoeCkgPT4gdGhpcy51cGRhdGVGb3JTZWxlY3Rpb24oeCkpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gY29uZmlnO1xuICAgIH0pXG4gICk7XG5cbiAgcmVhZG9ubHkgaXNTZWxlY3RlZE1vZGlmaWVyRnVuY3Rpb24kOiBPYnNlcnZhYmxlPERieFZhbHVlTGlzdEl0ZW1EZWNpc2lvbkZ1bmN0aW9uPFQ+PiA9IHRoaXMudmFsdWVzJC5waXBlKFxuICAgIGRpc3RpbmN0VW50aWxIYXNEaWZmZXJlbnRWYWx1ZXMoKSxcbiAgICBtYXAoKHZhbHVlcykgPT4ge1xuICAgICAgcmV0dXJuIGRieFZhbHVlTGlzdEl0ZW1EZWNpc2lvbkZ1bmN0aW9uKGlzU2VsZWN0ZWREZWNpc2lvbkZ1bmN0aW9uRmFjdG9yeSh7IHJlYWRLZXk6IHRoaXMucmVhZEtleSB9KSh2YWx1ZXMpKTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIGdldCBsYWJlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcy5sYWJlbDtcbiAgfVxuXG4gIGdldCBkZXNjcmlwdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcy5kZXNjcmlwdGlvbjtcbiAgfVxuXG4gIGdldCBsaXN0Q29tcG9uZW50Q2xhc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHMubGlzdENvbXBvbmVudENsYXNzO1xuICB9XG5cbiAgZ2V0IHJlYWRLZXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHMucmVhZEtleTtcbiAgfVxuXG4gIGdldCBsb2FkTW9yZSgpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcy5sb2FkTW9yZTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2Zvcm1Db250cm9sT2JzLm5leHQodGhpcy5mb3JtQ29udHJvbCk7XG4gICAgdGhpcy5fbGlzdENvbXBvbmVudENsYXNzT2JzLm5leHQodGhpcy5saXN0Q29tcG9uZW50Q2xhc3MpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZm9ybUNvbnRyb2xPYnMuY29tcGxldGUoKTtcbiAgICB0aGlzLl9zZWxlY3Rpb25FdmVudFN1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fbGlzdENvbXBvbmVudENsYXNzT2JzLmNvbXBsZXRlKCk7XG4gIH1cblxuICB1cGRhdGVGb3JTZWxlY3Rpb24obGlzdDogTGlzdFNlbGVjdGlvblN0YXRlPFQ+KSB7XG4gICAgY29uc3QgaXRlbXMgPSBsaXN0Lml0ZW1zLmZpbHRlcigoeCkgPT4geC5zZWxlY3RlZCkubWFwKCh4KSA9PiB4Lml0ZW1WYWx1ZSk7XG4gICAgY29uc3QgdmFsdWVzID0gcmVhZEtleXNGcm9tKHRoaXMucmVhZEtleSwgaXRlbXMpO1xuICAgIHRoaXMuc2V0VmFsdWVzKHZhbHVlcyk7XG4gIH1cblxuICBzZXRWYWx1ZXModmFsdWVzOiBNYXliZTxLW10+KTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFZhbHVlcyA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWU7XG5cbiAgICBpZiAoY3VycmVudFZhbHVlcyA9PSBudWxsIHx8IGhhc0RpZmZlcmVudFZhbHVlcyhjdXJyZW50VmFsdWVzLCB2YWx1ZXMpKSB7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlcyk7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkYngtbGlzdC1pdGVtLWZpZWxkXCIgW2RieExpc3RJdGVtTW9kaWZpZXJdIFtkYnhMaXN0SXRlbUlzU2VsZWN0ZWRNb2RpZmllcl09XCJpc1NlbGVjdGVkTW9kaWZpZXJGdW5jdGlvbiQgfCBhc3luY1wiPlxuICA8ZGJ4LWxhYmVsIGNsYXNzPVwiZGJ4LWxhYmVsLXBhZGRlZFwiICpuZ0lmPVwibGFiZWxcIj57eyBsYWJlbCB9fTwvZGJ4LWxhYmVsPlxuICA8ZGl2IGNsYXNzPVwiZGJ4LWxpc3QtaXRlbS1maWVsZC1jb250ZW50XCI+XG4gICAgPGRieC1pbmplY3Rpb24gW2NvbmZpZ109XCJjb25maWckIHwgYXN5bmNcIj48L2RieC1pbmplY3Rpb24+XG4gIDwvZGl2PlxuICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cbiAgPGRieC1mb3JtLWRlc2NyaXB0aW9uICpuZ0lmPVwiZGVzY3JpcHRpb25cIj57eyBkZXNjcmlwdGlvbiB9fTwvZGJ4LWZvcm0tZGVzY3JpcHRpb24+XG48L2Rpdj5cbiJdfQ==
@@ -923,7 +923,7 @@ class DbxScheduleSelectionCalendarDateDaysComponent {
923
923
  constructor(dbxCalendarStore, dbxCalendarScheduleSelectionStore) {
924
924
  this.dbxCalendarStore = dbxCalendarStore;
925
925
  this.dbxCalendarScheduleSelectionStore = dbxCalendarScheduleSelectionStore;
926
- this.template$ = this.dbxCalendarScheduleSelectionStore.scheduleDays$.pipe(map(enabledDaysFromDateScheduleDayCodes), shareReplay());
926
+ this.template$ = this.dbxCalendarScheduleSelectionStore.scheduleDays$.pipe(map(enabledDaysFromDateScheduleDayCodes), shareReplay(1));
927
927
  this.isFormModified = (value) => {
928
928
  const newSetValue = new Set(dateScheduleDayCodesFromEnabledDays(value));
929
929
  return this.dbxCalendarScheduleSelectionStore.scheduleDays$.pipe(map((currentSet) => {