@leanix/components 0.4.407 → 0.4.409
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/index.mjs +2 -1
- package/esm2022/lib/core-ui/components/badge/badge.component.mjs +21 -1
- package/esm2022/lib/core-ui/components/banner/banner.component.mjs +23 -1
- package/esm2022/lib/core-ui/components/button/button.component.mjs +40 -1
- package/esm2022/lib/core-ui/components/card/card.component.mjs +16 -1
- package/esm2022/lib/core-ui/components/content-panel/content-panel.component.mjs +18 -3
- package/esm2022/lib/core-ui/components/counter/counter.component.mjs +14 -1
- package/esm2022/lib/core-ui/components/integration-link-card/integration-link-card.component.mjs +47 -1
- package/esm2022/lib/core-ui/components/skeleton/skeleton.component.mjs +19 -1
- package/esm2022/lib/core-ui/components/stepper/stepper.component.mjs +41 -1
- package/esm2022/lib/core-ui/components/tiny-spinner/tiny-spinner.component.mjs +12 -1
- package/esm2022/lib/core-ui/components/tokenizer/tokenizer-overflow-popover/tokenizer-overflow-popover.component.mjs +44 -0
- package/esm2022/lib/core-ui/components/tokenizer/tokenizer.component.mjs +3 -3
- package/esm2022/lib/core-ui/tooltip/tooltip.directive.mjs +16 -1
- package/esm2022/lib/forms-ui/components/breadcrumb/breadcrumb.component.mjs +17 -1
- package/esm2022/lib/forms-ui/components/date-input/date-input.component.mjs +100 -38
- package/esm2022/lib/forms-ui/components/slider-toggle/slider-toggle.component.mjs +18 -1
- package/esm2022/lib/modal-ui/components/modal/modal.component.mjs +55 -7
- package/esm2022/lib/popover-ui/components/popover/popover.component.mjs +31 -6
- package/fesm2022/leanix-components.mjs +541 -82
- package/fesm2022/leanix-components.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/lib/core-ui/components/badge/badge.component.d.ts +23 -0
- package/lib/core-ui/components/banner/banner.component.d.ts +22 -0
- package/lib/core-ui/components/button/button.component.d.ts +39 -0
- package/lib/core-ui/components/card/card.component.d.ts +15 -0
- package/lib/core-ui/components/content-panel/content-panel.component.d.ts +18 -1
- package/lib/core-ui/components/counter/counter.component.d.ts +14 -0
- package/lib/core-ui/components/integration-link-card/integration-link-card.component.d.ts +60 -0
- package/lib/core-ui/components/skeleton/skeleton.component.d.ts +18 -0
- package/lib/core-ui/components/stepper/stepper.component.d.ts +40 -0
- package/lib/core-ui/components/tiny-spinner/tiny-spinner.component.d.ts +11 -0
- package/lib/core-ui/components/tokenizer/tokenizer-overflow-popover/tokenizer-overflow-popover.component.d.ts +19 -0
- package/lib/core-ui/tooltip/tooltip.directive.d.ts +17 -0
- package/lib/forms-ui/components/breadcrumb/breadcrumb.component.d.ts +16 -0
- package/lib/forms-ui/components/date-input/date-input.component.d.ts +80 -7
- package/lib/forms-ui/components/slider-toggle/slider-toggle.component.d.ts +20 -0
- package/lib/modal-ui/components/modal/modal.component.d.ts +59 -5
- package/lib/popover-ui/components/popover/popover.component.d.ts +37 -5
- package/package.json +1 -1
@@ -16,12 +16,42 @@ import * as i3 from "@angular/cdk/portal";
|
|
16
16
|
import * as i4 from "@ngx-translate/core";
|
17
17
|
import * as i5 from "rxjs";
|
18
18
|
/**
|
19
|
-
*
|
20
|
-
* - provideAnimations()
|
19
|
+
* This documentation provides details on the usage and configuration of the Modal.
|
21
20
|
*
|
22
|
-
*
|
21
|
+
* ## Usage
|
22
|
+
*
|
23
|
+
* 1. Import `LxModalModule` and `LxCoreUiModule` modules from `@leanix/components` in your module where you want to use the component.
|
24
|
+
*
|
25
|
+
* ```ts
|
26
|
+
* import { LxModalModule, LxCoreUiModule } from '@leanix/components';
|
27
|
+
* ```
|
28
|
+
*
|
29
|
+
* 2. Use the **lx-modal** component in your template with the parameters described below.
|
30
|
+
*
|
31
|
+
* - **`open`**: Whether the modal is open or closed.
|
32
|
+
* - **`size`**: 'dialog' | 'dialog-large'.
|
33
|
+
* - **`verticalScroll`**: Whether the modal is scrollable or not.
|
34
|
+
* - **`showHeader`**: Whether the modal has a header or not.
|
35
|
+
* - **`showFooter`**: Whether the modal has a footer or not.
|
36
|
+
* - **`showCloseButton`**: Whether to show the close button.
|
37
|
+
* - **`showBackButton`**: Whether to show the back button.
|
38
|
+
*
|
39
|
+
* 3. Use optional **lx-modal-header** component in your template with the parameters described below.
|
40
|
+
*
|
41
|
+
* - **`title`**: Title of the modal.
|
42
|
+
* - **`subtitle`**: Subtitle of the modal.
|
43
|
+
* - **`bottomBorder`**: Whether to show a bottom border.
|
44
|
+
*
|
45
|
+
* 4. Use optional **lx-modal-footer** component in your template with the parameters described below.
|
46
|
+
*
|
47
|
+
* - **`border`**: Whether to show the footer at the bottom of the modal.
|
48
|
+
*
|
49
|
+
* **GLOBAL PROVIDERS** required for this component:
|
50
|
+
* - `provideAnimations()`
|
51
|
+
*
|
52
|
+
* **ATTENTION - SCROLLABLE DIALOG**:
|
23
53
|
* The <lx-modal> component when used as "dialog" is not designed to work with a
|
24
|
-
* scrollable body (via
|
54
|
+
* scrollable body (via `overflow: auto | scroll`) in combination with dropdowns.
|
25
55
|
* The overflow on the body will also clip the dropdowns, which is expected.
|
26
56
|
*
|
27
57
|
* Reasoning:
|
@@ -30,12 +60,12 @@ import * as i5 from "rxjs";
|
|
30
60
|
* requires scrolling, we should discuss whether to put it into a dialog at all
|
31
61
|
* and rather think about putting the content on a separate route or
|
32
62
|
* using the fullscreen version of the modal.
|
33
|
-
*
|
34
63
|
*/
|
35
64
|
export class ModalComponent {
|
36
65
|
get content() {
|
37
66
|
return this.explicitContent || this.implicitContent;
|
38
67
|
}
|
68
|
+
/** @internal */
|
39
69
|
onEscape() {
|
40
70
|
if (this.open && this.showCloseButton) {
|
41
71
|
this.closeModal(ModalCloseClickLocation.Escape);
|
@@ -46,21 +76,36 @@ export class ModalComponent {
|
|
46
76
|
this.renderer = renderer;
|
47
77
|
this.closeModal$ = closeModal$;
|
48
78
|
this.focusTrap = focusTrap;
|
79
|
+
/** @internal */
|
49
80
|
this.NAME = 'ModalComponent';
|
81
|
+
/** Whether the modal is open or closed. */
|
50
82
|
this.open = false;
|
83
|
+
/** Whether to show the close button. */
|
51
84
|
this.showCloseButton = true;
|
85
|
+
/** Whether to show the back button. */
|
52
86
|
this.showBackButton = false;
|
53
87
|
/*
|
54
88
|
* If true, then the content area scrolls vertically instead of expanding its height.
|
55
89
|
* This can be a problem if the content has dropdowns or date inputs, but can be good if the content has a huge amount of text.
|
56
90
|
*/
|
57
91
|
this.verticalScroll = false;
|
92
|
+
/** The size of the modal. */
|
58
93
|
this.size = 'fullscreen';
|
59
|
-
|
94
|
+
/**
|
95
|
+
* Minimum width of the modal.
|
96
|
+
*
|
97
|
+
* _NB: Some modal implementations rely on this minWidth being 600px_
|
98
|
+
*/
|
99
|
+
this.minWidth = '600px';
|
100
|
+
/** Whether the modal is a focus trap. */
|
60
101
|
this.isFocusTrap = false;
|
102
|
+
/** Event emitted when the modal is closed. */
|
61
103
|
this.close = new EventEmitter();
|
104
|
+
/** Event emitted when the back button is clicked. */
|
62
105
|
this.back = new EventEmitter();
|
106
|
+
/** @internal */
|
63
107
|
this.closeLocation = ModalCloseClickLocation;
|
108
|
+
/** @internal */
|
64
109
|
this.destroyed$ = new Subject();
|
65
110
|
}
|
66
111
|
ngOnInit() {
|
@@ -120,6 +165,7 @@ export class ModalComponent {
|
|
120
165
|
.subscribe(() => this.openModal());
|
121
166
|
}
|
122
167
|
}
|
168
|
+
/** @internal */
|
123
169
|
openModal() {
|
124
170
|
this.oldOverflow = document.documentElement.style.overflowY;
|
125
171
|
if (this.size === 'fullscreen') {
|
@@ -128,6 +174,7 @@ export class ModalComponent {
|
|
128
174
|
this.overlayRef.attach(this.cdkPortal);
|
129
175
|
this.trapFocusInModal(this.overlayRef.hostElement);
|
130
176
|
}
|
177
|
+
/** @internal */
|
131
178
|
emitBack() {
|
132
179
|
this.back.emit();
|
133
180
|
}
|
@@ -140,6 +187,7 @@ export class ModalComponent {
|
|
140
187
|
this.overlayRef.dispose();
|
141
188
|
}
|
142
189
|
}
|
190
|
+
/** @internal */
|
143
191
|
async closeModal(closeLocation) {
|
144
192
|
if (!this.canModalBeClosed || (await this.canModalBeClosed(closeLocation))) {
|
145
193
|
this.open = false;
|
@@ -213,4 +261,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
213
261
|
type: HostListener,
|
214
262
|
args: ['document:keydown.escape']
|
215
263
|
}] } });
|
216
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvbW9kYWwtdWkvY29tcG9uZW50cy9tb2RhbC9tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9tb2RhbC11aS9jb21wb25lbnRzL21vZGFsL21vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUcxRSxPQUFPLEVBQUUsU0FBUyxFQUFVLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQWMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDakYsT0FBTyxFQUFFLFdBQVcsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7Ozs7O0FBRTlFOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBY0gsTUFBTSxPQUFPLGNBQWM7SUE4QnpCLElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ3RELENBQUM7SUFFd0MsUUFBUTtRQUMvQyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxVQUFVLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEQsQ0FBQztJQUNILENBQUM7SUFFRCxZQUNVLE9BQWdCLEVBQ2hCLFFBQW1CLEVBQ2MsV0FBMEQsRUFDM0YsU0FBdUM7UUFIdkMsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ2MsZ0JBQVcsR0FBWCxXQUFXLENBQStDO1FBQzNGLGNBQVMsR0FBVCxTQUFTLENBQThCO1FBM0N4QyxTQUFJLEdBQUcsZ0JBQWdCLENBQUM7UUFDeEIsU0FBSSxHQUFZLEtBQUssQ0FBQztRQUN0QixvQkFBZSxHQUFHLElBQUksQ0FBQztRQUN2QixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUNoQzs7O1dBR0c7UUFDTSxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixTQUFJLEdBQTZDLFlBQVksQ0FBQztRQUM5RCxhQUFRLEdBQVcsT0FBTyxDQUFDLENBQUMsbUVBQW1FO1FBQy9GLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBRTVCLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBMkIsQ0FBQztRQUNwRCxTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQU8xQyxrQkFBYSxHQUFHLHVCQUF1QixDQUFDO1FBRS9CLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBcUJ2QyxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxXQUFXO1lBQ2QsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNqQyxTQUFTLENBQUMsQ0FBQyxhQUFnRCxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFFbkcsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFlBQVksRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7Z0JBQ3BDLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDckIsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsTUFBTSxFQUFFLE9BQU87YUFDaEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxjQUFjLEVBQUUsQ0FBQztZQUN4QyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDMUYsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztnQkFDcEMsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNyQixnQkFBZ0I7Z0JBQ2hCLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixLQUFLLEVBQUUsS0FBSztnQkFDWixNQUFNLEVBQUUsTUFBTTthQUNmLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sZ0JBQWdCO1lBQ2hCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMxRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO2dCQUNwQyxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ3JCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtnQkFDdkIsZ0JBQWdCO2dCQUNoQixXQUFXLEVBQUUsSUFBSTtnQkFDakIsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFO2FBQ3RELENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssWUFBWSxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLFVBQVU7aUJBQ1osYUFBYSxFQUFFO2lCQUNmLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2lCQUNoQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQzVFLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQ25FLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNuQixDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDbkUsSUFBSSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDckQsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZCxLQUFLLENBQUMsQ0FBQyxDQUFDO2lCQUNMLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2lCQUNoQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDNUQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFlBQVksRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzFFLENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUV2QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssWUFBWSxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xGLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxhQUFnRDtRQUMvRCxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzNFLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7WUFFekIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFlBQVksRUFBRSxDQUFDO2dCQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDbEYsQ0FBQztZQUVELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sYUFBYSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0RyxDQUFDO0lBQ0gsQ0FBQztJQUVPLGdCQUFnQixDQUFDLFdBQXdCO1FBQy9DLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7OEdBcEpVLGNBQWMsa0VBMkNILFdBQVc7a0dBM0N0QixjQUFjLDZiQWlCWCxvQkFBb0IseUVBQ3BCLG9CQUFvQixrRkFVcEIscUJBQXFCLDJCQUFVLFdBQVcsc0ZBVDdDLFNBQVMsc01DL0V0Qiw0ckNBb0NBLDB5RkRzQlksWUFBWSw0SEFBRSxJQUFJLDZGQUFFLGdCQUFnQixtSkFBRSxlQUFlLDhFQVBuRDtZQUNWLE9BQU8sQ0FBQyxPQUFPLEVBQUU7Z0JBQ2YsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0RixVQUFVLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUM5RCxDQUFDO1NBQ0g7OzJGQUlVLGNBQWM7a0JBYjFCLFNBQVM7K0JBQ0UsVUFBVSxjQUdSO3dCQUNWLE9BQU8sQ0FBQyxPQUFPLEVBQUU7NEJBQ2YsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDOzRCQUN0RixVQUFVLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzt5QkFDOUQsQ0FBQztxQkFDSCxjQUNXLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDOzswQkE2QzdELFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsV0FBVztvRkF6Q3hCLElBQUk7c0JBQVosS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBS0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDSSxLQUFLO3NCQUFkLE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNO2dCQUU2QixNQUFNO3NCQUF6QyxZQUFZO3VCQUFDLG9CQUFvQjtnQkFDRSxNQUFNO3NCQUF6QyxZQUFZO3VCQUFDLG9CQUFvQjtnQkFDTSxTQUFTO3NCQUFoRCxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBT1UsZUFBZTtzQkFBOUQsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRTRCLGVBQWU7c0JBQXhGLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBTS9CLFFBQVE7c0JBQWhELFlBQVk7dUJBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IENvbmZpZ3VyYWJsZUZvY3VzVHJhcEZhY3RvcnkgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ2RrUG9ydGFsLCBQb3J0YWwsIFBvcnRhbE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFJlbmRlcmVyMixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1vZGFsQ29udGVudERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvbW9kYWwtY29udGVudC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTU9EQUxfQ0xPU0UsIE1vZGFsQ2xvc2VDbGlja0xvY2F0aW9uIH0gZnJvbSAnLi4vLi4vbW9kYWwuY29uc3RhbnRzJztcbmltcG9ydCB7IE1vZGFsRm9vdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vbW9kYWwtZm9vdGVyL21vZGFsLWZvb3Rlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTW9kYWxIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9tb2RhbC1oZWFkZXIvbW9kYWwtaGVhZGVyLmNvbXBvbmVudCc7XG5cbi8qKlxuICogR0xPQkFMIFBST1ZJREVSUyByZXF1aXJlZCBmb3IgdGhpcyBjb21wb25lbnQ6XG4gKiAtIHByb3ZpZGVBbmltYXRpb25zKClcbiAqXG4gKiBBVFRFTlRJT04gLSBTQ1JPTExBQkxFIERJQUxPRzpcbiAqIFRoZSA8bHgtbW9kYWw+IGNvbXBvbmVudCB3aGVuIHVzZWQgYXMgXCJkaWFsb2dcIiBpcyBub3QgZGVzaWduZWQgdG8gd29yayB3aXRoIGFcbiAqIHNjcm9sbGFibGUgYm9keSAodmlhIFwib3ZlcmZsb3c6IGF1dG8gfCBzY3JvbGxcIikgaW4gY29tYmluYXRpb24gd2l0aCBkcm9wZG93bnMuXG4gKiBUaGUgb3ZlcmZsb3cgb24gdGhlIGJvZHkgd2lsbCBhbHNvIGNsaXAgdGhlIGRyb3Bkb3ducywgd2hpY2ggaXMgZXhwZWN0ZWQuXG4gKlxuICogUmVhc29uaW5nOlxuICogVGhlIGNvbnRlbnRzIHdpdGhpbiB0aGUgZGlhbG9nIHNob3VsZCBiZSBqdXN0IGEgZmV3IGVsZW1lbnRzIHdoaWNoIGZpdCBhbmRcbiAqIGp1c3RpZnkgdGhlIHVzYWdlIG9mIGEgZGlhbG9nLiBJZiB0aGUgY29udGVudCBpcyBsYXJnZXIgdGhhbiB0aGUgZGlhbG9nLCBhbmQgdGh1c1xuICogcmVxdWlyZXMgc2Nyb2xsaW5nLCB3ZSBzaG91bGQgZGlzY3VzcyB3aGV0aGVyIHRvIHB1dCBpdCBpbnRvIGEgZGlhbG9nIGF0IGFsbFxuICogYW5kIHJhdGhlciB0aGluayBhYm91dCBwdXR0aW5nIHRoZSBjb250ZW50IG9uIGEgc2VwYXJhdGUgcm91dGUgb3JcbiAqIHVzaW5nIHRoZSBmdWxsc2NyZWVuIHZlcnNpb24gb2YgdGhlIG1vZGFsLlxuICpcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbHgtbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJ21vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ21vZGFsLmNvbXBvbmVudC5zY3NzJ10sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdtb2RhbCcsIFtcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtzdHlsZSh7IG9wYWNpdHk6IDAgfSksIGFuaW1hdGUoJzAuMTVzJywgc3R5bGUoeyBvcGFjaXR5OiAxIH0pKV0pLFxuICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgYW5pbWF0ZSgnMC4xNXMnLCBzdHlsZSh7IG9wYWNpdHk6IDAgfSkpKVxuICAgIF0pXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtQb3J0YWxNb2R1bGUsIE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQsIFRyYW5zbGF0ZU1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgcmVhZG9ubHkgTkFNRSA9ICdNb2RhbENvbXBvbmVudCc7XG4gIEBJbnB1dCgpIG9wZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd0Nsb3NlQnV0dG9uID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd0JhY2tCdXR0b24gPSBmYWxzZTtcbiAgLypcbiAgICogSWYgdHJ1ZSwgdGhlbiB0aGUgY29udGVudCBhcmVhIHNjcm9sbHMgdmVydGljYWxseSBpbnN0ZWFkIG9mIGV4cGFuZGluZyBpdHMgaGVpZ2h0LlxuICAgKiBUaGlzIGNhbiBiZSBhIHByb2JsZW0gaWYgdGhlIGNvbnRlbnQgaGFzIGRyb3Bkb3ducyBvciBkYXRlIGlucHV0cywgYnV0IGNhbiBiZSBnb29kIGlmIHRoZSBjb250ZW50IGhhcyBhIGh1Z2UgYW1vdW50IG9mIHRleHQuXG4gICAqL1xuICBASW5wdXQoKSB2ZXJ0aWNhbFNjcm9sbCA9IGZhbHNlO1xuICBASW5wdXQoKSBzaXplOiAnZnVsbHNjcmVlbicgfCAnZGlhbG9nLWxhcmdlJyB8ICdkaWFsb2cnID0gJ2Z1bGxzY3JlZW4nO1xuICBASW5wdXQoKSBtaW5XaWR0aDogc3RyaW5nID0gJzYwMHB4JzsgLy8gTkI6IFNvbWUgbW9kYWwgaW1wbGVtZW50YXRpb25zIHJlbHkgb24gdGhpcyBtaW5XaWR0aCBiZWluZyA2MDBweFxuICBASW5wdXQoKSBpc0ZvY3VzVHJhcDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBjYW5Nb2RhbEJlQ2xvc2VkPzogKGNsb3NlTG9jYXRpb246IE1vZGFsQ2xvc2VDbGlja0xvY2F0aW9uIHwgYm9vbGVhbikgPT4gUHJvbWlzZTxib29sZWFuPjtcbiAgQE91dHB1dCgpIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2RhbENsb3NlQ2xpY2tMb2NhdGlvbj4oKTtcbiAgQE91dHB1dCgpIGJhY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQENvbnRlbnRDaGlsZChNb2RhbEhlYWRlckNvbXBvbmVudCkgaGVhZGVyPzogTW9kYWxIZWFkZXJDb21wb25lbnQ7XG4gIEBDb250ZW50Q2hpbGQoTW9kYWxGb290ZXJDb21wb25lbnQpIGZvb3Rlcj86IE1vZGFsRm9vdGVyQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKENka1BvcnRhbCwgeyBzdGF0aWM6IHRydWUgfSkgY2RrUG9ydGFsITogUG9ydGFsPENka1BvcnRhbD47XG4gIHByaXZhdGUgb3ZlcmxheVJlZiE6IE92ZXJsYXlSZWY7XG4gIHByaXZhdGUgb2xkT3ZlcmZsb3c/OiBzdHJpbmc7XG4gIGNsb3NlTG9jYXRpb24gPSBNb2RhbENsb3NlQ2xpY2tMb2NhdGlvbjtcblxuICByZWFkb25seSBkZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBAVmlld0NoaWxkKCdpbXBsaWNpdENvbnRlbnQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBpbXBsaWNpdENvbnRlbnQhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBDb250ZW50Q2hpbGQoTW9kYWxDb250ZW50RGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSkgZXhwbGljaXRDb250ZW50PzogVGVtcGxhdGVSZWY8YW55PjtcblxuICBnZXQgY29udGVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5leHBsaWNpdENvbnRlbnQgfHwgdGhpcy5pbXBsaWNpdENvbnRlbnQ7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVzY2FwZScpIG9uRXNjYXBlKCkge1xuICAgIGlmICh0aGlzLm9wZW4gJiYgdGhpcy5zaG93Q2xvc2VCdXR0b24pIHtcbiAgICAgIHRoaXMuY2xvc2VNb2RhbChNb2RhbENsb3NlQ2xpY2tMb2NhdGlvbi5Fc2NhcGUpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChNT0RBTF9DTE9TRSkgcHJpdmF0ZSBjbG9zZU1vZGFsJDogT2JzZXJ2YWJsZTxNb2RhbENsb3NlQ2xpY2tMb2NhdGlvbiB8IGJvb2xlYW4+LFxuICAgIHByaXZhdGUgZm9jdXNUcmFwOiBDb25maWd1cmFibGVGb2N1c1RyYXBGYWN0b3J5XG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNsb3NlTW9kYWwkXG4gICAgICA/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpXG4gICAgICAuc3Vic2NyaWJlKChjbG9zZUxvY2F0aW9uOiBNb2RhbENsb3NlQ2xpY2tMb2NhdGlvbiB8IGJvb2xlYW4pID0+IHRoaXMuY2xvc2VNb2RhbChjbG9zZUxvY2F0aW9uKSk7XG5cbiAgICBpZiAodGhpcy5zaXplID09PSAnZnVsbHNjcmVlbicpIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoe1xuICAgICAgICBwYW5lbENsYXNzOiB0aGlzLnNpemUsXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIGhlaWdodDogJzEwMHZoJ1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNpemUgPT09ICdkaWFsb2ctbGFyZ2UnKSB7XG4gICAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKCkudG9wKCc0dmgnKS5jZW50ZXJIb3Jpem9udGFsbHkoKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoe1xuICAgICAgICBwYW5lbENsYXNzOiB0aGlzLnNpemUsXG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICB3aWR0aDogJzkwJScsXG4gICAgICAgIGhlaWdodDogJzkwdmgnXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gc2l6ZSAnZGlhbG9nJ1xuICAgICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLnRvcCgnOHZoJykuY2VudGVySG9yaXpvbnRhbGx5KCk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcbiAgICAgICAgcGFuZWxDbGFzczogdGhpcy5zaXplLFxuICAgICAgICBtaW5XaWR0aDogdGhpcy5taW5XaWR0aCxcbiAgICAgICAgcG9zaXRpb25TdHJhdGVneSxcbiAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5ibG9jaygpXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zaXplICE9PSAnZnVsbHNjcmVlbicpIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZlxuICAgICAgICAuYmFja2Ryb3BDbGljaygpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xvc2VNb2RhbChNb2RhbENsb3NlQ2xpY2tMb2NhdGlvbi5PdXRzaWRlQ2xpY2spKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICBpZiAodGhpcy5vcGVuICYmIHRoaXMub3ZlcmxheVJlZiAmJiAhdGhpcy5vdmVybGF5UmVmLmhhc0F0dGFjaGVkKCkpIHtcbiAgICAgIHRoaXMub3Blbk1vZGFsKCk7XG4gICAgfVxuICAgIGlmICghdGhpcy5vcGVuICYmIHRoaXMub3ZlcmxheVJlZiAmJiB0aGlzLm92ZXJsYXlSZWYuaGFzQXR0YWNoZWQoKSkge1xuICAgICAgdGhpcy5jbG9zZU1vZGFsKE1vZGFsQ2xvc2VDbGlja0xvY2F0aW9uLk90aGVyKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3BlbiAmJiB0aGlzLm92ZXJsYXlSZWYgJiYgdGhpcy5vdmVybGF5UmVmLmhhc0F0dGFjaGVkKCkgJiYgdGhpcy5pc0ZvY3VzVHJhcCkge1xuICAgICAgdGhpcy50cmFwRm9jdXNJbk1vZGFsKHRoaXMub3ZlcmxheVJlZi5ob3N0RWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLm9wZW4pIHtcbiAgICAgIHRpbWVyKDApXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMub3Blbk1vZGFsKCkpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5Nb2RhbCgpIHtcbiAgICB0aGlzLm9sZE92ZXJmbG93ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93WTtcbiAgICBpZiAodGhpcy5zaXplID09PSAnZnVsbHNjcmVlbicpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCAnb3ZlcmZsb3dZJywgJ2hpZGRlbicpO1xuICAgIH1cblxuICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2godGhpcy5jZGtQb3J0YWwpO1xuICAgIHRoaXMudHJhcEZvY3VzSW5Nb2RhbCh0aGlzLm92ZXJsYXlSZWYuaG9zdEVsZW1lbnQpO1xuICB9XG5cbiAgZW1pdEJhY2soKSB7XG4gICAgdGhpcy5iYWNrLmVtaXQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KCk7XG5cbiAgICBpZiAodGhpcy5zaXplID09PSAnZnVsbHNjcmVlbicpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCAnb3ZlcmZsb3dZJywgdGhpcy5vbGRPdmVyZmxvdyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBjbG9zZU1vZGFsKGNsb3NlTG9jYXRpb246IE1vZGFsQ2xvc2VDbGlja0xvY2F0aW9uIHwgYm9vbGVhbikge1xuICAgIGlmICghdGhpcy5jYW5Nb2RhbEJlQ2xvc2VkIHx8IChhd2FpdCB0aGlzLmNhbk1vZGFsQmVDbG9zZWQoY2xvc2VMb2NhdGlvbikpKSB7XG4gICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5kZXRhY2goKTtcblxuICAgICAgaWYgKHRoaXMuc2l6ZSA9PT0gJ2Z1bGxzY3JlZW4nKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCAnb3ZlcmZsb3dZJywgdGhpcy5vbGRPdmVyZmxvdyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2xvc2UuZW1pdCh0eXBlb2YgY2xvc2VMb2NhdGlvbiA9PT0gJ2Jvb2xlYW4nID8gTW9kYWxDbG9zZUNsaWNrTG9jYXRpb24uT3RoZXIgOiBjbG9zZUxvY2F0aW9uKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRyYXBGb2N1c0luTW9kYWwoaG9zdEVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgdGhpcy5mb2N1c1RyYXAuY3JlYXRlKGhvc3RFbGVtZW50KTtcbiAgfVxufVxuIiwiPG5nLXRlbXBsYXRlIGNka1BvcnRhbD5cbiAgPGRpdlxuICAgICpuZ0lmPVwib3BlblwiXG4gICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgY2xhc3M9XCJseG1vZGFsXCJcbiAgICBbY2xhc3MubHhtb2RhbC0tZnVsbHNjcmVlbl09XCJzaXplID09PSAnZnVsbHNjcmVlbidcIlxuICAgIFtjbGFzcy5seG1vZGFsLS1kaWFsb2ddPVwic2l6ZSA9PT0gJ2RpYWxvZydcIlxuICAgIFtjbGFzcy5seG1vZGFsLS1kaWFsb2ctbGFyZ2VdPVwic2l6ZSA9PT0gJ2RpYWxvZy1sYXJnZSdcIlxuICAgIFtjbGFzcy5seG1vZGFsLS13aXRoRm9vdGVyXT1cIiEhZm9vdGVyXCJcbiAgICBbY2xhc3MubHhtb2RhbC0tdmVydGljYWxTY3JvbGxdPVwidmVydGljYWxTY3JvbGxcIlxuICAgIEBtb2RhbFxuICA+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJzaXplID09PSAnZnVsbHNjcmVlbicgJiYgc2hvd0JhY2tCdXR0b25cIlxuICAgICAgKGNsaWNrKT1cImVtaXRCYWNrKClcIlxuICAgICAgKGtleXVwLmVudGVyKT1cImVtaXRCYWNrKClcIlxuICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJmYWwgZmEtbG9uZy1hcnJvdy1sZWZ0XCJcbiAgICA+PC9kaXY+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCJzaG93Q2xvc2VCdXR0b25cIlxuICAgICAgKGNsaWNrKT1cImNsb3NlTW9kYWwoY2xvc2VMb2NhdGlvbi5DbG9zZUJ1dHRvbilcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJOQU1FICsgJy5jbG9zZScgfCB0cmFuc2xhdGVcIlxuICAgICAgY2xhc3M9XCJmYWwgZmEtdGltZXMgY2xvc2VCdXR0b25cIlxuICAgID48L2J1dHRvbj5cbiAgICA8bmctY29udGVudCAqbmdJZj1cImhlYWRlclwiIHNlbGVjdD1cImx4LW1vZGFsLWhlYWRlclwiIC8+XG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsQ29udGVudENvbnRhaW5lclwiIFtjbGFzcy5seFRoaW5TY3JvbGxiYXJdPVwidmVydGljYWxTY3JvbGxcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50XCIgLz5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGVudCAqbmdJZj1cImZvb3RlclwiIHNlbGVjdD1cImx4LW1vZGFsLWZvb3RlclwiIC8+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjaW1wbGljaXRDb250ZW50PlxuICA8bmctY29udGVudCAvPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
264
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvbW9kYWwtdWkvY29tcG9uZW50cy9tb2RhbC9tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9tb2RhbC11aS9jb21wb25lbnRzL21vZGFsL21vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUcxRSxPQUFPLEVBQUUsU0FBUyxFQUFVLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQWMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDakYsT0FBTyxFQUFFLFdBQVcsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxvQkFBb0Is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O2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVJLEtBQUs7c0JBQWQsTUFBTTtnQkFFRyxJQUFJO3NCQUFiLE1BQU07Z0JBRzZCLE1BQU07c0JBQXpDLFlBQVk7dUJBQUMsb0JBQW9CO2dCQUVFLE1BQU07c0JBQXpDLFlBQVk7dUJBQUMsb0JBQW9CO2dCQUVNLFNBQVM7c0JBQWhELFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFVVSxlQUFlO3NCQUE5RCxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFHNEIsZUFBZTtzQkFBeEYsWUFBWTt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFPL0IsUUFBUTtzQkFBaEQsWUFBWTt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQ29uZmlndXJhYmxlRm9jdXNUcmFwRmFjdG9yeSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDZGtQb3J0YWwsIFBvcnRhbCwgUG9ydGFsTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTW9kYWxDb250ZW50RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9tb2RhbC1jb250ZW50LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBNT0RBTF9DTE9TRSwgTW9kYWxDbG9zZUNsaWNrTG9jYXRpb24gfSBmcm9tICcuLi8uLi9tb2RhbC5jb25zdGFudHMnO1xuaW1wb3J0IHsgTW9kYWxGb290ZXJDb21wb25lbnQgfSBmcm9tICcuLi9tb2RhbC1mb290ZXIvbW9kYWwtZm9vdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb2RhbEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL21vZGFsLWhlYWRlci9tb2RhbC1oZWFkZXIuY29tcG9uZW50JztcblxuLyoqXG4gKiBUaGlzIGRvY3VtZW50YXRpb24gcHJvdmlkZXMgZGV0YWlscyBvbiB0aGUgdXNhZ2UgYW5kIGNvbmZpZ3VyYXRpb24gb2YgdGhlIE1vZGFsLlxuICpcbiAqICMjIFVzYWdlXG4gKlxuICogMS4gSW1wb3J0IGBMeE1vZGFsTW9kdWxlYCBhbmQgYEx4Q29yZVVpTW9kdWxlYCBtb2R1bGVzIGZyb20gYEBsZWFuaXgvY29tcG9uZW50c2AgaW4geW91ciBtb2R1bGUgd2hlcmUgeW91IHdhbnQgdG8gdXNlIHRoZSBjb21wb25lbnQuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IEx4TW9kYWxNb2R1bGUsIEx4Q29yZVVpTW9kdWxlIH0gZnJvbSAnQGxlYW5peC9jb21wb25lbnRzJztcbiAqIGBgYFxuICpcbiAqIDIuIFVzZSB0aGUgKipseC1tb2RhbCoqIGNvbXBvbmVudCBpbiB5b3VyIHRlbXBsYXRlIHdpdGggdGhlIHBhcmFtZXRlcnMgZGVzY3JpYmVkIGJlbG93LlxuICpcbiAqIC0gKipgb3BlbmAqKjogV2hldGhlciB0aGUgbW9kYWwgaXMgb3BlbiBvciBjbG9zZWQuXG4gKiAtICoqYHNpemVgKio6ICdkaWFsb2cnIHwgJ2RpYWxvZy1sYXJnZScuXG4gKiAtICoqYHZlcnRpY2FsU2Nyb2xsYCoqOiBXaGV0aGVyIHRoZSBtb2RhbCBpcyBzY3JvbGxhYmxlIG9yIG5vdC5cbiAqIC0gKipgc2hvd0hlYWRlcmAqKjogV2hldGhlciB0aGUgbW9kYWwgaGFzIGEgaGVhZGVyIG9yIG5vdC5cbiAqIC0gKipgc2hvd0Zvb3RlcmAqKjogV2hldGhlciB0aGUgbW9kYWwgaGFzIGEgZm9vdGVyIG9yIG5vdC5cbiAqIC0gKipgc2hvd0Nsb3NlQnV0dG9uYCoqOiBXaGV0aGVyIHRvIHNob3cgdGhlIGNsb3NlIGJ1dHRvbi5cbiAqIC0gKipgc2hvd0JhY2tCdXR0b25gKio6IFdoZXRoZXIgdG8gc2hvdyB0aGUgYmFjayBidXR0b24uXG4gKlxuICogMy4gVXNlIG9wdGlvbmFsICoqbHgtbW9kYWwtaGVhZGVyKiogY29tcG9uZW50IGluIHlvdXIgdGVtcGxhdGUgd2l0aCB0aGUgcGFyYW1ldGVycyBkZXNjcmliZWQgYmVsb3cuXG4gKlxuICogLSAqKmB0aXRsZWAqKjogVGl0bGUgb2YgdGhlIG1vZGFsLlxuICogLSAqKmBzdWJ0aXRsZWAqKjogU3VidGl0bGUgb2YgdGhlIG1vZGFsLlxuICogLSAqKmBib3R0b21Cb3JkZXJgKio6IFdoZXRoZXIgdG8gc2hvdyBhIGJvdHRvbSBib3JkZXIuXG4gKlxuICogNC4gVXNlIG9wdGlvbmFsICoqbHgtbW9kYWwtZm9vdGVyKiogY29tcG9uZW50IGluIHlvdXIgdGVtcGxhdGUgd2l0aCB0aGUgcGFyYW1ldGVycyBkZXNjcmliZWQgYmVsb3cuXG4gKlxuICogLSAqKmBib3JkZXJgKio6IFdoZXRoZXIgdG8gc2hvdyB0aGUgZm9vdGVyIGF0IHRoZSBib3R0b20gb2YgdGhlIG1vZGFsLlxuICpcbiAqICoqR0xPQkFMIFBST1ZJREVSUyoqIHJlcXVpcmVkIGZvciB0aGlzIGNvbXBvbmVudDpcbiAqIC0gYHByb3ZpZGVBbmltYXRpb25zKClgXG4gKlxuICogKipBVFRFTlRJT04gLSBTQ1JPTExBQkxFIERJQUxPRyoqOlxuICogVGhlIDxseC1tb2RhbD4gY29tcG9uZW50IHdoZW4gdXNlZCBhcyBcImRpYWxvZ1wiIGlzIG5vdCBkZXNpZ25lZCB0byB3b3JrIHdpdGggYVxuICogc2Nyb2xsYWJsZSBib2R5ICh2aWEgYG92ZXJmbG93OiBhdXRvIHwgc2Nyb2xsYCkgaW4gY29tYmluYXRpb24gd2l0aCBkcm9wZG93bnMuXG4gKiBUaGUgb3ZlcmZsb3cgb24gdGhlIGJvZHkgd2lsbCBhbHNvIGNsaXAgdGhlIGRyb3Bkb3ducywgd2hpY2ggaXMgZXhwZWN0ZWQuXG4gKlxuICogUmVhc29uaW5nOlxuICogVGhlIGNvbnRlbnRzIHdpdGhpbiB0aGUgZGlhbG9nIHNob3VsZCBiZSBqdXN0IGEgZmV3IGVsZW1lbnRzIHdoaWNoIGZpdCBhbmRcbiAqIGp1c3RpZnkgdGhlIHVzYWdlIG9mIGEgZGlhbG9nLiBJZiB0aGUgY29udGVudCBpcyBsYXJnZXIgdGhhbiB0aGUgZGlhbG9nLCBhbmQgdGh1c1xuICogcmVxdWlyZXMgc2Nyb2xsaW5nLCB3ZSBzaG91bGQgZGlzY3VzcyB3aGV0aGVyIHRvIHB1dCBpdCBpbnRvIGEgZGlhbG9nIGF0IGFsbFxuICogYW5kIHJhdGhlciB0aGluayBhYm91dCBwdXR0aW5nIHRoZSBjb250ZW50IG9uIGEgc2VwYXJhdGUgcm91dGUgb3JcbiAqIHVzaW5nIHRoZSBmdWxsc2NyZWVuIHZlcnNpb24gb2YgdGhlIG1vZGFsLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdseC1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ21vZGFsJywgW1xuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW3N0eWxlKHsgb3BhY2l0eTogMCB9KSwgYW5pbWF0ZSgnMC4xNXMnLCBzdHlsZSh7IG9wYWNpdHk6IDEgfSkpXSksXG4gICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBhbmltYXRlKCcwLjE1cycsIHN0eWxlKHsgb3BhY2l0eTogMCB9KSkpXG4gICAgXSlcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1BvcnRhbE1vZHVsZSwgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCwgVHJhbnNsYXRlTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICAvKiogQGludGVybmFsICovXG4gIHJlYWRvbmx5IE5BTUUgPSAnTW9kYWxDb21wb25lbnQnO1xuICAvKiogV2hldGhlciB0aGUgbW9kYWwgaXMgb3BlbiBvciBjbG9zZWQuICovXG4gIEBJbnB1dCgpIG9wZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgY2xvc2UgYnV0dG9uLiAqL1xuICBASW5wdXQoKSBzaG93Q2xvc2VCdXR0b24gPSB0cnVlO1xuICAvKiogV2hldGhlciB0byBzaG93IHRoZSBiYWNrIGJ1dHRvbi4gKi9cbiAgQElucHV0KCkgc2hvd0JhY2tCdXR0b24gPSBmYWxzZTtcbiAgLypcbiAgICogSWYgdHJ1ZSwgdGhlbiB0aGUgY29udGVudCBhcmVhIHNjcm9sbHMgdmVydGljYWxseSBpbnN0ZWFkIG9mIGV4cGFuZGluZyBpdHMgaGVpZ2h0LlxuICAgKiBUaGlzIGNhbiBiZSBhIHByb2JsZW0gaWYgdGhlIGNvbnRlbnQgaGFzIGRyb3Bkb3ducyBvciBkYXRlIGlucHV0cywgYnV0IGNhbiBiZSBnb29kIGlmIHRoZSBjb250ZW50IGhhcyBhIGh1Z2UgYW1vdW50IG9mIHRleHQuXG4gICAqL1xuICBASW5wdXQoKSB2ZXJ0aWNhbFNjcm9sbCA9IGZhbHNlO1xuICAvKiogVGhlIHNpemUgb2YgdGhlIG1vZGFsLiAqL1xuICBASW5wdXQoKSBzaXplOiAnZnVsbHNjcmVlbicgfCAnZGlhbG9nLWxhcmdlJyB8ICdkaWFsb2cnID0gJ2Z1bGxzY3JlZW4nO1xuICAvKipcbiAgICogTWluaW11bSB3aWR0aCBvZiB0aGUgbW9kYWwuXG4gICAqXG4gICAqIF9OQjogU29tZSBtb2RhbCBpbXBsZW1lbnRhdGlvbnMgcmVseSBvbiB0aGlzIG1pbldpZHRoIGJlaW5nIDYwMHB4X1xuICAgKi9cbiAgQElucHV0KCkgbWluV2lkdGg6IHN0cmluZyA9ICc2MDBweCc7XG4gIC8qKiBXaGV0aGVyIHRoZSBtb2RhbCBpcyBhIGZvY3VzIHRyYXAuICovXG4gIEBJbnB1dCgpIGlzRm9jdXNUcmFwOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKiBGdW5jdGlvbiB0byBjaGVjayBpZiB0aGUgbW9kYWwgY2FuIGJlIGNsb3NlZC4gKi9cbiAgQElucHV0KCkgY2FuTW9kYWxCZUNsb3NlZD86IChjbG9zZUxvY2F0aW9uOiBNb2RhbENsb3NlQ2xpY2tMb2NhdGlvbiB8IGJvb2xlYW4pID0+IFByb21pc2U8Ym9vbGVhbj47XG4gIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIG1vZGFsIGlzIGNsb3NlZC4gKi9cbiAgQE91dHB1dCgpIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjxNb2RhbENsb3NlQ2xpY2tMb2NhdGlvbj4oKTtcbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgYmFjayBidXR0b24gaXMgY2xpY2tlZC4gKi9cbiAgQE91dHB1dCgpIGJhY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBAQ29udGVudENoaWxkKE1vZGFsSGVhZGVyQ29tcG9uZW50KSBoZWFkZXI/OiBNb2RhbEhlYWRlckNvbXBvbmVudDtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBAQ29udGVudENoaWxkKE1vZGFsRm9vdGVyQ29tcG9uZW50KSBmb290ZXI/OiBNb2RhbEZvb3RlckNvbXBvbmVudDtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBAVmlld0NoaWxkKENka1BvcnRhbCwgeyBzdGF0aWM6IHRydWUgfSkgY2RrUG9ydGFsITogUG9ydGFsPENka1BvcnRhbD47XG4gIHByaXZhdGUgb3ZlcmxheVJlZiE6IE92ZXJsYXlSZWY7XG4gIHByaXZhdGUgb2xkT3ZlcmZsb3c/OiBzdHJpbmc7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgY2xvc2VMb2NhdGlvbiA9IE1vZGFsQ2xvc2VDbGlja0xvY2F0aW9uO1xuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcmVhZG9ubHkgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBAVmlld0NoaWxkKCdpbXBsaWNpdENvbnRlbnQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBpbXBsaWNpdENvbnRlbnQhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgQENvbnRlbnRDaGlsZChNb2RhbENvbnRlbnREaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KSBleHBsaWNpdENvbnRlbnQ/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIGdldCBjb250ZW50KCkge1xuICAgIHJldHVybiB0aGlzLmV4cGxpY2l0Q29udGVudCB8fCB0aGlzLmltcGxpY2l0Q29udGVudDtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnKSBvbkVzY2FwZSgpIHtcbiAgICBpZiAodGhpcy5vcGVuICYmIHRoaXMuc2hvd0Nsb3NlQnV0dG9uKSB7XG4gICAgICB0aGlzLmNsb3NlTW9kYWwoTW9kYWxDbG9zZUNsaWNrTG9jYXRpb24uRXNjYXBlKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTU9EQUxfQ0xPU0UpIHByaXZhdGUgY2xvc2VNb2RhbCQ6IE9ic2VydmFibGU8TW9kYWxDbG9zZUNsaWNrTG9jYXRpb24gfCBib29sZWFuPixcbiAgICBwcml2YXRlIGZvY3VzVHJhcDogQ29uZmlndXJhYmxlRm9jdXNUcmFwRmFjdG9yeVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jbG9zZU1vZGFsJFxuICAgICAgPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKVxuICAgICAgLnN1YnNjcmliZSgoY2xvc2VMb2NhdGlvbjogTW9kYWxDbG9zZUNsaWNrTG9jYXRpb24gfCBib29sZWFuKSA9PiB0aGlzLmNsb3NlTW9kYWwoY2xvc2VMb2NhdGlvbikpO1xuXG4gICAgaWYgKHRoaXMuc2l6ZSA9PT0gJ2Z1bGxzY3JlZW4nKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcbiAgICAgICAgcGFuZWxDbGFzczogdGhpcy5zaXplLFxuICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICBoZWlnaHQ6ICcxMDB2aCdcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zaXplID09PSAnZGlhbG9nLWxhcmdlJykge1xuICAgICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLnRvcCgnNHZoJykuY2VudGVySG9yaXpvbnRhbGx5KCk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcbiAgICAgICAgcGFuZWxDbGFzczogdGhpcy5zaXplLFxuICAgICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgd2lkdGg6ICc5MCUnLFxuICAgICAgICBoZWlnaHQ6ICc5MHZoJ1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHNpemUgJ2RpYWxvZydcbiAgICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXkucG9zaXRpb24oKS5nbG9iYWwoKS50b3AoJzh2aCcpLmNlbnRlckhvcml6b250YWxseSgpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XG4gICAgICAgIHBhbmVsQ2xhc3M6IHRoaXMuc2l6ZSxcbiAgICAgICAgbWluV2lkdGg6IHRoaXMubWluV2lkdGgsXG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuYmxvY2soKVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2l6ZSAhPT0gJ2Z1bGxzY3JlZW4nKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWZcbiAgICAgICAgLmJhY2tkcm9wQ2xpY2soKVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsb3NlTW9kYWwoTW9kYWxDbG9zZUNsaWNrTG9jYXRpb24uT3V0c2lkZUNsaWNrKSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgaWYgKHRoaXMub3BlbiAmJiB0aGlzLm92ZXJsYXlSZWYgJiYgIXRoaXMub3ZlcmxheVJlZi5oYXNBdHRhY2hlZCgpKSB7XG4gICAgICB0aGlzLm9wZW5Nb2RhbCgpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMub3BlbiAmJiB0aGlzLm92ZXJsYXlSZWYgJiYgdGhpcy5vdmVybGF5UmVmLmhhc0F0dGFjaGVkKCkpIHtcbiAgICAgIHRoaXMuY2xvc2VNb2RhbChNb2RhbENsb3NlQ2xpY2tMb2NhdGlvbi5PdGhlcik7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wZW4gJiYgdGhpcy5vdmVybGF5UmVmICYmIHRoaXMub3ZlcmxheVJlZi5oYXNBdHRhY2hlZCgpICYmIHRoaXMuaXNGb2N1c1RyYXApIHtcbiAgICAgIHRoaXMudHJhcEZvY3VzSW5Nb2RhbCh0aGlzLm92ZXJsYXlSZWYuaG9zdEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5vcGVuKSB7XG4gICAgICB0aW1lcigwKVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9wZW5Nb2RhbCgpKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIG9wZW5Nb2RhbCgpIHtcbiAgICB0aGlzLm9sZE92ZXJmbG93ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93WTtcbiAgICBpZiAodGhpcy5zaXplID09PSAnZnVsbHNjcmVlbicpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCAnb3ZlcmZsb3dZJywgJ2hpZGRlbicpO1xuICAgIH1cblxuICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2godGhpcy5jZGtQb3J0YWwpO1xuICAgIHRoaXMudHJhcEZvY3VzSW5Nb2RhbCh0aGlzLm92ZXJsYXlSZWYuaG9zdEVsZW1lbnQpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBlbWl0QmFjaygpIHtcbiAgICB0aGlzLmJhY2suZW1pdCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcblxuICAgIGlmICh0aGlzLnNpemUgPT09ICdmdWxsc2NyZWVuJykge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsICdvdmVyZmxvd1knLCB0aGlzLm9sZE92ZXJmbG93KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgYXN5bmMgY2xvc2VNb2RhbChjbG9zZUxvY2F0aW9uOiBNb2RhbENsb3NlQ2xpY2tMb2NhdGlvbiB8IGJvb2xlYW4pIHtcbiAgICBpZiAoIXRoaXMuY2FuTW9kYWxCZUNsb3NlZCB8fCAoYXdhaXQgdGhpcy5jYW5Nb2RhbEJlQ2xvc2VkKGNsb3NlTG9jYXRpb24pKSkge1xuICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuZGV0YWNoKCk7XG5cbiAgICAgIGlmICh0aGlzLnNpemUgPT09ICdmdWxsc2NyZWVuJykge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgJ292ZXJmbG93WScsIHRoaXMub2xkT3ZlcmZsb3cpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNsb3NlLmVtaXQodHlwZW9mIGNsb3NlTG9jYXRpb24gPT09ICdib29sZWFuJyA/IE1vZGFsQ2xvc2VDbGlja0xvY2F0aW9uLk90aGVyIDogY2xvc2VMb2NhdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB0cmFwRm9jdXNJbk1vZGFsKGhvc3RFbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgIHRoaXMuZm9jdXNUcmFwLmNyZWF0ZShob3N0RWxlbWVudCk7XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSBjZGtQb3J0YWw+XG4gIDxkaXZcbiAgICAqbmdJZj1cIm9wZW5cIlxuICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgIGNsYXNzPVwibHhtb2RhbFwiXG4gICAgW2NsYXNzLmx4bW9kYWwtLWZ1bGxzY3JlZW5dPVwic2l6ZSA9PT0gJ2Z1bGxzY3JlZW4nXCJcbiAgICBbY2xhc3MubHhtb2RhbC0tZGlhbG9nXT1cInNpemUgPT09ICdkaWFsb2cnXCJcbiAgICBbY2xhc3MubHhtb2RhbC0tZGlhbG9nLWxhcmdlXT1cInNpemUgPT09ICdkaWFsb2ctbGFyZ2UnXCJcbiAgICBbY2xhc3MubHhtb2RhbC0td2l0aEZvb3Rlcl09XCIhIWZvb3RlclwiXG4gICAgW2NsYXNzLmx4bW9kYWwtLXZlcnRpY2FsU2Nyb2xsXT1cInZlcnRpY2FsU2Nyb2xsXCJcbiAgICBAbW9kYWxcbiAgPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwic2l6ZSA9PT0gJ2Z1bGxzY3JlZW4nICYmIHNob3dCYWNrQnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJlbWl0QmFjaygpXCJcbiAgICAgIChrZXl1cC5lbnRlcik9XCJlbWl0QmFjaygpXCJcbiAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiZmFsIGZhLWxvbmctYXJyb3ctbGVmdFwiXG4gICAgPjwvZGl2PlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwic2hvd0Nsb3NlQnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJjbG9zZU1vZGFsKGNsb3NlTG9jYXRpb24uQ2xvc2VCdXR0b24pXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiTkFNRSArICcuY2xvc2UnIHwgdHJhbnNsYXRlXCJcbiAgICAgIGNsYXNzPVwiZmFsIGZhLXRpbWVzIGNsb3NlQnV0dG9uXCJcbiAgICA+PC9idXR0b24+XG4gICAgPG5nLWNvbnRlbnQgKm5nSWY9XCJoZWFkZXJcIiBzZWxlY3Q9XCJseC1tb2RhbC1oZWFkZXJcIiAvPlxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbENvbnRlbnRDb250YWluZXJcIiBbY2xhc3MubHhUaGluU2Nyb2xsYmFyXT1cInZlcnRpY2FsU2Nyb2xsXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFwiIC8+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRlbnQgKm5nSWY9XCJmb290ZXJcIiBzZWxlY3Q9XCJseC1tb2RhbC1mb290ZXJcIiAvPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2ltcGxpY2l0Q29udGVudD5cbiAgPG5nLWNvbnRlbnQgLz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
@@ -5,7 +5,15 @@ import { PopoverContentDirective } from '../../directives/popover-content.direct
|
|
5
5
|
import * as i0 from "@angular/core";
|
6
6
|
import * as i1 from "@ncstate/sat-popover";
|
7
7
|
/**
|
8
|
-
*
|
8
|
+
* The Popover component is based on the [ncstate-sat/popover](https://github.com/ncstate-sat/popover) library.
|
9
|
+
*
|
10
|
+
* ## Usage
|
11
|
+
*
|
12
|
+
* 1. Import `LxPopoverUiModule` and `LxCoreUiModule` module from `@leanix/components` in your module where you want to use the component.
|
13
|
+
*
|
14
|
+
* ```ts
|
15
|
+
* import { LxPopoverUiModule, LxCoreUiModule } from '@leanix/components';
|
16
|
+
* ```
|
9
17
|
*
|
10
18
|
* This popover encapsulates this open source library: https://github.com/ncstate-sat/popover,
|
11
19
|
* make sure to also check out the docs over there.
|
@@ -16,7 +24,8 @@ import * as i1 from "@ncstate/sat-popover";
|
|
16
24
|
*
|
17
25
|
* For use case 1. you would use the lxPopoverHover directive, which exports as hoverAnchor.
|
18
26
|
*
|
19
|
-
* Example:
|
27
|
+
* ### Example:
|
28
|
+
* ```html
|
20
29
|
* <div lxPopoverHover
|
21
30
|
* hoverAnchor
|
22
31
|
* satPopoverAnchor
|
@@ -26,13 +35,15 @@ import * as i1 from "@ncstate/sat-popover";
|
|
26
35
|
* verticalAlign="center">
|
27
36
|
* <p>Popover content</p>
|
28
37
|
* </lx-popover>
|
38
|
+
* ```
|
29
39
|
*
|
30
40
|
* For use case 2. you would use the lxPopoverClick directive, which exports as clickAnchor.
|
31
41
|
* Note: Since the only component where we use the lxPopoverClick directive (ReportComponent)
|
32
42
|
* needs to fetch some data before opening it, we do not register a click EventListener in this directive,
|
33
43
|
* but require the developer to implement that in the component, where the popover is used.
|
34
44
|
*
|
35
|
-
* Example:
|
45
|
+
* ### Example:
|
46
|
+
* ```html
|
36
47
|
* <div lxPopoverClick
|
37
48
|
* clickAnchor
|
38
49
|
* satPopoverAnchor
|
@@ -44,21 +55,28 @@ import * as i1 from "@ncstate/sat-popover";
|
|
44
55
|
* #popover>
|
45
56
|
* <p>Popover content</p>
|
46
57
|
* </lx-popover>
|
58
|
+
* ```
|
47
59
|
*
|
48
60
|
* If this component is used with angularCompilerOptions strictTemplates=true,
|
49
61
|
* satPopoverAnchor must be set to the reference to the SatPopover inside lx-popover.
|
50
62
|
*
|
51
|
-
* Example:
|
52
|
-
*
|
63
|
+
* ### Example:
|
64
|
+
* ```html
|
65
|
+
* <div [satPopoverAnchor]="popover.satPopover"></div>
|
53
66
|
* <lx-popover #popover>
|
54
67
|
* <p>Popover content</p>
|
55
68
|
* </lx-popover>
|
69
|
+
* ```
|
56
70
|
*/
|
57
71
|
export class PopoverComponent {
|
58
72
|
constructor() {
|
73
|
+
/** Whether to apply margins. */
|
59
74
|
this.noMargin = false;
|
75
|
+
/** Whether to allow the popover to overflow the viewport. */
|
60
76
|
this.allowOverflow = false;
|
77
|
+
/** Whether to focus the first focusable element in the popover when it is opened. */
|
61
78
|
this.autoFocus = false;
|
79
|
+
/** Whether to restore focus to the previously-focused element when the popover is closed. */
|
62
80
|
this.restoreFocus = true;
|
63
81
|
/**
|
64
82
|
* If you have a popover, that should usually be displayed above or below its anchor,
|
@@ -69,7 +87,9 @@ export class PopoverComponent {
|
|
69
87
|
* position of the popover after opening.
|
70
88
|
*/
|
71
89
|
this.adaptMarginsForViewportAlignChange = false;
|
90
|
+
/** Event emitted when the popover is opened. */
|
72
91
|
this.opened = new EventEmitter();
|
92
|
+
/** Event emitted when the popover is closed. */
|
73
93
|
this.closed = new EventEmitter();
|
74
94
|
this._isOpen = false;
|
75
95
|
}
|
@@ -84,21 +104,26 @@ export class PopoverComponent {
|
|
84
104
|
this.marginClasses = this.getDefaultMarginClasses(this.horizontalAlign, this.verticalAlign);
|
85
105
|
}
|
86
106
|
}
|
107
|
+
/** @internal */
|
87
108
|
open() {
|
88
109
|
this.satPopover.open();
|
89
110
|
}
|
111
|
+
/** @internal */
|
90
112
|
close() {
|
91
113
|
this.satPopover.close();
|
92
114
|
}
|
115
|
+
/** @internal */
|
93
116
|
onOpen() {
|
94
117
|
this._isOpen = true;
|
95
118
|
this.opened.emit();
|
96
119
|
}
|
120
|
+
/** @internal */
|
97
121
|
onAfterOpen() {
|
98
122
|
if (this.adaptMarginsForViewportAlignChange) {
|
99
123
|
this.marginClasses = this.getMarginClassesForClassList(this.satPopover._classList);
|
100
124
|
}
|
101
125
|
}
|
126
|
+
/** @internal */
|
102
127
|
onClose() {
|
103
128
|
this._isOpen = false;
|
104
129
|
this.closed.emit();
|
@@ -202,4 +227,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
202
227
|
type: ContentChild,
|
203
228
|
args: [PopoverContentDirective, { read: TemplateRef, static: true }]
|
204
229
|
}] } });
|
205
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9wb3BvdmVyLXVpL2NvbXBvbmVudHMvcG9wb3Zlci9wb3BvdmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL3BvcG92ZXItdWkvY29tcG9uZW50cy9wb3BvdmVyL3BvcG92ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBaUIsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2SSxPQUFPLEVBQUUsbUJBQW1CLEVBQTZCLGdCQUFnQixFQUEyQixNQUFNLHNCQUFzQixDQUFDO0FBQ2pJLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOzs7QUFHckY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpREc7QUFRSCxNQUFNLE9BQU8sZ0JBQWdCO0lBUDdCO1FBV1csYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBRTdCOzs7Ozs7O1dBT0c7UUFDTSx1Q0FBa0MsR0FBRyxLQUFLLENBQUM7UUFFMUMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDbEMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFnQnBDLFlBQU8sR0FBRyxLQUFL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QWdCLDBnQkFBRSxPQUFPLG9GQUFFLElBQUksNkZBQUUsZ0JBQWdCOzsyRkFFaEQsZ0JBQWdCO2tCQVA1QixTQUFTOytCQUNFLFlBQVksY0FHVixJQUFJLFdBQ1AsQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixDQUFDOzhCQUduRCxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBVUcsa0NBQWtDO3NCQUExQyxLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBRTJDLFVBQVU7c0JBQTNELFNBQVM7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNBLGVBQWU7c0JBQTlELFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUU4QixlQUFlO3NCQUExRixZQUFZO3VCQUFDLHVCQUF1QixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcywgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNhdFBvcG92ZXJDb21wb25lbnQsIFNhdFBvcG92ZXJIb3Jpem9udGFsQWxpZ24sIFNhdFBvcG92ZXJNb2R1bGUsIFNhdFBvcG92ZXJWZXJ0aWNhbEFsaWduIH0gZnJvbSAnQG5jc3RhdGUvc2F0LXBvcG92ZXInO1xuaW1wb3J0IHsgUG9wb3ZlckNvbnRlbnREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3BvcG92ZXItY29udGVudC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUG9wb3ZlclRyaWdnZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3BvcG92ZXItaG92ZXIuZGlyZWN0aXZlJztcblxuLyoqXG4gKiBIT1cgVE8gVVNFXG4gKlxuICogVGhpcyBwb3BvdmVyIGVuY2Fwc3VsYXRlcyB0aGlzIG9wZW4gc291cmNlIGxpYnJhcnk6IGh0dHBzOi8vZ2l0aHViLmNvbS9uY3N0YXRlLXNhdC9wb3BvdmVyLFxuICogbWFrZSBzdXJlIHRvIGFsc28gY2hlY2sgb3V0IHRoZSBkb2NzIG92ZXIgdGhlcmUuXG4gKlxuICogQXMgb2YgdG9kYXkgdGhleSBhcmUgdHdvIHRyaWdnZXIgc3RyYXRlZ2llcyB0byBkaXNwbGF5IGEgcG9wb3Zlci5cbiAqIDEuIFNob3cgb24gaG92ZXJpbmcgdGhlIGFuY2hvciBhbmQgd2hpbGUgaG92ZXJpbmcgdGhlIHBvcG92ZXIgYm9keS5cbiAqIDIuIFNob3cgb24gY2xpY2sgYW5kIHdoaWxlIGhvdmVyaW5nIHRoZSBwb3BvdmVyIGJvZHkuXG4gKlxuICogRm9yIHVzZSBjYXNlIDEuIHlvdSB3b3VsZCB1c2UgdGhlIGx4UG9wb3ZlckhvdmVyIGRpcmVjdGl2ZSwgd2hpY2ggZXhwb3J0cyBhcyBob3ZlckFuY2hvci5cbiAqXG4gKiBFeGFtcGxlOlxuICogPGRpdiBseFBvcG92ZXJIb3ZlclxuICogICAgICBob3ZlckFuY2hvclxuICogICAgICBzYXRQb3BvdmVyQW5jaG9yXG4gKiAgICAgICNhbmNob3I9XCJob3ZlckFuY2hvclwiPjwvZGl2PlxuICogPGx4LXBvcG92ZXIgW3RyaWdnZXJdPVwiYW5jaG9yXCJcbiAqICAgICAgICAgICAgIGhvcml6b250YWxBbGlnbj1cImFmdGVyXCJcbiAqICAgICAgICAgICAgIHZlcnRpY2FsQWxpZ249XCJjZW50ZXJcIj5cbiAqICAgIDxwPlBvcG92ZXIgY29udGVudDwvcD5cbiAqIDwvbHgtcG9wb3Zlcj5cbiAqXG4gKiBGb3IgdXNlIGNhc2UgMi4geW91IHdvdWxkIHVzZSB0aGUgbHhQb3BvdmVyQ2xpY2sgZGlyZWN0aXZlLCB3aGljaCBleHBvcnRzIGFzIGNsaWNrQW5jaG9yLlxuICogTm90ZTogU2luY2UgdGhlIG9ubHkgY29tcG9uZW50IHdoZXJlIHdlIHVzZSB0aGUgbHhQb3BvdmVyQ2xpY2sgZGlyZWN0aXZlIChSZXBvcnRDb21wb25lbnQpXG4gKiBuZWVkcyB0byBmZXRjaCBzb21lIGRhdGEgYmVmb3JlIG9wZW5pbmcgaXQsIHdlIGRvIG5vdCByZWdpc3RlciBhIGNsaWNrIEV2ZW50TGlzdGVuZXIgaW4gdGhpcyBkaXJlY3RpdmUsXG4gKiBidXQgcmVxdWlyZSB0aGUgZGV2ZWxvcGVyIHRvIGltcGxlbWVudCB0aGF0IGluIHRoZSBjb21wb25lbnQsIHdoZXJlIHRoZSBwb3BvdmVyIGlzIHVzZWQuXG4gKlxuICogRXhhbXBsZTpcbiAqIDxkaXYgbHhQb3BvdmVyQ2xpY2tcbiAqICAgICAgY2xpY2tBbmNob3JcbiAqICAgICAgc2F0UG9wb3ZlckFuY2hvclxuICogICAgICAjYW5jaG9yPVwiY2xpY2tBbmNob3JcIlxuICogICAgICAoY2xpY2spPVwicG9wb3Zlci5vcGVuKClcIj5DbGljayBNZSE8L2Rpdj5cbiAqIDxseC1wb3BvdmVyIFt0cmlnZ2VyXT1cImFuY2hvclwiXG4gKiAgICAgICAgICAgICBob3Jpem9udGFsQWxpZ249XCJhZnRlclwiXG4gKiAgICAgICAgICAgICB2ZXJ0aWNhbEFsaWduPVwiY2VudGVyXCJcbiAqICAgICAgICAgICAgICNwb3BvdmVyPlxuICogICAgPHA+UG9wb3ZlciBjb250ZW50PC9wPlxuICogPC9seC1wb3BvdmVyPlxuICpcbiAqIElmIHRoaXMgY29tcG9uZW50IGlzIHVzZWQgd2l0aCBhbmd1bGFyQ29tcGlsZXJPcHRpb25zIHN0cmljdFRlbXBsYXRlcz10cnVlLFxuICogc2F0UG9wb3ZlckFuY2hvciBtdXN0IGJlIHNldCB0byB0aGUgcmVmZXJlbmNlIHRvIHRoZSBTYXRQb3BvdmVyIGluc2lkZSBseC1wb3BvdmVyLlxuICpcbiAqIEV4YW1wbGU6XG4gKiAgPGRpdiBbc2F0UG9wb3ZlckFuY2hvcl09XCJwb3BvdmVyLnNhdFBvcG92ZXJcIj48L2Rpdj5cbiAqIDxseC1wb3BvdmVyICNwb3BvdmVyPlxuICogICAgPHA+UG9wb3ZlciBjb250ZW50PC9wPlxuICogPC9seC1wb3BvdmVyPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdseC1wb3BvdmVyJyxcbiAgdGVtcGxhdGVVcmw6ICdwb3BvdmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ3BvcG92ZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1NhdFBvcG92ZXJNb2R1bGUsIE5nQ2xhc3MsIE5nSWYsIE5nVGVtcGxhdGVPdXRsZXRdXG59KVxuZXhwb3J0IGNsYXNzIFBvcG92ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSB0cmlnZ2VyITogUG9wb3ZlclRyaWdnZXJEaXJlY3RpdmU7XG4gIEBJbnB1dCgpIGhvcml6b250YWxBbGlnbiE6IFNhdFBvcG92ZXJIb3Jpem9udGFsQWxpZ247XG4gIEBJbnB1dCgpIHZlcnRpY2FsQWxpZ24hOiBTYXRQb3BvdmVyVmVydGljYWxBbGlnbjtcbiAgQElucHV0KCkgbm9NYXJnaW4gPSBmYWxzZTtcbiAgQElucHV0KCkgYWxsb3dPdmVyZmxvdyA9IGZhbHNlO1xuICBASW5wdXQoKSBhdXRvRm9jdXMgPSBmYWxzZTtcbiAgQElucHV0KCkgcmVzdG9yZUZvY3VzID0gdHJ1ZTtcblxuICAvKipcbiAgICogSWYgeW91IGhhdmUgYSBwb3BvdmVyLCB0aGF0IHNob3VsZCB1c3VhbGx5IGJlIGRpc3BsYXllZCBhYm92ZSBvciBiZWxvdyBpdHMgYW5jaG9yLFxuICAgKiBhbmQgdGhpcyBhbmNob3IgaXMgaW4gYSBzY3JvbGxhYmxlIGNvbnRhaW5lciwgeW91IHNob3VsZCBzZXQgdGhpcyB0byB0cnVlLlxuICAgKiBTYXRQb3BvdmVyIHdpbGwgb3BlbiB0aGlzIHBvcG92ZXIgaW4gdGhlIGRpcmVjdGlvbiB3aGVyZSB0aGVyZSBpcyBlbm91Z2ggc3BhY2UsXG4gICAqIHNvIGl0cyBwb3NpdGlvbiBtaWdodCBkaWZmZXIgZnJvbSB0aGUgaG9yaXpvbnRhbEFsaWduIGFuZCB2ZXJ0aWNhbEFsaWduIHZhbHVlcy5cbiAgICogSW4gdGhpcyBjYXNlIHdlIHJlbHkgb24gdGhlIFNhdFBvcG92ZXI6Ol9jbGFzc0xpc3QgcHJvcGVydHkgdG8gZ2V0IHRoZSBjb21wdXRlZFxuICAgKiBwb3NpdGlvbiBvZiB0aGUgcG9wb3ZlciBhZnRlciBvcGVuaW5nLlxuICAgKi9cbiAgQElucHV0KCkgYWRhcHRNYXJnaW5zRm9yVmlld3BvcnRBbGlnbkNoYW5nZSA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBvcGVuZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQFZpZXdDaGlsZChTYXRQb3BvdmVyQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBzYXRQb3BvdmVyITogU2F0UG9wb3ZlckNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnaW1wbGljaXRDb250ZW50JywgeyBzdGF0aWM6IHRydWUgfSkgaW1wbGljaXRDb250ZW50ITogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAQ29udGVudENoaWxkKFBvcG92ZXJDb250ZW50RGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSkgZXhwbGljaXRDb250ZW50PzogVGVtcGxhdGVSZWY8YW55PjtcblxuICBtYXJnaW5DbGFzc2VzITogc3RyaW5nO1xuXG4gIGdldCBjb250ZW50KCkge1xuICAgIHJldHVybiB0aGlzLmV4cGxpY2l0Q29udGVudCB8fCB0aGlzLmltcGxpY2l0Q29udGVudDtcbiAgfVxuXG4gIGdldCBpc09wZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzT3BlbjtcbiAgfVxuICBwcml2YXRlIF9pc09wZW4gPSBmYWxzZTtcblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ2hvcml6b250YWxBbGlnbiddICYmIGNoYW5nZXNbJ3ZlcnRpY2FsQWxpZ24nXSkge1xuICAgICAgdGhpcy5tYXJnaW5DbGFzc2VzID0gdGhpcy5nZXREZWZhdWx0TWFyZ2luQ2xhc3Nlcyh0aGlzLmhvcml6b250YWxBbGlnbiwgdGhpcy52ZXJ0aWNhbEFsaWduKTtcbiAgICB9XG4gIH1cblxuICBvcGVuKCkge1xuICAgIHRoaXMuc2F0UG9wb3Zlci5vcGVuKCk7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLnNhdFBvcG92ZXIuY2xvc2UoKTtcbiAgfVxuXG4gIG9uT3BlbigpIHtcbiAgICB0aGlzLl9pc09wZW4gPSB0cnVlO1xuICAgIHRoaXMub3BlbmVkLmVtaXQoKTtcbiAgfVxuXG4gIG9uQWZ0ZXJPcGVuKCkge1xuICAgIGlmICh0aGlzLmFkYXB0TWFyZ2luc0ZvclZpZXdwb3J0QWxpZ25DaGFuZ2UpIHtcbiAgICAgIHRoaXMubWFyZ2luQ2xhc3NlcyA9IHRoaXMuZ2V0TWFyZ2luQ2xhc3Nlc0ZvckNsYXNzTGlzdCh0aGlzLnNhdFBvcG92ZXIuX2NsYXNzTGlzdCk7XG4gICAgfVxuICB9XG5cbiAgb25DbG9zZSgpIHtcbiAgICB0aGlzLl9pc09wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XG4gIH1cblxuICAvKipcbiAgICogU2F0UG9wb3Zlcjo6X2NsYXNzTGlzdCB3aWxsIGNvbnRhaW4gYSBtYXAgb2YgYWxpZ25tZW50IENTUyBjbGFzc2VzLCBvbmNlIHRoZSBwb3BvdmVyIHdhcyBvcGVuZWQuXG4gICAqIFRoZXNlIGFsaWdubWVudCBjbGFzc2VzIGNhbiBiZSBkaWZmZXJlbnQgZnJvbSB3aGF0IHlvdSB3b3VsZCBleHBlY3QgZnJvbSB0aGUgaG9yaXpvbnRhbC0gYW5kIHZlcnRpY2FsQWxpZ24gaW5wdXRzLFxuICAgKiBiZWNhdXNlIHRoZXJlIG1pZ2h0IG5vdCBiZSBlbm91Z2ggc3BhY2UgYWJvdmUgdGhlIGFuY2hvciB0byBtZWV0IHRoZSB2ZXJ0aWNhbEFsaWduPSdhYm92ZScgY3JpdGVyaWEsXG4gICAqIHNvIGl0IHdpbGwgYmUgZGlzcGxheWVkIGJlbG93IHRoZSBhbmNob3IgaW5zdGVhZC5cbiAgICovXG4gIHByaXZhdGUgZ2V0TWFyZ2luQ2xhc3Nlc0ZvckNsYXNzTGlzdChzYXRQb3BvdmVyQ2xhc3NMaXN0OiB7IFtjbGFzc05hbWU6IHN0cmluZ106IGJvb2xlYW4gfSk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMubm9NYXJnaW4pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBpZiAoc2F0UG9wb3ZlckNsYXNzTGlzdFsnc2F0LXBvcG92ZXItYWJvdmUnXSkge1xuICAgICAgcmV0dXJuIHRoaXMubWFyZ2luQ2xhc3Nlcy5pbmNsdWRlcygndG9wJykgPyB0aGlzLm1hcmdpbkNsYXNzZXMgOiAndG9wJztcbiAgICB9XG5cbiAgICBpZiAoc2F0UG9wb3ZlckNsYXNzTGlzdFsnc2F0LXBvcG92ZXItYmVsb3cnXSkge1xuICAgICAgcmV0dXJuIHRoaXMubWFyZ2luQ2xhc3Nlcy5pbmNsdWRlcygnYm90dG9tJykgPyB0aGlzLm1hcmdpbkNsYXNzZXMgOiAnYm90dG9tJztcbiAgICB9XG5cbiAgICBpZiAoc2F0UG9wb3ZlckNsYXNzTGlzdFsnc2F0LXBvcG92ZXItYmVmb3JlJ10pIHtcbiAgICAgIHJldHVybiB0aGlzLm1hcmdpbkNsYXNzZXMuaW5jbHVkZXMoJ2xlZnQnKSA/IHRoaXMubWFyZ2luQ2xhc3NlcyA6ICdsZWZ0JztcbiAgICB9XG5cbiAgICBpZiAoc2F0UG9wb3ZlckNsYXNzTGlzdFsnc2F0LXBvcG92ZXItYWZ0ZXInXSkge1xuICAgICAgcmV0dXJuIHRoaXMubWFyZ2luQ2xhc3Nlcy5pbmNsdWRlcygncmlnaHQnKSA/IHRoaXMubWFyZ2luQ2xhc3NlcyA6ICdyaWdodCc7XG4gICAgfVxuXG4gICAgaWYgKHNhdFBvcG92ZXJDbGFzc0xpc3RbJ3NhdC1wb3BvdmVyLWNlbnRlciddKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdE1hcmdpbkNsYXNzZXMoaG9yaXpvbnRhbEFsaWduOiBTYXRQb3BvdmVySG9yaXpvbnRhbEFsaWduLCB2ZXJ0aWNhbEFsaWduOiBTYXRQb3BvdmVyVmVydGljYWxBbGlnbik6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMubm9NYXJnaW4pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBpZiAoaG9yaXpvbnRhbEFsaWduID09PSAnYWZ0ZXInKSB7XG4gICAgICBpZiAodmVydGljYWxBbGlnbiA9PT0gJ2NlbnRlcicgfHwgdmVydGljYWxBbGlnbiA9PT0gJ3N0YXJ0JyB8fCB2ZXJ0aWNhbEFsaWduID09PSAnZW5kJykge1xuICAgICAgICByZXR1cm4gJ3JpZ2h0JztcbiAgICAgIH0gZWxzZSBpZiAodmVydGljYWxBbGlnbiA9PT0gJ2Fib3ZlJykge1xuICAgICAgICByZXR1cm4gJ3JpZ2h0IHRvcCc7XG4gICAgICB9IGVsc2UgaWYgKHZlcnRpY2FsQWxpZ24gPT09ICdiZWxvdycpIHtcbiAgICAgICAgcmV0dXJuICdyaWdodCBib3R0b20nO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChob3Jpem9udGFsQWxpZ24gPT09ICdiZWZvcmUnKSB7XG4gICAgICBpZiAodmVydGljYWxBbGlnbiA9PT0gJ2NlbnRlcicgfHwgdmVydGljYWxBbGlnbiA9PT0gJ3N0YXJ0JyB8fCB2ZXJ0aWNhbEFsaWduID09PSAnZW5kJykge1xuICAgICAgICByZXR1cm4gJ2xlZnQnO1xuICAgICAgfSBlbHNlIGlmICh2ZXJ0aWNhbEFsaWduID09PSAnYWJvdmUnKSB7XG4gICAgICAgIHJldHVybiAnbGVmdCB0b3AnO1xuICAgICAgfSBlbHNlIGlmICh2ZXJ0aWNhbEFsaWduID09PSAnYmVsb3cnKSB7XG4gICAgICAgIHJldHVybiAnbGVmdCBib3R0b20nO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChob3Jpem9udGFsQWxpZ24gPT09ICdjZW50ZXInIHx8IGhvcml6b250YWxBbGlnbiA9PT0gJ3N0YXJ0JyB8fCBob3Jpem9udGFsQWxpZ24gPT09ICdlbmQnKSB7XG4gICAgICBpZiAodmVydGljYWxBbGlnbiA9PT0gJ2Fib3ZlJykge1xuICAgICAgICByZXR1cm4gJ3RvcCc7XG4gICAgICB9IGVsc2UgaWYgKHZlcnRpY2FsQWxpZ24gPT09ICdiZWxvdycpIHtcbiAgICAgICAgcmV0dXJuICdib3R0b20nO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cbn1cbiIsIjxzYXQtcG9wb3ZlclxuICBbYW5jaG9yXT1cInRyaWdnZXIuYW5jaG9yXCJcbiAgW2hvcml6b250YWxBbGlnbl09XCJob3Jpem9udGFsQWxpZ25cIlxuICBbdmVydGljYWxBbGlnbl09XCJ2ZXJ0aWNhbEFsaWduXCJcbiAgW3Jlc3RvcmVGb2N1c109XCJyZXN0b3JlRm9jdXNcIlxuICBbbG9ja0FsaWdubWVudF09XCJ0cnVlXCJcbiAgW2F1dG9Gb2N1c109XCJhdXRvRm9jdXNcIlxuICBvcGVuVHJhbnNpdGlvbj1cIjBtc1wiXG4gIGNsb3NlVHJhbnNpdGlvbj1cIjBtc1wiXG4gIChvcGVuZWQpPVwib25PcGVuKClcIlxuICAoYWZ0ZXJPcGVuKT1cIm9uQWZ0ZXJPcGVuKClcIlxuICAoY2xvc2VkKT1cIm9uQ2xvc2UoKVwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cInBvcG92ZXJDb250YWluZXJcIlxuICAgIFtuZ0NsYXNzXT1cIm1hcmdpbkNsYXNzZXNcIlxuICAgIFtjbGFzcy5vdmVyZmxvd0hpZGRlbl09XCIhYWxsb3dPdmVyZmxvd1wiXG4gICAgKG1vdXNlZW50ZXIpPVwidHJpZ2dlci5zaG93UG9wb3Zlcih0cnVlKVwiXG4gICAgKG1vdXNlbGVhdmUpPVwidHJpZ2dlci5jbG9zZVBvcG92ZXIodHJ1ZSlcIlxuICAgIChrZXlkb3duLmVzY2FwZSk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRyaWdnZXIuY2xvc2VQb3BvdmVyKHRydWUpXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc09wZW5cIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50XCIgLz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L3NhdC1wb3BvdmVyPlxuPG5nLXRlbXBsYXRlICNpbXBsaWNpdENvbnRlbnQ+XG4gIDxuZy1jb250ZW50IC8+XG48L25nLXRlbXBsYXRlPlxuIl19
|
230
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9wb3BvdmVyLXVpL2NvbXBvbmVudHMvcG9wb3Zlci9wb3BvdmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL3BvcG92ZXItdWkvY29tcG9uZW50cy9wb3BvdmVyL3BvcG92ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBaUIsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2SSxPQUFPLEVBQUUsbUJBQW1CLEVBQTZCLGdCQUFnQixFQUEyQixNQUFNLHNCQUFzQixDQUFDO0FBQ2pJLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOzs7QUFHckY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStERztBQVFILE1BQU0sT0FBTyxnQkFBZ0I7SUFQN0I7UUFjRSxnQ0FBZ0M7UUFDdkIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUMxQiw2REFBNkQ7UUFDcEQsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDL0IscUZBQXFGO1FBQzVFLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDM0IsNkZBQTZGO1FBQ3BGLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQzdCOzs7Ozs7O1dBT0c7UUFDTSx1Q0FBa0MsR0FBRyxLQUFLLENBQUM7UUFFcEQsZ0RBQWdEO1FBQ3RDLFdBQU0sR0FB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QU8sUUFBUSxDQUFDO1lBQ2xCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDOzhHQXZKVSxnQkFBZ0I7a0dBQWhCLGdCQUFnQiw4YkFvQ2IsdUJBQXVCLDJCQUFVLFdBQVcsdUZBTC9DLG1CQUFtQixzTUM1R2hDLDgxQkE2QkEsd2REOENZLGdCQUFnQiwwZ0JBQUUsT0FBTyxvRkFBRSxJQUFJLDZGQUFFLGdCQUFnQjs7MkZBRWhELGdCQUFnQjtrQkFQNUIsU0FBUzsrQkFDRSxZQUFZLGNBR1YsSUFBSSxXQUNQLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsQ0FBQzs4QkFJbkQsT0FBTztzQkFBZixLQUFLO2dCQUVHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQVNHLGtDQUFrQztzQkFBMUMsS0FBSztnQkFHSSxNQUFNO3NCQUFmLE1BQU07Z0JBRUcsTUFBTTtzQkFBZixNQUFNO2dCQUcyQyxVQUFVO3NCQUEzRCxTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFQSxlQUFlO3NCQUE5RCxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFHOEIsZUFBZTtzQkFBMUYsWUFBWTt1QkFBQyx1QkFBdUIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nQ2xhc3MsIE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTYXRQb3BvdmVyQ29tcG9uZW50LCBTYXRQb3BvdmVySG9yaXpvbnRhbEFsaWduLCBTYXRQb3BvdmVyTW9kdWxlLCBTYXRQb3BvdmVyVmVydGljYWxBbGlnbiB9IGZyb20gJ0BuY3N0YXRlL3NhdC1wb3BvdmVyJztcbmltcG9ydCB7IFBvcG92ZXJDb250ZW50RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9wb3BvdmVyLWNvbnRlbnQuZGlyZWN0aXZlJztcbmltcG9ydCB7IFBvcG92ZXJUcmlnZ2VyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9wb3BvdmVyLWhvdmVyLmRpcmVjdGl2ZSc7XG5cbi8qKlxuICogVGhlIFBvcG92ZXIgY29tcG9uZW50IGlzIGJhc2VkIG9uIHRoZSBbbmNzdGF0ZS1zYXQvcG9wb3Zlcl0oaHR0cHM6Ly9naXRodWIuY29tL25jc3RhdGUtc2F0L3BvcG92ZXIpIGxpYnJhcnkuXG4gKlxuICogIyMgVXNhZ2VcbiAqXG4gKiAxLiBJbXBvcnQgYEx4UG9wb3ZlclVpTW9kdWxlYCBhbmQgYEx4Q29yZVVpTW9kdWxlYCBtb2R1bGUgZnJvbSBgQGxlYW5peC9jb21wb25lbnRzYCBpbiB5b3VyIG1vZHVsZSB3aGVyZSB5b3Ugd2FudCB0byB1c2UgdGhlIGNvbXBvbmVudC5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgTHhQb3BvdmVyVWlNb2R1bGUsIEx4Q29yZVVpTW9kdWxlIH0gZnJvbSAnQGxlYW5peC9jb21wb25lbnRzJztcbiAqIGBgYFxuICpcbiAqIFRoaXMgcG9wb3ZlciBlbmNhcHN1bGF0ZXMgdGhpcyBvcGVuIHNvdXJjZSBsaWJyYXJ5OiBodHRwczovL2dpdGh1Yi5jb20vbmNzdGF0ZS1zYXQvcG9wb3ZlcixcbiAqIG1ha2Ugc3VyZSB0byBhbHNvIGNoZWNrIG91dCB0aGUgZG9jcyBvdmVyIHRoZXJlLlxuICpcbiAqIEFzIG9mIHRvZGF5IHRoZXkgYXJlIHR3byB0cmlnZ2VyIHN0cmF0ZWdpZXMgdG8gZGlzcGxheSBhIHBvcG92ZXIuXG4gKiAxLiBTaG93IG9uIGhvdmVyaW5nIHRoZSBhbmNob3IgYW5kIHdoaWxlIGhvdmVyaW5nIHRoZSBwb3BvdmVyIGJvZHkuXG4gKiAyLiBTaG93IG9uIGNsaWNrIGFuZCB3aGlsZSBob3ZlcmluZyB0aGUgcG9wb3ZlciBib2R5LlxuICpcbiAqIEZvciB1c2UgY2FzZSAxLiB5b3Ugd291bGQgdXNlIHRoZSBseFBvcG92ZXJIb3ZlciBkaXJlY3RpdmUsIHdoaWNoIGV4cG9ydHMgYXMgaG92ZXJBbmNob3IuXG4gKlxuICogIyMjIEV4YW1wbGU6XG4gKiBgYGBodG1sXG4gKiA8ZGl2IGx4UG9wb3ZlckhvdmVyXG4gKiAgICAgIGhvdmVyQW5jaG9yXG4gKiAgICAgIHNhdFBvcG92ZXJBbmNob3JcbiAqICAgICAgI2FuY2hvcj1cImhvdmVyQW5jaG9yXCI+PC9kaXY+XG4gKiA8bHgtcG9wb3ZlciBbdHJpZ2dlcl09XCJhbmNob3JcIlxuICogICAgICAgICAgICAgaG9yaXpvbnRhbEFsaWduPVwiYWZ0ZXJcIlxuICogICAgICAgICAgICAgdmVydGljYWxBbGlnbj1cImNlbnRlclwiPlxuICogICAgPHA+UG9wb3ZlciBjb250ZW50PC9wPlxuICogPC9seC1wb3BvdmVyPlxuICogYGBgXG4gKlxuICogRm9yIHVzZSBjYXNlIDIuIHlvdSB3b3VsZCB1c2UgdGhlIGx4UG9wb3ZlckNsaWNrIGRpcmVjdGl2ZSwgd2hpY2ggZXhwb3J0cyBhcyBjbGlja0FuY2hvci5cbiAqIE5vdGU6IFNpbmNlIHRoZSBvbmx5IGNvbXBvbmVudCB3aGVyZSB3ZSB1c2UgdGhlIGx4UG9wb3ZlckNsaWNrIGRpcmVjdGl2ZSAoUmVwb3J0Q29tcG9uZW50KVxuICogbmVlZHMgdG8gZmV0Y2ggc29tZSBkYXRhIGJlZm9yZSBvcGVuaW5nIGl0LCB3ZSBkbyBub3QgcmVnaXN0ZXIgYSBjbGljayBFdmVudExpc3RlbmVyIGluIHRoaXMgZGlyZWN0aXZlLFxuICogYnV0IHJlcXVpcmUgdGhlIGRldmVsb3BlciB0byBpbXBsZW1lbnQgdGhhdCBpbiB0aGUgY29tcG9uZW50LCB3aGVyZSB0aGUgcG9wb3ZlciBpcyB1c2VkLlxuICpcbiAqICMjIyBFeGFtcGxlOlxuICogYGBgaHRtbFxuICogPGRpdiBseFBvcG92ZXJDbGlja1xuICogICAgICBjbGlja0FuY2hvclxuICogICAgICBzYXRQb3BvdmVyQW5jaG9yXG4gKiAgICAgICNhbmNob3I9XCJjbGlja0FuY2hvclwiXG4gKiAgICAgIChjbGljayk9XCJwb3BvdmVyLm9wZW4oKVwiPkNsaWNrIE1lITwvZGl2PlxuICogPGx4LXBvcG92ZXIgW3RyaWdnZXJdPVwiYW5jaG9yXCJcbiAqICAgICAgICAgICAgIGhvcml6b250YWxBbGlnbj1cImFmdGVyXCJcbiAqICAgICAgICAgICAgIHZlcnRpY2FsQWxpZ249XCJjZW50ZXJcIlxuICogICAgICAgICAgICAgI3BvcG92ZXI+XG4gKiAgICA8cD5Qb3BvdmVyIGNvbnRlbnQ8L3A+XG4gKiA8L2x4LXBvcG92ZXI+XG4gKiBgYGBcbiAqXG4gKiBJZiB0aGlzIGNvbXBvbmVudCBpcyB1c2VkIHdpdGggYW5ndWxhckNvbXBpbGVyT3B0aW9ucyBzdHJpY3RUZW1wbGF0ZXM9dHJ1ZSxcbiAqIHNhdFBvcG92ZXJBbmNob3IgbXVzdCBiZSBzZXQgdG8gdGhlIHJlZmVyZW5jZSB0byB0aGUgU2F0UG9wb3ZlciBpbnNpZGUgbHgtcG9wb3Zlci5cbiAqXG4gKiAjIyMgRXhhbXBsZTpcbiAqIGBgYGh0bWxcbiAqIDxkaXYgW3NhdFBvcG92ZXJBbmNob3JdPVwicG9wb3Zlci5zYXRQb3BvdmVyXCI+PC9kaXY+XG4gKiA8bHgtcG9wb3ZlciAjcG9wb3Zlcj5cbiAqICAgIDxwPlBvcG92ZXIgY29udGVudDwvcD5cbiAqIDwvbHgtcG9wb3Zlcj5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdseC1wb3BvdmVyJyxcbiAgdGVtcGxhdGVVcmw6ICdwb3BvdmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ3BvcG92ZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1NhdFBvcG92ZXJNb2R1bGUsIE5nQ2xhc3MsIE5nSWYsIE5nVGVtcGxhdGVPdXRsZXRdXG59KVxuZXhwb3J0IGNsYXNzIFBvcG92ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAvKiogVGhlIHRyaWdnZXIgZGlyZWN0aXZlIHRoYXQgd2lsbCBvcGVuIHRoZSBwb3BvdmVyLiBUaGlzIGlzIGFsc28gdGhlIGFuY2hvciBmb3IgdGhlIHBvcG92ZXIuICovXG4gIEBJbnB1dCgpIHRyaWdnZXIhOiBQb3BvdmVyVHJpZ2dlckRpcmVjdGl2ZTtcbiAgLyoqIFRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiB0aGUgcG9wb3ZlciAoYGNlbnRlcmAgYnkgZGVmYXVsdCkuICovXG4gIEBJbnB1dCgpIGhvcml6b250YWxBbGlnbiE6IFNhdFBvcG92ZXJIb3Jpem9udGFsQWxpZ247XG4gIC8qKiBUaGUgdmVydGljYWwgYWxpZ25tZW50IG9mIHRoZSBwb3BvdmVyIChgYWJvdmVgIGJ5IGRlZmF1bHQpLiAqL1xuICBASW5wdXQoKSB2ZXJ0aWNhbEFsaWduITogU2F0UG9wb3ZlclZlcnRpY2FsQWxpZ247XG4gIC8qKiBXaGV0aGVyIHRvIGFwcGx5IG1hcmdpbnMuICovXG4gIEBJbnB1dCgpIG5vTWFyZ2luID0gZmFsc2U7XG4gIC8qKiBXaGV0aGVyIHRvIGFsbG93IHRoZSBwb3BvdmVyIHRvIG92ZXJmbG93IHRoZSB2aWV3cG9ydC4gKi9cbiAgQElucHV0KCkgYWxsb3dPdmVyZmxvdyA9IGZhbHNlO1xuICAvKiogV2hldGhlciB0byBmb2N1cyB0aGUgZmlyc3QgZm9jdXNhYmxlIGVsZW1lbnQgaW4gdGhlIHBvcG92ZXIgd2hlbiBpdCBpcyBvcGVuZWQuICovXG4gIEBJbnB1dCgpIGF1dG9Gb2N1cyA9IGZhbHNlO1xuICAvKiogV2hldGhlciB0byByZXN0b3JlIGZvY3VzIHRvIHRoZSBwcmV2aW91c2x5LWZvY3VzZWQgZWxlbWVudCB3aGVuIHRoZSBwb3BvdmVyIGlzIGNsb3NlZC4gKi9cbiAgQElucHV0KCkgcmVzdG9yZUZvY3VzID0gdHJ1ZTtcbiAgLyoqXG4gICAqIElmIHlvdSBoYXZlIGEgcG9wb3ZlciwgdGhhdCBzaG91bGQgdXN1YWxseSBiZSBkaXNwbGF5ZWQgYWJvdmUgb3IgYmVsb3cgaXRzIGFuY2hvcixcbiAgICogYW5kIHRoaXMgYW5jaG9yIGlzIGluIGEgc2Nyb2xsYWJsZSBjb250YWluZXIsIHlvdSBzaG91bGQgc2V0IHRoaXMgdG8gdHJ1ZS5cbiAgICogU2F0UG9wb3ZlciB3aWxsIG9wZW4gdGhpcyBwb3BvdmVyIGluIHRoZSBkaXJlY3Rpb24gd2hlcmUgdGhlcmUgaXMgZW5vdWdoIHNwYWNlLFxuICAgKiBzbyBpdHMgcG9zaXRpb24gbWlnaHQgZGlmZmVyIGZyb20gdGhlIGhvcml6b250YWxBbGlnbiBhbmQgdmVydGljYWxBbGlnbiB2YWx1ZXMuXG4gICAqIEluIHRoaXMgY2FzZSB3ZSByZWx5IG9uIHRoZSBTYXRQb3BvdmVyOjpfY2xhc3NMaXN0IHByb3BlcnR5IHRvIGdldCB0aGUgY29tcHV0ZWRcbiAgICogcG9zaXRpb24gb2YgdGhlIHBvcG92ZXIgYWZ0ZXIgb3BlbmluZy5cbiAgICovXG4gIEBJbnB1dCgpIGFkYXB0TWFyZ2luc0ZvclZpZXdwb3J0QWxpZ25DaGFuZ2UgPSBmYWxzZTtcblxuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBwb3BvdmVyIGlzIG9wZW5lZC4gKi9cbiAgQE91dHB1dCgpIG9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgcG9wb3ZlciBpcyBjbG9zZWQuICovXG4gIEBPdXRwdXQoKSBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBAVmlld0NoaWxkKFNhdFBvcG92ZXJDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIHNhdFBvcG92ZXIhOiBTYXRQb3BvdmVyQ29tcG9uZW50O1xuICAvKiogQGludGVybmFsICovXG4gIEBWaWV3Q2hpbGQoJ2ltcGxpY2l0Q29udGVudCcsIHsgc3RhdGljOiB0cnVlIH0pIGltcGxpY2l0Q29udGVudCE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBAQ29udGVudENoaWxkKFBvcG92ZXJDb250ZW50RGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSkgZXhwbGljaXRDb250ZW50PzogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvKiogQGludGVybmFsICovXG4gIG1hcmdpbkNsYXNzZXMhOiBzdHJpbmc7XG5cbiAgZ2V0IGNvbnRlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZXhwbGljaXRDb250ZW50IHx8IHRoaXMuaW1wbGljaXRDb250ZW50O1xuICB9XG5cbiAgZ2V0IGlzT3BlbigpIHtcbiAgICByZXR1cm4gdGhpcy5faXNPcGVuO1xuICB9XG4gIHByaXZhdGUgX2lzT3BlbiA9IGZhbHNlO1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1snaG9yaXpvbnRhbEFsaWduJ10gJiYgY2hhbmdlc1sndmVydGljYWxBbGlnbiddKSB7XG4gICAgICB0aGlzLm1hcmdpbkNsYXNzZXMgPSB0aGlzLmdldERlZmF1bHRNYXJnaW5DbGFzc2VzKHRoaXMuaG9yaXpvbnRhbEFsaWduLCB0aGlzLnZlcnRpY2FsQWxpZ24pO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgb3BlbigpIHtcbiAgICB0aGlzLnNhdFBvcG92ZXIub3BlbigpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBjbG9zZSgpIHtcbiAgICB0aGlzLnNhdFBvcG92ZXIuY2xvc2UoKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgb25PcGVuKCkge1xuICAgIHRoaXMuX2lzT3BlbiA9IHRydWU7XG4gICAgdGhpcy5vcGVuZWQuZW1pdCgpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBvbkFmdGVyT3BlbigpIHtcbiAgICBpZiAodGhpcy5hZGFwdE1hcmdpbnNGb3JWaWV3cG9ydEFsaWduQ2hhbmdlKSB7XG4gICAgICB0aGlzLm1hcmdpbkNsYXNzZXMgPSB0aGlzLmdldE1hcmdpbkNsYXNzZXNGb3JDbGFzc0xpc3QodGhpcy5zYXRQb3BvdmVyLl9jbGFzc0xpc3QpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgb25DbG9zZSgpIHtcbiAgICB0aGlzLl9pc09wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XG4gIH1cblxuICAvKipcbiAgICogU2F0UG9wb3Zlcjo6X2NsYXNzTGlzdCB3aWxsIGNvbnRhaW4gYSBtYXAgb2YgYWxpZ25tZW50IENTUyBjbGFzc2VzLCBvbmNlIHRoZSBwb3BvdmVyIHdhcyBvcGVuZWQuXG4gICAqIFRoZXNlIGFsaWdubWVudCBjbGFzc2VzIGNhbiBiZSBkaWZmZXJlbnQgZnJvbSB3aGF0IHlvdSB3b3VsZCBleHBlY3QgZnJvbSB0aGUgaG9yaXpvbnRhbC0gYW5kIHZlcnRpY2FsQWxpZ24gaW5wdXRzLFxuICAgKiBiZWNhdXNlIHRoZXJlIG1pZ2h0IG5vdCBiZSBlbm91Z2ggc3BhY2UgYWJvdmUgdGhlIGFuY2hvciB0byBtZWV0IHRoZSB2ZXJ0aWNhbEFsaWduPSdhYm92ZScgY3JpdGVyaWEsXG4gICAqIHNvIGl0IHdpbGwgYmUgZGlzcGxheWVkIGJlbG93IHRoZSBhbmNob3IgaW5zdGVhZC5cbiAgICovXG4gIHByaXZhdGUgZ2V0TWFyZ2luQ2xhc3Nlc0ZvckNsYXNzTGlzdChzYXRQb3BvdmVyQ2xhc3NMaXN0OiB7IFtjbGFzc05hbWU6IHN0cmluZ106IGJvb2xlYW4gfSk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMubm9NYXJnaW4pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBpZiAoc2F0UG9wb3ZlckNsYXNzTGlzdFsnc2F0LXBvcG92ZXItYWJvdmUnXSkge1xuICAgICAgcmV0dXJuIHRoaXMubWFyZ2luQ2xhc3Nlcy5pbmNsdWRlcygndG9wJykgPyB0aGlzLm1hcmdpbkNsYXNzZXMgOiAndG9wJztcbiAgICB9XG5cbiAgICBpZiAoc2F0UG9wb3ZlckNsYXNzTGlzdFsnc2F0LXBvcG92ZXItYmVsb3cnXSkge1xuICAgICAgcmV0dXJuIHRoaXMubWFyZ2luQ2xhc3Nlcy5pbmNsdWRlcygnYm90dG9tJykgPyB0aGlzLm1hcmdpbkNsYXNzZXMgOiAnYm90dG9tJztcbiAgICB9XG5cbiAgICBpZiAoc2F0UG9wb3ZlckNsYXNzTGlzdFsnc2F0LXBvcG92ZXItYmVmb3JlJ10pIHtcbiAgICAgIHJldHVybiB0aGlzLm1hcmdpbkNsYXNzZXMuaW5jbHVkZXMoJ2xlZnQnKSA/IHRoaXMubWFyZ2luQ2xhc3NlcyA6ICdsZWZ0JztcbiAgICB9XG5cbiAgICBpZiAoc2F0UG9wb3ZlckNsYXNzTGlzdFsnc2F0LXBvcG92ZXItYWZ0ZXInXSkge1xuICAgICAgcmV0dXJuIHRoaXMubWFyZ2luQ2xhc3Nlcy5pbmNsdWRlcygncmlnaHQnKSA/IHRoaXMubWFyZ2luQ2xhc3NlcyA6ICdyaWdodCc7XG4gICAgfVxuXG4gICAgaWYgKHNhdFBvcG92ZXJDbGFzc0xpc3RbJ3NhdC1wb3BvdmVyLWNlbnRlciddKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdE1hcmdpbkNsYXNzZXMoaG9yaXpvbnRhbEFsaWduOiBTYXRQb3BvdmVySG9yaXpvbnRhbEFsaWduLCB2ZXJ0aWNhbEFsaWduOiBTYXRQb3BvdmVyVmVydGljYWxBbGlnbik6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMubm9NYXJnaW4pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBpZiAoaG9yaXpvbnRhbEFsaWduID09PSAnYWZ0ZXInKSB7XG4gICAgICBpZiAodmVydGljYWxBbGlnbiA9PT0gJ2NlbnRlcicgfHwgdmVydGljYWxBbGlnbiA9PT0gJ3N0YXJ0JyB8fCB2ZXJ0aWNhbEFsaWduID09PSAnZW5kJykge1xuICAgICAgICByZXR1cm4gJ3JpZ2h0JztcbiAgICAgIH0gZWxzZSBpZiAodmVydGljYWxBbGlnbiA9PT0gJ2Fib3ZlJykge1xuICAgICAgICByZXR1cm4gJ3JpZ2h0IHRvcCc7XG4gICAgICB9IGVsc2UgaWYgKHZlcnRpY2FsQWxpZ24gPT09ICdiZWxvdycpIHtcbiAgICAgICAgcmV0dXJuICdyaWdodCBib3R0b20nO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChob3Jpem9udGFsQWxpZ24gPT09ICdiZWZvcmUnKSB7XG4gICAgICBpZiAodmVydGljYWxBbGlnbiA9PT0gJ2NlbnRlcicgfHwgdmVydGljYWxBbGlnbiA9PT0gJ3N0YXJ0JyB8fCB2ZXJ0aWNhbEFsaWduID09PSAnZW5kJykge1xuICAgICAgICByZXR1cm4gJ2xlZnQnO1xuICAgICAgfSBlbHNlIGlmICh2ZXJ0aWNhbEFsaWduID09PSAnYWJvdmUnKSB7XG4gICAgICAgIHJldHVybiAnbGVmdCB0b3AnO1xuICAgICAgfSBlbHNlIGlmICh2ZXJ0aWNhbEFsaWduID09PSAnYmVsb3cnKSB7XG4gICAgICAgIHJldHVybiAnbGVmdCBib3R0b20nO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChob3Jpem9udGFsQWxpZ24gPT09ICdjZW50ZXInIHx8IGhvcml6b250YWxBbGlnbiA9PT0gJ3N0YXJ0JyB8fCBob3Jpem9udGFsQWxpZ24gPT09ICdlbmQnKSB7XG4gICAgICBpZiAodmVydGljYWxBbGlnbiA9PT0gJ2Fib3ZlJykge1xuICAgICAgICByZXR1cm4gJ3RvcCc7XG4gICAgICB9IGVsc2UgaWYgKHZlcnRpY2FsQWxpZ24gPT09ICdiZWxvdycpIHtcbiAgICAgICAgcmV0dXJuICdib3R0b20nO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cbn1cbiIsIjxzYXQtcG9wb3ZlclxuICBbYW5jaG9yXT1cInRyaWdnZXIuYW5jaG9yXCJcbiAgW2hvcml6b250YWxBbGlnbl09XCJob3Jpem9udGFsQWxpZ25cIlxuICBbdmVydGljYWxBbGlnbl09XCJ2ZXJ0aWNhbEFsaWduXCJcbiAgW3Jlc3RvcmVGb2N1c109XCJyZXN0b3JlRm9jdXNcIlxuICBbbG9ja0FsaWdubWVudF09XCJ0cnVlXCJcbiAgW2F1dG9Gb2N1c109XCJhdXRvRm9jdXNcIlxuICBvcGVuVHJhbnNpdGlvbj1cIjBtc1wiXG4gIGNsb3NlVHJhbnNpdGlvbj1cIjBtc1wiXG4gIChvcGVuZWQpPVwib25PcGVuKClcIlxuICAoYWZ0ZXJPcGVuKT1cIm9uQWZ0ZXJPcGVuKClcIlxuICAoY2xvc2VkKT1cIm9uQ2xvc2UoKVwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cInBvcG92ZXJDb250YWluZXJcIlxuICAgIFtuZ0NsYXNzXT1cIm1hcmdpbkNsYXNzZXNcIlxuICAgIFtjbGFzcy5vdmVyZmxvd0hpZGRlbl09XCIhYWxsb3dPdmVyZmxvd1wiXG4gICAgKG1vdXNlZW50ZXIpPVwidHJpZ2dlci5zaG93UG9wb3Zlcih0cnVlKVwiXG4gICAgKG1vdXNlbGVhdmUpPVwidHJpZ2dlci5jbG9zZVBvcG92ZXIodHJ1ZSlcIlxuICAgIChrZXlkb3duLmVzY2FwZSk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRyaWdnZXIuY2xvc2VQb3BvdmVyKHRydWUpXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc09wZW5cIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50XCIgLz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L3NhdC1wb3BvdmVyPlxuPG5nLXRlbXBsYXRlICNpbXBsaWNpdENvbnRlbnQ+XG4gIDxuZy1jb250ZW50IC8+XG48L25nLXRlbXBsYXRlPlxuIl19
|