@myclub_se/data-access 3.7.9 → 3.7.11
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-invoice/api-payment-attempt-create.mjs +1 -8
- package/esm2022/lib/authentication/authentication.interceptor.mjs +6 -8
- package/esm2022/lib/authentication/authentication.service.mjs +8 -11
- package/esm2022/lib/authentication/guards/authenticated.guard.mjs +4 -6
- package/esm2022/lib/authentication/guards/handle-grant-token.guard.mjs +4 -7
- package/esm2022/lib/data-access.module.mjs +6 -6
- package/esm2022/lib/maintenance/maintenance.interceptor.mjs +4 -5
- package/esm2022/lib/models/activity-extra-member.mjs +1 -8
- package/esm2022/lib/models/activity-invite.mjs +1 -23
- package/esm2022/lib/models/activity-location-group.mjs +1 -7
- package/esm2022/lib/models/activity-location-part.mjs +1 -3
- package/esm2022/lib/models/activity-location-tag.mjs +1 -6
- package/esm2022/lib/models/activity-location.mjs +1 -11
- package/esm2022/lib/models/activity-participant.mjs +1 -8
- package/esm2022/lib/models/activity-question-connection.mjs +1 -8
- package/esm2022/lib/models/activity-question-response.mjs +1 -3
- package/esm2022/lib/models/activity-question.mjs +1 -8
- package/esm2022/lib/models/activity-rule-relation.mjs +1 -9
- package/esm2022/lib/models/activity-rule.mjs +1 -8
- package/esm2022/lib/models/activity-settings.mjs +1 -18
- package/esm2022/lib/models/activity-type.mjs +1 -9
- package/esm2022/lib/models/activity-waiting-list-entry.mjs +1 -16
- package/esm2022/lib/models/activity.mjs +1 -82
- package/esm2022/lib/models/app-settings.mjs +1 -5
- package/esm2022/lib/models/auth/auth-member.mjs +3 -7
- package/esm2022/lib/models/auth/auth-section.mjs +1 -6
- package/esm2022/lib/models/auth/auth-team-section.mjs +1 -3
- package/esm2022/lib/models/auth/auth-team.mjs +1 -6
- package/esm2022/lib/models/auth/auth.mjs +1 -17
- package/esm2022/lib/models/authentication.mjs +1 -3
- package/esm2022/lib/models/bookable-item.mjs +1 -11
- package/esm2022/lib/models/bookable-part.mjs +1 -3
- package/esm2022/lib/models/bookable-tag.mjs +1 -6
- package/esm2022/lib/models/booking-calendar-application-time.mjs +1 -33
- package/esm2022/lib/models/booking-calendar-slot-session.mjs +1 -35
- package/esm2022/lib/models/booking-calendar-slot-validate-copy-result.mjs +1 -5
- package/esm2022/lib/models/booking-calendar-slot.mjs +1 -26
- package/esm2022/lib/models/booking-calendar.mjs +1 -33
- package/esm2022/lib/models/booking-settings.mjs +1 -8
- package/esm2022/lib/models/booking-slot-filter.mjs +1 -12
- package/esm2022/lib/models/calendar-event.mjs +1 -16
- package/esm2022/lib/models/calendar.mjs +1 -6
- package/esm2022/lib/models/card/card-deal.mjs +1 -6
- package/esm2022/lib/models/card/card-logo-urls.mjs +1 -9
- package/esm2022/lib/models/card/card-logo.mjs +1 -4
- package/esm2022/lib/models/card/card-member-ticket.mjs +1 -7
- package/esm2022/lib/models/card/card-theme.mjs +1 -6
- package/esm2022/lib/models/card/card-ticket-location.mjs +1 -5
- package/esm2022/lib/models/card/card-ticket.mjs +1 -17
- package/esm2022/lib/models/card/card.mjs +1 -9
- package/esm2022/lib/models/card/home-team.mjs +1 -4
- package/esm2022/lib/models/card/member-card.mjs +1 -11
- package/esm2022/lib/models/card/search-member-card.mjs +1 -5
- package/esm2022/lib/models/card/selected-field.mjs +1 -3
- package/esm2022/lib/models/club-image.mjs +1 -14
- package/esm2022/lib/models/club-section.mjs +1 -3
- package/esm2022/lib/models/club.mjs +1 -3
- package/esm2022/lib/models/collection.mjs +1 -5
- package/esm2022/lib/models/contact.mjs +1 -19
- package/esm2022/lib/models/databank-category.mjs +1 -7
- package/esm2022/lib/models/databank-item.mjs +1 -7
- package/esm2022/lib/models/directory.mjs +1 -10
- package/esm2022/lib/models/email.mjs +1 -4
- package/esm2022/lib/models/event.mjs +1 -28
- package/esm2022/lib/models/external-link.mjs +1 -3
- package/esm2022/lib/models/feature-flags.mjs +1 -14
- package/esm2022/lib/models/file-object.mjs +1 -10
- package/esm2022/lib/models/general-image.mjs +1 -4
- package/esm2022/lib/models/group-role.mjs +1 -7
- package/esm2022/lib/models/guest.mjs +1 -5
- package/esm2022/lib/models/image-urls.mjs +1 -6
- package/esm2022/lib/models/invoice/member-fee.mjs +1 -6
- package/esm2022/lib/models/invoice/member-invoice-row.mjs +1 -14
- package/esm2022/lib/models/invoice/member-invoice.mjs +1 -24
- package/esm2022/lib/models/invoice/payment-attempt.mjs +1 -10
- package/esm2022/lib/models/invoice/payment-order-row.mjs +1 -3
- package/esm2022/lib/models/invoice/payment-order.mjs +1 -18
- package/esm2022/lib/models/invoice/payment-types/credit-card.mjs +1 -12
- package/esm2022/lib/models/invoice/payment-types/giro.mjs +1 -7
- package/esm2022/lib/models/invoice/payment-types/swish.mjs +1 -14
- package/esm2022/lib/models/invoice/payment-types/zimpler.mjs +1 -8
- package/esm2022/lib/models/invoice/search-member-invoice.mjs +1 -10
- package/esm2022/lib/models/invoice/swish-qr-code.mjs +1 -2
- package/esm2022/lib/models/invoice/unpaid-member-invoice.mjs +1 -5
- package/esm2022/lib/models/leader-activity.mjs +1 -12
- package/esm2022/lib/models/member/member-attribute.mjs +1 -12
- package/esm2022/lib/models/member/member-contact.mjs +1 -6
- package/esm2022/lib/models/member/member-function.mjs +1 -6
- package/esm2022/lib/models/member/member-validation-settings.mjs +1 -9
- package/esm2022/lib/models/member/member.mjs +1 -27
- package/esm2022/lib/models/member/other-member-field.mjs +1 -4
- package/esm2022/lib/models/member/other-member.mjs +1 -9
- package/esm2022/lib/models/member/search-member.mjs +1 -17
- package/esm2022/lib/models/member-activity-invite.mjs +1 -12
- package/esm2022/lib/models/member-public-form-field-option.mjs +1 -5
- package/esm2022/lib/models/member-public-form-field.mjs +1 -12
- package/esm2022/lib/models/member-public-form.mjs +1 -26
- package/esm2022/lib/models/member-team-through.mjs +1 -10
- package/esm2022/lib/models/member-team.mjs +1 -10
- package/esm2022/lib/models/member-type.mjs +1 -4
- package/esm2022/lib/models/mypages-menu-item.mjs +1 -4
- package/esm2022/lib/models/news.mjs +1 -20
- package/esm2022/lib/models/open-activity.mjs +3 -79
- package/esm2022/lib/models/optional-fee.mjs +2 -7
- package/esm2022/lib/models/overbooked-bookable-item.mjs +1 -6
- package/esm2022/lib/models/overbooked-location.mjs +1 -6
- package/esm2022/lib/models/partner.mjs +1 -5
- package/esm2022/lib/models/public-authentication.mjs +1 -3
- package/esm2022/lib/models/registration-qr-code.mjs +1 -8
- package/esm2022/lib/models/retrieve-2fa.mjs +1 -3
- package/esm2022/lib/models/saved-search.mjs +1 -3
- package/esm2022/lib/models/search-attribute.mjs +1 -5
- package/esm2022/lib/models/search-club.mjs +1 -10
- package/esm2022/lib/models/search-team.mjs +1 -9
- package/esm2022/lib/models/section.mjs +1 -3
- package/esm2022/lib/models/swish-incident.mjs +1 -11
- package/esm2022/lib/models/token.mjs +1 -4
- package/esm2022/lib/models/user-notification.mjs +1 -9
- package/esm2022/lib/models/user.mjs +1 -13
- package/esm2022/lib/services/activity.service.mjs +4 -7
- package/esm2022/lib/services/api.service.mjs +4 -6
- package/esm2022/lib/services/auth.service.mjs +4 -5
- package/esm2022/lib/services/bookable.service.mjs +4 -5
- package/esm2022/lib/services/booking-calendar.service.mjs +22 -6
- package/esm2022/lib/services/club.service.mjs +4 -5
- package/esm2022/lib/services/constant.service.mjs +4 -5
- package/esm2022/lib/services/databank.service.mjs +4 -5
- package/esm2022/lib/services/email.service.mjs +4 -5
- package/esm2022/lib/services/external-link.service.mjs +4 -5
- package/esm2022/lib/services/feature-flags.service.mjs +4 -5
- package/esm2022/lib/services/file.service.mjs +4 -5
- package/esm2022/lib/services/invoice/invoice.service.mjs +4 -5
- package/esm2022/lib/services/invoice/payment-attempt.service.mjs +4 -5
- package/esm2022/lib/services/invoice/payment-order.service.mjs +4 -5
- package/esm2022/lib/services/leader-notification.service.mjs +4 -5
- package/esm2022/lib/services/maintenance-mode.service.mjs +8 -7
- package/esm2022/lib/services/member-card.service.mjs +4 -5
- package/esm2022/lib/services/member-fee.service.mjs +4 -5
- package/esm2022/lib/services/member-public-form.service.mjs +4 -5
- package/esm2022/lib/services/member.service.mjs +4 -5
- package/esm2022/lib/services/news.service.mjs +4 -5
- package/esm2022/lib/services/registration-qr-code.service.mjs +4 -5
- package/esm2022/lib/services/saved-search.service.mjs +4 -5
- package/esm2022/lib/services/section.service.mjs +4 -5
- package/esm2022/lib/services/storage.service.mjs +5 -6
- package/esm2022/lib/services/swish-incident.service.mjs +4 -5
- package/esm2022/lib/services/team.service.mjs +4 -5
- package/esm2022/lib/services/token.service.mjs +4 -5
- package/esm2022/lib/services/user-notification.service.mjs +4 -5
- package/esm2022/lib/services/user.service.mjs +4 -5
- package/esm2022/lib/store/actions/booking.actions.mjs +7 -1
- package/esm2022/lib/store/effects/activity.effects.mjs +358 -355
- package/esm2022/lib/store/effects/auth.effects.mjs +121 -111
- package/esm2022/lib/store/effects/booking.effects.mjs +139 -134
- package/esm2022/lib/store/effects/calendar.effects.mjs +61 -59
- package/esm2022/lib/store/effects/club-info.effects.mjs +17 -15
- package/esm2022/lib/store/effects/constant.effects.mjs +78 -76
- package/esm2022/lib/store/effects/databank.effects.mjs +23 -21
- package/esm2022/lib/store/effects/email.effects.mjs +16 -14
- package/esm2022/lib/store/effects/external-link.effects.mjs +11 -9
- package/esm2022/lib/store/effects/file.effects.mjs +92 -90
- package/esm2022/lib/store/effects/invoice.effects.mjs +176 -174
- package/esm2022/lib/store/effects/member-card.effects.mjs +73 -71
- package/esm2022/lib/store/effects/member-fee.effects.mjs +9 -7
- package/esm2022/lib/store/effects/member.effects.mjs +41 -39
- package/esm2022/lib/store/effects/mixins/extra-members-mixin.mjs +4 -2
- package/esm2022/lib/store/effects/news.effects.mjs +47 -45
- package/esm2022/lib/store/effects/public-form.effects.mjs +24 -22
- package/esm2022/lib/store/effects/registration-qr-code.effects.mjs +14 -12
- package/esm2022/lib/store/effects/saved-search.effects.mjs +9 -7
- package/esm2022/lib/store/effects/swish-incidents.effects.mjs +11 -9
- package/esm2022/lib/store/effects/team.effects.mjs +83 -76
- package/esm2022/lib/store/effects/token.effects.mjs +93 -91
- package/esm2022/lib/store/effects/user.effects.mjs +35 -35
- package/fesm2022/myclub_se-data-access.mjs +1771 -2845
- package/fesm2022/myclub_se-data-access.mjs.map +1 -1
- package/lib/services/booking-calendar.service.d.ts +3 -0
- package/lib/store/actions/booking.actions.d.ts +24 -0
- package/lib/store/effects/booking.effects.d.ts +5 -0
- package/package.json +1 -1
|
@@ -1,90 +1,97 @@
|
|
|
1
1
|
import { inject, Injectable } from '@angular/core';
|
|
2
2
|
import { Actions, createEffect, ofType } from '@ngrx/effects';
|
|
3
3
|
import { deleteTeamLeaderMemberAction, deleteTeamLeaderMemberFailureAction, deleteTeamLeaderMemberSuccessAction, listGenerallyAvailableTeamsAction, listGenerallyAvailableTeamsFailureAction, listGenerallyAvailableTeamsSuccessAction, listLeaderNotificationsAction, listLeaderNotificationsFailureAction, listLeaderNotificationsSuccessAction, listMemberLeaderExtraMembersAction, listMemberLeaderExtraMembersFailureAction, listMemberLeaderExtraMembersSuccessAction, listMemberLeaderMembersAction, listMemberLeaderMembersFailureAction, listMemberLeaderMembersSuccessAction, listMemberTeamsAction, listMemberTeamsFailureAction, listMemberTeamsSuccessAction, listTeamLeaderExtraMembersAction, listTeamLeaderExtraMembersFailureAction, listTeamLeaderExtraMembersSuccessAction, listTeamLeaderMembersAction, listTeamLeaderMembersFailureAction, listTeamLeaderMembersSuccessAction, retrieveMemberLeaderExtraMemberAction, retrieveMemberLeaderExtraMemberFailureAction, retrieveMemberLeaderExtraMemberSuccessAction, retrieveMemberLeaderGroupAction, retrieveMemberLeaderGroupFailureAction, retrieveMemberLeaderGroupSuccessAction, retrieveMemberLeaderMemberAction, retrieveMemberLeaderMemberFailureAction, retrieveMemberLeaderMemberSuccessAction, retrieveTeamLeaderExtraMemberAction, retrieveTeamLeaderExtraMemberFailureAction, retrieveTeamLeaderExtraMemberSuccessAction, retrieveTeamLeaderGroupAction, retrieveTeamLeaderGroupFailureAction, retrieveTeamLeaderGroupSuccessAction, retrieveTeamLeaderMemberAction, retrieveTeamLeaderMemberFailureAction, retrieveTeamLeaderMemberSuccessAction, updateTeamLeaderMemberAction, updateTeamLeaderMemberFailureAction, updateTeamLeaderMemberSuccessAction } from '../actions';
|
|
4
|
-
import { exhaustMap, forkJoin, mergeMap, of } from 'rxjs';
|
|
4
|
+
import { exhaustMap, forkJoin, mergeMap, of, switchMap } from 'rxjs';
|
|
5
5
|
import { catchError, map } from 'rxjs/operators';
|
|
6
6
|
import { HttpErrorResponse } from '@angular/common/http';
|
|
7
7
|
import { ExtraMembersMixin } from './mixins/extra-members-mixin';
|
|
8
8
|
import { LeaderNotificationService } from '../../services';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
export class TeamEffects extends ExtraMembersMixin {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
.
|
|
15
|
-
.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
11
|
+
constructor() {
|
|
12
|
+
super(...arguments);
|
|
13
|
+
this.actions$ = inject(Actions);
|
|
14
|
+
this.leaderNotificationService = inject(LeaderNotificationService);
|
|
15
|
+
this.deleteTeamMember$ = createEffect(() => this.actions$
|
|
16
|
+
.pipe(ofType(deleteTeamLeaderMemberAction), exhaustMap(({ payload }) => this.teamService.deleteTeamLeaderTeamMember(payload.teamId, payload.id)
|
|
17
|
+
.pipe(map((success) => {
|
|
18
|
+
if (success) {
|
|
19
|
+
return deleteTeamLeaderMemberSuccessAction({ payload: { teamId: payload.teamId, id: payload.id } });
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
return deleteTeamLeaderMemberFailureAction({
|
|
23
|
+
payload: new HttpErrorResponse({ status: 400 })
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}), catchError((error) => of(deleteTeamLeaderMemberFailureAction({ payload: error })))))));
|
|
27
|
+
this.listGenerallyAvailableTeams$ = createEffect(() => this.actions$
|
|
28
|
+
.pipe(ofType(listGenerallyAvailableTeamsAction), exhaustMap(({ payload }) => this.teamService.getGenerallyAvailableTeams(payload.clubId, payload.memberIds ?? [])
|
|
29
|
+
.pipe(map((teams) => listGenerallyAvailableTeamsSuccessAction({ payload: teams.toArray() })), catchError((error) => of(listGenerallyAvailableTeamsFailureAction({ payload: error })))))));
|
|
30
|
+
// switchMap (not exhaustMap): on a context switch a request for the PREVIOUS team
|
|
31
|
+
// can still be in flight when the new team's request is dispatched — the latest
|
|
32
|
+
// dispatch must win (and cancel the stale one), or the new context shows the old
|
|
33
|
+
// team's notifications.
|
|
34
|
+
this.listLeaderNotifications$ = createEffect(() => this.actions$
|
|
35
|
+
.pipe(ofType(listLeaderNotificationsAction), switchMap(({ payload }) => this.leaderNotificationService.getLeaderNotifications(payload)
|
|
36
|
+
.pipe(map((activities) => listLeaderNotificationsSuccessAction({ payload: activities.toArray() })), catchError((error) => of(listLeaderNotificationsFailureAction({ payload: error })))))));
|
|
37
|
+
this.listMemberTeams$ = createEffect(() => this.actions$
|
|
38
|
+
.pipe(ofType(listMemberTeamsAction), mergeMap(({ payload }) => forkJoin(payload.map((id) => this.teamService.getMemberTeams(id)
|
|
39
|
+
.pipe(map((teams) => ({ id, teams: teams.toArray() })), catchError((error) => of({ id, error }))))).pipe(mergeMap((results) => {
|
|
40
|
+
const resultMap = new Map();
|
|
41
|
+
const errors = results.filter(result => result.error);
|
|
42
|
+
if (errors.length) {
|
|
43
|
+
return of(listMemberTeamsFailureAction({ payload: errors[0].error }));
|
|
44
|
+
}
|
|
45
|
+
results.forEach(result => {
|
|
46
|
+
if (result.teams) {
|
|
47
|
+
resultMap.set(result.id, result.teams);
|
|
48
|
+
}
|
|
22
49
|
});
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
return of(listMemberTeamsFailureAction({ payload: errors[0].error }));
|
|
38
|
-
}
|
|
39
|
-
results.forEach(result => {
|
|
40
|
-
if (result.teams) {
|
|
41
|
-
resultMap.set(result.id, result.teams);
|
|
50
|
+
return of(listMemberTeamsSuccessAction({ payload: resultMap }));
|
|
51
|
+
})))));
|
|
52
|
+
this.listMemberLeaderExtraMembers$ = createEffect(() => this.actions$
|
|
53
|
+
.pipe(ofType(listMemberLeaderExtraMembersAction), exhaustMap(({ payload }) => this.memberLeaderGetAllExtraMembers(payload.memberId, payload.id, payload.q)
|
|
54
|
+
.pipe(map((extraMembers) => listMemberLeaderExtraMembersSuccessAction({ payload: extraMembers })), catchError((error) => of(listMemberLeaderExtraMembersFailureAction({ payload: error })))))));
|
|
55
|
+
this.listMemberLeaderMembers$ = createEffect(() => this.actions$
|
|
56
|
+
.pipe(ofType(listMemberLeaderMembersAction), exhaustMap(({ payload }) => this.memberLeaderGetaAllMembers(payload.memberId, payload.id, payload.q)
|
|
57
|
+
.pipe(map((members) => listMemberLeaderMembersSuccessAction({ payload: members })), catchError((error) => of(listMemberLeaderMembersFailureAction({ payload: error })))))));
|
|
58
|
+
this.listTeamLeaderExtraMembers$ = createEffect(() => this.actions$
|
|
59
|
+
.pipe(ofType(listTeamLeaderExtraMembersAction), exhaustMap(({ payload }) => this.teamLeaderGetAllExtraMembers(payload.teamId, payload.q)
|
|
60
|
+
.pipe(map((extraMembers) => listTeamLeaderExtraMembersSuccessAction({
|
|
61
|
+
payload: {
|
|
62
|
+
teamId: payload.teamId,
|
|
63
|
+
results: extraMembers
|
|
42
64
|
}
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
.
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
.
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
.
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
.
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
.
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
.pipe(map((member) => retrieveMemberLeaderMemberSuccessAction({ payload: member })), catchError((error) => of(retrieveMemberLeaderMemberFailureAction({ payload: error })))))));
|
|
72
|
-
retrieveTeamLeaderGroup$ = createEffect(() => this.actions$
|
|
73
|
-
.pipe(ofType(retrieveTeamLeaderGroupAction), exhaustMap(({ payload }) => this.teamService.getTeamLeaderTeam(payload)
|
|
74
|
-
.pipe(map((group) => retrieveTeamLeaderGroupSuccessAction({ payload: group })), catchError((error) => of(retrieveTeamLeaderGroupFailureAction({ payload: error })))))));
|
|
75
|
-
retrieveTeamLeaderExtraMember$ = createEffect(() => this.actions$
|
|
76
|
-
.pipe(ofType(retrieveTeamLeaderExtraMemberAction), exhaustMap(({ payload }) => this.teamService.getTeamLeaderTeamExtraMember(payload.teamId, payload.id)
|
|
77
|
-
.pipe(map((member) => retrieveTeamLeaderExtraMemberSuccessAction({ payload: member })), catchError((error) => of(retrieveTeamLeaderExtraMemberFailureAction({ payload: error })))))));
|
|
78
|
-
retrieveTeamLeaderMember$ = createEffect(() => this.actions$
|
|
79
|
-
.pipe(ofType(retrieveTeamLeaderMemberAction), exhaustMap(({ payload }) => this.teamService.getTeamLeaderTeamMember(payload.teamId, payload.id)
|
|
80
|
-
.pipe(map((member) => retrieveTeamLeaderMemberSuccessAction({ payload: member })), catchError((error) => of(retrieveTeamLeaderMemberFailureAction({ payload: error })))))));
|
|
81
|
-
updateTeamLeaderMember$ = createEffect(() => this.actions$
|
|
82
|
-
.pipe(ofType(updateTeamLeaderMemberAction), exhaustMap(({ payload }) => this.teamService.updateTeamLeaderTeamMember(payload.teamId, payload.id, payload.member)
|
|
83
|
-
.pipe(map((member) => updateTeamLeaderMemberSuccessAction({ payload: member })), catchError((error) => of(updateTeamLeaderMemberFailureAction({ payload: error })))))));
|
|
84
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: TeamEffects, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
85
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: TeamEffects });
|
|
65
|
+
})), catchError((error) => of(listTeamLeaderExtraMembersFailureAction({ payload: error })))))));
|
|
66
|
+
this.listTeamLeaderMembers$ = createEffect(() => this.actions$
|
|
67
|
+
.pipe(ofType(listTeamLeaderMembersAction), exhaustMap(({ payload }) => this.teamLeaderGetAllMembers(payload.teamId, payload.q)
|
|
68
|
+
.pipe(map((members) => listTeamLeaderMembersSuccessAction({ payload: members })), catchError((error) => of(listTeamLeaderMembersFailureAction({ payload: error })))))));
|
|
69
|
+
this.retrieveMemberLeaderGroup$ = createEffect(() => this.actions$
|
|
70
|
+
.pipe(ofType(retrieveMemberLeaderGroupAction), exhaustMap(({ payload }) => this.teamService.getMemberTeam(payload.memberId, payload.id)
|
|
71
|
+
.pipe(map((group) => retrieveMemberLeaderGroupSuccessAction({ payload: group })), catchError((error) => of(retrieveMemberLeaderGroupFailureAction({ payload: error })))))));
|
|
72
|
+
this.retrieveMemberLeaderExtraMember$ = createEffect(() => this.actions$
|
|
73
|
+
.pipe(ofType(retrieveMemberLeaderExtraMemberAction), exhaustMap(({ payload }) => this.teamService.getMemberTeamExtraMember(payload.memberId, payload.teamId, payload.id)
|
|
74
|
+
.pipe(map((member) => retrieveMemberLeaderExtraMemberSuccessAction({ payload: member })), catchError((error) => of(retrieveMemberLeaderExtraMemberFailureAction({ payload: error })))))));
|
|
75
|
+
this.retrieveMemberLeaderMember$ = createEffect(() => this.actions$
|
|
76
|
+
.pipe(ofType(retrieveMemberLeaderMemberAction), exhaustMap(({ payload }) => this.teamService.getMemberTeamMember(payload.memberId, payload.teamId, payload.id)
|
|
77
|
+
.pipe(map((member) => retrieveMemberLeaderMemberSuccessAction({ payload: member })), catchError((error) => of(retrieveMemberLeaderMemberFailureAction({ payload: error })))))));
|
|
78
|
+
this.retrieveTeamLeaderGroup$ = createEffect(() => this.actions$
|
|
79
|
+
.pipe(ofType(retrieveTeamLeaderGroupAction), exhaustMap(({ payload }) => this.teamService.getTeamLeaderTeam(payload)
|
|
80
|
+
.pipe(map((group) => retrieveTeamLeaderGroupSuccessAction({ payload: group })), catchError((error) => of(retrieveTeamLeaderGroupFailureAction({ payload: error })))))));
|
|
81
|
+
this.retrieveTeamLeaderExtraMember$ = createEffect(() => this.actions$
|
|
82
|
+
.pipe(ofType(retrieveTeamLeaderExtraMemberAction), exhaustMap(({ payload }) => this.teamService.getTeamLeaderTeamExtraMember(payload.teamId, payload.id)
|
|
83
|
+
.pipe(map((member) => retrieveTeamLeaderExtraMemberSuccessAction({ payload: member })), catchError((error) => of(retrieveTeamLeaderExtraMemberFailureAction({ payload: error })))))));
|
|
84
|
+
this.retrieveTeamLeaderMember$ = createEffect(() => this.actions$
|
|
85
|
+
.pipe(ofType(retrieveTeamLeaderMemberAction), exhaustMap(({ payload }) => this.teamService.getTeamLeaderTeamMember(payload.teamId, payload.id)
|
|
86
|
+
.pipe(map((member) => retrieveTeamLeaderMemberSuccessAction({ payload: member })), catchError((error) => of(retrieveTeamLeaderMemberFailureAction({ payload: error })))))));
|
|
87
|
+
this.updateTeamLeaderMember$ = createEffect(() => this.actions$
|
|
88
|
+
.pipe(ofType(updateTeamLeaderMemberAction), exhaustMap(({ payload }) => this.teamService.updateTeamLeaderTeamMember(payload.teamId, payload.id, payload.member)
|
|
89
|
+
.pipe(map((member) => updateTeamLeaderMemberSuccessAction({ payload: member })), catchError((error) => of(updateTeamLeaderMemberFailureAction({ payload: error })))))));
|
|
90
|
+
}
|
|
91
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TeamEffects, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
92
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TeamEffects }); }
|
|
86
93
|
}
|
|
87
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
94
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TeamEffects, decorators: [{
|
|
88
95
|
type: Injectable
|
|
89
96
|
}] });
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVhbS5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi9zdG9yZS9lZmZlY3RzL3RlYW0uZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUNMLDRCQUE0QixFQUM1QixtQ0FBbUMsRUFDbkMsbUNBQW1DLEVBQ25DLGlDQUFpQyxFQUNqQyx3Q0FBd0MsRUFDeEMsd0NBQXdDLEVBQ3hDLDZCQUE2QixFQUM3QixvQ0FBb0MsRUFDcEMsb0NBQW9DLEVBQ3BDLGtDQUFrQyxFQUNsQyx5Q0FBeUMsRUFDekMseUNBQXlDLEVBQ3pDLDZCQUE2QixFQUM3QixvQ0FBb0MsRUFDcEMsb0NBQW9DLEVBQ3BDLHFCQUFxQixFQUNyQiw0QkFBNEIsRUFDNUIsNEJBQTRCLEVBQzVCLGdDQUFnQyxFQUNoQyx1Q0FBdUMsRUFDdkMsdUNBQXVDLEVBQ3ZDLDJCQUEyQixFQUMzQixrQ0FBa0MsRUFDbEMsa0NBQWtDLEVBQ2xDLHFDQUFxQyxFQUNyQyw0Q0FBNEMsRUFDNUMsNENBQTRDLEVBQzVDLCtCQUErQixFQUMvQixzQ0FBc0MsRUFDdEMsc0NBQXNDLEVBQ3RDLGdDQUFnQyxFQUNoQyx1Q0FBdUMsRUFDdkMsdUNBQXVDLEVBQ3ZDLG1DQUFtQyxFQUNuQywwQ0FBMEMsRUFDMUMsMENBQTBDLEVBQzFDLDZCQUE2QixFQUM3QixvQ0FBb0MsRUFDcEMsb0NBQW9DLEVBQ3BDLDhCQUE4QixFQUM5QixxQ0FBcUMsRUFDckMscUNBQXFDLEVBQ3JDLDRCQUE0QixFQUM1QixtQ0FBbUMsRUFDbkMsbUNBQW1DLEVBQ3BDLE1BQU0sWUFBWSxDQUFDO0FBQ3BC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QVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBBY3Rpdml0eUV4dHJhTWVtYmVyLCBDb2xsZWN0aW9uLCBMZWFkZXJBY3Rpdml0eSwgTWVtYmVyVGVhbSwgTWVtYmVyVGVhbVRocm91Z2gsIFNlYXJjaFRlYW0gfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtcbiAgZGVsZXRlVGVhbUxlYWRlck1lbWJlckFjdGlvbixcbiAgZGVsZXRlVGVhbUxlYWRlck1lbWJlckZhaWx1cmVBY3Rpb24sXG4gIGRlbGV0ZVRlYW1MZWFkZXJNZW1iZXJTdWNjZXNzQWN0aW9uLFxuICBsaXN0R2VuZXJhbGx5QXZhaWxhYmxlVGVhbXNBY3Rpb24sXG4gIGxpc3RHZW5lcmFsbHlBdmFpbGFibGVUZWFtc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RHZW5lcmFsbHlBdmFpbGFibGVUZWFtc1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RMZWFkZXJOb3RpZmljYXRpb25zQWN0aW9uLFxuICBsaXN0TGVhZGVyTm90aWZpY2F0aW9uc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RMZWFkZXJOb3RpZmljYXRpb25zU3VjY2Vzc0FjdGlvbixcbiAgbGlzdE1lbWJlckxlYWRlckV4dHJhTWVtYmVyc0FjdGlvbixcbiAgbGlzdE1lbWJlckxlYWRlckV4dHJhTWVtYmVyc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RNZW1iZXJMZWFkZXJFeHRyYU1lbWJlcnNTdWNjZXNzQWN0aW9uLFxuICBsaXN0TWVtYmVyTGVhZGVyTWVtYmVyc0FjdGlvbixcbiAgbGlzdE1lbWJlckxlYWRlck1lbWJlcnNGYWlsdXJlQWN0aW9uLFxuICBsaXN0TWVtYmVyTGVhZGVyTWVtYmVyc1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RNZW1iZXJUZWFtc0FjdGlvbixcbiAgbGlzdE1lbWJlclRlYW1zRmFpbHVyZUFjdGlvbixcbiAgbGlzdE1lbWJlclRlYW1zU3VjY2Vzc0FjdGlvbixcbiAgbGlzdFRlYW1MZWFkZXJFeHRyYU1lbWJlcnNBY3Rpb24sXG4gIGxpc3RUZWFtTGVhZGVyRXh0cmFNZW1iZXJzRmFpbHVyZUFjdGlvbixcbiAgbGlzdFRlYW1MZWFkZXJFeHRyYU1lbWJlcnNTdWNjZXNzQWN0aW9uLFxuICBsaXN0VGVhbUxlYWRlck1lbWJlcnNBY3Rpb24sXG4gIGxpc3RUZWFtTGVhZGVyTWVtYmVyc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RUZWFtTGVhZGVyTWVtYmVyc1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyTGVhZGVyRXh0cmFNZW1iZXJBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyTGVhZGVyRXh0cmFNZW1iZXJGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckxlYWRlckV4dHJhTWVtYmVyU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJMZWFkZXJHcm91cEFjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJMZWFkZXJHcm91cEZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyTGVhZGVyR3JvdXBTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckxlYWRlck1lbWJlckFjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJMZWFkZXJNZW1iZXJGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckxlYWRlck1lbWJlclN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUxlYWRlckV4dHJhTWVtYmVyQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1MZWFkZXJFeHRyYU1lbWJlckZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUxlYWRlckV4dHJhTWVtYmVyU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVUZWFtTGVhZGVyR3JvdXBBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUxlYWRlckdyb3VwRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVUZWFtTGVhZGVyR3JvdXBTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1MZWFkZXJNZW1iZXJBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUxlYWRlck1lbWJlckZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUxlYWRlck1lbWJlclN1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZVRlYW1MZWFkZXJNZW1iZXJBY3Rpb24sXG4gIHVwZGF0ZVRlYW1MZWFkZXJNZW1iZXJGYWlsdXJlQWN0aW9uLFxuICB1cGRhdGVUZWFtTGVhZGVyTWVtYmVyU3VjY2Vzc0FjdGlvblxufSBmcm9tICcuLi9hY3Rpb25zJztcbmltcG9ydCB7IGV4aGF1c3RNYXAsIGZvcmtKb2luLCBtZXJnZU1hcCwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgRXh0cmFNZW1iZXJzTWl4aW4gfSBmcm9tICcuL21peGlucy9leHRyYS1tZW1iZXJzLW1peGluJztcbmltcG9ydCB7IExlYWRlck5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRlYW1FZmZlY3RzIGV4dGVuZHMgRXh0cmFNZW1iZXJzTWl4aW4ge1xuICBwcml2YXRlIGFjdGlvbnMkID0gaW5qZWN0KEFjdGlvbnMpO1xuICBwcml2YXRlIGxlYWRlck5vdGlmaWNhdGlvblNlcnZpY2UgPSBpbmplY3QoTGVhZGVyTm90aWZpY2F0aW9uU2VydmljZSk7XG5cbiAgZGVsZXRlVGVhbU1lbWJlciQgID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShkZWxldGVUZWFtTGVhZGVyTWVtYmVyQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IHt0ZWFtSWQ6IHN0cmluZywgaWQ6IHN0cmluZ319KSA9PiB0aGlzLnRlYW1TZXJ2aWNlLmRlbGV0ZVRlYW1MZWFkZXJUZWFtTWVtYmVyKHBheWxvYWQudGVhbUlkLCBwYXlsb2FkLmlkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgICAgIHJldHVybiBkZWxldGVUZWFtTGVhZGVyTWVtYmVyU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDoge3RlYW1JZDogcGF5bG9hZC50ZWFtSWQsIGlkOiBwYXlsb2FkLmlkfX0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGRlbGV0ZVRlYW1MZWFkZXJNZW1iZXJGYWlsdXJlQWN0aW9uKHtcbiAgICAgICAgICAgICAgICBwYXlsb2FkOiBuZXcgSHR0cEVycm9yUmVzcG9uc2Uoe3N0YXR1czogNDAwfSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGRlbGV0ZVRlYW1MZWFkZXJNZW1iZXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsaXN0R2VuZXJhbGx5QXZhaWxhYmxlVGVhbXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsaXN0R2VuZXJhbGx5QXZhaWxhYmxlVGVhbXNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDoge2NsdWJJZDogc3RyaW5nLCBtZW1iZXJJZHM/OiBBcnJheTxzdHJpbmc+fX0pID0+XG4gICAgICAgIHRoaXMudGVhbVNlcnZpY2UuZ2V0R2VuZXJhbGx5QXZhaWxhYmxlVGVhbXMocGF5bG9hZC5jbHViSWQsIHBheWxvYWQubWVtYmVySWRzID8/IFtdKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKCh0ZWFtczogQ29sbGVjdGlvbjxTZWFyY2hUZWFtPikgPT4gbGlzdEdlbmVyYWxseUF2YWlsYWJsZVRlYW1zU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogdGVhbXMudG9BcnJheSgpfSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihsaXN0R2VuZXJhbGx5QXZhaWxhYmxlVGVhbXNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGxpc3RMZWFkZXJOb3RpZmljYXRpb25zJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUobGlzdExlYWRlck5vdGlmaWNhdGlvbnNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDogc3RyaW5nfSkgPT5cbiAgICAgICAgdGhpcy5sZWFkZXJOb3RpZmljYXRpb25TZXJ2aWNlLmdldExlYWRlck5vdGlmaWNhdGlvbnMocGF5bG9hZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoYWN0aXZpdGllczogQ29sbGVjdGlvbjxMZWFkZXJBY3Rpdml0eT4pID0+IGxpc3RMZWFkZXJOb3RpZmljYXRpb25zU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogYWN0aXZpdGllcy50b0FycmF5KCl9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RMZWFkZXJOb3RpZmljYXRpb25zRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsaXN0TWVtYmVyVGVhbXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsaXN0TWVtYmVyVGVhbXNBY3Rpb24pLFxuICAgICAgbWVyZ2VNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IEFycmF5PHN0cmluZz59KSA9PlxuICAgICAgICBmb3JrSm9pbihwYXlsb2FkLm1hcCgoaWQ6IHN0cmluZykgPT4gdGhpcy50ZWFtU2VydmljZS5nZXRNZW1iZXJUZWFtcyhpZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgodGVhbXM6IENvbGxlY3Rpb248U2VhcmNoVGVhbT4pID0+ICh7aWQsIHRlYW1zOiB0ZWFtcy50b0FycmF5KCl9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHtpZCwgZXJyb3J9KSlcbiAgICAgICAgICApXG4gICAgICAgICkpLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKHJlc3VsdHM6IEFycmF5PHtpZDogc3RyaW5nLCBlcnJvcj86IEh0dHBFcnJvclJlc3BvbnNlLCB0ZWFtcz86IEFycmF5PFNlYXJjaFRlYW0+fT4pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBBcnJheTxTZWFyY2hUZWFtPj4oKTtcbiAgICAgICAgICAgIGNvbnN0IGVycm9ycyA9IHJlc3VsdHMuZmlsdGVyKHJlc3VsdCA9PiByZXN1bHQuZXJyb3IpO1xuICAgICAgICAgICAgaWYgKGVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKGxpc3RNZW1iZXJUZWFtc0ZhaWx1cmVBY3Rpb24oeyBwYXlsb2FkOiBlcnJvcnNbMF0uZXJyb3IgYXMgSHR0cEVycm9yUmVzcG9uc2UgfSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXN1bHRzLmZvckVhY2gocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJlc3VsdC50ZWFtcykge1xuICAgICAgICAgICAgICAgIHJlc3VsdE1hcC5zZXQocmVzdWx0LmlkLCByZXN1bHQudGVhbXMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIG9mKGxpc3RNZW1iZXJUZWFtc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHJlc3VsdE1hcH0pKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGxpc3RNZW1iZXJMZWFkZXJFeHRyYU1lbWJlcnMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsaXN0TWVtYmVyTGVhZGVyRXh0cmFNZW1iZXJzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHsgcGF5bG9hZCB9OiB7IHBheWxvYWQ6IHsgbWVtYmVySWQ6IHN0cmluZywgaWQ6IHN0cmluZywgcTogc3RyaW5nIH0gfSkgPT5cbiAgICAgICAgdGhpcy5tZW1iZXJMZWFkZXJHZXRBbGxFeHRyYU1lbWJlcnMocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5pZCwgcGF5bG9hZC5xKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChleHRyYU1lbWJlcnM6IEFycmF5PEFjdGl2aXR5RXh0cmFNZW1iZXI+KSA9PiBsaXN0TWVtYmVyTGVhZGVyRXh0cmFNZW1iZXJzU3VjY2Vzc0FjdGlvbih7IHBheWxvYWQ6IGV4dHJhTWVtYmVycyB9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RNZW1iZXJMZWFkZXJFeHRyYU1lbWJlcnNGYWlsdXJlQWN0aW9uKHsgcGF5bG9hZDogZXJyb3IgfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbGlzdE1lbWJlckxlYWRlck1lbWJlcnMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsaXN0TWVtYmVyTGVhZGVyTWVtYmVyc0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtwYXlsb2FkOiB7bWVtYmVySWQ6IHN0cmluZywgaWQ6IHN0cmluZywgcTogc3RyaW5nfX0pID0+XG4gICAgICAgIHRoaXMubWVtYmVyTGVhZGVyR2V0YUFsbE1lbWJlcnMocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5pZCwgcGF5bG9hZC5xKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChtZW1iZXJzOiBBcnJheTxNZW1iZXJUZWFtVGhyb3VnaD4pID0+IGxpc3RNZW1iZXJMZWFkZXJNZW1iZXJzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogbWVtYmVyc30pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdE1lbWJlckxlYWRlck1lbWJlcnNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGxpc3RUZWFtTGVhZGVyRXh0cmFNZW1iZXJzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUobGlzdFRlYW1MZWFkZXJFeHRyYU1lbWJlcnNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0ZWFtSWQ6IHN0cmluZywgcTogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy50ZWFtTGVhZGVyR2V0QWxsRXh0cmFNZW1iZXJzKHBheWxvYWQudGVhbUlkLCBwYXlsb2FkLnEpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGV4dHJhTWVtYmVyczogQXJyYXk8QWN0aXZpdHlFeHRyYU1lbWJlcj4pID0+IGxpc3RUZWFtTGVhZGVyRXh0cmFNZW1iZXJzU3VjY2Vzc0FjdGlvbih7XG4gICAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgICB0ZWFtSWQ6IHBheWxvYWQudGVhbUlkLFxuICAgICAgICAgICAgICAgIHJlc3VsdHM6IGV4dHJhTWVtYmVyc1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RUZWFtTGVhZGVyRXh0cmFNZW1iZXJzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsaXN0VGVhbUxlYWRlck1lbWJlcnMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsaXN0VGVhbUxlYWRlck1lbWJlcnNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0ZWFtSWQ6IHN0cmluZywgcTogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy50ZWFtTGVhZGVyR2V0QWxsTWVtYmVycyhwYXlsb2FkLnRlYW1JZCwgcGF5bG9hZC5xKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChtZW1iZXJzOiBBcnJheTxNZW1iZXJUZWFtVGhyb3VnaD4pID0+IGxpc3RUZWFtTGVhZGVyTWVtYmVyc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IG1lbWJlcnN9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RUZWFtTGVhZGVyTWVtYmVyc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVNZW1iZXJMZWFkZXJHcm91cCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlTWVtYmVyTGVhZGVyR3JvdXBBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBpZDogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy50ZWFtU2VydmljZS5nZXRNZW1iZXJUZWFtKHBheWxvYWQubWVtYmVySWQsIHBheWxvYWQuaWQpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGdyb3VwOiBNZW1iZXJUZWFtKSA9PiByZXRyaWV2ZU1lbWJlckxlYWRlckdyb3VwU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogZ3JvdXB9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlTWVtYmVyTGVhZGVyR3JvdXBGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlTWVtYmVyTGVhZGVyRXh0cmFNZW1iZXIkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZU1lbWJlckxlYWRlckV4dHJhTWVtYmVyQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IHttZW1iZXJJZDogc3RyaW5nLCB0ZWFtSWQ6IHN0cmluZywgaWQ6IHN0cmluZ319KSA9PiB0aGlzLnRlYW1TZXJ2aWNlLmdldE1lbWJlclRlYW1FeHRyYU1lbWJlcihwYXlsb2FkLm1lbWJlcklkLCBwYXlsb2FkLnRlYW1JZCwgcGF5bG9hZC5pZClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChtZW1iZXI6IEFjdGl2aXR5RXh0cmFNZW1iZXIpID0+IHJldHJpZXZlTWVtYmVyTGVhZGVyRXh0cmFNZW1iZXJTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBtZW1iZXJ9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZU1lbWJlckxlYWRlckV4dHJhTWVtYmVyRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVNZW1iZXJMZWFkZXJNZW1iZXIkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZU1lbWJlckxlYWRlck1lbWJlckFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtwYXlsb2FkOiB7bWVtYmVySWQ6IHN0cmluZywgdGVhbUlkOiBzdHJpbmcsIGlkOiBzdHJpbmd9fSkgPT4gdGhpcy50ZWFtU2VydmljZS5nZXRNZW1iZXJUZWFtTWVtYmVyKHBheWxvYWQubWVtYmVySWQsIHBheWxvYWQudGVhbUlkLCBwYXlsb2FkLmlkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKG1lbWJlcjogTWVtYmVyVGVhbVRocm91Z2gpID0+IHJldHJpZXZlTWVtYmVyTGVhZGVyTWVtYmVyU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogbWVtYmVyfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVNZW1iZXJMZWFkZXJNZW1iZXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZVRlYW1MZWFkZXJHcm91cCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlVGVhbUxlYWRlckdyb3VwQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfTogeyBwYXlsb2FkOiBzdHJpbmcgfSkgPT4gdGhpcy50ZWFtU2VydmljZS5nZXRUZWFtTGVhZGVyVGVhbShwYXlsb2FkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGdyb3VwOiBNZW1iZXJUZWFtKSA9PiByZXRyaWV2ZVRlYW1MZWFkZXJHcm91cFN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGdyb3VwfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVUZWFtTGVhZGVyR3JvdXBGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZVRlYW1MZWFkZXJFeHRyYU1lbWJlciQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlVGVhbUxlYWRlckV4dHJhTWVtYmVyQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IHt0ZWFtSWQ6IHN0cmluZywgaWQ6IHN0cmluZ319KSA9PiB0aGlzLnRlYW1TZXJ2aWNlLmdldFRlYW1MZWFkZXJUZWFtRXh0cmFNZW1iZXIocGF5bG9hZC50ZWFtSWQsIHBheWxvYWQuaWQpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgobWVtYmVyOiBBY3Rpdml0eUV4dHJhTWVtYmVyKSA9PiByZXRyaWV2ZVRlYW1MZWFkZXJFeHRyYU1lbWJlclN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IG1lbWJlcn0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlVGVhbUxlYWRlckV4dHJhTWVtYmVyRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVUZWFtTGVhZGVyTWVtYmVyJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVUZWFtTGVhZGVyTWVtYmVyQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IHt0ZWFtSWQ6IHN0cmluZywgaWQ6IHN0cmluZ319KSA9PiB0aGlzLnRlYW1TZXJ2aWNlLmdldFRlYW1MZWFkZXJUZWFtTWVtYmVyKHBheWxvYWQudGVhbUlkLCBwYXlsb2FkLmlkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKG1lbWJlcjogTWVtYmVyVGVhbVRocm91Z2gpID0+IHJldHJpZXZlVGVhbUxlYWRlck1lbWJlclN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IG1lbWJlcn0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlVGVhbUxlYWRlck1lbWJlckZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHVwZGF0ZVRlYW1MZWFkZXJNZW1iZXIkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZSh1cGRhdGVUZWFtTGVhZGVyTWVtYmVyQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IHt0ZWFtSWQ6IHN0cmluZywgaWQ6IHN0cmluZywgbWVtYmVyOiBNZW1iZXJUZWFtVGhyb3VnaH19KSA9PiB0aGlzLnRlYW1TZXJ2aWNlLnVwZGF0ZVRlYW1MZWFkZXJUZWFtTWVtYmVyKHBheWxvYWQudGVhbUlkLCBwYXlsb2FkLmlkLCBwYXlsb2FkLm1lbWJlcilcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChtZW1iZXI6IE1lbWJlclRlYW1UaHJvdWdoKSA9PiB1cGRhdGVUZWFtTGVhZGVyTWVtYmVyU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogbWVtYmVyfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YodXBkYXRlVGVhbUxlYWRlck1lbWJlckZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xufVxuIl19
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVhbS5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi9zdG9yZS9lZmZlY3RzL3RlYW0uZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUNMLDRCQUE0QixFQUM1QixtQ0FBbUMsRUFDbkMsbUNBQW1DLEVBQ25DLGlDQUFpQyxFQUNqQyx3Q0FBd0MsRUFDeEMsd0NBQXdDLEVBQ3hDLDZCQUE2QixFQUM3QixvQ0FBb0MsRUFDcEMsb0NBQW9DLEVBQ3BDLGtDQUFrQyxFQUNsQyx5Q0FBeUMsRUFDekMseUNBQXlDLEVBQ3pDLDZCQUE2QixFQUM3QixvQ0FBb0MsRUFDcEMsb0NBQW9DLEVBQ3BDLHFCQUFxQixFQUNyQiw0QkFBNEIsRUFDNUIsNEJBQTRCLEVBQzVCLGdDQUFnQyxFQUNoQyx1Q0FBdUMsRUFDdkMsdUNBQXVDLEVBQ3ZDLDJCQUEyQixFQUMzQixrQ0FBa0MsRUFDbEMsa0NBQWtDLEVBQ2xDLHFDQUFxQyxFQUNyQyw0Q0FBNEMsRUFDNUMsNENBQTRDLEVBQzVDLCtCQUErQixFQUMvQixzQ0FBc0MsRUFDdEMsc0NBQXNDLEVBQ3RDLGdDQUFnQyxFQUNoQyx1Q0FBdUMsRUFDdkMsdUNBQXVDLEVBQ3ZDLG1DQUFtQyxFQUNuQywwQ0FBMEMsRUFDMUMsMENBQTBDLEVBQzFDLDZCQUE2QixFQUM3QixvQ0FBb0MsRUFDcEMsb0NBQW9DLEVBQ3BDLDhCQUE4QixFQUM5QixxQ0FBcUMsRUFDckMscUNBQXFDLEVBQ3JDLDRCQUE0QixFQUM1QixtQ0FBbUMsRUFDbkMsbUNBQW1DLEVBQ3BDLE1BQU0sWUFBWSxDQUFDO0FBQ3BC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QyxDQUFDLENBQ3BHLENBQ0YsQ0FDRixDQUNGLENBQUM7S0FDSDsrR0FwT1ksV0FBVzttSEFBWCxXQUFXOzs0RkFBWCxXQUFXO2tCQUR2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb25zLCBjcmVhdGVFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHsgQWN0aXZpdHlFeHRyYU1lbWJlciwgQ29sbGVjdGlvbiwgTGVhZGVyQWN0aXZpdHksIE1lbWJlclRlYW0sIE1lbWJlclRlYW1UaHJvdWdoLCBTZWFyY2hUZWFtIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7XG4gIGRlbGV0ZVRlYW1MZWFkZXJNZW1iZXJBY3Rpb24sXG4gIGRlbGV0ZVRlYW1MZWFkZXJNZW1iZXJGYWlsdXJlQWN0aW9uLFxuICBkZWxldGVUZWFtTGVhZGVyTWVtYmVyU3VjY2Vzc0FjdGlvbixcbiAgbGlzdEdlbmVyYWxseUF2YWlsYWJsZVRlYW1zQWN0aW9uLFxuICBsaXN0R2VuZXJhbGx5QXZhaWxhYmxlVGVhbXNGYWlsdXJlQWN0aW9uLFxuICBsaXN0R2VuZXJhbGx5QXZhaWxhYmxlVGVhbXNTdWNjZXNzQWN0aW9uLFxuICBsaXN0TGVhZGVyTm90aWZpY2F0aW9uc0FjdGlvbixcbiAgbGlzdExlYWRlck5vdGlmaWNhdGlvbnNGYWlsdXJlQWN0aW9uLFxuICBsaXN0TGVhZGVyTm90aWZpY2F0aW9uc1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RNZW1iZXJMZWFkZXJFeHRyYU1lbWJlcnNBY3Rpb24sXG4gIGxpc3RNZW1iZXJMZWFkZXJFeHRyYU1lbWJlcnNGYWlsdXJlQWN0aW9uLFxuICBsaXN0TWVtYmVyTGVhZGVyRXh0cmFNZW1iZXJzU3VjY2Vzc0FjdGlvbixcbiAgbGlzdE1lbWJlckxlYWRlck1lbWJlcnNBY3Rpb24sXG4gIGxpc3RNZW1iZXJMZWFkZXJNZW1iZXJzRmFpbHVyZUFjdGlvbixcbiAgbGlzdE1lbWJlckxlYWRlck1lbWJlcnNTdWNjZXNzQWN0aW9uLFxuICBsaXN0TWVtYmVyVGVhbXNBY3Rpb24sXG4gIGxpc3RNZW1iZXJUZWFtc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RNZW1iZXJUZWFtc1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RUZWFtTGVhZGVyRXh0cmFNZW1iZXJzQWN0aW9uLFxuICBsaXN0VGVhbUxlYWRlckV4dHJhTWVtYmVyc0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RUZWFtTGVhZGVyRXh0cmFNZW1iZXJzU3VjY2Vzc0FjdGlvbixcbiAgbGlzdFRlYW1MZWFkZXJNZW1iZXJzQWN0aW9uLFxuICBsaXN0VGVhbUxlYWRlck1lbWJlcnNGYWlsdXJlQWN0aW9uLFxuICBsaXN0VGVhbUxlYWRlck1lbWJlcnNTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckxlYWRlckV4dHJhTWVtYmVyQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckxlYWRlckV4dHJhTWVtYmVyRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJMZWFkZXJFeHRyYU1lbWJlclN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyTGVhZGVyR3JvdXBBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyTGVhZGVyR3JvdXBGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckxlYWRlckdyb3VwU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJMZWFkZXJNZW1iZXJBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyTGVhZGVyTWVtYmVyRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJMZWFkZXJNZW1iZXJTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1MZWFkZXJFeHRyYU1lbWJlckFjdGlvbixcbiAgcmV0cmlldmVUZWFtTGVhZGVyRXh0cmFNZW1iZXJGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1MZWFkZXJFeHRyYU1lbWJlclN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUxlYWRlckdyb3VwQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1MZWFkZXJHcm91cEZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUxlYWRlckdyb3VwU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVUZWFtTGVhZGVyTWVtYmVyQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1MZWFkZXJNZW1iZXJGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1MZWFkZXJNZW1iZXJTdWNjZXNzQWN0aW9uLFxuICB1cGRhdGVUZWFtTGVhZGVyTWVtYmVyQWN0aW9uLFxuICB1cGRhdGVUZWFtTGVhZGVyTWVtYmVyRmFpbHVyZUFjdGlvbixcbiAgdXBkYXRlVGVhbUxlYWRlck1lbWJlclN1Y2Nlc3NBY3Rpb25cbn0gZnJvbSAnLi4vYWN0aW9ucyc7XG5pbXBvcnQgeyBleGhhdXN0TWFwLCBmb3JrSm9pbiwgbWVyZ2VNYXAsIG9mLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgRXh0cmFNZW1iZXJzTWl4aW4gfSBmcm9tICcuL21peGlucy9leHRyYS1tZW1iZXJzLW1peGluJztcbmltcG9ydCB7IExlYWRlck5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRlYW1FZmZlY3RzIGV4dGVuZHMgRXh0cmFNZW1iZXJzTWl4aW4ge1xuICBwcml2YXRlIGFjdGlvbnMkID0gaW5qZWN0KEFjdGlvbnMpO1xuICBwcml2YXRlIGxlYWRlck5vdGlmaWNhdGlvblNlcnZpY2UgPSBpbmplY3QoTGVhZGVyTm90aWZpY2F0aW9uU2VydmljZSk7XG5cbiAgZGVsZXRlVGVhbU1lbWJlciQgID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShkZWxldGVUZWFtTGVhZGVyTWVtYmVyQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IHt0ZWFtSWQ6IHN0cmluZywgaWQ6IHN0cmluZ319KSA9PiB0aGlzLnRlYW1TZXJ2aWNlLmRlbGV0ZVRlYW1MZWFkZXJUZWFtTWVtYmVyKHBheWxvYWQudGVhbUlkLCBwYXlsb2FkLmlkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgICAgIHJldHVybiBkZWxldGVUZWFtTGVhZGVyTWVtYmVyU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDoge3RlYW1JZDogcGF5bG9hZC50ZWFtSWQsIGlkOiBwYXlsb2FkLmlkfX0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGRlbGV0ZVRlYW1MZWFkZXJNZW1iZXJGYWlsdXJlQWN0aW9uKHtcbiAgICAgICAgICAgICAgICBwYXlsb2FkOiBuZXcgSHR0cEVycm9yUmVzcG9uc2Uoe3N0YXR1czogNDAwfSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGRlbGV0ZVRlYW1MZWFkZXJNZW1iZXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsaXN0R2VuZXJhbGx5QXZhaWxhYmxlVGVhbXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsaXN0R2VuZXJhbGx5QXZhaWxhYmxlVGVhbXNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDoge2NsdWJJZDogc3RyaW5nLCBtZW1iZXJJZHM/OiBBcnJheTxzdHJpbmc+fX0pID0+XG4gICAgICAgIHRoaXMudGVhbVNlcnZpY2UuZ2V0R2VuZXJhbGx5QXZhaWxhYmxlVGVhbXMocGF5bG9hZC5jbHViSWQsIHBheWxvYWQubWVtYmVySWRzID8/IFtdKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKCh0ZWFtczogQ29sbGVjdGlvbjxTZWFyY2hUZWFtPikgPT4gbGlzdEdlbmVyYWxseUF2YWlsYWJsZVRlYW1zU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogdGVhbXMudG9BcnJheSgpfSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihsaXN0R2VuZXJhbGx5QXZhaWxhYmxlVGVhbXNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIC8vIHN3aXRjaE1hcCAobm90IGV4aGF1c3RNYXApOiBvbiBhIGNvbnRleHQgc3dpdGNoIGEgcmVxdWVzdCBmb3IgdGhlIFBSRVZJT1VTIHRlYW1cbiAgLy8gY2FuIHN0aWxsIGJlIGluIGZsaWdodCB3aGVuIHRoZSBuZXcgdGVhbSdzIHJlcXVlc3QgaXMgZGlzcGF0Y2hlZCDigJQgdGhlIGxhdGVzdFxuICAvLyBkaXNwYXRjaCBtdXN0IHdpbiAoYW5kIGNhbmNlbCB0aGUgc3RhbGUgb25lKSwgb3IgdGhlIG5ldyBjb250ZXh0IHNob3dzIHRoZSBvbGRcbiAgLy8gdGVhbSdzIG5vdGlmaWNhdGlvbnMuXG4gIGxpc3RMZWFkZXJOb3RpZmljYXRpb25zJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUobGlzdExlYWRlck5vdGlmaWNhdGlvbnNBY3Rpb24pLFxuICAgICAgc3dpdGNoTWFwKCh7cGF5bG9hZH06IHtwYXlsb2FkOiBzdHJpbmd9KSA9PlxuICAgICAgICB0aGlzLmxlYWRlck5vdGlmaWNhdGlvblNlcnZpY2UuZ2V0TGVhZGVyTm90aWZpY2F0aW9ucyhwYXlsb2FkKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChhY3Rpdml0aWVzOiBDb2xsZWN0aW9uPExlYWRlckFjdGl2aXR5PikgPT4gbGlzdExlYWRlck5vdGlmaWNhdGlvbnNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBhY3Rpdml0aWVzLnRvQXJyYXkoKX0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdExlYWRlck5vdGlmaWNhdGlvbnNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGxpc3RNZW1iZXJUZWFtcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxpc3RNZW1iZXJUZWFtc0FjdGlvbiksXG4gICAgICBtZXJnZU1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDogQXJyYXk8c3RyaW5nPn0pID0+XG4gICAgICAgIGZvcmtKb2luKHBheWxvYWQubWFwKChpZDogc3RyaW5nKSA9PiB0aGlzLnRlYW1TZXJ2aWNlLmdldE1lbWJlclRlYW1zKGlkKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKCh0ZWFtczogQ29sbGVjdGlvbjxTZWFyY2hUZWFtPikgPT4gKHtpZCwgdGVhbXM6IHRlYW1zLnRvQXJyYXkoKX0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2Yoe2lkLCBlcnJvcn0pKVxuICAgICAgICAgIClcbiAgICAgICAgKSkucGlwZShcbiAgICAgICAgICBtZXJnZU1hcCgocmVzdWx0czogQXJyYXk8e2lkOiBzdHJpbmcsIGVycm9yPzogSHR0cEVycm9yUmVzcG9uc2UsIHRlYW1zPzogQXJyYXk8U2VhcmNoVGVhbT59PikgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0TWFwID0gbmV3IE1hcDxzdHJpbmcsIEFycmF5PFNlYXJjaFRlYW0+PigpO1xuICAgICAgICAgICAgY29uc3QgZXJyb3JzID0gcmVzdWx0cy5maWx0ZXIocmVzdWx0ID0+IHJlc3VsdC5lcnJvcik7XG4gICAgICAgICAgICBpZiAoZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgICByZXR1cm4gb2YobGlzdE1lbWJlclRlYW1zRmFpbHVyZUFjdGlvbih7IHBheWxvYWQ6IGVycm9yc1swXS5lcnJvciBhcyBIdHRwRXJyb3JSZXNwb25zZSB9KSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc3VsdHMuZm9yRWFjaChyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICBpZiAocmVzdWx0LnRlYW1zKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0TWFwLnNldChyZXN1bHQuaWQsIHJlc3VsdC50ZWFtcyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gb2YobGlzdE1lbWJlclRlYW1zU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogcmVzdWx0TWFwfSkpO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbGlzdE1lbWJlckxlYWRlckV4dHJhTWVtYmVycyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxpc3RNZW1iZXJMZWFkZXJFeHRyYU1lbWJlcnNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoeyBwYXlsb2FkIH06IHsgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBpZDogc3RyaW5nLCBxOiBzdHJpbmcgfSB9KSA9PlxuICAgICAgICB0aGlzLm1lbWJlckxlYWRlckdldEFsbEV4dHJhTWVtYmVycyhwYXlsb2FkLm1lbWJlcklkLCBwYXlsb2FkLmlkLCBwYXlsb2FkLnEpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGV4dHJhTWVtYmVyczogQXJyYXk8QWN0aXZpdHlFeHRyYU1lbWJlcj4pID0+IGxpc3RNZW1iZXJMZWFkZXJFeHRyYU1lbWJlcnNTdWNjZXNzQWN0aW9uKHsgcGF5bG9hZDogZXh0cmFNZW1iZXJzIH0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdE1lbWJlckxlYWRlckV4dHJhTWVtYmVyc0ZhaWx1cmVBY3Rpb24oeyBwYXlsb2FkOiBlcnJvciB9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsaXN0TWVtYmVyTGVhZGVyTWVtYmVycyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxpc3RNZW1iZXJMZWFkZXJNZW1iZXJzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IHttZW1iZXJJZDogc3RyaW5nLCBpZDogc3RyaW5nLCBxOiBzdHJpbmd9fSkgPT5cbiAgICAgICAgdGhpcy5tZW1iZXJMZWFkZXJHZXRhQWxsTWVtYmVycyhwYXlsb2FkLm1lbWJlcklkLCBwYXlsb2FkLmlkLCBwYXlsb2FkLnEpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKG1lbWJlcnM6IEFycmF5PE1lbWJlclRlYW1UaHJvdWdoPikgPT4gbGlzdE1lbWJlckxlYWRlck1lbWJlcnNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBtZW1iZXJzfSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihsaXN0TWVtYmVyTGVhZGVyTWVtYmVyc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbGlzdFRlYW1MZWFkZXJFeHRyYU1lbWJlcnMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsaXN0VGVhbUxlYWRlckV4dHJhTWVtYmVyc0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IHRlYW1JZDogc3RyaW5nLCBxOiBzdHJpbmcgfVxuICAgICAgICB9KSA9PiB0aGlzLnRlYW1MZWFkZXJHZXRBbGxFeHRyYU1lbWJlcnMocGF5bG9hZC50ZWFtSWQsIHBheWxvYWQucSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoZXh0cmFNZW1iZXJzOiBBcnJheTxBY3Rpdml0eUV4dHJhTWVtYmVyPikgPT4gbGlzdFRlYW1MZWFkZXJFeHRyYU1lbWJlcnNTdWNjZXNzQWN0aW9uKHtcbiAgICAgICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgICAgIHRlYW1JZDogcGF5bG9hZC50ZWFtSWQsXG4gICAgICAgICAgICAgICAgcmVzdWx0czogZXh0cmFNZW1iZXJzXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdFRlYW1MZWFkZXJFeHRyYU1lbWJlcnNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGxpc3RUZWFtTGVhZGVyTWVtYmVycyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxpc3RUZWFtTGVhZGVyTWVtYmVyc0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IHRlYW1JZDogc3RyaW5nLCBxOiBzdHJpbmcgfVxuICAgICAgICB9KSA9PiB0aGlzLnRlYW1MZWFkZXJHZXRBbGxNZW1iZXJzKHBheWxvYWQudGVhbUlkLCBwYXlsb2FkLnEpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKG1lbWJlcnM6IEFycmF5PE1lbWJlclRlYW1UaHJvdWdoPikgPT4gbGlzdFRlYW1MZWFkZXJNZW1iZXJzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogbWVtYmVyc30pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdFRlYW1MZWFkZXJNZW1iZXJzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZU1lbWJlckxlYWRlckdyb3VwJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVNZW1iZXJMZWFkZXJHcm91cEFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IG1lbWJlcklkOiBzdHJpbmcsIGlkOiBzdHJpbmcgfVxuICAgICAgICB9KSA9PiB0aGlzLnRlYW1TZXJ2aWNlLmdldE1lbWJlclRlYW0ocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5pZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoZ3JvdXA6IE1lbWJlclRlYW0pID0+IHJldHJpZXZlTWVtYmVyTGVhZGVyR3JvdXBTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBncm91cH0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVNZW1iZXJMZWFkZXJHcm91cEZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVNZW1iZXJMZWFkZXJFeHRyYU1lbWJlciQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlTWVtYmVyTGVhZGVyRXh0cmFNZW1iZXJBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDoge21lbWJlcklkOiBzdHJpbmcsIHRlYW1JZDogc3RyaW5nLCBpZDogc3RyaW5nfX0pID0+IHRoaXMudGVhbVNlcnZpY2UuZ2V0TWVtYmVyVGVhbUV4dHJhTWVtYmVyKHBheWxvYWQubWVtYmVySWQsIHBheWxvYWQudGVhbUlkLCBwYXlsb2FkLmlkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKG1lbWJlcjogQWN0aXZpdHlFeHRyYU1lbWJlcikgPT4gcmV0cmlldmVNZW1iZXJMZWFkZXJFeHRyYU1lbWJlclN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IG1lbWJlcn0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlTWVtYmVyTGVhZGVyRXh0cmFNZW1iZXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZU1lbWJlckxlYWRlck1lbWJlciQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlTWVtYmVyTGVhZGVyTWVtYmVyQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IHttZW1iZXJJZDogc3RyaW5nLCB0ZWFtSWQ6IHN0cmluZywgaWQ6IHN0cmluZ319KSA9PiB0aGlzLnRlYW1TZXJ2aWNlLmdldE1lbWJlclRlYW1NZW1iZXIocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC50ZWFtSWQsIHBheWxvYWQuaWQpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgobWVtYmVyOiBNZW1iZXJUZWFtVGhyb3VnaCkgPT4gcmV0cmlldmVNZW1iZXJMZWFkZXJNZW1iZXJTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBtZW1iZXJ9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZU1lbWJlckxlYWRlck1lbWJlckZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlVGVhbUxlYWRlckdyb3VwJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVUZWFtTGVhZGVyR3JvdXBBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7IHBheWxvYWQ6IHN0cmluZyB9KSA9PiB0aGlzLnRlYW1TZXJ2aWNlLmdldFRlYW1MZWFkZXJUZWFtKHBheWxvYWQpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoZ3JvdXA6IE1lbWJlclRlYW0pID0+IHJldHJpZXZlVGVhbUxlYWRlckdyb3VwU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogZ3JvdXB9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZVRlYW1MZWFkZXJHcm91cEZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlVGVhbUxlYWRlckV4dHJhTWVtYmVyJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVUZWFtTGVhZGVyRXh0cmFNZW1iZXJBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDoge3RlYW1JZDogc3RyaW5nLCBpZDogc3RyaW5nfX0pID0+IHRoaXMudGVhbVNlcnZpY2UuZ2V0VGVhbUxlYWRlclRlYW1FeHRyYU1lbWJlcihwYXlsb2FkLnRlYW1JZCwgcGF5bG9hZC5pZClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChtZW1iZXI6IEFjdGl2aXR5RXh0cmFNZW1iZXIpID0+IHJldHJpZXZlVGVhbUxlYWRlckV4dHJhTWVtYmVyU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogbWVtYmVyfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVUZWFtTGVhZGVyRXh0cmFNZW1iZXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZVRlYW1MZWFkZXJNZW1iZXIkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZVRlYW1MZWFkZXJNZW1iZXJBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDoge3RlYW1JZDogc3RyaW5nLCBpZDogc3RyaW5nfX0pID0+IHRoaXMudGVhbVNlcnZpY2UuZ2V0VGVhbUxlYWRlclRlYW1NZW1iZXIocGF5bG9hZC50ZWFtSWQsIHBheWxvYWQuaWQpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgobWVtYmVyOiBNZW1iZXJUZWFtVGhyb3VnaCkgPT4gcmV0cmlldmVUZWFtTGVhZGVyTWVtYmVyU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogbWVtYmVyfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVUZWFtTGVhZGVyTWVtYmVyRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgdXBkYXRlVGVhbUxlYWRlck1lbWJlciQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHVwZGF0ZVRlYW1MZWFkZXJNZW1iZXJBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDoge3RlYW1JZDogc3RyaW5nLCBpZDogc3RyaW5nLCBtZW1iZXI6IE1lbWJlclRlYW1UaHJvdWdofX0pID0+IHRoaXMudGVhbVNlcnZpY2UudXBkYXRlVGVhbUxlYWRlclRlYW1NZW1iZXIocGF5bG9hZC50ZWFtSWQsIHBheWxvYWQuaWQsIHBheWxvYWQubWVtYmVyKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKG1lbWJlcjogTWVtYmVyVGVhbVRocm91Z2gpID0+IHVwZGF0ZVRlYW1MZWFkZXJNZW1iZXJTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBtZW1iZXJ9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih1cGRhdGVUZWFtTGVhZGVyTWVtYmVyRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG59XG4iXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { inject, Injectable } from '@angular/core';
|
|
2
2
|
import { Actions, createEffect, ofType } from '@ngrx/effects';
|
|
3
|
-
import { AuthenticationService } from '../../authentication';
|
|
3
|
+
import { AuthenticationService } from '../../authentication/authentication.service';
|
|
4
4
|
import { STORAGE_TOKEN, StorageService } from '../../services';
|
|
5
5
|
import { clearAuthenticationAction, clearCurrentTokenAction, getCurrentTokenAction, getCurrentTokenSuccessAction, loginTokenAction, loginTokenFailureAction, loginTokenSuccessAction, loginWithSessionAction, loginWithSessionFailureAction, loginWithTokenAction, loginWithTokenFailureAction, memberLoginAction, memberLoginFailureAction, memberLoginSuccessAction, memberSendCodeAction, memberSendCodeFailureAction, memberSendCodeSuccessAction, reauthenticateTokenAction, reauthenticateTokenFailureAction, reauthenticateTokenSuccessAction, selectPublicMemberAction, selectPublicMemberFailureAction, selectPublicMemberSuccessAction, setCurrentTokenAction } from '../actions';
|
|
6
6
|
import { concat, EMPTY, exhaustMap, mergeMap, of, switchMap } from 'rxjs';
|
|
@@ -8,99 +8,101 @@ import { catchError, finalize, map } from 'rxjs/operators';
|
|
|
8
8
|
import { HttpErrorResponse } from '@angular/common/http';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
export class TokenEffects {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
clearCurrent$ = createEffect(() => this.actions$
|
|
16
|
-
.pipe(ofType(clearCurrentTokenAction), mergeMap(() => of(setCurrentTokenAction({ payload: null })))));
|
|
17
|
-
getCurrent$ = createEffect(() => this.actions$
|
|
18
|
-
.pipe(ofType(getCurrentTokenAction), exhaustMap(() => this.storageService.getAsObservable(STORAGE_TOKEN)
|
|
19
|
-
.pipe(map((token) => {
|
|
20
|
-
if (token) {
|
|
21
|
-
return setCurrentTokenAction({ payload: token });
|
|
22
|
-
}
|
|
23
|
-
return getCurrentTokenSuccessAction({ payload: null });
|
|
24
|
-
})))));
|
|
25
|
-
login$ = createEffect(() => this.actions$
|
|
26
|
-
.pipe(ofType(loginTokenAction), exhaustMap(({ payload }) => this.authenticationService.authenticateByCredentials(payload.username, payload.password, payload.totpCode)
|
|
27
|
-
.pipe(mergeMap((token) => [
|
|
28
|
-
loginTokenSuccessAction({ payload: token }),
|
|
29
|
-
setCurrentTokenAction({ payload: token }),
|
|
30
|
-
]), catchError((error) => of(loginTokenFailureAction({ payload: error }), clearCurrentTokenAction()))))));
|
|
31
|
-
loginWithToken$ = createEffect(() => this.actions$
|
|
32
|
-
.pipe(ofType(loginWithTokenAction), exhaustMap(({ payload }) => this.authenticationService.authenticateByToken(payload)
|
|
33
|
-
.pipe(mergeMap((token) => [
|
|
34
|
-
loginTokenSuccessAction({ payload: token }),
|
|
35
|
-
setCurrentTokenAction({ payload: token }),
|
|
36
|
-
]), catchError((error) => of(loginWithTokenFailureAction({ payload: error }), clearCurrentTokenAction()))))));
|
|
37
|
-
memberLogin$ = createEffect(() => this.actions$
|
|
38
|
-
.pipe(ofType(memberLoginAction), exhaustMap(({ payload }) => this.authenticationService.getPublicToken(payload.email, payload.code, payload.clubId)
|
|
39
|
-
.pipe(map((token) => memberLoginSuccessAction({ payload: token })), catchError((error) => of(memberLoginFailureAction({ payload: error })))))));
|
|
40
|
-
memberSendCode$ = createEffect(() => this.actions$
|
|
41
|
-
.pipe(ofType(memberSendCodeAction), exhaustMap(({ payload }) => this.authenticationService.getLoginCode(payload.email, payload.clubId)
|
|
42
|
-
.pipe(map((clubs) => memberSendCodeSuccessAction({ payload: clubs.toArray() })), catchError((error) => of(memberSendCodeFailureAction({ payload: error })))))));
|
|
43
|
-
reauthenticate$ = createEffect(() => this.actions$.pipe(ofType(reauthenticateTokenAction),
|
|
44
|
-
// `exhaustMap` ensures further token refresh attempts are ignored while one is in progress
|
|
45
|
-
exhaustMap(({ payload }) => this.authenticationService.reauthenticate(payload).pipe(exhaustMap((token) => {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.actions$ = inject(Actions);
|
|
13
|
+
this.authenticationService = inject(AuthenticationService);
|
|
14
|
+
this.storageService = inject(StorageService);
|
|
46
15
|
this.isProcessingFailure = false;
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
16
|
+
this.clearCurrent$ = createEffect(() => this.actions$
|
|
17
|
+
.pipe(ofType(clearCurrentTokenAction), mergeMap(() => of(setCurrentTokenAction({ payload: null })))));
|
|
18
|
+
this.getCurrent$ = createEffect(() => this.actions$
|
|
19
|
+
.pipe(ofType(getCurrentTokenAction), exhaustMap(() => this.storageService.getAsObservable(STORAGE_TOKEN)
|
|
20
|
+
.pipe(map((token) => {
|
|
21
|
+
if (token) {
|
|
22
|
+
return setCurrentTokenAction({ payload: token });
|
|
23
|
+
}
|
|
24
|
+
return getCurrentTokenSuccessAction({ payload: null });
|
|
25
|
+
})))));
|
|
26
|
+
this.login$ = createEffect(() => this.actions$
|
|
27
|
+
.pipe(ofType(loginTokenAction), exhaustMap(({ payload }) => this.authenticationService.authenticateByCredentials(payload.username, payload.password, payload.totpCode)
|
|
28
|
+
.pipe(mergeMap((token) => [
|
|
29
|
+
loginTokenSuccessAction({ payload: token }),
|
|
30
|
+
setCurrentTokenAction({ payload: token }),
|
|
31
|
+
]), catchError((error) => of(loginTokenFailureAction({ payload: error }), clearCurrentTokenAction()))))));
|
|
32
|
+
this.loginWithToken$ = createEffect(() => this.actions$
|
|
33
|
+
.pipe(ofType(loginWithTokenAction), exhaustMap(({ payload }) => this.authenticationService.authenticateByToken(payload)
|
|
34
|
+
.pipe(mergeMap((token) => [
|
|
35
|
+
loginTokenSuccessAction({ payload: token }),
|
|
36
|
+
setCurrentTokenAction({ payload: token }),
|
|
37
|
+
]), catchError((error) => of(loginWithTokenFailureAction({ payload: error }), clearCurrentTokenAction()))))));
|
|
38
|
+
this.memberLogin$ = createEffect(() => this.actions$
|
|
39
|
+
.pipe(ofType(memberLoginAction), exhaustMap(({ payload }) => this.authenticationService.getPublicToken(payload.email, payload.code, payload.clubId)
|
|
40
|
+
.pipe(map((token) => memberLoginSuccessAction({ payload: token })), catchError((error) => of(memberLoginFailureAction({ payload: error })))))));
|
|
41
|
+
this.memberSendCode$ = createEffect(() => this.actions$
|
|
42
|
+
.pipe(ofType(memberSendCodeAction), exhaustMap(({ payload }) => this.authenticationService.getLoginCode(payload.email, payload.clubId)
|
|
43
|
+
.pipe(map((clubs) => memberSendCodeSuccessAction({ payload: clubs.toArray() })), catchError((error) => of(memberSendCodeFailureAction({ payload: error })))))));
|
|
44
|
+
this.reauthenticate$ = createEffect(() => this.actions$.pipe(ofType(reauthenticateTokenAction),
|
|
45
|
+
// `exhaustMap` ensures further token refresh attempts are ignored while one is in progress
|
|
46
|
+
exhaustMap(({ payload }) => this.authenticationService.reauthenticate(payload).pipe(exhaustMap((token) => {
|
|
47
|
+
this.isProcessingFailure = false;
|
|
48
|
+
if (!token) {
|
|
49
|
+
return [
|
|
50
|
+
reauthenticateTokenFailureAction({ payload: new HttpErrorResponse({ status: 400 }) }),
|
|
51
|
+
clearCurrentTokenAction(),
|
|
52
|
+
clearAuthenticationAction()
|
|
53
|
+
];
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
return [
|
|
57
|
+
loginTokenSuccessAction({ payload: token }),
|
|
58
|
+
setCurrentTokenAction({ payload: token }),
|
|
59
|
+
reauthenticateTokenSuccessAction({ payload: token })
|
|
60
|
+
];
|
|
61
|
+
}
|
|
62
|
+
}), catchError((error) => {
|
|
63
|
+
if (this.isProcessingFailure) {
|
|
64
|
+
return EMPTY;
|
|
65
|
+
}
|
|
66
|
+
this.isProcessingFailure = true;
|
|
67
|
+
return concat([
|
|
68
|
+
reauthenticateTokenFailureAction({ payload: error }),
|
|
50
69
|
clearCurrentTokenAction(),
|
|
51
70
|
clearAuthenticationAction()
|
|
52
|
-
]
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
.
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
return of(loginWithSessionFailureAction({
|
|
88
|
-
payload: new HttpErrorResponse({
|
|
89
|
-
status: 400
|
|
90
|
-
})
|
|
91
|
-
}), clearCurrentTokenAction());
|
|
92
|
-
}
|
|
93
|
-
}), catchError((error) => of(loginWithSessionFailureAction({ payload: error })))))));
|
|
94
|
-
setCurrent$ = createEffect(() => this.actions$
|
|
95
|
-
.pipe(ofType(setCurrentTokenAction), switchMap(({ payload }) => this.storageService.setAsObservable(STORAGE_TOKEN, payload)
|
|
96
|
-
.pipe(map((token) => {
|
|
97
|
-
this.authenticationService.setToken(token);
|
|
98
|
-
return getCurrentTokenSuccessAction({ payload: token });
|
|
99
|
-
})))));
|
|
100
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: TokenEffects, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
101
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: TokenEffects });
|
|
71
|
+
]).pipe(finalize(() => {
|
|
72
|
+
this.isProcessingFailure = false;
|
|
73
|
+
}));
|
|
74
|
+
})))));
|
|
75
|
+
this.selectPublicMember$ = createEffect(() => this.actions$
|
|
76
|
+
.pipe(ofType(selectPublicMemberAction), exhaustMap(({ payload }) => this.authenticationService.changePublicToken(payload)
|
|
77
|
+
.pipe(map((token) => selectPublicMemberSuccessAction({ payload: token })), catchError((error) => of(selectPublicMemberFailureAction({ payload: error })))))));
|
|
78
|
+
this.sessionToken$ = createEffect(() => this.actions$
|
|
79
|
+
.pipe(ofType(loginWithSessionAction), exhaustMap(() => this.authenticationService.getSessionToken()
|
|
80
|
+
.pipe(mergeMap((token) => {
|
|
81
|
+
if (token) {
|
|
82
|
+
return [
|
|
83
|
+
loginTokenSuccessAction({ payload: token }),
|
|
84
|
+
setCurrentTokenAction({ payload: token }),
|
|
85
|
+
];
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
return of(loginWithSessionFailureAction({
|
|
89
|
+
payload: new HttpErrorResponse({
|
|
90
|
+
status: 400
|
|
91
|
+
})
|
|
92
|
+
}), clearCurrentTokenAction());
|
|
93
|
+
}
|
|
94
|
+
}), catchError((error) => of(loginWithSessionFailureAction({ payload: error })))))));
|
|
95
|
+
this.setCurrent$ = createEffect(() => this.actions$
|
|
96
|
+
.pipe(ofType(setCurrentTokenAction), switchMap(({ payload }) => this.storageService.setAsObservable(STORAGE_TOKEN, payload)
|
|
97
|
+
.pipe(map((token) => {
|
|
98
|
+
this.authenticationService.setToken(token);
|
|
99
|
+
return getCurrentTokenSuccessAction({ payload: token });
|
|
100
|
+
})))));
|
|
101
|
+
}
|
|
102
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TokenEffects, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
103
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TokenEffects }); }
|
|
102
104
|
}
|
|
103
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
105
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TokenEffects, decorators: [{
|
|
104
106
|
type: Injectable
|
|
105
107
|
}] });
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uZWZmZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtYWNjZXNzL3NyYy9saWIvc3RvcmUvZWZmZWN0cy90b2tlbi5lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9ELE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQiw0QkFBNEIsRUFDNUIsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDdkIsc0JBQXNCLEVBQ3RCLDZCQUE2QixFQUM3QixvQkFBb0IsRUFDcEIsMkJBQTJCLEVBQzNCLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUNwQiwyQkFBMkIsRUFDM0IsMkJBQTJCLEVBQzNCLHlCQUF5QixFQUN6QixnQ0FBZ0MsRUFDaEMsZ0NBQWdDLEVBQ2hDLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0IsK0JBQStCLEVBQy9CLHFCQUFxQixFQUN0QixNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBSXpELE1BQU0sT0FBTyxZQUFZO0lBQ2YsUUFBUSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQixxQkFBcUIsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUN0RCxjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3hDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztJQUVwQyxhQUFhLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRO1NBQzdDLElBQUksQ0FDSCxNQUFNLENBQUMsdUJBQXVCLENBQUMsRUFDL0IsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDM0QsQ0FDRixDQUFDO0lBRUYsV0FBVyxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUTtTQUMzQyxJQUFJLENBQ0gsTUFBTSxDQUFDLHFCQUFxQixDQUFDLEVBQzdCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUM7U0FDaEUsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLEtBQVksRUFBRSxFQUFFO1FBQ25CLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixPQUFPLHFCQUFxQixDQUFDLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUNELE9BQU8sNEJBQTRCLENBQUMsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQTtJQUN0RCxDQUFDLENBQUMsQ0FDSCxDQUNGLENBQ0YsQ0FDRixDQUFDO0lBRUYsTUFBTSxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUTtTQUN0QyxJQUFJLENBQ0gsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEVBQ3hCLFVBQVUsQ0FBQyxDQUFDLEVBQUMsT0FBTyxFQUVqQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUM7U0FDN0csSUFBSSxDQUNILFFBQVEsQ0FBQyxDQUFDLEtBQVksRUFBRSxFQUFFLENBQUM7UUFDekIsdUJBQXVCLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUM7UUFDekMscUJBQXFCLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUM7S0FDeEMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FDekMsdUJBQXVCLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsRUFDekMsdUJBQXVCLEVBQUUsQ0FDMUIsQ0FBQyxDQUNILENBQ0osQ0FDRixDQUNGLENBQUM7SUFFRixlQUFlLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRO1NBQy9DLElBQUksQ0FDSCxNQUFNLENBQUMsb0JBQW9CLENBQUMsRUFDNUIsVUFBVSxDQUFDLENBQUMsRUFBQyxPQUFPLEVBQXNCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUM7U0FDbkcsSUFBSSxDQUNILFFBQVEsQ0FBQyxDQUFDLEtBQVksRUFBRSxFQUFFLENBQUM7UUFDekIsdUJBQXVCLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUM7UUFDekMscUJBQXFCLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUM7S0FDeEMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FDekMsMkJBQTJCLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsRUFDN0MsdUJBQXVC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amVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9hdXRoZW50aWNhdGlvbic7XG5pbXBvcnQgeyBTVE9SQUdFX1RPS0VOLCBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7XG4gIGNsZWFyQXV0aGVudGljYXRpb25BY3Rpb24sXG4gIGNsZWFyQ3VycmVudFRva2VuQWN0aW9uLFxuICBnZXRDdXJyZW50VG9rZW5BY3Rpb24sXG4gIGdldEN1cnJlbnRUb2tlblN1Y2Nlc3NBY3Rpb24sXG4gIGxvZ2luVG9rZW5BY3Rpb24sXG4gIGxvZ2luVG9rZW5GYWlsdXJlQWN0aW9uLFxuICBsb2dpblRva2VuU3VjY2Vzc0FjdGlvbixcbiAgbG9naW5XaXRoU2Vzc2lvbkFjdGlvbixcbiAgbG9naW5XaXRoU2Vzc2lvbkZhaWx1cmVBY3Rpb24sXG4gIGxvZ2luV2l0aFRva2VuQWN0aW9uLFxuICBsb2dpbldpdGhUb2tlbkZhaWx1cmVBY3Rpb24sXG4gIG1lbWJlckxvZ2luQWN0aW9uLFxuICBtZW1iZXJMb2dpbkZhaWx1cmVBY3Rpb24sXG4gIG1lbWJlckxvZ2luU3VjY2Vzc0FjdGlvbixcbiAgbWVtYmVyU2VuZENvZGVBY3Rpb24sXG4gIG1lbWJlclNlbmRDb2RlRmFpbHVyZUFjdGlvbixcbiAgbWVtYmVyU2VuZENvZGVTdWNjZXNzQWN0aW9uLFxuICByZWF1dGhlbnRpY2F0ZVRva2VuQWN0aW9uLFxuICByZWF1dGhlbnRpY2F0ZVRva2VuRmFpbHVyZUFjdGlvbixcbiAgcmVhdXRoZW50aWNhdGVUb2tlblN1Y2Nlc3NBY3Rpb24sXG4gIHNlbGVjdFB1YmxpY01lbWJlckFjdGlvbixcbiAgc2VsZWN0UHVibGljTWVtYmVyRmFpbHVyZUFjdGlvbixcbiAgc2VsZWN0UHVibGljTWVtYmVyU3VjY2Vzc0FjdGlvbixcbiAgc2V0Q3VycmVudFRva2VuQWN0aW9uXG59IGZyb20gJy4uL2FjdGlvbnMnO1xuaW1wb3J0IHsgY29uY2F0LCBFTVBUWSwgZXhoYXVzdE1hcCwgbWVyZ2VNYXAsIG9mLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbGxlY3Rpb24sIFB1YmxpY0F1dGhlbnRpY2F0aW9uLCBTZWFyY2hDbHViLCBUb2tlbiB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaW5hbGl6ZSwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBHcmFudFR5cGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUb2tlbkVmZmVjdHMge1xuICBwcml2YXRlIGFjdGlvbnMkID0gaW5qZWN0KEFjdGlvbnMpO1xuICBwcml2YXRlIGF1dGhlbnRpY2F0aW9uU2VydmljZSA9IGluamVjdChBdXRoZW50aWNhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlID0gaW5qZWN0KFN0b3JhZ2VTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBpc1Byb2Nlc3NpbmdGYWlsdXJlID0gZmFsc2U7XG5cbiAgY2xlYXJDdXJyZW50JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoY2xlYXJDdXJyZW50VG9rZW5BY3Rpb24pLFxuICAgICAgbWVyZ2VNYXAoKCkgPT4gb2Yoc2V0Q3VycmVudFRva2VuQWN0aW9uKHtwYXlsb2FkOiBudWxsfSkpKVxuICAgIClcbiAgKTtcblxuICBnZXRDdXJyZW50JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoZ2V0Q3VycmVudFRva2VuQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRBc09ic2VydmFibGUoU1RPUkFHRV9UT0tFTilcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKCh0b2tlbjogVG9rZW4pID0+IHtcbiAgICAgICAgICAgIGlmICh0b2tlbikge1xuICAgICAgICAgICAgICByZXR1cm4gc2V0Q3VycmVudFRva2VuQWN0aW9uKHtwYXlsb2FkOiB0b2tlbn0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGdldEN1cnJlbnRUb2tlblN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IG51bGx9KVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbG9naW4kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsb2dpblRva2VuQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgdXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgdG90cENvZGU/OiBzdHJpbmcgfVxuICAgICAgICB9KSA9PiB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5hdXRoZW50aWNhdGVCeUNyZWRlbnRpYWxzKHBheWxvYWQudXNlcm5hbWUsIHBheWxvYWQucGFzc3dvcmQsIHBheWxvYWQudG90cENvZGUpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtZXJnZU1hcCgodG9rZW46IFRva2VuKSA9PiBbXG4gICAgICAgICAgICAgIGxvZ2luVG9rZW5TdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiB0b2tlbn0pLFxuICAgICAgICAgICAgICBzZXRDdXJyZW50VG9rZW5BY3Rpb24oe3BheWxvYWQ6IHRva2VufSksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoXG4gICAgICAgICAgICAgIGxvZ2luVG9rZW5GYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pLFxuICAgICAgICAgICAgICBjbGVhckN1cnJlbnRUb2tlbkFjdGlvbigpXG4gICAgICAgICAgICApKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbG9naW5XaXRoVG9rZW4kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsb2dpbldpdGhUb2tlbkFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHsgcGF5bG9hZDogc3RyaW5nIH0pID0+IHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmF1dGhlbnRpY2F0ZUJ5VG9rZW4ocGF5bG9hZClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKHRva2VuOiBUb2tlbikgPT4gW1xuICAgICAgICAgICAgbG9naW5Ub2tlblN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHRva2VufSksXG4gICAgICAgICAgICBzZXRDdXJyZW50VG9rZW5BY3Rpb24oe3BheWxvYWQ6IHRva2VufSksXG4gICAgICAgICAgXSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihcbiAgICAgICAgICAgIGxvZ2luV2l0aFRva2VuRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSxcbiAgICAgICAgICAgIGNsZWFyQ3VycmVudFRva2VuQWN0aW9uKClcbiAgICAgICAgICApKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIG1lbWJlckxvZ2luJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUobWVtYmVyTG9naW5BY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDoge2VtYWlsOiBzdHJpbmcsIGNsdWJJZDogc3RyaW5nLCBjb2RlOiBzdHJpbmd9fSkgPT4gdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuZ2V0UHVibGljVG9rZW4ocGF5bG9hZC5lbWFpbCwgcGF5bG9hZC5jb2RlLCBwYXlsb2FkLmNsdWJJZClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKCh0b2tlbjogUHVibGljQXV0aGVudGljYXRpb24pID0+IG1lbWJlckxvZ2luU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogdG9rZW59KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihtZW1iZXJMb2dpbkZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIG1lbWJlclNlbmRDb2RlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUobWVtYmVyU2VuZENvZGVBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDoge2VtYWlsOiBzdHJpbmcsIGNsdWJJZDogc3RyaW5nIHwgbnVsbH19KSA9PiB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5nZXRMb2dpbkNvZGUocGF5bG9hZC5lbWFpbCwgcGF5bG9hZC5jbHViSWQpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoY2x1YnM6IENvbGxlY3Rpb248U2VhcmNoQ2x1Yj4pID0+IG1lbWJlclNlbmRDb2RlU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY2x1YnMudG9BcnJheSgpfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobWVtYmVyU2VuZENvZGVGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZWF1dGhlbnRpY2F0ZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUocmVhdXRoZW50aWNhdGVUb2tlbkFjdGlvbiksXG4gICAgICAvLyBgZXhoYXVzdE1hcGAgZW5zdXJlcyBmdXJ0aGVyIHRva2VuIHJlZnJlc2ggYXR0ZW1wdHMgYXJlIGlnbm9yZWQgd2hpbGUgb25lIGlzIGluIHByb2dyZXNzXG4gICAgICBleGhhdXN0TWFwKCh7IHBheWxvYWQgfTogeyBwYXlsb2FkOiBHcmFudFR5cGUgfCBudWxsIH0pID0+XG4gICAgICAgIHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLnJlYXV0aGVudGljYXRlKHBheWxvYWQpLnBpcGUoXG4gICAgICAgICAgZXhoYXVzdE1hcCgodG9rZW46IFRva2VuIHwgbnVsbCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc1Byb2Nlc3NpbmdGYWlsdXJlID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmICghdG9rZW4pIHtcbiAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICByZWF1dGhlbnRpY2F0ZVRva2VuRmFpbHVyZUFjdGlvbih7IHBheWxvYWQ6IG5ldyBIdHRwRXJyb3JSZXNwb25zZSh7IHN0YXR1czogNDAwIH0pIH0pLFxuICAgICAgICAgICAgICAgIGNsZWFyQ3VycmVudFRva2VuQWN0aW9uKCksXG4gICAgICAgICAgICAgICAgY2xlYXJBdXRoZW50aWNhdGlvbkFjdGlvbigpXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgbG9naW5Ub2tlblN1Y2Nlc3NBY3Rpb24oeyBwYXlsb2FkOiB0b2tlbiB9KSxcbiAgICAgICAgICAgICAgICBzZXRDdXJyZW50VG9rZW5BY3Rpb24oeyBwYXlsb2FkOiB0b2tlbiB9KSxcbiAgICAgICAgICAgICAgICByZWF1dGhlbnRpY2F0ZVRva2VuU3VjY2Vzc0FjdGlvbih7IHBheWxvYWQ6IHRva2VuIH0pXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzUHJvY2Vzc2luZ0ZhaWx1cmUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pc1Byb2Nlc3NpbmdGYWlsdXJlID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiBjb25jYXQoW1xuICAgICAgICAgICAgICByZWF1dGhlbnRpY2F0ZVRva2VuRmFpbHVyZUFjdGlvbih7IHBheWxvYWQ6IGVycm9yIH0pLFxuICAgICAgICAgICAgICBjbGVhckN1cnJlbnRUb2tlbkFjdGlvbigpLFxuICAgICAgICAgICAgICBjbGVhckF1dGhlbnRpY2F0aW9uQWN0aW9uKClcbiAgICAgICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzUHJvY2Vzc2luZ0ZhaWx1cmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBzZWxlY3RQdWJsaWNNZW1iZXIkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShzZWxlY3RQdWJsaWNNZW1iZXJBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDogc3RyaW5nfSkgPT4gdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuY2hhbmdlUHVibGljVG9rZW4ocGF5bG9hZClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKCh0b2tlbjogUHVibGljQXV0aGVudGljYXRpb24pID0+IHNlbGVjdFB1YmxpY01lbWJlclN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHRva2VufSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2Yoc2VsZWN0UHVibGljTWVtYmVyRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgc2Vzc2lvblRva2VuJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUobG9naW5XaXRoU2Vzc2lvbkFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmdldFNlc3Npb25Ub2tlbigpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKCh0b2tlbjogVG9rZW4gfCBudWxsKSA9PiB7XG4gICAgICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICBsb2dpblRva2VuU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogdG9rZW59KSxcbiAgICAgICAgICAgICAgICBzZXRDdXJyZW50VG9rZW5BY3Rpb24oe3BheWxvYWQ6IHRva2VufSksXG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gb2YoXG4gICAgICAgICAgICAgICAgbG9naW5XaXRoU2Vzc2lvbkZhaWx1cmVBY3Rpb24oe1xuICAgICAgICAgICAgICAgICAgcGF5bG9hZDogbmV3IEh0dHBFcnJvclJlc3BvbnNlKFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiA0MDBcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNsZWFyQ3VycmVudFRva2VuQWN0aW9uKClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxvZ2luV2l0aFNlc3Npb25GYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBzZXRDdXJyZW50JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoc2V0Q3VycmVudFRva2VuQWN0aW9uKSxcbiAgICAgIHN3aXRjaE1hcCgoe3BheWxvYWR9OiB7IHBheWxvYWQ6IFRva2VuIHwgbnVsbCB9KSA9PiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldEFzT2JzZXJ2YWJsZShTVE9SQUdFX1RPS0VOLCBwYXlsb2FkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHRva2VuOiBUb2tlbikgPT4ge1xuICAgICAgICAgICAgdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2Uuc2V0VG9rZW4odG9rZW4pO1xuICAgICAgICAgICAgcmV0dXJuIGdldEN1cnJlbnRUb2tlblN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHRva2VufSlcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xufVxuIl19
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uZWZmZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtYWNjZXNzL3NyYy9saWIvc3RvcmUvZWZmZWN0cy90b2tlbi5lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNwRixPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9ELE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQiw0QkFBNEIsRUFDNUIsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDdkIsc0JBQXNCLEVBQ3RCLDZCQUE2QixFQUM3QixvQkFBb0IsRUFDcEIsMkJBQTJCLEVBQzNCLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUNwQiwyQkFBMkIsRUFDM0IsMkJBQTJCLEVBQzNCLHlCQUF5QixFQUN6QixnQ0FBZ0MsRUFDaEMsZ0NBQWdDLEVBQ2hDLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0IsK0JBQStCLEVBQy9CLHFCQUFxQixFQUN0QixNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixF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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9hdXRoZW50aWNhdGlvbi9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFNUT1JBR0VfVE9LRU4sIFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtcbiAgY2xlYXJBdXRoZW50aWNhdGlvbkFjdGlvbixcbiAgY2xlYXJDdXJyZW50VG9rZW5BY3Rpb24sXG4gIGdldEN1cnJlbnRUb2tlbkFjdGlvbixcbiAgZ2V0Q3VycmVudFRva2VuU3VjY2Vzc0FjdGlvbixcbiAgbG9naW5Ub2tlbkFjdGlvbixcbiAgbG9naW5Ub2tlbkZhaWx1cmVBY3Rpb24sXG4gIGxvZ2luVG9rZW5TdWNjZXNzQWN0aW9uLFxuICBsb2dpbldpdGhTZXNzaW9uQWN0aW9uLFxuICBsb2dpbldpdGhTZXNzaW9uRmFpbHVyZUFjdGlvbixcbiAgbG9naW5XaXRoVG9rZW5BY3Rpb24sXG4gIGxvZ2luV2l0aFRva2VuRmFpbHVyZUFjdGlvbixcbiAgbWVtYmVyTG9naW5BY3Rpb24sXG4gIG1lbWJlckxvZ2luRmFpbHVyZUFjdGlvbixcbiAgbWVtYmVyTG9naW5TdWNjZXNzQWN0aW9uLFxuICBtZW1iZXJTZW5kQ29kZUFjdGlvbixcbiAgbWVtYmVyU2VuZENvZGVGYWlsdXJlQWN0aW9uLFxuICBtZW1iZXJTZW5kQ29kZVN1Y2Nlc3NBY3Rpb24sXG4gIHJlYXV0aGVudGljYXRlVG9rZW5BY3Rpb24sXG4gIHJlYXV0aGVudGljYXRlVG9rZW5GYWlsdXJlQWN0aW9uLFxuICByZWF1dGhlbnRpY2F0ZVRva2VuU3VjY2Vzc0FjdGlvbixcbiAgc2VsZWN0UHVibGljTWVtYmVyQWN0aW9uLFxuICBzZWxlY3RQdWJsaWNNZW1iZXJGYWlsdXJlQWN0aW9uLFxuICBzZWxlY3RQdWJsaWNNZW1iZXJTdWNjZXNzQWN0aW9uLFxuICBzZXRDdXJyZW50VG9rZW5BY3Rpb25cbn0gZnJvbSAnLi4vYWN0aW9ucyc7XG5pbXBvcnQgeyBjb25jYXQsIEVNUFRZLCBleGhhdXN0TWFwLCBtZXJnZU1hcCwgb2YsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbiwgUHVibGljQXV0aGVudGljYXRpb24sIFNlYXJjaENsdWIsIFRva2VuIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbmFsaXplLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEdyYW50VHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRva2VuRWZmZWN0cyB7XG4gIHByaXZhdGUgYWN0aW9ucyQgPSBpbmplY3QoQWN0aW9ucyk7XG4gIHByaXZhdGUgYXV0aGVudGljYXRpb25TZXJ2aWNlID0gaW5qZWN0KEF1dGhlbnRpY2F0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgc3RvcmFnZVNlcnZpY2UgPSBpbmplY3QoU3RvcmFnZVNlcnZpY2UpO1xuICBwcml2YXRlIGlzUHJvY2Vzc2luZ0ZhaWx1cmUgPSBmYWxzZTtcblxuICBjbGVhckN1cnJlbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShjbGVhckN1cnJlbnRUb2tlbkFjdGlvbiksXG4gICAgICBtZXJnZU1hcCgoKSA9PiBvZihzZXRDdXJyZW50VG9rZW5BY3Rpb24oe3BheWxvYWQ6IG51bGx9KSkpXG4gICAgKVxuICApO1xuXG4gIGdldEN1cnJlbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShnZXRDdXJyZW50VG9rZW5BY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEFzT2JzZXJ2YWJsZShTVE9SQUdFX1RPS0VOKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHRva2VuOiBUb2tlbikgPT4ge1xuICAgICAgICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgICAgICAgIHJldHVybiBzZXRDdXJyZW50VG9rZW5BY3Rpb24oe3BheWxvYWQ6IHRva2VufSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZ2V0Q3VycmVudFRva2VuU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogbnVsbH0pXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsb2dpbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxvZ2luVG9rZW5BY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nLCB0b3RwQ29kZT86IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmF1dGhlbnRpY2F0ZUJ5Q3JlZGVudGlhbHMocGF5bG9hZC51c2VybmFtZSwgcGF5bG9hZC5wYXNzd29yZCwgcGF5bG9hZC50b3RwQ29kZSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1lcmdlTWFwKCh0b2tlbjogVG9rZW4pID0+IFtcbiAgICAgICAgICAgICAgbG9naW5Ub2tlblN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHRva2VufSksXG4gICAgICAgICAgICAgIHNldEN1cnJlbnRUb2tlbkFjdGlvbih7cGF5bG9hZDogdG9rZW59KSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihcbiAgICAgICAgICAgICAgbG9naW5Ub2tlbkZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSksXG4gICAgICAgICAgICAgIGNsZWFyQ3VycmVudFRva2VuQWN0aW9uKClcbiAgICAgICAgICAgICkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsb2dpbldpdGhUb2tlbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxvZ2luV2l0aFRva2VuQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfTogeyBwYXlsb2FkOiBzdHJpbmcgfSkgPT4gdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuYXV0aGVudGljYXRlQnlUb2tlbihwYXlsb2FkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtZXJnZU1hcCgodG9rZW46IFRva2VuKSA9PiBbXG4gICAgICAgICAgICBsb2dpblRva2VuU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogdG9rZW59KSxcbiAgICAgICAgICAgIHNldEN1cnJlbnRUb2tlbkFjdGlvbih7cGF5bG9hZDogdG9rZW59KSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKFxuICAgICAgICAgICAgbG9naW5XaXRoVG9rZW5GYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pLFxuICAgICAgICAgICAgY2xlYXJDdXJyZW50VG9rZW5BY3Rpb24oKVxuICAgICAgICAgICkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbWVtYmVyTG9naW4kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShtZW1iZXJMb2dpbkFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtwYXlsb2FkOiB7ZW1haWw6IHN0cmluZywgY2x1YklkOiBzdHJpbmcsIGNvZGU6IHN0cmluZ319KSA9PiB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5nZXRQdWJsaWNUb2tlbihwYXlsb2FkLmVtYWlsLCBwYXlsb2FkLmNvZGUsIHBheWxvYWQuY2x1YklkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHRva2VuOiBQdWJsaWNBdXRoZW50aWNhdGlvbikgPT4gbWVtYmVyTG9naW5TdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiB0b2tlbn0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKG1lbWJlckxvZ2luRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbWVtYmVyU2VuZENvZGUkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShtZW1iZXJTZW5kQ29kZUFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtwYXlsb2FkOiB7ZW1haWw6IHN0cmluZywgY2x1YklkOiBzdHJpbmcgfCBudWxsfX0pID0+IHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmdldExvZ2luQ29kZShwYXlsb2FkLmVtYWlsLCBwYXlsb2FkLmNsdWJJZClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChjbHViczogQ29sbGVjdGlvbjxTZWFyY2hDbHViPikgPT4gbWVtYmVyU2VuZENvZGVTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBjbHVicy50b0FycmF5KCl9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihtZW1iZXJTZW5kQ29kZUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJlYXV0aGVudGljYXRlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShyZWF1dGhlbnRpY2F0ZVRva2VuQWN0aW9uKSxcbiAgICAgIC8vIGBleGhhdXN0TWFwYCBlbnN1cmVzIGZ1cnRoZXIgdG9rZW4gcmVmcmVzaCBhdHRlbXB0cyBhcmUgaWdub3JlZCB3aGlsZSBvbmUgaXMgaW4gcHJvZ3Jlc3NcbiAgICAgIGV4aGF1c3RNYXAoKHsgcGF5bG9hZCB9OiB7IHBheWxvYWQ6IEdyYW50VHlwZSB8IG51bGwgfSkgPT5cbiAgICAgICAgdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UucmVhdXRoZW50aWNhdGUocGF5bG9hZCkucGlwZShcbiAgICAgICAgICBleGhhdXN0TWFwKCh0b2tlbjogVG9rZW4gfCBudWxsKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzUHJvY2Vzc2luZ0ZhaWx1cmUgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKCF0b2tlbikge1xuICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIHJlYXV0aGVudGljYXRlVG9rZW5GYWlsdXJlQWN0aW9uKHsgcGF5bG9hZDogbmV3IEh0dHBFcnJvclJlc3BvbnNlKHsgc3RhdHVzOiA0MDAgfSkgfSksXG4gICAgICAgICAgICAgICAgY2xlYXJDdXJyZW50VG9rZW5BY3Rpb24oKSxcbiAgICAgICAgICAgICAgICBjbGVhckF1dGhlbnRpY2F0aW9uQWN0aW9uKClcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICBsb2dpblRva2VuU3VjY2Vzc0FjdGlvbih7IHBheWxvYWQ6IHRva2VuIH0pLFxuICAgICAgICAgICAgICAgIHNldEN1cnJlbnRUb2tlbkFjdGlvbih7IHBheWxvYWQ6IHRva2VuIH0pLFxuICAgICAgICAgICAgICAgIHJlYXV0aGVudGljYXRlVG9rZW5TdWNjZXNzQWN0aW9uKHsgcGF5bG9hZDogdG9rZW4gfSlcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNQcm9jZXNzaW5nRmFpbHVyZSkge1xuICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmlzUHJvY2Vzc2luZ0ZhaWx1cmUgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIGNvbmNhdChbXG4gICAgICAgICAgICAgIHJlYXV0aGVudGljYXRlVG9rZW5GYWlsdXJlQWN0aW9uKHsgcGF5bG9hZDogZXJyb3IgfSksXG4gICAgICAgICAgICAgIGNsZWFyQ3VycmVudFRva2VuQWN0aW9uKCksXG4gICAgICAgICAgICAgIGNsZWFyQXV0aGVudGljYXRpb25BY3Rpb24oKVxuICAgICAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNQcm9jZXNzaW5nRmFpbHVyZSA9IGZhbHNlO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHNlbGVjdFB1YmxpY01lbWJlciQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHNlbGVjdFB1YmxpY01lbWJlckFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtwYXlsb2FkOiBzdHJpbmd9KSA9PiB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5jaGFuZ2VQdWJsaWNUb2tlbihwYXlsb2FkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHRva2VuOiBQdWJsaWNBdXRoZW50aWNhdGlvbikgPT4gc2VsZWN0UHVibGljTWVtYmVyU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogdG9rZW59KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihzZWxlY3RQdWJsaWNNZW1iZXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBzZXNzaW9uVG9rZW4kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsb2dpbldpdGhTZXNzaW9uQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuZ2V0U2Vzc2lvblRva2VuKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKHRva2VuOiBUb2tlbiB8IG51bGwpID0+IHtcbiAgICAgICAgICAgIGlmICh0b2tlbikge1xuICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIGxvZ2luVG9rZW5TdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiB0b2tlbn0pLFxuICAgICAgICAgICAgICAgIHNldEN1cnJlbnRUb2tlbkFjdGlvbih7cGF5bG9hZDogdG9rZW59KSxcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiBvZihcbiAgICAgICAgICAgICAgICBsb2dpbldpdGhTZXNzaW9uRmFpbHVyZUFjdGlvbih7XG4gICAgICAgICAgICAgICAgICBwYXlsb2FkOiBuZXcgSHR0cEVycm9yUmVzcG9uc2UoXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IDQwMFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY2xlYXJDdXJyZW50VG9rZW5BY3Rpb24oKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobG9naW5XaXRoU2Vzc2lvbkZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHNldEN1cnJlbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShzZXRDdXJyZW50VG9rZW5BY3Rpb24pLFxuICAgICAgc3dpdGNoTWFwKCh7cGF5bG9hZH06IHsgcGF5bG9hZDogVG9rZW4gfCBudWxsIH0pID0+IHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0QXNPYnNlcnZhYmxlKFNUT1JBR0VfVE9LRU4sIHBheWxvYWQpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgodG9rZW46IFRva2VuKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5zZXRUb2tlbih0b2tlbik7XG4gICAgICAgICAgICByZXR1cm4gZ2V0Q3VycmVudFRva2VuU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogdG9rZW59KVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG59XG4iXX0=
|