@ieeesa-npm/groups 0.15.0 → 0.15.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/assets/constants.json +8 -1
- package/esm2022/lib/components/add-working-groups/add-working-groups.component.mjs +70 -0
- package/esm2022/lib/components/create-group/create-group.component.mjs +143 -5
- package/esm2022/lib/components/reciprocal-credit-section/reciprocal-credit-section.component.mjs +233 -0
- package/esm2022/lib/models/reciprocal-credit.model.mjs +2 -0
- package/esm2022/lib/services/groups.service.mjs +114 -3
- package/esm2022/public-api.mjs +4 -1
- package/fesm2022/ieeesa-npm-groups.mjs +555 -18
- package/fesm2022/ieeesa-npm-groups.mjs.map +1 -1
- package/lib/components/add-working-groups/add-working-groups.component.d.ts +37 -0
- package/lib/components/create-group/create-group.component.d.ts +54 -1
- package/lib/components/reciprocal-credit-section/reciprocal-credit-section.component.d.ts +102 -0
- package/lib/models/reciprocal-credit.model.d.ts +51 -0
- package/lib/services/groups.service.d.ts +71 -13
- package/package.json +1 -1
- package/public-api.d.ts +3 -0
package/esm2022/lib/components/reciprocal-credit-section/reciprocal-credit-section.component.mjs
ADDED
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewEncapsulation, } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
4
|
+
import { MatDialogModule } from '@angular/material/dialog';
|
|
5
|
+
import { SlideToggleComponent, } from '@ieeesa-npm/presentation';
|
|
6
|
+
import { Subject, takeUntil } from 'rxjs';
|
|
7
|
+
import { AddWorkingGroupsComponent } from '../add-working-groups/add-working-groups.component';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "../../services/groups.service";
|
|
10
|
+
import * as i2 from "@angular/material/dialog";
|
|
11
|
+
import * as i3 from "@angular/common";
|
|
12
|
+
import * as i4 from "@angular/material/button";
|
|
13
|
+
/**
|
|
14
|
+
* Reciprocal Credit configuration section shown inside the group create/edit
|
|
15
|
+
* form — ONLY when the group is a Working Group. Provides the enable toggle,
|
|
16
|
+
* selected foreign-group chips, and the "+ Add Working Groups" launcher.
|
|
17
|
+
*
|
|
18
|
+
* The toggle has no backend flag: it is derived from whether any config rows
|
|
19
|
+
* exist for the home group. Enabling persists nothing until at least one foreign
|
|
20
|
+
* group is added (POST); disabling soft-deletes every existing config row
|
|
21
|
+
* (one POST /{configId}/remove per row).
|
|
22
|
+
*
|
|
23
|
+
* The parent form reads `enabled` and `selectedForeignGroups` to build the save
|
|
24
|
+
* request, and `removedConfigIds` to know which existing rows to remove.
|
|
25
|
+
* @export
|
|
26
|
+
* @class ReciprocalCreditSectionComponent
|
|
27
|
+
*/
|
|
28
|
+
export class ReciprocalCreditSectionComponent {
|
|
29
|
+
// eslint-disable-next-line no-unused-vars
|
|
30
|
+
constructor(
|
|
31
|
+
// eslint-disable-next-line no-unused-vars
|
|
32
|
+
groupsService,
|
|
33
|
+
// eslint-disable-next-line no-unused-vars
|
|
34
|
+
dialog) {
|
|
35
|
+
this.groupsService = groupsService;
|
|
36
|
+
this.dialog = dialog;
|
|
37
|
+
this.destroy$ = new Subject();
|
|
38
|
+
/** Emits the current enabled state whenever it changes. */
|
|
39
|
+
this.enabledChange = new EventEmitter();
|
|
40
|
+
/** Emits the current selected foreign groups whenever they change. */
|
|
41
|
+
this.selectionChange = new EventEmitter();
|
|
42
|
+
/**
|
|
43
|
+
* Emits the config ids of previously-saved rows that have been removed locally
|
|
44
|
+
* (chip de-selected or toggle turned off), so the parent can soft-delete each
|
|
45
|
+
* on save.
|
|
46
|
+
*/
|
|
47
|
+
this.removedConfigIdsChange = new EventEmitter();
|
|
48
|
+
/** Toggle state. */
|
|
49
|
+
this.enabled = false;
|
|
50
|
+
/** Option config for the shared ieeesa-slide-toggle. */
|
|
51
|
+
this.toggleOption = {
|
|
52
|
+
id: 1,
|
|
53
|
+
label: '',
|
|
54
|
+
checked: false,
|
|
55
|
+
ariaLabel: 'Enable Reciprocal Credit',
|
|
56
|
+
};
|
|
57
|
+
/** Selected foreign working groups (chips). */
|
|
58
|
+
this.selectedForeignGroups = [];
|
|
59
|
+
/**
|
|
60
|
+
* Persistent map of foreignGroupId → configId for the rows that existed on the
|
|
61
|
+
* initial load. Kept for the whole edit session so a saved group re-selected
|
|
62
|
+
* after being de-selected recovers its configId (and its queued removal is undone).
|
|
63
|
+
*/
|
|
64
|
+
this.savedConfigIdByGroupId = new Map();
|
|
65
|
+
/**
|
|
66
|
+
* Config ids that existed on load but have since been removed locally (either by
|
|
67
|
+
* de-selecting a chip or turning the toggle off). The parent removes each on save.
|
|
68
|
+
*/
|
|
69
|
+
this.removedConfigIds = [];
|
|
70
|
+
/** All foreign working groups available under the same committee. */
|
|
71
|
+
this.availableGroups = [];
|
|
72
|
+
this.isLoading = false;
|
|
73
|
+
}
|
|
74
|
+
ngOnInit() {
|
|
75
|
+
if (this.homeGroupId) {
|
|
76
|
+
this.loadAvailableGroups(this.homeGroupId);
|
|
77
|
+
this.loadExistingConfig(this.homeGroupId);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/** Fetch the foreign working groups available for selection. */
|
|
81
|
+
loadAvailableGroups(homeGroupId) {
|
|
82
|
+
this.groupsService
|
|
83
|
+
.getAvailableReciprocalGroups(homeGroupId)
|
|
84
|
+
.pipe(takeUntil(this.destroy$))
|
|
85
|
+
.subscribe({
|
|
86
|
+
next: (res) => {
|
|
87
|
+
this.availableGroups = res?.body ?? [];
|
|
88
|
+
},
|
|
89
|
+
error: (error) => {
|
|
90
|
+
this.groupsService.handleErrors(error);
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Load existing reciprocal config rows for the edit-prefill path. The toggle is
|
|
96
|
+
* ON when one or more rows exist; each chip keeps its own configId for removal.
|
|
97
|
+
*/
|
|
98
|
+
loadExistingConfig(homeGroupId) {
|
|
99
|
+
this.isLoading = true;
|
|
100
|
+
this.groupsService
|
|
101
|
+
.getReciprocalConfig(homeGroupId, this.eventId)
|
|
102
|
+
.pipe(takeUntil(this.destroy$))
|
|
103
|
+
.subscribe({
|
|
104
|
+
next: (res) => {
|
|
105
|
+
const rows = res?.body ?? [];
|
|
106
|
+
this.selectedForeignGroups = rows.map((row) => ({
|
|
107
|
+
groupId: row.foreignGroupId,
|
|
108
|
+
groupName: row.foreignGroupName,
|
|
109
|
+
configId: row.configId,
|
|
110
|
+
}));
|
|
111
|
+
// Remember each saved row's configId so it can be recovered if the
|
|
112
|
+
// group is de-selected and then re-selected before saving.
|
|
113
|
+
this.savedConfigIdByGroupId = new Map(rows.map((row) => [row.foreignGroupId, row.configId]));
|
|
114
|
+
this.enabled = this.selectedForeignGroups.length > 0;
|
|
115
|
+
this.toggleOption = { ...this.toggleOption, checked: this.enabled };
|
|
116
|
+
this.removedConfigIds = [];
|
|
117
|
+
this.emitState();
|
|
118
|
+
this.isLoading = false;
|
|
119
|
+
},
|
|
120
|
+
error: (error) => {
|
|
121
|
+
this.isLoading = false;
|
|
122
|
+
this.groupsService.handleErrors(error);
|
|
123
|
+
},
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
/** Handle the enable/disable toggle (shared ieeesa-slide-toggle emits SlideToggleOption). */
|
|
127
|
+
onToggleChange(option) {
|
|
128
|
+
this.enabled = !!option?.checked;
|
|
129
|
+
this.toggleOption = { ...this.toggleOption, checked: this.enabled };
|
|
130
|
+
if (!this.enabled) {
|
|
131
|
+
// Turning off queues every existing (saved) row for removal and clears chips.
|
|
132
|
+
this.queueRemovalOf(this.selectedForeignGroups);
|
|
133
|
+
this.selectedForeignGroups = [];
|
|
134
|
+
}
|
|
135
|
+
this.emitState();
|
|
136
|
+
}
|
|
137
|
+
/** Open the Add Working Groups modal. */
|
|
138
|
+
onAddWorkingGroups() {
|
|
139
|
+
const dialogRef = this.dialog.open(AddWorkingGroupsComponent, {
|
|
140
|
+
panelClass: 'ieeesa-modal-dialog',
|
|
141
|
+
data: {
|
|
142
|
+
availableGroups: this.availableGroups,
|
|
143
|
+
selectedGroupIds: this.selectedForeignGroups.map((g) => g.groupId),
|
|
144
|
+
},
|
|
145
|
+
});
|
|
146
|
+
dialogRef
|
|
147
|
+
.afterClosed()
|
|
148
|
+
.pipe(takeUntil(this.destroy$))
|
|
149
|
+
.subscribe((result) => {
|
|
150
|
+
if (result) {
|
|
151
|
+
this.mergeSelection(result);
|
|
152
|
+
this.emitState();
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Merge the modal's returned selection into the current chips. Groups that are
|
|
158
|
+
* no longer selected but were saved get queued for removal; already-selected
|
|
159
|
+
* groups keep their existing configId.
|
|
160
|
+
*/
|
|
161
|
+
mergeSelection(selected) {
|
|
162
|
+
const selectedIds = new Set(selected.map((g) => g.groupId));
|
|
163
|
+
// Queue removal for previously-saved chips that are no longer selected.
|
|
164
|
+
const dropped = this.selectedForeignGroups.filter((g) => !selectedIds.has(g.groupId));
|
|
165
|
+
this.queueRemovalOf(dropped);
|
|
166
|
+
// Rebuild the selection, recovering each saved group's original configId
|
|
167
|
+
// from the persistent load-time map (not just the currently-selected list),
|
|
168
|
+
// so a de-selected-then-re-selected saved group keeps its configId.
|
|
169
|
+
this.selectedForeignGroups = selected.map((g) => ({
|
|
170
|
+
groupId: g.groupId,
|
|
171
|
+
groupName: g.groupName,
|
|
172
|
+
configId: this.savedConfigIdByGroupId.get(g.groupId),
|
|
173
|
+
}));
|
|
174
|
+
// Un-queue removal for any saved group that is (re)selected — it should be
|
|
175
|
+
// kept, not removed, on save.
|
|
176
|
+
this.removedConfigIds = this.removedConfigIds.filter((configId) => {
|
|
177
|
+
const stillSelected = this.selectedForeignGroups.some((g) => g.configId === configId);
|
|
178
|
+
return !stillSelected;
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
/** Remove a selected foreign group chip. */
|
|
182
|
+
removeGroup(groupId) {
|
|
183
|
+
const removed = this.selectedForeignGroups.filter((g) => g.groupId === groupId);
|
|
184
|
+
this.queueRemovalOf(removed);
|
|
185
|
+
this.selectedForeignGroups = this.selectedForeignGroups.filter((g) => g.groupId !== groupId);
|
|
186
|
+
this.emitState();
|
|
187
|
+
}
|
|
188
|
+
/** Track saved rows (those with a configId) that must be removed on the BE. */
|
|
189
|
+
queueRemovalOf(groups) {
|
|
190
|
+
groups.forEach((g) => {
|
|
191
|
+
if (g.configId && !this.removedConfigIds.includes(g.configId)) {
|
|
192
|
+
this.removedConfigIds.push(g.configId);
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
/** True when the section is valid (toggle off, OR toggle on with ≥1 group). */
|
|
197
|
+
get isValid() {
|
|
198
|
+
return !this.enabled || this.selectedForeignGroups.length > 0;
|
|
199
|
+
}
|
|
200
|
+
emitState() {
|
|
201
|
+
this.enabledChange.emit(this.enabled);
|
|
202
|
+
this.selectionChange.emit(this.selectedForeignGroups);
|
|
203
|
+
this.removedConfigIdsChange.emit([...this.removedConfigIds]);
|
|
204
|
+
}
|
|
205
|
+
ngOnDestroy() {
|
|
206
|
+
this.destroy$.next(true);
|
|
207
|
+
this.destroy$.complete();
|
|
208
|
+
}
|
|
209
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ReciprocalCreditSectionComponent, deps: [{ token: i1.GroupsService }, { token: i2.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
210
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ReciprocalCreditSectionComponent, isStandalone: true, selector: "ieeesa-reciprocal-credit-section", inputs: { homeGroupId: "homeGroupId", eventId: "eventId", parentCommitteeName: "parentCommitteeName" }, outputs: { enabledChange: "enabledChange", selectionChange: "selectionChange", removedConfigIdsChange: "removedConfigIdsChange" }, ngImport: i0, template: "<div class=\"ieeesa-reciprocal-credit\">\r\n <p class=\"ieeesa-reciprocal-credit__title\">Reciprocal Credit</p>\r\n\r\n <!-- Enable toggle -->\r\n <div class=\"ieeesa-reciprocal-credit__toggle-row\">\r\n <ieeesa-slide-toggle\r\n [slideToggle]=\"toggleOption\"\r\n (slideToggleChange)=\"onToggleChange($event)\"\r\n ></ieeesa-slide-toggle>\r\n <div class=\"ieeesa-reciprocal-credit__toggle-text\">\r\n <span class=\"ieeesa-reciprocal-credit__toggle-label\">Enable Reciprocal Credit</span>\r\n <span class=\"ieeesa-reciprocal-credit__toggle-subtext\">\r\n Use this configuration in eligible event attendance calculations.\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <!-- Info banner (always shown in the section) -->\r\n <div class=\"ieeesa-reciprocal-credit__info-banner\">\r\n <strong>Available only for Working Groups.</strong>\r\n Voting members of this Home Working Group can receive attendance credit when they\r\n attend meetings hosted by selected Foreign Working Groups under the same Standards Committee.\r\n </div>\r\n\r\n <!-- Selection UI (only when enabled) -->\r\n <ng-container *ngIf=\"enabled\">\r\n <label class=\"ieeesa-reciprocal-credit__field-label\">\r\n Eligible Foreign Working Groups*\r\n </label>\r\n\r\n <div class=\"ieeesa-reciprocal-credit__chips-box\">\r\n <span\r\n *ngFor=\"let group of selectedForeignGroups\"\r\n class=\"ieeesa-reciprocal-credit__chip\"\r\n >\r\n {{ group.groupName }}\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-reciprocal-credit__chip-remove\"\r\n (click)=\"removeGroup(group.groupId)\"\r\n [attr.aria-label]=\"'Remove ' + group.groupName\"\r\n >\r\n \u00D7\r\n </button>\r\n </span>\r\n <span\r\n *ngIf=\"selectedForeignGroups.length === 0\"\r\n class=\"ieeesa-reciprocal-credit__chips-placeholder\"\r\n >\r\n No working groups selected\r\n </span>\r\n </div>\r\n\r\n <p class=\"ieeesa-reciprocal-credit__helper\" *ngIf=\"parentCommitteeName\">\r\n Only groups under {{ parentCommitteeName }} are available.\r\n </p>\r\n\r\n <div class=\"ieeesa-reciprocal-credit__add-row\">\r\n <button\r\n mat-button\r\n type=\"button\"\r\n class=\"mat-tertiary-button ieeesa-reciprocal-credit__add-btn\"\r\n (click)=\"onAddWorkingGroups()\"\r\n >\r\n + Add Working Groups\r\n </button>\r\n </div>\r\n\r\n <!-- One-way relationship warning -->\r\n <div class=\"ieeesa-reciprocal-credit__warning-banner\">\r\n <strong>One-way relationship:</strong> Adding a Foreign Working Group here does not\r\n automatically enable reciprocal credit in the opposite direction.\r\n </div>\r\n </ng-container>\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-reciprocal-credit{margin-top:16px;font-family:Calibri Regular}.ieeesa-reciprocal-credit__title{font-family:Calibri Bold;font-weight:700;font-size:1rem;margin:0 0 12px}.ieeesa-reciprocal-credit__toggle-row{display:flex;align-items:flex-start;gap:12px;margin-bottom:12px}.ieeesa-reciprocal-credit__toggle-text{display:flex;flex-direction:column}.ieeesa-reciprocal-credit__toggle-label{font-family:Calibri Bold;font-weight:700;font-size:.875rem}.ieeesa-reciprocal-credit__toggle-subtext{font-size:.75rem;color:#49454f}.ieeesa-reciprocal-credit__info-banner{background:#eaf2f9;border-radius:4px;padding:12px 16px;font-size:.875rem;color:#1c1b1f;margin-bottom:16px}.ieeesa-reciprocal-credit__field-label{display:block;font-size:.75rem;color:#49454f;margin-bottom:6px}.ieeesa-reciprocal-credit__chips-box{min-height:44px;border:1px solid #878b8f;border-radius:4px;padding:8px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}.ieeesa-reciprocal-credit__chip{display:inline-flex;align-items:center;gap:6px;background:#f0f5f9;border:1px solid #b0d6ec;border-radius:4px;padding:2px 8px;font-size:.8125rem;color:#00629b}.ieeesa-reciprocal-credit__chip-remove{border:none;background:none;cursor:pointer;color:#00629b;font-size:1rem;line-height:1;padding:0}.ieeesa-reciprocal-credit__chips-placeholder{color:#878b8f;font-size:.8125rem}.ieeesa-reciprocal-credit__helper{font-size:.75rem;color:#49454f;margin:6px 0 0}.ieeesa-reciprocal-credit__add-row{display:flex;justify-content:flex-end;margin-top:12px}.ieeesa-reciprocal-credit__warning-banner{background:#fdf6e3;border:1px solid #f0e2b6;border-radius:4px;padding:12px 16px;font-size:.8125rem;color:#6b5900;margin-top:12px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "component", type: SlideToggleComponent, selector: "ieeesa-slide-toggle", inputs: ["formControlName", "slideToggle", "isDisabled", "canShowIcon"], outputs: ["slideToggleChange"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
211
|
+
}
|
|
212
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ReciprocalCreditSectionComponent, decorators: [{
|
|
213
|
+
type: Component,
|
|
214
|
+
args: [{ selector: 'ieeesa-reciprocal-credit-section', standalone: true, imports: [
|
|
215
|
+
CommonModule,
|
|
216
|
+
MatButtonModule,
|
|
217
|
+
MatDialogModule,
|
|
218
|
+
SlideToggleComponent,
|
|
219
|
+
], encapsulation: ViewEncapsulation.None, template: "<div class=\"ieeesa-reciprocal-credit\">\r\n <p class=\"ieeesa-reciprocal-credit__title\">Reciprocal Credit</p>\r\n\r\n <!-- Enable toggle -->\r\n <div class=\"ieeesa-reciprocal-credit__toggle-row\">\r\n <ieeesa-slide-toggle\r\n [slideToggle]=\"toggleOption\"\r\n (slideToggleChange)=\"onToggleChange($event)\"\r\n ></ieeesa-slide-toggle>\r\n <div class=\"ieeesa-reciprocal-credit__toggle-text\">\r\n <span class=\"ieeesa-reciprocal-credit__toggle-label\">Enable Reciprocal Credit</span>\r\n <span class=\"ieeesa-reciprocal-credit__toggle-subtext\">\r\n Use this configuration in eligible event attendance calculations.\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <!-- Info banner (always shown in the section) -->\r\n <div class=\"ieeesa-reciprocal-credit__info-banner\">\r\n <strong>Available only for Working Groups.</strong>\r\n Voting members of this Home Working Group can receive attendance credit when they\r\n attend meetings hosted by selected Foreign Working Groups under the same Standards Committee.\r\n </div>\r\n\r\n <!-- Selection UI (only when enabled) -->\r\n <ng-container *ngIf=\"enabled\">\r\n <label class=\"ieeesa-reciprocal-credit__field-label\">\r\n Eligible Foreign Working Groups*\r\n </label>\r\n\r\n <div class=\"ieeesa-reciprocal-credit__chips-box\">\r\n <span\r\n *ngFor=\"let group of selectedForeignGroups\"\r\n class=\"ieeesa-reciprocal-credit__chip\"\r\n >\r\n {{ group.groupName }}\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-reciprocal-credit__chip-remove\"\r\n (click)=\"removeGroup(group.groupId)\"\r\n [attr.aria-label]=\"'Remove ' + group.groupName\"\r\n >\r\n \u00D7\r\n </button>\r\n </span>\r\n <span\r\n *ngIf=\"selectedForeignGroups.length === 0\"\r\n class=\"ieeesa-reciprocal-credit__chips-placeholder\"\r\n >\r\n No working groups selected\r\n </span>\r\n </div>\r\n\r\n <p class=\"ieeesa-reciprocal-credit__helper\" *ngIf=\"parentCommitteeName\">\r\n Only groups under {{ parentCommitteeName }} are available.\r\n </p>\r\n\r\n <div class=\"ieeesa-reciprocal-credit__add-row\">\r\n <button\r\n mat-button\r\n type=\"button\"\r\n class=\"mat-tertiary-button ieeesa-reciprocal-credit__add-btn\"\r\n (click)=\"onAddWorkingGroups()\"\r\n >\r\n + Add Working Groups\r\n </button>\r\n </div>\r\n\r\n <!-- One-way relationship warning -->\r\n <div class=\"ieeesa-reciprocal-credit__warning-banner\">\r\n <strong>One-way relationship:</strong> Adding a Foreign Working Group here does not\r\n automatically enable reciprocal credit in the opposite direction.\r\n </div>\r\n </ng-container>\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-reciprocal-credit{margin-top:16px;font-family:Calibri Regular}.ieeesa-reciprocal-credit__title{font-family:Calibri Bold;font-weight:700;font-size:1rem;margin:0 0 12px}.ieeesa-reciprocal-credit__toggle-row{display:flex;align-items:flex-start;gap:12px;margin-bottom:12px}.ieeesa-reciprocal-credit__toggle-text{display:flex;flex-direction:column}.ieeesa-reciprocal-credit__toggle-label{font-family:Calibri Bold;font-weight:700;font-size:.875rem}.ieeesa-reciprocal-credit__toggle-subtext{font-size:.75rem;color:#49454f}.ieeesa-reciprocal-credit__info-banner{background:#eaf2f9;border-radius:4px;padding:12px 16px;font-size:.875rem;color:#1c1b1f;margin-bottom:16px}.ieeesa-reciprocal-credit__field-label{display:block;font-size:.75rem;color:#49454f;margin-bottom:6px}.ieeesa-reciprocal-credit__chips-box{min-height:44px;border:1px solid #878b8f;border-radius:4px;padding:8px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}.ieeesa-reciprocal-credit__chip{display:inline-flex;align-items:center;gap:6px;background:#f0f5f9;border:1px solid #b0d6ec;border-radius:4px;padding:2px 8px;font-size:.8125rem;color:#00629b}.ieeesa-reciprocal-credit__chip-remove{border:none;background:none;cursor:pointer;color:#00629b;font-size:1rem;line-height:1;padding:0}.ieeesa-reciprocal-credit__chips-placeholder{color:#878b8f;font-size:.8125rem}.ieeesa-reciprocal-credit__helper{font-size:.75rem;color:#49454f;margin:6px 0 0}.ieeesa-reciprocal-credit__add-row{display:flex;justify-content:flex-end;margin-top:12px}.ieeesa-reciprocal-credit__warning-banner{background:#fdf6e3;border:1px solid #f0e2b6;border-radius:4px;padding:12px 16px;font-size:.8125rem;color:#6b5900;margin-top:12px}\n"] }]
|
|
220
|
+
}], ctorParameters: function () { return [{ type: i1.GroupsService }, { type: i2.MatDialog }]; }, propDecorators: { homeGroupId: [{
|
|
221
|
+
type: Input
|
|
222
|
+
}], eventId: [{
|
|
223
|
+
type: Input
|
|
224
|
+
}], parentCommitteeName: [{
|
|
225
|
+
type: Input
|
|
226
|
+
}], enabledChange: [{
|
|
227
|
+
type: Output
|
|
228
|
+
}], selectionChange: [{
|
|
229
|
+
type: Output
|
|
230
|
+
}], removedConfigIdsChange: [{
|
|
231
|
+
type: Output
|
|
232
|
+
}] } });
|
|
233
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXByb2NhbC1jcmVkaXQtc2VjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9jb21wb25lbnRzL3JlY2lwcm9jYWwtY3JlZGl0LXNlY3Rpb24vcmVjaXByb2NhbC1jcmVkaXQtc2VjdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9jb21wb25lbnRzL3JlY2lwcm9jYWwtY3JlZGl0LXNlY3Rpb24vcmVjaXByb2NhbC1jcmVkaXQtc2VjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBYSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsb0JBQW9CLEdBRXJCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFNMUMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7Ozs7OztBQWEvRjs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQWVILE1BQU0sT0FBTyxnQ0FBZ0M7SUErQzNDLDBDQUEwQztJQUMxQztJQUNFLDBDQUEwQztJQUNsQyxhQUE0QjtJQUNwQywwQ0FBMEM7SUFDbEMsTUFBaUI7UUFGakIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFFNUIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQW5EM0IsYUFBUSxHQUFHLElB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c0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7XHJcbiAgU2xpZGVUb2dnbGVDb21wb25lbnQsXHJcbiAgU2xpZGVUb2dnbGVPcHRpb24sXHJcbn0gZnJvbSAnQGllZWVzYS1ucG0vcHJlc2VudGF0aW9uJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEdyb3Vwc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ncm91cHMuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgQXZhaWxhYmxlRm9yZWlnbkdyb3VwLFxyXG4gIFJlY2lwcm9jYWxDcmVkaXRDb25maWdSb3csXHJcbn0gZnJvbSAnLi4vLi4vbW9kZWxzL3JlY2lwcm9jYWwtY3JlZGl0Lm1vZGVsJztcclxuaW1wb3J0IHsgQWRkV29ya2luZ0dyb3Vwc0NvbXBvbmVudCB9IGZyb20gJy4uL2FkZC13b3JraW5nLWdyb3Vwcy9hZGQtd29ya2luZy1ncm91cHMuY29tcG9uZW50JztcclxuXHJcbi8qKlxyXG4gKiBBIHNlbGVjdGVkIGZvcmVpZ24gZ3JvdXAgc2hvd24gYXMgYSBjaGlwLiBgY29uZmlnSWRgIGlzIHByZXNlbnQgb25seSBmb3IgZ3JvdXBzXHJcbiAqIHRoYXQgd2VyZSBsb2FkZWQgZnJvbSBhbiBleGlzdGluZyAoc2F2ZWQpIGNvbmZpZyDigJQgaXQgaXMgbmVlZGVkIHRvIHJlbW92ZSB0aGF0XHJcbiAqIHNwZWNpZmljIHJvdyBvbiB0aGUgQkUgd2hlbiB0aGUgZ3JvdXAgaXMgZGUtc2VsZWN0ZWQgb3IgdGhlIHRvZ2dsZSBpcyB0dXJuZWQgb2ZmLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RlZEZvcmVpZ25Hcm91cCB7XHJcbiAgZ3JvdXBJZDogc3RyaW5nO1xyXG4gIGdyb3VwTmFtZTogc3RyaW5nO1xyXG4gIGNvbmZpZ0lkPzogc3RyaW5nO1xyXG59XHJcblxyXG4vKipcclxuICogUmVjaXByb2NhbCBDcmVkaXQgY29uZmlndXJhdGlvbiBzZWN0aW9uIHNob3duIGluc2lkZSB0aGUgZ3JvdXAgY3JlYXRlL2VkaXRcclxuICogZm9ybSDigJQgT05MWSB3aGVuIHRoZSBncm91cCBpcyBhIFdvcmtpbmcgR3JvdXAuIFByb3ZpZGVzIHRoZSBlbmFibGUgdG9nZ2xlLFxyXG4gKiBzZWxlY3RlZCBmb3JlaWduLWdyb3VwIGNoaXBzLCBhbmQgdGhlIFwiKyBBZGQgV29ya2luZyBHcm91cHNcIiBsYXVuY2hlci5cclxuICpcclxuICogVGhlIHRvZ2dsZSBoYXMgbm8gYmFja2VuZCBmbGFnOiBpdCBpcyBkZXJpdmVkIGZyb20gd2hldGhlciBhbnkgY29uZmlnIHJvd3NcclxuICogZXhpc3QgZm9yIHRoZSBob21lIGdyb3VwLiBFbmFibGluZyBwZXJzaXN0cyBub3RoaW5nIHVudGlsIGF0IGxlYXN0IG9uZSBmb3JlaWduXHJcbiAqIGdyb3VwIGlzIGFkZGVkIChQT1NUKTsgZGlzYWJsaW5nIHNvZnQtZGVsZXRlcyBldmVyeSBleGlzdGluZyBjb25maWcgcm93XHJcbiAqIChvbmUgUE9TVCAve2NvbmZpZ0lkfS9yZW1vdmUgcGVyIHJvdykuXHJcbiAqXHJcbiAqIFRoZSBwYXJlbnQgZm9ybSByZWFkcyBgZW5hYmxlZGAgYW5kIGBzZWxlY3RlZEZvcmVpZ25Hcm91cHNgIHRvIGJ1aWxkIHRoZSBzYXZlXHJcbiAqIHJlcXVlc3QsIGFuZCBgcmVtb3ZlZENvbmZpZ0lkc2AgdG8ga25vdyB3aGljaCBleGlzdGluZyByb3dzIHRvIHJlbW92ZS5cclxuICogQGV4cG9ydFxyXG4gKiBAY2xhc3MgUmVjaXByb2NhbENyZWRpdFNlY3Rpb25Db21wb25lbnRcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXHJcbiAgc2VsZWN0b3I6ICdpZWVlc2EtcmVjaXByb2NhbC1jcmVkaXQtc2VjdGlvbicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXREaWFsb2dNb2R1bGUsXHJcbiAgICBTbGlkZVRvZ2dsZUNvbXBvbmVudCxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yZWNpcHJvY2FsLWNyZWRpdC1zZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yZWNpcHJvY2FsLWNyZWRpdC1zZWN0aW9uLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlY2lwcm9jYWxDcmVkaXRTZWN0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuXHJcbiAgLyoqIEhvbWUgZ3JvdXAgaWQgKHByZXNlbnQgaW4gZWRpdDsgYWJzZW50IGluIGNyZWF0ZSB1bnRpbCB0aGUgZ3JvdXAgaXMgc2F2ZWQpLiAqL1xyXG4gIEBJbnB1dCgpIGhvbWVHcm91cElkPzogc3RyaW5nO1xyXG4gIC8qKiBPcHRpb25hbCBldmVudCBpZCBmb3IgZXZlbnQtc2NvcGVkIGNvbmZpZ3MgKG9taXQgZm9yIGdsb2JhbC9Hcm91cHMgc2NyZWVuKS4gKi9cclxuICBASW5wdXQoKSBldmVudElkPzogc3RyaW5nO1xyXG4gIC8qKiBQYXJlbnQgY29tbWl0dGVlIG5hbWUgZm9yIHRoZSBoZWxwZXIgdGV4dCAoXCJPbmx5IGdyb3VwcyB1bmRlciAuLi5cIikuICovXHJcbiAgQElucHV0KCkgcGFyZW50Q29tbWl0dGVlTmFtZT86IHN0cmluZztcclxuXHJcbiAgLyoqIEVtaXRzIHRoZSBjdXJyZW50IGVuYWJsZWQgc3RhdGUgd2hlbmV2ZXIgaXQgY2hhbmdlcy4gKi9cclxuICBAT3V0cHV0KCkgZW5hYmxlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICAvKiogRW1pdHMgdGhlIGN1cnJlbnQgc2VsZWN0ZWQgZm9yZWlnbiBncm91cHMgd2hlbmV2ZXIgdGhleSBjaGFuZ2UuICovXHJcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0ZWRGb3JlaWduR3JvdXBbXT4oKTtcclxuICAvKipcclxuICAgKiBFbWl0cyB0aGUgY29uZmlnIGlkcyBvZiBwcmV2aW91c2x5LXNhdmVkIHJvd3MgdGhhdCBoYXZlIGJlZW4gcmVtb3ZlZCBsb2NhbGx5XHJcbiAgICogKGNoaXAgZGUtc2VsZWN0ZWQgb3IgdG9nZ2xlIHR1cm5lZCBvZmYpLCBzbyB0aGUgcGFyZW50IGNhbiBzb2Z0LWRlbGV0ZSBlYWNoXHJcbiAgICogb24gc2F2ZS5cclxuICAgKi9cclxuICBAT3V0cHV0KCkgcmVtb3ZlZENvbmZpZ0lkc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KCk7XHJcblxyXG4gIC8qKiBUb2dnbGUgc3RhdGUuICovXHJcbiAgZW5hYmxlZCA9IGZhbHNlO1xyXG4gIC8qKiBPcHRpb24gY29uZmlnIGZvciB0aGUgc2hhcmVkIGllZWVzYS1zbGlkZS10b2dnbGUuICovXHJcbiAgdG9nZ2xlT3B0aW9uOiBTbGlkZVRvZ2dsZU9wdGlvbiA9IHtcclxuICAgIGlkOiAxLFxyXG4gICAgbGFiZWw6ICcnLFxyXG4gICAgY2hlY2tlZDogZmFsc2UsXHJcbiAgICBhcmlhTGFiZWw6ICdFbmFibGUgUmVjaXByb2NhbCBDcmVkaXQnLFxyXG4gIH07XHJcbiAgLyoqIFNlbGVjdGVkIGZvcmVpZ24gd29ya2luZyBncm91cHMgKGNoaXBzKS4gKi9cclxuICBzZWxlY3RlZEZvcmVpZ25Hcm91cHM6IFNlbGVjdGVkRm9yZWlnbkdyb3VwW10gPSBbXTtcclxuICAvKipcclxuICAgKiBQZXJzaXN0ZW50IG1hcCBvZiBmb3JlaWduR3JvdXBJZCDihpIgY29uZmlnSWQgZm9yIHRoZSByb3dzIHRoYXQgZXhpc3RlZCBvbiB0aGVcclxuICAgKiBpbml0aWFsIGxvYWQuIEtlcHQgZm9yIHRoZSB3aG9sZSBlZGl0IHNlc3Npb24gc28gYSBzYXZlZCBncm91cCByZS1zZWxlY3RlZFxyXG4gICAqIGFmdGVyIGJlaW5nIGRlLXNlbGVjdGVkIHJlY292ZXJzIGl0cyBjb25maWdJZCAoYW5kIGl0cyBxdWV1ZWQgcmVtb3ZhbCBpcyB1bmRvbmUpLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2F2ZWRDb25maWdJZEJ5R3JvdXBJZCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XHJcbiAgLyoqXHJcbiAgICogQ29uZmlnIGlkcyB0aGF0IGV4aXN0ZWQgb24gbG9hZCBidXQgaGF2ZSBzaW5jZSBiZWVuIHJlbW92ZWQgbG9jYWxseSAoZWl0aGVyIGJ5XHJcbiAgICogZGUtc2VsZWN0aW5nIGEgY2hpcCBvciB0dXJuaW5nIHRoZSB0b2dnbGUgb2ZmKS4gVGhlIHBhcmVudCByZW1vdmVzIGVhY2ggb24gc2F2ZS5cclxuICAgKi9cclxuICByZW1vdmVkQ29uZmlnSWRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIC8qKiBBbGwgZm9yZWlnbiB3b3JraW5nIGdyb3VwcyBhdmFpbGFibGUgdW5kZXIgdGhlIHNhbWUgY29tbWl0dGVlLiAqL1xyXG4gIGF2YWlsYWJsZUdyb3VwczogQXZhaWxhYmxlRm9yZWlnbkdyb3VwW10gPSBbXTtcclxuICBpc0xvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgZ3JvdXBzU2VydmljZTogR3JvdXBzU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZ1xyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5ob21lR3JvdXBJZCkge1xyXG4gICAgICB0aGlzLmxvYWRBdmFpbGFibGVHcm91cHModGhpcy5ob21lR3JvdXBJZCk7XHJcbiAgICAgIHRoaXMubG9hZEV4aXN0aW5nQ29uZmlnKHRoaXMuaG9tZUdyb3VwSWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEZldGNoIHRoZSBmb3JlaWduIHdvcmtpbmcgZ3JvdXBzIGF2YWlsYWJsZSBmb3Igc2VsZWN0aW9uLiAqL1xyXG4gIHByaXZhdGUgbG9hZEF2YWlsYWJsZUdyb3Vwcyhob21lR3JvdXBJZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2VcclxuICAgICAgLmdldEF2YWlsYWJsZVJlY2lwcm9jYWxHcm91cHMoaG9tZUdyb3VwSWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5hdmFpbGFibGVHcm91cHMgPSByZXM/LmJvZHkgPz8gW107XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmdyb3Vwc1NlcnZpY2UuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvYWQgZXhpc3RpbmcgcmVjaXByb2NhbCBjb25maWcgcm93cyBmb3IgdGhlIGVkaXQtcHJlZmlsbCBwYXRoLiBUaGUgdG9nZ2xlIGlzXHJcbiAgICogT04gd2hlbiBvbmUgb3IgbW9yZSByb3dzIGV4aXN0OyBlYWNoIGNoaXAga2VlcHMgaXRzIG93biBjb25maWdJZCBmb3IgcmVtb3ZhbC5cclxuICAgKi9cclxuICBwcml2YXRlIGxvYWRFeGlzdGluZ0NvbmZpZyhob21lR3JvdXBJZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2VcclxuICAgICAgLmdldFJlY2lwcm9jYWxDb25maWcoaG9tZUdyb3VwSWQsIHRoaXMuZXZlbnRJZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCByb3dzOiBSZWNpcHJvY2FsQ3JlZGl0Q29uZmlnUm93W10gPSByZXM/LmJvZHkgPz8gW107XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRm9yZWlnbkdyb3VwcyA9IHJvd3MubWFwKChyb3cpID0+ICh7XHJcbiAgICAgICAgICAgIGdyb3VwSWQ6IHJvdy5mb3JlaWduR3JvdXBJZCxcclxuICAgICAgICAgICAgZ3JvdXBOYW1lOiByb3cuZm9yZWlnbkdyb3VwTmFtZSxcclxuICAgICAgICAgICAgY29uZmlnSWQ6IHJvdy5jb25maWdJZCxcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICAgIC8vIFJlbWVtYmVyIGVhY2ggc2F2ZWQgcm93J3MgY29uZmlnSWQgc28gaXQgY2FuIGJlIHJlY292ZXJlZCBpZiB0aGVcclxuICAgICAgICAgIC8vIGdyb3VwIGlzIGRlLXNlbGVjdGVkIGFuZCB0aGVuIHJlLXNlbGVjdGVkIGJlZm9yZSBzYXZpbmcuXHJcbiAgICAgICAgICB0aGlzLnNhdmVkQ29uZmlnSWRCeUdyb3VwSWQgPSBuZXcgTWFwKFxyXG4gICAgICAgICAgICByb3dzLm1hcCgocm93KSA9PiBbcm93LmZvcmVpZ25Hcm91cElkLCByb3cuY29uZmlnSWRdKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMuZW5hYmxlZCA9IHRoaXMuc2VsZWN0ZWRGb3JlaWduR3JvdXBzLmxlbmd0aCA+IDA7XHJcbiAgICAgICAgICB0aGlzLnRvZ2dsZU9wdGlvbiA9IHsgLi4udGhpcy50b2dnbGVPcHRpb24sIGNoZWNrZWQ6IHRoaXMuZW5hYmxlZCB9O1xyXG4gICAgICAgICAgdGhpcy5yZW1vdmVkQ29uZmlnSWRzID0gW107XHJcbiAgICAgICAgICB0aGlzLmVtaXRTdGF0ZSgpO1xyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmdyb3Vwc1NlcnZpY2UuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKiBIYW5kbGUgdGhlIGVuYWJsZS9kaXNhYmxlIHRvZ2dsZSAoc2hhcmVkIGllZWVzYS1zbGlkZS10b2dnbGUgZW1pdHMgU2xpZGVUb2dnbGVPcHRpb24pLiAqL1xyXG4gIG9uVG9nZ2xlQ2hhbmdlKG9wdGlvbjogU2xpZGVUb2dnbGVPcHRpb24pOiB2b2lkIHtcclxuICAgIHRoaXMuZW5hYmxlZCA9ICEhb3B0aW9uPy5jaGVja2VkO1xyXG4gICAgdGhpcy50b2dnbGVPcHRpb24gPSB7IC4uLnRoaXMudG9nZ2xlT3B0aW9uLCBjaGVja2VkOiB0aGlzLmVuYWJsZWQgfTtcclxuICAgIGlmICghdGhpcy5lbmFibGVkKSB7XHJcbiAgICAgIC8vIFR1cm5pbmcgb2ZmIHF1ZXVlcyBldmVyeSBleGlzdGluZyAoc2F2ZWQpIHJvdyBmb3IgcmVtb3ZhbCBhbmQgY2xlYXJzIGNoaXBzLlxyXG4gICAgICB0aGlzLnF1ZXVlUmVtb3ZhbE9mKHRoaXMuc2VsZWN0ZWRGb3JlaWduR3JvdXBzKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZvcmVpZ25Hcm91cHMgPSBbXTtcclxuICAgIH1cclxuICAgIHRoaXMuZW1pdFN0YXRlKCk7XHJcbiAgfVxyXG5cclxuICAvKiogT3BlbiB0aGUgQWRkIFdvcmtpbmcgR3JvdXBzIG1vZGFsLiAqL1xyXG4gIG9uQWRkV29ya2luZ0dyb3VwcygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQWRkV29ya2luZ0dyb3Vwc0NvbXBvbmVudCwge1xyXG4gICAgICBwYW5lbENsYXNzOiAnaWVlZXNhLW1vZGFsLWRpYWxvZycsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBhdmFpbGFibGVHcm91cHM6IHRoaXMuYXZhaWxhYmxlR3JvdXBzLFxyXG4gICAgICAgIHNlbGVjdGVkR3JvdXBJZHM6IHRoaXMuc2VsZWN0ZWRGb3JlaWduR3JvdXBzLm1hcCgoZykgPT4gZy5ncm91cElkKSxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nUmVmXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBBdmFpbGFibGVGb3JlaWduR3JvdXBbXSB8IHVuZGVmaW5lZCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIHRoaXMubWVyZ2VTZWxlY3Rpb24ocmVzdWx0KTtcclxuICAgICAgICAgIHRoaXMuZW1pdFN0YXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1lcmdlIHRoZSBtb2RhbCdzIHJldHVybmVkIHNlbGVjdGlvbiBpbnRvIHRoZSBjdXJyZW50IGNoaXBzLiBHcm91cHMgdGhhdCBhcmVcclxuICAgKiBubyBsb25nZXIgc2VsZWN0ZWQgYnV0IHdlcmUgc2F2ZWQgZ2V0IHF1ZXVlZCBmb3IgcmVtb3ZhbDsgYWxyZWFkeS1zZWxlY3RlZFxyXG4gICAqIGdyb3VwcyBrZWVwIHRoZWlyIGV4aXN0aW5nIGNvbmZpZ0lkLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgbWVyZ2VTZWxlY3Rpb24oc2VsZWN0ZWQ6IEF2YWlsYWJsZUZvcmVpZ25Hcm91cFtdKTogdm9pZCB7XHJcbiAgICBjb25zdCBzZWxlY3RlZElkcyA9IG5ldyBTZXQoc2VsZWN0ZWQubWFwKChnKSA9PiBnLmdyb3VwSWQpKTtcclxuXHJcbiAgICAvLyBRdWV1ZSByZW1vdmFsIGZvciBwcmV2aW91c2x5LXNhdmVkIGNoaXBzIHRoYXQgYXJlIG5vIGxvbmdlciBzZWxlY3RlZC5cclxuICAgIGNvbnN0IGRyb3BwZWQgPSB0aGlzLnNlbGVjdGVkRm9yZWlnbkdyb3Vwcy5maWx0ZXIoXHJcbiAgICAgIChnKSA9PiAhc2VsZWN0ZWRJZHMuaGFzKGcuZ3JvdXBJZClcclxuICAgICk7XHJcbiAgICB0aGlzLnF1ZXVlUmVtb3ZhbE9mKGRyb3BwZWQpO1xyXG5cclxuICAgIC8vIFJlYnVpbGQgdGhlIHNlbGVjdGlvbiwgcmVjb3ZlcmluZyBlYWNoIHNhdmVkIGdyb3VwJ3Mgb3JpZ2luYWwgY29uZmlnSWRcclxuICAgIC8vIGZyb20gdGhlIHBlcnNpc3RlbnQgbG9hZC10aW1lIG1hcCAobm90IGp1c3QgdGhlIGN1cnJlbnRseS1zZWxlY3RlZCBsaXN0KSxcclxuICAgIC8vIHNvIGEgZGUtc2VsZWN0ZWQtdGhlbi1yZS1zZWxlY3RlZCBzYXZlZCBncm91cCBrZWVwcyBpdHMgY29uZmlnSWQuXHJcbiAgICB0aGlzLnNlbGVjdGVkRm9yZWlnbkdyb3VwcyA9IHNlbGVjdGVkLm1hcCgoZykgPT4gKHtcclxuICAgICAgZ3JvdXBJZDogZy5ncm91cElkLFxyXG4gICAgICBncm91cE5hbWU6IGcuZ3JvdXBOYW1lLFxyXG4gICAgICBjb25maWdJZDogdGhpcy5zYXZlZENvbmZpZ0lkQnlHcm91cElkLmdldChnLmdyb3VwSWQpLFxyXG4gICAgfSkpO1xyXG5cclxuICAgIC8vIFVuLXF1ZXVlIHJlbW92YWwgZm9yIGFueSBzYXZlZCBncm91cCB0aGF0IGlzIChyZSlzZWxlY3RlZCDigJQgaXQgc2hvdWxkIGJlXHJcbiAgICAvLyBrZXB0LCBub3QgcmVtb3ZlZCwgb24gc2F2ZS5cclxuICAgIHRoaXMucmVtb3ZlZENvbmZpZ0lkcyA9IHRoaXMucmVtb3ZlZENvbmZpZ0lkcy5maWx0ZXIoKGNvbmZpZ0lkKSA9PiB7XHJcbiAgICAgIGNvbnN0IHN0aWxsU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkRm9yZWlnbkdyb3Vwcy5zb21lKFxyXG4gICAgICAgIChnKSA9PiBnLmNvbmZpZ0lkID09PSBjb25maWdJZFxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm4gIXN0aWxsU2VsZWN0ZWQ7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKiBSZW1vdmUgYSBzZWxlY3RlZCBmb3JlaWduIGdyb3VwIGNoaXAuICovXHJcbiAgcmVtb3ZlR3JvdXAoZ3JvdXBJZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCByZW1vdmVkID0gdGhpcy5zZWxlY3RlZEZvcmVpZ25Hcm91cHMuZmlsdGVyKFxyXG4gICAgICAoZykgPT4gZy5ncm91cElkID09PSBncm91cElkXHJcbiAgICApO1xyXG4gICAgdGhpcy5xdWV1ZVJlbW92YWxPZihyZW1vdmVkKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRGb3JlaWduR3JvdXBzID0gdGhpcy5zZWxlY3RlZEZvcmVpZ25Hcm91cHMuZmlsdGVyKFxyXG4gICAgICAoZykgPT4gZy5ncm91cElkICE9PSBncm91cElkXHJcbiAgICApO1xyXG4gICAgdGhpcy5lbWl0U3RhdGUoKTtcclxuICB9XHJcblxyXG4gIC8qKiBUcmFjayBzYXZlZCByb3dzICh0aG9zZSB3aXRoIGEgY29uZmlnSWQpIHRoYXQgbXVzdCBiZSByZW1vdmVkIG9uIHRoZSBCRS4gKi9cclxuICBwcml2YXRlIHF1ZXVlUmVtb3ZhbE9mKGdyb3VwczogU2VsZWN0ZWRGb3JlaWduR3JvdXBbXSk6IHZvaWQge1xyXG4gICAgZ3JvdXBzLmZvckVhY2goKGcpID0+IHtcclxuICAgICAgaWYgKGcuY29uZmlnSWQgJiYgIXRoaXMucmVtb3ZlZENvbmZpZ0lkcy5pbmNsdWRlcyhnLmNvbmZpZ0lkKSkge1xyXG4gICAgICAgIHRoaXMucmVtb3ZlZENvbmZpZ0lkcy5wdXNoKGcuY29uZmlnSWQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKiBUcnVlIHdoZW4gdGhlIHNlY3Rpb24gaXMgdmFsaWQgKHRvZ2dsZSBvZmYsIE9SIHRvZ2dsZSBvbiB3aXRoIOKJpTEgZ3JvdXApLiAqL1xyXG4gIGdldCBpc1ZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLmVuYWJsZWQgfHwgdGhpcy5zZWxlY3RlZEZvcmVpZ25Hcm91cHMubGVuZ3RoID4gMDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW1pdFN0YXRlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5lbmFibGVkQ2hhbmdlLmVtaXQodGhpcy5lbmFibGVkKTtcclxuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEZvcmVpZ25Hcm91cHMpO1xyXG4gICAgdGhpcy5yZW1vdmVkQ29uZmlnSWRzQ2hhbmdlLmVtaXQoWy4uLnRoaXMucmVtb3ZlZENvbmZpZ0lkc10pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJpZWVlc2EtcmVjaXByb2NhbC1jcmVkaXRcIj5cclxuICA8cCBjbGFzcz1cImllZWVzYS1yZWNpcHJvY2FsLWNyZWRpdF9fdGl0bGVcIj5SZWNpcHJvY2FsIENyZWRpdDwvcD5cclxuXHJcbiAgPCEtLSBFbmFibGUgdG9nZ2xlIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJpZWVlc2EtcmVjaXByb2NhbC1jcmVkaXRfX3RvZ2dsZS1yb3dcIj5cclxuICAgIDxpZWVlc2Etc2xpZGUtdG9nZ2xlXHJcbiAgICAgIFtzbGlkZVRvZ2dsZV09XCJ0b2dnbGVPcHRpb25cIlxyXG4gICAgICAoc2xpZGVUb2dnbGVDaGFuZ2UpPVwib25Ub2dnbGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICA+PC9pZWVlc2Etc2xpZGUtdG9nZ2xlPlxyXG4gICAgPGRpdiBjbGFzcz1cImllZWVzYS1yZWNpcHJvY2FsLWNyZWRpdF9fdG9nZ2xlLXRleHRcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJpZWVlc2EtcmVjaXByb2NhbC1jcmVkaXRfX3RvZ2dsZS1sYWJlbFwiPkVuYWJsZSBSZWNpcHJvY2FsIENyZWRpdDwvc3Bhbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJpZWVlc2EtcmVjaXByb2NhbC1jcmVkaXRfX3RvZ2dsZS1zdWJ0ZXh0XCI+XHJcbiAgICAgICAgVXNlIHRoaXMgY29uZmlndXJhdGlvbiBpbiBlbGlnaWJsZSBldmVudCBhdHRlbmRhbmNlIGNhbGN1bGF0aW9ucy5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gSW5mbyBiYW5uZXIgKGFsd2F5cyBzaG93biBpbiB0aGUgc2VjdGlvbikgLS0+XHJcbiAgPGRpdiBjbGFzcz1cImllZWVzYS1yZWNpcHJvY2FsLWNyZWRpdF9faW5mby1iYW5uZXJcIj5cclxuICAgIDxzdHJvbmc+QXZhaWxhYmxlIG9ubHkgZm9yIFdvcmtpbmcgR3JvdXBzLjwvc3Ryb25nPlxyXG4gICAgVm90aW5nIG1lbWJlcnMgb2YgdGhpcyBIb21lIFdvcmtpbmcgR3JvdXAgY2FuIHJlY2VpdmUgYXR0ZW5kYW5jZSBjcmVkaXQgd2hlbiB0aGV5XHJcbiAgICBhdHRlbmQgbWVldGluZ3MgaG9zdGVkIGJ5IHNlbGVjdGVkIEZvcmVpZ24gV29ya2luZyBHcm91cHMgdW5kZXIgdGhlIHNhbWUgU3RhbmRhcmRzIENvbW1pdHRlZS5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBTZWxlY3Rpb24gVUkgKG9ubHkgd2hlbiBlbmFibGVkKSAtLT5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW5hYmxlZFwiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwiaWVlZXNhLXJlY2lwcm9jYWwtY3JlZGl0X19maWVsZC1sYWJlbFwiPlxyXG4gICAgICBFbGlnaWJsZSBGb3JlaWduIFdvcmtpbmcgR3JvdXBzKlxyXG4gICAgPC9sYWJlbD5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiaWVlZXNhLXJlY2lwcm9jYWwtY3JlZGl0X19jaGlwcy1ib3hcIj5cclxuICAgICAgPHNwYW5cclxuICAgICAgICAqbmdGb3I9XCJsZXQgZ3JvdXAgb2Ygc2VsZWN0ZWRGb3JlaWduR3JvdXBzXCJcclxuICAgICAgICBjbGFzcz1cImllZWVzYS1yZWNpcHJvY2FsLWNyZWRpdF9fY2hpcFwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBncm91cC5ncm91cE5hbWUgfX1cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLXJlY2lwcm9jYWwtY3JlZGl0X19jaGlwLXJlbW92ZVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlR3JvdXAoZ3JvdXAuZ3JvdXBJZClcIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInUmVtb3ZlICcgKyBncm91cC5ncm91cE5hbWVcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIMOXXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPHNwYW5cclxuICAgICAgICAqbmdJZj1cInNlbGVjdGVkRm9yZWlnbkdyb3Vwcy5sZW5ndGggPT09IDBcIlxyXG4gICAgICAgIGNsYXNzPVwiaWVlZXNhLXJlY2lwcm9jYWwtY3JlZGl0X19jaGlwcy1wbGFjZWhvbGRlclwiXHJcbiAgICAgID5cclxuICAgICAgICBObyB3b3JraW5nIGdyb3VwcyBzZWxlY3RlZFxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8cCBjbGFzcz1cImllZWVzYS1yZWNpcHJvY2FsLWNyZWRpdF9faGVscGVyXCIgKm5nSWY9XCJwYXJlbnRDb21taXR0ZWVOYW1lXCI+XHJcbiAgICAgIE9ubHkgZ3JvdXBzIHVuZGVyIHt7IHBhcmVudENvbW1pdHRlZU5hbWUgfX0gYXJlIGF2YWlsYWJsZS5cclxuICAgIDwvcD5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiaWVlZXNhLXJlY2lwcm9jYWwtY3JlZGl0X19hZGQtcm93XCI+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgY2xhc3M9XCJtYXQtdGVydGlhcnktYnV0dG9uIGllZWVzYS1yZWNpcHJvY2FsLWNyZWRpdF9fYWRkLWJ0blwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uQWRkV29ya2luZ0dyb3VwcygpXCJcclxuICAgICAgPlxyXG4gICAgICAgICsgQWRkIFdvcmtpbmcgR3JvdXBzXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBPbmUtd2F5IHJlbGF0aW9uc2hpcCB3YXJuaW5nIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImllZWVzYS1yZWNpcHJvY2FsLWNyZWRpdF9fd2FybmluZy1iYW5uZXJcIj5cclxuICAgICAgPHN0cm9uZz5PbmUtd2F5IHJlbGF0aW9uc2hpcDo8L3N0cm9uZz4gQWRkaW5nIGEgRm9yZWlnbiBXb3JraW5nIEdyb3VwIGhlcmUgZG9lcyBub3RcclxuICAgICAgYXV0b21hdGljYWxseSBlbmFibGUgcmVjaXByb2NhbCBjcmVkaXQgaW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlvbi5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXByb2NhbC1jcmVkaXQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9tb2RlbHMvcmVjaXByb2NhbC1jcmVkaXQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBBIGZvcmVpZ24gZ3JvdXAgcmV0dXJuZWQgYnkgdGhlIGBhdmFpbGFibGUtZ3JvdXBzYCBlbmRwb2ludC4gSXQgaXMgYSBjYW5kaWRhdGVcclxuICogdGhhdCBjYW4gYmUgc2VsZWN0ZWQgYXMgYSByZWNpcHJvY2FsLWNyZWRpdCBzb3VyY2UgZm9yIGEgaG9tZSBncm91cC5cclxuICpcclxuICogUmVhbCBBUEk6IEdFVCAvdjEvbWVldGluZ3MvYWRtaW4vcmVjaXByb2NhbC1jcmVkaXQve2hvbWVHcm91cElkfS9hdmFpbGFibGUtZ3JvdXBzXHJcbiAqIEJvZHkgaXRlbSBzaGFwZTogeyBncm91cElkLCBncm91cE5hbWUgfVxyXG4gKiBAZXhwb3J0XHJcbiAqIEBpbnRlcmZhY2UgQXZhaWxhYmxlRm9yZWlnbkdyb3VwXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEF2YWlsYWJsZUZvcmVpZ25Hcm91cCB7XHJcbiAgZ3JvdXBJZDogc3RyaW5nO1xyXG4gIGdyb3VwTmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG4vKiogU2NvcGUgb2YgYSByZWNpcHJvY2FsLWNyZWRpdCBjb25maWcgcm93LiAqL1xyXG5leHBvcnQgdHlwZSBSZWNpcHJvY2FsQ3JlZGl0U2NvcGUgPSAnRVZFTlQnIHwgJ0dMT0JBTCc7XHJcblxyXG4vKipcclxuICogQSBzaW5nbGUgcmVjaXByb2NhbC1jcmVkaXQgY29uZmlnIHJvdy4gVGhlIEJFIHJldHVybnMgb25lIHJvdyBwZXIgZm9yZWlnblxyXG4gKiBncm91cCwgZWFjaCB3aXRoIGl0cyBvd24gYGNvbmZpZ0lkYCAobmVlZGVkIHRvIHJlbW92ZS9zb2Z0LWRlbGV0ZSB0aGF0IHJvdykuXHJcbiAqXHJcbiAqIFJlYWwgQVBJOiBHRVQvUE9TVCAvdjEvbWVldGluZ3MvYWRtaW4vcmVjaXByb2NhbC1jcmVkaXQuLi4g4oaSIGJvZHk6IFJlY2lwcm9jYWxDcmVkaXRDb25maWdSb3dbXVxyXG4gKiBAZXhwb3J0XHJcbiAqIEBpbnRlcmZhY2UgUmVjaXByb2NhbENyZWRpdENvbmZpZ1Jvd1xyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBSZWNpcHJvY2FsQ3JlZGl0Q29uZmlnUm93IHtcclxuICBjb25maWdJZDogc3RyaW5nO1xyXG4gIGhvbWVHcm91cElkOiBzdHJpbmc7XHJcbiAgZm9yZWlnbkdyb3VwSWQ6IHN0cmluZztcclxuICBmb3JlaWduR3JvdXBOYW1lOiBzdHJpbmc7XHJcbiAgLyoqIFByZXNlbnQgb25seSBmb3IgZXZlbnQtc2NvcGVkIGNvbmZpZ3MuICovXHJcbiAgZXZlbnRJZD86IHN0cmluZztcclxuICBzY29wZTogUmVjaXByb2NhbENyZWRpdFNjb3BlO1xyXG59XHJcblxyXG4vKipcclxuICogUGF5bG9hZCBmb3Igc2F2aW5nIGEgcmVjaXByb2NhbC1jcmVkaXQgY29uZmlndXJhdGlvbi5cclxuICogYGV2ZW50SWRgIGlzIGluY2x1ZGVkIG9ubHkgZm9yIGV2ZW50LXNjb3BlZCBjb25maWdzOyBvbWl0IGl0IGZvciBnbG9iYWwgY29uZmlncy5cclxuICpcclxuICogUmVhbCBBUEk6IFBPU1QgL3YxL21lZXRpbmdzL2FkbWluL3JlY2lwcm9jYWwtY3JlZGl0XHJcbiAqIEBleHBvcnRcclxuICogQGludGVyZmFjZSBTYXZlUmVjaXByb2NhbENyZWRpdFBheWxvYWRcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2F2ZVJlY2lwcm9jYWxDcmVkaXRQYXlsb2FkIHtcclxuICBob21lR3JvdXBJZDogc3RyaW5nO1xyXG4gIGZvcmVpZ25Hcm91cElkczogc3RyaW5nW107XHJcbiAgZXZlbnRJZD86IHN0cmluZztcclxufVxyXG5cclxuLyoqIFN0YW5kYXJkIEFQSSByZXNwb25zZSB3cmFwcGVyIGZvciByZWNpcHJvY2FsIGVuZHBvaW50cy4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBSZWNpcHJvY2FsQ3JlZGl0UmVzcG9uc2U8VD4ge1xyXG4gIHN0YXR1czogYm9vbGVhbjtcclxuICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgYm9keTogVDtcclxufVxyXG4iXX0=
|