@fundamental-ngx/core 0.36.1-rc.7 → 0.36.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/action-bar/package.json +1 -1
  2. package/action-sheet/package.json +1 -1
  3. package/alert/package.json +1 -1
  4. package/avatar/package.json +1 -1
  5. package/avatar-group/package.json +1 -1
  6. package/bar/package.json +1 -1
  7. package/breadcrumb/package.json +1 -1
  8. package/busy-indicator/package.json +1 -1
  9. package/button/package.json +1 -1
  10. package/calendar/package.json +1 -1
  11. package/card/package.json +1 -1
  12. package/carousel/package.json +1 -1
  13. package/checkbox/package.json +1 -1
  14. package/combobox/package.json +1 -1
  15. package/content-density/package.json +2 -2
  16. package/date-picker/package.json +1 -1
  17. package/datetime/package.json +1 -1
  18. package/datetime-picker/package.json +1 -1
  19. package/dialog/esm2020/dialog.component.mjs +2 -2
  20. package/dialog/fesm2015/fundamental-ngx-core-dialog.mjs +1 -1
  21. package/dialog/fesm2015/fundamental-ngx-core-dialog.mjs.map +1 -1
  22. package/dialog/fesm2020/fundamental-ngx-core-dialog.mjs +1 -1
  23. package/dialog/fesm2020/fundamental-ngx-core-dialog.mjs.map +1 -1
  24. package/dialog/package.json +1 -1
  25. package/dynamic-page/package.json +1 -1
  26. package/dynamic-side-content/package.json +1 -1
  27. package/esm2020/dialog/dialog.component.mjs +2 -2
  28. package/esm2020/list/directives/list-group-header.directive.mjs +18 -6
  29. package/esm2020/list/list.component.mjs +2 -2
  30. package/esm2020/table/table-wrapper.component.mjs +6 -22
  31. package/esm2020/table/table.component.mjs +15 -10
  32. package/esm2020/time/time-column/time-column.component.mjs +5 -47
  33. package/esm2020/utils/services/keyboard-support/keyboard-support.service.mjs +9 -13
  34. package/facets/package.json +1 -1
  35. package/feed-input/package.json +1 -1
  36. package/feed-list-item/package.json +1 -1
  37. package/fesm2015/fundamental-ngx-core-dialog.mjs +1 -1
  38. package/fesm2015/fundamental-ngx-core-dialog.mjs.map +1 -1
  39. package/fesm2015/fundamental-ngx-core-list.mjs +16 -5
  40. package/fesm2015/fundamental-ngx-core-list.mjs.map +1 -1
  41. package/fesm2015/fundamental-ngx-core-table.mjs +22 -30
  42. package/fesm2015/fundamental-ngx-core-table.mjs.map +1 -1
  43. package/fesm2015/fundamental-ngx-core-time.mjs +4 -46
  44. package/fesm2015/fundamental-ngx-core-time.mjs.map +1 -1
  45. package/fesm2015/fundamental-ngx-core-utils.mjs +8 -12
  46. package/fesm2015/fundamental-ngx-core-utils.mjs.map +1 -1
  47. package/fesm2020/fundamental-ngx-core-dialog.mjs +1 -1
  48. package/fesm2020/fundamental-ngx-core-dialog.mjs.map +1 -1
  49. package/fesm2020/fundamental-ngx-core-list.mjs +16 -5
  50. package/fesm2020/fundamental-ngx-core-list.mjs.map +1 -1
  51. package/fesm2020/fundamental-ngx-core-table.mjs +22 -30
  52. package/fesm2020/fundamental-ngx-core-table.mjs.map +1 -1
  53. package/fesm2020/fundamental-ngx-core-time.mjs +4 -46
  54. package/fesm2020/fundamental-ngx-core-time.mjs.map +1 -1
  55. package/fesm2020/fundamental-ngx-core-utils.mjs +8 -12
  56. package/fesm2020/fundamental-ngx-core-utils.mjs.map +1 -1
  57. package/file-uploader/package.json +1 -1
  58. package/fixed-card-layout/package.json +1 -1
  59. package/flexible-column-layout/package.json +1 -1
  60. package/form/package.json +1 -1
  61. package/formatted-text/package.json +1 -1
  62. package/grid-list/package.json +1 -1
  63. package/icon/package.json +1 -1
  64. package/illustrated-message/package.json +1 -1
  65. package/infinite-scroll/package.json +1 -1
  66. package/info-label/package.json +1 -1
  67. package/inline-help/package.json +1 -1
  68. package/input-group/package.json +1 -1
  69. package/layout-grid/package.json +1 -1
  70. package/layout-panel/package.json +1 -1
  71. package/link/package.json +1 -1
  72. package/list/directives/list-group-header.directive.d.ts +2 -2
  73. package/list/esm2020/directives/list-group-header.directive.mjs +18 -6
  74. package/list/esm2020/list.component.mjs +2 -2
  75. package/list/fesm2015/fundamental-ngx-core-list.mjs +16 -5
  76. package/list/fesm2015/fundamental-ngx-core-list.mjs.map +1 -1
  77. package/list/fesm2020/fundamental-ngx-core-list.mjs +16 -5
  78. package/list/fesm2020/fundamental-ngx-core-list.mjs.map +1 -1
  79. package/list/package.json +1 -1
  80. package/menu/package.json +1 -1
  81. package/message-box/package.json +1 -1
  82. package/message-strip/package.json +1 -1
  83. package/message-toast/package.json +1 -1
  84. package/micro-process-flow/package.json +1 -1
  85. package/mobile-mode/package.json +1 -1
  86. package/multi-input/package.json +1 -1
  87. package/nested-list/package.json +1 -1
  88. package/notification/package.json +1 -1
  89. package/object-identifier/package.json +1 -1
  90. package/object-marker/package.json +1 -1
  91. package/object-number/package.json +1 -1
  92. package/object-status/package.json +1 -1
  93. package/overflow-layout/package.json +4 -4
  94. package/package.json +2 -2
  95. package/pagination/package.json +1 -1
  96. package/panel/package.json +1 -1
  97. package/popover/package.json +1 -1
  98. package/product-switch/package.json +1 -1
  99. package/progress-indicator/package.json +1 -1
  100. package/quick-view/package.json +1 -1
  101. package/radio/package.json +1 -1
  102. package/rating-indicator/package.json +1 -1
  103. package/resizable-card-layout/package.json +1 -1
  104. package/scroll-spy/package.json +1 -1
  105. package/scrollbar/package.json +1 -1
  106. package/segmented-button/package.json +1 -1
  107. package/select/package.json +1 -1
  108. package/shared/package.json +1 -1
  109. package/shellbar/package.json +1 -1
  110. package/side-navigation/package.json +1 -1
  111. package/slider/package.json +1 -1
  112. package/split-button/package.json +1 -1
  113. package/splitter/package.json +1 -1
  114. package/status-indicator/package.json +1 -1
  115. package/step-input/package.json +1 -1
  116. package/switch/package.json +1 -1
  117. package/table/esm2020/table-wrapper.component.mjs +6 -22
  118. package/table/esm2020/table.component.mjs +15 -10
  119. package/table/fesm2015/fundamental-ngx-core-table.mjs +22 -30
  120. package/table/fesm2015/fundamental-ngx-core-table.mjs.map +1 -1
  121. package/table/fesm2020/fundamental-ngx-core-table.mjs +22 -30
  122. package/table/fesm2020/fundamental-ngx-core-table.mjs.map +1 -1
  123. package/table/package.json +1 -1
  124. package/table/table-wrapper.component.d.ts +3 -10
  125. package/table/table.component.d.ts +1 -8
  126. package/tabs/package.json +1 -1
  127. package/text/package.json +1 -1
  128. package/theming/package.json +1 -1
  129. package/tile/package.json +1 -1
  130. package/time/esm2020/time-column/time-column.component.mjs +5 -47
  131. package/time/fesm2015/fundamental-ngx-core-time.mjs +4 -46
  132. package/time/fesm2015/fundamental-ngx-core-time.mjs.map +1 -1
  133. package/time/fesm2020/fundamental-ngx-core-time.mjs +4 -46
  134. package/time/fesm2020/fundamental-ngx-core-time.mjs.map +1 -1
  135. package/time/package.json +1 -1
  136. package/time/time-column/time-column.component.d.ts +0 -20
  137. package/time-picker/package.json +1 -1
  138. package/timeline/package.json +1 -1
  139. package/title/package.json +1 -1
  140. package/token/package.json +1 -1
  141. package/toolbar/package.json +1 -1
  142. package/tree/package.json +1 -1
  143. package/upload-collection/package.json +1 -1
  144. package/utils/esm2020/services/keyboard-support/keyboard-support.service.mjs +9 -13
  145. package/utils/fesm2015/fundamental-ngx-core-utils.mjs +8 -12
  146. package/utils/fesm2015/fundamental-ngx-core-utils.mjs.map +1 -1
  147. package/utils/fesm2020/fundamental-ngx-core-utils.mjs +8 -12
  148. package/utils/fesm2020/fundamental-ngx-core-utils.mjs.map +1 -1
  149. package/utils/package.json +1 -1
  150. package/utils/services/keyboard-support/keyboard-support.service.d.ts +1 -7
  151. package/vertical-navigation/package.json +1 -1
  152. package/wizard/package.json +1 -1
@@ -52,10 +52,6 @@ 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 = [];
59
55
  this._subscriptions.add(combineLatest([this._viewInit$, this._elementsAtOnce$, this._offset$, this._resize$])
60
56
  .pipe(filter(([viewInit]) => viewInit), tap(([, elementsAtOnce, offset]) => {
61
57
  const averageHeight = this.items.toArray().reduce((acc, next) => acc + next.getHeight(), 0) / this.items.length;
@@ -158,11 +154,8 @@ export class TimeColumnComponent {
158
154
  this.scrollUp();
159
155
  event.preventDefault();
160
156
  }
161
- else if (KeyUtil.isKeyType(event, 'numeric')) {
162
- this._numericKeyInputHandler(event);
163
- }
164
- else if (KeyUtil.isKeyType(event, 'alphabetical')) {
165
- this._alphaKeyInputHandler(event);
157
+ else if (KeyUtil.isKeyType(event, 'numeric') || KeyUtil.isKeyType(event, 'alphabetical')) {
158
+ this._queryKeyDownEvent.next(event.key);
166
159
  }
167
160
  }
168
161
  /** @hidden */
@@ -264,41 +257,6 @@ export class TimeColumnComponent {
264
257
  _onFocusIndicator() {
265
258
  this.activeStateChange.emit();
266
259
  }
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
- }
302
260
  /**
303
261
  * Method triggered by keyboard, or decrement button
304
262
  * Args:
@@ -386,7 +344,7 @@ export class TimeColumnComponent {
386
344
  /** @hidden */
387
345
  _updateInternalTranslationConfig() {
388
346
  switch (this.columnTranslationsPreset) {
389
- case 'hours':
347
+ case 'seconds':
390
348
  this.internalTranslationConfig = {
391
349
  increaseLabel: 'coreTime.increaseHoursLabel',
392
350
  label: 'coreTime.hoursLabel',
@@ -402,7 +360,7 @@ export class TimeColumnComponent {
402
360
  navigationInstruction: 'coreTime.navigationInstruction'
403
361
  };
404
362
  break;
405
- case 'seconds':
363
+ case 'hours':
406
364
  this.internalTranslationConfig = {
407
365
  increaseLabel: 'coreTime.increaseSecondsLabel',
408
366
  label: 'coreTime.secondsLabel',
@@ -478,4 +436,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
478
436
  type: HostListener,
479
437
  args: ['wheel', ['$event']]
480
438
  }] } });
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=
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+IGtleXMuam9pbignJykpLFxuICAgICAgICAgICAgICAgICAgICBtYXAoKHZhbHVlKSA9PiB0aGlzLl9nZXRWYWx1ZSh2YWx1ZSkpLFxuICAgICAgICAgICAgICAgICAgICBtYXAoKHZhbHVlKSA9PiB0aGlzLl9nZXRJdGVtKHZhbHVlKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoaXRlbSkgPT4gdGhpcy5fcGlja1RpbWUoaXRlbSwgZmFsc2UsIHRydWUpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0VXBDYXJvdXNlbENvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbmZpZzogQ2Fyb3VzZWxDb25maWcgPSB7XG4gICAgICAgICAgICBnZXN0dXJlU3VwcG9ydDogdHJ1ZSxcbiAgICAgICAgICAgIHZlcnRpY2FsOiB0cnVlLFxuICAgICAgICAgICAgZWxlbWVudHNBdE9uY2U6IHRoaXMuX2VsZW1lbnRzQXRPbmNlJC52YWx1ZSxcbiAgICAgICAgICAgIHRyYW5zaXRpb246ICcxNTBtcydcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKCF0aGlzLm1lcmlkaWFuKSB7XG4gICAgICAgICAgICBjb25maWcuaW5maW5pdGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0VXBJbml0aWFsVmFsdWUoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fYWN0aXZlVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2ZVZhbHVlID0gdGhpcy5pdGVtcy5maXJzdC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9waWNrVGltZSh0aGlzLl9nZXRJdGVtKHRoaXMuX2FjdGl2ZVZhbHVlKSwgZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdXBkYXRlSW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZygpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLmNvbHVtblRyYW5zbGF0aW9uc1ByZXNldCkge1xuICAgICAgICAgICAgY2FzZSAnc2Vjb25kcyc6XG4gICAgICAgICAgICAgICAgdGhpcy5pbnRlcm5hbFRyYW5zbGF0aW9uQ29uZmlnID0ge1xuICAgICAgICAgICAgICAgICAgICBpbmNyZWFzZUxhYmVsOiAnY29yZVRpbWUuaW5jcmVhc2VIb3Vyc0xhYmVsJyxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdjb3JlVGltZS5ob3Vyc0xhYmVsJyxcbiAgICAgICAgICAgICAgICAgICAgZGVjcmVhc2VMYWJlbDogJ2NvcmVUaW1lLmRlY3JlYXNlSG91cnNMYWJlbCcsXG4gICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25JbnN0cnVjdGlvbjogJ2NvcmVUaW1lLm5hdmlnYXRpb25JbnN0cnVjdGlvbidcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbWludXRlcyc6XG4gICAgICAgICAgICAgICAgdGhpcy5pbnRlcm5hbFRyYW5zbGF0aW9uQ29uZmlnID0ge1xuICAgICAgICAgICAgICAgICAgICBpbmNyZWFzZUxhYmVsOiAnY29yZVRpbWUuaW5jcmVhc2VNaW51dGVzTGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2NvcmVUaW1lLm1pbnV0ZXNMYWJlbCcsXG4gICAgICAgICAgICAgICAgICAgIGRlY3JlYXNlTGFiZWw6ICdjb3JlVGltZS5kZWNyZWFzZU1pbnV0ZXNMYWJlbCcsXG4gICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25JbnN0cnVjdGlvbjogJ2NvcmVUaW1lLm5hdmlnYXRpb25JbnN0cnVjdGlvbidcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaG91cnMnOlxuICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgaW5jcmVhc2VMYWJlbDogJ2NvcmVUaW1lLmluY3JlYXNlU2Vjb25kc0xhYmVsJyxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdjb3JlVGltZS5zZWNvbmRzTGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICBkZWNyZWFzZUxhYmVsOiAnY29yZVRpbWUuZGVjcmVhc2VTZWNvbmRzTGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uSW5zdHJ1Y3Rpb246ICdjb3JlVGltZS5uYXZpZ2F0aW9uSW5zdHJ1Y3Rpb24nXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3BlcmlvZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5pbnRlcm5hbFRyYW5zbGF0aW9uQ29uZmlnID0ge1xuICAgICAgICAgICAgICAgICAgICBpbmNyZWFzZUxhYmVsOiAnY29yZVRpbWUuaW5jcmVhc2VQZXJpb2RMYWJlbCcsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnY29yZVRpbWUucGVyaW9kTGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICBkZWNyZWFzZUxhYmVsOiAnY29yZVRpbWUuZGVjcmVhc2VQZXJpb2RMYWJlbCcsXG4gICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25JbnN0cnVjdGlvbjogJ2NvcmVUaW1lLm5hdmlnYXRpb25JbnN0cnVjdGlvbidcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyA9IG51bGw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbn1cbiIsIjxsYWJlbCBjbGFzcz1cImZkLXRpbWVfX3NsaWRlci1sYWJlbFwiPnt7XG4gICAgdGltZUNvbmZpZz8ubGFiZWwgfHwgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcgJiYgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcubGFiZWwgfCBmZFRyYW5zbGF0ZSkpXG59fTwvbGFiZWw+XG48YnV0dG9uXG4gICAgKm5nSWY9XCJhY3RpdmUgJiYgc3Bpbm5lcnNcIlxuICAgIGZkLWJ1dHRvblxuICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICBnbHlwaD1cIm5hdmlnYXRpb24tdXAtYXJyb3dcIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuICAgIFt0aXRsZV09XCJcbiAgICAgICAgdGltZUNvbmZpZz8uZGVjcmVhc2VMYWJlbCB8fFxuICAgICAgICAoaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyAmJiAoaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZy5kZWNyZWFzZUxhYmVsIHwgZmRUcmFuc2xhdGUpKVxuICAgIFwiXG4gICAgW2FyaWFMYWJlbF09XCJcbiAgICAgICAgdGltZUNvbmZpZz8uZGVjcmVhc2VMYWJlbCB8fFxuICAgICAgICAoaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyAmJiAoaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZy5kZWNyZWFzZUxhYmVsIHwgZmRUcmFuc2xhdGUpKVxuICAgIFwiXG4gICAgKGtleXVwKT1cInNwaW5uZXJCdXR0b25LZXl1cEhhbmRsZSgkZXZlbnQsIHRydWUpXCJcbiAgICAoY2xpY2spPVwic2Nyb2xsVXAoJGV2ZW50KVwiXG4+PC9idXR0b24+XG48ZGl2XG4gICAgY2xhc3M9XCJmZC10aW1lX193cmFwcGVyXCJcbiAgICBbY2xhc3MuZmQtdGltZV9fd3JhcHBlci0tYWN0aXZlXT1cImFjdGl2ZVwiXG4gICAgW2NsYXNzLmZkLXRpbWVfX3dyYXBwZXItLW1lcmlkaWFuXT1cIm1lcmlkaWFuXCJcbiAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImFjdGl2ZSA/IHdyYXBwZXJIZWlnaHQgOiAnJ1wiXG4+XG4gICAgPHVsXG4gICAgICAgIGNsYXNzPVwiZmQtdGltZV9fbGlzdFwiXG4gICAgICAgIFtjbGFzcy5mZC10aW1lLWNvbHVtbi1jdXN0b20taGlkZGVuXT1cIiFhY3RpdmVcIlxuICAgICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgICAgIChjbGljayk9XCJpbmRpY2F0b3IuZm9jdXMoKVwiXG4gICAgICAgIChhY3RpdmVDaGFuZ2UpPVwiYWN0aXZlQ2hhbmdlZEhhbmRsZSgkZXZlbnQpXCJcbiAgICAgICAgKGRyYWdTdGF0ZUNoYW5nZSk9XCJoYW5kbGVEcmFnKCRldmVudClcIlxuICAgICAgICBmZENhcm91c2VsXG4gICAgPlxuICAgICAgICA8bGlcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtdGltZV9faXRlbVwiXG4gICAgICAgICAgICBmZENhcm91c2VsSXRlbVxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHJvdyBvZiByb3dzOyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgICAgICAgICAjaXRlbT1cImZkQ2Fyb3VzZWxJdGVtXCJcbiAgICAgICAgICAgIFtpZF09XCJfY3JlYXRlQ29sdW1uSXRlbUlkQnlJbmRleChpbmRleClcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1kaXNwbGF5ZWQtdmFsdWVdPVwicm93LnZhbHVlXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJyb3dcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLXRpbWVfX3VuaXRcIiByb2xlPVwiYnV0dG9uXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJyb3cubGFiZWxcIiAoY2xpY2spPVwicGljayhpdGVtLCBpbmRleClcIj5cbiAgICAgICAgICAgICAgICB7eyByb3cubGFiZWwgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmZC10aW1lX19jdXJyZW50LWluZGljYXRvclwiXG4gICAgICAgICNpbmRpY2F0b3JcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgICBbYXR0ci5pZF09XCJjdXJyZW50SW5kaWNhdG9ySWRcIlxuICAgICAgICBbY2xhc3MuZmQtdGltZS1jb2x1bW4tY3VzdG9tLWhpZGRlbl09XCIhYWN0aXZlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImN1cnJlbnRJbmRpY2F0b3JWYWx1ZUlkXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmlwdGlvbl09XCJcbiAgICAgICAgICAgIHRpbWVDb25maWc/Lm5hdmlnYXRpb25JbnN0cnVjdGlvbiB8fFxuICAgICAgICAgICAgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcgJiYgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcubmF2aWdhdGlvbkluc3RydWN0aW9uIHwgZmRUcmFuc2xhdGUpKVxuICAgICAgICBcIlxuICAgICAgICAoZm9jdXMpPVwiX29uRm9jdXNJbmRpY2F0b3IoKVwiXG4gICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJmZC10aW1lLWNvbHVtbi1jdXN0b20taGlkZGVuXCJcbiAgICAgICAgICAgIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiXG4gICAgICAgICAgICBhcmlhLWF0b21pYz1cInRydWVcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiIWFjdGl2ZVwiXG4gICAgICAgICAgICBbYXR0ci5pZF09XCJjdXJyZW50SW5kaWNhdG9yVmFsdWVJZFwiXG4gICAgICAgICAgICBbY2xhc3MuZmQtdGltZS1jb2x1bW4tY3VzdG9tLWhpZGRlbl09XCJhY3RpdmVcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyBhY3RpdmVWYWx1ZT8ubGFiZWwgfX1cbiAgICAgICAgICAgIHt7IHRpbWVDb25maWc/LmxhYmVsIHx8IChpbnRlcm5hbFRyYW5zbGF0aW9uQ29uZmlnICYmIChpbnRlcm5hbFRyYW5zbGF0aW9uQ29uZmlnLmxhYmVsIHwgZmRUcmFuc2xhdGUpKSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPHNwYW4gKm5nSWY9XCIhYWN0aXZlXCIgY2xhc3M9XCJmZC10aW1lX19pdGVtIGZkLXRpbWVfX2l0ZW0tLWNvbGxhcHNlZFwiPlxuICAgICAgICB7eyBhY3RpdmVWYWx1ZT8ubGFiZWwgfX1cbiAgICA8L3NwYW4+XG48L2Rpdj5cbjxidXR0b25cbiAgICAqbmdJZj1cImFjdGl2ZSAmJiBzcGlubmVyc1wiXG4gICAgZmQtYnV0dG9uXG4gICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgIGdseXBoPVwibmF2aWdhdGlvbi1kb3duLWFycm93XCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgICBbdGl0bGVdPVwiXG4gICAgICAgIHRpbWVDb25maWc/LmluY3JlYXNlTGFiZWwgfHxcbiAgICAgICAgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcgJiYgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcuaW5jcmVhc2VMYWJlbCB8IGZkVHJhbnNsYXRlKSlcbiAgICBcIlxuICAgIFthcmlhTGFiZWxdPVwiXG4gICAgICAgIHRpbWVDb25maWc/LmluY3JlYXNlTGFiZWwgfHxcbiAgICAgICAgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcgJiYgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcuaW5jcmVhc2VMYWJlbCB8IGZkVHJhbnNsYXRlKSlcbiAgICBcIlxuICAgIChrZXl1cCk9XCJzcGlubmVyQnV0dG9uS2V5dXBIYW5kbGUoJGV2ZW50KVwiXG4gICAgKGNsaWNrKT1cInNjcm9sbERvd24oKVwiXG4+PC9idXR0b24+XG4iXX0=
@@ -11,19 +11,13 @@ export class KeyboardSupportService {
11
11
  this._onDestroy$ = new Subject();
12
12
  /** An RxJS Subject that will kill the data stream upon queryList changes (for unsubscribing) */
13
13
  this._onRefresh$ = new Subject();
14
- /** @hidden
15
- * allow tab key navigation. default is true.
16
- */
17
- this._tabKeyNavigation = true;
18
14
  }
19
15
  /** @hidden */
20
16
  get keyManager() {
21
17
  return this._keyManager;
22
18
  }
23
19
  /** @hidden */
24
- setKeyboardService(queryList, wrap, tabKeyNavigation = true) {
25
- this._itemList = queryList;
26
- this._tabKeyNavigation = tabKeyNavigation;
20
+ setKeyboardService(queryList, wrap) {
27
21
  this._keyManager = new FocusKeyManager(queryList).withWrap(wrap).withHomeAndEnd();
28
22
  queryList.changes
29
23
  .pipe(takeUntil(this._onDestroy$), startWith(0))
@@ -33,12 +27,14 @@ export class KeyboardSupportService {
33
27
  onKeyDown(event) {
34
28
  this._keyManager.onKeydown(event);
35
29
  if (KeyUtil.isKeyCode(event, TAB)) {
36
- if (KeyUtil.isKeyCode(event, TAB) && this._tabKeyNavigation) {
37
- event.preventDefault();
38
- hasModifierKey(event, 'shiftKey')
39
- ? this.keyManager.setPreviousItemActive()
40
- : this.keyManager.setNextItemActive();
30
+ event.preventDefault();
31
+ if (hasModifierKey(event, 'shiftKey')) {
32
+ this.keyManager.setPreviousItemActive();
41
33
  }
34
+ else {
35
+ this.keyManager.setNextItemActive();
36
+ }
37
+ return;
42
38
  }
43
39
  }
44
40
  /** Destroys KeyboardSupportService dependencies */
@@ -62,4 +58,4 @@ export class KeyboardSupportService {
62
58
  }
63
59
  }
64
60
  }
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Ym9hcmQtc3VwcG9ydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdXRpbHMvc2VydmljZXMva2V5Ym9hcmQtc3VwcG9ydC9rZXlib2FyZC1zdXBwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR3BELE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSWxGLE1BQU0sT0FBTyxzQkFBc0I7SUFBbkM7UUFDSSwwREFBMEQ7UUFDMUQsb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBd0IsQ0FBQztRQUV0RCx1R0FBdUc7UUFDdEYsZ0JBQVcsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVsRSxpR0FBaUc7UUFDaEYsZ0JBQVcsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQWFsRTs7V0FFRztRQUNLLHNCQUFpQixHQUFHLElBQUksQ0FBQztJQTZEckMsQ0FBQztJQXhFRyxjQUFjO0lBQ2QsSUFBSSxVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFVRCxjQUFjO0lBQ2Qsa0JBQWtCLENBQ2QsU0FBc0QsRUFDdEQsSUFBYyxFQUNkLGdCQUFnQixHQUFHLElBQUk7UUFFdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDO1FBQzFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2xGLFNBQVMsQ0FBQyxPQUFPO2FBQ1osSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQy9DLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsY0FBYztJQUNkLFNBQVMsQ0FBQyxLQUFvQjtRQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQy9CLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO2dCQUN6RCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLGNBQWMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDO29CQUM3QixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsRUFBRTtvQkFDekMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzthQUM3QztTQUNKO0lBQ0wsQ0FBQztJQUVELG1EQUFtRDtJQUNuRCxTQUFTO1FBQ0wsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxjQUFjO0lBQ04sbUJBQW1CLENBQUMsU0FBc0Q7UUFDOUUsTUFBTSxvQkFBb0IsR0FBRyxDQUN6QixRQUEwQyxFQUMxQyxTQUFpQixFQUNqQixlQUFxQyxFQUNqQyxFQUFFO1lBQ04sUUFBUSxDQUFDLE9BQU87aUJBQ1gsSUFBSSxDQUNELFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFDdkIsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUN0RCxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUN6QztpQkFDQSxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztRQUNyRSxDQUFDLENBQUM7UUFFRiw2Q0FBNkM7UUFDN0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUV4QixNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFL0QsSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFO1lBQ2xCLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3pELG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3pEO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNLZXlNYW5hZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBLZXlib2FyZFN1cHBvcnRJdGVtSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9rZXlib2FyZC1zdXBwb3J0LWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IG1lcmdlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHN0YXJ0V2l0aCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBLZXlVdGlsIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zJztcbmltcG9ydCB7IERPV05fQVJST1csIGhhc01vZGlmaWVyS2V5LCBUQUIsIFVQX0FSUk9XIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcblxuZXhwb3J0IHR5cGUgRm9jdXNFc2NhcGVEaXJlY3Rpb24gPSAndXAnIHwgJ2Rvd24nO1xuXG5leHBvcnQgY2xhc3MgS2V5Ym9hcmRTdXBwb3J0U2VydmljZTxUPiB7XG4gICAgLyoqIFN1YmplY3QgdGhhdCBpcyB0aHJvd24sIHdoZW4gZm9jdXMgZXNjYXBlcyB0aGUgbGlzdCAqL1xuICAgIGZvY3VzRXNjYXBlTGlzdCA9IG5ldyBTdWJqZWN0PEZvY3VzRXNjYXBlRGlyZWN0aW9uPigpO1xuXG4gICAgLyoqIEFuIFJ4SlMgU3ViamVjdCB0aGF0IHdpbGwga2lsbCB0aGUgZGF0YSBzdHJlYW0gdXBvbiBjb21wb25lbnTigJlzIGRlc3RydWN0aW9uIChmb3IgdW5zdWJzY3JpYmluZykgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfb25EZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQW4gUnhKUyBTdWJqZWN0IHRoYXQgd2lsbCBraWxsIHRoZSBkYXRhIHN0cmVhbSB1cG9uIHF1ZXJ5TGlzdCBjaGFuZ2VzIChmb3IgdW5zdWJzY3JpYmluZykgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfb25SZWZyZXNoJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2tleU1hbmFnZXI6IEZvY3VzS2V5TWFuYWdlcjxUPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGtleU1hbmFnZXIoKTogRm9jdXNLZXlNYW5hZ2VyPFQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2tleU1hbmFnZXI7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pdGVtTGlzdDogUXVlcnlMaXN0PEtleWJvYXJkU3VwcG9ydEl0ZW1JbnRlcmZhY2UgJiBUPjtcblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogYWxsb3cgdGFiIGtleSBuYXZpZ2F0aW9uLiBkZWZhdWx0IGlzIHRydWUuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfdGFiS2V5TmF2aWdhdGlvbiA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldEtleWJvYXJkU2VydmljZShcbiAgICAgICAgcXVlcnlMaXN0OiBRdWVyeUxpc3Q8S2V5Ym9hcmRTdXBwb3J0SXRlbUludGVyZmFjZSAmIFQ+LFxuICAgICAgICB3cmFwPzogYm9vbGVhbixcbiAgICAgICAgdGFiS2V5TmF2aWdhdGlvbiA9IHRydWVcbiAgICApOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXRlbUxpc3QgPSBxdWVyeUxpc3Q7XG4gICAgICAgIHRoaXMuX3RhYktleU5hdmlnYXRpb24gPSB0YWJLZXlOYXZpZ2F0aW9uO1xuICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyID0gbmV3IEZvY3VzS2V5TWFuYWdlcihxdWVyeUxpc3QpLndpdGhXcmFwKHdyYXApLndpdGhIb21lQW5kRW5kKCk7XG4gICAgICAgIHF1ZXJ5TGlzdC5jaGFuZ2VzXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksIHN0YXJ0V2l0aCgwKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fcmVmcmVzaEVzY2FwZUxvZ2ljKHF1ZXJ5TGlzdCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2tleU1hbmFnZXIub25LZXlkb3duKGV2ZW50KTtcbiAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBUQUIpKSB7XG4gICAgICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFRBQikgJiYgdGhpcy5fdGFiS2V5TmF2aWdhdGlvbikge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgaGFzTW9kaWZpZXJLZXkoZXZlbnQsICdzaGlmdEtleScpXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5rZXlNYW5hZ2VyLnNldFByZXZpb3VzSXRlbUFjdGl2ZSgpXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5rZXlNYW5hZ2VyLnNldE5leHRJdGVtQWN0aXZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogRGVzdHJveXMgS2V5Ym9hcmRTdXBwb3J0U2VydmljZSBkZXBlbmRlbmNpZXMgKi9cbiAgICBvbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZWZyZXNoRXNjYXBlTG9naWMocXVlcnlMaXN0OiBRdWVyeUxpc3Q8S2V5Ym9hcmRTdXBwb3J0SXRlbUludGVyZmFjZSAmIFQ+KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNyZWF0ZUVzY2FwZUxpc3RlbmVyID0gKFxuICAgICAgICAgICAgbGlzdEl0ZW06IEtleWJvYXJkU3VwcG9ydEl0ZW1JbnRlcmZhY2UgJiBULFxuICAgICAgICAgICAgb25LZXlDb2RlOiBudW1iZXIsXG4gICAgICAgICAgICBlc2NhcGVEaXJlY3Rpb246IEZvY3VzRXNjYXBlRGlyZWN0aW9uXG4gICAgICAgICk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgbGlzdEl0ZW0ua2V5RG93blxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodW5zdWJzY3JpYmUkKSxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyKChldmVudCkgPT4gS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIG9uS2V5Q29kZSkpLFxuICAgICAgICAgICAgICAgICAgICB0YXAoKGV2ZW50KSA9PiBldmVudC5wcmV2ZW50RGVmYXVsdCgpKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuZm9jdXNFc2NhcGVMaXN0Lm5leHQoZXNjYXBlRGlyZWN0aW9uKSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLyoqIEZpbmlzaCBhbGwgb2YgdGhlIHN0cmVhbXMsIGZvcm0gYmVmb3JlICovXG4gICAgICAgIHRoaXMuX29uUmVmcmVzaCQubmV4dCgpO1xuXG4gICAgICAgIGNvbnN0IHVuc3Vic2NyaWJlJCA9IG1lcmdlKHRoaXMuX29uUmVmcmVzaCQsIHRoaXMuX29uRGVzdHJveSQpO1xuXG4gICAgICAgIGlmIChxdWVyeUxpc3QubGVuZ3RoKSB7XG4gICAgICAgICAgICBjcmVhdGVFc2NhcGVMaXN0ZW5lcihxdWVyeUxpc3QubGFzdCwgRE9XTl9BUlJPVywgJ2Rvd24nKTtcbiAgICAgICAgICAgIGNyZWF0ZUVzY2FwZUxpc3RlbmVyKHF1ZXJ5TGlzdC5maXJzdCwgVVBfQVJST1csICd1cCcpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Ym9hcmQtc3VwcG9ydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdXRpbHMvc2VydmljZXMva2V5Ym9hcmQtc3VwcG9ydC9rZXlib2FyZC1zdXBwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR3BELE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSWxGLE1BQU0sT0FBTyxzQkFBc0I7SUFBbkM7UUFDSSwwREFBMEQ7UUFDMUQsb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBd0IsQ0FBQztRQUV0RCx1R0FBdUc7UUFDdEYsZ0JBQVcsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVsRSxpR0FBaUc7UUFDaEYsZ0JBQVcsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQWdFdEUsQ0FBQztJQTNERyxjQUFjO0lBQ2QsSUFBSSxVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFFRCxjQUFjO0lBQ2Qsa0JBQWtCLENBQUMsU0FBc0QsRUFBRSxJQUFjO1FBQ3JGLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2xGLFNBQVMsQ0FBQyxPQUFPO2FBQ1osSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQy9DLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsY0FBYztJQUNkLFNBQVMsQ0FBQyxLQUFvQjtRQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQy9CLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixJQUFJLGNBQWMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMscUJBQXFCLEVBQUUsQ0FBQzthQUMzQztpQkFBTTtnQkFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFLENBQUM7YUFDdkM7WUFDRCxPQUFPO1NBQ1Y7SUFDTCxDQUFDO0lBRUQsbURBQW1EO0lBQ25ELFNBQVM7UUFDTCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELGNBQWM7SUFDTixtQkFBbUIsQ0FBQyxTQUFzRDtRQUM5RSxNQUFNLG9CQUFvQixHQUFHLENBQ3pCLFFBQTBDLEVBQzFDLFNBQWlCLEVBQ2pCLGVBQXFDLEVBQ2pDLEVBQUU7WUFDTixRQUFRLENBQUMsT0FBTztpQkFDWCxJQUFJLENBQ0QsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUN2QixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQ3RELEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQ3pDO2lCQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLENBQUMsQ0FBQztRQUVGLDZDQUE2QztRQUM3QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRXhCLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUvRCxJQUFJLFNBQVMsQ0FBQyxNQUFNLEVBQUU7WUFDbEIsb0JBQW9CLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDekQsb0JBQW9CLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDekQ7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c0tleU1hbmFnZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEtleWJvYXJkU3VwcG9ydEl0ZW1JbnRlcmZhY2UgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2tleWJvYXJkLXN1cHBvcnQtaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgbWVyZ2UsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgc3RhcnRXaXRoLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEtleVV0aWwgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgRE9XTl9BUlJPVywgaGFzTW9kaWZpZXJLZXksIFRBQiwgVVBfQVJST1cgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuXG5leHBvcnQgdHlwZSBGb2N1c0VzY2FwZURpcmVjdGlvbiA9ICd1cCcgfCAnZG93bic7XG5cbmV4cG9ydCBjbGFzcyBLZXlib2FyZFN1cHBvcnRTZXJ2aWNlPFQ+IHtcbiAgICAvKiogU3ViamVjdCB0aGF0IGlzIHRocm93biwgd2hlbiBmb2N1cyBlc2NhcGVzIHRoZSBsaXN0ICovXG4gICAgZm9jdXNFc2NhcGVMaXN0ID0gbmV3IFN1YmplY3Q8Rm9jdXNFc2NhcGVEaXJlY3Rpb24+KCk7XG5cbiAgICAvKiogQW4gUnhKUyBTdWJqZWN0IHRoYXQgd2lsbCBraWxsIHRoZSBkYXRhIHN0cmVhbSB1cG9uIGNvbXBvbmVudOKAmXMgZGVzdHJ1Y3Rpb24gKGZvciB1bnN1YnNjcmliaW5nKSAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vbkRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBBbiBSeEpTIFN1YmplY3QgdGhhdCB3aWxsIGtpbGwgdGhlIGRhdGEgc3RyZWFtIHVwb24gcXVlcnlMaXN0IGNoYW5nZXMgKGZvciB1bnN1YnNjcmliaW5nKSAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vblJlZnJlc2gkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfa2V5TWFuYWdlcjogRm9jdXNLZXlNYW5hZ2VyPFQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQga2V5TWFuYWdlcigpOiBGb2N1c0tleU1hbmFnZXI8VD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fa2V5TWFuYWdlcjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldEtleWJvYXJkU2VydmljZShxdWVyeUxpc3Q6IFF1ZXJ5TGlzdDxLZXlib2FyZFN1cHBvcnRJdGVtSW50ZXJmYWNlICYgVD4sIHdyYXA/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2tleU1hbmFnZXIgPSBuZXcgRm9jdXNLZXlNYW5hZ2VyKHF1ZXJ5TGlzdCkud2l0aFdyYXAod3JhcCkud2l0aEhvbWVBbmRFbmQoKTtcbiAgICAgICAgcXVlcnlMaXN0LmNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSwgc3RhcnRXaXRoKDApKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9yZWZyZXNoRXNjYXBlTG9naWMocXVlcnlMaXN0KSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fa2V5TWFuYWdlci5vbktleWRvd24oZXZlbnQpO1xuICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFRBQikpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAoaGFzTW9kaWZpZXJLZXkoZXZlbnQsICdzaGlmdEtleScpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5rZXlNYW5hZ2VyLnNldFByZXZpb3VzSXRlbUFjdGl2ZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmtleU1hbmFnZXIuc2V0TmV4dEl0ZW1BY3RpdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBEZXN0cm95cyBLZXlib2FyZFN1cHBvcnRTZXJ2aWNlIGRlcGVuZGVuY2llcyAqL1xuICAgIG9uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3JlZnJlc2hFc2NhcGVMb2dpYyhxdWVyeUxpc3Q6IFF1ZXJ5TGlzdDxLZXlib2FyZFN1cHBvcnRJdGVtSW50ZXJmYWNlICYgVD4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3JlYXRlRXNjYXBlTGlzdGVuZXIgPSAoXG4gICAgICAgICAgICBsaXN0SXRlbTogS2V5Ym9hcmRTdXBwb3J0SXRlbUludGVyZmFjZSAmIFQsXG4gICAgICAgICAgICBvbktleUNvZGU6IG51bWJlcixcbiAgICAgICAgICAgIGVzY2FwZURpcmVjdGlvbjogRm9jdXNFc2NhcGVEaXJlY3Rpb25cbiAgICAgICAgKTogdm9pZCA9PiB7XG4gICAgICAgICAgICBsaXN0SXRlbS5rZXlEb3duXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh1bnN1YnNjcmliZSQpLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiBLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgb25LZXlDb2RlKSksXG4gICAgICAgICAgICAgICAgICAgIHRhcCgoZXZlbnQpID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5mb2N1c0VzY2FwZUxpc3QubmV4dChlc2NhcGVEaXJlY3Rpb24pKTtcbiAgICAgICAgfTtcblxuICAgICAgICAvKiogRmluaXNoIGFsbCBvZiB0aGUgc3RyZWFtcywgZm9ybSBiZWZvcmUgKi9cbiAgICAgICAgdGhpcy5fb25SZWZyZXNoJC5uZXh0KCk7XG5cbiAgICAgICAgY29uc3QgdW5zdWJzY3JpYmUkID0gbWVyZ2UodGhpcy5fb25SZWZyZXNoJCwgdGhpcy5fb25EZXN0cm95JCk7XG5cbiAgICAgICAgaWYgKHF1ZXJ5TGlzdC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNyZWF0ZUVzY2FwZUxpc3RlbmVyKHF1ZXJ5TGlzdC5sYXN0LCBET1dOX0FSUk9XLCAnZG93bicpO1xuICAgICAgICAgICAgY3JlYXRlRXNjYXBlTGlzdGVuZXIocXVlcnlMaXN0LmZpcnN0LCBVUF9BUlJPVywgJ3VwJyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/facets",
3
- "version": "0.36.1-rc.7",
3
+ "version": "0.36.1",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^14.0.0",
6
6
  "@angular/core": "^14.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/feed-input",
3
- "version": "0.36.1-rc.7",
3
+ "version": "0.36.1",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^14.0.0",
6
6
  "@angular/core": "^14.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/feed-list-item",
3
- "version": "0.36.1-rc.7",
3
+ "version": "0.36.1",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^14.0.0",
6
6
  "@angular/core": "^14.0.0"
@@ -597,7 +597,7 @@ class DialogComponent extends DialogBase {
597
597
  buildComponentCssClass() {
598
598
  return [
599
599
  this.dialogConfig.hasBackdrop ? 'fd-dialog' : 'fd-dialog--no-backdrop',
600
- this.dialogConfig.container !== 'body' || this.dialogConfig.position ? 'fd-dialog--targeted' : '',
600
+ this.dialogConfig.container !== 'body' ? 'fd-dialog--targeted' : '',
601
601
  this.showDialogWindow ? 'fd-dialog--active' : '',
602
602
  this._class,
603
603
  this.dialogConfig.backdropClass ? this.dialogConfig.backdropClass : ''