valtech-components 2.0.418 → 2.0.420
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/atoms/button/button.component.mjs +30 -102
- package/esm2022/lib/components/atoms/countdown/countdown.component.mjs +2 -7
- package/esm2022/lib/components/atoms/display/display.component.mjs +18 -101
- package/esm2022/lib/components/atoms/image/image.component.mjs +2 -5
- package/esm2022/lib/components/atoms/price-tag/price-tag.component.mjs +2 -12
- package/esm2022/lib/components/atoms/qr-code/qr-code.component.mjs +4 -29
- package/esm2022/lib/components/atoms/text/text.component.mjs +49 -171
- package/esm2022/lib/components/atoms/title/title.component.mjs +23 -65
- package/esm2022/lib/components/atoms/title/types.mjs +7 -19
- package/esm2022/lib/components/molecules/accordion/accordion.component.mjs +7 -53
- package/esm2022/lib/components/molecules/alert-box/alert-box.component.mjs +7 -26
- package/esm2022/lib/components/molecules/breadcrumb/breadcrumb.component.mjs +7 -42
- package/esm2022/lib/components/molecules/check-input/check-input.component.mjs +12 -41
- package/esm2022/lib/components/molecules/chip-group/chip-group.component.mjs +3 -28
- package/esm2022/lib/components/molecules/code-display/code-display.component.mjs +2 -5
- package/esm2022/lib/components/molecules/command-display/command-display.component.mjs +3 -6
- package/esm2022/lib/components/molecules/comment/comment.component.mjs +5 -31
- package/esm2022/lib/components/molecules/currency-input/currency-input.component.mjs +2 -23
- package/esm2022/lib/components/molecules/date-range-input/date-range-input.component.mjs +2 -29
- package/esm2022/lib/components/molecules/expandable-text/expandable-text.component.mjs +4 -6
- package/esm2022/lib/components/molecules/glow-card/glow-card.component.mjs +16 -40
- package/esm2022/lib/components/molecules/language-selector/language-selector.component.mjs +25 -125
- package/esm2022/lib/components/molecules/multi-select-search/multi-select-search.component.mjs +4 -6
- package/esm2022/lib/components/molecules/number-stepper/number-stepper.component.mjs +2 -10
- package/esm2022/lib/components/molecules/participant-card/participant-card.component.mjs +2 -4
- package/esm2022/lib/components/molecules/phone-input/phone-input.component.mjs +2 -23
- package/esm2022/lib/components/molecules/plain-code-box/plain-code-box.component.mjs +3 -6
- package/esm2022/lib/components/molecules/popover-selector/popover-selector.component.mjs +9 -12
- package/esm2022/lib/components/molecules/raffle-status-card/raffle-status-card.component.mjs +3 -11
- package/esm2022/lib/components/molecules/range-input/range-input.component.mjs +4 -25
- package/esm2022/lib/components/molecules/segment-control/segment-control.component.mjs +3 -34
- package/esm2022/lib/components/molecules/select-input/select-input.component.mjs +11 -20
- package/esm2022/lib/components/molecules/select-search/select-search.component.mjs +4 -6
- package/esm2022/lib/components/molecules/share-buttons/share-buttons.component.mjs +1 -6
- package/esm2022/lib/components/molecules/stepper/stepper.component.mjs +3 -28
- package/esm2022/lib/components/molecules/tabs/tabs.component.mjs +7 -41
- package/esm2022/lib/components/molecules/textarea-input/textarea-input.component.mjs +2 -27
- package/esm2022/lib/components/molecules/ticket-grid/ticket-grid.component.mjs +2 -10
- package/esm2022/lib/components/molecules/toggle-input/toggle-input.component.mjs +7 -37
- package/esm2022/lib/components/molecules/winner-display/winner-display.component.mjs +1 -12
- package/esm2022/lib/components/organisms/comment-section/comment-section.component.mjs +8 -54
- package/esm2022/lib/components/organisms/data-table/data-table.component.mjs +1 -3
- package/esm2022/lib/components/organisms/wizard/wizard.component.mjs +3 -5
- package/esm2022/lib/services/locale.service.mjs +75 -0
- package/esm2022/lib/services/types.mjs +5 -3
- package/esm2022/public-api.mjs +2 -7
- package/fesm2022/valtech-components.mjs +366 -2279
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/atoms/button/button.component.d.ts +12 -37
- package/lib/components/atoms/countdown/countdown.component.d.ts +0 -1
- package/lib/components/atoms/display/display.component.d.ts +8 -60
- package/lib/components/atoms/image/image.component.d.ts +0 -2
- package/lib/components/atoms/price-tag/price-tag.component.d.ts +0 -1
- package/lib/components/atoms/qr-code/qr-code.component.d.ts +2 -6
- package/lib/components/atoms/text/text.component.d.ts +20 -68
- package/lib/components/atoms/title/title.component.d.ts +7 -12
- package/lib/components/atoms/title/types.d.ts +11 -24
- package/lib/components/molecules/accordion/accordion.component.d.ts +2 -9
- package/lib/components/molecules/alert-box/alert-box.component.d.ts +3 -8
- package/lib/components/molecules/breadcrumb/breadcrumb.component.d.ts +2 -8
- package/lib/components/molecules/check-input/check-input.component.d.ts +2 -10
- package/lib/components/molecules/chip-group/chip-group.component.d.ts +2 -8
- package/lib/components/molecules/code-display/code-display.component.d.ts +0 -2
- package/lib/components/molecules/command-display/command-display.component.d.ts +0 -3
- package/lib/components/molecules/comment/comment.component.d.ts +2 -6
- package/lib/components/molecules/currency-input/currency-input.component.d.ts +0 -3
- package/lib/components/molecules/date-range-input/date-range-input.component.d.ts +0 -3
- package/lib/components/molecules/expandable-text/expandable-text.component.d.ts +0 -1
- package/lib/components/molecules/glow-card/glow-card.component.d.ts +5 -9
- package/lib/components/molecules/language-selector/language-selector.component.d.ts +7 -19
- package/lib/components/molecules/multi-select-search/multi-select-search.component.d.ts +0 -2
- package/lib/components/molecules/number-stepper/number-stepper.component.d.ts +0 -1
- package/lib/components/molecules/participant-card/participant-card.component.d.ts +0 -1
- package/lib/components/molecules/phone-input/phone-input.component.d.ts +0 -3
- package/lib/components/molecules/plain-code-box/plain-code-box.component.d.ts +0 -3
- package/lib/components/molecules/popover-selector/popover-selector.component.d.ts +3 -4
- package/lib/components/molecules/raffle-status-card/raffle-status-card.component.d.ts +0 -1
- package/lib/components/molecules/range-input/range-input.component.d.ts +3 -8
- package/lib/components/molecules/segment-control/segment-control.component.d.ts +2 -8
- package/lib/components/molecules/select-input/select-input.component.d.ts +2 -3
- package/lib/components/molecules/select-search/select-search.component.d.ts +0 -2
- package/lib/components/molecules/share-buttons/share-buttons.component.d.ts +0 -1
- package/lib/components/molecules/stepper/stepper.component.d.ts +2 -8
- package/lib/components/molecules/tabs/tabs.component.d.ts +2 -8
- package/lib/components/molecules/textarea-input/textarea-input.component.d.ts +2 -6
- package/lib/components/molecules/ticket-grid/ticket-grid.component.d.ts +0 -1
- package/lib/components/molecules/toggle-input/toggle-input.component.d.ts +2 -8
- package/lib/components/molecules/winner-display/winner-display.component.d.ts +0 -1
- package/lib/components/organisms/comment-section/comment-section.component.d.ts +2 -6
- package/lib/components/organisms/data-table/data-table.component.d.ts +0 -1
- package/lib/components/organisms/wizard/wizard.component.d.ts +0 -2
- package/lib/services/locale.service.d.ts +52 -0
- package/lib/services/types.d.ts +1 -6
- package/package.json +1 -3
- package/public-api.d.ts +1 -5
- package/esm2022/lib/services/lang-provider/components/lang-settings.mjs +0 -13
- package/esm2022/lib/services/lang-provider/content.mjs +0 -156
- package/esm2022/lib/services/lang-provider/lang-provider.service.mjs +0 -530
- package/esm2022/lib/services/lang-provider/types.mjs +0 -23
- package/esm2022/lib/shared/utils/content.mjs +0 -186
- package/esm2022/lib/shared/utils/simple-content.mjs +0 -119
- package/lib/services/lang-provider/components/lang-settings.d.ts +0 -3
- package/lib/services/lang-provider/content.d.ts +0 -17
- package/lib/services/lang-provider/lang-provider.service.d.ts +0 -264
- package/lib/services/lang-provider/types.d.ts +0 -30
- package/lib/shared/utils/content.d.ts +0 -199
- package/lib/shared/utils/simple-content.d.ts +0 -120
|
@@ -3,20 +3,17 @@ import { Component, inject, Input } from '@angular/core';
|
|
|
3
3
|
import { Clipboard } from '@capacitor/clipboard';
|
|
4
4
|
import { ToastController } from '@ionic/angular';
|
|
5
5
|
import { IonIcon } from '@ionic/angular/standalone';
|
|
6
|
-
import { LangService } from '../../../services/lang-provider/lang-provider.service';
|
|
7
6
|
import * as i0 from "@angular/core";
|
|
8
7
|
export class CommandDisplayComponent {
|
|
9
8
|
constructor() {
|
|
10
9
|
this.toast = inject(ToastController);
|
|
11
|
-
this.langService = inject(LangService);
|
|
12
10
|
}
|
|
13
11
|
async copyCommand() {
|
|
14
12
|
if (this.props.text) {
|
|
15
13
|
await Clipboard.write({
|
|
16
14
|
string: this.props.text,
|
|
17
15
|
});
|
|
18
|
-
|
|
19
|
-
this.presentToast(copiedMessage);
|
|
16
|
+
this.presentToast('¡Copiado al portapapeles!');
|
|
20
17
|
}
|
|
21
18
|
}
|
|
22
19
|
async presentToast(message) {
|
|
@@ -44,7 +41,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
44
41
|
<ion-icon name="copy-outline" class="copy-icon" (click)="copyCommand()"></ion-icon>
|
|
45
42
|
</div>
|
|
46
43
|
`, styles: [".command-container{display:flex;align-items:center;justify-content:space-between;background-color:var(--ion-color-light, #f2f2f2);border-radius:24px;padding:12px 16px;box-shadow:0 2px 4px #0000001a}.command-text{flex-grow:1;font-family:monospace;font-size:.8rem;color:var(--ion-color-dark, #333);margin-right:10px}.copy-icon{font-size:1.3rem;color:var(--ion-color-medium, #92949c);cursor:pointer;transition:color .2s ease-in-out}.copy-icon:hover{color:var(--ion-color-primary, #3880ff)}@media (min-width: 600px){.command-text,.copy-icon{font-size:1.2rem}}\n"] }]
|
|
47
|
-
}],
|
|
44
|
+
}], propDecorators: { props: [{
|
|
48
45
|
type: Input
|
|
49
46
|
}] } });
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC1kaXNwbGF5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvY29tbWFuZC1kaXNwbGF5L2NvbW1hbmQtZGlzcGxheS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFlcEQsTUFBTSxPQUFPLHVCQUF1QjtJQVpwQztRQWFFLFVBQUssR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7S0FzQmpDO0lBbEJDLEtBQUssQ0FBQyxXQUFXO1FBQ2YsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3BCLE1BQU0sU0FBUyxDQUFDLEtBQUssQ0FBQztnQkFDcEIsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSTthQUN4QixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDakQsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQWU7UUFDaEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNwQyxPQUFPLEVBQUUsT0FBTztZQUNoQixRQUFRLEVBQUUsSUFBSTtZQUNkLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLEtBQUssRUFBRSxNQUFNO1NBQ2QsQ0FBQyxDQUFDO1FBQ0gsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xCLENBQUM7K0dBdEJVLHVCQUF1QjttR0FBdkIsdUJBQXVCLDJHQVJ4Qjs7Ozs7R0FLVCxzbkJBTlMsWUFBWSwrQkFBRSxPQUFPOzs0RkFTcEIsdUJBQXVCO2tCQVpuQyxTQUFTOytCQUNFLHFCQUFxQixjQUNuQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQ3RCOzs7OztHQUtUOzhCQU1RLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENsaXBib2FyZCB9IGZyb20gJ0BjYXBhY2l0b3IvY2xpcGJvYXJkJztcbmltcG9ydCB7IFRvYXN0Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IElvbkljb24gfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IENvbW1hbmREaXNwbGF5TWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWNvbW1hbmQtZGlzcGxheScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElvbkljb25dLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJjb21tYW5kLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbW1hbmQtdGV4dFwiPiQge3sgcHJvcHMudGV4dCB9fTwvZGl2PlxuICAgICAgPGlvbi1pY29uIG5hbWU9XCJjb3B5LW91dGxpbmVcIiBjbGFzcz1cImNvcHktaWNvblwiIChjbGljayk9XCJjb3B5Q29tbWFuZCgpXCI+PC9pb24taWNvbj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vY29tbWFuZC1kaXNwbGF5LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENvbW1hbmREaXNwbGF5Q29tcG9uZW50IHtcbiAgdG9hc3QgPSBpbmplY3QoVG9hc3RDb250cm9sbGVyKTtcblxuICBASW5wdXQoKSBwcm9wczogQ29tbWFuZERpc3BsYXlNZXRhZGF0YTtcblxuICBhc3luYyBjb3B5Q29tbWFuZCgpIHtcbiAgICBpZiAodGhpcy5wcm9wcy50ZXh0KSB7XG4gICAgICBhd2FpdCBDbGlwYm9hcmQud3JpdGUoe1xuICAgICAgICBzdHJpbmc6IHRoaXMucHJvcHMudGV4dCxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5wcmVzZW50VG9hc3QoJ8KhQ29waWFkbyBhbCBwb3J0YXBhcGVsZXMhJyk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcHJlc2VudFRvYXN0KG1lc3NhZ2U6IHN0cmluZykge1xuICAgIGNvbnN0IHRvYXN0ID0gYXdhaXQgdGhpcy50b2FzdC5jcmVhdGUoe1xuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIGR1cmF0aW9uOiAyMDAwLFxuICAgICAgcG9zaXRpb246ICdib3R0b20nLFxuICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICB9KTtcbiAgICB0b2FzdC5wcmVzZW50KCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter
|
|
1
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { IonIcon, IonButton, IonPopover, IonList, IonItem, IonLabel } from '@ionic/angular/standalone';
|
|
4
4
|
import { AvatarComponent } from '../../atoms/avatar/avatar.component';
|
|
5
|
-
import { LangService } from '../../../services/lang-provider/lang-provider.service';
|
|
6
5
|
import { addIcons } from 'ionicons';
|
|
7
6
|
import { ellipsisHorizontal, checkmarkCircle, chatbubbleOutline, heartOutline, heart, thumbsUpOutline, thumbsUp, happyOutline, happy, sadOutline, sad, chevronDown, chevronUp, pin, pencil, trash, flag, share, } from 'ionicons/icons';
|
|
8
7
|
import * as i0 from "@angular/core";
|
|
@@ -75,28 +74,9 @@ export class CommentComponent {
|
|
|
75
74
|
this.loadMoreClick = new EventEmitter();
|
|
76
75
|
this.collapseToggle = new EventEmitter();
|
|
77
76
|
this.displayContent = '';
|
|
78
|
-
this.langSubscription = null;
|
|
79
|
-
this.langService = inject(LangService);
|
|
80
77
|
}
|
|
81
78
|
ngOnInit() {
|
|
82
|
-
this.
|
|
83
|
-
if (this.props.contentKey && this.props.contentClass) {
|
|
84
|
-
this.langSubscription = this.langService.currentLang$.subscribe(() => {
|
|
85
|
-
this.updateDisplayContent();
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
ngOnDestroy() {
|
|
90
|
-
this.langSubscription?.unsubscribe();
|
|
91
|
-
}
|
|
92
|
-
updateDisplayContent() {
|
|
93
|
-
if (this.props.contentKey && this.props.contentClass) {
|
|
94
|
-
this.displayContent =
|
|
95
|
-
this.langService.getText(this.props.contentClass, this.props.contentKey, this.props.contentFallback || this.props.content);
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
this.displayContent = this.props.content;
|
|
99
|
-
}
|
|
79
|
+
this.displayContent = this.props.content || this.props.contentFallback || '';
|
|
100
80
|
}
|
|
101
81
|
getInitials(name) {
|
|
102
82
|
return name
|
|
@@ -172,16 +152,10 @@ export class CommentComponent {
|
|
|
172
152
|
return 'var(--ion-color-medium)';
|
|
173
153
|
}
|
|
174
154
|
getActionLabel(action) {
|
|
175
|
-
|
|
176
|
-
return this.langService.getText(action.contentClass, action.contentKey, action.contentFallback || action.label);
|
|
177
|
-
}
|
|
178
|
-
return action.label;
|
|
155
|
+
return action.label || action.contentFallback || '';
|
|
179
156
|
}
|
|
180
157
|
getMenuItemLabel(item) {
|
|
181
|
-
|
|
182
|
-
return this.langService.getText(item.contentClass, item.contentKey, item.contentFallback || item.label);
|
|
183
|
-
}
|
|
184
|
-
return item.label;
|
|
158
|
+
return item.label || item.contentFallback || '';
|
|
185
159
|
}
|
|
186
160
|
hasChildren() {
|
|
187
161
|
return !!(this.props.children && this.props.children.length > 0) ||
|
|
@@ -631,4 +605,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
631
605
|
}], collapseToggle: [{
|
|
632
606
|
type: Output
|
|
633
607
|
}] } });
|
|
634
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2NvbW1lbnQvY29tbWVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBRXBGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixLQUFLLEVBQ0wsZUFBZSxFQUNmLFFBQVEsRUFDUixZQUFZLEVBQ1osS0FBSyxFQUNMLFVBQVUsRUFDVixHQUFHLEVBQ0gsV0FBVyxFQUNYLFNBQVMsRUFDVCxHQUFHLEVBQ0gsTUFBTSxFQUNOLEtBQUssRUFDTCxJQUFJLEVBQ0osS0FBSyxHQUNOLE1BQU0sZ0JBQWdCLENBQUM7O0FBY3hCLFFBQVEsQ0FBQztJQUNQLGtCQUFrQjtJQUNsQixlQUFlO0lBQ2YsaUJBQWlCO0lBQ2pCLFlBQVk7SUFDWixLQUFLO0lBQ0wsZUFBZTtJQUNmLFFBQVE7SUFDUixZQUFZO0lBQ1osS0FBSztJQUNMLFVBQVU7SUFDVixHQUFHO0lBQ0gsV0FBVztJQUNYLFNBQVM7SUFDVCxHQUFH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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpTFQsb3RMQTJDVSxnQkFBZ0Isd0xBck96QixZQUFZLCtCQUNaLE9BQU8sMkpBQ1AsU0FBUyxvUEFDVCxVQUFVLHdEQUNWLE9BQU8seUZBQ1AsT0FBTywwTkFDUCxRQUFRLDZGQUNSLGVBQWU7OzRGQThOTixnQkFBZ0I7a0JBek81QixTQUFTOytCQUNFLGFBQWEsY0FDWCxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixPQUFPO3dCQUNQLFNBQVM7d0JBQ1QsVUFBVTt3QkFDVixPQUFPO3dCQUNQLE9BQU87d0JBQ1AsUUFBUTt3QkFDUixlQUFlO3FCQUNoQixZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpTFQ7OEJBNENRLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE9uRGVzdHJveSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW9uSWNvbiwgSW9uQnV0dG9uLCBJb25Qb3BvdmVyLCBJb25MaXN0LCBJb25JdGVtLCBJb25MYWJlbCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYXZhdGFyL2F2YXRhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGFuZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sYW5nLXByb3ZpZGVyL2xhbmctcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHtcbiAgZWxsaXBzaXNIb3Jpem9udGFsLFxuICBjaGVja21hcmtDaXJjbGUsXG4gIGNoYXRidWJibGVPdXRsaW5lLFxuICBoZWFydE91dGxpbmUsXG4gIGhlYXJ0LFxuICB0aHVtYnNVcE91dGxpbmUsXG4gIHRodW1ic1VwLFxuICBoYXBweU91dGxpbmUsXG4gIGhhcHB5LFxuICBzYWRPdXRsaW5lLFxuICBzYWQsXG4gIGNoZXZyb25Eb3duLFxuICBjaGV2cm9uVXAsXG4gIHBpbixcbiAgcGVuY2lsLFxuICB0cmFzaCxcbiAgZmxhZyxcbiAgc2hhcmUsXG59IGZyb20gJ2lvbmljb25zL2ljb25zJztcbmltcG9ydCB7XG4gIENvbW1lbnRNZXRhZGF0YSxcbiAgQ29tbWVudEF1dGhvcixcbiAgQ29tbWVudFJlYWN0aW9uLFxuICBDb21tZW50QWN0aW9uLFxuICBDb21tZW50TWVudUl0ZW0sXG4gIENvbW1lbnRBdXRob3JDbGlja0V2ZW50LFxuICBDb21tZW50UmVhY3Rpb25DbGlja0V2ZW50LFxuICBDb21tZW50QWN0aW9uQ2xpY2tFdmVudCxcbiAgQ29tbWVudE1lbnVJdGVtQ2xpY2tFdmVudCxcbiAgQ29tbWVudExvYWRNb3JlRXZlbnQsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5hZGRJY29ucyh7XG4gIGVsbGlwc2lzSG9yaXpvbnRhbCxcbiAgY2hlY2ttYXJrQ2lyY2xlLFxuICBjaGF0YnViYmxlT3V0bGluZSxcbiAgaGVhcnRPdXRsaW5lLFxuICBoZWFydCxcbiAgdGh1bWJzVXBPdXRsaW5lLFxuICB0aHVtYnNVcCxcbiAgaGFwcHlPdXRsaW5lLFxuICBoYXBweSxcbiAgc2FkT3V0bGluZSxcbiAgc2FkLFxuICBjaGV2cm9uRG93bixcbiAgY2hldnJvblVwLFxuICBwaW4sXG4gIHBlbmNpbCxcbiAgdHJhc2gsXG4gIGZsYWcsXG4gIHNoYXJlLFxufSk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1jb21tZW50JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBJb25JY29uLFxuICAgIElvbkJ1dHRvbixcbiAgICBJb25Qb3BvdmVyLFxuICAgIElvbkxpc3QsXG4gICAgSW9uSXRlbSxcbiAgICBJb25MYWJlbCxcbiAgICBBdmF0YXJDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjb21tZW50XCJcbiAgICAgIFtjbGFzcy5oaWdobGlnaHRlZF09XCJwcm9wcy5oaWdobGlnaHRlZFwiXG4gICAgICBbY2xhc3MucGlubmVkXT1cInByb3BzLnBpbm5lZFwiXG4gICAgICBbY2xhc3MuY29sbGFwc2VkXT1cInByb3BzLmNvbGxhcHNlZFwiXG4gICAgICBbc3R5bGUuLS1kZXB0aF09XCJwcm9wcy5kZXB0aCB8fCAwXCJcbiAgICA+XG4gICAgICBAaWYgKHByb3BzLnBpbm5lZCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicGlubmVkLWluZGljYXRvclwiPlxuICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwicGluXCI+PC9pb24taWNvbj5cbiAgICAgICAgICA8c3Bhbj5QaW5uZWQ8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY29tbWVudC1tYWluXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb21tZW50LWF2YXRhclwiIChjbGljayk9XCJvbkF1dGhvckNsaWNrKClcIj5cbiAgICAgICAgICBAaWYgKHByb3BzLmF1dGhvci5hdmF0YXIpIHtcbiAgICAgICAgICAgIDx2YWwtYXZhdGFyIFtwcm9wc109XCJwcm9wcy5hdXRob3IuYXZhdGFyXCI+PC92YWwtYXZhdGFyPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1wbGFjZWhvbGRlclwiPlxuICAgICAgICAgICAgICB7eyBnZXRJbml0aWFscyhwcm9wcy5hdXRob3IubmFtZSkgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnQtYm9keVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21tZW50LWhlYWRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF1dGhvci1pbmZvXCIgKGNsaWNrKT1cIm9uQXV0aG9yQ2xpY2soKVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF1dGhvci1uYW1lXCI+e3sgcHJvcHMuYXV0aG9yLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIEBpZiAocHJvcHMuYXV0aG9yLnZlcmlmaWVkKSB7XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjaGVja21hcmstY2lyY2xlXCIgY2xhc3M9XCJ2ZXJpZmllZC1iYWRnZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChwcm9wcy5hdXRob3IudXNlcm5hbWUpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF1dGhvci11c2VybmFtZVwiPiYjNjQ7e3sgcHJvcHMuYXV0aG9yLnVzZXJuYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnQtbWV0YVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWVzdGFtcFwiPnt7IGZvcm1hdFRpbWVzdGFtcChwcm9wcy50aW1lc3RhbXApIH19PC9zcGFuPlxuICAgICAgICAgICAgICBAaWYgKHByb3BzLmVkaXRlZCkge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZWRpdGVkLWxhYmVsXCI+KGVkaXRlZCk8L3NwYW4+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICBAaWYgKHByb3BzLm1lbnVJdGVtcyAmJiBwcm9wcy5tZW51SXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1vcmUtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbaWRdPVwiJ21lbnUtdHJpZ2dlci0nICsgcHJvcHMudG9rZW5cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJlbGxpcHNpcy1ob3Jpem9udGFsXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgICAgICAgICA8aW9uLXBvcG92ZXJcbiAgICAgICAgICAgICAgICBbdHJpZ2dlcl09XCInbWVudS10cmlnZ2VyLScgKyBwcm9wcy50b2tlblwiXG4gICAgICAgICAgICAgICAgW2Rpc21pc3NPblNlbGVjdF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIDxpb24tbGlzdD5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBwcm9wcy5tZW51SXRlbXM7IHRyYWNrIGl0ZW0udG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uZGl2aWRlckJlZm9yZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtZGl2aWRlclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtidXR0b25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGV0YWlsXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk1lbnVJdGVtQ2xpY2soaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5pY29uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIml0ZW0uaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvdD1cInN0YXJ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiaXRlbS5jb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBbY29sb3JdPVwiaXRlbS5jb2xvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRNZW51SXRlbUxhYmVsKGl0ZW0pIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L2lvbi1saXN0PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDwvaW9uLXBvcG92ZXI+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICBAaWYgKCFwcm9wcy5jb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb21tZW50LWNvbnRlbnRcIlxuICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInByb2Nlc3NDb250ZW50KGRpc3BsYXlDb250ZW50KVwiXG4gICAgICAgICAgICA+PC9kaXY+XG5cbiAgICAgICAgICAgIEBpZiAocHJvcHMucmVhY3Rpb25zICYmIHByb3BzLnJlYWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21tZW50LXJlYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKHJlYWN0aW9uIG9mIHByb3BzLnJlYWN0aW9uczsgdHJhY2sgcmVhY3Rpb24udG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZWFjdGlvbi1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInJlYWN0aW9uLmFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXJlYWN0aW9uLWNvbG9yXT1cImdldFJlYWN0aW9uQ29sb3IocmVhY3Rpb24pXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUmVhY3Rpb25DbGljayhyZWFjdGlvbilcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gW25hbWVdPVwicmVhY3Rpb24uaWNvblwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAocmVhY3Rpb24uY291bnQgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWFjdGlvbi1jb3VudFwiPnt7IGZvcm1hdENvdW50KHJlYWN0aW9uLmNvdW50KSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGlmIChwcm9wcy5hY3Rpb25zICYmIHByb3BzLmFjdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbWVudC1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgQGZvciAoYWN0aW9uIG9mIHByb3BzLmFjdGlvbnM7IHRyYWNrIGFjdGlvbi50b2tlbikge1xuICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cImNsZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cImFjdGlvbi5jb2xvciB8fCAnbWVkaXVtJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhY3Rpb24uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25BY3Rpb25DbGljayhhY3Rpb24pXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChhY3Rpb24uaWNvbikge1xuICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJhY3Rpb24uaWNvblwiIHNsb3Q9XCJzdGFydFwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAge3sgZ2V0QWN0aW9uTGFiZWwoYWN0aW9uKSB9fVxuICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZXhwYW5kLWJ1dHRvblwiIChjbGljayk9XCJvblRvZ2dsZUNvbGxhcHNlKClcIj5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjaGV2cm9uLWRvd25cIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICA8c3Bhbj5TaG93IGNvbW1lbnQ8L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIEBpZiAoIXByb3BzLmNvbGxhcHNlZCAmJiBoYXNDaGlsZHJlbigpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb21tZW50LWNoaWxkcmVuXCI+XG4gICAgICAgICAgQGlmIChwcm9wcy5jb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb2xsYXBzZS1idXR0b25cIiAoY2xpY2spPVwib25Ub2dnbGVDb2xsYXBzZSgpXCI+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hldnJvbi11cFwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIDxzcGFuPkhpZGUgcmVwbGllczwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAoY2FuU2hvd0NoaWxkcmVuKCkpIHtcbiAgICAgICAgICAgIEBmb3IgKGNoaWxkIG9mIHByb3BzLmNoaWxkcmVuOyB0cmFjayBjaGlsZC50b2tlbikge1xuICAgICAgICAgICAgICA8dmFsLWNvbW1lbnRcbiAgICAgICAgICAgICAgICBbcHJvcHNdPVwiZ2V0Q2hpbGRQcm9wcyhjaGlsZClcIlxuICAgICAgICAgICAgICAgIChhdXRob3JDbGljayk9XCJhdXRob3JDbGljay5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgIChyZWFjdGlvbkNsaWNrKT1cInJlYWN0aW9uQ2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoYWN0aW9uQ2xpY2spPVwiYWN0aW9uQ2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAobWVudUl0ZW1DbGljayk9XCJtZW51SXRlbUNsaWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGxvYWRNb3JlQ2xpY2spPVwibG9hZE1vcmVDbGljay5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgIChjb2xsYXBzZVRvZ2dsZSk9XCJjb2xsYXBzZVRvZ2dsZS5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICA+PC92YWwtY29tbWVudD5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGlmIChoYXNNb3JlUmVwbGllcygpKSB7XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJsb2FkLW1vcmUtYnV0dG9uXCIgKGNsaWNrKT1cIm9uTG9hZE1vcmVDbGljaygpXCI+XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjaGF0YnViYmxlLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuPkxvYWQge3sgZ2V0UmVtYWluaW5nQ291bnQoKSB9fSBtb3JlIHJlcGxpZXM8L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInZpZXctcmVwbGllcy1idXR0b25cIiAoY2xpY2spPVwib25Mb2FkTW9yZUNsaWNrKClcIj5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjaGF0YnViYmxlLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICA8c3Bhbj5WaWV3IHt7IHByb3BzLnJlcGx5Q291bnQgfHwgcHJvcHMuY2hpbGRyZW4/Lmxlbmd0aCB9fSByZXBsaWVzPC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vY29tbWVudC5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLWNvbW1lbnRcbiAqXG4gKiBBIHZlcnNhdGlsZSBjb21tZW50IGNvbXBvbmVudCBmb3IgZm9ydW1zLCByZXZpZXdzLCBhbmQgc29jaWFsIG1lZGlhLlxuICogU3VwcG9ydHMgYXV0aG9yIGluZm8sIHJlYWN0aW9ucywgYWN0aW9ucywgbmVzdGVkIHJlcGxpZXMsIGFuZCBtb3JlLlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIGNvbW1lbnRcbiAqIDx2YWwtY29tbWVudCBbcHJvcHNdPVwie1xuICogICB0b2tlbjogJzEnLFxuICogICBhdXRob3I6IHsgbmFtZTogJ0pvaG4gRG9lJywgdXNlcm5hbWU6ICdqb2huZCcgfSxcbiAqICAgY29udGVudDogJ1RoaXMgaXMgYSBncmVhdCBwb3N0IScsXG4gKiAgIHRpbWVzdGFtcDogJzIgaG91cnMgYWdvJ1xuICogfVwiPjwvdmFsLWNvbW1lbnQ+XG4gKlxuICogQGV4YW1wbGUgV2l0aCByZWFjdGlvbnMgYW5kIGFjdGlvbnNcbiAqIDx2YWwtY29tbWVudCBbcHJvcHNdPVwie1xuICogICB0b2tlbjogJzEnLFxuICogICBhdXRob3I6IHsgbmFtZTogJ0phbmUnLCBhdmF0YXI6IGF2YXRhclByb3BzLCB2ZXJpZmllZDogdHJ1ZSB9LFxuICogICBjb250ZW50OiAnQW1hemluZyBjb250ZW50ISBDaGVjayBvdXQgaHR0cHM6Ly9leGFtcGxlLmNvbScsXG4gKiAgIHRpbWVzdGFtcDogbmV3IERhdGUoKSxcbiAqICAgcmVhY3Rpb25zOiBbXG4gKiAgICAgeyB0b2tlbjogJ2xpa2UnLCBpY29uOiAnaGVhcnQtb3V0bGluZScsIGNvdW50OiA0MiwgYWN0aXZlOiBmYWxzZSB9XG4gKiAgIF0sXG4gKiAgIGFjdGlvbnM6IFtcbiAqICAgICB7IHRva2VuOiAncmVwbHknLCBsYWJlbDogJ1JlcGx5JywgaWNvbjogJ2NoYXRidWJibGUtb3V0bGluZScgfVxuICogICBdLFxuICogICBtZW51SXRlbXM6IFtcbiAqICAgICB7IHRva2VuOiAnZWRpdCcsIGxhYmVsOiAnRWRpdCcsIGljb246ICdwZW5jaWwnIH0sXG4gKiAgICAgeyB0b2tlbjogJ2RlbGV0ZScsIGxhYmVsOiAnRGVsZXRlJywgaWNvbjogJ3RyYXNoJywgY29sb3I6ICdkYW5nZXInIH1cbiAqICAgXVxuICogfVwiPjwvdmFsLWNvbW1lbnQ+XG4gKlxuICogQGlucHV0IHByb3BzOiBDb21tZW50TWV0YWRhdGEgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgY29tbWVudFxuICogQG91dHB1dCBhdXRob3JDbGljayAtIEVtaXRzIHdoZW4gYXV0aG9yIG5hbWUvYXZhdGFyIGlzIGNsaWNrZWRcbiAqIEBvdXRwdXQgcmVhY3Rpb25DbGljayAtIEVtaXRzIHdoZW4gYSByZWFjdGlvbiBpcyBjbGlja2VkXG4gKiBAb3V0cHV0IGFjdGlvbkNsaWNrIC0gRW1pdHMgd2hlbiBhbiBhY3Rpb24gYnV0dG9uIGlzIGNsaWNrZWRcbiAqIEBvdXRwdXQgbWVudUl0ZW1DbGljayAtIEVtaXRzIHdoZW4gYSBtZW51IGl0ZW0gaXMgY2xpY2tlZFxuICogQG91dHB1dCBsb2FkTW9yZUNsaWNrIC0gRW1pdHMgd2hlbiBsb2FkIG1vcmUgcmVwbGllcyBpcyBjbGlja2VkXG4gKiBAb3V0cHV0IGNvbGxhcHNlVG9nZ2xlIC0gRW1pdHMgd2hlbiBjb21tZW50IGlzIGNvbGxhcHNlZC9leHBhbmRlZFxuICovXG5leHBvcnQgY2xhc3MgQ29tbWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcHJvcHM6IENvbW1lbnRNZXRhZGF0YTtcblxuICBAT3V0cHV0KCkgYXV0aG9yQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPENvbW1lbnRBdXRob3JDbGlja0V2ZW50PigpO1xuICBAT3V0cHV0KCkgcmVhY3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Q29tbWVudFJlYWN0aW9uQ2xpY2tFdmVudD4oKTtcbiAgQE91dHB1dCgpIGFjdGlvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxDb21tZW50QWN0aW9uQ2xpY2tFdmVudD4oKTtcbiAgQE91dHB1dCgpIG1lbnVJdGVtQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPENvbW1lbnRNZW51SXRlbUNsaWNrRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBsb2FkTW9yZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxDb21tZW50TG9hZE1vcmVFdmVudD4oKTtcbiAgQE91dHB1dCgpIGNvbGxhcHNlVG9nZ2xlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHRva2VuOiBzdHJpbmc7IGNvbGxhcHNlZDogYm9vbGVhbiB9PigpO1xuXG4gIGRpc3BsYXlDb250ZW50OiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBsYW5nU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBsYW5nU2VydmljZSA9IGluamVjdChMYW5nU2VydmljZSk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVEaXNwbGF5Q29udGVudCgpO1xuXG4gICAgaWYgKHRoaXMucHJvcHMuY29udGVudEtleSAmJiB0aGlzLnByb3BzLmNvbnRlbnRDbGFzcykge1xuICAgICAgdGhpcy5sYW5nU3Vic2NyaXB0aW9uID0gdGhpcy5sYW5nU2VydmljZS5jdXJyZW50TGFuZyQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVEaXNwbGF5Q29udGVudCgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5sYW5nU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVEaXNwbGF5Q29udGVudCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9wcy5jb250ZW50S2V5ICYmIHRoaXMucHJvcHMuY29udGVudENsYXNzKSB7XG4gICAgICB0aGlzLmRpc3BsYXlDb250ZW50ID1cbiAgICAgICAgdGhpcy5sYW5nU2VydmljZS5nZXRUZXh0KFxuICAgICAgICAgIHRoaXMucHJvcHMuY29udGVudENsYXNzLFxuICAgICAgICAgIHRoaXMucHJvcHMuY29udGVudEtleSxcbiAgICAgICAgICB0aGlzLnByb3BzLmNvbnRlbnRGYWxsYmFjayB8fCB0aGlzLnByb3BzLmNvbnRlbnRcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kaXNwbGF5Q29udGVudCA9IHRoaXMucHJvcHMuY29udGVudDtcbiAgICB9XG4gIH1cblxuICBnZXRJbml0aWFscyhuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBuYW1lXG4gICAgICAuc3BsaXQoJyAnKVxuICAgICAgLm1hcCgobikgPT4gblswXSlcbiAgICAgIC5qb2luKCcnKVxuICAgICAgLnN1YnN0cmluZygwLCAyKVxuICAgICAgLnRvVXBwZXJDYXNlKCk7XG4gIH1cblxuICBmb3JtYXRUaW1lc3RhbXAodGltZXN0YW1wOiBzdHJpbmcgfCBEYXRlKTogc3RyaW5nIHtcbiAgICBpZiAodHlwZW9mIHRpbWVzdGFtcCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiB0aW1lc3RhbXA7XG4gICAgfVxuXG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBkaWZmID0gbm93LmdldFRpbWUoKSAtIHRpbWVzdGFtcC5nZXRUaW1lKCk7XG4gICAgY29uc3Qgc2Vjb25kcyA9IE1hdGguZmxvb3IoZGlmZiAvIDEwMDApO1xuICAgIGNvbnN0IG1pbnV0ZXMgPSBNYXRoLmZsb29yKHNlY29uZHMgLyA2MCk7XG4gICAgY29uc3QgaG91cnMgPSBNYXRoLmZsb29yKG1pbnV0ZXMgLyA2MCk7XG4gICAgY29uc3QgZGF5cyA9IE1hdGguZmxvb3IoaG91cnMgLyAyNCk7XG5cbiAgICBpZiAoc2Vjb25kcyA8IDYwKSByZXR1cm4gJ0p1c3Qgbm93JztcbiAgICBpZiAobWludXRlcyA8IDYwKSByZXR1cm4gYCR7bWludXRlc31tIGFnb2A7XG4gICAgaWYgKGhvdXJzIDwgMjQpIHJldHVybiBgJHtob3Vyc31oIGFnb2A7XG4gICAgaWYgKGRheXMgPCA3KSByZXR1cm4gYCR7ZGF5c31kIGFnb2A7XG5cbiAgICByZXR1cm4gdGltZXN0YW1wLnRvTG9jYWxlRGF0ZVN0cmluZygpO1xuICB9XG5cbiAgZm9ybWF0Q291bnQoY291bnQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKGNvdW50ID49IDEwMDAwMDApIHtcbiAgICAgIHJldHVybiAoY291bnQgLyAxMDAwMDAwKS50b0ZpeGVkKDEpLnJlcGxhY2UoL1xcLjAkLywgJycpICsgJ00nO1xuICAgIH1cbiAgICBpZiAoY291bnQgPj0gMTAwMCkge1xuICAgICAgcmV0dXJuIChjb3VudCAvIDEwMDApLnRvRml4ZWQoMSkucmVwbGFjZSgvXFwuMCQvLCAnJykgKyAnSyc7XG4gICAgfVxuICAgIHJldHVybiBjb3VudC50b1N0cmluZygpO1xuICB9XG5cbiAgcHJvY2Vzc0NvbnRlbnQoY29udGVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5wcm9wcy5hdXRvTGlua2lmeSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiB0aGlzLmVzY2FwZUh0bWwoY29udGVudCk7XG4gICAgfVxuXG4gICAgLy8gRXNjYXBlIEhUTUwgZmlyc3RcbiAgICBsZXQgcHJvY2Vzc2VkID0gdGhpcy5lc2NhcGVIdG1sKGNvbnRlbnQpO1xuXG4gICAgLy8gVVJMIHJlZ2V4XG4gICAgY29uc3QgdXJsUmVnZXggPSAvKGh0dHBzPzpcXC9cXC9bXlxcczxdK1teXFxzPC4sOzohPylcXF0nXCJdKS9naTtcbiAgICBwcm9jZXNzZWQgPSBwcm9jZXNzZWQucmVwbGFjZShcbiAgICAgIHVybFJlZ2V4LFxuICAgICAgJzxhIGhyZWY9XCIkMVwiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIiBjbGFzcz1cImNvbW1lbnQtbGlua1wiPiQxPC9hPidcbiAgICApO1xuXG4gICAgLy8gQG1lbnRpb25zXG4gICAgY29uc3QgbWVudGlvblJlZ2V4ID0gL0AoXFx3KykvZztcbiAgICBwcm9jZXNzZWQgPSBwcm9jZXNzZWQucmVwbGFjZShcbiAgICAgIG1lbnRpb25SZWdleCxcbiAgICAgICc8c3BhbiBjbGFzcz1cImNvbW1lbnQtbWVudGlvblwiPkAkMTwvc3Bhbj4nXG4gICAgKTtcblxuICAgIC8vICNoYXNodGFnc1xuICAgIGNvbnN0IGhhc2h0YWdSZWdleCA9IC8jKFxcdyspL2c7XG4gICAgcHJvY2Vzc2VkID0gcHJvY2Vzc2VkLnJlcGxhY2UoXG4gICAgICBoYXNodGFnUmVnZXgsXG4gICAgICAnPHNwYW4gY2xhc3M9XCJjb21tZW50LWhhc2h0YWdcIj4jJDE8L3NwYW4+J1xuICAgICk7XG5cbiAgICAvLyBQcmVzZXJ2ZSBsaW5lIGJyZWFrc1xuICAgIHByb2Nlc3NlZCA9IHByb2Nlc3NlZC5yZXBsYWNlKC9cXG4vZywgJzxicj4nKTtcblxuICAgIHJldHVybiBwcm9jZXNzZWQ7XG4gIH1cblxuICBwcml2YXRlIGVzY2FwZUh0bWwodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBkaXYudGV4dENvbnRlbnQgPSB0ZXh0O1xuICAgIHJldHVybiBkaXYuaW5uZXJIVE1MO1xuICB9XG5cbiAgZ2V0UmVhY3Rpb25Db2xvcihyZWFjdGlvbjogQ29tbWVudFJlYWN0aW9uKTogc3RyaW5nIHtcbiAgICBpZiAocmVhY3Rpb24uYWN0aXZlICYmIHJlYWN0aW9uLmFjdGl2ZUNvbG9yKSB7XG4gICAgICByZXR1cm4gYHZhcigtLWlvbi1jb2xvci0ke3JlYWN0aW9uLmFjdGl2ZUNvbG9yfSlgO1xuICAgIH1cbiAgICBpZiAocmVhY3Rpb24uYWN0aXZlKSB7XG4gICAgICByZXR1cm4gJ3ZhcigtLWlvbi1jb2xvci1wcmltYXJ5KSc7XG4gICAgfVxuICAgIGlmIChyZWFjdGlvbi5jb2xvcikge1xuICAgICAgcmV0dXJuIGB2YXIoLS1pb24tY29sb3ItJHtyZWFjdGlvbi5jb2xvcn0pYDtcbiAgICB9XG4gICAgcmV0dXJuICd2YXIoLS1pb24tY29sb3ItbWVkaXVtKSc7XG4gIH1cblxuICBnZXRBY3Rpb25MYWJlbChhY3Rpb246IENvbW1lbnRBY3Rpb24pOiBzdHJpbmcge1xuICAgIGlmIChhY3Rpb24uY29udGVudEtleSAmJiBhY3Rpb24uY29udGVudENsYXNzKSB7XG4gICAgICByZXR1cm4gdGhpcy5sYW5nU2VydmljZS5nZXRUZXh0KFxuICAgICAgICBhY3Rpb24uY29udGVudENsYXNzLFxuICAgICAgICBhY3Rpb24uY29udGVudEtleSxcbiAgICAgICAgYWN0aW9uLmNvbnRlbnRGYWxsYmFjayB8fCBhY3Rpb24ubGFiZWxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBhY3Rpb24ubGFiZWw7XG4gIH1cblxuICBnZXRNZW51SXRlbUxhYmVsKGl0ZW06IENvbW1lbnRNZW51SXRlbSk6IHN0cmluZyB7XG4gICAgaWYgKGl0ZW0uY29udGVudEtleSAmJiBpdGVtLmNvbnRlbnRDbGFzcykge1xuICAgICAgcmV0dXJuIHRoaXMubGFuZ1NlcnZpY2UuZ2V0VGV4dChcbiAgICAgICAgaXRlbS5jb250ZW50Q2xhc3MsXG4gICAgICAgIGl0ZW0uY29udGVudEtleSxcbiAgICAgICAgaXRlbS5jb250ZW50RmFsbGJhY2sgfHwgaXRlbS5sYWJlbFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGl0ZW0ubGFiZWw7XG4gIH1cblxuICBoYXNDaGlsZHJlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEodGhpcy5wcm9wcy5jaGlsZHJlbiAmJiB0aGlzLnByb3BzLmNoaWxkcmVuLmxlbmd0aCA+IDApIHx8XG4gICAgICAgICAgICEhKHRoaXMucHJvcHMucmVwbHlDb3VudCAmJiB0aGlzLnByb3BzLnJlcGx5Q291bnQgPiAwKTtcbiAgfVxuXG4gIGNhblNob3dDaGlsZHJlbigpOiBib29sZWFuIHtcbiAgICBjb25zdCBtYXhEZXB0aCA9IHRoaXMucHJvcHMubWF4RGVwdGggPz8gMztcbiAgICBjb25zdCBjdXJyZW50RGVwdGggPSB0aGlzLnByb3BzLmRlcHRoID8/IDA7XG4gICAgcmV0dXJuIGN1cnJlbnREZXB0aCA8IG1heERlcHRoICYmICEhKHRoaXMucHJvcHMuY2hpbGRyZW4gJiYgdGhpcy5wcm9wcy5jaGlsZHJlbi5sZW5ndGggPiAwKTtcbiAgfVxuXG4gIGdldENoaWxkUHJvcHMoY2hpbGQ6IENvbW1lbnRNZXRhZGF0YSk6IENvbW1lbnRNZXRhZGF0YSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmNoaWxkLFxuICAgICAgZGVwdGg6ICh0aGlzLnByb3BzLmRlcHRoID8/IDApICsgMSxcbiAgICAgIG1heERlcHRoOiB0aGlzLnByb3BzLm1heERlcHRoID8/IDMsXG4gICAgfTtcbiAgfVxuXG4gIGhhc01vcmVSZXBsaWVzKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5wcm9wcy5yZXBseUNvdW50KSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgbG9hZGVkQ291bnQgPSB0aGlzLnByb3BzLmNoaWxkcmVuPy5sZW5ndGggPz8gMDtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5yZXBseUNvdW50ID4gbG9hZGVkQ291bnQ7XG4gIH1cblxuICBnZXRSZW1haW5pbmdDb3VudCgpOiBudW1iZXIge1xuICAgIGNvbnN0IHRvdGFsID0gdGhpcy5wcm9wcy5yZXBseUNvdW50ID8/IDA7XG4gICAgY29uc3QgbG9hZGVkID0gdGhpcy5wcm9wcy5jaGlsZHJlbj8ubGVuZ3RoID8/IDA7XG4gICAgcmV0dXJuIHRvdGFsIC0gbG9hZGVkO1xuICB9XG5cbiAgb25BdXRob3JDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLmF1dGhvckNsaWNrLmVtaXQoe1xuICAgICAgYXV0aG9yOiB0aGlzLnByb3BzLmF1dGhvcixcbiAgICAgIGNvbW1lbnRUb2tlbjogdGhpcy5wcm9wcy50b2tlbixcbiAgICB9KTtcbiAgfVxuXG4gIG9uUmVhY3Rpb25DbGljayhyZWFjdGlvbjogQ29tbWVudFJlYWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5yZWFjdGlvbkNsaWNrLmVtaXQoe1xuICAgICAgcmVhY3Rpb24sXG4gICAgICBjb21tZW50VG9rZW46IHRoaXMucHJvcHMudG9rZW4sXG4gICAgICBpc0FjdGl2ZTogIXJlYWN0aW9uLmFjdGl2ZSxcbiAgICB9KTtcbiAgfVxuXG4gIG9uQWN0aW9uQ2xpY2soYWN0aW9uOiBDb21tZW50QWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5hY3Rpb25DbGljay5lbWl0KHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNvbW1lbnRUb2tlbjogdGhpcy5wcm9wcy50b2tlbixcbiAgICB9KTtcbiAgfVxuXG4gIG9uTWVudUl0ZW1DbGljayhpdGVtOiBDb21tZW50TWVudUl0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLm1lbnVJdGVtQ2xpY2suZW1pdCh7XG4gICAgICBtZW51SXRlbTogaXRlbSxcbiAgICAgIGNvbW1lbnRUb2tlbjogdGhpcy5wcm9wcy50b2tlbixcbiAgICB9KTtcbiAgfVxuXG4gIG9uTG9hZE1vcmVDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRNb3JlQ2xpY2suZW1pdCh7XG4gICAgICBjb21tZW50VG9rZW46IHRoaXMucHJvcHMudG9rZW4sXG4gICAgICBjdXJyZW50Q291bnQ6IHRoaXMucHJvcHMuY2hpbGRyZW4/Lmxlbmd0aCA/PyAwLFxuICAgIH0pO1xuICB9XG5cbiAgb25Ub2dnbGVDb2xsYXBzZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbGxhcHNlVG9nZ2xlLmVtaXQoe1xuICAgICAgdG9rZW46IHRoaXMucHJvcHMudG9rZW4sXG4gICAgICBjb2xsYXBzZWQ6ICF0aGlzLnByb3BzLmNvbGxhcHNlZCxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
608
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2NvbW1lbnQvY29tbWVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixLQUFLLEVBQ0wsZUFBZSxFQUNmLFFBQVEsRUFDUixZQUFZLEVBQ1osS0FBSyxFQUNMLFVBQVUsRUFDVixHQUFHLEVBQ0gsV0FBVyxFQUNYLFNBQVMsRUFDVCxHQUFHLEVBQ0gsTUFBTSxFQUNOLEtBQUssRUFDTCxJQUFJLEVBQ0osS0FBSyxHQUNOLE1BQU0sZ0JBQWdCLENBQUM7O0FBY3hCLFFBQVEsQ0FBQztJQUNQLGtCQUFrQjtJQUNsQixlQUFlO0lBQ2YsaUJBQWlCO0lBQ2pCLFlBQVk7SUFDWixLQUFLO0lBQ0wsZUFBZTtJQUNmLFFBQVE7SUFDUixZQUFZO0lBQ1osS0FBSztJQUNMLFVBQVU7SUFDVixHQUFHO0lBQ0gsV0FBVztJQUNYLFNBQVM7SUFDVCxHQUFHO0lBQ0gsTUFBTTtJQUNOLEtBQUs7SUFDTCxJQUFJO0lBQ0osS0FBSztDQUNOLENBQUMsQ0FBQztBQW1NSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUNHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQXpPN0I7UUE0T1ksZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBMkIsQ0FBQztRQUMxRCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUE2QixDQUFDO1FBQzlELGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQTJCLENBQUM7UUFDMUQsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBNkIsQ0FBQztRQUM5RCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUF3QixDQUFDO1FBQ3pELG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQXlDLENBQUM7UUFFckYsbUJBQWMsR0FBVyxFQUFFLENBQUM7S0FvTDdCO0lBbExDLFFBQVE7UUFDTixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQztJQUMvRSxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQVk7UUFDdEIsT0FBTyxJQUFJO2FBQ1IsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNWLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2hCLElBQUksQ0FBQyxFQUFFLENBQUM7YUFDUixTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNmLFdBQVcsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxlQUFlLENBQUMsU0FBd0I7UUFDdEMsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNsQyxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBRXBDLElBQUksT0FBTyxHQUFHLEVBQUU7WUFBRSxPQUFPLFVBQVUsQ0FBQztRQUNwQyxJQUFJLE9BQU8sR0FBRyxFQUFFO1lBQUUsT0FBTyxHQUFHLE9BQU8sT0FBTyxDQUFDO1FBQzNDLElBQUksS0FBSyxHQUFHLEVBQUU7WUFBRSxPQUFPLEdBQUcsS0FBSyxPQUFPLENBQUM7UUFDdkMsSUFBSSxJQUFJLEdBQUcsQ0FBQztZQUFFLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQztRQUVwQyxPQUFPLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYTtRQUN2QixJQUFJLEtBQUssSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNyQixPQUFPLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbEIsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDN0QsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxjQUFjLENBQUMsT0FBZTtRQUM1QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3JDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsQyxDQUFDO1FBRUQsb0JBQW9CO1FBQ3BCLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFekMsWUFBWTtRQUNaLE1BQU0sUUFBUSxHQUFHLHlDQUF5QyxDQUFDO1FBQzNELFNBQVMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUMzQixRQUFRLEVBQ1Isb0ZBQW9GLENBQ3JGLENBQUM7UUFFRixZQUFZO1FBQ1osTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDO1FBQy9CLFNBQVMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUMzQixZQUFZLEVBQ1osMENBQTBDLENBQzNDLENBQUM7UUFFRixZQUFZO1FBQ1osTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDO1FBQy9CLFNBQVMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUMzQixZQUFZLEVBQ1osMENBQTBDLENBQzNDLENBQUM7UUFFRix1QkFBdUI7UUFDdkIsU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTdDLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFTyxVQUFVLENBQUMsSUFBWTtRQUM3QixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLEdBQUcsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLE9BQU8sR0FBRyxDQUFDLFNBQVMsQ0FBQztJQUN2QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsUUFBeUI7UUFDeEMsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM1QyxPQUFPLG1CQUFtQixRQUFRLENBQUMsV0FBVyxHQUFHLENBQUM7UUFDcEQsQ0FBQztRQUNELElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BCLE9BQU8sMEJBQTBCLENBQUM7UUFDcEMsQ0FBQztRQUNELElBQUksUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25CLE9BQU8sbUJBQW1CLFFBQVEsQ0FBQyxLQUFLLEdBQUcsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsT0FBTyx5QkFBeUIsQ0FBQztJQUNuQyxDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQXFCO1FBQ2xDLE9BQU8sTUFBTSxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQztJQUN0RCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBcUI7UUFDcEMsT0FBTyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ3pELENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDO1FBQzFDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUMzQyxPQUFPLFlBQVksR0FBRyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBc0I7UUFDbEMsT0FBTztZQUNMLEdBQUcsS0FBSztZQUNSLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDbEMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLENBQUM7U0FDbkMsQ0FBQztJQUNKLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3pDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUM7UUFDckQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUM7SUFDN0MsQ0FBQztJQUVELGlCQUFpQjtRQUNmLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQztRQUN6QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDO1FBQ2hELE9BQU8sS0FBSyxHQUFHLE1BQU0sQ0FBQztJQUN4QixDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ3BCLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU07WUFDekIsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSztTQUMvQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZUFBZSxDQUFDLFFBQXlCO1FBQ3ZDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1lBQ3RCLFFBQVE7WUFDUixZQUFZLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLO1lBQzlCLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNO1NBQzNCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhLENBQUMsTUFBcUI7UUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDcEIsTUFBTTtZQUNOLFlBQVksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUs7U0FDL0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFxQjtRQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztZQUN0QixRQUFRLEVBQUUsSUFBSTtZQUNkLFlBQVksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUs7U0FDL0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztZQUN0QixZQUFZLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLO1lBQzlCLFlBQVksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxNQUFNLElBQUksQ0FBQztTQUMvQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7WUFDdkIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSztZQUN2QixTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVM7U0FDakMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0E3TFUsZ0JBQWdCO21HQUFoQixnQkFBZ0IsMFNBNU5qQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUxULG90TEEyQ1UsZ0JBQWdCLHdMQXJPekIsWUFBWSwrQkFDWixPQUFPLDJKQUNQLFNBQVMsb1BBQ1QsVUFBVSx3REFDVixPQUFPLHlGQUNQLE9BQU8sME5BQ1AsUUFBUSw2RkFDUixlQUFlOzs0RkE4Tk4sZ0JBQWdCO2tCQXpPNUIsU0FBUzsrQkFDRSxhQUFhLGNBQ1gsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osT0FBTzt3QkFDUCxTQUFTO3dCQUNULFVBQVU7d0JBQ1YsT0FBTzt3QkFDUCxPQUFPO3dCQUNQLFFBQVE7d0JBQ1IsZUFBZTtxQkFDaEIsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUxUOzhCQTRDUSxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW9uSWNvbiwgSW9uQnV0dG9uLCBJb25Qb3BvdmVyLCBJb25MaXN0LCBJb25JdGVtLCBJb25MYWJlbCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYXZhdGFyL2F2YXRhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQge1xuICBlbGxpcHNpc0hvcml6b250YWwsXG4gIGNoZWNrbWFya0NpcmNsZSxcbiAgY2hhdGJ1YmJsZU91dGxpbmUsXG4gIGhlYXJ0T3V0bGluZSxcbiAgaGVhcnQsXG4gIHRodW1ic1VwT3V0bGluZSxcbiAgdGh1bWJzVXAsXG4gIGhhcHB5T3V0bGluZSxcbiAgaGFwcHksXG4gIHNhZE91dGxpbmUsXG4gIHNhZCxcbiAgY2hldnJvbkRvd24sXG4gIGNoZXZyb25VcCxcbiAgcGluLFxuICBwZW5jaWwsXG4gIHRyYXNoLFxuICBmbGFnLFxuICBzaGFyZSxcbn0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuaW1wb3J0IHtcbiAgQ29tbWVudE1ldGFkYXRhLFxuICBDb21tZW50QXV0aG9yLFxuICBDb21tZW50UmVhY3Rpb24sXG4gIENvbW1lbnRBY3Rpb24sXG4gIENvbW1lbnRNZW51SXRlbSxcbiAgQ29tbWVudEF1dGhvckNsaWNrRXZlbnQsXG4gIENvbW1lbnRSZWFjdGlvbkNsaWNrRXZlbnQsXG4gIENvbW1lbnRBY3Rpb25DbGlja0V2ZW50LFxuICBDb21tZW50TWVudUl0ZW1DbGlja0V2ZW50LFxuICBDb21tZW50TG9hZE1vcmVFdmVudCxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbmFkZEljb25zKHtcbiAgZWxsaXBzaXNIb3Jpem9udGFsLFxuICBjaGVja21hcmtDaXJjbGUsXG4gIGNoYXRidWJibGVPdXRsaW5lLFxuICBoZWFydE91dGxpbmUsXG4gIGhlYXJ0LFxuICB0aHVtYnNVcE91dGxpbmUsXG4gIHRodW1ic1VwLFxuICBoYXBweU91dGxpbmUsXG4gIGhhcHB5LFxuICBzYWRPdXRsaW5lLFxuICBzYWQsXG4gIGNoZXZyb25Eb3duLFxuICBjaGV2cm9uVXAsXG4gIHBpbixcbiAgcGVuY2lsLFxuICB0cmFzaCxcbiAgZmxhZyxcbiAgc2hhcmUsXG59KTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWNvbW1lbnQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIElvbkljb24sXG4gICAgSW9uQnV0dG9uLFxuICAgIElvblBvcG92ZXIsXG4gICAgSW9uTGlzdCxcbiAgICBJb25JdGVtLFxuICAgIElvbkxhYmVsLFxuICAgIEF2YXRhckNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImNvbW1lbnRcIlxuICAgICAgW2NsYXNzLmhpZ2hsaWdodGVkXT1cInByb3BzLmhpZ2hsaWdodGVkXCJcbiAgICAgIFtjbGFzcy5waW5uZWRdPVwicHJvcHMucGlubmVkXCJcbiAgICAgIFtjbGFzcy5jb2xsYXBzZWRdPVwicHJvcHMuY29sbGFwc2VkXCJcbiAgICAgIFtzdHlsZS4tLWRlcHRoXT1cInByb3BzLmRlcHRoIHx8IDBcIlxuICAgID5cbiAgICAgIEBpZiAocHJvcHMucGlubmVkKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwaW5uZWQtaW5kaWNhdG9yXCI+XG4gICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJwaW5cIj48L2lvbi1pY29uPlxuICAgICAgICAgIDxzcGFuPlBpbm5lZDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb21tZW50LW1haW5cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnQtYXZhdGFyXCIgKGNsaWNrKT1cIm9uQXV0aG9yQ2xpY2soKVwiPlxuICAgICAgICAgIEBpZiAocHJvcHMuYXV0aG9yLmF2YXRhcikge1xuICAgICAgICAgICAgPHZhbC1hdmF0YXIgW3Byb3BzXT1cInByb3BzLmF1dGhvci5hdmF0YXJcIj48L3ZhbC1hdmF0YXI+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLXBsYWNlaG9sZGVyXCI+XG4gICAgICAgICAgICAgIHt7IGdldEluaXRpYWxzKHByb3BzLmF1dGhvci5uYW1lKSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbWVudC1ib2R5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnQtaGVhZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXV0aG9yLWluZm9cIiAoY2xpY2spPVwib25BdXRob3JDbGljaygpXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXV0aG9yLW5hbWVcIj57eyBwcm9wcy5hdXRob3IubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgQGlmIChwcm9wcy5hdXRob3IudmVyaWZpZWQpIHtcbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoZWNrbWFyay1jaXJjbGVcIiBjbGFzcz1cInZlcmlmaWVkLWJhZGdlXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKHByb3BzLmF1dGhvci51c2VybmFtZSkge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXV0aG9yLXVzZXJuYW1lXCI+JiM2NDt7eyBwcm9wcy5hdXRob3IudXNlcm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbWVudC1tZXRhXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGltZXN0YW1wXCI+e3sgZm9ybWF0VGltZXN0YW1wKHByb3BzLnRpbWVzdGFtcCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgIEBpZiAocHJvcHMuZWRpdGVkKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlZGl0ZWQtbGFiZWxcIj4oZWRpdGVkKTwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIEBpZiAocHJvcHMubWVudUl0ZW1zICYmIHByb3BzLm1lbnVJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgZmlsbD1cImNsZWFyXCJcbiAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibW9yZS1idXR0b25cIlxuICAgICAgICAgICAgICAgIFtpZF09XCInbWVudS10cmlnZ2VyLScgKyBwcm9wcy50b2tlblwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImVsbGlwc2lzLWhvcml6b250YWxcIiBzbG90PVwiaWNvbi1vbmx5XCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuXG4gICAgICAgICAgICAgIDxpb24tcG9wb3ZlclxuICAgICAgICAgICAgICAgIFt0cmlnZ2VyXT1cIidtZW51LXRyaWdnZXItJyArIHByb3BzLnRva2VuXCJcbiAgICAgICAgICAgICAgICBbZGlzbWlzc09uU2VsZWN0XT1cInRydWVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPGlvbi1saXN0PlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIHByb3BzLm1lbnVJdGVtczsgdHJhY2sgaXRlbS50b2tlbikge1xuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5kaXZpZGVyQmVmb3JlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVudS1kaXZpZGVyXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDxpb24taXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgW2J1dHRvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkZXRhaWxdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTWVudUl0ZW1DbGljayhpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLmljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiaXRlbS5pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG90PVwic3RhcnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJpdGVtLmNvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWxhYmVsIFtjb2xvcl09XCJpdGVtLmNvbG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldE1lbnVJdGVtTGFiZWwoaXRlbSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvaW9uLWxpc3Q+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC9pb24tcG9wb3Zlcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIEBpZiAoIXByb3BzLmNvbGxhcHNlZCkge1xuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNvbW1lbnQtY29udGVudFwiXG4gICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwicHJvY2Vzc0NvbnRlbnQoZGlzcGxheUNvbnRlbnQpXCJcbiAgICAgICAgICAgID48L2Rpdj5cblxuICAgICAgICAgICAgQGlmIChwcm9wcy5yZWFjdGlvbnMgJiYgcHJvcHMucmVhY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnQtcmVhY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgQGZvciAocmVhY3Rpb24gb2YgcHJvcHMucmVhY3Rpb25zOyB0cmFjayByZWFjdGlvbi50b2tlbikge1xuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlYWN0aW9uLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwicmVhY3Rpb24uYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLi0tcmVhY3Rpb24tY29sb3JdPVwiZ2V0UmVhY3Rpb25Db2xvcihyZWFjdGlvbilcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25SZWFjdGlvbkNsaWNrKHJlYWN0aW9uKVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJyZWFjdGlvbi5pY29uXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChyZWFjdGlvbi5jb3VudCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlYWN0aW9uLWNvdW50XCI+e3sgZm9ybWF0Q291bnQocmVhY3Rpb24uY291bnQpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKHByb3BzLmFjdGlvbnMgJiYgcHJvcHMuYWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21tZW50LWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChhY3Rpb24gb2YgcHJvcHMuYWN0aW9uczsgdHJhY2sgYWN0aW9uLnRva2VuKSB7XG4gICAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiYWN0aW9uLmNvbG9yIHx8ICdtZWRpdW0nXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFjdGlvbi5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkFjdGlvbkNsaWNrKGFjdGlvbilcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGFjdGlvbi5pY29uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIFtuYW1lXT1cImFjdGlvbi5pY29uXCIgc2xvdD1cInN0YXJ0XCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB7eyBnZXRBY3Rpb25MYWJlbChhY3Rpb24pIH19XG4gICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJleHBhbmQtYnV0dG9uXCIgKGNsaWNrKT1cIm9uVG9nZ2xlQ29sbGFwc2UoKVwiPlxuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoZXZyb24tZG93blwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIDxzcGFuPlNob3cgY29tbWVudDwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgQGlmICghcHJvcHMuY29sbGFwc2VkICYmIGhhc0NoaWxkcmVuKCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnQtY2hpbGRyZW5cIj5cbiAgICAgICAgICBAaWYgKHByb3BzLmNvbGxhcHNlZCkge1xuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbGxhcHNlLWJ1dHRvblwiIChjbGljayk9XCJvblRvZ2dsZUNvbGxhcHNlKClcIj5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjaGV2cm9uLXVwXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgPHNwYW4+SGlkZSByZXBsaWVzPC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChjYW5TaG93Q2hpbGRyZW4oKSkge1xuICAgICAgICAgICAgQGZvciAoY2hpbGQgb2YgcHJvcHMuY2hpbGRyZW47IHRyYWNrIGNoaWxkLnRva2VuKSB7XG4gICAgICAgICAgICAgIDx2YWwtY29tbWVudFxuICAgICAgICAgICAgICAgIFtwcm9wc109XCJnZXRDaGlsZFByb3BzKGNoaWxkKVwiXG4gICAgICAgICAgICAgICAgKGF1dGhvckNsaWNrKT1cImF1dGhvckNsaWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKHJlYWN0aW9uQ2xpY2spPVwicmVhY3Rpb25DbGljay5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgIChhY3Rpb25DbGljayk9XCJhY3Rpb25DbGljay5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgIChtZW51SXRlbUNsaWNrKT1cIm1lbnVJdGVtQ2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAobG9hZE1vcmVDbGljayk9XCJsb2FkTW9yZUNsaWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGNvbGxhcHNlVG9nZ2xlKT1cImNvbGxhcHNlVG9nZ2xlLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgID48L3ZhbC1jb21tZW50PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKGhhc01vcmVSZXBsaWVzKCkpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImxvYWQtbW9yZS1idXR0b25cIiAoY2xpY2spPVwib25Mb2FkTW9yZUNsaWNrKClcIj5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoYXRidWJibGUtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4+TG9hZCB7eyBnZXRSZW1haW5pbmdDb3VudCgpIH19IG1vcmUgcmVwbGllczwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidmlldy1yZXBsaWVzLWJ1dHRvblwiIChjbGljayk9XCJvbkxvYWRNb3JlQ2xpY2soKVwiPlxuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoYXRidWJibGUtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIDxzcGFuPlZpZXcge3sgcHJvcHMucmVwbHlDb3VudCB8fCBwcm9wcy5jaGlsZHJlbj8ubGVuZ3RoIH19IHJlcGxpZXM8L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9jb21tZW50LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtY29tbWVudFxuICpcbiAqIEEgdmVyc2F0aWxlIGNvbW1lbnQgY29tcG9uZW50IGZvciBmb3J1bXMsIHJldmlld3MsIGFuZCBzb2NpYWwgbWVkaWEuXG4gKiBTdXBwb3J0cyBhdXRob3IgaW5mbywgcmVhY3Rpb25zLCBhY3Rpb25zLCBuZXN0ZWQgcmVwbGllcywgYW5kIG1vcmUuXG4gKlxuICogQGV4YW1wbGUgQmFzaWMgY29tbWVudFxuICogPHZhbC1jb21tZW50IFtwcm9wc109XCJ7XG4gKiAgIHRva2VuOiAnMScsXG4gKiAgIGF1dGhvcjogeyBuYW1lOiAnSm9obiBEb2UnLCB1c2VybmFtZTogJ2pvaG5kJyB9LFxuICogICBjb250ZW50OiAnVGhpcyBpcyBhIGdyZWF0IHBvc3QhJyxcbiAqICAgdGltZXN0YW1wOiAnMiBob3VycyBhZ28nXG4gKiB9XCI+PC92YWwtY29tbWVudD5cbiAqXG4gKiBAZXhhbXBsZSBXaXRoIHJlYWN0aW9ucyBhbmQgYWN0aW9uc1xuICogPHZhbC1jb21tZW50IFtwcm9wc109XCJ7XG4gKiAgIHRva2VuOiAnMScsXG4gKiAgIGF1dGhvcjogeyBuYW1lOiAnSmFuZScsIGF2YXRhcjogYXZhdGFyUHJvcHMsIHZlcmlmaWVkOiB0cnVlIH0sXG4gKiAgIGNvbnRlbnQ6ICdBbWF6aW5nIGNvbnRlbnQhIENoZWNrIG91dCBodHRwczovL2V4YW1wbGUuY29tJyxcbiAqICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxuICogICByZWFjdGlvbnM6IFtcbiAqICAgICB7IHRva2VuOiAnbGlrZScsIGljb246ICdoZWFydC1vdXRsaW5lJywgY291bnQ6IDQyLCBhY3RpdmU6IGZhbHNlIH1cbiAqICAgXSxcbiAqICAgYWN0aW9uczogW1xuICogICAgIHsgdG9rZW46ICdyZXBseScsIGxhYmVsOiAnUmVwbHknLCBpY29uOiAnY2hhdGJ1YmJsZS1vdXRsaW5lJyB9XG4gKiAgIF0sXG4gKiAgIG1lbnVJdGVtczogW1xuICogICAgIHsgdG9rZW46ICdlZGl0JywgbGFiZWw6ICdFZGl0JywgaWNvbjogJ3BlbmNpbCcgfSxcbiAqICAgICB7IHRva2VuOiAnZGVsZXRlJywgbGFiZWw6ICdEZWxldGUnLCBpY29uOiAndHJhc2gnLCBjb2xvcjogJ2RhbmdlcicgfVxuICogICBdXG4gKiB9XCI+PC92YWwtY29tbWVudD5cbiAqXG4gKiBAaW5wdXQgcHJvcHM6IENvbW1lbnRNZXRhZGF0YSAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBjb21tZW50XG4gKiBAb3V0cHV0IGF1dGhvckNsaWNrIC0gRW1pdHMgd2hlbiBhdXRob3IgbmFtZS9hdmF0YXIgaXMgY2xpY2tlZFxuICogQG91dHB1dCByZWFjdGlvbkNsaWNrIC0gRW1pdHMgd2hlbiBhIHJlYWN0aW9uIGlzIGNsaWNrZWRcbiAqIEBvdXRwdXQgYWN0aW9uQ2xpY2sgLSBFbWl0cyB3aGVuIGFuIGFjdGlvbiBidXR0b24gaXMgY2xpY2tlZFxuICogQG91dHB1dCBtZW51SXRlbUNsaWNrIC0gRW1pdHMgd2hlbiBhIG1lbnUgaXRlbSBpcyBjbGlja2VkXG4gKiBAb3V0cHV0IGxvYWRNb3JlQ2xpY2sgLSBFbWl0cyB3aGVuIGxvYWQgbW9yZSByZXBsaWVzIGlzIGNsaWNrZWRcbiAqIEBvdXRwdXQgY29sbGFwc2VUb2dnbGUgLSBFbWl0cyB3aGVuIGNvbW1lbnQgaXMgY29sbGFwc2VkL2V4cGFuZGVkXG4gKi9cbmV4cG9ydCBjbGFzcyBDb21tZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgcHJvcHM6IENvbW1lbnRNZXRhZGF0YTtcblxuICBAT3V0cHV0KCkgYXV0aG9yQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPENvbW1lbnRBdXRob3JDbGlja0V2ZW50PigpO1xuICBAT3V0cHV0KCkgcmVhY3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Q29tbWVudFJlYWN0aW9uQ2xpY2tFdmVudD4oKTtcbiAgQE91dHB1dCgpIGFjdGlvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxDb21tZW50QWN0aW9uQ2xpY2tFdmVudD4oKTtcbiAgQE91dHB1dCgpIG1lbnVJdGVtQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPENvbW1lbnRNZW51SXRlbUNsaWNrRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBsb2FkTW9yZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxDb21tZW50TG9hZE1vcmVFdmVudD4oKTtcbiAgQE91dHB1dCgpIGNvbGxhcHNlVG9nZ2xlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHRva2VuOiBzdHJpbmc7IGNvbGxhcHNlZDogYm9vbGVhbiB9PigpO1xuXG4gIGRpc3BsYXlDb250ZW50OiBzdHJpbmcgPSAnJztcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3BsYXlDb250ZW50ID0gdGhpcy5wcm9wcy5jb250ZW50IHx8IHRoaXMucHJvcHMuY29udGVudEZhbGxiYWNrIHx8ICcnO1xuICB9XG5cbiAgZ2V0SW5pdGlhbHMobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmFtZVxuICAgICAgLnNwbGl0KCcgJylcbiAgICAgIC5tYXAoKG4pID0+IG5bMF0pXG4gICAgICAuam9pbignJylcbiAgICAgIC5zdWJzdHJpbmcoMCwgMilcbiAgICAgIC50b1VwcGVyQ2FzZSgpO1xuICB9XG5cbiAgZm9ybWF0VGltZXN0YW1wKHRpbWVzdGFtcDogc3RyaW5nIHwgRGF0ZSk6IHN0cmluZyB7XG4gICAgaWYgKHR5cGVvZiB0aW1lc3RhbXAgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdGltZXN0YW1wO1xuICAgIH1cblxuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgZGlmZiA9IG5vdy5nZXRUaW1lKCkgLSB0aW1lc3RhbXAuZ2V0VGltZSgpO1xuICAgIGNvbnN0IHNlY29uZHMgPSBNYXRoLmZsb29yKGRpZmYgLyAxMDAwKTtcbiAgICBjb25zdCBtaW51dGVzID0gTWF0aC5mbG9vcihzZWNvbmRzIC8gNjApO1xuICAgIGNvbnN0IGhvdXJzID0gTWF0aC5mbG9vcihtaW51dGVzIC8gNjApO1xuICAgIGNvbnN0IGRheXMgPSBNYXRoLmZsb29yKGhvdXJzIC8gMjQpO1xuXG4gICAgaWYgKHNlY29uZHMgPCA2MCkgcmV0dXJuICdKdXN0IG5vdyc7XG4gICAgaWYgKG1pbnV0ZXMgPCA2MCkgcmV0dXJuIGAke21pbnV0ZXN9bSBhZ29gO1xuICAgIGlmIChob3VycyA8IDI0KSByZXR1cm4gYCR7aG91cnN9aCBhZ29gO1xuICAgIGlmIChkYXlzIDwgNykgcmV0dXJuIGAke2RheXN9ZCBhZ29gO1xuXG4gICAgcmV0dXJuIHRpbWVzdGFtcC50b0xvY2FsZURhdGVTdHJpbmcoKTtcbiAgfVxuXG4gIGZvcm1hdENvdW50KGNvdW50OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmIChjb3VudCA+PSAxMDAwMDAwKSB7XG4gICAgICByZXR1cm4gKGNvdW50IC8gMTAwMDAwMCkudG9GaXhlZCgxKS5yZXBsYWNlKC9cXC4wJC8sICcnKSArICdNJztcbiAgICB9XG4gICAgaWYgKGNvdW50ID49IDEwMDApIHtcbiAgICAgIHJldHVybiAoY291bnQgLyAxMDAwKS50b0ZpeGVkKDEpLnJlcGxhY2UoL1xcLjAkLywgJycpICsgJ0snO1xuICAgIH1cbiAgICByZXR1cm4gY291bnQudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByb2Nlc3NDb250ZW50KGNvbnRlbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucHJvcHMuYXV0b0xpbmtpZnkgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gdGhpcy5lc2NhcGVIdG1sKGNvbnRlbnQpO1xuICAgIH1cblxuICAgIC8vIEVzY2FwZSBIVE1MIGZpcnN0XG4gICAgbGV0IHByb2Nlc3NlZCA9IHRoaXMuZXNjYXBlSHRtbChjb250ZW50KTtcblxuICAgIC8vIFVSTCByZWdleFxuICAgIGNvbnN0IHVybFJlZ2V4ID0gLyhodHRwcz86XFwvXFwvW15cXHM8XStbXlxcczwuLDs6IT8pXFxdJ1wiXSkvZ2k7XG4gICAgcHJvY2Vzc2VkID0gcHJvY2Vzc2VkLnJlcGxhY2UoXG4gICAgICB1cmxSZWdleCxcbiAgICAgICc8YSBocmVmPVwiJDFcIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCIgY2xhc3M9XCJjb21tZW50LWxpbmtcIj4kMTwvYT4nXG4gICAgKTtcblxuICAgIC8vIEBtZW50aW9uc1xuICAgIGNvbnN0IG1lbnRpb25SZWdleCA9IC9AKFxcdyspL2c7XG4gICAgcHJvY2Vzc2VkID0gcHJvY2Vzc2VkLnJlcGxhY2UoXG4gICAgICBtZW50aW9uUmVnZXgsXG4gICAgICAnPHNwYW4gY2xhc3M9XCJjb21tZW50LW1lbnRpb25cIj5AJDE8L3NwYW4+J1xuICAgICk7XG5cbiAgICAvLyAjaGFzaHRhZ3NcbiAgICBjb25zdCBoYXNodGFnUmVnZXggPSAvIyhcXHcrKS9nO1xuICAgIHByb2Nlc3NlZCA9IHByb2Nlc3NlZC5yZXBsYWNlKFxuICAgICAgaGFzaHRhZ1JlZ2V4LFxuICAgICAgJzxzcGFuIGNsYXNzPVwiY29tbWVudC1oYXNodGFnXCI+IyQxPC9zcGFuPidcbiAgICApO1xuXG4gICAgLy8gUHJlc2VydmUgbGluZSBicmVha3NcbiAgICBwcm9jZXNzZWQgPSBwcm9jZXNzZWQucmVwbGFjZSgvXFxuL2csICc8YnI+Jyk7XG5cbiAgICByZXR1cm4gcHJvY2Vzc2VkO1xuICB9XG5cbiAgcHJpdmF0ZSBlc2NhcGVIdG1sKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgZGl2LnRleHRDb250ZW50ID0gdGV4dDtcbiAgICByZXR1cm4gZGl2LmlubmVySFRNTDtcbiAgfVxuXG4gIGdldFJlYWN0aW9uQ29sb3IocmVhY3Rpb246IENvbW1lbnRSZWFjdGlvbik6IHN0cmluZyB7XG4gICAgaWYgKHJlYWN0aW9uLmFjdGl2ZSAmJiByZWFjdGlvbi5hY3RpdmVDb2xvcikge1xuICAgICAgcmV0dXJuIGB2YXIoLS1pb24tY29sb3ItJHtyZWFjdGlvbi5hY3RpdmVDb2xvcn0pYDtcbiAgICB9XG4gICAgaWYgKHJlYWN0aW9uLmFjdGl2ZSkge1xuICAgICAgcmV0dXJuICd2YXIoLS1pb24tY29sb3ItcHJpbWFyeSknO1xuICAgIH1cbiAgICBpZiAocmVhY3Rpb24uY29sb3IpIHtcbiAgICAgIHJldHVybiBgdmFyKC0taW9uLWNvbG9yLSR7cmVhY3Rpb24uY29sb3J9KWA7XG4gICAgfVxuICAgIHJldHVybiAndmFyKC0taW9uLWNvbG9yLW1lZGl1bSknO1xuICB9XG5cbiAgZ2V0QWN0aW9uTGFiZWwoYWN0aW9uOiBDb21tZW50QWN0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYWN0aW9uLmxhYmVsIHx8IGFjdGlvbi5jb250ZW50RmFsbGJhY2sgfHwgJyc7XG4gIH1cblxuICBnZXRNZW51SXRlbUxhYmVsKGl0ZW06IENvbW1lbnRNZW51SXRlbSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGl0ZW0ubGFiZWwgfHwgaXRlbS5jb250ZW50RmFsbGJhY2sgfHwgJyc7XG4gIH1cblxuICBoYXNDaGlsZHJlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEodGhpcy5wcm9wcy5jaGlsZHJlbiAmJiB0aGlzLnByb3BzLmNoaWxkcmVuLmxlbmd0aCA+IDApIHx8XG4gICAgICAgICAgICEhKHRoaXMucHJvcHMucmVwbHlDb3VudCAmJiB0aGlzLnByb3BzLnJlcGx5Q291bnQgPiAwKTtcbiAgfVxuXG4gIGNhblNob3dDaGlsZHJlbigpOiBib29sZWFuIHtcbiAgICBjb25zdCBtYXhEZXB0aCA9IHRoaXMucHJvcHMubWF4RGVwdGggPz8gMztcbiAgICBjb25zdCBjdXJyZW50RGVwdGggPSB0aGlzLnByb3BzLmRlcHRoID8/IDA7XG4gICAgcmV0dXJuIGN1cnJlbnREZXB0aCA8IG1heERlcHRoICYmICEhKHRoaXMucHJvcHMuY2hpbGRyZW4gJiYgdGhpcy5wcm9wcy5jaGlsZHJlbi5sZW5ndGggPiAwKTtcbiAgfVxuXG4gIGdldENoaWxkUHJvcHMoY2hpbGQ6IENvbW1lbnRNZXRhZGF0YSk6IENvbW1lbnRNZXRhZGF0YSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmNoaWxkLFxuICAgICAgZGVwdGg6ICh0aGlzLnByb3BzLmRlcHRoID8/IDApICsgMSxcbiAgICAgIG1heERlcHRoOiB0aGlzLnByb3BzLm1heERlcHRoID8/IDMsXG4gICAgfTtcbiAgfVxuXG4gIGhhc01vcmVSZXBsaWVzKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5wcm9wcy5yZXBseUNvdW50KSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgbG9hZGVkQ291bnQgPSB0aGlzLnByb3BzLmNoaWxkcmVuPy5sZW5ndGggPz8gMDtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5yZXBseUNvdW50ID4gbG9hZGVkQ291bnQ7XG4gIH1cblxuICBnZXRSZW1haW5pbmdDb3VudCgpOiBudW1iZXIge1xuICAgIGNvbnN0IHRvdGFsID0gdGhpcy5wcm9wcy5yZXBseUNvdW50ID8/IDA7XG4gICAgY29uc3QgbG9hZGVkID0gdGhpcy5wcm9wcy5jaGlsZHJlbj8ubGVuZ3RoID8/IDA7XG4gICAgcmV0dXJuIHRvdGFsIC0gbG9hZGVkO1xuICB9XG5cbiAgb25BdXRob3JDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLmF1dGhvckNsaWNrLmVtaXQoe1xuICAgICAgYXV0aG9yOiB0aGlzLnByb3BzLmF1dGhvcixcbiAgICAgIGNvbW1lbnRUb2tlbjogdGhpcy5wcm9wcy50b2tlbixcbiAgICB9KTtcbiAgfVxuXG4gIG9uUmVhY3Rpb25DbGljayhyZWFjdGlvbjogQ29tbWVudFJlYWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5yZWFjdGlvbkNsaWNrLmVtaXQoe1xuICAgICAgcmVhY3Rpb24sXG4gICAgICBjb21tZW50VG9rZW46IHRoaXMucHJvcHMudG9rZW4sXG4gICAgICBpc0FjdGl2ZTogIXJlYWN0aW9uLmFjdGl2ZSxcbiAgICB9KTtcbiAgfVxuXG4gIG9uQWN0aW9uQ2xpY2soYWN0aW9uOiBDb21tZW50QWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5hY3Rpb25DbGljay5lbWl0KHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNvbW1lbnRUb2tlbjogdGhpcy5wcm9wcy50b2tlbixcbiAgICB9KTtcbiAgfVxuXG4gIG9uTWVudUl0ZW1DbGljayhpdGVtOiBDb21tZW50TWVudUl0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLm1lbnVJdGVtQ2xpY2suZW1pdCh7XG4gICAgICBtZW51SXRlbTogaXRlbSxcbiAgICAgIGNvbW1lbnRUb2tlbjogdGhpcy5wcm9wcy50b2tlbixcbiAgICB9KTtcbiAgfVxuXG4gIG9uTG9hZE1vcmVDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRNb3JlQ2xpY2suZW1pdCh7XG4gICAgICBjb21tZW50VG9rZW46IHRoaXMucHJvcHMudG9rZW4sXG4gICAgICBjdXJyZW50Q291bnQ6IHRoaXMucHJvcHMuY2hpbGRyZW4/Lmxlbmd0aCA/PyAwLFxuICAgIH0pO1xuICB9XG5cbiAgb25Ub2dnbGVDb2xsYXBzZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbGxhcHNlVG9nZ2xlLmVtaXQoe1xuICAgICAgdG9rZW46IHRoaXMucHJvcHMudG9rZW4sXG4gICAgICBjb2xsYXBzZWQ6ICF0aGlzLnByb3BzLmNvbGxhcHNlZCxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, Input, Output, EventEmitter
|
|
2
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
3
3
|
import { ReactiveFormsModule, FormControl } from '@angular/forms';
|
|
4
4
|
import { IonInput, IonSelect, IonSelectOption, IonNote } from '@ionic/angular/standalone';
|
|
5
|
-
import { LangService } from '../../../services/lang-provider/lang-provider.service';
|
|
6
5
|
import { ComponentStates } from '../../types';
|
|
7
6
|
import { COMMON_CURRENCIES } from './types';
|
|
8
7
|
import * as i0 from "@angular/core";
|
|
@@ -45,9 +44,7 @@ export class CurrencyInputComponent {
|
|
|
45
44
|
this.states = ComponentStates;
|
|
46
45
|
this.displayControl = new FormControl('');
|
|
47
46
|
this.currencyControl = new FormControl('');
|
|
48
|
-
this.langSubscription = null;
|
|
49
47
|
this.valueSubscription = null;
|
|
50
|
-
this.langService = inject(LangService);
|
|
51
48
|
this.isFocused = false;
|
|
52
49
|
}
|
|
53
50
|
ngOnInit() {
|
|
@@ -64,35 +61,17 @@ export class CurrencyInputComponent {
|
|
|
64
61
|
this.displayControl.setValue(this.formatValue(value));
|
|
65
62
|
}
|
|
66
63
|
});
|
|
67
|
-
// Subscribe to language changes
|
|
68
|
-
if (this.hasReactiveContent()) {
|
|
69
|
-
this.langSubscription = this.langService.currentLang$.subscribe(() => { });
|
|
70
|
-
}
|
|
71
64
|
}
|
|
72
65
|
ngOnDestroy() {
|
|
73
|
-
this.langSubscription?.unsubscribe();
|
|
74
66
|
this.valueSubscription?.unsubscribe();
|
|
75
67
|
}
|
|
76
|
-
hasReactiveContent() {
|
|
77
|
-
return !!(this.props.contentClass &&
|
|
78
|
-
(this.props.labelContentKey || this.props.placeholderContentKey || this.props.hintContentKey));
|
|
79
|
-
}
|
|
80
68
|
getLabel() {
|
|
81
|
-
if (this.props.labelContentKey && this.props.contentClass) {
|
|
82
|
-
return this.langService.getText(this.props.contentClass, this.props.labelContentKey, this.props.label || '');
|
|
83
|
-
}
|
|
84
69
|
return this.props.label || '';
|
|
85
70
|
}
|
|
86
71
|
getPlaceholder() {
|
|
87
|
-
if (this.props.placeholderContentKey && this.props.contentClass) {
|
|
88
|
-
return this.langService.getText(this.props.contentClass, this.props.placeholderContentKey, this.props.placeholder || '');
|
|
89
|
-
}
|
|
90
72
|
return this.props.placeholder || this.getDefaultPlaceholder();
|
|
91
73
|
}
|
|
92
74
|
getHint() {
|
|
93
|
-
if (this.props.hintContentKey && this.props.contentClass) {
|
|
94
|
-
return this.langService.getText(this.props.contentClass, this.props.hintContentKey, this.props.hint || '');
|
|
95
|
-
}
|
|
96
75
|
return this.props.hint || '';
|
|
97
76
|
}
|
|
98
77
|
getDefaultPlaceholder() {
|
|
@@ -365,4 +344,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
365
344
|
}], currencyChange: [{
|
|
366
345
|
type: Output
|
|
367
346
|
}] } });
|
|
368
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3ktaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9jdXJyZW5jeS1pbnB1dC9jdXJyZW5jeS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTFGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNwRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlDLE9BQU8sRUFBbUUsaUJBQWlCLEVBQUUsTUFBTSxTQUFTLENBQUM7OztBQTBFN0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQkc7QUFDSCxNQUFNLE9BQU8sc0JBQXNCO0lBeEduQztRQTJHWSxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUE0QixDQUFDO1FBRXhFLFdBQU0sR0FBRyxlQUFlLENBQUM7UUFFekIsbUJBQWMsR0FBRyxJQUFJLFdBQVcsQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUM3QyxvQkFBZSxHQUFHLElBQUksV0FBVyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRXRDLHFCQUFnQixHQUF3QixJQUFJLENBQUM7UUFDN0Msc0JBQWlCLEdBQXdCLElBQUksQ0FBQztRQUM5QyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpRVQ7OEJBb0NRLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE9uRGVzdHJveSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElvbklucHV0LCBJb25TZWxlY3QsIElvblNlbGVjdE9wdGlvbiwgSW9uTm90ZSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMYW5nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xhbmctcHJvdmlkZXIvbGFuZy1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IENvbXBvbmVudFN0YXRlcyB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEN1cnJlbmN5SW5wdXRNZXRhZGF0YSwgQ3VycmVuY3lJbnB1dENoYW5nZUV2ZW50LCBDdXJyZW5jeUNvbmZpZywgQ09NTU9OX0NVUlJFTkNJRVMgfSBmcm9tICcuL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWN1cnJlbmN5LWlucHV0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgSW9uSW5wdXQsIElvblNlbGVjdCwgSW9uU2VsZWN0T3B0aW9uLCBJb25Ob3RlXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiY3VycmVuY3ktaW5wdXQtY29udGFpbmVyXCIgW2NsYXNzXT1cInByb3BzLmNzc0NsYXNzXCIgW2NsYXNzLmhhcy1lcnJvcl09XCJoYXNFcnJvclwiPlxuICAgICAgQGlmIChwcm9wcy5sYWJlbCkge1xuICAgICAgICA8bGFiZWwgY2xhc3M9XCJjdXJyZW5jeS1sYWJlbFwiPnt7IGdldExhYmVsKCkgfX08L2xhYmVsPlxuICAgICAgfVxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY3VycmVuY3ktaW5wdXQtd3JhcHBlclwiIFtjbGFzcy5kaXNhYmxlZF09XCJwcm9wcy5zdGF0ZSA9PT0gc3RhdGVzLkRJU0FCTEVEXCI+XG4gICAgICAgIEBpZiAocHJvcHMuc2hvd0N1cnJlbmN5U2VsZWN0b3IpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VycmVuY3ktc2VsZWN0b3JcIj5cbiAgICAgICAgICAgIDxpb24tc2VsZWN0XG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJjdXJyZW5jeUNvbnRyb2xcIlxuICAgICAgICAgICAgICBpbnRlcmZhY2U9XCJwb3BvdmVyXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInByb3BzLnN0YXRlID09PSBzdGF0ZXMuRElTQUJMRURcIlxuICAgICAgICAgICAgICAoaW9uQ2hhbmdlKT1cIm9uQ3VycmVuY3lDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEBmb3IgKGN1cnIgb2YgZ2V0Q3VycmVuY3lMaXN0KCk7IHRyYWNrIGN1cnIuY29kZSkge1xuICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiBbdmFsdWVdPVwiY3Vyci5jb2RlXCI+XG4gICAgICAgICAgICAgICAgICB7eyBjdXJyLmNvZGUgfX0gKHt7IGN1cnIuc3ltYm9sIH19KVxuICAgICAgICAgICAgICAgIDwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvaW9uLXNlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfSBAZWxzZSBpZiAocHJvcHMuc2hvd1N5bWJvbCAhPT0gZmFsc2UpIHtcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImN1cnJlbmN5LXN5bWJvbFwiXG4gICAgICAgICAgICBbY2xhc3MucHJlZml4XT1cImdldFN5bWJvbFBvc2l0aW9uKCkgPT09ICdwcmVmaXgnXCJcbiAgICAgICAgICAgIFtjbGFzcy5zdWZmaXhdPVwiZ2V0U3ltYm9sUG9zaXRpb24oKSA9PT0gJ3N1ZmZpeCdcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBpZiAoZ2V0U3ltYm9sUG9zaXRpb24oKSA9PT0gJ3ByZWZpeCcpIHtcbiAgICAgICAgICAgICAge3sgZ2V0Q3VycmVuY3lTeW1ib2woKSB9fVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFtb3VudC1pbnB1dFwiPlxuICAgICAgICAgIDxpb24taW5wdXRcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJkaXNwbGF5Q29udHJvbFwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBpbnB1dG1vZGU9XCJkZWNpbWFsXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJnZXRQbGFjZWhvbGRlcigpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwcm9wcy5zdGF0ZSA9PT0gc3RhdGVzLkRJU0FCTEVEXCJcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJwcm9wcy5zdGF0ZSA9PT0gc3RhdGVzLldPUktJTkdcIlxuICAgICAgICAgICAgKGlvbklucHV0KT1cIm9uSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoaW9uQmx1cik9XCJvbkJsdXIoKVwiXG4gICAgICAgICAgICAoaW9uRm9jdXMpPVwib25Gb2N1cygpXCJcbiAgICAgICAgICA+PC9pb24taW5wdXQ+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIEBpZiAocHJvcHMuc2hvd1N5bWJvbCAhPT0gZmFsc2UgJiYgZ2V0U3ltYm9sUG9zaXRpb24oKSA9PT0gJ3N1ZmZpeCcgJiYgIXByb3BzLnNob3dDdXJyZW5jeVNlbGVjdG9yKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnJlbmN5LXN5bWJvbCBzdWZmaXhcIj5cbiAgICAgICAgICAgIHt7IGdldEN1cnJlbmN5U3ltYm9sKCkgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIEBpZiAocHJvcHMuaGludCAmJiAhaGFzRXJyb3IpIHtcbiAgICAgICAgPGlvbi1ub3RlIGNsYXNzPVwiaGludFwiPnt7IGdldEhpbnQoKSB9fTwvaW9uLW5vdGU+XG4gICAgICB9XG5cbiAgICAgIEBpZiAoaGFzRXJyb3IgJiYgcHJvcHMuc2hvd0Vycm9ycykge1xuICAgICAgICA8aW9uLW5vdGUgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCIgY29sb3I9XCJkYW5nZXJcIj5cbiAgICAgICAgICB7eyBnZXRFcnJvck1lc3NhZ2UoKSB9fVxuICAgICAgICA8L2lvbi1ub3RlPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9jdXJyZW5jeS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLWN1cnJlbmN5LWlucHV0XG4gKlxuICogQSBjdXJyZW5jeS9tb25leSBpbnB1dCB3aXRoIGZvcm1hdHRpbmcsIHN5bWJvbCBkaXNwbGF5LCBhbmQgb3B0aW9uYWwgY3VycmVuY3kgc2VsZWN0b3IuXG4gKlxuICogQGV4YW1wbGUgQmFzaWMgdXNhZ2VcbiAqIGBgYGh0bWxcbiAqIDx2YWwtY3VycmVuY3ktaW5wdXRcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBjb250cm9sOiBwcmljZUNvbnRyb2wsXG4gKiAgICAgY3VycmVuY3lDb2RlOiAnVVNEJyxcbiAqICAgICBwbGFjZWhvbGRlcjogJzAuMDAnXG4gKiAgIH1cIlxuICogPjwvdmFsLWN1cnJlbmN5LWlucHV0PlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgV2l0aCBjdXJyZW5jeSBzZWxlY3RvclxuICogYGBgaHRtbFxuICogPHZhbC1jdXJyZW5jeS1pbnB1dFxuICogICBbcHJvcHNdPVwie1xuICogICAgIGNvbnRyb2w6IGFtb3VudENvbnRyb2wsXG4gKiAgICAgbGFiZWw6ICdBbW91bnQnLFxuICogICAgIHNob3dDdXJyZW5jeVNlbGVjdG9yOiB0cnVlLFxuICogICAgIGN1cnJlbmNpZXM6IG15Q3VycmVuY2llcyxcbiAqICAgICBtaW46IDAsXG4gKiAgICAgbWF4OiAxMDAwMCxcbiAqICAgICBzaG93RXJyb3JzOiB0cnVlXG4gKiAgIH1cIlxuICogICAoY3VycmVuY3lDaGFuZ2UpPVwib25DdXJyZW5jeUNoYW5nZSgkZXZlbnQpXCJcbiAqID48L3ZhbC1jdXJyZW5jeS1pbnB1dD5cbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgQ3VycmVuY3lJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcHJvcHM6IEN1cnJlbmN5SW5wdXRNZXRhZGF0YTtcblxuICBAT3V0cHV0KCkgY3VycmVuY3lDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEN1cnJlbmN5SW5wdXRDaGFuZ2VFdmVudD4oKTtcblxuICBzdGF0ZXMgPSBDb21wb25lbnRTdGF0ZXM7XG5cbiAgZGlzcGxheUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPignJyk7XG4gIGN1cnJlbmN5Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KCcnKTtcblxuICBwcml2YXRlIGxhbmdTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHZhbHVlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBsYW5nU2VydmljZSA9IGluamVjdChMYW5nU2VydmljZSk7XG4gIHByaXZhdGUgaXNGb2N1c2VkID0gZmFsc2U7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gU2V0IGRlZmF1bHQgY3VycmVuY3lcbiAgICBjb25zdCBkZWZhdWx0Q3VycmVuY3kgPSB0aGlzLnByb3BzLmN1cnJlbmN5Q29kZSB8fCB0aGlzLnByb3BzLmN1cnJlbmN5Py5jb2RlIHx8ICdVU0QnO1xuICAgIHRoaXMuY3VycmVuY3lDb250cm9sLnNldFZhbHVlKGRlZmF1bHRDdXJyZW5jeSk7XG5cbiAgICAvLyBGb3JtYXQgaW5pdGlhbCB2YWx1ZVxuICAgIGlmICh0aGlzLnByb3BzLmNvbnRyb2w/LnZhbHVlICE9PSBudWxsICYmIHRoaXMucHJvcHMuY29udHJvbD8udmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5kaXNwbGF5Q29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdFZhbHVlKHRoaXMucHJvcHMuY29udHJvbC52YWx1ZSkpO1xuICAgIH1cblxuICAgIC8vIFN1YnNjcmliZSB0byBtYWluIGNvbnRyb2wgY2hhbmdlc1xuICAgIHRoaXMudmFsdWVTdWJzY3JpcHRpb24gPSB0aGlzLnByb3BzLmNvbnRyb2w/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgaWYgKCF0aGlzLmlzRm9jdXNlZCAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuZGlzcGxheUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXRWYWx1ZSh2YWx1ZSkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIGxhbmd1YWdlIGNoYW5nZXNcbiAgICBpZiAodGhpcy5oYXNSZWFjdGl2ZUNvbnRlbnQoKSkge1xuICAgICAgdGhpcy5sYW5nU3Vic2NyaXB0aW9uID0gdGhpcy5sYW5nU2VydmljZS5jdXJyZW50TGFuZyQuc3Vic2NyaWJlKCgpID0+IHt9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmxhbmdTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy52YWx1ZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFzUmVhY3RpdmVDb250ZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIShcbiAgICAgIHRoaXMucHJvcHMuY29udGVudENsYXNzICYmXG4gICAgICAodGhpcy5wcm9wcy5sYWJlbENvbnRlbnRLZXkgfHwgdGhpcy5wcm9wcy5wbGFjZWhvbGRlckNvbnRlbnRLZXkgfHwgdGhpcy5wcm9wcy5oaW50Q29udGVudEtleSlcbiAgICApO1xuICB9XG5cbiAgZ2V0TGFiZWwoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5wcm9wcy5sYWJlbENvbnRlbnRLZXkgJiYgdGhpcy5wcm9wcy5jb250ZW50Q2xhc3MpIHtcbiAgICAgIHJldHVybiB0aGlzLmxhbmdTZXJ2aWNlLmdldFRleHQodGhpcy5wcm9wcy5jb250ZW50Q2xhc3MsIHRoaXMucHJvcHMubGFiZWxDb250ZW50S2V5LCB0aGlzLnByb3BzLmxhYmVsIHx8ICcnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucHJvcHMubGFiZWwgfHwgJyc7XG4gIH1cblxuICBnZXRQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnByb3BzLnBsYWNlaG9sZGVyQ29udGVudEtleSAmJiB0aGlzLnByb3BzLmNvbnRlbnRDbGFzcykge1xuICAgICAgcmV0dXJuIHRoaXMubGFuZ1NlcnZpY2UuZ2V0VGV4dChcbiAgICAgICAgdGhpcy5wcm9wcy5jb250ZW50Q2xhc3MsXG4gICAgICAgIHRoaXMucHJvcHMucGxhY2Vob2xkZXJDb250ZW50S2V5LFxuICAgICAgICB0aGlzLnByb3BzLnBsYWNlaG9sZGVyIHx8ICcnXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wcm9wcy5wbGFjZWhvbGRlciB8fCB0aGlzLmdldERlZmF1bHRQbGFjZWhvbGRlcigpO1xuICB9XG5cbiAgZ2V0SGludCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnByb3BzLmhpbnRDb250ZW50S2V5ICYmIHRoaXMucHJvcHMuY29udGVudENsYXNzKSB7XG4gICAgICByZXR1cm4gdGhpcy5sYW5nU2VydmljZS5nZXRUZXh0KHRoaXMucHJvcHMuY29udGVudENsYXNzLCB0aGlzLnByb3BzLmhpbnRDb250ZW50S2V5LCB0aGlzLnByb3BzLmhpbnQgfHwgJycpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wcm9wcy5oaW50IHx8ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWZhdWx0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICBjb25zdCBkZWNpbWFscyA9IHRoaXMuZ2V0RGVjaW1hbFBsYWNlcygpO1xuICAgIHJldHVybiBkZWNpbWFscyA+IDAgPyBgMC4keycwJy5yZXBlYXQoZGVjaW1hbHMpfWAgOiAnMCc7XG4gIH1cblxuICBnZXRDdXJyZW5jeUxpc3QoKTogQ3VycmVuY3lDb25maWdbXSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuY3VycmVuY2llcyB8fCBDT01NT05fQ1VSUkVOQ0lFUztcbiAgfVxuXG4gIGdldFNlbGVjdGVkQ3VycmVuY3koKTogQ3VycmVuY3lDb25maWcge1xuICAgIGNvbnN0IGNvZGUgPSB0aGlzLmN1cnJlbmN5Q29udHJvbC52YWx1ZSB8fCAnVVNEJztcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5wcm9wcy5jdXJyZW5jeSB8fFxuICAgICAgdGhpcy5nZXRDdXJyZW5jeUxpc3QoKS5maW5kKGMgPT4gYy5jb2RlID09PSBjb2RlKSB8fFxuICAgICAgQ09NTU9OX0NVUlJFTkNJRVNbMF1cbiAgICApO1xuICB9XG5cbiAgZ2V0Q3VycmVuY3lTeW1ib2woKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTZWxlY3RlZEN1cnJlbmN5KCkuc3ltYm9sO1xuICB9XG5cbiAgZ2V0U3ltYm9sUG9zaXRpb24oKTogJ3ByZWZpeCcgfCAnc3VmZml4JyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U2VsZWN0ZWRDdXJyZW5jeSgpLnN5bWJvbFBvc2l0aW9uIHx8ICdwcmVmaXgnO1xuICB9XG5cbiAgZ2V0RGVjaW1hbFBsYWNlcygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmRlY2ltYWxQbGFjZXMgPz8gdGhpcy5nZXRTZWxlY3RlZEN1cnJlbmN5KCkuZGVjaW1hbFBsYWNlcyA/PyAyO1xuICB9XG5cbiAgZ2V0IGhhc0Vycm9yKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhISh0aGlzLnByb3BzLmNvbnRyb2w/LnRvdWNoZWQgJiYgdGhpcy5wcm9wcy5jb250cm9sPy5pbnZhbGlkKTtcbiAgfVxuXG4gIGdldEVycm9yTWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5wcm9wcy5jb250cm9sPy5lcnJvcnMgfHwgIXRoaXMucHJvcHMuZXJyb3JzKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgZXJyb3JLZXlzID0gT2JqZWN0LmtleXModGhpcy5wcm9wcy5jb250cm9sLmVycm9ycyk7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgZXJyb3JLZXlzKSB7XG4gICAgICBpZiAodGhpcy5wcm9wcy5lcnJvcnNba2V5XSkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9wcy5lcnJvcnNba2V5XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBvbklucHV0KGV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0VmFsdWUgPSBldmVudC5kZXRhaWwudmFsdWUgfHwgJyc7XG5cbiAgICAvLyBQYXJzZSB0aGUgbnVtZXJpYyB2YWx1ZVxuICAgIGNvbnN0IG51bWVyaWNWYWx1ZSA9IHRoaXMucGFyc2VWYWx1ZShpbnB1dFZhbHVlKTtcblxuICAgIC8vIFVwZGF0ZSB0aGUgbWFpbiBjb250cm9sIHdpdGggcmF3IG51bWJlclxuICAgIHRoaXMucHJvcHMuY29udHJvbD8uc2V0VmFsdWUobnVtZXJpY1ZhbHVlKTtcblxuICAgIC8vIEVtaXQgY2hhbmdlXG4gICAgdGhpcy5lbWl0Q2hhbmdlKG51bWVyaWNWYWx1ZSk7XG4gIH1cblxuICBvbkZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuaXNGb2N1c2VkID0gdHJ1ZTtcblxuICAgIC8vIFNob3cgcmF3IG51bWJlciBmb3IgZWRpdGluZ1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5wcm9wcy5jb250cm9sPy52YWx1ZTtcbiAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5kaXNwbGF5Q29udHJvbC5zZXRWYWx1ZShTdHJpbmcodmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICBvbkJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSBmYWxzZTtcbiAgICB0aGlzLnByb3BzLmNvbnRyb2w/Lm1hcmtBc1RvdWNoZWQoKTtcblxuICAgIC8vIEZvcm1hdCB0aGUgZGlzcGxheSB2YWx1ZVxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5wcm9wcy5jb250cm9sPy52YWx1ZTtcbiAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5kaXNwbGF5Q29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdFZhbHVlKHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgb25DdXJyZW5jeUNoYW5nZShldmVudDogQ3VzdG9tRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBSZWZvcm1hdCB3aXRoIG5ldyBjdXJyZW5jeSBzZXR0aW5nc1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5wcm9wcy5jb250cm9sPy52YWx1ZTtcbiAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5kaXNwbGF5Q29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1hdFZhbHVlKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0Q2hhbmdlKHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VWYWx1ZShpbnB1dDogc3RyaW5nKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgaWYgKCFpbnB1dCB8fCBpbnB1dC50cmltKCkgPT09ICcnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW5jeSA9IHRoaXMuZ2V0U2VsZWN0ZWRDdXJyZW5jeSgpO1xuXG4gICAgLy8gUmVtb3ZlIGN1cnJlbmN5IHN5bWJvbFxuICAgIGxldCBjbGVhbmVkID0gaW5wdXQucmVwbGFjZShjdXJyZW5jeS5zeW1ib2wsICcnKTtcblxuICAgIC8vIFJlbW92ZSB0aG91c2FuZHMgc2VwYXJhdG9yXG4gICAgY29uc3QgdGhvdXNhbmRzU2VwID0gdGhpcy5wcm9wcy5zaG93VGhvdXNhbmRzU2VwYXJhdG9yICE9PSBmYWxzZSA/IChjdXJyZW5jeS50aG91c2FuZHNTZXBhcmF0b3IgfHwgJywnKSA6ICcnO1xuICAgIGlmICh0aG91c2FuZHNTZXApIHtcbiAgICAgIGNsZWFuZWQgPSBjbGVhbmVkLnNwbGl0KHRob3VzYW5kc1NlcCkuam9pbignJyk7XG4gICAgfVxuXG4gICAgLy8gTm9ybWFsaXplIGRlY2ltYWwgc2VwYXJhdG9yXG4gICAgY29uc3QgZGVjaW1hbFNlcCA9IGN1cnJlbmN5LmRlY2ltYWxTZXBhcmF0b3IgfHwgJy4nO1xuICAgIGNsZWFuZWQgPSBjbGVhbmVkLnJlcGxhY2UoZGVjaW1hbFNlcCwgJy4nKTtcblxuICAgIC8vIFJlbW92ZSBhbnkgcmVtYWluaW5nIG5vbi1udW1lcmljIGNoYXJhY3RlcnMgKGV4Y2VwdCBtaW51cyBhbmQgZGVjaW1hbClcbiAgICBjbGVhbmVkID0gY2xlYW5lZC5yZXBsYWNlKC9bXlxcZC5cXC1dL2csICcnKTtcblxuICAgIC8vIEhhbmRsZSBuZWdhdGl2ZVxuICAgIGlmICghdGhpcy5wcm9wcy5hbGxvd05lZ2F0aXZlKSB7XG4gICAgICBjbGVhbmVkID0gY2xlYW5lZC5yZXBsYWNlKCctJywgJycpO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlID0gcGFyc2VGbG9hdChjbGVhbmVkKTtcblxuICAgIGlmIChpc05hTih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIEFwcGx5IG1pbi9tYXggY29uc3RyYWludHNcbiAgICBpZiAodGhpcy5wcm9wcy5taW4gIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSA8IHRoaXMucHJvcHMubWluKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5taW47XG4gICAgfVxuICAgIGlmICh0aGlzLnByb3BzLm1heCAhPT0gdW5kZWZpbmVkICYmIHZhbHVlID4gdGhpcy5wcm9wcy5tYXgpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLm1heDtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdFZhbHVlKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGN1cnJlbmN5ID0gdGhpcy5nZXRTZWxlY3RlZEN1cnJlbmN5KCk7XG4gICAgY29uc3QgZGVjaW1hbHMgPSB0aGlzLmdldERlY2ltYWxQbGFjZXMoKTtcblxuICAgIC8vIEZvcm1hdCB0aGUgbnVtYmVyXG4gICAgbGV0IGZvcm1hdHRlZCA9IHZhbHVlLnRvRml4ZWQoZGVjaW1hbHMpO1xuXG4gICAgLy8gUmVwbGFjZSBkZWNpbWFsIHNlcGFyYXRvclxuICAgIGNvbnN0IGRlY2ltYWxTZXAgPSBjdXJyZW5jeS5kZWNpbWFsU2VwYXJhdG9yIHx8ICcuJztcbiAgICBmb3JtYXR0ZWQgPSBmb3JtYXR0ZWQucmVwbGFjZSgnLicsIGRlY2ltYWxTZXApO1xuXG4gICAgLy8gQWRkIHRob3VzYW5kcyBzZXBhcmF0b3JcbiAgICBpZiAodGhpcy5wcm9wcy5zaG93VGhvdXNhbmRzU2VwYXJhdG9yICE9PSBmYWxzZSkge1xuICAgICAgY29uc3QgdGhvdXNhbmRzU2VwID0gY3VycmVuY3kudGhvdXNhbmRzU2VwYXJhdG9yIHx8ICcsJztcbiAgICAgIGNvbnN0IHBhcnRzID0gZm9ybWF0dGVkLnNwbGl0KGRlY2ltYWxTZXApO1xuICAgICAgcGFydHNbMF0gPSBwYXJ0c1swXS5yZXBsYWNlKC9cXEIoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCB0aG91c2FuZHNTZXApO1xuICAgICAgZm9ybWF0dGVkID0gcGFydHMuam9pbihkZWNpbWFsU2VwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm9ybWF0dGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0Q2hhbmdlKHZhbHVlOiBudW1iZXIgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW5jeUNoYW5nZS5lbWl0KHtcbiAgICAgIHZhbHVlLFxuICAgICAgZm9ybWF0dGVkVmFsdWU6IHZhbHVlICE9PSBudWxsID8gdGhpcy5mb3JtYXRWYWx1ZSh2YWx1ZSkgOiAnJyxcbiAgICAgIGN1cnJlbmN5OiB0aGlzLmdldFNlbGVjdGVkQ3VycmVuY3koKSxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
347
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3ktaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9jdXJyZW5jeS1pbnB1dC9jdXJyZW5jeS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFMUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5QyxPQUFPLEVBQW1FLGlCQUFpQixFQUFFLE1BQU0sU0FBUyxDQUFDOzs7QUEwRTdHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0JHO0FBQ0gsTUFBTSxPQUFPLHNCQUFzQjtJQXhHbkM7UUEyR1ksbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBNEIsQ0FBQztRQUV4RSxXQUFNLEdBQUcsZUFBZSxDQUFDO1FBRXpCLG1CQUFjLEdBQUcsSUFBSSxXQUFXLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDN0Msb0JBQWUsR0FBRyxJQUFJLFdBQVcsQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUV0QyxzQkFBaUIsR0FBd0IsSUFBSSxDQUFDO1FBQzlDLGNBQVMsR0FBRyxLQUFLLENBQUM7S0EyTTNCO0lBek1DLFFBQVE7UUFDTix1QkFBdUI7UUFDdkIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFD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SUFDbkIsQ0FBQztJQUVPLFVBQVUsQ0FBQyxLQUFvQjtRQUNyQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztZQUN2QixLQUFLO1lBQ0wsY0FBYyxFQUFFLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDN0QsUUFBUSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtTQUNyQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQXJOVSxzQkFBc0I7bUdBQXRCLHNCQUFzQix5SkFwR3ZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWlFVCxrakRBbEVTLFlBQVksOEJBQUUsbUJBQW1CLDBUQUFFLFFBQVEsOGVBQUUsU0FBUyxrVkFBRSxlQUFlLDZGQUFFLE9BQU87OzRGQXFHL0Usc0JBQXNCO2tCQXhHbEMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE9BQU8sQ0FBQyxZQUNqRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpRVQ7OEJBb0NRLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJb25JbnB1dCwgSW9uU2VsZWN0LCBJb25TZWxlY3RPcHRpb24sIElvbk5vdGUgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29tcG9uZW50U3RhdGVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgQ3VycmVuY3lJbnB1dE1ldGFkYXRhLCBDdXJyZW5jeUlucHV0Q2hhbmdlRXZlbnQsIEN1cnJlbmN5Q29uZmlnLCBDT01NT05fQ1VSUkVOQ0lFUyB9IGZyb20gJy4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtY3VycmVuY3ktaW5wdXQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBJb25JbnB1dCwgSW9uU2VsZWN0LCBJb25TZWxlY3RPcHRpb24sIElvbk5vdGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJjdXJyZW5jeS1pbnB1dC1jb250YWluZXJcIiBbY2xhc3NdPVwicHJvcHMuY3NzQ2xhc3NcIiBbY2xhc3MuaGFzLWVycm9yXT1cImhhc0Vycm9yXCI+XG4gICAgICBAaWYgKHByb3BzLmxhYmVsKSB7XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImN1cnJlbmN5LWxhYmVsXCI+e3sgZ2V0TGFiZWwoKSB9fTwvbGFiZWw+XG4gICAgICB9XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJjdXJyZW5jeS1pbnB1dC13cmFwcGVyXCIgW2NsYXNzLmRpc2FibGVkXT1cInByb3BzLnN0YXRlID09PSBzdGF0ZXMuRElTQUJMRURcIj5cbiAgICAgICAgQGlmIChwcm9wcy5zaG93Q3VycmVuY3lTZWxlY3Rvcikge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJyZW5jeS1zZWxlY3RvclwiPlxuICAgICAgICAgICAgPGlvbi1zZWxlY3RcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImN1cnJlbmN5Q29udHJvbFwiXG4gICAgICAgICAgICAgIGludGVyZmFjZT1cInBvcG92ZXJcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJvcHMuc3RhdGUgPT09IHN0YXRlcy5ESVNBQkxFRFwiXG4gICAgICAgICAgICAgIChpb25DaGFuZ2UpPVwib25DdXJyZW5jeUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQGZvciAoY3VyciBvZiBnZXRDdXJyZW5jeUxpc3QoKTsgdHJhY2sgY3Vyci5jb2RlKSB7XG4gICAgICAgICAgICAgICAgPGlvbi1zZWxlY3Qtb3B0aW9uIFt2YWx1ZV09XCJjdXJyLmNvZGVcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGN1cnIuY29kZSB9fSAoe3sgY3Vyci5zeW1ib2wgfX0pXG4gICAgICAgICAgICAgICAgPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9pb24tc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBlbHNlIGlmIChwcm9wcy5zaG93U3ltYm9sICE9PSBmYWxzZSkge1xuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiY3VycmVuY3ktc3ltYm9sXCJcbiAgICAgICAgICAgIFtjbGFzcy5wcmVmaXhdPVwiZ2V0U3ltYm9sUG9zaXRpb24oKSA9PT0gJ3ByZWZpeCdcIlxuICAgICAgICAgICAgW2NsYXNzLnN1ZmZpeF09XCJnZXRTeW1ib2xQb3NpdGlvbigpID09PSAnc3VmZml4J1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgQGlmIChnZXRTeW1ib2xQb3NpdGlvbigpID09PSAncHJlZml4Jykge1xuICAgICAgICAgICAgICB7eyBnZXRDdXJyZW5jeVN5bWJvbCgpIH19XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiYW1vdW50LWlucHV0XCI+XG4gICAgICAgICAgPGlvbi1pbnB1dFxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImRpc3BsYXlDb250cm9sXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGlucHV0bW9kZT1cImRlY2ltYWxcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImdldFBsYWNlaG9sZGVyKClcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInByb3BzLnN0YXRlID09PSBzdGF0ZXMuRElTQUJMRURcIlxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInByb3BzLnN0YXRlID09PSBzdGF0ZXMuV09SS0lOR1wiXG4gICAgICAgICAgICAoaW9uSW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChpb25CbHVyKT1cIm9uQmx1cigpXCJcbiAgICAgICAgICAgIChpb25Gb2N1cyk9XCJvbkZvY3VzKClcIlxuICAgICAgICAgID48L2lvbi1pbnB1dD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgQGlmIChwcm9wcy5zaG93U3ltYm9sICE9PSBmYWxzZSAmJiBnZXRTeW1ib2xQb3NpdGlvbigpID09PSAnc3VmZml4JyAmJiAhcHJvcHMuc2hvd0N1cnJlbmN5U2VsZWN0b3IpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VycmVuY3ktc3ltYm9sIHN1ZmZpeFwiPlxuICAgICAgICAgICAge3sgZ2V0Q3VycmVuY3lTeW1ib2woKSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgICAgQGlmIChwcm9wcy5oaW50ICYmICFoYXNFcnJvcikge1xuICAgICAgICA8aW9uLW5vdGUgY2xhc3M9XCJoaW50XCI+e3sgZ2V0SGludCgpIH19PC9pb24tbm90ZT5cbiAgICAgIH1cblxuICAgICAgQGlmIChoYXNFcnJvciAmJiBwcm9wcy5zaG93RXJyb3JzKSB7XG4gICAgICAgIDxpb24tbm90ZSBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIiBjb2xvcj1cImRhbmdlclwiPlxuICAgICAgICAgIHt7IGdldEVycm9yTWVzc2FnZSgpIH19XG4gICAgICAgIDwvaW9uLW5vdGU+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2N1cnJlbmN5LWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtY3VycmVuY3ktaW5wdXRcbiAqXG4gKiBBIGN1cnJlbmN5L21vbmV5IGlucHV0IHdpdGggZm9ybWF0dGluZywgc3ltYm9sIGRpc3BsYXksIGFuZCBvcHRpb25hbCBjdXJyZW5jeSBzZWxlY3Rvci5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZVxuICogYGBgaHRtbFxuICogPHZhbC1jdXJyZW5jeS1pbnB1dFxuICogICBbcHJvcHNdPVwie1xuICogICAgIGNvbnRyb2w6IHByaWNlQ29udHJvbCxcbiAqICAgICBjdXJyZW5jeUNvZGU6ICdVU0QnLFxuICogICAgIHBsYWNlaG9sZGVyOiAnMC4wMCdcbiAqICAgfVwiXG4gKiA+PC92YWwtY3VycmVuY3ktaW5wdXQ+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBXaXRoIGN1cnJlbmN5IHNlbGVjdG9yXG4gKiBgYGBodG1sXG4gKiA8dmFsLWN1cnJlbmN5LWlucHV0XG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgY29udHJvbDogYW1vdW50Q29udHJvbCxcbiAqICAgICBsYWJlbDogJ0Ftb3VudCcsXG4gKiAgICAgc2hvd0N1cnJlbmN5U2VsZWN0b3I6IHRydWUsXG4gKiAgICAgY3VycmVuY2llczogbXlDdXJyZW5jaWVzLFxuICogICAgIG1pbjogMCxcbiAqICAgICBtYXg6IDEwMDAwLFxuICogICAgIHNob3dFcnJvcnM6IHRydWVcbiAqICAgfVwiXG4gKiAgIChjdXJyZW5jeUNoYW5nZSk9XCJvbkN1cnJlbmN5Q2hhbmdlKCRldmVudClcIlxuICogPjwvdmFsLWN1cnJlbmN5LWlucHV0PlxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBDdXJyZW5jeUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwcm9wczogQ3VycmVuY3lJbnB1dE1ldGFkYXRhO1xuXG4gIEBPdXRwdXQoKSBjdXJyZW5jeUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q3VycmVuY3lJbnB1dENoYW5nZUV2ZW50PigpO1xuXG4gIHN0YXRlcyA9IENvbXBvbmVudFN0YXRlcztcblxuICBkaXNwbGF5Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KCcnKTtcbiAgY3VycmVuY3lDb250cm9sID0gbmV3IEZvcm1Db250cm9sPHN0cmluZz4oJycpO1xuXG4gIHByaXZhdGUgdmFsdWVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGlzRm9jdXNlZCA9IGZhbHNlO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIFNldCBkZWZhdWx0IGN1cnJlbmN5XG4gICAgY29uc3QgZGVmYXVsdEN1cnJlbmN5ID0gdGhpcy5wcm9wcy5jdXJyZW5jeUNvZGUgfHwgdGhpcy5wcm9wcy5jdXJyZW5jeT8uY29kZSB8fCAnVVNEJztcbiAgICB0aGlzLmN1cnJlbmN5Q29udHJvbC5zZXRWYWx1ZShkZWZhdWx0Q3VycmVuY3kpO1xuXG4gICAgLy8gRm9ybWF0IGluaXRpYWwgdmFsdWVcbiAgICBpZiAodGhpcy5wcm9wcy5jb250cm9sPy52YWx1ZSAhPT0gbnVsbCAmJiB0aGlzLnByb3BzLmNvbnRyb2w/LnZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZGlzcGxheUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtYXRWYWx1ZSh0aGlzLnByb3BzLmNvbnRyb2wudmFsdWUpKTtcbiAgICB9XG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gbWFpbiBjb250cm9sIGNoYW5nZXNcbiAgICB0aGlzLnZhbHVlU3Vic2NyaXB0aW9uID0gdGhpcy5wcm9wcy5jb250cm9sPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGlmICghdGhpcy5pc0ZvY3VzZWQgJiYgdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmRpc3BsYXlDb250cm9sLnNldFZhbHVlKHRoaXMuZm9ybWF0VmFsdWUodmFsdWUpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBnZXRMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmxhYmVsIHx8ICcnO1xuICB9XG5cbiAgZ2V0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5wbGFjZWhvbGRlciB8fCB0aGlzLmdldERlZmF1bHRQbGFjZWhvbGRlcigpO1xuICB9XG5cbiAgZ2V0SGludCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmhpbnQgfHwgJyc7XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHRQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRlY2ltYWxzID0gdGhpcy5nZXREZWNpbWFsUGxhY2VzKCk7XG4gICAgcmV0dXJuIGRlY2ltYWxzID4gMCA/IGAwLiR7JzAnLnJlcGVhdChkZWNpbWFscyl9YCA6ICcwJztcbiAgfVxuXG4gIGdldEN1cnJlbmN5TGlzdCgpOiBDdXJyZW5jeUNvbmZpZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5jdXJyZW5jaWVzIHx8IENPTU1PTl9DVVJSRU5DSUVTO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRDdXJyZW5jeSgpOiBDdXJyZW5jeUNvbmZpZyB7XG4gICAgY29uc3QgY29kZSA9IHRoaXMuY3VycmVuY3lDb250cm9sLnZhbHVlIHx8ICdVU0QnO1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnByb3BzLmN1cnJlbmN5IHx8XG4gICAgICB0aGlzLmdldEN1cnJlbmN5TGlzdCgpLmZpbmQoYyA9PiBjLmNvZGUgPT09IGNvZGUpIHx8XG4gICAgICBDT01NT05fQ1VSUkVOQ0lFU1swXVxuICAgICk7XG4gIH1cblxuICBnZXRDdXJyZW5jeVN5bWJvbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldFNlbGVjdGVkQ3VycmVuY3koKS5zeW1ib2w7XG4gIH1cblxuICBnZXRTeW1ib2xQb3NpdGlvbigpOiAncHJlZml4JyB8ICdzdWZmaXgnIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTZWxlY3RlZEN1cnJlbmN5KCkuc3ltYm9sUG9zaXRpb24gfHwgJ3ByZWZpeCc7XG4gIH1cblxuICBnZXREZWNpbWFsUGxhY2VzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuZGVjaW1hbFBsYWNlcyA/PyB0aGlzLmdldFNlbGVjdGVkQ3VycmVuY3koKS5kZWNpbWFsUGxhY2VzID8/IDI7XG4gIH1cblxuICBnZXQgaGFzRXJyb3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKHRoaXMucHJvcHMuY29udHJvbD8udG91Y2hlZCAmJiB0aGlzLnByb3BzLmNvbnRyb2w/LmludmFsaWQpO1xuICB9XG5cbiAgZ2V0RXJyb3JNZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLnByb3BzLmNvbnRyb2w/LmVycm9ycyB8fCAhdGhpcy5wcm9wcy5lcnJvcnMpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBlcnJvcktleXMgPSBPYmplY3Qua2V5cyh0aGlzLnByb3BzLmNvbnRyb2wuZXJyb3JzKTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBlcnJvcktleXMpIHtcbiAgICAgIGlmICh0aGlzLnByb3BzLmVycm9yc1trZXldKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLmVycm9yc1trZXldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIG9uSW5wdXQoZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXRWYWx1ZSA9IGV2ZW50LmRldGFpbC52YWx1ZSB8fCAnJztcblxuICAgIC8vIFBhcnNlIHRoZSBudW1lcmljIHZhbHVlXG4gICAgY29uc3QgbnVtZXJpY1ZhbHVlID0gdGhpcy5wYXJzZVZhbHVlKGlucHV0VmFsdWUpO1xuXG4gICAgLy8gVXBkYXRlIHRoZSBtYWluIGNvbnRyb2wgd2l0aCByYXcgbnVtYmVyXG4gICAgdGhpcy5wcm9wcy5jb250cm9sPy5zZXRWYWx1ZShudW1lcmljVmFsdWUpO1xuXG4gICAgLy8gRW1pdCBjaGFuZ2VcbiAgICB0aGlzLmVtaXRDaGFuZ2UobnVtZXJpY1ZhbHVlKTtcbiAgfVxuXG4gIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSB0cnVlO1xuXG4gICAgLy8gU2hvdyByYXcgbnVtYmVyIGZvciBlZGl0aW5nXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnByb3BzLmNvbnRyb2w/LnZhbHVlO1xuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmRpc3BsYXlDb250cm9sLnNldFZhbHVlKFN0cmluZyh2YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIG9uQmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xuICAgIHRoaXMucHJvcHMuY29udHJvbD8ubWFya0FzVG91Y2hlZCgpO1xuXG4gICAgLy8gRm9ybWF0IHRoZSBkaXNwbGF5IHZhbHVlXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnByb3BzLmNvbnRyb2w/LnZhbHVlO1xuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmRpc3BsYXlDb250cm9sLnNldFZhbHVlKHRoaXMuZm9ybWF0VmFsdWUodmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICBvbkN1cnJlbmN5Q2hhbmdlKGV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIC8vIFJlZm9ybWF0IHdpdGggbmV3IGN1cnJlbmN5IHNldHRpbmdzXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnByb3BzLmNvbnRyb2w/LnZhbHVlO1xuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmRpc3BsYXlDb250cm9sLnNldFZhbHVlKHRoaXMuZm9ybWF0VmFsdWUodmFsdWUpKTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXRDaGFuZ2UodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVZhbHVlKGlucHV0OiBzdHJpbmcpOiBudW1iZXIgfCBudWxsIHtcbiAgICBpZiAoIWlucHV0IHx8IGlucHV0LnRyaW0oKSA9PT0gJycpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbmN5ID0gdGhpcy5nZXRTZWxlY3RlZEN1cnJlbmN5KCk7XG5cbiAgICAvLyBSZW1vdmUgY3VycmVuY3kgc3ltYm9sXG4gICAgbGV0IGNsZWFuZWQgPSBpbnB1dC5yZXBsYWNlKGN1cnJlbmN5LnN5bWJvbCwgJycpO1xuXG4gICAgLy8gUmVtb3ZlIHRob3VzYW5kcyBzZXBhcmF0b3JcbiAgICBjb25zdCB0aG91c2FuZHNTZXAgPSB0aGlzLnByb3BzLnNob3dUaG91c2FuZHNTZXBhcmF0b3IgIT09IGZhbHNlID8gKGN1cnJlbmN5LnRob3VzYW5kc1NlcGFyYXRvciB8fCAnLCcpIDogJyc7XG4gICAgaWYgKHRob3VzYW5kc1NlcCkge1xuICAgICAgY2xlYW5lZCA9IGNsZWFuZWQuc3BsaXQodGhvdXNhbmRzU2VwKS5qb2luKCcnKTtcbiAgICB9XG5cbiAgICAvLyBOb3JtYWxpemUgZGVjaW1hbCBzZXBhcmF0b3JcbiAgICBjb25zdCBkZWNpbWFsU2VwID0gY3VycmVuY3kuZGVjaW1hbFNlcGFyYXRvciB8fCAnLic7XG4gICAgY2xlYW5lZCA9IGNsZWFuZWQucmVwbGFjZShkZWNpbWFsU2VwLCAnLicpO1xuXG4gICAgLy8gUmVtb3ZlIGFueSByZW1haW5pbmcgbm9uLW51bWVyaWMgY2hhcmFjdGVycyAoZXhjZXB0IG1pbnVzIGFuZCBkZWNpbWFsKVxuICAgIGNsZWFuZWQgPSBjbGVhbmVkLnJlcGxhY2UoL1teXFxkLlxcLV0vZywgJycpO1xuXG4gICAgLy8gSGFuZGxlIG5lZ2F0aXZlXG4gICAgaWYgKCF0aGlzLnByb3BzLmFsbG93TmVnYXRpdmUpIHtcbiAgICAgIGNsZWFuZWQgPSBjbGVhbmVkLnJlcGxhY2UoJy0nLCAnJyk7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBwYXJzZUZsb2F0KGNsZWFuZWQpO1xuXG4gICAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gQXBwbHkgbWluL21heCBjb25zdHJhaW50c1xuICAgIGlmICh0aGlzLnByb3BzLm1pbiAhPT0gdW5kZWZpbmVkICYmIHZhbHVlIDwgdGhpcy5wcm9wcy5taW4pIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLm1pbjtcbiAgICB9XG4gICAgaWYgKHRoaXMucHJvcHMubWF4ICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgPiB0aGlzLnByb3BzLm1heCkge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMubWF4O1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0VmFsdWUodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgY3VycmVuY3kgPSB0aGlzLmdldFNlbGVjdGVkQ3VycmVuY3koKTtcbiAgICBjb25zdCBkZWNpbWFscyA9IHRoaXMuZ2V0RGVjaW1hbFBsYWNlcygpO1xuXG4gICAgLy8gRm9ybWF0IHRoZSBudW1iZXJcbiAgICBsZXQgZm9ybWF0dGVkID0gdmFsdWUudG9GaXhlZChkZWNpbWFscyk7XG5cbiAgICAvLyBSZXBsYWNlIGRlY2ltYWwgc2VwYXJhdG9yXG4gICAgY29uc3QgZGVjaW1hbFNlcCA9IGN1cnJlbmN5LmRlY2ltYWxTZXBhcmF0b3IgfHwgJy4nO1xuICAgIGZvcm1hdHRlZCA9IGZvcm1hdHRlZC5yZXBsYWNlKCcuJywgZGVjaW1hbFNlcCk7XG5cbiAgICAvLyBBZGQgdGhvdXNhbmRzIHNlcGFyYXRvclxuICAgIGlmICh0aGlzLnByb3BzLnNob3dUaG91c2FuZHNTZXBhcmF0b3IgIT09IGZhbHNlKSB7XG4gICAgICBjb25zdCB0aG91c2FuZHNTZXAgPSBjdXJyZW5jeS50aG91c2FuZHNTZXBhcmF0b3IgfHwgJywnO1xuICAgICAgY29uc3QgcGFydHMgPSBmb3JtYXR0ZWQuc3BsaXQoZGVjaW1hbFNlcCk7XG4gICAgICBwYXJ0c1swXSA9IHBhcnRzWzBdLnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csIHRob3VzYW5kc1NlcCk7XG4gICAgICBmb3JtYXR0ZWQgPSBwYXJ0cy5qb2luKGRlY2ltYWxTZXApO1xuICAgIH1cblxuICAgIHJldHVybiBmb3JtYXR0ZWQ7XG4gIH1cblxuICBwcml2YXRlIGVtaXRDaGFuZ2UodmFsdWU6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbmN5Q2hhbmdlLmVtaXQoe1xuICAgICAgdmFsdWUsXG4gICAgICBmb3JtYXR0ZWRWYWx1ZTogdmFsdWUgIT09IG51bGwgPyB0aGlzLmZvcm1hdFZhbHVlKHZhbHVlKSA6ICcnLFxuICAgICAgY3VycmVuY3k6IHRoaXMuZ2V0U2VsZWN0ZWRDdXJyZW5jeSgpLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, Input, Output, EventEmitter
|
|
2
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
3
3
|
import { ReactiveFormsModule, FormControl } from '@angular/forms';
|
|
4
4
|
import { IonDatetime, IonDatetimeButton, IonModal, IonNote, IonIcon, } from '@ionic/angular/standalone';
|
|
5
5
|
import { addIcons } from 'ionicons';
|
|
6
6
|
import { arrowForwardOutline, calendarOutline } from 'ionicons/icons';
|
|
7
|
-
import { LangService } from '../../../services/lang-provider/lang-provider.service';
|
|
8
7
|
import { ComponentStates } from '../../types';
|
|
9
8
|
import * as i0 from "@angular/core";
|
|
10
9
|
import * as i1 from "@angular/forms";
|
|
@@ -50,9 +49,7 @@ export class DateRangeInputComponent {
|
|
|
50
49
|
this.startDatetimeId = `start-datetime-${Math.random().toString(36).substr(2, 9)}`;
|
|
51
50
|
this.endDatetimeId = `end-datetime-${Math.random().toString(36).substr(2, 9)}`;
|
|
52
51
|
this.showDayCount = true;
|
|
53
|
-
this.langSubscription = null;
|
|
54
52
|
this.valueSubscription = null;
|
|
55
|
-
this.langService = inject(LangService);
|
|
56
53
|
}
|
|
57
54
|
ngOnInit() {
|
|
58
55
|
// Use provided controls or internal ones
|
|
@@ -83,44 +80,20 @@ export class DateRangeInputComponent {
|
|
|
83
80
|
}
|
|
84
81
|
}
|
|
85
82
|
});
|
|
86
|
-
// Subscribe to language changes
|
|
87
|
-
if (this.hasReactiveContent()) {
|
|
88
|
-
this.langSubscription = this.langService.currentLang$.subscribe(() => { });
|
|
89
|
-
}
|
|
90
83
|
}
|
|
91
84
|
ngOnDestroy() {
|
|
92
|
-
this.langSubscription?.unsubscribe();
|
|
93
85
|
this.valueSubscription?.unsubscribe();
|
|
94
86
|
}
|
|
95
|
-
hasReactiveContent() {
|
|
96
|
-
return !!(this.props.contentClass &&
|
|
97
|
-
(this.props.labelContentKey ||
|
|
98
|
-
this.props.startLabelContentKey ||
|
|
99
|
-
this.props.endLabelContentKey ||
|
|
100
|
-
this.props.hintContentKey));
|
|
101
|
-
}
|
|
102
87
|
getLabel() {
|
|
103
|
-
if (this.props.labelContentKey && this.props.contentClass) {
|
|
104
|
-
return this.langService.getText(this.props.contentClass, this.props.labelContentKey, this.props.label || '');
|
|
105
|
-
}
|
|
106
88
|
return this.props.label || '';
|
|
107
89
|
}
|
|
108
90
|
getStartLabel() {
|
|
109
|
-
if (this.props.startLabelContentKey && this.props.contentClass) {
|
|
110
|
-
return this.langService.getText(this.props.contentClass, this.props.startLabelContentKey, this.props.startLabel || '');
|
|
111
|
-
}
|
|
112
91
|
return this.props.startLabel || '';
|
|
113
92
|
}
|
|
114
93
|
getEndLabel() {
|
|
115
|
-
if (this.props.endLabelContentKey && this.props.contentClass) {
|
|
116
|
-
return this.langService.getText(this.props.contentClass, this.props.endLabelContentKey, this.props.endLabel || '');
|
|
117
|
-
}
|
|
118
94
|
return this.props.endLabel || '';
|
|
119
95
|
}
|
|
120
96
|
getHint() {
|
|
121
|
-
if (this.props.hintContentKey && this.props.contentClass) {
|
|
122
|
-
return this.langService.getText(this.props.contentClass, this.props.hintContentKey, this.props.hint || '');
|
|
123
|
-
}
|
|
124
97
|
return this.props.hint || '';
|
|
125
98
|
}
|
|
126
99
|
getMinDate() {
|
|
@@ -415,4 +388,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
415
388
|
}], rangeChange: [{
|
|
416
389
|
type: Output
|
|
417
390
|
}] } });
|
|
418
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2RhdGUtcmFuZ2UtaW5wdXQvZGF0ZS1yYW5nZS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUNMLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsUUFBUSxFQUNSLE9BQU8sRUFDUCxPQUFPLEdBQ1IsTUFBTSwyQkFBMkIsQ0FBQztBQUVuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDcEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7O0FBRzlDLFFBQVEsQ0FBQyxFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7QUF1R25EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0JHO0FBQ0gsTUFBTSxPQUFPLHVCQUF1QjtJQXJJcEM7UUF3SVksZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBd0IsQ0FBQztRQUVqRSxXQUFNLEdBQUcsZUFBZSxDQUFDO1FBRXpCLHlCQUFvQixHQUFHLElBQUksV0FBVyxDQUFnQixJQUFJLENBQUMsQ0FBQztRQUM1RCx1QkFBa0Is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RkFBRSxPQUFPOzs0RkFrSTVGLHVCQUF1QjtrQkFySW5DLFNBQVM7K0JBQ0Usc0JBQXNCLGNBQ3BCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsWUFDOUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4RlQ7OEJBb0NRLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE9uRGVzdHJveSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIElvbkRhdGV0aW1lLFxuICBJb25EYXRldGltZUJ1dHRvbixcbiAgSW9uTW9kYWwsXG4gIElvbk5vdGUsXG4gIElvbkljb24sXG59IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IGFycm93Rm9yd2FyZE91dGxpbmUsIGNhbGVuZGFyT3V0bGluZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcbmltcG9ydCB7IExhbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbGFuZy1wcm92aWRlci9sYW5nLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcG9uZW50U3RhdGVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgRGF0ZVJhbmdlSW5wdXRNZXRhZGF0YSwgRGF0ZVJhbmdlQ2hhbmdlRXZlbnQsIERhdGVSYW5nZVZhbHVlIH0gZnJvbSAnLi90eXBlcyc7XG5cbmFkZEljb25zKHsgYXJyb3dGb3J3YXJkT3V0bGluZSwgY2FsZW5kYXJPdXRsaW5lIH0pO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtZGF0ZS1yYW5nZS1pbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIElvbkRhdGV0aW1lLCBJb25EYXRldGltZUJ1dHRvbiwgSW9uTW9kYWwsIElvbk5vdGUsIElvbkljb25dLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZGF0ZS1yYW5nZS1jb250YWluZXJcIlxuICAgICAgW2NsYXNzXT1cInByb3BzLmNzc0NsYXNzXCJcbiAgICAgIFtjbGFzcy5oYXMtZXJyb3JdPVwiaGFzRXJyb3JcIlxuICAgICAgW2NsYXNzLmhvcml6b250YWxdPVwicHJvcHMubGF5b3V0ICE9PSAndmVydGljYWwnXCJcbiAgICAgIFtjbGFzcy52ZXJ0aWNhbF09XCJwcm9wcy5sYXlvdXQgPT09ICd2ZXJ0aWNhbCdcIlxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cInByb3BzLnN0YXRlID09PSBzdGF0ZXMuRElTQUJMRURcIlxuICAgID5cbiAgICAgIEBpZiAocHJvcHMubGFiZWwpIHtcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwicmFuZ2UtbGFiZWxcIj57eyBnZXRMYWJlbCgpIH19PC9sYWJlbD5cbiAgICAgIH1cblxuICAgICAgPGRpdiBjbGFzcz1cImRhdGUtaW5wdXRzLXdyYXBwZXJcIj5cbiAgICAgICAgPCEtLSBTdGFydCBEYXRlIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1pbnB1dCBzdGFydC1kYXRlXCI+XG4gICAgICAgICAgQGlmIChwcm9wcy5zdGFydExhYmVsIHx8IHByb3BzLnN0YXJ0TGFiZWxDb250ZW50S2V5KSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGUtbGFiZWxcIj57eyBnZXRTdGFydExhYmVsKCkgfX08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8aW9uLWRhdGV0aW1lLWJ1dHRvbiBbZGF0ZXRpbWVdPVwic3RhcnREYXRldGltZUlkXCI+PC9pb24tZGF0ZXRpbWUtYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxpb24tbW9kYWwgW2tlZXBDb250ZW50c01vdW50ZWRdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8aW9uLWRhdGV0aW1lXG4gICAgICAgICAgICAgICAgW2lkXT1cInN0YXJ0RGF0ZXRpbWVJZFwiXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImludGVybmFsU3RhcnRDb250cm9sXCJcbiAgICAgICAgICAgICAgICBbcHJlc2VudGF0aW9uXT1cInByb3BzLnByZXNlbnRhdGlvbiB8fCAnZGF0ZSdcIlxuICAgICAgICAgICAgICAgIFtsb2NhbGVdPVwicHJvcHMubG9jYWxlIHx8ICdlcy1FUydcIlxuICAgICAgICAgICAgICAgIFtmaXJzdERheU9mV2Vla109XCJwcm9wcy5maXJzdERheU9mV2VlayA/PyAxXCJcbiAgICAgICAgICAgICAgICBbbWluXT1cImdldE1pbkRhdGUoKVwiXG4gICAgICAgICAgICAgICAgW21heF09XCJnZXRNYXhTdGFydERhdGUoKVwiXG4gICAgICAgICAgICAgICAgW3Nob3dEZWZhdWx0QnV0dG9uc109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbZG9uZVRleHRdPVwicHJvcHMuZG9uZVRleHQgfHwgJ0FjZXB0YXInXCJcbiAgICAgICAgICAgICAgICBbY2FuY2VsVGV4dF09XCJwcm9wcy5jYW5jZWxUZXh0IHx8ICdDYW5jZWxhcidcIlxuICAgICAgICAgICAgICAgIChpb25DaGFuZ2UpPVwib25TdGFydERhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBzbG90PVwidGl0bGVcIj57eyBnZXRTdGFydExhYmVsKCkgfHwgJ0ZlY2hhIGluaWNpbycgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvaW9uLWRhdGV0aW1lPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2lvbi1tb2RhbD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBTZXBhcmF0b3IgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXNlcGFyYXRvclwiPlxuICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiYXJyb3ctZm9yd2FyZC1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBFbmQgRGF0ZSAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtaW5wdXQgZW5kLWRhdGVcIj5cbiAgICAgICAgICBAaWYgKHByb3BzLmVuZExhYmVsIHx8IHByb3BzLmVuZExhYmVsQ29udGVudEtleSkge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlLWxhYmVsXCI+e3sgZ2V0RW5kTGFiZWwoKSB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxpb24tZGF0ZXRpbWUtYnV0dG9uIFtkYXRldGltZV09XCJlbmREYXRldGltZUlkXCI+PC9pb24tZGF0ZXRpbWUtYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxpb24tbW9kYWwgW2tlZXBDb250ZW50c01vdW50ZWRdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8aW9uLWRhdGV0aW1lXG4gICAgICAgICAgICAgICAgW2lkXT1cImVuZERhdGV0aW1lSWRcIlxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJpbnRlcm5hbEVuZENvbnRyb2xcIlxuICAgICAgICAgICAgICAgIFtwcmVzZW50YXRpb25dPVwicHJvcHMucHJlc2VudGF0aW9uIHx8ICdkYXRlJ1wiXG4gICAgICAgICAgICAgICAgW2xvY2FsZV09XCJwcm9wcy5sb2NhbGUgfHwgJ2VzLUVTJ1wiXG4gICAgICAgICAgICAgICAgW2ZpcnN0RGF5T2ZXZWVrXT1cInByb3BzLmZpcnN0RGF5T2ZXZWVrID8/IDFcIlxuICAgICAgICAgICAgICAgIFttaW5dPVwiZ2V0TWluRW5kRGF0ZSgpXCJcbiAgICAgICAgICAgICAgICBbbWF4XT1cImdldE1heERhdGUoKVwiXG4gICAgICAgICAgICAgICAgW3Nob3dEZWZhdWx0QnV0dG9uc109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbZG9uZVRleHRdPVwicHJvcHMuZG9uZVRleHQgfHwgJ0FjZXB0YXInXCJcbiAgICAgICAgICAgICAgICBbY2FuY2VsVGV4dF09XCJwcm9wcy5jYW5jZWxUZXh0IHx8ICdDYW5jZWxhcidcIlxuICAgICAgICAgICAgICAgIChpb25DaGFuZ2UpPVwib25FbmREYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gc2xvdD1cInRpdGxlXCI+e3sgZ2V0RW5kTGFiZWwoKSB8fCAnRmVjaGEgZmluJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9pb24tZGF0ZXRpbWU+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvaW9uLW1vZGFsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICBAaWYgKHNob3dEYXlDb3VudCAmJiBkYXlDb3VudCAhPT0gbnVsbCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF5LWNvdW50XCI+XG4gICAgICAgICAge3sgZGF5Q291bnQgfX0ge3sgZGF5Q291bnQgPT09IDEgPyAnZMOtYScgOiAnZMOtYXMnIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICBAaWYgKHByb3BzLmhpbnQgJiYgIWhhc0Vycm9yKSB7XG4gICAgICAgIDxpb24tbm90ZSBjbGFzcz1cImhpbnRcIj57eyBnZXRIaW50KCkgfX08L2lvbi1ub3RlPlxuICAgICAgfVxuXG4gICAgICBAaWYgKGhhc0Vycm9yICYmIHByb3BzLnNob3dFcnJvcnMpIHtcbiAgICAgICAgPGlvbi1ub3RlIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiIGNvbG9yPVwiZGFuZ2VyXCI+XG4gICAgICAgICAge3sgZ2V0RXJyb3JNZXNzYWdlKCkgfX1cbiAgICAgICAgPC9pb24tbm90ZT5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1yYW5nZS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLWRhdGUtcmFuZ2UtaW5wdXRcbiAqXG4gKiBBIGRhdGUgcmFuZ2UgcGlja2VyIHdpdGggc3RhcnQgYW5kIGVuZCBkYXRlIHNlbGVjdGlvbi5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZVxuICogYGBgaHRtbFxuICogPHZhbC1kYXRlLXJhbmdlLWlucHV0XG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgY29udHJvbDogZGF0ZVJhbmdlQ29udHJvbCxcbiAqICAgICBzdGFydExhYmVsOiAnQ2hlY2staW4nLFxuICogICAgIGVuZExhYmVsOiAnQ2hlY2stb3V0J1xuICogICB9XCJcbiAqID48L3ZhbC1kYXRlLXJhbmdlLWlucHV0PlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgV2l0aCB2YWxpZGF0aW9uXG4gKiBgYGBodG1sXG4gKiA8dmFsLWRhdGUtcmFuZ2UtaW5wdXRcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBjb250cm9sOiByYW5nZUNvbnRyb2wsXG4gKiAgICAgbGFiZWw6ICdUcmlwIGRhdGVzJyxcbiAqICAgICByZXF1aXJlQm90aDogdHJ1ZSxcbiAqICAgICBtaW5SYW5nZURheXM6IDIsXG4gKiAgICAgbWF4UmFuZ2VEYXlzOiAzMCxcbiAqICAgICBkaXNhYmxlUGFzdERhdGVzOiB0cnVlLFxuICogICAgIHNob3dFcnJvcnM6IHRydWVcbiAqICAgfVwiXG4gKiAgIChyYW5nZUNoYW5nZSk9XCJvblJhbmdlQ2hhbmdlKCRldmVudClcIlxuICogPjwvdmFsLWRhdGUtcmFuZ2UtaW5wdXQ+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIERhdGVSYW5nZUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwcm9wczogRGF0ZVJhbmdlSW5wdXRNZXRhZGF0YTtcblxuICBAT3V0cHV0KCkgcmFuZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGVSYW5nZUNoYW5nZUV2ZW50PigpO1xuXG4gIHN0YXRlcyA9IENvbXBvbmVudFN0YXRlcztcblxuICBpbnRlcm5hbFN0YXJ0Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgaW50ZXJuYWxFbmRDb250cm9sID0gbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIHN0YXJ0RGF0ZXRpbWVJZCA9IGBzdGFydC1kYXRldGltZS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KX1gO1xuICBlbmREYXRldGltZUlkID0gYGVuZC1kYXRldGltZS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KX1gO1xuXG4gIHNob3dEYXlDb3VudCA9IHRydWU7XG5cbiAgcHJpdmF0ZSBsYW5nU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSB2YWx1ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgbGFuZ1NlcnZpY2UgPSBpbmplY3QoTGFuZ1NlcnZpY2UpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIFVzZSBwcm92aWRlZCBjb250cm9scyBvciBpbnRlcm5hbCBvbmVzXG4gICAgaWYgKHRoaXMucHJvcHMuc3RhcnRDb250cm9sKSB7XG4gICAgICB0aGlzLmludGVybmFsU3RhcnRDb250cm9sID0gdGhpcy5wcm9wcy5zdGFydENvbnRyb2w7XG4gICAgfVxuICAgIGlmICh0aGlzLnByb3BzLmVuZENvbnRyb2wpIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxFbmRDb250cm9sID0gdGhpcy5wcm9wcy5lbmRDb250cm9sO1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemUgZnJvbSBtYWluIGNvbnRyb2xcbiAgICBpZiAodGhpcy5wcm9wcy5jb250cm9sPy52YWx1ZSkge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnByb3BzLmNvbnRyb2wudmFsdWU7XG4gICAgICBpZiAodmFsdWUuc3RhcnQpIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbFN0YXJ0Q29udHJvbC5zZXRWYWx1ZSh2YWx1ZS5zdGFydCk7XG4gICAgICB9XG4gICAgICBpZiAodmFsdWUuZW5kKSB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxFbmRDb250cm9sLnNldFZhbHVlKHZhbHVlLmVuZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU3Vic2NyaWJlIHRvIG1haW4gY29udHJvbCBjaGFuZ2VzXG4gICAgdGhpcy52YWx1ZVN1YnNjcmlwdGlvbiA9IHRoaXMucHJvcHMuY29udHJvbD8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlLnN0YXJ0ICE9PSB0aGlzLmludGVybmFsU3RhcnRDb250cm9sLnZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5pbnRlcm5hbFN0YXJ0Q29udHJvbC5zZXRWYWx1ZSh2YWx1ZS5zdGFydCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlLmVuZCAhPT0gdGhpcy5pbnRlcm5hbEVuZENvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgICB0aGlzLmludGVybmFsRW5kQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZS5lbmQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gbGFuZ3VhZ2UgY2hhbmdlc1xuICAgIGlmICh0aGlzLmhhc1JlYWN0aXZlQ29udGVudCgpKSB7XG4gICAgICB0aGlzLmxhbmdTdWJzY3JpcHRpb24gPSB0aGlzLmxhbmdTZXJ2aWNlLmN1cnJlbnRMYW5nJC5zdWJzY3JpYmUoKCkgPT4ge30pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubGFuZ1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnZhbHVlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNSZWFjdGl2ZUNvbnRlbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKFxuICAgICAgdGhpcy5wcm9wcy5jb250ZW50Q2xhc3MgJiZcbiAgICAgICh0aGlzLnByb3BzLmxhYmVsQ29udGVudEtleSB8fFxuICAgICAgICB0aGlzLnByb3BzLnN0YXJ0TGFiZWxDb250ZW50S2V5IHx8XG4gICAgICAgIHRoaXMucHJvcHMuZW5kTGFiZWxDb250ZW50S2V5IHx8XG4gICAgICAgIHRoaXMucHJvcHMuaGludENvbnRlbnRLZXkpXG4gICAgKTtcbiAgfVxuXG4gIGdldExhYmVsKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucHJvcHMubGFiZWxDb250ZW50S2V5ICYmIHRoaXMucHJvcHMuY29udGVudENsYXNzKSB7XG4gICAgICByZXR1cm4gdGhpcy5sYW5nU2VydmljZS5nZXRUZXh0KHRoaXMucHJvcHMuY29udGVudENsYXNzLCB0aGlzLnByb3BzLmxhYmVsQ29udGVudEtleSwgdGhpcy5wcm9wcy5sYWJlbCB8fCAnJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnByb3BzLmxhYmVsIHx8ICcnO1xuICB9XG5cbiAgZ2V0U3RhcnRMYWJlbCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnByb3BzLnN0YXJ0TGFiZWxDb250ZW50S2V5ICYmIHRoaXMucHJvcHMuY29udGVudENsYXNzKSB7XG4gICAgICByZXR1cm4gdGhpcy5sYW5nU2VydmljZS5nZXRUZXh0KFxuICAgICAgICB0aGlzLnByb3BzLmNvbnRlbnRDbGFzcyxcbiAgICAgICAgdGhpcy5wcm9wcy5zdGFydExhYmVsQ29udGVudEtleSxcbiAgICAgICAgdGhpcy5wcm9wcy5zdGFydExhYmVsIHx8ICcnXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wcm9wcy5zdGFydExhYmVsIHx8ICcnO1xuICB9XG5cbiAgZ2V0RW5kTGFiZWwoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5wcm9wcy5lbmRMYWJlbENvbnRlbnRLZXkgJiYgdGhpcy5wcm9wcy5jb250ZW50Q2xhc3MpIHtcbiAgICAgIHJldHVybiB0aGlzLmxhbmdTZXJ2aWNlLmdldFRleHQodGhpcy5wcm9wcy5jb250ZW50Q2xhc3MsIHRoaXMucHJvcHMuZW5kTGFiZWxDb250ZW50S2V5LCB0aGlzLnByb3BzLmVuZExhYmVsIHx8ICcnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuZW5kTGFiZWwgfHwgJyc7XG4gIH1cblxuICBnZXRIaW50KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucHJvcHMuaGludENvbnRlbnRLZXkgJiYgdGhpcy5wcm9wcy5jb250ZW50Q2xhc3MpIHtcbiAgICAgIHJldHVybiB0aGlzLmxhbmdTZXJ2aWNlLmdldFRleHQodGhpcy5wcm9wcy5jb250ZW50Q2xhc3MsIHRoaXMucHJvcHMuaGludENvbnRlbnRLZXksIHRoaXMucHJvcHMuaGludCB8fCAnJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnByb3BzLmhpbnQgfHwgJyc7XG4gIH1cblxuICBnZXRNaW5EYXRlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMucHJvcHMuZGlzYWJsZVBhc3REYXRlcykge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucHJvcHMubWluO1xuICB9XG5cbiAgZ2V0TWF4RGF0ZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLnByb3BzLmRpc2FibGVGdXR1cmVEYXRlcykge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucHJvcHMubWF4O1xuICB9XG5cbiAgZ2V0TWF4U3RhcnREYXRlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgLy8gU3RhcnQgZGF0ZSBjYW5ub3QgYmUgYWZ0ZXIgZW5kIGRhdGVcbiAgICBjb25zdCBlbmREYXRlID0gdGhpcy5pbnRlcm5hbEVuZENvbnRyb2wudmFsdWU7XG4gICAgaWYgKGVuZERhdGUpIHtcbiAgICAgIHJldHVybiBlbmREYXRlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRNYXhEYXRlKCk7XG4gIH1cblxuICBnZXRNaW5FbmREYXRlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgLy8gRW5kIGRhdGUgY2Fubm90IGJlIGJlZm9yZSBzdGFydCBkYXRlXG4gICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5pbnRlcm5hbFN0YXJ0Q29udHJvbC52YWx1ZTtcbiAgICBpZiAoc3RhcnREYXRlKSB7XG4gICAgICByZXR1cm4gc3RhcnREYXRlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRNaW5EYXRlKCk7XG4gIH1cblxuICBnZXQgaGFzRXJyb3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKHRoaXMucHJvcHMuY29udHJvbD8udG91Y2hlZCAmJiB0aGlzLnByb3BzLmNvbnRyb2w/LmludmFsaWQpO1xuICB9XG5cbiAgZ2V0RXJyb3JNZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLnByb3BzLmNvbnRyb2w/LmVycm9ycyB8fCAhdGhpcy5wcm9wcy5lcnJvcnMpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBlcnJvcktleXMgPSBPYmplY3Qua2V5cyh0aGlzLnByb3BzLmNvbnRyb2wuZXJyb3JzKTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBlcnJvcktleXMpIHtcbiAgICAgIGlmICh0aGlzLnByb3BzLmVycm9yc1trZXldKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLmVycm9yc1trZXldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGdldCBkYXlDb3VudCgpOiBudW1iZXIgfCBudWxsIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuaW50ZXJuYWxTdGFydENvbnRyb2wudmFsdWU7XG4gICAgY29uc3QgZW5kID0gdGhpcy5pbnRlcm5hbEVuZENvbnRyb2wudmFsdWU7XG5cbiAgICBpZiAoIXN0YXJ0IHx8ICFlbmQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKHN0YXJ0KTtcbiAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoZW5kKTtcbiAgICBjb25zdCBkaWZmVGltZSA9IGVuZERhdGUuZ2V0VGltZSgpIC0gc3RhcnREYXRlLmdldFRpbWUoKTtcbiAgICBjb25zdCBkaWZmRGF5cyA9IE1hdGguY2VpbChkaWZmVGltZSAvICgxMDAwICogNjAgKiA2MCAqIDI0KSk7XG5cbiAgICByZXR1cm4gTWF0aC5tYXgoMCwgZGlmZkRheXMpO1xuICB9XG5cbiAgb25TdGFydERhdGVDaGFuZ2UoZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVNYWluQ29udHJvbCgpO1xuICB9XG5cbiAgb25FbmREYXRlQ2hhbmdlKGV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlTWFpbkNvbnRyb2woKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTWFpbkNvbnRyb2woKTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWU6IERhdGVSYW5nZVZhbHVlID0ge1xuICAgICAgc3RhcnQ6IHRoaXMuaW50ZXJuYWxTdGFydENvbnRyb2wudmFsdWUsXG4gICAgICBlbmQ6IHRoaXMuaW50ZXJuYWxFbmRDb250cm9sLnZhbHVlLFxuICAgIH07XG5cbiAgICB0aGlzLnByb3BzLmNvbnRyb2w/LnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLnByb3BzLmNvbnRyb2w/Lm1hcmtBc1RvdWNoZWQoKTtcblxuICAgIC8vIFZhbGlkYXRlIGFuZCBlbWl0XG4gICAgY29uc3QgaXNWYWxpZCA9IHRoaXMudmFsaWRhdGVSYW5nZSh2YWx1ZSk7XG4gICAgdGhpcy5yYW5nZUNoYW5nZS5lbWl0KHtcbiAgICAgIHZhbHVlLFxuICAgICAgaXNWYWxpZCxcbiAgICAgIGRheUNvdW50OiB0aGlzLmRheUNvdW50LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVJhbmdlKHZhbHVlOiBEYXRlUmFuZ2VWYWx1ZSk6IGJvb2xlYW4ge1xuICAgIC8vIENoZWNrIHJlcXVpcmVkXG4gICAgaWYgKHRoaXMucHJvcHMucmVxdWlyZUJvdGggJiYgKCF2YWx1ZS5zdGFydCB8fCAhdmFsdWUuZW5kKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGRheSBjb3VudCBjb25zdHJhaW50c1xuICAgIGNvbnN0IGRheXMgPSB0aGlzLmRheUNvdW50O1xuICAgIGlmIChkYXlzICE9PSBudWxsKSB7XG4gICAgICBpZiAodGhpcy5wcm9wcy5taW5SYW5nZURheXMgIT09IHVuZGVmaW5lZCAmJiBkYXlzIDwgdGhpcy5wcm9wcy5taW5SYW5nZURheXMpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucHJvcHMubWF4UmFuZ2VEYXlzICE9PSB1bmRlZmluZWQgJiYgZGF5cyA+IHRoaXMucHJvcHMubWF4UmFuZ2VEYXlzKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIl19
|
|
391
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2RhdGUtcmFuZ2UtaW5wdXQvZGF0ZS1yYW5nZS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQ0wsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsT0FBTyxFQUNQLE9BQU8sR0FDUixNQUFNLDJCQUEyQixDQUFDO0FBRW5DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7OztBQUc5QyxRQUFRLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO0FBdUduRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCRztBQUNILE1BQU0sT0FBTyx1QkFBdUI7SUFySXBDO1FBd0lZLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXdCLENBQUM7UUFFakUsV0FBTSxHQUFHLGVBQWUsQ0FBQztRQUV6Qix5QkFBb0IsR0FBRyxJQUFJLFdBQVcsQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFDNUQsdUJBQWtCLEdBQUcsSUFBSSxXQUFXLENBQWdCLElBQUksQ0FBQyxDQUFDO1FBRTFELG9CQUFlLEdBQUcs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QUFLLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzVFLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7K0dBckxVLHVCQUF1QjttR0FBdkIsdUJBQXVCLHFKQWpJeEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4RlQsOHFEQS9GUyxZQUFZLDhCQUFFLG1CQUFtQiwwVEFBRSxXQUFXLG9oQkFBRSxpQkFBaUIsbUhBQUUsUUFBUSxzREFBRSxPQUFPLGdGQUFFLE9BQU87OzRGQWtJNUYsdUJBQXVCO2tCQXJJbkMsU0FBUzsrQkFDRSxzQkFBc0IsY0FDcEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxZQUM5Rjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThGVDs4QkFvQ1EsS0FBSztzQkFBYixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIElvbkRhdGV0aW1lLFxuICBJb25EYXRldGltZUJ1dHRvbixcbiAgSW9uTW9kYWwsXG4gIElvbk5vdGUsXG4gIElvbkljb24sXG59IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IGFycm93Rm9yd2FyZE91dGxpbmUsIGNhbGVuZGFyT3V0bGluZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcbmltcG9ydCB7IENvbXBvbmVudFN0YXRlcyB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IERhdGVSYW5nZUlucHV0TWV0YWRhdGEsIERhdGVSYW5nZUNoYW5nZUV2ZW50LCBEYXRlUmFuZ2VWYWx1ZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5hZGRJY29ucyh7IGFycm93Rm9yd2FyZE91dGxpbmUsIGNhbGVuZGFyT3V0bGluZSB9KTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWRhdGUtcmFuZ2UtaW5wdXQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBJb25EYXRldGltZSwgSW9uRGF0ZXRpbWVCdXR0b24sIElvbk1vZGFsLCBJb25Ob3RlLCBJb25JY29uXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImRhdGUtcmFuZ2UtY29udGFpbmVyXCJcbiAgICAgIFtjbGFzc109XCJwcm9wcy5jc3NDbGFzc1wiXG4gICAgICBbY2xhc3MuaGFzLWVycm9yXT1cImhhc0Vycm9yXCJcbiAgICAgIFtjbGFzcy5ob3Jpem9udGFsXT1cInByb3BzLmxheW91dCAhPT0gJ3ZlcnRpY2FsJ1wiXG4gICAgICBbY2xhc3MudmVydGljYWxdPVwicHJvcHMubGF5b3V0ID09PSAndmVydGljYWwnXCJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJwcm9wcy5zdGF0ZSA9PT0gc3RhdGVzLkRJU0FCTEVEXCJcbiAgICA+XG4gICAgICBAaWYgKHByb3BzLmxhYmVsKSB7XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInJhbmdlLWxhYmVsXCI+e3sgZ2V0TGFiZWwoKSB9fTwvbGFiZWw+XG4gICAgICB9XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLWlucHV0cy13cmFwcGVyXCI+XG4gICAgICAgIDwhLS0gU3RhcnQgRGF0ZSAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtaW5wdXQgc3RhcnQtZGF0ZVwiPlxuICAgICAgICAgIEBpZiAocHJvcHMuc3RhcnRMYWJlbCB8fCBwcm9wcy5zdGFydExhYmVsQ29udGVudEtleSkge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlLWxhYmVsXCI+e3sgZ2V0U3RhcnRMYWJlbCgpIH19PC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGlvbi1kYXRldGltZS1idXR0b24gW2RhdGV0aW1lXT1cInN0YXJ0RGF0ZXRpbWVJZFwiPjwvaW9uLWRhdGV0aW1lLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8aW9uLW1vZGFsIFtrZWVwQ29udGVudHNNb3VudGVkXT1cInRydWVcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPGlvbi1kYXRldGltZVxuICAgICAgICAgICAgICAgIFtpZF09XCJzdGFydERhdGV0aW1lSWRcIlxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJpbnRlcm5hbFN0YXJ0Q29udHJvbFwiXG4gICAgICAgICAgICAgICAgW3ByZXNlbnRhdGlvbl09XCJwcm9wcy5wcmVzZW50YXRpb24gfHwgJ2RhdGUnXCJcbiAgICAgICAgICAgICAgICBbbG9jYWxlXT1cInByb3BzLmxvY2FsZSB8fCAnZXMtRVMnXCJcbiAgICAgICAgICAgICAgICBbZmlyc3REYXlPZldlZWtdPVwicHJvcHMuZmlyc3REYXlPZldlZWsgPz8gMVwiXG4gICAgICAgICAgICAgICAgW21pbl09XCJnZXRNaW5EYXRlKClcIlxuICAgICAgICAgICAgICAgIFttYXhdPVwiZ2V0TWF4U3RhcnREYXRlKClcIlxuICAgICAgICAgICAgICAgIFtzaG93RGVmYXVsdEJ1dHRvbnNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2RvbmVUZXh0XT1cInByb3BzLmRvbmVUZXh0IHx8ICdBY2VwdGFyJ1wiXG4gICAgICAgICAgICAgICAgW2NhbmNlbFRleHRdPVwicHJvcHMuY2FuY2VsVGV4dCB8fCAnQ2FuY2VsYXInXCJcbiAgICAgICAgICAgICAgICAoaW9uQ2hhbmdlKT1cIm9uU3RhcnREYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gc2xvdD1cInRpdGxlXCI+e3sgZ2V0U3RhcnRMYWJlbCgpIHx8ICdGZWNoYSBpbmljaW8nIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2lvbi1kYXRldGltZT5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9pb24tbW9kYWw+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gU2VwYXJhdG9yIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1zZXBhcmF0b3JcIj5cbiAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImFycm93LWZvcndhcmQtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gRW5kIERhdGUgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLWlucHV0IGVuZC1kYXRlXCI+XG4gICAgICAgICAgQGlmIChwcm9wcy5lbmRMYWJlbCB8fCBwcm9wcy5lbmRMYWJlbENvbnRlbnRLZXkpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGF0ZS1sYWJlbFwiPnt7IGdldEVuZExhYmVsKCkgfX08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8aW9uLWRhdGV0aW1lLWJ1dHRvbiBbZGF0ZXRpbWVdPVwiZW5kRGF0ZXRpbWVJZFwiPjwvaW9uLWRhdGV0aW1lLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8aW9uLW1vZGFsIFtrZWVwQ29udGVudHNNb3VudGVkXT1cInRydWVcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPGlvbi1kYXRldGltZVxuICAgICAgICAgICAgICAgIFtpZF09XCJlbmREYXRldGltZUlkXCJcbiAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiaW50ZXJuYWxFbmRDb250cm9sXCJcbiAgICAgICAgICAgICAgICBbcHJlc2VudGF0aW9uXT1cInByb3BzLnByZXNlbnRhdGlvbiB8fCAnZGF0ZSdcIlxuICAgICAgICAgICAgICAgIFtsb2NhbGVdPVwicHJvcHMubG9jYWxlIHx8ICdlcy1FUydcIlxuICAgICAgICAgICAgICAgIFtmaXJzdERheU9mV2Vla109XCJwcm9wcy5maXJzdERheU9mV2VlayA/PyAxXCJcbiAgICAgICAgICAgICAgICBbbWluXT1cImdldE1pbkVuZERhdGUoKVwiXG4gICAgICAgICAgICAgICAgW21heF09XCJnZXRNYXhEYXRlKClcIlxuICAgICAgICAgICAgICAgIFtzaG93RGVmYXVsdEJ1dHRvbnNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2RvbmVUZXh0XT1cInByb3BzLmRvbmVUZXh0IHx8ICdBY2VwdGFyJ1wiXG4gICAgICAgICAgICAgICAgW2NhbmNlbFRleHRdPVwicHJvcHMuY2FuY2VsVGV4dCB8fCAnQ2FuY2VsYXInXCJcbiAgICAgICAgICAgICAgICAoaW9uQ2hhbmdlKT1cIm9uRW5kRGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIHNsb3Q9XCJ0aXRsZVwiPnt7IGdldEVuZExhYmVsKCkgfHwgJ0ZlY2hhIGZpbicgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvaW9uLWRhdGV0aW1lPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2lvbi1tb2RhbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgQGlmIChzaG93RGF5Q291bnQgJiYgZGF5Q291bnQgIT09IG51bGwpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImRheS1jb3VudFwiPlxuICAgICAgICAgIHt7IGRheUNvdW50IH19IHt7IGRheUNvdW50ID09PSAxID8gJ2TDrWEnIDogJ2TDrWFzJyB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgQGlmIChwcm9wcy5oaW50ICYmICFoYXNFcnJvcikge1xuICAgICAgICA8aW9uLW5vdGUgY2xhc3M9XCJoaW50XCI+e3sgZ2V0SGludCgpIH19PC9pb24tbm90ZT5cbiAgICAgIH1cblxuICAgICAgQGlmIChoYXNFcnJvciAmJiBwcm9wcy5zaG93RXJyb3JzKSB7XG4gICAgICAgIDxpb24tbm90ZSBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIiBjb2xvcj1cImRhbmdlclwiPlxuICAgICAgICAgIHt7IGdldEVycm9yTWVzc2FnZSgpIH19XG4gICAgICAgIDwvaW9uLW5vdGU+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2RhdGUtcmFuZ2UtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIHZhbC1kYXRlLXJhbmdlLWlucHV0XG4gKlxuICogQSBkYXRlIHJhbmdlIHBpY2tlciB3aXRoIHN0YXJ0IGFuZCBlbmQgZGF0ZSBzZWxlY3Rpb24uXG4gKlxuICogQGV4YW1wbGUgQmFzaWMgdXNhZ2VcbiAqIGBgYGh0bWxcbiAqIDx2YWwtZGF0ZS1yYW5nZS1pbnB1dFxuICogICBbcHJvcHNdPVwie1xuICogICAgIGNvbnRyb2w6IGRhdGVSYW5nZUNvbnRyb2wsXG4gKiAgICAgc3RhcnRMYWJlbDogJ0NoZWNrLWluJyxcbiAqICAgICBlbmRMYWJlbDogJ0NoZWNrLW91dCdcbiAqICAgfVwiXG4gKiA+PC92YWwtZGF0ZS1yYW5nZS1pbnB1dD5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIFdpdGggdmFsaWRhdGlvblxuICogYGBgaHRtbFxuICogPHZhbC1kYXRlLXJhbmdlLWlucHV0XG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgY29udHJvbDogcmFuZ2VDb250cm9sLFxuICogICAgIGxhYmVsOiAnVHJpcCBkYXRlcycsXG4gKiAgICAgcmVxdWlyZUJvdGg6IHRydWUsXG4gKiAgICAgbWluUmFuZ2VEYXlzOiAyLFxuICogICAgIG1heFJhbmdlRGF5czogMzAsXG4gKiAgICAgZGlzYWJsZVBhc3REYXRlczogdHJ1ZSxcbiAqICAgICBzaG93RXJyb3JzOiB0cnVlXG4gKiAgIH1cIlxuICogICAocmFuZ2VDaGFuZ2UpPVwib25SYW5nZUNoYW5nZSgkZXZlbnQpXCJcbiAqID48L3ZhbC1kYXRlLXJhbmdlLWlucHV0PlxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRlUmFuZ2VJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcHJvcHM6IERhdGVSYW5nZUlucHV0TWV0YWRhdGE7XG5cbiAgQE91dHB1dCgpIHJhbmdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlUmFuZ2VDaGFuZ2VFdmVudD4oKTtcblxuICBzdGF0ZXMgPSBDb21wb25lbnRTdGF0ZXM7XG5cbiAgaW50ZXJuYWxTdGFydENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIGludGVybmFsRW5kQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICBzdGFydERhdGV0aW1lSWQgPSBgc3RhcnQtZGF0ZXRpbWUtJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwgOSl9YDtcbiAgZW5kRGF0ZXRpbWVJZCA9IGBlbmQtZGF0ZXRpbWUtJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwgOSl9YDtcblxuICBzaG93RGF5Q291bnQgPSB0cnVlO1xuXG4gIHByaXZhdGUgdmFsdWVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIFVzZSBwcm92aWRlZCBjb250cm9scyBvciBpbnRlcm5hbCBvbmVzXG4gICAgaWYgKHRoaXMucHJvcHMuc3RhcnRDb250cm9sKSB7XG4gICAgICB0aGlzLmludGVybmFsU3RhcnRDb250cm9sID0gdGhpcy5wcm9wcy5zdGFydENvbnRyb2w7XG4gICAgfVxuICAgIGlmICh0aGlzLnByb3BzLmVuZENvbnRyb2wpIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxFbmRDb250cm9sID0gdGhpcy5wcm9wcy5lbmRDb250cm9sO1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemUgZnJvbSBtYWluIGNvbnRyb2xcbiAgICBpZiAodGhpcy5wcm9wcy5jb250cm9sPy52YWx1ZSkge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnByb3BzLmNvbnRyb2wudmFsdWU7XG4gICAgICBpZiAodmFsdWUuc3RhcnQpIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbFN0YXJ0Q29udHJvbC5zZXRWYWx1ZSh2YWx1ZS5zdGFydCk7XG4gICAgICB9XG4gICAgICBpZiAodmFsdWUuZW5kKSB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxFbmRDb250cm9sLnNldFZhbHVlKHZhbHVlLmVuZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU3Vic2NyaWJlIHRvIG1haW4gY29udHJvbCBjaGFuZ2VzXG4gICAgdGhpcy52YWx1ZVN1YnNjcmlwdGlvbiA9IHRoaXMucHJvcHMuY29udHJvbD8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlLnN0YXJ0ICE9PSB0aGlzLmludGVybmFsU3RhcnRDb250cm9sLnZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5pbnRlcm5hbFN0YXJ0Q29udHJvbC5zZXRWYWx1ZSh2YWx1ZS5zdGFydCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlLmVuZCAhPT0gdGhpcy5pbnRlcm5hbEVuZENvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgICB0aGlzLmludGVybmFsRW5kQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZS5lbmQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgZ2V0TGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5sYWJlbCB8fCAnJztcbiAgfVxuXG4gIGdldFN0YXJ0TGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5zdGFydExhYmVsIHx8ICcnO1xuICB9XG5cbiAgZ2V0RW5kTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5lbmRMYWJlbCB8fCAnJztcbiAgfVxuXG4gIGdldEhpbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5oaW50IHx8ICcnO1xuICB9XG5cbiAgZ2V0TWluRGF0ZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLnByb3BzLmRpc2FibGVQYXN0RGF0ZXMpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnByb3BzLm1pbjtcbiAgfVxuXG4gIGdldE1heERhdGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5wcm9wcy5kaXNhYmxlRnV0dXJlRGF0ZXMpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnByb3BzLm1heDtcbiAgfVxuXG4gIGdldE1heFN0YXJ0RGF0ZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIC8vIFN0YXJ0IGRhdGUgY2Fubm90IGJlIGFmdGVyIGVuZCBkYXRlXG4gICAgY29uc3QgZW5kRGF0ZSA9IHRoaXMuaW50ZXJuYWxFbmRDb250cm9sLnZhbHVlO1xuICAgIGlmIChlbmREYXRlKSB7XG4gICAgICByZXR1cm4gZW5kRGF0ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZ2V0TWF4RGF0ZSgpO1xuICB9XG5cbiAgZ2V0TWluRW5kRGF0ZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIC8vIEVuZCBkYXRlIGNhbm5vdCBiZSBiZWZvcmUgc3RhcnQgZGF0ZVxuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHRoaXMuaW50ZXJuYWxTdGFydENvbnRyb2wudmFsdWU7XG4gICAgaWYgKHN0YXJ0RGF0ZSkge1xuICAgICAgcmV0dXJuIHN0YXJ0RGF0ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZ2V0TWluRGF0ZSgpO1xuICB9XG5cbiAgZ2V0IGhhc0Vycm9yKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhISh0aGlzLnByb3BzLmNvbnRyb2w/LnRvdWNoZWQgJiYgdGhpcy5wcm9wcy5jb250cm9sPy5pbnZhbGlkKTtcbiAgfVxuXG4gIGdldEVycm9yTWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5wcm9wcy5jb250cm9sPy5lcnJvcnMgfHwgIXRoaXMucHJvcHMuZXJyb3JzKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgZXJyb3JLZXlzID0gT2JqZWN0LmtleXModGhpcy5wcm9wcy5jb250cm9sLmVycm9ycyk7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgZXJyb3JLZXlzKSB7XG4gICAgICBpZiAodGhpcy5wcm9wcy5lcnJvcnNba2V5XSkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9wcy5lcnJvcnNba2V5XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBnZXQgZGF5Q291bnQoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLmludGVybmFsU3RhcnRDb250cm9sLnZhbHVlO1xuICAgIGNvbnN0IGVuZCA9IHRoaXMuaW50ZXJuYWxFbmRDb250cm9sLnZhbHVlO1xuXG4gICAgaWYgKCFzdGFydCB8fCAhZW5kKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydERhdGUgPSBuZXcgRGF0ZShzdGFydCk7XG4gICAgY29uc3QgZW5kRGF0ZSA9IG5ldyBEYXRlKGVuZCk7XG4gICAgY29uc3QgZGlmZlRpbWUgPSBlbmREYXRlLmdldFRpbWUoKSAtIHN0YXJ0RGF0ZS5nZXRUaW1lKCk7XG4gICAgY29uc3QgZGlmZkRheXMgPSBNYXRoLmNlaWwoZGlmZlRpbWUgLyAoMTAwMCAqIDYwICogNjAgKiAyNCkpO1xuXG4gICAgcmV0dXJuIE1hdGgubWF4KDAsIGRpZmZEYXlzKTtcbiAgfVxuXG4gIG9uU3RhcnREYXRlQ2hhbmdlKGV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlTWFpbkNvbnRyb2woKTtcbiAgfVxuXG4gIG9uRW5kRGF0ZUNoYW5nZShldmVudDogQ3VzdG9tRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZU1haW5Db250cm9sKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU1haW5Db250cm9sKCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlOiBEYXRlUmFuZ2VWYWx1ZSA9IHtcbiAgICAgIHN0YXJ0OiB0aGlzLmludGVybmFsU3RhcnRDb250cm9sLnZhbHVlLFxuICAgICAgZW5kOiB0aGlzLmludGVybmFsRW5kQ29udHJvbC52YWx1ZSxcbiAgICB9O1xuXG4gICAgdGhpcy5wcm9wcy5jb250cm9sPy5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy5wcm9wcy5jb250cm9sPy5tYXJrQXNUb3VjaGVkKCk7XG5cbiAgICAvLyBWYWxpZGF0ZSBhbmQgZW1pdFxuICAgIGNvbnN0IGlzVmFsaWQgPSB0aGlzLnZhbGlkYXRlUmFuZ2UodmFsdWUpO1xuICAgIHRoaXMucmFuZ2VDaGFuZ2UuZW1pdCh7XG4gICAgICB2YWx1ZSxcbiAgICAgIGlzVmFsaWQsXG4gICAgICBkYXlDb3VudDogdGhpcy5kYXlDb3VudCxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVSYW5nZSh2YWx1ZTogRGF0ZVJhbmdlVmFsdWUpOiBib29sZWFuIHtcbiAgICAvLyBDaGVjayByZXF1aXJlZFxuICAgIGlmICh0aGlzLnByb3BzLnJlcXVpcmVCb3RoICYmICghdmFsdWUuc3RhcnQgfHwgIXZhbHVlLmVuZCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBkYXkgY291bnQgY29uc3RyYWludHNcbiAgICBjb25zdCBkYXlzID0gdGhpcy5kYXlDb3VudDtcbiAgICBpZiAoZGF5cyAhPT0gbnVsbCkge1xuICAgICAgaWYgKHRoaXMucHJvcHMubWluUmFuZ2VEYXlzICE9PSB1bmRlZmluZWQgJiYgZGF5cyA8IHRoaXMucHJvcHMubWluUmFuZ2VEYXlzKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnByb3BzLm1heFJhbmdlRGF5cyAhPT0gdW5kZWZpbmVkICYmIGRheXMgPiB0aGlzLnByb3BzLm1heFJhbmdlRGF5cykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiJdfQ==
|