valtech-components 4.0.30 → 4.0.32
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/components/organisms/account-view/account-view.component.mjs +13 -21
- package/esm2022/lib/components/organisms/avatar-upload/avatar-upload.component.mjs +25 -12
- package/esm2022/lib/components/organisms/edit-org-modal/edit-org-modal.component.mjs +57 -5
- package/esm2022/lib/components/organisms/organization-view/organization-view.component.mjs +49 -38
- package/esm2022/lib/components/organisms/profile-view/profile-view.component.mjs +2 -2
- package/esm2022/lib/components/organisms/switch-org-modal/switch-org-modal.component.mjs +59 -6
- package/esm2022/lib/components/organisms/switch-org-modal/switch-org-modal.i18n.mjs +3 -1
- package/esm2022/lib/services/org/types.mjs +1 -1
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/valtech-components.mjs +196 -77
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/avatar-upload/avatar-upload.component.d.ts +10 -1
- package/lib/components/organisms/edit-org-modal/edit-org-modal.component.d.ts +5 -1
- package/lib/components/organisms/switch-org-modal/switch-org-modal.component.d.ts +6 -1
- package/lib/services/org/types.d.ts +2 -0
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { Component, effect, inject, Input, signal } from '@angular/core';
|
|
1
|
+
import { Component, computed, effect, inject, Input, signal } from '@angular/core';
|
|
2
2
|
import { Validators } from '@angular/forms';
|
|
3
3
|
import { firstValueFrom } from 'rxjs';
|
|
4
4
|
import { IonButton, IonButtons, IonContent, IonHeader, IonToolbar } from '@ionic/angular/standalone';
|
|
5
5
|
import { FormComponent } from '../form/form.component';
|
|
6
6
|
import { DisplayComponent } from '../../atoms/display/display.component';
|
|
7
7
|
import { TitleComponent } from '../../atoms/title/title.component';
|
|
8
|
+
import { AvatarUploadComponent } from '../avatar-upload/avatar-upload.component';
|
|
8
9
|
import { ComponentStates, InputType } from '../../types';
|
|
9
10
|
import { AuthService } from '../../../services/auth/auth.service';
|
|
10
11
|
import { I18nService } from '../../../services/i18n';
|
|
@@ -42,6 +43,11 @@ export class EditOrgModalComponent {
|
|
|
42
43
|
/** Namespace i18n con que la vista resuelve sus textos. */
|
|
43
44
|
this.i18nNamespace = DEFAULT_NAMESPACE;
|
|
44
45
|
this.saving = signal(false);
|
|
46
|
+
this.logoUrl = signal(null);
|
|
47
|
+
this.orgInitials = computed(() => {
|
|
48
|
+
const name = this.org?.name ?? '';
|
|
49
|
+
return name.slice(0, 2).toUpperCase() || '?';
|
|
50
|
+
});
|
|
45
51
|
if (!this.i18n.hasNamespace(DEFAULT_NAMESPACE)) {
|
|
46
52
|
this.i18n.registerContent(DEFAULT_NAMESPACE, EDIT_ORG_MODAL_I18N);
|
|
47
53
|
}
|
|
@@ -63,6 +69,7 @@ export class EditOrgModalComponent {
|
|
|
63
69
|
}, { allowSignalWrites: true });
|
|
64
70
|
}
|
|
65
71
|
ngOnInit() {
|
|
72
|
+
this.logoUrl.set(this.org?.logoUrl ?? null);
|
|
66
73
|
this.formMeta.set(this.buildFormMeta());
|
|
67
74
|
}
|
|
68
75
|
get activeOrgId() {
|
|
@@ -156,6 +163,23 @@ export class EditOrgModalComponent {
|
|
|
156
163
|
this.saving.set(false);
|
|
157
164
|
}
|
|
158
165
|
}
|
|
166
|
+
async onLogoUploaded(result) {
|
|
167
|
+
const orgId = this.org?.id ?? this.activeOrgId;
|
|
168
|
+
if (!orgId)
|
|
169
|
+
return;
|
|
170
|
+
this.logoUrl.set(result.avatarUrl);
|
|
171
|
+
try {
|
|
172
|
+
const updated = await firstValueFrom(this.orgService.updateOrg(orgId, { logoUrl: result.avatarUrl }));
|
|
173
|
+
this.onSuccess?.(updated);
|
|
174
|
+
}
|
|
175
|
+
catch (err) {
|
|
176
|
+
this.errors.handle(err, {
|
|
177
|
+
context: 'editOrgModal.logo',
|
|
178
|
+
fallbackKey: 'saveError',
|
|
179
|
+
i18nNamespace: this.i18nNamespace,
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
}
|
|
159
183
|
dismiss() {
|
|
160
184
|
this._modalRef?.dismiss(null, 'cancel');
|
|
161
185
|
}
|
|
@@ -174,6 +198,15 @@ export class EditOrgModalComponent {
|
|
|
174
198
|
</ion-toolbar>
|
|
175
199
|
</ion-header>
|
|
176
200
|
<ion-content class="ion-padding">
|
|
201
|
+
<div class="logo-upload-wrapper">
|
|
202
|
+
<val-avatar-upload
|
|
203
|
+
[props]="{ currentUrl: logoUrl(), initials: orgInitials(), size: 80, editable: true, showViewButton: false }"
|
|
204
|
+
[customPath]="'orgs/' + (org?.id ?? activeOrgId) + '/logo.jpg'"
|
|
205
|
+
[customThumbPath]="'orgs/' + (org?.id ?? activeOrgId) + '/thumb.jpg'"
|
|
206
|
+
[skipBackendSync]="true"
|
|
207
|
+
(uploaded)="onLogoUploaded($event)"
|
|
208
|
+
/>
|
|
209
|
+
</div>
|
|
177
210
|
<val-display [props]="{ content: t('title'), size: 'small', color: 'dark' }" />
|
|
178
211
|
<val-title
|
|
179
212
|
[props]="{
|
|
@@ -190,11 +223,21 @@ export class EditOrgModalComponent {
|
|
|
190
223
|
</ion-button>
|
|
191
224
|
</div>
|
|
192
225
|
</ion-content>
|
|
193
|
-
`, isInline: true, styles: [".modal-close-bottom{margin-top:16px}\n"], dependencies: [{ kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: FormComponent, selector: "val-form", inputs: ["props"], outputs: ["onSubmit", "onInvalid", "onSelectChange"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }] }); }
|
|
226
|
+
`, isInline: true, styles: [".modal-close-bottom{margin-top:16px}.logo-upload-wrapper{display:flex;justify-content:center;padding:8px 0 16px}\n"], dependencies: [{ kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: FormComponent, selector: "val-form", inputs: ["props"], outputs: ["onSubmit", "onInvalid", "onSelectChange"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: AvatarUploadComponent, selector: "val-avatar-upload", inputs: ["props", "customPath", "customThumbPath", "skipBackendSync"], outputs: ["uploaded", "error", "uploadStart"] }] }); }
|
|
194
227
|
}
|
|
195
228
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EditOrgModalComponent, decorators: [{
|
|
196
229
|
type: Component,
|
|
197
|
-
args: [{ selector: 'val-edit-org-modal', standalone: true, imports: [
|
|
230
|
+
args: [{ selector: 'val-edit-org-modal', standalone: true, imports: [
|
|
231
|
+
IonHeader,
|
|
232
|
+
IonToolbar,
|
|
233
|
+
IonButtons,
|
|
234
|
+
IonButton,
|
|
235
|
+
IonContent,
|
|
236
|
+
FormComponent,
|
|
237
|
+
DisplayComponent,
|
|
238
|
+
TitleComponent,
|
|
239
|
+
AvatarUploadComponent,
|
|
240
|
+
], template: `
|
|
198
241
|
<ion-header>
|
|
199
242
|
<ion-toolbar>
|
|
200
243
|
<ion-buttons slot="end">
|
|
@@ -205,6 +248,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
205
248
|
</ion-toolbar>
|
|
206
249
|
</ion-header>
|
|
207
250
|
<ion-content class="ion-padding">
|
|
251
|
+
<div class="logo-upload-wrapper">
|
|
252
|
+
<val-avatar-upload
|
|
253
|
+
[props]="{ currentUrl: logoUrl(), initials: orgInitials(), size: 80, editable: true, showViewButton: false }"
|
|
254
|
+
[customPath]="'orgs/' + (org?.id ?? activeOrgId) + '/logo.jpg'"
|
|
255
|
+
[customThumbPath]="'orgs/' + (org?.id ?? activeOrgId) + '/thumb.jpg'"
|
|
256
|
+
[skipBackendSync]="true"
|
|
257
|
+
(uploaded)="onLogoUploaded($event)"
|
|
258
|
+
/>
|
|
259
|
+
</div>
|
|
208
260
|
<val-display [props]="{ content: t('title'), size: 'small', color: 'dark' }" />
|
|
209
261
|
<val-title
|
|
210
262
|
[props]="{
|
|
@@ -221,7 +273,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
221
273
|
</ion-button>
|
|
222
274
|
</div>
|
|
223
275
|
</ion-content>
|
|
224
|
-
`, styles: [".modal-close-bottom{margin-top:16px}\n"] }]
|
|
276
|
+
`, styles: [".modal-close-bottom{margin-top:16px}.logo-upload-wrapper{display:flex;justify-content:center;padding:8px 0 16px}\n"] }]
|
|
225
277
|
}], ctorParameters: () => [], propDecorators: { _modalRef: [{
|
|
226
278
|
type: Input
|
|
227
279
|
}], org: [{
|
|
@@ -231,4 +283,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
231
283
|
}], i18nNamespace: [{
|
|
232
284
|
type: Input
|
|
233
285
|
}] } });
|
|
234
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1vcmctbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9lZGl0LW9yZy1tb2RhbC9lZGl0LW9yZy1tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFckcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUEyQyxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBRXJGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUU1RCxNQUFN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RyxxQkFBcUI7a0JBeENqQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLENBQUMsWUFDMUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJCVDt3REFpQlEsU0FBUztzQkFBakIsS0FBSztnQkFHRyxHQUFHO3NCQUFYLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBlZmZlY3QsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgc2lnbmFsLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJb25CdXR0b24sIElvbkJ1dHRvbnMsIElvbkNvbnRlbnQsIElvbkhlYWRlciwgSW9uVG9vbGJhciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuXG5pbXBvcnQgeyBGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS9mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21wb25lbnRTdGF0ZXMsIEZvcm1NZXRhZGF0YSwgRm9ybVN1Ym1pdCwgSW5wdXRNZXRhZGF0YSwgSW5wdXRUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBPcmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvb3JnL29yZy5zZXJ2aWNlJztcbmltcG9ydCB7IE9yZ2FuaXphdGlvbiB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZy90eXBlcyc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFZhbHRlY2hFcnJvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9lcnJvcnMvdmFsdGVjaC1lcnJvci5zZXJ2aWNlJztcblxuaW1wb3J0IHsgRURJVF9PUkdfTU9EQUxfSTE4TiB9IGZyb20gJy4vZWRpdC1vcmctbW9kYWwuaTE4bic7XG5cbmNvbnN0IERFRkFVTFRfTkFNRVNQQUNFID0gJ0VkaXRPcmdNb2RhbCc7XG5cbi8qKlxuICogYHZhbC1lZGl0LW9yZy1tb2RhbGAg4oCUIG1vZGFsIGRlIGVkaWNpw7NuIGRlIG9yZ2FuaXphY2nDs24gKG5vbWJyZSArIGRlc2NyaXBjacOzbikuXG4gKiBQcm9tb3ZpZG8gZGVzZGUgYHNob3djYXNlYCBiYWpvIGVsIHByb2Nlc28gZGUgQURSLTAyMS4gUmV1c2FkbyBwb3IgbGEgdmlzdGEgZGVcbiAqIGdlc3Rpw7NuIGRlIG9yZ2FuaXphY2nDs24gKHkgZnV0dXJhcyB2aXN0YXMgb3JnLWF3YXJlKS5cbiAqXG4gKiBFZGl0YSBsYSBvcmcgdsOtYSBgT3JnU2VydmljZS51cGRhdGVPcmdgLiBFbCBmb3JtdWxhcmlvIHNlIGNvbnN0cnV5ZSB1bmEgdmV6IHkgc2VcbiAqIG1hbnRpZW5lIHJlYWN0aXZvIGEgaWRpb21hICsgZXN0YWRvIGRlIHRyYWJham8gdsOtYSBlZmZlY3RzIGBhbGxvd1NpZ25hbFdyaXRlc2AuXG4gKiBTaSBlbCBjb25zdW1lciBubyBwYXNhIGBvcmdgLCBjYWUgYWwgYGFjdGl2ZU9yZ0lkYCBkZWwgYEF1dGhTZXJ2aWNlYC5cbiAqXG4gKiBBYmllcnRvIHbDrWEgYE1vZGFsU2VydmljZWAg4oCUIHJlY2liZSBgX21vZGFsUmVmYCBwb3IgYGNvbXBvbmVudFByb3BzYCArIGNhbGxiYWNrXG4gKiBgb25TdWNjZXNzKHVwZGF0ZWQpYC4gSGVhZGVyIGNhbsOzbmljbyAoUmVnbGEgIzUpOiBzaW4gYGlvbi10aXRsZWAsIGJvdMOzbiBDZXJyYXJcbiAqIHRleHRvIGVuIGBzbG90PWVuZGAsIHTDrXR1bG8vc3VidMOtdHVsbyBlbiBlbCBib2R5IGNvbiBgdmFsLWRpc3BsYXlgL2B2YWwtdGl0bGVgLlxuICpcbiAqIEF1dG8tcmVnaXN0cmEgc3VzIGRlZmF1bHRzIGkxOG4gKGVzL2VuKSBzaSBlbCBjb25zdW1lciBubyBwcm92ZXnDsyBlbCBuYW1lc3BhY2VcbiAqIGBFZGl0T3JnTW9kYWxgLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtZWRpdC1vcmctbW9kYWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbSW9uSGVhZGVyLCBJb25Ub29sYmFyLCBJb25CdXR0b25zLCBJb25CdXR0b24sIElvbkNvbnRlbnQsIEZvcm1Db21wb25lbnQsIERpc3BsYXlDb21wb25lbnQsIFRpdGxlQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8aW9uLWhlYWRlcj5cbiAgICAgIDxpb24tdG9vbGJhcj5cbiAgICAgICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIj5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBjb2xvcj1cImRhcmtcIiBzaGFwZT1cInJvdW5kXCIgKGNsaWNrKT1cImRpc21pc3MoKVwiPlxuICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjbG9zZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L2lvbi1idXR0b25zPlxuICAgICAgPC9pb24tdG9vbGJhcj5cbiAgICA8L2lvbi1oZWFkZXI+XG4gICAgPGlvbi1jb250ZW50IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgIDx2YWwtZGlzcGxheSBbcHJvcHNdPVwieyBjb250ZW50OiB0KCd0aXRsZScpLCBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnIH1cIiAvPlxuICAgICAgPHZhbC10aXRsZVxuICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgIGNvbnRlbnQ6IHQoJ3N1YnRpdGxlJyksXG4gICAgICAgICAgc2l6ZTogJ2xhcmdlJyxcbiAgICAgICAgICBjb2xvcjogJycsXG4gICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgIH1cIlxuICAgICAgLz5cbiAgICAgIDx2YWwtZm9ybSBbcHJvcHNdPVwiZm9ybU1ldGEoKVwiIChvblN1Ym1pdCk9XCJvbkZvcm1TdWJtaXQoJGV2ZW50KVwiIC8+XG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY2xvc2UtYm90dG9tXCI+XG4gICAgICAgIDxpb24tYnV0dG9uIGV4cGFuZD1cImJsb2NrXCIgZmlsbD1cIm91dGxpbmVcIiBjb2xvcj1cImRhcmtcIiBzaGFwZT1cInJvdW5kXCIgKGNsaWNrKT1cImRpc21pc3MoKVwiPlxuICAgICAgICAgIHt7IHQoJ2Nsb3NlJykgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9pb24tY29udGVudD5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLm1vZGFsLWNsb3NlLWJvdHRvbSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDE2cHg7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRWRpdE9yZ01vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBvcmdTZXJ2aWNlID0gaW5qZWN0KE9yZ1NlcnZpY2UpO1xuICBwcml2YXRlIHRvYXN0ID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgZXJyb3JzID0gaW5qZWN0KFZhbHRlY2hFcnJvclNlcnZpY2UpO1xuICBwcml2YXRlIGF1dGggPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuXG4gIC8qKiBJbnllY3RhZG8gcG9yIGBNb2RhbFNlcnZpY2Uub3BlbmAg4oCUIHJlZmVyZW5jaWEgcGFyYSBjZXJyYXIgZGVzZGUgZGVudHJvLiAqL1xuICBASW5wdXQoKSBfbW9kYWxSZWY/OiB7IGRpc21pc3M6IChkYXRhPzogdW5rbm93biwgcm9sZT86IHN0cmluZykgPT4gdm9pZCB9O1xuXG4gIC8qKiBPcmdhbml6YWNpw7NuIGEgZWRpdGFyIChwYXNhZGEgcG9yIGBjb21wb25lbnRQcm9wc2ApLiAqL1xuICBASW5wdXQoKSBvcmc6IE9yZ2FuaXphdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBDYWxsYmFjayB0cmFzIGFjdHVhbGl6YXIgbGEgb3JnIChwYXNhZG8gcG9yIGBjb21wb25lbnRQcm9wc2ApLiAqL1xuICBASW5wdXQoKSBvblN1Y2Nlc3M/OiAodXBkYXRlZDogT3JnYW5pemF0aW9uKSA9PiB2b2lkO1xuXG4gIC8qKiBOYW1lc3BhY2UgaTE4biBjb24gcXVlIGxhIHZpc3RhIHJlc3VlbHZlIHN1cyB0ZXh0b3MuICovXG4gIEBJbnB1dCgpIGkxOG5OYW1lc3BhY2UgPSBERUZBVUxUX05BTUVTUEFDRTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHNhdmluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGZvcm1NZXRhOiBXcml0YWJsZVNpZ25hbDxGb3JtTWV0YWRhdGE+O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmICghdGhpcy5pMThuLmhhc05hbWVzcGFjZShERUZBVUxUX05BTUVTUEFDRSkpIHtcbiAgICAgIHRoaXMuaTE4bi5yZWdpc3RlckNvbnRlbnQoREVGQVVMVF9OQU1FU1BBQ0UsIEVESVRfT1JHX01PREFMX0kxOE4pO1xuICAgIH1cbiAgICB0aGlzLmZvcm1NZXRhID0gc2lnbmFsKHRoaXMuYnVpbGRGb3JtTWV0YSgpKTtcblxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICAgICAgdGhpcy5mb3JtTWV0YS5zZXQodGhpcy5idWlsZEZvcm1NZXRhKCkpO1xuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHcgPSB0aGlzLnNhdmluZygpO1xuICAgICAgICB0aGlzLmZvcm1NZXRhLnVwZGF0ZShtID0+ICh7XG4gICAgICAgICAgLi4ubSxcbiAgICAgICAgICBzdGF0ZTogdyA/IENvbXBvbmVudFN0YXRlcy5XT1JLSU5HIDogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgICAgICAgYWN0aW9uczoge1xuICAgICAgICAgICAgLi4ubS5hY3Rpb25zLFxuICAgICAgICAgICAgc3RhdGU6IHcgPyBDb21wb25lbnRTdGF0ZXMuV09SS0lORyA6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pKTtcbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtTWV0YS5zZXQodGhpcy5idWlsZEZvcm1NZXRhKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgYWN0aXZlT3JnSWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCB1ID0gdGhpcy5hdXRoLnVzZXIoKSBhcyB7XG4gICAgICBhY3RpdmVPcmdJZD86IHN0cmluZztcbiAgICAgIGFjdGl2ZU9yZz86IHN0cmluZztcbiAgICB9IHwgbnVsbDtcbiAgICByZXR1cm4gdT8uYWN0aXZlT3JnSWQgPz8gdT8uYWN0aXZlT3JnID8/ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEZvcm1NZXRhKCk6IEZvcm1NZXRhZGF0YSB7XG4gICAgY29uc3QgbmFtZUZpZWxkOiBJbnB1dE1ldGFkYXRhID0ge1xuICAgICAgdG9rZW46ICdlZGl0LW9yZy1uYW1lJyxcbiAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgIGxhYmVsOiB0aGlzLnQoJ25hbWVMYWJlbCcpLFxuICAgICAgaGludDogJycsXG4gICAgICBwbGFjZWhvbGRlcjogdGhpcy50KCduYW1lUGxhY2Vob2xkZXInKSxcbiAgICAgIHR5cGU6IElucHV0VHlwZS5URVhULFxuICAgICAgb3JkZXI6IDEsXG4gICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMiksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwMCldLFxuICAgICAgZXJyb3JzOiB7XG4gICAgICAgIHJlcXVpcmVkOiB0aGlzLnQoJ25hbWVSZXF1aXJlZCcpLFxuICAgICAgICBtaW5sZW5ndGg6IHRoaXMudCgnbmFtZU1pbicpLFxuICAgICAgfSxcbiAgICAgIHZhbHVlOiB0aGlzLm9yZz8ubmFtZSA/PyAnJyxcbiAgICAgIHN0YXRlOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICB9IGFzIElucHV0TWV0YWRhdGE7XG5cbiAgICBjb25zdCBkZXNjRmllbGQ6IElucHV0TWV0YWRhdGEgPSB7XG4gICAgICB0b2tlbjogJ2VkaXQtb3JnLWRlc2MnLFxuICAgICAgbmFtZTogJ2Rlc2NyaXB0aW9uJyxcbiAgICAgIGxhYmVsOiB0aGlzLnQoJ2Rlc2NyaXB0aW9uTGFiZWwnKSxcbiAgICAgIGhpbnQ6ICcnLFxuICAgICAgcGxhY2Vob2xkZXI6IHRoaXMudCgnZGVzY3JpcHRpb25QbGFjZWhvbGRlcicpLFxuICAgICAgdHlwZTogSW5wdXRUeXBlLlRFWFRBUkVBLFxuICAgICAgb3JkZXI6IDIsXG4gICAgICB2YWxpZGF0b3JzOiBbXSxcbiAgICAgIGVycm9yczoge30sXG4gICAgICB2YWx1ZTogdGhpcy5vcmc/LmRlc2NyaXB0aW9uID8/ICcnLFxuICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgIH0gYXMgSW5wdXRNZXRhZGF0YTtcblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiAnJyxcbiAgICAgIHN0YXRlOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICAgIHNlY3Rpb25zOiBbeyBuYW1lOiAnJywgb3JkZXI6IDEsIGZpZWxkczogW25hbWVGaWVsZCwgZGVzY0ZpZWxkXSB9XSxcbiAgICAgIGFjdGlvbnM6IHtcbiAgICAgICAgdGV4dDogdGhpcy50KCdzYXZlQ3RhJyksXG4gICAgICAgIGNvbG9yOiAnZGFyaycgYXMgY29uc3QsXG4gICAgICAgIHR5cGU6ICdzdWJtaXQnIGFzIGNvbnN0LFxuICAgICAgICBmaWxsOiAnc29saWQnIGFzIGNvbnN0LFxuICAgICAgICBzaXplOiAnZGVmYXVsdCcgYXMgY29uc3QsXG4gICAgICAgIHNoYXBlOiAncm91bmQnIGFzIGNvbnN0LFxuICAgICAgICBleHBhbmQ6ICdibG9jaycgYXMgY29uc3QsXG4gICAgICAgIHN0YXRlOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICAgICAgdG9rZW46ICdlZGl0LW9yZy1zdWJtaXQnLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgb25Gb3JtU3VibWl0KGV2ZW50OiBGb3JtU3VibWl0KTogdm9pZCB7XG4gICAgY29uc3QgbmFtZSA9IGV2ZW50LmZpZWxkc1snbmFtZSddIGFzIHN0cmluZztcbiAgICBpZiAoIW5hbWU/LnRyaW0oKSkge1xuICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgbWVzc2FnZTogdGhpcy50KCdmaWxsUmVxdWlyZWQnKSxcbiAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgIHBvc2l0aW9uOiAndG9wJyxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IChldmVudC5maWVsZHNbJ2Rlc2NyaXB0aW9uJ10gYXMgc3RyaW5nIHwgdW5kZWZpbmVkKSA/PyAnJztcbiAgICB2b2lkIHRoaXMuc2F2ZShuYW1lLCBkZXNjcmlwdGlvbik7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNhdmUobmFtZTogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgb3JnSWQgPSB0aGlzLm9yZz8uaWQgPz8gdGhpcy5hY3RpdmVPcmdJZDtcbiAgICBpZiAoIW9yZ0lkIHx8IHRoaXMuc2F2aW5nKCkpIHJldHVybjtcbiAgICB0aGlzLnNhdmluZy5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLm9yZ1NlcnZpY2UudXBkYXRlT3JnKG9yZ0lkLCB7IG5hbWUsIGRlc2NyaXB0aW9uIH0pKTtcbiAgICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICAgIG1lc3NhZ2U6IHRoaXMudCgnc2F2ZVN1Y2Nlc3MnKSxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgZHVyYXRpb246IDM1MDAsXG4gICAgICB9KTtcbiAgICAgIHRoaXMub25TdWNjZXNzPy4odXBkYXRlZCk7XG4gICAgICB0aGlzLl9tb2RhbFJlZj8uZGlzbWlzcyh1cGRhdGVkLCAnY29uZmlybScpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5lcnJvcnMuaGFuZGxlKGVyciwge1xuICAgICAgICBjb250ZXh0OiAnZWRpdE9yZ01vZGFsLnNhdmUnLFxuICAgICAgICBmYWxsYmFja0tleTogJ3NhdmVFcnJvcicsXG4gICAgICAgIGkxOG5OYW1lc3BhY2U6IHRoaXMuaTE4bk5hbWVzcGFjZSxcbiAgICAgIH0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnNhdmluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGRpc21pc3MoKTogdm9pZCB7XG4gICAgdGhpcy5fbW9kYWxSZWY/LmRpc21pc3MobnVsbCwgJ2NhbmNlbCcpO1xuICB9XG5cbiAgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgdGhpcy5pMThuTmFtZXNwYWNlKTtcbiAgfVxufVxuIl19
|
|
286
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1vcmctbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9lZGl0LW9yZy1tb2RhbC9lZGl0LW9yZy1tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUMzRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXJHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFakYsT0FBTyxFQUFFLGVBQWUsRUFBMkMsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWxHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRS9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztB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QUNWLFNBQVMsb1BBQ1QsVUFBVSx3S0FDVixhQUFhLDhIQUNiLGdCQUFnQiwyRUFDaEIsY0FBYyx5RUFDZCxxQkFBcUI7OzRGQW9EWixxQkFBcUI7a0JBaEVqQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1A7d0JBQ1AsU0FBUzt3QkFDVCxVQUFVO3dCQUNWLFVBQVU7d0JBQ1YsU0FBUzt3QkFDVCxVQUFVO3dCQUNWLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkLHFCQUFxQjtxQkFDdEIsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0NUO3dEQXNCUSxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLEdBQUc7c0JBQVgsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgc2lnbmFsLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJb25CdXR0b24sIElvbkJ1dHRvbnMsIElvbkNvbnRlbnQsIElvbkhlYWRlciwgSW9uVG9vbGJhciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuXG5pbXBvcnQgeyBGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS9mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdmF0YXJVcGxvYWRDb21wb25lbnQgfSBmcm9tICcuLi9hdmF0YXItdXBsb2FkL2F2YXRhci11cGxvYWQuY29tcG9uZW50JztcbmltcG9ydCB7IEF2YXRhclVwbG9hZFJlc3VsdCB9IGZyb20gJy4uL2F2YXRhci11cGxvYWQvdHlwZXMnO1xuaW1wb3J0IHsgQ29tcG9uZW50U3RhdGVzLCBGb3JtTWV0YWRhdGEsIEZvcm1TdWJtaXQsIElucHV0TWV0YWRhdGEsIElucHV0VHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgT3JnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZy9vcmcuc2VydmljZSc7XG5pbXBvcnQgeyBPcmdhbml6YXRpb24gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vcmcvdHlwZXMnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBWYWx0ZWNoRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZXJyb3JzL3ZhbHRlY2gtZXJyb3Iuc2VydmljZSc7XG5cbmltcG9ydCB7IEVESVRfT1JHX01PREFMX0kxOE4gfSBmcm9tICcuL2VkaXQtb3JnLW1vZGFsLmkxOG4nO1xuXG5jb25zdCBERUZBVUxUX05BTUVTUEFDRSA9ICdFZGl0T3JnTW9kYWwnO1xuXG4vKipcbiAqIGB2YWwtZWRpdC1vcmctbW9kYWxgIOKAlCBtb2RhbCBkZSBlZGljacOzbiBkZSBvcmdhbml6YWNpw7NuIChub21icmUgKyBkZXNjcmlwY2nDs24pLlxuICogUHJvbW92aWRvIGRlc2RlIGBzaG93Y2FzZWAgYmFqbyBlbCBwcm9jZXNvIGRlIEFEUi0wMjEuIFJldXNhZG8gcG9yIGxhIHZpc3RhIGRlXG4gKiBnZXN0acOzbiBkZSBvcmdhbml6YWNpw7NuICh5IGZ1dHVyYXMgdmlzdGFzIG9yZy1hd2FyZSkuXG4gKlxuICogRWRpdGEgbGEgb3JnIHbDrWEgYE9yZ1NlcnZpY2UudXBkYXRlT3JnYC4gRWwgZm9ybXVsYXJpbyBzZSBjb25zdHJ1eWUgdW5hIHZleiB5IHNlXG4gKiBtYW50aWVuZSByZWFjdGl2byBhIGlkaW9tYSArIGVzdGFkbyBkZSB0cmFiYWpvIHbDrWEgZWZmZWN0cyBgYWxsb3dTaWduYWxXcml0ZXNgLlxuICogU2kgZWwgY29uc3VtZXIgbm8gcGFzYSBgb3JnYCwgY2FlIGFsIGBhY3RpdmVPcmdJZGAgZGVsIGBBdXRoU2VydmljZWAuXG4gKlxuICogQWJpZXJ0byB2w61hIGBNb2RhbFNlcnZpY2VgIOKAlCByZWNpYmUgYF9tb2RhbFJlZmAgcG9yIGBjb21wb25lbnRQcm9wc2AgKyBjYWxsYmFja1xuICogYG9uU3VjY2Vzcyh1cGRhdGVkKWAuIEhlYWRlciBjYW7Ds25pY28gKFJlZ2xhICM1KTogc2luIGBpb24tdGl0bGVgLCBib3TDs24gQ2VycmFyXG4gKiB0ZXh0byBlbiBgc2xvdD1lbmRgLCB0w610dWxvL3N1YnTDrXR1bG8gZW4gZWwgYm9keSBjb24gYHZhbC1kaXNwbGF5YC9gdmFsLXRpdGxlYC5cbiAqXG4gKiBBdXRvLXJlZ2lzdHJhIHN1cyBkZWZhdWx0cyBpMThuIChlcy9lbikgc2kgZWwgY29uc3VtZXIgbm8gcHJvdmV5w7MgZWwgbmFtZXNwYWNlXG4gKiBgRWRpdE9yZ01vZGFsYC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWVkaXQtb3JnLW1vZGFsJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIElvbkhlYWRlcixcbiAgICBJb25Ub29sYmFyLFxuICAgIElvbkJ1dHRvbnMsXG4gICAgSW9uQnV0dG9uLFxuICAgIElvbkNvbnRlbnQsXG4gICAgRm9ybUNvbXBvbmVudCxcbiAgICBEaXNwbGF5Q29tcG9uZW50LFxuICAgIFRpdGxlQ29tcG9uZW50LFxuICAgIEF2YXRhclVwbG9hZENvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8aW9uLWhlYWRlcj5cbiAgICAgIDxpb24tdG9vbGJhcj5cbiAgICAgICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIj5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBjb2xvcj1cImRhcmtcIiBzaGFwZT1cInJvdW5kXCIgKGNsaWNrKT1cImRpc21pc3MoKVwiPlxuICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjbG9zZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L2lvbi1idXR0b25zPlxuICAgICAgPC9pb24tdG9vbGJhcj5cbiAgICA8L2lvbi1oZWFkZXI+XG4gICAgPGlvbi1jb250ZW50IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJsb2dvLXVwbG9hZC13cmFwcGVyXCI+XG4gICAgICAgIDx2YWwtYXZhdGFyLXVwbG9hZFxuICAgICAgICAgIFtwcm9wc109XCJ7IGN1cnJlbnRVcmw6IGxvZ29VcmwoKSwgaW5pdGlhbHM6IG9yZ0luaXRpYWxzKCksIHNpemU6IDgwLCBlZGl0YWJsZTogdHJ1ZSwgc2hvd1ZpZXdCdXR0b246IGZhbHNlIH1cIlxuICAgICAgICAgIFtjdXN0b21QYXRoXT1cIidvcmdzLycgKyAob3JnPy5pZCA/PyBhY3RpdmVPcmdJZCkgKyAnL2xvZ28uanBnJ1wiXG4gICAgICAgICAgW2N1c3RvbVRodW1iUGF0aF09XCInb3Jncy8nICsgKG9yZz8uaWQgPz8gYWN0aXZlT3JnSWQpICsgJy90aHVtYi5qcGcnXCJcbiAgICAgICAgICBbc2tpcEJhY2tlbmRTeW5jXT1cInRydWVcIlxuICAgICAgICAgICh1cGxvYWRlZCk9XCJvbkxvZ29VcGxvYWRlZCgkZXZlbnQpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPHZhbC1kaXNwbGF5IFtwcm9wc109XCJ7IGNvbnRlbnQ6IHQoJ3RpdGxlJyksIHNpemU6ICdzbWFsbCcsIGNvbG9yOiAnZGFyaycgfVwiIC8+XG4gICAgICA8dmFsLXRpdGxlXG4gICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgY29udGVudDogdCgnc3VidGl0bGUnKSxcbiAgICAgICAgICBzaXplOiAnbGFyZ2UnLFxuICAgICAgICAgIGNvbG9yOiAnJyxcbiAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgfVwiXG4gICAgICAvPlxuICAgICAgPHZhbC1mb3JtIFtwcm9wc109XCJmb3JtTWV0YSgpXCIgKG9uU3VibWl0KT1cIm9uRm9ybVN1Ym1pdCgkZXZlbnQpXCIgLz5cbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jbG9zZS1ib3R0b21cIj5cbiAgICAgICAgPGlvbi1idXR0b24gZXhwYW5kPVwiYmxvY2tcIiBmaWxsPVwib3V0bGluZVwiIGNvbG9yPVwiZGFya1wiIHNoYXBlPVwicm91bmRcIiAoY2xpY2spPVwiZGlzbWlzcygpXCI+XG4gICAgICAgICAge3sgdCgnY2xvc2UnKSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2lvbi1jb250ZW50PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAubW9kYWwtY2xvc2UtYm90dG9tIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMTZweDtcbiAgICAgIH1cbiAgICAgIC5sb2dvLXVwbG9hZC13cmFwcGVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDhweCAwIDE2cHg7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRWRpdE9yZ01vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBvcmdTZXJ2aWNlID0gaW5qZWN0KE9yZ1NlcnZpY2UpO1xuICBwcml2YXRlIHRvYXN0ID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgZXJyb3JzID0gaW5qZWN0KFZhbHRlY2hFcnJvclNlcnZpY2UpO1xuICBwcml2YXRlIGF1dGggPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuXG4gIC8qKiBJbnllY3RhZG8gcG9yIGBNb2RhbFNlcnZpY2Uub3BlbmAg4oCUIHJlZmVyZW5jaWEgcGFyYSBjZXJyYXIgZGVzZGUgZGVudHJvLiAqL1xuICBASW5wdXQoKSBfbW9kYWxSZWY/OiB7IGRpc21pc3M6IChkYXRhPzogdW5rbm93biwgcm9sZT86IHN0cmluZykgPT4gdm9pZCB9O1xuXG4gIC8qKiBPcmdhbml6YWNpw7NuIGEgZWRpdGFyIChwYXNhZGEgcG9yIGBjb21wb25lbnRQcm9wc2ApLiAqL1xuICBASW5wdXQoKSBvcmc6IE9yZ2FuaXphdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBDYWxsYmFjayB0cmFzIGFjdHVhbGl6YXIgbGEgb3JnIChwYXNhZG8gcG9yIGBjb21wb25lbnRQcm9wc2ApLiAqL1xuICBASW5wdXQoKSBvblN1Y2Nlc3M/OiAodXBkYXRlZDogT3JnYW5pemF0aW9uKSA9PiB2b2lkO1xuXG4gIC8qKiBOYW1lc3BhY2UgaTE4biBjb24gcXVlIGxhIHZpc3RhIHJlc3VlbHZlIHN1cyB0ZXh0b3MuICovXG4gIEBJbnB1dCgpIGkxOG5OYW1lc3BhY2UgPSBERUZBVUxUX05BTUVTUEFDRTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHNhdmluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBsb2dvVXJsID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSBmb3JtTWV0YTogV3JpdGFibGVTaWduYWw8Rm9ybU1ldGFkYXRhPjtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3JnSW5pdGlhbHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMub3JnPy5uYW1lID8/ICcnO1xuICAgIHJldHVybiBuYW1lLnNsaWNlKDAsIDIpLnRvVXBwZXJDYXNlKCkgfHwgJz8nO1xuICB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAoIXRoaXMuaTE4bi5oYXNOYW1lc3BhY2UoREVGQVVMVF9OQU1FU1BBQ0UpKSB7XG4gICAgICB0aGlzLmkxOG4ucmVnaXN0ZXJDb250ZW50KERFRkFVTFRfTkFNRVNQQUNFLCBFRElUX09SR19NT0RBTF9JMThOKTtcbiAgICB9XG4gICAgdGhpcy5mb3JtTWV0YSA9IHNpZ25hbCh0aGlzLmJ1aWxkRm9ybU1ldGEoKSk7XG5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgICAgIHRoaXMuZm9ybU1ldGEuc2V0KHRoaXMuYnVpbGRGb3JtTWV0YSgpKTtcbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuXG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjb25zdCB3ID0gdGhpcy5zYXZpbmcoKTtcbiAgICAgICAgdGhpcy5mb3JtTWV0YS51cGRhdGUobSA9PiAoe1xuICAgICAgICAgIC4uLm0sXG4gICAgICAgICAgc3RhdGU6IHcgPyBDb21wb25lbnRTdGF0ZXMuV09SS0lORyA6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgICAgICAgIGFjdGlvbnM6IHtcbiAgICAgICAgICAgIC4uLm0uYWN0aW9ucyxcbiAgICAgICAgICAgIHN0YXRlOiB3ID8gQ29tcG9uZW50U3RhdGVzLldPUktJTkcgOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSk7XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubG9nb1VybC5zZXQodGhpcy5vcmc/LmxvZ29VcmwgPz8gbnVsbCk7XG4gICAgdGhpcy5mb3JtTWV0YS5zZXQodGhpcy5idWlsZEZvcm1NZXRhKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBhY3RpdmVPcmdJZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHUgPSB0aGlzLmF1dGgudXNlcigpIGFzIHtcbiAgICAgIGFjdGl2ZU9yZ0lkPzogc3RyaW5nO1xuICAgICAgYWN0aXZlT3JnPzogc3RyaW5nO1xuICAgIH0gfCBudWxsO1xuICAgIHJldHVybiB1Py5hY3RpdmVPcmdJZCA/PyB1Py5hY3RpdmVPcmcgPz8gJyc7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRm9ybU1ldGEoKTogRm9ybU1ldGFkYXRhIHtcbiAgICBjb25zdCBuYW1lRmllbGQ6IElucHV0TWV0YWRhdGEgPSB7XG4gICAgICB0b2tlbjogJ2VkaXQtb3JnLW5hbWUnLFxuICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgbGFiZWw6IHRoaXMudCgnbmFtZUxhYmVsJyksXG4gICAgICBoaW50OiAnJyxcbiAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnQoJ25hbWVQbGFjZWhvbGRlcicpLFxuICAgICAgdHlwZTogSW5wdXRUeXBlLlRFWFQsXG4gICAgICBvcmRlcjogMSxcbiAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgyKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTAwKV0sXG4gICAgICBlcnJvcnM6IHtcbiAgICAgICAgcmVxdWlyZWQ6IHRoaXMudCgnbmFtZVJlcXVpcmVkJyksXG4gICAgICAgIG1pbmxlbmd0aDogdGhpcy50KCduYW1lTWluJyksXG4gICAgICB9LFxuICAgICAgdmFsdWU6IHRoaXMub3JnPy5uYW1lID8/ICcnLFxuICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgIH0gYXMgSW5wdXRNZXRhZGF0YTtcblxuICAgIGNvbnN0IGRlc2NGaWVsZDogSW5wdXRNZXRhZGF0YSA9IHtcbiAgICAgIHRva2VuOiAnZWRpdC1vcmctZGVzYycsXG4gICAgICBuYW1lOiAnZGVzY3JpcHRpb24nLFxuICAgICAgbGFiZWw6IHRoaXMudCgnZGVzY3JpcHRpb25MYWJlbCcpLFxuICAgICAgaGludDogJycsXG4gICAgICBwbGFjZWhvbGRlcjogdGhpcy50KCdkZXNjcmlwdGlvblBsYWNlaG9sZGVyJyksXG4gICAgICB0eXBlOiBJbnB1dFR5cGUuVEVYVEFSRUEsXG4gICAgICBvcmRlcjogMixcbiAgICAgIHZhbGlkYXRvcnM6IFtdLFxuICAgICAgZXJyb3JzOiB7fSxcbiAgICAgIHZhbHVlOiB0aGlzLm9yZz8uZGVzY3JpcHRpb24gPz8gJycsXG4gICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgfSBhcyBJbnB1dE1ldGFkYXRhO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgICAgc2VjdGlvbnM6IFt7IG5hbWU6ICcnLCBvcmRlcjogMSwgZmllbGRzOiBbbmFtZUZpZWxkLCBkZXNjRmllbGRdIH1dLFxuICAgICAgYWN0aW9uczoge1xuICAgICAgICB0ZXh0OiB0aGlzLnQoJ3NhdmVDdGEnKSxcbiAgICAgICAgY29sb3I6ICdkYXJrJyBhcyBjb25zdCxcbiAgICAgICAgdHlwZTogJ3N1Ym1pdCcgYXMgY29uc3QsXG4gICAgICAgIGZpbGw6ICdzb2xpZCcgYXMgY29uc3QsXG4gICAgICAgIHNpemU6ICdkZWZhdWx0JyBhcyBjb25zdCxcbiAgICAgICAgc2hhcGU6ICdyb3VuZCcgYXMgY29uc3QsXG4gICAgICAgIGV4cGFuZDogJ2Jsb2NrJyBhcyBjb25zdCxcbiAgICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgICAgICB0b2tlbjogJ2VkaXQtb3JnLXN1Ym1pdCcsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBvbkZvcm1TdWJtaXQoZXZlbnQ6IEZvcm1TdWJtaXQpOiB2b2lkIHtcbiAgICBjb25zdCBuYW1lID0gZXZlbnQuZmllbGRzWyduYW1lJ10gYXMgc3RyaW5nO1xuICAgIGlmICghbmFtZT8udHJpbSgpKSB7XG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnQoJ2ZpbGxSZXF1aXJlZCcpLFxuICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgcG9zaXRpb246ICd0b3AnLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gKGV2ZW50LmZpZWxkc1snZGVzY3JpcHRpb24nXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQpID8/ICcnO1xuICAgIHZvaWQgdGhpcy5zYXZlKG5hbWUsIGRlc2NyaXB0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2F2ZShuYW1lOiBzdHJpbmcsIGRlc2NyaXB0aW9uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBvcmdJZCA9IHRoaXMub3JnPy5pZCA/PyB0aGlzLmFjdGl2ZU9yZ0lkO1xuICAgIGlmICghb3JnSWQgfHwgdGhpcy5zYXZpbmcoKSkgcmV0dXJuO1xuICAgIHRoaXMuc2F2aW5nLnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdXBkYXRlZCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMub3JnU2VydmljZS51cGRhdGVPcmcob3JnSWQsIHsgbmFtZSwgZGVzY3JpcHRpb24gfSkpO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgbWVzc2FnZTogdGhpcy50KCdzYXZlU3VjY2VzcycpLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBkdXJhdGlvbjogMzUwMCxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5vblN1Y2Nlc3M/Lih1cGRhdGVkKTtcbiAgICAgIHRoaXMuX21vZGFsUmVmPy5kaXNtaXNzKHVwZGF0ZWQsICdjb25maXJtJyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmVycm9ycy5oYW5kbGUoZXJyLCB7XG4gICAgICAgIGNvbnRleHQ6ICdlZGl0T3JnTW9kYWwuc2F2ZScsXG4gICAgICAgIGZhbGxiYWNrS2V5OiAnc2F2ZUVycm9yJyxcbiAgICAgICAgaTE4bk5hbWVzcGFjZTogdGhpcy5pMThuTmFtZXNwYWNlLFxuICAgICAgfSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuc2F2aW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb25Mb2dvVXBsb2FkZWQocmVzdWx0OiBBdmF0YXJVcGxvYWRSZXN1bHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBvcmdJZCA9IHRoaXMub3JnPy5pZCA/PyB0aGlzLmFjdGl2ZU9yZ0lkO1xuICAgIGlmICghb3JnSWQpIHJldHVybjtcbiAgICB0aGlzLmxvZ29Vcmwuc2V0KHJlc3VsdC5hdmF0YXJVcmwpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB1cGRhdGVkID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5vcmdTZXJ2aWNlLnVwZGF0ZU9yZyhvcmdJZCwgeyBsb2dvVXJsOiByZXN1bHQuYXZhdGFyVXJsIH0pKTtcbiAgICAgIHRoaXMub25TdWNjZXNzPy4odXBkYXRlZCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmVycm9ycy5oYW5kbGUoZXJyLCB7XG4gICAgICAgIGNvbnRleHQ6ICdlZGl0T3JnTW9kYWwubG9nbycsXG4gICAgICAgIGZhbGxiYWNrS2V5OiAnc2F2ZUVycm9yJyxcbiAgICAgICAgaTE4bk5hbWVzcGFjZTogdGhpcy5pMThuTmFtZXNwYWNlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZGlzbWlzcygpOiB2b2lkIHtcbiAgICB0aGlzLl9tb2RhbFJlZj8uZGlzbWlzcyhudWxsLCAnY2FuY2VsJyk7XG4gIH1cblxuICB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCB0aGlzLmkxOG5OYW1lc3BhY2UpO1xuICB9XG59XG4iXX0=
|