@gravitee/ui-particles-angular 15.8.0 → 15.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/gio-monaco-editor/gio-monaco-clipboard-copy.component.mjs +15 -8
- package/esm2022/lib/gio-monaco-editor/gio-monaco-editor.component.mjs +39 -10
- package/fesm2022/gravitee-ui-particles-angular.mjs +50 -15
- package/fesm2022/gravitee-ui-particles-angular.mjs.map +1 -1
- package/lib/gio-monaco-editor/gio-monaco-clipboard-copy.component.d.ts +3 -1
- package/lib/gio-monaco-editor/gio-monaco-editor.component.d.ts +4 -1
- package/package.json +1 -1
|
@@ -13,25 +13,32 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { Component } from '@angular/core';
|
|
16
|
+
import { Component, ContentChild } from '@angular/core';
|
|
17
|
+
import { GioMonacoEditorComponent } from './gio-monaco-editor.component';
|
|
17
18
|
import * as i0 from "@angular/core";
|
|
18
19
|
import * as i1 from "../gio-clipboard/gio-clipboard-copy-icon.component";
|
|
19
20
|
export class GioMonacoClipboardCopyComponent {
|
|
21
|
+
constructor() {
|
|
22
|
+
this.monacoEditor = null;
|
|
23
|
+
}
|
|
20
24
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioMonacoClipboardCopyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: GioMonacoClipboardCopyComponent, isStandalone: false, selector: "[gioMonacoClipboardCopy]", ngImport: i0, template: `
|
|
25
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: GioMonacoClipboardCopyComponent, isStandalone: false, selector: "[gioMonacoClipboardCopy]", queries: [{ propertyName: "monacoEditor", first: true, predicate: GioMonacoEditorComponent, descendants: true }], ngImport: i0, template: `
|
|
22
26
|
<div class="editor-wrapper">
|
|
23
27
|
<ng-content></ng-content>
|
|
24
|
-
<gio-clipboard-copy-icon class="copy-btn"></gio-clipboard-copy-icon>
|
|
28
|
+
<gio-clipboard-copy-icon class="copy-btn" [contentToCopy]="monacoEditor?.value ?? ''"></gio-clipboard-copy-icon>
|
|
25
29
|
</div>
|
|
26
|
-
`, isInline: true, styles: [".editor-wrapper{position:relative;overflow:auto;
|
|
30
|
+
`, isInline: true, styles: [".editor-wrapper{position:relative;overflow:auto;flex:1 1 50%}.copy-btn{position:absolute;z-index:10;top:8px;right:8px}\n"], dependencies: [{ kind: "component", type: i1.GioClipboardCopyIconComponent, selector: "gio-clipboard-copy-icon" }] }); }
|
|
27
31
|
}
|
|
28
32
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioMonacoClipboardCopyComponent, decorators: [{
|
|
29
33
|
type: Component,
|
|
30
34
|
args: [{ selector: '[gioMonacoClipboardCopy]', template: `
|
|
31
35
|
<div class="editor-wrapper">
|
|
32
36
|
<ng-content></ng-content>
|
|
33
|
-
<gio-clipboard-copy-icon class="copy-btn"></gio-clipboard-copy-icon>
|
|
37
|
+
<gio-clipboard-copy-icon class="copy-btn" [contentToCopy]="monacoEditor?.value ?? ''"></gio-clipboard-copy-icon>
|
|
34
38
|
</div>
|
|
35
|
-
`, standalone: false, styles: [".editor-wrapper{position:relative;overflow:auto;
|
|
36
|
-
}]
|
|
37
|
-
|
|
39
|
+
`, standalone: false, styles: [".editor-wrapper{position:relative;overflow:auto;flex:1 1 50%}.copy-btn{position:absolute;z-index:10;top:8px;right:8px}\n"] }]
|
|
40
|
+
}], propDecorators: { monacoEditor: [{
|
|
41
|
+
type: ContentChild,
|
|
42
|
+
args: [GioMonacoEditorComponent, { static: false }]
|
|
43
|
+
}] } });
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLW1vbmFjby1jbGlwYm9hcmQtY29weS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wYXJ0aWNsZXMtYW5ndWxhci9zcmMvbGliL2dpby1tb25hY28tZWRpdG9yL2dpby1tb25hY28tY2xpcGJvYXJkLWNvcHkuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7OztBQWN6RSxNQUFNLE9BQU8sK0JBQStCO0lBWjVDO1FBY1MsaUJBQVksR0FBb0MsSUFBSSxDQUFDO0tBQzdEOzhHQUhZLCtCQUErQjtrR0FBL0IsK0JBQStCLCtIQUM1Qix3QkFBd0IsZ0RBVDVCOzs7OztHQUtUOzsyRkFHVSwrQkFBK0I7a0JBWjNDLFNBQVM7K0JBRUUsMEJBQTBCLFlBRTFCOzs7OztHQUtULGNBQ1csS0FBSzs4QkFJVixZQUFZO3NCQURsQixZQUFZO3VCQUFDLHdCQUF3QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBHaW9Nb25hY29FZGl0b3JDb21wb25lbnQgfSBmcm9tICcuL2dpby1tb25hY28tZWRpdG9yLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ1tnaW9Nb25hY29DbGlwYm9hcmRDb3B5XScsXG4gIHN0eWxlVXJsczogWycuL2dpby1tb25hY28tY2xpcGJvYXJkLWNvcHkuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiZWRpdG9yLXdyYXBwZXJcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgIDxnaW8tY2xpcGJvYXJkLWNvcHktaWNvbiBjbGFzcz1cImNvcHktYnRuXCIgW2NvbnRlbnRUb0NvcHldPVwibW9uYWNvRWRpdG9yPy52YWx1ZSA/PyAnJ1wiPjwvZ2lvLWNsaXBib2FyZC1jb3B5LWljb24+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBHaW9Nb25hY29DbGlwYm9hcmRDb3B5Q29tcG9uZW50IHtcbiAgQENvbnRlbnRDaGlsZChHaW9Nb25hY29FZGl0b3JDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBwdWJsaWMgbW9uYWNvRWRpdG9yOiBHaW9Nb25hY29FZGl0b3JDb21wb25lbnQgfCBudWxsID0gbnVsbDtcbn1cbiJdfQ==
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { ChangeDetectionStrategy, Component, HostBinding, Inject, Input, Optional, Self, } from '@angular/core';
|
|
16
|
+
import { ChangeDetectionStrategy, Component, effect, HostBinding, Inject, Input, Optional, Self, signal, } from '@angular/core';
|
|
17
17
|
import { isEqual, isString, uniqueId } from 'lodash';
|
|
18
18
|
import { ReplaySubject, Subject } from 'rxjs';
|
|
19
19
|
import { takeUntil } from 'rxjs/operators';
|
|
@@ -50,6 +50,10 @@ export class GioMonacoEditorComponent {
|
|
|
50
50
|
this.value = '';
|
|
51
51
|
this.readOnly = false;
|
|
52
52
|
this.toDisposes = [];
|
|
53
|
+
this.isMonacoEditorReady = signal({
|
|
54
|
+
isSetup: false,
|
|
55
|
+
hasFirstValue: false,
|
|
56
|
+
});
|
|
53
57
|
this._onChange = () => ({});
|
|
54
58
|
this._onTouched = () => ({});
|
|
55
59
|
this.unsubscribe$ = new Subject();
|
|
@@ -59,11 +63,22 @@ export class GioMonacoEditorComponent {
|
|
|
59
63
|
this.ngControl.valueAccessor = this;
|
|
60
64
|
}
|
|
61
65
|
this.monacoEditorService.loadEditor();
|
|
66
|
+
effect(() => {
|
|
67
|
+
const { isSetup, hasFirstValue } = this.isMonacoEditorReady();
|
|
68
|
+
if (isSetup && hasFirstValue) {
|
|
69
|
+
if (this.textModel) {
|
|
70
|
+
this.textModel.setValue(this.value);
|
|
71
|
+
}
|
|
72
|
+
this.updateModelLanguage();
|
|
73
|
+
this.autoformatValue();
|
|
74
|
+
}
|
|
75
|
+
});
|
|
62
76
|
}
|
|
63
77
|
ngAfterViewInit() {
|
|
64
78
|
// Wait until monaco editor is available
|
|
65
79
|
this.monacoEditorService.loaded$.pipe(takeUntil(this.unsubscribe$)).subscribe(({ monaco }) => {
|
|
66
80
|
this.setupEditor(monaco);
|
|
81
|
+
this.isMonacoEditorReady.update(({ hasFirstValue }) => ({ isSetup: true, hasFirstValue }));
|
|
67
82
|
this.loaded$.next(false);
|
|
68
83
|
this.changeDetectorRef.detectChanges();
|
|
69
84
|
});
|
|
@@ -85,9 +100,7 @@ export class GioMonacoEditorComponent {
|
|
|
85
100
|
writeValue(_value) {
|
|
86
101
|
if (_value) {
|
|
87
102
|
this.value = isString(_value) ? _value : JSON.stringify(_value);
|
|
88
|
-
|
|
89
|
-
if (this.textModel) {
|
|
90
|
-
this.textModel.setValue(this.value);
|
|
103
|
+
this.isMonacoEditorReady.update(({ isSetup }) => ({ isSetup, hasFirstValue: true }));
|
|
91
104
|
}
|
|
92
105
|
}
|
|
93
106
|
// From ControlValueAccessor interface
|
|
@@ -131,11 +144,6 @@ export class GioMonacoEditorComponent {
|
|
|
131
144
|
this.standaloneCodeEditor = monaco.editor.create(domElement, {
|
|
132
145
|
...options,
|
|
133
146
|
});
|
|
134
|
-
if (!this.disableAutoFormat) {
|
|
135
|
-
setTimeout(() => {
|
|
136
|
-
this.standaloneCodeEditor?.getAction('editor.action.formatDocument')?.run();
|
|
137
|
-
}, 80);
|
|
138
|
-
}
|
|
139
147
|
if (this.singleLineMode) {
|
|
140
148
|
this.standaloneCodeEditor?.addAction({
|
|
141
149
|
id: 'custom.action',
|
|
@@ -246,6 +254,27 @@ export class GioMonacoEditorComponent {
|
|
|
246
254
|
break;
|
|
247
255
|
}
|
|
248
256
|
}
|
|
257
|
+
updateModelLanguage() {
|
|
258
|
+
const languageId = this.languageConfig?.language ?? (isJsonString(this.value) ? 'json' : 'plaintext');
|
|
259
|
+
if (this.textModel && window.monaco) {
|
|
260
|
+
window.monaco.editor.setModelLanguage(this.textModel, languageId);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
autoformatValue() {
|
|
264
|
+
if (!this.disableAutoFormat) {
|
|
265
|
+
setTimeout(() => {
|
|
266
|
+
const previousReadOnlyState = this.options.readOnly || this.readOnly;
|
|
267
|
+
this.standaloneCodeEditor?.updateOptions({ readOnly: false });
|
|
268
|
+
this.standaloneCodeEditor
|
|
269
|
+
?.getAction('editor.action.formatDocument')
|
|
270
|
+
?.run()
|
|
271
|
+
.finally(() => {
|
|
272
|
+
this.standaloneCodeEditor?.updateOptions({ readOnly: previousReadOnlyState });
|
|
273
|
+
this.changeDetectorRef.detectChanges();
|
|
274
|
+
});
|
|
275
|
+
}, 80);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
249
278
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioMonacoEditorComponent, deps: [{ token: i0.ElementRef }, { token: GIO_MONACO_EDITOR_CONFIG }, { token: i1.GioMonacoEditorService }, { token: i2.GioLanguageJsonService }, { token: i3.GioLanguageElService }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i4.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
250
279
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: GioMonacoEditorComponent, isStandalone: false, selector: "gio-monaco-editor", inputs: { languageConfig: "languageConfig", options: "options", disableMiniMap: "disableMiniMap", disableAutoFormat: "disableAutoFormat", singleLineMode: "singleLineMode" }, host: { properties: { "class.single-line": "this.singleLineMode" } }, ngImport: i0, template: ` <div *ngIf="loaded$ | async">Loading...</div>`, isInline: true, styles: [":host{display:block;height:100%;min-height:150px;pointer-events:auto;transition:opacity .2s ease-out}:host.single-line{display:flex;height:24px;min-height:24px;align-items:center}:host-context(.hidden){opacity:0}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
251
280
|
}
|
|
@@ -282,4 +311,4 @@ const isJsonString = (str) => {
|
|
|
282
311
|
}
|
|
283
312
|
return true;
|
|
284
313
|
};
|
|
285
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLW1vbmFjby1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcGFydGljbGVzLWFuZ3VsYXIvc3JjL2xpYi9naW8tbW9uYWNvLWVkaXRvci9naW8tbW9uYWNvLWVkaXRvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFHTCxRQUFRLEVBQ1IsSUFBSSxHQUNMLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLHdCQUF3QixFQUF5QixNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7O0FBbUNqRyxNQUFNLE9BQU8sd0JBQXdCO0lBdUNuQyxZQUNrQixXQUF1QixFQUNZLE1BQTZCLEVBQy9ELG1CQUEyQyxFQUMzQyxtQkFBMkMsRUFDM0MsbUJBQXlDLEVBQ3pDLGlCQUFvQyxFQUNwQyxNQUFjLEVBQ0ssU0FBb0I7UUFQeEMsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDWSxXQUFNLEdBQU4sTUFBTSxDQUF1QjtRQUMvRCx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXdCO1FBQzNDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBd0I7UUFDM0Msd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFzQjtRQUN6QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDSyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBMUNuRCxZQUFPLEdBQWdELEVBQUUsQ0FBQztRQUcxRCxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUd2QixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFJMUIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFFdkIsWUFBTyxHQUFHLElBQUksYUFBYSxDQUFVLENBQUMsQ0FBQyxDQUFDO1FBRXZDLG1CQUFjLEdBQWdEO1lBQ3BFLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLE9BQU8sRUFBRTtnQkFDUCxPQUFPLEVBQUUsSUFBSTthQUNkO1lBQ0QsZUFBZSxFQUFFLElBQUk7WUFDckIsb0JBQW9CLEVBQUUsS0FBSztTQUM1QixDQUFDO1FBRUssVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFHaEIsZUFBVSxHQUF5QixFQUFFLENBQUM7UUFFcEMsY0FBUyxHQUFvQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXhELGVBQVUsR0FBZSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQVl6QyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQix3REFBd0Q7WUFDeEQsNkRBQTZEO1lBQzdELElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUN0QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFTSxlQUFlO1FBQ3BCLHdDQUF3QztRQUN4QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO1lBQzNGLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUUxQyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsU0FBUyxDQUFDO1FBQ3hDLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzdCLENBQUM7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELHNDQUFzQztJQUMvQixVQUFVLENBQUMsTUFBYztRQUM5QixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsRSxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLENBQUM7SUFDSCxDQUFDO0lBRUQsc0NBQXNDO0lBQy9CLGdCQUFnQixDQUFDLEVBQW1DO1FBQ3pELElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxzQ0FBc0M7SUFDL0IsaUJBQWlCLENBQUMsRUFBYztRQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsc0NBQXNDO0lBQy9CLGdCQUFnQixDQUFDLFVBQW1CO1FBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBRTNCLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQztnQkFDdEMsUUFBUSxFQUFFLFVBQVU7YUFDckIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFTyxXQUFXLENBQUMsTUFBcUI7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDO1FBRWxELE1BQU0sUUFBUSxHQUFHO1lBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLFFBQVEsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO1lBQzVGLEdBQUcsRUFBRSxRQUFRLFFBQVEsRUFBRSxFQUFFO1NBQzFCLENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNoSCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNuRSxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLFVBQVUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVE7WUFDL0YsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLElBQUk7WUFDaEMsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3JCLE9BQU8sRUFBRTtnQkFDUCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYzthQUM5QjtTQUNGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxvQkFBb0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUU7WUFDM0QsR0FBRyxPQUFPO1NBQ1gsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzVCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLG9CQUFvQixFQUFFLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1lBQzlFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNULENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsb0JBQW9CLEVBQUUsU0FBUyxDQUFDO2dCQUNuQyxFQUFFLEVBQUUsZUFBZTtnQkFDbkIsS0FBSyxFQUFFLGVBQWU7Z0JBQ3RCLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUNuQyxZQUFZLEVBQUUsMEZBQTBGO2dCQUN4RyxHQUFHLEVBQUUsR0FBRyxFQUFFO29CQUNSLG9EQUFvRDtvQkFDcEQsT0FBTztnQkFDVCxDQUFDO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxrQkFBa0IsQ0FBQyxHQUFHLEVBQUU7WUFDakUsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDeEQsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3hCLDJDQUEyQztnQkFDM0MsZ0RBQWdEO2dCQUNoRCxNQUFNLFlBQVksR0FBRyxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUNsRCxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztvQkFDdEMsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxDQUFDO29CQUNqRSxVQUFVLENBQUMsR0FBRyxFQUFFO3dCQUNkLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxZQUFZLEVBQUUsQ0FBQzt3QkFDMUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUN2RSxJQUFJLGVBQWUsRUFBRSxDQUFDOzRCQUNwQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDO3dCQUMxRCxDQUFDO3dCQUNELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsQ0FBQztvQkFDM0MsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUNOLE9BQU87Z0JBQ1QsQ0FBQztZQUNILENBQUM7WUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLEVBQUUsQ0FBQztvQkFDM0QsVUFBVSxDQUFDLEdBQUcsRUFBRTt3QkFDZCxJQUFJLENBQUMsS0FBSyxHQUFHLGNBQWMsQ0FBQzt3QkFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQzt3QkFDL0IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUNwQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ1IsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QiwrREFBK0Q7WUFDL0QsSUFBSSxDQUFDLG9CQUFvQixFQUFFLGFBQWEsQ0FBQztnQkFDdkMsMkJBQTJCO2dCQUMzQixvQkFBb0IsRUFBRSxJQUFJO2dCQUMxQix1QkFBdUIsRUFBRSxJQUFJO2dCQUM3QixLQUFLLEVBQUU7b0JBQ0wsS0FBSyxFQUFFLEdBQUc7aUJBQ1g7Z0JBQ0QsZ0JBQWdCLEVBQUUsS0FBSztnQkFDdkIsV0FBVyxFQUFFLEtBQUs7Z0JBQ2xCLFdBQVcsRUFBRSxXQUFXO2dCQUN4QixLQUFLLEVBQUUsS0FBSztnQkFDWixJQUFJLEVBQUU7b0JBQ0osa0JBQWtCLEVBQUUsS0FBSztvQkFDekIsbUJBQW1CLEVBQUUsT0FBTztvQkFDNUIsNkJBQTZCLEVBQUUsT0FBTztpQkFDdkM7Z0JBQ0QsUUFBUSxFQUFFLEVBQUU7Z0JBQ1osVUFBVSxFQUFFLFFBQVE7Z0JBQ3BCLGtCQUFrQixFQUFFLENBQUM7Z0JBQ3JCLHNCQUFzQixFQUFFLENBQUM7Z0JBQ3pCLFFBQVEsRUFBRSxJQUFJO2dCQUNkLE9BQU8sRUFBRTtvQkFDUCxPQUFPLEVBQUUsS0FBSztpQkFDZjtnQkFDRCxXQUFXLEVBQUUsS0FBSztnQkFDbEIseUJBQXlCLEVBQUUsSUFBSTtnQkFDL0IsbUJBQW1CLEVBQUUsS0FBSztnQkFDMUIsV0FBVyxFQUFFLEtBQUs7Z0JBQ2xCLE9BQU8sRUFBRSxLQUFLO2dCQUNkLG9CQUFvQixFQUFFLENBQUM7Z0JBQ3ZCLG1CQUFtQixFQUFFLENBQUM7Z0JBQ3RCLG1CQUFtQixFQUFFLE1BQU07Z0JBQzNCLFNBQVMsRUFBRTtvQkFDVCxVQUFVLEVBQUUsUUFBUTtvQkFDcEIsUUFBUSxFQUFFLFFBQVE7b0JBQ2xCLHVCQUF1QixFQUFFLEtBQUs7aUJBQy9CO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLHFCQUFxQixDQUFDLEdBQUcsRUFBRTtZQUNsRixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtvQkFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDeEMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQXlCLENBQUM7UUFFdkcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU8sYUFBYSxDQUFDLEdBQVcsRUFBRSxjQUEyQztRQUM1RSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDcEIsT0FBTztRQUNULENBQUM7UUFFRCxRQUFRLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoQyxLQUFLLE1BQU07Z0JBQ1QsSUFBSSxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQzNCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbkUsQ0FBQztnQkFDRCxNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUMxQixJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDNUQsQ0FBQztnQkFDRCxNQUFNO1lBQ1I7Z0JBQ0UsTUFBTTtRQUNWLENBQUM7SUFDSCxDQUFDOzhHQTFRVSx3QkFBd0IsNENBeUN6Qix3QkFBd0I7a0dBekN2Qix3QkFBd0Isa1VBTHpCLGdEQUFnRDs7MkZBSy9DLHdCQUF3QjtrQkFQcEMsU0FBUzsrQkFDRSxtQkFBbUIsWUFDbkIsZ0RBQWdELG1CQUV6Qyx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLEtBQUs7OzBCQTJDZCxNQUFNOzJCQUFDLHdCQUF3Qjs7MEJBTS9CLFFBQVE7OzBCQUFJLElBQUk7eUNBN0NaLGNBQWM7c0JBRHBCLEtBQUs7Z0JBSUMsT0FBTztzQkFEYixLQUFLO2dCQUlDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBSUMsaUJBQWlCO3NCQUR2QixLQUFLO2dCQUtDLGNBQWM7c0JBRnBCLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsbUJBQW1COztBQStQbEMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFXLEVBQVcsRUFBRTtJQUM1QyxJQUFJLENBQUM7UUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1gsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDIzIFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIFNlbGYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGlzRXF1YWwsIGlzU3RyaW5nLCB1bmlxdWVJZCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgTW9uYWNvLCB7IGVkaXRvciB9IGZyb20gJ21vbmFjby1lZGl0b3InO1xuaW1wb3J0IHsgUmVwbGF5U3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBHSU9fTU9OQUNPX0VESVRPUl9DT05GSUcsIEdpb01vbmFjb0VkaXRvckNvbmZpZyB9IGZyb20gJy4vbW9kZWxzL0dpb01vbmFjb0VkaXRvckNvbmZpZyc7XG5pbXBvcnQgeyBHaW9MYW5ndWFnZUpzb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9naW8tbGFuZ3VhZ2UtanNvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEdpb01vbmFjb0VkaXRvclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2dpby1tb25hY28tZWRpdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgR2lvTGFuZ3VhZ2VFbFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2dpby1sYW5ndWFnZS1lbC5zZXJ2aWNlJztcbmltcG9ydCB7IEpTT05TY2hlbWEgfSBmcm9tICcuL21vZGVscy9KU09OU2NoZW1hQXV0b0NvbXBsZXRlJztcblxuZXhwb3J0IHR5cGUgTW9uYWNvRWRpdG9yTGFuZ3VhZ2VDb25maWcgPVxuICB8IHtcbiAgICAgIGxhbmd1YWdlOiAnanNvbic7XG4gICAgICBzY2hlbWFzPzogeyB1cmk6IHN0cmluZzsgc2NoZW1hOiB1bmtub3duIH1bXTtcbiAgICB9XG4gIHwge1xuICAgICAgbGFuZ3VhZ2U6ICdtYXJrZG93bic7XG4gICAgfVxuICB8IHtcbiAgICAgIGxhbmd1YWdlOiAnaHRtbCc7XG4gICAgfVxuICB8IHtcbiAgICAgIGxhbmd1YWdlOiAneWFtbCc7XG4gICAgfVxuICB8IHtcbiAgICAgIGxhbmd1YWdlOiAnc3BlbCc7XG4gICAgICBzY2hlbWE/OiBKU09OU2NoZW1hO1xuICAgIH1cbiAgfCB7XG4gICAgICBsYW5ndWFnZTogJ2Nzcyc7XG4gICAgfTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ2lvLW1vbmFjby1lZGl0b3InLFxuICB0ZW1wbGF0ZTogYCA8ZGl2ICpuZ0lmPVwibG9hZGVkJCB8IGFzeW5jXCI+TG9hZGluZy4uLjwvZGl2PmAsXG4gIHN0eWxlVXJsczogWycuL2dpby1tb25hY28tZWRpdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgR2lvTW9uYWNvRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsYW5ndWFnZUNvbmZpZz86IE1vbmFjb0VkaXRvckxhbmd1YWdlQ29uZmlnO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBvcHRpb25zOiBlZGl0b3IuSVN0YW5kYWxvbmVFZGl0b3JDb25zdHJ1Y3Rpb25PcHRpb25zID0ge307XG5cbiAgQElucHV0KClcbiAgcHVibGljIGRpc2FibGVNaW5pTWFwID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGRpc2FibGVBdXRvRm9ybWF0ID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zaW5nbGUtbGluZScpXG4gIHB1YmxpYyBzaW5nbGVMaW5lTW9kZSA9IGZhbHNlO1xuXG4gIHB1YmxpYyBsb2FkZWQkID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oMSk7XG5cbiAgcHJpdmF0ZSBkZWZhdWx0T3B0aW9uczogZWRpdG9yLklTdGFuZGFsb25lRWRpdG9yQ29uc3RydWN0aW9uT3B0aW9ucyA9IHtcbiAgICBjb250ZXh0bWVudTogZmFsc2UsXG4gICAgbWluaW1hcDoge1xuICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICB9LFxuICAgIGF1dG9tYXRpY0xheW91dDogdHJ1ZSxcbiAgICBzY3JvbGxCZXlvbmRMYXN0TGluZTogZmFsc2UsXG4gIH07XG5cbiAgcHVibGljIHZhbHVlID0gJyc7XG4gIHB1YmxpYyByZWFkT25seSA9IGZhbHNlO1xuICBwdWJsaWMgc3RhbmRhbG9uZUNvZGVFZGl0b3I/OiBlZGl0b3IuSVN0YW5kYWxvbmVDb2RlRWRpdG9yO1xuICBwcml2YXRlIHRleHRNb2RlbD86IGVkaXRvci5JVGV4dE1vZGVsO1xuICBwcml2YXRlIHRvRGlzcG9zZXM6IE1vbmFjby5JRGlzcG9zYWJsZVtdID0gW107XG5cbiAgcHJvdGVjdGVkIF9vbkNoYW5nZTogKF92YWx1ZTogc3RyaW5nIHwgbnVsbCkgPT4gdm9pZCA9ICgpID0+ICh7fSk7XG5cbiAgcHJvdGVjdGVkIF9vblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiAoe30pO1xuICBwcml2YXRlIHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGhvc3RFbGVtZW50OiBFbGVtZW50UmVmLFxuICAgIEBJbmplY3QoR0lPX01PTkFDT19FRElUT1JfQ09ORklHKSBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogR2lvTW9uYWNvRWRpdG9yQ29uZmlnLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbW9uYWNvRWRpdG9yU2VydmljZTogR2lvTW9uYWNvRWRpdG9yU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxhbmd1YWdlSnNvblNlcnZpY2U6IEdpb0xhbmd1YWdlSnNvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBsYW5ndWFnZVNwZWxTZXJ2aWNlOiBHaW9MYW5ndWFnZUVsU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZTogTmdab25lLFxuICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIHJlYWRvbmx5IG5nQ29udHJvbDogTmdDb250cm9sLFxuICApIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgIC8vIFNldCB0aGUgdmFsdWUgYWNjZXNzb3IgZGlyZWN0bHkgKGluc3RlYWQgb2YgcHJvdmlkaW5nXG4gICAgICAvLyBOR19WQUxVRV9BQ0NFU1NPUikgdG8gYXZvaWQgcnVubmluZyBpbnRvIGEgY2lyY3VsYXIgaW1wb3J0XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG4gICAgdGhpcy5tb25hY29FZGl0b3JTZXJ2aWNlLmxvYWRFZGl0b3IoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgLy8gV2FpdCB1bnRpbCBtb25hY28gZWRpdG9yIGlzIGF2YWlsYWJsZVxuICAgIHRoaXMubW9uYWNvRWRpdG9yU2VydmljZS5sb2FkZWQkLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCh7IG1vbmFjbyB9KSA9PiB7XG4gICAgICB0aGlzLnNldHVwRWRpdG9yKG1vbmFjbyk7XG5cbiAgICAgIHRoaXMubG9hZGVkJC5uZXh0KGZhbHNlKTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMudG9EaXNwb3Nlcy5mb3JFYWNoKGQgPT4gZC5kaXNwb3NlKCkpO1xuXG4gICAgaWYgKHRoaXMuc3RhbmRhbG9uZUNvZGVFZGl0b3IpIHtcbiAgICAgIHRoaXMuc3RhbmRhbG9uZUNvZGVFZGl0b3IuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5zdGFuZGFsb25lQ29kZUVkaXRvciA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50ZXh0TW9kZWwpIHtcbiAgICAgIHRoaXMudGV4dE1vZGVsLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMudGV4dE1vZGVsID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8vIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXG4gIHB1YmxpYyB3cml0ZVZhbHVlKF92YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKF92YWx1ZSkge1xuICAgICAgdGhpcy52YWx1ZSA9IGlzU3RyaW5nKF92YWx1ZSkgPyBfdmFsdWUgOiBKU09OLnN0cmluZ2lmeShfdmFsdWUpO1xuICAgIH1cbiAgICBpZiAodGhpcy50ZXh0TW9kZWwpIHtcbiAgICAgIHRoaXMudGV4dE1vZGVsLnNldFZhbHVlKHRoaXMudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoX3ZhbHVlOiBzdHJpbmcgfCBudWxsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8vIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX29uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLy8gRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMucmVhZE9ubHkgPSBpc0Rpc2FibGVkO1xuXG4gICAgaWYgKHRoaXMuc3RhbmRhbG9uZUNvZGVFZGl0b3IpIHtcbiAgICAgIHRoaXMuc3RhbmRhbG9uZUNvZGVFZGl0b3IudXBkYXRlT3B0aW9ucyh7XG4gICAgICAgIHJlYWRPbmx5OiBpc0Rpc2FibGVkLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cEVkaXRvcihtb25hY286IHR5cGVvZiBNb25hY28pIHtcbiAgICBpZiAoIXRoaXMuaG9zdEVsZW1lbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gZWRpdG9yIHJlZiBmb3VuZC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBkb21FbGVtZW50ID0gdGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50O1xuXG4gICAgY29uc3Qgc2V0dGluZ3MgPSB7XG4gICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgIGxhbmd1YWdlOiB0aGlzLmxhbmd1YWdlQ29uZmlnPy5sYW5ndWFnZSA/PyAoaXNKc29uU3RyaW5nKHRoaXMudmFsdWUpID8gJ2pzb24nIDogJ3BsYWludGV4dCcpLFxuICAgICAgdXJpOiBgY29kZS0ke3VuaXF1ZUlkKCl9YCxcbiAgICB9O1xuXG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy50ZXh0TW9kZWwgPSBtb25hY28uZWRpdG9yLmNyZWF0ZU1vZGVsKHNldHRpbmdzLnZhbHVlLCBzZXR0aW5ncy5sYW5ndWFnZSwgbW9uYWNvLlVyaS5wYXJzZShzZXR0aW5ncy51cmkpKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmRlZmF1bHRPcHRpb25zLCB0aGlzLm9wdGlvbnMsIHtcbiAgICAgIHJlYWRPbmx5OiAhdGhpcy5uZ0NvbnRyb2wgJiYgJ3JlYWRPbmx5JyBpbiB0aGlzLm9wdGlvbnMgPyB0aGlzLm9wdGlvbnMucmVhZE9ubHkgOiB0aGlzLnJlYWRPbmx5LFxuICAgICAgdGhlbWU6IHRoaXMuY29uZmlnLnRoZW1lID8/ICd2cycsXG4gICAgICBtb2RlbDogdGhpcy50ZXh0TW9kZWwsXG4gICAgICBtaW5pbWFwOiB7XG4gICAgICAgIGVuYWJsZWQ6ICF0aGlzLmRpc2FibGVNaW5pTWFwLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuc3RhbmRhbG9uZUNvZGVFZGl0b3IgPSBtb25hY28uZWRpdG9yLmNyZWF0ZShkb21FbGVtZW50LCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuXG4gICAgaWYgKCF0aGlzLmRpc2FibGVBdXRvRm9ybWF0KSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5zdGFuZGFsb25lQ29kZUVkaXRvcj8uZ2V0QWN0aW9uKCdlZGl0b3IuYWN0aW9uLmZvcm1hdERvY3VtZW50Jyk/LnJ1bigpO1xuICAgICAgfSwgODApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNpbmdsZUxpbmVNb2RlKSB7XG4gICAgICB0aGlzLnN0YW5kYWxvbmVDb2RlRWRpdG9yPy5hZGRBY3Rpb24oe1xuICAgICAgICBpZDogJ2N1c3RvbS5hY3Rpb24nLFxuICAgICAgICBsYWJlbDogJ2N1c3RvbSBhY3Rpb24nLFxuICAgICAgICBrZXliaW5kaW5nczogW21vbmFjby5LZXlDb2RlLkVudGVyXSxcbiAgICAgICAgcHJlY29uZGl0aW9uOiAnIXN1Z2dlc3RXaWRnZXRWaXNpYmxlICYmICFyZW5hbWVJbnB1dFZpc2libGUgJiYgIWluU25pcHBldE1vZGUgJiYgIXF1aWNrRml4V2lkZ2V0VmlzaWJsZScsXG4gICAgICAgIHJ1bjogKCkgPT4ge1xuICAgICAgICAgIC8vIElnbm9yZSBFbnRlciBrZXkgaW4gc2luZ2xlIGxpbmUgbW9kZSB3aGVuIHdyaXRpbmdcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBvbkRpZENoYW5nZUNvbnRlbnQgPSB0aGlzLnRleHRNb2RlbD8ub25EaWRDaGFuZ2VDb250ZW50KCgpID0+IHtcbiAgICAgIGNvbnN0IHRleHRNb2RlbFZhbHVlID0gdGhpcy50ZXh0TW9kZWw/LmdldFZhbHVlKCkgPz8gJyc7XG4gICAgICBpZiAodGhpcy5zaW5nbGVMaW5lTW9kZSkge1xuICAgICAgICAvLyBJZiB2YWx1ZSBoYXMgXFxuLCBcXHIgb3IgXFxyXFxuLCByZW1vdmUgdGhlbVxuICAgICAgICAvLyBVc2VmdWwgdG8gY2xlYXIgbGluZSBicmVha3Mgd2hlbiBwYXN0aW5nIHRleHRcbiAgICAgICAgY29uc3QgaGFzTGluZUJyZWFrID0gbmV3IFJlZ0V4cCgvKFxcclxcbnxcXG58XFxyKS9nbSk7XG4gICAgICAgIGlmIChoYXNMaW5lQnJlYWsudGVzdCh0ZXh0TW9kZWxWYWx1ZSkpIHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50UG9zaXRpb24gPSB0aGlzLnN0YW5kYWxvbmVDb2RlRWRpdG9yPy5nZXRQb3NpdGlvbigpO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdGFuZGFsb25lQ29kZUVkaXRvcj8ucHVzaFVuZG9TdG9wKCk7XG4gICAgICAgICAgICB0aGlzLnRleHRNb2RlbD8uc2V0VmFsdWUodGV4dE1vZGVsVmFsdWUucmVwbGFjZSgvKFxcclxcbnxcXG58XFxyKS9nbSwgJycpKTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50UG9zaXRpb24pIHtcbiAgICAgICAgICAgICAgdGhpcy5zdGFuZGFsb25lQ29kZUVkaXRvcj8uc2V0UG9zaXRpb24oY3VycmVudFBvc2l0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc3RhbmRhbG9uZUNvZGVFZGl0b3I/LnBvcFVuZG9TdG9wKCk7XG4gICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5yZWFkT25seSAmJiAhaXNFcXVhbCh0aGlzLnZhbHVlLCB0ZXh0TW9kZWxWYWx1ZSkpIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0ZXh0TW9kZWxWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlKHRleHRNb2RlbFZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICAgICAgICAgIH0sIDApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnNpbmdsZUxpbmVNb2RlKSB7XG4gICAgICAvLyBTb3VyY2UgOiBodHRwczovL2ZhcnphZHl6LmNvbS9ibG9nL3NpbmdsZS1saW5lLW1vbmFjby1lZGl0b3JcbiAgICAgIHRoaXMuc3RhbmRhbG9uZUNvZGVFZGl0b3I/LnVwZGF0ZU9wdGlvbnMoe1xuICAgICAgICAvLyBxdWlja1N1Z2dlc3Rpb25zOiBmYWxzZSxcbiAgICAgICAgZml4ZWRPdmVyZmxvd1dpZGdldHM6IHRydWUsXG4gICAgICAgIGFjY2VwdFN1Z2dlc3Rpb25PbkVudGVyOiAnb24nLFxuICAgICAgICBob3Zlcjoge1xuICAgICAgICAgIGRlbGF5OiAxMDAsXG4gICAgICAgIH0sXG4gICAgICAgIHJvdW5kZWRTZWxlY3Rpb246IGZhbHNlLFxuICAgICAgICBjb250ZXh0bWVudTogZmFsc2UsXG4gICAgICAgIGN1cnNvclN0eWxlOiAnbGluZS10aGluJyxcbiAgICAgICAgbGlua3M6IGZhbHNlLFxuICAgICAgICBmaW5kOiB7XG4gICAgICAgICAgYWRkRXh0cmFTcGFjZU9uVG9wOiBmYWxzZSxcbiAgICAgICAgICBhdXRvRmluZEluU2VsZWN0aW9uOiAnbmV2ZXInLFxuICAgICAgICAgIHNlZWRTZWFyY2hTdHJpbmdGcm9tU2VsZWN0aW9uOiAnbmV2ZXInLFxuICAgICAgICB9LFxuICAgICAgICBmb250U2l6ZTogMTQsXG4gICAgICAgIGZvbnRXZWlnaHQ6ICdub3JtYWwnLFxuICAgICAgICBvdmVydmlld1J1bGVyTGFuZXM6IDAsXG4gICAgICAgIHNjcm9sbEJleW9uZExhc3RDb2x1bW46IDAsXG4gICAgICAgIHdvcmRXcmFwOiAnb24nLFxuICAgICAgICBtaW5pbWFwOiB7XG4gICAgICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIGxpbmVOdW1iZXJzOiAnb2ZmJyxcbiAgICAgICAgaGlkZUN1cnNvckluT3ZlcnZpZXdSdWxlcjogdHJ1ZSxcbiAgICAgICAgb3ZlcnZpZXdSdWxlckJvcmRlcjogZmFsc2UsXG4gICAgICAgIGdseXBoTWFyZ2luOiBmYWxzZSxcbiAgICAgICAgZm9sZGluZzogZmFsc2UsXG4gICAgICAgIGxpbmVEZWNvcmF0aW9uc1dpZHRoOiAwLFxuICAgICAgICBsaW5lTnVtYmVyc01pbkNoYXJzOiAwLFxuICAgICAgICByZW5kZXJMaW5lSGlnaGxpZ2h0OiAnbm9uZScsXG4gICAgICAgIHNjcm9sbGJhcjoge1xuICAgICAgICAgIGhvcml6b250YWw6ICdoaWRkZW4nLFxuICAgICAgICAgIHZlcnRpY2FsOiAnaGlkZGVuJyxcbiAgICAgICAgICBhbHdheXNDb25zdW1lTW91c2VXaGVlbDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBvbkRpZEJsdXJFZGl0b3JXaWRnZXQgPSB0aGlzLnN0YW5kYWxvbmVDb2RlRWRpdG9yPy5vbkRpZEJsdXJFZGl0b3JXaWRnZXQoKCkgPT4ge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnJlYWRPbmx5KSB0aGlzLl9vblRvdWNoZWQoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy50b0Rpc3Bvc2VzID0gW29uRGlkQ2hhbmdlQ29udGVudCwgb25EaWRCbHVyRWRpdG9yV2lkZ2V0XS5maWx0ZXIoZCA9PiAhIWQpIGFzIE1vbmFjby5JRGlzcG9zYWJsZVtdO1xuXG4gICAgdGhpcy5zZXR1cExhbmd1YWdlKHNldHRpbmdzLnVyaSwgdGhpcy5sYW5ndWFnZUNvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwTGFuZ3VhZ2UodXJpOiBzdHJpbmcsIGxhbmd1YWdlQ29uZmlnPzogTW9uYWNvRWRpdG9yTGFuZ3VhZ2VDb25maWcpIHtcbiAgICBpZiAoIWxhbmd1YWdlQ29uZmlnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3dpdGNoIChsYW5ndWFnZUNvbmZpZy5sYW5ndWFnZSkge1xuICAgICAgY2FzZSAnanNvbic6XG4gICAgICAgIGlmIChsYW5ndWFnZUNvbmZpZy5zY2hlbWFzKSB7XG4gICAgICAgICAgdGhpcy5sYW5ndWFnZUpzb25TZXJ2aWNlLmFkZFNjaGVtYXModXJpLCBsYW5ndWFnZUNvbmZpZy5zY2hlbWFzKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NwZWwnOlxuICAgICAgICBpZiAobGFuZ3VhZ2VDb25maWcuc2NoZW1hKSB7XG4gICAgICAgICAgdGhpcy5sYW5ndWFnZVNwZWxTZXJ2aWNlLnNldFNjaGVtYShsYW5ndWFnZUNvbmZpZy5zY2hlbWEpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IGlzSnNvblN0cmluZyA9IChzdHI6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICB0cnkge1xuICAgIEpTT04ucGFyc2Uoc3RyKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG4iXX0=
|
|
314
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLW1vbmFjby1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcGFydGljbGVzLWFuZ3VsYXIvc3JjL2xpYi9naW8tbW9uYWNvLWVkaXRvci9naW8tbW9uYWNvLWVkaXRvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxNQUFNLEVBRU4sV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLElBQUksRUFDSixNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRXJELE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsd0JBQXdCLEVBQXlCLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7QUFtQ2pHLE1BQU0sT0FBTyx3QkFBd0I7SUE0Q25DLFlBQ2tCLFdBQXVCLEVBQ1ksTUFBNkIsRUFDL0QsbUJBQTJDLEVBQzNDLG1CQUEyQyxFQUMzQyxtQkFBeUMsRUFDekMsaUJBQW9DLEVBQ3BDLE1BQWMsRUFDSyxTQUFvQjtRQVB4QyxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUNZLFdBQU0sR0FBTixNQUFNLENBQXVCO1FBQy9ELHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBd0I7UUFDM0Msd0JBQW1CLEdBQW5CLG1CQUFtQixDQUF3QjtRQUMzQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXNCO1FBQ3pDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNL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QUFDO0lBQ2xCLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1gsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDIzIFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIGVmZmVjdCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgU2VsZixcbiAgc2lnbmFsLFxuICBXcml0YWJsZVNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgaXNFcXVhbCwgaXNTdHJpbmcsIHVuaXF1ZUlkIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBNb25hY28sIHsgZWRpdG9yIH0gZnJvbSAnbW9uYWNvLWVkaXRvcic7XG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEdJT19NT05BQ09fRURJVE9SX0NPTkZJRywgR2lvTW9uYWNvRWRpdG9yQ29uZmlnIH0gZnJvbSAnLi9tb2RlbHMvR2lvTW9uYWNvRWRpdG9yQ29uZmlnJztcbmltcG9ydCB7IEdpb0xhbmd1YWdlSnNvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2dpby1sYW5ndWFnZS1qc29uLnNlcnZpY2UnO1xuaW1wb3J0IHsgR2lvTW9uYWNvRWRpdG9yU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZ2lvLW1vbmFjby1lZGl0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBHaW9MYW5ndWFnZUVsU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZ2lvLWxhbmd1YWdlLWVsLnNlcnZpY2UnO1xuaW1wb3J0IHsgSlNPTlNjaGVtYSB9IGZyb20gJy4vbW9kZWxzL0pTT05TY2hlbWFBdXRvQ29tcGxldGUnO1xuXG5leHBvcnQgdHlwZSBNb25hY29FZGl0b3JMYW5ndWFnZUNvbmZpZyA9XG4gIHwge1xuICAgICAgbGFuZ3VhZ2U6ICdqc29uJztcbiAgICAgIHNjaGVtYXM/OiB7IHVyaTogc3RyaW5nOyBzY2hlbWE6IHVua25vd24gfVtdO1xuICAgIH1cbiAgfCB7XG4gICAgICBsYW5ndWFnZTogJ21hcmtkb3duJztcbiAgICB9XG4gIHwge1xuICAgICAgbGFuZ3VhZ2U6ICdodG1sJztcbiAgICB9XG4gIHwge1xuICAgICAgbGFuZ3VhZ2U6ICd5YW1sJztcbiAgICB9XG4gIHwge1xuICAgICAgbGFuZ3VhZ2U6ICdzcGVsJztcbiAgICAgIHNjaGVtYT86IEpTT05TY2hlbWE7XG4gICAgfVxuICB8IHtcbiAgICAgIGxhbmd1YWdlOiAnY3NzJztcbiAgICB9O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnaW8tbW9uYWNvLWVkaXRvcicsXG4gIHRlbXBsYXRlOiBgIDxkaXYgKm5nSWY9XCJsb2FkZWQkIHwgYXN5bmNcIj5Mb2FkaW5nLi4uPC9kaXY+YCxcbiAgc3R5bGVVcmxzOiBbJy4vZ2lvLW1vbmFjby1lZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBHaW9Nb25hY29FZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KClcbiAgcHVibGljIGxhbmd1YWdlQ29uZmlnPzogTW9uYWNvRWRpdG9yTGFuZ3VhZ2VDb25maWc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIG9wdGlvbnM6IGVkaXRvci5JU3RhbmRhbG9uZUVkaXRvckNvbnN0cnVjdGlvbk9wdGlvbnMgPSB7fTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZGlzYWJsZU1pbmlNYXAgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZGlzYWJsZUF1dG9Gb3JtYXQgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNpbmdsZS1saW5lJylcbiAgcHVibGljIHNpbmdsZUxpbmVNb2RlID0gZmFsc2U7XG5cbiAgcHVibGljIGxvYWRlZCQgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigxKTtcblxuICBwcml2YXRlIGRlZmF1bHRPcHRpb25zOiBlZGl0b3IuSVN0YW5kYWxvbmVFZGl0b3JDb25zdHJ1Y3Rpb25PcHRpb25zID0ge1xuICAgIGNvbnRleHRtZW51OiBmYWxzZSxcbiAgICBtaW5pbWFwOiB7XG4gICAgICBlbmFibGVkOiB0cnVlLFxuICAgIH0sXG4gICAgYXV0b21hdGljTGF5b3V0OiB0cnVlLFxuICAgIHNjcm9sbEJleW9uZExhc3RMaW5lOiBmYWxzZSxcbiAgfTtcblxuICBwdWJsaWMgdmFsdWUgPSAnJztcbiAgcHVibGljIHJlYWRPbmx5ID0gZmFsc2U7XG4gIHB1YmxpYyBzdGFuZGFsb25lQ29kZUVkaXRvcj86IGVkaXRvci5JU3RhbmRhbG9uZUNvZGVFZGl0b3I7XG4gIHByaXZhdGUgdGV4dE1vZGVsPzogZWRpdG9yLklUZXh0TW9kZWw7XG4gIHByaXZhdGUgdG9EaXNwb3NlczogTW9uYWNvLklEaXNwb3NhYmxlW10gPSBbXTtcblxuICBwcml2YXRlIGlzTW9uYWNvRWRpdG9yUmVhZHk6IFdyaXRhYmxlU2lnbmFsPHsgaXNTZXR1cDogYm9vbGVhbjsgaGFzRmlyc3RWYWx1ZTogYm9vbGVhbiB9PiA9IHNpZ25hbCh7XG4gICAgaXNTZXR1cDogZmFsc2UsXG4gICAgaGFzRmlyc3RWYWx1ZTogZmFsc2UsXG4gIH0pO1xuXG4gIHByb3RlY3RlZCBfb25DaGFuZ2U6IChfdmFsdWU6IHN0cmluZyB8IG51bGwpID0+IHZvaWQgPSAoKSA9PiAoe30pO1xuXG4gIHByb3RlY3RlZCBfb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4gKHt9KTtcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBob3N0RWxlbWVudDogRWxlbWVudFJlZixcbiAgICBASW5qZWN0KEdJT19NT05BQ09fRURJVE9SX0NPTkZJRykgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IEdpb01vbmFjb0VkaXRvckNvbmZpZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1vbmFjb0VkaXRvclNlcnZpY2U6IEdpb01vbmFjb0VkaXRvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBsYW5ndWFnZUpzb25TZXJ2aWNlOiBHaW9MYW5ndWFnZUpzb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbGFuZ3VhZ2VTcGVsU2VydmljZTogR2lvTGFuZ3VhZ2VFbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyByZWFkb25seSBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgKSB7XG4gICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICAvLyBTZXQgdGhlIHZhbHVlIGFjY2Vzc29yIGRpcmVjdGx5IChpbnN0ZWFkIG9mIHByb3ZpZGluZ1xuICAgICAgLy8gTkdfVkFMVUVfQUNDRVNTT1IpIHRvIGF2b2lkIHJ1bm5pbmcgaW50byBhIGNpcmN1bGFyIGltcG9ydFxuICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuICAgIHRoaXMubW9uYWNvRWRpdG9yU2VydmljZS5sb2FkRWRpdG9yKCk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgeyBpc1NldHVwLCBoYXNGaXJzdFZhbHVlIH0gPSB0aGlzLmlzTW9uYWNvRWRpdG9yUmVhZHkoKTtcbiAgICAgIGlmIChpc1NldHVwICYmIGhhc0ZpcnN0VmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMudGV4dE1vZGVsKSB7XG4gICAgICAgICAgdGhpcy50ZXh0TW9kZWwuc2V0VmFsdWUodGhpcy52YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsTGFuZ3VhZ2UoKTtcbiAgICAgICAgdGhpcy5hdXRvZm9ybWF0VmFsdWUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgLy8gV2FpdCB1bnRpbCBtb25hY28gZWRpdG9yIGlzIGF2YWlsYWJsZVxuICAgIHRoaXMubW9uYWNvRWRpdG9yU2VydmljZS5sb2FkZWQkLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCh7IG1vbmFjbyB9KSA9PiB7XG4gICAgICB0aGlzLnNldHVwRWRpdG9yKG1vbmFjbyk7XG4gICAgICB0aGlzLmlzTW9uYWNvRWRpdG9yUmVhZHkudXBkYXRlKCh7IGhhc0ZpcnN0VmFsdWUgfSkgPT4gKHsgaXNTZXR1cDogdHJ1ZSwgaGFzRmlyc3RWYWx1ZSB9KSk7XG5cbiAgICAgIHRoaXMubG9hZGVkJC5uZXh0KGZhbHNlKTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMudG9EaXNwb3Nlcy5mb3JFYWNoKGQgPT4gZC5kaXNwb3NlKCkpO1xuXG4gICAgaWYgKHRoaXMuc3RhbmRhbG9uZUNvZGVFZGl0b3IpIHtcbiAgICAgIHRoaXMuc3RhbmRhbG9uZUNvZGVFZGl0b3IuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5zdGFuZGFsb25lQ29kZUVkaXRvciA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50ZXh0TW9kZWwpIHtcbiAgICAgIHRoaXMudGV4dE1vZGVsLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMudGV4dE1vZGVsID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8vIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXG4gIHB1YmxpYyB3cml0ZVZhbHVlKF92YWx1ZTogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmIChfdmFsdWUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBpc1N0cmluZyhfdmFsdWUpID8gX3ZhbHVlIDogSlNPTi5zdHJpbmdpZnkoX3ZhbHVlKTtcbiAgICAgIHRoaXMuaXNNb25hY29FZGl0b3JSZWFkeS51cGRhdGUoKHsgaXNTZXR1cCB9KSA9PiAoeyBpc1NldHVwLCBoYXNGaXJzdFZhbHVlOiB0cnVlIH0pKTtcbiAgICB9XG4gIH1cblxuICAvLyBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKF92YWx1ZTogc3RyaW5nIHwgbnVsbCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlID0gZm47XG4gIH1cblxuICAvLyBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8vIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnJlYWRPbmx5ID0gaXNEaXNhYmxlZDtcblxuICAgIGlmICh0aGlzLnN0YW5kYWxvbmVDb2RlRWRpdG9yKSB7XG4gICAgICB0aGlzLnN0YW5kYWxvbmVDb2RlRWRpdG9yLnVwZGF0ZU9wdGlvbnMoe1xuICAgICAgICByZWFkT25seTogaXNEaXNhYmxlZCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBFZGl0b3IobW9uYWNvOiB0eXBlb2YgTW9uYWNvKSB7XG4gICAgaWYgKCF0aGlzLmhvc3RFbGVtZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGVkaXRvciByZWYgZm91bmQuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgZG9tRWxlbWVudCA9IHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudDtcblxuICAgIGNvbnN0IHNldHRpbmdzID0ge1xuICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXG4gICAgICBsYW5ndWFnZTogdGhpcy5sYW5ndWFnZUNvbmZpZz8ubGFuZ3VhZ2UgPz8gKGlzSnNvblN0cmluZyh0aGlzLnZhbHVlKSA/ICdqc29uJyA6ICdwbGFpbnRleHQnKSxcbiAgICAgIHVyaTogYGNvZGUtJHt1bmlxdWVJZCgpfWAsXG4gICAgfTtcblxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMudGV4dE1vZGVsID0gbW9uYWNvLmVkaXRvci5jcmVhdGVNb2RlbChzZXR0aW5ncy52YWx1ZSwgc2V0dGluZ3MubGFuZ3VhZ2UsIG1vbmFjby5VcmkucGFyc2Uoc2V0dGluZ3MudXJpKSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBvcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5kZWZhdWx0T3B0aW9ucywgdGhpcy5vcHRpb25zLCB7XG4gICAgICByZWFkT25seTogIXRoaXMubmdDb250cm9sICYmICdyZWFkT25seScgaW4gdGhpcy5vcHRpb25zID8gdGhpcy5vcHRpb25zLnJlYWRPbmx5IDogdGhpcy5yZWFkT25seSxcbiAgICAgIHRoZW1lOiB0aGlzLmNvbmZpZy50aGVtZSA/PyAndnMnLFxuICAgICAgbW9kZWw6IHRoaXMudGV4dE1vZGVsLFxuICAgICAgbWluaW1hcDoge1xuICAgICAgICBlbmFibGVkOiAhdGhpcy5kaXNhYmxlTWluaU1hcCxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnN0YW5kYWxvbmVDb2RlRWRpdG9yID0gbW9uYWNvLmVkaXRvci5jcmVhdGUoZG9tRWxlbWVudCwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnNpbmdsZUxpbmVNb2RlKSB7XG4gICAgICB0aGlzLnN0YW5kYWxvbmVDb2RlRWRpdG9yPy5hZGRBY3Rpb24oe1xuICAgICAgICBpZDogJ2N1c3RvbS5hY3Rpb24nLFxuICAgICAgICBsYWJlbDogJ2N1c3RvbSBhY3Rpb24nLFxuICAgICAgICBrZXliaW5kaW5nczogW21vbmFjby5LZXlDb2RlLkVudGVyXSxcbiAgICAgICAgcHJlY29uZGl0aW9uOiAnIXN1Z2dlc3RXaWRnZXRWaXNpYmxlICYmICFyZW5hbWVJbnB1dFZpc2libGUgJiYgIWluU25pcHBldE1vZGUgJiYgIXF1aWNrRml4V2lkZ2V0VmlzaWJsZScsXG4gICAgICAgIHJ1bjogKCkgPT4ge1xuICAgICAgICAgIC8vIElnbm9yZSBFbnRlciBrZXkgaW4gc2luZ2xlIGxpbmUgbW9kZSB3aGVuIHdyaXRpbmdcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBvbkRpZENoYW5nZUNvbnRlbnQgPSB0aGlzLnRleHRNb2RlbD8ub25EaWRDaGFuZ2VDb250ZW50KCgpID0+IHtcbiAgICAgIGNvbnN0IHRleHRNb2RlbFZhbHVlID0gdGhpcy50ZXh0TW9kZWw/LmdldFZhbHVlKCkgPz8gJyc7XG4gICAgICBpZiAodGhpcy5zaW5nbGVMaW5lTW9kZSkge1xuICAgICAgICAvLyBJZiB2YWx1ZSBoYXMgXFxuLCBcXHIgb3IgXFxyXFxuLCByZW1vdmUgdGhlbVxuICAgICAgICAvLyBVc2VmdWwgdG8gY2xlYXIgbGluZSBicmVha3Mgd2hlbiBwYXN0aW5nIHRleHRcbiAgICAgICAgY29uc3QgaGFzTGluZUJyZWFrID0gbmV3IFJlZ0V4cCgvKFxcclxcbnxcXG58XFxyKS9nbSk7XG4gICAgICAgIGlmIChoYXNMaW5lQnJlYWsudGVzdCh0ZXh0TW9kZWxWYWx1ZSkpIHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50UG9zaXRpb24gPSB0aGlzLnN0YW5kYWxvbmVDb2RlRWRpdG9yPy5nZXRQb3NpdGlvbigpO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdGFuZGFsb25lQ29kZUVkaXRvcj8ucHVzaFVuZG9TdG9wKCk7XG4gICAgICAgICAgICB0aGlzLnRleHRNb2RlbD8uc2V0VmFsdWUodGV4dE1vZGVsVmFsdWUucmVwbGFjZSgvKFxcclxcbnxcXG58XFxyKS9nbSwgJycpKTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50UG9zaXRpb24pIHtcbiAgICAgICAgICAgICAgdGhpcy5zdGFuZGFsb25lQ29kZUVkaXRvcj8uc2V0UG9zaXRpb24oY3VycmVudFBvc2l0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc3RhbmRhbG9uZUNvZGVFZGl0b3I/LnBvcFVuZG9TdG9wKCk7XG4gICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5yZWFkT25seSAmJiAhaXNFcXVhbCh0aGlzLnZhbHVlLCB0ZXh0TW9kZWxWYWx1ZSkpIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0ZXh0TW9kZWxWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlKHRleHRNb2RlbFZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICAgICAgICAgIH0sIDApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnNpbmdsZUxpbmVNb2RlKSB7XG4gICAgICAvLyBTb3VyY2UgOiBodHRwczovL2ZhcnphZHl6LmNvbS9ibG9nL3NpbmdsZS1saW5lLW1vbmFjby1lZGl0b3JcbiAgICAgIHRoaXMuc3RhbmRhbG9uZUNvZGVFZGl0b3I/LnVwZGF0ZU9wdGlvbnMoe1xuICAgICAgICAvLyBxdWlja1N1Z2dlc3Rpb25zOiBmYWxzZSxcbiAgICAgICAgZml4ZWRPdmVyZmxvd1dpZGdldHM6IHRydWUsXG4gICAgICAgIGFjY2VwdFN1Z2dlc3Rpb25PbkVudGVyOiAnb24nLFxuICAgICAgICBob3Zlcjoge1xuICAgICAgICAgIGRlbGF5OiAxMDAsXG4gICAgICAgIH0sXG4gICAgICAgIHJvdW5kZWRTZWxlY3Rpb246IGZhbHNlLFxuICAgICAgICBjb250ZXh0bWVudTogZmFsc2UsXG4gICAgICAgIGN1cnNvclN0eWxlOiAnbGluZS10aGluJyxcbiAgICAgICAgbGlua3M6IGZhbHNlLFxuICAgICAgICBmaW5kOiB7XG4gICAgICAgICAgYWRkRXh0cmFTcGFjZU9uVG9wOiBmYWxzZSxcbiAgICAgICAgICBhdXRvRmluZEluU2VsZWN0aW9uOiAnbmV2ZXInLFxuICAgICAgICAgIHNlZWRTZWFyY2hTdHJpbmdGcm9tU2VsZWN0aW9uOiAnbmV2ZXInLFxuICAgICAgICB9LFxuICAgICAgICBmb250U2l6ZTogMTQsXG4gICAgICAgIGZvbnRXZWlnaHQ6ICdub3JtYWwnLFxuICAgICAgICBvdmVydmlld1J1bGVyTGFuZXM6IDAsXG4gICAgICAgIHNjcm9sbEJleW9uZExhc3RDb2x1bW46IDAsXG4gICAgICAgIHdvcmRXcmFwOiAnb24nLFxuICAgICAgICBtaW5pbWFwOiB7XG4gICAgICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIGxpbmVOdW1iZXJzOiAnb2ZmJyxcbiAgICAgICAgaGlkZUN1cnNvckluT3ZlcnZpZXdSdWxlcjogdHJ1ZSxcbiAgICAgICAgb3ZlcnZpZXdSdWxlckJvcmRlcjogZmFsc2UsXG4gICAgICAgIGdseXBoTWFyZ2luOiBmYWxzZSxcbiAgICAgICAgZm9sZGluZzogZmFsc2UsXG4gICAgICAgIGxpbmVEZWNvcmF0aW9uc1dpZHRoOiAwLFxuICAgICAgICBsaW5lTnVtYmVyc01pbkNoYXJzOiAwLFxuICAgICAgICByZW5kZXJMaW5lSGlnaGxpZ2h0OiAnbm9uZScsXG4gICAgICAgIHNjcm9sbGJhcjoge1xuICAgICAgICAgIGhvcml6b250YWw6ICdoaWRkZW4nLFxuICAgICAgICAgIHZlcnRpY2FsOiAnaGlkZGVuJyxcbiAgICAgICAgICBhbHdheXNDb25zdW1lTW91c2VXaGVlbDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBvbkRpZEJsdXJFZGl0b3JXaWRnZXQgPSB0aGlzLnN0YW5kYWxvbmVDb2RlRWRpdG9yPy5vbkRpZEJsdXJFZGl0b3JXaWRnZXQoKCkgPT4ge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnJlYWRPbmx5KSB0aGlzLl9vblRvdWNoZWQoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy50b0Rpc3Bvc2VzID0gW29uRGlkQ2hhbmdlQ29udGVudCwgb25EaWRCbHVyRWRpdG9yV2lkZ2V0XS5maWx0ZXIoZCA9PiAhIWQpIGFzIE1vbmFjby5JRGlzcG9zYWJsZVtdO1xuXG4gICAgdGhpcy5zZXR1cExhbmd1YWdlKHNldHRpbmdzLnVyaSwgdGhpcy5sYW5ndWFnZUNvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwTGFuZ3VhZ2UodXJpOiBzdHJpbmcsIGxhbmd1YWdlQ29uZmlnPzogTW9uYWNvRWRpdG9yTGFuZ3VhZ2VDb25maWcpIHtcbiAgICBpZiAoIWxhbmd1YWdlQ29uZmlnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3dpdGNoIChsYW5ndWFnZUNvbmZpZy5sYW5ndWFnZSkge1xuICAgICAgY2FzZSAnanNvbic6XG4gICAgICAgIGlmIChsYW5ndWFnZUNvbmZpZy5zY2hlbWFzKSB7XG4gICAgICAgICAgdGhpcy5sYW5ndWFnZUpzb25TZXJ2aWNlLmFkZFNjaGVtYXModXJpLCBsYW5ndWFnZUNvbmZpZy5zY2hlbWFzKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NwZWwnOlxuICAgICAgICBpZiAobGFuZ3VhZ2VDb25maWcuc2NoZW1hKSB7XG4gICAgICAgICAgdGhpcy5sYW5ndWFnZVNwZWxTZXJ2aWNlLnNldFNjaGVtYShsYW5ndWFnZUNvbmZpZy5zY2hlbWEpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVNb2RlbExhbmd1YWdlKCkge1xuICAgIGNvbnN0IGxhbmd1YWdlSWQgPSB0aGlzLmxhbmd1YWdlQ29uZmlnPy5sYW5ndWFnZSA/PyAoaXNKc29uU3RyaW5nKHRoaXMudmFsdWUpID8gJ2pzb24nIDogJ3BsYWludGV4dCcpO1xuICAgIGlmICh0aGlzLnRleHRNb2RlbCAmJiB3aW5kb3cubW9uYWNvKSB7XG4gICAgICB3aW5kb3cubW9uYWNvLmVkaXRvci5zZXRNb2RlbExhbmd1YWdlKHRoaXMudGV4dE1vZGVsLCBsYW5ndWFnZUlkKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGF1dG9mb3JtYXRWYWx1ZSgpIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZUF1dG9Gb3JtYXQpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBwcmV2aW91c1JlYWRPbmx5U3RhdGUgPSB0aGlzLm9wdGlvbnMucmVhZE9ubHkgfHwgdGhpcy5yZWFkT25seTtcbiAgICAgICAgdGhpcy5zdGFuZGFsb25lQ29kZUVkaXRvcj8udXBkYXRlT3B0aW9ucyh7IHJlYWRPbmx5OiBmYWxzZSB9KTtcbiAgICAgICAgdGhpcy5zdGFuZGFsb25lQ29kZUVkaXRvclxuICAgICAgICAgID8uZ2V0QWN0aW9uKCdlZGl0b3IuYWN0aW9uLmZvcm1hdERvY3VtZW50JylcbiAgICAgICAgICA/LnJ1bigpXG4gICAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdGFuZGFsb25lQ29kZUVkaXRvcj8udXBkYXRlT3B0aW9ucyh7IHJlYWRPbmx5OiBwcmV2aW91c1JlYWRPbmx5U3RhdGUgfSk7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0sIDgwKTtcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgaXNKc29uU3RyaW5nID0gKHN0cjogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gIHRyeSB7XG4gICAgSlNPTi5wYXJzZShzdHIpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufTtcbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { trigger, transition, style, animate } from '@angular/animations';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { EventEmitter, Component, HostBinding, Input, Output, HostListener, NgModule, ChangeDetectionStrategy, Optional, Self, ViewChild, Directive, Injector, Inject, forwardRef, ContentChildren, Injectable, Host, ContentChild, InjectionToken, inject,
|
|
3
|
+
import { EventEmitter, Component, HostBinding, Input, Output, HostListener, NgModule, ChangeDetectionStrategy, Optional, Self, ViewChild, Directive, Injector, Inject, forwardRef, ContentChildren, Injectable, Host, ContentChild, InjectionToken, inject, signal, effect, ViewContainerRef, computed, Pipe, ViewEncapsulation } from '@angular/core';
|
|
4
4
|
import { of, Subject, fromEvent, ReplaySubject, merge, Observable, BehaviorSubject, timer } from 'rxjs';
|
|
5
5
|
import { delay, tap, startWith, switchMap, map, distinctUntilChanged, takeUntil, filter, take, debounceTime, shareReplay, catchError, debounce } from 'rxjs/operators';
|
|
6
6
|
import * as i1 from '@angular/common';
|
|
@@ -3622,6 +3622,10 @@ class GioMonacoEditorComponent {
|
|
|
3622
3622
|
this.value = '';
|
|
3623
3623
|
this.readOnly = false;
|
|
3624
3624
|
this.toDisposes = [];
|
|
3625
|
+
this.isMonacoEditorReady = signal({
|
|
3626
|
+
isSetup: false,
|
|
3627
|
+
hasFirstValue: false,
|
|
3628
|
+
});
|
|
3625
3629
|
this._onChange = () => ({});
|
|
3626
3630
|
this._onTouched = () => ({});
|
|
3627
3631
|
this.unsubscribe$ = new Subject();
|
|
@@ -3631,11 +3635,22 @@ class GioMonacoEditorComponent {
|
|
|
3631
3635
|
this.ngControl.valueAccessor = this;
|
|
3632
3636
|
}
|
|
3633
3637
|
this.monacoEditorService.loadEditor();
|
|
3638
|
+
effect(() => {
|
|
3639
|
+
const { isSetup, hasFirstValue } = this.isMonacoEditorReady();
|
|
3640
|
+
if (isSetup && hasFirstValue) {
|
|
3641
|
+
if (this.textModel) {
|
|
3642
|
+
this.textModel.setValue(this.value);
|
|
3643
|
+
}
|
|
3644
|
+
this.updateModelLanguage();
|
|
3645
|
+
this.autoformatValue();
|
|
3646
|
+
}
|
|
3647
|
+
});
|
|
3634
3648
|
}
|
|
3635
3649
|
ngAfterViewInit() {
|
|
3636
3650
|
// Wait until monaco editor is available
|
|
3637
3651
|
this.monacoEditorService.loaded$.pipe(takeUntil(this.unsubscribe$)).subscribe(({ monaco }) => {
|
|
3638
3652
|
this.setupEditor(monaco);
|
|
3653
|
+
this.isMonacoEditorReady.update(({ hasFirstValue }) => ({ isSetup: true, hasFirstValue }));
|
|
3639
3654
|
this.loaded$.next(false);
|
|
3640
3655
|
this.changeDetectorRef.detectChanges();
|
|
3641
3656
|
});
|
|
@@ -3657,9 +3672,7 @@ class GioMonacoEditorComponent {
|
|
|
3657
3672
|
writeValue(_value) {
|
|
3658
3673
|
if (_value) {
|
|
3659
3674
|
this.value = isString(_value) ? _value : JSON.stringify(_value);
|
|
3660
|
-
|
|
3661
|
-
if (this.textModel) {
|
|
3662
|
-
this.textModel.setValue(this.value);
|
|
3675
|
+
this.isMonacoEditorReady.update(({ isSetup }) => ({ isSetup, hasFirstValue: true }));
|
|
3663
3676
|
}
|
|
3664
3677
|
}
|
|
3665
3678
|
// From ControlValueAccessor interface
|
|
@@ -3703,11 +3716,6 @@ class GioMonacoEditorComponent {
|
|
|
3703
3716
|
this.standaloneCodeEditor = monaco.editor.create(domElement, {
|
|
3704
3717
|
...options,
|
|
3705
3718
|
});
|
|
3706
|
-
if (!this.disableAutoFormat) {
|
|
3707
|
-
setTimeout(() => {
|
|
3708
|
-
this.standaloneCodeEditor?.getAction('editor.action.formatDocument')?.run();
|
|
3709
|
-
}, 80);
|
|
3710
|
-
}
|
|
3711
3719
|
if (this.singleLineMode) {
|
|
3712
3720
|
this.standaloneCodeEditor?.addAction({
|
|
3713
3721
|
id: 'custom.action',
|
|
@@ -3818,6 +3826,27 @@ class GioMonacoEditorComponent {
|
|
|
3818
3826
|
break;
|
|
3819
3827
|
}
|
|
3820
3828
|
}
|
|
3829
|
+
updateModelLanguage() {
|
|
3830
|
+
const languageId = this.languageConfig?.language ?? (isJsonString(this.value) ? 'json' : 'plaintext');
|
|
3831
|
+
if (this.textModel && window.monaco) {
|
|
3832
|
+
window.monaco.editor.setModelLanguage(this.textModel, languageId);
|
|
3833
|
+
}
|
|
3834
|
+
}
|
|
3835
|
+
autoformatValue() {
|
|
3836
|
+
if (!this.disableAutoFormat) {
|
|
3837
|
+
setTimeout(() => {
|
|
3838
|
+
const previousReadOnlyState = this.options.readOnly || this.readOnly;
|
|
3839
|
+
this.standaloneCodeEditor?.updateOptions({ readOnly: false });
|
|
3840
|
+
this.standaloneCodeEditor
|
|
3841
|
+
?.getAction('editor.action.formatDocument')
|
|
3842
|
+
?.run()
|
|
3843
|
+
.finally(() => {
|
|
3844
|
+
this.standaloneCodeEditor?.updateOptions({ readOnly: previousReadOnlyState });
|
|
3845
|
+
this.changeDetectorRef.detectChanges();
|
|
3846
|
+
});
|
|
3847
|
+
}, 80);
|
|
3848
|
+
}
|
|
3849
|
+
}
|
|
3821
3850
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioMonacoEditorComponent, deps: [{ token: i0.ElementRef }, { token: GIO_MONACO_EDITOR_CONFIG }, { token: GioMonacoEditorService }, { token: GioLanguageJsonService }, { token: GioLanguageElService }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1$2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3822
3851
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: GioMonacoEditorComponent, isStandalone: false, selector: "gio-monaco-editor", inputs: { languageConfig: "languageConfig", options: "options", disableMiniMap: "disableMiniMap", disableAutoFormat: "disableAutoFormat", singleLineMode: "singleLineMode" }, host: { properties: { "class.single-line": "this.singleLineMode" } }, ngImport: i0, template: ` <div *ngIf="loaded$ | async">Loading...</div>`, isInline: true, styles: [":host{display:block;height:100%;min-height:150px;pointer-events:auto;transition:opacity .2s ease-out}:host.single-line{display:flex;height:24px;min-height:24px;align-items:center}:host-context(.hidden){opacity:0}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3823
3852
|
}
|
|
@@ -4013,23 +4042,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
|
|
|
4013
4042
|
* limitations under the License.
|
|
4014
4043
|
*/
|
|
4015
4044
|
class GioMonacoClipboardCopyComponent {
|
|
4045
|
+
constructor() {
|
|
4046
|
+
this.monacoEditor = null;
|
|
4047
|
+
}
|
|
4016
4048
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioMonacoClipboardCopyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4017
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: GioMonacoClipboardCopyComponent, isStandalone: false, selector: "[gioMonacoClipboardCopy]", ngImport: i0, template: `
|
|
4049
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: GioMonacoClipboardCopyComponent, isStandalone: false, selector: "[gioMonacoClipboardCopy]", queries: [{ propertyName: "monacoEditor", first: true, predicate: GioMonacoEditorComponent, descendants: true }], ngImport: i0, template: `
|
|
4018
4050
|
<div class="editor-wrapper">
|
|
4019
4051
|
<ng-content></ng-content>
|
|
4020
|
-
<gio-clipboard-copy-icon class="copy-btn"></gio-clipboard-copy-icon>
|
|
4052
|
+
<gio-clipboard-copy-icon class="copy-btn" [contentToCopy]="monacoEditor?.value ?? ''"></gio-clipboard-copy-icon>
|
|
4021
4053
|
</div>
|
|
4022
|
-
`, isInline: true, styles: [".editor-wrapper{position:relative;overflow:auto;
|
|
4054
|
+
`, isInline: true, styles: [".editor-wrapper{position:relative;overflow:auto;flex:1 1 50%}.copy-btn{position:absolute;z-index:10;top:8px;right:8px}\n"], dependencies: [{ kind: "component", type: GioClipboardCopyIconComponent, selector: "gio-clipboard-copy-icon" }] }); }
|
|
4023
4055
|
}
|
|
4024
4056
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioMonacoClipboardCopyComponent, decorators: [{
|
|
4025
4057
|
type: Component,
|
|
4026
4058
|
args: [{ selector: '[gioMonacoClipboardCopy]', template: `
|
|
4027
4059
|
<div class="editor-wrapper">
|
|
4028
4060
|
<ng-content></ng-content>
|
|
4029
|
-
<gio-clipboard-copy-icon class="copy-btn"></gio-clipboard-copy-icon>
|
|
4061
|
+
<gio-clipboard-copy-icon class="copy-btn" [contentToCopy]="monacoEditor?.value ?? ''"></gio-clipboard-copy-icon>
|
|
4030
4062
|
</div>
|
|
4031
|
-
`, standalone: false, styles: [".editor-wrapper{position:relative;overflow:auto;
|
|
4032
|
-
}]
|
|
4063
|
+
`, standalone: false, styles: [".editor-wrapper{position:relative;overflow:auto;flex:1 1 50%}.copy-btn{position:absolute;z-index:10;top:8px;right:8px}\n"] }]
|
|
4064
|
+
}], propDecorators: { monacoEditor: [{
|
|
4065
|
+
type: ContentChild,
|
|
4066
|
+
args: [GioMonacoEditorComponent, { static: false }]
|
|
4067
|
+
}] } });
|
|
4033
4068
|
|
|
4034
4069
|
/*
|
|
4035
4070
|
* Copyright (C) 2015 The Gravitee team (http://gravitee.io)
|