@simpleangularcontrols/sac-common 10.0.0-rc.2 → 10.0.0-rc.21
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/bundles/simpleangularcontrols-sac-common.umd.js +2232 -1604
- package/bundles/simpleangularcontrols-sac-common.umd.js.map +1 -1
- package/bundles/simpleangularcontrols-sac-common.umd.min.js +1 -1
- package/bundles/simpleangularcontrols-sac-common.umd.min.js.map +1 -1
- package/common/basedatetimecontrol.d.ts +100 -14
- package/common/baseinputcontrol.d.ts +0 -4
- package/common/basemodelcontrol.d.ts +55 -27
- package/common/baseuploadcontrol.d.ts +71 -55
- package/controls/checkbox/checkbox.d.ts +12 -3
- package/controls/checkbox/radiobutton.d.ts +61 -26
- package/controls/contextmenu/contextmenu.d.ts +26 -19
- package/controls/contextmenu/contextmenu.interface.d.ts +3 -0
- package/controls/contextmenu/contextmenuitem.d.ts +5 -0
- package/controls/contextmenu/contextmenuitembutton.d.ts +21 -20
- package/controls/datetime/date.d.ts +28 -31
- package/controls/datetime/datetime.d.ts +27 -31
- package/controls/datetime/time.d.ts +26 -30
- package/controls/dialog/dialog.d.ts +31 -43
- package/controls/grid/grid.d.ts +38 -36
- package/controls/grid/gridbutton.d.ts +13 -13
- package/controls/grid/gridcolumn.d.ts +8 -8
- package/controls/grid/gridcolumnaction.d.ts +3 -3
- package/controls/grid/gridcolumnbase.d.ts +45 -37
- package/controls/grid/gridimage.d.ts +2 -2
- package/controls/grid/model.d.ts +51 -42
- package/controls/grid/paging.d.ts +41 -43
- package/controls/input/input.d.ts +3 -3
- package/controls/input/inputarea.d.ts +5 -5
- package/controls/input/inputpassword.d.ts +7 -7
- package/controls/input/inputsearch.d.ts +13 -4
- package/controls/layout/formlayout.d.ts +17 -1
- package/controls/list/buildvaluestring.d.ts +6 -0
- package/controls/list/dropdown.d.ts +9 -51
- package/controls/list/dropdownoptions.d.ts +38 -0
- package/controls/multilanguage/multilanguageinput.d.ts +2 -2
- package/controls/multilanguage/multilanguageinputarea.d.ts +4 -4
- package/controls/static/formcontainer.d.ts +7 -3
- package/controls/tooltip/tooltip.d.ts +76 -69
- package/controls/treeview/treeview.d.ts +107 -107
- package/esm2015/common/basedatetimecontrol.js +185 -30
- package/esm2015/common/baseinputcontrol.js +2 -7
- package/esm2015/common/basemodelcontrol.js +109 -57
- package/esm2015/common/baseuploadcontrol.js +92 -59
- package/esm2015/controls/checkbox/checkbox.js +29 -6
- package/esm2015/controls/checkbox/radiobutton.js +94 -45
- package/esm2015/controls/contextmenu/contextmenu.interface.js +1 -0
- package/esm2015/controls/contextmenu/contextmenu.interface.ngfactory.js +7 -0
- package/esm2015/controls/contextmenu/contextmenu.js +22 -23
- package/esm2015/controls/contextmenu/contextmenuitem.js +13 -2
- package/esm2015/controls/contextmenu/contextmenuitembutton.js +34 -25
- package/esm2015/controls/datetime/date.js +44 -43
- package/esm2015/controls/datetime/datetime.js +43 -43
- package/esm2015/controls/datetime/time.js +43 -43
- package/esm2015/controls/dialog/dialog.js +41 -83
- package/esm2015/controls/grid/grid.js +21 -21
- package/esm2015/controls/grid/gridbutton.js +19 -13
- package/esm2015/controls/grid/gridcolumn.js +14 -7
- package/esm2015/controls/grid/gridcolumnaction.js +6 -5
- package/esm2015/controls/grid/gridcolumnbase.js +67 -55
- package/esm2015/controls/grid/gridimage.js +3 -3
- package/esm2015/controls/grid/model.js +51 -30
- package/esm2015/controls/grid/paging.js +40 -42
- package/esm2015/controls/input/input.js +6 -8
- package/esm2015/controls/input/inputarea.js +19 -12
- package/esm2015/controls/input/inputpassword.js +12 -12
- package/esm2015/controls/input/inputsearch.js +35 -6
- package/esm2015/controls/layout/formlayout.js +20 -8
- package/esm2015/controls/list/buildvaluestring.js +18 -0
- package/esm2015/controls/{treeview/ngtreeitemaction.ngfactory.js → list/buildvaluestring.ngfactory.js} +1 -1
- package/esm2015/controls/list/dropdown.js +16 -114
- package/esm2015/controls/list/dropdownoptions.js +72 -0
- package/esm2015/controls/{treeview/treeviewchild.ngfactory.js → list/dropdownoptions.ngfactory.js} +1 -1
- package/esm2015/controls/multilanguage/multilanguageinput.js +8 -14
- package/esm2015/controls/multilanguage/multilanguageinputarea.js +9 -15
- package/esm2015/controls/static/formcontainer.js +16 -5
- package/esm2015/controls/tooltip/tooltip.js +126 -245
- package/esm2015/controls/treeview/treeview.js +276 -231
- package/esm2015/interfaces/ISacConfigurationService.js +1 -1
- package/esm2015/interfaces/ISacIconService.js +1 -1
- package/esm2015/interfaces/ISacUploadEventCompleteState.js +1 -0
- package/esm2015/interfaces/ISacUploadEventCompleteState.ngfactory.js +7 -0
- package/esm2015/interfaces/ISacValidationKeyService.js +1 -1
- package/esm2015/interfaces/treeviewaction.interface.js +1 -0
- package/esm2015/interfaces/treeviewaction.interface.ngfactory.js +7 -0
- package/esm2015/public_api.js +15 -8
- package/esm2015/services/sac-configuration.service.js +31 -5
- package/esm2015/services/sac-icon.service.js +37 -1
- package/esm2015/services/sac-localisation.service.js +69 -180
- package/esm2015/services/sac-validationkey.service.js +12 -9
- package/esm2015/simpleangularcontrols-sac-common.js +1 -7
- package/esm2015/utilities/enums.js +5 -1
- package/esm2015/utilities/guid.js +4 -2
- package/esm2015/utilities/popuphelper.js +343 -0
- package/esm2015/utilities/popuphelper.ngfactory.js +7 -0
- package/esm2015/validation/equals.validator.js +14 -0
- package/esm2015/validation/equals.validator.ngfactory.js +7 -0
- package/esm2015/validation/isDateValid.js +9 -1
- package/esm2015/validation/mintextlength.validator.js +23 -0
- package/esm2015/validation/mintextlength.validator.ngfactory.js +7 -0
- package/esm2015/validation/notequals.validator.js +14 -0
- package/esm2015/validation/{minlength.validator.ngfactory.js → notequals.validator.ngfactory.js} +1 -1
- package/esm2015/validation/validation.class.js +35 -6
- package/fesm2015/simpleangularcontrols-sac-common.js +2070 -1498
- package/fesm2015/simpleangularcontrols-sac-common.js.map +1 -1
- package/interfaces/ISacConfigurationService.d.ts +20 -0
- package/interfaces/ISacIconService.d.ts +24 -0
- package/interfaces/ISacUploadEventCompleteState.d.ts +5 -0
- package/interfaces/ISacUploadEventCompleteState.ngfactory.d.ts +1 -0
- package/interfaces/ISacValidationKeyService.d.ts +2 -2
- package/interfaces/treeviewaction.interface.d.ts +4 -0
- package/interfaces/treeviewaction.interface.ngfactory.d.ts +1 -0
- package/package.json +2 -2
- package/public_api.d.ts +13 -6
- package/services/sac-configuration.service.d.ts +40 -0
- package/services/sac-icon.service.d.ts +49 -1
- package/services/sac-localisation.service.d.ts +10 -10
- package/services/sac-validationkey.service.d.ts +7 -7
- package/simpleangularcontrols-sac-common-10.0.0-rc.21.tgz +0 -0
- package/simpleangularcontrols-sac-common.d.ts +0 -6
- package/simpleangularcontrols-sac-common.metadata.json +1 -1
- package/utilities/enums.d.ts +3 -1
- package/utilities/popuphelper.d.ts +83 -0
- package/utilities/popuphelper.ngfactory.d.ts +1 -0
- package/validation/equals.validator.d.ts +2 -0
- package/validation/equals.validator.ngfactory.d.ts +1 -0
- package/validation/mintextlength.validator.d.ts +2 -0
- package/validation/mintextlength.validator.ngfactory.d.ts +1 -0
- package/validation/notequals.validator.d.ts +2 -0
- package/validation/notequals.validator.ngfactory.d.ts +1 -0
- package/validation/validation.class.d.ts +22 -3
- package/controls/treeview/ngtreeitemaction.d.ts +0 -40
- package/controls/treeview/treeviewchild.d.ts +0 -12
- package/esm2015/controls/treeview/ngtreeitemaction.js +0 -60
- package/esm2015/controls/treeview/treeviewchild.js +0 -18
- package/esm2015/validation/minlength.validator.js +0 -21
- package/simpleangularcontrols-sac-common-10.0.0-rc.2.tgz +0 -0
- package/validation/minlength.validator.d.ts +0 -2
- /package/controls/{treeview/ngtreeitemaction.ngfactory.d.ts → contextmenu/contextmenu.interface.ngfactory.d.ts} +0 -0
- /package/controls/{treeview/treeviewchild.ngfactory.d.ts → list/buildvaluestring.ngfactory.d.ts} +0 -0
- /package/{validation/minlength.validator.ngfactory.d.ts → controls/list/dropdownoptions.ngfactory.d.ts} +0 -0
|
@@ -1,14 +1,9 @@
|
|
|
1
|
-
import { Directive, ElementRef, HostListener, Injector, Input, } from '@angular/core';
|
|
2
|
-
import * as IMask from 'imask';
|
|
3
|
-
import * as moment_ from 'moment';
|
|
4
1
|
import { SacBaseDateTimeControl } from '../../common/basedatetimecontrol';
|
|
5
|
-
import { SACICON_SERVICE, SacDefaultIconService } from '../../services';
|
|
6
2
|
import { Validation } from '../../validation';
|
|
7
3
|
import { SacFormLayoutCommon } from '../layout/formlayout';
|
|
8
|
-
|
|
9
|
-
*
|
|
10
|
-
|
|
11
|
-
const moment = moment_['default'];
|
|
4
|
+
import { ChangeDetectorRef, Directive, ElementRef, HostListener, Injector, Input } from '@angular/core';
|
|
5
|
+
import * as IMask from 'imask';
|
|
6
|
+
import * as moment_ from 'moment';
|
|
12
7
|
/**
|
|
13
8
|
* Komponente für SacTimeCommon. Extends SacBaseDateTimeControl
|
|
14
9
|
*/
|
|
@@ -21,9 +16,10 @@ export class SacTimeCommon extends SacBaseDateTimeControl {
|
|
|
21
16
|
* @param injector Injector for injecting services
|
|
22
17
|
* @param elementRef reference to html element
|
|
23
18
|
*/
|
|
24
|
-
constructor(formlayout, injector, elementRef) {
|
|
25
|
-
super(formlayout, injector, elementRef);
|
|
19
|
+
constructor(formlayout, injector, elementRef, cdRef) {
|
|
20
|
+
super(formlayout, injector, elementRef, cdRef);
|
|
26
21
|
this.elementRef = elementRef;
|
|
22
|
+
// #region Properties
|
|
27
23
|
/**
|
|
28
24
|
* Format des Datums
|
|
29
25
|
*/
|
|
@@ -52,6 +48,18 @@ export class SacTimeCommon extends SacBaseDateTimeControl {
|
|
|
52
48
|
lazy: false,
|
|
53
49
|
overwrite: true,
|
|
54
50
|
};
|
|
51
|
+
/**
|
|
52
|
+
* Max Time
|
|
53
|
+
*/
|
|
54
|
+
this._maxtime = null;
|
|
55
|
+
/**
|
|
56
|
+
* Min Time
|
|
57
|
+
*/
|
|
58
|
+
this._mintime = null;
|
|
59
|
+
/**
|
|
60
|
+
* Moment JS module instance
|
|
61
|
+
*/
|
|
62
|
+
this.moment = moment_['default'];
|
|
55
63
|
/**
|
|
56
64
|
* Resource Key für Validation Message MinTime bei Control
|
|
57
65
|
*/
|
|
@@ -68,27 +76,20 @@ export class SacTimeCommon extends SacBaseDateTimeControl {
|
|
|
68
76
|
* Resource Key für Validation Message MinTime in Validation Summary
|
|
69
77
|
*/
|
|
70
78
|
this.validationmessagesummarymintime = this.validationKeyService.ValidationErrorSummaryMinTime;
|
|
71
|
-
/**
|
|
72
|
-
* Max Time
|
|
73
|
-
*/
|
|
74
|
-
this._maxtime = null;
|
|
75
|
-
/**
|
|
76
|
-
* Min Time
|
|
77
|
-
*/
|
|
78
|
-
this._mintime = null;
|
|
79
|
-
/**
|
|
80
|
-
* Definiert ob der Date Selector angezeigt wird
|
|
81
|
-
*/
|
|
82
|
-
this._showselector = false;
|
|
83
|
-
this.iconService = injector.get(SACICON_SERVICE, new SacDefaultIconService());
|
|
84
79
|
}
|
|
85
80
|
// #endregion Constructors
|
|
86
81
|
// #region Public Getters And Setters
|
|
82
|
+
/**
|
|
83
|
+
* icon for date selector button
|
|
84
|
+
*/
|
|
85
|
+
get IconSelector() {
|
|
86
|
+
return this.iconService.TimeComponentSelectorIcon;
|
|
87
|
+
}
|
|
87
88
|
/**
|
|
88
89
|
* Max Time
|
|
89
90
|
*/
|
|
90
91
|
set maxtime(v) {
|
|
91
|
-
let time = moment(v, [this.TIMEFORMAT], true);
|
|
92
|
+
let time = this.moment(v, [this.TIMEFORMAT], true);
|
|
92
93
|
time = this.ModifyParsedDateTimeValue(time);
|
|
93
94
|
if (time.isValid()) {
|
|
94
95
|
this._maxtime = super.getDate(time).toDate();
|
|
@@ -101,7 +102,7 @@ export class SacTimeCommon extends SacBaseDateTimeControl {
|
|
|
101
102
|
* Min Time
|
|
102
103
|
*/
|
|
103
104
|
set mintime(v) {
|
|
104
|
-
let time = moment(v, [this.TIMEFORMAT], true);
|
|
105
|
+
let time = this.moment(v, [this.TIMEFORMAT], true);
|
|
105
106
|
time = this.ModifyParsedDateTimeValue(time);
|
|
106
107
|
if (time.isValid()) {
|
|
107
108
|
this._mintime = super.getDate(time).toDate();
|
|
@@ -110,23 +111,8 @@ export class SacTimeCommon extends SacBaseDateTimeControl {
|
|
|
110
111
|
this._mintime = null;
|
|
111
112
|
}
|
|
112
113
|
}
|
|
113
|
-
/**
|
|
114
|
-
* icon for date selector button
|
|
115
|
-
*/
|
|
116
|
-
get IconSelector() {
|
|
117
|
-
return this.iconService.TimeComponentSelectorIcon;
|
|
118
|
-
}
|
|
119
114
|
// #endregion Public Getters And Setters
|
|
120
115
|
// #region Public Methods
|
|
121
|
-
/**
|
|
122
|
-
* HostListener
|
|
123
|
-
*/
|
|
124
|
-
onClick(targetElement) {
|
|
125
|
-
const clickedInside = this.elementRef.nativeElement.contains(targetElement);
|
|
126
|
-
if (!clickedInside) {
|
|
127
|
-
this._showselector = false;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
116
|
/**
|
|
131
117
|
* Methode ergibt Datum-Format vom String
|
|
132
118
|
*/
|
|
@@ -142,6 +128,19 @@ export class SacTimeCommon extends SacBaseDateTimeControl {
|
|
|
142
128
|
v.year(1900);
|
|
143
129
|
return v;
|
|
144
130
|
}
|
|
131
|
+
/**
|
|
132
|
+
* HostListener
|
|
133
|
+
*/
|
|
134
|
+
onClick(targetElement) {
|
|
135
|
+
if (!this.pickercontainer) {
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
const clickedInsideContainer = this.pickercontainer.nativeElement.contains(targetElement);
|
|
139
|
+
const clickedInsideReference = this.pickerbutton.nativeElement.contains(targetElement);
|
|
140
|
+
if (!clickedInsideContainer && !clickedInsideReference) {
|
|
141
|
+
this._showselector = false;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
145
144
|
/**
|
|
146
145
|
* Zeigt Date Selector an
|
|
147
146
|
*/
|
|
@@ -163,7 +162,7 @@ export class SacTimeCommon extends SacBaseDateTimeControl {
|
|
|
163
162
|
this.setValueString('');
|
|
164
163
|
}
|
|
165
164
|
else {
|
|
166
|
-
this.value = moment(v.date).utc().toDate();
|
|
165
|
+
this.value = this.moment(v.date).utc().toDate();
|
|
167
166
|
}
|
|
168
167
|
this._showselector = false;
|
|
169
168
|
}
|
|
@@ -198,7 +197,8 @@ SacTimeCommon.decorators = [
|
|
|
198
197
|
SacTimeCommon.ctorParameters = () => [
|
|
199
198
|
{ type: SacFormLayoutCommon },
|
|
200
199
|
{ type: Injector },
|
|
201
|
-
{ type: ElementRef }
|
|
200
|
+
{ type: ElementRef },
|
|
201
|
+
{ type: ChangeDetectorRef }
|
|
202
202
|
];
|
|
203
203
|
SacTimeCommon.propDecorators = {
|
|
204
204
|
validationmessagemaxtime: [{ type: Input }],
|
|
@@ -209,4 +209,4 @@ SacTimeCommon.propDecorators = {
|
|
|
209
209
|
mintime: [{ type: Input }],
|
|
210
210
|
onClick: [{ type: HostListener, args: ['document:click', ['$event.target'],] }]
|
|
211
211
|
};
|
|
212
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5qcyIsInNvdXJjZVJvb3QiOiJDOi9Qcm9qZWt0ZS9zaW1wbGVhbmd1bGFyY29udHJvbHMtbmcxMC9jaC5qbmV0d29yay5zYWMtY29udHJvbHMvcHJvamVjdHMvc2FjLWNvbW1vbi9zcmMvIiwic291cmNlcyI6WyJjb250cm9scy9kYXRldGltZS90aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUSxDQUFDO0FBR2xDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSxlQUFlLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFM0Q7O0dBRUc7QUFDSCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFbEM7O0dBRUc7QUFFSCxNQUFNLE9BQU8sYUFBYyxTQUFRLHNCQUFzQjtJQXVFdkQsd0JBQXdCO0lBRXhCLHVCQUF1QjtJQUV2Qjs7Ozs7T0FLRztJQUNILFlBQ0UsVUFBK0IsRUFDL0IsUUFBa0IsRUFDUixVQUFzQjtRQUVoQyxLQUFLLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUY5QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBNUVsQzs7V0FFRztRQUNhLGVBQVUsR0FBVyxPQUFPLENBQUM7UUFDN0M7O1dBRUc7UUFDYSxjQUFTLEdBQUc7WUFDMUIsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQ3JCLE1BQU0sRUFBRTtnQkFDTixFQUFFLEVBQUU7b0JBQ0YsSUFBSSxFQUFFLEtBQUssQ0FBQyxXQUFXO29CQUN2QixJQUFJLEVBQUUsQ0FBQztvQkFDUCxFQUFFLEVBQUUsRUFBRTtvQkFDTixTQUFTLEVBQUUsQ0FBQztpQkFDYjtnQkFDRCxFQUFFLEVBQUU7b0JBQ0YsSUFBSSxFQUFFLEtBQUssQ0FBQyxXQUFXO29CQUN2QixJQUFJLEVBQUUsQ0FBQztvQkFDUCxFQUFFLEVBQUUsRUFBRTtvQkFDTixTQUFTLEVBQUUsQ0FBQztpQkFDYjthQUNGO1lBQ0QsZUFBZSxFQUFFLEdBQUc7WUFDcEIsT0FBTyxFQUFFLElBQUk7WUFDYixJQUFJLEVBQUUsS0FBSztZQUNYLFNBQVMsRUFBRSxJQUFJO1NBQ2hCLENBQUM7UUFFRjs7V0FFRztRQUNhLDZCQUF3QixHQUN0QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsc0JBQXNCLENBQUM7UUFDbkQ7O1dBRUc7UUFDYSw2QkFBd0IsR0FDdEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLHNCQUFzQixDQUFDO1FBQ25EOztXQUVHO1FBQ2Esb0NBQStCLEdBQzdDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyw2QkFBNkIsQ0FBQztRQUMxRDs7V0FFRztRQUNhLG9DQUErQixHQUM3QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsNkJBQTZCLENBQUM7UUFFMUQ7O1dBRUc7UUFDSSxhQUFRLEdBQVMsSUFBSSxDQUFDO1FBQzdCOztXQUVHO1FBQ0ksYUFBUSxHQUFTLElBQUksQ0FBQztRQUM3Qjs7V0FFRztRQUNJLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBbUJwQyxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQzdCLGVBQWUsRUFDZixJQUFJLHFCQUFxQixFQUFFLENBQzVCLENBQUM7SUFDSixDQUFDO0lBRUQsMEJBQTBCO0lBRTFCLHFDQUFxQztJQUVyQzs7T0FFRztJQUNILElBQ1csT0FBTyxDQUFDLENBQXVCO1FBQ3hDLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFOUMsSUFBSSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU1QyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDOUM7YUFBTTtZQUNMLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFDVyxPQUFPLENBQUMsQ0FBdUI7UUFDeEMsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU5QyxJQUFJLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUM5QzthQUFNO1lBQ0wsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7U0FDdEI7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFlBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLHlCQUF5QixDQUFDO0lBQ3BELENBQUM7SUFFRCx3Q0FBd0M7SUFFeEMseUJBQXlCO0lBRXpCOztPQUVHO0lBS0ksT0FBTyxDQUFDLGFBQWE7UUFDMUIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7U0FDNUI7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSx1QkFBdUI7UUFDNUIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7T0FFRztJQUNJLHlCQUF5QixDQUFDLENBQVM7UUFDeEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNWLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2IsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxnQkFBZ0I7UUFDckIsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVmLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztTQUM1QjthQUFNO1lBQ0wsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxVQUFVLENBQUMsQ0FBTTtRQUN0QixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO1lBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDekI7YUFBTTtZQUNMLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUM1QztRQUVELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNJLFlBQVksQ0FBQyxDQUFrQjtRQUNwQyxJQUFJLEtBQUssR0FBNEIsSUFBSSxDQUFDO1FBRTFDLEtBQUssR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTlCLElBQ0UsS0FBSyxLQUFLLElBQUk7WUFDZCxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUk7WUFDaEIsQ0FBQyxDQUFDLEtBQUssS0FBSyxTQUFTO1lBQ3JCLENBQUMsQ0FBQyxLQUFLLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUztZQUMzQixJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksRUFDdEI7WUFDQSxLQUFLLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FDeEIsSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsd0JBQXdCLEVBQzdCLElBQUksQ0FBQywrQkFBK0IsQ0FDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNOO1FBRUQsSUFDRSxLQUFLLEtBQUssSUFBSTtZQUNkLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSTtZQUNoQixDQUFDLENBQUMsS0FBSyxLQUFLLFNBQVM7WUFDckIsQ0FBQyxDQUFDLEtBQUssS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTO1lBQzNCLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxFQUN0QjtZQUNBLEtBQUssR0FBRyxVQUFVLENBQUMsT0FBTyxDQUN4QixJQUFJLENBQUMsUUFBUSxFQUNiLElBQUksQ0FBQyx3QkFBd0IsRUFDN0IsSUFBSSxDQUFDLCtCQUErQixDQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ047UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7OztZQS9PRixTQUFTOzs7WUFWRCxtQkFBbUI7WUFaMUIsUUFBUTtZQUZSLFVBQVU7Ozt1Q0FpRVQsS0FBSzt1Q0FLTCxLQUFLOzhDQUtMLEtBQUs7OENBS0wsS0FBSztzQkE4Q0wsS0FBSztzQkFnQkwsS0FBSztzQkEyQkwsWUFBWSxTQUFDLGdCQUFnQixFQUFFLENBQUMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBEaXJlY3RpdmUsXHJcbiAgRWxlbWVudFJlZixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5qZWN0b3IsXHJcbiAgSW5wdXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0ICogYXMgSU1hc2sgZnJvbSAnaW1hc2snO1xyXG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gJ21vbWVudCc7XHJcbi8vIEltcG9ydCBNb21lbnQuSlNcclxuaW1wb3J0IHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IHsgU2FjQmFzZURhdGVUaW1lQ29udHJvbCB9IGZyb20gJy4uLy4uL2NvbW1vbi9iYXNlZGF0ZXRpbWVjb250cm9sJztcclxuaW1wb3J0IHsgSVNhY0ljb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9JU2FjSWNvblNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTQUNJQ09OX1NFUlZJQ0UsIFNhY0RlZmF1bHRJY29uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbiB9IGZyb20gJy4uLy4uL3ZhbGlkYXRpb24nO1xyXG5pbXBvcnQgeyBTYWNGb3JtTGF5b3V0Q29tbW9uIH0gZnJvbSAnLi4vbGF5b3V0L2Zvcm1sYXlvdXQnO1xyXG5cclxuLyoqXHJcbiAqIE1vbWVudFxyXG4gKi9cclxuY29uc3QgbW9tZW50ID0gbW9tZW50X1snZGVmYXVsdCddO1xyXG5cclxuLyoqXHJcbiAqIEtvbXBvbmVudGUgZsO8ciBTYWNUaW1lQ29tbW9uLiBFeHRlbmRzIFNhY0Jhc2VEYXRlVGltZUNvbnRyb2xcclxuICovXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgY2xhc3MgU2FjVGltZUNvbW1vbiBleHRlbmRzIFNhY0Jhc2VEYXRlVGltZUNvbnRyb2wge1xyXG4gIC8vICNyZWdpb24gUHJvcGVydGllc1xyXG5cclxuICAvKipcclxuICAgKiBpY29uIHNlcnZpY2VcclxuICAgKi9cclxuICBwcml2YXRlIGljb25TZXJ2aWNlOiBJU2FjSWNvblNlcnZpY2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvcm1hdCBkZXMgRGF0dW1zXHJcbiAgICovXHJcbiAgcHVibGljIHJlYWRvbmx5IFRJTUVGT1JNQVQ6IHN0cmluZyA9ICdISDptbSc7XHJcbiAgLyoqXHJcbiAgICogTWFza2VcclxuICAgKi9cclxuICBwdWJsaWMgcmVhZG9ubHkgaW1hc2tEYXRlID0ge1xyXG4gICAgbWFzazogdGhpcy5USU1FRk9STUFULFxyXG4gICAgYmxvY2tzOiB7XHJcbiAgICAgIEhIOiB7XHJcbiAgICAgICAgbWFzazogSU1hc2suTWFza2VkUmFuZ2UsXHJcbiAgICAgICAgZnJvbTogMCxcclxuICAgICAgICB0bzogMjMsXHJcbiAgICAgICAgbWF4TGVuZ3RoOiAyLFxyXG4gICAgICB9LFxyXG4gICAgICBtbToge1xyXG4gICAgICAgIG1hc2s6IElNYXNrLk1hc2tlZFJhbmdlLFxyXG4gICAgICAgIGZyb206IDAsXHJcbiAgICAgICAgdG86IDU5LFxyXG4gICAgICAgIG1heExlbmd0aDogMixcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgICBwbGFjZWhvbGRlckNoYXI6ICdfJyxcclxuICAgIGF1dG9maXg6IHRydWUsXHJcbiAgICBsYXp5OiBmYWxzZSxcclxuICAgIG92ZXJ3cml0ZTogdHJ1ZSxcclxuICB9O1xyXG5cclxuICAvKipcclxuICAgKiBSZXNvdXJjZSBLZXkgZsO8ciBWYWxpZGF0aW9uIE1lc3NhZ2UgTWluVGltZSBiZWkgQ29udHJvbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZW1heHRpbWU6IHN0cmluZyA9XHJcbiAgICB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvck1heFRpbWU7XHJcbiAgLyoqXHJcbiAgICogUmVzb3VyY2UgS2V5IGbDvHIgVmFsaWRhdGlvbiBNZXNzYWdlIE1pblRpbWUgYmVpIENvbnRyb2xcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgdmFsaWRhdGlvbm1lc3NhZ2VtaW50aW1lOiBzdHJpbmcgPVxyXG4gICAgdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JNaW5UaW1lO1xyXG4gIC8qKlxyXG4gICAqIFJlc291cmNlIEtleSBmw7xyIFZhbGlkYXRpb24gTWVzc2FnZSBNaW5UaW1lIGluIFZhbGlkYXRpb24gU3VtbWFyeVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZXN1bW1hcnltYXh0aW1lOiBzdHJpbmcgPVxyXG4gICAgdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5TWF4VGltZTtcclxuICAvKipcclxuICAgKiBSZXNvdXJjZSBLZXkgZsO8ciBWYWxpZGF0aW9uIE1lc3NhZ2UgTWluVGltZSBpbiBWYWxpZGF0aW9uIFN1bW1hcnlcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgdmFsaWRhdGlvbm1lc3NhZ2VzdW1tYXJ5bWludGltZTogc3RyaW5nID1cclxuICAgIHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yU3VtbWFyeU1pblRpbWU7XHJcblxyXG4gIC8qKlxyXG4gICAqIE1heCBUaW1lXHJcbiAgICovXHJcbiAgcHVibGljIF9tYXh0aW1lOiBEYXRlID0gbnVsbDtcclxuICAvKipcclxuICAgKiBNaW4gVGltZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBfbWludGltZTogRGF0ZSA9IG51bGw7XHJcbiAgLyoqXHJcbiAgICogRGVmaW5pZXJ0IG9iIGRlciBEYXRlIFNlbGVjdG9yIGFuZ2V6ZWlndCB3aXJkXHJcbiAgICovXHJcbiAgcHVibGljIF9zaG93c2VsZWN0b3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXHJcblxyXG4gIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnN0cnVjdG9yXHJcbiAgICogQHBhcmFtIGZvcm1sYXlvdXQgU2FjRm9ybUxheW91dENvbW1vbiB0byBkZWZpbmUgc2NvcGVkIGxheW91dCBzZXR0aW5nc1xyXG4gICAqIEBwYXJhbSBpbmplY3RvciBJbmplY3RvciBmb3IgaW5qZWN0aW5nIHNlcnZpY2VzXHJcbiAgICogQHBhcmFtIGVsZW1lbnRSZWYgcmVmZXJlbmNlIHRvIGh0bWwgZWxlbWVudFxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgZm9ybWxheW91dDogU2FjRm9ybUxheW91dENvbW1vbixcclxuICAgIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmXHJcbiAgKSB7XHJcbiAgICBzdXBlcihmb3JtbGF5b3V0LCBpbmplY3RvciwgZWxlbWVudFJlZik7XHJcblxyXG4gICAgdGhpcy5pY29uU2VydmljZSA9IGluamVjdG9yLmdldChcclxuICAgICAgU0FDSUNPTl9TRVJWSUNFLFxyXG4gICAgICBuZXcgU2FjRGVmYXVsdEljb25TZXJ2aWNlKClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uIENvbnN0cnVjdG9yc1xyXG5cclxuICAvLyAjcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXHJcblxyXG4gIC8qKlxyXG4gICAqIE1heCBUaW1lXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IG1heHRpbWUodjogc3RyaW5nIHwgRGF0ZSB8IG51bGwpIHtcclxuICAgIGxldCB0aW1lID0gbW9tZW50KHYsIFt0aGlzLlRJTUVGT1JNQVRdLCB0cnVlKTtcclxuXHJcbiAgICB0aW1lID0gdGhpcy5Nb2RpZnlQYXJzZWREYXRlVGltZVZhbHVlKHRpbWUpO1xyXG5cclxuICAgIGlmICh0aW1lLmlzVmFsaWQoKSkge1xyXG4gICAgICB0aGlzLl9tYXh0aW1lID0gc3VwZXIuZ2V0RGF0ZSh0aW1lKS50b0RhdGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX21heHRpbWUgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWluIFRpbWVcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgbWludGltZSh2OiBzdHJpbmcgfCBEYXRlIHwgbnVsbCkge1xyXG4gICAgbGV0IHRpbWUgPSBtb21lbnQodiwgW3RoaXMuVElNRUZPUk1BVF0sIHRydWUpO1xyXG5cclxuICAgIHRpbWUgPSB0aGlzLk1vZGlmeVBhcnNlZERhdGVUaW1lVmFsdWUodGltZSk7XHJcblxyXG4gICAgaWYgKHRpbWUuaXNWYWxpZCgpKSB7XHJcbiAgICAgIHRoaXMuX21pbnRpbWUgPSBzdXBlci5nZXREYXRlKHRpbWUpLnRvRGF0ZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fbWludGltZSA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBpY29uIGZvciBkYXRlIHNlbGVjdG9yIGJ1dHRvblxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgSWNvblNlbGVjdG9yKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5UaW1lQ29tcG9uZW50U2VsZWN0b3JJY29uO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xyXG5cclxuICAvLyAjcmVnaW9uIFB1YmxpYyBNZXRob2RzXHJcblxyXG4gIC8qKlxyXG4gICAqIEhvc3RMaXN0ZW5lclxyXG4gICAqL1xyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQudGFyZ2V0J10pXHJcbiAgLyoqXHJcbiAgICogQ2xpY2sgRXZlbnRcclxuICAgKi9cclxuICBwdWJsaWMgb25DbGljayh0YXJnZXRFbGVtZW50KSB7XHJcbiAgICBjb25zdCBjbGlja2VkSW5zaWRlID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnModGFyZ2V0RWxlbWVudCk7XHJcbiAgICBpZiAoIWNsaWNrZWRJbnNpZGUpIHtcclxuICAgICAgdGhpcy5fc2hvd3NlbGVjdG9yID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRob2RlIGVyZ2lidCBEYXR1bS1Gb3JtYXQgdm9tIFN0cmluZ1xyXG4gICAqL1xyXG4gIHB1YmxpYyBHZXREYXRlVGltZUZvcm1hdFN0cmluZygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuVElNRUZPUk1BVDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldGhvZGUgZXJnaWJ0IERhdHVtIC0gTW9tZW50XHJcbiAgICovXHJcbiAgcHVibGljIE1vZGlmeVBhcnNlZERhdGVUaW1lVmFsdWUodjogTW9tZW50KTogTW9tZW50IHtcclxuICAgIHYuZGF0ZSgxKTtcclxuICAgIHYubW9udGgoMCk7XHJcbiAgICB2LnllYXIoMTkwMCk7XHJcbiAgICByZXR1cm4gdjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFplaWd0IERhdGUgU2VsZWN0b3IgYW5cclxuICAgKi9cclxuICBwdWJsaWMgc2hvd1RpbWVTZWxlY3RvcigpOiB2b2lkIHtcclxuICAgIC8vIFRvdWNoIEV2ZW50IGF1c2zDtnNlblxyXG4gICAgdGhpcy5vblRvdWNoKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuX3Nob3dzZWxlY3Rvcikge1xyXG4gICAgICB0aGlzLl9zaG93c2VsZWN0b3IgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX3Nob3dzZWxlY3RvciA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaW1lIFNlbGVjdG9yXHJcbiAgICovXHJcbiAgcHVibGljIHRpbWVzZWxlY3QodjogYW55KSB7XHJcbiAgICBpZiAodi5kYXRlID09PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuc2V0VmFsdWVTdHJpbmcoJycpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IG1vbWVudCh2LmRhdGUpLnV0YygpLnRvRGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3Nob3dzZWxlY3RvciA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmFsaWRhdG9yXHJcbiAgICovXHJcbiAgcHVibGljIHZhbGlkYXRlRGF0YShjOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICBsZXQgZXJyb3I6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBlcnJvciA9IHN1cGVyLnZhbGlkYXRlRGF0YShjKTtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIGVycm9yID09PSBudWxsICYmXHJcbiAgICAgIGMudmFsdWUgIT09IG51bGwgJiZcclxuICAgICAgYy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgIGMudmFsdWUgIT09ICcnICYmXHJcbiAgICAgIHRoaXMuX21pbnRpbWUgIT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICB0aGlzLl9taW50aW1lICE9PSBudWxsXHJcbiAgICApIHtcclxuICAgICAgZXJyb3IgPSBWYWxpZGF0aW9uLm1pblRpbWUoXHJcbiAgICAgICAgdGhpcy5fbWludGltZSxcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb25tZXNzYWdlbWludGltZSxcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb25tZXNzYWdlc3VtbWFyeW1pbnRpbWVcclxuICAgICAgKShjKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIGVycm9yID09PSBudWxsICYmXHJcbiAgICAgIGMudmFsdWUgIT09IG51bGwgJiZcclxuICAgICAgYy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgIGMudmFsdWUgIT09ICcnICYmXHJcbiAgICAgIHRoaXMuX21heHRpbWUgIT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICB0aGlzLl9tYXh0aW1lICE9PSBudWxsXHJcbiAgICApIHtcclxuICAgICAgZXJyb3IgPSBWYWxpZGF0aW9uLm1heFRpbWUoXHJcbiAgICAgICAgdGhpcy5fbWF4dGltZSxcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb25tZXNzYWdlbWF4dGltZSxcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb25tZXNzYWdlc3VtbWFyeW1heHRpbWVcclxuICAgICAgKShjKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZXJyb3I7XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBNZXRob2RzXHJcbn1cclxuIl19
|
|
212
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5qcyIsInNvdXJjZVJvb3QiOiJDOi9Qcm9qZWt0ZS9zaW1wbGVhbmd1bGFyY29udHJvbHMtbmcxMC9jaC5qbmV0d29yay5zYWMtY29udHJvbHMvcHJvamVjdHMvc2FjLWNvbW1vbi9zcmMvIiwic291cmNlcyI6WyJjb250cm9scy9kYXRldGltZS90aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4RyxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMvQixPQUFPLEtBQUssT0FBTyxNQUFNLFFBQVEsQ0FBQztBQUVsQzs7R0FFRztBQUVILE1BQU0sT0FBTyxhQUFjLFNBQVEsc0JBQXNCO0lBb0VyRCx3QkFBd0I7SUFFeEIsdUJBQXVCO0lBRXZCOzs7OztPQUtHO0lBQ0gsWUFDSSxVQUErQixFQUMvQixRQUFrQixFQUNSLFVBQXNCLEVBQ2hDLEtBQXdCO1FBRXhCLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUhyQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBaEZwQyxxQkFBcUI7UUFFckI7O1dBRUc7UUFDYSxlQUFVLEdBQVcsT0FBTyxDQUFDO1FBRTdDOztXQUVHO1FBQ2EsY0FBUyxHQUFHO1lBQ3hCLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVTtZQUNyQixNQUFNLEVBQUU7Z0JBQ0osRUFBRSxFQUFFO29CQUNBLElBQUksRUFBRSxLQUFLLENBQUMsV0FBVztvQkFDdkIsSUFB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SyxLQUFLLElBQUk7WUFDZCxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUk7WUFDaEIsQ0FBQyxDQUFDLEtBQUssS0FBSyxTQUFTO1lBQ3JCLENBQUMsQ0FBQyxLQUFLLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUztZQUMzQixJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksRUFDeEI7WUFDRSxLQUFLLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FDdEIsSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsd0JBQXdCLEVBQzdCLElBQUksQ0FBQywrQkFBK0IsQ0FDdkMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNSO1FBRUQsSUFDSSxLQUFLLEtBQUssSUFBSTtZQUNkLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSTtZQUNoQixDQUFDLENBQUMsS0FBSyxLQUFLLFNBQVM7WUFDckIsQ0FBQyxDQUFDLEtBQUssS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTO1lBQzNCLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxFQUN4QjtZQUNFLEtBQUssR0FBRyxVQUFVLENBQUMsT0FBTyxDQUN0QixJQUFJLENBQUMsUUFBUSxFQUNiLElBQUksQ0FBQyx3QkFBd0IsRUFDN0IsSUFBSSxDQUFDLCtCQUErQixDQUN2QyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ1I7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOzs7WUE3T0osU0FBUzs7O1lBVEQsbUJBQW1CO1lBQ3FDLFFBQVE7WUFBbEMsVUFBVTtZQUF4QyxpQkFBaUI7Ozt1Q0E0RHJCLEtBQUs7dUNBS0wsS0FBSzs4Q0FLTCxLQUFLOzhDQUtMLEtBQUs7c0JBbUNMLEtBQUs7c0JBZ0JMLEtBQUs7c0JBcUNMLFlBQVksU0FBQyxnQkFBZ0IsRUFBRSxDQUFDLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNhY0Jhc2VEYXRlVGltZUNvbnRyb2wgfSBmcm9tICcuLi8uLi9jb21tb24vYmFzZWRhdGV0aW1lY29udHJvbCc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb24gfSBmcm9tICcuLi8uLi92YWxpZGF0aW9uJztcclxuaW1wb3J0IHsgU2FjRm9ybUxheW91dENvbW1vbiB9IGZyb20gJy4uL2xheW91dC9mb3JtbGF5b3V0JztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbmplY3RvciwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgKiBhcyBJTWFzayBmcm9tICdpbWFzayc7XHJcbmltcG9ydCAqIGFzIG1vbWVudF8gZnJvbSAnbW9tZW50JztcclxuXHJcbi8qKlxyXG4gKiBLb21wb25lbnRlIGbDvHIgU2FjVGltZUNvbW1vbi4gRXh0ZW5kcyBTYWNCYXNlRGF0ZVRpbWVDb250cm9sXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGNsYXNzIFNhY1RpbWVDb21tb24gZXh0ZW5kcyBTYWNCYXNlRGF0ZVRpbWVDb250cm9sIHtcclxuICAgIC8vICNyZWdpb24gUHJvcGVydGllc1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRm9ybWF0IGRlcyBEYXR1bXNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlYWRvbmx5IFRJTUVGT1JNQVQ6IHN0cmluZyA9ICdISDptbSc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNYXNrZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgaW1hc2tEYXRlID0ge1xyXG4gICAgICAgIG1hc2s6IHRoaXMuVElNRUZPUk1BVCxcclxuICAgICAgICBibG9ja3M6IHtcclxuICAgICAgICAgICAgSEg6IHtcclxuICAgICAgICAgICAgICAgIG1hc2s6IElNYXNrLk1hc2tlZFJhbmdlLFxyXG4gICAgICAgICAgICAgICAgZnJvbTogMCxcclxuICAgICAgICAgICAgICAgIHRvOiAyMyxcclxuICAgICAgICAgICAgICAgIG1heExlbmd0aDogMixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgbW06IHtcclxuICAgICAgICAgICAgICAgIG1hc2s6IElNYXNrLk1hc2tlZFJhbmdlLFxyXG4gICAgICAgICAgICAgICAgZnJvbTogMCxcclxuICAgICAgICAgICAgICAgIHRvOiA1OSxcclxuICAgICAgICAgICAgICAgIG1heExlbmd0aDogMixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHBsYWNlaG9sZGVyQ2hhcjogJ18nLFxyXG4gICAgICAgIGF1dG9maXg6IHRydWUsXHJcbiAgICAgICAgbGF6eTogZmFsc2UsXHJcbiAgICAgICAgb3ZlcndyaXRlOiB0cnVlLFxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1heCBUaW1lXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBfbWF4dGltZTogRGF0ZSA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNaW4gVGltZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgX21pbnRpbWU6IERhdGUgPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTW9tZW50IEpTIG1vZHVsZSBpbnN0YW5jZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbW9tZW50ID0gbW9tZW50X1snZGVmYXVsdCddO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVzb3VyY2UgS2V5IGbDvHIgVmFsaWRhdGlvbiBNZXNzYWdlIE1pblRpbWUgYmVpIENvbnRyb2xcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIHZhbGlkYXRpb25tZXNzYWdlbWF4dGltZTogc3RyaW5nID0gdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JNYXhUaW1lO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVzb3VyY2UgS2V5IGbDvHIgVmFsaWRhdGlvbiBNZXNzYWdlIE1pblRpbWUgYmVpIENvbnRyb2xcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIHZhbGlkYXRpb25tZXNzYWdlbWludGltZTogc3RyaW5nID0gdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JNaW5UaW1lO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVzb3VyY2UgS2V5IGbDvHIgVmFsaWRhdGlvbiBNZXNzYWdlIE1pblRpbWUgaW4gVmFsaWRhdGlvbiBTdW1tYXJ5XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZXN1bW1hcnltYXh0aW1lOiBzdHJpbmcgPSB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclN1bW1hcnlNYXhUaW1lO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVzb3VyY2UgS2V5IGbDvHIgVmFsaWRhdGlvbiBNZXNzYWdlIE1pblRpbWUgaW4gVmFsaWRhdGlvbiBTdW1tYXJ5XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZXN1bW1hcnltaW50aW1lOiBzdHJpbmcgPSB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclN1bW1hcnlNaW5UaW1lO1xyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHJvcGVydGllc1xyXG5cclxuICAgIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25zdHJ1Y3RvclxyXG4gICAgICogQHBhcmFtIGZvcm1sYXlvdXQgU2FjRm9ybUxheW91dENvbW1vbiB0byBkZWZpbmUgc2NvcGVkIGxheW91dCBzZXR0aW5nc1xyXG4gICAgICogQHBhcmFtIGluamVjdG9yIEluamVjdG9yIGZvciBpbmplY3Rpbmcgc2VydmljZXNcclxuICAgICAqIEBwYXJhbSBlbGVtZW50UmVmIHJlZmVyZW5jZSB0byBodG1sIGVsZW1lbnRcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgZm9ybWxheW91dDogU2FjRm9ybUxheW91dENvbW1vbixcclxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICAgICAgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihmb3JtbGF5b3V0LCBpbmplY3RvciwgZWxlbWVudFJlZiwgY2RSZWYpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXHJcblxyXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogaWNvbiBmb3IgZGF0ZSBzZWxlY3RvciBidXR0b25cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBJY29uU2VsZWN0b3IoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pY29uU2VydmljZS5UaW1lQ29tcG9uZW50U2VsZWN0b3JJY29uO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWF4IFRpbWVcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgbWF4dGltZSh2OiBzdHJpbmcgfCBEYXRlIHwgbnVsbCkge1xyXG4gICAgICAgIGxldCB0aW1lID0gdGhpcy5tb21lbnQodiwgW3RoaXMuVElNRUZPUk1BVF0sIHRydWUpO1xyXG5cclxuICAgICAgICB0aW1lID0gdGhpcy5Nb2RpZnlQYXJzZWREYXRlVGltZVZhbHVlKHRpbWUpO1xyXG5cclxuICAgICAgICBpZiAodGltZS5pc1ZhbGlkKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5fbWF4dGltZSA9IHN1cGVyLmdldERhdGUodGltZSkudG9EYXRlKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fbWF4dGltZSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWluIFRpbWVcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgbWludGltZSh2OiBzdHJpbmcgfCBEYXRlIHwgbnVsbCkge1xyXG4gICAgICAgIGxldCB0aW1lID0gdGhpcy5tb21lbnQodiwgW3RoaXMuVElNRUZPUk1BVF0sIHRydWUpO1xyXG5cclxuICAgICAgICB0aW1lID0gdGhpcy5Nb2RpZnlQYXJzZWREYXRlVGltZVZhbHVlKHRpbWUpO1xyXG5cclxuICAgICAgICBpZiAodGltZS5pc1ZhbGlkKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5fbWludGltZSA9IHN1cGVyLmdldERhdGUodGltZSkudG9EYXRlKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fbWludGltZSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcclxuXHJcbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBNZXRob2RzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2RlIGVyZ2lidCBEYXR1bS1Gb3JtYXQgdm9tIFN0cmluZ1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgR2V0RGF0ZVRpbWVGb3JtYXRTdHJpbmcoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5USU1FRk9STUFUO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kZSBlcmdpYnQgRGF0dW0gLSBNb21lbnRcclxuICAgICAqL1xyXG4gICAgcHVibGljIE1vZGlmeVBhcnNlZERhdGVUaW1lVmFsdWUodjogbW9tZW50Xy5Nb21lbnQpOiBtb21lbnRfLk1vbWVudCB7XHJcbiAgICAgICAgdi5kYXRlKDEpO1xyXG4gICAgICAgIHYubW9udGgoMCk7XHJcbiAgICAgICAgdi55ZWFyKDE5MDApO1xyXG4gICAgICAgIHJldHVybiB2O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSG9zdExpc3RlbmVyXHJcbiAgICAgKi9cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQudGFyZ2V0J10pXHJcbiAgICAvKipcclxuICAgICAqIENsaWNrIEV2ZW50XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvbkNsaWNrKHRhcmdldEVsZW1lbnQpIHtcclxuICAgICAgICBpZiAoIXRoaXMucGlja2VyY29udGFpbmVyKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGNsaWNrZWRJbnNpZGVDb250YWluZXIgPSB0aGlzLnBpY2tlcmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldEVsZW1lbnQpO1xyXG4gICAgICAgIGNvbnN0IGNsaWNrZWRJbnNpZGVSZWZlcmVuY2UgPSB0aGlzLnBpY2tlcmJ1dHRvbi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldEVsZW1lbnQpO1xyXG4gICAgICAgIGlmICghY2xpY2tlZEluc2lkZUNvbnRhaW5lciAmJiAhY2xpY2tlZEluc2lkZVJlZmVyZW5jZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9zaG93c2VsZWN0b3IgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBaZWlndCBEYXRlIFNlbGVjdG9yIGFuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzaG93VGltZVNlbGVjdG9yKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIFRvdWNoIEV2ZW50IGF1c2zDtnNlblxyXG4gICAgICAgIHRoaXMub25Ub3VjaCgpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fc2hvd3NlbGVjdG9yKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3Nob3dzZWxlY3RvciA9IGZhbHNlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3Nob3dzZWxlY3RvciA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGltZSBTZWxlY3RvclxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdGltZXNlbGVjdCh2OiBhbnkpIHtcclxuICAgICAgICBpZiAodi5kYXRlID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVTdHJpbmcoJycpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm1vbWVudCh2LmRhdGUpLnV0YygpLnRvRGF0ZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fc2hvd3NlbGVjdG9yID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYWxpZGF0b3JcclxuICAgICAqL1xyXG4gICAgcHVibGljIHZhbGlkYXRlRGF0YShjOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICAgICAgbGV0IGVycm9yOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgICAgIGVycm9yID0gc3VwZXIudmFsaWRhdGVEYXRhKGMpO1xyXG5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGVycm9yID09PSBudWxsICYmXHJcbiAgICAgICAgICAgIGMudmFsdWUgIT09IG51bGwgJiZcclxuICAgICAgICAgICAgYy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgICAgIGMudmFsdWUgIT09ICcnICYmXHJcbiAgICAgICAgICAgIHRoaXMuX21pbnRpbWUgIT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAgICB0aGlzLl9taW50aW1lICE9PSBudWxsXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGVycm9yID0gVmFsaWRhdGlvbi5taW5UaW1lKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fbWludGltZSxcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VtaW50aW1lLFxyXG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9ubWVzc2FnZXN1bW1hcnltaW50aW1lXHJcbiAgICAgICAgICAgICkoYyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGVycm9yID09PSBudWxsICYmXHJcbiAgICAgICAgICAgIGMudmFsdWUgIT09IG51bGwgJiZcclxuICAgICAgICAgICAgYy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgICAgIGMudmFsdWUgIT09ICcnICYmXHJcbiAgICAgICAgICAgIHRoaXMuX21heHRpbWUgIT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAgICB0aGlzLl9tYXh0aW1lICE9PSBudWxsXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGVycm9yID0gVmFsaWRhdGlvbi5tYXhUaW1lKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fbWF4dGltZSxcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VtYXh0aW1lLFxyXG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9ubWVzc2FnZXN1bW1hcnltYXh0aW1lXHJcbiAgICAgICAgICAgICkoYyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZXJyb3I7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgTWV0aG9kc1xyXG59XHJcbiJdfQ==
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import { ChangeDetectorRef, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild,
|
|
1
|
+
import { ChangeDetectorRef, Directive, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild, } from '@angular/core';
|
|
2
2
|
/**
|
|
3
3
|
* Base Komponente für Dialog
|
|
4
4
|
*/
|
|
5
5
|
export class SacDialogCommon {
|
|
6
|
-
// #endregion
|
|
7
|
-
// #region Constructor
|
|
8
6
|
/**
|
|
9
7
|
* Konstruktor
|
|
10
8
|
* Inject des Formulars
|
|
@@ -21,11 +19,6 @@ export class SacDialogCommon {
|
|
|
21
19
|
* Die akzeptabel keywordssind: 'small', 'large', 'extralarge', 'medium', ''.
|
|
22
20
|
*/
|
|
23
21
|
this._size = '';
|
|
24
|
-
// #region Properties
|
|
25
|
-
/**
|
|
26
|
-
* Input Property. Erhält den Title des Dialog. Default Value: 'Dialog'.
|
|
27
|
-
*/
|
|
28
|
-
this.title = 'Dialog';
|
|
29
22
|
/**
|
|
30
23
|
* Das input property akzeptiert boolen Wert. Definiert ob das Dialog darf durch ESC geschlossen werden. Default ist true.
|
|
31
24
|
*/
|
|
@@ -34,26 +27,22 @@ export class SacDialogCommon {
|
|
|
34
27
|
* Das input property akzeptiert boolen Wert. Definiert ob das Dialog darf durch click außerhalb des Dialog-Fenster geschlossen werden. Default ist true.
|
|
35
28
|
*/
|
|
36
29
|
this.backdrop = true;
|
|
37
|
-
/**
|
|
38
|
-
* Input Property. Erhält den Namen des Dialog - benutzt für das ID. Default Value: ''
|
|
39
|
-
*/
|
|
40
|
-
this.name = '';
|
|
41
30
|
/**
|
|
42
31
|
* Steuert ob im Header des Dialogs ein Button angezeigt wird.
|
|
43
32
|
*/
|
|
44
33
|
this.closebutton = true;
|
|
45
34
|
/**
|
|
46
|
-
*
|
|
35
|
+
* Output Emitter. Wird aufgerufen, wenn das Wert des _show property geändert ist - damait das Dialog geöfnet/geschlossen wird.
|
|
47
36
|
*/
|
|
48
|
-
this.
|
|
37
|
+
this.isvisibleChange = new EventEmitter();
|
|
49
38
|
/**
|
|
50
|
-
*
|
|
39
|
+
* Input Property. Erhält den Namen des Dialog - benutzt für das ID. Default Value: ''
|
|
51
40
|
*/
|
|
52
|
-
this.
|
|
41
|
+
this.name = '';
|
|
53
42
|
/**
|
|
54
|
-
*
|
|
43
|
+
* Input Property. Erhält den Title des Dialog. Default Value: 'Dialog'.
|
|
55
44
|
*/
|
|
56
|
-
this.
|
|
45
|
+
this.title = 'Dialog';
|
|
57
46
|
}
|
|
58
47
|
/**
|
|
59
48
|
* Implementation als Setter, da mit ngIf das Element bei Unsichtbarkeit UNDEFINED ist.
|
|
@@ -62,14 +51,10 @@ export class SacDialogCommon {
|
|
|
62
51
|
this.dialogElement = content;
|
|
63
52
|
}
|
|
64
53
|
/**
|
|
65
|
-
*
|
|
66
|
-
* case insensitive.
|
|
67
|
-
* Die akzeptabel default-size-Klassen sind: 'small', 'large', 'extralarge', 'medium', ''.
|
|
68
|
-
* Wenn size ist NICHT gesetzt (oder 'medium' oder ''), default ist in medium size: max-width 500px.
|
|
54
|
+
* Getter. Ergibt das boolen Wert des _show property
|
|
69
55
|
*/
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
this._size = v;
|
|
56
|
+
get isvisible() {
|
|
57
|
+
return this._show;
|
|
73
58
|
}
|
|
74
59
|
/**
|
|
75
60
|
* Setter. Erhält das boolen Wert des _show property
|
|
@@ -90,77 +75,40 @@ export class SacDialogCommon {
|
|
|
90
75
|
this._show = v;
|
|
91
76
|
}
|
|
92
77
|
/**
|
|
93
|
-
*
|
|
78
|
+
* Das Input akzeptiert sowohl default size-css-Klassen als auch custom Klassen.
|
|
79
|
+
* case insensitive.
|
|
80
|
+
* Die akzeptabel default-size-Klassen sind: 'small', 'large', 'extralarge', 'medium', ''.
|
|
81
|
+
* Wenn size ist NICHT gesetzt (oder 'medium' oder ''), default ist in medium size: max-width 500px.
|
|
94
82
|
*/
|
|
95
|
-
|
|
96
|
-
|
|
83
|
+
set size(v) {
|
|
84
|
+
this._size = v;
|
|
97
85
|
}
|
|
98
86
|
/**
|
|
99
|
-
*
|
|
87
|
+
* Getter for ChangeDetector.
|
|
100
88
|
*/
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
switch (this._size) {
|
|
104
|
-
case 'small':
|
|
105
|
-
result = true;
|
|
106
|
-
break;
|
|
107
|
-
case 'medium':
|
|
108
|
-
result = true;
|
|
109
|
-
break;
|
|
110
|
-
case 'large':
|
|
111
|
-
result = true;
|
|
112
|
-
break;
|
|
113
|
-
case 'extralarge':
|
|
114
|
-
result = true;
|
|
115
|
-
break;
|
|
116
|
-
case '':
|
|
117
|
-
result = true;
|
|
118
|
-
break;
|
|
119
|
-
}
|
|
120
|
-
return result;
|
|
89
|
+
get ChangeDetector() {
|
|
90
|
+
return this.cdRef;
|
|
121
91
|
}
|
|
122
|
-
// #endregion
|
|
123
92
|
/**
|
|
124
|
-
* Methode
|
|
93
|
+
* Die Methode setz den Wert des _show property auf false
|
|
125
94
|
*/
|
|
126
|
-
|
|
95
|
+
hide() {
|
|
127
96
|
if (this.hasSetBodyTag && document.body.classList.contains('modal-open')) {
|
|
128
97
|
document.body.classList.remove('modal-open');
|
|
129
98
|
this.hasSetBodyTag = false;
|
|
130
99
|
}
|
|
131
|
-
|
|
132
|
-
// #region Methods
|
|
133
|
-
/**
|
|
134
|
-
* Die Methode setz den Wert des _show property auf true
|
|
135
|
-
*/
|
|
136
|
-
show() {
|
|
137
|
-
this._show = true;
|
|
138
|
-
if (!this.hasSetBodyTag &&
|
|
139
|
-
!document.body.classList.contains('modal-open')) {
|
|
140
|
-
document.body.classList.add('modal-open');
|
|
141
|
-
this.hasSetBodyTag = true;
|
|
142
|
-
}
|
|
100
|
+
this._show = false;
|
|
143
101
|
this.isvisibleChange.emit(this._show);
|
|
144
102
|
}
|
|
145
103
|
/**
|
|
146
|
-
*
|
|
104
|
+
* Methode wenn Componente entfernt wird
|
|
147
105
|
*/
|
|
148
|
-
|
|
106
|
+
ngOnDestroy() {
|
|
149
107
|
if (this.hasSetBodyTag && document.body.classList.contains('modal-open')) {
|
|
150
108
|
document.body.classList.remove('modal-open');
|
|
151
109
|
this.hasSetBodyTag = false;
|
|
152
110
|
}
|
|
153
|
-
this._show = false;
|
|
154
|
-
this.isvisibleChange.emit(this._show);
|
|
155
111
|
}
|
|
156
|
-
/**
|
|
157
|
-
* Getter for ChangeDetector.
|
|
158
|
-
*/
|
|
159
|
-
get ChangeDetector() {
|
|
160
|
-
return this.cdRef;
|
|
161
|
-
}
|
|
162
|
-
// #endregion
|
|
163
|
-
// #region Host Actions
|
|
164
112
|
/**
|
|
165
113
|
* Allow Close by Click outside Dialog
|
|
166
114
|
*/
|
|
@@ -182,6 +130,18 @@ export class SacDialogCommon {
|
|
|
182
130
|
this.hide();
|
|
183
131
|
}
|
|
184
132
|
}
|
|
133
|
+
/**
|
|
134
|
+
* Die Methode setz den Wert des _show property auf true
|
|
135
|
+
*/
|
|
136
|
+
show() {
|
|
137
|
+
this._show = true;
|
|
138
|
+
if (!this.hasSetBodyTag &&
|
|
139
|
+
!document.body.classList.contains('modal-open')) {
|
|
140
|
+
document.body.classList.add('modal-open');
|
|
141
|
+
this.hasSetBodyTag = true;
|
|
142
|
+
}
|
|
143
|
+
this.isvisibleChange.emit(this._show);
|
|
144
|
+
}
|
|
185
145
|
}
|
|
186
146
|
SacDialogCommon.decorators = [
|
|
187
147
|
{ type: Directive }
|
|
@@ -190,18 +150,16 @@ SacDialogCommon.ctorParameters = () => [
|
|
|
190
150
|
{ type: ChangeDetectorRef }
|
|
191
151
|
];
|
|
192
152
|
SacDialogCommon.propDecorators = {
|
|
193
|
-
dialogElementSetter: [{ type: ViewChild, args: ['dialog', { static: false },] }],
|
|
194
|
-
title: [{ type: Input }],
|
|
195
153
|
allowesc: [{ type: Input }],
|
|
196
154
|
backdrop: [{ type: Input }],
|
|
197
|
-
name: [{ type: Input }],
|
|
198
155
|
closebutton: [{ type: Input }],
|
|
199
|
-
width: [{ type: Input }],
|
|
200
|
-
height: [{ type: Input }],
|
|
201
|
-
size: [{ type: Input }],
|
|
202
156
|
isvisibleChange: [{ type: Output }],
|
|
157
|
+
name: [{ type: Input }],
|
|
158
|
+
title: [{ type: Input }],
|
|
159
|
+
dialogElementSetter: [{ type: ViewChild, args: ['dialog', { static: false },] }],
|
|
203
160
|
isvisible: [{ type: Input }],
|
|
161
|
+
size: [{ type: Input }],
|
|
204
162
|
onClick: [{ type: HostListener, args: ['click', ['$event'],] }],
|
|
205
163
|
onKeydownHandler: [{ type: HostListener, args: ['document:keydown', ['$event'],] }]
|
|
206
164
|
};
|
|
207
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2pla3RlL3NpbXBsZWFuZ3VsYXJjb250cm9scy1uZzEwL2NoLmpuZXR3b3JrLnNhYy1jb250cm9scy9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy8iLCJzb3VyY2VzIjpbImNvbnRyb2xzL2RpYWxvZy9kaWFsb2cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFFdkI7O0dBRUc7QUFFSCxNQUFNLE9BQU8sZUFBZTtJQXFKMUIsYUFBYTtJQUViLHNCQUFzQjtJQUV0Qjs7O09BR0c7SUFDSCxZQUFvQixLQUF3QjtRQUF4QixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQXZKcEMsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFVOUI7O1dBRUc7UUFDSCxVQUFLLEdBQVksS0FBSyxDQUFDO1FBRXZCOzs7V0FHRztRQUNILFVBQUssR0FBVyxFQUFFLENBQUM7UUFFbkIscUJBQXFCO1FBRXJCOztXQUVHO1FBRUksVUFBSyxHQUFXLFFBQVEsQ0FBQztRQUVoQzs7V0FFRztRQUVJLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFFaEM7O1dBRUc7UUFFSSxhQUFRLEdBQVksSUFBSSxDQUFDO1FBRWhDOztXQUVHO1FBRUksU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUV6Qjs7V0FFRztRQUVJLGdCQUFXLEdBQVksSUFBSSxDQUFDO1FBRW5DOztXQUVHO1FBRUksVUFBSyxHQUFXLElBQUksQ0FBQztRQUU1Qjs7V0FFRztRQUVJLFdBQU0sR0FBVyxJQUFJLENBQUM7UUFjN0I7O1dBRUc7UUFFSCxvQkFBZSxHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO0lBc0V0QixDQUFDO0lBckpoRDs7T0FFRztJQUNILElBQ0ksbUJBQW1CLENBQUMsT0FB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S0FBSzs4QkFTTCxNQUFNO3dCQU1OLEtBQUs7c0JBNkhMLFlBQVksU0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7K0JBZ0JoQyxZQUFZLFNBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIERpcmVjdGl2ZSxcclxuICBPbkRlc3Ryb3ksXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vKipcclxuICogQmFzZSBLb21wb25lbnRlIGbDvHIgRGlhbG9nXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGNsYXNzIFNhY0RpYWxvZ0NvbW1vbiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgLyoqXHJcbiAgICogTmFtZSBkZXMgQ29udGFpbmVycyBmw7xyIGRlbiBEaWFsb2dcclxuICAgKi9cclxuICBkaWFsb2dFbGVtZW50OiBFbGVtZW50UmVmO1xyXG5cclxuICBwcml2YXRlIGhhc1NldEJvZHlUYWcgPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogSW1wbGVtZW50YXRpb24gYWxzIFNldHRlciwgZGEgbWl0IG5nSWYgZGFzIEVsZW1lbnQgYmVpIFVuc2ljaHRiYXJrZWl0IFVOREVGSU5FRCBpc3QuXHJcbiAgICovXHJcbiAgQFZpZXdDaGlsZCgnZGlhbG9nJywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgc2V0IGRpYWxvZ0VsZW1lbnRTZXR0ZXIoY29udGVudDogRWxlbWVudFJlZikge1xyXG4gICAgdGhpcy5kaWFsb2dFbGVtZW50ID0gY29udGVudDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJvb2xlYW4gUHJvcGVydHkgZGVmaW5pZXJ0IG9iIGRhcyBEaWFsb2cgYW5nZXplaWd0IHdpcmRcclxuICAgKi9cclxuICBfc2hvdzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBEYXMgcHJvcGVydHkgZW50aGllbHQgKHdlbm4gw7xiZXJoYXVwdCBnZXNldHp0KSBlbnR3ZWRlciBrZXl3b3JkcyBmw7xyIHNpemluZyBvZGVyIGN1c3RvbSBjc3MgS2xhc3Nlbi5cclxuICAgKiBEaWUgYWt6ZXB0YWJlbCBrZXl3b3Jkc3NpbmQ6ICdzbWFsbCcsICdsYXJnZScsICdleHRyYWxhcmdlJywgJ21lZGl1bScsICcnLlxyXG4gICAqL1xyXG4gIF9zaXplOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXHJcblxyXG4gIC8qKlxyXG4gICAqIElucHV0IFByb3BlcnR5LiBFcmjDpGx0IGRlbiBUaXRsZSBkZXMgRGlhbG9nLiBEZWZhdWx0IFZhbHVlOiAnRGlhbG9nJy5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyB0aXRsZTogc3RyaW5nID0gJ0RpYWxvZyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIERhcyBpbnB1dCBwcm9wZXJ0eSBha3plcHRpZXJ0IGJvb2xlbiBXZXJ0LiBEZWZpbmllcnQgb2IgZGFzIERpYWxvZyBkYXJmIGR1cmNoIEVTQyBnZXNjaGxvc3NlbiB3ZXJkZW4uIERlZmF1bHQgaXN0IHRydWUuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgYWxsb3dlc2M6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvKipcclxuICAgKiBEYXMgaW5wdXQgcHJvcGVydHkgYWt6ZXB0aWVydCBib29sZW4gV2VydC4gRGVmaW5pZXJ0IG9iIGRhcyBEaWFsb2cgZGFyZiBkdXJjaCBjbGljayBhdcOfZXJoYWxiIGRlcyBEaWFsb2ctRmVuc3RlciBnZXNjaGxvc3NlbiB3ZXJkZW4uIERlZmF1bHQgaXN0IHRydWUuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgYmFja2Ryb3A6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvKipcclxuICAgKiBJbnB1dCBQcm9wZXJ0eS4gRXJow6RsdCBkZW4gTmFtZW4gZGVzIERpYWxvZyAtIGJlbnV0enQgZsO8ciBkYXMgSUQuIERlZmF1bHQgVmFsdWU6ICcnXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbmFtZTogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0ZXVlcnQgb2IgaW0gSGVhZGVyIGRlcyBEaWFsb2dzIGVpbiBCdXR0b24gYW5nZXplaWd0IHdpcmQuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY2xvc2VidXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvKipcclxuICAgKiBJbnB1dCBQcm9wZXJ0eS4gRXJow6RsdCBkaWUgQnJlaXRlIGRlcyBEaWFsb2dcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyB3aWR0aDogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogRGVmaW5pZXJ0IGVpbmUgZmVzdGUgSMO2aGUgYmVpbSBEaWFsb2cuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaGVpZ2h0OiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICAvKipcclxuICAgKiBEYXMgSW5wdXQgYWt6ZXB0aWVydCBzb3dvaGwgZGVmYXVsdCBzaXplLWNzcy1LbGFzc2VuIGFscyBhdWNoIGN1c3RvbSBLbGFzc2VuLlxyXG4gICAqIGNhc2UgaW5zZW5zaXRpdmUuXHJcbiAgICogRGllIGFremVwdGFiZWwgZGVmYXVsdC1zaXplLUtsYXNzZW4gc2luZDogJ3NtYWxsJywgJ2xhcmdlJywgJ2V4dHJhbGFyZ2UnLCAnbWVkaXVtJywgJycuXHJcbiAgICogV2VubiBzaXplIGlzdCBOSUNIVCBnZXNldHp0IChvZGVyICdtZWRpdW0nIG9kZXIgJycpLCBkZWZhdWx0IGlzdCBpbiBtZWRpdW0gc2l6ZTogbWF4LXdpZHRoIDUwMHB4LlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHNpemUodjogc3RyaW5nKSB7XHJcbiAgICB2ID0gdi50b0xvd2VyQ2FzZSgpO1xyXG4gICAgdGhpcy5fc2l6ZSA9IHY7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPdXRwdXQgRW1pdHRlci4gV2lyZCBhdWZnZXJ1ZmVuLCB3ZW5uIGRhcyBXZXJ0IGRlcyBfc2hvdyBwcm9wZXJ0eSBnZcOkbmRlcnQgaXN0IC0gZGFtYWl0IGRhcyBEaWFsb2cgZ2XDtmZuZXQvZ2VzY2hsb3NzZW4gd2lyZC5cclxuICAgKi9cclxuICBAT3V0cHV0KClcclxuICBpc3Zpc2libGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2V0dGVyLiBFcmjDpGx0IGRhcyBib29sZW4gV2VydCBkZXMgX3Nob3cgcHJvcGVydHlcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBpc3Zpc2libGUodjogYm9vbGVhbikge1xyXG4gICAgaWYgKFxyXG4gICAgICB2ICYmXHJcbiAgICAgICF0aGlzLmhhc1NldEJvZHlUYWcgJiZcclxuICAgICAgIWRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCdtb2RhbC1vcGVuJylcclxuICAgICkge1xyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ21vZGFsLW9wZW4nKTtcclxuICAgICAgdGhpcy5oYXNTZXRCb2R5VGFnID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgICF2ICYmXHJcbiAgICAgIHRoaXMuaGFzU2V0Qm9keVRhZyAmJlxyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucygnbW9kYWwtb3BlbicpXHJcbiAgICApIHtcclxuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdtb2RhbC1vcGVuJyk7XHJcbiAgICAgIHRoaXMuaGFzU2V0Qm9keVRhZyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3Nob3cgPSB2O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0dGVyLiBFcmdpYnQgZGFzIGJvb2xlbiBXZXJ0IGRlcyBfc2hvdyBwcm9wZXJ0eVxyXG4gICAqL1xyXG4gIGdldCBpc3Zpc2libGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2hvdztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERpZSBGdW5rdGlvbiBwcsO8ZnQgb2IgZXMgZWluIGRlZmF1bHQgY3NzIGNsYXNzZSBmw7xyIFNpemUgZGVzIERpYWxvZyBkdXJjaCBkZW4gc2l6ZSBJbnB1dCBnZXNldHp0IHd1cmRlLlxyXG4gICAqL1xyXG4gIGlzc2V0ZGVmYXVsdHNpemUoKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgcmVzdWx0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLl9zaXplKSB7XHJcbiAgICAgIGNhc2UgJ3NtYWxsJzpcclxuICAgICAgICByZXN1bHQgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdtZWRpdW0nOlxyXG4gICAgICAgIHJlc3VsdCA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2xhcmdlJzpcclxuICAgICAgICByZXN1bHQgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdleHRyYWxhcmdlJzpcclxuICAgICAgICByZXN1bHQgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICcnOlxyXG4gICAgICAgIHJlc3VsdCA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb25cclxuXHJcbiAgLy8gI3JlZ2lvbiBDb25zdHJ1Y3RvclxyXG5cclxuICAvKipcclxuICAgKiBLb25zdHJ1a3RvclxyXG4gICAqIEluamVjdCBkZXMgRm9ybXVsYXJzXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gIC8vICNlbmRyZWdpb25cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0aG9kZSB3ZW5uIENvbXBvbmVudGUgZW50ZmVybnQgd2lyZFxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaGFzU2V0Qm9keVRhZyAmJiBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucygnbW9kYWwtb3BlbicpKSB7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnbW9kYWwtb3BlbicpO1xyXG4gICAgICB0aGlzLmhhc1NldEJvZHlUYWcgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vICNyZWdpb24gTWV0aG9kc1xyXG5cclxuICAvKipcclxuICAgKiBEaWUgTWV0aG9kZSBzZXR6IGRlbiBXZXJ0IGRlcyBfc2hvdyBwcm9wZXJ0eSBhdWYgdHJ1ZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzaG93KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc2hvdyA9IHRydWU7XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5oYXNTZXRCb2R5VGFnICYmXHJcbiAgICAgICFkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucygnbW9kYWwtb3BlbicpXHJcbiAgICApIHtcclxuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdtb2RhbC1vcGVuJyk7XHJcbiAgICAgIHRoaXMuaGFzU2V0Qm9keVRhZyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pc3Zpc2libGVDaGFuZ2UuZW1pdCh0aGlzLl9zaG93KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERpZSBNZXRob2RlIHNldHogZGVuIFdlcnQgZGVzIF9zaG93IHByb3BlcnR5IGF1ZiBmYWxzZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBoaWRlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaGFzU2V0Qm9keVRhZyAmJiBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucygnbW9kYWwtb3BlbicpKSB7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnbW9kYWwtb3BlbicpO1xyXG4gICAgICB0aGlzLmhhc1NldEJvZHlUYWcgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9zaG93ID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzdmlzaWJsZUNoYW5nZS5lbWl0KHRoaXMuX3Nob3cpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0dGVyIGZvciBDaGFuZ2VEZXRlY3Rvci5cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZ2V0IENoYW5nZURldGVjdG9yKCk6IENoYW5nZURldGVjdG9yUmVmIHtcclxuICAgIHJldHVybiB0aGlzLmNkUmVmO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvblxyXG5cclxuICAvLyAjcmVnaW9uIEhvc3QgQWN0aW9uc1xyXG5cclxuICAvKipcclxuICAgKiBBbGxvdyBDbG9zZSBieSBDbGljayBvdXRzaWRlIERpYWxvZ1xyXG4gICAqL1xyXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcclxuICBvbkNsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5hbGxvd2VzYyA9PT0gZmFsc2UgfHxcclxuICAgICAgKHRoaXMuZGlhbG9nRWxlbWVudCAhPT0gbnVsbCAmJlxyXG4gICAgICAgIHRoaXMuZGlhbG9nRWxlbWVudCAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgZXZlbnQudGFyZ2V0ICE9PSB0aGlzLmRpYWxvZ0VsZW1lbnQubmF0aXZlRWxlbWVudClcclxuICAgICkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmhpZGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFsbG93IENsb3NlIGJ5IEVTQ1xyXG4gICAqL1xyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxyXG4gIG9uS2V5ZG93bkhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGNvbnN0IEVTQ0FQRV9LRVlDT0RFID0gJ0VzY2FwZSc7XHJcblxyXG4gICAgaWYgKHRoaXMuYWxsb3dlc2MgPT09IHRydWUgJiYgZXZlbnQua2V5ID09PSBFU0NBUEVfS0VZQ09ERSkge1xyXG4gICAgICB0aGlzLmhpZGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb25cclxufVxyXG4iXX0=
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2pla3RlL3NpbXBsZWFuZ3VsYXJjb250cm9scy1uZzEwL2NoLmpuZXR3b3JrLnNhYy1jb250cm9scy9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy8iLCJzb3VyY2VzIjpbImNvbnRyb2xzL2RpYWxvZy9kaWFsb2cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkI7O0dBRUc7QUFFSCxNQUFNLE9BQU8sZUFBZTtJQXVEMUI7OztPQUdHO0lBQ0gsWUFBb0IsS0FBd0I7UUFBeEIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUExRHBDLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBRTlCOztXQUVHO1FBQ0ksVUFBSyxHQUFZLEtBQUssQ0FBQztRQUU5Qjs7O1dBR0c7UUFDSSxVQUFLLEdBQXFELEVBQUUsQ0FBQztRQUVwRTs7V0FFRztRQUVJLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFFaEM7O1dBRUc7UUFFSSxhQUFRLEdBQVksSUFBSSxDQUFDO1FBRWhDOztXQUVHO1FBRUksZ0JBQVcsR0FBWSxJQUFJLENBQUM7UUFPbkM7O1dBRUc7UUFFSSxvQkFBZSxHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO1FBRTVFOztXQUVHO1FBRUksU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUV6Qjs7V0FFRztRQUVJLFVBQUssR0FBVyxRQUFRLENBQUM7SUFNZSxDQUFDO0lBRWhEOztPQUVHO0lBQ0gsSUFDVyxtQkFBbUIsQ0FBQyxPQUFtQjtRQUNoRCxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BC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SSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7U0FDM0I7UUFFRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQzs7O1lBM0xGLFNBQVM7OztZQWRSLGlCQUFpQjs7O3VCQWdDaEIsS0FBSzt1QkFNTCxLQUFLOzBCQU1MLEtBQUs7OEJBV0wsTUFBTTttQkFNTixLQUFLO29CQU1MLEtBQUs7a0NBWUwsU0FBUyxTQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7d0JBZXJDLEtBQUs7bUJBNkJMLEtBQUs7c0JBc0NMLFlBQVksU0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7K0JBZ0JoQyxZQUFZLFNBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIERpcmVjdGl2ZSxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vKipcclxuICogQmFzZSBLb21wb25lbnRlIGbDvHIgRGlhbG9nXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGNsYXNzIFNhY0RpYWxvZ0NvbW1vbiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBoYXNTZXRCb2R5VGFnID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIEJvb2xlYW4gUHJvcGVydHkgZGVmaW5pZXJ0IG9iIGRhcyBEaWFsb2cgYW5nZXplaWd0IHdpcmRcclxuICAgKi9cclxuICBwdWJsaWMgX3Nob3c6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogRGFzIHByb3BlcnR5IGVudGhpZWx0ICh3ZW5uIMO8YmVyaGF1cHQgZ2VzZXR6dCkgZW50d2VkZXIga2V5d29yZHMgZsO8ciBzaXppbmcgb2RlciBjdXN0b20gY3NzIEtsYXNzZW4uXHJcbiAgICogRGllIGFremVwdGFiZWwga2V5d29yZHNzaW5kOiAnc21hbGwnLCAnbGFyZ2UnLCAnZXh0cmFsYXJnZScsICdtZWRpdW0nLCAnJy5cclxuICAgKi9cclxuICBwdWJsaWMgX3NpemU6ICdzbWFsbCcgfCAnbGFyZ2UnIHwgJ2V4dHJhbGFyZ2UnIHwgJ21lZGl1bScgfCAnJyA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBEYXMgaW5wdXQgcHJvcGVydHkgYWt6ZXB0aWVydCBib29sZW4gV2VydC4gRGVmaW5pZXJ0IG9iIGRhcyBEaWFsb2cgZGFyZiBkdXJjaCBFU0MgZ2VzY2hsb3NzZW4gd2VyZGVuLiBEZWZhdWx0IGlzdCB0cnVlLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGFsbG93ZXNjOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogRGFzIGlucHV0IHByb3BlcnR5IGFremVwdGllcnQgYm9vbGVuIFdlcnQuIERlZmluaWVydCBvYiBkYXMgRGlhbG9nIGRhcmYgZHVyY2ggY2xpY2sgYXXDn2VyaGFsYiBkZXMgRGlhbG9nLUZlbnN0ZXIgZ2VzY2hsb3NzZW4gd2VyZGVuLiBEZWZhdWx0IGlzdCB0cnVlLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGJhY2tkcm9wOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogU3RldWVydCBvYiBpbSBIZWFkZXIgZGVzIERpYWxvZ3MgZWluIEJ1dHRvbiBhbmdlemVpZ3Qgd2lyZC5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjbG9zZWJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hbWUgZGVzIENvbnRhaW5lcnMgZsO8ciBkZW4gRGlhbG9nXHJcbiAgICovXHJcbiAgcHVibGljIGRpYWxvZ0VsZW1lbnQ6IEVsZW1lbnRSZWY7XHJcblxyXG4gIC8qKlxyXG4gICAqIE91dHB1dCBFbWl0dGVyLiBXaXJkIGF1ZmdlcnVmZW4sIHdlbm4gZGFzIFdlcnQgZGVzIF9zaG93IHByb3BlcnR5IGdlw6RuZGVydCBpc3QgLSBkYW1haXQgZGFzIERpYWxvZyBnZcO2Zm5ldC9nZXNjaGxvc3NlbiB3aXJkLlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBpc3Zpc2libGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5wdXQgUHJvcGVydHkuIEVyaMOkbHQgZGVuIE5hbWVuIGRlcyBEaWFsb2cgLSBiZW51dHp0IGbDvHIgZGFzIElELiBEZWZhdWx0IFZhbHVlOiAnJ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIG5hbWU6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBJbnB1dCBQcm9wZXJ0eS4gRXJow6RsdCBkZW4gVGl0bGUgZGVzIERpYWxvZy4gRGVmYXVsdCBWYWx1ZTogJ0RpYWxvZycuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdGl0bGU6IHN0cmluZyA9ICdEaWFsb2cnO1xyXG5cclxuICAvKipcclxuICAgKiBLb25zdHJ1a3RvclxyXG4gICAqIEluamVjdCBkZXMgRm9ybXVsYXJzXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIEltcGxlbWVudGF0aW9uIGFscyBTZXR0ZXIsIGRhIG1pdCBuZ0lmIGRhcyBFbGVtZW50IGJlaSBVbnNpY2h0YmFya2VpdCBVTkRFRklORUQgaXN0LlxyXG4gICAqL1xyXG4gIEBWaWV3Q2hpbGQoJ2RpYWxvZycsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHB1YmxpYyBzZXQgZGlhbG9nRWxlbWVudFNldHRlcihjb250ZW50OiBFbGVtZW50UmVmKSB7XHJcbiAgICB0aGlzLmRpYWxvZ0VsZW1lbnQgPSBjb250ZW50O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0dGVyLiBFcmdpYnQgZGFzIGJvb2xlbiBXZXJ0IGRlcyBfc2hvdyBwcm9wZXJ0eVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgaXN2aXNpYmxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Nob3c7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXR0ZXIuIEVyaMOkbHQgZGFzIGJvb2xlbiBXZXJ0IGRlcyBfc2hvdyBwcm9wZXJ0eVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBpc3Zpc2libGUodjogYm9vbGVhbikge1xyXG4gICAgaWYgKFxyXG4gICAgICB2ICYmXHJcbiAgICAgICF0aGlzLmhhc1NldEJvZHlUYWcgJiZcclxuICAgICAgIWRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCdtb2RhbC1vcGVuJylcclxuICAgICkge1xyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ21vZGFsLW9wZW4nKTtcclxuICAgICAgdGhpcy5oYXNTZXRCb2R5VGFnID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgICF2ICYmXHJcbiAgICAgIHRoaXMuaGFzU2V0Qm9keVRhZyAmJlxyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucygnbW9kYWwtb3BlbicpXHJcbiAgICApIHtcclxuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdtb2RhbC1vcGVuJyk7XHJcbiAgICAgIHRoaXMuaGFzU2V0Qm9keVRhZyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3Nob3cgPSB2O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGFzIElucHV0IGFremVwdGllcnQgc293b2hsIGRlZmF1bHQgc2l6ZS1jc3MtS2xhc3NlbiBhbHMgYXVjaCBjdXN0b20gS2xhc3Nlbi5cclxuICAgKiBjYXNlIGluc2Vuc2l0aXZlLlxyXG4gICAqIERpZSBha3plcHRhYmVsIGRlZmF1bHQtc2l6ZS1LbGFzc2VuIHNpbmQ6ICdzbWFsbCcsICdsYXJnZScsICdleHRyYWxhcmdlJywgJ21lZGl1bScsICcnLlxyXG4gICAqIFdlbm4gc2l6ZSBpc3QgTklDSFQgZ2VzZXR6dCAob2RlciAnbWVkaXVtJyBvZGVyICcnKSwgZGVmYXVsdCBpc3QgaW4gbWVkaXVtIHNpemU6IG1heC13aWR0aCA1MDBweC5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgc2l6ZSh2OiAnc21hbGwnIHwgJ2xhcmdlJyB8ICdleHRyYWxhcmdlJyB8ICdtZWRpdW0nIHwgJycpIHtcclxuICAgIHRoaXMuX3NpemUgPSB2O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0dGVyIGZvciBDaGFuZ2VEZXRlY3Rvci5cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZ2V0IENoYW5nZURldGVjdG9yKCk6IENoYW5nZURldGVjdG9yUmVmIHtcclxuICAgIHJldHVybiB0aGlzLmNkUmVmO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGllIE1ldGhvZGUgc2V0eiBkZW4gV2VydCBkZXMgX3Nob3cgcHJvcGVydHkgYXVmIGZhbHNlXHJcbiAgICovXHJcbiAgcHVibGljIGhpZGUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5oYXNTZXRCb2R5VGFnICYmIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCdtb2RhbC1vcGVuJykpIHtcclxuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdtb2RhbC1vcGVuJyk7XHJcbiAgICAgIHRoaXMuaGFzU2V0Qm9keVRhZyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3Nob3cgPSBmYWxzZTtcclxuICAgIHRoaXMuaXN2aXNpYmxlQ2hhbmdlLmVtaXQodGhpcy5fc2hvdyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRob2RlIHdlbm4gQ29tcG9uZW50ZSBlbnRmZXJudCB3aXJkXHJcbiAgICovXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaGFzU2V0Qm9keVRhZyAmJiBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucygnbW9kYWwtb3BlbicpKSB7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnbW9kYWwtb3BlbicpO1xyXG4gICAgICB0aGlzLmhhc1NldEJvZHlUYWcgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFsbG93IENsb3NlIGJ5IENsaWNrIG91dHNpZGUgRGlhbG9nXHJcbiAgICovXHJcbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxyXG4gIHB1YmxpYyBvbkNsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5hbGxvd2VzYyA9PT0gZmFsc2UgfHxcclxuICAgICAgKHRoaXMuZGlhbG9nRWxlbWVudCAhPT0gbnVsbCAmJlxyXG4gICAgICAgIHRoaXMuZGlhbG9nRWxlbWVudCAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgZXZlbnQudGFyZ2V0ICE9PSB0aGlzLmRpYWxvZ0VsZW1lbnQubmF0aXZlRWxlbWVudClcclxuICAgICkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmhpZGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFsbG93IENsb3NlIGJ5IEVTQ1xyXG4gICAqL1xyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxyXG4gIHB1YmxpYyBvbktleWRvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBjb25zdCBFU0NBUEVfS0VZQ09ERSA9ICdFc2NhcGUnO1xyXG5cclxuICAgIGlmICh0aGlzLmFsbG93ZXNjID09PSB0cnVlICYmIGV2ZW50LmtleSA9PT0gRVNDQVBFX0tFWUNPREUpIHtcclxuICAgICAgdGhpcy5oaWRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEaWUgTWV0aG9kZSBzZXR6IGRlbiBXZXJ0IGRlcyBfc2hvdyBwcm9wZXJ0eSBhdWYgdHJ1ZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzaG93KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc2hvdyA9IHRydWU7XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5oYXNTZXRCb2R5VGFnICYmXHJcbiAgICAgICFkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucygnbW9kYWwtb3BlbicpXHJcbiAgICApIHtcclxuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdtb2RhbC1vcGVuJyk7XHJcbiAgICAgIHRoaXMuaGFzU2V0Qm9keVRhZyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pc3Zpc2libGVDaGFuZ2UuZW1pdCh0aGlzLl9zaG93KTtcclxuICB9XHJcbn1cclxuIl19
|