@ieeesa-npm/dashboard 0.0.3 → 0.0.4

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.
Files changed (31) hide show
  1. package/esm2022/lib/assets/constants.json +7 -3
  2. package/esm2022/lib/components/event-group-card/event-group-card.component.mjs +103 -13
  3. package/esm2022/lib/components/meeting-attendance-row/meeting-attendance-row.component.mjs +101 -23
  4. package/esm2022/lib/components/upcoming-meetings-events/upcoming-meetings-events.component.mjs +70 -6
  5. package/esm2022/lib/dashboard.component.mjs +93 -9
  6. package/esm2022/lib/models/attendance-state.model.mjs +8 -1
  7. package/esm2022/lib/models/dashboard-route-config.model.mjs +1 -1
  8. package/esm2022/lib/models/event-meeting-list-item.model.mjs +1 -1
  9. package/esm2022/lib/models/event-meeting-list-payload.model.mjs +7 -5
  10. package/esm2022/lib/models/meeting-row.model.mjs +1 -1
  11. package/esm2022/lib/models/upcoming-event.model.mjs +1 -1
  12. package/esm2022/lib/services/dashboard.service.mjs +71 -126
  13. package/esm2022/lib/services/user-permissions.service.mjs +23 -9
  14. package/esm2022/lib/utils/event-meeting-mapper.util.mjs +47 -41
  15. package/fesm2022/ieeesa-npm-dashboard.mjs +526 -284
  16. package/fesm2022/ieeesa-npm-dashboard.mjs.map +1 -1
  17. package/lib/components/event-group-card/event-group-card.component.d.ts +75 -6
  18. package/lib/components/meeting-attendance-row/meeting-attendance-row.component.d.ts +61 -7
  19. package/lib/components/member-level-badge/member-level-badge.component.d.ts +12 -1
  20. package/lib/components/upcoming-meetings-events/upcoming-meetings-events.component.d.ts +51 -3
  21. package/lib/dashboard.component.d.ts +53 -3
  22. package/lib/models/attendance-state.model.d.ts +8 -1
  23. package/lib/models/dashboard-route-config.model.d.ts +14 -0
  24. package/lib/models/event-meeting-list-item.model.d.ts +68 -68
  25. package/lib/models/event-meeting-list-payload.model.d.ts +14 -25
  26. package/lib/models/meeting-row.model.d.ts +2 -0
  27. package/lib/models/upcoming-event.model.d.ts +9 -0
  28. package/lib/services/dashboard.service.d.ts +25 -53
  29. package/lib/services/user-permissions.service.d.ts +8 -4
  30. package/lib/utils/event-meeting-mapper.util.d.ts +15 -21
  31. package/package.json +1 -1
@@ -2,7 +2,6 @@ import { CommonModule } from '@angular/common';
2
2
  import { Component, EventEmitter, Input, Output, ViewEncapsulation, } from '@angular/core';
3
3
  import { AttendanceState } from '../../models/attendance-state.model';
4
4
  import { DateFormats } from '../../assets/date-formats';
5
- import { AttendanceAction, resolveAttendanceAction, } from '../../utils/attendance-action.util';
6
5
  import { formatEpoch } from '../../utils/date-format.util';
7
6
  import * as screenTexts from '../../assets/constants.json';
8
7
  import * as i0 from "@angular/core";
@@ -46,9 +45,42 @@ export class MeetingAttendanceRowComponent {
46
45
  this.logAttendance = new EventEmitter();
47
46
  /** Emits the meeting id to request leaving the meeting (Req 7.8). */
48
47
  this.leaveMeeting = new EventEmitter();
48
+ /**
49
+ * Emits the owning event id + meeting id when the attendance button is
50
+ * activated for an In-Progress meeting, so the host can navigate to the
51
+ * view-meeting screen (where the real Log Attendance popup opens).
52
+ */
53
+ this.navigateToMeeting = new EventEmitter();
49
54
  /** Expose the enum to the template for state comparisons. */
50
55
  this.AttendanceState = AttendanceState;
51
56
  }
57
+ /**
58
+ * Whether the meeting is eligible for an attendance action (an attendance
59
+ * button is rendered at all). The backend supplies an `attendanceState` for
60
+ * every loggable meeting, so its presence is the eligibility signal. Rows the
61
+ * backend deems ineligible carry no state and render no button.
62
+ * @return {boolean} True when the meeting is attendance-eligible.
63
+ * @memberof MeetingAttendanceRowComponent
64
+ */
65
+ get isEligibleForAttendance() {
66
+ return !!this.meeting?.attendanceState;
67
+ }
68
+ /**
69
+ * Whether the meeting is currently In Progress. Mirrors the attendance
70
+ * library's `isMeetingActive`: the attendance button is only ENABLED during
71
+ * the meeting; outside the meeting time it renders disabled with the inactive
72
+ * message.
73
+ * @return {boolean} True when the meeting status is 'In Progress'.
74
+ * @memberof MeetingAttendanceRowComponent
75
+ */
76
+ get isMeetingActive() {
77
+ return (this.meeting?.status ?? '').trim().toLowerCase() === 'in progress';
78
+ }
79
+ /** The inactive-button message shown when the meeting is not In Progress. */
80
+ get inactiveMessage() {
81
+ return (this.constants?.meetingRow?.inactiveMessage ??
82
+ 'Attendance logging only available during meeting, Please contact your meeting administrator for any necessary corrections.');
83
+ }
52
84
  /**
53
85
  * Whether this row is actionable — a non-empty `meetingId` is required for the
54
86
  * meeting-name link and action button to emit anything (Req 7.10).
@@ -68,24 +100,40 @@ export class MeetingAttendanceRowComponent {
68
100
  return this.attendanceState === AttendanceState.CURRENTLY_ATTENDING;
69
101
  }
70
102
  /**
71
- * Whether the log-attendance button should be shown: only when the row is in
72
- * the log state (not currently attending) and the host grants
73
- * `canLogAttendance` (Req 7.6, 12.1).
103
+ * Whether the log-attendance button should be shown: whenever the row is not
104
+ * currently attending. Mirrors the attendance library, which toggles between
105
+ * Log Attendance and Leave Meeting purely on attendance state (no permission
106
+ * gating).
74
107
  * @return {boolean} True when the log-attendance button is visible.
75
108
  * @memberof MeetingAttendanceRowComponent
76
109
  */
77
110
  get showLogAttendanceButton() {
78
- return !this.isCurrentlyAttending && !!this.permissions?.canLogAttendance;
111
+ // Shown for every eligible, not-currently-attending meeting. When the
112
+ // meeting is not In Progress the button renders disabled (see isLogDisabled).
113
+ return this.isEligibleForAttendance && !this.isCurrentlyAttending;
114
+ }
115
+ /**
116
+ * Whether the Log Attendance button is disabled: outside the meeting time
117
+ * (not In Progress) or while an attendance action is in flight. Matches the
118
+ * view-meeting page, which disables the button with an inactive message when
119
+ * the meeting is not active.
120
+ * @return {boolean} True when the Log Attendance button should be disabled.
121
+ * @memberof MeetingAttendanceRowComponent
122
+ */
123
+ get isLogDisabled() {
124
+ return !this.isMeetingActive || this.isInFlight || !this.isActionable;
79
125
  }
80
126
  /**
81
- * Whether the leave-meeting button should be shown: only when the row is in
82
- * the currently-attending state and the host grants `canLeaveMeeting`
83
- * (Req 7.5, 12.2).
127
+ * Whether the leave-meeting button should be shown: whenever the row is
128
+ * currently attending. Mirrors the attendance library (no permission gating).
84
129
  * @return {boolean} True when the leave-meeting button is visible.
85
130
  * @memberof MeetingAttendanceRowComponent
86
131
  */
87
132
  get showLeaveMeetingButton() {
88
- return this.isCurrentlyAttending && !!this.permissions?.canLeaveMeeting;
133
+ // Leave Meeting is only meaningful while the meeting is active.
134
+ return (this.isEligibleForAttendance &&
135
+ this.isCurrentlyAttending &&
136
+ this.isMeetingActive);
89
137
  }
90
138
  /**
91
139
  * Resolves a group-or-committee / room-or-location field value, substituting
@@ -117,16 +165,35 @@ export class MeetingAttendanceRowComponent {
117
165
  * @memberof MeetingAttendanceRowComponent
118
166
  */
119
167
  get formattedTime() {
168
+ const range = this.timeRange;
120
169
  const timezone = this.meeting?.timezone ?? '';
121
- const startValue = this.meeting?.startDateTime ?? this.meeting?.meetingTime;
122
- const start = formatEpoch(startValue, DateFormats.timeMeridiemFormat, timezone);
123
- const end = formatEpoch(this.meeting?.endDateTime, DateFormats.timeMeridiemFormat, timezone);
124
- const range = end ? `${start} – ${end}` : start;
125
170
  if (!range) {
126
171
  return '';
127
172
  }
128
173
  return timezone ? `${range} ${timezone}` : range;
129
174
  }
175
+ /**
176
+ * The bold time range only (e.g. "10:00–11:00"), 12-hour with meridiem,
177
+ * rendered dark per Figma.
178
+ * @return {string} The formatted start–end time range.
179
+ * @memberof MeetingAttendanceRowComponent
180
+ */
181
+ get timeRange() {
182
+ const timezone = this.meeting?.timezone ?? '';
183
+ const start = formatEpoch(this.meeting?.startDateTime ?? this.meeting?.meetingTime, DateFormats.timeMeridiemFormat, timezone);
184
+ const end = formatEpoch(this.meeting?.endDateTime, DateFormats.timeMeridiemFormat, timezone);
185
+ return end ? `${start} \u2013 ${end}` : start;
186
+ }
187
+ /**
188
+ * The timezone label only (light grey per Figma), wrapped in parentheses, or
189
+ * an empty string when no timezone is present.
190
+ * @return {string} The parenthesised timezone, or an empty string.
191
+ * @memberof MeetingAttendanceRowComponent
192
+ */
193
+ get timezoneDisplay() {
194
+ const timezone = this.meeting?.timezone ?? '';
195
+ return timezone ? timezone : '';
196
+ }
130
197
  /**
131
198
  * Handles activation of the attendance action button. Delegates to the pure
132
199
  * `resolveAttendanceAction` handler and emits exactly one event based on the
@@ -136,14 +203,18 @@ export class MeetingAttendanceRowComponent {
136
203
  * @memberof MeetingAttendanceRowComponent
137
204
  */
138
205
  onAttendanceAction() {
139
- const action = resolveAttendanceAction(this.attendanceState, this.isInFlight, this.meeting?.meetingId);
140
- if (action === AttendanceAction.LOG_ATTENDANCE) {
141
- this.logAttendance.emit(this.meeting.meetingId);
206
+ if (!this.isActionable || !this.isMeetingActive) {
142
207
  return;
143
208
  }
144
- if (action === AttendanceAction.LEAVE_MEETING) {
145
- this.leaveMeeting.emit(this.meeting.meetingId);
146
- }
209
+ // The Log Attendance / Leave Meeting popup lives on the view-meeting screen,
210
+ // so the dashboard navigates there (with eventId + meetingId) and requests
211
+ // the matching flow auto-open instead of calling the attendance API directly.
212
+ this.navigateToMeeting.emit({
213
+ eventId: this.meeting?.eventId ?? '',
214
+ meetingId: this.meeting.meetingId,
215
+ logAttendance: !this.isCurrentlyAttending,
216
+ leaveMeeting: this.isCurrentlyAttending,
217
+ });
147
218
  }
148
219
  /**
149
220
  * Handles activation of the meeting-name link. Emits the meeting id only when
@@ -154,14 +225,19 @@ export class MeetingAttendanceRowComponent {
154
225
  if (!this.isActionable) {
155
226
  return;
156
227
  }
157
- this.openMeeting.emit(this.meeting.meetingId);
228
+ // Navigate to the view-meeting screen (no popup auto-open) when the meeting
229
+ // name link is clicked.
230
+ this.navigateToMeeting.emit({
231
+ eventId: this.meeting?.eventId ?? '',
232
+ meetingId: this.meeting.meetingId,
233
+ });
158
234
  }
159
235
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MeetingAttendanceRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
160
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MeetingAttendanceRowComponent, isStandalone: true, selector: "ieeesa-meeting-attendance-row", inputs: { meeting: "meeting", attendanceState: "attendanceState", isInFlight: "isInFlight", permissions: "permissions", compact: "compact" }, outputs: { openMeeting: "openMeeting", logAttendance: "logAttendance", leaveMeeting: "leaveMeeting" }, ngImport: i0, template: "<div\r\n class=\"ieeesa-meeting-attendance-row\"\r\n [class.ieeesa-meeting-attendance-row--compact]=\"compact\"\r\n>\r\n <!-- Meeting name + group/location (hidden in the compact standalone variant). -->\r\n <div class=\"ieeesa-meeting-attendance-row__name-col\">\r\n <ng-container *ngIf=\"!compact\">\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-meeting-attendance-row__name-link\"\r\n [disabled]=\"!isActionable\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.meetingNameLink\"\r\n (click)=\"onOpenMeeting()\"\r\n >\r\n {{ meeting.meetingName }}\r\n </button>\r\n\r\n <p class=\"ieeesa-meeting-attendance-row__subtitle\">\r\n {{ resolveFieldValue(meeting.groupOrCommittee) }}<ng-container\r\n *ngIf=\"meeting.roomOrLocation\"\r\n > &middot; {{ meeting.roomOrLocation }}</ng-container>\r\n </p>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- MEETING DATE column. -->\r\n <dl class=\"ieeesa-meeting-attendance-row__col ieeesa-meeting-attendance-row__col--date\">\r\n <dt class=\"ieeesa-meeting-attendance-row__col-label\">\r\n {{ constants.eventGroupCard.meetingDateLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-meeting-attendance-row__col-value\">\r\n {{ formattedDate }}\r\n </dd>\r\n </dl>\r\n\r\n <!-- TIME & TIMEZONE column. -->\r\n <dl class=\"ieeesa-meeting-attendance-row__col ieeesa-meeting-attendance-row__col--time\">\r\n <dt class=\"ieeesa-meeting-attendance-row__col-label\">\r\n {{ constants.meetingRow.timeTimezoneLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-meeting-attendance-row__col-value\">\r\n {{ formattedTime }}\r\n </dd>\r\n </dl>\r\n\r\n <!-- Attendance indicator + actions column. -->\r\n <div class=\"ieeesa-meeting-attendance-row__actions\">\r\n <!-- Currently-attending pill shown only in the attending state. -->\r\n <span\r\n *ngIf=\"isCurrentlyAttending\"\r\n class=\"ieeesa-meeting-attendance-row__attending-pill\"\r\n >\r\n <span class=\"ieeesa-meeting-attendance-row__attending-dot\" aria-hidden=\"true\"></span>\r\n {{ constants.meetingRow.currentlyAttendingIndicator }}\r\n </span>\r\n\r\n <!-- Log-attendance button: shown in the log state with the permission. -->\r\n <button\r\n *ngIf=\"showLogAttendanceButton\"\r\n type=\"button\"\r\n class=\"ieeesa-meeting-attendance-row__action-button ieeesa-meeting-attendance-row__action-button--log\"\r\n [disabled]=\"isInFlight || !isActionable\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.logAttendance\"\r\n (click)=\"onAttendanceAction()\"\r\n >\r\n {{ constants.meetingRow.logAttendanceLabel }}\r\n </button>\r\n\r\n <!-- Leave-meeting button: shown in the attending state with the permission. -->\r\n <button\r\n *ngIf=\"showLeaveMeetingButton\"\r\n type=\"button\"\r\n class=\"ieeesa-meeting-attendance-row__action-button ieeesa-meeting-attendance-row__action-button--leave\"\r\n [disabled]=\"isInFlight || !isActionable\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.leaveMeeting\"\r\n (click)=\"onAttendanceAction()\"\r\n >\r\n {{ constants.meetingRow.leaveMeetingLabel }}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-meeting-attendance-row{display:grid;grid-template-columns:minmax(220px,2fr) minmax(120px,1fr) minmax(180px,1.2fr) auto;align-items:center;column-gap:24px;min-height:72px;padding:16px 20px;background-color:#fff;font-family:Calibri Regular}.ieeesa-meeting-attendance-row__name-col{display:flex;flex-direction:column;gap:4px;min-width:0}.ieeesa-meeting-attendance-row__name-link{padding:0;border:0;background:none;text-align:left;text-decoration:underline;font-family:Calibri Bold;font-size:1rem;line-height:20px;color:#00629b;cursor:pointer}.ieeesa-meeting-attendance-row__name-link:disabled{color:#939094;text-decoration:none;cursor:default}.ieeesa-meeting-attendance-row__subtitle{margin:0;font-size:.875rem;line-height:18px;color:#333436}.ieeesa-meeting-attendance-row__col{display:flex;flex-direction:column;gap:4px;margin:0;min-width:0}.ieeesa-meeting-attendance-row__col-label{font-family:Calibri Bold;font-size:.75rem;letter-spacing:.03125em;text-transform:uppercase;color:#939094}.ieeesa-meeting-attendance-row__col-value{margin:0;font-size:.875rem;line-height:18px;color:#333436}.ieeesa-meeting-attendance-row__actions{display:flex;align-items:center;justify-content:flex-end;gap:16px;flex-shrink:0}.ieeesa-meeting-attendance-row__attending-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:16px;white-space:nowrap;font-size:.8125rem;color:#1a7f37;background-color:#e8f5ec}.ieeesa-meeting-attendance-row__attending-dot{width:8px;height:8px;border-radius:50%;background-color:#1a7f37}.ieeesa-meeting-attendance-row__action-button{min-width:146px;padding:10px 16px;border-radius:4px;font-family:Calibri Bold;font-size:.875rem;cursor:pointer}.ieeesa-meeting-attendance-row__action-button--log{border:1px solid #00629b;background-color:#00629b;color:#fff}.ieeesa-meeting-attendance-row__action-button--leave{border:1px solid #00629b;background-color:#fff;color:#00629b}.ieeesa-meeting-attendance-row__action-button:disabled{border-color:#939094;background-color:#939094;color:#fff;cursor:default}.ieeesa-meeting-attendance-row:not(.ieeesa-meeting-attendance-row--compact)+.ieeesa-meeting-attendance-row:not(.ieeesa-meeting-attendance-row--compact){border-top:1px solid #d7d6d6}.ieeesa-meeting-attendance-row--compact{grid-template-columns:minmax(180px,1.2fr) auto;padding:0;min-height:0}.ieeesa-meeting-attendance-row--compact .ieeesa-meeting-attendance-row__col--date{display:none}@media (max-width: 767px){.ieeesa-meeting-attendance-row{grid-template-columns:1fr;row-gap:12px}.ieeesa-meeting-attendance-row__actions{justify-content:flex-start}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None }); }
236
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MeetingAttendanceRowComponent, isStandalone: true, selector: "ieeesa-meeting-attendance-row", inputs: { meeting: "meeting", attendanceState: "attendanceState", isInFlight: "isInFlight", permissions: "permissions", compact: "compact" }, outputs: { openMeeting: "openMeeting", logAttendance: "logAttendance", leaveMeeting: "leaveMeeting", navigateToMeeting: "navigateToMeeting" }, ngImport: i0, template: "<div\r\n class=\"ieeesa-meeting-attendance-row\"\r\n [class.ieeesa-meeting-attendance-row--compact]=\"compact\"\r\n>\r\n <!-- Meeting name + group/location (hidden in the compact standalone variant). -->\r\n <div class=\"ieeesa-meeting-attendance-row__name-col\">\r\n <ng-container *ngIf=\"!compact\">\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-meeting-attendance-row__name-link\"\r\n [disabled]=\"!isActionable\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.meetingNameLink\"\r\n (click)=\"onOpenMeeting()\"\r\n >\r\n {{ meeting.meetingName }}\r\n </button>\r\n\r\n <p class=\"ieeesa-meeting-attendance-row__subtitle\">\r\n {{ resolveFieldValue(meeting.groupOrCommittee) }}<ng-container\r\n *ngIf=\"meeting.roomOrLocation\"\r\n > &middot; {{ meeting.roomOrLocation }}</ng-container>\r\n </p>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- MEETING DATE column. -->\r\n <dl class=\"ieeesa-meeting-attendance-row__col ieeesa-meeting-attendance-row__col--date\">\r\n <dt class=\"ieeesa-meeting-attendance-row__col-label\">\r\n {{ constants.eventGroupCard.meetingDateLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-meeting-attendance-row__col-value\">\r\n {{ formattedDate }}\r\n </dd>\r\n </dl>\r\n\r\n <!-- TIME & TIMEZONE column. -->\r\n <dl class=\"ieeesa-meeting-attendance-row__col ieeesa-meeting-attendance-row__col--time\">\r\n <dt class=\"ieeesa-meeting-attendance-row__col-label\">\r\n {{ constants.meetingRow.timeTimezoneLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-meeting-attendance-row__col-value\">\r\n <span class=\"ieeesa-meeting-attendance-row__time\">{{ timeRange }}</span><ng-container\r\n *ngIf=\"timezoneDisplay\"\r\n > <span class=\"ieeesa-meeting-attendance-row__tz\">{{ timezoneDisplay }}</span></ng-container>\r\n </dd>\r\n </dl>\r\n\r\n <!-- Attendance indicator + actions column. -->\r\n <div class=\"ieeesa-meeting-attendance-row__actions\">\r\n <!-- Fixed-width slot reserved for the attending pill so the action buttons\r\n stay column-aligned whether or not the pill is shown. -->\r\n <span class=\"ieeesa-meeting-attendance-row__attending-slot\">\r\n <span\r\n *ngIf=\"isCurrentlyAttending\"\r\n class=\"ieeesa-meeting-attendance-row__attending-pill\"\r\n >\r\n <span class=\"ieeesa-meeting-attendance-row__attending-dot\" aria-hidden=\"true\"></span>\r\n {{ constants.meetingRow.currentlyAttendingIndicator }}\r\n </span>\r\n </span>\r\n\r\n <!-- Log-attendance button: shown for eligible meetings, disabled (with the\r\n inactive message) when the meeting is not In Progress. -->\r\n <button\r\n *ngIf=\"showLogAttendanceButton\"\r\n type=\"button\"\r\n class=\"ieeesa-meeting-attendance-row__action-button ieeesa-meeting-attendance-row__action-button--log\"\r\n [class.ieeesa-meeting-attendance-row__action-button--inactive]=\"isLogDisabled\"\r\n [disabled]=\"isLogDisabled\"\r\n [attr.title]=\"isLogDisabled ? inactiveMessage : null\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.logAttendance\"\r\n (click)=\"onAttendanceAction()\"\r\n >\r\n {{ constants.meetingRow.logAttendanceLabel }}\r\n </button>\r\n\r\n <!-- Leave-meeting button: shown in the attending state with the permission. -->\r\n <button\r\n *ngIf=\"showLeaveMeetingButton\"\r\n type=\"button\"\r\n class=\"ieeesa-meeting-attendance-row__action-button ieeesa-meeting-attendance-row__action-button--leave\"\r\n [disabled]=\"isInFlight || !isActionable\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.leaveMeeting\"\r\n (click)=\"onAttendanceAction()\"\r\n >\r\n {{ constants.meetingRow.leaveMeetingLabel }}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-meeting-attendance-row{display:grid;grid-template-columns:minmax(220px,2fr) minmax(120px,1fr) minmax(200px,1.3fr) auto;align-items:center;column-gap:24px;padding:16px 20px;background-color:#fff;font-family:Calibri Regular}.ieeesa-meeting-attendance-row__name-col{display:flex;flex-direction:column;gap:2px;min-width:0}.ieeesa-meeting-attendance-row__name-link{padding:0;border:0;background:none;text-align:left;text-decoration:underline;font-family:Calibri Bold;font-size:.875rem;line-height:18px;color:#00629b;cursor:pointer}.ieeesa-meeting-attendance-row__name-link:hover:not(:disabled){color:#004872}.ieeesa-meeting-attendance-row__name-link:disabled{color:#939094;text-decoration:none;cursor:default}.ieeesa-meeting-attendance-row__subtitle{margin:0;font-size:.875rem;line-height:18px;color:#333436}.ieeesa-meeting-attendance-row__col{display:flex;flex-direction:column;gap:2px;margin:0;min-width:0}.ieeesa-meeting-attendance-row__col-label{font-family:Calibri Bold;font-size:.75rem;letter-spacing:.03125em;text-transform:uppercase;color:#64748b}.ieeesa-meeting-attendance-row__col-value{margin:0;font-size:.875rem;line-height:18px;color:#0f172a}.ieeesa-meeting-attendance-row__time{font-family:Calibri Bold;color:#0f172a}.ieeesa-meeting-attendance-row__tz{color:#64748b}.ieeesa-meeting-attendance-row__actions{display:flex;align-items:center;justify-content:flex-end;gap:16px;flex-shrink:0}.ieeesa-meeting-attendance-row__attending-slot{display:inline-flex;justify-content:flex-end;align-items:center;width:150px;flex-shrink:0}.ieeesa-meeting-attendance-row__attending-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:16px;white-space:nowrap;font-size:.8125rem;color:#15803d;background-color:#e8f5ec}.ieeesa-meeting-attendance-row__attending-dot{width:8px;height:8px;border-radius:50%;background-color:#15803d}.ieeesa-meeting-attendance-row__action-button{min-width:146px;padding:10px 24px;border-radius:3px;font-family:Calibri Bold;font-size:1rem;cursor:pointer}.ieeesa-meeting-attendance-row__action-button--log{border:1px solid #00629b;background-color:#00629b;color:#fff;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.ieeesa-meeting-attendance-row__action-button--leave{border:1px solid #00629b;background-color:#fff;color:#00629b}.ieeesa-meeting-attendance-row__action-button:disabled,.ieeesa-meeting-attendance-row__action-button--inactive{border-color:#e2e8f0;background-color:#f4f5f7;color:#939094;box-shadow:none;cursor:not-allowed}.ieeesa-meeting-attendance-row__view{min-width:60px;height:40px;padding:8px 16px;border:1px solid #878b8f;border-radius:4px;background-color:#fff;font-family:Calibri Bold;font-size:.8125rem;color:#0f172a;cursor:pointer}.ieeesa-meeting-attendance-row__view:hover:not(:disabled){background-color:#eaf3f9}.ieeesa-meeting-attendance-row__view:disabled{border-color:#e2e8f0;color:#939094;cursor:not-allowed}.ieeesa-meeting-attendance-row:not(.ieeesa-meeting-attendance-row--compact)+.ieeesa-meeting-attendance-row:not(.ieeesa-meeting-attendance-row--compact){border-top:1px solid #e2e8f0}.ieeesa-meeting-attendance-row--compact{grid-template-columns:minmax(180px,1.2fr) auto;padding:0}.ieeesa-meeting-attendance-row--compact .ieeesa-meeting-attendance-row__col--date{display:none}@media (max-width: 767px){.ieeesa-meeting-attendance-row{grid-template-columns:1fr;row-gap:12px}.ieeesa-meeting-attendance-row__actions{justify-content:flex-start}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None }); }
161
237
  }
162
238
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MeetingAttendanceRowComponent, decorators: [{
163
239
  type: Component,
164
- args: [{ selector: 'ieeesa-meeting-attendance-row', standalone: true, imports: [CommonModule], encapsulation: ViewEncapsulation.None, template: "<div\r\n class=\"ieeesa-meeting-attendance-row\"\r\n [class.ieeesa-meeting-attendance-row--compact]=\"compact\"\r\n>\r\n <!-- Meeting name + group/location (hidden in the compact standalone variant). -->\r\n <div class=\"ieeesa-meeting-attendance-row__name-col\">\r\n <ng-container *ngIf=\"!compact\">\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-meeting-attendance-row__name-link\"\r\n [disabled]=\"!isActionable\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.meetingNameLink\"\r\n (click)=\"onOpenMeeting()\"\r\n >\r\n {{ meeting.meetingName }}\r\n </button>\r\n\r\n <p class=\"ieeesa-meeting-attendance-row__subtitle\">\r\n {{ resolveFieldValue(meeting.groupOrCommittee) }}<ng-container\r\n *ngIf=\"meeting.roomOrLocation\"\r\n > &middot; {{ meeting.roomOrLocation }}</ng-container>\r\n </p>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- MEETING DATE column. -->\r\n <dl class=\"ieeesa-meeting-attendance-row__col ieeesa-meeting-attendance-row__col--date\">\r\n <dt class=\"ieeesa-meeting-attendance-row__col-label\">\r\n {{ constants.eventGroupCard.meetingDateLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-meeting-attendance-row__col-value\">\r\n {{ formattedDate }}\r\n </dd>\r\n </dl>\r\n\r\n <!-- TIME & TIMEZONE column. -->\r\n <dl class=\"ieeesa-meeting-attendance-row__col ieeesa-meeting-attendance-row__col--time\">\r\n <dt class=\"ieeesa-meeting-attendance-row__col-label\">\r\n {{ constants.meetingRow.timeTimezoneLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-meeting-attendance-row__col-value\">\r\n {{ formattedTime }}\r\n </dd>\r\n </dl>\r\n\r\n <!-- Attendance indicator + actions column. -->\r\n <div class=\"ieeesa-meeting-attendance-row__actions\">\r\n <!-- Currently-attending pill shown only in the attending state. -->\r\n <span\r\n *ngIf=\"isCurrentlyAttending\"\r\n class=\"ieeesa-meeting-attendance-row__attending-pill\"\r\n >\r\n <span class=\"ieeesa-meeting-attendance-row__attending-dot\" aria-hidden=\"true\"></span>\r\n {{ constants.meetingRow.currentlyAttendingIndicator }}\r\n </span>\r\n\r\n <!-- Log-attendance button: shown in the log state with the permission. -->\r\n <button\r\n *ngIf=\"showLogAttendanceButton\"\r\n type=\"button\"\r\n class=\"ieeesa-meeting-attendance-row__action-button ieeesa-meeting-attendance-row__action-button--log\"\r\n [disabled]=\"isInFlight || !isActionable\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.logAttendance\"\r\n (click)=\"onAttendanceAction()\"\r\n >\r\n {{ constants.meetingRow.logAttendanceLabel }}\r\n </button>\r\n\r\n <!-- Leave-meeting button: shown in the attending state with the permission. -->\r\n <button\r\n *ngIf=\"showLeaveMeetingButton\"\r\n type=\"button\"\r\n class=\"ieeesa-meeting-attendance-row__action-button ieeesa-meeting-attendance-row__action-button--leave\"\r\n [disabled]=\"isInFlight || !isActionable\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.leaveMeeting\"\r\n (click)=\"onAttendanceAction()\"\r\n >\r\n {{ constants.meetingRow.leaveMeetingLabel }}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-meeting-attendance-row{display:grid;grid-template-columns:minmax(220px,2fr) minmax(120px,1fr) minmax(180px,1.2fr) auto;align-items:center;column-gap:24px;min-height:72px;padding:16px 20px;background-color:#fff;font-family:Calibri Regular}.ieeesa-meeting-attendance-row__name-col{display:flex;flex-direction:column;gap:4px;min-width:0}.ieeesa-meeting-attendance-row__name-link{padding:0;border:0;background:none;text-align:left;text-decoration:underline;font-family:Calibri Bold;font-size:1rem;line-height:20px;color:#00629b;cursor:pointer}.ieeesa-meeting-attendance-row__name-link:disabled{color:#939094;text-decoration:none;cursor:default}.ieeesa-meeting-attendance-row__subtitle{margin:0;font-size:.875rem;line-height:18px;color:#333436}.ieeesa-meeting-attendance-row__col{display:flex;flex-direction:column;gap:4px;margin:0;min-width:0}.ieeesa-meeting-attendance-row__col-label{font-family:Calibri Bold;font-size:.75rem;letter-spacing:.03125em;text-transform:uppercase;color:#939094}.ieeesa-meeting-attendance-row__col-value{margin:0;font-size:.875rem;line-height:18px;color:#333436}.ieeesa-meeting-attendance-row__actions{display:flex;align-items:center;justify-content:flex-end;gap:16px;flex-shrink:0}.ieeesa-meeting-attendance-row__attending-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:16px;white-space:nowrap;font-size:.8125rem;color:#1a7f37;background-color:#e8f5ec}.ieeesa-meeting-attendance-row__attending-dot{width:8px;height:8px;border-radius:50%;background-color:#1a7f37}.ieeesa-meeting-attendance-row__action-button{min-width:146px;padding:10px 16px;border-radius:4px;font-family:Calibri Bold;font-size:.875rem;cursor:pointer}.ieeesa-meeting-attendance-row__action-button--log{border:1px solid #00629b;background-color:#00629b;color:#fff}.ieeesa-meeting-attendance-row__action-button--leave{border:1px solid #00629b;background-color:#fff;color:#00629b}.ieeesa-meeting-attendance-row__action-button:disabled{border-color:#939094;background-color:#939094;color:#fff;cursor:default}.ieeesa-meeting-attendance-row:not(.ieeesa-meeting-attendance-row--compact)+.ieeesa-meeting-attendance-row:not(.ieeesa-meeting-attendance-row--compact){border-top:1px solid #d7d6d6}.ieeesa-meeting-attendance-row--compact{grid-template-columns:minmax(180px,1.2fr) auto;padding:0;min-height:0}.ieeesa-meeting-attendance-row--compact .ieeesa-meeting-attendance-row__col--date{display:none}@media (max-width: 767px){.ieeesa-meeting-attendance-row{grid-template-columns:1fr;row-gap:12px}.ieeesa-meeting-attendance-row__actions{justify-content:flex-start}}\n"] }]
240
+ args: [{ selector: 'ieeesa-meeting-attendance-row', standalone: true, imports: [CommonModule], encapsulation: ViewEncapsulation.None, template: "<div\r\n class=\"ieeesa-meeting-attendance-row\"\r\n [class.ieeesa-meeting-attendance-row--compact]=\"compact\"\r\n>\r\n <!-- Meeting name + group/location (hidden in the compact standalone variant). -->\r\n <div class=\"ieeesa-meeting-attendance-row__name-col\">\r\n <ng-container *ngIf=\"!compact\">\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-meeting-attendance-row__name-link\"\r\n [disabled]=\"!isActionable\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.meetingNameLink\"\r\n (click)=\"onOpenMeeting()\"\r\n >\r\n {{ meeting.meetingName }}\r\n </button>\r\n\r\n <p class=\"ieeesa-meeting-attendance-row__subtitle\">\r\n {{ resolveFieldValue(meeting.groupOrCommittee) }}<ng-container\r\n *ngIf=\"meeting.roomOrLocation\"\r\n > &middot; {{ meeting.roomOrLocation }}</ng-container>\r\n </p>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- MEETING DATE column. -->\r\n <dl class=\"ieeesa-meeting-attendance-row__col ieeesa-meeting-attendance-row__col--date\">\r\n <dt class=\"ieeesa-meeting-attendance-row__col-label\">\r\n {{ constants.eventGroupCard.meetingDateLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-meeting-attendance-row__col-value\">\r\n {{ formattedDate }}\r\n </dd>\r\n </dl>\r\n\r\n <!-- TIME & TIMEZONE column. -->\r\n <dl class=\"ieeesa-meeting-attendance-row__col ieeesa-meeting-attendance-row__col--time\">\r\n <dt class=\"ieeesa-meeting-attendance-row__col-label\">\r\n {{ constants.meetingRow.timeTimezoneLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-meeting-attendance-row__col-value\">\r\n <span class=\"ieeesa-meeting-attendance-row__time\">{{ timeRange }}</span><ng-container\r\n *ngIf=\"timezoneDisplay\"\r\n > <span class=\"ieeesa-meeting-attendance-row__tz\">{{ timezoneDisplay }}</span></ng-container>\r\n </dd>\r\n </dl>\r\n\r\n <!-- Attendance indicator + actions column. -->\r\n <div class=\"ieeesa-meeting-attendance-row__actions\">\r\n <!-- Fixed-width slot reserved for the attending pill so the action buttons\r\n stay column-aligned whether or not the pill is shown. -->\r\n <span class=\"ieeesa-meeting-attendance-row__attending-slot\">\r\n <span\r\n *ngIf=\"isCurrentlyAttending\"\r\n class=\"ieeesa-meeting-attendance-row__attending-pill\"\r\n >\r\n <span class=\"ieeesa-meeting-attendance-row__attending-dot\" aria-hidden=\"true\"></span>\r\n {{ constants.meetingRow.currentlyAttendingIndicator }}\r\n </span>\r\n </span>\r\n\r\n <!-- Log-attendance button: shown for eligible meetings, disabled (with the\r\n inactive message) when the meeting is not In Progress. -->\r\n <button\r\n *ngIf=\"showLogAttendanceButton\"\r\n type=\"button\"\r\n class=\"ieeesa-meeting-attendance-row__action-button ieeesa-meeting-attendance-row__action-button--log\"\r\n [class.ieeesa-meeting-attendance-row__action-button--inactive]=\"isLogDisabled\"\r\n [disabled]=\"isLogDisabled\"\r\n [attr.title]=\"isLogDisabled ? inactiveMessage : null\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.logAttendance\"\r\n (click)=\"onAttendanceAction()\"\r\n >\r\n {{ constants.meetingRow.logAttendanceLabel }}\r\n </button>\r\n\r\n <!-- Leave-meeting button: shown in the attending state with the permission. -->\r\n <button\r\n *ngIf=\"showLeaveMeetingButton\"\r\n type=\"button\"\r\n class=\"ieeesa-meeting-attendance-row__action-button ieeesa-meeting-attendance-row__action-button--leave\"\r\n [disabled]=\"isInFlight || !isActionable\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.leaveMeeting\"\r\n (click)=\"onAttendanceAction()\"\r\n >\r\n {{ constants.meetingRow.leaveMeetingLabel }}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-meeting-attendance-row{display:grid;grid-template-columns:minmax(220px,2fr) minmax(120px,1fr) minmax(200px,1.3fr) auto;align-items:center;column-gap:24px;padding:16px 20px;background-color:#fff;font-family:Calibri Regular}.ieeesa-meeting-attendance-row__name-col{display:flex;flex-direction:column;gap:2px;min-width:0}.ieeesa-meeting-attendance-row__name-link{padding:0;border:0;background:none;text-align:left;text-decoration:underline;font-family:Calibri Bold;font-size:.875rem;line-height:18px;color:#00629b;cursor:pointer}.ieeesa-meeting-attendance-row__name-link:hover:not(:disabled){color:#004872}.ieeesa-meeting-attendance-row__name-link:disabled{color:#939094;text-decoration:none;cursor:default}.ieeesa-meeting-attendance-row__subtitle{margin:0;font-size:.875rem;line-height:18px;color:#333436}.ieeesa-meeting-attendance-row__col{display:flex;flex-direction:column;gap:2px;margin:0;min-width:0}.ieeesa-meeting-attendance-row__col-label{font-family:Calibri Bold;font-size:.75rem;letter-spacing:.03125em;text-transform:uppercase;color:#64748b}.ieeesa-meeting-attendance-row__col-value{margin:0;font-size:.875rem;line-height:18px;color:#0f172a}.ieeesa-meeting-attendance-row__time{font-family:Calibri Bold;color:#0f172a}.ieeesa-meeting-attendance-row__tz{color:#64748b}.ieeesa-meeting-attendance-row__actions{display:flex;align-items:center;justify-content:flex-end;gap:16px;flex-shrink:0}.ieeesa-meeting-attendance-row__attending-slot{display:inline-flex;justify-content:flex-end;align-items:center;width:150px;flex-shrink:0}.ieeesa-meeting-attendance-row__attending-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:16px;white-space:nowrap;font-size:.8125rem;color:#15803d;background-color:#e8f5ec}.ieeesa-meeting-attendance-row__attending-dot{width:8px;height:8px;border-radius:50%;background-color:#15803d}.ieeesa-meeting-attendance-row__action-button{min-width:146px;padding:10px 24px;border-radius:3px;font-family:Calibri Bold;font-size:1rem;cursor:pointer}.ieeesa-meeting-attendance-row__action-button--log{border:1px solid #00629b;background-color:#00629b;color:#fff;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.ieeesa-meeting-attendance-row__action-button--leave{border:1px solid #00629b;background-color:#fff;color:#00629b}.ieeesa-meeting-attendance-row__action-button:disabled,.ieeesa-meeting-attendance-row__action-button--inactive{border-color:#e2e8f0;background-color:#f4f5f7;color:#939094;box-shadow:none;cursor:not-allowed}.ieeesa-meeting-attendance-row__view{min-width:60px;height:40px;padding:8px 16px;border:1px solid #878b8f;border-radius:4px;background-color:#fff;font-family:Calibri Bold;font-size:.8125rem;color:#0f172a;cursor:pointer}.ieeesa-meeting-attendance-row__view:hover:not(:disabled){background-color:#eaf3f9}.ieeesa-meeting-attendance-row__view:disabled{border-color:#e2e8f0;color:#939094;cursor:not-allowed}.ieeesa-meeting-attendance-row:not(.ieeesa-meeting-attendance-row--compact)+.ieeesa-meeting-attendance-row:not(.ieeesa-meeting-attendance-row--compact){border-top:1px solid #e2e8f0}.ieeesa-meeting-attendance-row--compact{grid-template-columns:minmax(180px,1.2fr) auto;padding:0}.ieeesa-meeting-attendance-row--compact .ieeesa-meeting-attendance-row__col--date{display:none}@media (max-width: 767px){.ieeesa-meeting-attendance-row{grid-template-columns:1fr;row-gap:12px}.ieeesa-meeting-attendance-row__actions{justify-content:flex-start}}\n"] }]
165
241
  }], propDecorators: { meeting: [{
166
242
  type: Input
167
243
  }], attendanceState: [{
@@ -178,5 +254,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
178
254
  type: Output
179
255
  }], leaveMeeting: [{
180
256
  type: Output
257
+ }], navigateToMeeting: [{
258
+ type: Output
181
259
  }] } });
182
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVldGluZy1hdHRlbmRhbmNlLXJvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQvc3JjL2xpYi9jb21wb25lbnRzL21lZXRpbmctYXR0ZW5kYW5jZS1yb3cvbWVldGluZy1hdHRlbmRhbmNlLXJvdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQvc3JjL2xpYi9jb21wb25lbnRzL21lZXRpbmctYXR0ZW5kYW5jZS1yb3cvbWVldGluZy1hdHRlbmRhbmNlLXJvdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLHVCQUF1QixHQUN4QixNQUFNLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEtBQUssV0FBVyxNQUFNLDZCQUE2QixDQUFDOzs7QUFFM0Q7Ozs7Ozs7Ozs7Ozs7R0FhRztBQVVILE1BQU0sT0FBTyw2QkFBNkI7SUFUMUM7UUFVRSw4REFBOEQ7UUFDOUQsY0FBUyxHQUFRLFdBQVcsQ0FBQztRQUs3QiwyRUFBMkU7UUFDbEUsb0JBQWUsR0FBb0IsZUFBZSxDQUFDLGFBQWEsQ0FBQztRQUUxRSw0RUFBNEU7UUFDbkUsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUU1QiwwRUFBMEU7UUFDakUsZ0JB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aW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXR0ZW5kYW5jZUFjdGlvblBlcm1pc3Npb25zIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2F0dGVuZGFuY2UtYWN0aW9uLXBlcm1pc3Npb25zLm1vZGVsJztcclxuaW1wb3J0IHsgQXR0ZW5kYW5jZVN0YXRlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2F0dGVuZGFuY2Utc3RhdGUubW9kZWwnO1xyXG5pbXBvcnQgeyBNZWV0aW5nUm93IH0gZnJvbSAnLi4vLi4vbW9kZWxzL21lZXRpbmctcm93Lm1vZGVsJztcclxuaW1wb3J0IHsgRGF0ZUZvcm1hdHMgfSBmcm9tICcuLi8uLi9hc3NldHMvZGF0ZS1mb3JtYXRzJztcclxuaW1wb3J0IHtcclxuICBBdHRlbmRhbmNlQWN0aW9uLFxyXG4gIHJlc29sdmVBdHRlbmRhbmNlQWN0aW9uLFxyXG59IGZyb20gJy4uLy4uL3V0aWxzL2F0dGVuZGFuY2UtYWN0aW9uLnV0aWwnO1xyXG5pbXBvcnQgeyBmb3JtYXRFcG9jaCB9IGZyb20gJy4uLy4uL3V0aWxzL2RhdGUtZm9ybWF0LnV0aWwnO1xyXG5pbXBvcnQgKiBhcyBzY3JlZW5UZXh0cyBmcm9tICcuLi8uLi9hc3NldHMvY29uc3RhbnRzLmpzb24nO1xyXG5cclxuLyoqXHJcbiAqIE1lZXRpbmdfQXR0ZW5kYW5jZV9Sb3cgcmVuZGVycyBhIHNpbmdsZSBtZWV0aW5nIHdpdGhpbiBhbiBldmVudC1ncm91cCBjYXJkOlxyXG4gKiB0aGUgbWVldGluZy1uYW1lIGxpbmssIGdyb3VwL2NvbW1pdHRlZSwgcm9vbS9sb2NhdGlvbiwgZGF0ZSwgYW5kXHJcbiAqIHRpbWUrdGltZXpvbmUgKGFsbCBsdXhvbi1mb3JtYXR0ZWQpLCB0b2dldGhlciB3aXRoIHRoZSBhdHRlbmRhbmNlIGFjdGlvblxyXG4gKiBidXR0b24gdGhhdCBkcml2ZXMgdGhlIHBlci1tZWV0aW5nIGF0dGVuZGFuY2Ugc3RhdGUgbWFjaGluZS5cclxuICpcclxuICogVGhlIGNvbXBvbmVudCBpcyBwdXJlbHkgcHJlc2VudGF0aW9uYWwg4oCUIGl0IGVtaXRzIG5hdmlnYXRpb24gYW5kIGF0dGVuZGFuY2VcclxuICogaW50ZW50cyB2aWEgYEBPdXRwdXQoKWAgYW5kIG5ldmVyIHBlcmZvcm1zIG5hdmlnYXRpb24gb3IgSFRUUCBpdHNlbGYuIFRoZVxyXG4gKiBhY3Rpb24gYnV0dG9uIGRlbGVnYXRlcyB0byB0aGUgcHVyZSBgcmVzb2x2ZUF0dGVuZGFuY2VBY3Rpb25gIGhhbmRsZXIgc28gdGhlXHJcbiAqIGVtaXQvZ3VhcmQgbG9naWMgaXMgc2hhcmVkIHdpdGggdGhlIHByb3BlcnR5LXRlc3RlZCBjb3JlIChQcm9wZXJ0eSAxKSwgYW5kIHRoZVxyXG4gKiBkaXNwbGF5ZWQgc3RhdGUgb25seSBhZHZhbmNlcyB3aGVuIHRoZSBob3N0IHVwZGF0ZXMgYGF0dGVuZGFuY2VTdGF0ZWAuXHJcbiAqIEBleHBvcnRcclxuICogQGNsYXNzIE1lZXRpbmdBdHRlbmRhbmNlUm93Q29tcG9uZW50XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnaWVlZXNhLW1lZXRpbmctYXR0ZW5kYW5jZS1yb3cnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21lZXRpbmctYXR0ZW5kYW5jZS1yb3cuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL21lZXRpbmctYXR0ZW5kYW5jZS1yb3cuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWVldGluZ0F0dGVuZGFuY2VSb3dDb21wb25lbnQge1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgY29uc3RhbnRzOiBhbnkgPSBzY3JlZW5UZXh0cztcclxuXHJcbiAgLyoqIFRoZSBtZWV0aW5nIHJlbmRlcmVkIGJ5IHRoaXMgcm93LiAqL1xyXG4gIEBJbnB1dCgpIG1lZXRpbmchOiBNZWV0aW5nUm93O1xyXG5cclxuICAvKiogVGhlIGN1cnJlbnQgYXR0ZW5kYW5jZSBzdGF0ZSBjb250cm9sbGluZyBsYWJlbC9pbmRpY2F0b3IgYW5kIGFjdGlvbi4gKi9cclxuICBASW5wdXQoKSBhdHRlbmRhbmNlU3RhdGU6IEF0dGVuZGFuY2VTdGF0ZSA9IEF0dGVuZGFuY2VTdGF0ZS5OT1RfQVRURU5ESU5HO1xyXG5cclxuICAvKiogV2hldGhlciBhbiBhdHRlbmRhbmNlIGFjdGlvbiBmb3IgdGhpcyBtZWV0aW5nIGlzIGF3YWl0aW5nIHJlc29sdXRpb24uICovXHJcbiAgQElucHV0KCkgaXNJbkZsaWdodCA9IGZhbHNlO1xyXG5cclxuICAvKiogSG9zdCBwZXJtaXNzaW9ucyBnYXRpbmcgdGhlIGxvZy1hdHRlbmRhbmNlIC8gbGVhdmUtbWVldGluZyBidXR0b25zLiAqL1xyXG4gIEBJbnB1dCgpIHBlcm1pc3Npb25zOiBBdHRlbmRhbmNlQWN0aW9uUGVybWlzc2lvbnMgPSB7XHJcbiAgICBjYW5Mb2dBdHRlbmRhbmNlOiBmYWxzZSxcclxuICAgIGNhbkxlYXZlTWVldGluZzogZmFsc2UsXHJcbiAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogUmVuZGVycyB0aGUgbGVhbmVyIFwic3RhbmRhbG9uZSBtZWV0aW5nXCIgdmFyaWFudCB1c2VkIGJ5IHN0YW5kYWxvbmUtbWVldGluZ1xyXG4gICAqIGNhcmRzICh0aGUgZ3JvdXAvbG9jYXRpb24gYW5kIHN0YXR1cyBsaXZlIG9uIHRoZSBwYXJlbnQgY2FyZCwgc28gdGhlIHJvd1xyXG4gICAqIG9ubHkgc2hvd3MgdGhlIFRJTUUgJiBUSU1FWk9ORSBibG9jayBhbmQgdGhlIGF0dGVuZGFuY2UgKyBWaWV3IGFjdGlvbnMpLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGNvbXBhY3QgPSBmYWxzZTtcclxuXHJcbiAgLyoqIEVtaXRzIHRoZSBtZWV0aW5nIGlkIHdoZW4gdGhlIG1lZXRpbmctbmFtZSBsaW5rIGlzIGFjdGl2YXRlZCAoUmVxIDcuNCkuICovXHJcbiAgQE91dHB1dCgpIG9wZW5NZWV0aW5nID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIC8qKiBFbWl0cyB0aGUgbWVldGluZyBpZCB0byByZXF1ZXN0IGxvZ2dpbmcgYXR0ZW5kYW5jZSAoUmVxIDcuNykuICovXHJcbiAgQE91dHB1dCgpIGxvZ0F0dGVuZGFuY2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgLyoqIEVtaXRzIHRoZSBtZWV0aW5nIGlkIHRvIHJlcXVlc3QgbGVhdmluZyB0aGUgbWVldGluZyAoUmVxIDcuOCkuICovXHJcbiAgQE91dHB1dCgpIGxlYXZlTWVldGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAvKiogRXhwb3NlIHRoZSBlbnVtIHRvIHRoZSB0ZW1wbGF0ZSBmb3Igc3RhdGUgY29tcGFyaXNvbnMuICovXHJcbiAgcmVhZG9ubHkgQXR0ZW5kYW5jZVN0YXRlID0gQXR0ZW5kYW5jZVN0YXRlO1xyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoaXMgcm93IGlzIGFjdGlvbmFibGUg4oCUIGEgbm9uLWVtcHR5IGBtZWV0aW5nSWRgIGlzIHJlcXVpcmVkIGZvciB0aGVcclxuICAgKiBtZWV0aW5nLW5hbWUgbGluayBhbmQgYWN0aW9uIGJ1dHRvbiB0byBlbWl0IGFueXRoaW5nIChSZXEgNy4xMCkuXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSB3aGVuIHRoZSByb3cgaGFzIGEgdXNhYmxlIG1lZXRpbmcgaWQuXHJcbiAgICogQG1lbWJlcm9mIE1lZXRpbmdBdHRlbmRhbmNlUm93Q29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0IGlzQWN0aW9uYWJsZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIXRoaXMubWVldGluZz8ubWVldGluZ0lkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0aGUgcm93IGlzIGluIHRoZSBjdXJyZW50bHktYXR0ZW5kaW5nIHN0YXRlLCB3aGljaCBzaG93cyB0aGVcclxuICAgKiBjdXJyZW50bHktYXR0ZW5kaW5nIGluZGljYXRvciBhbmQgdGhlIGxlYXZlLW1lZXRpbmcgYWN0aW9uIChSZXEgNy41KS5cclxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIHdoZW4gdGhlIGF0dGVuZGFuY2Ugc3RhdGUgaXMgYENVUlJFTlRMWV9BVFRFTkRJTkdgLlxyXG4gICAqIEBtZW1iZXJvZiBNZWV0aW5nQXR0ZW5kYW5jZVJvd0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCBpc0N1cnJlbnRseUF0dGVuZGluZygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmF0dGVuZGFuY2VTdGF0ZSA9PT0gQXR0ZW5kYW5jZVN0YXRlLkNVUlJFTlRMWV9BVFRFTkRJTkc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoZSBsb2ctYXR0ZW5kYW5jZSBidXR0b24gc2hvdWxkIGJlIHNob3duOiBvbmx5IHdoZW4gdGhlIHJvdyBpcyBpblxyXG4gICAqIHRoZSBsb2cgc3RhdGUgKG5vdCBjdXJyZW50bHkgYXR0ZW5kaW5nKSBhbmQgdGhlIGhvc3QgZ3JhbnRzXHJcbiAgICogYGNhbkxvZ0F0dGVuZGFuY2VgIChSZXEgNy42LCAxMi4xKS5cclxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIHdoZW4gdGhlIGxvZy1hdHRlbmRhbmNlIGJ1dHRvbiBpcyB2aXNpYmxlLlxyXG4gICAqIEBtZW1iZXJvZiBNZWV0aW5nQXR0ZW5kYW5jZVJvd0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCBzaG93TG9nQXR0ZW5kYW5jZUJ1dHRvbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5pc0N1cnJlbnRseUF0dGVuZGluZyAmJiAhIXRoaXMucGVybWlzc2lvbnM/LmNhbkxvZ0F0dGVuZGFuY2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoZSBsZWF2ZS1tZWV0aW5nIGJ1dHRvbiBzaG91bGQgYmUgc2hvd246IG9ubHkgd2hlbiB0aGUgcm93IGlzIGluXHJcbiAgICogdGhlIGN1cnJlbnRseS1hdHRlbmRpbmcgc3RhdGUgYW5kIHRoZSBob3N0IGdyYW50cyBgY2FuTGVhdmVNZWV0aW5nYFxyXG4gICAqIChSZXEgNy41LCAxMi4yKS5cclxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIHdoZW4gdGhlIGxlYXZlLW1lZXRpbmcgYnV0dG9uIGlzIHZpc2libGUuXHJcbiAgICogQG1lbWJlcm9mIE1lZXRpbmdBdHRlbmRhbmNlUm93Q29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0IHNob3dMZWF2ZU1lZXRpbmdCdXR0b24oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0N1cnJlbnRseUF0dGVuZGluZyAmJiAhIXRoaXMucGVybWlzc2lvbnM/LmNhbkxlYXZlTWVldGluZztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc29sdmVzIGEgZ3JvdXAtb3ItY29tbWl0dGVlIC8gcm9vbS1vci1sb2NhdGlvbiBmaWVsZCB2YWx1ZSwgc3Vic3RpdHV0aW5nXHJcbiAgICogdGhlIGVtcHR5LWZpZWxkIHBsYWNlaG9sZGVyIGZyb20gYGNvbnN0YW50cy5qc29uYCB3aGVuIHRoZSB2YWx1ZSBpcyBlbXB0eSBvclxyXG4gICAqIHVuZGVmaW5lZCAoUmVxIDcuMikuXHJcbiAgICogQHBhcmFtIHtzdHJpbmcgfCB1bmRlZmluZWR9IHZhbHVlIC0gVGhlIHJhdyBmaWVsZCB2YWx1ZSBmcm9tIHRoZSBtZWV0aW5nLlxyXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIHZhbHVlIHRvIGRpc3BsYXksIG9yIHRoZSBlbXB0eS1maWVsZCBwbGFjZWhvbGRlci5cclxuICAgKiBAbWVtYmVyb2YgTWVldGluZ0F0dGVuZGFuY2VSb3dDb21wb25lbnRcclxuICAgKi9cclxuICByZXNvbHZlRmllbGRWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHBsYWNlaG9sZGVyID1cclxuICAgICAgdGhpcy5jb25zdGFudHM/Lm1lZXRpbmdSb3c/LmVtcHR5RmllbGRQbGFjZWhvbGRlciA/PyAn4oCUJztcclxuICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1ZS50cmltKCkubGVuZ3RoID4gMCA/IHZhbHVlIDogcGxhY2Vob2xkZXI7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGb3JtYXRzIHRoZSBtZWV0aW5nIGRhdGUgZm9yIGRpc3BsYXkgdXNpbmcgdGhlIHNoYXJlZCBsdXhvbiBkaXNwbGF5IGZvcm1hdFxyXG4gICAqIChSZXEgNy4zKS4gRmFsbHMgYmFjayB0byB0aGUgcmF3IHZhbHVlIHdoZW4gaXQgY2Fubm90IGJlIHBhcnNlZC5cclxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBmb3JtYXR0ZWQgbWVldGluZyBkYXRlLlxyXG4gICAqIEBtZW1iZXJvZiBNZWV0aW5nQXR0ZW5kYW5jZVJvd0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCBmb3JtYXR0ZWREYXRlKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB2YWx1ZSA9XHJcbiAgICAgIHRoaXMubWVldGluZz8uc3RhcnREYXRlVGltZSA/PyB0aGlzLm1lZXRpbmc/Lm1lZXRpbmdEYXRlO1xyXG4gICAgcmV0dXJuIGZvcm1hdEVwb2NoKFxyXG4gICAgICB2YWx1ZSxcclxuICAgICAgRGF0ZUZvcm1hdHMuZGlzcGxheUZvcm1hdCxcclxuICAgICAgdGhpcy5tZWV0aW5nPy50aW1lem9uZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvcm1hdHMgdGhlIG1lZXRpbmcgdGltZSArIHRpbWV6b25lIGZvciBkaXNwbGF5IHVzaW5nIGx1eG9uIChSZXEgNy4zKS5cclxuICAgKiBUaGUgdGltZXpvbmUgYWJicmV2aWF0aW9uIGZyb20gdGhlIG1lZXRpbmcgbW9kZWwgaXMgYXBwZW5kZWQgdG8gdGhlIHBhcnNlZFxyXG4gICAqIHRpbWUuIEZhbGxzIGJhY2sgdG8gdGhlIHJhdyB2YWx1ZSB3aGVuIGl0IGNhbm5vdCBiZSBwYXJzZWQuXHJcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgZm9ybWF0dGVkIG1lZXRpbmcgdGltZSB3aXRoIHRpbWV6b25lLlxyXG4gICAqIEBtZW1iZXJvZiBNZWV0aW5nQXR0ZW5kYW5jZVJvd0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCBmb3JtYXR0ZWRUaW1lKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB0aW1lem9uZSA9IHRoaXMubWVldGluZz8udGltZXpvbmUgPz8gJyc7XHJcbiAgICBjb25zdCBzdGFydFZhbHVlID1cclxuICAgICAgdGhpcy5tZWV0aW5nPy5zdGFydERhdGVUaW1lID8/IHRoaXMubWVldGluZz8ubWVldGluZ1RpbWU7XHJcbiAgICBjb25zdCBzdGFydCA9IGZvcm1hdEVwb2NoKFxyXG4gICAgICBzdGFydFZhbHVlLFxyXG4gICAgICBEYXRlRm9ybWF0cy50aW1lTWVyaWRpZW1Gb3JtYXQsXHJcbiAgICAgIHRpbWV6b25lXHJcbiAgICApO1xyXG4gICAgY29uc3QgZW5kID0gZm9ybWF0RXBvY2goXHJcbiAgICAgIHRoaXMubWVldGluZz8uZW5kRGF0ZVRpbWUsXHJcbiAgICAgIERhdGVGb3JtYXRzLnRpbWVNZXJpZGllbUZvcm1hdCxcclxuICAgICAgdGltZXpvbmVcclxuICAgICk7XHJcbiAgICBjb25zdCByYW5nZSA9IGVuZCA/IGAke3N0YXJ0fSDigJMgJHtlbmR9YCA6IHN0YXJ0O1xyXG4gICAgaWYgKCFyYW5nZSkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGltZXpvbmUgPyBgJHtyYW5nZX0gJHt0aW1lem9uZX1gIDogcmFuZ2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGVzIGFjdGl2YXRpb24gb2YgdGhlIGF0dGVuZGFuY2UgYWN0aW9uIGJ1dHRvbi4gRGVsZWdhdGVzIHRvIHRoZSBwdXJlXHJcbiAgICogYHJlc29sdmVBdHRlbmRhbmNlQWN0aW9uYCBoYW5kbGVyIGFuZCBlbWl0cyBleGFjdGx5IG9uZSBldmVudCBiYXNlZCBvbiB0aGVcclxuICAgKiByZXNvbHZlZCBhY3Rpb246IGBsb2dBdHRlbmRhbmNlYCBmb3IgYExPR19BVFRFTkRBTkNFYCwgYGxlYXZlTWVldGluZ2AgZm9yXHJcbiAgICogYExFQVZFX01FRVRJTkdgLCBhbmQgbm90aGluZyBmb3IgYE5PTkVgIChlbXB0eSBpZCBvciBpbi1mbGlnaHQpXHJcbiAgICogKFJlcSA3LjcsIDcuOCwgNy45LCA3LjEwLCAxMy42KS5cclxuICAgKiBAbWVtYmVyb2YgTWVldGluZ0F0dGVuZGFuY2VSb3dDb21wb25lbnRcclxuICAgKi9cclxuICBvbkF0dGVuZGFuY2VBY3Rpb24oKTogdm9pZCB7XHJcbiAgICBjb25zdCBhY3Rpb24gPSByZXNvbHZlQXR0ZW5kYW5jZUFjdGlvbihcclxuICAgICAgdGhpcy5hdHRlbmRhbmNlU3RhdGUsXHJcbiAgICAgIHRoaXMuaXNJbkZsaWdodCxcclxuICAgICAgdGhpcy5tZWV0aW5nPy5tZWV0aW5nSWRcclxuICAgICk7XHJcblxyXG4gICAgaWYgKGFjdGlvbiA9PT0gQXR0ZW5kYW5jZUFjdGlvbi5MT0dfQVRURU5EQU5DRSkge1xyXG4gICAgICB0aGlzLmxvZ0F0dGVuZGFuY2UuZW1pdCh0aGlzLm1lZXRpbmcubWVldGluZ0lkKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChhY3Rpb24gPT09IEF0dGVuZGFuY2VBY3Rpb24uTEVBVkVfTUVFVElORykge1xyXG4gICAgICB0aGlzLmxlYXZlTWVldGluZy5lbWl0KHRoaXMubWVldGluZy5tZWV0aW5nSWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyBhY3RpdmF0aW9uIG9mIHRoZSBtZWV0aW5nLW5hbWUgbGluay4gRW1pdHMgdGhlIG1lZXRpbmcgaWQgb25seSB3aGVuXHJcbiAgICogdGhlIHJvdyBpcyBhY3Rpb25hYmxlIChub24tZW1wdHkgbWVldGluZyBpZCkgKFJlcSA3LjQsIDcuMTApLlxyXG4gICAqIEBtZW1iZXJvZiBNZWV0aW5nQXR0ZW5kYW5jZVJvd0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uT3Blbk1lZXRpbmcoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNBY3Rpb25hYmxlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMub3Blbk1lZXRpbmcuZW1pdCh0aGlzLm1lZXRpbmcubWVldGluZ0lkKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwiaWVlZXNhLW1lZXRpbmctYXR0ZW5kYW5jZS1yb3dcIlxyXG4gIFtjbGFzcy5pZWVlc2EtbWVldGluZy1hdHRlbmRhbmNlLXJvdy0tY29tcGFjdF09XCJjb21wYWN0XCJcclxuPlxyXG4gIDwhLS0gTWVldGluZyBuYW1lICsgZ3JvdXAvbG9jYXRpb24gKGhpZGRlbiBpbiB0aGUgY29tcGFjdCBzdGFuZGFsb25lIHZhcmlhbnQpLiAtLT5cclxuICA8ZGl2IGNsYXNzPVwiaWVlZXNhLW1lZXRpbmctYXR0ZW5kYW5jZS1yb3dfX25hbWUtY29sXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbXBhY3RcIj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIGNsYXNzPVwiaWVlZXNhLW1lZXRpbmctYXR0ZW5kYW5jZS1yb3dfX25hbWUtbGlua1wiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FjdGlvbmFibGVcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29uc3RhbnRzLm1lZXRpbmdSb3cuYXJpYUxhYmVsLm1lZXRpbmdOYW1lTGlua1wiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uT3Blbk1lZXRpbmcoKVwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBtZWV0aW5nLm1lZXRpbmdOYW1lIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgPHAgY2xhc3M9XCJpZWVlc2EtbWVldGluZy1hdHRlbmRhbmNlLXJvd19fc3VidGl0bGVcIj5cclxuICAgICAgICB7eyByZXNvbHZlRmllbGRWYWx1ZShtZWV0aW5nLmdyb3VwT3JDb21taXR0ZWUpIH19PG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nSWY9XCJtZWV0aW5nLnJvb21PckxvY2F0aW9uXCJcclxuICAgICAgICA+ICZtaWRkb3Q7IHt7IG1lZXRpbmcucm9vbU9yTG9jYXRpb24gfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9wPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gTUVFVElORyBEQVRFIGNvbHVtbi4gLS0+XHJcbiAgPGRsIGNsYXNzPVwiaWVlZXNhLW1lZXRpbmctYXR0ZW5kYW5jZS1yb3dfX2NvbCBpZWVlc2EtbWVldGluZy1hdHRlbmRhbmNlLXJvd19fY29sLS1kYXRlXCI+XHJcbiAgICA8ZHQgY2xhc3M9XCJpZWVlc2EtbWVldGluZy1hdHRlbmRhbmNlLXJvd19fY29sLWxhYmVsXCI+XHJcbiAgICAgIHt7IGNvbnN0YW50cy5ldmVudEdyb3VwQ2FyZC5tZWV0aW5nRGF0ZUxhYmVsIH19XHJcbiAgICA8L2R0PlxyXG4gICAgPGRkIGNsYXNzPVwiaWVlZXNhLW1lZXRpbmctYXR0ZW5kYW5jZS1yb3dfX2NvbC12YWx1ZVwiPlxyXG4gICAgICB7eyBmb3JtYXR0ZWREYXRlIH19XHJcbiAgICA8L2RkPlxyXG4gIDwvZGw+XHJcblxyXG4gIDwhLS0gVElNRSAmIFRJTUVaT05FIGNvbHVtbi4gLS0+XHJcbiAgPGRsIGNsYXNzPVwiaWVlZXNhLW1lZXRpbmctYXR0ZW5kYW5jZS1yb3dfX2NvbCBpZWVlc2EtbWVldGluZy1hdHRlbmRhbmNlLXJvd19fY29sLS10aW1lXCI+XHJcbiAgICA8ZHQgY2xhc3M9XCJpZWVlc2EtbWVldGluZy1hdHRlbmRhbmNlLXJvd19fY29sLWxhYmVsXCI+XHJcbiAgICAgIHt7IGNvbnN0YW50cy5tZWV0aW5nUm93LnRpbWVUaW1lem9uZUxhYmVsIH19XHJcbiAgICA8L2R0PlxyXG4gICAgPGRkIGNsYXNzPVwiaWVlZXNhLW1lZXRpbmctYXR0ZW5kYW5jZS1yb3dfX2NvbC12YWx1ZVwiPlxyXG4gICAgICB7eyBmb3JtYXR0ZWRUaW1lIH19XHJcbiAgICA8L2RkPlxyXG4gIDwvZGw+XHJcblxyXG4gIDwhLS0gQXR0ZW5kYW5jZSBpbmRpY2F0b3IgKyBhY3Rpb25zIGNvbHVtbi4gLS0+XHJcbiAgPGRpdiBjbGFzcz1cImllZWVzYS1tZWV0aW5nLWF0dGVuZGFuY2Utcm93X19hY3Rpb25zXCI+XHJcbiAgICA8IS0tIEN1cnJlbnRseS1hdHRlbmRpbmcgcGlsbCBzaG93biBvbmx5IGluIHRoZSBhdHRlbmRpbmcgc3RhdGUuIC0tPlxyXG4gICAgPHNwYW5cclxuICAgICAgKm5nSWY9XCJpc0N1cnJlbnRseUF0dGVuZGluZ1wiXHJcbiAgICAgIGNsYXNzPVwiaWVlZXNhLW1lZXRpbmctYXR0ZW5kYW5jZS1yb3dfX2F0dGVuZGluZy1waWxsXCJcclxuICAgID5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJpZWVlc2EtbWVldGluZy1hdHRlbmRhbmNlLXJvd19fYXR0ZW5kaW5nLWRvdFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cclxuICAgICAge3sgY29uc3RhbnRzLm1lZXRpbmdSb3cuY3VycmVudGx5QXR0ZW5kaW5nSW5kaWNhdG9yIH19XHJcbiAgICA8L3NwYW4+XHJcblxyXG4gICAgPCEtLSBMb2ctYXR0ZW5kYW5jZSBidXR0b246IHNob3duIGluIHRoZSBsb2cgc3RhdGUgd2l0aCB0aGUgcGVybWlzc2lvbi4gLS0+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgICpuZ0lmPVwic2hvd0xvZ0F0dGVuZGFuY2VCdXR0b25cIlxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgY2xhc3M9XCJpZWVlc2EtbWVldGluZy1hdHRlbmRhbmNlLXJvd19fYWN0aW9uLWJ1dHRvbiBpZWVlc2EtbWVldGluZy1hdHRlbmRhbmNlLXJvd19fYWN0aW9uLWJ1dHRvbi0tbG9nXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImlzSW5GbGlnaHQgfHwgIWlzQWN0aW9uYWJsZVwiXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29uc3RhbnRzLm1lZXRpbmdSb3cuYXJpYUxhYmVsLmxvZ0F0dGVuZGFuY2VcIlxyXG4gICAgICAoY2xpY2spPVwib25BdHRlbmRhbmNlQWN0aW9uKClcIlxyXG4gICAgPlxyXG4gICAgICB7eyBjb25zdGFudHMubWVldGluZ1Jvdy5sb2dBdHRlbmRhbmNlTGFiZWwgfX1cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDwhLS0gTGVhdmUtbWVldGluZyBidXR0b246IHNob3duIGluIHRoZSBhdHRlbmRpbmcgc3RhdGUgd2l0aCB0aGUgcGVybWlzc2lvbi4gLS0+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgICpuZ0lmPVwic2hvd0xlYXZlTWVldGluZ0J1dHRvblwiXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBjbGFzcz1cImllZWVzYS1tZWV0aW5nLWF0dGVuZGFuY2Utcm93X19hY3Rpb24tYnV0dG9uIGllZWVzYS1tZWV0aW5nLWF0dGVuZGFuY2Utcm93X19hY3Rpb24tYnV0dG9uLS1sZWF2ZVwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJpc0luRmxpZ2h0IHx8ICFpc0FjdGlvbmFibGVcIlxyXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbnN0YW50cy5tZWV0aW5nUm93LmFyaWFMYWJlbC5sZWF2ZU1lZXRpbmdcIlxyXG4gICAgICAoY2xpY2spPVwib25BdHRlbmRhbmNlQWN0aW9uKClcIlxyXG4gICAgPlxyXG4gICAgICB7eyBjb25zdGFudHMubWVldGluZ1Jvdy5sZWF2ZU1lZXRpbmdMYWJlbCB9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVldGluZy1hdHRlbmRhbmNlLXJvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQvc3JjL2xpYi9jb21wb25lbnRzL21lZXRpbmctYXR0ZW5kYW5jZS1yb3cvbWVldGluZy1hdHRlbmRhbmNlLXJvdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQvc3JjL2xpYi9jb21wb25lbnRzL21lZXRpbmctYXR0ZW5kYW5jZS1yb3cvbWVldGluZy1hdHRlbmRhbmNlLXJvdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxLQUFLLFdBQVcsTUFBTSw2QkFBNkIsQ0FBQzs7O0FBRTNEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFVSCxNQUFNLE9BQU8sNkJBQTZCO0lBVDFDO1FBVUUsOERBQThEO1FBQzlELGNBQVMsR0FBUSxXQUFXLENBQUM7UUFLN0IsMkVBQTJFO1FBQ2xFLG9CQUFlLEdBQW9CLGVBQWUsQ0FBQyxhQUFhLENBQUM7UUFFMUUsNEVBQTRFO1FBQ25FLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFNUIsMEVBQTBFO1FBQ2pFLGdCQUFXLEdBQWdDO1lBQ2xELGdCQUFnQixFQUFFLEtBQUs7WUFDdkIsZUFBZSxFQUFFLEtBQUs7U0FDdkIs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RSxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sSUFBSSxFQUFFO1lBQ3BDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVM7WUFDakMsYUFBYSxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQjtZQUN6QyxZQUFZLEVBQUUsSUFBSSxDQUFDLG9CQUFvQjtTQUN4QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGFBQWE7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN0QixPQUFPO1NBQ1I7UUFDRCw0RUFBNEU7UUFDNUUsd0JBQXdCO1FBQ3hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7WUFDMUIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxJQUFJLEVBQUU7WUFDcEMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUztTQUNsQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQW5RVSw2QkFBNkI7bUdBQTdCLDZCQUE2QixzWEN0QzFDLG8wSEF5RkEsMHBZRHhEWSxZQUFZOzs0RkFLWCw2QkFBNkI7a0JBVHpDLFNBQVM7K0JBRUUsK0JBQStCLGNBQzdCLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxpQkFHUixpQkFBaUIsQ0FBQyxJQUFJOzhCQU81QixPQUFPO3NCQUFmLEtBQUs7Z0JBR0csZUFBZTtzQkFBdkIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBVUcsT0FBTztzQkFBZixLQUFLO2dCQUdJLFdBQVc7c0JBQXBCLE1BQU07Z0JBR0csYUFBYTtzQkFBdEIsTUFBTTtnQkFHRyxZQUFZO3NCQUFyQixNQUFNO2dCQU9HLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEF0dGVuZGFuY2VBY3Rpb25QZXJtaXNzaW9ucyB9IGZyb20gJy4uLy4uL21vZGVscy9hdHRlbmRhbmNlLWFjdGlvbi1wZXJtaXNzaW9ucy5tb2RlbCc7XHJcbmltcG9ydCB7IEF0dGVuZGFuY2VTdGF0ZSB9IGZyb20gJy4uLy4uL21vZGVscy9hdHRlbmRhbmNlLXN0YXRlLm1vZGVsJztcclxuaW1wb3J0IHsgTWVldGluZ1JvdyB9IGZyb20gJy4uLy4uL21vZGVscy9tZWV0aW5nLXJvdy5tb2RlbCc7XHJcbmltcG9ydCB7IERhdGVGb3JtYXRzIH0gZnJvbSAnLi4vLi4vYXNzZXRzL2RhdGUtZm9ybWF0cyc7XHJcbmltcG9ydCB7IGZvcm1hdEVwb2NoIH0gZnJvbSAnLi4vLi4vdXRpbHMvZGF0ZS1mb3JtYXQudXRpbCc7XHJcbmltcG9ydCAqIGFzIHNjcmVlblRleHRzIGZyb20gJy4uLy4uL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcblxyXG4vKipcclxuICogTWVldGluZ19BdHRlbmRhbmNlX1JvdyByZW5kZXJzIGEgc2luZ2xlIG1lZXRpbmcgd2l0aGluIGFuIGV2ZW50LWdyb3VwIGNhcmQ6XHJcbiAqIHRoZSBtZWV0aW5nLW5hbWUgbGluaywgZ3JvdXAvY29tbWl0dGVlLCByb29tL2xvY2F0aW9uLCBkYXRlLCBhbmRcclxuICogdGltZSt0aW1lem9uZSAoYWxsIGx1eG9uLWZvcm1hdHRlZCksIHRvZ2V0aGVyIHdpdGggdGhlIGF0dGVuZGFuY2UgYWN0aW9uXHJcbiAqIGJ1dHRvbiB0aGF0IGRyaXZlcyB0aGUgcGVyLW1lZXRpbmcgYXR0ZW5kYW5jZSBzdGF0ZSBtYWNoaW5lLlxyXG4gKlxyXG4gKiBUaGUgY29tcG9uZW50IGlzIHB1cmVseSBwcmVzZW50YXRpb25hbCDigJQgaXQgZW1pdHMgbmF2aWdhdGlvbiBhbmQgYXR0ZW5kYW5jZVxyXG4gKiBpbnRlbnRzIHZpYSBgQE91dHB1dCgpYCBhbmQgbmV2ZXIgcGVyZm9ybXMgbmF2aWdhdGlvbiBvciBIVFRQIGl0c2VsZi4gVGhlXHJcbiAqIGFjdGlvbiBidXR0b24gZGVsZWdhdGVzIHRvIHRoZSBwdXJlIGByZXNvbHZlQXR0ZW5kYW5jZUFjdGlvbmAgaGFuZGxlciBzbyB0aGVcclxuICogZW1pdC9ndWFyZCBsb2dpYyBpcyBzaGFyZWQgd2l0aCB0aGUgcHJvcGVydHktdGVzdGVkIGNvcmUgKFByb3BlcnR5IDEpLCBhbmQgdGhlXHJcbiAqIGRpc3BsYXllZCBzdGF0ZSBvbmx5IGFkdmFuY2VzIHdoZW4gdGhlIGhvc3QgdXBkYXRlcyBgYXR0ZW5kYW5jZVN0YXRlYC5cclxuICogQGV4cG9ydFxyXG4gKiBAY2xhc3MgTWVldGluZ0F0dGVuZGFuY2VSb3dDb21wb25lbnRcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXHJcbiAgc2VsZWN0b3I6ICdpZWVlc2EtbWVldGluZy1hdHRlbmRhbmNlLXJvdycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vbWVldGluZy1hdHRlbmRhbmNlLXJvdy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbWVldGluZy1hdHRlbmRhbmNlLXJvdy5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZWV0aW5nQXR0ZW5kYW5jZVJvd0NvbXBvbmVudCB7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBjb25zdGFudHM6IGFueSA9IHNjcmVlblRleHRzO1xyXG5cclxuICAvKiogVGhlIG1lZXRpbmcgcmVuZGVyZWQgYnkgdGhpcyByb3cuICovXHJcbiAgQElucHV0KCkgbWVldGluZyE6IE1lZXRpbmdSb3c7XHJcblxyXG4gIC8qKiBUaGUgY3VycmVudCBhdHRlbmRhbmNlIHN0YXRlIGNvbnRyb2xsaW5nIGxhYmVsL2luZGljYXRvciBhbmQgYWN0aW9uLiAqL1xyXG4gIEBJbnB1dCgpIGF0dGVuZGFuY2VTdGF0ZTogQXR0ZW5kYW5jZVN0YXRlID0gQXR0ZW5kYW5jZVN0YXRlLk5PVF9BVFRFTkRJTkc7XHJcblxyXG4gIC8qKiBXaGV0aGVyIGFuIGF0dGVuZGFuY2UgYWN0aW9uIGZvciB0aGlzIG1lZXRpbmcgaXMgYXdhaXRpbmcgcmVzb2x1dGlvbi4gKi9cclxuICBASW5wdXQoKSBpc0luRmxpZ2h0ID0gZmFsc2U7XHJcblxyXG4gIC8qKiBIb3N0IHBlcm1pc3Npb25zIGdhdGluZyB0aGUgbG9nLWF0dGVuZGFuY2UgLyBsZWF2ZS1tZWV0aW5nIGJ1dHRvbnMuICovXHJcbiAgQElucHV0KCkgcGVybWlzc2lvbnM6IEF0dGVuZGFuY2VBY3Rpb25QZXJtaXNzaW9ucyA9IHtcclxuICAgIGNhbkxvZ0F0dGVuZGFuY2U6IGZhbHNlLFxyXG4gICAgY2FuTGVhdmVNZWV0aW5nOiBmYWxzZSxcclxuICB9O1xyXG5cclxuICAvKipcclxuICAgKiBSZW5kZXJzIHRoZSBsZWFuZXIgXCJzdGFuZGFsb25lIG1lZXRpbmdcIiB2YXJpYW50IHVzZWQgYnkgc3RhbmRhbG9uZS1tZWV0aW5nXHJcbiAgICogY2FyZHMgKHRoZSBncm91cC9sb2NhdGlvbiBhbmQgc3RhdHVzIGxpdmUgb24gdGhlIHBhcmVudCBjYXJkLCBzbyB0aGUgcm93XHJcbiAgICogb25seSBzaG93cyB0aGUgVElNRSAmIFRJTUVaT05FIGJsb2NrIGFuZCB0aGUgYXR0ZW5kYW5jZSArIFZpZXcgYWN0aW9ucykuXHJcbiAgICovXHJcbiAgQElucHV0KCkgY29tcGFjdCA9IGZhbHNlO1xyXG5cclxuICAvKiogRW1pdHMgdGhlIG1lZXRpbmcgaWQgd2hlbiB0aGUgbWVldGluZy1uYW1lIGxpbmsgaXMgYWN0aXZhdGVkIChSZXEgNy40KS4gKi9cclxuICBAT3V0cHV0KCkgb3Blbk1lZXRpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgLyoqIEVtaXRzIHRoZSBtZWV0aW5nIGlkIHRvIHJlcXVlc3QgbG9nZ2luZyBhdHRlbmRhbmNlIChSZXEgNy43KS4gKi9cclxuICBAT3V0cHV0KCkgbG9nQXR0ZW5kYW5jZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAvKiogRW1pdHMgdGhlIG1lZXRpbmcgaWQgdG8gcmVxdWVzdCBsZWF2aW5nIHRoZSBtZWV0aW5nIChSZXEgNy44KS4gKi9cclxuICBAT3V0cHV0KCkgbGVhdmVNZWV0aW5nID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIHRoZSBvd25pbmcgZXZlbnQgaWQgKyBtZWV0aW5nIGlkIHdoZW4gdGhlIGF0dGVuZGFuY2UgYnV0dG9uIGlzXHJcbiAgICogYWN0aXZhdGVkIGZvciBhbiBJbi1Qcm9ncmVzcyBtZWV0aW5nLCBzbyB0aGUgaG9zdCBjYW4gbmF2aWdhdGUgdG8gdGhlXHJcbiAgICogdmlldy1tZWV0aW5nIHNjcmVlbiAod2hlcmUgdGhlIHJlYWwgTG9nIEF0dGVuZGFuY2UgcG9wdXAgb3BlbnMpLlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBuYXZpZ2F0ZVRvTWVldGluZyA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgZXZlbnRJZDogc3RyaW5nO1xyXG4gICAgbWVldGluZ0lkOiBzdHJpbmc7XHJcbiAgICBsb2dBdHRlbmRhbmNlPzogYm9vbGVhbjtcclxuICAgIGxlYXZlTWVldGluZz86IGJvb2xlYW47XHJcbiAgfT4oKTtcclxuXHJcbiAgLyoqIEV4cG9zZSB0aGUgZW51bSB0byB0aGUgdGVtcGxhdGUgZm9yIHN0YXRlIGNvbXBhcmlzb25zLiAqL1xyXG4gIHJlYWRvbmx5IEF0dGVuZGFuY2VTdGF0ZSA9IEF0dGVuZGFuY2VTdGF0ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0aGUgbWVldGluZyBpcyBlbGlnaWJsZSBmb3IgYW4gYXR0ZW5kYW5jZSBhY3Rpb24gKGFuIGF0dGVuZGFuY2VcclxuICAgKiBidXR0b24gaXMgcmVuZGVyZWQgYXQgYWxsKS4gVGhlIGJhY2tlbmQgc3VwcGxpZXMgYW4gYGF0dGVuZGFuY2VTdGF0ZWAgZm9yXHJcbiAgICogZXZlcnkgbG9nZ2FibGUgbWVldGluZywgc28gaXRzIHByZXNlbmNlIGlzIHRoZSBlbGlnaWJpbGl0eSBzaWduYWwuIFJvd3MgdGhlXHJcbiAgICogYmFja2VuZCBkZWVtcyBpbmVsaWdpYmxlIGNhcnJ5IG5vIHN0YXRlIGFuZCByZW5kZXIgbm8gYnV0dG9uLlxyXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgd2hlbiB0aGUgbWVldGluZyBpcyBhdHRlbmRhbmNlLWVsaWdpYmxlLlxyXG4gICAqIEBtZW1iZXJvZiBNZWV0aW5nQXR0ZW5kYW5jZVJvd0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCBpc0VsaWdpYmxlRm9yQXR0ZW5kYW5jZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIXRoaXMubWVldGluZz8uYXR0ZW5kYW5jZVN0YXRlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0aGUgbWVldGluZyBpcyBjdXJyZW50bHkgSW4gUHJvZ3Jlc3MuIE1pcnJvcnMgdGhlIGF0dGVuZGFuY2VcclxuICAgKiBsaWJyYXJ5J3MgYGlzTWVldGluZ0FjdGl2ZWA6IHRoZSBhdHRlbmRhbmNlIGJ1dHRvbiBpcyBvbmx5IEVOQUJMRUQgZHVyaW5nXHJcbiAgICogdGhlIG1lZXRpbmc7IG91dHNpZGUgdGhlIG1lZXRpbmcgdGltZSBpdCByZW5kZXJzIGRpc2FibGVkIHdpdGggdGhlIGluYWN0aXZlXHJcbiAgICogbWVzc2FnZS5cclxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIHdoZW4gdGhlIG1lZXRpbmcgc3RhdHVzIGlzICdJbiBQcm9ncmVzcycuXHJcbiAgICogQG1lbWJlcm9mIE1lZXRpbmdBdHRlbmRhbmNlUm93Q29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0IGlzTWVldGluZ0FjdGl2ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAodGhpcy5tZWV0aW5nPy5zdGF0dXMgPz8gJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpID09PSAnaW4gcHJvZ3Jlc3MnO1xyXG4gIH1cclxuXHJcbiAgLyoqIFRoZSBpbmFjdGl2ZS1idXR0b24gbWVzc2FnZSBzaG93biB3aGVuIHRoZSBtZWV0aW5nIGlzIG5vdCBJbiBQcm9ncmVzcy4gKi9cclxuICBnZXQgaW5hY3RpdmVNZXNzYWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmNvbnN0YW50cz8ubWVldGluZ1Jvdz8uaW5hY3RpdmVNZXNzYWdlID8/XHJcbiAgICAgICdBdHRlbmRhbmNlIGxvZ2dpbmcgb25seSBhdmFpbGFibGUgZHVyaW5nIG1lZXRpbmcsIFBsZWFzZSBjb250YWN0IHlvdXIgbWVldGluZyBhZG1pbmlzdHJhdG9yIGZvciBhbnkgbmVjZXNzYXJ5IGNvcnJlY3Rpb25zLidcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoaXMgcm93IGlzIGFjdGlvbmFibGUg4oCUIGEgbm9uLWVtcHR5IGBtZWV0aW5nSWRgIGlzIHJlcXVpcmVkIGZvciB0aGVcclxuICAgKiBtZWV0aW5nLW5hbWUgbGluayBhbmQgYWN0aW9uIGJ1dHRvbiB0byBlbWl0IGFueXRoaW5nIChSZXEgNy4xMCkuXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSB3aGVuIHRoZSByb3cgaGFzIGEgdXNhYmxlIG1lZXRpbmcgaWQuXHJcbiAgICogQG1lbWJlcm9mIE1lZXRpbmdBdHRlbmRhbmNlUm93Q29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0IGlzQWN0aW9uYWJsZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIXRoaXMubWVldGluZz8ubWVldGluZ0lkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0aGUgcm93IGlzIGluIHRoZSBjdXJyZW50bHktYXR0ZW5kaW5nIHN0YXRlLCB3aGljaCBzaG93cyB0aGVcclxuICAgKiBjdXJyZW50bHktYXR0ZW5kaW5nIGluZGljYXRvciBhbmQgdGhlIGxlYXZlLW1lZXRpbmcgYWN0aW9uIChSZXEgNy41KS5cclxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIHdoZW4gdGhlIGF0dGVuZGFuY2Ugc3RhdGUgaXMgYENVUlJFTlRMWV9BVFRFTkRJTkdgLlxyXG4gICAqIEBtZW1iZXJvZiBNZWV0aW5nQXR0ZW5kYW5jZVJvd0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCBpc0N1cnJlbnRseUF0dGVuZGluZygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmF0dGVuZGFuY2VTdGF0ZSA9PT0gQXR0ZW5kYW5jZVN0YXRlLkNVUlJFTlRMWV9BVFRFTkRJTkc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoZSBsb2ctYXR0ZW5kYW5jZSBidXR0b24gc2hvdWxkIGJlIHNob3duOiB3aGVuZXZlciB0aGUgcm93IGlzIG5vdFxyXG4gICAqIGN1cnJlbnRseSBhdHRlbmRpbmcuIE1pcnJvcnMgdGhlIGF0dGVuZGFuY2UgbGlicmFyeSwgd2hpY2ggdG9nZ2xlcyBiZXR3ZWVuXHJcbiAgICogTG9nIEF0dGVuZGFuY2UgYW5kIExlYXZlIE1lZXRpbmcgcHVyZWx5IG9uIGF0dGVuZGFuY2Ugc3RhdGUgKG5vIHBlcm1pc3Npb25cclxuICAgKiBnYXRpbmcpLlxyXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgd2hlbiB0aGUgbG9nLWF0dGVuZGFuY2UgYnV0dG9uIGlzIHZpc2libGUuXHJcbiAgICogQG1lbWJlcm9mIE1lZXRpbmdBdHRlbmRhbmNlUm93Q29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0IHNob3dMb2dBdHRlbmRhbmNlQnV0dG9uKCk6IGJvb2xlYW4ge1xyXG4gICAgLy8gU2hvd24gZm9yIGV2ZXJ5IGVsaWdpYmxlLCBub3QtY3VycmVudGx5LWF0dGVuZGluZyBtZWV0aW5nLiBXaGVuIHRoZVxyXG4gICAgLy8gbWVldGluZyBpcyBub3QgSW4gUHJvZ3Jlc3MgdGhlIGJ1dHRvbiByZW5kZXJzIGRpc2FibGVkIChzZWUgaXNMb2dEaXNhYmxlZCkuXHJcbiAgICByZXR1cm4gdGhpcy5pc0VsaWdpYmxlRm9yQXR0ZW5kYW5jZSAmJiAhdGhpcy5pc0N1cnJlbnRseUF0dGVuZGluZztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdGhlIExvZyBBdHRlbmRhbmNlIGJ1dHRvbiBpcyBkaXNhYmxlZDogb3V0c2lkZSB0aGUgbWVldGluZyB0aW1lXHJcbiAgICogKG5vdCBJbiBQcm9ncmVzcykgb3Igd2hpbGUgYW4gYXR0ZW5kYW5jZSBhY3Rpb24gaXMgaW4gZmxpZ2h0LiBNYXRjaGVzIHRoZVxyXG4gICAqIHZpZXctbWVldGluZyBwYWdlLCB3aGljaCBkaXNhYmxlcyB0aGUgYnV0dG9uIHdpdGggYW4gaW5hY3RpdmUgbWVzc2FnZSB3aGVuXHJcbiAgICogdGhlIG1lZXRpbmcgaXMgbm90IGFjdGl2ZS5cclxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIHdoZW4gdGhlIExvZyBBdHRlbmRhbmNlIGJ1dHRvbiBzaG91bGQgYmUgZGlzYWJsZWQuXHJcbiAgICogQG1lbWJlcm9mIE1lZXRpbmdBdHRlbmRhbmNlUm93Q29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0IGlzTG9nRGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIXRoaXMuaXNNZWV0aW5nQWN0aXZlIHx8IHRoaXMuaXNJbkZsaWdodCB8fCAhdGhpcy5pc0FjdGlvbmFibGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoZSBsZWF2ZS1tZWV0aW5nIGJ1dHRvbiBzaG91bGQgYmUgc2hvd246IHdoZW5ldmVyIHRoZSByb3cgaXNcclxuICAgKiBjdXJyZW50bHkgYXR0ZW5kaW5nLiBNaXJyb3JzIHRoZSBhdHRlbmRhbmNlIGxpYnJhcnkgKG5vIHBlcm1pc3Npb24gZ2F0aW5nKS5cclxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIHdoZW4gdGhlIGxlYXZlLW1lZXRpbmcgYnV0dG9uIGlzIHZpc2libGUuXHJcbiAgICogQG1lbWJlcm9mIE1lZXRpbmdBdHRlbmRhbmNlUm93Q29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0IHNob3dMZWF2ZU1lZXRpbmdCdXR0b24oKTogYm9vbGVhbiB7XHJcbiAgICAvLyBMZWF2ZSBNZWV0aW5nIGlzIG9ubHkgbWVhbmluZ2Z1bCB3aGlsZSB0aGUgbWVldGluZyBpcyBhY3RpdmUuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmlzRWxpZ2libGVGb3JBdHRlbmRhbmNlICYmXHJcbiAgICAgIHRoaXMuaXNDdXJyZW50bHlBdHRlbmRpbmcgJiZcclxuICAgICAgdGhpcy5pc01lZXRpbmdBY3RpdmVcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNvbHZlcyBhIGdyb3VwLW9yLWNvbW1pdHRlZSAvIHJvb20tb3ItbG9jYXRpb24gZmllbGQgdmFsdWUsIHN1YnN0aXR1dGluZ1xyXG4gICAqIHRoZSBlbXB0eS1maWVsZCBwbGFjZWhvbGRlciBmcm9tIGBjb25zdGFudHMuanNvbmAgd2hlbiB0aGUgdmFsdWUgaXMgZW1wdHkgb3JcclxuICAgKiB1bmRlZmluZWQgKFJlcSA3LjIpLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgdW5kZWZpbmVkfSB2YWx1ZSAtIFRoZSByYXcgZmllbGQgdmFsdWUgZnJvbSB0aGUgbWVldGluZy5cclxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSB2YWx1ZSB0byBkaXNwbGF5LCBvciB0aGUgZW1wdHktZmllbGQgcGxhY2Vob2xkZXIuXHJcbiAgICogQG1lbWJlcm9mIE1lZXRpbmdBdHRlbmRhbmNlUm93Q29tcG9uZW50XHJcbiAgICovXHJcbiAgcmVzb2x2ZUZpZWxkVmFsdWUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBwbGFjZWhvbGRlciA9XHJcbiAgICAgIHRoaXMuY29uc3RhbnRzPy5tZWV0aW5nUm93Py5lbXB0eUZpZWxkUGxhY2Vob2xkZXIgPz8gJ+KAlCc7XHJcbiAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUudHJpbSgpLmxlbmd0aCA+IDAgPyB2YWx1ZSA6IHBsYWNlaG9sZGVyO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRm9ybWF0cyB0aGUgbWVldGluZyBkYXRlIGZvciBkaXNwbGF5IHVzaW5nIHRoZSBzaGFyZWQgbHV4b24gZGlzcGxheSBmb3JtYXRcclxuICAgKiAoUmVxIDcuMykuIEZhbGxzIGJhY2sgdG8gdGhlIHJhdyB2YWx1ZSB3aGVuIGl0IGNhbm5vdCBiZSBwYXJzZWQuXHJcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgZm9ybWF0dGVkIG1lZXRpbmcgZGF0ZS5cclxuICAgKiBAbWVtYmVyb2YgTWVldGluZ0F0dGVuZGFuY2VSb3dDb21wb25lbnRcclxuICAgKi9cclxuICBnZXQgZm9ybWF0dGVkRGF0ZSgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdmFsdWUgPVxyXG4gICAgICB0aGlzLm1lZXRpbmc/LnN0YXJ0RGF0ZVRpbWUgPz8gdGhpcy5tZWV0aW5nPy5tZWV0aW5nRGF0ZTtcclxuICAgIHJldHVybiBmb3JtYXRFcG9jaChcclxuICAgICAgdmFsdWUsXHJcbiAgICAgIERhdGVGb3JtYXRzLmRpc3BsYXlGb3JtYXQsXHJcbiAgICAgIHRoaXMubWVldGluZz8udGltZXpvbmVcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGb3JtYXRzIHRoZSBtZWV0aW5nIHRpbWUgKyB0aW1lem9uZSBmb3IgZGlzcGxheSB1c2luZyBsdXhvbiAoUmVxIDcuMykuXHJcbiAgICogVGhlIHRpbWV6b25lIGFiYnJldmlhdGlvbiBmcm9tIHRoZSBtZWV0aW5nIG1vZGVsIGlzIGFwcGVuZGVkIHRvIHRoZSBwYXJzZWRcclxuICAgKiB0aW1lLiBGYWxscyBiYWNrIHRvIHRoZSByYXcgdmFsdWUgd2hlbiBpdCBjYW5ub3QgYmUgcGFyc2VkLlxyXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGZvcm1hdHRlZCBtZWV0aW5nIHRpbWUgd2l0aCB0aW1lem9uZS5cclxuICAgKiBAbWVtYmVyb2YgTWVldGluZ0F0dGVuZGFuY2VSb3dDb21wb25lbnRcclxuICAgKi9cclxuICBnZXQgZm9ybWF0dGVkVGltZSgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgcmFuZ2UgPSB0aGlzLnRpbWVSYW5nZTtcclxuICAgIGNvbnN0IHRpbWV6b25lID0gdGhpcy5tZWV0aW5nPy50aW1lem9uZSA/PyAnJztcclxuICAgIGlmICghcmFuZ2UpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRpbWV6b25lID8gYCR7cmFuZ2V9ICR7dGltZXpvbmV9YCA6IHJhbmdlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGJvbGQgdGltZSByYW5nZSBvbmx5IChlLmcuIFwiMTA6MDDigJMxMTowMFwiKSwgMTItaG91ciB3aXRoIG1lcmlkaWVtLFxyXG4gICAqIHJlbmRlcmVkIGRhcmsgcGVyIEZpZ21hLlxyXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGZvcm1hdHRlZCBzdGFydOKAk2VuZCB0aW1lIHJhbmdlLlxyXG4gICAqIEBtZW1iZXJvZiBNZWV0aW5nQXR0ZW5kYW5jZVJvd0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldCB0aW1lUmFuZ2UoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHRpbWV6b25lID0gdGhpcy5tZWV0aW5nPy50aW1lem9uZSA/PyAnJztcclxuICAgIGNvbnN0IHN0YXJ0ID0gZm9ybWF0RXBvY2goXHJcbiAgICAgIHRoaXMubWVldGluZz8uc3RhcnREYXRlVGltZSA/PyB0aGlzLm1lZXRpbmc/Lm1lZXRpbmdUaW1lLFxyXG4gICAgICBEYXRlRm9ybWF0cy50aW1lTWVyaWRpZW1Gb3JtYXQsXHJcbiAgICAgIHRpbWV6b25lXHJcbiAgICApO1xyXG4gICAgY29uc3QgZW5kID0gZm9ybWF0RXBvY2goXHJcbiAgICAgIHRoaXMubWVldGluZz8uZW5kRGF0ZVRpbWUsXHJcbiAgICAgIERhdGVGb3JtYXRzLnRpbWVNZXJpZGllbUZvcm1hdCxcclxuICAgICAgdGltZXpvbmVcclxuICAgICk7XHJcbiAgICByZXR1cm4gZW5kID8gYCR7c3RhcnR9IFxcdTIwMTMgJHtlbmR9YCA6IHN0YXJ0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHRpbWV6b25lIGxhYmVsIG9ubHkgKGxpZ2h0IGdyZXkgcGVyIEZpZ21hKSwgd3JhcHBlZCBpbiBwYXJlbnRoZXNlcywgb3JcclxuICAgKiBhbiBlbXB0eSBzdHJpbmcgd2hlbiBubyB0aW1lem9uZSBpcyBwcmVzZW50LlxyXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIHBhcmVudGhlc2lzZWQgdGltZXpvbmUsIG9yIGFuIGVtcHR5IHN0cmluZy5cclxuICAgKiBAbWVtYmVyb2YgTWVldGluZ0F0dGVuZGFuY2VSb3dDb21wb25lbnRcclxuICAgKi9cclxuICBnZXQgdGltZXpvbmVEaXNwbGF5KCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB0aW1lem9uZSA9IHRoaXMubWVldGluZz8udGltZXpvbmUgPz8gJyc7XHJcbiAgICByZXR1cm4gdGltZXpvbmUgPyB0aW1lem9uZSA6ICcnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyBhY3RpdmF0aW9uIG9mIHRoZSBhdHRlbmRhbmNlIGFjdGlvbiBidXR0b24uIERlbGVnYXRlcyB0byB0aGUgcHVyZVxyXG4gICAqIGByZXNvbHZlQXR0ZW5kYW5jZUFjdGlvbmAgaGFuZGxlciBhbmQgZW1pdHMgZXhhY3RseSBvbmUgZXZlbnQgYmFzZWQgb24gdGhlXHJcbiAgICogcmVzb2x2ZWQgYWN0aW9uOiBgbG9nQXR0ZW5kYW5jZWAgZm9yIGBMT0dfQVRURU5EQU5DRWAsIGBsZWF2ZU1lZXRpbmdgIGZvclxyXG4gICAqIGBMRUFWRV9NRUVUSU5HYCwgYW5kIG5vdGhpbmcgZm9yIGBOT05FYCAoZW1wdHkgaWQgb3IgaW4tZmxpZ2h0KVxyXG4gICAqIChSZXEgNy43LCA3LjgsIDcuOSwgNy4xMCwgMTMuNikuXHJcbiAgICogQG1lbWJlcm9mIE1lZXRpbmdBdHRlbmRhbmNlUm93Q29tcG9uZW50XHJcbiAgICovXHJcbiAgb25BdHRlbmRhbmNlQWN0aW9uKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzQWN0aW9uYWJsZSB8fCAhdGhpcy5pc01lZXRpbmdBY3RpdmUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy8gVGhlIExvZyBBdHRlbmRhbmNlIC8gTGVhdmUgTWVldGluZyBwb3B1cCBsaXZlcyBvbiB0aGUgdmlldy1tZWV0aW5nIHNjcmVlbixcclxuICAgIC8vIHNvIHRoZSBkYXNoYm9hcmQgbmF2aWdhdGVzIHRoZXJlICh3aXRoIGV2ZW50SWQgKyBtZWV0aW5nSWQpIGFuZCByZXF1ZXN0c1xyXG4gICAgLy8gdGhlIG1hdGNoaW5nIGZsb3cgYXV0by1vcGVuIGluc3RlYWQgb2YgY2FsbGluZyB0aGUgYXR0ZW5kYW5jZSBBUEkgZGlyZWN0bHkuXHJcbiAgICB0aGlzLm5hdmlnYXRlVG9NZWV0aW5nLmVtaXQoe1xyXG4gICAgICBldmVudElkOiB0aGlzLm1lZXRpbmc/LmV2ZW50SWQgPz8gJycsXHJcbiAgICAgIG1lZXRpbmdJZDogdGhpcy5tZWV0aW5nLm1lZXRpbmdJZCxcclxuICAgICAgbG9nQXR0ZW5kYW5jZTogIXRoaXMuaXNDdXJyZW50bHlBdHRlbmRpbmcsXHJcbiAgICAgIGxlYXZlTWVldGluZzogdGhpcy5pc0N1cnJlbnRseUF0dGVuZGluZyxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyBhY3RpdmF0aW9uIG9mIHRoZSBtZWV0aW5nLW5hbWUgbGluay4gRW1pdHMgdGhlIG1lZXRpbmcgaWQgb25seSB3aGVuXHJcbiAgICogdGhlIHJvdyBpcyBhY3Rpb25hYmxlIChub24tZW1wdHkgbWVldGluZyBpZCkgKFJlcSA3LjQsIDcuMTApLlxyXG4gICAqIEBtZW1iZXJvZiBNZWV0aW5nQXR0ZW5kYW5jZVJvd0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uT3Blbk1lZXRpbmcoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNBY3Rpb25hYmxlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIE5hdmlnYXRlIHRvIHRoZSB2aWV3LW1lZXRpbmcgc2NyZWVuIChubyBwb3B1cCBhdXRvLW9wZW4pIHdoZW4gdGhlIG1lZXRpbmdcclxuICAgIC8vIG5hbWUgbGluayBpcyBjbGlja2VkLlxyXG4gICAgdGhpcy5uYXZpZ2F0ZVRvTWVldGluZy5lbWl0KHtcclxuICAgICAgZXZlbnRJZDogdGhpcy5tZWV0aW5nPy5ldmVudElkID8/ICcnLFxyXG4gICAgICBtZWV0aW5nSWQ6IHRoaXMubWVldGluZy5tZWV0aW5nSWQsXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwiaWVlZXNhLW1lZXRpbmctYXR0ZW5kYW5jZS1yb3dcIlxyXG4gIFtjbGFzcy5pZWVlc2EtbWVldGluZy1hdHRlbmRhbmNlLXJvdy0tY29tcGFjdF09XCJjb21wYWN0XCJcclxuPlxyXG4gIDwhLS0gTWVldGluZyBuYW1lICsgZ3JvdXAvbG9jYXRpb24gKGhpZGRlbiBpbiB0aGUgY29tcGFjdCBzdGFuZGFsb25lIHZhcmlhbnQpLiAtLT5cclxuICA8ZGl2IGNsYXNzPVwiaWVlZXNhLW1lZXRpbmctYXR0ZW5kYW5jZS1yb3dfX25hbWUtY29sXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbXBhY3RcIj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIGNsYXNzPVwiaWVlZXNhLW1lZXRpbmctYXR0ZW5kYW5jZS1yb3dfX25hbWUtbGlua1wiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FjdGlvbmFibGVcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29uc3RhbnRzLm1lZXRpbmdSb3cuYXJpYUxhYmVsLm1lZXRpbmdOYW1lTGlua1wiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uT3Blbk1lZXRpbmcoKVwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBtZWV0aW5nLm1lZXRpbmdOYW1lIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgPHAgY2xhc3M9XCJpZWVlc2EtbWVldGluZy1hdHRlbmRhbmNlLXJvd19fc3VidGl0bGVcIj5cclxuICAgICAgICB7eyByZXNvbHZlRmllbGRWYWx1ZShtZWV0aW5nLmdyb3VwT3JDb21taXR0ZWUpIH19PG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nSWY9XCJtZWV0aW5nLnJvb21PckxvY2F0aW9uXCJcclxuICAgICAgICA+ICZtaWRkb3Q7IHt7IG1lZXRpbmcucm9vbU9yTG9jYXRpb24gfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9wPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gTUVFVElORyBEQVRFIGNvbHVtbi4gLS0+XHJcbiAgPGRsIGNsYXNzPVwiaWVlZXNhLW1lZXRpbmctYXR0ZW5kYW5jZS1yb3dfX2NvbCBpZWVlc2EtbWVldGluZy1hdHRlbmRhbmNlLXJvd19fY29sLS1kYXRlXCI+XHJcbiAgICA8ZHQgY2xhc3M9XCJpZWVlc2EtbWVldGluZy1hdHRlbmRhbmNlLXJvd19fY29sLWxhYmVsXCI+XHJcbiAgICAgIHt7IGNvbnN0YW50cy5ldmVudEdyb3VwQ2FyZC5tZWV0aW5nRGF0ZUxhYmVsIH19XHJcbiAgICA8L2R0PlxyXG4gICAgPGRkIGNsYXNzPVwiaWVlZXNhLW1lZXRpbmctYXR0ZW5kYW5jZS1yb3dfX2NvbC12YWx1ZVwiPlxyXG4gICAgICB7eyBmb3JtYXR0ZWREYXRlIH19XHJcbiAgICA8L2RkPlxyXG4gIDwvZGw+XHJcblxyXG4gIDwhLS0gVElNRSAmIFRJTUVaT05FIGNvbHVtbi4gLS0+XHJcbiAgPGRsIGNsYXNzPVwiaWVlZXNhLW1lZXRpbmctYXR0ZW5kYW5jZS1yb3dfX2NvbCBpZWVlc2EtbWVldGluZy1hdHRlbmRhbmNlLXJvd19fY29sLS10aW1lXCI+XHJcbiAgICA8ZHQgY2xhc3M9XCJpZWVlc2EtbWVldGluZy1hdHRlbmRhbmNlLXJvd19fY29sLWxhYmVsXCI+XHJcbiAgICAgIHt7IGNvbnN0YW50cy5tZWV0aW5nUm93LnRpbWVUaW1lem9uZUxhYmVsIH19XHJcbiAgICA8L2R0PlxyXG4gICAgPGRkIGNsYXNzPVwiaWVlZXNhLW1lZXRpbmctYXR0ZW5kYW5jZS1yb3dfX2NvbC12YWx1ZVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImllZWVzYS1tZWV0aW5nLWF0dGVuZGFuY2Utcm93X190aW1lXCI+e3sgdGltZVJhbmdlIH19PC9zcGFuPjxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdJZj1cInRpbWV6b25lRGlzcGxheVwiXHJcbiAgICAgID4gPHNwYW4gY2xhc3M9XCJpZWVlc2EtbWVldGluZy1hdHRlbmRhbmNlLXJvd19fdHpcIj57eyB0aW1lem9uZURpc3BsYXkgfX08L3NwYW4+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2RkPlxyXG4gIDwvZGw+XHJcblxyXG4gIDwhLS0gQXR0ZW5kYW5jZSBpbmRpY2F0b3IgKyBhY3Rpb25zIGNvbHVtbi4gLS0+XHJcbiAgPGRpdiBjbGFzcz1cImllZWVzYS1tZWV0aW5nLWF0dGVuZGFuY2Utcm93X19hY3Rpb25zXCI+XHJcbiAgICA8IS0tIEZpeGVkLXdpZHRoIHNsb3QgcmVzZXJ2ZWQgZm9yIHRoZSBhdHRlbmRpbmcgcGlsbCBzbyB0aGUgYWN0aW9uIGJ1dHRvbnNcclxuICAgICAgICAgc3RheSBjb2x1bW4tYWxpZ25lZCB3aGV0aGVyIG9yIG5vdCB0aGUgcGlsbCBpcyBzaG93bi4gLS0+XHJcbiAgICA8c3BhbiBjbGFzcz1cImllZWVzYS1tZWV0aW5nLWF0dGVuZGFuY2Utcm93X19hdHRlbmRpbmctc2xvdFwiPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgICpuZ0lmPVwiaXNDdXJyZW50bHlBdHRlbmRpbmdcIlxyXG4gICAgICAgIGNsYXNzPVwiaWVlZXNhLW1lZXRpbmctYXR0ZW5kYW5jZS1yb3dfX2F0dGVuZGluZy1waWxsXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaWVlZXNhLW1lZXRpbmctYXR0ZW5kYW5jZS1yb3dfX2F0dGVuZGluZy1kb3RcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XHJcbiAgICAgICAge3sgY29uc3RhbnRzLm1lZXRpbmdSb3cuY3VycmVudGx5QXR0ZW5kaW5nSW5kaWNhdG9yIH19XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvc3Bhbj5cclxuXHJcbiAgICA8IS0tIExvZy1hdHRlbmRhbmNlIGJ1dHRvbjogc2hvd24gZm9yIGVsaWdpYmxlIG1lZXRpbmdzLCBkaXNhYmxlZCAod2l0aCB0aGVcclxuICAgICAgICAgaW5hY3RpdmUgbWVzc2FnZSkgd2hlbiB0aGUgbWVldGluZyBpcyBub3QgSW4gUHJvZ3Jlc3MuIC0tPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICAqbmdJZj1cInNob3dMb2dBdHRlbmRhbmNlQnV0dG9uXCJcclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIGNsYXNzPVwiaWVlZXNhLW1lZXRpbmctYXR0ZW5kYW5jZS1yb3dfX2FjdGlvbi1idXR0b24gaWVlZXNhLW1lZXRpbmctYXR0ZW5kYW5jZS1yb3dfX2FjdGlvbi1idXR0b24tLWxvZ1wiXHJcbiAgICAgIFtjbGFzcy5pZWVlc2EtbWVldGluZy1hdHRlbmRhbmNlLXJvd19fYWN0aW9uLWJ1dHRvbi0taW5hY3RpdmVdPVwiaXNMb2dEaXNhYmxlZFwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJpc0xvZ0Rpc2FibGVkXCJcclxuICAgICAgW2F0dHIudGl0bGVdPVwiaXNMb2dEaXNhYmxlZCA/IGluYWN0aXZlTWVzc2FnZSA6IG51bGxcIlxyXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbnN0YW50cy5tZWV0aW5nUm93LmFyaWFMYWJlbC5sb2dBdHRlbmRhbmNlXCJcclxuICAgICAgKGNsaWNrKT1cIm9uQXR0ZW5kYW5jZUFjdGlvbigpXCJcclxuICAgID5cclxuICAgICAge3sgY29uc3RhbnRzLm1lZXRpbmdSb3cubG9nQXR0ZW5kYW5jZUxhYmVsIH19XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8IS0tIExlYXZlLW1lZXRpbmcgYnV0dG9uOiBzaG93biBpbiB0aGUgYXR0ZW5kaW5nIHN0YXRlIHdpdGggdGhlIHBlcm1pc3Npb24uIC0tPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICAqbmdJZj1cInNob3dMZWF2ZU1lZXRpbmdCdXR0b25cIlxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgY2xhc3M9XCJpZWVlc2EtbWVldGluZy1hdHRlbmRhbmNlLXJvd19fYWN0aW9uLWJ1dHRvbiBpZWVlc2EtbWVldGluZy1hdHRlbmRhbmNlLXJvd19fYWN0aW9uLWJ1dHRvbi0tbGVhdmVcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiaXNJbkZsaWdodCB8fCAhaXNBY3Rpb25hYmxlXCJcclxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb25zdGFudHMubWVldGluZ1Jvdy5hcmlhTGFiZWwubGVhdmVNZWV0aW5nXCJcclxuICAgICAgKGNsaWNrKT1cIm9uQXR0ZW5kYW5jZUFjdGlvbigpXCJcclxuICAgID5cclxuICAgICAge3sgY29uc3RhbnRzLm1lZXRpbmdSb3cubGVhdmVNZWV0aW5nTGFiZWwgfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19