@norwegian/core-components 6.0.3 → 6.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/accordion/accordion.component.mjs +17 -12
- package/esm2022/lib/components/airport-select/airport-select-dropdown/airport-select-dropdown.component.mjs +1 -1
- package/esm2022/lib/components/airport-select/airport-select.component.mjs +13 -1
- package/esm2022/lib/components/autocomplete/autocomplete.component.mjs +7 -1
- package/esm2022/lib/components/backdrop/backdrop.component.mjs +3 -1
- package/esm2022/lib/components/box/box.component.mjs +4 -4
- package/esm2022/lib/components/button/button.component.mjs +5 -1
- package/esm2022/lib/components/checkbox/checkbox.component.mjs +3 -1
- package/esm2022/lib/components/chip/chip.component.mjs +2 -7
- package/esm2022/lib/components/container/container.component.mjs +1 -1
- package/esm2022/lib/components/continue/continue.component.mjs +6 -1
- package/esm2022/lib/components/cover/cover.component.mjs +1 -1
- package/esm2022/lib/components/datepicker/calendar/calendar.component.mjs +1 -1
- package/esm2022/lib/components/datepicker/datepicker.component.mjs +16 -1
- package/esm2022/lib/components/datepicker-combo/datepicker-combo.component.mjs +17 -1
- package/esm2022/lib/components/divider/divider.component.mjs +1 -1
- package/esm2022/lib/components/dropdown/dropdown.component.mjs +2 -1
- package/esm2022/lib/components/filter/filter.component.mjs +36 -2
- package/esm2022/lib/components/grid/grid.component.mjs +1 -1
- package/esm2022/lib/components/icon/icon.component.mjs +1 -1
- package/esm2022/lib/components/icon-list/icon-list.component.mjs +1 -1
- package/esm2022/lib/components/icon-list/icon-list.model.mjs +1 -1
- package/esm2022/lib/components/info/info.component.mjs +5 -4
- package/esm2022/lib/components/input/input.component.mjs +6 -1
- package/esm2022/lib/components/journey/journey.component.mjs +5 -7
- package/esm2022/lib/components/journey-availability/journey-availability.component.mjs +7 -5
- package/esm2022/lib/components/journey-availability-list/journey-availability-list.component.mjs +22 -25
- package/esm2022/lib/components/journey-selection/journey-selection.component.mjs +12 -4
- package/esm2022/lib/components/journey-stopover/journey-stopover.component.mjs +18 -20
- package/esm2022/lib/components/list/list.component.mjs +1 -1
- package/esm2022/lib/components/modal/modal.component.mjs +5 -7
- package/esm2022/lib/components/number-field/number-field.component.mjs +4 -2
- package/esm2022/lib/components/page-footer/page-footer.component.mjs +2 -4
- package/esm2022/lib/components/page-header/page-header.component.mjs +30 -12
- package/esm2022/lib/components/page-header/page-header.module.mjs +5 -4
- package/esm2022/lib/components/passenger-select/models/passengers.model.mjs +1 -1
- package/esm2022/lib/components/passenger-select/passenger-select.component.mjs +11 -7
- package/esm2022/lib/components/phone-number/phone-number.component.mjs +11 -15
- package/esm2022/lib/components/premium-toggle/premium-toggle.component.mjs +3 -4
- package/esm2022/lib/components/radio/radio.component.mjs +4 -2
- package/esm2022/lib/components/select/select.component.mjs +11 -7
- package/esm2022/lib/components/simple-list/simple-list.component.mjs +1 -1
- package/esm2022/lib/components/slide-toggle/slide-toggle.component.mjs +9 -5
- package/esm2022/lib/components/slider/slider.component.mjs +32 -18
- package/esm2022/lib/components/sort/sort.component.mjs +11 -7
- package/esm2022/lib/components/spinner/spinner.component.mjs +13 -18
- package/esm2022/lib/components/subsidy-discount/subsidy-discount.component.mjs +13 -7
- package/esm2022/lib/components/suggestions/suggestions.component.mjs +3 -2
- package/esm2022/lib/components/tab-group/tab-group.component.mjs +3 -2
- package/esm2022/lib/components/table/table.component.mjs +1 -3
- package/esm2022/lib/components/textarea/textarea.component.mjs +6 -1
- package/esm2022/lib/components/toggle/toggle.component.mjs +5 -5
- package/esm2022/lib/components/trip-summary/trip-summary.component.mjs +26 -31
- package/esm2022/lib/components/weather-icon/weather-icon.component.mjs +3 -2
- package/fesm2022/norwegian-core-components.mjs +371 -221
- package/fesm2022/norwegian-core-components.mjs.map +1 -1
- package/lib/components/accordion/accordion.component.d.ts +81 -78
- package/lib/components/airport-select/airport-select-dropdown/airport-select-dropdown.component.d.ts +2 -2
- package/lib/components/airport-select/airport-select.component.d.ts +38 -2
- package/lib/components/autocomplete/autocomplete.component.d.ts +15 -2
- package/lib/components/backdrop/backdrop.component.d.ts +3 -0
- package/lib/components/box/box.component.d.ts +13 -3
- package/lib/components/button/button.component.d.ts +26 -0
- package/lib/components/checkbox/checkbox.component.d.ts +18 -2
- package/lib/components/chip/chip.component.d.ts +5 -21
- package/lib/components/container/container.component.d.ts +6 -0
- package/lib/components/continue/continue.component.d.ts +14 -0
- package/lib/components/cover/cover.component.d.ts +13 -3
- package/lib/components/datepicker/calendar/calendar.component.d.ts +2 -2
- package/lib/components/datepicker/datepicker.component.d.ts +33 -2
- package/lib/components/datepicker-combo/datepicker-combo.component.d.ts +42 -0
- package/lib/components/divider/divider.component.d.ts +9 -0
- package/lib/components/dropdown/dropdown.component.d.ts +8 -0
- package/lib/components/filter/filter.component.d.ts +108 -2
- package/lib/components/grid/grid.component.d.ts +12 -0
- package/lib/components/icon/icon.component.d.ts +5 -8
- package/lib/components/icon-list/icon-list.component.d.ts +5 -0
- package/lib/components/icon-list/icon-list.model.d.ts +1 -0
- package/lib/components/info/info.component.d.ts +7 -18
- package/lib/components/input/input.component.d.ts +30 -5
- package/lib/components/journey/journey.component.d.ts +9 -16
- package/lib/components/journey-availability/journey-availability.component.d.ts +8 -8
- package/lib/components/journey-availability-list/journey-availability-list.component.d.ts +29 -34
- package/lib/components/journey-selection/journey-selection.component.d.ts +14 -3
- package/lib/components/journey-stopover/journey-stopover.component.d.ts +35 -43
- package/lib/components/list/list.component.d.ts +8 -0
- package/lib/components/modal/modal.component.d.ts +16 -34
- package/lib/components/number-field/number-field.component.d.ts +26 -12
- package/lib/components/page-footer/page-footer.component.d.ts +9 -16
- package/lib/components/page-header/page-header.component.d.ts +30 -15
- package/lib/components/page-header/page-header.module.d.ts +2 -1
- package/lib/components/passenger-select/models/passengers.model.d.ts +2 -2
- package/lib/components/passenger-select/passenger-select.component.d.ts +33 -18
- package/lib/components/phone-number/phone-number.component.d.ts +80 -108
- package/lib/components/premium-toggle/premium-toggle.component.d.ts +9 -13
- package/lib/components/radio/radio.component.d.ts +35 -18
- package/lib/components/select/select.component.d.ts +47 -29
- package/lib/components/simple-list/simple-list.component.d.ts +16 -8
- package/lib/components/slide-toggle/slide-toggle.component.d.ts +16 -9
- package/lib/components/slider/slider.component.d.ts +51 -28
- package/lib/components/sort/sort.component.d.ts +12 -7
- package/lib/components/spinner/spinner.component.d.ts +24 -37
- package/lib/components/subsidy-discount/subsidy-discount.component.d.ts +14 -7
- package/lib/components/suggestions/suggestions.component.d.ts +6 -3
- package/lib/components/tab-group/tab-group.component.d.ts +6 -3
- package/lib/components/table/table.component.d.ts +3 -8
- package/lib/components/textarea/textarea.component.d.ts +42 -20
- package/lib/components/toggle/toggle.component.d.ts +44 -68
- package/lib/components/trip-summary/trip-summary.component.d.ts +68 -82
- package/lib/components/weather-icon/weather-icon.component.d.ts +12 -6
- package/package.json +3 -3
|
@@ -15,9 +15,10 @@ let nextId = 0;
|
|
|
15
15
|
*/
|
|
16
16
|
export class SliderComponent extends NasComponentBase {
|
|
17
17
|
/**
|
|
18
|
+
* @property Input
|
|
18
19
|
* @description
|
|
19
20
|
* The value of the slider
|
|
20
|
-
|
|
21
|
+
*/
|
|
21
22
|
get value() {
|
|
22
23
|
return this.valueValue;
|
|
23
24
|
}
|
|
@@ -30,8 +31,9 @@ export class SliderComponent extends NasComponentBase {
|
|
|
30
31
|
this.valueChange.emit(value);
|
|
31
32
|
}
|
|
32
33
|
/**
|
|
33
|
-
|
|
34
|
-
|
|
34
|
+
* @property Input
|
|
35
|
+
* @description
|
|
36
|
+
* The selected minimum value of the range-slider
|
|
35
37
|
*/
|
|
36
38
|
get selectedMinValue() {
|
|
37
39
|
return this.rangeMinValue;
|
|
@@ -45,9 +47,10 @@ export class SliderComponent extends NasComponentBase {
|
|
|
45
47
|
this.selectedMinValueChange.emit(value);
|
|
46
48
|
}
|
|
47
49
|
/**
|
|
50
|
+
* @property Input
|
|
48
51
|
* @description
|
|
49
52
|
* The selected maximum value of the range-slider
|
|
50
|
-
|
|
53
|
+
*/
|
|
51
54
|
get selectedMaxValue() {
|
|
52
55
|
return this.rangeMaxValue;
|
|
53
56
|
}
|
|
@@ -60,8 +63,9 @@ export class SliderComponent extends NasComponentBase {
|
|
|
60
63
|
this.selectedMaxValueChange.emit(value);
|
|
61
64
|
}
|
|
62
65
|
/**
|
|
63
|
-
|
|
64
|
-
|
|
66
|
+
* @property Input
|
|
67
|
+
* @description
|
|
68
|
+
* The minimum difference of min and max range-slider.
|
|
65
69
|
*/
|
|
66
70
|
get minDiffRange() {
|
|
67
71
|
return this.minDifferenceRange;
|
|
@@ -73,9 +77,10 @@ export class SliderComponent extends NasComponentBase {
|
|
|
73
77
|
this.minDifferenceRange = Number(value);
|
|
74
78
|
}
|
|
75
79
|
/**
|
|
80
|
+
* @property Input
|
|
76
81
|
* @description
|
|
77
82
|
* The suffix/ending of the value that the slider can have.
|
|
78
|
-
|
|
83
|
+
*/
|
|
79
84
|
get suffix() {
|
|
80
85
|
if (this.suffixLabelValue) {
|
|
81
86
|
return this.suffixLabelValue;
|
|
@@ -88,9 +93,10 @@ export class SliderComponent extends NasComponentBase {
|
|
|
88
93
|
this.suffixLabelValue = value;
|
|
89
94
|
}
|
|
90
95
|
/**
|
|
96
|
+
* @property Input
|
|
91
97
|
* @description
|
|
92
98
|
* The minimum value that the slider can have. The default value is 0.
|
|
93
|
-
|
|
99
|
+
*/
|
|
94
100
|
get min() {
|
|
95
101
|
return this.minValue;
|
|
96
102
|
}
|
|
@@ -101,9 +107,10 @@ export class SliderComponent extends NasComponentBase {
|
|
|
101
107
|
this.minValue = value;
|
|
102
108
|
}
|
|
103
109
|
/**
|
|
110
|
+
* @property Input
|
|
104
111
|
* @description
|
|
105
112
|
* A custom label for the minimum value. The actual value is still specified by min input.
|
|
106
|
-
|
|
113
|
+
*/
|
|
107
114
|
get minLabel() {
|
|
108
115
|
if (this.minLabelValue) {
|
|
109
116
|
return this.minLabelValue;
|
|
@@ -116,9 +123,10 @@ export class SliderComponent extends NasComponentBase {
|
|
|
116
123
|
this.minLabelValue = value;
|
|
117
124
|
}
|
|
118
125
|
/**
|
|
126
|
+
* @property Input
|
|
119
127
|
* @description
|
|
120
128
|
* The maximum value that the slider can have. The default value is 100.
|
|
121
|
-
|
|
129
|
+
*/
|
|
122
130
|
get max() {
|
|
123
131
|
return this.maxValue;
|
|
124
132
|
}
|
|
@@ -129,9 +137,10 @@ export class SliderComponent extends NasComponentBase {
|
|
|
129
137
|
this.maxValue = value;
|
|
130
138
|
}
|
|
131
139
|
/**
|
|
140
|
+
* @property Input
|
|
132
141
|
* @description
|
|
133
142
|
* A custom label for the maximum value. The actual value is still specified by max input.
|
|
134
|
-
|
|
143
|
+
*/
|
|
135
144
|
get maxLabel() {
|
|
136
145
|
if (this.maxLabelValue) {
|
|
137
146
|
return this.maxLabelValue;
|
|
@@ -144,9 +153,10 @@ export class SliderComponent extends NasComponentBase {
|
|
|
144
153
|
this.maxLabelValue = value;
|
|
145
154
|
}
|
|
146
155
|
/**
|
|
156
|
+
* @property Input
|
|
147
157
|
* @description
|
|
148
158
|
* The values at which the thumb will snap
|
|
149
|
-
|
|
159
|
+
*/
|
|
150
160
|
get step() {
|
|
151
161
|
return this.stepValue;
|
|
152
162
|
}
|
|
@@ -157,9 +167,10 @@ export class SliderComponent extends NasComponentBase {
|
|
|
157
167
|
this.stepValue = Number(value);
|
|
158
168
|
}
|
|
159
169
|
/**
|
|
170
|
+
* @property Input
|
|
160
171
|
* @description
|
|
161
172
|
* Whether the component is disabled
|
|
162
|
-
|
|
173
|
+
*/
|
|
163
174
|
get disabled() {
|
|
164
175
|
return this.disabledValue;
|
|
165
176
|
}
|
|
@@ -210,18 +221,21 @@ export class SliderComponent extends NasComponentBase {
|
|
|
210
221
|
super('nas-slider');
|
|
211
222
|
this.cdr = cdr;
|
|
212
223
|
/**
|
|
224
|
+
* @property Output
|
|
213
225
|
* @description
|
|
214
226
|
* An event that is fired every time the silder value changes
|
|
215
|
-
|
|
227
|
+
*/
|
|
216
228
|
this.valueChange = new EventEmitter();
|
|
217
229
|
/**
|
|
230
|
+
* @property Output
|
|
218
231
|
* @description
|
|
219
232
|
* An event that is fired every time the silder minimum value changes
|
|
220
|
-
|
|
233
|
+
*/
|
|
221
234
|
this.selectedMinValueChange = new EventEmitter();
|
|
222
235
|
/**
|
|
223
|
-
|
|
224
|
-
|
|
236
|
+
* @property Output
|
|
237
|
+
* @description
|
|
238
|
+
* An event that is fired every time the silder maximum value changes
|
|
225
239
|
*/
|
|
226
240
|
this.selectedMaxValueChange = new EventEmitter();
|
|
227
241
|
this.isIEOrEdge = /msie\s|trident\/|edge\//i.test(window.navigator.userAgent);
|
|
@@ -498,4 +512,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
|
|
|
498
512
|
}], selectedMaxValueChange: [{
|
|
499
513
|
type: Output
|
|
500
514
|
}] } });
|
|
501
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2xpZGVyL3NsaWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3NsaWRlci9zbGlkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFzRCxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFKLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7OztBQUV0RSxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFFZjs7O0VBR0U7QUFNRixNQUFNLE9BQU8sZUFBZ0IsU0FBUSxnQkFBZ0I7SUE4Qm5EOzs7T0FHRztJQUNILElBQ0ksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsS0FBYTtRQUNyQixJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQzdCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7TUFHRTtJQUNGLElBQ0ksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBQ0QsSUFBSSxnQkFBZ0IsQ0FBQyxLQUFvQjtRQUN2QyxJQUFJLEtBQUss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QUFTO3VCQUFDLFVBQVU7Z0JBQ0UsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUNBLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUTtnQkFNVixFQUFFO3NCQUFWLEtBQUs7Z0JBTUcsS0FBSztzQkFBYixLQUFLO2dCQU1HLElBQUk7c0JBQVosS0FBSztnQkFNRyxLQUFLO3NCQUFiLEtBQUs7Z0JBT0YsS0FBSztzQkFEUixLQUFLO2dCQW1CRixnQkFBZ0I7c0JBRG5CLEtBQUs7Z0JBa0JGLGdCQUFnQjtzQkFEbkIsS0FBSztnQkFrQkYsWUFBWTtzQkFEZixLQUFLO2dCQWtCRixNQUFNO3NCQURULEtBQUs7Z0JBaUJHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBT0YsR0FBRztzQkFETixLQUFLO2dCQWlCRixRQUFRO3NCQURYLEtBQUs7Z0JBaUJGLEdBQUc7c0JBRE4sS0FBSztnQkFpQkYsUUFBUTtzQkFEWCxLQUFLO2dCQWlCRixJQUFJO3NCQURQLEtBQUs7Z0JBaUJGLFFBQVE7c0JBRFgsS0FBSztnQkFzQkcsa0JBQWtCO3NCQUExQixLQUFLO2dCQVFHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFRRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBUUcsWUFBWTtzQkFBcEIsS0FBSztnQkFNSSxXQUFXO3NCQUFwQixNQUFNO2dCQU1HLHNCQUFzQjtzQkFBL0IsTUFBTTtnQkFNRyxzQkFBc0I7c0JBQS9CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgTm9yd2VnaWFuIEFpciBTaHV0dGxlLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7IEFmdGVyVmlld0NoZWNrZWQsIEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOYXNDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlL25hcy1jb21wb25lbnQuYmFzZSc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogTm9yd2VnaWFuIFNsaWRlciBDb21wb25lbnQgfCBGb3JtIENvbnRyb2xzXG4qL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmFzLXNsaWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zbGlkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zbGlkZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTbGlkZXJDb21wb25lbnQgZXh0ZW5kcyBOYXNDb21wb25lbnRCYXNlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBBZnRlclZpZXdDaGVja2VkIHtcbiAgQFZpZXdDaGlsZCgnc2xpZGVyJykgc2xpZGVyPzogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgncmFuZ2VNaW4nKSByYW5nZU1pbj86IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3JhbmdlTWF4JykgcmFuZ2VNYXg/OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdidWJibGUnKSBidWJibGU/OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVGhlIElEIG9mIHRoZSBzbGlkZXJcbiAgICovXG4gIEBJbnB1dCgpIGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgSUQgb2YgdGhlIHNsaWRlclxuICAgKi9cbiAgQElucHV0KCkgcmFuZ2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogTmFtZSBhdHRyaWJ1dGUgb2YgdGhlIHNsaWRlclxuICAgKi9cbiAgQElucHV0KCkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0cyB0aGUgdGl0bGUgb2YgdGhlIHNsaWRlclxuICAgKi9cbiAgQElucHV0KCkgdGl0bGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIHNsaWRlclxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IHZhbHVlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVWYWx1ZTtcbiAgfVxuICBzZXQgdmFsdWUodmFsdWU6IG51bWJlcikge1xuICAgIGlmICh2YWx1ZSA9PT0gdGhpcy52YWx1ZVZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy52YWx1ZVZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgKiBAZGVzY3JpcHRpb25cbiAgKiBUaGUgc2VsZWN0ZWQgbWluaW11bSB2YWx1ZSBvZiB0aGUgcmFuZ2Utc2xpZGVyXG4gICovXG4gIEBJbnB1dCgpXG4gIGdldCBzZWxlY3RlZE1pblZhbHVlKCk6IG51bWJlciB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnJhbmdlTWluVmFsdWU7XG4gIH1cbiAgc2V0IHNlbGVjdGVkTWluVmFsdWUodmFsdWU6IG51bWJlciB8IG51bGwpIHtcbiAgICBpZiAodmFsdWUgPT09IHRoaXMucmFuZ2VNaW5WYWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnJhbmdlTWluVmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5zZWxlY3RlZE1pblZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgc2VsZWN0ZWQgbWF4aW11bSB2YWx1ZSBvZiB0aGUgcmFuZ2Utc2xpZGVyXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgc2VsZWN0ZWRNYXhWYWx1ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnJhbmdlTWF4VmFsdWU7XG4gIH1cbiAgc2V0IHNlbGVjdGVkTWF4VmFsdWUodmFsdWU6IG51bWJlcikge1xuICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5yYW5nZU1heFZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucmFuZ2VNYXhWYWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLnNlbGVjdGVkTWF4VmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgKiBAZGVzY3JpcHRpb25cbiAgKiBUaGUgbWluaW11bSBkaWZmZXJlbmNlIG9mIG1pbiBhbmQgbWF4IHJhbmdlLXNsaWRlci5cbiAgKi9cbiAgQElucHV0KClcbiAgZ2V0IG1pbkRpZmZSYW5nZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm1pbkRpZmZlcmVuY2VSYW5nZTtcbiAgfVxuXG4gIHNldCBtaW5EaWZmUmFuZ2UodmFsdWU6IG51bWJlcikge1xuICAgIGlmICghdmFsdWUgfHwgdmFsdWUgPT09IHRoaXMubWluRGlmZmVyZW5jZVJhbmdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5taW5EaWZmZXJlbmNlUmFuZ2UgPSBOdW1iZXIodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgc3VmZml4L2VuZGluZyBvZiB0aGUgdmFsdWUgdGhhdCB0aGUgc2xpZGVyIGNhbiBoYXZlLlxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IHN1ZmZpeCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnN1ZmZpeExhYmVsVmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLnN1ZmZpeExhYmVsVmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnN1ZmZpeExhYmVsVmFsdWUgPSAnJztcbiAgICB9XG4gIH1cblxuICBzZXQgc3VmZml4KHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnN1ZmZpeExhYmVsVmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogT3ZlcndyaXRlcyB0aGUgc3VmZml4IGFuZCBhZGRzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHZhbHVlIHRoYXQgdGhlIHNsaWRlciBjYW4gaGF2ZS5cbiAgICovXG4gIEBJbnB1dCgpIGlzUHJlZml4PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBtaW5pbXVtIHZhbHVlIHRoYXQgdGhlIHNsaWRlciBjYW4gaGF2ZS4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgMC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBtaW4oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5taW5WYWx1ZTtcbiAgfVxuICBzZXQgbWluKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAoIXZhbHVlIHx8IHZhbHVlID09PSB0aGlzLm1pblZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5taW5WYWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIGN1c3RvbSBsYWJlbCBmb3IgdGhlIG1pbmltdW0gdmFsdWUuIFRoZSBhY3R1YWwgdmFsdWUgaXMgc3RpbGwgc3BlY2lmaWVkIGJ5IG1pbiBpbnB1dC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBtaW5MYWJlbCgpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgIGlmICh0aGlzLm1pbkxhYmVsVmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLm1pbkxhYmVsVmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLm1pbjtcbiAgICB9XG4gIH1cbiAgc2V0IG1pbkxhYmVsKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICB0aGlzLm1pbkxhYmVsVmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVGhlIG1heGltdW0gdmFsdWUgdGhhdCB0aGUgc2xpZGVyIGNhbiBoYXZlLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAxMDAuXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgbWF4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMubWF4VmFsdWU7XG4gIH1cbiAgc2V0IG1heCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKCF2YWx1ZSB8fCB2YWx1ZSA9PT0gdGhpcy5tYXhWYWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubWF4VmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBjdXN0b20gbGFiZWwgZm9yIHRoZSBtYXhpbXVtIHZhbHVlLiBUaGUgYWN0dWFsIHZhbHVlIGlzIHN0aWxsIHNwZWNpZmllZCBieSBtYXggaW5wdXQuXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgbWF4TGFiZWwoKTogc3RyaW5nIHwgbnVtYmVyIHtcbiAgICBpZiAodGhpcy5tYXhMYWJlbFZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5tYXhMYWJlbFZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5tYXg7XG4gICAgfVxuICB9XG4gIHNldCBtYXhMYWJlbCh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgdGhpcy5tYXhMYWJlbFZhbHVlID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSB2YWx1ZXMgYXQgd2hpY2ggdGhlIHRodW1iIHdpbGwgc25hcFxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IHN0ZXAoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuc3RlcFZhbHVlO1xuICB9XG4gIHNldCBzdGVwKHZhbHVlOiBudW1iZXIgfCBudWxsKSB7XG4gICAgaWYgKHZhbHVlID09PSB0aGlzLnN0ZXBWYWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RlcFZhbHVlID0gTnVtYmVyKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogV2hldGhlciB0aGUgY29tcG9uZW50IGlzIGRpc2FibGVkXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWRWYWx1ZTtcbiAgfVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodmFsdWUgPT09IHRoaXMuZGlzYWJsZWRWYWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNsaWRlcj8ubmF0aXZlRWxlbWVudCAmJiAhdGhpcy5uYXNGb3JtQ29udHJvbE5hbWUpIHtcbiAgICAgIHRoaXMuc2xpZGVyLm5hdGl2ZUVsZW1lbnQuZGlzYWJsZWQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICB0aGlzLmRpc2FibGVkVmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0cyBhIGZvcm1Db250cm9sTmFtZSBkaXJlY3RpdmUgdG8gdGhlIGlucHV0LlxuICAgKiBJdCByZXF1aXJlcyB0aGF0IHRoZSBjb25zdW1lciBpbmNsdWRlZCBSZWFjdGl2ZUZvcm1zTW9kdWxlIGluIGl0J3MgbW9kdWxlLlxuICAgKiBJdCByZXF1aWVycyB0aGF0IHRoZSBuYXNGb3JtR3JvdXAgaW5wdXQgaXMgZmlsbGVkLlxuICAgKi9cbiAgQElucHV0KCkgbmFzRm9ybUNvbnRyb2xOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZXRzIGEgZm9ybUNvbnRyb2xOYW1lIGRpcmVjdGl2ZSB0byB0aGUgaW5wdXQgb2YgcmFuZ2Utc2xpZGVyIG1pbmltdW0gdmFsdWUuXG4gICAqIEl0IHJlcXVpcmVzIHRoYXQgdGhlIGNvbnN1bWVyIGluY2x1ZGVkIFJlYWN0aXZlRm9ybXNNb2R1bGUgaW4gaXQncyBtb2R1bGUuXG4gICAqIEl0IHJlcXVpZXJzIHRoYXQgdGhlIG5hc0Zvcm1Hcm91cCBpbnB1dCBpcyBmaWxsZWQuXG4gICAqL1xuICBASW5wdXQoKSBuYXNGb3JtQ29udHJvbE1pbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0cyBhIGZvcm1Db250cm9sTmFtZSBkaXJlY3RpdmUgdG8gdGhlIGlucHV0IG9mIHJhbmdlLXNsaWRlciBtYXhpbXVtIHZhbHVlLlxuICAgKiBJdCByZXF1aXJlcyB0aGF0IHRoZSBjb25zdW1lciBpbmNsdWRlZCBSZWFjdGl2ZUZvcm1zTW9kdWxlIGluIGl0J3MgbW9kdWxlLlxuICAgKiBJdCByZXF1aWVycyB0aGF0IHRoZSBuYXNGb3JtR3JvdXAgaW5wdXQgaXMgZmlsbGVkLlxuICAgKi9cbiAgQElucHV0KCkgbmFzRm9ybUNvbnRyb2xNYXg6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFkZHMgdGhlIHBhcmVudCdzIGZvcm0gZ3JvdXAuXG4gICAqIEl0IHJlcXVpcmVzIHRoYXQgdGhlIGNvbnN1bWVyIGluY2x1ZGVkIFJlYWN0aXZlRm9ybXNNb2R1bGUgaW4gaXQncyBtb2R1bGUuXG4gICAqIEl0IGlzIHJlcXVpZXJlZCB0byBiZSBmaWxsZWQgaWYgbmFzRm9ybUNvbnRyb2xOYW1lIGFkZGVkLlxuICAgKi9cbiAgQElucHV0KCkgbmFzRm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQW4gZXZlbnQgdGhhdCBpcyBmaXJlZCBldmVyeSB0aW1lIHRoZSBzaWxkZXIgdmFsdWUgY2hhbmdlc1xuICAgKi9cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXIgfCBudWxsPigpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQW4gZXZlbnQgdGhhdCBpcyBmaXJlZCBldmVyeSB0aW1lIHRoZSBzaWxkZXIgbWluaW11bSB2YWx1ZSBjaGFuZ2VzXG4gICAqL1xuICBAT3V0cHV0KCkgc2VsZWN0ZWRNaW5WYWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyIHwgbnVsbD4oKTtcblxuICAvKipcbiAgKiBAZGVzY3JpcHRpb25cbiAgKiBBbiBldmVudCB0aGF0IGlzIGZpcmVkIGV2ZXJ5IHRpbWUgdGhlIHNpbGRlciBtYXhpbXVtIHZhbHVlIGNoYW5nZXNcbiAgKi9cbiAgQE91dHB1dCgpIHNlbGVjdGVkTWF4VmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlciB8IG51bGw+KCk7XG5cbiAgaXNSYW5nZTogYm9vbGVhbjtcbiAgc2hvd0J1YmJsZTogYm9vbGVhbjtcbiAgYnViYmxlVmFsdWU6IHN0cmluZyB8IG51bWJlcjtcbiAgaXNJRU9yRWRnZSA9IC9tc2llXFxzfHRyaWRlbnRcXC98ZWRnZVxcLy9pLnRlc3Qod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpO1xuICBzaG93QnViYmxlU3VmZml4OiBib29sZWFuO1xuXG4gIGdldCBzbGlkZXJJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlkID8gdGhpcy5pZCA6IGBuYXMtc2xpZGVyLSR7dGhpcy5jb21wb25lbnRJZH1gO1xuICB9XG5cbiAgZ2V0IGlzQnViYmxlQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzQnViYmxlQWN0aXZlVmFsdWU7XG4gIH1cbiAgc2V0IGlzQnViYmxlQWN0aXZlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgbGV0IHRpbWVvdXQ6IGFueSA9IG51bGw7XG5cbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcblxuICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmlzQnViYmxlQWN0aXZlVmFsdWUgPSBmYWxzZTtcbiAgICAgIH0sIDI1MCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmlzQnViYmxlQWN0aXZlVmFsdWUgPSB0cnVlO1xuICAgICAgfSwgMTAwKTtcbiAgICB9XG4gIH1cblxuICBnZXQgbWlkZGxlTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdW0gPSB0aGlzLm1pbiArIHRoaXMubWF4O1xuICAgIGNvbnN0IG1pZGRsZVN1bSA9IHN1bSAvIDI7XG4gICAgaWYgKHN1bSAlIDIgPT09IDEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gbWlkZGxlU3VtLnRvU3RyaW5nKCk7XG4gIH1cblxuICBnZXQgc2hvd01pbkxhYmVsU3VmZml4KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgKHRoaXMubWluTGFiZWwpID09PSAnbnVtYmVyJztcbiAgfVxuXG4gIGdldCBzaG93TWF4TGFiZWxTdWZmaXgoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiAodGhpcy5tYXhMYWJlbCkgPT09ICdudW1iZXInO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0J1YmJsZUFjdGl2ZVZhbHVlID0gZmFsc2U7XG4gIHByaXZhdGUgdmFsdWVWYWx1ZTogbnVtYmVyIHwgbnVsbDtcbiAgcHJpdmF0ZSBtaW5WYWx1ZSA9IDA7XG4gIHByaXZhdGUgbWF4VmFsdWUgPSAxMDA7XG4gIHByaXZhdGUgcmFuZ2VNYXhWYWx1ZTogbnVtYmVyIHwgbnVsbDtcbiAgcHJpdmF0ZSByYW5nZU1pblZhbHVlOiBudW1iZXIgfCBudWxsO1xuICBwcml2YXRlIG1pbkRpZmZlcmVuY2VSYW5nZSA9IDI7XG4gIHByaXZhdGUgc3RlcFZhbHVlOiBudW1iZXIgfCBudWxsO1xuICBwcml2YXRlIGRpc2FibGVkVmFsdWU6IGJvb2xlYW47XG4gIHByaXZhdGUgY29tcG9uZW50SWQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBpc1ZpZXdJbml0ID0gZmFsc2U7XG4gIHByaXZhdGUgbWluTGFiZWxWYWx1ZTogc3RyaW5nIHwgbnVtYmVyO1xuICBwcml2YXRlIG1heExhYmVsVmFsdWU6IHN0cmluZyB8IG51bWJlcjtcbiAgcHJpdmF0ZSBzdWZmaXhMYWJlbFZhbHVlOiBzdHJpbmc7XG4gIHByaXZhdGUgbWF4U2VsZWN0ZWQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBtaW5TZWxlY3RlZDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHN1cGVyKCduYXMtc2xpZGVyJyk7XG4gICAgdGhpcy5jb21wb25lbnRJZCA9IG5leHRJZCsrO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubmFzRm9ybUdyb3VwICYmIHRoaXMubmFzRm9ybUNvbnRyb2xOYW1lKSB7XG4gICAgICBjb25zdCBzbGlkZXJDb250cm9sID0gdGhpcy5uYXNGb3JtR3JvdXAuZ2V0KHRoaXMubmFzRm9ybUNvbnRyb2xOYW1lKTtcblxuICAgICAgaWYgKCFzbGlkZXJDb250cm9sKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZXhpc3RzKHRoaXMuZGlzYWJsZWQpKSB7XG4gICAgICAgIHNsaWRlckNvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzbGlkZXJDb250cm9sLmVuYWJsZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnZhbHVlID0gc2xpZGVyQ29udHJvbC52YWx1ZTtcblxuICAgICAgc2xpZGVyQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZTogbnVtYmVyIHwgbnVsbCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuZXhpc3RzKHRoaXMuZGlzYWJsZWQpKSB7XG4gICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWN0aXZhdGVCdWJibGUodmFsdWUsICdzbGlkZXInKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm5hc0Zvcm1Hcm91cCAmJiB0aGlzLm5hc0Zvcm1Db250cm9sTWluICYmIHRoaXMubmFzRm9ybUNvbnRyb2xNYXgpIHtcbiAgICAgIGNvbnN0IHNsaWRlck1pbkNvbnRyb2wgPSB0aGlzLm5hc0Zvcm1Hcm91cC5nZXQodGhpcy5uYXNGb3JtQ29udHJvbE1pbik7XG4gICAgICBjb25zdCBzbGlkZXJNYXhDb250cm9sID0gdGhpcy5uYXNGb3JtR3JvdXAuZ2V0KHRoaXMubmFzRm9ybUNvbnRyb2xNYXgpO1xuXG4gICAgICBpZiAoIXNsaWRlck1pbkNvbnRyb2wgfHwgIXNsaWRlck1heENvbnRyb2wpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5leGlzdHModGhpcy5kaXNhYmxlZCkpIHtcbiAgICAgICAgc2xpZGVyTWluQ29udHJvbC5kaXNhYmxlKCk7XG4gICAgICAgIHNsaWRlck1heENvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzbGlkZXJNaW5Db250cm9sLmVuYWJsZSgpO1xuICAgICAgICBzbGlkZXJNYXhDb250cm9sLmVuYWJsZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNlbGVjdGVkTWluVmFsdWUgPSBzbGlkZXJNaW5Db250cm9sLnZhbHVlO1xuICAgICAgdGhpcy5zZWxlY3RlZE1heFZhbHVlID0gc2xpZGVyTWF4Q29udHJvbC52YWx1ZTtcblxuICAgICAgc2xpZGVyTWluQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZTogbnVtYmVyIHwgbnVsbCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuZXhpc3RzKHRoaXMuZGlzYWJsZWQpICYmIHZhbHVlID4gdGhpcy5zZWxlY3RlZE1heFZhbHVlIC0gdGhpcy5taW5EaWZmUmFuZ2UpIHtcbiAgICAgICAgICBzbGlkZXJNaW5Db250cm9sLnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRNaW5WYWx1ZSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYnViYmxlVmFsdWUgPSB0aGlzLnNldEJ1YmJsZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZUJ1YmJsZSh2YWx1ZSwgJ3JhbmdlLXNsaWRlci1taW4nKTtcbiAgICAgIH0pO1xuXG4gICAgICBzbGlkZXJNYXhDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlOiBudW1iZXIgfCBudWxsKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5leGlzdHModGhpcy5kaXNhYmxlZCkgJiYgdmFsdWUgPCB0aGlzLnNlbGVjdGVkTWluVmFsdWUgKyB0aGlzLm1pbkRpZmZSYW5nZSkge1xuICAgICAgICAgIHNsaWRlck1heENvbnRyb2wuc2V0VmFsdWUodGhpcy5zZWxlY3RlZE1heFZhbHVlKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5idWJibGVWYWx1ZSA9IHRoaXMuc2V0QnViYmxlVmFsdWUodmFsdWUpO1xuICAgICAgICB0aGlzLmFjdGl2YXRlQnViYmxlKHZhbHVlLCAncmFuZ2Utc2xpZGVyLW1heCcpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuaXNSYW5nZSA9IHRoaXMuZXhpc3RzKHRoaXMucmFuZ2UpID8gdHJ1ZSA6IGZhbHNlO1xuICAgIHRoaXMuc2hvd0J1YmJsZSA9IGZhbHNlO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5pc1ZpZXdJbml0ID0gdHJ1ZTtcbiAgICB9LCAxMDApO1xuXG4gICAgaWYgKCF0aGlzLnNsaWRlcj8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBkZXRlY3RDaGFuZ2VzID0gZmFsc2U7XG5cbiAgICBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBOdW1iZXIodGhpcy5zbGlkZXIubmF0aXZlRWxlbWVudC5taW4pO1xuICAgICAgZGV0ZWN0Q2hhbmdlcyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkTWluVmFsdWUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRNaW5WYWx1ZSA9IE51bWJlcih0aGlzLnNsaWRlci5uYXRpdmVFbGVtZW50Lm1pbik7XG4gICAgICBkZXRlY3RDaGFuZ2VzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRNYXhWYWx1ZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZE1heFZhbHVlID0gTnVtYmVyKHRoaXMuc2xpZGVyLm5hdGl2ZUVsZW1lbnQubWF4KTtcbiAgICAgIGRldGVjdENoYW5nZXMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5taW4pIHtcbiAgICAgIHRoaXMubWluID0gTnVtYmVyKHRoaXMuc2xpZGVyLm5hdGl2ZUVsZW1lbnQubWluKTtcbiAgICAgIGRldGVjdENoYW5nZXMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5tYXgpIHtcbiAgICAgIHRoaXMubWF4ID0gTnVtYmVyKHRoaXMuc2xpZGVyLm5hdGl2ZUVsZW1lbnQubWF4KTtcbiAgICAgIGRldGVjdENoYW5nZXMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChkZXRlY3RDaGFuZ2VzKSB7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNSYW5nZSAmJiAhdGhpcy5uYXNGb3JtQ29udHJvbE1pbiAmJiAhdGhpcy5uYXNGb3JtQ29udHJvbE1heCAmJiAhdGhpcy5uYXNGb3JtR3JvdXApIHtcbiAgICAgIHRoaXMucmFuZ2VNaW4ubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuc2VsZWN0ZWRNaW5WYWx1ZS50b1N0cmluZygpO1xuICAgICAgdGhpcy5yYW5nZU1heC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdGhpcy5zZWxlY3RlZE1heFZhbHVlLnRvU3RyaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0QnViYmxlU3R5bGUoKTtcbiAgfVxuXG4gIG9uU2xpZGVySW5wdXQoZXZlbnQ6IGFueSwgdHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFldmVudD8udGFyZ2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2hvd0J1YmJsZSA9IHRydWU7XG4gICAgY29uc3QgZXZlbnRWYWx1ZSA9IE51bWJlcihldmVudC50YXJnZXQudmFsdWUpO1xuXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdzbGlkZXInOlxuICAgICAgICB0aGlzLnZhbHVlID0gZXZlbnRWYWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyYW5nZS1zbGlkZXItbWluJzpcbiAgICAgICAgdGhpcy5zZWxlY3RlZE1pblZhbHVlID0gdGhpcy5taW5TZWxlY3RlZCA/IHRoaXMubWluU2VsZWN0ZWQgOiBldmVudFZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3JhbmdlLXNsaWRlci1tYXgnOlxuICAgICAgICB0aGlzLnNlbGVjdGVkTWF4VmFsdWUgPSB0aGlzLm1heFNlbGVjdGVkID8gdGhpcy5tYXhTZWxlY3RlZCA6IGV2ZW50VmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIG9uU2xpZGVyQ2hhbmdlKGV2ZW50OiBhbnksIHR5cGU/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm9uU2xpZGVySW5wdXQoZXZlbnQsIHR5cGUpO1xuICAgIHRoaXMuaXNCdWJibGVBY3RpdmUgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0QnViYmxlU3R5bGUodmFsdWU/OiBudW1iZXIsIHR5cGU/OiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuYnViYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaW5wdXRXaWR0aCA9IHRoaXMuc2xpZGVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRXaWR0aDtcbiAgICBjb25zdCBtaW5WYWx1ZSA9IE51bWJlcih0aGlzLm1pbik7XG4gICAgY29uc3QgbWF4VmFsdWUgPSBOdW1iZXIodGhpcy5tYXgpO1xuICAgIGxldCB2YWx1ZVR5cGU7XG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ3NsaWRlcic6XG4gICAgICAgIHRoaXMuYnViYmxlVmFsdWUgPSB0aGlzLnNldEJ1YmJsZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgdmFsdWVUeXBlID0gdmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncmFuZ2Utc2xpZGVyLW1pbic6XG4gICAgICBjYXNlICdyYW5nZS1zbGlkZXItbWF4JzpcbiAgICAgICAgdmFsdWVUeXBlID0gdmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJhdGlvID0gKHZhbHVlVHlwZSAtIG1pblZhbHVlKSAvIChtYXhWYWx1ZSAtIG1pblZhbHVlKTtcbiAgICBjb25zdCB0aHVtYldpZHRoID0gMzY7XG4gICAgY29uc3QgdGh1bWJIYWxmV2lkdGggPSB0aHVtYldpZHRoIC8gMjtcbiAgICBjb25zdCBsZWZ0ID0gKCgocmF0aW8pICogKChpbnB1dFdpZHRoIC0gdGh1bWJIYWxmV2lkdGgpIC0gdGh1bWJIYWxmV2lkdGgpKSArIHRodW1iSGFsZldpZHRoKSAtIDQ1O1xuXG4gICAgdGhpcy5idWJibGUubmF0aXZlRWxlbWVudC5zdHlsZS5sZWZ0ID0gYCR7bGVmdH1weGA7XG4gIH1cblxuICBwdWJsaWMgb25EaXNwbGF5QnViYmxlKGV2ZW50PzogYW55LCB0eXBlPzogc3RyaW5nKSB7XG4gICAgaWYgKCFldmVudD8udGFyZ2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNWaWV3SW5pdCkge1xuICAgICAgdGhpcy52YWxpZGF0ZVJhbmdlclNsaWRlcihOdW1iZXIoZXZlbnQudGFyZ2V0LnZhbHVlKSwgdHlwZSk7XG4gICAgICB0aGlzLmFjdGl2YXRlQnViYmxlKE51bWJlcihldmVudC50YXJnZXQudmFsdWUpLCB0eXBlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlUmFuZ2VyU2xpZGVyKHZhbHVlOiBudW1iZXIsIHR5cGU6IHN0cmluZykge1xuICAgIGxldCBldmVudFZhbHVlID0gdmFsdWU7XG4gICAgY29uc3QgbWF0aE1pbiA9IE1hdGgubWluKHZhbHVlLCB0aGlzLnNlbGVjdGVkTWF4VmFsdWUgLSB0aGlzLm1pbkRpZmZSYW5nZSk7XG4gICAgY29uc3QgbWF0aE1heCA9IE1hdGgubWF4KHZhbHVlLCB0aGlzLnNlbGVjdGVkTWluVmFsdWUgKyB0aGlzLm1pbkRpZmZSYW5nZSk7XG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ3JhbmdlLXNsaWRlci1taW4nOlxuICAgICAgICB0aGlzLmJ1YmJsZVZhbHVlID0gdGhpcy5zZXRCdWJibGVWYWx1ZShtYXRoTWluKTtcbiAgICAgICAgZXZlbnRWYWx1ZSA9IG1hdGhNaW47XG4gICAgICAgIHRoaXMubWluU2VsZWN0ZWQgPSBldmVudFZhbHVlO1xuICAgICAgICBpZiAoZXZlbnRWYWx1ZSA+PSAodGhpcy5zZWxlY3RlZE1heFZhbHVlIC0gdGhpcy5taW5EaWZmUmFuZ2UpKSB7XG4gICAgICAgICAgdGhpcy5yYW5nZU1pbi5uYXRpdmVFbGVtZW50LnZhbHVlID0gbWF0aE1pbi50b1N0cmluZygpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3JhbmdlLXNsaWRlci1tYXgnOlxuICAgICAgICB0aGlzLmJ1YmJsZVZhbHVlID0gdGhpcy5zZXRCdWJibGVWYWx1ZShtYXRoTWF4KTtcbiAgICAgICAgZXZlbnRWYWx1ZSA9IG1hdGhNYXg7XG4gICAgICAgIHRoaXMubWF4U2VsZWN0ZWQgPSBldmVudFZhbHVlO1xuICAgICAgICBpZiAoZXZlbnRWYWx1ZSA8PSAodGhpcy5zZWxlY3RlZE1pblZhbHVlICsgdGhpcy5taW5EaWZmUmFuZ2UpKSB7XG4gICAgICAgICAgdGhpcy5yYW5nZU1heC5uYXRpdmVFbGVtZW50LnZhbHVlID0gbWF0aE1heC50b1N0cmluZygpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFjdGl2YXRlQnViYmxlKHZhbHVlOiBudW1iZXIsIHR5cGU6IHN0cmluZykge1xuICAgIHRoaXMuc2hvd0J1YmJsZSA9IHRydWU7XG4gICAgdGhpcy5pc0J1YmJsZUFjdGl2ZSA9IHRydWU7XG4gICAgdGhpcy5zZXRCdWJibGVTdHlsZSh2YWx1ZSwgdHlwZSk7XG4gICAgdGhpcy5pc0J1YmJsZUFjdGl2ZSA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRCdWJibGVWYWx1ZSh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHwgbnVtYmVyIHtcbiAgICBpZiAodmFsdWUgPT09IHRoaXMubWluICYmIHR5cGVvZiAodGhpcy5taW5MYWJlbCkgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLnNob3dCdWJibGVTdWZmaXggPSBmYWxzZTtcbiAgICAgIHJldHVybiB0aGlzLm1pbkxhYmVsO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IHRoaXMubWF4ICYmIHR5cGVvZiAodGhpcy5tYXhMYWJlbCkgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLnNob3dCdWJibGVTdWZmaXggPSBmYWxzZTtcbiAgICAgIHJldHVybiB0aGlzLm1heExhYmVsO1xuICAgIH1cbiAgICB0aGlzLnNob3dCdWJibGVTdWZmaXggPSB0cnVlO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG5cbn1cbiIsIjxkaXYgW25hc0NsYXNzXT1cImdldENsYXNzKCd3cmFwcGVyJylcIiAgKm5nSWY9XCIhaXNSYW5nZVwiPlxuICAgIDxkaXYgI2J1YmJsZSBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2J1YmJsZScsIGlzQnViYmxlQWN0aXZlID8gJ2FjdGl2ZScgOiAnJylcIj5cbiAgICAgICAgPHNwYW4gW25hc0NsYXNzXT1cImdldENsYXNzKCdidWJibGUtdmFsdWUnKVwiICpuZ0lmPVwiYnViYmxlVmFsdWUgIT0gbnVsbFwiPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2hvd0J1YmJsZVN1ZmZpeCAmJiBleGlzdHMoaXNQcmVmaXgpXCI+e3tzdWZmaXh9fTwvc3Bhbj57e2J1YmJsZVZhbHVlfX08c3BhbiBcbiAgICAgICAgICAqbmdJZj1cInNob3dCdWJibGVTdWZmaXggJiYgIWV4aXN0cyhpc1ByZWZpeClcIj57e3N1ZmZpeH19PC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFuYXNGb3JtQ29udHJvbE5hbWU7IGVsc2UgcmVhY3RpdmVGb3JtXCI+XG4gICAgICAgIDxsYWJlbD5cbiAgICAgIDxzcGFuIFtuYXNDbGFzc109XCJnZXRDbGFzcygndGl0bGUnKVwiXG4gICAgICAgICpuZ0lmPVwidGl0bGVcIj57e3RpdGxlfX08L3NwYW4+XG4gICAgICA8aW5wdXQgI3NsaWRlclxuICAgICAgICBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ3NsaWRlcicsIGV4aXN0cyhkaXNhYmxlZCkgPyAnZGlzYWJsZWQnIDogJycpXCJcbiAgICAgICAgdHlwZT1cInJhbmdlXCJcbiAgICAgICAgW2lkXT1cInNsaWRlcklkXCJcbiAgICAgICAgW2F0dHIubWluXT1cIm1pblwiXG4gICAgICAgIFthdHRyLm1heF09XCJtYXhcIlxuICAgICAgICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxuICAgICAgICBbYXR0ci52YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAgIFthdHRyLnN1ZmZpeF09XCJzdWZmaXhcIlxuICAgICAgICBbYXR0ci5zdGVwXT1cInN0ZXBcIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWluXT1cIm1pblwiXG4gICAgICAgIFthdHRyLmFyaWEtdmFsdWVtYXhdPVwibWF4XCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW5vd109XCJ2YWx1ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIChpbnB1dCk9XCJvbkRpc3BsYXlCdWJibGUoJGV2ZW50LCdzbGlkZXInKVwiXG4gICAgICAgIChtb3VzZXVwKT1cIm9uU2xpZGVyQ2hhbmdlKCRldmVudCwgJ3NsaWRlcicpXCJcbiAgICAgICAgKHRvdWNoZW5kKT1cIm9uU2xpZGVyQ2hhbmdlKCRldmVudCwgJ3NsaWRlcicpXCJcbiAgICAgICAgKGtleXVwKT1cIm9uU2xpZGVyQ2hhbmdlKCRldmVudCwgJ3NsaWRlcicpXCIgLz5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsYWJlbFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbGFiZWw+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNyZWFjdGl2ZUZvcm0+XG4gICAgICAgIDxsYWJlbCBbZm9ybUdyb3VwXT1cIm5hc0Zvcm1Hcm91cFwiPlxuICAgICAgPHAgW25hc0NsYXNzXT1cImdldENsYXNzKCd0aXRsZScpXCJcbiAgICAgICAgKm5nSWY9XCJ0aXRsZVwiPnt7dGl0bGV9fTwvcD5cbiAgICAgIDxpbnB1dCAjc2xpZGVyXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibmFzRm9ybUNvbnRyb2xOYW1lXCJcbiAgICAgICAgW25hc0NsYXNzXT1cImdldENsYXNzKCdzbGlkZXInLCBuYXNGb3JtR3JvdXA/LmdldChuYXNGb3JtQ29udHJvbE5hbWUpPy5kaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiAnJylcIlxuICAgICAgICB0eXBlPVwicmFuZ2VcIlxuICAgICAgICBbaWRdPVwic2xpZGVySWRcIlxuICAgICAgICBbYXR0ci5taW5dPVwibWluXCJcbiAgICAgICAgW2F0dHIubWF4XT1cIm1heFwiXG4gICAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICAgIFthdHRyLnZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgW2F0dHIuc3VmZml4XT1cInN1ZmZpeFwiXG4gICAgICAgIFthdHRyLnN0ZXBdPVwic3RlcFwiXG4gICAgICAgIFthdHRyLmFyaWEtdmFsdWVtaW5dPVwibWluXCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1heF09XCJtYXhcIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbm93XT1cInZhbHVlXCJcbiAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAoaW5wdXQpPVwib25TbGlkZXJJbnB1dCgkZXZlbnQsICdzbGlkZXInKVwiXG4gICAgICAgIChjaGFuZ2UpPVwib25TbGlkZXJDaGFuZ2UoJGV2ZW50LCAnc2xpZGVyJylcIiBcbiAgICAgICAgLz5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsYWJlbFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbGFiZWw+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2xhYmVsPlxuICAgICAgICA8ZGl2IFtuYXNDbGFzc109XCJnZXRDbGFzcygnbGFiZWwtd3JhcHBlcicpXCI+XG4gICAgICAgICAgPHNwYW4gW25hc0NsYXNzXT1cImdldENsYXNzKCdsYWJlbCcpXCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNob3dNaW5MYWJlbFN1ZmZpeCAmJiBleGlzdHMoaXNQcmVmaXgpXCI+e3tzdWZmaXh9fTwvc3Bhbj57e21pbkxhYmVsfX08c3BhbiBcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd01pbkxhYmVsU3VmZml4ICYmICFleGlzdHMoaXNQcmVmaXgpXCI+e3tzdWZmaXh9fTwvc3Bhbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gW25hc0NsYXNzXT1cImdldENsYXNzKCdsYWJlbCcsICdtaWRkbGUnKVwiICpuZ0lmPVwibWlkZGxlTGFiZWxcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZXhpc3RzKGlzUHJlZml4KVwiPnt7c3VmZml4fX08L3NwYW4+e3ttaWRkbGVMYWJlbH19PHNwYW4gXG4gICAgICAgICAgICAqbmdJZj1cIiFleGlzdHMoaXNQcmVmaXgpXCI+e3tzdWZmaXh9fTwvc3Bhbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gW25hc0NsYXNzXT1cImdldENsYXNzKCdsYWJlbCcsICdtYXgnKVwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzaG93TWF4TGFiZWxTdWZmaXggJiYgZXhpc3RzKGlzUHJlZml4KVwiPnt7c3VmZml4fX08L3NwYW4+e3ttYXhMYWJlbH19PHNwYW4gXG4gICAgICAgICAgICAqbmdJZj1cInNob3dNYXhMYWJlbFN1ZmZpeCAmJiAhZXhpc3RzKGlzUHJlZml4KVwiPnt7c3VmZml4fX08L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG5cbjxkaXYgW25hc0NsYXNzXT1cImdldENsYXNzKCd3cmFwcGVyLXJhbmdlJylcIiAqbmdJZj1cImlzUmFuZ2UgJiYgIWlzSUVPckVkZ2VcIj5cbiAgPGRpdiAjYnViYmxlIFtuYXNDbGFzc109XCJnZXRDbGFzcygnYnViYmxlJywgaXNCdWJibGVBY3RpdmUgPyAnYWN0aXZlJyA6ICcnKVwiICpuZ0lmPVwic2hvd0J1YmJsZVwiPlxuICAgIDxzcGFuIFtuYXNDbGFzc109XCJnZXRDbGFzcygnYnViYmxlLXZhbHVlJylcIiAqbmdJZj1cImJ1YmJsZVZhbHVlICE9IG51bGxcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwic2hvd0J1YmJsZVN1ZmZpeCAmJiBleGlzdHMoaXNQcmVmaXgpXCI+e3tzdWZmaXh9fTwvc3Bhbj57e2J1YmJsZVZhbHVlfX08c3BhbiBcbiAgICAgICpuZ0lmPVwic2hvd0J1YmJsZVN1ZmZpeCAmJiAhZXhpc3RzKGlzUHJlZml4KVwiPnt7c3VmZml4fX08L3NwYW4+PC9zcGFuPlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFuYXNGb3JtQ29udHJvbE1pbiAmJiAhbmFzRm9ybUNvbnRyb2xNYXg7IGVsc2UgcmVhY3RpdmVGb3JtXCI+XG4gICAgICA8bGFiZWwgPlxuICAgICAgPHNwYW4gW25hc0NsYXNzXT1cImdldENsYXNzKCd0aXRsZScpXCJcbiAgICAgICAgKm5nSWY9XCJ0aXRsZVwiPnt7dGl0bGV9fTwvc3Bhbj5cbiAgICAgICAgPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ3JhbmdlLXNsaWRlcicpXCI+XG4gICAgICAgICAgPGlucHV0ICNzbGlkZXIgI3JhbmdlTWluXG4gICAgICAgICAgICAgIFtuYXNDbGFzc109XCJnZXRDbGFzcygncmFuZ2Utc2xpZGVyLW1pbicsIGV4aXN0cyhkaXNhYmxlZCkgPyAnZGlzYWJsZWQnIDogJycpXCIgXG4gICAgICAgICAgICAgIHR5cGU9XCJyYW5nZVwiXG4gICAgICAgICAgICAgIFtpZF09XCJzbGlkZXJJZFwiXG4gICAgICAgICAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICAgICAgICAgIFthdHRyLnZhbHVlXT1cInNlbGVjdGVkTWluVmFsdWVcIlxuICAgICAgICAgICAgICBbYXR0ci5taW5dPVwibWluXCJcbiAgICAgICAgICAgICAgW2F0dHIubWF4XT1cIm1heFwiXG4gICAgICAgICAgICAgIFthdHRyLnN0ZXBdPVwic3RlcFwiXG4gICAgICAgICAgICAgIFthdHRyLnN1ZmZpeF09XCJzdWZmaXhcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWluXT1cIm1pblwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtdmFsdWVtYXhdPVwibWF4XCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW5vd109XCJzZWxlY3RlZE1pblZhbHVlXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgKGlucHV0KT1cIm9uRGlzcGxheUJ1YmJsZSgkZXZlbnQsJ3JhbmdlLXNsaWRlci1taW4nKVwiXG4gICAgICAgICAgICAgIChtb3VzZXVwKT1cIm9uU2xpZGVyQ2hhbmdlKCRldmVudCwgJ3JhbmdlLXNsaWRlci1taW4nKVwiXG4gICAgICAgICAgICAgICh0b3VjaGVuZCk9XCJvblNsaWRlckNoYW5nZSgkZXZlbnQsICdyYW5nZS1zbGlkZXItbWluJylcIlxuICAgICAgICAgICAgICAoa2V5dXApPVwib25TbGlkZXJDaGFuZ2UoJGV2ZW50LCAncmFuZ2Utc2xpZGVyLW1pbicpXCJcbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICA8aW5wdXQgI3NsaWRlciAjcmFuZ2VNYXhcbiAgICAgICAgICAgIFtuYXNDbGFzc109XCJnZXRDbGFzcygncmFuZ2Utc2xpZGVyLW1heCcsIGV4aXN0cyhkaXNhYmxlZCkgPyAnZGlzYWJsZWQnIDogJycpXCIgXG4gICAgICAgICAgICB0eXBlPVwicmFuZ2VcIlxuICAgICAgICAgICAgW2lkXT1cInNsaWRlcklkXCJcbiAgICAgICAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiIFxuICAgICAgICAgICAgW2F0dHIudmFsdWVdPVwic2VsZWN0ZWRNYXhWYWx1ZVwiXG4gICAgICAgICAgICBbYXR0ci5taW5dPVwibWluXCJcbiAgICAgICAgICAgIFthdHRyLm1heF09XCJtYXhcIlxuICAgICAgICAgICAgW2F0dHIuc3RlcF09XCJzdGVwXCJcbiAgICAgICAgICAgIFthdHRyLnN1ZmZpeF09XCJzdWZmaXhcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCJtaW5cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1heF09XCJtYXhcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW5vd109XCJzZWxlY3RlZE1heFZhbHVlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAoaW5wdXQpPVwib25EaXNwbGF5QnViYmxlKCRldmVudCwncmFuZ2Utc2xpZGVyLW1heCcpXCJcbiAgICAgICAgICAgIChtb3VzZXVwKT1cIm9uU2xpZGVyQ2hhbmdlKCRldmVudCwgJ3JhbmdlLXNsaWRlci1tYXgnKVwiXG4gICAgICAgICAgICAodG91Y2hlbmQpPVwib25TbGlkZXJDaGFuZ2UoJGV2ZW50LCAncmFuZ2Utc2xpZGVyLW1heCcpXCJcbiAgICAgICAgICAgIChrZXl1cCk9XCJvblNsaWRlckNoYW5nZSgkZXZlbnQsICdyYW5nZS1zbGlkZXItbWF4JylcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxhYmVsXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9sYWJlbD5cbiAgPC9uZy1jb250YWluZXI+XG4gXG4gIDxuZy10ZW1wbGF0ZSAjcmVhY3RpdmVGb3JtPlxuICAgIDxsYWJlbCBbZm9ybUdyb3VwXT1cIm5hc0Zvcm1Hcm91cFwiPlxuICAgIDxwIFtuYXNDbGFzc109XCJnZXRDbGFzcygndGl0bGUnKVwiICpuZ0lmPVwidGl0bGVcIj57e3RpdGxlfX08L3A+XG4gICAgPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ3JhbmdlLXNsaWRlcicpXCI+XG4gICAgICA8aW5wdXQgI3NsaWRlciAjcmFuZ2VNaW5cbiAgICAgICAgICBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ3JhbmdlLXNsaWRlci1taW4nLCBleGlzdHMoZGlzYWJsZWQpID8gJ2Rpc2FibGVkJyA6ICcnKVwiIFxuICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibmFzRm9ybUNvbnRyb2xNaW5cIlxuICAgICAgICAgIHR5cGU9XCJyYW5nZVwiXG4gICAgICAgICAgW2lkXT1cInNsaWRlcklkXCJcbiAgICAgICAgICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxuICAgICAgICAgIFthdHRyLnZhbHVlXT1cInNlbGVjdGVkTWluVmFsdWVcIlxuICAgICAgICAgIFthdHRyLm1pbl09XCJtaW5cIlxuICAgICAgICAgIFthdHRyLm1heF09XCJtYXhcIlxuICAgICAgICAgIFthdHRyLnN0ZXBdPVwic3RlcFwiXG4gICAgICAgICAgW2F0dHIuc3VmZml4XT1cInN1ZmZpeFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCJtaW5cIlxuICAgICAgICAgIFthdHRyLmFyaWEtdmFsdWVtYXhdPVwibWF4XCJcbiAgICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbm93XT1cInNlbGVjdGVkTWluVmFsdWVcIlxuICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkVmFsdWUgPyAnJyA6IG51bGxcIlxuICAgICAgICAgIChpbnB1dCk9XCJvblNsaWRlcklucHV0KCRldmVudCwgJ3JhbmdlLXNsaWRlci1taW4nKVwiIFxuICAgICAgICAgIChjaGFuZ2UpPVwib25TbGlkZXJDaGFuZ2UoJGV2ZW50LCAncmFuZ2Utc2xpZGVyLW1pbicpXCJcbiAgICAgICAgLz5cbiAgICAgICAgXG4gICAgICA8aW5wdXQgI3NsaWRlciAjcmFuZ2VNYXhcbiAgICAgICAgW25hc0NsYXNzXT1cImdldENsYXNzKCdyYW5nZS1zbGlkZXItbWF4JywgZXhpc3RzKGRpc2FibGVkKSA/ICdkaXNhYmxlZCcgOiAnJylcIiBcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJuYXNGb3JtQ29udHJvbE1heFwiXG4gICAgICAgIHR5cGU9XCJyYW5nZVwiXG4gICAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiIFxuICAgICAgICBbYXR0ci52YWx1ZV09XCJzZWxlY3RlZE1heFZhbHVlXCJcbiAgICAgICAgW2F0dHIubWluXT1cIm1pblwiXG4gICAgICAgIFthdHRyLm1heF09XCJtYXhcIlxuICAgICAgICBbYXR0ci5zdGVwXT1cInN0ZXBcIlxuICAgICAgICBbYXR0ci5zdWZmaXhdPVwic3VmZml4XCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCJtaW5cIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWF4XT1cIm1heFwiXG4gICAgICAgIFthdHRyLmFyaWEtdmFsdWVub3ddPVwic2VsZWN0ZWRNYXhWYWx1ZVwiXG4gICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkVmFsdWUgPyAnJyA6IG51bGxcIlxuICAgICAgICAoaW5wdXQpPVwib25TbGlkZXJJbnB1dCgkZXZlbnQsICdyYW5nZS1zbGlkZXItbWF4JylcIiBcbiAgICAgICAgKGNoYW5nZSk9XCJvblNsaWRlckNoYW5nZSgkZXZlbnQsICdyYW5nZS1zbGlkZXItbWF4JylcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxhYmVsXCI+PC9uZy1jb250YWluZXI+XG48L2xhYmVsPlxuPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICNsYWJlbD5cbiAgICAgIDxkaXYgW25hc0NsYXNzXT1cImdldENsYXNzKCdsYWJlbC13cmFwcGVyJylcIj5cbiAgICAgICAgICA8c3BhbiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2xhYmVsJylcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2hvd01pbkxhYmVsU3VmZml4ICYmIGV4aXN0cyhpc1ByZWZpeClcIj57e3N1ZmZpeH19PC9zcGFuPnt7bWluTGFiZWx9fTxzcGFuIFxuICAgICAgICAgICAgKm5nSWY9XCJzaG93TWluTGFiZWxTdWZmaXggJiYgIWV4aXN0cyhpc1ByZWZpeClcIj57e3N1ZmZpeH19PC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2xhYmVsJywgJ21pZGRsZScpXCIgKm5nSWY9XCJtaWRkbGVMYWJlbFwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJleGlzdHMoaXNQcmVmaXgpXCI+e3tzdWZmaXh9fTwvc3Bhbj57e21pZGRsZUxhYmVsfX08c3BhbiBcbiAgICAgICAgICAgICpuZ0lmPVwiIWV4aXN0cyhpc1ByZWZpeClcIj57e3N1ZmZpeH19PC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2xhYmVsJywgJ21heCcpXCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNob3dNYXhMYWJlbFN1ZmZpeCAmJiBleGlzdHMoaXNQcmVmaXgpXCI+e3tzdWZmaXh9fTwvc3Bhbj57e21heExhYmVsfX08c3BhbiBcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd01heExhYmVsU3VmZml4ICYmICFleGlzdHMoaXNQcmVmaXgpXCI+e3tzdWZmaXh9fTwvc3Bhbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgXG48L2Rpdj4iXX0=
|
|
515
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2xpZGVyL3NsaWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3NsaWRlci9zbGlkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFzRCxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFKLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7OztBQUV0RSxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFFZjs7O0VBR0U7QUFNRixNQUFNLE9BQU8sZUFBZ0IsU0FBUSxnQkFBZ0I7SUFrQ25EOzs7O01BSUU7SUFDRixJQUNJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLEtBQWE7UUFDckIsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUM3QixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztNQUlFO0lBQ0YsSUFDSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFDRCxJQUFJLGdCQUFnQixDQUFDLEtBQW9CO1FBQ3ZDLElBQUksS0FB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LFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFDRSxRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBQ0EsTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRO2dCQU9WLEVBQUU7c0JBQVYsS0FBSztnQkFPRyxLQUFLO3NCQUFiLEtBQUs7Z0JBT0csSUFBSTtzQkFBWixLQUFLO2dCQU9HLEtBQUs7c0JBQWIsS0FBSztnQkFRRixLQUFLO3NCQURSLEtBQUs7Z0JBb0JGLGdCQUFnQjtzQkFEbkIsS0FBSztnQkFtQkYsZ0JBQWdCO3NCQURuQixLQUFLO2dCQW1CRixZQUFZO3NCQURmLEtBQUs7Z0JBbUJGLE1BQU07c0JBRFQsS0FBSztnQkFrQkcsUUFBUTtzQkFBaEIsS0FBSztnQkFRRixHQUFHO3NCQUROLEtBQUs7Z0JBa0JGLFFBQVE7c0JBRFgsS0FBSztnQkFrQkYsR0FBRztzQkFETixLQUFLO2dCQWtCRixRQUFRO3NCQURYLEtBQUs7Z0JBa0JGLElBQUk7c0JBRFAsS0FBSztnQkFrQkYsUUFBUTtzQkFEWCxLQUFLO2dCQXVCRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBU0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQVNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFTRyxZQUFZO3NCQUFwQixLQUFLO2dCQU9JLFdBQVc7c0JBQXBCLE1BQU07Z0JBT0csc0JBQXNCO3NCQUEvQixNQUFNO2dCQU9HLHNCQUFzQjtzQkFBL0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBOb3J3ZWdpYW4gQWlyIFNodXR0bGUuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHsgQWZ0ZXJWaWV3Q2hlY2tlZCwgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTmFzQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uL2NvcmUvYmFzZS9uYXMtY29tcG9uZW50LmJhc2UnO1xuXG5sZXQgbmV4dElkID0gMDtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIE5vcndlZ2lhbiBTbGlkZXIgQ29tcG9uZW50IHwgRm9ybSBDb250cm9sc1xuKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25hcy1zbGlkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc2xpZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2xpZGVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2xpZGVyQ29tcG9uZW50IGV4dGVuZHMgTmFzQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCB7XG4gIEBWaWV3Q2hpbGQoJ3NsaWRlcicpIHNsaWRlcj86IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3JhbmdlTWluJykgcmFuZ2VNaW4/OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdyYW5nZU1heCcpIHJhbmdlTWF4PzogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnYnViYmxlJykgYnViYmxlPzogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgSUQgb2YgdGhlIHNsaWRlclxuICAqL1xuICBASW5wdXQoKSBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBJRCBvZiB0aGUgc2xpZGVyXG4gICovXG4gIEBJbnB1dCgpIHJhbmdlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBOYW1lIGF0dHJpYnV0ZSBvZiB0aGUgc2xpZGVyXG4gICovXG4gIEBJbnB1dCgpIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZXRzIHRoZSB0aXRsZSBvZiB0aGUgc2xpZGVyXG4gICovXG4gIEBJbnB1dCgpIHRpdGxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgc2xpZGVyXG4gICovXG4gIEBJbnB1dCgpXG4gIGdldCB2YWx1ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnZhbHVlVmFsdWU7XG4gIH1cbiAgc2V0IHZhbHVlKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodmFsdWUgPT09IHRoaXMudmFsdWVWYWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWVWYWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVGhlIHNlbGVjdGVkIG1pbmltdW0gdmFsdWUgb2YgdGhlIHJhbmdlLXNsaWRlclxuICAqL1xuICBASW5wdXQoKVxuICBnZXQgc2VsZWN0ZWRNaW5WYWx1ZSgpOiBudW1iZXIgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5yYW5nZU1pblZhbHVlO1xuICB9XG4gIHNldCBzZWxlY3RlZE1pblZhbHVlKHZhbHVlOiBudW1iZXIgfCBudWxsKSB7XG4gICAgaWYgKHZhbHVlID09PSB0aGlzLnJhbmdlTWluVmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5yYW5nZU1pblZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuc2VsZWN0ZWRNaW5WYWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBzZWxlY3RlZCBtYXhpbXVtIHZhbHVlIG9mIHRoZSByYW5nZS1zbGlkZXJcbiAgKi9cbiAgQElucHV0KClcbiAgZ2V0IHNlbGVjdGVkTWF4VmFsdWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5yYW5nZU1heFZhbHVlO1xuICB9XG4gIHNldCBzZWxlY3RlZE1heFZhbHVlKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodmFsdWUgPT09IHRoaXMucmFuZ2VNYXhWYWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnJhbmdlTWF4VmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5zZWxlY3RlZE1heFZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVGhlIG1pbmltdW0gZGlmZmVyZW5jZSBvZiBtaW4gYW5kIG1heCByYW5nZS1zbGlkZXIuXG4gICovXG4gIEBJbnB1dCgpXG4gIGdldCBtaW5EaWZmUmFuZ2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5taW5EaWZmZXJlbmNlUmFuZ2U7XG4gIH1cblxuICBzZXQgbWluRGlmZlJhbmdlKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAoIXZhbHVlIHx8IHZhbHVlID09PSB0aGlzLm1pbkRpZmZlcmVuY2VSYW5nZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubWluRGlmZmVyZW5jZVJhbmdlID0gTnVtYmVyKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBzdWZmaXgvZW5kaW5nIG9mIHRoZSB2YWx1ZSB0aGF0IHRoZSBzbGlkZXIgY2FuIGhhdmUuXG4gICovXG4gIEBJbnB1dCgpXG4gIGdldCBzdWZmaXgoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5zdWZmaXhMYWJlbFZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdWZmaXhMYWJlbFZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5zdWZmaXhMYWJlbFZhbHVlID0gJyc7XG4gICAgfVxuICB9XG5cbiAgc2V0IHN1ZmZpeCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zdWZmaXhMYWJlbFZhbHVlID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBPdmVyd3JpdGVzIHRoZSBzdWZmaXggYW5kIGFkZHMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgdmFsdWUgdGhhdCB0aGUgc2xpZGVyIGNhbiBoYXZlLlxuICAqL1xuICBASW5wdXQoKSBpc1ByZWZpeD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVGhlIG1pbmltdW0gdmFsdWUgdGhhdCB0aGUgc2xpZGVyIGNhbiBoYXZlLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAwLlxuICAqL1xuICBASW5wdXQoKVxuICBnZXQgbWluKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMubWluVmFsdWU7XG4gIH1cbiAgc2V0IG1pbih2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKCF2YWx1ZSB8fCB2YWx1ZSA9PT0gdGhpcy5taW5WYWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubWluVmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgY3VzdG9tIGxhYmVsIGZvciB0aGUgbWluaW11bSB2YWx1ZS4gVGhlIGFjdHVhbCB2YWx1ZSBpcyBzdGlsbCBzcGVjaWZpZWQgYnkgbWluIGlucHV0LlxuICAqL1xuICBASW5wdXQoKVxuICBnZXQgbWluTGFiZWwoKTogc3RyaW5nIHwgbnVtYmVyIHtcbiAgICBpZiAodGhpcy5taW5MYWJlbFZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5taW5MYWJlbFZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5taW47XG4gICAgfVxuICB9XG4gIHNldCBtaW5MYWJlbCh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgdGhpcy5taW5MYWJlbFZhbHVlID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgbWF4aW11bSB2YWx1ZSB0aGF0IHRoZSBzbGlkZXIgY2FuIGhhdmUuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDEwMC5cbiAgKi9cbiAgQElucHV0KClcbiAgZ2V0IG1heCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm1heFZhbHVlO1xuICB9XG4gIHNldCBtYXgodmFsdWU6IG51bWJlcikge1xuICAgIGlmICghdmFsdWUgfHwgdmFsdWUgPT09IHRoaXMubWF4VmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm1heFZhbHVlID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIGN1c3RvbSBsYWJlbCBmb3IgdGhlIG1heGltdW0gdmFsdWUuIFRoZSBhY3R1YWwgdmFsdWUgaXMgc3RpbGwgc3BlY2lmaWVkIGJ5IG1heCBpbnB1dC5cbiAgKi9cbiAgQElucHV0KClcbiAgZ2V0IG1heExhYmVsKCk6IHN0cmluZyB8IG51bWJlciB7XG4gICAgaWYgKHRoaXMubWF4TGFiZWxWYWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMubWF4TGFiZWxWYWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMubWF4O1xuICAgIH1cbiAgfVxuICBzZXQgbWF4TGFiZWwodmFsdWU6IHN0cmluZyB8IG51bWJlcikge1xuICAgIHRoaXMubWF4TGFiZWxWYWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVGhlIHZhbHVlcyBhdCB3aGljaCB0aGUgdGh1bWIgd2lsbCBzbmFwXG4gICovXG4gIEBJbnB1dCgpXG4gIGdldCBzdGVwKCk6IG51bWJlciB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnN0ZXBWYWx1ZTtcbiAgfVxuICBzZXQgc3RlcCh2YWx1ZTogbnVtYmVyIHwgbnVsbCkge1xuICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5zdGVwVmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0ZXBWYWx1ZSA9IE51bWJlcih2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBXaGV0aGVyIHRoZSBjb21wb25lbnQgaXMgZGlzYWJsZWRcbiAgKi9cbiAgQElucHV0KClcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRpc2FibGVkVmFsdWU7XG4gIH1cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHZhbHVlID09PSB0aGlzLmRpc2FibGVkVmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zbGlkZXI/Lm5hdGl2ZUVsZW1lbnQgJiYgIXRoaXMubmFzRm9ybUNvbnRyb2xOYW1lKSB7XG4gICAgICB0aGlzLnNsaWRlci5uYXRpdmVFbGVtZW50LmRpc2FibGVkID0gdmFsdWU7XG4gICAgfVxuXG4gICAgdGhpcy5kaXNhYmxlZFZhbHVlID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZXRzIGEgZm9ybUNvbnRyb2xOYW1lIGRpcmVjdGl2ZSB0byB0aGUgaW5wdXQuXG4gICAqIEl0IHJlcXVpcmVzIHRoYXQgdGhlIGNvbnN1bWVyIGluY2x1ZGVkIFJlYWN0aXZlRm9ybXNNb2R1bGUgaW4gaXQncyBtb2R1bGUuXG4gICAqIEl0IHJlcXVpZXJzIHRoYXQgdGhlIG5hc0Zvcm1Hcm91cCBpbnB1dCBpcyBmaWxsZWQuXG4gICovXG4gIEBJbnB1dCgpIG5hc0Zvcm1Db250cm9sTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgYSBmb3JtQ29udHJvbE5hbWUgZGlyZWN0aXZlIHRvIHRoZSBpbnB1dCBvZiByYW5nZS1zbGlkZXIgbWluaW11bSB2YWx1ZS5cbiAgICogSXQgcmVxdWlyZXMgdGhhdCB0aGUgY29uc3VtZXIgaW5jbHVkZWQgUmVhY3RpdmVGb3Jtc01vZHVsZSBpbiBpdCdzIG1vZHVsZS5cbiAgICogSXQgcmVxdWllcnMgdGhhdCB0aGUgbmFzRm9ybUdyb3VwIGlucHV0IGlzIGZpbGxlZC5cbiAgKi9cbiAgQElucHV0KCkgbmFzRm9ybUNvbnRyb2xNaW46IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZXRzIGEgZm9ybUNvbnRyb2xOYW1lIGRpcmVjdGl2ZSB0byB0aGUgaW5wdXQgb2YgcmFuZ2Utc2xpZGVyIG1heGltdW0gdmFsdWUuXG4gICAqIEl0IHJlcXVpcmVzIHRoYXQgdGhlIGNvbnN1bWVyIGluY2x1ZGVkIFJlYWN0aXZlRm9ybXNNb2R1bGUgaW4gaXQncyBtb2R1bGUuXG4gICAqIEl0IHJlcXVpZXJzIHRoYXQgdGhlIG5hc0Zvcm1Hcm91cCBpbnB1dCBpcyBmaWxsZWQuXG4gICovXG4gIEBJbnB1dCgpIG5hc0Zvcm1Db250cm9sTWF4OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQWRkcyB0aGUgcGFyZW50J3MgZm9ybSBncm91cC5cbiAgICogSXQgcmVxdWlyZXMgdGhhdCB0aGUgY29uc3VtZXIgaW5jbHVkZWQgUmVhY3RpdmVGb3Jtc01vZHVsZSBpbiBpdCdzIG1vZHVsZS5cbiAgICogSXQgaXMgcmVxdWllcmVkIHRvIGJlIGZpbGxlZCBpZiBuYXNGb3JtQ29udHJvbE5hbWUgYWRkZWQuXG4gICovXG4gIEBJbnB1dCgpIG5hc0Zvcm1Hcm91cDogRm9ybUdyb3VwO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgT3V0cHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBbiBldmVudCB0aGF0IGlzIGZpcmVkIGV2ZXJ5IHRpbWUgdGhlIHNpbGRlciB2YWx1ZSBjaGFuZ2VzXG4gICovXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyIHwgbnVsbD4oKTtcblxuICAvKipcbiAgICogQHByb3BlcnR5IE91dHB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQW4gZXZlbnQgdGhhdCBpcyBmaXJlZCBldmVyeSB0aW1lIHRoZSBzaWxkZXIgbWluaW11bSB2YWx1ZSBjaGFuZ2VzXG4gICovXG4gIEBPdXRwdXQoKSBzZWxlY3RlZE1pblZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXIgfCBudWxsPigpO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgT3V0cHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBbiBldmVudCB0aGF0IGlzIGZpcmVkIGV2ZXJ5IHRpbWUgdGhlIHNpbGRlciBtYXhpbXVtIHZhbHVlIGNoYW5nZXNcbiAgKi9cbiAgQE91dHB1dCgpIHNlbGVjdGVkTWF4VmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlciB8IG51bGw+KCk7XG5cbiAgaXNSYW5nZTogYm9vbGVhbjtcbiAgc2hvd0J1YmJsZTogYm9vbGVhbjtcbiAgYnViYmxlVmFsdWU6IHN0cmluZyB8IG51bWJlcjtcbiAgaXNJRU9yRWRnZSA9IC9tc2llXFxzfHRyaWRlbnRcXC98ZWRnZVxcLy9pLnRlc3Qod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpO1xuICBzaG93QnViYmxlU3VmZml4OiBib29sZWFuO1xuXG4gIGdldCBzbGlkZXJJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlkID8gdGhpcy5pZCA6IGBuYXMtc2xpZGVyLSR7dGhpcy5jb21wb25lbnRJZH1gO1xuICB9XG5cbiAgZ2V0IGlzQnViYmxlQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzQnViYmxlQWN0aXZlVmFsdWU7XG4gIH1cbiAgc2V0IGlzQnViYmxlQWN0aXZlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgbGV0IHRpbWVvdXQ6IGFueSA9IG51bGw7XG5cbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcblxuICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmlzQnViYmxlQWN0aXZlVmFsdWUgPSBmYWxzZTtcbiAgICAgIH0sIDI1MCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmlzQnViYmxlQWN0aXZlVmFsdWUgPSB0cnVlO1xuICAgICAgfSwgMTAwKTtcbiAgICB9XG4gIH1cblxuICBnZXQgbWlkZGxlTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdW0gPSB0aGlzLm1pbiArIHRoaXMubWF4O1xuICAgIGNvbnN0IG1pZGRsZVN1bSA9IHN1bSAvIDI7XG4gICAgaWYgKHN1bSAlIDIgPT09IDEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gbWlkZGxlU3VtLnRvU3RyaW5nKCk7XG4gIH1cblxuICBnZXQgc2hvd01pbkxhYmVsU3VmZml4KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgKHRoaXMubWluTGFiZWwpID09PSAnbnVtYmVyJztcbiAgfVxuXG4gIGdldCBzaG93TWF4TGFiZWxTdWZmaXgoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiAodGhpcy5tYXhMYWJlbCkgPT09ICdudW1iZXInO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0J1YmJsZUFjdGl2ZVZhbHVlID0gZmFsc2U7XG4gIHByaXZhdGUgdmFsdWVWYWx1ZTogbnVtYmVyIHwgbnVsbDtcbiAgcHJpdmF0ZSBtaW5WYWx1ZSA9IDA7XG4gIHByaXZhdGUgbWF4VmFsdWUgPSAxMDA7XG4gIHByaXZhdGUgcmFuZ2VNYXhWYWx1ZTogbnVtYmVyIHwgbnVsbDtcbiAgcHJpdmF0ZSByYW5nZU1pblZhbHVlOiBudW1iZXIgfCBudWxsO1xuICBwcml2YXRlIG1pbkRpZmZlcmVuY2VSYW5nZSA9IDI7XG4gIHByaXZhdGUgc3RlcFZhbHVlOiBudW1iZXIgfCBudWxsO1xuICBwcml2YXRlIGRpc2FibGVkVmFsdWU6IGJvb2xlYW47XG4gIHByaXZhdGUgY29tcG9uZW50SWQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBpc1ZpZXdJbml0ID0gZmFsc2U7XG4gIHByaXZhdGUgbWluTGFiZWxWYWx1ZTogc3RyaW5nIHwgbnVtYmVyO1xuICBwcml2YXRlIG1heExhYmVsVmFsdWU6IHN0cmluZyB8IG51bWJlcjtcbiAgcHJpdmF0ZSBzdWZmaXhMYWJlbFZhbHVlOiBzdHJpbmc7XG4gIHByaXZhdGUgbWF4U2VsZWN0ZWQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBtaW5TZWxlY3RlZDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHN1cGVyKCduYXMtc2xpZGVyJyk7XG4gICAgdGhpcy5jb21wb25lbnRJZCA9IG5leHRJZCsrO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubmFzRm9ybUdyb3VwICYmIHRoaXMubmFzRm9ybUNvbnRyb2xOYW1lKSB7XG4gICAgICBjb25zdCBzbGlkZXJDb250cm9sID0gdGhpcy5uYXNGb3JtR3JvdXAuZ2V0KHRoaXMubmFzRm9ybUNvbnRyb2xOYW1lKTtcblxuICAgICAgaWYgKCFzbGlkZXJDb250cm9sKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZXhpc3RzKHRoaXMuZGlzYWJsZWQpKSB7XG4gICAgICAgIHNsaWRlckNvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzbGlkZXJDb250cm9sLmVuYWJsZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnZhbHVlID0gc2xpZGVyQ29udHJvbC52YWx1ZTtcblxuICAgICAgc2xpZGVyQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZTogbnVtYmVyIHwgbnVsbCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuZXhpc3RzKHRoaXMuZGlzYWJsZWQpKSB7XG4gICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWN0aXZhdGVCdWJibGUodmFsdWUsICdzbGlkZXInKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm5hc0Zvcm1Hcm91cCAmJiB0aGlzLm5hc0Zvcm1Db250cm9sTWluICYmIHRoaXMubmFzRm9ybUNvbnRyb2xNYXgpIHtcbiAgICAgIGNvbnN0IHNsaWRlck1pbkNvbnRyb2wgPSB0aGlzLm5hc0Zvcm1Hcm91cC5nZXQodGhpcy5uYXNGb3JtQ29udHJvbE1pbik7XG4gICAgICBjb25zdCBzbGlkZXJNYXhDb250cm9sID0gdGhpcy5uYXNGb3JtR3JvdXAuZ2V0KHRoaXMubmFzRm9ybUNvbnRyb2xNYXgpO1xuXG4gICAgICBpZiAoIXNsaWRlck1pbkNvbnRyb2wgfHwgIXNsaWRlck1heENvbnRyb2wpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5leGlzdHModGhpcy5kaXNhYmxlZCkpIHtcbiAgICAgICAgc2xpZGVyTWluQ29udHJvbC5kaXNhYmxlKCk7XG4gICAgICAgIHNsaWRlck1heENvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzbGlkZXJNaW5Db250cm9sLmVuYWJsZSgpO1xuICAgICAgICBzbGlkZXJNYXhDb250cm9sLmVuYWJsZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNlbGVjdGVkTWluVmFsdWUgPSBzbGlkZXJNaW5Db250cm9sLnZhbHVlO1xuICAgICAgdGhpcy5zZWxlY3RlZE1heFZhbHVlID0gc2xpZGVyTWF4Q29udHJvbC52YWx1ZTtcblxuICAgICAgc2xpZGVyTWluQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZTogbnVtYmVyIHwgbnVsbCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuZXhpc3RzKHRoaXMuZGlzYWJsZWQpICYmIHZhbHVlID4gdGhpcy5zZWxlY3RlZE1heFZhbHVlIC0gdGhpcy5taW5EaWZmUmFuZ2UpIHtcbiAgICAgICAgICBzbGlkZXJNaW5Db250cm9sLnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRNaW5WYWx1ZSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYnViYmxlVmFsdWUgPSB0aGlzLnNldEJ1YmJsZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZUJ1YmJsZSh2YWx1ZSwgJ3JhbmdlLXNsaWRlci1taW4nKTtcbiAgICAgIH0pO1xuXG4gICAgICBzbGlkZXJNYXhDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlOiBudW1iZXIgfCBudWxsKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5leGlzdHModGhpcy5kaXNhYmxlZCkgJiYgdmFsdWUgPCB0aGlzLnNlbGVjdGVkTWluVmFsdWUgKyB0aGlzLm1pbkRpZmZSYW5nZSkge1xuICAgICAgICAgIHNsaWRlck1heENvbnRyb2wuc2V0VmFsdWUodGhpcy5zZWxlY3RlZE1heFZhbHVlKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5idWJibGVWYWx1ZSA9IHRoaXMuc2V0QnViYmxlVmFsdWUodmFsdWUpO1xuICAgICAgICB0aGlzLmFjdGl2YXRlQnViYmxlKHZhbHVlLCAncmFuZ2Utc2xpZGVyLW1heCcpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuaXNSYW5nZSA9IHRoaXMuZXhpc3RzKHRoaXMucmFuZ2UpID8gdHJ1ZSA6IGZhbHNlO1xuICAgIHRoaXMuc2hvd0J1YmJsZSA9IGZhbHNlO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5pc1ZpZXdJbml0ID0gdHJ1ZTtcbiAgICB9LCAxMDApO1xuXG4gICAgaWYgKCF0aGlzLnNsaWRlcj8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBkZXRlY3RDaGFuZ2VzID0gZmFsc2U7XG5cbiAgICBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBOdW1iZXIodGhpcy5zbGlkZXIubmF0aXZlRWxlbWVudC5taW4pO1xuICAgICAgZGV0ZWN0Q2hhbmdlcyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkTWluVmFsdWUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRNaW5WYWx1ZSA9IE51bWJlcih0aGlzLnNsaWRlci5uYXRpdmVFbGVtZW50Lm1pbik7XG4gICAgICBkZXRlY3RDaGFuZ2VzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRNYXhWYWx1ZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZE1heFZhbHVlID0gTnVtYmVyKHRoaXMuc2xpZGVyLm5hdGl2ZUVsZW1lbnQubWF4KTtcbiAgICAgIGRldGVjdENoYW5nZXMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5taW4pIHtcbiAgICAgIHRoaXMubWluID0gTnVtYmVyKHRoaXMuc2xpZGVyLm5hdGl2ZUVsZW1lbnQubWluKTtcbiAgICAgIGRldGVjdENoYW5nZXMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5tYXgpIHtcbiAgICAgIHRoaXMubWF4ID0gTnVtYmVyKHRoaXMuc2xpZGVyLm5hdGl2ZUVsZW1lbnQubWF4KTtcbiAgICAgIGRldGVjdENoYW5nZXMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChkZXRlY3RDaGFuZ2VzKSB7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNSYW5nZSAmJiAhdGhpcy5uYXNGb3JtQ29udHJvbE1pbiAmJiAhdGhpcy5uYXNGb3JtQ29udHJvbE1heCAmJiAhdGhpcy5uYXNGb3JtR3JvdXApIHtcbiAgICAgIHRoaXMucmFuZ2VNaW4ubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuc2VsZWN0ZWRNaW5WYWx1ZS50b1N0cmluZygpO1xuICAgICAgdGhpcy5yYW5nZU1heC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdGhpcy5zZWxlY3RlZE1heFZhbHVlLnRvU3RyaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0QnViYmxlU3R5bGUoKTtcbiAgfVxuXG4gIG9uU2xpZGVySW5wdXQoZXZlbnQ6IGFueSwgdHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFldmVudD8udGFyZ2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2hvd0J1YmJsZSA9IHRydWU7XG4gICAgY29uc3QgZXZlbnRWYWx1ZSA9IE51bWJlcihldmVudC50YXJnZXQudmFsdWUpO1xuXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdzbGlkZXInOlxuICAgICAgICB0aGlzLnZhbHVlID0gZXZlbnRWYWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyYW5nZS1zbGlkZXItbWluJzpcbiAgICAgICAgdGhpcy5zZWxlY3RlZE1pblZhbHVlID0gdGhpcy5taW5TZWxlY3RlZCA/IHRoaXMubWluU2VsZWN0ZWQgOiBldmVudFZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3JhbmdlLXNsaWRlci1tYXgnOlxuICAgICAgICB0aGlzLnNlbGVjdGVkTWF4VmFsdWUgPSB0aGlzLm1heFNlbGVjdGVkID8gdGhpcy5tYXhTZWxlY3RlZCA6IGV2ZW50VmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIG9uU2xpZGVyQ2hhbmdlKGV2ZW50OiBhbnksIHR5cGU/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm9uU2xpZGVySW5wdXQoZXZlbnQsIHR5cGUpO1xuICAgIHRoaXMuaXNCdWJibGVBY3RpdmUgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0QnViYmxlU3R5bGUodmFsdWU/OiBudW1iZXIsIHR5cGU/OiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuYnViYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaW5wdXRXaWR0aCA9IHRoaXMuc2xpZGVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRXaWR0aDtcbiAgICBjb25zdCBtaW5WYWx1ZSA9IE51bWJlcih0aGlzLm1pbik7XG4gICAgY29uc3QgbWF4VmFsdWUgPSBOdW1iZXIodGhpcy5tYXgpO1xuICAgIGxldCB2YWx1ZVR5cGU7XG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ3NsaWRlcic6XG4gICAgICAgIHRoaXMuYnViYmxlVmFsdWUgPSB0aGlzLnNldEJ1YmJsZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgdmFsdWVUeXBlID0gdmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncmFuZ2Utc2xpZGVyLW1pbic6XG4gICAgICBjYXNlICdyYW5nZS1zbGlkZXItbWF4JzpcbiAgICAgICAgdmFsdWVUeXBlID0gdmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJhdGlvID0gKHZhbHVlVHlwZSAtIG1pblZhbHVlKSAvIChtYXhWYWx1ZSAtIG1pblZhbHVlKTtcbiAgICBjb25zdCB0aHVtYldpZHRoID0gMzY7XG4gICAgY29uc3QgdGh1bWJIYWxmV2lkdGggPSB0aHVtYldpZHRoIC8gMjtcbiAgICBjb25zdCBsZWZ0ID0gKCgocmF0aW8pICogKChpbnB1dFdpZHRoIC0gdGh1bWJIYWxmV2lkdGgpIC0gdGh1bWJIYWxmV2lkdGgpKSArIHRodW1iSGFsZldpZHRoKSAtIDQ1O1xuXG4gICAgdGhpcy5idWJibGUubmF0aXZlRWxlbWVudC5zdHlsZS5sZWZ0ID0gYCR7bGVmdH1weGA7XG4gIH1cblxuICBwdWJsaWMgb25EaXNwbGF5QnViYmxlKGV2ZW50PzogYW55LCB0eXBlPzogc3RyaW5nKSB7XG4gICAgaWYgKCFldmVudD8udGFyZ2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNWaWV3SW5pdCkge1xuICAgICAgdGhpcy52YWxpZGF0ZVJhbmdlclNsaWRlcihOdW1iZXIoZXZlbnQudGFyZ2V0LnZhbHVlKSwgdHlwZSk7XG4gICAgICB0aGlzLmFjdGl2YXRlQnViYmxlKE51bWJlcihldmVudC50YXJnZXQudmFsdWUpLCB0eXBlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlUmFuZ2VyU2xpZGVyKHZhbHVlOiBudW1iZXIsIHR5cGU6IHN0cmluZykge1xuICAgIGxldCBldmVudFZhbHVlID0gdmFsdWU7XG4gICAgY29uc3QgbWF0aE1pbiA9IE1hdGgubWluKHZhbHVlLCB0aGlzLnNlbGVjdGVkTWF4VmFsdWUgLSB0aGlzLm1pbkRpZmZSYW5nZSk7XG4gICAgY29uc3QgbWF0aE1heCA9IE1hdGgubWF4KHZhbHVlLCB0aGlzLnNlbGVjdGVkTWluVmFsdWUgKyB0aGlzLm1pbkRpZmZSYW5nZSk7XG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ3JhbmdlLXNsaWRlci1taW4nOlxuICAgICAgICB0aGlzLmJ1YmJsZVZhbHVlID0gdGhpcy5zZXRCdWJibGVWYWx1ZShtYXRoTWluKTtcbiAgICAgICAgZXZlbnRWYWx1ZSA9IG1hdGhNaW47XG4gICAgICAgIHRoaXMubWluU2VsZWN0ZWQgPSBldmVudFZhbHVlO1xuICAgICAgICBpZiAoZXZlbnRWYWx1ZSA+PSAodGhpcy5zZWxlY3RlZE1heFZhbHVlIC0gdGhpcy5taW5EaWZmUmFuZ2UpKSB7XG4gICAgICAgICAgdGhpcy5yYW5nZU1pbi5uYXRpdmVFbGVtZW50LnZhbHVlID0gbWF0aE1pbi50b1N0cmluZygpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3JhbmdlLXNsaWRlci1tYXgnOlxuICAgICAgICB0aGlzLmJ1YmJsZVZhbHVlID0gdGhpcy5zZXRCdWJibGVWYWx1ZShtYXRoTWF4KTtcbiAgICAgICAgZXZlbnRWYWx1ZSA9IG1hdGhNYXg7XG4gICAgICAgIHRoaXMubWF4U2VsZWN0ZWQgPSBldmVudFZhbHVlO1xuICAgICAgICBpZiAoZXZlbnRWYWx1ZSA8PSAodGhpcy5zZWxlY3RlZE1pblZhbHVlICsgdGhpcy5taW5EaWZmUmFuZ2UpKSB7XG4gICAgICAgICAgdGhpcy5yYW5nZU1heC5uYXRpdmVFbGVtZW50LnZhbHVlID0gbWF0aE1heC50b1N0cmluZygpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFjdGl2YXRlQnViYmxlKHZhbHVlOiBudW1iZXIsIHR5cGU6IHN0cmluZykge1xuICAgIHRoaXMuc2hvd0J1YmJsZSA9IHRydWU7XG4gICAgdGhpcy5pc0J1YmJsZUFjdGl2ZSA9IHRydWU7XG4gICAgdGhpcy5zZXRCdWJibGVTdHlsZSh2YWx1ZSwgdHlwZSk7XG4gICAgdGhpcy5pc0J1YmJsZUFjdGl2ZSA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRCdWJibGVWYWx1ZSh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHwgbnVtYmVyIHtcbiAgICBpZiAodmFsdWUgPT09IHRoaXMubWluICYmIHR5cGVvZiAodGhpcy5taW5MYWJlbCkgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLnNob3dCdWJibGVTdWZmaXggPSBmYWxzZTtcbiAgICAgIHJldHVybiB0aGlzLm1pbkxhYmVsO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IHRoaXMubWF4ICYmIHR5cGVvZiAodGhpcy5tYXhMYWJlbCkgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLnNob3dCdWJibGVTdWZmaXggPSBmYWxzZTtcbiAgICAgIHJldHVybiB0aGlzLm1heExhYmVsO1xuICAgIH1cbiAgICB0aGlzLnNob3dCdWJibGVTdWZmaXggPSB0cnVlO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG5cbn1cbiIsIjxkaXYgW25hc0NsYXNzXT1cImdldENsYXNzKCd3cmFwcGVyJylcIiAgKm5nSWY9XCIhaXNSYW5nZVwiPlxuICAgIDxkaXYgI2J1YmJsZSBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2J1YmJsZScsIGlzQnViYmxlQWN0aXZlID8gJ2FjdGl2ZScgOiAnJylcIj5cbiAgICAgICAgPHNwYW4gW25hc0NsYXNzXT1cImdldENsYXNzKCdidWJibGUtdmFsdWUnKVwiICpuZ0lmPVwiYnViYmxlVmFsdWUgIT0gbnVsbFwiPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2hvd0J1YmJsZVN1ZmZpeCAmJiBleGlzdHMoaXNQcmVmaXgpXCI+e3tzdWZmaXh9fTwvc3Bhbj57e2J1YmJsZVZhbHVlfX08c3BhbiBcbiAgICAgICAgICAqbmdJZj1cInNob3dCdWJibGVTdWZmaXggJiYgIWV4aXN0cyhpc1ByZWZpeClcIj57e3N1ZmZpeH19PC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFuYXNGb3JtQ29udHJvbE5hbWU7IGVsc2UgcmVhY3RpdmVGb3JtXCI+XG4gICAgICAgIDxsYWJlbD5cbiAgICAgIDxzcGFuIFtuYXNDbGFzc109XCJnZXRDbGFzcygndGl0bGUnKVwiXG4gICAgICAgICpuZ0lmPVwidGl0bGVcIj57e3RpdGxlfX08L3NwYW4+XG4gICAgICA8aW5wdXQgI3NsaWRlclxuICAgICAgICBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ3NsaWRlcicsIGV4aXN0cyhkaXNhYmxlZCkgPyAnZGlzYWJsZWQnIDogJycpXCJcbiAgICAgICAgdHlwZT1cInJhbmdlXCJcbiAgICAgICAgW2lkXT1cInNsaWRlcklkXCJcbiAgICAgICAgW2F0dHIubWluXT1cIm1pblwiXG4gICAgICAgIFthdHRyLm1heF09XCJtYXhcIlxuICAgICAgICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxuICAgICAgICBbYXR0ci52YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAgIFthdHRyLnN1ZmZpeF09XCJzdWZmaXhcIlxuICAgICAgICBbYXR0ci5zdGVwXT1cInN0ZXBcIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWluXT1cIm1pblwiXG4gICAgICAgIFthdHRyLmFyaWEtdmFsdWVtYXhdPVwibWF4XCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW5vd109XCJ2YWx1ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIChpbnB1dCk9XCJvbkRpc3BsYXlCdWJibGUoJGV2ZW50LCdzbGlkZXInKVwiXG4gICAgICAgIChtb3VzZXVwKT1cIm9uU2xpZGVyQ2hhbmdlKCRldmVudCwgJ3NsaWRlcicpXCJcbiAgICAgICAgKHRvdWNoZW5kKT1cIm9uU2xpZGVyQ2hhbmdlKCRldmVudCwgJ3NsaWRlcicpXCJcbiAgICAgICAgKGtleXVwKT1cIm9uU2xpZGVyQ2hhbmdlKCRldmVudCwgJ3NsaWRlcicpXCIgLz5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsYWJlbFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbGFiZWw+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNyZWFjdGl2ZUZvcm0+XG4gICAgICAgIDxsYWJlbCBbZm9ybUdyb3VwXT1cIm5hc0Zvcm1Hcm91cFwiPlxuICAgICAgPHAgW25hc0NsYXNzXT1cImdldENsYXNzKCd0aXRsZScpXCJcbiAgICAgICAgKm5nSWY9XCJ0aXRsZVwiPnt7dGl0bGV9fTwvcD5cbiAgICAgIDxpbnB1dCAjc2xpZGVyXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibmFzRm9ybUNvbnRyb2xOYW1lXCJcbiAgICAgICAgW25hc0NsYXNzXT1cImdldENsYXNzKCdzbGlkZXInLCBuYXNGb3JtR3JvdXA/LmdldChuYXNGb3JtQ29udHJvbE5hbWUpPy5kaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiAnJylcIlxuICAgICAgICB0eXBlPVwicmFuZ2VcIlxuICAgICAgICBbaWRdPVwic2xpZGVySWRcIlxuICAgICAgICBbYXR0ci5taW5dPVwibWluXCJcbiAgICAgICAgW2F0dHIubWF4XT1cIm1heFwiXG4gICAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICAgIFthdHRyLnZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgW2F0dHIuc3VmZml4XT1cInN1ZmZpeFwiXG4gICAgICAgIFthdHRyLnN0ZXBdPVwic3RlcFwiXG4gICAgICAgIFthdHRyLmFyaWEtdmFsdWVtaW5dPVwibWluXCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1heF09XCJtYXhcIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbm93XT1cInZhbHVlXCJcbiAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAoaW5wdXQpPVwib25TbGlkZXJJbnB1dCgkZXZlbnQsICdzbGlkZXInKVwiXG4gICAgICAgIChjaGFuZ2UpPVwib25TbGlkZXJDaGFuZ2UoJGV2ZW50LCAnc2xpZGVyJylcIiBcbiAgICAgICAgLz5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsYWJlbFwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbGFiZWw+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2xhYmVsPlxuICAgICAgICA8ZGl2IFtuYXNDbGFzc109XCJnZXRDbGFzcygnbGFiZWwtd3JhcHBlcicpXCI+XG4gICAgICAgICAgPHNwYW4gW25hc0NsYXNzXT1cImdldENsYXNzKCdsYWJlbCcpXCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNob3dNaW5MYWJlbFN1ZmZpeCAmJiBleGlzdHMoaXNQcmVmaXgpXCI+e3tzdWZmaXh9fTwvc3Bhbj57e21pbkxhYmVsfX08c3BhbiBcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd01pbkxhYmVsU3VmZml4ICYmICFleGlzdHMoaXNQcmVmaXgpXCI+e3tzdWZmaXh9fTwvc3Bhbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gW25hc0NsYXNzXT1cImdldENsYXNzKCdsYWJlbCcsICdtaWRkbGUnKVwiICpuZ0lmPVwibWlkZGxlTGFiZWxcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZXhpc3RzKGlzUHJlZml4KVwiPnt7c3VmZml4fX08L3NwYW4+e3ttaWRkbGVMYWJlbH19PHNwYW4gXG4gICAgICAgICAgICAqbmdJZj1cIiFleGlzdHMoaXNQcmVmaXgpXCI+e3tzdWZmaXh9fTwvc3Bhbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gW25hc0NsYXNzXT1cImdldENsYXNzKCdsYWJlbCcsICdtYXgnKVwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzaG93TWF4TGFiZWxTdWZmaXggJiYgZXhpc3RzKGlzUHJlZml4KVwiPnt7c3VmZml4fX08L3NwYW4+e3ttYXhMYWJlbH19PHNwYW4gXG4gICAgICAgICAgICAqbmdJZj1cInNob3dNYXhMYWJlbFN1ZmZpeCAmJiAhZXhpc3RzKGlzUHJlZml4KVwiPnt7c3VmZml4fX08L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG5cbjxkaXYgW25hc0NsYXNzXT1cImdldENsYXNzKCd3cmFwcGVyLXJhbmdlJylcIiAqbmdJZj1cImlzUmFuZ2UgJiYgIWlzSUVPckVkZ2VcIj5cbiAgPGRpdiAjYnViYmxlIFtuYXNDbGFzc109XCJnZXRDbGFzcygnYnViYmxlJywgaXNCdWJibGVBY3RpdmUgPyAnYWN0aXZlJyA6ICcnKVwiICpuZ0lmPVwic2hvd0J1YmJsZVwiPlxuICAgIDxzcGFuIFtuYXNDbGFzc109XCJnZXRDbGFzcygnYnViYmxlLXZhbHVlJylcIiAqbmdJZj1cImJ1YmJsZVZhbHVlICE9IG51bGxcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwic2hvd0J1YmJsZVN1ZmZpeCAmJiBleGlzdHMoaXNQcmVmaXgpXCI+e3tzdWZmaXh9fTwvc3Bhbj57e2J1YmJsZVZhbHVlfX08c3BhbiBcbiAgICAgICpuZ0lmPVwic2hvd0J1YmJsZVN1ZmZpeCAmJiAhZXhpc3RzKGlzUHJlZml4KVwiPnt7c3VmZml4fX08L3NwYW4+PC9zcGFuPlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFuYXNGb3JtQ29udHJvbE1pbiAmJiAhbmFzRm9ybUNvbnRyb2xNYXg7IGVsc2UgcmVhY3RpdmVGb3JtXCI+XG4gICAgICA8bGFiZWwgPlxuICAgICAgPHNwYW4gW25hc0NsYXNzXT1cImdldENsYXNzKCd0aXRsZScpXCJcbiAgICAgICAgKm5nSWY9XCJ0aXRsZVwiPnt7dGl0bGV9fTwvc3Bhbj5cbiAgICAgICAgPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ3JhbmdlLXNsaWRlcicpXCI+XG4gICAgICAgICAgPGlucHV0ICNzbGlkZXIgI3JhbmdlTWluXG4gICAgICAgICAgICAgIFtuYXNDbGFzc109XCJnZXRDbGFzcygncmFuZ2Utc2xpZGVyLW1pbicsIGV4aXN0cyhkaXNhYmxlZCkgPyAnZGlzYWJsZWQnIDogJycpXCIgXG4gICAgICAgICAgICAgIHR5cGU9XCJyYW5nZVwiXG4gICAgICAgICAgICAgIFtpZF09XCJzbGlkZXJJZFwiXG4gICAgICAgICAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICAgICAgICAgIFthdHRyLnZhbHVlXT1cInNlbGVjdGVkTWluVmFsdWVcIlxuICAgICAgICAgICAgICBbYXR0ci5taW5dPVwibWluXCJcbiAgICAgICAgICAgICAgW2F0dHIubWF4XT1cIm1heFwiXG4gICAgICAgICAgICAgIFthdHRyLnN0ZXBdPVwic3RlcFwiXG4gICAgICAgICAgICAgIFthdHRyLnN1ZmZpeF09XCJzdWZmaXhcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWluXT1cIm1pblwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtdmFsdWVtYXhdPVwibWF4XCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW5vd109XCJzZWxlY3RlZE1pblZhbHVlXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgKGlucHV0KT1cIm9uRGlzcGxheUJ1YmJsZSgkZXZlbnQsJ3JhbmdlLXNsaWRlci1taW4nKVwiXG4gICAgICAgICAgICAgIChtb3VzZXVwKT1cIm9uU2xpZGVyQ2hhbmdlKCRldmVudCwgJ3JhbmdlLXNsaWRlci1taW4nKVwiXG4gICAgICAgICAgICAgICh0b3VjaGVuZCk9XCJvblNsaWRlckNoYW5nZSgkZXZlbnQsICdyYW5nZS1zbGlkZXItbWluJylcIlxuICAgICAgICAgICAgICAoa2V5dXApPVwib25TbGlkZXJDaGFuZ2UoJGV2ZW50LCAncmFuZ2Utc2xpZGVyLW1pbicpXCJcbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICA8aW5wdXQgI3NsaWRlciAjcmFuZ2VNYXhcbiAgICAgICAgICAgIFtuYXNDbGFzc109XCJnZXRDbGFzcygncmFuZ2Utc2xpZGVyLW1heCcsIGV4aXN0cyhkaXNhYmxlZCkgPyAnZGlzYWJsZWQnIDogJycpXCIgXG4gICAgICAgICAgICB0eXBlPVwicmFuZ2VcIlxuICAgICAgICAgICAgW2lkXT1cInNsaWRlcklkXCJcbiAgICAgICAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiIFxuICAgICAgICAgICAgW2F0dHIudmFsdWVdPVwic2VsZWN0ZWRNYXhWYWx1ZVwiXG4gICAgICAgICAgICBbYXR0ci5taW5dPVwibWluXCJcbiAgICAgICAgICAgIFthdHRyLm1heF09XCJtYXhcIlxuICAgICAgICAgICAgW2F0dHIuc3RlcF09XCJzdGVwXCJcbiAgICAgICAgICAgIFthdHRyLnN1ZmZpeF09XCJzdWZmaXhcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCJtaW5cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1heF09XCJtYXhcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW5vd109XCJzZWxlY3RlZE1heFZhbHVlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAoaW5wdXQpPVwib25EaXNwbGF5QnViYmxlKCRldmVudCwncmFuZ2Utc2xpZGVyLW1heCcpXCJcbiAgICAgICAgICAgIChtb3VzZXVwKT1cIm9uU2xpZGVyQ2hhbmdlKCRldmVudCwgJ3JhbmdlLXNsaWRlci1tYXgnKVwiXG4gICAgICAgICAgICAodG91Y2hlbmQpPVwib25TbGlkZXJDaGFuZ2UoJGV2ZW50LCAncmFuZ2Utc2xpZGVyLW1heCcpXCJcbiAgICAgICAgICAgIChrZXl1cCk9XCJvblNsaWRlckNoYW5nZSgkZXZlbnQsICdyYW5nZS1zbGlkZXItbWF4JylcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxhYmVsXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9sYWJlbD5cbiAgPC9uZy1jb250YWluZXI+XG4gXG4gIDxuZy10ZW1wbGF0ZSAjcmVhY3RpdmVGb3JtPlxuICAgIDxsYWJlbCBbZm9ybUdyb3VwXT1cIm5hc0Zvcm1Hcm91cFwiPlxuICAgIDxwIFtuYXNDbGFzc109XCJnZXRDbGFzcygndGl0bGUnKVwiICpuZ0lmPVwidGl0bGVcIj57e3RpdGxlfX08L3A+XG4gICAgPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ3JhbmdlLXNsaWRlcicpXCI+XG4gICAgICA8aW5wdXQgI3NsaWRlciAjcmFuZ2VNaW5cbiAgICAgICAgICBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ3JhbmdlLXNsaWRlci1taW4nLCBleGlzdHMoZGlzYWJsZWQpID8gJ2Rpc2FibGVkJyA6ICcnKVwiIFxuICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibmFzRm9ybUNvbnRyb2xNaW5cIlxuICAgICAgICAgIHR5cGU9XCJyYW5nZVwiXG4gICAgICAgICAgW2lkXT1cInNsaWRlcklkXCJcbiAgICAgICAgICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxuICAgICAgICAgIFthdHRyLnZhbHVlXT1cInNlbGVjdGVkTWluVmFsdWVcIlxuICAgICAgICAgIFthdHRyLm1pbl09XCJtaW5cIlxuICAgICAgICAgIFthdHRyLm1heF09XCJtYXhcIlxuICAgICAgICAgIFthdHRyLnN0ZXBdPVwic3RlcFwiXG4gICAgICAgICAgW2F0dHIuc3VmZml4XT1cInN1ZmZpeFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCJtaW5cIlxuICAgICAgICAgIFthdHRyLmFyaWEtdmFsdWVtYXhdPVwibWF4XCJcbiAgICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbm93XT1cInNlbGVjdGVkTWluVmFsdWVcIlxuICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkVmFsdWUgPyAnJyA6IG51bGxcIlxuICAgICAgICAgIChpbnB1dCk9XCJvblNsaWRlcklucHV0KCRldmVudCwgJ3JhbmdlLXNsaWRlci1taW4nKVwiIFxuICAgICAgICAgIChjaGFuZ2UpPVwib25TbGlkZXJDaGFuZ2UoJGV2ZW50LCAncmFuZ2Utc2xpZGVyLW1pbicpXCJcbiAgICAgICAgLz5cbiAgICAgICAgXG4gICAgICA8aW5wdXQgI3NsaWRlciAjcmFuZ2VNYXhcbiAgICAgICAgW25hc0NsYXNzXT1cImdldENsYXNzKCdyYW5nZS1zbGlkZXItbWF4JywgZXhpc3RzKGRpc2FibGVkKSA/ICdkaXNhYmxlZCcgOiAnJylcIiBcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJuYXNGb3JtQ29udHJvbE1heFwiXG4gICAgICAgIHR5cGU9XCJyYW5nZVwiXG4gICAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiIFxuICAgICAgICBbYXR0ci52YWx1ZV09XCJzZWxlY3RlZE1heFZhbHVlXCJcbiAgICAgICAgW2F0dHIubWluXT1cIm1pblwiXG4gICAgICAgIFthdHRyLm1heF09XCJtYXhcIlxuICAgICAgICBbYXR0ci5zdGVwXT1cInN0ZXBcIlxuICAgICAgICBbYXR0ci5zdWZmaXhdPVwic3VmZml4XCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCJtaW5cIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWF4XT1cIm1heFwiXG4gICAgICAgIFthdHRyLmFyaWEtdmFsdWVub3ddPVwic2VsZWN0ZWRNYXhWYWx1ZVwiXG4gICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkVmFsdWUgPyAnJyA6IG51bGxcIlxuICAgICAgICAoaW5wdXQpPVwib25TbGlkZXJJbnB1dCgkZXZlbnQsICdyYW5nZS1zbGlkZXItbWF4JylcIiBcbiAgICAgICAgKGNoYW5nZSk9XCJvblNsaWRlckNoYW5nZSgkZXZlbnQsICdyYW5nZS1zbGlkZXItbWF4JylcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxhYmVsXCI+PC9uZy1jb250YWluZXI+XG48L2xhYmVsPlxuPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICNsYWJlbD5cbiAgICAgIDxkaXYgW25hc0NsYXNzXT1cImdldENsYXNzKCdsYWJlbC13cmFwcGVyJylcIj5cbiAgICAgICAgICA8c3BhbiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2xhYmVsJylcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2hvd01pbkxhYmVsU3VmZml4ICYmIGV4aXN0cyhpc1ByZWZpeClcIj57e3N1ZmZpeH19PC9zcGFuPnt7bWluTGFiZWx9fTxzcGFuIFxuICAgICAgICAgICAgKm5nSWY9XCJzaG93TWluTGFiZWxTdWZmaXggJiYgIWV4aXN0cyhpc1ByZWZpeClcIj57e3N1ZmZpeH19PC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2xhYmVsJywgJ21pZGRsZScpXCIgKm5nSWY9XCJtaWRkbGVMYWJlbFwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJleGlzdHMoaXNQcmVmaXgpXCI+e3tzdWZmaXh9fTwvc3Bhbj57e21pZGRsZUxhYmVsfX08c3BhbiBcbiAgICAgICAgICAgICpuZ0lmPVwiIWV4aXN0cyhpc1ByZWZpeClcIj57e3N1ZmZpeH19PC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2xhYmVsJywgJ21heCcpXCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNob3dNYXhMYWJlbFN1ZmZpeCAmJiBleGlzdHMoaXNQcmVmaXgpXCI+e3tzdWZmaXh9fTwvc3Bhbj57e21heExhYmVsfX08c3BhbiBcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd01heExhYmVsU3VmZml4ICYmICFleGlzdHMoaXNQcmVmaXgpXCI+e3tzdWZmaXh9fTwvc3Bhbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgXG48L2Rpdj4iXX0=
|
|
@@ -16,9 +16,10 @@ import * as i5 from "../button/button.component";
|
|
|
16
16
|
*/
|
|
17
17
|
export class SortComponent extends NasComponentBase {
|
|
18
18
|
/**
|
|
19
|
+
* @property Input
|
|
19
20
|
* @description
|
|
20
21
|
* popup open set & get.
|
|
21
|
-
|
|
22
|
+
*/
|
|
22
23
|
get open() {
|
|
23
24
|
return this.dropdownOpen;
|
|
24
25
|
}
|
|
@@ -26,9 +27,10 @@ export class SortComponent extends NasComponentBase {
|
|
|
26
27
|
this.dropdownOpen = value;
|
|
27
28
|
}
|
|
28
29
|
/**
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
* @property Input
|
|
31
|
+
* @description
|
|
32
|
+
* checked option set & get.
|
|
33
|
+
*/
|
|
32
34
|
get selectedOption() {
|
|
33
35
|
return this.checkedOptionObject;
|
|
34
36
|
}
|
|
@@ -41,14 +43,16 @@ export class SortComponent extends NasComponentBase {
|
|
|
41
43
|
constructor() {
|
|
42
44
|
super('nas-sort');
|
|
43
45
|
/**
|
|
46
|
+
* @property Output
|
|
44
47
|
* @description
|
|
45
48
|
* Listen for option change events.
|
|
46
|
-
|
|
49
|
+
*/
|
|
47
50
|
this.selectedOptionChange = new EventEmitter();
|
|
48
51
|
/**
|
|
52
|
+
* @property Output
|
|
49
53
|
* @description
|
|
50
54
|
* Listen for apply button click events.
|
|
51
|
-
|
|
55
|
+
*/
|
|
52
56
|
this.applyButtonClicked = new EventEmitter();
|
|
53
57
|
}
|
|
54
58
|
checkSpaceless(option, index) {
|
|
@@ -90,4 +94,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
|
|
|
90
94
|
}], applyButtonClicked: [{
|
|
91
95
|
type: Output
|
|
92
96
|
}] } });
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3NvcnQvc29ydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3NvcnQvc29ydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQzs7Ozs7OztBQUk5Qzs7O0dBR0c7QUFNSCxNQUFNLE9BQU8sYUFBYyxTQUFRLGdCQUFnQjtJQVlqRDs7OztNQUlFO0lBQ0YsSUFDSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUFJLElBQUksQ0FBQyxLQUFjO1FBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7OztNQUlFO0lBQ0YsSUFDSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xDLENBQUM7SUFDRCxJQUFJLGNBQWMsQ0FBQyxNQUF1QjtRQUN4QyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE1BQU0sQ0FBQztJQUNwQyxDQUFDO0lBaUJEO1FBQ0UsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBaEJwQjs7OztVQUlFO1FBQ1EseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7UUFHckU7Ozs7VUFJRTtRQUNRLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFtQixDQUFDO0lBSW5FLENBQUM7SUFFRCxjQUFjLENBQUMsTUFBdUIsRUFBRSxLQUFhO1FBQ25ELElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRTtZQUNwQixPQUFPLElBQUksQ0FBQztTQUNiO2FBQU07WUFDTCxPQUFPLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUM7U0FDNUY7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMseUJBQXlCLEVBQUU7WUFDdEQsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7U0FDbkI7UUFDRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQXVCLEVBQUUsU0FBa0I7UUFDdkQsSUFBSSxTQUFTLEVBQUU7WUFDYixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3hDO1FBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsMkJBQTJCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNyRSxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztTQUNuQjtJQUNILENBQUM7OEdBbkZVLGFBQWE7a0dBQWIsYUFBYSx3UENsQjFCLGdpQ0F1QkE7OzJGRExhLGFBQWE7a0JBTHpCLFNBQVM7K0JBQ0UsVUFBVTswRUFjWCxLQUFLO3NCQUFiLEtBQUs7Z0JBUUYsSUFBSTtzQkFEUCxLQUFLO2dCQWNGLGNBQWM7c0JBRGpCLEtBQUs7Z0JBaUJJLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFRRyxrQkFBa0I7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgTm9yd2VnaWFuIEFpciBTaHV0dGxlLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmFzQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgU29ydE1vZGVsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9zb3J0Lm1vZGVsJztcbmltcG9ydCB7IFNvcnRPcHRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvc29ydC1vcHRpb24ubW9kZWwnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogTm9yd2VnaWFuIFNvcnQgQ29tcG9uZW50IHwgRnVuY3Rpb25hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduYXMtc29ydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zb3J0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc29ydC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNvcnRDb21wb25lbnQgZXh0ZW5kcyBOYXNDb21wb25lbnRCYXNlIHtcblxuICBjaGVja2VkT3B0aW9uT2JqZWN0OiBTb3J0T3B0aW9uTW9kZWw7XG4gIGRyb3Bkb3duT3BlbjogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBtb2RlbCBmb3IgdGhlIHNvcnQgY29tcG9uZW50LiBjb250YWluaW5nIGFsbCBzb3J0IG9wdGlvbnMgYW5kIHJlbGF0ZWQgbWV0YSBkYXRhLlxuICAqL1xuICBASW5wdXQoKSBtb2RlbDogU29ydE1vZGVsO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIHBvcHVwIG9wZW4gc2V0ICYgZ2V0LlxuICAqL1xuICBASW5wdXQoKVxuICBnZXQgb3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kcm9wZG93bk9wZW47XG4gIH1cbiAgc2V0IG9wZW4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRyb3Bkb3duT3BlbiA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogY2hlY2tlZCBvcHRpb24gc2V0ICYgZ2V0LlxuICAqL1xuICBASW5wdXQoKVxuICBnZXQgc2VsZWN0ZWRPcHRpb24oKTogU29ydE9wdGlvbk1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5jaGVja2VkT3B0aW9uT2JqZWN0O1xuICB9XG4gIHNldCBzZWxlY3RlZE9wdGlvbihvcHRpb246IFNvcnRPcHRpb25Nb2RlbCkge1xuICAgIGlmICghb3B0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jaGVja2VkT3B0aW9uT2JqZWN0ID0gb3B0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBPdXRwdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIExpc3RlbiBmb3Igb3B0aW9uIGNoYW5nZSBldmVudHMuXG4gICovXG4gIEBPdXRwdXQoKSBzZWxlY3RlZE9wdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U29ydE9wdGlvbk1vZGVsPigpO1xuXG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBPdXRwdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIExpc3RlbiBmb3IgYXBwbHkgYnV0dG9uIGNsaWNrIGV2ZW50cy5cbiAgKi9cbiAgQE91dHB1dCgpIGFwcGx5QnV0dG9uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8U29ydE9wdGlvbk1vZGVsPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCduYXMtc29ydCcpO1xuICB9XG5cbiAgY2hlY2tTcGFjZWxlc3Mob3B0aW9uOiBTb3J0T3B0aW9uTW9kZWwsIGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAob3B0aW9uLnNwYWNlbGVzcykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBpbmRleCA9PT0gdGhpcy5tb2RlbC5zb3J0T3B0aW9ucy5sZW5ndGggLSAxICYmICF0aGlzLm1vZGVsLmFwcGx5QnV0dG9uTGFiZWw/Lmxlbmd0aDtcbiAgICB9XG4gIH1cblxuICBhcHBseUJ1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1vZGVsICYmIHRoaXMubW9kZWwuY2xvc2VEcm9wZG93bk9uQXBwbHlDbGljaykge1xuICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuYXBwbHlCdXR0b25DbGlja2VkLmVtaXQodGhpcy5zZWxlY3RlZE9wdGlvbik7XG4gIH1cblxuICBvcHRpb25DaGFuZ2VkKG9wdGlvbjogU29ydE9wdGlvbk1vZGVsLCBpc0NoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoaXNDaGVja2VkKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uQ2hhbmdlLmVtaXQob3B0aW9uKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubW9kZWwgJiYgdGhpcy5tb2RlbC5jbG9zZURyb3Bkb3duT25PcHRpb25DaGFuZ2UgJiYgdGhpcy5vcGVuKSB7XG4gICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICB9XG4gIH1cblxufVxuIiwiPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q29udGFpbmVyQ2xhc3MoJycsIGV4aXN0cyhtb2RlbD8ucmlnaHQpICYmICdyaWdodCcpXCIgKm5nSWY9XCJtb2RlbFwiPlxuICA8bmFzLWRyb3Bkb3duIFtsYWJlbF09XCJtb2RlbD8ubGFiZWxcIiBbKG9wZW4pXT1cIm9wZW5cIj5cbiAgICA8bmFzLXJhZGlvXG4gICAgYmxvY2tcbiAgICBbbmFtZV09XCJtb2RlbD8ubmFtZVwiXG4gICAgW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBtb2RlbD8uc29ydE9wdGlvbnM7IGxldCBvcHRpb25JbmRleCA9IGluZGV4XCJcbiAgICBbbmFzRm9ybUNvbnRyb2xOYW1lXT1cIm9wdGlvbj8ubmFzRm9ybUNvbnRyb2xOYW1lXCJcbiAgICBbbmFzRm9ybUdyb3VwXT1cIm9wdGlvbj8ubmFzRm9ybUdyb3VwXCJcbiAgICBbcmVxdWlyZWRdPVwiZXhpc3RzKG9wdGlvbj8ucmVxdWlyZWQpXCJcbiAgICBbc3BhY2VsZXNzXT1cImNoZWNrU3BhY2VsZXNzKG9wdGlvbiwgb3B0aW9uSW5kZXgpXCJcbiAgICBbc3Ryb25nXT1cImV4aXN0cyhvcHRpb24/LnN0cm9uZylcIlxuICAgIFt0YWJJbmRleF09XCJvcHRpb24/LnRhYkluZGV4XCJcbiAgICBbZGlzYWJsZWRdPVwiZXhpc3RzKG9wdGlvbj8uZGlzYWJsZWQpXCJcbiAgICBbZXJyb3JdPVwiZXhpc3RzKG9wdGlvbj8uZXJyb3IpXCJcbiAgICBbY2hlY2tlZF09XCJzZWxlY3RlZE9wdGlvbj8udmFsdWUgPT09IG9wdGlvbj8udmFsdWVcIlxuICAgIChjaGVja2VkQ2hhbmdlKT1cIm9wdGlvbkNoYW5nZWQob3B0aW9uLCAkZXZlbnQpXCJcbiAgICA+XG4gICAgICB7e29wdGlvbi50aXRsZX19XG4gICAgPC9uYXMtcmFkaW8+XG4gICAgICA8bmFzLWJ1dHRvbiAqbmdJZj1cIm1vZGVsPy5hcHBseUJ1dHRvbkxhYmVsICYmIG1vZGVsPy5hcHBseUJ1dHRvbkxhYmVsLmxlbmd0aFwiIHByaW1hcnkgY29tcGFjdCBzcGFjZWxlc3MgKGNsaWNrKT1cImFwcGx5QnV0dG9uQ2xpY2soKVwiPnt7bW9kZWw/LmFwcGx5QnV0dG9uTGFiZWx9fTwvbmFzLWJ1dHRvbj5cbiAgPC9uYXMtZHJvcGRvd24+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -9,13 +9,12 @@ import * as i2 from "../../core/directives/nas-class/nas-class.directive";
|
|
|
9
9
|
*/
|
|
10
10
|
export class SpinnerComponent extends NasComponentBase {
|
|
11
11
|
/**
|
|
12
|
+
* @property Input
|
|
12
13
|
* @description
|
|
13
14
|
* Enables the spinner after 500ms. If false again within 500ms, the spinner will not be displayed at all.
|
|
14
15
|
* @example
|
|
15
|
-
* ```html
|
|
16
16
|
* <nas-spinner [enable]="enable"></nas-spinner>
|
|
17
|
-
|
|
18
|
-
*/
|
|
17
|
+
*/
|
|
19
18
|
get enable() {
|
|
20
19
|
return this.enableValue;
|
|
21
20
|
}
|
|
@@ -24,13 +23,12 @@ export class SpinnerComponent extends NasComponentBase {
|
|
|
24
23
|
this.setEnabled(this.enableValue);
|
|
25
24
|
}
|
|
26
25
|
/**
|
|
26
|
+
* @property Input
|
|
27
27
|
* @descriptionp
|
|
28
28
|
* Sets the number of seconds to wait before showing the refresh link.
|
|
29
29
|
* @example
|
|
30
|
-
* ```html
|
|
31
30
|
* <nas-spinner [refresh]="10"></nas-spinner>
|
|
32
|
-
|
|
33
|
-
*/
|
|
31
|
+
*/
|
|
34
32
|
get refresh() {
|
|
35
33
|
return this.refreshSecondValue;
|
|
36
34
|
}
|
|
@@ -44,17 +42,14 @@ export class SpinnerComponent extends NasComponentBase {
|
|
|
44
42
|
super('nas-spinner');
|
|
45
43
|
this.renderer = renderer;
|
|
46
44
|
/**
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
* <nas-select [blockScrolling]="true"></nas-select>
|
|
56
|
-
* ```
|
|
57
|
-
*/
|
|
45
|
+
* @property Input
|
|
46
|
+
* @description
|
|
47
|
+
* Block page scrolling.
|
|
48
|
+
* @example
|
|
49
|
+
* <nas-select blockScrolling></nas-select>
|
|
50
|
+
* or
|
|
51
|
+
* <nas-select [blockScrolling]="true"></nas-select>
|
|
52
|
+
*/
|
|
58
53
|
this.blockScrolling = true;
|
|
59
54
|
}
|
|
60
55
|
ngOnInit() {
|
|
@@ -109,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
|
|
|
109
104
|
}], blockScrolling: [{
|
|
110
105
|
type: Input
|
|
111
106
|
}] } });
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3NwaW5uZXIvc3Bpbm5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3NwaW5uZXIvc3Bpbm5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFdkYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFDOzs7O0FBRTlDOzs7RUFHRTtBQU9GLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxnQkFBZ0I7SUErQ3BEOzs7Ozs7TUFNRTtJQUNGLElBQ0ksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsTUFBZTtRQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7OztNQU1FO0lBQ0YsSUFDSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDakMsQ0FBQztJQUNELElBQUksT0FBTyxDQUFDLEtBQWE7UUFDdkIsSUFBSSxLQUFLLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDakMsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztJQUNsQyxDQUFDO0lBYUQsWUFBb0IsUUFBbUI7UUFDckMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBREgsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQVh2Qzs7Ozs7Ozs7VUFRRTtRQUNPLG1CQUFjLEdBQUcsSUFBSSxDQUFDO0lBSS9CLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVPLFVBQVUsQ0FBQyxPQUFnQjtRQUNqQyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUU3QixJQUFJLE9BQU8sRUFBRTtZQUNYLElBQUksQ0FBQyxjQUFjLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDcEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7Z0JBQ3hCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtvQkFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO2lCQUMxRDtZQUNILENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUVSLElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLEVBQUU7Z0JBQ2hELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUN2QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztnQkFDOUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsQ0FBQzthQUNwQztTQUNGO2FBQU07WUFDTCxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ2xDLFlBQVksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUVyQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUN6QixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztZQUU3QixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLENBQUMsQ0FBQzthQUM3RDtTQUNGO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzNCLENBQUM7OEdBbklVLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLDRPQ2Q3Qiw2YkFTQTs7MkZES2EsZ0JBQWdCO2tCQU41QixTQUFTOytCQUNFLGFBQWEsaUJBR1IsaUJBQWlCLENBQUMsSUFBSTtnR0FnQjVCLElBQUk7c0JBQVosS0FBSztnQkFTRyxXQUFXO3NCQUFuQixLQUFLO2dCQVdHLEtBQUs7c0JBQWIsS0FBSztnQkFXRyxPQUFPO3NCQUFmLEtBQUs7Z0JBVUYsTUFBTTtzQkFEVCxLQUFLO2dCQWlCRixPQUFPO3NCQURWLEtBQUs7Z0JBb0JHLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiwgUmVuZGVyZXIyLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTmFzQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uL2NvcmUnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogTm9yd2VnaWFuIFNwaW5uZXIgQ29tcG9uZW50IHwgTGF5b3V0XG4qL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmFzLXNwaW5uZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc3Bpbm5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NwaW5uZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgU3Bpbm5lckNvbXBvbmVudCBleHRlbmRzIE5hc0NvbXBvbmVudEJhc2UgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIGVuYWJsZVZhbHVlOiBib29sZWFuO1xuICBwcml2YXRlIGxvYWRpbmdUaW1lb3V0OiBhbnk7XG4gIHByaXZhdGUgcmVmcmVzaExpbmtUaW1vdXQ6IGFueTtcbiAgcHVibGljIHNob3dSZWZyZXNoTGluazogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWZyZXNoU2Vjb25kVmFsdWU6IG51bWJlcjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBbiBpbmZvcm1hdGlvbiBtZXNzYWdlIHRoYXQgaXMgZGlzcGxheWVkIG9uIHRoZSBzcGlubmVyLlxuICAgKiBAZXhhbXBsZVxuICAgKiA8bmFzLXNwaW5uZXIgW3RleHRdPVwidGV4dFwiPjwvbmFzLXNwaW5uZXI+XG4gICovXG4gIEBJbnB1dCgpIHRleHQ6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBbiBpbmZvcm1hdGlvbiBtZXNzYWdlIHRoYXQgaXMgZGlzcGxheWVkIG9uIHRoZSByZWZyZXNoIGxpbmsuXG4gICAqIEBleGFtcGxlXG4gICAqIDxuYXMtc3Bpbm5lciBbcmVmcmVzaFRleHRdPVwidGV4dFwiPjwvbmFzLXNwaW5uZXI+XG4gICovXG4gIEBJbnB1dCgpIHJlZnJlc2hUZXh0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0cyBzbWFsbCBzdHlsaW5nLlxuICAgKiBAZXhhbXBsZVxuICAgKiA8bmFzLXNlbGVjdCBzbWFsbD48L25hcy1zZWxlY3Q+XG4gICAqIG9yXG4gICAqIDxuYXMtc2VsZWN0IFtzbWFsbF09XCJ0cnVlXCI+PC9uYXMtc2VsZWN0PlxuICAqL1xuICBASW5wdXQoKSBzbWFsbD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0cyBvdmVybGF5IHN0eWxpbmcuXG4gICAqIEBleGFtcGxlXG4gICAqIDxuYXMtc2VsZWN0IG92ZXJsYXk+PC9uYXMtc2VsZWN0PlxuICAgKiBvclxuICAgKiA8bmFzLXNlbGVjdCBbb3ZlcmxheV09XCJ0cnVlXCI+PC9uYXMtc2VsZWN0PlxuICAqL1xuICBASW5wdXQoKSBvdmVybGF5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBFbmFibGVzIHRoZSBzcGlubmVyIGFmdGVyIDUwMG1zLiBJZiBmYWxzZSBhZ2FpbiB3aXRoaW4gNTAwbXMsIHRoZSBzcGlubmVyIHdpbGwgbm90IGJlIGRpc3BsYXllZCBhdCBhbGwuXG4gICAqIEBleGFtcGxlXG4gICAqIDxuYXMtc3Bpbm5lciBbZW5hYmxlXT1cImVuYWJsZVwiPjwvbmFzLXNwaW5uZXI+XG4gICovXG4gIEBJbnB1dCgpXG4gIGdldCBlbmFibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZW5hYmxlVmFsdWU7XG4gIH1cbiAgc2V0IGVuYWJsZShlbmFibGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmVuYWJsZVZhbHVlID0gZW5hYmxlO1xuICAgIHRoaXMuc2V0RW5hYmxlZCh0aGlzLmVuYWJsZVZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9ucFxuICAgKiBTZXRzIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyB0byB3YWl0IGJlZm9yZSBzaG93aW5nIHRoZSByZWZyZXNoIGxpbmsuXG4gICAqIEBleGFtcGxlXG4gICAqIDxuYXMtc3Bpbm5lciBbcmVmcmVzaF09XCIxMFwiPjwvbmFzLXNwaW5uZXI+XG4gICovXG4gIEBJbnB1dCgpXG4gIGdldCByZWZyZXNoKCkge1xuICAgIHJldHVybiB0aGlzLnJlZnJlc2hTZWNvbmRWYWx1ZTtcbiAgfVxuICBzZXQgcmVmcmVzaCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHZhbHVlID09PSAwIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucmVmcmVzaFNlY29uZFZhbHVlID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBCbG9jayBwYWdlIHNjcm9sbGluZy5cbiAgICogQGV4YW1wbGVcbiAgICogPG5hcy1zZWxlY3QgYmxvY2tTY3JvbGxpbmc+PC9uYXMtc2VsZWN0PlxuICAgKiBvclxuICAgKiA8bmFzLXNlbGVjdCBbYmxvY2tTY3JvbGxpbmddPVwidHJ1ZVwiPjwvbmFzLXNlbGVjdD5cbiAgKi9cbiAgQElucHV0KCkgYmxvY2tTY3JvbGxpbmcgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge1xuICAgIHN1cGVyKCduYXMtc3Bpbm5lcicpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRFbmFibGVkKHRoaXMuZW5hYmxlVmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRFbmFibGVkKGVuYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNob3dSZWZyZXNoTGluayA9IGZhbHNlO1xuXG4gICAgaWYgKGVuYWJsZWQpIHtcbiAgICAgIHRoaXMubG9hZGluZ1RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5lbmFibGVWYWx1ZSA9IHRydWU7XG4gICAgICAgIGlmICh0aGlzLmJsb2NrU2Nyb2xsaW5nKSB7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhkb2N1bWVudC5ib2R5LCAnYmxvY2stc2Nyb2xsaW5nJyk7XG4gICAgICAgIH1cbiAgICAgIH0sIDUwMCk7XG5cbiAgICAgIGlmICh0aGlzLnJlZnJlc2ggPiAwICYmIHRoaXMucmVmcmVzaFRleHQgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLnJlZnJlc2hMaW5rVGltb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zaG93UmVmcmVzaExpbmsgPSB0cnVlO1xuICAgICAgICB9LCB0aGlzLnJlZnJlc2hTZWNvbmRWYWx1ZSAqIDEwMDApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5sb2FkaW5nVGltZW91dCk7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5yZWZyZXNoTGlua1RpbW91dCk7XG5cbiAgICAgIHRoaXMuZW5hYmxlVmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2hvd1JlZnJlc2hMaW5rID0gZmFsc2U7XG5cbiAgICAgIGlmICh0aGlzLmJsb2NrU2Nyb2xsaW5nKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZG9jdW1lbnQuYm9keSwgJ2Jsb2NrLXNjcm9sbGluZycpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlZnJlc2hQYWdlKCkge1xuICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgfVxufVxuIiwiPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJycsIFtleGlzdHMob3ZlcmxheSkgJiYgJ292ZXJsYXknLCBleGlzdHMoc21hbGwpICYmICdzbWFsbCddKVwiICpuZ0lmPVwiZW5hYmxlXCI+XG4gIDxzcGFuIFtuYXNDbGFzc109XCJnZXRDbGFzcygnYm94JylcIj5cbiAgICA8c3BhbiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2JvcmRlcicpXCI+PC9zcGFuPlxuICA8L3NwYW4+XG4gIDxkaXYgKm5nSWY9XCJ0ZXh0XCIgW25hc0NsYXNzXT1cImdldENsYXNzKCd0ZXh0JylcIj5cbiAgICA8ZGl2Pnt7dGV4dH19PC9kaXY+XG4gICAgPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ3JlZnJlc2gnKVwiICpuZ0lmPVwic2hvd1JlZnJlc2hMaW5rXCIgKGNsaWNrKT1cInJlZnJlc2hQYWdlKClcIj4gPGE+IHt7cmVmcmVzaFRleHR9fSA8L2E+PC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|