@fundamental-ngx/platform 0.44.0-rc.1 → 0.44.0-rc.3
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/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.mjs +31 -29
- package/esm2022/message-popover/components/message-view/message-view.component.mjs +12 -11
- package/esm2022/message-popover/message-popover.component.mjs +21 -22
- package/esm2022/settings-generator/layouts/base-settings-generator-layout.mjs +3 -3
- package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-icon/settings-generator-sidebar-icon.component.mjs +8 -8
- package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component.mjs +18 -17
- package/esm2022/settings-generator/settings-generator.component.mjs +14 -17
- package/esm2022/smart-filter-bar/smart-filter-bar.component.mjs +20 -21
- package/esm2022/table/components/table-cell-header-popover/table-cell-header-popover.component.mjs +14 -13
- package/esm2022/table/components/table-column-resizer/table-column-resizer.component.mjs +14 -11
- package/esm2022/table/components/table-header-row/table-header-row.component.mjs +7 -9
- package/esm2022/table/components/table-popping-row/table-popping-row.component.mjs +5 -7
- package/esm2022/table/components/table-row/table-row.component.mjs +31 -32
- package/esm2022/table-helpers/directives/table-cell-resizable.directive.mjs +5 -4
- package/esm2022/table-helpers/directives/table-data-source.directive.mjs +8 -12
- package/esm2022/table-helpers/directives/table-header-resizer.directive.mjs +10 -11
- package/esm2022/table-helpers/directives/table-scrollable.directive.mjs +9 -15
- package/esm2022/table-helpers/directives/table-virtual-scroll.directive.mjs +5 -8
- package/esm2022/variant-management/components/variant-management-wrapper/variant-management-wrapper.component.mjs +13 -16
- package/fesm2022/fundamental-ngx-platform-message-popover.mjs +54 -50
- package/fesm2022/fundamental-ngx-platform-message-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-settings-generator.mjs +31 -33
- package/fesm2022/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +27 -26
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-table-helpers.mjs +23 -35
- package/fesm2022/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-table.mjs +56 -59
- package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs +15 -16
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
- package/fundamental-ngx-platform-v0.44.0-rc.3.tgz +0 -0
- package/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.d.ts +22 -21
- package/message-popover/components/message-view/message-view.component.d.ts +4 -5
- package/message-popover/message-popover.component.d.ts +7 -6
- package/package.json +4 -4
- package/schematics/ng-add/index.js +1 -1
- package/settings-generator/layouts/base-settings-generator-layout.d.ts +16 -17
- package/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-icon/settings-generator-sidebar-icon.component.d.ts +3 -3
- package/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component.d.ts +6 -7
- package/settings-generator/settings-generator.component.d.ts +8 -8
- package/smart-filter-bar/smart-filter-bar.component.d.ts +11 -12
- package/table/components/table-cell-header-popover/table-cell-header-popover.component.d.ts +3 -3
- package/table/components/table-column-resizer/table-column-resizer.component.d.ts +1 -1
- package/table/components/table-row/table-row.component.d.ts +10 -10
- package/table-helpers/directives/table-data-source.directive.d.ts +11 -13
- package/table-helpers/directives/table-header-resizer.directive.d.ts +3 -3
- package/table-helpers/directives/table-scrollable.directive.d.ts +1 -1
- package/table-helpers/directives/table-virtual-scroll.directive.d.ts +1 -1
- package/variant-management/components/variant-management-wrapper/variant-management-wrapper.component.d.ts +1 -3
- package/fundamental-ngx-platform-v0.44.0-rc.1.tgz +0 -0
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, ContentChildren, Inject, Input, QueryList, ViewEncapsulation } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ContentChildren, DestroyRef, Inject, Input, QueryList, ViewEncapsulation } from '@angular/core';
|
|
2
2
|
import { ControlContainer, FormGroup, NgModel } from '@angular/forms';
|
|
3
|
-
import { DestroyedService } from '@fundamental-ngx/cdk/utils';
|
|
4
3
|
import { PlatformFormFieldControl } from '@fundamental-ngx/platform/shared';
|
|
5
|
-
import { BehaviorSubject, filter, startWith, Subject, Subscription, switchMap,
|
|
4
|
+
import { BehaviorSubject, filter, startWith, Subject, Subscription, switchMap, zip } from 'rxjs';
|
|
6
5
|
import { FDP_MESSAGE_POPOVER_CONFIG } from '../../default-config';
|
|
7
6
|
import { MessagePopoverFormItemDirective } from '../../directives/message-popover-form-item.directive';
|
|
8
7
|
import { convertFormState } from '../../utils';
|
|
8
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "@fundamental-ngx/cdk/utils";
|
|
11
10
|
export class MessagePopoverFormWrapperComponent {
|
|
12
11
|
/**
|
|
13
12
|
* User-passed forms.
|
|
@@ -31,25 +30,26 @@ export class MessagePopoverFormWrapperComponent {
|
|
|
31
30
|
return this._formFields;
|
|
32
31
|
}
|
|
33
32
|
/** @hidden */
|
|
34
|
-
constructor(
|
|
35
|
-
this.
|
|
33
|
+
constructor(_destroyRef, _config) {
|
|
34
|
+
this._destroyRef = _destroyRef;
|
|
36
35
|
this._config = _config;
|
|
37
36
|
/** Message Popover instance. */
|
|
38
37
|
this.messagePopover$ = new Subject();
|
|
39
38
|
/** @hidden */
|
|
40
|
-
this._formFields = [];
|
|
41
|
-
/** @hidden */
|
|
42
39
|
this._errors$ = new BehaviorSubject([]);
|
|
40
|
+
/**
|
|
41
|
+
* Error models Observable. Emitted when form submitted and contains invalid fields.
|
|
42
|
+
*/
|
|
43
|
+
// eslint-disable-next-line @typescript-eslint/member-ordering
|
|
44
|
+
this.errors = this._errors$.asObservable();
|
|
45
|
+
/** @hidden */
|
|
46
|
+
this._formFields = [];
|
|
43
47
|
/** @hidden */
|
|
44
48
|
this._ngForms = [];
|
|
45
49
|
/** @hidden */
|
|
46
50
|
this._formItemErrorsSubscription = new Subscription();
|
|
47
51
|
/** @hidden */
|
|
48
52
|
this._formSubmitted = false;
|
|
49
|
-
/**
|
|
50
|
-
* Error models Observable. Emitted when form submitted and contains invalid fields.
|
|
51
|
-
*/
|
|
52
|
-
this.errors = this._errors$.asObservable();
|
|
53
53
|
}
|
|
54
54
|
/** @hidden */
|
|
55
55
|
ngAfterViewInit() {
|
|
@@ -59,7 +59,7 @@ export class MessagePopoverFormWrapperComponent {
|
|
|
59
59
|
}
|
|
60
60
|
this._ngForms = this._projectedForm?.toArray();
|
|
61
61
|
this._startListeningForErrors();
|
|
62
|
-
this._projectedForm?.changes.pipe(
|
|
62
|
+
this._projectedForm?.changes.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {
|
|
63
63
|
this._ngForms = this._projectedForm.toArray();
|
|
64
64
|
this._startListeningForErrors();
|
|
65
65
|
});
|
|
@@ -73,7 +73,7 @@ export class MessagePopoverFormWrapperComponent {
|
|
|
73
73
|
}
|
|
74
74
|
/**
|
|
75
75
|
* Programmatically add new form to array of forms.
|
|
76
|
-
* @param
|
|
76
|
+
* @param forms
|
|
77
77
|
*/
|
|
78
78
|
addForms(forms) {
|
|
79
79
|
const formsArray = Array.isArray(forms) ? forms : [forms];
|
|
@@ -88,6 +88,10 @@ export class MessagePopoverFormWrapperComponent {
|
|
|
88
88
|
this._formFields.push(...formFields);
|
|
89
89
|
this._listenToFormFieldErrors(this._formFields);
|
|
90
90
|
}
|
|
91
|
+
/** @hidden */
|
|
92
|
+
ngOnDestroy() {
|
|
93
|
+
this._formItemErrorsSubscription.unsubscribe();
|
|
94
|
+
}
|
|
91
95
|
/**
|
|
92
96
|
* @hidden
|
|
93
97
|
* Listens to the form submission and collects form control errors.
|
|
@@ -100,7 +104,7 @@ export class MessagePopoverFormWrapperComponent {
|
|
|
100
104
|
this._errors$.next([]);
|
|
101
105
|
const formSubmitEvents = this._ngForms.map((form) => form.ngSubmit.pipe(switchMap(() => form.statusChanges.pipe(startWith(form.status), filter((status) => status.toLowerCase() !== 'pending')))));
|
|
102
106
|
this._formErrorsSubscription = zip(...formSubmitEvents)
|
|
103
|
-
.pipe(
|
|
107
|
+
.pipe(takeUntilDestroyed(this._destroyRef))
|
|
104
108
|
.subscribe(() => {
|
|
105
109
|
this._formSubmitted = true;
|
|
106
110
|
const errors = this._directiveItems.length > 0 ? this._collectPlainFormData() : this._collectAdvancedFormData();
|
|
@@ -128,10 +132,6 @@ export class MessagePopoverFormWrapperComponent {
|
|
|
128
132
|
});
|
|
129
133
|
}
|
|
130
134
|
/** @hidden */
|
|
131
|
-
ngOnDestroy() {
|
|
132
|
-
this._formItemErrorsSubscription.unsubscribe();
|
|
133
|
-
}
|
|
134
|
-
/** @hidden */
|
|
135
135
|
_collectPlainFormData() {
|
|
136
136
|
const errors = [
|
|
137
137
|
{
|
|
@@ -252,6 +252,8 @@ export class MessagePopoverFormWrapperComponent {
|
|
|
252
252
|
* @param field Form Field Control.
|
|
253
253
|
* @param errorDirective Optional Error directive
|
|
254
254
|
* @param section Section where text should be rendered.
|
|
255
|
+
* @param errorKey
|
|
256
|
+
* @param error
|
|
255
257
|
*/
|
|
256
258
|
_getErrorText(field, errorDirective, section = 'heading', errorKey, error) {
|
|
257
259
|
const errorTextObj = {
|
|
@@ -302,20 +304,16 @@ export class MessagePopoverFormWrapperComponent {
|
|
|
302
304
|
_isAdvancedError(error) {
|
|
303
305
|
return !!error && typeof error !== 'string';
|
|
304
306
|
}
|
|
305
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MessagePopoverFormWrapperComponent, deps: [{ token:
|
|
306
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: MessagePopoverFormWrapperComponent, selector: "fdp-message-popover-form-wrapper", inputs: { forms: "forms", formFields: "formFields" },
|
|
307
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MessagePopoverFormWrapperComponent, deps: [{ token: i0.DestroyRef }, { token: FDP_MESSAGE_POPOVER_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
308
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: MessagePopoverFormWrapperComponent, selector: "fdp-message-popover-form-wrapper", inputs: { forms: "forms", formFields: "formFields" }, queries: [{ propertyName: "_projectedForm", predicate: ControlContainer, descendants: true }, { propertyName: "_projectedFormItems", predicate: NgModel, descendants: true }, { propertyName: "_projectedFormFieldControls", predicate: PlatformFormFieldControl, descendants: true }, { propertyName: "_directiveItems", predicate: MessagePopoverFormItemDirective, descendants: true }], exportAs: ["messagePopoverWrapper"], ngImport: i0, template: "<ng-content></ng-content>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
307
309
|
}
|
|
308
310
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MessagePopoverFormWrapperComponent, decorators: [{
|
|
309
311
|
type: Component,
|
|
310
|
-
args: [{ selector: 'fdp-message-popover-form-wrapper', exportAs: 'messagePopoverWrapper',
|
|
311
|
-
}], ctorParameters: function () { return [{ type:
|
|
312
|
+
args: [{ selector: 'fdp-message-popover-form-wrapper', exportAs: 'messagePopoverWrapper', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ng-content></ng-content>\n" }]
|
|
313
|
+
}], ctorParameters: function () { return [{ type: i0.DestroyRef }, { type: undefined, decorators: [{
|
|
312
314
|
type: Inject,
|
|
313
315
|
args: [FDP_MESSAGE_POPOVER_CONFIG]
|
|
314
|
-
}] }]; }, propDecorators: {
|
|
315
|
-
type: Input
|
|
316
|
-
}], formFields: [{
|
|
317
|
-
type: Input
|
|
318
|
-
}], _projectedForm: [{
|
|
316
|
+
}] }]; }, propDecorators: { _projectedForm: [{
|
|
319
317
|
type: ContentChildren,
|
|
320
318
|
args: [ControlContainer, { descendants: true }]
|
|
321
319
|
}], _projectedFormItems: [{
|
|
@@ -327,5 +325,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
327
325
|
}], _directiveItems: [{
|
|
328
326
|
type: ContentChildren,
|
|
329
327
|
args: [MessagePopoverFormItemDirective, { descendants: true }]
|
|
328
|
+
}], forms: [{
|
|
329
|
+
type: Input
|
|
330
|
+
}], formFields: [{
|
|
331
|
+
type: Input
|
|
330
332
|
}] } });
|
|
331
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1wb3BvdmVyLWZvcm0td3JhcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvbWVzc2FnZS1wb3BvdmVyL2NvbXBvbmVudHMvbWVzc2FnZS1wb3BvdmVyLWZvcm0td3JhcHBlci9tZXNzYWdlLXBvcG92ZXItZm9ybS13cmFwcGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9tZXNzYWdlLXBvcG92ZXIvY29tcG9uZW50cy9tZXNzYWdlLXBvcG92ZXItZm9ybS13cmFwcGVyL21lc3NhZ2UtcG9wb3Zlci1mb3JtLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLE1BQU0sRUFDTixLQUFLLEVBRUwsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1CLGdCQUFnQixFQUFFLFNBQVMsRUFBOEIsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkgsT0FBTyxFQUFFLGdCQUFnQixFQUFZLE1BQU0sNEJBQTRCLENBQUM7QUFDeEUsT0FBTyxFQUVILHdCQUF3QixFQUUzQixNQUFNLGtDQUFrQyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVHLE9BQU8sRUFBRSwwQkFBMEIsRUFBbUQsTUFBTSxzQkFBc0IsQ0FBQztBQUNuSCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQU92RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFB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QUFFO2dCQUsvQyxlQUFlO3NCQUQvQixlQUFlO3VCQUFDLCtCQUErQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sQ29udGFpbmVyLCBGb3JtR3JvdXAsIEZvcm1Hcm91cERpcmVjdGl2ZSwgTmdGb3JtLCBOZ01vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybVN0YXRlcyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL2Zvcm1zJztcbmltcG9ydCB7IERlc3Ryb3llZFNlcnZpY2UsIE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHtcbiAgICBQbGF0Zm9ybUZvcm1GaWVsZCxcbiAgICBQbGF0Zm9ybUZvcm1GaWVsZENvbnRyb2wsXG4gICAgRm9ybUZpZWxkRXJyb3JEaXJlY3RpdmVDb250ZXh0XG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlsdGVyLCBzdGFydFdpdGgsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHppcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRkRQX01FU1NBR0VfUE9QT1ZFUl9DT05GSUcsIE1lc3NhZ2VQb3BvdmVyQ29uZmlnLCBNZXNzYWdlUG9wb3ZlckVycm9yQ29uZmlnIH0gZnJvbSAnLi4vLi4vZGVmYXVsdC1jb25maWcnO1xuaW1wb3J0IHsgTWVzc2FnZVBvcG92ZXJGb3JtSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvbWVzc2FnZS1wb3BvdmVyLWZvcm0taXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtcbiAgICBNZXNzYWdlUG9wb3ZlckVudHJ5LFxuICAgIE1lc3NhZ2VQb3BvdmVyRXJyb3JHcm91cCxcbiAgICBNZXNzYWdlUG9wb3ZlckVycm9yVGV4dFxufSBmcm9tICcuLi8uLi9tb2RlbHMvbWVzc2FnZS1wb3BvdmVyLWVudHJ5LmludGVyZmFjZSc7XG5pbXBvcnQgeyBNZXNzYWdlUG9wb3ZlcldyYXBwZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMvbWVzc2FnZS1wb3BvdmVyLXdyYXBwZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IGNvbnZlcnRGb3JtU3RhdGUgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBNZXNzYWdlUG9wb3ZlciB9IGZyb20gJy4uLy4uL21vZGVscy9tZXNzYWdlLXBvcG92ZXIuaW50ZXJmYWNlJztcblxuZXhwb3J0IHR5cGUgTWVzc2FnZVBvcG92ZXJGb3JtID0gTmdGb3JtIHwgRm9ybUdyb3VwRGlyZWN0aXZlO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1tZXNzYWdlLXBvcG92ZXItZm9ybS13cmFwcGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbWVzc2FnZS1wb3BvdmVyLWZvcm0td3JhcHBlci5jb21wb25lbnQuaHRtbCcsXG4gICAgZXhwb3J0QXM6ICdtZXNzYWdlUG9wb3ZlcldyYXBwZXInLFxuICAgIHByb3ZpZGVyczogW0Rlc3Ryb3llZFNlcnZpY2VdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZVBvcG92ZXJGb3JtV3JhcHBlckNvbXBvbmVudCBpbXBsZW1lbnRzIE1lc3NhZ2VQb3BvdmVyV3JhcHBlciwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKiogTWVzc2FnZSBQb3BvdmVyIGluc3RhbmNlLiAqL1xuICAgIG1lc3NhZ2VQb3BvdmVyJCA9IG5ldyBTdWJqZWN0PE1lc3NhZ2VQb3BvdmVyPigpO1xuICAgIC8qKlxuICAgICAqIFVzZXItcGFzc2VkIGZvcm1zLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGZvcm1zKGZvcm1zOiBNZXNzYWdlUG9wb3ZlckZvcm0gfCBNZXNzYWdlUG9wb3ZlckZvcm1bXSkge1xuICAgICAgICBpZiAoIWZvcm1zKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGZvcm1zKSkge1xuICAgICAgICAgICAgZm9ybXMgPSBbZm9ybXNdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX25nRm9ybXMgPSBmb3JtcztcbiAgICAgICAgdGhpcy5fc3RhcnRMaXN0ZW5pbmdGb3JFcnJvcnMoKTtcbiAgICB9XG5cbiAgICAvKiogVXNlci1wYXNzZWQgZm9ybSBmaWVsZHMuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZm9ybUZpZWxkcyh2YWx1ZTogUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sW10pIHtcbiAgICAgICAgdGhpcy5fZm9ybUZpZWxkcyA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9saXN0ZW5Ub0Zvcm1GaWVsZEVycm9ycyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0IGZvcm1GaWVsZHMoKTogUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9ybUZpZWxkcztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Zvcm1GaWVsZHM6IFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbFtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oQ29udHJvbENvbnRhaW5lciwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3Byb2plY3RlZEZvcm06IFF1ZXJ5TGlzdDxNZXNzYWdlUG9wb3ZlckZvcm0+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKE5nTW9kZWwsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9wcm9qZWN0ZWRGb3JtSXRlbXMhOiBRdWVyeUxpc3Q8TmdNb2RlbD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcHJvamVjdGVkRm9ybUZpZWxkQ29udHJvbHMhOiBRdWVyeUxpc3Q8UGxhdGZvcm1Gb3JtRmllbGRDb250cm9sPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihNZXNzYWdlUG9wb3ZlckZvcm1JdGVtRGlyZWN0aXZlLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGlyZWN0aXZlSXRlbXMhOiBRdWVyeUxpc3Q8TWVzc2FnZVBvcG92ZXJGb3JtSXRlbURpcmVjdGl2ZT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Vycm9ycyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1lc3NhZ2VQb3BvdmVyRXJyb3JHcm91cFtdPihbXSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Zvcm1FcnJvcnNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbmdGb3JtczogKE5nRm9ybSB8IEZvcm1Hcm91cERpcmVjdGl2ZSlbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9mb3JtSXRlbUVycm9yc1N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZm9ybVN1Ym1pdHRlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogRXJyb3IgbW9kZWxzIE9ic2VydmFibGUuIEVtaXR0ZWQgd2hlbiBmb3JtIHN1Ym1pdHRlZCBhbmQgY29udGFpbnMgaW52YWxpZCBmaWVsZHMuXG4gICAgICovXG4gICAgZXJyb3JzID0gdGhpcy5fZXJyb3JzJC5hc09ic2VydmFibGUoKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkOiBEZXN0cm95ZWRTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KEZEUF9NRVNTQUdFX1BPUE9WRVJfQ09ORklHKSBwcml2YXRlIHJlYWRvbmx5IF9jb25maWc6IE1lc3NhZ2VQb3BvdmVyQ29uZmlnXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIEZvcm1zIGFyZSBwYXNzZWQgdmlhIGlucHV0IHByb3BlcnR5LlxuICAgICAgICBpZiAodGhpcy5fbmdGb3Jtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbmdGb3JtcyA9IHRoaXMuX3Byb2plY3RlZEZvcm0/LnRvQXJyYXkoKTtcbiAgICAgICAgdGhpcy5fc3RhcnRMaXN0ZW5pbmdGb3JFcnJvcnMoKTtcbiAgICAgICAgdGhpcy5fcHJvamVjdGVkRm9ybT8uY2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9uZ0Zvcm1zID0gdGhpcy5fcHJvamVjdGVkRm9ybS50b0FycmF5KCk7XG4gICAgICAgICAgICB0aGlzLl9zdGFydExpc3RlbmluZ0ZvckVycm9ycygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIE1lc3NhZ2UgUG9wb3ZlciBjb21wb25lbnQgaW5zdGFuY2UuXG4gICAgICovXG4gICAgc2V0TWVzc2FnZVBvcG92ZXIobWVzc2FnZVBvcG92ZXI6IE1lc3NhZ2VQb3BvdmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWVzc2FnZVBvcG92ZXIkLm5leHQobWVzc2FnZVBvcG92ZXIpO1xuICAgICAgICAvLyB0aGlzLm1lc3NhZ2VQb3BvdmVyID0gbWVzc2FnZVBvcG92ZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvZ3JhbW1hdGljYWxseSBhZGQgbmV3IGZvcm0gdG8gYXJyYXkgb2YgZm9ybXMuXG4gICAgICogQHBhcmFtIGZvcm1cbiAgICAgKi9cbiAgICBhZGRGb3Jtcyhmb3JtczogTWVzc2FnZVBvcG92ZXJGb3JtIHwgTWVzc2FnZVBvcG92ZXJGb3JtW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZm9ybXNBcnJheSA9IEFycmF5LmlzQXJyYXkoZm9ybXMpID8gZm9ybXMgOiBbZm9ybXNdO1xuICAgICAgICB0aGlzLl9uZ0Zvcm1zLnB1c2goLi4uZm9ybXNBcnJheSk7XG4gICAgICAgIHRoaXMuX3N0YXJ0TGlzdGVuaW5nRm9yRXJyb3JzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvZ3JhbW1hdGljYWxseSBhZGQgbmV3IGZvcm0gZmllbGRzIHRvIGFycmF5IG9mIGxpc3RlbmVkIGZvcm0gZmllbGRzLlxuICAgICAqIEBwYXJhbSBmb3JtRmllbGRzXG4gICAgICovXG4gICAgYWRkRm9ybUZpZWxkcyhmb3JtRmllbGRzOiBQbGF0Zm9ybUZvcm1GaWVsZENvbnRyb2xbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9mb3JtRmllbGRzLnB1c2goLi4uZm9ybUZpZWxkcyk7XG4gICAgICAgIHRoaXMuX2xpc3RlblRvRm9ybUZpZWxkRXJyb3JzKHRoaXMuX2Zvcm1GaWVsZHMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBMaXN0ZW5zIHRvIHRoZSBmb3JtIHN1Ym1pc3Npb24gYW5kIGNvbGxlY3RzIGZvcm0gY29udHJvbCBlcnJvcnMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfc3RhcnRMaXN0ZW5pbmdGb3JFcnJvcnMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fbmdGb3Jtcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2Zvcm1FcnJvcnNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2Vycm9ycyQubmV4dChbXSk7XG5cbiAgICAgICAgY29uc3QgZm9ybVN1Ym1pdEV2ZW50cyA9IHRoaXMuX25nRm9ybXMubWFwKChmb3JtKSA9PlxuICAgICAgICAgICAgZm9ybS5uZ1N1Ym1pdC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICAgICAgICAgICAgICBmb3JtLnN0YXR1c0NoYW5nZXMhLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGgoZm9ybS5zdGF0dXMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyKChzdGF0dXM6IHN0cmluZykgPT4gc3RhdHVzLnRvTG93ZXJDYXNlKCkgIT09ICdwZW5kaW5nJylcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl9mb3JtRXJyb3JzU3Vic2NyaXB0aW9uID0gemlwKC4uLmZvcm1TdWJtaXRFdmVudHMpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZm9ybVN1Ym1pdHRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3JzID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGlyZWN0aXZlSXRlbXMubGVuZ3RoID4gMCA/IHRoaXMuX2NvbGxlY3RQbGFpbkZvcm1EYXRhKCkgOiB0aGlzLl9jb2xsZWN0QWR2YW5jZWRGb3JtRGF0YSgpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyb3JzJC5uZXh0KGVycm9ycyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9saXN0ZW5Ub0Zvcm1GaWVsZEVycm9ycyh0aGlzLl9wcm9qZWN0ZWRGb3JtRmllbGRDb250cm9scy50b0FycmF5KCkpO1xuXG4gICAgICAgIHRoaXMuX3Byb2plY3RlZEZvcm1GaWVsZENvbnRyb2xzPy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9saXN0ZW5Ub0Zvcm1GaWVsZEVycm9ycyh0aGlzLl9wcm9qZWN0ZWRGb3JtRmllbGRDb250cm9scy50b0FycmF5KCkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3RlblRvRm9ybUZpZWxkRXJyb3JzKGZpZWxkczogUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZm9ybUl0ZW1FcnJvcnNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblxuICAgICAgICB0aGlzLl9mb3JtSXRlbUVycm9yc1N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgICAgICBmaWVsZHM/LmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9mb3JtSXRlbUVycm9yc1N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICAgICAgZmllbGQuZm9ybUZpZWxkPy5lcnJvcnNDaGFuZ2UkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5fZm9ybVN1Ym1pdHRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9ycyA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9kaXJlY3RpdmVJdGVtcy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLl9jb2xsZWN0UGxhaW5Gb3JtRGF0YSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl9jb2xsZWN0QWR2YW5jZWRGb3JtRGF0YSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lcnJvcnMkLm5leHQoZXJyb3JzKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZm9ybUl0ZW1FcnJvcnNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NvbGxlY3RQbGFpbkZvcm1EYXRhKCk6IE1lc3NhZ2VQb3BvdmVyRXJyb3JHcm91cFtdIHtcbiAgICAgICAgY29uc3QgZXJyb3JzOiBNZXNzYWdlUG9wb3ZlckVycm9yR3JvdXBbXSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlcnJvcnM6IFtdXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgZmllbGRzID0gdGhpcy5fZGlyZWN0aXZlSXRlbXMudG9BcnJheSgpO1xuXG4gICAgICAgIHRoaXMuX25nRm9ybXMuZm9yRWFjaCgoZm9ybSkgPT4ge1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoZm9ybS5mb3JtLmNvbnRyb2xzKS5mb3JFYWNoKChjb250cm9sTmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtLmZvcm0uZ2V0KGNvbnRyb2xOYW1lKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IGZpZWxkcy5maW5kKChmb3JtRmllbGQpID0+IGZvcm1GaWVsZC5jb250cm9sPy5uYW1lID09PSBjb250cm9sTmFtZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWNvbnRyb2w/LmVycm9ycyB8fCAhZmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbmZpZ0Vycm9ycyA9IE9iamVjdC5rZXlzKHRoaXMuX2NvbmZpZy5lcnJvcnMpO1xuXG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoY29udHJvbC5lcnJvcnMpXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGVycm9yKSA9PiBjb25maWdFcnJvcnMuaW5jbHVkZXMoZXJyb3IpKVxuICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaCgoZXJyb3JLZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yT2JqID0gY29udHJvbC5lcnJvcnMhW2Vycm9yS2V5XTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JUZXh0TW9kZWwgPSB0aGlzLl9nZXRDb25maWdFcnJvck1vZGVsKGVycm9yS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yOiBNZXNzYWdlUG9wb3ZlckVudHJ5ID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGNvbnRyb2xOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGVycm9yVGV4dE1vZGVsLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGU6IGNvbnZlcnRGb3JtU3RhdGUoJ2Vycm9yJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGROYW1lOiBmaWVsZD8ubGFiZWwgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogZmllbGQ/LmVsZW1lbnRSZWYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGluZzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGVycm9yT2JqLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBlcnJvclRleHRNb2RlbC5oZWFkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGVycm9yT2JqLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBlcnJvclRleHRNb2RlbC5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzOiBjb250cm9sIS5lcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yc1swXS5lcnJvcnMucHVzaChlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBlcnJvcnM7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jb2xsZWN0QWR2YW5jZWRGb3JtRGF0YSgpOiBNZXNzYWdlUG9wb3ZlckVycm9yR3JvdXBbXSB7XG4gICAgICAgIGxldCBlcnJvcnM6IE1lc3NhZ2VQb3BvdmVyRXJyb3JHcm91cFtdID0gW107XG4gICAgICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZm9ybUZpZWxkcy5sZW5ndGggPiAwID8gdGhpcy5mb3JtRmllbGRzIDogdGhpcy5fcHJvamVjdGVkRm9ybUZpZWxkQ29udHJvbHMudG9BcnJheSgpO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJdGVyYXRlcyBvdmVyIGZvcm0gY29udHJvbHMgdG8gY29sbGVjdCB0aGVpciBlcnJvcnMuXG4gICAgICAgICAqIEBwYXJhbSBmb3JtIEZvcm0gR3JvdXAgb3IgYSBjb2xsZWN0aW9uIG9mIEZvcm0gR3JvdXBzLlxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3QgaXRlcmF0ZU92ZXJGb3JtID0gKGZvcm06IEZvcm1Hcm91cCB8IEZvcm1Hcm91cFtdKTogTWVzc2FnZVBvcG92ZXJFcnJvckdyb3VwW10gPT4ge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZm9ybSkpIHtcbiAgICAgICAgICAgICAgICBmb3JtLmZvckVhY2goKGZvcm1Hcm91cCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBlcnJvcnMgPSBpdGVyYXRlT3ZlckZvcm0oZm9ybUdyb3VwKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3JzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgT2JqZWN0LmtleXMoZm9ybS5jb250cm9scykuZm9yRWFjaCgoY29udHJvbE5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybS5nZXQoY29udHJvbE5hbWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gZmllbGRzLmZpbmQoKGZvcm1GaWVsZCkgPT4gZm9ybUZpZWxkLmlkID09PSBjb250cm9sTmFtZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuICAgICAgICAgICAgICAgICAgICBlcnJvcnMgPSBpdGVyYXRlT3ZlckZvcm0oY29udHJvbCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFjb250cm9sPy5lcnJvcnMgfHwgIWZpZWxkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhjb250cm9sLmVycm9ycykuZm9yRWFjaCgoZXJyb3JLZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JEaXJlY3RpdmUgPSBmaWVsZC5mb3JtRmllbGQ/Lmdyb3VwZWRFcnJvcnMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgIChncm91cGVkRXJyb3IpID0+IGdyb3VwZWRFcnJvci5kaXJlY3RpdmUuZXJyb3IgPT09IGVycm9yS2V5XG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBOYW1lID0gdGhpcy5fZ2V0R3JvdXBOYW1lKGZpZWxkPy5mb3JtRmllbGQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IHRoaXMuX2dldEVycm9yTW9kZWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yS2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JEaXJlY3RpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLmVycm9ycyFbZXJyb3JLZXldXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yR3JvdXBJbmRleCA9IGVycm9ycy5maW5kSW5kZXgoKGVycm9yR3JvdXApID0+IGVycm9yR3JvdXAuZ3JvdXAgPT09IGdyb3VwTmFtZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yR3JvdXBJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yR3JvdXBJbmRleCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cDogZ3JvdXBOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM6IFtdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgLSAxO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSBlcnJvcnNbZXJyb3JHcm91cEluZGV4XTtcblxuICAgICAgICAgICAgICAgICAgICBncm91cC5lcnJvcnMucHVzaChlcnJvcik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIGVycm9ycztcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gaXRlcmF0ZU92ZXJGb3JtKHRoaXMuX25nRm9ybXMubWFwKChmb3JtKSA9PiBmb3JtLmZvcm0pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ3JlYXRlcyBlcnJvciBtb2RlbFxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldEVycm9yTW9kZWwoXG4gICAgICAgIGNvbnRyb2xOYW1lOiBzdHJpbmcsXG4gICAgICAgIGdyb3VwTmFtZTogc3RyaW5nLFxuICAgICAgICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsXG4gICAgICAgIGZpZWxkOiBQbGF0Zm9ybUZvcm1GaWVsZENvbnRyb2wsXG4gICAgICAgIGVycm9yS2V5OiBzdHJpbmcsXG4gICAgICAgIGVycm9yRGlyZWN0aXZlPzogRm9ybUZpZWxkRXJyb3JEaXJlY3RpdmVDb250ZXh0LFxuICAgICAgICBlcnJvcj86IGFueVxuICAgICk6IE1lc3NhZ2VQb3BvdmVyRW50cnkge1xuICAgICAgICBsZXQgc3RhdGU6IEZvcm1TdGF0ZXMgPSAnZXJyb3InO1xuICAgICAgICBjb25zdCBjb25maWdFcnJvciA9IHRoaXMuX2NvbmZpZy5lcnJvcnNbZXJyb3JLZXldO1xuXG4gICAgICAgIGlmIChlcnJvckRpcmVjdGl2ZT8uZGlyZWN0aXZlLnR5cGUpIHtcbiAgICAgICAgICAgIHN0YXRlID0gZXJyb3JEaXJlY3RpdmUuZGlyZWN0aXZlLnR5cGU7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5faXNBZHZhbmNlZEVycm9yKGNvbmZpZ0Vycm9yKSkge1xuICAgICAgICAgICAgc3RhdGUgPSBjb25maWdFcnJvci50eXBlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5hbWU6IGNvbnRyb2xOYW1lLFxuICAgICAgICAgICAgdHlwZTogc3RhdGUsXG4gICAgICAgICAgICBzdGF0ZTogY29udmVydEZvcm1TdGF0ZShzdGF0ZSksXG4gICAgICAgICAgICBncm91cDogZ3JvdXBOYW1lLFxuICAgICAgICAgICAgZmllbGROYW1lOiBmaWVsZD8uZm9ybUZpZWxkPy5sYWJlbCA/PyAnJyxcbiAgICAgICAgICAgIGhlYWRpbmc6IHRoaXMuX2dldEVycm9yVGV4dChmaWVsZCwgZXJyb3JEaXJlY3RpdmUsICdoZWFkaW5nJywgZXJyb3JLZXksIGVycm9yKSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLl9nZXRFcnJvclRleHQoZmllbGQsIGVycm9yRGlyZWN0aXZlLCAnZGVzY3JpcHRpb24nLCBlcnJvcktleSwgZXJyb3IpLFxuICAgICAgICAgICAgZXJyb3JzOiBjb250cm9sIS5lcnJvcnMsXG4gICAgICAgICAgICBmb3JtRmllbGQ6IGZpZWxkLFxuICAgICAgICAgICAgZWxlbWVudDogZmllbGQ/LmVsZW1lbnRSZWZcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ3JlYXRlcyBlcnJvciB0ZXh0IGJhc2VkIG9uIHRoZSB0eXBlIG9mIHRoZSBlcnJvci5cbiAgICAgKiBAcGFyYW0gZmllbGQgRm9ybSBGaWVsZCBDb250cm9sLlxuICAgICAqIEBwYXJhbSBlcnJvckRpcmVjdGl2ZSBPcHRpb25hbCBFcnJvciBkaXJlY3RpdmVcbiAgICAgKiBAcGFyYW0gc2VjdGlvbiBTZWN0aW9uIHdoZXJlIHRleHQgc2hvdWxkIGJlIHJlbmRlcmVkLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldEVycm9yVGV4dChcbiAgICAgICAgZmllbGQ6IFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbCxcbiAgICAgICAgZXJyb3JEaXJlY3RpdmU6IE51bGxhYmxlPEZvcm1GaWVsZEVycm9yRGlyZWN0aXZlQ29udGV4dD4sXG4gICAgICAgIHNlY3Rpb246ICdoZWFkaW5nJyB8ICdkZXNjcmlwdGlvbicgPSAnaGVhZGluZycsXG4gICAgICAgIGVycm9yS2V5OiBzdHJpbmcsXG4gICAgICAgIGVycm9yPzogYW55XG4gICAgKTogTWVzc2FnZVBvcG92ZXJFcnJvclRleHQge1xuICAgICAgICBjb25zdCBlcnJvclRleHRPYmo6IE1lc3NhZ2VQb3BvdmVyRXJyb3JUZXh0ID0ge1xuICAgICAgICAgICAgZXJyb3I6IGVycm9yRGlyZWN0aXZlPy5lcnJvcixcbiAgICAgICAgICAgIHR5cGU6IGVycm9yRGlyZWN0aXZlPy5kaXJlY3RpdmUgPyAnZGlyZWN0aXZlJyA6IGZpZWxkPy5mb3JtRmllbGQ/LmkxOFN0cmluZ3MgPyAndGVtcGxhdGVSZWYnIDogJ3N0cmluZydcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoZXJyb3JUZXh0T2JqLnR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvclRleHRNb2RlbCA9IHRoaXMuX2dldENvbmZpZ0Vycm9yTW9kZWwoZXJyb3JLZXkpO1xuXG4gICAgICAgICAgICBlcnJvclRleHRPYmouZXJyb3IgPSBlcnJvcjtcbiAgICAgICAgICAgIGVycm9yVGV4dE9iai5tZXNzYWdlID0gZXJyb3JUZXh0TW9kZWxbc2VjdGlvbl07XG4gICAgICAgICAgICByZXR1cm4gZXJyb3JUZXh0T2JqO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVycm9yRGlyZWN0aXZlPy5kaXJlY3RpdmUpIHtcbiAgICAgICAgICAgIGVycm9yVGV4dE9iai5tZXNzYWdlID1cbiAgICAgICAgICAgICAgICBzZWN0aW9uID09PSAnaGVhZGluZydcbiAgICAgICAgICAgICAgICAgICAgPyBlcnJvckRpcmVjdGl2ZS5kaXJlY3RpdmUuX2hlYWRpbmdUZW1wbGF0ZVJlZiA/PyBlcnJvckRpcmVjdGl2ZS5kaXJlY3RpdmUuX2Rlc2NyaXB0aW9uVGVtcGxhdGVSZWZcbiAgICAgICAgICAgICAgICAgICAgOiBlcnJvckRpcmVjdGl2ZS5kaXJlY3RpdmUuX2Rlc2NyaXB0aW9uVGVtcGxhdGVSZWY7XG4gICAgICAgICAgICByZXR1cm4gZXJyb3JUZXh0T2JqO1xuICAgICAgICB9XG5cbiAgICAgICAgZXJyb3JUZXh0T2JqLm1lc3NhZ2UgPSBmaWVsZD8uZm9ybUZpZWxkPy5pMThTdHJpbmdzID8/IG51bGw7XG4gICAgICAgIHJldHVybiBlcnJvclRleHRPYmo7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRHcm91cE5hbWUoZm9ybUZpZWxkOiBOdWxsYWJsZTxQbGF0Zm9ybUZvcm1GaWVsZD4pOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBbXTtcblxuICAgICAgICBpZiAoZm9ybUZpZWxkPy5mb3JtR3JvdXBDb250YWluZXI/Lm1haW5UaXRsZSkge1xuICAgICAgICAgICAgcGFydHMucHVzaChmb3JtRmllbGQuZm9ybUdyb3VwQ29udGFpbmVyLm1haW5UaXRsZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZm9ybUZpZWxkPy5mb3JtRmllbGRHcm91cD8ubGFiZWwpIHtcbiAgICAgICAgICAgIHBhcnRzLnB1c2goZm9ybUZpZWxkLmZvcm1GaWVsZEdyb3VwLmxhYmVsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXJ0cy5qb2luKCcsICcpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0Q29uZmlnRXJyb3JNb2RlbChlcnJvcktleTogc3RyaW5nKTogTWVzc2FnZVBvcG92ZXJFcnJvckNvbmZpZyB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ0Vycm9yID0gdGhpcy5fY29uZmlnLmVycm9yc1tlcnJvcktleV07XG4gICAgICAgIGNvbnN0IGlzUGxhaW5FcnJvciA9ICF0aGlzLl9pc0FkdmFuY2VkRXJyb3IoY29uZmlnRXJyb3IpO1xuICAgICAgICBjb25zdCBlcnJvclR5cGUgPSBpc1BsYWluRXJyb3IgPyAnZXJyb3InIDogY29uZmlnRXJyb3IudHlwZTtcbiAgICAgICAgY29uc3QgaGVhZGluZ01lc3NhZ2UgPSBpc1BsYWluRXJyb3IgPyBjb25maWdFcnJvciA6IGNvbmZpZ0Vycm9yLmhlYWRpbmc7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uTWVzc2FnZSA9IGlzUGxhaW5FcnJvciA/IHVuZGVmaW5lZCA6IGNvbmZpZ0Vycm9yLmRlc2NyaXB0aW9uO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiBlcnJvclR5cGUsXG4gICAgICAgICAgICBoZWFkaW5nOiBoZWFkaW5nTWVzc2FnZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbk1lc3NhZ2VcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lzQWR2YW5jZWRFcnJvcihlcnJvcjogc3RyaW5nIHwgTWVzc2FnZVBvcG92ZXJFcnJvckNvbmZpZyk6IGVycm9yIGlzIE1lc3NhZ2VQb3BvdmVyRXJyb3JDb25maWcge1xuICAgICAgICByZXR1cm4gISFlcnJvciAmJiB0eXBlb2YgZXJyb3IgIT09ICdzdHJpbmcnO1xuICAgIH1cbn1cbiIsIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==
|
|
333
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1wb3BvdmVyLWZvcm0td3JhcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvbWVzc2FnZS1wb3BvdmVyL2NvbXBvbmVudHMvbWVzc2FnZS1wb3BvdmVyLWZvcm0td3JhcHBlci9tZXNzYWdlLXBvcG92ZXItZm9ybS13cmFwcGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9tZXNzYWdlLXBvcG92ZXIvY29tcG9uZW50cy9tZXNzYWdlLXBvcG92ZXItZm9ybS13cmFwcGVyL21lc3NhZ2UtcG9wb3Zlci1mb3JtLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUVMLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixnQkFBZ0IsRUFBRSxTQUFTLEVBQThCLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR25ILE9BQU8sRUFHSCx3QkFBd0IsRUFDM0IsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSwwQkFBMEIsRUFBbUQsTUFBTSxzQkFBc0IsQ0FBQztBQUNuSCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQU92RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0s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QkFVbkUsS0FBSztzQkFEUixLQUFLO2dCQWNGLFVBQVU7c0JBRGIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xDb250YWluZXIsIEZvcm1Hcm91cCwgRm9ybUdyb3VwRGlyZWN0aXZlLCBOZ0Zvcm0sIE5nTW9kZWwgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGb3JtU3RhdGVzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvZm9ybXMnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQge1xuICAgIEZvcm1GaWVsZEVycm9yRGlyZWN0aXZlQ29udGV4dCxcbiAgICBQbGF0Zm9ybUZvcm1GaWVsZCxcbiAgICBQbGF0Zm9ybUZvcm1GaWVsZENvbnRyb2xcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zaGFyZWQnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaWx0ZXIsIHN0YXJ0V2l0aCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBzd2l0Y2hNYXAsIHppcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRkRQX01FU1NBR0VfUE9QT1ZFUl9DT05GSUcsIE1lc3NhZ2VQb3BvdmVyQ29uZmlnLCBNZXNzYWdlUG9wb3ZlckVycm9yQ29uZmlnIH0gZnJvbSAnLi4vLi4vZGVmYXVsdC1jb25maWcnO1xuaW1wb3J0IHsgTWVzc2FnZVBvcG92ZXJGb3JtSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvbWVzc2FnZS1wb3BvdmVyLWZvcm0taXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtcbiAgICBNZXNzYWdlUG9wb3ZlckVudHJ5LFxuICAgIE1lc3NhZ2VQb3BvdmVyRXJyb3JHcm91cCxcbiAgICBNZXNzYWdlUG9wb3ZlckVycm9yVGV4dFxufSBmcm9tICcuLi8uLi9tb2RlbHMvbWVzc2FnZS1wb3BvdmVyLWVudHJ5LmludGVyZmFjZSc7XG5pbXBvcnQgeyBNZXNzYWdlUG9wb3ZlcldyYXBwZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMvbWVzc2FnZS1wb3BvdmVyLXdyYXBwZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IGNvbnZlcnRGb3JtU3RhdGUgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBNZXNzYWdlUG9wb3ZlciB9IGZyb20gJy4uLy4uL21vZGVscy9tZXNzYWdlLXBvcG92ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuZXhwb3J0IHR5cGUgTWVzc2FnZVBvcG92ZXJGb3JtID0gTmdGb3JtIHwgRm9ybUdyb3VwRGlyZWN0aXZlO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1tZXNzYWdlLXBvcG92ZXItZm9ybS13cmFwcGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbWVzc2FnZS1wb3BvdmVyLWZvcm0td3JhcHBlci5jb21wb25lbnQuaHRtbCcsXG4gICAgZXhwb3J0QXM6ICdtZXNzYWdlUG9wb3ZlcldyYXBwZXInLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZVBvcG92ZXJGb3JtV3JhcHBlckNvbXBvbmVudCBpbXBsZW1lbnRzIE1lc3NhZ2VQb3BvdmVyV3JhcHBlciwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oQ29udHJvbENvbnRhaW5lciwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3Byb2plY3RlZEZvcm06IFF1ZXJ5TGlzdDxNZXNzYWdlUG9wb3ZlckZvcm0+O1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihOZ01vZGVsLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcHJvamVjdGVkRm9ybUl0ZW1zITogUXVlcnlMaXN0PE5nTW9kZWw+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3Byb2plY3RlZEZvcm1GaWVsZENvbnRyb2xzITogUXVlcnlMaXN0PFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oTWVzc2FnZVBvcG92ZXJGb3JtSXRlbURpcmVjdGl2ZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2RpcmVjdGl2ZUl0ZW1zITogUXVlcnlMaXN0PE1lc3NhZ2VQb3BvdmVyRm9ybUl0ZW1EaXJlY3RpdmU+O1xuXG4gICAgLyoqIE1lc3NhZ2UgUG9wb3ZlciBpbnN0YW5jZS4gKi9cbiAgICBtZXNzYWdlUG9wb3ZlciQgPSBuZXcgU3ViamVjdDxNZXNzYWdlUG9wb3Zlcj4oKTtcblxuICAgIC8qKlxuICAgICAqIFVzZXItcGFzc2VkIGZvcm1zLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGZvcm1zKGZvcm1zOiBNZXNzYWdlUG9wb3ZlckZvcm0gfCBNZXNzYWdlUG9wb3ZlckZvcm1bXSkge1xuICAgICAgICBpZiAoIWZvcm1zKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGZvcm1zKSkge1xuICAgICAgICAgICAgZm9ybXMgPSBbZm9ybXNdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX25nRm9ybXMgPSBmb3JtcztcbiAgICAgICAgdGhpcy5fc3RhcnRMaXN0ZW5pbmdGb3JFcnJvcnMoKTtcbiAgICB9XG5cbiAgICAvKiogVXNlci1wYXNzZWQgZm9ybSBmaWVsZHMuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZm9ybUZpZWxkcyh2YWx1ZTogUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sW10pIHtcbiAgICAgICAgdGhpcy5fZm9ybUZpZWxkcyA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9saXN0ZW5Ub0Zvcm1GaWVsZEVycm9ycyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0IGZvcm1GaWVsZHMoKTogUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9ybUZpZWxkcztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Vycm9ycyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1lc3NhZ2VQb3BvdmVyRXJyb3JHcm91cFtdPihbXSk7XG5cbiAgICAvKipcbiAgICAgKiBFcnJvciBtb2RlbHMgT2JzZXJ2YWJsZS4gRW1pdHRlZCB3aGVuIGZvcm0gc3VibWl0dGVkIGFuZCBjb250YWlucyBpbnZhbGlkIGZpZWxkcy5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICAgIGVycm9ycyA9IHRoaXMuX2Vycm9ycyQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Zvcm1GaWVsZHM6IFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbFtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Zvcm1FcnJvcnNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbmdGb3JtczogKE5nRm9ybSB8IEZvcm1Hcm91cERpcmVjdGl2ZSlbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9mb3JtSXRlbUVycm9yc1N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZm9ybVN1Ym1pdHRlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveVJlZjogRGVzdHJveVJlZixcbiAgICAgICAgQEluamVjdChGRFBfTUVTU0FHRV9QT1BPVkVSX0NPTkZJRykgcHJpdmF0ZSByZWFkb25seSBfY29uZmlnOiBNZXNzYWdlUG9wb3ZlckNvbmZpZ1xuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBGb3JtcyBhcmUgcGFzc2VkIHZpYSBpbnB1dCBwcm9wZXJ0eS5cbiAgICAgICAgaWYgKHRoaXMuX25nRm9ybXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX25nRm9ybXMgPSB0aGlzLl9wcm9qZWN0ZWRGb3JtPy50b0FycmF5KCk7XG4gICAgICAgIHRoaXMuX3N0YXJ0TGlzdGVuaW5nRm9yRXJyb3JzKCk7XG4gICAgICAgIHRoaXMuX3Byb2plY3RlZEZvcm0/LmNoYW5nZXMucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9uZ0Zvcm1zID0gdGhpcy5fcHJvamVjdGVkRm9ybS50b0FycmF5KCk7XG4gICAgICAgICAgICB0aGlzLl9zdGFydExpc3RlbmluZ0ZvckVycm9ycygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIE1lc3NhZ2UgUG9wb3ZlciBjb21wb25lbnQgaW5zdGFuY2UuXG4gICAgICovXG4gICAgc2V0TWVzc2FnZVBvcG92ZXIobWVzc2FnZVBvcG92ZXI6IE1lc3NhZ2VQb3BvdmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWVzc2FnZVBvcG92ZXIkLm5leHQobWVzc2FnZVBvcG92ZXIpO1xuICAgICAgICAvLyB0aGlzLm1lc3NhZ2VQb3BvdmVyID0gbWVzc2FnZVBvcG92ZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvZ3JhbW1hdGljYWxseSBhZGQgbmV3IGZvcm0gdG8gYXJyYXkgb2YgZm9ybXMuXG4gICAgICogQHBhcmFtIGZvcm1zXG4gICAgICovXG4gICAgYWRkRm9ybXMoZm9ybXM6IE1lc3NhZ2VQb3BvdmVyRm9ybSB8IE1lc3NhZ2VQb3BvdmVyRm9ybVtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZvcm1zQXJyYXkgPSBBcnJheS5pc0FycmF5KGZvcm1zKSA/IGZvcm1zIDogW2Zvcm1zXTtcbiAgICAgICAgdGhpcy5fbmdGb3Jtcy5wdXNoKC4uLmZvcm1zQXJyYXkpO1xuICAgICAgICB0aGlzLl9zdGFydExpc3RlbmluZ0ZvckVycm9ycygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2dyYW1tYXRpY2FsbHkgYWRkIG5ldyBmb3JtIGZpZWxkcyB0byBhcnJheSBvZiBsaXN0ZW5lZCBmb3JtIGZpZWxkcy5cbiAgICAgKiBAcGFyYW0gZm9ybUZpZWxkc1xuICAgICAqL1xuICAgIGFkZEZvcm1GaWVsZHMoZm9ybUZpZWxkczogUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZm9ybUZpZWxkcy5wdXNoKC4uLmZvcm1GaWVsZHMpO1xuICAgICAgICB0aGlzLl9saXN0ZW5Ub0Zvcm1GaWVsZEVycm9ycyh0aGlzLl9mb3JtRmllbGRzKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9mb3JtSXRlbUVycm9yc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBMaXN0ZW5zIHRvIHRoZSBmb3JtIHN1Ym1pc3Npb24gYW5kIGNvbGxlY3RzIGZvcm0gY29udHJvbCBlcnJvcnMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfc3RhcnRMaXN0ZW5pbmdGb3JFcnJvcnMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fbmdGb3Jtcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2Zvcm1FcnJvcnNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2Vycm9ycyQubmV4dChbXSk7XG5cbiAgICAgICAgY29uc3QgZm9ybVN1Ym1pdEV2ZW50cyA9IHRoaXMuX25nRm9ybXMubWFwKChmb3JtKSA9PlxuICAgICAgICAgICAgZm9ybS5uZ1N1Ym1pdC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICAgICAgICAgICAgICBmb3JtLnN0YXR1c0NoYW5nZXMhLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGgoZm9ybS5zdGF0dXMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyKChzdGF0dXM6IHN0cmluZykgPT4gc3RhdHVzLnRvTG93ZXJDYXNlKCkgIT09ICdwZW5kaW5nJylcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl9mb3JtRXJyb3JzU3Vic2NyaXB0aW9uID0gemlwKC4uLmZvcm1TdWJtaXRFdmVudHMpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9mb3JtU3VibWl0dGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvcnMgPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kaXJlY3RpdmVJdGVtcy5sZW5ndGggPiAwID8gdGhpcy5fY29sbGVjdFBsYWluRm9ybURhdGEoKSA6IHRoaXMuX2NvbGxlY3RBZHZhbmNlZEZvcm1EYXRhKCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9lcnJvcnMkLm5leHQoZXJyb3JzKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2xpc3RlblRvRm9ybUZpZWxkRXJyb3JzKHRoaXMuX3Byb2plY3RlZEZvcm1GaWVsZENvbnRyb2xzLnRvQXJyYXkoKSk7XG5cbiAgICAgICAgdGhpcy5fcHJvamVjdGVkRm9ybUZpZWxkQ29udHJvbHM/LmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xpc3RlblRvRm9ybUZpZWxkRXJyb3JzKHRoaXMuX3Byb2plY3RlZEZvcm1GaWVsZENvbnRyb2xzLnRvQXJyYXkoKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuVG9Gb3JtRmllbGRFcnJvcnMoZmllbGRzOiBQbGF0Zm9ybUZvcm1GaWVsZENvbnRyb2xbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9mb3JtSXRlbUVycm9yc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuXG4gICAgICAgIHRoaXMuX2Zvcm1JdGVtRXJyb3JzU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgICAgIGZpZWxkcz8uZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1JdGVtRXJyb3JzU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgICAgICBmaWVsZC5mb3JtRmllbGQ/LmVycm9yc0NoYW5nZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9mb3JtU3VibWl0dGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JzID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2RpcmVjdGl2ZUl0ZW1zLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuX2NvbGxlY3RQbGFpbkZvcm1EYXRhKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX2NvbGxlY3RBZHZhbmNlZEZvcm1EYXRhKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Vycm9ycyQubmV4dChlcnJvcnMpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NvbGxlY3RQbGFpbkZvcm1EYXRhKCk6IE1lc3NhZ2VQb3BvdmVyRXJyb3JHcm91cFtdIHtcbiAgICAgICAgY29uc3QgZXJyb3JzOiBNZXNzYWdlUG9wb3ZlckVycm9yR3JvdXBbXSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlcnJvcnM6IFtdXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgZmllbGRzID0gdGhpcy5fZGlyZWN0aXZlSXRlbXMudG9BcnJheSgpO1xuXG4gICAgICAgIHRoaXMuX25nRm9ybXMuZm9yRWFjaCgoZm9ybSkgPT4ge1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoZm9ybS5mb3JtLmNvbnRyb2xzKS5mb3JFYWNoKChjb250cm9sTmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtLmZvcm0uZ2V0KGNvbnRyb2xOYW1lKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IGZpZWxkcy5maW5kKChmb3JtRmllbGQpID0+IGZvcm1GaWVsZC5jb250cm9sPy5uYW1lID09PSBjb250cm9sTmFtZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWNvbnRyb2w/LmVycm9ycyB8fCAhZmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbmZpZ0Vycm9ycyA9IE9iamVjdC5rZXlzKHRoaXMuX2NvbmZpZy5lcnJvcnMpO1xuXG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoY29udHJvbC5lcnJvcnMpXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGVycm9yKSA9PiBjb25maWdFcnJvcnMuaW5jbHVkZXMoZXJyb3IpKVxuICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaCgoZXJyb3JLZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yT2JqID0gY29udHJvbC5lcnJvcnMhW2Vycm9yS2V5XTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JUZXh0TW9kZWwgPSB0aGlzLl9nZXRDb25maWdFcnJvck1vZGVsKGVycm9yS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yOiBNZXNzYWdlUG9wb3ZlckVudHJ5ID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGNvbnRyb2xOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGVycm9yVGV4dE1vZGVsLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGU6IGNvbnZlcnRGb3JtU3RhdGUoJ2Vycm9yJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGROYW1lOiBmaWVsZD8ubGFiZWwgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogZmllbGQ/LmVsZW1lbnRSZWYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGluZzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGVycm9yT2JqLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBlcnJvclRleHRNb2RlbC5oZWFkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGVycm9yT2JqLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBlcnJvclRleHRNb2RlbC5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzOiBjb250cm9sIS5lcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yc1swXS5lcnJvcnMucHVzaChlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBlcnJvcnM7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jb2xsZWN0QWR2YW5jZWRGb3JtRGF0YSgpOiBNZXNzYWdlUG9wb3ZlckVycm9yR3JvdXBbXSB7XG4gICAgICAgIGxldCBlcnJvcnM6IE1lc3NhZ2VQb3BvdmVyRXJyb3JHcm91cFtdID0gW107XG4gICAgICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZm9ybUZpZWxkcy5sZW5ndGggPiAwID8gdGhpcy5mb3JtRmllbGRzIDogdGhpcy5fcHJvamVjdGVkRm9ybUZpZWxkQ29udHJvbHMudG9BcnJheSgpO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJdGVyYXRlcyBvdmVyIGZvcm0gY29udHJvbHMgdG8gY29sbGVjdCB0aGVpciBlcnJvcnMuXG4gICAgICAgICAqIEBwYXJhbSBmb3JtIEZvcm0gR3JvdXAgb3IgYSBjb2xsZWN0aW9uIG9mIEZvcm0gR3JvdXBzLlxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3QgaXRlcmF0ZU92ZXJGb3JtID0gKGZvcm06IEZvcm1Hcm91cCB8IEZvcm1Hcm91cFtdKTogTWVzc2FnZVBvcG92ZXJFcnJvckdyb3VwW10gPT4ge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZm9ybSkpIHtcbiAgICAgICAgICAgICAgICBmb3JtLmZvckVhY2goKGZvcm1Hcm91cCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBlcnJvcnMgPSBpdGVyYXRlT3ZlckZvcm0oZm9ybUdyb3VwKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3JzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgT2JqZWN0LmtleXMoZm9ybS5jb250cm9scykuZm9yRWFjaCgoY29udHJvbE5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybS5nZXQoY29udHJvbE5hbWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gZmllbGRzLmZpbmQoKGZvcm1GaWVsZCkgPT4gZm9ybUZpZWxkLmlkID09PSBjb250cm9sTmFtZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuICAgICAgICAgICAgICAgICAgICBlcnJvcnMgPSBpdGVyYXRlT3ZlckZvcm0oY29udHJvbCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFjb250cm9sPy5lcnJvcnMgfHwgIWZpZWxkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhjb250cm9sLmVycm9ycykuZm9yRWFjaCgoZXJyb3JLZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JEaXJlY3RpdmUgPSBmaWVsZC5mb3JtRmllbGQ/Lmdyb3VwZWRFcnJvcnMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgIChncm91cGVkRXJyb3IpID0+IGdyb3VwZWRFcnJvci5kaXJlY3RpdmUuZXJyb3IgPT09IGVycm9yS2V5XG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBOYW1lID0gdGhpcy5fZ2V0R3JvdXBOYW1lKGZpZWxkPy5mb3JtRmllbGQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IHRoaXMuX2dldEVycm9yTW9kZWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yS2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JEaXJlY3RpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLmVycm9ycyFbZXJyb3JLZXldXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yR3JvdXBJbmRleCA9IGVycm9ycy5maW5kSW5kZXgoKGVycm9yR3JvdXApID0+IGVycm9yR3JvdXAuZ3JvdXAgPT09IGdyb3VwTmFtZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yR3JvdXBJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yR3JvdXBJbmRleCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cDogZ3JvdXBOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM6IFtdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgLSAxO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSBlcnJvcnNbZXJyb3JHcm91cEluZGV4XTtcblxuICAgICAgICAgICAgICAgICAgICBncm91cC5lcnJvcnMucHVzaChlcnJvcik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIGVycm9ycztcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gaXRlcmF0ZU92ZXJGb3JtKHRoaXMuX25nRm9ybXMubWFwKChmb3JtKSA9PiBmb3JtLmZvcm0pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ3JlYXRlcyBlcnJvciBtb2RlbFxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldEVycm9yTW9kZWwoXG4gICAgICAgIGNvbnRyb2xOYW1lOiBzdHJpbmcsXG4gICAgICAgIGdyb3VwTmFtZTogc3RyaW5nLFxuICAgICAgICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsXG4gICAgICAgIGZpZWxkOiBQbGF0Zm9ybUZvcm1GaWVsZENvbnRyb2wsXG4gICAgICAgIGVycm9yS2V5OiBzdHJpbmcsXG4gICAgICAgIGVycm9yRGlyZWN0aXZlPzogRm9ybUZpZWxkRXJyb3JEaXJlY3RpdmVDb250ZXh0LFxuICAgICAgICBlcnJvcj86IGFueVxuICAgICk6IE1lc3NhZ2VQb3BvdmVyRW50cnkge1xuICAgICAgICBsZXQgc3RhdGU6IEZvcm1TdGF0ZXMgPSAnZXJyb3InO1xuICAgICAgICBjb25zdCBjb25maWdFcnJvciA9IHRoaXMuX2NvbmZpZy5lcnJvcnNbZXJyb3JLZXldO1xuXG4gICAgICAgIGlmIChlcnJvckRpcmVjdGl2ZT8uZGlyZWN0aXZlLnR5cGUpIHtcbiAgICAgICAgICAgIHN0YXRlID0gZXJyb3JEaXJlY3RpdmUuZGlyZWN0aXZlLnR5cGU7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5faXNBZHZhbmNlZEVycm9yKGNvbmZpZ0Vycm9yKSkge1xuICAgICAgICAgICAgc3RhdGUgPSBjb25maWdFcnJvci50eXBlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5hbWU6IGNvbnRyb2xOYW1lLFxuICAgICAgICAgICAgdHlwZTogc3RhdGUsXG4gICAgICAgICAgICBzdGF0ZTogY29udmVydEZvcm1TdGF0ZShzdGF0ZSksXG4gICAgICAgICAgICBncm91cDogZ3JvdXBOYW1lLFxuICAgICAgICAgICAgZmllbGROYW1lOiBmaWVsZD8uZm9ybUZpZWxkPy5sYWJlbCA/PyAnJyxcbiAgICAgICAgICAgIGhlYWRpbmc6IHRoaXMuX2dldEVycm9yVGV4dChmaWVsZCwgZXJyb3JEaXJlY3RpdmUsICdoZWFkaW5nJywgZXJyb3JLZXksIGVycm9yKSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLl9nZXRFcnJvclRleHQoZmllbGQsIGVycm9yRGlyZWN0aXZlLCAnZGVzY3JpcHRpb24nLCBlcnJvcktleSwgZXJyb3IpLFxuICAgICAgICAgICAgZXJyb3JzOiBjb250cm9sIS5lcnJvcnMsXG4gICAgICAgICAgICBmb3JtRmllbGQ6IGZpZWxkLFxuICAgICAgICAgICAgZWxlbWVudDogZmllbGQ/LmVsZW1lbnRSZWZcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ3JlYXRlcyBlcnJvciB0ZXh0IGJhc2VkIG9uIHRoZSB0eXBlIG9mIHRoZSBlcnJvci5cbiAgICAgKiBAcGFyYW0gZmllbGQgRm9ybSBGaWVsZCBDb250cm9sLlxuICAgICAqIEBwYXJhbSBlcnJvckRpcmVjdGl2ZSBPcHRpb25hbCBFcnJvciBkaXJlY3RpdmVcbiAgICAgKiBAcGFyYW0gc2VjdGlvbiBTZWN0aW9uIHdoZXJlIHRleHQgc2hvdWxkIGJlIHJlbmRlcmVkLlxuICAgICAqIEBwYXJhbSBlcnJvcktleVxuICAgICAqIEBwYXJhbSBlcnJvclxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldEVycm9yVGV4dChcbiAgICAgICAgZmllbGQ6IFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbCxcbiAgICAgICAgZXJyb3JEaXJlY3RpdmU6IE51bGxhYmxlPEZvcm1GaWVsZEVycm9yRGlyZWN0aXZlQ29udGV4dD4sXG4gICAgICAgIHNlY3Rpb246ICdoZWFkaW5nJyB8ICdkZXNjcmlwdGlvbicgPSAnaGVhZGluZycsXG4gICAgICAgIGVycm9yS2V5OiBzdHJpbmcsXG4gICAgICAgIGVycm9yPzogYW55XG4gICAgKTogTWVzc2FnZVBvcG92ZXJFcnJvclRleHQge1xuICAgICAgICBjb25zdCBlcnJvclRleHRPYmo6IE1lc3NhZ2VQb3BvdmVyRXJyb3JUZXh0ID0ge1xuICAgICAgICAgICAgZXJyb3I6IGVycm9yRGlyZWN0aXZlPy5lcnJvcixcbiAgICAgICAgICAgIHR5cGU6IGVycm9yRGlyZWN0aXZlPy5kaXJlY3RpdmUgPyAnZGlyZWN0aXZlJyA6IGZpZWxkPy5mb3JtRmllbGQ/LmkxOFN0cmluZ3MgPyAndGVtcGxhdGVSZWYnIDogJ3N0cmluZydcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoZXJyb3JUZXh0T2JqLnR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvclRleHRNb2RlbCA9IHRoaXMuX2dldENvbmZpZ0Vycm9yTW9kZWwoZXJyb3JLZXkpO1xuXG4gICAgICAgICAgICBlcnJvclRleHRPYmouZXJyb3IgPSBlcnJvcjtcbiAgICAgICAgICAgIGVycm9yVGV4dE9iai5tZXNzYWdlID0gZXJyb3JUZXh0TW9kZWxbc2VjdGlvbl07XG4gICAgICAgICAgICByZXR1cm4gZXJyb3JUZXh0T2JqO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVycm9yRGlyZWN0aXZlPy5kaXJlY3RpdmUpIHtcbiAgICAgICAgICAgIGVycm9yVGV4dE9iai5tZXNzYWdlID1cbiAgICAgICAgICAgICAgICBzZWN0aW9uID09PSAnaGVhZGluZydcbiAgICAgICAgICAgICAgICAgICAgPyBlcnJvckRpcmVjdGl2ZS5kaXJlY3RpdmUuX2hlYWRpbmdUZW1wbGF0ZVJlZiA/PyBlcnJvckRpcmVjdGl2ZS5kaXJlY3RpdmUuX2Rlc2NyaXB0aW9uVGVtcGxhdGVSZWZcbiAgICAgICAgICAgICAgICAgICAgOiBlcnJvckRpcmVjdGl2ZS5kaXJlY3RpdmUuX2Rlc2NyaXB0aW9uVGVtcGxhdGVSZWY7XG4gICAgICAgICAgICByZXR1cm4gZXJyb3JUZXh0T2JqO1xuICAgICAgICB9XG5cbiAgICAgICAgZXJyb3JUZXh0T2JqLm1lc3NhZ2UgPSBmaWVsZD8uZm9ybUZpZWxkPy5pMThTdHJpbmdzID8/IG51bGw7XG4gICAgICAgIHJldHVybiBlcnJvclRleHRPYmo7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRHcm91cE5hbWUoZm9ybUZpZWxkOiBOdWxsYWJsZTxQbGF0Zm9ybUZvcm1GaWVsZD4pOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBbXTtcblxuICAgICAgICBpZiAoZm9ybUZpZWxkPy5mb3JtR3JvdXBDb250YWluZXI/Lm1haW5UaXRsZSkge1xuICAgICAgICAgICAgcGFydHMucHVzaChmb3JtRmllbGQuZm9ybUdyb3VwQ29udGFpbmVyLm1haW5UaXRsZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZm9ybUZpZWxkPy5mb3JtRmllbGRHcm91cD8ubGFiZWwpIHtcbiAgICAgICAgICAgIHBhcnRzLnB1c2goZm9ybUZpZWxkLmZvcm1GaWVsZEdyb3VwLmxhYmVsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXJ0cy5qb2luKCcsICcpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0Q29uZmlnRXJyb3JNb2RlbChlcnJvcktleTogc3RyaW5nKTogTWVzc2FnZVBvcG92ZXJFcnJvckNvbmZpZyB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ0Vycm9yID0gdGhpcy5fY29uZmlnLmVycm9yc1tlcnJvcktleV07XG4gICAgICAgIGNvbnN0IGlzUGxhaW5FcnJvciA9ICF0aGlzLl9pc0FkdmFuY2VkRXJyb3IoY29uZmlnRXJyb3IpO1xuICAgICAgICBjb25zdCBlcnJvclR5cGUgPSBpc1BsYWluRXJyb3IgPyAnZXJyb3InIDogY29uZmlnRXJyb3IudHlwZTtcbiAgICAgICAgY29uc3QgaGVhZGluZ01lc3NhZ2UgPSBpc1BsYWluRXJyb3IgPyBjb25maWdFcnJvciA6IGNvbmZpZ0Vycm9yLmhlYWRpbmc7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uTWVzc2FnZSA9IGlzUGxhaW5FcnJvciA/IHVuZGVmaW5lZCA6IGNvbmZpZ0Vycm9yLmRlc2NyaXB0aW9uO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiBlcnJvclR5cGUsXG4gICAgICAgICAgICBoZWFkaW5nOiBoZWFkaW5nTWVzc2FnZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbk1lc3NhZ2VcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lzQWR2YW5jZWRFcnJvcihlcnJvcjogc3RyaW5nIHwgTWVzc2FnZVBvcG92ZXJFcnJvckNvbmZpZyk6IGVycm9yIGlzIE1lc3NhZ2VQb3BvdmVyRXJyb3JDb25maWcge1xuICAgICAgICByZXR1cm4gISFlcnJvciAmJiB0eXBlb2YgZXJyb3IgIT09ICdzdHJpbmcnO1xuICAgIH1cbn1cbiIsIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { animate, keyframes, state, style, transition, trigger } from '@angular/animations';
|
|
2
2
|
import { DOCUMENT } from '@angular/common';
|
|
3
|
-
import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, HostBinding, Inject, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
4
|
-
import {
|
|
5
|
-
import { debounceTime
|
|
3
|
+
import { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, EventEmitter, HostBinding, Inject, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
4
|
+
import { resizeObservable, TabbableElementService } from '@fundamental-ngx/cdk/utils';
|
|
5
|
+
import { debounceTime } from 'rxjs';
|
|
6
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
import * as i1 from "@fundamental-ngx/cdk/utils";
|
|
8
9
|
import * as i2 from "@angular/common";
|
|
@@ -13,8 +14,8 @@ import * as i6 from "@fundamental-ngx/core/link";
|
|
|
13
14
|
import * as i7 from "@fundamental-ngx/i18n";
|
|
14
15
|
export class MessageViewComponent {
|
|
15
16
|
/** @hidden */
|
|
16
|
-
constructor(
|
|
17
|
-
this.
|
|
17
|
+
constructor(_destroyRef, _tabbableService, _document) {
|
|
18
|
+
this._destroyRef = _destroyRef;
|
|
18
19
|
this._tabbableService = _tabbableService;
|
|
19
20
|
this._document = _document;
|
|
20
21
|
/** Event emitted when user clicks on error entry containing additional description. */
|
|
@@ -31,7 +32,7 @@ export class MessageViewComponent {
|
|
|
31
32
|
/** @hidden */
|
|
32
33
|
ngAfterViewInit() {
|
|
33
34
|
resizeObservable(this._detailsView.nativeElement)
|
|
34
|
-
.pipe(debounceTime(20),
|
|
35
|
+
.pipe(debounceTime(20), takeUntilDestroyed(this._destroyRef))
|
|
35
36
|
.subscribe(() => {
|
|
36
37
|
const { height } = this._detailsView.nativeElement.getBoundingClientRect();
|
|
37
38
|
this._listView.nativeElement.style.minHeight = `${height}px`;
|
|
@@ -67,8 +68,8 @@ export class MessageViewComponent {
|
|
|
67
68
|
this._activeListElement = null;
|
|
68
69
|
}
|
|
69
70
|
}
|
|
70
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MessageViewComponent, deps: [{ token:
|
|
71
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: MessageViewComponent, selector: "fdp-message-view", inputs: { currentScreen: "currentScreen", filteredErrors: "filteredErrors", currentEntry: "currentEntry" }, outputs: { openDetails: "openDetails", focusItem: "focusItem", closePopover: "closePopover" }, host: { properties: { "class": "this._initialClass" } }, providers: [
|
|
71
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MessageViewComponent, deps: [{ token: i0.DestroyRef }, { token: i1.TabbableElementService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
72
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: MessageViewComponent, selector: "fdp-message-view", inputs: { currentScreen: "currentScreen", filteredErrors: "filteredErrors", currentEntry: "currentEntry" }, outputs: { openDetails: "openDetails", focusItem: "focusItem", closePopover: "closePopover" }, host: { properties: { "class": "this._initialClass" } }, providers: [TabbableElementService], viewQueries: [{ propertyName: "_listView", first: true, predicate: ["listView"], descendants: true, read: ElementRef }, { propertyName: "_detailsView", first: true, predicate: ["detailsView"], descendants: true, read: ElementRef }], ngImport: i0, template: "<ng-template #headingTemplate let-item>\n <ng-template #directiveHeading>\n <ng-template\n [ngTemplateOutlet]=\"item.heading.message || item.description.message\"\n [ngTemplateOutletContext]=\"{ $implicit: item.heading.error }\"\n ></ng-template>\n </ng-template>\n <ng-template #i18nHeading>\n <ng-template\n [ngTemplateOutlet]=\"item.heading.message\"\n [ngTemplateOutletContext]=\"{ $implicit: item.errors }\"\n ></ng-template>\n </ng-template>\n <ng-template #stringHeading>\n {{ item.heading.message | fdTranslate : { error: item.heading.error } : item.heading.message }}\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"\n item.heading.type === 'directive'\n ? directiveHeading\n : item.heading.type === 'string'\n ? stringHeading\n : i18nHeading\n \"\n ></ng-template>\n</ng-template>\n\n<ng-template #descriptionTemplate let-item>\n <ng-template #directiveDescription>\n <ng-template\n [ngTemplateOutlet]=\"item.description.message!\"\n [ngTemplateOutletContext]=\"{ $implicit: item.description.error }\"\n ></ng-template>\n </ng-template>\n <ng-template #i18nDescription>\n <ng-template\n [ngTemplateOutlet]=\"item.description.message!\"\n [ngTemplateOutletContext]=\"{ $implicit: item.errors }\"\n ></ng-template>\n </ng-template>\n <ng-template #stringDescription>\n {{ item.description.message | fdTranslate : { error: item.description.error } : item.description.message }}\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"\n item.heading.type === 'directive'\n ? directiveDescription\n : item.heading.type === 'string'\n ? stringDescription\n : i18nDescription\n \"\n ></ng-template>\n</ng-template>\n\n<div class=\"fd-message-view\">\n <section\n class=\"fd-message-view__list\"\n tabindex=\"-1\"\n [@openCloseList]=\"currentScreen === 'list' ? 'open' : 'closed'\"\n (@openCloseList.done)=\"_onListAnimationComplete($event)\"\n fd-scrollbar\n [overrideTabindex]=\"false\"\n >\n <ul #listView fd-list class=\"message-popover__list fd-list--message-view\" [navigationIndicator]=\"true\">\n <ng-container *ngFor=\"let group of filteredErrors\">\n <li fd-list-group-header *ngIf=\"group.group\">\n <span fd-list-title>{{ group.group }}</span>\n </li>\n <ng-container *ngFor=\"let item of group.errors; let i = index\">\n <li fd-list-item [tabindex]=\"i === 0 ? 0 : -1\" [byline]=\"true\" (click)=\"_showDetails(item)\">\n <ng-template #itemIcon>\n <span\n fd-object-status\n class=\"fd-list__icon\"\n [status]=\"item.state\"\n [glyph]=\"'message-' + item.type\"\n ></span>\n </ng-template>\n <ng-template #listSubtitle>\n <span class=\"fd-list__subtitle\">\n <ng-template\n [ngTemplateOutlet]=\"headingTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n </span>\n </ng-template>\n <span\n fd-list-link\n [navigationIndicator]=\"!!item.description.message\"\n *ngIf=\"item.element && !!item.description.message; else anchorListLink\"\n >\n <ng-template [ngTemplateOutlet]=\"itemIcon\"></ng-template>\n <span fd-list-content>\n <span fd-list-title>\n <a tabindex=\"0\" fd-link (click)=\"_focusElement($event, item)\">\n {{ item.fieldName }}\n </a>\n </span>\n <ng-template [ngTemplateOutlet]=\"listSubtitle\"></ng-template>\n </span>\n </span>\n <ng-template #anchorListLink>\n <a fd-list-link [navigationIndicator]=\"!!item.description.message\">\n <ng-template [ngTemplateOutlet]=\"itemIcon\"></ng-template>\n <span fd-list-content>\n <span fd-list-title>{{ item.fieldName }}</span>\n <ng-template [ngTemplateOutlet]=\"listSubtitle\"></ng-template>\n </span>\n </a>\n </ng-template>\n </li>\n </ng-container>\n </ng-container>\n </ul>\n </section>\n <section class=\"fd-message-view__details\" [@openCloseDetails]=\"currentScreen === 'details' ? 'open' : 'closed'\">\n <div #detailsView>\n <ng-container *ngIf=\"currentEntry\">\n <span class=\"fd-message-view__details-title\">\n <span\n fd-object-status\n class=\"fd-message-view__icon\"\n [status]=\"currentEntry.state\"\n [glyph]=\"'message-' + currentEntry.type\"\n ></span>\n <ng-template\n [ngTemplateOutlet]=\"headingTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: currentEntry }\"\n ></ng-template>\n </span>\n <span class=\"fd-message-view__details-description\" *ngIf=\"currentEntry.description.message\">\n <ng-template\n [ngTemplateOutlet]=\"descriptionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: currentEntry }\"\n ></ng-template>\n </span>\n </ng-container>\n </div>\n </section>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator"], outputs: ["focusEscapeList"] }, { kind: "component", type: i3.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "ariaDescribedBy", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "selectedListItemScreenReaderText", "navigatedListItemScreenReaderText", "navigatableListItemScreenReaderText"], outputs: ["keyDown"] }, { kind: "directive", type: i3.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i3.ListGroupHeaderDirective, selector: "[fdListGroupHeader], [fd-list-group-header]", inputs: ["nativeElementId"], outputs: ["keyDown"] }, { kind: "directive", type: i3.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated", "focusable"] }, { kind: "directive", type: i3.ListContentDirective, selector: "[fdListContent], [fd-list-content]", inputs: ["twoCol"] }, { kind: "component", type: i4.ObjectStatusComponent, selector: "[fd-object-status]", inputs: ["class", "status", "glyph", "label", "glyphAriaLabel", "indicationColor", "clickable", "inverted", "large"] }, { kind: "directive", type: i5.ScrollbarDirective, selector: "[fdScrollbar], [fd-scrollbar]", inputs: ["noHorizontalScroll", "noVerticalScroll", "alwaysVisible", "overrideTabindex"] }, { kind: "component", type: i6.LinkComponent, selector: "[fdLink], [fd-link], [fd-breadcrumb-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "pipe", type: i7.FdTranslatePipe, name: "fdTranslate" }], animations: [
|
|
72
73
|
trigger('openCloseList', [
|
|
73
74
|
// ...
|
|
74
75
|
state('open', style({
|
|
@@ -117,7 +118,7 @@ export class MessageViewComponent {
|
|
|
117
118
|
}
|
|
118
119
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MessageViewComponent, decorators: [{
|
|
119
120
|
type: Component,
|
|
120
|
-
args: [{ selector: 'fdp-message-view', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [
|
|
121
|
+
args: [{ selector: 'fdp-message-view', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [TabbableElementService], animations: [
|
|
121
122
|
trigger('openCloseList', [
|
|
122
123
|
// ...
|
|
123
124
|
state('open', style({
|
|
@@ -163,7 +164,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
163
164
|
])
|
|
164
165
|
])
|
|
165
166
|
], template: "<ng-template #headingTemplate let-item>\n <ng-template #directiveHeading>\n <ng-template\n [ngTemplateOutlet]=\"item.heading.message || item.description.message\"\n [ngTemplateOutletContext]=\"{ $implicit: item.heading.error }\"\n ></ng-template>\n </ng-template>\n <ng-template #i18nHeading>\n <ng-template\n [ngTemplateOutlet]=\"item.heading.message\"\n [ngTemplateOutletContext]=\"{ $implicit: item.errors }\"\n ></ng-template>\n </ng-template>\n <ng-template #stringHeading>\n {{ item.heading.message | fdTranslate : { error: item.heading.error } : item.heading.message }}\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"\n item.heading.type === 'directive'\n ? directiveHeading\n : item.heading.type === 'string'\n ? stringHeading\n : i18nHeading\n \"\n ></ng-template>\n</ng-template>\n\n<ng-template #descriptionTemplate let-item>\n <ng-template #directiveDescription>\n <ng-template\n [ngTemplateOutlet]=\"item.description.message!\"\n [ngTemplateOutletContext]=\"{ $implicit: item.description.error }\"\n ></ng-template>\n </ng-template>\n <ng-template #i18nDescription>\n <ng-template\n [ngTemplateOutlet]=\"item.description.message!\"\n [ngTemplateOutletContext]=\"{ $implicit: item.errors }\"\n ></ng-template>\n </ng-template>\n <ng-template #stringDescription>\n {{ item.description.message | fdTranslate : { error: item.description.error } : item.description.message }}\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"\n item.heading.type === 'directive'\n ? directiveDescription\n : item.heading.type === 'string'\n ? stringDescription\n : i18nDescription\n \"\n ></ng-template>\n</ng-template>\n\n<div class=\"fd-message-view\">\n <section\n class=\"fd-message-view__list\"\n tabindex=\"-1\"\n [@openCloseList]=\"currentScreen === 'list' ? 'open' : 'closed'\"\n (@openCloseList.done)=\"_onListAnimationComplete($event)\"\n fd-scrollbar\n [overrideTabindex]=\"false\"\n >\n <ul #listView fd-list class=\"message-popover__list fd-list--message-view\" [navigationIndicator]=\"true\">\n <ng-container *ngFor=\"let group of filteredErrors\">\n <li fd-list-group-header *ngIf=\"group.group\">\n <span fd-list-title>{{ group.group }}</span>\n </li>\n <ng-container *ngFor=\"let item of group.errors; let i = index\">\n <li fd-list-item [tabindex]=\"i === 0 ? 0 : -1\" [byline]=\"true\" (click)=\"_showDetails(item)\">\n <ng-template #itemIcon>\n <span\n fd-object-status\n class=\"fd-list__icon\"\n [status]=\"item.state\"\n [glyph]=\"'message-' + item.type\"\n ></span>\n </ng-template>\n <ng-template #listSubtitle>\n <span class=\"fd-list__subtitle\">\n <ng-template\n [ngTemplateOutlet]=\"headingTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n </span>\n </ng-template>\n <span\n fd-list-link\n [navigationIndicator]=\"!!item.description.message\"\n *ngIf=\"item.element && !!item.description.message; else anchorListLink\"\n >\n <ng-template [ngTemplateOutlet]=\"itemIcon\"></ng-template>\n <span fd-list-content>\n <span fd-list-title>\n <a tabindex=\"0\" fd-link (click)=\"_focusElement($event, item)\">\n {{ item.fieldName }}\n </a>\n </span>\n <ng-template [ngTemplateOutlet]=\"listSubtitle\"></ng-template>\n </span>\n </span>\n <ng-template #anchorListLink>\n <a fd-list-link [navigationIndicator]=\"!!item.description.message\">\n <ng-template [ngTemplateOutlet]=\"itemIcon\"></ng-template>\n <span fd-list-content>\n <span fd-list-title>{{ item.fieldName }}</span>\n <ng-template [ngTemplateOutlet]=\"listSubtitle\"></ng-template>\n </span>\n </a>\n </ng-template>\n </li>\n </ng-container>\n </ng-container>\n </ul>\n </section>\n <section class=\"fd-message-view__details\" [@openCloseDetails]=\"currentScreen === 'details' ? 'open' : 'closed'\">\n <div #detailsView>\n <ng-container *ngIf=\"currentEntry\">\n <span class=\"fd-message-view__details-title\">\n <span\n fd-object-status\n class=\"fd-message-view__icon\"\n [status]=\"currentEntry.state\"\n [glyph]=\"'message-' + currentEntry.type\"\n ></span>\n <ng-template\n [ngTemplateOutlet]=\"headingTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: currentEntry }\"\n ></ng-template>\n </span>\n <span class=\"fd-message-view__details-description\" *ngIf=\"currentEntry.description.message\">\n <ng-template\n [ngTemplateOutlet]=\"descriptionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: currentEntry }\"\n ></ng-template>\n </span>\n </ng-container>\n </div>\n </section>\n</div>\n" }]
|
|
166
|
-
}], ctorParameters: function () { return [{ type:
|
|
167
|
+
}], ctorParameters: function () { return [{ type: i0.DestroyRef }, { type: i1.TabbableElementService }, { type: Document, decorators: [{
|
|
167
168
|
type: Inject,
|
|
168
169
|
args: [DOCUMENT]
|
|
169
170
|
}] }]; }, propDecorators: { currentScreen: [{
|
|
@@ -188,4 +189,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
188
189
|
type: HostBinding,
|
|
189
190
|
args: ['class']
|
|
190
191
|
}] } });
|
|
191
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9tZXNzYWdlLXBvcG92ZXIvY29tcG9uZW50cy9tZXNzYWdlLXZpZXcvbWVzc2FnZS12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9tZXNzYWdlLXBvcG92ZXIvY29tcG9uZW50cy9tZXNzYWdlLXZpZXcvbWVzc2FnZS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hHLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7QUF1RS9DLE1BQU0sT0FBTyxvQkFBb0I7SUF3QzdCLGNBQWM7SUFDZCxZQUNxQixTQUEyQixFQUMzQixnQkFBd0MsRUFDdEIsU0FBbUI7UUFGckMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUF3QjtRQUN0QixjQUFTLEdBQVQsU0FBUyxDQUFVO1FBL0IxRCx1RkFBdUY7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LENBQUM7d0NBQ1YsT0FBTyxFQUFFLE1BQU07cUNBQ2xCLENBQUM7aUNBQ0wsQ0FBQyxDQUNMOzZCQUNKLENBQUM7NEJBQ0YsVUFBVSxDQUFDLGdCQUFnQixFQUFFO2dDQUN6QixLQUFLLENBQUM7b0NBQ0YsT0FBTyxFQUFFLE9BQU87aUNBQ25CLENBQUM7Z0NBQ0YsT0FBTyxDQUFDLHFDQUFxQyxDQUFDOzZCQUNqRCxDQUFDO3lCQUNMLENBQUM7cUJBQ0w7OzBCQThDSSxNQUFNOzJCQUFDLFFBQVE7NENBekNwQixhQUFhO3NCQURaLEtBQUs7Z0JBS04sY0FBYztzQkFEYixLQUFLO2dCQUtOLFlBQVk7c0JBRFgsS0FBSztnQkFLTixXQUFXO3NCQURWLE1BQU07Z0JBS1AsU0FBUztzQkFEUixNQUFNO2dCQUtQLFlBQVk7c0JBRFgsTUFBTTtnQkFLQyxTQUFTO3NCQURoQixTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBS25DLFlBQVk7c0JBRG5CLFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFLN0IsYUFBYTtzQkFEN0IsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwga2V5ZnJhbWVzLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IERlc3Ryb3llZFNlcnZpY2UsIHJlc2l6ZU9ic2VydmFibGUsIFRhYmJhYmxlRWxlbWVudFNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWVzc2FnZVBvcG92ZXJFbnRyeSwgTWVzc2FnZVBvcG92ZXJFcnJvckdyb3VwIH0gZnJvbSAnLi4vLi4vbW9kZWxzL21lc3NhZ2UtcG9wb3Zlci1lbnRyeS5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1tZXNzYWdlLXZpZXcnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9tZXNzYWdlLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbRGVzdHJveWVkU2VydmljZSwgVGFiYmFibGVFbGVtZW50U2VydmljZV0sXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCdvcGVuQ2xvc2VMaXN0JywgW1xuICAgICAgICAgICAgLy8gLi4uXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAnb3BlbicsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJyxcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgJ2Nsb3NlZCcsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC01MHB4KScsXG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDBcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ29wZW4gPT4gY2xvc2VkJywgW2FuaW1hdGUoJy4xcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKScpXSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCdjbG9zZWQgPT4gb3BlbicsIFthbmltYXRlKCcwLjFzIC4xcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKScpXSlcbiAgICAgICAgXSksXG4gICAgICAgIHRyaWdnZXIoJ29wZW5DbG9zZURldGFpbHMnLCBbXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAnb3BlbicsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJyxcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2Jsb2NrJ1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgJ2Nsb3NlZCcsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDUwcHgpJyxcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignb3BlbiA9PiBjbG9zZWQnLCBbXG4gICAgICAgICAgICAgICAgYW5pbWF0ZShcbiAgICAgICAgICAgICAgICAgICAgJy4xcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKScsXG4gICAgICAgICAgICAgICAgICAgIGtleWZyYW1lcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwKScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnYmxvY2snXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDUwcHgpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdub25lJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ2Nsb3NlZCA9PiBvcGVuJywgW1xuICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2Jsb2NrJ1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGFuaW1hdGUoJzAuMXMgLjFzIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpJylcbiAgICAgICAgICAgIF0pXG4gICAgICAgIF0pXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdlVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAgIC8qKiBDdXJyZW50IE1lc3NhZ2UgUG9wb3ZlciBzY3JlZW4uIENhbiBiZSBlaXRoZXIgYGxpc3RgIG9yIGBkZXRhaWxzYC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGN1cnJlbnRTY3JlZW46ICdsaXN0JyB8ICdkZXRhaWxzJztcblxuICAgIC8qKiBGaWx0ZXJlZCBlcnJvcnMgdG8gcmVuZGVyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmlsdGVyZWRFcnJvcnM6IE1lc3NhZ2VQb3BvdmVyRXJyb3JHcm91cFtdO1xuXG4gICAgLyoqIEN1cnJlbnQgZXJyb3IgZW50cnkuIFVzZWQgZm9yIGRldGFpbHMgdmlldy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGN1cnJlbnRFbnRyeTogTnVsbGFibGU8TWVzc2FnZVBvcG92ZXJFbnRyeT47XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHVzZXIgY2xpY2tzIG9uIGVycm9yIGVudHJ5IGNvbnRhaW5pbmcgYWRkaXRpb25hbCBkZXNjcmlwdGlvbi4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBvcGVuRGV0YWlscyA9IG5ldyBFdmVudEVtaXR0ZXI8TWVzc2FnZVBvcG92ZXJFbnRyeT4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdXNlciBjbGlja3Mgb24gZXJyb3IgZW50cnkgYW5kIGl0ZW0ncyBlbGVtZW50IHNob3VsZCBiZSBmb2N1c2VkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGZvY3VzSXRlbSA9IG5ldyBFdmVudEVtaXR0ZXI8TWVzc2FnZVBvcG92ZXJFbnRyeT4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdXNlciBjbGlja3Mgb24gdGhlIGZpZWxkIGxpbmsgdG8gZm9jdXMgb24gdGhlIGZpZWxkIGl0c2VsZi4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBjbG9zZVBvcG92ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2xpc3RWaWV3JywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgcHJpdmF0ZSBfbGlzdFZpZXc6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2RldGFpbHNWaWV3JywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgcHJpdmF0ZSBfZGV0YWlsc1ZpZXc6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogQEhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2luaXRpYWxDbGFzcyA9ICdmZC1tZXNzYWdlLXBvcG92ZXJfX3ZpZXctY29udGFpbmVyJztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYWN0aXZlTGlzdEVsZW1lbnQ6IE51bGxhYmxlPEhUTUxFbGVtZW50PiA9IG51bGw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95JDogRGVzdHJveWVkU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfdGFiYmFibGVTZXJ2aWNlOiBUYWJiYWJsZUVsZW1lbnRTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudDogRG9jdW1lbnRcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgcmVzaXplT2JzZXJ2YWJsZSh0aGlzLl9kZXRhaWxzVmlldy5uYXRpdmVFbGVtZW50KVxuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDIwKSwgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgaGVpZ2h0IH0gPSB0aGlzLl9kZXRhaWxzVmlldy5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2xpc3RWaWV3Lm5hdGl2ZUVsZW1lbnQuc3R5bGUubWluSGVpZ2h0ID0gYCR7aGVpZ2h0fXB4YDtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3Nob3dEZXRhaWxzKGVudHJ5OiBNZXNzYWdlUG9wb3ZlckVudHJ5KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZUxpc3RFbGVtZW50ID0gdGhpcy5fZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgaWYgKCFlbnRyeS5kZXNjcmlwdGlvbi5tZXNzYWdlKSB7XG4gICAgICAgICAgICB0aGlzLl9mb2N1c0VsZW1lbnQodW5kZWZpbmVkLCBlbnRyeSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50U2NyZWVuID0gJ2RldGFpbHMnO1xuICAgICAgICB0aGlzLm9wZW5EZXRhaWxzLmVtaXQoZW50cnkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2ZvY3VzRWxlbWVudChldmVudD86IE1vdXNlRXZlbnQsIGl0ZW0/OiBNZXNzYWdlUG9wb3ZlckVudHJ5KTogdm9pZCB7XG4gICAgICAgIGlmICghaXRlbT8uZWxlbWVudD8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50Py5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5jbG9zZVBvcG92ZXIuZW1pdChmYWxzZSk7XG4gICAgICAgIHRoaXMuZm9jdXNJdGVtLmVtaXQoaXRlbSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGFiYmFibGVFbGVtZW50ID0gdGhpcy5fdGFiYmFibGVTZXJ2aWNlLmdldFRhYmJhYmxlRWxlbWVudChpdGVtLmVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgdGFiYmFibGVFbGVtZW50Py5mb2N1cygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkxpc3RBbmltYXRpb25Db21wbGV0ZShldmVudDogYW55KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudC50b1N0YXRlID09PSAnb3BlbicgJiYgdGhpcy5fYWN0aXZlTGlzdEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2ZUxpc3RFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmVMaXN0RWxlbWVudCA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8bmctdGVtcGxhdGUgI2hlYWRpbmdUZW1wbGF0ZSBsZXQtaXRlbT5cbiAgICA8bmctdGVtcGxhdGUgI2RpcmVjdGl2ZUhlYWRpbmc+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbS5oZWFkaW5nLm1lc3NhZ2UgfHwgaXRlbS5kZXNjcmlwdGlvbi5tZXNzYWdlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbS5oZWFkaW5nLmVycm9yIH1cIlxuICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjaTE4bkhlYWRpbmc+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbS5oZWFkaW5nLm1lc3NhZ2VcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtLmVycm9ycyB9XCJcbiAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI3N0cmluZ0hlYWRpbmc+XG4gICAgICAgIHt7IGl0ZW0uaGVhZGluZy5tZXNzYWdlIHwgZmRUcmFuc2xhdGUgOiB7IGVycm9yOiBpdGVtLmhlYWRpbmcuZXJyb3IgfSA6IGl0ZW0uaGVhZGluZy5tZXNzYWdlIH19XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiXG4gICAgICAgICAgICBpdGVtLmhlYWRpbmcudHlwZSA9PT0gJ2RpcmVjdGl2ZSdcbiAgICAgICAgICAgICAgICA/IGRpcmVjdGl2ZUhlYWRpbmdcbiAgICAgICAgICAgICAgICA6IGl0ZW0uaGVhZGluZy50eXBlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgID8gc3RyaW5nSGVhZGluZ1xuICAgICAgICAgICAgICAgIDogaTE4bkhlYWRpbmdcbiAgICAgICAgXCJcbiAgICA+PC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVzY3JpcHRpb25UZW1wbGF0ZSBsZXQtaXRlbT5cbiAgICA8bmctdGVtcGxhdGUgI2RpcmVjdGl2ZURlc2NyaXB0aW9uPlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW0uZGVzY3JpcHRpb24ubWVzc2FnZSFcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtLmRlc2NyaXB0aW9uLmVycm9yIH1cIlxuICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjaTE4bkRlc2NyaXB0aW9uPlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW0uZGVzY3JpcHRpb24ubWVzc2FnZSFcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtLmVycm9ycyB9XCJcbiAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI3N0cmluZ0Rlc2NyaXB0aW9uPlxuICAgICAgICB7eyBpdGVtLmRlc2NyaXB0aW9uLm1lc3NhZ2UgfCBmZFRyYW5zbGF0ZSA6IHsgZXJyb3I6IGl0ZW0uZGVzY3JpcHRpb24uZXJyb3IgfSA6IGl0ZW0uZGVzY3JpcHRpb24ubWVzc2FnZSB9fVxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIlxuICAgICAgICAgICAgaXRlbS5oZWFkaW5nLnR5cGUgPT09ICdkaXJlY3RpdmUnXG4gICAgICAgICAgICAgICAgPyBkaXJlY3RpdmVEZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgIDogaXRlbS5oZWFkaW5nLnR5cGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgPyBzdHJpbmdEZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgIDogaTE4bkRlc2NyaXB0aW9uXG4gICAgICAgIFwiXG4gICAgPjwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48ZGl2IGNsYXNzPVwiZmQtbWVzc2FnZS12aWV3XCI+XG4gICAgPHNlY3Rpb25cbiAgICAgICAgY2xhc3M9XCJmZC1tZXNzYWdlLXZpZXdfX2xpc3RcIlxuICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgW0BvcGVuQ2xvc2VMaXN0XT1cImN1cnJlbnRTY3JlZW4gPT09ICdsaXN0JyA/ICdvcGVuJyA6ICdjbG9zZWQnXCJcbiAgICAgICAgKEBvcGVuQ2xvc2VMaXN0LmRvbmUpPVwiX29uTGlzdEFuaW1hdGlvbkNvbXBsZXRlKCRldmVudClcIlxuICAgICAgICBmZC1zY3JvbGxiYXJcbiAgICAgICAgW292ZXJyaWRlVGFiaW5kZXhdPVwiZmFsc2VcIlxuICAgID5cbiAgICAgICAgPHVsICNsaXN0VmlldyBmZC1saXN0IGNsYXNzPVwibWVzc2FnZS1wb3BvdmVyX19saXN0IGZkLWxpc3QtLW1lc3NhZ2Utdmlld1wiIFtuYXZpZ2F0aW9uSW5kaWNhdG9yXT1cInRydWVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGZpbHRlcmVkRXJyb3JzXCI+XG4gICAgICAgICAgICAgICAgPGxpIGZkLWxpc3QtZ3JvdXAtaGVhZGVyICpuZ0lmPVwiZ3JvdXAuZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC10aXRsZT57eyBncm91cC5ncm91cCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ3JvdXAuZXJyb3JzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgIDxsaSBmZC1saXN0LWl0ZW0gW3RhYmluZGV4XT1cImkgPT09IDAgPyAwIDogLTFcIiBbYnlsaW5lXT1cInRydWVcIiAoY2xpY2spPVwiX3Nob3dEZXRhaWxzKGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2l0ZW1JY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLW9iamVjdC1zdGF0dXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1saXN0X19pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXR1c109XCJpdGVtLnN0YXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dseXBoXT1cIidtZXNzYWdlLScgKyBpdGVtLnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNsaXN0U3VidGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmZC1saXN0X19zdWJ0aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRpbmdUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0gfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWxpc3QtbGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYXZpZ2F0aW9uSW5kaWNhdG9yXT1cIiEhaXRlbS5kZXNjcmlwdGlvbi5tZXNzYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0uZWxlbWVudCAmJiAhIWl0ZW0uZGVzY3JpcHRpb24ubWVzc2FnZTsgZWxzZSBhbmNob3JMaXN0TGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1JY29uXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSB0YWJpbmRleD1cIjBcIiBmZC1saW5rIChjbGljayk9XCJfZm9jdXNFbGVtZW50KCRldmVudCwgaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmZpZWxkTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsaXN0U3VidGl0bGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYW5jaG9yTGlzdExpbms+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZmQtbGlzdC1saW5rIFtuYXZpZ2F0aW9uSW5kaWNhdG9yXT1cIiEhaXRlbS5kZXNjcmlwdGlvbi5tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtSWNvblwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+e3sgaXRlbS5maWVsZE5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibGlzdFN1YnRpdGxlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC91bD5cbiAgICA8L3NlY3Rpb24+XG4gICAgPHNlY3Rpb24gY2xhc3M9XCJmZC1tZXNzYWdlLXZpZXdfX2RldGFpbHNcIiBbQG9wZW5DbG9zZURldGFpbHNdPVwiY3VycmVudFNjcmVlbiA9PT0gJ2RldGFpbHMnID8gJ29wZW4nIDogJ2Nsb3NlZCdcIj5cbiAgICAgICAgPGRpdiAjZGV0YWlsc1ZpZXc+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudEVudHJ5XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmZC1tZXNzYWdlLXZpZXdfX2RldGFpbHMtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLW9iamVjdC1zdGF0dXNcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtbWVzc2FnZS12aWV3X19pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0dXNdPVwiY3VycmVudEVudHJ5LnN0YXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtnbHlwaF09XCInbWVzc2FnZS0nICsgY3VycmVudEVudHJ5LnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRpbmdUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGN1cnJlbnRFbnRyeSB9XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmQtbWVzc2FnZS12aWV3X19kZXRhaWxzLWRlc2NyaXB0aW9uXCIgKm5nSWY9XCJjdXJyZW50RW50cnkuZGVzY3JpcHRpb24ubWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRlc2NyaXB0aW9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjdXJyZW50RW50cnkgfVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG48L2Rpdj5cbiJdfQ==
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9tZXNzYWdlLXBvcG92ZXIvY29tcG9uZW50cy9tZXNzYWdlLXZpZXcvbWVzc2FnZS12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9tZXNzYWdlLXBvcG92ZXIvY29tcG9uZW50cy9tZXNzYWdlLXZpZXcvbWVzc2FnZS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQVksZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7QUFzRWhFLE1BQU0sT0FBTyxvQkFBb0I7SUF3QzdCLGNBQWM7SUFDZCxZQUNxQixXQUF1QixFQUN2QixnQkFBd0MsRUFDdEIsU0FBbUI7UUFGckMsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUF3QjtRQUN0Qixj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LE9BQU8sRUFBRSxDQUFDO3dDQUNWLE9BQU8sRUFBRSxNQUFNO3FDQUNsQixDQUFDO2lDQUNMLENBQUMsQ0FDTDs2QkFDSixDQUFDOzRCQUNGLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRTtnQ0FDekIsS0FBSyxDQUFDO29DQUNGLE9BQU8sRUFBRSxPQUFPO2lDQUNuQixDQUFDO2dDQUNGLE9BQU8sQ0FBQyxxQ0FBcUMsQ0FBQzs2QkFDakQsQ0FBQzt5QkFDTCxDQUFDO3FCQUNMOzswQkE4Q0ksTUFBTTsyQkFBQyxRQUFROzRDQXpDcEIsYUFBYTtzQkFEWixLQUFLO2dCQUtOLGNBQWM7c0JBRGIsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sV0FBVztzQkFEVixNQUFNO2dCQUtQLFNBQVM7c0JBRFIsTUFBTTtnQkFLUCxZQUFZO3NCQURYLE1BQU07Z0JBS0MsU0FBUztzQkFEaEIsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUtuQyxZQUFZO3NCQURuQixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBSzdCLGFBQWE7c0JBRDdCLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIGtleWZyYW1lcywgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOdWxsYWJsZSwgcmVzaXplT2JzZXJ2YWJsZSwgVGFiYmFibGVFbGVtZW50U2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWVzc2FnZVBvcG92ZXJFbnRyeSwgTWVzc2FnZVBvcG92ZXJFcnJvckdyb3VwIH0gZnJvbSAnLi4vLi4vbW9kZWxzL21lc3NhZ2UtcG9wb3Zlci1lbnRyeS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1tZXNzYWdlLXZpZXcnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9tZXNzYWdlLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbVGFiYmFibGVFbGVtZW50U2VydmljZV0sXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCdvcGVuQ2xvc2VMaXN0JywgW1xuICAgICAgICAgICAgLy8gLi4uXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAnb3BlbicsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJyxcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgJ2Nsb3NlZCcsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC01MHB4KScsXG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDBcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ29wZW4gPT4gY2xvc2VkJywgW2FuaW1hdGUoJy4xcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKScpXSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCdjbG9zZWQgPT4gb3BlbicsIFthbmltYXRlKCcwLjFzIC4xcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKScpXSlcbiAgICAgICAgXSksXG4gICAgICAgIHRyaWdnZXIoJ29wZW5DbG9zZURldGFpbHMnLCBbXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAnb3BlbicsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJyxcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2Jsb2NrJ1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgJ2Nsb3NlZCcsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDUwcHgpJyxcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignb3BlbiA9PiBjbG9zZWQnLCBbXG4gICAgICAgICAgICAgICAgYW5pbWF0ZShcbiAgICAgICAgICAgICAgICAgICAgJy4xcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKScsXG4gICAgICAgICAgICAgICAgICAgIGtleWZyYW1lcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwKScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnYmxvY2snXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDUwcHgpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdub25lJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ2Nsb3NlZCA9PiBvcGVuJywgW1xuICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2Jsb2NrJ1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGFuaW1hdGUoJzAuMXMgLjFzIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpJylcbiAgICAgICAgICAgIF0pXG4gICAgICAgIF0pXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdlVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAgIC8qKiBDdXJyZW50IE1lc3NhZ2UgUG9wb3ZlciBzY3JlZW4uIENhbiBiZSBlaXRoZXIgYGxpc3RgIG9yIGBkZXRhaWxzYC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGN1cnJlbnRTY3JlZW46ICdsaXN0JyB8ICdkZXRhaWxzJztcblxuICAgIC8qKiBGaWx0ZXJlZCBlcnJvcnMgdG8gcmVuZGVyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmlsdGVyZWRFcnJvcnM6IE1lc3NhZ2VQb3BvdmVyRXJyb3JHcm91cFtdO1xuXG4gICAgLyoqIEN1cnJlbnQgZXJyb3IgZW50cnkuIFVzZWQgZm9yIGRldGFpbHMgdmlldy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGN1cnJlbnRFbnRyeTogTnVsbGFibGU8TWVzc2FnZVBvcG92ZXJFbnRyeT47XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHVzZXIgY2xpY2tzIG9uIGVycm9yIGVudHJ5IGNvbnRhaW5pbmcgYWRkaXRpb25hbCBkZXNjcmlwdGlvbi4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBvcGVuRGV0YWlscyA9IG5ldyBFdmVudEVtaXR0ZXI8TWVzc2FnZVBvcG92ZXJFbnRyeT4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdXNlciBjbGlja3Mgb24gZXJyb3IgZW50cnkgYW5kIGl0ZW0ncyBlbGVtZW50IHNob3VsZCBiZSBmb2N1c2VkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGZvY3VzSXRlbSA9IG5ldyBFdmVudEVtaXR0ZXI8TWVzc2FnZVBvcG92ZXJFbnRyeT4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdXNlciBjbGlja3Mgb24gdGhlIGZpZWxkIGxpbmsgdG8gZm9jdXMgb24gdGhlIGZpZWxkIGl0c2VsZi4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBjbG9zZVBvcG92ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2xpc3RWaWV3JywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgcHJpdmF0ZSBfbGlzdFZpZXc6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2RldGFpbHNWaWV3JywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgcHJpdmF0ZSBfZGV0YWlsc1ZpZXc6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogQEhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2luaXRpYWxDbGFzcyA9ICdmZC1tZXNzYWdlLXBvcG92ZXJfX3ZpZXctY29udGFpbmVyJztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYWN0aXZlTGlzdEVsZW1lbnQ6IE51bGxhYmxlPEhUTUxFbGVtZW50PiA9IG51bGw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmOiBEZXN0cm95UmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF90YWJiYWJsZVNlcnZpY2U6IFRhYmJhYmxlRWxlbWVudFNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgcmVhZG9ubHkgX2RvY3VtZW50OiBEb2N1bWVudFxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICByZXNpemVPYnNlcnZhYmxlKHRoaXMuX2RldGFpbHNWaWV3Lm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMjApLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGhlaWdodCB9ID0gdGhpcy5fZGV0YWlsc1ZpZXcubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9saXN0Vmlldy5uYXRpdmVFbGVtZW50LnN0eWxlLm1pbkhlaWdodCA9IGAke2hlaWdodH1weGA7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zaG93RGV0YWlscyhlbnRyeTogTWVzc2FnZVBvcG92ZXJFbnRyeSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hY3RpdmVMaXN0RWxlbWVudCA9IHRoaXMuX2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGlmICghZW50cnkuZGVzY3JpcHRpb24ubWVzc2FnZSkge1xuICAgICAgICAgICAgdGhpcy5fZm9jdXNFbGVtZW50KHVuZGVmaW5lZCwgZW50cnkpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VycmVudFNjcmVlbiA9ICdkZXRhaWxzJztcbiAgICAgICAgdGhpcy5vcGVuRGV0YWlscy5lbWl0KGVudHJ5KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9mb2N1c0VsZW1lbnQoZXZlbnQ/OiBNb3VzZUV2ZW50LCBpdGVtPzogTWVzc2FnZVBvcG92ZXJFbnRyeSk6IHZvaWQge1xuICAgICAgICBpZiAoIWl0ZW0/LmVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBldmVudD8uc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuY2xvc2VQb3BvdmVyLmVtaXQoZmFsc2UpO1xuICAgICAgICB0aGlzLmZvY3VzSXRlbS5lbWl0KGl0ZW0pO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhYmJhYmxlRWxlbWVudCA9IHRoaXMuX3RhYmJhYmxlU2VydmljZS5nZXRUYWJiYWJsZUVsZW1lbnQoaXRlbS5lbGVtZW50Py5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIHRhYmJhYmxlRWxlbWVudD8uZm9jdXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25MaXN0QW5pbWF0aW9uQ29tcGxldGUoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQudG9TdGF0ZSA9PT0gJ29wZW4nICYmIHRoaXMuX2FjdGl2ZUxpc3RFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmVMaXN0RWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgdGhpcy5fYWN0aXZlTGlzdEVsZW1lbnQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNoZWFkaW5nVGVtcGxhdGUgbGV0LWl0ZW0+XG4gICAgPG5nLXRlbXBsYXRlICNkaXJlY3RpdmVIZWFkaW5nPlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW0uaGVhZGluZy5tZXNzYWdlIHx8IGl0ZW0uZGVzY3JpcHRpb24ubWVzc2FnZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0uaGVhZGluZy5lcnJvciB9XCJcbiAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2kxOG5IZWFkaW5nPlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW0uaGVhZGluZy5tZXNzYWdlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbS5lcnJvcnMgfVwiXG4gICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNzdHJpbmdIZWFkaW5nPlxuICAgICAgICB7eyBpdGVtLmhlYWRpbmcubWVzc2FnZSB8IGZkVHJhbnNsYXRlIDogeyBlcnJvcjogaXRlbS5oZWFkaW5nLmVycm9yIH0gOiBpdGVtLmhlYWRpbmcubWVzc2FnZSB9fVxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIlxuICAgICAgICAgICAgaXRlbS5oZWFkaW5nLnR5cGUgPT09ICdkaXJlY3RpdmUnXG4gICAgICAgICAgICAgICAgPyBkaXJlY3RpdmVIZWFkaW5nXG4gICAgICAgICAgICAgICAgOiBpdGVtLmhlYWRpbmcudHlwZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICA/IHN0cmluZ0hlYWRpbmdcbiAgICAgICAgICAgICAgICA6IGkxOG5IZWFkaW5nXG4gICAgICAgIFwiXG4gICAgPjwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2Rlc2NyaXB0aW9uVGVtcGxhdGUgbGV0LWl0ZW0+XG4gICAgPG5nLXRlbXBsYXRlICNkaXJlY3RpdmVEZXNjcmlwdGlvbj5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtLmRlc2NyaXB0aW9uLm1lc3NhZ2UhXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbS5kZXNjcmlwdGlvbi5lcnJvciB9XCJcbiAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2kxOG5EZXNjcmlwdGlvbj5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtLmRlc2NyaXB0aW9uLm1lc3NhZ2UhXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbS5lcnJvcnMgfVwiXG4gICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNzdHJpbmdEZXNjcmlwdGlvbj5cbiAgICAgICAge3sgaXRlbS5kZXNjcmlwdGlvbi5tZXNzYWdlIHwgZmRUcmFuc2xhdGUgOiB7IGVycm9yOiBpdGVtLmRlc2NyaXB0aW9uLmVycm9yIH0gOiBpdGVtLmRlc2NyaXB0aW9uLm1lc3NhZ2UgfX1cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJcbiAgICAgICAgICAgIGl0ZW0uaGVhZGluZy50eXBlID09PSAnZGlyZWN0aXZlJ1xuICAgICAgICAgICAgICAgID8gZGlyZWN0aXZlRGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICA6IGl0ZW0uaGVhZGluZy50eXBlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgID8gc3RyaW5nRGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICA6IGkxOG5EZXNjcmlwdGlvblxuICAgICAgICBcIlxuICAgID48L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cblxuPGRpdiBjbGFzcz1cImZkLW1lc3NhZ2Utdmlld1wiPlxuICAgIDxzZWN0aW9uXG4gICAgICAgIGNsYXNzPVwiZmQtbWVzc2FnZS12aWV3X19saXN0XCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIFtAb3BlbkNsb3NlTGlzdF09XCJjdXJyZW50U2NyZWVuID09PSAnbGlzdCcgPyAnb3BlbicgOiAnY2xvc2VkJ1wiXG4gICAgICAgIChAb3BlbkNsb3NlTGlzdC5kb25lKT1cIl9vbkxpc3RBbmltYXRpb25Db21wbGV0ZSgkZXZlbnQpXCJcbiAgICAgICAgZmQtc2Nyb2xsYmFyXG4gICAgICAgIFtvdmVycmlkZVRhYmluZGV4XT1cImZhbHNlXCJcbiAgICA+XG4gICAgICAgIDx1bCAjbGlzdFZpZXcgZmQtbGlzdCBjbGFzcz1cIm1lc3NhZ2UtcG9wb3Zlcl9fbGlzdCBmZC1saXN0LS1tZXNzYWdlLXZpZXdcIiBbbmF2aWdhdGlvbkluZGljYXRvcl09XCJ0cnVlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBncm91cCBvZiBmaWx0ZXJlZEVycm9yc1wiPlxuICAgICAgICAgICAgICAgIDxsaSBmZC1saXN0LWdyb3VwLWhlYWRlciAqbmdJZj1cImdyb3VwLmdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+e3sgZ3JvdXAuZ3JvdXAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdyb3VwLmVycm9yczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICA8bGkgZmQtbGlzdC1pdGVtIFt0YWJpbmRleF09XCJpID09PSAwID8gMCA6IC0xXCIgW2J5bGluZV09XCJ0cnVlXCIgKGNsaWNrKT1cIl9zaG93RGV0YWlscyhpdGVtKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpdGVtSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1vYmplY3Qtc3RhdHVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtbGlzdF9faWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0dXNdPVwiaXRlbS5zdGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtnbHlwaF09XCInbWVzc2FnZS0nICsgaXRlbS50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbGlzdFN1YnRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmQtbGlzdF9fc3VidGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkaW5nVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1saXN0LWxpbmtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmF2aWdhdGlvbkluZGljYXRvcl09XCIhIWl0ZW0uZGVzY3JpcHRpb24ubWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmVsZW1lbnQgJiYgISFpdGVtLmRlc2NyaXB0aW9uLm1lc3NhZ2U7IGVsc2UgYW5jaG9yTGlzdExpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtSWNvblwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgdGFiaW5kZXg9XCIwXCIgZmQtbGluayAoY2xpY2spPVwiX2ZvY3VzRWxlbWVudCgkZXZlbnQsIGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5maWVsZE5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibGlzdFN1YnRpdGxlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2FuY2hvckxpc3RMaW5rPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGZkLWxpc3QtbGluayBbbmF2aWdhdGlvbkluZGljYXRvcl09XCIhIWl0ZW0uZGVzY3JpcHRpb24ubWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbUljb25cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPnt7IGl0ZW0uZmllbGROYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxpc3RTdWJ0aXRsZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdWw+XG4gICAgPC9zZWN0aW9uPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwiZmQtbWVzc2FnZS12aWV3X19kZXRhaWxzXCIgW0BvcGVuQ2xvc2VEZXRhaWxzXT1cImN1cnJlbnRTY3JlZW4gPT09ICdkZXRhaWxzJyA/ICdvcGVuJyA6ICdjbG9zZWQnXCI+XG4gICAgICAgIDxkaXYgI2RldGFpbHNWaWV3PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRFbnRyeVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmQtbWVzc2FnZS12aWV3X19kZXRhaWxzLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1vYmplY3Qtc3RhdHVzXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkLW1lc3NhZ2Utdmlld19faWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RhdHVzXT1cImN1cnJlbnRFbnRyeS5zdGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiJ21lc3NhZ2UtJyArIGN1cnJlbnRFbnRyeS50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkaW5nVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjdXJyZW50RW50cnkgfVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLW1lc3NhZ2Utdmlld19fZGV0YWlscy1kZXNjcmlwdGlvblwiICpuZ0lmPVwiY3VycmVudEVudHJ5LmRlc2NyaXB0aW9uLm1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkZXNjcmlwdGlvblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY3VycmVudEVudHJ5IH1cIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuPC9kaXY+XG4iXX0=
|