@fundamental-ngx/core 0.36.1-rc.5 → 0.36.1-rc.6
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/action-bar/package.json +1 -1
- package/action-sheet/package.json +1 -1
- package/alert/package.json +1 -1
- package/avatar/package.json +1 -1
- package/avatar-group/package.json +1 -1
- package/bar/package.json +1 -1
- package/breadcrumb/package.json +1 -1
- package/busy-indicator/package.json +1 -1
- package/button/package.json +1 -1
- package/calendar/package.json +1 -1
- package/card/package.json +1 -1
- package/carousel/package.json +1 -1
- package/checkbox/package.json +1 -1
- package/combobox/package.json +1 -1
- package/content-density/package.json +2 -2
- package/date-picker/package.json +1 -1
- package/datetime/package.json +1 -1
- package/datetime-picker/package.json +1 -1
- package/dialog/package.json +1 -1
- package/dynamic-page/package.json +1 -1
- package/dynamic-side-content/package.json +1 -1
- package/esm2020/time/time-column/time-column.component.mjs +45 -3
- package/facets/package.json +1 -1
- package/feed-input/package.json +1 -1
- package/feed-list-item/package.json +1 -1
- package/fesm2015/fundamental-ngx-core-time.mjs +44 -2
- package/fesm2015/fundamental-ngx-core-time.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-time.mjs +44 -2
- package/fesm2020/fundamental-ngx-core-time.mjs.map +1 -1
- package/file-uploader/package.json +1 -1
- package/fixed-card-layout/package.json +1 -1
- package/flexible-column-layout/package.json +1 -1
- package/form/package.json +1 -1
- package/formatted-text/package.json +1 -1
- package/grid-list/package.json +1 -1
- package/icon/package.json +1 -1
- package/illustrated-message/package.json +1 -1
- package/infinite-scroll/package.json +1 -1
- package/info-label/package.json +1 -1
- package/inline-help/package.json +1 -1
- package/input-group/package.json +1 -1
- package/layout-grid/package.json +1 -1
- package/layout-panel/package.json +1 -1
- package/link/package.json +1 -1
- package/list/package.json +1 -1
- package/menu/package.json +1 -1
- package/message-box/package.json +1 -1
- package/message-strip/package.json +1 -1
- package/message-toast/package.json +1 -1
- package/micro-process-flow/package.json +1 -1
- package/mobile-mode/package.json +1 -1
- package/multi-input/package.json +1 -1
- package/nested-list/package.json +1 -1
- package/notification/package.json +1 -1
- package/object-identifier/package.json +1 -1
- package/object-marker/package.json +1 -1
- package/object-number/package.json +1 -1
- package/object-status/package.json +1 -1
- package/overflow-layout/package.json +4 -4
- package/package.json +2 -2
- package/pagination/package.json +1 -1
- package/panel/package.json +1 -1
- package/popover/package.json +1 -1
- package/product-switch/package.json +1 -1
- package/progress-indicator/package.json +1 -1
- package/quick-view/package.json +1 -1
- package/radio/package.json +1 -1
- package/rating-indicator/package.json +1 -1
- package/resizable-card-layout/package.json +1 -1
- package/scroll-spy/package.json +1 -1
- package/scrollbar/package.json +1 -1
- package/segmented-button/package.json +1 -1
- package/select/package.json +1 -1
- package/shared/package.json +1 -1
- package/shellbar/package.json +1 -1
- package/side-navigation/package.json +1 -1
- package/slider/package.json +1 -1
- package/split-button/package.json +1 -1
- package/splitter/package.json +1 -1
- package/status-indicator/package.json +1 -1
- package/step-input/package.json +1 -1
- package/switch/package.json +1 -1
- package/table/package.json +1 -1
- package/tabs/package.json +1 -1
- package/text/package.json +1 -1
- package/theming/package.json +1 -1
- package/tile/package.json +1 -1
- package/time/esm2020/time-column/time-column.component.mjs +45 -3
- package/time/fesm2015/fundamental-ngx-core-time.mjs +44 -2
- package/time/fesm2015/fundamental-ngx-core-time.mjs.map +1 -1
- package/time/fesm2020/fundamental-ngx-core-time.mjs +44 -2
- package/time/fesm2020/fundamental-ngx-core-time.mjs.map +1 -1
- package/time/package.json +1 -1
- package/time/time-column/time-column.component.d.ts +20 -0
- package/time-picker/package.json +1 -1
- package/timeline/package.json +1 -1
- package/title/package.json +1 -1
- package/token/package.json +1 -1
- package/toolbar/package.json +1 -1
- package/tree/package.json +1 -1
- package/upload-collection/package.json +1 -1
- package/utils/package.json +1 -1
- package/vertical-navigation/package.json +1 -1
- package/wizard/package.json +1 -1
package/action-bar/package.json
CHANGED
package/alert/package.json
CHANGED
package/avatar/package.json
CHANGED
package/bar/package.json
CHANGED
package/breadcrumb/package.json
CHANGED
package/button/package.json
CHANGED
package/calendar/package.json
CHANGED
package/card/package.json
CHANGED
package/carousel/package.json
CHANGED
package/checkbox/package.json
CHANGED
package/combobox/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fundamental-ngx/core/content-density",
|
|
3
|
-
"version": "0.36.1-rc.
|
|
3
|
+
"version": "0.36.1-rc.6",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "^14.0.0",
|
|
6
6
|
"@angular/core": "^14.0.0",
|
|
7
7
|
"rxjs": "7.5.6",
|
|
8
8
|
"@angular/cdk": "14.0.2",
|
|
9
|
-
"@fundamental-ngx/core/utils": "0.36.1-rc.
|
|
9
|
+
"@fundamental-ngx/core/utils": "0.36.1-rc.6"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"tslib": "^2.0.0"
|
package/date-picker/package.json
CHANGED
package/datetime/package.json
CHANGED
package/dialog/package.json
CHANGED
|
@@ -52,6 +52,10 @@ export class TimeColumnComponent {
|
|
|
52
52
|
this._resize$ = new BehaviorSubject(false);
|
|
53
53
|
/** @hidden */
|
|
54
54
|
this._subscriptions = new Subscription();
|
|
55
|
+
/** @hidden
|
|
56
|
+
* logs numeric key inputs to set time using keyboard input.
|
|
57
|
+
*/
|
|
58
|
+
this._keyLog = [];
|
|
55
59
|
this._subscriptions.add(combineLatest([this._viewInit$, this._elementsAtOnce$, this._offset$, this._resize$])
|
|
56
60
|
.pipe(filter(([viewInit]) => viewInit), tap(([, elementsAtOnce, offset]) => {
|
|
57
61
|
const averageHeight = this.items.toArray().reduce((acc, next) => acc + next.getHeight(), 0) / this.items.length;
|
|
@@ -154,8 +158,11 @@ export class TimeColumnComponent {
|
|
|
154
158
|
this.scrollUp();
|
|
155
159
|
event.preventDefault();
|
|
156
160
|
}
|
|
157
|
-
else if (KeyUtil.isKeyType(event, 'numeric')
|
|
158
|
-
this.
|
|
161
|
+
else if (KeyUtil.isKeyType(event, 'numeric')) {
|
|
162
|
+
this._numericKeyInputHandler(event);
|
|
163
|
+
}
|
|
164
|
+
else if (KeyUtil.isKeyType(event, 'alphabetical')) {
|
|
165
|
+
this._alphaKeyInputHandler(event);
|
|
159
166
|
}
|
|
160
167
|
}
|
|
161
168
|
/** @hidden */
|
|
@@ -257,6 +264,41 @@ export class TimeColumnComponent {
|
|
|
257
264
|
_onFocusIndicator() {
|
|
258
265
|
this.activeStateChange.emit();
|
|
259
266
|
}
|
|
267
|
+
/** @hidden
|
|
268
|
+
* handles alphabetical key inputs to set period.
|
|
269
|
+
*/
|
|
270
|
+
_alphaKeyInputHandler(event) {
|
|
271
|
+
if (event.key.toLowerCase() === 'a') {
|
|
272
|
+
this._pickTimeOnValue('AM');
|
|
273
|
+
}
|
|
274
|
+
else if (event.key.toLowerCase() === 'p') {
|
|
275
|
+
this._pickTimeOnValue('PM');
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
/** @hidden
|
|
279
|
+
* handles numeric key inputs to set time.
|
|
280
|
+
*/
|
|
281
|
+
_numericKeyInputHandler(event) {
|
|
282
|
+
const lastItemValue = this.items.last.value.value; // value of last item in column
|
|
283
|
+
this._numericInputTimeout && clearTimeout(this._numericInputTimeout);
|
|
284
|
+
this._keyLog.push(event.key);
|
|
285
|
+
const inputValue = parseInt(this._keyLog.join(''), 10); // converts keyLog elements to a number
|
|
286
|
+
if (inputValue * 10 > lastItemValue || this._keyLog.length === lastItemValue.toString().length) {
|
|
287
|
+
this._pickTimeOnValue(inputValue);
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
this._numericInputTimeout = setTimeout(() => {
|
|
291
|
+
this._pickTimeOnValue(inputValue);
|
|
292
|
+
}, 500);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
/** @hidden
|
|
296
|
+
* set the time for given item value. used by _numericKeyInputHandler.
|
|
297
|
+
*/
|
|
298
|
+
_pickTimeOnValue(value) {
|
|
299
|
+
this._pickTime(this.items.find((item) => item.value.value === value), false, true, false);
|
|
300
|
+
this._keyLog = []; // clear key log
|
|
301
|
+
}
|
|
260
302
|
/**
|
|
261
303
|
* Method triggered by keyboard, or decrement button
|
|
262
304
|
* Args:
|
|
@@ -436,4 +478,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
|
|
|
436
478
|
type: HostListener,
|
|
437
479
|
args: ['wheel', ['$event']]
|
|
438
480
|
}] } });
|
|
439
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1jb2x1bW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdGltZS90aW1lLWNvbHVtbi90aW1lLWNvbHVtbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90aW1lL3RpbWUtY29sdW1uL3RpbWUtY29sdW1uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFDTixTQUFTLEVBRVQsU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RSxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXBFLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN4RSxPQUFPLEVBQWtCLGlCQUFpQixFQUFFLHFCQUFxQixFQUFnQixNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7QUFNeEgsSUFBSSxrQkFBa0IsR0FBRyxDQUFDLENBQUM7QUFpQjNCLE1BQU0sT0FBTyxtQkFBbUI7SUE2SjVCLGNBQWM7SUFDZCxZQUFvQixhQUFnQyxFQUFVLE9BQW1CO1FBQTdELGtCQUFhLEdBQWIsYUFBYSxDQUFtQjtRQUFVLFlBQU8s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RmpCLGlCQUFpQixvSEFRSSxVQUFVLHdDQUo1QixxQkFBcUIscUVDakp2QyxrNUdBZ0dBOzJGRGhEYSxtQkFBbUI7a0JBVi9CLFNBQVM7K0JBQ0ksZ0JBQWdCLG1CQUdULHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0YsS0FBSyxFQUFFLGNBQWM7cUJBQ3hCO2lJQU9ELElBQUk7c0JBREgsS0FBSztnQkFRTixRQUFRO3NCQURQLEtBQUs7Z0JBS0YsV0FBVztzQkFEZCxLQUFLO2dCQWtCRixNQUFNO3NCQURULEtBQUs7Z0JBaUJOLFFBQVE7c0JBRlAsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyw0QkFBNEI7Z0JBS3pDLEVBQUU7c0JBREQsS0FBSztnQkFLTixVQUFVO3NCQURULEtBQUs7Z0JBS04sd0JBQXdCO3NCQUR2QixLQUFLO2dCQVFGLE1BQU07c0JBRFQsS0FBSztnQkFhRixjQUFjO3NCQURqQixLQUFLO2dCQU9OLGlCQUFpQjtzQkFEaEIsTUFBTTtnQkFLUCxpQkFBaUI7c0JBRGhCLE1BQU07Z0JBS1AsUUFBUTtzQkFEUCxTQUFTO3VCQUFDLGlCQUFpQjtnQkFLNUIsS0FBSztzQkFESixZQUFZO3VCQUFDLHFCQUFxQjtnQkFLbkMsU0FBUztzQkFEUixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBcUg1QyxXQUFXO3NCQURWLFlBQVk7dUJBQUMsT0FBTztnQkFPckIsY0FBYztzQkFEYixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFlbkMsa0JBQWtCO3NCQURqQixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGJ1ZmZlciwgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRE9XTl9BUlJPVywgU1BBQ0UsIFVQX0FSUk9XIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcblxuaW1wb3J0IHsgS2V5VXRpbCwgcmVzaXplT2JzZXJ2YWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS91dGlscyc7XG5pbXBvcnQgeyBDYXJvdXNlbENvbmZpZywgQ2Fyb3VzZWxEaXJlY3RpdmUsIENhcm91c2VsSXRlbURpcmVjdGl2ZSwgUGFuRW5kT3V0cHV0IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Nhcm91c2VsJztcblxuaW1wb3J0IHsgVGltZUNvbHVtbkNvbmZpZyB9IGZyb20gJy4vdGltZS1jb2x1bW4tY29uZmlnJztcbmltcG9ydCB7IFNlbGVjdGFibGVWaWV3SXRlbSB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zaGFyZWQnO1xuXG5sZXQgdGltZUNvbHVtblVuaXF1ZUlkID0gMDtcblxuZXhwb3J0IGludGVyZmFjZSBUaW1lQ29sdW1uSXRlbU91dHB1dDxUPiB7XG4gICAgdmFsdWU6IFQ7XG4gICAgYWZ0ZXI/OiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLXRpbWUtY29sdW1uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGltZS1jb2x1bW4uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3RpbWUtY29sdW1uLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmQtdGltZV9fY29sJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgVGltZUNvbHVtbkNvbXBvbmVudDxLLCBUIGV4dGVuZHMgU2VsZWN0YWJsZVZpZXdJdGVtPEs+ID0gU2VsZWN0YWJsZVZpZXdJdGVtPEs+PlxuICAgIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlc1xue1xuICAgIC8qKiBpdGVtcyBpbiByb3cgKi9cbiAgICBASW5wdXQoKVxuICAgIHJvd3M6IFRbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQElucHV0IFdoZW4gc2V0IHRvIGZhbHNlLCBoaWRlcyB0aGUgYnV0dG9ucyB0aGF0IGluY3JlbWVudFxuICAgICAqIGFuZCBkZWNyZW1lbnQgdGhlIGNvcnJlc3BvbmRpbmcgY29sdW1ucy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNwaW5uZXJzID0gdHJ1ZTtcblxuICAgIC8qKiBDdXJyZW50bHkgY2hvc2VuLCBjZW50ZXJlZCB0aW1lIGNvbHVtbiBpdGVtICovXG4gICAgQElucHV0KClcbiAgICBzZXQgYWN0aXZlVmFsdWUoYWN0aXZlSXRlbTogVCB8IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoIWFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgIC8vIG9taXR0aW5nIFwibnVsbFwiIGFuZCBcInVuZGVmaW5lZFwiXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX3ZpZXdJbml0JC52YWx1ZSAmJiB0aGlzLl9hY3RpdmVWYWx1ZSAhPT0gYWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgdGhpcy5fcGlja1RpbWUodGhpcy5fZ2V0SXRlbShhY3RpdmVJdGVtKSwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2FjdGl2ZVZhbHVlID0gYWN0aXZlSXRlbTtcbiAgICB9XG5cbiAgICBnZXQgYWN0aXZlVmFsdWUoKTogVCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY3RpdmVWYWx1ZTtcbiAgICB9XG5cbiAgICAvKiogRGVmaW5lcyBpZiBjb2x1bW4gaXMgYWN0aXZlLCBpdCBoYXMgaW1wYWN0IG9uIGJlaGF2aW9yIGFuZCB2aXN1YWwgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgYWN0aXZlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZSA9IHZhbHVlO1xuICAgICAgICBpZiAodmFsdWUgJiYgdGhpcy5fdmlld0luaXQkLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5fcGlja1RpbWUodGhpcy5fZ2V0SXRlbSh0aGlzLmFjdGl2ZVZhbHVlKSwgZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5fZm9jdXNJbmRpY2F0b3IoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBhY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY3RpdmU7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGltZSBjb2x1bW4gaXMgbWVyaWRpYW4gKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtdGltZV9fY29sLS1wZXJpb2QnKVxuICAgIG1lcmlkaWFuID0gZmFsc2U7XG5cbiAgICAvKiogSWQgb2YgY29sdW1uLCBpbml0aWF0ZWQgd2l0aCBzb21lIGRlZmF1bHQgdmFsdWUgKi9cbiAgICBASW5wdXQoKVxuICAgIGlkOiBzdHJpbmcgPSAnZmQtdGltZS1jb2x1bW4tJyArIHRpbWVDb2x1bW5VbmlxdWVJZCsrO1xuXG4gICAgLyoqIEkxOG4gYW5kIGxhYmVscyAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGltZUNvbmZpZzogTnVsbGFibGU8VGltZUNvbHVtbkNvbmZpZz47XG5cbiAgICAvKiogSTE4biBhbmQgbGFiZWxzICovXG4gICAgQElucHV0KClcbiAgICBjb2x1bW5UcmFuc2xhdGlvbnNQcmVzZXQ6ICdzZWNvbmRzJyB8ICdtaW51dGVzJyB8ICdob3VycycgfCAncGVyaW9kJztcblxuICAgIC8qKlxuICAgICAqIE9mZnNldCBmb3IgY2Fyb3VzZWwgZGlyZWN0aXZlLCBhY3RpdmUgaXRlbSBpcyBhbHdheXMgdGhlIGZpcnN0IG9uZS5cbiAgICAgKiBJbiBjYXNlIG9mIGhhdmluZyBtb3JlIGl0ZW1zIGluIGNhcm91c2VsIHRoYW4gMSwgbWlkZGxlIGVsZW1lbnQgc2hvdWxkIGJlIGFjdGl2ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IG9mZnNldCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fb2Zmc2V0JC52YWx1ZTtcbiAgICB9XG5cbiAgICBzZXQgb2Zmc2V0KHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fb2Zmc2V0JC5uZXh0KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBRdWFudGl0eSBvZiB0aGUgZWxlbWVudHMgdG8gYmUgc2hvd24gYXQgdGhlIHNhbWUgdGltZSBpbiBjb2x1bW5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBlbGVtZW50c0F0T25jZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2VsZW1lbnRzQXRPbmNlJC5uZXh0KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCwgd2hlbiBhY3RpdmUgaXRlbSBpcyBjaGFuZ2VkLCBieSBjYXJvdXNlbCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGFjdGl2ZVZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8VGltZUNvbHVtbkl0ZW1PdXRwdXQ8VD4+ID0gbmV3IEV2ZW50RW1pdHRlcjxUaW1lQ29sdW1uSXRlbU91dHB1dDxUPj4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkLCB3aGVuIGNlcnRhaW4gY29sdW1uIGlzIGFjdGl2YXRlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGFjdGl2ZVN0YXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoQ2Fyb3VzZWxEaXJlY3RpdmUpXG4gICAgY2Fyb3VzZWw6IENhcm91c2VsRGlyZWN0aXZlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkcmVuKENhcm91c2VsSXRlbURpcmVjdGl2ZSlcbiAgICBpdGVtczogUXVlcnlMaXN0PENhcm91c2VsSXRlbURpcmVjdGl2ZT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2luZGljYXRvcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIGluZGljYXRvcjogRWxlbWVudFJlZjtcblxuICAgIHdyYXBwZXJIZWlnaHQ6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFRpbWUgdG8gd2FpdCBpbiBtaWxsaXNlY29uZHMgYWZ0ZXIgdGhlIGxhc3Qga2V5ZG93biBiZWZvcmVcbiAgICAgKiBmb2N1c2luZyBvciBzZWxlY3Rpbmcgb3B0aW9uIGJhc2VkIG9uIG51bWVyaWMvYWxwaGEga2V5cy5cbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgdHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCA9IDc1MDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uZmlnOiBDYXJvdXNlbENvbmZpZztcblxuICAgIGludGVybmFsVHJhbnNsYXRpb25Db25maWc6IFRpbWVDb2x1bW5Db25maWcgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGN1cnJlbnRJbmRpY2F0b3JJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pZCArICctY3VycmVudC1pbmRpY2F0b3InO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGN1cnJlbnRJbmRpY2F0b3JWYWx1ZUlkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRJbmRpY2F0b3JJZCArICctdmFsdWUnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZWxlbWVudHNBdE9uY2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdCg3KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfb2Zmc2V0JCA9IG5ldyBCZWhhdmlvclN1YmplY3QoMyk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FjdGl2ZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9xdWVyeUtleURvd25FdmVudDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hY3RpdmVWYWx1ZTogVDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYWN0aXZlQ2Fyb3VzZWxJdGVtOiBDYXJvdXNlbEl0ZW1EaXJlY3RpdmU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lzRHJhZ2dpbmcgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdmlld0luaXQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgICBwcml2YXRlIF9yZXNpemUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2hhbmdlRGV0UmVmOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSBfZWxtUmVmOiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5fdmlld0luaXQkLCB0aGlzLl9lbGVtZW50c0F0T25jZSQsIHRoaXMuX29mZnNldCQsIHRoaXMuX3Jlc2l6ZSRdKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKFt2aWV3SW5pdF0pID0+IHZpZXdJbml0KSxcbiAgICAgICAgICAgICAgICAgICAgdGFwKChbLCBlbGVtZW50c0F0T25jZSwgb2Zmc2V0XSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXZlcmFnZUhlaWdodCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtcy50b0FycmF5KCkucmVkdWNlKChhY2MsIG5leHQpID0+IGFjYyArIG5leHQuZ2V0SGVpZ2h0KCksIDApIC8gdGhpcy5pdGVtcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndyYXBwZXJIZWlnaHQgPSBhdmVyYWdlSGVpZ2h0ICogZWxlbWVudHNBdE9uY2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2aXNpYmxlQnV0Tm90U2VsZWN0ZWRFbGVtZW50cyA9IE1hdGguZmxvb3IoZWxlbWVudHNBdE9uY2UgLyAyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1zLmZpcnN0LmVsZW1lbnQuc3R5bGUubWFyZ2luVG9wID0gYCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGVCdXROb3RTZWxlY3RlZEVsZW1lbnRzICogYXZlcmFnZUhlaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1weGA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtcy5sYXN0LmVsZW1lbnQuc3R5bGUubWFyZ2luQm90dG9tID0gYCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGVCdXROb3RTZWxlY3RlZEVsZW1lbnRzICogYXZlcmFnZUhlaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1weGA7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGlja1RpbWUodGhpcy5fZ2V0SXRlbSh0aGlzLmFjdGl2ZVZhbHVlKSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZCh0aGlzLl9lbGVtZW50c0F0T25jZSQucGlwZSh0YXAoKCkgPT4gdGhpcy5fc2V0VXBDYXJvdXNlbENvbmZpZ3VyYXRpb24oKSkpLnN1YnNjcmliZSgpKTtcbiAgICAgICAgdGhpcy5fc2V0VXBRdWVyeVN1YnNjcmlwdGlvbigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgIHJlc2l6ZU9ic2VydmFibGUodGhpcy5fZWxtUmVmLm5hdGl2ZUVsZW1lbnQpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzaXplJC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fdmlld0luaXQkLm5leHQodHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZSAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMuY29sdW1uVHJhbnNsYXRpb25zUHJlc2V0KSB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVJbnRlcm5hbFRyYW5zbGF0aW9uQ29uZmlnKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gICAgb25JdGVtQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aXZlU3RhdGVDaGFuZ2UuZW1pdCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAga2V5RG93bkhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBET1dOX0FSUk9XKSkge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxEb3duKCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBVUF9BUlJPVykpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVXAoKTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoS2V5VXRpbC5pc0tleVR5cGUoZXZlbnQsICdudW1lcmljJykgfHwgS2V5VXRpbC5pc0tleVR5cGUoZXZlbnQsICdhbHBoYWJldGljYWwnKSkge1xuICAgICAgICAgICAgdGhpcy5fcXVlcnlLZXlEb3duRXZlbnQubmV4dChldmVudC5rZXkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCd3aGVlbCcsIFsnJGV2ZW50J10pXG4gICAgbW91c2VTY3JvbGxIYW5kbGVyKGV2ZW50OiBXaGVlbEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICh0aGlzLl9hY3RpdmUpIHtcbiAgICAgICAgICAgIGV2ZW50LmRlbHRhWSA+IDAgPyB0aGlzLnNjcm9sbERvd24oKSA6IHRoaXMuc2Nyb2xsVXAoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc3Bpbm5lckJ1dHRvbktleXVwSGFuZGxlKGV2ZW50OiBLZXlib2FyZEV2ZW50LCB1cEJ1dHRvbj86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBTUEFDRSkpIHtcbiAgICAgICAgICAgIGlmICh1cEJ1dHRvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVXAoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxEb3duKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2V0VmFsdWVPZkFjdGl2ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2FjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0VXBJbml0aWFsVmFsdWUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBJdCBwcmV2ZW50cyBmcm9tIGFjY2lkZW50YWxseSBjaGFuZ2UgdGhlIGl0ZW0gYnkgY2xpY2sgZXZlbnQgKi9cbiAgICBoYW5kbGVEcmFnKGlzRHJhZ2dpbmc6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNEcmFnZ2luZyA9IGlzRHJhZ2dpbmc7XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCB0aGF0IGhhbmRsZXMgYWN0aXZlIGl0ZW0gY2hhbmdlICovXG4gICAgYWN0aXZlQ2hhbmdlZEhhbmRsZShvdXRwdXQ6IFBhbkVuZE91dHB1dCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhcnJheSA9IHRoaXMuaXRlbXMudG9BcnJheSgpO1xuICAgICAgICBsZXQgaW5kZXg6IG51bWJlciA9IGFycmF5LmZpbmRJbmRleCgoX19pdGVtKSA9PiBfX2l0ZW0gPT09IG91dHB1dC5pdGVtKSArIHRoaXMub2Zmc2V0O1xuXG4gICAgICAgIGlmIChpbmRleCA+PSBhcnJheS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGluZGV4ID0gaW5kZXggLSBhcnJheS5sZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBfaXRlbSA9IGFycmF5W2luZGV4XTtcblxuICAgICAgICB0aGlzLl9hY3RpdmVWYWx1ZSA9IF9pdGVtLnZhbHVlO1xuXG4gICAgICAgIHRoaXMuYWN0aXZlVmFsdWVDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5fYWN0aXZlVmFsdWUsXG4gICAgICAgICAgICBhZnRlcjogb3V0cHV0LmFmdGVyXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2FjdGl2ZUNhcm91c2VsSXRlbSA9IF9pdGVtO1xuICAgIH1cblxuICAgIC8qKiBNZXRob2QgdGhhdCBjaGFuZ2VzIGFjdGl2ZSBpdGVtIGFuZCB0cmlnZ2VycyBjYXJvdXNlbCBzY3JvbGwgKi9cbiAgICBwaWNrKGl0ZW06IENhcm91c2VsSXRlbURpcmVjdGl2ZSwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50SW5kZXg6IG51bWJlciA9IHRoaXMuaXRlbXMudG9BcnJheSgpLmZpbmRJbmRleCgoX2l0ZW0pID0+IF9pdGVtID09PSB0aGlzLl9hY3RpdmVDYXJvdXNlbEl0ZW0pO1xuICAgICAgICAvKiogVG8gcHJldmVudCBmcm9tIHN3aXRjaGluZyB0aW1lLCB3aGVuIGl0J3MgYmVpbmcgZHJhZ2dlZCAqL1xuICAgICAgICBpZiAoIXRoaXMuX2lzRHJhZ2dpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuX3BpY2tUaW1lKGl0ZW0sIHRydWUsIHRydWUsIGN1cnJlbnRJbmRleCA8IGluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBNZXRob2QgdHJpZ2dlcmVkIGJ5IGtleWJvYXJkLCBvciBpbmNyZW1lbnQgYnV0dG9uICovXG4gICAgc2Nyb2xsVXAoZXZlbnQ/OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIC8qKiBLZXlib2FyZCBldmVudHMgaW4gcmVhY3RpdmUgZm9ybXMsIHNob3VsZG4ndCB0cmlnZ2VyIHRoaXMgbWV0aG9kICovXG4gICAgICAgIGlmIChldmVudCAmJiAhZXZlbnQuY2xpZW50WCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBpbmRleDogbnVtYmVyID0gdGhpcy5pdGVtcy50b0FycmF5KCkuZmluZEluZGV4KChfaXRlbSkgPT4gX2l0ZW0gPT09IHRoaXMuX2FjdGl2ZUNhcm91c2VsSXRlbSk7XG4gICAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgICAgIGluZGV4LS07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbmRleCA9IHRoaXMucm93cy5sZW5ndGggLSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcGlja1RpbWUodGhpcy5pdGVtcy50b0FycmF5KClbaW5kZXhdLCB0cnVlLCB0cnVlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCB0cmlnZ2VyZWQgYnkga2V5Ym9hcmQsIG9yIGRlY3JlbWVudCBidXR0b24gKi9cbiAgICBzY3JvbGxEb3duKCk6IHZvaWQge1xuICAgICAgICBsZXQgaW5kZXg6IG51bWJlciA9IHRoaXMuaXRlbXMudG9BcnJheSgpLmZpbmRJbmRleCgoX2l0ZW0pID0+IF9pdGVtID09PSB0aGlzLl9hY3RpdmVDYXJvdXNlbEl0ZW0pO1xuICAgICAgICBpZiAoaW5kZXggPCB0aGlzLnJvd3MubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGluZGV4ID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3BpY2tUaW1lKHRoaXMuaXRlbXMudG9BcnJheSgpW2luZGV4XSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEZvY3VzIG9uIGNvbHVtbiAqL1xuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmluZGljYXRvcj8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBpZCBmb3IgY29sdW1uIGl0ZW1cbiAgICAgKiBAcGFyYW0gaW5kZXggY29sdW1uIGl0ZW0gaW5kZXhcbiAgICAgKiBAcmV0dXJucyBjb2x1bW4gaXRlbSBpZFxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBfY3JlYXRlQ29sdW1uSXRlbUlkQnlJbmRleChpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWQgKyBpbmRleDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPbiBmb2N1cyBjYWxsYmFja1xuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBfb25Gb2N1c0luZGljYXRvcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmVTdGF0ZUNoYW5nZS5lbWl0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHRyaWdnZXJlZCBieSBrZXlib2FyZCwgb3IgZGVjcmVtZW50IGJ1dHRvblxuICAgICAqIEFyZ3M6XG4gICAgICogaXRlbSA9PiBwaWNrZWQgY2Fyb3VzZWwgaXRlbSwgdGhhdCBzaG91bGQgYmUgY2VudGVyZWRcbiAgICAgKiBzbW9vdGggPT4gZGVmaW5lcyBpZiB0cmFuc2l0aW9uIHRpbWUgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRyYW5zZm9ybVxuICAgICAqIGVtaXRFdmVudCA9PiBkZWZpbmVzIGlmIEV2ZW50RW1pdHRlciBzaG91bGQgYmUgdHJpZ2dlcmVkIGJ5IHRoaXMgY2hhbmdlLCBzZXQgdG8gZmFsc2UsIHdoZW4gY2hhbmdlZCBmcm9tIG91dHNpZGVcbiAgICAgKiBhZnRlciA9PiBEZWZpbmVzIGlmIHZhbHVlIHdhcyBpbmNyZW1lbnRlZC9kZWNyZW1lbnRlZCwgbmVlZGVkIGZvciBob3VycyB0byB0cmlnZ2VyIEFNL1BNIGNoYW5nZVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9waWNrVGltZShpdGVtPzogQ2Fyb3VzZWxJdGVtRGlyZWN0aXZlLCBzbW9vdGg/OiBib29sZWFuLCBlbWl0RXZlbnQ/OiBib29sZWFuLCBhZnRlcj86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpdGVtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuX3RyaWdnZXJDYXJvdXNlbChpdGVtLCBzbW9vdGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fYWN0aXZlQ2Fyb3VzZWxJdGVtID0gaXRlbTtcbiAgICAgICAgdGhpcy5fYWN0aXZlVmFsdWUgPSBpdGVtLnZhbHVlO1xuXG4gICAgICAgIGlmIChlbWl0RXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlVmFsdWVDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICAgICAgdmFsdWU6IGl0ZW0udmFsdWUsXG4gICAgICAgICAgICAgICAgYWZ0ZXJcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBpdGVtIHdpdGggcGFzc2VkIHZhbHVlXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldEl0ZW0oX2l0ZW06IFQpOiBDYXJvdXNlbEl0ZW1EaXJlY3RpdmUgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtLnZhbHVlID09PSBfaXRlbSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90cmlnZ2VyQ2Fyb3VzZWwoaXRlbTogQ2Fyb3VzZWxJdGVtRGlyZWN0aXZlLCBzbW9vdGg/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFycmF5ID0gdGhpcy5pdGVtcy50b0FycmF5KCk7XG4gICAgICAgIGxldCBpbmRleDogbnVtYmVyID0gYXJyYXkuZmluZEluZGV4KChfaXRlbSkgPT4gX2l0ZW0gPT09IGl0ZW0pIC0gdGhpcy5vZmZzZXQ7XG5cbiAgICAgICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgICAgICAgaW5kZXggPSBhcnJheS5sZW5ndGggKyBpbmRleDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2Fyb3VzZWwuZ29Ub0l0ZW0oYXJyYXlbaW5kZXhdLCBzbW9vdGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZvY3VzIGN1cnJlbnQgaW5kaWNhdG9yLCB3aGljaCBhbGxvd3MgdG8gaGFuZGxlIGtleWRvd24gZXZlbnRzIGluc2lkZSBjb2x1bW5cbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZm9jdXNJbmRpY2F0b3IoKTogdm9pZCB7XG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuY3VycmVudEluZGljYXRvcklkKT8uZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFZhbHVlKHZhbHVlOiBzdHJpbmcpOiBhbnkge1xuICAgICAgICBpZiAoIWlzTmFOKE51bWJlcih2YWx1ZSkpKSB7XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0VXBRdWVyeVN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdHJpZ2dlciA9IHRoaXMuX3F1ZXJ5S2V5RG93bkV2ZW50LnBpcGUoZGVib3VuY2VUaW1lKHRoaXMudHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCkpO1xuXG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgICAgdGhpcy5fcXVlcnlLZXlEb3duRXZlbnRcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgYnVmZmVyKHRyaWdnZXIpLFxuICAgICAgICAgICAgICAgICAgICBtYXAoKGtleXMpID0+IGtleXMuam9pbignJykpLFxuICAgICAgICAgICAgICAgICAgICBtYXAoKHZhbHVlKSA9PiB0aGlzLl9nZXRWYWx1ZSh2YWx1ZSkpLFxuICAgICAgICAgICAgICAgICAgICBtYXAoKHZhbHVlKSA9PiB0aGlzLl9nZXRJdGVtKHZhbHVlKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoaXRlbSkgPT4gdGhpcy5fcGlja1RpbWUoaXRlbSwgZmFsc2UsIHRydWUpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0VXBDYXJvdXNlbENvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbmZpZzogQ2Fyb3VzZWxDb25maWcgPSB7XG4gICAgICAgICAgICBnZXN0dXJlU3VwcG9ydDogdHJ1ZSxcbiAgICAgICAgICAgIHZlcnRpY2FsOiB0cnVlLFxuICAgICAgICAgICAgZWxlbWVudHNBdE9uY2U6IHRoaXMuX2VsZW1lbnRzQXRPbmNlJC52YWx1ZSxcbiAgICAgICAgICAgIHRyYW5zaXRpb246ICcxNTBtcydcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKCF0aGlzLm1lcmlkaWFuKSB7XG4gICAgICAgICAgICBjb25maWcuaW5maW5pdGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0VXBJbml0aWFsVmFsdWUoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fYWN0aXZlVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2ZVZhbHVlID0gdGhpcy5pdGVtcy5maXJzdC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9waWNrVGltZSh0aGlzLl9nZXRJdGVtKHRoaXMuX2FjdGl2ZVZhbHVlKSwgZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdXBkYXRlSW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZygpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLmNvbHVtblRyYW5zbGF0aW9uc1ByZXNldCkge1xuICAgICAgICAgICAgY2FzZSAnaG91cnMnOlxuICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgaW5jcmVhc2VMYWJlbDogJ2NvcmVUaW1lLmluY3JlYXNlSG91cnNMYWJlbCcsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnY29yZVRpbWUuaG91cnNMYWJlbCcsXG4gICAgICAgICAgICAgICAgICAgIGRlY3JlYXNlTGFiZWw6ICdjb3JlVGltZS5kZWNyZWFzZUhvdXJzTGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uSW5zdHJ1Y3Rpb246ICdjb3JlVGltZS5uYXZpZ2F0aW9uSW5zdHJ1Y3Rpb24nXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21pbnV0ZXMnOlxuICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgaW5jcmVhc2VMYWJlbDogJ2NvcmVUaW1lLmluY3JlYXNlTWludXRlc0xhYmVsJyxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdjb3JlVGltZS5taW51dGVzTGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICBkZWNyZWFzZUxhYmVsOiAnY29yZVRpbWUuZGVjcmVhc2VNaW51dGVzTGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uSW5zdHJ1Y3Rpb246ICdjb3JlVGltZS5uYXZpZ2F0aW9uSW5zdHJ1Y3Rpb24nXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3NlY29uZHMnOlxuICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgaW5jcmVhc2VMYWJlbDogJ2NvcmVUaW1lLmluY3JlYXNlU2Vjb25kc0xhYmVsJyxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdjb3JlVGltZS5zZWNvbmRzTGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICBkZWNyZWFzZUxhYmVsOiAnY29yZVRpbWUuZGVjcmVhc2VTZWNvbmRzTGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uSW5zdHJ1Y3Rpb246ICdjb3JlVGltZS5uYXZpZ2F0aW9uSW5zdHJ1Y3Rpb24nXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3BlcmlvZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5pbnRlcm5hbFRyYW5zbGF0aW9uQ29uZmlnID0ge1xuICAgICAgICAgICAgICAgICAgICBpbmNyZWFzZUxhYmVsOiAnY29yZVRpbWUuaW5jcmVhc2VQZXJpb2RMYWJlbCcsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnY29yZVRpbWUucGVyaW9kTGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICBkZWNyZWFzZUxhYmVsOiAnY29yZVRpbWUuZGVjcmVhc2VQZXJpb2RMYWJlbCcsXG4gICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25JbnN0cnVjdGlvbjogJ2NvcmVUaW1lLm5hdmlnYXRpb25JbnN0cnVjdGlvbidcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyA9IG51bGw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbn1cbiIsIjxsYWJlbCBjbGFzcz1cImZkLXRpbWVfX3NsaWRlci1sYWJlbFwiPnt7XG4gICAgdGltZUNvbmZpZz8ubGFiZWwgfHwgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcgJiYgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcubGFiZWwgfCBmZFRyYW5zbGF0ZSkpXG59fTwvbGFiZWw+XG48YnV0dG9uXG4gICAgKm5nSWY9XCJhY3RpdmUgJiYgc3Bpbm5lcnNcIlxuICAgIGZkLWJ1dHRvblxuICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICBnbHlwaD1cIm5hdmlnYXRpb24tdXAtYXJyb3dcIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuICAgIFt0aXRsZV09XCJcbiAgICAgICAgdGltZUNvbmZpZz8uZGVjcmVhc2VMYWJlbCB8fFxuICAgICAgICAoaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyAmJiAoaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZy5kZWNyZWFzZUxhYmVsIHwgZmRUcmFuc2xhdGUpKVxuICAgIFwiXG4gICAgW2FyaWFMYWJlbF09XCJcbiAgICAgICAgdGltZUNvbmZpZz8uZGVjcmVhc2VMYWJlbCB8fFxuICAgICAgICAoaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyAmJiAoaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZy5kZWNyZWFzZUxhYmVsIHwgZmRUcmFuc2xhdGUpKVxuICAgIFwiXG4gICAgKGtleXVwKT1cInNwaW5uZXJCdXR0b25LZXl1cEhhbmRsZSgkZXZlbnQsIHRydWUpXCJcbiAgICAoY2xpY2spPVwic2Nyb2xsVXAoJGV2ZW50KVwiXG4+PC9idXR0b24+XG48ZGl2XG4gICAgY2xhc3M9XCJmZC10aW1lX193cmFwcGVyXCJcbiAgICBbY2xhc3MuZmQtdGltZV9fd3JhcHBlci0tYWN0aXZlXT1cImFjdGl2ZVwiXG4gICAgW2NsYXNzLmZkLXRpbWVfX3dyYXBwZXItLW1lcmlkaWFuXT1cIm1lcmlkaWFuXCJcbiAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImFjdGl2ZSA/IHdyYXBwZXJIZWlnaHQgOiAnJ1wiXG4+XG4gICAgPHVsXG4gICAgICAgIGNsYXNzPVwiZmQtdGltZV9fbGlzdFwiXG4gICAgICAgIFtjbGFzcy5mZC10aW1lLWNvbHVtbi1jdXN0b20taGlkZGVuXT1cIiFhY3RpdmVcIlxuICAgICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgICAgIChjbGljayk9XCJpbmRpY2F0b3IuZm9jdXMoKVwiXG4gICAgICAgIChhY3RpdmVDaGFuZ2UpPVwiYWN0aXZlQ2hhbmdlZEhhbmRsZSgkZXZlbnQpXCJcbiAgICAgICAgKGRyYWdTdGF0ZUNoYW5nZSk9XCJoYW5kbGVEcmFnKCRldmVudClcIlxuICAgICAgICBmZENhcm91c2VsXG4gICAgPlxuICAgICAgICA8bGlcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtdGltZV9faXRlbVwiXG4gICAgICAgICAgICBmZENhcm91c2VsSXRlbVxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHJvdyBvZiByb3dzOyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgICAgICAgICAjaXRlbT1cImZkQ2Fyb3VzZWxJdGVtXCJcbiAgICAgICAgICAgIFtpZF09XCJfY3JlYXRlQ29sdW1uSXRlbUlkQnlJbmRleChpbmRleClcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1kaXNwbGF5ZWQtdmFsdWVdPVwicm93LnZhbHVlXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJyb3dcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLXRpbWVfX3VuaXRcIiByb2xlPVwiYnV0dG9uXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJyb3cubGFiZWxcIiAoY2xpY2spPVwicGljayhpdGVtLCBpbmRleClcIj5cbiAgICAgICAgICAgICAgICB7eyByb3cubGFiZWwgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmZC10aW1lX19jdXJyZW50LWluZGljYXRvclwiXG4gICAgICAgICNpbmRpY2F0b3JcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgICBbYXR0ci5pZF09XCJjdXJyZW50SW5kaWNhdG9ySWRcIlxuICAgICAgICBbY2xhc3MuZmQtdGltZS1jb2x1bW4tY3VzdG9tLWhpZGRlbl09XCIhYWN0aXZlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImN1cnJlbnRJbmRpY2F0b3JWYWx1ZUlkXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmlwdGlvbl09XCJcbiAgICAgICAgICAgIHRpbWVDb25maWc/Lm5hdmlnYXRpb25JbnN0cnVjdGlvbiB8fFxuICAgICAgICAgICAgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcgJiYgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcubmF2aWdhdGlvbkluc3RydWN0aW9uIHwgZmRUcmFuc2xhdGUpKVxuICAgICAgICBcIlxuICAgICAgICAoZm9jdXMpPVwiX29uRm9jdXNJbmRpY2F0b3IoKVwiXG4gICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJmZC10aW1lLWNvbHVtbi1jdXN0b20taGlkZGVuXCJcbiAgICAgICAgICAgIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiXG4gICAgICAgICAgICBhcmlhLWF0b21pYz1cInRydWVcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiIWFjdGl2ZVwiXG4gICAgICAgICAgICBbYXR0ci5pZF09XCJjdXJyZW50SW5kaWNhdG9yVmFsdWVJZFwiXG4gICAgICAgICAgICBbY2xhc3MuZmQtdGltZS1jb2x1bW4tY3VzdG9tLWhpZGRlbl09XCJhY3RpdmVcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyBhY3RpdmVWYWx1ZT8ubGFiZWwgfX1cbiAgICAgICAgICAgIHt7IHRpbWVDb25maWc/LmxhYmVsIHx8IChpbnRlcm5hbFRyYW5zbGF0aW9uQ29uZmlnICYmIChpbnRlcm5hbFRyYW5zbGF0aW9uQ29uZmlnLmxhYmVsIHwgZmRUcmFuc2xhdGUpKSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPHNwYW4gKm5nSWY9XCIhYWN0aXZlXCIgY2xhc3M9XCJmZC10aW1lX19pdGVtIGZkLXRpbWVfX2l0ZW0tLWNvbGxhcHNlZFwiPlxuICAgICAgICB7eyBhY3RpdmVWYWx1ZT8ubGFiZWwgfX1cbiAgICA8L3NwYW4+XG48L2Rpdj5cbjxidXR0b25cbiAgICAqbmdJZj1cImFjdGl2ZSAmJiBzcGlubmVyc1wiXG4gICAgZmQtYnV0dG9uXG4gICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgIGdseXBoPVwibmF2aWdhdGlvbi1kb3duLWFycm93XCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgICBbdGl0bGVdPVwiXG4gICAgICAgIHRpbWVDb25maWc/LmluY3JlYXNlTGFiZWwgfHxcbiAgICAgICAgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcgJiYgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcuaW5jcmVhc2VMYWJlbCB8IGZkVHJhbnNsYXRlKSlcbiAgICBcIlxuICAgIFthcmlhTGFiZWxdPVwiXG4gICAgICAgIHRpbWVDb25maWc/LmluY3JlYXNlTGFiZWwgfHxcbiAgICAgICAgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcgJiYgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcuaW5jcmVhc2VMYWJlbCB8IGZkVHJhbnNsYXRlKSlcbiAgICBcIlxuICAgIChrZXl1cCk9XCJzcGlubmVyQnV0dG9uS2V5dXBIYW5kbGUoJGV2ZW50KVwiXG4gICAgKGNsaWNrKT1cInNjcm9sbERvd24oKVwiXG4+PC9idXR0b24+XG4iXX0=
|
|
481
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1jb2x1bW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdGltZS90aW1lLWNvbHVtbi90aW1lLWNvbHVtbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90aW1lL3RpbWUtY29sdW1uL3RpbWUtY29sdW1uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFDTixTQUFTLEVBRVQsU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RSxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXBFLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN4RSxPQUFPLEVBQWtCLGlCQUFpQixFQUFFLHFCQUFxQixFQUFnQixNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7QUFNeEgsSUFBSSxrQkFBa0IsR0FBRyxDQUFDLENBQUM7QUFpQjNCLE1BQU0sT0FBTyxtQkFBbUI7SUF1SzVCLGNBQWM7SUFDZCxZQUFvQixhQUFnQyxFQUFVLE9BQW1CO1FBQTdELGtCQUFhLEdBQWIsYUFBYSxDQUFtQjtRQUFVLFlBQU8s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LFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBK0g1QyxXQUFXO3NCQURWLFlBQVk7dUJBQUMsT0FBTztnQkFPckIsY0FBYztzQkFEYixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFpQm5DLGtCQUFrQjtzQkFEakIsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBidWZmZXIsIGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERPV05fQVJST1csIFNQQUNFLCBVUF9BUlJPVyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5cbmltcG9ydCB7IEtleVV0aWwsIHJlc2l6ZU9ic2VydmFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgQ2Fyb3VzZWxDb25maWcsIENhcm91c2VsRGlyZWN0aXZlLCBDYXJvdXNlbEl0ZW1EaXJlY3RpdmUsIFBhbkVuZE91dHB1dCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jYXJvdXNlbCc7XG5cbmltcG9ydCB7IFRpbWVDb2x1bW5Db25maWcgfSBmcm9tICcuL3RpbWUtY29sdW1uLWNvbmZpZyc7XG5pbXBvcnQgeyBTZWxlY3RhYmxlVmlld0l0ZW0gfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2hhcmVkJztcblxubGV0IHRpbWVDb2x1bW5VbmlxdWVJZCA9IDA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGltZUNvbHVtbkl0ZW1PdXRwdXQ8VD4ge1xuICAgIHZhbHVlOiBUO1xuICAgIGFmdGVyPzogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC10aW1lLWNvbHVtbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RpbWUtY29sdW1uLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi90aW1lLWNvbHVtbi5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ZkLXRpbWVfX2NvbCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFRpbWVDb2x1bW5Db21wb25lbnQ8SywgVCBleHRlbmRzIFNlbGVjdGFibGVWaWV3SXRlbTxLPiA9IFNlbGVjdGFibGVWaWV3SXRlbTxLPj5cbiAgICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXNcbntcbiAgICAvKiogaXRlbXMgaW4gcm93ICovXG4gICAgQElucHV0KClcbiAgICByb3dzOiBUW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEBJbnB1dCBXaGVuIHNldCB0byBmYWxzZSwgaGlkZXMgdGhlIGJ1dHRvbnMgdGhhdCBpbmNyZW1lbnRcbiAgICAgKiBhbmQgZGVjcmVtZW50IHRoZSBjb3JyZXNwb25kaW5nIGNvbHVtbnMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzcGlubmVycyA9IHRydWU7XG5cbiAgICAvKiogQ3VycmVudGx5IGNob3NlbiwgY2VudGVyZWQgdGltZSBjb2x1bW4gaXRlbSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGFjdGl2ZVZhbHVlKGFjdGl2ZUl0ZW06IFQgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKCFhY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICAvLyBvbWl0dGluZyBcIm51bGxcIiBhbmQgXCJ1bmRlZmluZWRcIlxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl92aWV3SW5pdCQudmFsdWUgJiYgdGhpcy5fYWN0aXZlVmFsdWUgIT09IGFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuX3BpY2tUaW1lKHRoaXMuX2dldEl0ZW0oYWN0aXZlSXRlbSksIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9hY3RpdmVWYWx1ZSA9IGFjdGl2ZUl0ZW07XG4gICAgfVxuXG4gICAgZ2V0IGFjdGl2ZVZhbHVlKCk6IFQge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZlVmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIERlZmluZXMgaWYgY29sdW1uIGlzIGFjdGl2ZSwgaXQgaGFzIGltcGFjdCBvbiBiZWhhdmlvciBhbmQgdmlzdWFsICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGFjdGl2ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9hY3RpdmUgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHZhbHVlICYmIHRoaXMuX3ZpZXdJbml0JC52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIHRoaXMuX3BpY2tUaW1lKHRoaXMuX2dldEl0ZW0odGhpcy5hY3RpdmVWYWx1ZSksIGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzSW5kaWNhdG9yKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgYWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZlO1xuICAgIH1cblxuICAgIC8qKiBXaGV0aGVyIHRpbWUgY29sdW1uIGlzIG1lcmlkaWFuICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLXRpbWVfX2NvbC0tcGVyaW9kJylcbiAgICBtZXJpZGlhbiA9IGZhbHNlO1xuXG4gICAgLyoqIElkIG9mIGNvbHVtbiwgaW5pdGlhdGVkIHdpdGggc29tZSBkZWZhdWx0IHZhbHVlICovXG4gICAgQElucHV0KClcbiAgICBpZDogc3RyaW5nID0gJ2ZkLXRpbWUtY29sdW1uLScgKyB0aW1lQ29sdW1uVW5pcXVlSWQrKztcblxuICAgIC8qKiBJMThuIGFuZCBsYWJlbHMgKi9cbiAgICBASW5wdXQoKVxuICAgIHRpbWVDb25maWc6IE51bGxhYmxlPFRpbWVDb2x1bW5Db25maWc+O1xuXG4gICAgLyoqIEkxOG4gYW5kIGxhYmVscyAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29sdW1uVHJhbnNsYXRpb25zUHJlc2V0OiAnc2Vjb25kcycgfCAnbWludXRlcycgfCAnaG91cnMnIHwgJ3BlcmlvZCc7XG5cbiAgICAvKipcbiAgICAgKiBPZmZzZXQgZm9yIGNhcm91c2VsIGRpcmVjdGl2ZSwgYWN0aXZlIGl0ZW0gaXMgYWx3YXlzIHRoZSBmaXJzdCBvbmUuXG4gICAgICogSW4gY2FzZSBvZiBoYXZpbmcgbW9yZSBpdGVtcyBpbiBjYXJvdXNlbCB0aGFuIDEsIG1pZGRsZSBlbGVtZW50IHNob3VsZCBiZSBhY3RpdmVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCBvZmZzZXQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29mZnNldCQudmFsdWU7XG4gICAgfVxuXG4gICAgc2V0IG9mZnNldCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX29mZnNldCQubmV4dCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUXVhbnRpdHkgb2YgdGhlIGVsZW1lbnRzIHRvIGJlIHNob3duIGF0IHRoZSBzYW1lIHRpbWUgaW4gY29sdW1uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZWxlbWVudHNBdE9uY2UodmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9lbGVtZW50c0F0T25jZSQubmV4dCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQsIHdoZW4gYWN0aXZlIGl0ZW0gaXMgY2hhbmdlZCwgYnkgY2Fyb3VzZWwgKi9cbiAgICBAT3V0cHV0KClcbiAgICBhY3RpdmVWYWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPFRpbWVDb2x1bW5JdGVtT3V0cHV0PFQ+PiA9IG5ldyBFdmVudEVtaXR0ZXI8VGltZUNvbHVtbkl0ZW1PdXRwdXQ8VD4+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCwgd2hlbiBjZXJ0YWluIGNvbHVtbiBpcyBhY3RpdmF0ZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICBhY3RpdmVTdGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKENhcm91c2VsRGlyZWN0aXZlKVxuICAgIGNhcm91c2VsOiBDYXJvdXNlbERpcmVjdGl2ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZHJlbihDYXJvdXNlbEl0ZW1EaXJlY3RpdmUpXG4gICAgaXRlbXM6IFF1ZXJ5TGlzdDxDYXJvdXNlbEl0ZW1EaXJlY3RpdmU+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdpbmRpY2F0b3InLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBpbmRpY2F0b3I6IEVsZW1lbnRSZWY7XG5cbiAgICB3cmFwcGVySGVpZ2h0OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBUaW1lIHRvIHdhaXQgaW4gbWlsbGlzZWNvbmRzIGFmdGVyIHRoZSBsYXN0IGtleWRvd24gYmVmb3JlXG4gICAgICogZm9jdXNpbmcgb3Igc2VsZWN0aW5nIG9wdGlvbiBiYXNlZCBvbiBudW1lcmljL2FscGhhIGtleXMuXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHR5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWwgPSA3NTA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbmZpZzogQ2Fyb3VzZWxDb25maWc7XG5cbiAgICBpbnRlcm5hbFRyYW5zbGF0aW9uQ29uZmlnOiBUaW1lQ29sdW1uQ29uZmlnIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBjdXJyZW50SW5kaWNhdG9ySWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWQgKyAnLWN1cnJlbnQtaW5kaWNhdG9yJztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBjdXJyZW50SW5kaWNhdG9yVmFsdWVJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50SW5kaWNhdG9ySWQgKyAnLXZhbHVlJztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2VsZW1lbnRzQXRPbmNlJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoNyk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX29mZnNldCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KDMpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hY3RpdmUgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcXVlcnlLZXlEb3duRXZlbnQ6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYWN0aXZlVmFsdWU6IFQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FjdGl2ZUNhcm91c2VsSXRlbTogQ2Fyb3VzZWxJdGVtRGlyZWN0aXZlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc0RyYWdnaW5nID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ZpZXdJbml0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgcHJpdmF0ZSBfcmVzaXplJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIGxvZ3MgbnVtZXJpYyBrZXkgaW5wdXRzIHRvIHNldCB0aW1lIHVzaW5nIGtleWJvYXJkIGlucHV0LlxuICAgICAqL1xuICAgIHByaXZhdGUgX2tleUxvZzogc3RyaW5nW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogVGltZW91dCB2YXJpYWJsZSB1c2VkIHRvIHNldCB0aW1lb3V0IGZvciBzdWJzZXF1ZW50IG51bWVyaWMga2V5IGlucHV0IHRvIHNldCB0aW1lLlxuICAgICAqL1xuICAgIHByaXZhdGUgX251bWVyaWNJbnB1dFRpbWVvdXQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jaGFuZ2VEZXRSZWY6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIF9lbG1SZWY6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLl92aWV3SW5pdCQsIHRoaXMuX2VsZW1lbnRzQXRPbmNlJCwgdGhpcy5fb2Zmc2V0JCwgdGhpcy5fcmVzaXplJF0pXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcigoW3ZpZXdJbml0XSkgPT4gdmlld0luaXQpLFxuICAgICAgICAgICAgICAgICAgICB0YXAoKFssIGVsZW1lbnRzQXRPbmNlLCBvZmZzZXRdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhdmVyYWdlSGVpZ2h0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1zLnRvQXJyYXkoKS5yZWR1Y2UoKGFjYywgbmV4dCkgPT4gYWNjICsgbmV4dC5nZXRIZWlnaHQoKSwgMCkgLyB0aGlzLml0ZW1zLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud3JhcHBlckhlaWdodCA9IGF2ZXJhZ2VIZWlnaHQgKiBlbGVtZW50c0F0T25jZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZpc2libGVCdXROb3RTZWxlY3RlZEVsZW1lbnRzID0gTWF0aC5mbG9vcihlbGVtZW50c0F0T25jZSAvIDIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9mZnNldCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMuZmlyc3QuZWxlbWVudC5zdHlsZS5tYXJnaW5Ub3AgPSBgJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZUJ1dE5vdFNlbGVjdGVkRWxlbWVudHMgKiBhdmVyYWdlSGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfXB4YDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1zLmxhc3QuZWxlbWVudC5zdHlsZS5tYXJnaW5Cb3R0b20gPSBgJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZUJ1dE5vdFNlbGVjdGVkRWxlbWVudHMgKiBhdmVyYWdlSGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfXB4YDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9waWNrVGltZSh0aGlzLl9nZXRJdGVtKHRoaXMuYWN0aXZlVmFsdWUpLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKHRoaXMuX2VsZW1lbnRzQXRPbmNlJC5waXBlKHRhcCgoKSA9PiB0aGlzLl9zZXRVcENhcm91c2VsQ29uZmlndXJhdGlvbigpKSkuc3Vic2NyaWJlKCkpO1xuICAgICAgICB0aGlzLl9zZXRVcFF1ZXJ5U3Vic2NyaXB0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgICAgcmVzaXplT2JzZXJ2YWJsZSh0aGlzLl9lbG1SZWYubmF0aXZlRWxlbWVudCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZXNpemUkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgICB0aGlzLl92aWV3SW5pdCQubmV4dCh0cnVlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcy5jb2x1bW5UcmFuc2xhdGlvbnNQcmVzZXQpIHtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUludGVybmFsVHJhbnNsYXRpb25Db25maWcoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgICBvbkl0ZW1DbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmVTdGF0ZUNoYW5nZS5lbWl0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBrZXlEb3duSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIERPV05fQVJST1cpKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbERvd24oKTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFVQX0FSUk9XKSkge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxVcCgpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChLZXlVdGlsLmlzS2V5VHlwZShldmVudCwgJ251bWVyaWMnKSkge1xuICAgICAgICAgICAgdGhpcy5fbnVtZXJpY0tleUlucHV0SGFuZGxlcihldmVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAoS2V5VXRpbC5pc0tleVR5cGUoZXZlbnQsICdhbHBoYWJldGljYWwnKSkge1xuICAgICAgICAgICAgdGhpcy5fYWxwaGFLZXlJbnB1dEhhbmRsZXIoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCd3aGVlbCcsIFsnJGV2ZW50J10pXG4gICAgbW91c2VTY3JvbGxIYW5kbGVyKGV2ZW50OiBXaGVlbEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICh0aGlzLl9hY3RpdmUpIHtcbiAgICAgICAgICAgIGV2ZW50LmRlbHRhWSA+IDAgPyB0aGlzLnNjcm9sbERvd24oKSA6IHRoaXMuc2Nyb2xsVXAoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc3Bpbm5lckJ1dHRvbktleXVwSGFuZGxlKGV2ZW50OiBLZXlib2FyZEV2ZW50LCB1cEJ1dHRvbj86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBTUEFDRSkpIHtcbiAgICAgICAgICAgIGlmICh1cEJ1dHRvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVXAoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxEb3duKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2V0VmFsdWVPZkFjdGl2ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2FjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0VXBJbml0aWFsVmFsdWUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBJdCBwcmV2ZW50cyBmcm9tIGFjY2lkZW50YWxseSBjaGFuZ2UgdGhlIGl0ZW0gYnkgY2xpY2sgZXZlbnQgKi9cbiAgICBoYW5kbGVEcmFnKGlzRHJhZ2dpbmc6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNEcmFnZ2luZyA9IGlzRHJhZ2dpbmc7XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCB0aGF0IGhhbmRsZXMgYWN0aXZlIGl0ZW0gY2hhbmdlICovXG4gICAgYWN0aXZlQ2hhbmdlZEhhbmRsZShvdXRwdXQ6IFBhbkVuZE91dHB1dCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhcnJheSA9IHRoaXMuaXRlbXMudG9BcnJheSgpO1xuICAgICAgICBsZXQgaW5kZXg6IG51bWJlciA9IGFycmF5LmZpbmRJbmRleCgoX19pdGVtKSA9PiBfX2l0ZW0gPT09IG91dHB1dC5pdGVtKSArIHRoaXMub2Zmc2V0O1xuXG4gICAgICAgIGlmIChpbmRleCA+PSBhcnJheS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGluZGV4ID0gaW5kZXggLSBhcnJheS5sZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBfaXRlbSA9IGFycmF5W2luZGV4XTtcblxuICAgICAgICB0aGlzLl9hY3RpdmVWYWx1ZSA9IF9pdGVtLnZhbHVlO1xuXG4gICAgICAgIHRoaXMuYWN0aXZlVmFsdWVDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5fYWN0aXZlVmFsdWUsXG4gICAgICAgICAgICBhZnRlcjogb3V0cHV0LmFmdGVyXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2FjdGl2ZUNhcm91c2VsSXRlbSA9IF9pdGVtO1xuICAgIH1cblxuICAgIC8qKiBNZXRob2QgdGhhdCBjaGFuZ2VzIGFjdGl2ZSBpdGVtIGFuZCB0cmlnZ2VycyBjYXJvdXNlbCBzY3JvbGwgKi9cbiAgICBwaWNrKGl0ZW06IENhcm91c2VsSXRlbURpcmVjdGl2ZSwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50SW5kZXg6IG51bWJlciA9IHRoaXMuaXRlbXMudG9BcnJheSgpLmZpbmRJbmRleCgoX2l0ZW0pID0+IF9pdGVtID09PSB0aGlzLl9hY3RpdmVDYXJvdXNlbEl0ZW0pO1xuICAgICAgICAvKiogVG8gcHJldmVudCBmcm9tIHN3aXRjaGluZyB0aW1lLCB3aGVuIGl0J3MgYmVpbmcgZHJhZ2dlZCAqL1xuICAgICAgICBpZiAoIXRoaXMuX2lzRHJhZ2dpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuX3BpY2tUaW1lKGl0ZW0sIHRydWUsIHRydWUsIGN1cnJlbnRJbmRleCA8IGluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBNZXRob2QgdHJpZ2dlcmVkIGJ5IGtleWJvYXJkLCBvciBpbmNyZW1lbnQgYnV0dG9uICovXG4gICAgc2Nyb2xsVXAoZXZlbnQ/OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIC8qKiBLZXlib2FyZCBldmVudHMgaW4gcmVhY3RpdmUgZm9ybXMsIHNob3VsZG4ndCB0cmlnZ2VyIHRoaXMgbWV0aG9kICovXG4gICAgICAgIGlmIChldmVudCAmJiAhZXZlbnQuY2xpZW50WCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBpbmRleDogbnVtYmVyID0gdGhpcy5pdGVtcy50b0FycmF5KCkuZmluZEluZGV4KChfaXRlbSkgPT4gX2l0ZW0gPT09IHRoaXMuX2FjdGl2ZUNhcm91c2VsSXRlbSk7XG4gICAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgICAgIGluZGV4LS07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbmRleCA9IHRoaXMucm93cy5sZW5ndGggLSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcGlja1RpbWUodGhpcy5pdGVtcy50b0FycmF5KClbaW5kZXhdLCB0cnVlLCB0cnVlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCB0cmlnZ2VyZWQgYnkga2V5Ym9hcmQsIG9yIGRlY3JlbWVudCBidXR0b24gKi9cbiAgICBzY3JvbGxEb3duKCk6IHZvaWQge1xuICAgICAgICBsZXQgaW5kZXg6IG51bWJlciA9IHRoaXMuaXRlbXMudG9BcnJheSgpLmZpbmRJbmRleCgoX2l0ZW0pID0+IF9pdGVtID09PSB0aGlzLl9hY3RpdmVDYXJvdXNlbEl0ZW0pO1xuICAgICAgICBpZiAoaW5kZXggPCB0aGlzLnJvd3MubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGluZGV4ID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3BpY2tUaW1lKHRoaXMuaXRlbXMudG9BcnJheSgpW2luZGV4XSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEZvY3VzIG9uIGNvbHVtbiAqL1xuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmluZGljYXRvcj8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBpZCBmb3IgY29sdW1uIGl0ZW1cbiAgICAgKiBAcGFyYW0gaW5kZXggY29sdW1uIGl0ZW0gaW5kZXhcbiAgICAgKiBAcmV0dXJucyBjb2x1bW4gaXRlbSBpZFxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBfY3JlYXRlQ29sdW1uSXRlbUlkQnlJbmRleChpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWQgKyBpbmRleDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPbiBmb2N1cyBjYWxsYmFja1xuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBfb25Gb2N1c0luZGljYXRvcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmVTdGF0ZUNoYW5nZS5lbWl0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBoYW5kbGVzIGFscGhhYmV0aWNhbCBrZXkgaW5wdXRzIHRvIHNldCBwZXJpb2QuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfYWxwaGFLZXlJbnB1dEhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpID09PSAnYScpIHtcbiAgICAgICAgICAgIHRoaXMuX3BpY2tUaW1lT25WYWx1ZSgnQU0nKTtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ3AnKSB7XG4gICAgICAgICAgICB0aGlzLl9waWNrVGltZU9uVmFsdWUoJ1BNJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIGhhbmRsZXMgbnVtZXJpYyBrZXkgaW5wdXRzIHRvIHNldCB0aW1lLlxuICAgICAqL1xuICAgIHByaXZhdGUgX251bWVyaWNLZXlJbnB1dEhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbGFzdEl0ZW1WYWx1ZSA9IHRoaXMuaXRlbXMubGFzdC52YWx1ZS52YWx1ZTsgLy8gdmFsdWUgb2YgbGFzdCBpdGVtIGluIGNvbHVtblxuXG4gICAgICAgIHRoaXMuX251bWVyaWNJbnB1dFRpbWVvdXQgJiYgY2xlYXJUaW1lb3V0KHRoaXMuX251bWVyaWNJbnB1dFRpbWVvdXQpO1xuICAgICAgICB0aGlzLl9rZXlMb2cucHVzaChldmVudC5rZXkpO1xuICAgICAgICBjb25zdCBpbnB1dFZhbHVlID0gcGFyc2VJbnQodGhpcy5fa2V5TG9nLmpvaW4oJycpLCAxMCk7IC8vIGNvbnZlcnRzIGtleUxvZyBlbGVtZW50cyB0byBhIG51bWJlclxuXG4gICAgICAgIGlmIChpbnB1dFZhbHVlICogMTAgPiBsYXN0SXRlbVZhbHVlIHx8IHRoaXMuX2tleUxvZy5sZW5ndGggPT09IGxhc3RJdGVtVmFsdWUudG9TdHJpbmcoKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX3BpY2tUaW1lT25WYWx1ZShpbnB1dFZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX251bWVyaWNJbnB1dFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9waWNrVGltZU9uVmFsdWUoaW5wdXRWYWx1ZSk7XG4gICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBzZXQgdGhlIHRpbWUgZm9yIGdpdmVuIGl0ZW0gdmFsdWUuIHVzZWQgYnkgX251bWVyaWNLZXlJbnB1dEhhbmRsZXIuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfcGlja1RpbWVPblZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcGlja1RpbWUoXG4gICAgICAgICAgICB0aGlzLml0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0udmFsdWUudmFsdWUgPT09IHZhbHVlKSxcbiAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX2tleUxvZyA9IFtdOyAvLyBjbGVhciBrZXkgbG9nXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHRyaWdnZXJlZCBieSBrZXlib2FyZCwgb3IgZGVjcmVtZW50IGJ1dHRvblxuICAgICAqIEFyZ3M6XG4gICAgICogaXRlbSA9PiBwaWNrZWQgY2Fyb3VzZWwgaXRlbSwgdGhhdCBzaG91bGQgYmUgY2VudGVyZWRcbiAgICAgKiBzbW9vdGggPT4gZGVmaW5lcyBpZiB0cmFuc2l0aW9uIHRpbWUgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRyYW5zZm9ybVxuICAgICAqIGVtaXRFdmVudCA9PiBkZWZpbmVzIGlmIEV2ZW50RW1pdHRlciBzaG91bGQgYmUgdHJpZ2dlcmVkIGJ5IHRoaXMgY2hhbmdlLCBzZXQgdG8gZmFsc2UsIHdoZW4gY2hhbmdlZCBmcm9tIG91dHNpZGVcbiAgICAgKiBhZnRlciA9PiBEZWZpbmVzIGlmIHZhbHVlIHdhcyBpbmNyZW1lbnRlZC9kZWNyZW1lbnRlZCwgbmVlZGVkIGZvciBob3VycyB0byB0cmlnZ2VyIEFNL1BNIGNoYW5nZVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9waWNrVGltZShpdGVtPzogQ2Fyb3VzZWxJdGVtRGlyZWN0aXZlLCBzbW9vdGg/OiBib29sZWFuLCBlbWl0RXZlbnQ/OiBib29sZWFuLCBhZnRlcj86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpdGVtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuX3RyaWdnZXJDYXJvdXNlbChpdGVtLCBzbW9vdGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fYWN0aXZlQ2Fyb3VzZWxJdGVtID0gaXRlbTtcbiAgICAgICAgdGhpcy5fYWN0aXZlVmFsdWUgPSBpdGVtLnZhbHVlO1xuXG4gICAgICAgIGlmIChlbWl0RXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlVmFsdWVDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICAgICAgdmFsdWU6IGl0ZW0udmFsdWUsXG4gICAgICAgICAgICAgICAgYWZ0ZXJcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBpdGVtIHdpdGggcGFzc2VkIHZhbHVlXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldEl0ZW0oX2l0ZW06IFQpOiBDYXJvdXNlbEl0ZW1EaXJlY3RpdmUgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtLnZhbHVlID09PSBfaXRlbSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90cmlnZ2VyQ2Fyb3VzZWwoaXRlbTogQ2Fyb3VzZWxJdGVtRGlyZWN0aXZlLCBzbW9vdGg/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFycmF5ID0gdGhpcy5pdGVtcy50b0FycmF5KCk7XG4gICAgICAgIGxldCBpbmRleDogbnVtYmVyID0gYXJyYXkuZmluZEluZGV4KChfaXRlbSkgPT4gX2l0ZW0gPT09IGl0ZW0pIC0gdGhpcy5vZmZzZXQ7XG5cbiAgICAgICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgICAgICAgaW5kZXggPSBhcnJheS5sZW5ndGggKyBpbmRleDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2Fyb3VzZWwuZ29Ub0l0ZW0oYXJyYXlbaW5kZXhdLCBzbW9vdGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZvY3VzIGN1cnJlbnQgaW5kaWNhdG9yLCB3aGljaCBhbGxvd3MgdG8gaGFuZGxlIGtleWRvd24gZXZlbnRzIGluc2lkZSBjb2x1bW5cbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZm9jdXNJbmRpY2F0b3IoKTogdm9pZCB7XG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuY3VycmVudEluZGljYXRvcklkKT8uZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFZhbHVlKHZhbHVlOiBzdHJpbmcpOiBhbnkge1xuICAgICAgICBpZiAoIWlzTmFOKE51bWJlcih2YWx1ZSkpKSB7XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0VXBRdWVyeVN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdHJpZ2dlciA9IHRoaXMuX3F1ZXJ5S2V5RG93bkV2ZW50LnBpcGUoZGVib3VuY2VUaW1lKHRoaXMudHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCkpO1xuXG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgICAgdGhpcy5fcXVlcnlLZXlEb3duRXZlbnRcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgYnVmZmVyKHRyaWdnZXIpLFxuICAgICAgICAgICAgICAgICAgICBtYXAoKGtleXMpID0+IGtleXMuam9pbignJykpLFxuICAgICAgICAgICAgICAgICAgICBtYXAoKHZhbHVlKSA9PiB0aGlzLl9nZXRWYWx1ZSh2YWx1ZSkpLFxuICAgICAgICAgICAgICAgICAgICBtYXAoKHZhbHVlKSA9PiB0aGlzLl9nZXRJdGVtKHZhbHVlKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoaXRlbSkgPT4gdGhpcy5fcGlja1RpbWUoaXRlbSwgZmFsc2UsIHRydWUpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0VXBDYXJvdXNlbENvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbmZpZzogQ2Fyb3VzZWxDb25maWcgPSB7XG4gICAgICAgICAgICBnZXN0dXJlU3VwcG9ydDogdHJ1ZSxcbiAgICAgICAgICAgIHZlcnRpY2FsOiB0cnVlLFxuICAgICAgICAgICAgZWxlbWVudHNBdE9uY2U6IHRoaXMuX2VsZW1lbnRzQXRPbmNlJC52YWx1ZSxcbiAgICAgICAgICAgIHRyYW5zaXRpb246ICcxNTBtcydcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKCF0aGlzLm1lcmlkaWFuKSB7XG4gICAgICAgICAgICBjb25maWcuaW5maW5pdGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0VXBJbml0aWFsVmFsdWUoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fYWN0aXZlVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2ZVZhbHVlID0gdGhpcy5pdGVtcy5maXJzdC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9waWNrVGltZSh0aGlzLl9nZXRJdGVtKHRoaXMuX2FjdGl2ZVZhbHVlKSwgZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdXBkYXRlSW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZygpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLmNvbHVtblRyYW5zbGF0aW9uc1ByZXNldCkge1xuICAgICAgICAgICAgY2FzZSAnaG91cnMnOlxuICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgaW5jcmVhc2VMYWJlbDogJ2NvcmVUaW1lLmluY3JlYXNlSG91cnNMYWJlbCcsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnY29yZVRpbWUuaG91cnNMYWJlbCcsXG4gICAgICAgICAgICAgICAgICAgIGRlY3JlYXNlTGFiZWw6ICdjb3JlVGltZS5kZWNyZWFzZUhvdXJzTGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uSW5zdHJ1Y3Rpb246ICdjb3JlVGltZS5uYXZpZ2F0aW9uSW5zdHJ1Y3Rpb24nXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21pbnV0ZXMnOlxuICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgaW5jcmVhc2VMYWJlbDogJ2NvcmVUaW1lLmluY3JlYXNlTWludXRlc0xhYmVsJyxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdjb3JlVGltZS5taW51dGVzTGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICBkZWNyZWFzZUxhYmVsOiAnY29yZVRpbWUuZGVjcmVhc2VNaW51dGVzTGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uSW5zdHJ1Y3Rpb246ICdjb3JlVGltZS5uYXZpZ2F0aW9uSW5zdHJ1Y3Rpb24nXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3NlY29uZHMnOlxuICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgaW5jcmVhc2VMYWJlbDogJ2NvcmVUaW1lLmluY3JlYXNlU2Vjb25kc0xhYmVsJyxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdjb3JlVGltZS5zZWNvbmRzTGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICBkZWNyZWFzZUxhYmVsOiAnY29yZVRpbWUuZGVjcmVhc2VTZWNvbmRzTGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uSW5zdHJ1Y3Rpb246ICdjb3JlVGltZS5uYXZpZ2F0aW9uSW5zdHJ1Y3Rpb24nXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3BlcmlvZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5pbnRlcm5hbFRyYW5zbGF0aW9uQ29uZmlnID0ge1xuICAgICAgICAgICAgICAgICAgICBpbmNyZWFzZUxhYmVsOiAnY29yZVRpbWUuaW5jcmVhc2VQZXJpb2RMYWJlbCcsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnY29yZVRpbWUucGVyaW9kTGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICBkZWNyZWFzZUxhYmVsOiAnY29yZVRpbWUuZGVjcmVhc2VQZXJpb2RMYWJlbCcsXG4gICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25JbnN0cnVjdGlvbjogJ2NvcmVUaW1lLm5hdmlnYXRpb25JbnN0cnVjdGlvbidcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyA9IG51bGw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbn1cbiIsIjxsYWJlbCBjbGFzcz1cImZkLXRpbWVfX3NsaWRlci1sYWJlbFwiPnt7XG4gICAgdGltZUNvbmZpZz8ubGFiZWwgfHwgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcgJiYgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcubGFiZWwgfCBmZFRyYW5zbGF0ZSkpXG59fTwvbGFiZWw+XG48YnV0dG9uXG4gICAgKm5nSWY9XCJhY3RpdmUgJiYgc3Bpbm5lcnNcIlxuICAgIGZkLWJ1dHRvblxuICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICBnbHlwaD1cIm5hdmlnYXRpb24tdXAtYXJyb3dcIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuICAgIFt0aXRsZV09XCJcbiAgICAgICAgdGltZUNvbmZpZz8uZGVjcmVhc2VMYWJlbCB8fFxuICAgICAgICAoaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyAmJiAoaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZy5kZWNyZWFzZUxhYmVsIHwgZmRUcmFuc2xhdGUpKVxuICAgIFwiXG4gICAgW2FyaWFMYWJlbF09XCJcbiAgICAgICAgdGltZUNvbmZpZz8uZGVjcmVhc2VMYWJlbCB8fFxuICAgICAgICAoaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyAmJiAoaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZy5kZWNyZWFzZUxhYmVsIHwgZmRUcmFuc2xhdGUpKVxuICAgIFwiXG4gICAgKGtleXVwKT1cInNwaW5uZXJCdXR0b25LZXl1cEhhbmRsZSgkZXZlbnQsIHRydWUpXCJcbiAgICAoY2xpY2spPVwic2Nyb2xsVXAoJGV2ZW50KVwiXG4+PC9idXR0b24+XG48ZGl2XG4gICAgY2xhc3M9XCJmZC10aW1lX193cmFwcGVyXCJcbiAgICBbY2xhc3MuZmQtdGltZV9fd3JhcHBlci0tYWN0aXZlXT1cImFjdGl2ZVwiXG4gICAgW2NsYXNzLmZkLXRpbWVfX3dyYXBwZXItLW1lcmlkaWFuXT1cIm1lcmlkaWFuXCJcbiAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImFjdGl2ZSA/IHdyYXBwZXJIZWlnaHQgOiAnJ1wiXG4+XG4gICAgPHVsXG4gICAgICAgIGNsYXNzPVwiZmQtdGltZV9fbGlzdFwiXG4gICAgICAgIFtjbGFzcy5mZC10aW1lLWNvbHVtbi1jdXN0b20taGlkZGVuXT1cIiFhY3RpdmVcIlxuICAgICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgICAgIChjbGljayk9XCJpbmRpY2F0b3IuZm9jdXMoKVwiXG4gICAgICAgIChhY3RpdmVDaGFuZ2UpPVwiYWN0aXZlQ2hhbmdlZEhhbmRsZSgkZXZlbnQpXCJcbiAgICAgICAgKGRyYWdTdGF0ZUNoYW5nZSk9XCJoYW5kbGVEcmFnKCRldmVudClcIlxuICAgICAgICBmZENhcm91c2VsXG4gICAgPlxuICAgICAgICA8bGlcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtdGltZV9faXRlbVwiXG4gICAgICAgICAgICBmZENhcm91c2VsSXRlbVxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHJvdyBvZiByb3dzOyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgICAgICAgICAjaXRlbT1cImZkQ2Fyb3VzZWxJdGVtXCJcbiAgICAgICAgICAgIFtpZF09XCJfY3JlYXRlQ29sdW1uSXRlbUlkQnlJbmRleChpbmRleClcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1kaXNwbGF5ZWQtdmFsdWVdPVwicm93LnZhbHVlXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJyb3dcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLXRpbWVfX3VuaXRcIiByb2xlPVwiYnV0dG9uXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJyb3cubGFiZWxcIiAoY2xpY2spPVwicGljayhpdGVtLCBpbmRleClcIj5cbiAgICAgICAgICAgICAgICB7eyByb3cubGFiZWwgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmZC10aW1lX19jdXJyZW50LWluZGljYXRvclwiXG4gICAgICAgICNpbmRpY2F0b3JcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgICBbYXR0ci5pZF09XCJjdXJyZW50SW5kaWNhdG9ySWRcIlxuICAgICAgICBbY2xhc3MuZmQtdGltZS1jb2x1bW4tY3VzdG9tLWhpZGRlbl09XCIhYWN0aXZlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImN1cnJlbnRJbmRpY2F0b3JWYWx1ZUlkXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmlwdGlvbl09XCJcbiAgICAgICAgICAgIHRpbWVDb25maWc/Lm5hdmlnYXRpb25JbnN0cnVjdGlvbiB8fFxuICAgICAgICAgICAgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcgJiYgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcubmF2aWdhdGlvbkluc3RydWN0aW9uIHwgZmRUcmFuc2xhdGUpKVxuICAgICAgICBcIlxuICAgICAgICAoZm9jdXMpPVwiX29uRm9jdXNJbmRpY2F0b3IoKVwiXG4gICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJmZC10aW1lLWNvbHVtbi1jdXN0b20taGlkZGVuXCJcbiAgICAgICAgICAgIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiXG4gICAgICAgICAgICBhcmlhLWF0b21pYz1cInRydWVcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiIWFjdGl2ZVwiXG4gICAgICAgICAgICBbYXR0ci5pZF09XCJjdXJyZW50SW5kaWNhdG9yVmFsdWVJZFwiXG4gICAgICAgICAgICBbY2xhc3MuZmQtdGltZS1jb2x1bW4tY3VzdG9tLWhpZGRlbl09XCJhY3RpdmVcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyBhY3RpdmVWYWx1ZT8ubGFiZWwgfX1cbiAgICAgICAgICAgIHt7IHRpbWVDb25maWc/LmxhYmVsIHx8IChpbnRlcm5hbFRyYW5zbGF0aW9uQ29uZmlnICYmIChpbnRlcm5hbFRyYW5zbGF0aW9uQ29uZmlnLmxhYmVsIHwgZmRUcmFuc2xhdGUpKSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPHNwYW4gKm5nSWY9XCIhYWN0aXZlXCIgY2xhc3M9XCJmZC10aW1lX19pdGVtIGZkLXRpbWVfX2l0ZW0tLWNvbGxhcHNlZFwiPlxuICAgICAgICB7eyBhY3RpdmVWYWx1ZT8ubGFiZWwgfX1cbiAgICA8L3NwYW4+XG48L2Rpdj5cbjxidXR0b25cbiAgICAqbmdJZj1cImFjdGl2ZSAmJiBzcGlubmVyc1wiXG4gICAgZmQtYnV0dG9uXG4gICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgIGdseXBoPVwibmF2aWdhdGlvbi1kb3duLWFycm93XCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgICBbdGl0bGVdPVwiXG4gICAgICAgIHRpbWVDb25maWc/LmluY3JlYXNlTGFiZWwgfHxcbiAgICAgICAgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcgJiYgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcuaW5jcmVhc2VMYWJlbCB8IGZkVHJhbnNsYXRlKSlcbiAgICBcIlxuICAgIFthcmlhTGFiZWxdPVwiXG4gICAgICAgIHRpbWVDb25maWc/LmluY3JlYXNlTGFiZWwgfHxcbiAgICAgICAgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcgJiYgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcuaW5jcmVhc2VMYWJlbCB8IGZkVHJhbnNsYXRlKSlcbiAgICBcIlxuICAgIChrZXl1cCk9XCJzcGlubmVyQnV0dG9uS2V5dXBIYW5kbGUoJGV2ZW50KVwiXG4gICAgKGNsaWNrKT1cInNjcm9sbERvd24oKVwiXG4+PC9idXR0b24+XG4iXX0=
|
package/facets/package.json
CHANGED
package/feed-input/package.json
CHANGED
|
@@ -68,6 +68,10 @@ class TimeColumnComponent {
|
|
|
68
68
|
this._resize$ = new BehaviorSubject(false);
|
|
69
69
|
/** @hidden */
|
|
70
70
|
this._subscriptions = new Subscription();
|
|
71
|
+
/** @hidden
|
|
72
|
+
* logs numeric key inputs to set time using keyboard input.
|
|
73
|
+
*/
|
|
74
|
+
this._keyLog = [];
|
|
71
75
|
this._subscriptions.add(combineLatest([this._viewInit$, this._elementsAtOnce$, this._offset$, this._resize$])
|
|
72
76
|
.pipe(filter(([viewInit]) => viewInit), tap(([, elementsAtOnce, offset]) => {
|
|
73
77
|
const averageHeight = this.items.toArray().reduce((acc, next) => acc + next.getHeight(), 0) / this.items.length;
|
|
@@ -170,8 +174,11 @@ class TimeColumnComponent {
|
|
|
170
174
|
this.scrollUp();
|
|
171
175
|
event.preventDefault();
|
|
172
176
|
}
|
|
173
|
-
else if (KeyUtil.isKeyType(event, 'numeric')
|
|
174
|
-
this.
|
|
177
|
+
else if (KeyUtil.isKeyType(event, 'numeric')) {
|
|
178
|
+
this._numericKeyInputHandler(event);
|
|
179
|
+
}
|
|
180
|
+
else if (KeyUtil.isKeyType(event, 'alphabetical')) {
|
|
181
|
+
this._alphaKeyInputHandler(event);
|
|
175
182
|
}
|
|
176
183
|
}
|
|
177
184
|
/** @hidden */
|
|
@@ -274,6 +281,41 @@ class TimeColumnComponent {
|
|
|
274
281
|
_onFocusIndicator() {
|
|
275
282
|
this.activeStateChange.emit();
|
|
276
283
|
}
|
|
284
|
+
/** @hidden
|
|
285
|
+
* handles alphabetical key inputs to set period.
|
|
286
|
+
*/
|
|
287
|
+
_alphaKeyInputHandler(event) {
|
|
288
|
+
if (event.key.toLowerCase() === 'a') {
|
|
289
|
+
this._pickTimeOnValue('AM');
|
|
290
|
+
}
|
|
291
|
+
else if (event.key.toLowerCase() === 'p') {
|
|
292
|
+
this._pickTimeOnValue('PM');
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
/** @hidden
|
|
296
|
+
* handles numeric key inputs to set time.
|
|
297
|
+
*/
|
|
298
|
+
_numericKeyInputHandler(event) {
|
|
299
|
+
const lastItemValue = this.items.last.value.value; // value of last item in column
|
|
300
|
+
this._numericInputTimeout && clearTimeout(this._numericInputTimeout);
|
|
301
|
+
this._keyLog.push(event.key);
|
|
302
|
+
const inputValue = parseInt(this._keyLog.join(''), 10); // converts keyLog elements to a number
|
|
303
|
+
if (inputValue * 10 > lastItemValue || this._keyLog.length === lastItemValue.toString().length) {
|
|
304
|
+
this._pickTimeOnValue(inputValue);
|
|
305
|
+
}
|
|
306
|
+
else {
|
|
307
|
+
this._numericInputTimeout = setTimeout(() => {
|
|
308
|
+
this._pickTimeOnValue(inputValue);
|
|
309
|
+
}, 500);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
/** @hidden
|
|
313
|
+
* set the time for given item value. used by _numericKeyInputHandler.
|
|
314
|
+
*/
|
|
315
|
+
_pickTimeOnValue(value) {
|
|
316
|
+
this._pickTime(this.items.find((item) => item.value.value === value), false, true, false);
|
|
317
|
+
this._keyLog = []; // clear key log
|
|
318
|
+
}
|
|
277
319
|
/**
|
|
278
320
|
* Method triggered by keyboard, or decrement button
|
|
279
321
|
* Args:
|