@acorex/components 7.1.49 → 7.1.51

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.
Files changed (50) hide show
  1. package/breadcrumbs/src/breadcrumbs-item.component.d.ts +6 -6
  2. package/button/src/button-group.component.d.ts +6 -6
  3. package/button/src/button-item.component.d.ts +6 -6
  4. package/chips/src/chips.component.d.ts +6 -6
  5. package/color-picker/src/color-picker.component.d.ts +16 -16
  6. package/common/src/components/base-component.class.d.ts +1 -0
  7. package/date-picker/src/datepicker.component.d.ts +1 -1
  8. package/esm2022/alert/src/alert.component.mjs +3 -1
  9. package/esm2022/button/src/button.component.mjs +2 -2
  10. package/esm2022/common/src/components/base-component.class.mjs +5 -1
  11. package/esm2022/common/src/components/value-component.class.mjs +3 -1
  12. package/esm2022/date-picker/src/datepicker.component.mjs +5 -32
  13. package/esm2022/form/src/form.component.mjs +6 -2
  14. package/esm2022/search-box/src/search-box.component.mjs +15 -7
  15. package/esm2022/select-box/src/selectbox.component.mjs +2 -2
  16. package/esm2022/tabs/src/tabs.component.mjs +2 -2
  17. package/fesm2022/acorex-components-alert.mjs +2 -0
  18. package/fesm2022/acorex-components-alert.mjs.map +1 -1
  19. package/fesm2022/acorex-components-button.mjs +2 -2
  20. package/fesm2022/acorex-components-button.mjs.map +1 -1
  21. package/fesm2022/acorex-components-common.mjs +6 -0
  22. package/fesm2022/acorex-components-common.mjs.map +1 -1
  23. package/fesm2022/acorex-components-date-picker.mjs +3 -30
  24. package/fesm2022/acorex-components-date-picker.mjs.map +1 -1
  25. package/fesm2022/acorex-components-form.mjs +5 -1
  26. package/fesm2022/acorex-components-form.mjs.map +1 -1
  27. package/fesm2022/acorex-components-search-box.mjs +12 -4
  28. package/fesm2022/acorex-components-search-box.mjs.map +1 -1
  29. package/fesm2022/acorex-components-select-box.mjs +2 -2
  30. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  31. package/fesm2022/acorex-components-tabs.mjs +2 -2
  32. package/fesm2022/acorex-components-tabs.mjs.map +1 -1
  33. package/mixin/src/base-components.class.d.ts +2 -2
  34. package/mixin/src/base-menu-mixin.class.d.ts +5 -5
  35. package/mixin/src/button-mixin.class.d.ts +2 -2
  36. package/mixin/src/clickable-mixin.class.d.ts +2 -2
  37. package/mixin/src/color-look-mixing.class.d.ts +2 -2
  38. package/mixin/src/datalist-component.class.d.ts +10 -10
  39. package/mixin/src/dropdown-mixin.class.d.ts +2 -2
  40. package/mixin/src/interactive-mixin.class.d.ts +4 -4
  41. package/mixin/src/loading-mixin.class.d.ts +2 -2
  42. package/mixin/src/mixin.class.d.ts +61 -61
  43. package/mixin/src/page-component.class.d.ts +2 -2
  44. package/mixin/src/selection-component.class.d.ts +2 -2
  45. package/mixin/src/sizable-mixin.class.d.ts +2 -2
  46. package/mixin/src/textbox-mixin.class.d.ts +2 -2
  47. package/mixin/src/value-mixin.class.d.ts +8 -8
  48. package/package.json +35 -35
  49. package/search-box/src/search-box.component.d.ts +2 -0
  50. package/tabs/src/tab-item.component.d.ts +2 -2
@@ -3,9 +3,9 @@ import { ChangeDetectorRef, ElementRef } from '@angular/core';
3
3
  import { AXBreadCrumbsComponent } from './breadcrumbs.component';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare const AXBaseItemBreadCrumbMixin: (abstract new (...args: any[]) => {
6
- "__#53699@#disabled": boolean;
6
+ "__#53704@#disabled": boolean;
7
7
  disabled: boolean;
8
- "__#53699@#tabIndex": number;
8
+ "__#53704@#tabIndex": number;
9
9
  tabIndex: number;
10
10
  onFocus: import("@angular/core").EventEmitter<import("@acorex/components/common").AXFocusEvent>;
11
11
  _emitOnFocusEvent(e: FocusEvent): void;
@@ -14,9 +14,9 @@ export declare const AXBaseItemBreadCrumbMixin: (abstract new (...args: any[]) =
14
14
  focus(): void;
15
15
  hasFocus(): boolean;
16
16
  id: string;
17
- "__#53696@#rtl": boolean;
17
+ "__#53701@#rtl": boolean;
18
18
  rtl: boolean;
19
- "__#53696@#elementRef": ElementRef<any>;
19
+ "__#53701@#elementRef": ElementRef<any>;
20
20
  _cdr: ChangeDetectorRef;
21
21
  _isInited: boolean;
22
22
  _isRendered: boolean;
@@ -39,9 +39,9 @@ export declare const AXBaseItemBreadCrumbMixin: (abstract new (...args: any[]) =
39
39
  onClick: import("@angular/core").EventEmitter<import("@acorex/components/common").AXClickEvent>;
40
40
  _emitOnClickEvent(e: MouseEvent): void;
41
41
  id: string;
42
- "__#53696@#rtl": boolean;
42
+ "__#53701@#rtl": boolean;
43
43
  rtl: boolean;
44
- "__#53696@#elementRef": ElementRef<any>; /**
44
+ "__#53701@#elementRef": ElementRef<any>; /**
45
45
  * @ignore
46
46
  */
47
47
  _cdr: ChangeDetectorRef;
@@ -4,9 +4,9 @@ import { AXClickEvent, AXItemClickEvent, AXSelectionMode, AXSelectionValueChange
4
4
  import { AXBaseComponent } from '@acorex/components/mixin';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare const AXBaseButtonGroupMixin: (abstract new (...args: any[]) => {
7
- "__#53699@#disabled": boolean;
7
+ "__#53704@#disabled": boolean;
8
8
  disabled: boolean;
9
- "__#53699@#tabIndex": number;
9
+ "__#53704@#tabIndex": number;
10
10
  tabIndex: number;
11
11
  onFocus: EventEmitter<import("@acorex/components/common").AXFocusEvent>;
12
12
  _emitOnFocusEvent(e: FocusEvent): void;
@@ -15,9 +15,9 @@ export declare const AXBaseButtonGroupMixin: (abstract new (...args: any[]) => {
15
15
  focus(): void;
16
16
  hasFocus(): boolean;
17
17
  id: string;
18
- "__#53696@#rtl": boolean;
18
+ "__#53701@#rtl": boolean;
19
19
  rtl: boolean;
20
- "__#53696@#elementRef": ElementRef<any>;
20
+ "__#53701@#elementRef": ElementRef<any>;
21
21
  _cdr: ChangeDetectorRef;
22
22
  _isInited: boolean;
23
23
  _isRendered: boolean;
@@ -44,9 +44,9 @@ export declare const AXBaseButtonGroupMixin: (abstract new (...args: any[]) => {
44
44
  _look?: import("@acorex/components/common").AXStyleLookType;
45
45
  look: import("@acorex/components/common").AXStyleLookType;
46
46
  id: string;
47
- "__#53696@#rtl": boolean;
47
+ "__#53701@#rtl": boolean;
48
48
  rtl: boolean;
49
- "__#53696@#elementRef": ElementRef<any>;
49
+ "__#53701@#elementRef": ElementRef<any>;
50
50
  _cdr: ChangeDetectorRef;
51
51
  _isInited: boolean;
52
52
  _isRendered: boolean;
@@ -3,9 +3,9 @@ import { AXStyleColorType } from '@acorex/components/common';
3
3
  import { AXBaseComponent } from '@acorex/components/mixin';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare const AXBaseItemButtonMixin: (abstract new (...args: any[]) => {
6
- "__#53699@#disabled": boolean;
6
+ "__#53704@#disabled": boolean;
7
7
  disabled: boolean;
8
- "__#53699@#tabIndex": number;
8
+ "__#53704@#tabIndex": number;
9
9
  tabIndex: number;
10
10
  onFocus: import("@angular/core").EventEmitter<import("@acorex/components/common").AXFocusEvent>;
11
11
  _emitOnFocusEvent(e: FocusEvent): void;
@@ -14,9 +14,9 @@ export declare const AXBaseItemButtonMixin: (abstract new (...args: any[]) => {
14
14
  focus(): void;
15
15
  hasFocus(): boolean;
16
16
  id: string;
17
- "__#53696@#rtl": boolean;
17
+ "__#53701@#rtl": boolean;
18
18
  rtl: boolean;
19
- "__#53696@#elementRef": ElementRef<any>;
19
+ "__#53701@#elementRef": ElementRef<any>;
20
20
  _cdr: ChangeDetectorRef;
21
21
  _isInited: boolean;
22
22
  _isRendered: boolean;
@@ -39,9 +39,9 @@ export declare const AXBaseItemButtonMixin: (abstract new (...args: any[]) => {
39
39
  onClick: import("@angular/core").EventEmitter<import("@acorex/components/common").AXClickEvent>;
40
40
  _emitOnClickEvent(e: MouseEvent): void;
41
41
  id: string;
42
- "__#53696@#rtl": boolean;
42
+ "__#53701@#rtl": boolean;
43
43
  rtl: boolean;
44
- "__#53696@#elementRef": ElementRef<any>;
44
+ "__#53701@#elementRef": ElementRef<any>;
45
45
  _cdr: ChangeDetectorRef;
46
46
  _isInited: boolean;
47
47
  _isRendered: boolean;
@@ -2,9 +2,9 @@ import { AXStyleColorType } from '@acorex/components/common';
2
2
  import { AXBaseComponent } from '@acorex/components/mixin';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare const AXBaseChipsMixin: (abstract new (...args: any[]) => {
5
- "__#53699@#disabled": boolean;
5
+ "__#53704@#disabled": boolean;
6
6
  disabled: boolean;
7
- "__#53699@#tabIndex": number;
7
+ "__#53704@#tabIndex": number;
8
8
  tabIndex: number;
9
9
  onFocus: import("@angular/core").EventEmitter<import("@acorex/components/common").AXFocusEvent>;
10
10
  _emitOnFocusEvent(e: FocusEvent): void;
@@ -13,9 +13,9 @@ export declare const AXBaseChipsMixin: (abstract new (...args: any[]) => {
13
13
  focus(): void;
14
14
  hasFocus(): boolean;
15
15
  id: string;
16
- "__#53696@#rtl": boolean;
16
+ "__#53701@#rtl": boolean;
17
17
  rtl: boolean;
18
- "__#53696@#elementRef": import("@angular/core").ElementRef<any>;
18
+ "__#53701@#elementRef": import("@angular/core").ElementRef<any>;
19
19
  _cdr: import("@angular/core").ChangeDetectorRef;
20
20
  _isInited: boolean;
21
21
  _isRendered: boolean;
@@ -38,9 +38,9 @@ export declare const AXBaseChipsMixin: (abstract new (...args: any[]) => {
38
38
  onClick: import("@angular/core").EventEmitter<import("@acorex/components/common").AXClickEvent>;
39
39
  _emitOnClickEvent(e: MouseEvent): void;
40
40
  id: string;
41
- "__#53696@#rtl": boolean;
41
+ "__#53701@#rtl": boolean;
42
42
  rtl: boolean;
43
- "__#53696@#elementRef": import("@angular/core").ElementRef<any>;
43
+ "__#53701@#elementRef": import("@angular/core").ElementRef<any>;
44
44
  _cdr: import("@angular/core").ChangeDetectorRef;
45
45
  _isInited: boolean;
46
46
  _isRendered: boolean;
@@ -6,9 +6,9 @@ import { AXPopoverComponent } from '@acorex/components/popover';
6
6
  import { AXBaseComponent } from '@acorex/components/mixin';
7
7
  import * as i0 from "@angular/core";
8
8
  export declare const AXBaseColorPickerMixin: (abstract new (...args: any[]) => {
9
- "__#53699@#disabled": boolean;
9
+ "__#53704@#disabled": boolean;
10
10
  disabled: boolean;
11
- "__#53699@#tabIndex": number;
11
+ "__#53704@#tabIndex": number;
12
12
  tabIndex: number;
13
13
  onFocus: import("@angular/core").EventEmitter<import("@acorex/components/common").AXFocusEvent>;
14
14
  _emitOnFocusEvent(e: FocusEvent): void;
@@ -17,9 +17,9 @@ export declare const AXBaseColorPickerMixin: (abstract new (...args: any[]) => {
17
17
  focus(): void;
18
18
  hasFocus(): boolean;
19
19
  id: string;
20
- "__#53696@#rtl": boolean;
20
+ "__#53701@#rtl": boolean;
21
21
  rtl: boolean;
22
- "__#53696@#elementRef": ElementRef<any>;
22
+ "__#53701@#elementRef": ElementRef<any>;
23
23
  _cdr: ChangeDetectorRef;
24
24
  _isInited: boolean;
25
25
  _isRendered: boolean;
@@ -58,9 +58,9 @@ export declare const AXBaseColorPickerMixin: (abstract new (...args: any[]) => {
58
58
  open(): void;
59
59
  readonly isOpen: boolean;
60
60
  id: string;
61
- "__#53696@#rtl": boolean;
61
+ "__#53701@#rtl": boolean;
62
62
  rtl: boolean;
63
- "__#53696@#elementRef": ElementRef<any>;
63
+ "__#53701@#elementRef": ElementRef<any>;
64
64
  _cdr: ChangeDetectorRef;
65
65
  _isInited: boolean;
66
66
  _isRendered: boolean;
@@ -81,17 +81,17 @@ export declare const AXBaseColorPickerMixin: (abstract new (...args: any[]) => {
81
81
  onValueChanged: import("@angular/core").EventEmitter<AXValueChangedEvent<any>>;
82
82
  valueChange: import("@angular/core").EventEmitter<any>;
83
83
  stateChange: import("@angular/core").EventEmitter<import("@acorex/components/mixin").AXComponentState>;
84
- "__#53700@#readonly": boolean;
84
+ "__#53705@#readonly": boolean;
85
85
  readonly: boolean;
86
- "__#53700@#allowNull": boolean;
86
+ "__#53705@#allowNull": boolean;
87
87
  allowNull: boolean;
88
- "__#53700@#name": string;
88
+ "__#53705@#name": string;
89
89
  name: string;
90
- "__#53700@#isUserInteraction": boolean;
90
+ "__#53705@#isUserInteraction": boolean;
91
91
  readonly isUserInteraction: boolean;
92
- "__#53700@#value": any;
92
+ "__#53705@#value": any;
93
93
  value: any;
94
- "__#53700@#state": import("@acorex/components/mixin").AXComponentState;
94
+ "__#53705@#state": import("@acorex/components/mixin").AXComponentState;
95
95
  state: import("@acorex/components/mixin").AXComponentState;
96
96
  _emitOnValueChangedEvent(oldValue?: any, newValue?: any): void;
97
97
  _internalSetValue(value: any): any;
@@ -108,9 +108,9 @@ export declare const AXBaseColorPickerMixin: (abstract new (...args: any[]) => {
108
108
  validate(): Promise<any>;
109
109
  _setState(state: import("@acorex/components/mixin").AXComponentState, ...args: any[]): void;
110
110
  id: string;
111
- "__#53696@#rtl": boolean;
111
+ "__#53701@#rtl": boolean;
112
112
  rtl: boolean;
113
- "__#53696@#elementRef": ElementRef<any>;
113
+ "__#53701@#elementRef": ElementRef<any>;
114
114
  _cdr: ChangeDetectorRef;
115
115
  _isInited: boolean;
116
116
  _isRendered: boolean;
@@ -138,9 +138,9 @@ export declare const AXBaseColorPickerMixin: (abstract new (...args: any[]) => {
138
138
  _emitOnKeyupEvent(e: KeyboardEvent): void;
139
139
  _emitOnKeypressEvent(e: KeyboardEvent): void;
140
140
  id: string;
141
- "__#53696@#rtl": boolean;
141
+ "__#53701@#rtl": boolean;
142
142
  rtl: boolean;
143
- "__#53696@#elementRef": ElementRef<any>;
143
+ "__#53701@#elementRef": ElementRef<any>;
144
144
  _cdr: ChangeDetectorRef;
145
145
  _isInited: boolean;
146
146
  _isRendered: boolean;
@@ -21,6 +21,7 @@ export declare abstract class MXBaseComponent {
21
21
  getHostElement<T = HTMLElement>(): T;
22
22
  protected getViewContainer(): ViewContainerRef;
23
23
  protected onOptionChanging(option: MXComponentOptionChanging): any;
24
+ protected init(): void;
24
25
  protected onOptionChanged: EventEmitter<AXOptionChangedEvent>;
25
26
  protected setOption(option: MXComponentSetOption): void;
26
27
  private _rtl;
@@ -34,6 +34,6 @@ export declare class AXDatePickerComponent extends AXDatePickerComponent_base {
34
34
  protected _handleOnInputClickEvent(e: MouseEvent): void;
35
35
  protected _handleOnNavigate(e: AXCalendarNavigateEvent): void;
36
36
  static ɵfac: i0.ɵɵFactoryDeclaration<AXDatePickerComponent, never>;
37
- static ɵcmp: i0.ɵɵComponentDeclaration<AXDatePickerComponent, "ax-date-picker", never, { "rtl": { "alias": "rtl"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "value": { "alias": "value"; "required": false; }; "name": { "alias": "name"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "depth": { "alias": "depth"; "required": false; }; "activeView": { "alias": "activeView"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "disabledDates": { "alias": "disabledDates"; "required": false; }; "holidayDates": { "alias": "holidayDates"; "required": false; }; "type": { "alias": "type"; "required": false; }; "cellTemplate": { "alias": "cellTemplate"; "required": false; }; "cellClass": { "alias": "cellClass"; "required": false; }; "format": { "alias": "format"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "interface": { "alias": "interface"; "required": false; }; }, { "onOptionChanged": "onOptionChanged"; "valueChange": "valueChange"; "onValueChanged": "onValueChanged"; "onBlur": "onBlur"; "onFocus": "onFocus"; "depthChange": "depthChange"; "typeChange": "typeChange"; "activeViewChange": "activeViewChange"; "disabledDatesChange": "disabledDatesChange"; "holidayDatesChange": "holidayDatesChange"; "onNavigate": "onNavigate"; "onSlotClick": "onSlotClick"; "formatChange": "formatChange"; }, never, ["ax-prefix", "ax-suffix", "ax-validation-rule"], false, never>;
37
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXDatePickerComponent, "ax-date-picker", never, { "rtl": { "alias": "rtl"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "value": { "alias": "value"; "required": false; }; "name": { "alias": "name"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "depth": { "alias": "depth"; "required": false; }; "activeView": { "alias": "activeView"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "disabledDates": { "alias": "disabledDates"; "required": false; }; "holidayDates": { "alias": "holidayDates"; "required": false; }; "type": { "alias": "type"; "required": false; }; "cellTemplate": { "alias": "cellTemplate"; "required": false; }; "cellClass": { "alias": "cellClass"; "required": false; }; "format": { "alias": "format"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "interface": { "alias": "interface"; "required": false; }; }, { "onOptionChanged": "onOptionChanged"; "valueChange": "valueChange"; "onValueChanged": "onValueChanged"; "onBlur": "onBlur"; "onFocus": "onFocus"; "depthChange": "depthChange"; "typeChange": "typeChange"; "activeViewChange": "activeViewChange"; "disabledDatesChange": "disabledDatesChange"; "holidayDatesChange": "holidayDatesChange"; "onNavigate": "onNavigate"; "onSlotClick": "onSlotClick"; "formatChange": "formatChange"; }, never, ["ax-prefix", "ax-validation-rule", "ax-suffix"], false, never>;
38
38
  }
39
39
  export {};
@@ -97,6 +97,8 @@ class AXAlertComponent extends classes(MXColorComponent) {
97
97
  //
98
98
  this._customIcon = this._iconComp?.icon;
99
99
  this._showInline = this._contentComp != null || this._footerComp != null;
100
+ this._setIcon();
101
+ this._applyButtonStyle();
100
102
  this.cdr.markForCheck();
101
103
  }
102
104
  _handleOnOptionChanged(e) {
@@ -191,4 +193,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImpor
191
193
  }], visible: [{
192
194
  type: Input
193
195
  }] } });
194
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvYWxlcnQvc3JjL2FsZXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL2FsZXJ0L3NyYy9hbGVydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsMEJBQTBCLEVBQUUsd0JBQXdCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM3SixPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQWEsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFLLE9BQU8sRUFBRSxtQkFBbUIsRUFBaUMsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDOzs7QUFFbkM7Ozs7R0FJRztBQUNILE1BVWEsZ0JBQWlCLFNBQVEsT0FBTyxDQUFDLGdCQUFnQixDQUFDO0lBRXJELFNBQVMsQ0FBNEI7SUFHckMsWUFBWSxDQUFnQztJQUcxQyxVQUFVLENBQXFCO0lBRy9CLFlBQVksQ0FBcUI7SUFHakMsV0FBVyxDQUFxQjtJQUVoQyxXQUFXLEdBQVksS0FBSyxDQUFDO0lBR3ZDLFFBQVEsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQUV0RCxXQUFXLENBQVM7SUFDcEIsV0FBVyxDQUFTO0lBRTVCOztPQUVHO0lBQ0gsSUFDSSxXQUFXO1FBQ2IsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxVQUFVLENBQUM7UUFDMUMsT0FBTyxvQkFBb0IsTUFBTSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVPLFFBQVEsQ0FBUztJQUN6QixJQUNXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxJQUFXLE9BQU8sQ0FBQyxDQUFTO1FBQzFCLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDYixJQUFJLEVBQUUsU0FBUztZQUNmLEtBQUssRUFBRSxDQUFDO1lBQ1IsY0FBYyxFQUFFLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxFQUFFO2dCQUNyQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2pDLENBQUM7WUFDRCxhQUFhLEVBQUUsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUU7Z0JBQ3BDLElBQUksUUFBUSxFQUFFO29CQUNaLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7d0JBQ3hDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDZixDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUNsQjtZQUNILENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sU0FBUyxDQUFtQjtJQUUxQixRQUFRLENBQVU7SUFDNUI7O09BRUc7SUFDSCxJQUNXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxJQUFXLE9BQU8sQ0FBQyxDQUFVO1FBQzNCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLEVBQUU7WUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7WUFDbEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxFQUFFO2dCQUNMLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7YUFDeEM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQzthQUMzQztTQUNGO0lBQ0gsQ0FBQztJQUVTLFFBQVE7UUFDaEIsTUFBTSxNQUFNLEdBQUcsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3JFLE1BQU0sUUFBUSxHQUFHLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQzFDLEtBQUssTUFBTSxRQUFRLElBQUksWUFBWSxFQUFFO2dCQUNuQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFFO29CQUNqQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ2hCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO29CQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDO29CQUN6RSxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO2lCQUN6QjthQUNGO1FBQ0gsQ0FBQyxDQUFDO1FBRUYsOERBQThEO1FBQzlELElBQUksT0FBTyxnQkFBZ0IsS0FBSyxXQUFXLEVBQUU7WUFDM0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2pEO1FBRUQsMkRBQTJEO1FBQzNELElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN0RCxFQUFFO1FBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFUyxlQUFlO1FBQ3ZCLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxTQUFTLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FDckI7UUFDRCxFQUFFO1FBQ0YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQztRQUN4QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDO1FBQ3pFLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVTLHNCQUFzQixDQUFDLENBQXVCO1FBQ3RELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU8sUUFBUTtRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUU7WUFBRSxPQUFPO1FBRWpFLFFBQVEsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNsQixLQUFLLFNBQVM7Z0JBQ1osSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsbUNBQW1DLENBQUM7Z0JBQzFELE1BQU07WUFDUixLQUFLLFFBQVE7Z0JBQ1gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsNEJBQTRCLENBQUM7Z0JBQ25ELE1BQU07WUFDUixLQUFLLFNBQVM7Z0JBQ1osSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsOEJBQThCLENBQUM7Z0JBQ3JELE1BQU07WUFDUjtnQkFDRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLG1DQUFtQyxDQUFDO2dCQUM5RSxNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7WUFDcEMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ3JCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUNoRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUs7UUFDSCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUNqQixTQUFTLEVBQUUsSUFBSTthQUNoQixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xELENBQUMsQ0FBQztRQUNGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSTtRQUNGLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUk7UUFDRixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztJQUN0QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUN0QyxDQUFDO3VHQWxMVSxnQkFBZ0I7MkZBQWhCLGdCQUFnQiw2TkFGaEIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxpRUFHOUQsd0JBQXdCLDZFQU14Qix5QkFBeUIsK0VBR3pCLDJCQUEyQiw0RkFHM0IsMEJBQTBCLGtFQVR2QixpQkFBaUIsdUVDekJwQyxvMkJBbUJBOztTREVhLGdCQUFnQjsyRkFBaEIsZ0JBQWdCO2tCQVY1QixTQUFTOytCQUNFLFVBQVUsVUFHWixDQUFDLE9BQU8sQ0FBQyxXQUNSLENBQUMsYUFBYSxDQUFDLG1CQUNQLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksYUFDMUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLGtCQUFrQixFQUFFLENBQUM7OEJBSXBFLFNBQVM7c0JBRGhCLFlBQVk7dUJBQUMsd0JBQXdCO2dCQUk5QixZQUFZO3NCQURuQixlQUFlO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFJL0MsVUFBVTtzQkFEbkIsWUFBWTt1QkFBQyx5QkFBeUI7Z0JBSTdCLFlBQVk7c0JBRHJCLFlBQVk7dUJBQUMsMkJBQTJCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUlqRCxXQUFXO3NCQURwQixZQUFZO3VCQUFDLDBCQUEwQjtnQkFNeEMsUUFBUTtzQkFEUCxNQUFNO2dCQVVILFdBQVc7c0JBRGQsV0FBVzt1QkFBQyxPQUFPO2dCQVFULE9BQU87c0JBRGpCLEtBQUs7Z0JBNEJLLE9BQU87c0JBRGpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JDb250ZW50Q29tcG9uZW50LCBBWERlY29yYXRvckZvb3RlckNvbXBvbmVudCwgQVhEZWNvcmF0b3JJY29uQ29tcG9uZW50LCBBWERlY29yYXRvclRpdGxlQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgSW5wdXQsIEhvc3RCaW5kaW5nLCBDb250ZW50Q2hpbGQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBRdWVyeUxpc3QsIENvbnRlbnRDaGlsZHJlbiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYQ2xvc2JhbGVDb21wb25lbnQsIEFYRXZlbnQsIEFYT3B0aW9uQ2hhbmdlZEV2ZW50LCBNWENvbG9yQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XG5pbXBvcnQgeyBjbGFzc2VzIH0gZnJvbSAncG9seXR5cGUnO1xuXG4vKipcbiAqIFJlZ3VsYXIgZGVzY3JpcHRpb25cbiAqXG4gKiBAY2F0ZWdvcnkgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1hbGVydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hbGVydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FsZXJ0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGlucHV0czogWydjb2xvciddLFxuICBvdXRwdXRzOiBbJ2NvbG9yQ2hhbmdlJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEFYQ2xvc2JhbGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWEFsZXJ0Q29tcG9uZW50IH1dLFxufSlcbmV4cG9ydCBjbGFzcyBBWEFsZXJ0Q29tcG9uZW50IGV4dGVuZHMgY2xhc3NlcyhNWENvbG9yQ29tcG9uZW50KSB7XG4gIEBDb250ZW50Q2hpbGQoQVhEZWNvcmF0b3JJY29uQ29tcG9uZW50KVxuICBwcml2YXRlIF9pY29uQ29tcCE6IEFYRGVjb3JhdG9ySWNvbkNvbXBvbmVudDtcblxuICBAQ29udGVudENoaWxkcmVuKEFYQnV0dG9uQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIHByaXZhdGUgX2J1dHRvbkNvbXBzITogUXVlcnlMaXN0PEFYQnV0dG9uQ29tcG9uZW50PjtcblxuICBAQ29udGVudENoaWxkKEFYRGVjb3JhdG9yVGl0bGVDb21wb25lbnQpXG4gIHByb3RlY3RlZCBfdGl0bGVDb21wITogQVhCdXR0b25Db21wb25lbnQ7XG5cbiAgQENvbnRlbnRDaGlsZChBWERlY29yYXRvckNvbnRlbnRDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHByb3RlY3RlZCBfY29udGVudENvbXAhOiBBWEJ1dHRvbkNvbXBvbmVudDtcblxuICBAQ29udGVudENoaWxkKEFYRGVjb3JhdG9yRm9vdGVyQ29tcG9uZW50KVxuICBwcm90ZWN0ZWQgX2Zvb3RlckNvbXAhOiBBWEJ1dHRvbkNvbXBvbmVudDtcblxuICBwcm90ZWN0ZWQgX3Nob3dJbmxpbmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KClcbiAgb25DbG9zZWQ6IEV2ZW50RW1pdHRlcjxBWEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhFdmVudD4oKTtcblxuICBwcml2YXRlIF9jdXN0b21JY29uOiBzdHJpbmc7XG4gIHByaXZhdGUgX3RpbWVPdXRSZWY6IG51bWJlcjtcblxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBnZXQgX19ob3N0Q2xhc3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCBfY2xhc3MgPSBgYXgtJHt0aGlzLmNvbG9yfS1kZWZhdWx0YDtcbiAgICByZXR1cm4gYGF4LWFsZXJ0IGF4LW5vbmUgJHtfY2xhc3N9YDtcbiAgfVxuXG4gIHByaXZhdGUgX3RpbWVPdXQ6IG51bWJlcjtcbiAgQElucHV0KClcbiAgcHVibGljIGdldCB0aW1lT3V0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3RpbWVPdXQ7XG4gIH1cbiAgcHVibGljIHNldCB0aW1lT3V0KHY6IG51bWJlcikge1xuICAgIHRoaXMuc2V0T3B0aW9uKHtcbiAgICAgIG5hbWU6ICd0aW1lT3V0JyxcbiAgICAgIHZhbHVlOiB2LFxuICAgICAgYmVmb3JlQ2FsbGJhY2s6IChvbGRWYWx1ZSwgbmV3VmFsdWUpID0+IHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVPdXRSZWYpO1xuICAgICAgfSxcbiAgICAgIGFmdGVyQ2FsbGJhY2s6IChvbGRWYWx1ZSwgbmV3VmFsdWUpID0+IHtcbiAgICAgICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5fdGltZU91dFJlZiA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICB9LCB0aGlzLnRpbWVPdXQpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfb2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgcHJvdGVjdGVkIF92aXNpYmxlOiBib29sZWFuO1xuICAvKipcbiAgICogIHNldCB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgQWxlcnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgdmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdmlzaWJsZTtcbiAgfVxuICBwdWJsaWMgc2V0IHZpc2libGUodjogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLl92aXNpYmxlICE9IHYpIHtcbiAgICAgIHRoaXMuX3Zpc2libGUgPSB2O1xuICAgICAgY29uc3QgaG9zdCA9IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKTtcbiAgICAgIGlmICh2KSB7XG4gICAgICAgIGhvc3QuY2xhc3NMaXN0LnJlbW92ZSgnYXgtc3RhdGUtaGlkZGVuJyk7XG4gICAgICAgIGhvc3QuY2xhc3NMaXN0LmFkZCgnYXgtc3RhdGUtdmlzaWJsZScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaG9zdC5jbGFzc0xpc3QuYWRkKCdheC1zdGF0ZS1oaWRkZW4nKTtcbiAgICAgICAgaG9zdC5jbGFzc0xpc3QudG9nZ2xlKCdheC1zdGF0ZS12aXNpYmxlJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IGNvbmZpZyA9IHsgYXR0cmlidXRlczogZmFsc2UsIGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9O1xuICAgIGNvbnN0IGNhbGxiYWNrID0gKG11dGF0aW9uTGlzdCwgb2JzZXJ2ZXIpID0+IHtcbiAgICAgIGZvciAoY29uc3QgbXV0YXRpb24gb2YgbXV0YXRpb25MaXN0KSB7XG4gICAgICAgIGlmIChtdXRhdGlvbi50eXBlID09PSAnY2hpbGRMaXN0Jykge1xuICAgICAgICAgIHRoaXMuX3NldEljb24oKTtcbiAgICAgICAgICB0aGlzLl9hcHBseUJ1dHRvblN0eWxlKCk7XG4gICAgICAgICAgdGhpcy5fc2hvd0lubGluZSA9IHRoaXMuX2NvbnRlbnRDb21wICE9IG51bGwgfHwgdGhpcy5fZm9vdGVyQ29tcCAhPSBudWxsO1xuICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIENyZWF0ZSBhbiBvYnNlcnZlciBpbnN0YW5jZSBsaW5rZWQgdG8gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uXG4gICAgaWYgKHR5cGVvZiBNdXRhdGlvbk9ic2VydmVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhpcy5fb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihjYWxsYmFjayk7XG4gICAgfVxuXG4gICAgLy8gU3RhcnQgb2JzZXJ2aW5nIHRoZSB0YXJnZXQgbm9kZSBmb3IgY29uZmlndXJlZCBtdXRhdGlvbnNcbiAgICB0aGlzLl9vYnNlcnZlci5vYnNlcnZlKHRoaXMuZ2V0SG9zdEVsZW1lbnQoKSwgY29uZmlnKTtcbiAgICAvL1xuICAgIHRoaXMub25PcHRpb25DaGFuZ2VkLnN1YnNjcmliZSh0aGlzLl9oYW5kbGVPbk9wdGlvbkNoYW5nZWQuYmluZCh0aGlzKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLnZpc2libGUgPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnZpc2libGUgPSB0cnVlO1xuICAgIH1cbiAgICAvL1xuICAgIHRoaXMuX2N1c3RvbUljb24gPSB0aGlzLl9pY29uQ29tcD8uaWNvbjtcbiAgICB0aGlzLl9zaG93SW5saW5lID0gdGhpcy5fY29udGVudENvbXAgIT0gbnVsbCB8fCB0aGlzLl9mb290ZXJDb21wICE9IG51bGw7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2hhbmRsZU9uT3B0aW9uQ2hhbmdlZChlOiBBWE9wdGlvbkNoYW5nZWRFdmVudCkge1xuICAgIHRoaXMuX3NldEljb24oKTtcbiAgICB0aGlzLl9hcHBseUJ1dHRvblN0eWxlKCk7XG4gIH1cblxuICBwcml2YXRlIF9zZXRJY29uKCkge1xuICAgIGlmICghdGhpcy5faWNvbkNvbXAgfHwgdGhpcy5faWNvbkNvbXAuX2dldElubmVyRWxlbWVudCgpKSByZXR1cm47XG5cbiAgICBzd2l0Y2ggKHRoaXMuY29sb3IpIHtcbiAgICAgIGNhc2UgJ3N1Y2Nlc3MnOlxuICAgICAgICB0aGlzLl9pY29uQ29tcC5pY29uID0gJ2F4LWljb24gYXgtaWNvbi1jaGVjay1jaXJjbGUtZmlsbCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZGFuZ2VyJzpcbiAgICAgICAgdGhpcy5faWNvbkNvbXAuaWNvbiA9ICdheC1pY29uIGF4LWljb24tZXJyb3ItZmlsbCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnd2FybmluZyc6XG4gICAgICAgIHRoaXMuX2ljb25Db21wLmljb24gPSAnYXgtaWNvbiBheC1pY29uLXdhcm5pbmctZmlsbCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5faWNvbkNvbXAuaWNvbiA9IHRoaXMuX2N1c3RvbUljb24gfHwgJ2F4LWljb24gYXgtaWNvbi1jaGVjay1jaXJjbGUtZmlsbCc7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2FwcGx5QnV0dG9uU3R5bGUoKSB7XG4gICAgdGhpcy5fYnV0dG9uQ29tcHM/LmZvckVhY2goKGM6IGFueSkgPT4ge1xuICAgICAgYy5jb2xvciA9IHRoaXMuY29sb3I7XG4gICAgICBjLmdldEhvc3RFbGVtZW50KCkuY2xhc3NMaXN0LmFkZCgnYXgtc20nKTtcbiAgICAgIGMubG9vayA9ICFjLmxvb2sgfHwgYy5sb29rID09ICdkZWZhdWx0JyA/ICdkZWZhdWx0JyA6ICdibGFuayc7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogIFJlbW92ZSB0aGUgYWxlcnQgZnJvbSB0aGUgY29udGFpbmVyXG4gICAqL1xuICBjbG9zZSgpOiB2b2lkIHtcbiAgICBjb25zdCBob3N0ID0gdGhpcy5nZXRIb3N0RWxlbWVudCgpO1xuICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgIGNvbnN0IGZ1bmMgPSAoKSA9PiB7XG4gICAgICBob3N0LnBhcmVudEVsZW1lbnQ/LnJlbW92ZUNoaWxkKGhvc3QpO1xuICAgICAgdGhpcy5vbkNsb3NlZC5lbWl0KHtcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgfSk7XG4gICAgICBob3N0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBmdW5jKTtcbiAgICB9O1xuICAgIGhvc3QuYWRkRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGZ1bmMpO1xuICB9XG5cbiAgLyoqXG4gICAqICBIaWRlIHRoZSBhbGVydFxuICAgKi9cbiAgaGlkZSgpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgU2hvdyB0aGUgYWxlcnRcbiAgICovXG4gIHNob3coKSB7XG4gICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX29ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5vbk9wdGlvbkNoYW5nZWQ/LnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJheC1hbGVydC1pbmxpbmUtc3RhcnRcIiBbY2xhc3MuIWF4LWl0ZW1zLXN0YXJ0XT1cIl9zaG93SW5saW5lXCI+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LWljb25cIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJheC1hbGVydC1pbmxpbmUtbWlkZGxlXCI+XG4gIDxkaXYgY2xhc3M9XCJheC1hbGVydC1taWRkbGUtYmxvY2stc3RhcnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtYWxlcnQtdGl0bGVcIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LXRpdGxlXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImF4LWFsZXJ0LW1pZGRsZS1ibG9jay1lbmRcIiBbY2xhc3MuYXgtaGlkZGVuXT1cIiFfc2hvd0lubGluZVwiIFtjbGFzcy5heC10aXRsZS1nYXBdPVwiX3RpdGxlQ29tcFwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LWNvbnRlbnRcIj4gPC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LWZvb3RlclwiPiA8L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiYXgtYWxlcnQtaW5saW5lLWVuZFwiIFtjbGFzcy4hYXgtaXRlbXMtc3RhcnRdPVwiX3Nob3dJbmxpbmVcIj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtYnV0dG9uXCI+PC9uZy1jb250ZW50PlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1jbG9zZS1idXR0b25cIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJheC1hbGVydC1wcm9ncmVzc1wiIFtzdHlsZS5hbmltYXRpb24tZHVyYXRpb24ubXNdPVwidGltZU91dFwiICpuZ0lmPVwidGltZU91dFwiPjwvZGl2PlxuIl19
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvYWxlcnQvc3JjL2FsZXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL2FsZXJ0L3NyYy9hbGVydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsMEJBQTBCLEVBQUUsd0JBQXdCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM3SixPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQWEsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFLLE9BQU8sRUFBRSxtQkFBbUIsRUFBaUMsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDOzs7QUFFbkM7Ozs7R0FJRztBQUNILE1BVWEsZ0JBQWlCLFNBQVEsT0FBTyxDQUFDLGdCQUFnQixDQUFDO0lBRXJELFNBQVMsQ0FBNEI7SUFHckMsWUFBWSxDQUFnQztJQUcxQyxVQUFVLENBQXFCO0lBRy9CLFlBQVksQ0FBcUI7SUFHakMsV0FBVyxDQUFxQjtJQUVoQyxXQUFXLEdBQVksS0FBSyxDQUFDO0lBR3ZDLFFBQVEsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQUV0RCxXQUFXLENBQVM7SUFDcEIsV0FBVyxDQUFTO0lBRTVCOztPQUVHO0lBQ0gsSUFDSSxXQUFXO1FBQ2IsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FB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QVc7UUFDVCxJQUFJLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxlQUFlLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDdEMsQ0FBQzt1R0FwTFUsZ0JBQWdCOzJGQUFoQixnQkFBZ0IsNk5BRmhCLENBQUMsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLENBQUMsaUVBRzlELHdCQUF3Qiw2RUFNeEIseUJBQXlCLCtFQUd6QiwyQkFBMkIsNEZBRzNCLDBCQUEwQixrRUFUdkIsaUJBQWlCLHVFQ3pCcEMsbzJCQW1CQTs7U0RFYSxnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFWNUIsU0FBUzsrQkFDRSxVQUFVLFVBR1osQ0FBQyxPQUFPLENBQUMsV0FDUixDQUFDLGFBQWEsQ0FBQyxtQkFDUCx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCLENBQUMsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxrQkFBa0IsRUFBRSxDQUFDOzhCQUlwRSxTQUFTO3NCQURoQixZQUFZO3VCQUFDLHdCQUF3QjtnQkFJOUIsWUFBWTtzQkFEbkIsZUFBZTt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBSS9DLFVBQVU7c0JBRG5CLFlBQVk7dUJBQUMseUJBQXlCO2dCQUk3QixZQUFZO3NCQURyQixZQUFZO3VCQUFDLDJCQUEyQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJakQsV0FBVztzQkFEcEIsWUFBWTt1QkFBQywwQkFBMEI7Z0JBTXhDLFFBQVE7c0JBRFAsTUFBTTtnQkFVSCxXQUFXO3NCQURkLFdBQVc7dUJBQUMsT0FBTztnQkFRVCxPQUFPO3NCQURqQixLQUFLO2dCQTRCSyxPQUFPO3NCQURqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhCdXR0b25Db21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yQ29udGVudENvbXBvbmVudCwgQVhEZWNvcmF0b3JGb290ZXJDb21wb25lbnQsIEFYRGVjb3JhdG9ySWNvbkNvbXBvbmVudCwgQVhEZWNvcmF0b3JUaXRsZUNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIElucHV0LCBIb3N0QmluZGluZywgQ29udGVudENoaWxkLCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgUXVlcnlMaXN0LCBDb250ZW50Q2hpbGRyZW4sIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWENsb3NiYWxlQ29tcG9uZW50LCBBWEV2ZW50LCBBWE9wdGlvbkNoYW5nZWRFdmVudCwgTVhDb2xvckNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb21tb24nO1xuaW1wb3J0IHsgY2xhc3NlcyB9IGZyb20gJ3BvbHl0eXBlJztcblxuLyoqXG4gKiBSZWd1bGFyIGRlc2NyaXB0aW9uXG4gKlxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtYWxlcnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWxlcnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hbGVydC5jb21wb25lbnQuc2NzcyddLFxuICBpbnB1dHM6IFsnY29sb3InXSxcbiAgb3V0cHV0czogWydjb2xvckNoYW5nZSddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBBWENsb3NiYWxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhBbGVydENvbXBvbmVudCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgQVhBbGVydENvbXBvbmVudCBleHRlbmRzIGNsYXNzZXMoTVhDb2xvckNvbXBvbmVudCkge1xuICBAQ29udGVudENoaWxkKEFYRGVjb3JhdG9ySWNvbkNvbXBvbmVudClcbiAgcHJpdmF0ZSBfaWNvbkNvbXAhOiBBWERlY29yYXRvckljb25Db21wb25lbnQ7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihBWEJ1dHRvbkNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBwcml2YXRlIF9idXR0b25Db21wcyE6IFF1ZXJ5TGlzdDxBWEJ1dHRvbkNvbXBvbmVudD47XG5cbiAgQENvbnRlbnRDaGlsZChBWERlY29yYXRvclRpdGxlQ29tcG9uZW50KVxuICBwcm90ZWN0ZWQgX3RpdGxlQ29tcCE6IEFYQnV0dG9uQ29tcG9uZW50O1xuXG4gIEBDb250ZW50Q2hpbGQoQVhEZWNvcmF0b3JDb250ZW50Q29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwcm90ZWN0ZWQgX2NvbnRlbnRDb21wITogQVhCdXR0b25Db21wb25lbnQ7XG5cbiAgQENvbnRlbnRDaGlsZChBWERlY29yYXRvckZvb3RlckNvbXBvbmVudClcbiAgcHJvdGVjdGVkIF9mb290ZXJDb21wITogQVhCdXR0b25Db21wb25lbnQ7XG5cbiAgcHJvdGVjdGVkIF9zaG93SW5saW5lOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2xvc2VkOiBFdmVudEVtaXR0ZXI8QVhFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYRXZlbnQ+KCk7XG5cbiAgcHJpdmF0ZSBfY3VzdG9tSWNvbjogc3RyaW5nO1xuICBwcml2YXRlIF90aW1lT3V0UmVmOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgZ2V0IF9faG9zdENsYXNzKCk6IHN0cmluZyB7XG4gICAgY29uc3QgX2NsYXNzID0gYGF4LSR7dGhpcy5jb2xvcn0tZGVmYXVsdGA7XG4gICAgcmV0dXJuIGBheC1hbGVydCBheC1ub25lICR7X2NsYXNzfWA7XG4gIH1cblxuICBwcml2YXRlIF90aW1lT3V0OiBudW1iZXI7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgdGltZU91dCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl90aW1lT3V0O1xuICB9XG4gIHB1YmxpYyBzZXQgdGltZU91dCh2OiBudW1iZXIpIHtcbiAgICB0aGlzLnNldE9wdGlvbih7XG4gICAgICBuYW1lOiAndGltZU91dCcsXG4gICAgICB2YWx1ZTogdixcbiAgICAgIGJlZm9yZUNhbGxiYWNrOiAob2xkVmFsdWUsIG5ld1ZhbHVlKSA9PiB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl90aW1lT3V0UmVmKTtcbiAgICAgIH0sXG4gICAgICBhZnRlckNhbGxiYWNrOiAob2xkVmFsdWUsIG5ld1ZhbHVlKSA9PiB7XG4gICAgICAgIGlmIChuZXdWYWx1ZSkge1xuICAgICAgICAgIHRoaXMuX3RpbWVPdXRSZWYgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgfSwgdGhpcy50aW1lT3V0KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX29ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyO1xuXG4gIHByb3RlY3RlZCBfdmlzaWJsZTogYm9vbGVhbjtcbiAgLyoqXG4gICAqICBzZXQgdGhlIHZpc2liaWxpdHkgb2YgdGhlIEFsZXJ0XG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IHZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Zpc2libGU7XG4gIH1cbiAgcHVibGljIHNldCB2aXNpYmxlKHY6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5fdmlzaWJsZSAhPSB2KSB7XG4gICAgICB0aGlzLl92aXNpYmxlID0gdjtcbiAgICAgIGNvbnN0IGhvc3QgPSB0aGlzLmdldEhvc3RFbGVtZW50KCk7XG4gICAgICBpZiAodikge1xuICAgICAgICBob3N0LmNsYXNzTGlzdC5yZW1vdmUoJ2F4LXN0YXRlLWhpZGRlbicpO1xuICAgICAgICBob3N0LmNsYXNzTGlzdC5hZGQoJ2F4LXN0YXRlLXZpc2libGUnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhvc3QuY2xhc3NMaXN0LmFkZCgnYXgtc3RhdGUtaGlkZGVuJyk7XG4gICAgICAgIGhvc3QuY2xhc3NMaXN0LnRvZ2dsZSgnYXgtc3RhdGUtdmlzaWJsZScpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBjb25maWcgPSB7IGF0dHJpYnV0ZXM6IGZhbHNlLCBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfTtcbiAgICBjb25zdCBjYWxsYmFjayA9IChtdXRhdGlvbkxpc3QsIG9ic2VydmVyKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9uTGlzdCkge1xuICAgICAgICBpZiAobXV0YXRpb24udHlwZSA9PT0gJ2NoaWxkTGlzdCcpIHtcbiAgICAgICAgICB0aGlzLl9zZXRJY29uKCk7XG4gICAgICAgICAgdGhpcy5fYXBwbHlCdXR0b25TdHlsZSgpO1xuICAgICAgICAgIHRoaXMuX3Nob3dJbmxpbmUgPSB0aGlzLl9jb250ZW50Q29tcCAhPSBudWxsIHx8IHRoaXMuX2Zvb3RlckNvbXAgIT0gbnVsbDtcbiAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBDcmVhdGUgYW4gb2JzZXJ2ZXIgaW5zdGFuY2UgbGlua2VkIHRvIHRoZSBjYWxsYmFjayBmdW5jdGlvblxuICAgIGlmICh0eXBlb2YgTXV0YXRpb25PYnNlcnZlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRoaXMuX29ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoY2FsbGJhY2spO1xuICAgIH1cblxuICAgIC8vIFN0YXJ0IG9ic2VydmluZyB0aGUgdGFyZ2V0IG5vZGUgZm9yIGNvbmZpZ3VyZWQgbXV0YXRpb25zXG4gICAgdGhpcy5fb2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmdldEhvc3RFbGVtZW50KCksIGNvbmZpZyk7XG4gICAgLy9cbiAgICB0aGlzLm9uT3B0aW9uQ2hhbmdlZC5zdWJzY3JpYmUodGhpcy5faGFuZGxlT25PcHRpb25DaGFuZ2VkLmJpbmQodGhpcykpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy52aXNpYmxlID09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcbiAgICB9XG4gICAgLy9cbiAgICB0aGlzLl9jdXN0b21JY29uID0gdGhpcy5faWNvbkNvbXA/Lmljb247XG4gICAgdGhpcy5fc2hvd0lubGluZSA9IHRoaXMuX2NvbnRlbnRDb21wICE9IG51bGwgfHwgdGhpcy5fZm9vdGVyQ29tcCAhPSBudWxsO1xuICAgIHRoaXMuX3NldEljb24oKTtcbiAgICB0aGlzLl9hcHBseUJ1dHRvblN0eWxlKCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2hhbmRsZU9uT3B0aW9uQ2hhbmdlZChlOiBBWE9wdGlvbkNoYW5nZWRFdmVudCkge1xuICAgIHRoaXMuX3NldEljb24oKTtcbiAgICB0aGlzLl9hcHBseUJ1dHRvblN0eWxlKCk7XG4gIH1cblxuICBwcml2YXRlIF9zZXRJY29uKCkge1xuICAgIGlmICghdGhpcy5faWNvbkNvbXAgfHwgdGhpcy5faWNvbkNvbXAuX2dldElubmVyRWxlbWVudCgpKSByZXR1cm47XG5cbiAgICBzd2l0Y2ggKHRoaXMuY29sb3IpIHtcbiAgICAgIGNhc2UgJ3N1Y2Nlc3MnOlxuICAgICAgICB0aGlzLl9pY29uQ29tcC5pY29uID0gJ2F4LWljb24gYXgtaWNvbi1jaGVjay1jaXJjbGUtZmlsbCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZGFuZ2VyJzpcbiAgICAgICAgdGhpcy5faWNvbkNvbXAuaWNvbiA9ICdheC1pY29uIGF4LWljb24tZXJyb3ItZmlsbCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnd2FybmluZyc6XG4gICAgICAgIHRoaXMuX2ljb25Db21wLmljb24gPSAnYXgtaWNvbiBheC1pY29uLXdhcm5pbmctZmlsbCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5faWNvbkNvbXAuaWNvbiA9IHRoaXMuX2N1c3RvbUljb24gfHwgJ2F4LWljb24gYXgtaWNvbi1jaGVjay1jaXJjbGUtZmlsbCc7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2FwcGx5QnV0dG9uU3R5bGUoKSB7XG4gICAgdGhpcy5fYnV0dG9uQ29tcHM/LmZvckVhY2goKGM6IGFueSkgPT4ge1xuICAgICAgYy5jb2xvciA9IHRoaXMuY29sb3I7XG4gICAgICBjLmdldEhvc3RFbGVtZW50KCkuY2xhc3NMaXN0LmFkZCgnYXgtc20nKTtcbiAgICAgIGMubG9vayA9ICFjLmxvb2sgfHwgYy5sb29rID09ICdkZWZhdWx0JyA/ICdkZWZhdWx0JyA6ICdibGFuayc7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogIFJlbW92ZSB0aGUgYWxlcnQgZnJvbSB0aGUgY29udGFpbmVyXG4gICAqL1xuICBjbG9zZSgpOiB2b2lkIHtcbiAgICBjb25zdCBob3N0ID0gdGhpcy5nZXRIb3N0RWxlbWVudCgpO1xuICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgIGNvbnN0IGZ1bmMgPSAoKSA9PiB7XG4gICAgICBob3N0LnBhcmVudEVsZW1lbnQ/LnJlbW92ZUNoaWxkKGhvc3QpO1xuICAgICAgdGhpcy5vbkNsb3NlZC5lbWl0KHtcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgfSk7XG4gICAgICBob3N0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBmdW5jKTtcbiAgICB9O1xuICAgIGhvc3QuYWRkRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGZ1bmMpO1xuICB9XG5cbiAgLyoqXG4gICAqICBIaWRlIHRoZSBhbGVydFxuICAgKi9cbiAgaGlkZSgpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgU2hvdyB0aGUgYWxlcnRcbiAgICovXG4gIHNob3coKSB7XG4gICAgdGhpcy52aXNpYmxlID0gdHJ1ZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX29ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5vbk9wdGlvbkNoYW5nZWQ/LnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJheC1hbGVydC1pbmxpbmUtc3RhcnRcIiBbY2xhc3MuIWF4LWl0ZW1zLXN0YXJ0XT1cIl9zaG93SW5saW5lXCI+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LWljb25cIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJheC1hbGVydC1pbmxpbmUtbWlkZGxlXCI+XG4gIDxkaXYgY2xhc3M9XCJheC1hbGVydC1taWRkbGUtYmxvY2stc3RhcnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtYWxlcnQtdGl0bGVcIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LXRpdGxlXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImF4LWFsZXJ0LW1pZGRsZS1ibG9jay1lbmRcIiBbY2xhc3MuYXgtaGlkZGVuXT1cIiFfc2hvd0lubGluZVwiIFtjbGFzcy5heC10aXRsZS1nYXBdPVwiX3RpdGxlQ29tcFwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LWNvbnRlbnRcIj4gPC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LWZvb3RlclwiPiA8L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiYXgtYWxlcnQtaW5saW5lLWVuZFwiIFtjbGFzcy4hYXgtaXRlbXMtc3RhcnRdPVwiX3Nob3dJbmxpbmVcIj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtYnV0dG9uXCI+PC9uZy1jb250ZW50PlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1jbG9zZS1idXR0b25cIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJheC1hbGVydC1wcm9ncmVzc1wiIFtzdHlsZS5hbmltYXRpb24tZHVyYXRpb24ubXNdPVwidGltZU91dFwiICpuZ0lmPVwidGltZU91dFwiPjwvZGl2PlxuIl19