@myclub_se/data-access 3.5.6 → 3.5.7
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.
- package/esm2022/lib/api-models/api-booking-calendar-slot-group-item.mjs +2 -0
- package/esm2022/lib/api-models/api-booking-calendar-slot-session-group-item.mjs +2 -0
- package/esm2022/lib/api-models/api-booking-calendar-slot-session.mjs +1 -1
- package/esm2022/lib/api-models/api-booking-calendar-slot.mjs +1 -1
- package/esm2022/lib/api-models/index.mjs +3 -1
- package/esm2022/lib/models/booking-calendar-slot-session.mjs +5 -11
- package/esm2022/lib/models/booking-calendar-slot.mjs +5 -8
- package/esm2022/lib/services/booking-calendar.service.mjs +79 -19
- package/esm2022/lib/services/factories/booking-calendar-slot-factory.mjs +2 -2
- package/esm2022/lib/services/factories/booking-calendar-slot-group-item-factory.mjs +2 -0
- package/esm2022/lib/services/factories/booking-calendar-slot-session-factory.mjs +2 -2
- package/esm2022/lib/services/factories/booking-calendar-slot-session-group-item-factory.mjs +2 -0
- package/esm2022/lib/services/factories/index.mjs +3 -1
- package/esm2022/lib/store/actions/booking.actions.mjs +1 -1
- package/esm2022/lib/store/effects/booking.effects.mjs +3 -3
- package/fesm2022/myclub_se-data-access.mjs +93 -38
- package/fesm2022/myclub_se-data-access.mjs.map +1 -1
- package/lib/api-models/api-booking-calendar-slot-group-item.d.ts +3 -0
- package/lib/api-models/api-booking-calendar-slot-session-group-item.d.ts +3 -0
- package/lib/api-models/api-booking-calendar-slot-session.d.ts +1 -3
- package/lib/api-models/api-booking-calendar-slot.d.ts +1 -2
- package/lib/api-models/index.d.ts +2 -0
- package/lib/models/booking-calendar-slot-session.d.ts +3 -7
- package/lib/models/booking-calendar-slot.d.ts +3 -5
- package/lib/services/booking-calendar.service.d.ts +12 -2
- package/lib/services/factories/booking-calendar-slot-group-item-factory.d.ts +2 -0
- package/lib/services/factories/booking-calendar-slot-session-group-item-factory.d.ts +2 -0
- package/lib/services/factories/index.d.ts +2 -0
- package/lib/store/actions/booking.actions.d.ts +4 -4
- package/package.json +1 -1
|
@@ -122,7 +122,7 @@ export class BookingEffects {
|
|
|
122
122
|
deleteBookingCalendarSlot$ = createEffect(() => this.actions$.pipe(ofType(deleteBookingCalendarSlotAction), exhaustMap(({ role, clubOrSectionOrTeamId, slot, sendNotification }) => this.bookingCalendarService.deleteBookingCalendarSlot(role, clubOrSectionOrTeamId, slot.id, sendNotification).pipe(mergeMap(() => [
|
|
123
123
|
deleteBookingCalendarSlotSuccessAction({ slot: slot }),
|
|
124
124
|
]), catchError((error) => of(deleteBookingCalendarSlotFailureAction({ payload: error })))))));
|
|
125
|
-
deleteBookingCalendarRepeatableSlot$ = createEffect(() => this.actions$.pipe(ofType(deleteBookingCalendarRepeatableSlotAction), exhaustMap(({ role, clubOrSectionOrTeamId, slot,
|
|
125
|
+
deleteBookingCalendarRepeatableSlot$ = createEffect(() => this.actions$.pipe(ofType(deleteBookingCalendarRepeatableSlotAction), exhaustMap(({ role, clubOrSectionOrTeamId, slot, deleteDates, sendNotification }) => this.bookingCalendarService.deleteBookingCalendarSlotRepeatable(role, clubOrSectionOrTeamId, slot.id, deleteDates, sendNotification).pipe(mergeMap(() => [
|
|
126
126
|
deleteBookingCalendarRepeatableSlotSuccessAction({ slot: slot }),
|
|
127
127
|
]), catchError((error) => of(deleteBookingCalendarRepeatableSlotFailureAction({ payload: error })))))));
|
|
128
128
|
createBookingCalendarSlotSession$ = createEffect(() => this.actions$.pipe(ofType(createBookingCalendarSlotSessionAction), exhaustMap(({ role, clubOrSectionOrTeamId, session }) => this.bookingCalendarService.createBookingCalendarSlotSession(role, clubOrSectionOrTeamId, { ...session }).pipe(mergeMap((session) => [
|
|
@@ -137,7 +137,7 @@ export class BookingEffects {
|
|
|
137
137
|
deleteBookingCalendarSlotSession$ = createEffect(() => this.actions$.pipe(ofType(deleteBookingCalendarSlotSessionAction), exhaustMap(({ role, clubOrSectionOrTeamId, session, sendNotification }) => this.bookingCalendarService.deleteBookingCalendarSlotSession(role, clubOrSectionOrTeamId, session.id, sendNotification).pipe(mergeMap(() => [
|
|
138
138
|
deleteBookingCalendarSlotSessionSuccessAction({ session: session }),
|
|
139
139
|
]), catchError((error) => of(deleteBookingCalendarSlotSessionFailureAction({ payload: error })))))));
|
|
140
|
-
deleteBookingCalendarRepeatableSlotSession$ = createEffect(() => this.actions$.pipe(ofType(deleteBookingCalendarRepeatableSlotSessionAction), exhaustMap(({ role, clubOrSectionOrTeamId, session,
|
|
140
|
+
deleteBookingCalendarRepeatableSlotSession$ = createEffect(() => this.actions$.pipe(ofType(deleteBookingCalendarRepeatableSlotSessionAction), exhaustMap(({ role, clubOrSectionOrTeamId, session, deleteDates, sendNotification }) => this.bookingCalendarService.deleteBookingCalendarSlotSessionRepeatable(role, clubOrSectionOrTeamId, session.id, deleteDates, sendNotification).pipe(mergeMap(() => [
|
|
141
141
|
deleteBookingCalendarRepeatableSlotSessionSuccessAction({ session: session }),
|
|
142
142
|
]), catchError((error) => of(deleteBookingCalendarRepeatableSlotSessionFailureAction({ payload: error })))))));
|
|
143
143
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: BookingEffects, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -146,4 +146,4 @@ export class BookingEffects {
|
|
|
146
146
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: BookingEffects, decorators: [{
|
|
147
147
|
type: Injectable
|
|
148
148
|
}] });
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va2luZy5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi9zdG9yZS9lZmZlY3RzL2Jvb2tpbmcuZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFekQsT0FBTyxFQUNMLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0IsK0JBQStCLEVBQy9CLHVCQUF1QixFQUN2Qiw4QkFBOEIsRUFDOUIsOEJBQThCLEVBQzlCLDJCQUEyQixFQUMzQixrQ0FBa0MsRUFDbEMsK0JBQStCLEVBQy9CLHNDQUFzQyxFQUN0QyxzQ0FBc0MsRUFDdEMsNkNBQTZDLEVBQzdDLDZDQUE2QyxFQUM3QyxzQ0FBc0MsRUFDdEMsa0NBQWtDLEVBQ2xDLG1DQUFtQyxFQUNuQywwQ0FBMEMsRUFDMUMsMkNBQTJDLEVBQzNDLGtEQUFrRCxFQUFFLGtEQUFrRCxFQUN0RywwQ0FBMEMsRUFDMUMsdUJBQXVCLEVBQ3ZCLDhCQUE4QixFQUM5Qiw4QkFBOEIsRUFDOUIsMkJBQTJCLEVBQzNCLGtDQUFrQyxFQUNsQyx5Q0FBeUMsRUFDekMsZ0RBQWdELEVBQ2hELGdEQUFnRCxFQUNoRCx1REFBdUQsRUFDdkQsdURBQXVELEVBQ3ZELGdEQUFnRCxFQUNoRCwrQkFBK0IsRUFDL0Isc0NBQXNDLEVBQ3RDLHNDQUFzQyxFQUN0Qyw2Q0FBNkMsRUFDN0MsNkNBQTZDLEVBQzdDLHNDQUFzQyxFQUN0QyxrQ0FBa0MsRUFDbEMsc0JBQXNCLEVBQ3RCLDZCQUE2QixFQUM3Qiw2QkFB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QUFDLGdEQUFnRCxDQUFDLEVBQ3hELFVBQVUsQ0FDUixDQUFDLEVBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBTXhFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQywwQ0FBMEMsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQzNKLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNiLHVEQUF1RCxDQUFDLEVBQUMsT0FBTyxFQUFFLE9BQU8sRUFBQyxDQUFDO0tBQzVFLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsdURBQXVELENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3hILENBQUMsQ0FDTCxDQUFDLENBQUM7dUdBeGlCUSxjQUFjOzJHQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7QWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGV9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHtleGhhdXN0TWFwLCBtYXAsIG1lcmdlTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gIGNyZWF0ZUJvb2thYmxlSXRlbUFjdGlvbixcbiAgY3JlYXRlQm9va2FibGVJdGVtRmFpbHVyZUFjdGlvbixcbiAgY3JlYXRlQm9va2FibGVJdGVtU3VjY2Vzc0FjdGlvbixcbiAgY3JlYXRlQm9va2FibGVUYWdBY3Rpb24sXG4gIGNyZWF0ZUJvb2thYmxlVGFnRmFpbHVyZUFjdGlvbixcbiAgY3JlYXRlQm9va2FibGVUYWdTdWNjZXNzQWN0aW9uLFxuICBjcmVhdGVCb29raW5nQ2FsZW5kYXJBY3Rpb24sXG4gIGNyZWF0ZUJvb2tpbmdDYWxlbmRhckZhaWx1cmVBY3Rpb24sXG4gIGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RBY3Rpb24sXG4gIGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RGYWlsdXJlQWN0aW9uLFxuICBjcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkFjdGlvbixcbiAgY3JlYXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25GYWlsdXJlQWN0aW9uLFxuICBjcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvblN1Y2Nlc3NBY3Rpb24sXG4gIGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTdWNjZXNzQWN0aW9uLFxuICBjcmVhdGVCb29raW5nQ2FsZW5kYXJTdWNjZXNzQWN0aW9uLFxuICBjcmVhdGVCdWxrQm9va2luZ0NhbGVuZGFyU2xvdEFjdGlvbixcbiAgY3JlYXRlQnVsa0Jvb2tpbmdDYWxlbmRhclNsb3RGYWlsdXJlQWN0aW9uLFxuICBjcmVhdGVCdWxrQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25zQWN0aW9uLFxuICBjcmVhdGVCdWxrQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25zRmFpbHVyZUFjdGlvbiwgY3JlYXRlQnVsa0Jvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uc1N1Y2Nlc3NBY3Rpb24sXG4gIGNyZWF0ZUJ1bGtCb29raW5nQ2FsZW5kYXJTbG90U3VjY2Vzc0FjdGlvbixcbiAgZGVsZXRlQm9va2FibGVUYWdBY3Rpb24sXG4gIGRlbGV0ZUJvb2thYmxlVGFnRmFpbHVyZUFjdGlvbixcbiAgZGVsZXRlQm9va2FibGVUYWdTdWNjZXNzQWN0aW9uLFxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJBY3Rpb24sXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhckZhaWx1cmVBY3Rpb24sXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclJlcGVhdGFibGVTbG90QWN0aW9uLFxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJSZXBlYXRhYmxlU2xvdEZhaWx1cmVBY3Rpb24sXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclJlcGVhdGFibGVTbG90U2Vzc2lvbkFjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RTZXNzaW9uRmFpbHVyZUFjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RTZXNzaW9uU3VjY2Vzc0FjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RTdWNjZXNzQWN0aW9uLFxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJTbG90QWN0aW9uLFxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJTbG90RmFpbHVyZUFjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25BY3Rpb24sXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uRmFpbHVyZUFjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25TdWNjZXNzQWN0aW9uLFxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJTbG90U3VjY2Vzc0FjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyU3VjY2Vzc0FjdGlvbixcbiAgbGlzdEFjdGl2aXR5VHlwZUFjdGlvbixcbiAgbGlzdEFjdGl2aXR5VHlwZUZhaWx1cmVBY3Rpb24sXG4gIGxpc3RBY3Rpdml0eVR5cGVTdWNjZXNzQWN0aW9uLFxuICBsaXN0Qm9va2FibGVJdGVtQWN0aW9uLFxuICBsaXN0Qm9va2FibGVJdGVtRmFpbHVyZUFjdGlvbixcbiAgbGlzdEJvb2thYmxlSXRlbVN1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RCb29rYWJsZVRhZ0FjdGlvbixcbiAgbGlzdEJvb2thYmxlVGFnRmFpbHVyZUFjdGlvbixcbiAgbGlzdEJvb2thYmxlVGFnU3VjY2Vzc0FjdGlvbixcbiAgbGlzdENhbGVuZGFyQWN0aW9uLFxuICBsaXN0Q2FsZW5kYXJGYWlsdXJlQWN0aW9uLFxuICBsaXN0Q2FsZW5kYXJTdWNjZXNzQWN0aW9uLFxuICBsaXN0TG9jYXRpb25BY3Rpb24sXG4gIGxpc3RMb2NhdGlvbkZhaWx1cmVBY3Rpb24sXG4gIGxpc3RMb2NhdGlvblN1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RNZW1iZXJCb29raW5nQ2FsZW5kYXJCb29rYWJsZVNsb3RzQWN0aW9uLFxuICBsaXN0TWVtYmVyQm9va2luZ0NhbGVuZGFyQm9va2FibGVTbG90c0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RNZW1iZXJCb29raW5nQ2FsZW5kYXJCb29rYWJsZVNsb3RzU3VjY2Vzc0FjdGlvbixcbiAgbGlzdE1lbWJlckJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uQWN0aW9uLFxuICBsaXN0TWVtYmVyQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25GYWlsdXJlQWN0aW9uLFxuICBsaXN0TWVtYmVyQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25TdWNjZXNzQWN0aW9uLFxuICBsaXN0TWVtYmVyQ2FsZW5kYXJBY3Rpb24sXG4gIGxpc3RNZW1iZXJDYWxlbmRhckZhaWx1cmVBY3Rpb24sXG4gIGxpc3RNZW1iZXJDYWxlbmRhclN1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RUZWFtQWN0aW9uLFxuICBsaXN0VGVhbUZhaWx1cmVBY3Rpb24sXG4gIGxpc3RUZWFtU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVCb29raW5nU2V0dGluZ3NBY3Rpb24sXG4gIHJldHJpZXZlQm9va2luZ1NldHRpbmdzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVCb29raW5nU2V0dGluZ3NTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZVNldHRpbmdzQWN0aW9uLFxuICByZXRyaWV2ZVNldHRpbmdzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVTZXR0aW5nc1N1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZUFjdGl2aXR5VHlwZUFjdGlvbixcbiAgdXBkYXRlQWN0aXZpdHlUeXBlRmFpbHVyZUFjdGlvbixcbiAgdXBkYXRlQWN0aXZpdHlUeXBlU3VjY2Vzc0FjdGlvbixcbiAgdXBkYXRlQm9va2FibGVJdGVtQWN0aW9uLFxuICB1cGRhdGVCb29rYWJsZUl0ZW1GYWlsdXJlQWN0aW9uLFxuICB1cGRhdGVCb29rYWJsZUl0ZW1TdWNjZXNzQWN0aW9uLFxuICB1cGRhdGVCb29rYWJsZVRhZ0FjdGlvbixcbiAgdXBkYXRlQm9va2FibGVUYWdGYWlsdXJlQWN0aW9uLFxuICB1cGRhdGVCb29rYWJsZVRhZ1N1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZUJvb2tpbmdDYWxlbmRhckFjdGlvbixcbiAgdXBkYXRlQm9va2luZ0NhbGVuZGFyRmFpbHVyZUFjdGlvbixcbiAgdXBkYXRlQm9va2luZ0NhbGVuZGFyU2xvdEFjdGlvbixcbiAgdXBkYXRlQm9va2luZ0NhbGVuZGFyU2xvdEZhaWx1cmVBY3Rpb24sXG4gIHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uQWN0aW9uLFxuICB1cGRhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkZhaWx1cmVBY3Rpb24sXG4gIHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uU3VjY2Vzc0FjdGlvbixcbiAgdXBkYXRlQm9va2luZ0NhbGVuZGFyU2xvdFN1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZUJvb2tpbmdDYWxlbmRhclN1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZUJvb2tpbmdTZXR0aW5nc0FjdGlvbixcbiAgdXBkYXRlQm9va2luZ1NldHRpbmdzRmFpbHVyZUFjdGlvbixcbiAgdXBkYXRlQm9va2luZ1NldHRpbmdzU3VjY2Vzc0FjdGlvblxufSBmcm9tICcuLi9hY3Rpb25zJztcbmltcG9ydCB7XG4gIEFjdGl2aXR5TG9jYXRpb24sXG4gIEFjdGl2aXR5U2V0dGluZ3MsXG4gIEFjdGl2aXR5VHlwZSxcbiAgQm9va2FibGVJdGVtLFxuICBCb29rYWJsZVRhZyxcbiAgQm9va2luZ0NhbGVuZGFyLFxuICBCb29raW5nQ2FsZW5kYXJTbG90LFxuICBCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbixcbiAgQm9va2luZ1NldHRpbmdzLFxuICBDb2xsZWN0aW9uLFxuICBSb2xlLFxuICBTZWFyY2hUZWFtLFxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtBY3Rpdml0eVNlcnZpY2UsIEJvb2thYmxlU2VydmljZSwgQm9va2luZ0NhbGVuZGFyU2VydmljZSwgVGVhbVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgZm9ya0pvaW4sIG9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7SHR0cEVycm9yUmVzcG9uc2V9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQm9va2luZ0VmZmVjdHMge1xuICBwcml2YXRlIGFjdGlvbnMkID0gaW5qZWN0KEFjdGlvbnMpO1xuICBwcml2YXRlIGJvb2tpbmdDYWxlbmRhclNlcnZpY2UgPSBpbmplY3QoQm9va2luZ0NhbGVuZGFyU2VydmljZSk7XG4gIHByaXZhdGUgYm9va2FibGVTZXJ2aWNlID0gaW5qZWN0KEJvb2thYmxlU2VydmljZSk7XG4gIHByaXZhdGUgYWN0aXZpdHlTZXJ2aWNlID0gaW5qZWN0KEFjdGl2aXR5U2VydmljZSk7XG4gIHByaXZhdGUgdGVhbVNlcnZpY2UgPSBpbmplY3QoVGVhbVNlcnZpY2UpO1xuXG4gIGxpc3RDYWxlbmRhcnMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUobGlzdENhbGVuZGFyQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nXG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuZ2V0Qm9va2luZ0NhbGVuZGFycyhyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQpLnBpcGUoXG4gICAgICAgIG1hcChcbiAgICAgICAgICAoY2FsZW5kYXJzOiBDb2xsZWN0aW9uPEJvb2tpbmdDYWxlbmRhcj4pID0+IGxpc3RDYWxlbmRhclN1Y2Nlc3NBY3Rpb24oe2Jvb2tpbmdDYWxlbmRhcnM6IGNhbGVuZGFycy50b0FycmF5KCl9KSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKSxcbiAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RDYWxlbmRhckZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKSxcbiAgKSk7XG5cbiAgbGlzdE1lbWJlckNhbGVuZGFycyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxpc3RNZW1iZXJDYWxlbmRhckFjdGlvbiksXG4gICAgICBtZXJnZU1hcCgoe21lbWJlcklkc306IHsgbWVtYmVySWRzOiBBcnJheTxzdHJpbmc+IH0pID0+XG4gICAgICAgIGZvcmtKb2luKFxuICAgICAgICAgIG1lbWJlcklkcy5tYXAoKGlkOiBzdHJpbmcpID0+XG4gICAgICAgICAgICB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuZ2V0Qm9va2luZ0NhbGVuZGFycyhSb2xlLk1lbWJlckFkbWluLCBpZClcbiAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChjYWxlbmRhcnM6IENvbGxlY3Rpb248Qm9va2luZ0NhbGVuZGFyPikgPT4gKHtpZCwgY2FsZW5kYXJzOiBjYWxlbmRhcnMudG9BcnJheSgpfSkpLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2Yoe2lkLCBlcnJvcn0pKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKHJlc3VsdHM6IEFycmF5PHsgaWQ6IHN0cmluZywgY2FsZW5kYXJzPzogQXJyYXk8Qm9va2luZ0NhbGVuZGFyPiwgZXJyb3I/OiBIdHRwRXJyb3JSZXNwb25zZSB9PikgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2FsZW5kYXJNYXAgPSBuZXcgTWFwPHN0cmluZywgQXJyYXk8Qm9va2luZ0NhbGVuZGFyPj4oKTtcbiAgICAgICAgICAgIGNvbnN0IGVycm9ycyA9IHJlc3VsdHMuZmlsdGVyKHJlc3VsdCA9PiByZXN1bHQuZXJyb3IpO1xuICAgICAgICAgICAgaWYgKGVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKGxpc3RNZW1iZXJDYWxlbmRhckZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yc1swXS5lcnJvciBhcyBIdHRwRXJyb3JSZXNwb25zZX0pKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdWx0cy5mb3JFYWNoKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJlc3VsdC5jYWxlbmRhcnMpIHtcbiAgICAgICAgICAgICAgICBjYWxlbmRhck1hcC5zZXQocmVzdWx0LmlkLCByZXN1bHQuY2FsZW5kYXJzKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBvZihsaXN0TWVtYmVyQ2FsZW5kYXJTdWNjZXNzQWN0aW9uKHtib29raW5nQ2FsZW5kYXJzTWFwOiBjYWxlbmRhck1hcH0pKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGxpc3RNZW1iZXJTZXNzaW9ucyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxpc3RNZW1iZXJCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkFjdGlvbiksXG4gICAgICBtZXJnZU1hcCgoe21lbWJlcklkc306IHsgbWVtYmVySWRzOiBBcnJheTxzdHJpbmc+IH0pID0+XG4gICAgICAgIGZvcmtKb2luKFxuICAgICAgICAgIG1lbWJlcklkcy5tYXAoKGlkOiBzdHJpbmcpID0+XG4gICAgICAgICAgICB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuZ2V0TWVtYmVyQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25zKGlkKVxuICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHNlc3Npb25zOiBDb2xsZWN0aW9uPEJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uPikgPT4gKHtpZCwgc2Vzc2lvbnM6IHNlc3Npb25zLnRvQXJyYXkoKX0pKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHtpZCwgZXJyb3J9KSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKS5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKChyZXN1bHRzOiBBcnJheTx7XG4gICAgICAgICAgICBpZDogc3RyaW5nLFxuICAgICAgICAgICAgc2Vzc2lvbnM/OiBBcnJheTxCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbj4sXG4gICAgICAgICAgICBlcnJvcj86IEh0dHBFcnJvclJlc3BvbnNlXG4gICAgICAgICAgfT4pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlc3Npb25zTWFwID0gbmV3IE1hcDxzdHJpbmcsIEFycmF5PEJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uPj4oKTtcbiAgICAgICAgICAgIGNvbnN0IGVycm9ycyA9IHJlc3VsdHMuZmlsdGVyKHJlc3VsdCA9PiByZXN1bHQuZXJyb3IpO1xuICAgICAgICAgICAgaWYgKGVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKGxpc3RNZW1iZXJCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yc1swXS5lcnJvciBhcyBIdHRwRXJyb3JSZXNwb25zZX0pKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdWx0cy5mb3JFYWNoKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJlc3VsdC5zZXNzaW9ucykge1xuICAgICAgICAgICAgICAgIHNlc3Npb25zTWFwLnNldChyZXN1bHQuaWQsIHJlc3VsdC5zZXNzaW9ucyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gb2YobGlzdE1lbWJlckJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uU3VjY2Vzc0FjdGlvbih7c2Vzc2lvbnNNYXA6IHNlc3Npb25zTWFwfSkpO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbGlzdE1lbWJlckJvb2thYmxlU2xvdHMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsaXN0TWVtYmVyQm9va2luZ0NhbGVuZGFyQm9va2FibGVTbG90c0FjdGlvbiksXG4gICAgICBtZXJnZU1hcCgoe2Jvb2thYmxlSWQsIG1lbWJlcklkcywgc3RhcnREYXRlLCBlbmREYXRlfToge1xuICAgICAgICAgIGJvb2thYmxlSWQ6IHN0cmluZyxcbiAgICAgICAgICBtZW1iZXJJZHM6IEFycmF5PHN0cmluZz4sXG4gICAgICAgICAgc3RhcnREYXRlOiBzdHJpbmcsXG4gICAgICAgICAgZW5kRGF0ZTogc3RyaW5nXG4gICAgICAgIH0pID0+XG4gICAgICAgICAgZm9ya0pvaW4oXG4gICAgICAgICAgICBtZW1iZXJJZHMubWFwKChpZDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgICB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuZ2V0TWVtYmVyQm9va2luZ0NhbGVuZGFyQm9va2FibGVTbG90cyhpZCwgYm9va2FibGVJZCwgc3RhcnREYXRlLCBlbmREYXRlKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgbWFwKChzbG90czogQ29sbGVjdGlvbjxCb29raW5nQ2FsZW5kYXJTbG90PikgPT4gKHtpZCwgc2xvdHM6IHNsb3RzLnRvQXJyYXkoKX0pKSxcbiAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2Yoe2lkLCBlcnJvcn0pKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICApLnBpcGUoXG4gICAgICAgICAgICBtZXJnZU1hcCgocmVzdWx0czogQXJyYXk8eyBpZDogc3RyaW5nLCBzbG90cz86IEFycmF5PEJvb2tpbmdDYWxlbmRhclNsb3Q+LCBlcnJvcj86IEh0dHBFcnJvclJlc3BvbnNlIH0+KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHNsb3RzTWFwID0gbmV3IE1hcDxzdHJpbmcsIEFycmF5PEJvb2tpbmdDYWxlbmRhclNsb3Q+PigpO1xuICAgICAgICAgICAgICBjb25zdCBlcnJvcnMgPSByZXN1bHRzLmZpbHRlcihyZXN1bHQgPT4gcmVzdWx0LmVycm9yKTtcbiAgICAgICAgICAgICAgaWYgKGVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YobGlzdE1lbWJlckJvb2tpbmdDYWxlbmRhckJvb2thYmxlU2xvdHNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcnNbMF0uZXJyb3IgYXMgSHR0cEVycm9yUmVzcG9uc2V9KSk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXN1bHRzLmZvckVhY2goKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuc2xvdHMpIHtcbiAgICAgICAgICAgICAgICAgIHNsb3RzTWFwLnNldChyZXN1bHQuaWQsIHJlc3VsdC5zbG90cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICByZXR1cm4gb2YobGlzdE1lbWJlckJvb2tpbmdDYWxlbmRhckJvb2thYmxlU2xvdHNTdWNjZXNzQWN0aW9uKHtzbG90c01hcDogc2xvdHNNYXB9KSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbGlzdExvY2F0aW9ucyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShsaXN0TG9jYXRpb25BY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmdcbiAgICAgIH0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLmdldEFjdGl2aXR5TG9jYXRpb25zKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgdHJ1ZSkucGlwZShcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChsb2NhdGlvbnM6IENvbGxlY3Rpb248QWN0aXZpdHlMb2NhdGlvbj4gfCB1bmRlZmluZWQpID0+IGxpc3RMb2NhdGlvblN1Y2Nlc3NBY3Rpb24oe2xvY2F0aW9uczogKGxvY2F0aW9ucyBhcyBDb2xsZWN0aW9uPEFjdGl2aXR5TG9jYXRpb24+KS50b0FycmF5KCl9KSxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICApLFxuICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdExvY2F0aW9uRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpLFxuICApKTtcblxuICBsaXN0Qm9va2FibGVJdGVtcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShsaXN0Qm9va2FibGVJdGVtQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nXG4gICAgICB9KSA9PiB0aGlzLmJvb2thYmxlU2VydmljZS5nZXRCb29rYWJsZUl0ZW1zKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCkucGlwZShcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChib29rYWJsZUl0ZW1zOiBDb2xsZWN0aW9uPEJvb2thYmxlSXRlbT4gfCB1bmRlZmluZWQpID0+IGxpc3RCb29rYWJsZUl0ZW1TdWNjZXNzQWN0aW9uKHtpdGVtczogKGJvb2thYmxlSXRlbXMgYXMgQ29sbGVjdGlvbjxCb29rYWJsZUl0ZW0+KS50b0FycmF5KCl9KSxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICApLFxuICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdEJvb2thYmxlSXRlbUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKSxcbiAgKSk7XG5cbiAgbGlzdEJvb2thYmxlVGFncyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShsaXN0Qm9va2FibGVUYWdBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmdcbiAgICAgIH0pID0+IHRoaXMuYm9va2FibGVTZXJ2aWNlLmdldEJvb2thYmxlVGFncyhyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQpLnBpcGUoXG4gICAgICAgIG1hcChcbiAgICAgICAgICAoYm9va2FibGVUYWdzOiBDb2xsZWN0aW9uPEJvb2thYmxlVGFnPiB8IHVuZGVmaW5lZCkgPT4gbGlzdEJvb2thYmxlVGFnU3VjY2Vzc0FjdGlvbih7dGFnczogKGJvb2thYmxlVGFncyBhcyBDb2xsZWN0aW9uPEJvb2thYmxlVGFnPikudG9BcnJheSgpfSksXG4gICAgICAgICksXG4gICAgICApXG4gICAgKSxcbiAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RCb29rYWJsZVRhZ0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKSxcbiAgKSk7XG5cbiAgbGlzdFRlYW1zJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGxpc3RUZWFtQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nXG4gICAgICB9KSA9PiB0aGlzLnRlYW1TZXJ2aWNlLmdldFRlYW1zKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCkucGlwZShcbiAgICAgICAgbWFwKFxuICAgICAgICAgICh0ZWFtczogQ29sbGVjdGlvbjxTZWFyY2hUZWFtPikgPT4gbGlzdFRlYW1TdWNjZXNzQWN0aW9uKHt0ZWFtczogdGVhbXMudG9BcnJheSgpfSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICksXG4gICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihsaXN0VGVhbUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKSxcbiAgKSk7XG5cbiAgcmV0cmlldmVTZXR0aW5ncyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShyZXRyaWV2ZVNldHRpbmdzQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nXG4gICAgICB9KSA9PiB0aGlzLmFjdGl2aXR5U2VydmljZS5nZXRBY3Rpdml0eVNldHRpbmdzKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCkucGlwZShcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChzZXR0aW5nczogQWN0aXZpdHlTZXR0aW5ncykgPT4gcmV0cmlldmVTZXR0aW5nc1N1Y2Nlc3NBY3Rpb24oe3NldHRpbmdzOiBzZXR0aW5nc30pLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICApLFxuICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVTZXR0aW5nc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKSxcbiAgKSlcblxuICByZXRyaWV2ZUJvb2tpbmdTZXR0aW5ncyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShyZXRyaWV2ZUJvb2tpbmdTZXR0aW5nc0FjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZ1xuICAgICAgfSkgPT4gdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLmdldEJvb2tpbmdTZXR0aW5ncyhyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQpLnBpcGUoXG4gICAgICAgIG1hcChcbiAgICAgICAgICAoYm9va2luZ1NldHRpbmdzOiBCb29raW5nU2V0dGluZ3MpID0+IHJldHJpZXZlQm9va2luZ1NldHRpbmdzU3VjY2Vzc0FjdGlvbih7c2V0dGluZ3M6IGJvb2tpbmdTZXR0aW5nc30pLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICApLFxuICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVCb29raW5nU2V0dGluZ3NGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSksXG4gICkpXG5cbiAgbGlzdEFjdGl2aXR5VHlwZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUobGlzdEFjdGl2aXR5VHlwZUFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZ1xuICAgICAgfSkgPT4gdGhpcy5hY3Rpdml0eVNlcnZpY2UuZ2V0QWN0aXZpdHlUeXBlcyhyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQpLnBpcGUoXG4gICAgICAgIG1hcChcbiAgICAgICAgICAoYWN0aXZpdHlUeXBlczogQ29sbGVjdGlvbjxBY3Rpdml0eVR5cGU+KSA9PiBsaXN0QWN0aXZpdHlUeXBlU3VjY2Vzc0FjdGlvbih7YWN0aXZpdHlUeXBlczogYWN0aXZpdHlUeXBlcy50b0FycmF5KCl9KSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKSxcbiAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RBY3Rpdml0eVR5cGVGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSksXG4gICkpO1xuXG4gIHVwZGF0ZUFjdGl2aXR5VHlwZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZSh1cGRhdGVBY3Rpdml0eVR5cGVBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgYWN0aXZpdHlUeXBlfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgYWN0aXZpdHlUeXBlOiBBY3Rpdml0eVR5cGVcbiAgICAgIH0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLnVwZGF0ZUFjdGl2aXR5VHlwZShyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIGFjdGl2aXR5VHlwZSkucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKGFjdGl2aXR5VHlwZTogQWN0aXZpdHlUeXBlKSA9PiBbXG4gICAgICAgICAgdXBkYXRlQWN0aXZpdHlUeXBlU3VjY2Vzc0FjdGlvbih7YWN0aXZpdHlUeXBlOiBhY3Rpdml0eVR5cGV9KSxcbiAgICAgICAgICBsaXN0QWN0aXZpdHlUeXBlQWN0aW9uKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YodXBkYXRlQWN0aXZpdHlUeXBlRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxuICBjcmVhdGVCb29rYWJsZUl0ZW0kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoY3JlYXRlQm9va2FibGVJdGVtQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIGl0ZW19OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBpdGVtOiBQYXJ0aWFsPEJvb2thYmxlSXRlbT5cbiAgICAgIH0pID0+IHRoaXMuYm9va2FibGVTZXJ2aWNlLmNyZWF0ZUJvb2thYmxlSXRlbShyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHsuLi5pdGVtfSkucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKGJvb2thYmxlSXRlbTogQm9va2FibGVJdGVtKSA9PiBbXG4gICAgICAgICAgY3JlYXRlQm9va2FibGVJdGVtU3VjY2Vzc0FjdGlvbih7aXRlbTogYm9va2FibGVJdGVtfSksXG4gICAgICAgICAgbGlzdEJvb2thYmxlSXRlbUFjdGlvbih7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZUJvb2thYmxlSXRlbUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgdXBkYXRlQm9va2FibGVJdGVtJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKHVwZGF0ZUJvb2thYmxlSXRlbUFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBpdGVtfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgaXRlbTogUGFydGlhbDxCb29rYWJsZUl0ZW0+XG4gICAgICB9KSA9PiB0aGlzLmJvb2thYmxlU2VydmljZS51cGRhdGVCb29rYWJsZUl0ZW0ocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCB7Li4uaXRlbX0pLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKChib29rYWJsZUl0ZW06IEJvb2thYmxlSXRlbSkgPT4gW1xuICAgICAgICAgIHVwZGF0ZUJvb2thYmxlSXRlbVN1Y2Nlc3NBY3Rpb24oe2l0ZW06IGJvb2thYmxlSXRlbX0pLFxuICAgICAgICAgIGxpc3RCb29rYWJsZUl0ZW1BY3Rpb24oe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih1cGRhdGVCb29rYWJsZUl0ZW1GYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGNyZWF0ZUJvb2thYmxlVGFnJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGNyZWF0ZUJvb2thYmxlVGFnQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHRhZ306IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIHRhZzogUGFydGlhbDxCb29rYWJsZVRhZz5cbiAgICAgIH0pID0+IHRoaXMuYm9va2FibGVTZXJ2aWNlLmNyZWF0ZUJvb2thYmxlVGFnKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgey4uLnRhZ30pLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKCh0YWc6IEJvb2thYmxlVGFnKSA9PiBbXG4gICAgICAgICAgY3JlYXRlQm9va2FibGVUYWdTdWNjZXNzQWN0aW9uKHt0YWc6IHRhZ30pLFxuICAgICAgICAgIGxpc3RCb29rYWJsZVRhZ0FjdGlvbih7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZUJvb2thYmxlVGFnRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxuICB1cGRhdGVCb29rYWJsZVRhZyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZSh1cGRhdGVCb29rYWJsZVRhZ0FjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCB0YWd9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICB0YWc6IFBhcnRpYWw8Qm9va2FibGVUYWc+XG4gICAgICB9KSA9PiB0aGlzLmJvb2thYmxlU2VydmljZS51cGRhdGVCb29rYWJsZVRhZyhyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHsuLi50YWd9KS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgodGFnOiBCb29rYWJsZVRhZykgPT4gW1xuICAgICAgICAgIHVwZGF0ZUJvb2thYmxlVGFnU3VjY2Vzc0FjdGlvbih7dGFnOiB0YWd9KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YodXBkYXRlQm9va2FibGVUYWdGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGRlbGV0ZUJvb2thYmxlVGFnJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGRlbGV0ZUJvb2thYmxlVGFnQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHRhZ306IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIHRhZzogQm9va2FibGVUYWdcbiAgICAgIH0pID0+IHRoaXMuYm9va2FibGVTZXJ2aWNlLmRlbGV0ZUJvb2thYmxlVGFnKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgdGFnKS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoKSA9PiBbXG4gICAgICAgICAgZGVsZXRlQm9va2FibGVUYWdTdWNjZXNzQWN0aW9uKHt0YWc6IHRhZ30pLFxuICAgICAgICAgIGxpc3RCb29rYWJsZVRhZ0FjdGlvbih7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGRlbGV0ZUJvb2thYmxlVGFnRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxuICBjcmVhdGVCb29raW5nQ2FsZW5kYXIkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoY3JlYXRlQm9va2luZ0NhbGVuZGFyQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIGNhbGVuZGFyfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgY2FsZW5kYXI6IFBhcnRpYWw8Qm9va2luZ0NhbGVuZGFyPlxuICAgICAgfSkgPT4gdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZUJvb2tpbmdDYWxlbmRhcihyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHsuLi5jYWxlbmRhcn0pLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKChib29raW5nQ2FsZW5kYXI6IEJvb2tpbmdDYWxlbmRhcikgPT4gW1xuICAgICAgICAgIGNyZWF0ZUJvb2tpbmdDYWxlbmRhclN1Y2Nlc3NBY3Rpb24oe2NhbGVuZGFyOiBib29raW5nQ2FsZW5kYXJ9KSxcbiAgICAgICAgICBsaXN0Q2FsZW5kYXJBY3Rpb24oe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihjcmVhdGVCb29raW5nQ2FsZW5kYXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIHVwZGF0ZUJvb2tpbmdDYWxlbmRhciQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZSh1cGRhdGVCb29raW5nQ2FsZW5kYXJBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgY2FsZW5kYXJ9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBjYWxlbmRhcjogUGFydGlhbDxCb29raW5nQ2FsZW5kYXI+XG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UudXBkYXRlQm9va2luZ0NhbGVuZGFyKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgey4uLmNhbGVuZGFyfSkucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKGJvb2tpbmdDYWxlbmRhcjogQm9va2luZ0NhbGVuZGFyKSA9PiBbXG4gICAgICAgICAgdXBkYXRlQm9va2luZ0NhbGVuZGFyU3VjY2Vzc0FjdGlvbih7Y2FsZW5kYXI6IGJvb2tpbmdDYWxlbmRhcn0pLFxuICAgICAgICAgIGxpc3RDYWxlbmRhckFjdGlvbih7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHVwZGF0ZUJvb2tpbmdDYWxlbmRhckZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGRlbGV0ZUJvb2tpbmdDYWxlbmRhckFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBjYWxlbmRhcn06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIGNhbGVuZGFyOiBCb29raW5nQ2FsZW5kYXJcbiAgICAgIH0pID0+IHRoaXMuYm9va2luZ0NhbGVuZGFyU2VydmljZS5kZWxldGVCb29raW5nQ2FsZW5kYXIocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBjYWxlbmRhci5pZCkucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKCkgPT4gW1xuICAgICAgICAgIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclN1Y2Nlc3NBY3Rpb24oe2NhbGVuZGFyOiBjYWxlbmRhcn0pLFxuICAgICAgICAgIGxpc3RDYWxlbmRhckFjdGlvbih7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGRlbGV0ZUJvb2tpbmdDYWxlbmRhckZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgdXBkYXRlQm9va2luZ1NldHRpbmdzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKHVwZGF0ZUJvb2tpbmdTZXR0aW5nc0FjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzZXR0aW5nc306IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIHNldHRpbmdzOiBCb29raW5nU2V0dGluZ3NcbiAgICAgIH0pID0+IHRoaXMuYm9va2luZ0NhbGVuZGFyU2VydmljZS51cGRhdGVCb29raW5nU2V0dGluZ3Mocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzZXR0aW5ncykucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKG5ld1NldHRpbmdzOiBCb29raW5nU2V0dGluZ3MpID0+IFtcbiAgICAgICAgICB1cGRhdGVCb29raW5nU2V0dGluZ3NTdWNjZXNzQWN0aW9uKHtzZXR0aW5nczogbmV3U2V0dGluZ3N9KSxcbiAgICAgICAgICByZXRyaWV2ZUJvb2tpbmdTZXR0aW5nc0FjdGlvbih7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHVwZGF0ZUJvb2tpbmdTZXR0aW5nc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgY3JlYXRlQm9va2luZ0NhbGVuZGFyU2xvdCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShjcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90QWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHNsb3R9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBzbG90OiBQYXJ0aWFsPEJvb2tpbmdDYWxlbmRhclNsb3Q+XG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuY3JlYXRlQm9va2luZ0NhbGVuZGFyU2xvdChyb2xlIGFzIFJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgey4uLnNsb3R9KS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoc2xvdDogQm9va2luZ0NhbGVuZGFyU2xvdCkgPT4gW1xuICAgICAgICAgIGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTdWNjZXNzQWN0aW9uKHtzbG90OiBzbG90fSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGNyZWF0ZUJ1bGtCb29raW5nQ2FsZW5kYXJTbG90JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGNyZWF0ZUJ1bGtCb29raW5nQ2FsZW5kYXJTbG90QWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHNsb3RzfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgc2xvdHM6IEFycmF5PFBhcnRpYWw8Qm9va2luZ0NhbGVuZGFyU2xvdD4+XG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuY3JlYXRlQnVsa0Jvb2tpbmdDYWxlbmRhclNsb3RzKHJvbGUgYXMgUm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzbG90cykucGlwZShcbiAgICAgICAgbWFwKChzdWNjZXNzOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVCdWxrQm9va2luZ0NhbGVuZGFyU2xvdFN1Y2Nlc3NBY3Rpb24oKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUJ1bGtCb29raW5nQ2FsZW5kYXJTbG90RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogbmV3IEh0dHBFcnJvclJlc3BvbnNlKHtzdGF0dXM6IDQwMH0pfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihjcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxuICB1cGRhdGVCb29raW5nQ2FsZW5kYXJTbG90JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2xvdH06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIHNsb3Q6IFBhcnRpYWw8Qm9va2luZ0NhbGVuZGFyU2xvdD5cbiAgICAgIH0pID0+IHRoaXMuYm9va2luZ0NhbGVuZGFyU2VydmljZS51cGRhdGVCb29raW5nQ2FsZW5kYXJTbG90KHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgey4uLnNsb3R9KS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoc2xvdDogQm9va2luZ0NhbGVuZGFyU2xvdCkgPT4gW1xuICAgICAgICAgIHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTdWNjZXNzQWN0aW9uKHtzbG90OiBzbG90fSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3QkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdEFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzbG90LCBzZW5kTm90aWZpY2F0aW9ufToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgc2xvdDogQm9va2luZ0NhbGVuZGFyU2xvdCxcbiAgICAgICAgc2VuZE5vdGlmaWNhdGlvbjogYm9vbGVhblxuICAgICAgfSkgPT4gdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLmRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3Qocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzbG90LmlkLCBzZW5kTm90aWZpY2F0aW9uKS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoKSA9PiBbXG4gICAgICAgICAgZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdFN1Y2Nlc3NBY3Rpb24oe3Nsb3Q6IHNsb3R9KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdEZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3QkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2xvdCwgZGVsZXRlVW50aWxEYXRlLCBzZW5kTm90aWZpY2F0aW9ufToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgc2xvdDogQm9va2luZ0NhbGVuZGFyU2xvdCxcbiAgICAgICAgZGVsZXRlVW50aWxEYXRlOiBzdHJpbmcgfCBudWxsLFxuICAgICAgICBzZW5kTm90aWZpY2F0aW9uOiBib29sZWFuXG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdFJlcGVhdGFibGUocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzbG90LmlkLCBkZWxldGVVbnRpbERhdGUsIHNlbmROb3RpZmljYXRpb24pLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKCgpID0+IFtcbiAgICAgICAgICBkZWxldGVCb29raW5nQ2FsZW5kYXJSZXBlYXRhYmxlU2xvdFN1Y2Nlc3NBY3Rpb24oe3Nsb3Q6IHNsb3R9KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHNlc3Npb259OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBzZXNzaW9uOiBQYXJ0aWFsPEJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uPlxuICAgICAgfSkgPT4gdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgey4uLnNlc3Npb259KS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoc2Vzc2lvbjogQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24pID0+IFtcbiAgICAgICAgICBjcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvblN1Y2Nlc3NBY3Rpb24oe3Nlc3Npb246IHNlc3Npb259KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoY3JlYXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25GYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGNyZWF0ZUJ1bGtCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbnMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoY3JlYXRlQnVsa0Jvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uc0FjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgaXRlbUlkLCBzZXNzaW9uc306IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgaXRlbUlkOiBzdHJpbmcsXG4gICAgICAgIHNlc3Npb25zOiBBcnJheTxQYXJ0aWFsPEJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uPj5cbiAgICAgIH0pID0+IHRoaXMuYm9va2luZ0NhbGVuZGFyU2VydmljZS5jcmVhdGVCdWxrQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25zKHJvbGUgYXMgUm9sZSwgaXRlbUlkLCBzZXNzaW9ucykucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKHNlc3Npb246IFBhcnRpYWw8Qm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24+IHwgbnVsbCkgPT4gW1xuICAgICAgICAgIGNyZWF0ZUJ1bGtCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbnNTdWNjZXNzQWN0aW9uKHtzZXNzaW9uOiBzZXNzaW9ufSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZUJ1bGtCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbnNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHNlc3Npb259OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBzZXNzaW9uOiBQYXJ0aWFsPEJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uPlxuICAgICAgfSkgPT4gdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgey4uLnNlc3Npb259KS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoc2Vzc2lvbjogQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24pID0+IFtcbiAgICAgICAgICB1cGRhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvblN1Y2Nlc3NBY3Rpb24oe3Nlc3Npb246IHNlc3Npb259KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YodXBkYXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25GYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHNlc3Npb24sIHNlbmROb3RpZmljYXRpb259OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBzZXNzaW9uOiBCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbixcbiAgICAgICAgc2VuZE5vdGlmaWNhdGlvbjogYm9vbGVhblxuICAgICAgfSkgPT4gdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLmRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2Vzc2lvbi5pZCwgc2VuZE5vdGlmaWNhdGlvbikucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKCkgPT4gW1xuICAgICAgICAgIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uU3VjY2Vzc0FjdGlvbih7c2Vzc2lvbjogc2Vzc2lvbn0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihkZWxldGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RTZXNzaW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGRlbGV0ZUJvb2tpbmdDYWxlbmRhclJlcGVhdGFibGVTbG90U2Vzc2lvbkFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzZXNzaW9uLCBkZWxldGVVbnRpbERhdGUsIHNlbmROb3RpZmljYXRpb259OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBzZXNzaW9uOiBCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbixcbiAgICAgICAgZGVsZXRlVW50aWxEYXRlOiBzdHJpbmcgfCBudWxsLFxuICAgICAgICBzZW5kTm90aWZpY2F0aW9uOiBib29sZWFuXG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25SZXBlYXRhYmxlKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2Vzc2lvbi5pZCwgZGVsZXRlVW50aWxEYXRlLCBzZW5kTm90aWZpY2F0aW9uKS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoKSA9PiBbXG4gICAgICAgICAgZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RTZXNzaW9uU3VjY2Vzc0FjdGlvbih7c2Vzc2lvbjogc2Vzc2lvbn0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihkZWxldGVCb29raW5nQ2FsZW5kYXJSZXBlYXRhYmxlU2xvdFNlc3Npb25GYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG59XG4iXX0=
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va2luZy5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi9zdG9yZS9lZmZlY3RzL2Jvb2tpbmcuZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFekQsT0FBTyxFQUNMLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0IsK0JBQStCLEVBQy9CLHVCQUF1QixFQUN2Qiw4QkFBOEIsRUFDOUIsOEJBQThCLEVBQzlCLDJCQUEyQixFQUMzQixrQ0FBa0MsRUFDbEMsK0JBQStCLEVBQy9CLHNDQUFzQyxFQUN0QyxzQ0FBc0MsRUFDdEMsNkNBQTZDLEVBQzdDLDZDQUE2QyxFQUM3QyxzQ0FBc0MsRUFDdEMsa0NBQWtDLEVBQ2xDLG1DQUFtQyxFQUNuQywwQ0FBMEMsRUFDMUMsMkNBQTJDLEVBQzNDLGtEQUFrRCxFQUFFLGtEQUFrRCxFQUN0RywwQ0FBMEMsRUFDMUMsdUJBQXVCLEVBQ3ZCLDhCQUE4QixFQUM5Qiw4QkFBOEIsRUFDOUIsMkJBQTJCLEVBQzNCLGtDQUFrQyxFQUNsQyx5Q0FBeUMsRUFDekMsZ0RBQWdELEVBQ2hELGdEQUFnRCxFQUNoRCx1REFBdUQsRUFDdkQsdURBQXVELEVBQ3ZELGdEQUFnRCxFQUNoRCwrQkFBK0IsRUFDL0Isc0NBQXNDLEVBQ3RDLHNDQUFzQyxFQUN0Qyw2Q0FBNkMsRUFDN0MsNkNBQTZDLEVBQzdDLHNDQUFzQyxFQUN0QyxrQ0FBa0MsRUFDbEMsc0JBQXNCLEVBQ3RCLDZCQUE2QixFQUM3Qiw2QkFBNkIsRUFDN0Isc0JBQXNCLEVBQ3RCLDZCQUE2QixFQUM3Qiw2QkFBNkIsRUFDN0IscUJBQXFCLEVBQ3JCLDRCQUE0QixFQUM1Qiw0QkFBNEIsRUFDNUIsa0JBQWtCLEVBQ2xCLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIsa0JBQWtCLEVBQ2xCLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIsNENBQTRDLEVBQzVDLG1EQUFtRCxFQUNuRCxtREFBbUQsRUFDbkQsMENBQTBDLEVBQzFDLGlEQUFpRCxFQUNqRCxpREFBaUQsRUFDakQsd0JBQXdCLEVBQ3hCLCtCQUErQixFQUMvQiwrQkFBK0IsRUFDL0IsY0FBYyxFQUNkLHFCQUFxQixFQUNyQixxQkFBcUIsRUFDckIsNkJBQTZCLEVBQzdCLG9DQUFvQyxFQUNwQyxvQ0FBb0MsRUFDcEMsc0JBQXNCLEVBQ3RCLDZCQUE2QixFQUM3Qiw2QkFBNkIsRUFDN0Isd0JBQXdCLEVBQ3hCLCtCQUErQixFQUMvQiwrQkFBK0IsRUFDL0Isd0JBQXdCLEVBQ3hCLCtCQUErQixFQUMvQiwrQkFBK0IsRUFDL0IsdUJBQXVCLEVBQ3ZCLDhCQUE4QixFQUM5Qiw4QkFBOEIsRUFDOUIsMkJBQTJCLEVBQzNCLGtDQUFrQyxFQUNsQywrQkFBK0IsRUFDL0Isc0NBQXNDLEVBQ3RDLHNDQUFzQyxFQUN0Qyw2Q0FBNkMsRUFDN0MsNkNBQTZDLEVBQzdDLHNDQUFzQyxFQUN0QyxrQ0FBa0MsRUFDbEMsMkJBQTJCLEVBQzNCLGtDQUFrQyxFQUNsQyxrQ0FBa0MsRUFDbkMsTUFBTSxZQUFZLENBQUM7QUFDcEIsT0FBTyxFQVdMLElBQUksR0FFTCxNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUMsZUFBZSxFQUFFLGVBQWUsRUFBRSxzQkFBc0IsRUFBRSxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRyxPQUFPLEVBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7O0FBSXZELE1BQU0sT0FBTyxjQUFjO0lBQ2pCLFFBQVEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0Isc0JBQXNCLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDeEQsZUFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMxQyxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzFDLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFMUMsY0FBYyxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDcEQsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEVBQzFCLFVBQVUsQ0FDUixDQUFDLEVBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUc1QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLHFCQUFxQixDQUFDLENBQUMsSUFBSSxDQUNyRixHQUFHLENBQ0QsQ0FBQyxTQUFzQyxFQUFFLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxFQUFDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxPQUFPLEVBQUUsRUFBQyxDQUFDLENBQy9HLENBQ0YsQ0FDRixFQUNELFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDMUYsQ0FBQyxDQUFDO0lBRUgsb0JBQW9CLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRO1NBQ3BELElBQUksQ0FDSCxNQUFNLENBQUMsd0JBQXdCLENBQUMsRUFDaEMsUUFBUSxDQUFDLENBQUMsRUFBQyxTQUFTLEVBQStCLEVBQUUsRUFBRSxDQUNyRCxRQUFRLENBQ04sU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQVUsRUFBRSxFQUFFLENBQzNCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztTQUNsRSxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsU0FBc0MsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUN2RixVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUMxRCxDQUNKLENBQ0YsQ0FBQyxJQUFJLENBQ0osUUFBUSxDQUFDLENBQUMsT0FBNkYsRUFBRSxFQUFFO1FBQ3pHLE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUFrQyxDQUFDO1FBQzlELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEQsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEIsT0FBTyxFQUFFLENBQUMsK0JBQStCLENBQUMsRUFBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQTBCLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUYsQ0FBQztRQUVELE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN6QixJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDckIsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMvQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQyxFQUFDLG1CQUFtQixFQUFFLFdBQVcsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUNqRixDQUFDLENBQUMsQ0FDSCxDQUNGLENBQ0YsQ0FDRixDQUFDO0lBRUYsbUJBQW1CLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRO1NBQ25ELElBQUksQ0FDSCxNQUFNLENBQUMsMENBQTBDLENBQUMsRUFDbEQsUUFBUSxDQUFDLENBQUMsRUFBQyxTQUFTLEVBQStCLEVBQUUsRUFBRSxDQUNyRCxRQUFRLENBQ04sU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQVUsRUFBRSxFQUFFLENBQzNCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxvQ0FBb0MsQ0FBQyxFQUFFLENBQUM7U0FDakUsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLFFBQWdELEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFDL0YsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FDMUQsQ0FDSixDQUNGLENBQUMsSUFBSSxDQUNKLFFBQVEsQ0FBQyxDQUFDLE9BSVIsRUFBRSxFQUFFO1FBQ0osTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQTZDLENBQUM7UUFDekUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0RCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsQixPQUFPLEVBQUUsQ0FBQyxpREFBaUQsQ0FBQyxFQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBMEIsRUFBQyxDQUFDLENBQUMsQ0FBQztRQUNoSCxDQUFDO1FBRUQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3pCLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNwQixXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzlDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sRUFBRSxDQUFDLGlEQUFpRCxDQUFDLEVBQUMsV0FBVyxFQUFFLFdBQVcsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUMzRixDQUFDLENBQUMsQ0FDSCxDQUNGLENBQ0YsQ0FDRixDQUFDO0lBRUYsd0JBQXdCLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRO1NBQ3hELElBQUksQ0FDSCxNQUFNLENBQUMsNENBQTRDLENBQUMsRUFDcEQsUUFBUSxDQUFDLENBQUMsRUFBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBS2pELEVBQUUsRUFBRSxDQUNILFFBQVEsQ0FDTixTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBVSxFQUFFLEVBQUUsQ0FDM0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHFDQUFxQyxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQztTQUNsRyxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsS0FBc0MsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUMvRSxVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUMxRCxDQUNKLENBQ0YsQ0FBQyxJQUFJLENBQ0osUUFBUSxDQUFDLENBQUMsT0FBNkYsRUFBRSxFQUFFO1FBQ3pHLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUFzQyxDQUFDO1FBQy9ELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEQsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEIsT0FBTyxFQUFFLENBQUMsbURBQW1ELENBQUMsRUFBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQTBCLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEgsQ0FBQztRQUVELE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN6QixJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDakIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLEVBQUUsQ0FBQyxtREFBbUQsQ0FBQyxFQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkYsQ0FBQyxDQUFDLENBQ0gsQ0FDSixDQUNGLENBQ0YsQ0FBQztJQUVGLGNBQWMsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ3BELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxFQUMxQixVQUFVLENBQ1IsQ0FBQyxFQUFDLElBQUksRUFBRSxxQkFBcUIsRUFHNUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUNyRixHQUFHLENBQ0QsQ0FBQyxTQUFtRCxFQUFFLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxFQUFDLFNBQVMsRUFBRyxTQUEwQyxDQUFDLE9BQU8sRUFBRSxFQUFDLENBQUMsQ0FDdkosQ0FDRixDQUNGLEVBQ0QsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLHlCQUF5QixDQUFDLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUMxRixDQUFDLENBQUM7SUFFSCxrQkFBa0IsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ3hELE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxFQUM5QixVQUFVLENBQ1IsQ0FBQyxFQUFDLElBQUksRUFBRSxxQkFBcUIsRUFHNUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxJQUFJLENBQzNFLEdBQUcsQ0FDRCxDQUFDLGFBQW1ELEVBQUUsRUFBRSxDQUFDLDZCQUE2QixDQUFDLEVBQUMsS0FBSyxFQUFHLGFBQTBDLENBQUMsT0FBTyxFQUFFLEVBQUMsQ0FBQyxDQUN2SixDQUNGLENBQ0YsRUFDRCxVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsNkJBQTZCLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQzlGLENBQUMsQ0FBQztJQUVILGlCQUFpQixHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDdkQsTUFBTSxDQUFDLHFCQUFxQixDQUFDLEVBQzdCLFVBQVUsQ0FDUixDQUFDLEVBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUc1QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxJQUFJLENBQzFFLEdBQUcsQ0FDRCxDQUFDLFlBQWlELEVBQUUsRUFBRSxDQUFDLDRCQUE0QixDQUFDLEVBQUMsSUFBSSxFQUFHLFlBQXdDLENBQUMsT0FBTyxFQUFFLEVBQUMsQ0FBQyxDQUNqSixDQUNGLENBQ0YsRUFDRCxVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsNEJBQTRCLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQzdGLENBQUMsQ0FBQztJQUVILFVBQVUsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hELE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFDdEIsVUFBVSxDQUNSLENBQUMsRUFBQyxJQUFJLEVBQUUscUJBQXFCLEVBRzVCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxxQkFBcUIsQ0FBQyxDQUFDLElBQUksQ0FDL0QsR0FBRyxDQUNELENBQUMsS0FBNkIsRUFBRSxFQUFFLENBQUMscUJBQXFCLENBQUMsRUFBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFDLENBQUMsQ0FDbkYsQ0FDRixDQUNGLEVBQ0QsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUN0RixDQUFDLENBQUM7SUFFSCxpQkFBaUIsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ3ZELE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxFQUM5QixVQUFVLENBQ1IsQ0FBQyxFQUFDLElBQUksRUFBRSxxQkFBcUIsRUFHNUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxJQUFJLENBQzlFLEdBQUcsQ0FDRCxDQUFDLFFBQTBCLEVBQUUsRUFBRSxDQUFDLDZCQUE2QixDQUFDLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQ3BGLENBQ0YsQ0FDRixFQUNELFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDOUYsQ0FBQyxDQUFBO0lBRUYsd0JBQXdCLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUM5RCxNQUFNLENBQUMsNkJBQTZCLENBQUMsRUFDckMsVUFBVSxDQUNSLENBQUMsRUFBQyxJQUFJLEVBQUUscUJBQXFCLEVBRzVCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxJQUFJLENBQ3BGLEdBQUcsQ0FDRCxDQUFDLGVBQWdDLEVBQUUsRUFBRSxDQUFDLG9DQUFvQyxDQUFDLEVBQUMsUUFBUSxFQUFFLGVBQWUsRUFBQyxDQUFDLENBQ3hHLENBQ0YsQ0FDRixFQUNELFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxvQ0FBb0MsQ0FBQyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDckcsQ0FBQyxDQUFBO0lBRUYsa0JBQWtCLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUN4RCxNQUFNLENBQUMsc0JBQXNCLENBQUMsRUFDOUIsVUFBVSxDQUNSLENBQUMsRUFBQyxJQUFJLEVBQUUscUJBQXFCLEVBRzVCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLHFCQUFxQixDQUFDLENBQUMsSUFBSSxDQUMzRSxHQUFHLENBQ0QsQ0FBQyxhQUF1QyxFQUFFLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQyxFQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsT0FBTyxFQUFFLEVBQUMsQ0FBQyxDQUNySCxDQUNGLENBQ0YsRUFDRCxVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsNkJBQTZCLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQzlGLENBQUMsQ0FBQztJQUVILG1CQUFtQixHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDekQsTUFBTSxDQUFDLHdCQUF3QixDQUFDLEVBQ2hDLFVBQVUsQ0FDUixDQUFDLEVBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLFlBQVksRUFJMUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUMzRixRQUFRLENBQUMsQ0FBQyxZQUEwQixFQUFFLEVBQUUsQ0FBQztRQUN2QywrQkFBK0IsQ0FBQyxFQUFDLFlBQVksRUFBRSxZQUFZLEVBQUMsQ0FBQztRQUM3RCxzQkFBc0IsQ0FBQyxFQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBQyxDQUFDO0tBQ3RELENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsK0JBQStCLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQ2hHLENBQUMsQ0FDTCxDQUFDLENBQUM7SUFFSCxtQkFBbUIsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ3pELE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxFQUNoQyxVQUFVLENBQ1IsQ0FBQyxFQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRSxJQUFJLEVBSWxDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLEVBQUMsR0FBRyxJQUFJLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FDeEYsUUFBUSxDQUFDLENBQUMsWUFBMEIsRUFBRSxFQUFFLENBQUM7UUFDdkMsK0JBQStCLENBQUMsRUFBQyxJQUFJLEVBQUUsWUFBWSxFQUFDLENBQUM7UUFDckQsc0JBQXNCLENBQUMsRUFBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUMsQ0FBQztLQUN0RCxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLCtCQUErQixDQUFDLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUNoRyxDQUFDLENBQ0wsQ0FBQyxDQUFDO0lBRUgsbUJBQW1CLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUN6RCxNQUFNLENBQUMsd0JBQXdCLENBQUMsRUFDaEMsVUFBVSxDQUNSLENBQUMsRUFBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxFQUlsQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRSxFQUFDLEdBQUcsSUFBSSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3hGLFFBQVEsQ0FBQyxDQUFDLFlBQTBCLEVBQUUsRUFBRSxDQUFDO1FBQ3ZDLCtCQUErQixDQUFDLEVBQUMsSUFBSSxFQUFFLFlBQVksRUFBQyxDQUFDO1FBQ3JELHNCQUFzQixDQUFDLEVBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFDLENBQUM7S0FDdEQsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDaEcsQ0FBQyxDQUNMLENBQUMsQ0FBQztJQUVILGtCQUFrQixHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDeEQsTUFBTSxDQUFDLHVCQUF1QixDQUFDLEVBQy9CLFVBQVUsQ0FDUixDQUFDLEVBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLEdBQUcsRUFJakMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsRUFBQyxHQUFHLEdBQUcsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUN0RixRQUFRLENBQUMsQ0FBQyxHQUFnQixFQUFFLEVBQUUsQ0FBQztRQUM3Qiw4QkFBOEIsQ0FBQyxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUMsQ0FBQztRQUMxQyxxQkFBcUIsQ0FBQyxFQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBQyxDQUFDO0tBQ3JELENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsOEJBQThCLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQy9GLENBQUMsQ0FDTCxDQUFDLENBQUM7SUFFSCxrQkFBa0IsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ3hELE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxFQUMvQixVQUFVLENBQ1IsQ0FBQyxFQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRSxHQUFHLEVBSWpDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLEVBQUMsR0FBRyxHQUFHLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FDdEYsUUFBUSxDQUFDLENBQUMsR0FBZ0IsRUFBRSxFQUFFLENBQUM7UUFDN0IsOEJBQThCLENBQUMsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFDLENBQUM7S0FDM0MsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDL0YsQ0FBQyxDQUNMLENBQUMsQ0FBQztJQUVILGtCQUFrQixHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDeEQsTUFBTSxDQUFDLHVCQUF1QixDQUFDLEVBQy9CLFVBQVUsQ0FDUixDQUFDLEVBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLEdBQUcsRUFJakMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUNqRixRQUFRLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDYiw4QkFBOEIsQ0FBQyxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUMsQ0FBQztRQUMxQyxxQkFBcUIsQ0FBQyxFQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBQyxDQUFDO0tBQ3JELENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsOEJBQThCLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQy9GLENBQUMsQ0FDTCxDQUFDLENBQUM7SUFFSCxzQkFBc0IsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQzVELE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxFQUNuQyxVQUFVLENBQ1IsQ0FBQyxFQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBSXRDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsRUFBQyxHQUFHLFFBQVEsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUN0RyxRQUFRLENBQUMsQ0FBQyxlQUFnQyxFQUFFLEVBQUUsQ0FBQztRQUM3QyxrQ0FBa0MsQ0FBQyxFQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUMsQ0FBQztRQUMvRCxrQkFBa0IsQ0FBQyxFQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBQyxDQUFDO0tBQ2xELENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsa0NBQWtDLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQ25HLENBQUMsQ0FDTCxDQUFDLENBQUM7SUFFSCxzQkFBc0IsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQzVELE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxFQUNuQyxVQUFVLENBQ1IsQ0FBQyxFQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBSXRDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsRUFBQyxHQUFHLFFBQVEsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUN0RyxRQUFRLENBQUMsQ0FBQyxlQUFnQyxFQUFFLEVBQUUsQ0FBQztRQUM3QyxrQ0FBa0MsQ0FBQyxFQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUMsQ0FBQztRQUMvRCxrQkFBa0IsQ0FBQyxFQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBQyxDQUFDO0tBQ2xELENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsa0NBQWtDLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQ25HLENBQUMsQ0FDTCxDQUFDLENBQUM7SUFFSCxzQkFBc0IsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQzVELE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxFQUNuQyxVQUFVLENBQ1IsQ0FBQyxFQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBSXRDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDcEcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2Isa0NBQWtDLENBQUMsRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFDLENBQUM7UUFDeEQsa0JBQWtCLENBQUMsRUFBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUMsQ0FBQztLQUNsRCxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLGtDQUFrQyxDQUFDLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUNuRyxDQUFDLENBQ0wsQ0FBQyxDQUFDO0lBRUgsc0JBQXNCLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUM1RCxNQUFNLENBQUMsMkJBQTJCLENBQUMsRUFDbkMsVUFBVSxDQUNSLENBQUMsRUFBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUl0QyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FDakcsUUFBUSxDQUFDLENBQUMsV0FBNEIsRUFBRSxFQUFFLENBQUM7UUFDekMsa0NBQWtDLENBQUMsRUFBQyxRQUFRLEVBQUUsV0FBVyxFQUFDLENBQUM7UUFDM0QsNkJBQTZCLENBQUMsRUFBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUMsQ0FBQztLQUM3RCxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLGtDQUFrQyxDQUFDLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUNuRyxDQUFDLENBQ0wsQ0FBQyxDQUFDO0lBRUgsMEJBQTBCLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNoRSxNQUFNLENBQUMsK0JBQStCLENBQUMsRUFDdkMsVUFBVSxDQUNSLENBQUMsRUFBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxFQUlsQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMseUJBQXlCLENBQUMsSUFBWSxFQUFFLHFCQUFxQixFQUFFLEVBQUMsR0FBRyxJQUFJLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FDOUcsUUFBUSxDQUFDLENBQUMsSUFBeUIsRUFBRSxFQUFFLENBQUM7UUFDdEMsc0NBQXNDLENBQUMsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUM7S0FDckQsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxzQ0FBc0MsQ0FBQyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDdkcsQ0FBQyxDQUNMLENBQUMsQ0FBQztJQUVILDhCQUE4QixHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDcEUsTUFBTSxDQUFDLG1DQUFtQyxDQUFDLEVBQzNDLFVBQVUsQ0FDUixDQUFDLEVBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLEtBQUssRUFJbkMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLDhCQUE4QixDQUFDLElBQVksRUFBRSxxQkFBcUIsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQy9HLEdBQUcsQ0FBQyxDQUFDLE9BQWdCLEVBQUUsRUFBRTtRQUN2QixJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osT0FBTywwQ0FBMEMsRUFBRSxDQUFDO1FBQ3RELENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTywwQ0FBMEMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxJQUFJLGlCQUFpQixDQUFDLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDO1FBQ3JHLENBQUM7SUFDSCxDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsc0NBQXNDLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3ZHLENBQUMsQ0FDTCxDQUFDLENBQUM7SUFFSCwwQkFBMEIsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hFLE1BQU0sQ0FBQywrQkFBK0IsQ0FBQyxFQUN2QyxVQUFVLENBQ1IsQ0FBQyxFQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRSxJQUFJLEVBSWxDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsRUFBQyxHQUFHLElBQUksRUFBQyxDQUFDLENBQUMsSUFBSSxDQUN0RyxRQUFRLENBQUMsQ0FBQyxJQUF5QixFQUFFLEVBQUUsQ0FBQztRQUN0QyxzQ0FBc0MsQ0FBQyxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUMsQ0FBQztLQUNyRCxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLHNDQUFzQyxDQUFDLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUN2RyxDQUFDLENBQ0wsQ0FBQyxDQUFDO0lBRUgsMEJBQTBCLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNoRSxNQUFNLENBQUMsK0JBQStCLENBQUMsRUFDdkMsVUFBVSxDQUNSLENBQUMsRUFBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUtwRCxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMseUJBQXlCLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQ3RILFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNiLHNDQUFzQyxDQUFDLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBQyxDQUFDO0tBQ3JELENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsc0NBQXNDLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3ZHLENBQUMsQ0FDTCxDQUFDLENBQUM7SUFFSCxvQ0FBb0MsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQzFFLE1BQU0sQ0FBQyx5Q0FBeUMsQ0FBQyxFQUNqRCxVQUFVLENBQ1IsQ0FBQyxFQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQU1qRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsbUNBQW1DLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUM3SSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDYixnREFBZ0QsQ0FBQyxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUMsQ0FBQztLQUMvRCxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLGdEQUFnRCxDQUFDLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUNqSCxDQUFDLENBQ0wsQ0FBQyxDQUFDO0lBRUgsaUNBQWlDLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUN2RSxNQUFNLENBQUMsc0NBQXNDLENBQUMsRUFDOUMsVUFBVSxDQUNSLENBQUMsRUFBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsT0FBTyxFQUlyQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLEVBQUMsR0FBRyxPQUFPLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FDaEgsUUFBUSxDQUFDLENBQUMsT0FBbUMsRUFBRSxFQUFFLENBQUM7UUFDaEQsNkNBQTZDLENBQUMsRUFBQyxPQUFPLEVBQUUsT0FBTyxFQUFDLENBQUM7S0FDbEUsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyw2Q0FBNkMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDOUcsQ0FBQyxDQUNMLENBQUMsQ0FBQztJQUVILHNDQUFzQyxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDNUUsTUFBTSxDQUFDLDJDQUEyQyxDQUFDLEVBQ25ELFVBQVUsQ0FDUixDQUFDLEVBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBSXZCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxxQ0FBcUMsQ0FBQyxJQUFZLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FDMUcsUUFBUSxDQUFDLENBQUMsT0FBbUQsRUFBRSxFQUFFLENBQUM7UUFDaEUsa0RBQWtELENBQUMsRUFBQyxPQUFPLEVBQUUsT0FBTyxFQUFDLENBQUM7S0FDdkUsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxrREFBa0QsQ0FBQyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDbkgsQ0FBQyxDQUNMLENBQUMsQ0FBQztJQUVILGlDQUFpQyxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDdkUsTUFBTSxDQUFDLHNDQUFzQyxDQUFDLEVBQzlDLFVBQVUsQ0FDUixDQUFDLEVBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFJckMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGdDQUFnQyxDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRSxFQUFDLEdBQUcsT0FBTyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQ2hILFFBQVEsQ0FBQyxDQUFDLE9BQW1DLEVBQUUsRUFBRSxDQUFDO1FBQ2hELDZDQUE2QyxDQUFDLEVBQUMsT0FBTyxFQUFFLE9BQU8sRUFBQyxDQUFDO0tBQ2xFLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsNkNBQTZDLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQzlHLENBQUMsQ0FDTCxDQUFDLENBQUM7SUFFSCxpQ0FBaUMsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ3ZFLE1BQU0sQ0FBQyxzQ0FBc0MsQ0FBQyxFQUM5QyxVQUFVLENBQ1IsQ0FBQyxFQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBS3ZELEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxnQ0FBZ0MsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FDaEksUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2IsNkNBQTZDLENBQUMsRUFBQyxPQUFPLEVBQUUsT0FBTyxFQUFDLENBQUM7S0FDbEUsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyw2Q0FBNkMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDOUcsQ0FBQyxDQUNMLENBQUMsQ0FBQztJQUVILDJDQUEyQyxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDakYsTUFBTSxDQUFDLGdEQUFnRCxDQUFDLEVBQ3hELFVBQVUsQ0FDUixDQUFDLEVBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBTXBFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQywwQ0FBMEMsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQ3ZKLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNiLHVEQUF1RCxDQUFDLEVBQUMsT0FBTyxFQUFFLE9BQU8sRUFBQyxDQUFDO0tBQzVFLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsdURBQXVELENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3hILENBQUMsQ0FDTCxDQUFDLENBQUM7dUdBeGlCUSxjQUFjOzJHQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7QWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGV9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHtleGhhdXN0TWFwLCBtYXAsIG1lcmdlTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gIGNyZWF0ZUJvb2thYmxlSXRlbUFjdGlvbixcbiAgY3JlYXRlQm9va2FibGVJdGVtRmFpbHVyZUFjdGlvbixcbiAgY3JlYXRlQm9va2FibGVJdGVtU3VjY2Vzc0FjdGlvbixcbiAgY3JlYXRlQm9va2FibGVUYWdBY3Rpb24sXG4gIGNyZWF0ZUJvb2thYmxlVGFnRmFpbHVyZUFjdGlvbixcbiAgY3JlYXRlQm9va2FibGVUYWdTdWNjZXNzQWN0aW9uLFxuICBjcmVhdGVCb29raW5nQ2FsZW5kYXJBY3Rpb24sXG4gIGNyZWF0ZUJvb2tpbmdDYWxlbmRhckZhaWx1cmVBY3Rpb24sXG4gIGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RBY3Rpb24sXG4gIGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RGYWlsdXJlQWN0aW9uLFxuICBjcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkFjdGlvbixcbiAgY3JlYXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25GYWlsdXJlQWN0aW9uLFxuICBjcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvblN1Y2Nlc3NBY3Rpb24sXG4gIGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTdWNjZXNzQWN0aW9uLFxuICBjcmVhdGVCb29raW5nQ2FsZW5kYXJTdWNjZXNzQWN0aW9uLFxuICBjcmVhdGVCdWxrQm9va2luZ0NhbGVuZGFyU2xvdEFjdGlvbixcbiAgY3JlYXRlQnVsa0Jvb2tpbmdDYWxlbmRhclNsb3RGYWlsdXJlQWN0aW9uLFxuICBjcmVhdGVCdWxrQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25zQWN0aW9uLFxuICBjcmVhdGVCdWxrQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25zRmFpbHVyZUFjdGlvbiwgY3JlYXRlQnVsa0Jvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uc1N1Y2Nlc3NBY3Rpb24sXG4gIGNyZWF0ZUJ1bGtCb29raW5nQ2FsZW5kYXJTbG90U3VjY2Vzc0FjdGlvbixcbiAgZGVsZXRlQm9va2FibGVUYWdBY3Rpb24sXG4gIGRlbGV0ZUJvb2thYmxlVGFnRmFpbHVyZUFjdGlvbixcbiAgZGVsZXRlQm9va2FibGVUYWdTdWNjZXNzQWN0aW9uLFxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJBY3Rpb24sXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhckZhaWx1cmVBY3Rpb24sXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclJlcGVhdGFibGVTbG90QWN0aW9uLFxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJSZXBlYXRhYmxlU2xvdEZhaWx1cmVBY3Rpb24sXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclJlcGVhdGFibGVTbG90U2Vzc2lvbkFjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RTZXNzaW9uRmFpbHVyZUFjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RTZXNzaW9uU3VjY2Vzc0FjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RTdWNjZXNzQWN0aW9uLFxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJTbG90QWN0aW9uLFxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJTbG90RmFpbHVyZUFjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25BY3Rpb24sXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uRmFpbHVyZUFjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25TdWNjZXNzQWN0aW9uLFxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJTbG90U3VjY2Vzc0FjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyU3VjY2Vzc0FjdGlvbixcbiAgbGlzdEFjdGl2aXR5VHlwZUFjdGlvbixcbiAgbGlzdEFjdGl2aXR5VHlwZUZhaWx1cmVBY3Rpb24sXG4gIGxpc3RBY3Rpdml0eVR5cGVTdWNjZXNzQWN0aW9uLFxuICBsaXN0Qm9va2FibGVJdGVtQWN0aW9uLFxuICBsaXN0Qm9va2FibGVJdGVtRmFpbHVyZUFjdGlvbixcbiAgbGlzdEJvb2thYmxlSXRlbVN1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RCb29rYWJsZVRhZ0FjdGlvbixcbiAgbGlzdEJvb2thYmxlVGFnRmFpbHVyZUFjdGlvbixcbiAgbGlzdEJvb2thYmxlVGFnU3VjY2Vzc0FjdGlvbixcbiAgbGlzdENhbGVuZGFyQWN0aW9uLFxuICBsaXN0Q2FsZW5kYXJGYWlsdXJlQWN0aW9uLFxuICBsaXN0Q2FsZW5kYXJTdWNjZXNzQWN0aW9uLFxuICBsaXN0TG9jYXRpb25BY3Rpb24sXG4gIGxpc3RMb2NhdGlvbkZhaWx1cmVBY3Rpb24sXG4gIGxpc3RMb2NhdGlvblN1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RNZW1iZXJCb29raW5nQ2FsZW5kYXJCb29rYWJsZVNsb3RzQWN0aW9uLFxuICBsaXN0TWVtYmVyQm9va2luZ0NhbGVuZGFyQm9va2FibGVTbG90c0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RNZW1iZXJCb29raW5nQ2FsZW5kYXJCb29rYWJsZVNsb3RzU3VjY2Vzc0FjdGlvbixcbiAgbGlzdE1lbWJlckJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uQWN0aW9uLFxuICBsaXN0TWVtYmVyQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25GYWlsdXJlQWN0aW9uLFxuICBsaXN0TWVtYmVyQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25TdWNjZXNzQWN0aW9uLFxuICBsaXN0TWVtYmVyQ2FsZW5kYXJBY3Rpb24sXG4gIGxpc3RNZW1iZXJDYWxlbmRhckZhaWx1cmVBY3Rpb24sXG4gIGxpc3RNZW1iZXJDYWxlbmRhclN1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RUZWFtQWN0aW9uLFxuICBsaXN0VGVhbUZhaWx1cmVBY3Rpb24sXG4gIGxpc3RUZWFtU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVCb29raW5nU2V0dGluZ3NBY3Rpb24sXG4gIHJldHJpZXZlQm9va2luZ1NldHRpbmdzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVCb29raW5nU2V0dGluZ3NTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZVNldHRpbmdzQWN0aW9uLFxuICByZXRyaWV2ZVNldHRpbmdzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVTZXR0aW5nc1N1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZUFjdGl2aXR5VHlwZUFjdGlvbixcbiAgdXBkYXRlQWN0aXZpdHlUeXBlRmFpbHVyZUFjdGlvbixcbiAgdXBkYXRlQWN0aXZpdHlUeXBlU3VjY2Vzc0FjdGlvbixcbiAgdXBkYXRlQm9va2FibGVJdGVtQWN0aW9uLFxuICB1cGRhdGVCb29rYWJsZUl0ZW1GYWlsdXJlQWN0aW9uLFxuICB1cGRhdGVCb29rYWJsZUl0ZW1TdWNjZXNzQWN0aW9uLFxuICB1cGRhdGVCb29rYWJsZVRhZ0FjdGlvbixcbiAgdXBkYXRlQm9va2FibGVUYWdGYWlsdXJlQWN0aW9uLFxuICB1cGRhdGVCb29rYWJsZVRhZ1N1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZUJvb2tpbmdDYWxlbmRhckFjdGlvbixcbiAgdXBkYXRlQm9va2luZ0NhbGVuZGFyRmFpbHVyZUFjdGlvbixcbiAgdXBkYXRlQm9va2luZ0NhbGVuZGFyU2xvdEFjdGlvbixcbiAgdXBkYXRlQm9va2luZ0NhbGVuZGFyU2xvdEZhaWx1cmVBY3Rpb24sXG4gIHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uQWN0aW9uLFxuICB1cGRhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkZhaWx1cmVBY3Rpb24sXG4gIHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uU3VjY2Vzc0FjdGlvbixcbiAgdXBkYXRlQm9va2luZ0NhbGVuZGFyU2xvdFN1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZUJvb2tpbmdDYWxlbmRhclN1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZUJvb2tpbmdTZXR0aW5nc0FjdGlvbixcbiAgdXBkYXRlQm9va2luZ1NldHRpbmdzRmFpbHVyZUFjdGlvbixcbiAgdXBkYXRlQm9va2luZ1NldHRpbmdzU3VjY2Vzc0FjdGlvblxufSBmcm9tICcuLi9hY3Rpb25zJztcbmltcG9ydCB7XG4gIEFjdGl2aXR5TG9jYXRpb24sXG4gIEFjdGl2aXR5U2V0dGluZ3MsXG4gIEFjdGl2aXR5VHlwZSxcbiAgQm9va2FibGVJdGVtLFxuICBCb29rYWJsZVRhZyxcbiAgQm9va2luZ0NhbGVuZGFyLFxuICBCb29raW5nQ2FsZW5kYXJTbG90LFxuICBCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbixcbiAgQm9va2luZ1NldHRpbmdzLFxuICBDb2xsZWN0aW9uLFxuICBSb2xlLFxuICBTZWFyY2hUZWFtLFxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtBY3Rpdml0eVNlcnZpY2UsIEJvb2thYmxlU2VydmljZSwgQm9va2luZ0NhbGVuZGFyU2VydmljZSwgVGVhbVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgZm9ya0pvaW4sIG9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7SHR0cEVycm9yUmVzcG9uc2V9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQm9va2luZ0VmZmVjdHMge1xuICBwcml2YXRlIGFjdGlvbnMkID0gaW5qZWN0KEFjdGlvbnMpO1xuICBwcml2YXRlIGJvb2tpbmdDYWxlbmRhclNlcnZpY2UgPSBpbmplY3QoQm9va2luZ0NhbGVuZGFyU2VydmljZSk7XG4gIHByaXZhdGUgYm9va2FibGVTZXJ2aWNlID0gaW5qZWN0KEJvb2thYmxlU2VydmljZSk7XG4gIHByaXZhdGUgYWN0aXZpdHlTZXJ2aWNlID0gaW5qZWN0KEFjdGl2aXR5U2VydmljZSk7XG4gIHByaXZhdGUgdGVhbVNlcnZpY2UgPSBpbmplY3QoVGVhbVNlcnZpY2UpO1xuXG4gIGxpc3RDYWxlbmRhcnMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUobGlzdENhbGVuZGFyQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nXG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuZ2V0Qm9va2luZ0NhbGVuZGFycyhyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQpLnBpcGUoXG4gICAgICAgIG1hcChcbiAgICAgICAgICAoY2FsZW5kYXJzOiBDb2xsZWN0aW9uPEJvb2tpbmdDYWxlbmRhcj4pID0+IGxpc3RDYWxlbmRhclN1Y2Nlc3NBY3Rpb24oe2Jvb2tpbmdDYWxlbmRhcnM6IGNhbGVuZGFycy50b0FycmF5KCl9KSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKSxcbiAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RDYWxlbmRhckZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKSxcbiAgKSk7XG5cbiAgbGlzdE1lbWJlckNhbGVuZGFycyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxpc3RNZW1iZXJDYWxlbmRhckFjdGlvbiksXG4gICAgICBtZXJnZU1hcCgoe21lbWJlcklkc306IHsgbWVtYmVySWRzOiBBcnJheTxzdHJpbmc+IH0pID0+XG4gICAgICAgIGZvcmtKb2luKFxuICAgICAgICAgIG1lbWJlcklkcy5tYXAoKGlkOiBzdHJpbmcpID0+XG4gICAgICAgICAgICB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuZ2V0Qm9va2luZ0NhbGVuZGFycyhSb2xlLk1lbWJlckFkbWluLCBpZClcbiAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChjYWxlbmRhcnM6IENvbGxlY3Rpb248Qm9va2luZ0NhbGVuZGFyPikgPT4gKHtpZCwgY2FsZW5kYXJzOiBjYWxlbmRhcnMudG9BcnJheSgpfSkpLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2Yoe2lkLCBlcnJvcn0pKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKHJlc3VsdHM6IEFycmF5PHsgaWQ6IHN0cmluZywgY2FsZW5kYXJzPzogQXJyYXk8Qm9va2luZ0NhbGVuZGFyPiwgZXJyb3I/OiBIdHRwRXJyb3JSZXNwb25zZSB9PikgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2FsZW5kYXJNYXAgPSBuZXcgTWFwPHN0cmluZywgQXJyYXk8Qm9va2luZ0NhbGVuZGFyPj4oKTtcbiAgICAgICAgICAgIGNvbnN0IGVycm9ycyA9IHJlc3VsdHMuZmlsdGVyKHJlc3VsdCA9PiByZXN1bHQuZXJyb3IpO1xuICAgICAgICAgICAgaWYgKGVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKGxpc3RNZW1iZXJDYWxlbmRhckZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yc1swXS5lcnJvciBhcyBIdHRwRXJyb3JSZXNwb25zZX0pKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdWx0cy5mb3JFYWNoKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJlc3VsdC5jYWxlbmRhcnMpIHtcbiAgICAgICAgICAgICAgICBjYWxlbmRhck1hcC5zZXQocmVzdWx0LmlkLCByZXN1bHQuY2FsZW5kYXJzKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBvZihsaXN0TWVtYmVyQ2FsZW5kYXJTdWNjZXNzQWN0aW9uKHtib29raW5nQ2FsZW5kYXJzTWFwOiBjYWxlbmRhck1hcH0pKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGxpc3RNZW1iZXJTZXNzaW9ucyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxpc3RNZW1iZXJCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkFjdGlvbiksXG4gICAgICBtZXJnZU1hcCgoe21lbWJlcklkc306IHsgbWVtYmVySWRzOiBBcnJheTxzdHJpbmc+IH0pID0+XG4gICAgICAgIGZvcmtKb2luKFxuICAgICAgICAgIG1lbWJlcklkcy5tYXAoKGlkOiBzdHJpbmcpID0+XG4gICAgICAgICAgICB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuZ2V0TWVtYmVyQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25zKGlkKVxuICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHNlc3Npb25zOiBDb2xsZWN0aW9uPEJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uPikgPT4gKHtpZCwgc2Vzc2lvbnM6IHNlc3Npb25zLnRvQXJyYXkoKX0pKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHtpZCwgZXJyb3J9KSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKS5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKChyZXN1bHRzOiBBcnJheTx7XG4gICAgICAgICAgICBpZDogc3RyaW5nLFxuICAgICAgICAgICAgc2Vzc2lvbnM/OiBBcnJheTxCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbj4sXG4gICAgICAgICAgICBlcnJvcj86IEh0dHBFcnJvclJlc3BvbnNlXG4gICAgICAgICAgfT4pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlc3Npb25zTWFwID0gbmV3IE1hcDxzdHJpbmcsIEFycmF5PEJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uPj4oKTtcbiAgICAgICAgICAgIGNvbnN0IGVycm9ycyA9IHJlc3VsdHMuZmlsdGVyKHJlc3VsdCA9PiByZXN1bHQuZXJyb3IpO1xuICAgICAgICAgICAgaWYgKGVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKGxpc3RNZW1iZXJCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yc1swXS5lcnJvciBhcyBIdHRwRXJyb3JSZXNwb25zZX0pKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdWx0cy5mb3JFYWNoKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJlc3VsdC5zZXNzaW9ucykge1xuICAgICAgICAgICAgICAgIHNlc3Npb25zTWFwLnNldChyZXN1bHQuaWQsIHJlc3VsdC5zZXNzaW9ucyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gb2YobGlzdE1lbWJlckJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uU3VjY2Vzc0FjdGlvbih7c2Vzc2lvbnNNYXA6IHNlc3Npb25zTWFwfSkpO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbGlzdE1lbWJlckJvb2thYmxlU2xvdHMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsaXN0TWVtYmVyQm9va2luZ0NhbGVuZGFyQm9va2FibGVTbG90c0FjdGlvbiksXG4gICAgICBtZXJnZU1hcCgoe2Jvb2thYmxlSWQsIG1lbWJlcklkcywgc3RhcnREYXRlLCBlbmREYXRlfToge1xuICAgICAgICAgIGJvb2thYmxlSWQ6IHN0cmluZyxcbiAgICAgICAgICBtZW1iZXJJZHM6IEFycmF5PHN0cmluZz4sXG4gICAgICAgICAgc3RhcnREYXRlOiBzdHJpbmcsXG4gICAgICAgICAgZW5kRGF0ZTogc3RyaW5nXG4gICAgICAgIH0pID0+XG4gICAgICAgICAgZm9ya0pvaW4oXG4gICAgICAgICAgICBtZW1iZXJJZHMubWFwKChpZDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgICB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuZ2V0TWVtYmVyQm9va2luZ0NhbGVuZGFyQm9va2FibGVTbG90cyhpZCwgYm9va2FibGVJZCwgc3RhcnREYXRlLCBlbmREYXRlKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgbWFwKChzbG90czogQ29sbGVjdGlvbjxCb29raW5nQ2FsZW5kYXJTbG90PikgPT4gKHtpZCwgc2xvdHM6IHNsb3RzLnRvQXJyYXkoKX0pKSxcbiAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2Yoe2lkLCBlcnJvcn0pKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICApLnBpcGUoXG4gICAgICAgICAgICBtZXJnZU1hcCgocmVzdWx0czogQXJyYXk8eyBpZDogc3RyaW5nLCBzbG90cz86IEFycmF5PEJvb2tpbmdDYWxlbmRhclNsb3Q+LCBlcnJvcj86IEh0dHBFcnJvclJlc3BvbnNlIH0+KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHNsb3RzTWFwID0gbmV3IE1hcDxzdHJpbmcsIEFycmF5PEJvb2tpbmdDYWxlbmRhclNsb3Q+PigpO1xuICAgICAgICAgICAgICBjb25zdCBlcnJvcnMgPSByZXN1bHRzLmZpbHRlcihyZXN1bHQgPT4gcmVzdWx0LmVycm9yKTtcbiAgICAgICAgICAgICAgaWYgKGVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YobGlzdE1lbWJlckJvb2tpbmdDYWxlbmRhckJvb2thYmxlU2xvdHNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcnNbMF0uZXJyb3IgYXMgSHR0cEVycm9yUmVzcG9uc2V9KSk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXN1bHRzLmZvckVhY2goKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuc2xvdHMpIHtcbiAgICAgICAgICAgICAgICAgIHNsb3RzTWFwLnNldChyZXN1bHQuaWQsIHJlc3VsdC5zbG90cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICByZXR1cm4gb2YobGlzdE1lbWJlckJvb2tpbmdDYWxlbmRhckJvb2thYmxlU2xvdHNTdWNjZXNzQWN0aW9uKHtzbG90c01hcDogc2xvdHNNYXB9KSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbGlzdExvY2F0aW9ucyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShsaXN0TG9jYXRpb25BY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmdcbiAgICAgIH0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLmdldEFjdGl2aXR5TG9jYXRpb25zKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgdHJ1ZSkucGlwZShcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChsb2NhdGlvbnM6IENvbGxlY3Rpb248QWN0aXZpdHlMb2NhdGlvbj4gfCB1bmRlZmluZWQpID0+IGxpc3RMb2NhdGlvblN1Y2Nlc3NBY3Rpb24oe2xvY2F0aW9uczogKGxvY2F0aW9ucyBhcyBDb2xsZWN0aW9uPEFjdGl2aXR5TG9jYXRpb24+KS50b0FycmF5KCl9KSxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICApLFxuICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdExvY2F0aW9uRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpLFxuICApKTtcblxuICBsaXN0Qm9va2FibGVJdGVtcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShsaXN0Qm9va2FibGVJdGVtQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nXG4gICAgICB9KSA9PiB0aGlzLmJvb2thYmxlU2VydmljZS5nZXRCb29rYWJsZUl0ZW1zKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCkucGlwZShcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChib29rYWJsZUl0ZW1zOiBDb2xsZWN0aW9uPEJvb2thYmxlSXRlbT4gfCB1bmRlZmluZWQpID0+IGxpc3RCb29rYWJsZUl0ZW1TdWNjZXNzQWN0aW9uKHtpdGVtczogKGJvb2thYmxlSXRlbXMgYXMgQ29sbGVjdGlvbjxCb29rYWJsZUl0ZW0+KS50b0FycmF5KCl9KSxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICApLFxuICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdEJvb2thYmxlSXRlbUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKSxcbiAgKSk7XG5cbiAgbGlzdEJvb2thYmxlVGFncyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShsaXN0Qm9va2FibGVUYWdBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmdcbiAgICAgIH0pID0+IHRoaXMuYm9va2FibGVTZXJ2aWNlLmdldEJvb2thYmxlVGFncyhyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQpLnBpcGUoXG4gICAgICAgIG1hcChcbiAgICAgICAgICAoYm9va2FibGVUYWdzOiBDb2xsZWN0aW9uPEJvb2thYmxlVGFnPiB8IHVuZGVmaW5lZCkgPT4gbGlzdEJvb2thYmxlVGFnU3VjY2Vzc0FjdGlvbih7dGFnczogKGJvb2thYmxlVGFncyBhcyBDb2xsZWN0aW9uPEJvb2thYmxlVGFnPikudG9BcnJheSgpfSksXG4gICAgICAgICksXG4gICAgICApXG4gICAgKSxcbiAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RCb29rYWJsZVRhZ0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKSxcbiAgKSk7XG5cbiAgbGlzdFRlYW1zJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGxpc3RUZWFtQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nXG4gICAgICB9KSA9PiB0aGlzLnRlYW1TZXJ2aWNlLmdldFRlYW1zKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCkucGlwZShcbiAgICAgICAgbWFwKFxuICAgICAgICAgICh0ZWFtczogQ29sbGVjdGlvbjxTZWFyY2hUZWFtPikgPT4gbGlzdFRlYW1TdWNjZXNzQWN0aW9uKHt0ZWFtczogdGVhbXMudG9BcnJheSgpfSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICksXG4gICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihsaXN0VGVhbUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKSxcbiAgKSk7XG5cbiAgcmV0cmlldmVTZXR0aW5ncyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShyZXRyaWV2ZVNldHRpbmdzQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nXG4gICAgICB9KSA9PiB0aGlzLmFjdGl2aXR5U2VydmljZS5nZXRBY3Rpdml0eVNldHRpbmdzKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCkucGlwZShcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChzZXR0aW5nczogQWN0aXZpdHlTZXR0aW5ncykgPT4gcmV0cmlldmVTZXR0aW5nc1N1Y2Nlc3NBY3Rpb24oe3NldHRpbmdzOiBzZXR0aW5nc30pLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICApLFxuICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVTZXR0aW5nc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKSxcbiAgKSlcblxuICByZXRyaWV2ZUJvb2tpbmdTZXR0aW5ncyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShyZXRyaWV2ZUJvb2tpbmdTZXR0aW5nc0FjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZ1xuICAgICAgfSkgPT4gdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLmdldEJvb2tpbmdTZXR0aW5ncyhyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQpLnBpcGUoXG4gICAgICAgIG1hcChcbiAgICAgICAgICAoYm9va2luZ1NldHRpbmdzOiBCb29raW5nU2V0dGluZ3MpID0+IHJldHJpZXZlQm9va2luZ1NldHRpbmdzU3VjY2Vzc0FjdGlvbih7c2V0dGluZ3M6IGJvb2tpbmdTZXR0aW5nc30pLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICApLFxuICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVCb29raW5nU2V0dGluZ3NGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSksXG4gICkpXG5cbiAgbGlzdEFjdGl2aXR5VHlwZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUobGlzdEFjdGl2aXR5VHlwZUFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZ1xuICAgICAgfSkgPT4gdGhpcy5hY3Rpdml0eVNlcnZpY2UuZ2V0QWN0aXZpdHlUeXBlcyhyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQpLnBpcGUoXG4gICAgICAgIG1hcChcbiAgICAgICAgICAoYWN0aXZpdHlUeXBlczogQ29sbGVjdGlvbjxBY3Rpdml0eVR5cGU+KSA9PiBsaXN0QWN0aXZpdHlUeXBlU3VjY2Vzc0FjdGlvbih7YWN0aXZpdHlUeXBlczogYWN0aXZpdHlUeXBlcy50b0FycmF5KCl9KSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKSxcbiAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RBY3Rpdml0eVR5cGVGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSksXG4gICkpO1xuXG4gIHVwZGF0ZUFjdGl2aXR5VHlwZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZSh1cGRhdGVBY3Rpdml0eVR5cGVBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgYWN0aXZpdHlUeXBlfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgYWN0aXZpdHlUeXBlOiBBY3Rpdml0eVR5cGVcbiAgICAgIH0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLnVwZGF0ZUFjdGl2aXR5VHlwZShyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIGFjdGl2aXR5VHlwZSkucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKGFjdGl2aXR5VHlwZTogQWN0aXZpdHlUeXBlKSA9PiBbXG4gICAgICAgICAgdXBkYXRlQWN0aXZpdHlUeXBlU3VjY2Vzc0FjdGlvbih7YWN0aXZpdHlUeXBlOiBhY3Rpdml0eVR5cGV9KSxcbiAgICAgICAgICBsaXN0QWN0aXZpdHlUeXBlQWN0aW9uKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YodXBkYXRlQWN0aXZpdHlUeXBlRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxuICBjcmVhdGVCb29rYWJsZUl0ZW0kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoY3JlYXRlQm9va2FibGVJdGVtQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIGl0ZW19OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBpdGVtOiBQYXJ0aWFsPEJvb2thYmxlSXRlbT5cbiAgICAgIH0pID0+IHRoaXMuYm9va2FibGVTZXJ2aWNlLmNyZWF0ZUJvb2thYmxlSXRlbShyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHsuLi5pdGVtfSkucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKGJvb2thYmxlSXRlbTogQm9va2FibGVJdGVtKSA9PiBbXG4gICAgICAgICAgY3JlYXRlQm9va2FibGVJdGVtU3VjY2Vzc0FjdGlvbih7aXRlbTogYm9va2FibGVJdGVtfSksXG4gICAgICAgICAgbGlzdEJvb2thYmxlSXRlbUFjdGlvbih7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZUJvb2thYmxlSXRlbUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgdXBkYXRlQm9va2FibGVJdGVtJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKHVwZGF0ZUJvb2thYmxlSXRlbUFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBpdGVtfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgaXRlbTogUGFydGlhbDxCb29rYWJsZUl0ZW0+XG4gICAgICB9KSA9PiB0aGlzLmJvb2thYmxlU2VydmljZS51cGRhdGVCb29rYWJsZUl0ZW0ocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCB7Li4uaXRlbX0pLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKChib29rYWJsZUl0ZW06IEJvb2thYmxlSXRlbSkgPT4gW1xuICAgICAgICAgIHVwZGF0ZUJvb2thYmxlSXRlbVN1Y2Nlc3NBY3Rpb24oe2l0ZW06IGJvb2thYmxlSXRlbX0pLFxuICAgICAgICAgIGxpc3RCb29rYWJsZUl0ZW1BY3Rpb24oe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih1cGRhdGVCb29rYWJsZUl0ZW1GYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGNyZWF0ZUJvb2thYmxlVGFnJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGNyZWF0ZUJvb2thYmxlVGFnQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHRhZ306IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIHRhZzogUGFydGlhbDxCb29rYWJsZVRhZz5cbiAgICAgIH0pID0+IHRoaXMuYm9va2FibGVTZXJ2aWNlLmNyZWF0ZUJvb2thYmxlVGFnKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgey4uLnRhZ30pLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKCh0YWc6IEJvb2thYmxlVGFnKSA9PiBbXG4gICAgICAgICAgY3JlYXRlQm9va2FibGVUYWdTdWNjZXNzQWN0aW9uKHt0YWc6IHRhZ30pLFxuICAgICAgICAgIGxpc3RCb29rYWJsZVRhZ0FjdGlvbih7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZUJvb2thYmxlVGFnRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxuICB1cGRhdGVCb29rYWJsZVRhZyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZSh1cGRhdGVCb29rYWJsZVRhZ0FjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCB0YWd9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICB0YWc6IFBhcnRpYWw8Qm9va2FibGVUYWc+XG4gICAgICB9KSA9PiB0aGlzLmJvb2thYmxlU2VydmljZS51cGRhdGVCb29rYWJsZVRhZyhyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHsuLi50YWd9KS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgodGFnOiBCb29rYWJsZVRhZykgPT4gW1xuICAgICAgICAgIHVwZGF0ZUJvb2thYmxlVGFnU3VjY2Vzc0FjdGlvbih7dGFnOiB0YWd9KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YodXBkYXRlQm9va2FibGVUYWdGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGRlbGV0ZUJvb2thYmxlVGFnJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGRlbGV0ZUJvb2thYmxlVGFnQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHRhZ306IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIHRhZzogQm9va2FibGVUYWdcbiAgICAgIH0pID0+IHRoaXMuYm9va2FibGVTZXJ2aWNlLmRlbGV0ZUJvb2thYmxlVGFnKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgdGFnKS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoKSA9PiBbXG4gICAgICAgICAgZGVsZXRlQm9va2FibGVUYWdTdWNjZXNzQWN0aW9uKHt0YWc6IHRhZ30pLFxuICAgICAgICAgIGxpc3RCb29rYWJsZVRhZ0FjdGlvbih7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGRlbGV0ZUJvb2thYmxlVGFnRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxuICBjcmVhdGVCb29raW5nQ2FsZW5kYXIkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoY3JlYXRlQm9va2luZ0NhbGVuZGFyQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIGNhbGVuZGFyfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgY2FsZW5kYXI6IFBhcnRpYWw8Qm9va2luZ0NhbGVuZGFyPlxuICAgICAgfSkgPT4gdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZUJvb2tpbmdDYWxlbmRhcihyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHsuLi5jYWxlbmRhcn0pLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKChib29raW5nQ2FsZW5kYXI6IEJvb2tpbmdDYWxlbmRhcikgPT4gW1xuICAgICAgICAgIGNyZWF0ZUJvb2tpbmdDYWxlbmRhclN1Y2Nlc3NBY3Rpb24oe2NhbGVuZGFyOiBib29raW5nQ2FsZW5kYXJ9KSxcbiAgICAgICAgICBsaXN0Q2FsZW5kYXJBY3Rpb24oe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihjcmVhdGVCb29raW5nQ2FsZW5kYXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIHVwZGF0ZUJvb2tpbmdDYWxlbmRhciQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZSh1cGRhdGVCb29raW5nQ2FsZW5kYXJBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgY2FsZW5kYXJ9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBjYWxlbmRhcjogUGFydGlhbDxCb29raW5nQ2FsZW5kYXI+XG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UudXBkYXRlQm9va2luZ0NhbGVuZGFyKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgey4uLmNhbGVuZGFyfSkucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKGJvb2tpbmdDYWxlbmRhcjogQm9va2luZ0NhbGVuZGFyKSA9PiBbXG4gICAgICAgICAgdXBkYXRlQm9va2luZ0NhbGVuZGFyU3VjY2Vzc0FjdGlvbih7Y2FsZW5kYXI6IGJvb2tpbmdDYWxlbmRhcn0pLFxuICAgICAgICAgIGxpc3RDYWxlbmRhckFjdGlvbih7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHVwZGF0ZUJvb2tpbmdDYWxlbmRhckZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGRlbGV0ZUJvb2tpbmdDYWxlbmRhckFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBjYWxlbmRhcn06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIGNhbGVuZGFyOiBCb29raW5nQ2FsZW5kYXJcbiAgICAgIH0pID0+IHRoaXMuYm9va2luZ0NhbGVuZGFyU2VydmljZS5kZWxldGVCb29raW5nQ2FsZW5kYXIocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBjYWxlbmRhci5pZCkucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKCkgPT4gW1xuICAgICAgICAgIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclN1Y2Nlc3NBY3Rpb24oe2NhbGVuZGFyOiBjYWxlbmRhcn0pLFxuICAgICAgICAgIGxpc3RDYWxlbmRhckFjdGlvbih7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGRlbGV0ZUJvb2tpbmdDYWxlbmRhckZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgdXBkYXRlQm9va2luZ1NldHRpbmdzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKHVwZGF0ZUJvb2tpbmdTZXR0aW5nc0FjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzZXR0aW5nc306IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIHNldHRpbmdzOiBCb29raW5nU2V0dGluZ3NcbiAgICAgIH0pID0+IHRoaXMuYm9va2luZ0NhbGVuZGFyU2VydmljZS51cGRhdGVCb29raW5nU2V0dGluZ3Mocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzZXR0aW5ncykucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKG5ld1NldHRpbmdzOiBCb29raW5nU2V0dGluZ3MpID0+IFtcbiAgICAgICAgICB1cGRhdGVCb29raW5nU2V0dGluZ3NTdWNjZXNzQWN0aW9uKHtzZXR0aW5nczogbmV3U2V0dGluZ3N9KSxcbiAgICAgICAgICByZXRyaWV2ZUJvb2tpbmdTZXR0aW5nc0FjdGlvbih7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHVwZGF0ZUJvb2tpbmdTZXR0aW5nc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgY3JlYXRlQm9va2luZ0NhbGVuZGFyU2xvdCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShjcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90QWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHNsb3R9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBzbG90OiBQYXJ0aWFsPEJvb2tpbmdDYWxlbmRhclNsb3Q+XG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuY3JlYXRlQm9va2luZ0NhbGVuZGFyU2xvdChyb2xlIGFzIFJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgey4uLnNsb3R9KS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoc2xvdDogQm9va2luZ0NhbGVuZGFyU2xvdCkgPT4gW1xuICAgICAgICAgIGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTdWNjZXNzQWN0aW9uKHtzbG90OiBzbG90fSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGNyZWF0ZUJ1bGtCb29raW5nQ2FsZW5kYXJTbG90JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGNyZWF0ZUJ1bGtCb29raW5nQ2FsZW5kYXJTbG90QWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHNsb3RzfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgc2xvdHM6IEFycmF5PFBhcnRpYWw8Qm9va2luZ0NhbGVuZGFyU2xvdD4+XG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuY3JlYXRlQnVsa0Jvb2tpbmdDYWxlbmRhclNsb3RzKHJvbGUgYXMgUm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzbG90cykucGlwZShcbiAgICAgICAgbWFwKChzdWNjZXNzOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVCdWxrQm9va2luZ0NhbGVuZGFyU2xvdFN1Y2Nlc3NBY3Rpb24oKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUJ1bGtCb29raW5nQ2FsZW5kYXJTbG90RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogbmV3IEh0dHBFcnJvclJlc3BvbnNlKHtzdGF0dXM6IDQwMH0pfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihjcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxuICB1cGRhdGVCb29raW5nQ2FsZW5kYXJTbG90JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2xvdH06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIHNsb3Q6IFBhcnRpYWw8Qm9va2luZ0NhbGVuZGFyU2xvdD5cbiAgICAgIH0pID0+IHRoaXMuYm9va2luZ0NhbGVuZGFyU2VydmljZS51cGRhdGVCb29raW5nQ2FsZW5kYXJTbG90KHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgey4uLnNsb3R9KS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoc2xvdDogQm9va2luZ0NhbGVuZGFyU2xvdCkgPT4gW1xuICAgICAgICAgIHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTdWNjZXNzQWN0aW9uKHtzbG90OiBzbG90fSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3QkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdEFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzbG90LCBzZW5kTm90aWZpY2F0aW9ufToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgc2xvdDogQm9va2luZ0NhbGVuZGFyU2xvdCxcbiAgICAgICAgc2VuZE5vdGlmaWNhdGlvbjogYm9vbGVhblxuICAgICAgfSkgPT4gdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLmRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3Qocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzbG90LmlkLCBzZW5kTm90aWZpY2F0aW9uKS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoKSA9PiBbXG4gICAgICAgICAgZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdFN1Y2Nlc3NBY3Rpb24oe3Nsb3Q6IHNsb3R9KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdEZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3QkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2xvdCwgZGVsZXRlRGF0ZXMsIHNlbmROb3RpZmljYXRpb259OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBzbG90OiBCb29raW5nQ2FsZW5kYXJTbG90LFxuICAgICAgICBkZWxldGVEYXRlczogc3RyaW5nW10gfCBudWxsLFxuICAgICAgICBzZW5kTm90aWZpY2F0aW9uOiBib29sZWFuXG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdFJlcGVhdGFibGUocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzbG90LmlkLCBkZWxldGVEYXRlcywgc2VuZE5vdGlmaWNhdGlvbikucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKCkgPT4gW1xuICAgICAgICAgIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclJlcGVhdGFibGVTbG90U3VjY2Vzc0FjdGlvbih7c2xvdDogc2xvdH0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihkZWxldGVCb29raW5nQ2FsZW5kYXJSZXBlYXRhYmxlU2xvdEZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgY3JlYXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoY3JlYXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25BY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2Vzc2lvbn06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIHNlc3Npb246IFBhcnRpYWw8Qm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24+XG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuY3JlYXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24ocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCB7Li4uc2Vzc2lvbn0pLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKChzZXNzaW9uOiBCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbikgPT4gW1xuICAgICAgICAgIGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uU3VjY2Vzc0FjdGlvbih7c2Vzc2lvbjogc2Vzc2lvbn0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihjcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgY3JlYXRlQnVsa0Jvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9ucyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShjcmVhdGVCdWxrQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25zQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBpdGVtSWQsIHNlc3Npb25zfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBpdGVtSWQ6IHN0cmluZyxcbiAgICAgICAgc2Vzc2lvbnM6IEFycmF5PFBhcnRpYWw8Qm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24+PlxuICAgICAgfSkgPT4gdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZUJ1bGtCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbnMocm9sZSBhcyBSb2xlLCBpdGVtSWQsIHNlc3Npb25zKS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoc2Vzc2lvbjogUGFydGlhbDxCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbj4gfCBudWxsKSA9PiBbXG4gICAgICAgICAgY3JlYXRlQnVsa0Jvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uc1N1Y2Nlc3NBY3Rpb24oe3Nlc3Npb246IHNlc3Npb259KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoY3JlYXRlQnVsa0Jvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgdXBkYXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUodXBkYXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25BY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2Vzc2lvbn06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIHNlc3Npb246IFBhcnRpYWw8Qm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24+XG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UudXBkYXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24ocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCB7Li4uc2Vzc2lvbn0pLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKChzZXNzaW9uOiBCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbikgPT4gW1xuICAgICAgICAgIHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uU3VjY2Vzc0FjdGlvbih7c2Vzc2lvbjogc2Vzc2lvbn0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih1cGRhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25BY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2Vzc2lvbiwgc2VuZE5vdGlmaWNhdGlvbn06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIHNlc3Npb246IEJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uLFxuICAgICAgICBzZW5kTm90aWZpY2F0aW9uOiBib29sZWFuXG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24ocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzZXNzaW9uLmlkLCBzZW5kTm90aWZpY2F0aW9uKS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoKSA9PiBbXG4gICAgICAgICAgZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25TdWNjZXNzQWN0aW9uKHtzZXNzaW9uOiBzZXNzaW9ufSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJSZXBlYXRhYmxlU2xvdFNlc3Npb24kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RTZXNzaW9uQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHNlc3Npb24sIGRlbGV0ZURhdGVzLCBzZW5kTm90aWZpY2F0aW9ufToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgc2Vzc2lvbjogQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24sXG4gICAgICAgIGRlbGV0ZURhdGVzOiBzdHJpbmdbXSB8IG51bGwsXG4gICAgICAgIHNlbmROb3RpZmljYXRpb246IGJvb2xlYW5cbiAgICAgIH0pID0+IHRoaXMuYm9va2luZ0NhbGVuZGFyU2VydmljZS5kZWxldGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvblJlcGVhdGFibGUocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzZXNzaW9uLmlkLCBkZWxldGVEYXRlcywgc2VuZE5vdGlmaWNhdGlvbikucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKCkgPT4gW1xuICAgICAgICAgIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclJlcGVhdGFibGVTbG90U2Vzc2lvblN1Y2Nlc3NBY3Rpb24oe3Nlc3Npb246IHNlc3Npb259KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RTZXNzaW9uRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxufVxuIl19
|