@fundamental-ngx/core 0.47.0-rc.9 → 0.47.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 (150) hide show
  1. package/breadcrumb/breadcrumb.component.d.ts +1 -1
  2. package/carousel/carousel-item/carousel-item.component.d.ts +4 -4
  3. package/carousel/carousel-item.directive.d.ts +4 -4
  4. package/checkbox/checkbox/checkbox.component.d.ts +10 -10
  5. package/esm2022/breadcrumb/breadcrumb.component.mjs +2 -2
  6. package/esm2022/calendar/calendar-header/calendar-header.component.mjs +4 -5
  7. package/esm2022/calendar/calendar-views/calendar-aggregated-year-view/calendar-aggregated-year-view.component.mjs +4 -5
  8. package/esm2022/calendar/calendar-views/calendar-month-view/calendar-month-view.component.mjs +4 -5
  9. package/esm2022/calendar/calendar-views/calendar-year-view/calendar-year-view.component.mjs +4 -5
  10. package/esm2022/carousel/carousel-item/carousel-item.component.mjs +1 -1
  11. package/esm2022/carousel/carousel-item.directive.mjs +1 -1
  12. package/esm2022/checkbox/checkbox/checkbox.component.mjs +1 -1
  13. package/esm2022/combobox/combobox.component.mjs +2 -2
  14. package/esm2022/date-picker/date-picker.component.mjs +4 -5
  15. package/esm2022/datetime-picker/datetime-picker.component.mjs +8 -10
  16. package/esm2022/feed-input/directives/feed-input-avatar.directive.mjs +2 -2
  17. package/esm2022/feed-input/directives/feed-input-textarea.directive.mjs +16 -19
  18. package/esm2022/form/form-control/form-control.component.mjs +3 -3
  19. package/esm2022/form/form-label/form-label.component.mjs +5 -6
  20. package/esm2022/input-group/input-group.component.mjs +7 -5
  21. package/esm2022/menu/menu-mobile/menu-mobile.component.mjs +4 -5
  22. package/esm2022/message-box/directives/message-box-template.directive.mjs +3 -3
  23. package/esm2022/message-strip/message-strip.component.mjs +8 -10
  24. package/esm2022/multi-combobox/base-multi-combobox.class.mjs +4 -4
  25. package/esm2022/multi-combobox/helpers.mjs +1 -1
  26. package/esm2022/multi-combobox/multi-announcer/multi-announcer.directive.mjs +11 -5
  27. package/esm2022/multi-combobox/multi-combobox.component.mjs +6 -6
  28. package/esm2022/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +4 -5
  29. package/esm2022/multi-input/multi-input.component.mjs +3 -3
  30. package/esm2022/notification/notification-utils/notification-config.mjs +1 -1
  31. package/esm2022/notification/notification-utils/notification-ref.mjs +1 -1
  32. package/esm2022/object-attribute/fundamental-ngx-core-object-attribute.mjs +5 -0
  33. package/esm2022/object-attribute/index.mjs +3 -0
  34. package/esm2022/object-attribute/object-attribute.component.mjs +49 -0
  35. package/esm2022/object-attribute/object-attribute.module.mjs +16 -0
  36. package/esm2022/overflow-layout/overflow-layout.component.mjs +18 -5
  37. package/esm2022/overflow-layout/overflow-layout.service.mjs +3 -3
  38. package/esm2022/pagination/pagination.component.mjs +2 -2
  39. package/esm2022/popover/popover-mobile/popover-mobile.module.mjs +6 -6
  40. package/esm2022/radio/radio-button/radio-button.component.mjs +2 -2
  41. package/esm2022/select/select-mobile/select-mobile.module.mjs +5 -5
  42. package/esm2022/select/select.component.mjs +3 -3
  43. package/esm2022/select/select.interface.mjs +1 -1
  44. package/esm2022/shellbar/product-menu/product-menu.component.mjs +8 -11
  45. package/esm2022/shellbar/shellbar-action/shellbar-action.component.mjs +6 -7
  46. package/esm2022/shellbar/shellbar-actions-mobile/shellbar-actions-mobile.component.mjs +6 -7
  47. package/esm2022/shellbar/user-menu/shellbar-user-menu.component.mjs +5 -6
  48. package/esm2022/splitter/splitter-pane-container/splitter-pane-container.component.mjs +1 -1
  49. package/esm2022/switch/switch.component.mjs +1 -1
  50. package/esm2022/tabs/tab-list.component.mjs +6 -3
  51. package/esm2022/tabs/tabs.module.mjs +5 -1
  52. package/esm2022/time/time-column/time-column.component.mjs +1 -1
  53. package/esm2022/time/time.component.mjs +1 -1
  54. package/esm2022/time-picker/time-picker.component.mjs +2 -2
  55. package/esm2022/token/tokenizer.component.mjs +6 -7
  56. package/esm2022/toolbar/toolbar.component.mjs +10 -12
  57. package/esm2022/tree/components/tree-item/tree-item.component.mjs +5 -6
  58. package/esm2022/upload-collection/upload-collection-button-group/upload-collection-button-group.component.mjs +4 -6
  59. package/esm2022/upload-collection/upload-collection-form-item/upload-collection-form-item.component.mjs +2 -2
  60. package/feed-input/directives/feed-input-textarea.directive.d.ts +7 -8
  61. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +1 -1
  62. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  63. package/fesm2022/fundamental-ngx-core-calendar.mjs +9 -10
  64. package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
  65. package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
  66. package/fesm2022/fundamental-ngx-core-checkbox.mjs.map +1 -1
  67. package/fesm2022/fundamental-ngx-core-combobox.mjs +1 -1
  68. package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
  69. package/fesm2022/fundamental-ngx-core-date-picker.mjs +3 -4
  70. package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
  71. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +8 -10
  72. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
  73. package/fesm2022/fundamental-ngx-core-feed-input.mjs +16 -19
  74. package/fesm2022/fundamental-ngx-core-feed-input.mjs.map +1 -1
  75. package/fesm2022/fundamental-ngx-core-form.mjs +6 -7
  76. package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
  77. package/fesm2022/fundamental-ngx-core-input-group.mjs +6 -4
  78. package/fesm2022/fundamental-ngx-core-input-group.mjs.map +1 -1
  79. package/fesm2022/fundamental-ngx-core-menu.mjs +3 -4
  80. package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
  81. package/fesm2022/fundamental-ngx-core-message-box.mjs +2 -2
  82. package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
  83. package/fesm2022/fundamental-ngx-core-message-strip.mjs +7 -9
  84. package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
  85. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +15 -10
  86. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  87. package/fesm2022/fundamental-ngx-core-multi-input.mjs +6 -7
  88. package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
  89. package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
  90. package/fesm2022/fundamental-ngx-core-object-attribute.mjs +69 -0
  91. package/fesm2022/fundamental-ngx-core-object-attribute.mjs.map +1 -0
  92. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +18 -5
  93. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  94. package/fesm2022/fundamental-ngx-core-pagination.mjs +1 -1
  95. package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
  96. package/fesm2022/fundamental-ngx-core-popover.mjs +4 -4
  97. package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
  98. package/fesm2022/fundamental-ngx-core-radio.mjs +1 -1
  99. package/fesm2022/fundamental-ngx-core-radio.mjs.map +1 -1
  100. package/fesm2022/fundamental-ngx-core-select.mjs +6 -6
  101. package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
  102. package/fesm2022/fundamental-ngx-core-shellbar.mjs +12 -14
  103. package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
  104. package/fesm2022/fundamental-ngx-core-splitter.mjs.map +1 -1
  105. package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
  106. package/fesm2022/fundamental-ngx-core-tabs.mjs +9 -2
  107. package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
  108. package/fesm2022/fundamental-ngx-core-time-picker.mjs +1 -1
  109. package/fesm2022/fundamental-ngx-core-time-picker.mjs.map +1 -1
  110. package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
  111. package/fesm2022/fundamental-ngx-core-token.mjs +5 -6
  112. package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
  113. package/fesm2022/fundamental-ngx-core-toolbar.mjs +7 -8
  114. package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
  115. package/fesm2022/fundamental-ngx-core-tree.mjs +4 -5
  116. package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
  117. package/fesm2022/fundamental-ngx-core-upload-collection.mjs +6 -7
  118. package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
  119. package/form/form-control/form-control.component.d.ts +3 -3
  120. package/fundamental-ngx-core-v0.47.1.tgz +0 -0
  121. package/input-group/input-group.component.d.ts +10 -4
  122. package/message-box/directives/message-box-template.directive.d.ts +2 -2
  123. package/message-strip/message-strip.component.d.ts +2 -2
  124. package/multi-combobox/base-multi-combobox.class.d.ts +7 -7
  125. package/multi-combobox/helpers.d.ts +3 -3
  126. package/multi-combobox/multi-announcer/multi-announcer.directive.d.ts +4 -2
  127. package/notification/notification-utils/notification-config.d.ts +2 -2
  128. package/notification/notification-utils/notification-ref.d.ts +5 -5
  129. package/object-attribute/README.md +25 -0
  130. package/object-attribute/index.d.ts +2 -0
  131. package/object-attribute/object-attribute.component.d.ts +26 -0
  132. package/object-attribute/object-attribute.module.d.ts +7 -0
  133. package/overflow-layout/overflow-layout.component.d.ts +9 -1
  134. package/overflow-layout/overflow-layout.service.d.ts +1 -1
  135. package/package.json +9 -3
  136. package/pagination/pagination.component.d.ts +2 -2
  137. package/popover/popover-mobile/popover-mobile.module.d.ts +1 -1
  138. package/radio/radio-button/radio-button.component.d.ts +12 -12
  139. package/schematics/add-dependencies/index.js +4 -4
  140. package/select/select-mobile/select-mobile.module.d.ts +1 -1
  141. package/select/select.interface.d.ts +8 -8
  142. package/shellbar/product-menu/product-menu.component.d.ts +3 -3
  143. package/splitter/splitter-pane-container/splitter-pane-container.component.d.ts +1 -1
  144. package/switch/switch.component.d.ts +1 -1
  145. package/tabs/tab-list.component.d.ts +2 -0
  146. package/tabs/tabs.module.d.ts +4 -0
  147. package/time/time-column/time-column.component.d.ts +3 -3
  148. package/time/time.component.d.ts +1 -1
  149. package/toolbar/toolbar.component.d.ts +2 -2
  150. package/fundamental-ngx-core-v0.47.0-rc.9.tgz +0 -0
@@ -483,4 +483,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
483
483
  type: HostListener,
484
484
  args: ['wheel', ['$event']]
485
485
  }] } });
486
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1jb2x1bW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdGltZS90aW1lLWNvbHVtbi90aW1lLWNvbHVtbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90aW1lL3RpbWUtY29sdW1uL3RpbWUtY29sdW1uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BFLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFDTixTQUFTLEVBRVQsU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RSxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhFLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RSxPQUFPLEVBQWtCLGlCQUFpQixFQUFFLHFCQUFxQixFQUFnQixNQUFNLGdDQUFnQyxDQUFDO0FBRXhILE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7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Q0FBQztpSUFPbEcsSUFBSTtzQkFESCxLQUFLO2dCQVFOLFFBQVE7c0JBRFAsS0FBSztnQkFLRixXQUFXO3NCQURkLEtBQUs7Z0JBa0JGLE1BQU07c0JBRFQsS0FBSztnQkFpQk4sUUFBUTtzQkFGUCxLQUFLOztzQkFDTCxXQUFXO3VCQUFDLDRCQUE0QjtnQkFLekMsRUFBRTtzQkFERCxLQUFLO2dCQUtOLFVBQVU7c0JBRFQsS0FBSztnQkFLTix3QkFBd0I7c0JBRHZCLEtBQUs7Z0JBUUYsTUFBTTtzQkFEVCxLQUFLO2dCQVlGLGNBQWM7c0JBRGpCLEtBQUs7Z0JBT04saUJBQWlCO3NCQURoQixNQUFNO2dCQUtQLGlCQUFpQjtzQkFEaEIsTUFBTTtnQkFLUCxRQUFRO3NCQURQLFNBQVM7dUJBQUMsaUJBQWlCO2dCQUs1QixLQUFLO3NCQURKLFlBQVk7dUJBQUMscUJBQXFCO2dCQUtuQyxTQUFTO3NCQURSLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFrSTVDLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxPQUFPO2dCQU9yQixjQUFjO3NCQURiLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWlCbkMsa0JBQWtCO3NCQURqQixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPV05fQVJST1csIFNQQUNFLCBVUF9BUlJPVyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBidWZmZXIsIGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgS2V5VXRpbCwgcmVzaXplT2JzZXJ2YWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IENhcm91c2VsQ29uZmlnLCBDYXJvdXNlbERpcmVjdGl2ZSwgQ2Fyb3VzZWxJdGVtRGlyZWN0aXZlLCBQYW5FbmRPdXRwdXQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY2Fyb3VzZWwnO1xuXG5pbXBvcnQgeyBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9idXR0b24nO1xuaW1wb3J0IHsgRmRUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9pMThuJztcbmltcG9ydCB7IFNlbGVjdGFibGVWaWV3SXRlbSB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBUaW1lQ29sdW1uQ29uZmlnIH0gZnJvbSAnLi90aW1lLWNvbHVtbi1jb25maWcnO1xuXG5sZXQgdGltZUNvbHVtblVuaXF1ZUlkID0gMDtcblxuZXhwb3J0IGludGVyZmFjZSBUaW1lQ29sdW1uSXRlbU91dHB1dDxUPiB7XG4gICAgdmFsdWU6IFQ7XG4gICAgYWZ0ZXI/OiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLXRpbWUtY29sdW1uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGltZS1jb2x1bW4uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3RpbWUtY29sdW1uLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmQtdGltZV9fY29sJ1xuICAgIH0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgQnV0dG9uQ29tcG9uZW50LCBDYXJvdXNlbERpcmVjdGl2ZSwgTmdGb3IsIENhcm91c2VsSXRlbURpcmVjdGl2ZSwgRmRUcmFuc2xhdGVQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBUaW1lQ29sdW1uQ29tcG9uZW50PEssIFQgZXh0ZW5kcyBTZWxlY3RhYmxlVmlld0l0ZW08Sz4gPSBTZWxlY3RhYmxlVmlld0l0ZW08Sz4+XG4gICAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzXG57XG4gICAgLyoqIGl0ZW1zIGluIHJvdyAqL1xuICAgIEBJbnB1dCgpXG4gICAgcm93czogVFtdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBASW5wdXQgV2hlbiBzZXQgdG8gZmFsc2UsIGhpZGVzIHRoZSBidXR0b25zIHRoYXQgaW5jcmVtZW50XG4gICAgICogYW5kIGRlY3JlbWVudCB0aGUgY29ycmVzcG9uZGluZyBjb2x1bW5zLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3Bpbm5lcnMgPSB0cnVlO1xuXG4gICAgLyoqIEN1cnJlbnRseSBjaG9zZW4sIGNlbnRlcmVkIHRpbWUgY29sdW1uIGl0ZW0gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBhY3RpdmVWYWx1ZShhY3RpdmVJdGVtOiBOdWxsYWJsZTxUPikge1xuICAgICAgICBpZiAoIWFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgIC8vIG9taXR0aW5nIFwibnVsbFwiIGFuZCBcInVuZGVmaW5lZFwiXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX3ZpZXdJbml0JC52YWx1ZSAmJiB0aGlzLl9hY3RpdmVWYWx1ZSAhPT0gYWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgdGhpcy5fcGlja1RpbWUodGhpcy5fZ2V0SXRlbShhY3RpdmVJdGVtKSwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2FjdGl2ZVZhbHVlID0gYWN0aXZlSXRlbTtcbiAgICB9XG5cbiAgICBnZXQgYWN0aXZlVmFsdWUoKTogTnVsbGFibGU8VD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZlVmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIERlZmluZXMgaWYgY29sdW1uIGlzIGFjdGl2ZSwgaXQgaGFzIGltcGFjdCBvbiBiZWhhdmlvciBhbmQgdmlzdWFsICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGFjdGl2ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9hY3RpdmUgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHZhbHVlICYmIHRoaXMuX3ZpZXdJbml0JC52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIHRoaXMuX3BpY2tUaW1lKHRoaXMuX2dldEl0ZW0odGhpcy5hY3RpdmVWYWx1ZSksIGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzSW5kaWNhdG9yKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgYWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZlO1xuICAgIH1cblxuICAgIC8qKiBXaGV0aGVyIHRpbWUgY29sdW1uIGlzIG1lcmlkaWFuICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLXRpbWVfX2NvbC0tcGVyaW9kJylcbiAgICBtZXJpZGlhbiA9IGZhbHNlO1xuXG4gICAgLyoqIElkIG9mIGNvbHVtbiwgaW5pdGlhdGVkIHdpdGggc29tZSBkZWZhdWx0IHZhbHVlICovXG4gICAgQElucHV0KClcbiAgICBpZDogc3RyaW5nID0gJ2ZkLXRpbWUtY29sdW1uLScgKyB0aW1lQ29sdW1uVW5pcXVlSWQrKztcblxuICAgIC8qKiBJMThuIGFuZCBsYWJlbHMgKi9cbiAgICBASW5wdXQoKVxuICAgIHRpbWVDb25maWc6IE51bGxhYmxlPFRpbWVDb2x1bW5Db25maWc+O1xuXG4gICAgLyoqIEkxOG4gYW5kIGxhYmVscyAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29sdW1uVHJhbnNsYXRpb25zUHJlc2V0OiAnc2Vjb25kcycgfCAnbWludXRlcycgfCAnaG91cnMnIHwgJ3BlcmlvZCc7XG5cbiAgICAvKipcbiAgICAgKiBPZmZzZXQgZm9yIGNhcm91c2VsIGRpcmVjdGl2ZSwgYWN0aXZlIGl0ZW0gaXMgYWx3YXlzIHRoZSBmaXJzdCBvbmUuXG4gICAgICogSW4gY2FzZSBvZiBoYXZpbmcgbW9yZSBpdGVtcyBpbiBjYXJvdXNlbCB0aGFuIDEsIG1pZGRsZSBlbGVtZW50IHNob3VsZCBiZSBhY3RpdmVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBvZmZzZXQodmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9vZmZzZXQkLm5leHQodmFsdWUpO1xuICAgIH1cbiAgICBnZXQgb2Zmc2V0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vZmZzZXQkLnZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFF1YW50aXR5IG9mIHRoZSBlbGVtZW50cyB0byBiZSBzaG93biBhdCB0aGUgc2FtZSB0aW1lIGluIGNvbHVtblxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGVsZW1lbnRzQXRPbmNlKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fZWxlbWVudHNBdE9uY2UkLm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBFdmVudCBlbWl0dGVkLCB3aGVuIGFjdGl2ZSBpdGVtIGlzIGNoYW5nZWQsIGJ5IGNhcm91c2VsICovXG4gICAgQE91dHB1dCgpXG4gICAgYWN0aXZlVmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxUaW1lQ29sdW1uSXRlbU91dHB1dDxUPj4gPSBuZXcgRXZlbnRFbWl0dGVyPFRpbWVDb2x1bW5JdGVtT3V0cHV0PFQ+PigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQsIHdoZW4gY2VydGFpbiBjb2x1bW4gaXMgYWN0aXZhdGVkICovXG4gICAgQE91dHB1dCgpXG4gICAgYWN0aXZlU3RhdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChDYXJvdXNlbERpcmVjdGl2ZSlcbiAgICBjYXJvdXNlbDogQ2Fyb3VzZWxEaXJlY3RpdmU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oQ2Fyb3VzZWxJdGVtRGlyZWN0aXZlKVxuICAgIGl0ZW1zOiBRdWVyeUxpc3Q8Q2Fyb3VzZWxJdGVtRGlyZWN0aXZlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnaW5kaWNhdG9yJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgaW5kaWNhdG9yOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB3cmFwcGVySGVpZ2h0OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBUaW1lIHRvIHdhaXQgaW4gbWlsbGlzZWNvbmRzIGFmdGVyIHRoZSBsYXN0IGtleWRvd24gYmVmb3JlXG4gICAgICogZm9jdXNpbmcgb3Igc2VsZWN0aW5nIG9wdGlvbiBiYXNlZCBvbiBudW1lcmljL2FscGhhIGtleXMuXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHR5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWwgPSA3NTA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbmZpZzogQ2Fyb3VzZWxDb25maWc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGludGVybmFsVHJhbnNsYXRpb25Db25maWc6IFRpbWVDb2x1bW5Db25maWcgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGN1cnJlbnRJbmRpY2F0b3JJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pZCArICctY3VycmVudC1pbmRpY2F0b3InO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGN1cnJlbnRJbmRpY2F0b3JWYWx1ZUlkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRJbmRpY2F0b3JJZCArICctdmFsdWUnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZWxlbWVudHNBdE9uY2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdCg3KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfb2Zmc2V0JCA9IG5ldyBCZWhhdmlvclN1YmplY3QoMyk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FjdGl2ZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9xdWVyeUtleURvd25FdmVudDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hY3RpdmVWYWx1ZTogTnVsbGFibGU8VD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FjdGl2ZUNhcm91c2VsSXRlbTogQ2Fyb3VzZWxJdGVtRGlyZWN0aXZlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc0RyYWdnaW5nID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ZpZXdJbml0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZXNpemUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogbG9ncyBudW1lcmljIGtleSBpbnB1dHMgdG8gc2V0IHRpbWUgdXNpbmcga2V5Ym9hcmQgaW5wdXQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfa2V5TG9nOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBUaW1lb3V0IHZhcmlhYmxlIHVzZWQgdG8gc2V0IHRpbWVvdXQgZm9yIHN1YnNlcXVlbnQgbnVtZXJpYyBrZXkgaW5wdXQgdG8gc2V0IHRpbWUuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfbnVtZXJpY0lucHV0VGltZW91dDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NoYW5nZURldFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgX2VsbVJlZjogRWxlbWVudFJlZikge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX3ZpZXdJbml0JCwgdGhpcy5fZWxlbWVudHNBdE9uY2UkLCB0aGlzLl9vZmZzZXQkLCB0aGlzLl9yZXNpemUkXSlcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyKChbdmlld0luaXRdKSA9PiB2aWV3SW5pdCksXG4gICAgICAgICAgICAgICAgICAgIHRhcCgoWywgZWxlbWVudHNBdE9uY2UsIG9mZnNldF0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF2ZXJhZ2VIZWlnaHQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMudG9BcnJheSgpLnJlZHVjZSgoYWNjLCBuZXh0KSA9PiBhY2MgKyBuZXh0LmdldEhlaWdodCgpLCAwKSAvIHRoaXMuaXRlbXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53cmFwcGVySGVpZ2h0ID0gYXZlcmFnZUhlaWdodCAqIGVsZW1lbnRzQXRPbmNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmlzaWJsZUJ1dE5vdFNlbGVjdGVkRWxlbWVudHMgPSBNYXRoLmZsb29yKGVsZW1lbnRzQXRPbmNlIC8gMik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtcy5maXJzdC5lbGVtZW50LnN0eWxlLm1hcmdpblRvcCA9IGAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlQnV0Tm90U2VsZWN0ZWRFbGVtZW50cyAqIGF2ZXJhZ2VIZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9cHhgO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMubGFzdC5lbGVtZW50LnN0eWxlLm1hcmdpbkJvdHRvbSA9IGAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlQnV0Tm90U2VsZWN0ZWRFbGVtZW50cyAqIGF2ZXJhZ2VIZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9cHhgO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5hY3RpdmVWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3BpY2tUaW1lKHRoaXMuX2dldEl0ZW0odGhpcy5hY3RpdmVWYWx1ZSksIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5fZWxlbWVudHNBdE9uY2UkLnBpcGUodGFwKCgpID0+IHRoaXMuX3NldFVwQ2Fyb3VzZWxDb25maWd1cmF0aW9uKCkpKS5zdWJzY3JpYmUoKSk7XG4gICAgICAgIHRoaXMuX3NldFVwUXVlcnlTdWJzY3JpcHRpb24oKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICByZXNpemVPYnNlcnZhYmxlKHRoaXMuX2VsbVJlZi5uYXRpdmVFbGVtZW50KS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3Jlc2l6ZSQubmV4dCh0cnVlKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX3ZpZXdJbml0JC5uZXh0KHRydWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGUgKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLmNvbHVtblRyYW5zbGF0aW9uc1ByZXNldCkge1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlSW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICAgIG9uSXRlbUNsaWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFjdGl2ZVN0YXRlQ2hhbmdlLmVtaXQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIGtleURvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRE9XTl9BUlJPVykpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsRG93bigpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgVVBfQVJST1cpKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbFVwKCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlUeXBlKGV2ZW50LCAnbnVtZXJpYycpKSB7XG4gICAgICAgICAgICB0aGlzLl9udW1lcmljS2V5SW5wdXRIYW5kbGVyKGV2ZW50KTtcbiAgICAgICAgfSBlbHNlIGlmIChLZXlVdGlsLmlzS2V5VHlwZShldmVudCwgJ2FscGhhYmV0aWNhbCcpKSB7XG4gICAgICAgICAgICB0aGlzLl9hbHBoYUtleUlucHV0SGFuZGxlcihldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ3doZWVsJywgWyckZXZlbnQnXSlcbiAgICBtb3VzZVNjcm9sbEhhbmRsZXIoZXZlbnQ6IFdoZWVsRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKHRoaXMuX2FjdGl2ZSkge1xuICAgICAgICAgICAgZXZlbnQuZGVsdGFZID4gMCA/IHRoaXMuc2Nyb2xsRG93bigpIDogdGhpcy5zY3JvbGxVcCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzcGlubmVyQnV0dG9uS2V5dXBIYW5kbGUoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHVwQnV0dG9uPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFNQQUNFKSkge1xuICAgICAgICAgICAgaWYgKHVwQnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxVcCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbERvd24oKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZXRWYWx1ZU9mQWN0aXZlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fYWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRVcEluaXRpYWxWYWx1ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEl0IHByZXZlbnRzIGZyb20gYWNjaWRlbnRhbGx5IGNoYW5nZSB0aGUgaXRlbSBieSBjbGljayBldmVudCAqL1xuICAgIGhhbmRsZURyYWcoaXNEcmFnZ2luZzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9pc0RyYWdnaW5nID0gaXNEcmFnZ2luZztcbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIHRoYXQgaGFuZGxlcyBhY3RpdmUgaXRlbSBjaGFuZ2UgKi9cbiAgICBhY3RpdmVDaGFuZ2VkSGFuZGxlKG91dHB1dDogUGFuRW5kT3V0cHV0KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFycmF5ID0gdGhpcy5pdGVtcy50b0FycmF5KCk7XG4gICAgICAgIGxldCBpbmRleDogbnVtYmVyID0gYXJyYXkuZmluZEluZGV4KChfX2l0ZW0pID0+IF9faXRlbSA9PT0gb3V0cHV0Lml0ZW0pICsgdGhpcy5vZmZzZXQ7XG5cbiAgICAgICAgaWYgKGluZGV4ID49IGFycmF5Lmxlbmd0aCkge1xuICAgICAgICAgICAgaW5kZXggPSBpbmRleCAtIGFycmF5Lmxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IF9pdGVtID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgICAgIHRoaXMuX2FjdGl2ZVZhbHVlID0gX2l0ZW0udmFsdWU7XG5cbiAgICAgICAgdGhpcy5hY3RpdmVWYWx1ZUNoYW5nZS5lbWl0KHtcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLl9hY3RpdmVWYWx1ZSEsXG4gICAgICAgICAgICBhZnRlcjogb3V0cHV0LmFmdGVyXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2FjdGl2ZUNhcm91c2VsSXRlbSA9IF9pdGVtO1xuICAgIH1cblxuICAgIC8qKiBNZXRob2QgdGhhdCBjaGFuZ2VzIGFjdGl2ZSBpdGVtIGFuZCB0cmlnZ2VycyBjYXJvdXNlbCBzY3JvbGwgKi9cbiAgICBwaWNrKGl0ZW06IENhcm91c2VsSXRlbURpcmVjdGl2ZSwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50SW5kZXg6IG51bWJlciA9IHRoaXMuaXRlbXMudG9BcnJheSgpLmZpbmRJbmRleCgoX2l0ZW0pID0+IF9pdGVtID09PSB0aGlzLl9hY3RpdmVDYXJvdXNlbEl0ZW0pO1xuICAgICAgICAvKiogVG8gcHJldmVudCBmcm9tIHN3aXRjaGluZyB0aW1lLCB3aGVuIGl0J3MgYmVpbmcgZHJhZ2dlZCAqL1xuICAgICAgICBpZiAoIXRoaXMuX2lzRHJhZ2dpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuX3BpY2tUaW1lKGl0ZW0sIHRydWUsIHRydWUsIGN1cnJlbnRJbmRleCA8IGluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBNZXRob2QgdHJpZ2dlcmVkIGJ5IGtleWJvYXJkLCBvciBpbmNyZW1lbnQgYnV0dG9uICovXG4gICAgc2Nyb2xsVXAoZXZlbnQ/OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIC8qKiBLZXlib2FyZCBldmVudHMgaW4gcmVhY3RpdmUgZm9ybXMsIHNob3VsZG4ndCB0cmlnZ2VyIHRoaXMgbWV0aG9kICovXG4gICAgICAgIGlmIChldmVudCAmJiAhZXZlbnQuY2xpZW50WCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBpbmRleDogbnVtYmVyID0gdGhpcy5pdGVtcy50b0FycmF5KCkuZmluZEluZGV4KChfaXRlbSkgPT4gX2l0ZW0gPT09IHRoaXMuX2FjdGl2ZUNhcm91c2VsSXRlbSk7XG4gICAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgICAgIGluZGV4LS07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbmRleCA9IHRoaXMucm93cy5sZW5ndGggLSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcGlja1RpbWUodGhpcy5pdGVtcy50b0FycmF5KClbaW5kZXhdLCB0cnVlLCB0cnVlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCB0cmlnZ2VyZWQgYnkga2V5Ym9hcmQsIG9yIGRlY3JlbWVudCBidXR0b24gKi9cbiAgICBzY3JvbGxEb3duKCk6IHZvaWQge1xuICAgICAgICBsZXQgaW5kZXg6IG51bWJlciA9IHRoaXMuaXRlbXMudG9BcnJheSgpLmZpbmRJbmRleCgoX2l0ZW0pID0+IF9pdGVtID09PSB0aGlzLl9hY3RpdmVDYXJvdXNlbEl0ZW0pO1xuICAgICAgICBpZiAoaW5kZXggPCB0aGlzLnJvd3MubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGluZGV4ID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3BpY2tUaW1lKHRoaXMuaXRlbXMudG9BcnJheSgpW2luZGV4XSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEZvY3VzIG9uIGNvbHVtbiAqL1xuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmluZGljYXRvcj8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBpZCBmb3IgY29sdW1uIGl0ZW1cbiAgICAgKiBAcGFyYW0gaW5kZXggY29sdW1uIGl0ZW0gaW5kZXhcbiAgICAgKiBAcmV0dXJucyBjb2x1bW4gaXRlbSBpZFxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBfY3JlYXRlQ29sdW1uSXRlbUlkQnlJbmRleChpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWQgKyBpbmRleDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPbiBmb2N1cyBjYWxsYmFja1xuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBfb25Gb2N1c0luZGljYXRvcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmVTdGF0ZUNoYW5nZS5lbWl0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBoYW5kbGVzIGFscGhhYmV0aWNhbCBrZXkgaW5wdXRzIHRvIHNldCBwZXJpb2QuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfYWxwaGFLZXlJbnB1dEhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpID09PSAnYScpIHtcbiAgICAgICAgICAgIHRoaXMuX3BpY2tUaW1lT25WYWx1ZSgnQU0nKTtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ3AnKSB7XG4gICAgICAgICAgICB0aGlzLl9waWNrVGltZU9uVmFsdWUoJ1BNJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIGhhbmRsZXMgbnVtZXJpYyBrZXkgaW5wdXRzIHRvIHNldCB0aW1lLlxuICAgICAqL1xuICAgIHByaXZhdGUgX251bWVyaWNLZXlJbnB1dEhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbGFzdEl0ZW1WYWx1ZSA9IHRoaXMuaXRlbXMubGFzdC52YWx1ZS52YWx1ZTsgLy8gdmFsdWUgb2YgbGFzdCBpdGVtIGluIGNvbHVtblxuXG4gICAgICAgIHRoaXMuX251bWVyaWNJbnB1dFRpbWVvdXQgJiYgY2xlYXJUaW1lb3V0KHRoaXMuX251bWVyaWNJbnB1dFRpbWVvdXQpO1xuICAgICAgICB0aGlzLl9rZXlMb2cucHVzaChldmVudC5rZXkpO1xuICAgICAgICBjb25zdCBpbnB1dFZhbHVlID0gcGFyc2VJbnQodGhpcy5fa2V5TG9nLmpvaW4oJycpLCAxMCk7IC8vIGNvbnZlcnRzIGtleUxvZyBlbGVtZW50cyB0byBhIG51bWJlclxuXG4gICAgICAgIGlmIChpbnB1dFZhbHVlICogMTAgPiBsYXN0SXRlbVZhbHVlIHx8IHRoaXMuX2tleUxvZy5sZW5ndGggPT09IGxhc3RJdGVtVmFsdWUudG9TdHJpbmcoKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX3BpY2tUaW1lT25WYWx1ZShpbnB1dFZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX251bWVyaWNJbnB1dFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9waWNrVGltZU9uVmFsdWUoaW5wdXRWYWx1ZSk7XG4gICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBzZXQgdGhlIHRpbWUgZm9yIGdpdmVuIGl0ZW0gdmFsdWUuIHVzZWQgYnkgX251bWVyaWNLZXlJbnB1dEhhbmRsZXIuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfcGlja1RpbWVPblZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcGlja1RpbWUoXG4gICAgICAgICAgICB0aGlzLml0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0udmFsdWUudmFsdWUgPT09IHZhbHVlKSxcbiAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX2tleUxvZyA9IFtdOyAvLyBjbGVhciBrZXkgbG9nXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHRyaWdnZXJlZCBieSBrZXlib2FyZCwgb3IgZGVjcmVtZW50IGJ1dHRvblxuICAgICAqIEFyZ3M6XG4gICAgICogaXRlbSA9PiBwaWNrZWQgY2Fyb3VzZWwgaXRlbSwgdGhhdCBzaG91bGQgYmUgY2VudGVyZWRcbiAgICAgKiBzbW9vdGggPT4gZGVmaW5lcyBpZiB0cmFuc2l0aW9uIHRpbWUgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRyYW5zZm9ybVxuICAgICAqIGVtaXRFdmVudCA9PiBkZWZpbmVzIGlmIEV2ZW50RW1pdHRlciBzaG91bGQgYmUgdHJpZ2dlcmVkIGJ5IHRoaXMgY2hhbmdlLCBzZXQgdG8gZmFsc2UsIHdoZW4gY2hhbmdlZCBmcm9tIG91dHNpZGVcbiAgICAgKiBhZnRlciA9PiBEZWZpbmVzIGlmIHZhbHVlIHdhcyBpbmNyZW1lbnRlZC9kZWNyZW1lbnRlZCwgbmVlZGVkIGZvciBob3VycyB0byB0cmlnZ2VyIEFNL1BNIGNoYW5nZVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9waWNrVGltZShpdGVtPzogQ2Fyb3VzZWxJdGVtRGlyZWN0aXZlLCBzbW9vdGg/OiBib29sZWFuLCBlbWl0RXZlbnQ/OiBib29sZWFuLCBhZnRlcj86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpdGVtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuX3RyaWdnZXJDYXJvdXNlbChpdGVtLCBzbW9vdGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fYWN0aXZlQ2Fyb3VzZWxJdGVtID0gaXRlbTtcbiAgICAgICAgdGhpcy5fYWN0aXZlVmFsdWUgPSBpdGVtLnZhbHVlO1xuXG4gICAgICAgIGlmIChlbWl0RXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlVmFsdWVDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICAgICAgdmFsdWU6IGl0ZW0udmFsdWUsXG4gICAgICAgICAgICAgICAgYWZ0ZXJcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBpdGVtIHdpdGggcGFzc2VkIHZhbHVlXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldEl0ZW0oX2l0ZW06IE51bGxhYmxlPFQ+KTogQ2Fyb3VzZWxJdGVtRGlyZWN0aXZlIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS52YWx1ZSA9PT0gX2l0ZW0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdHJpZ2dlckNhcm91c2VsKGl0ZW06IENhcm91c2VsSXRlbURpcmVjdGl2ZSwgc21vb3RoPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBjb25zdCBhcnJheSA9IHRoaXMuaXRlbXMudG9BcnJheSgpO1xuICAgICAgICBsZXQgaW5kZXg6IG51bWJlciA9IGFycmF5LmZpbmRJbmRleCgoX2l0ZW0pID0+IF9pdGVtID09PSBpdGVtKSAtIHRoaXMub2Zmc2V0O1xuXG4gICAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgICAgIGluZGV4ID0gYXJyYXkubGVuZ3RoICsgaW5kZXg7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNhcm91c2VsLmdvVG9JdGVtKGFycmF5W2luZGV4XSwgc21vb3RoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGb2N1cyBjdXJyZW50IGluZGljYXRvciwgd2hpY2ggYWxsb3dzIHRvIGhhbmRsZSBrZXlkb3duIGV2ZW50cyBpbnNpZGUgY29sdW1uXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2ZvY3VzSW5kaWNhdG9yKCk6IHZvaWQge1xuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmN1cnJlbnRJbmRpY2F0b3JJZCk/LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogYW55IHtcbiAgICAgICAgaWYgKCFpc05hTihOdW1iZXIodmFsdWUpKSkge1xuICAgICAgICAgICAgcmV0dXJuIE51bWJlcih2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldFVwUXVlcnlTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRyaWdnZXIgPSB0aGlzLl9xdWVyeUtleURvd25FdmVudC5waXBlKGRlYm91bmNlVGltZSh0aGlzLnR5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWwpKTtcblxuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgIHRoaXMuX3F1ZXJ5S2V5RG93bkV2ZW50XG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZlcih0cmlnZ2VyKSxcbiAgICAgICAgICAgICAgICAgICAgbWFwKChrZXlzKSA9PiBrZXlzLmpvaW4oJycpKSxcbiAgICAgICAgICAgICAgICAgICAgbWFwKCh2YWx1ZSkgPT4gdGhpcy5fZ2V0VmFsdWUodmFsdWUpKSxcbiAgICAgICAgICAgICAgICAgICAgbWFwKCh2YWx1ZSkgPT4gdGhpcy5fZ2V0SXRlbSh2YWx1ZSkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGl0ZW0pID0+IHRoaXMuX3BpY2tUaW1lKGl0ZW0sIGZhbHNlLCB0cnVlKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldFVwQ2Fyb3VzZWxDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb25maWc6IENhcm91c2VsQ29uZmlnID0ge1xuICAgICAgICAgICAgZ2VzdHVyZVN1cHBvcnQ6IHRydWUsXG4gICAgICAgICAgICB2ZXJ0aWNhbDogdHJ1ZSxcbiAgICAgICAgICAgIGVsZW1lbnRzQXRPbmNlOiB0aGlzLl9lbGVtZW50c0F0T25jZSQudmFsdWUsXG4gICAgICAgICAgICB0cmFuc2l0aW9uOiAnMTUwbXMnXG4gICAgICAgIH07XG4gICAgICAgIGlmICghdGhpcy5tZXJpZGlhbikge1xuICAgICAgICAgICAgY29uZmlnLmluZmluaXRlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldFVwSW5pdGlhbFZhbHVlKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2FjdGl2ZVZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmVWYWx1ZSA9IHRoaXMuaXRlbXMuZmlyc3QudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcGlja1RpbWUodGhpcy5fZ2V0SXRlbSh0aGlzLl9hY3RpdmVWYWx1ZSksIGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZUludGVybmFsVHJhbnNsYXRpb25Db25maWcoKTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5jb2x1bW5UcmFuc2xhdGlvbnNQcmVzZXQpIHtcbiAgICAgICAgICAgIGNhc2UgJ2hvdXJzJzpcbiAgICAgICAgICAgICAgICB0aGlzLmludGVybmFsVHJhbnNsYXRpb25Db25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAgIGluY3JlYXNlTGFiZWw6ICdjb3JlVGltZS5pbmNyZWFzZUhvdXJzTGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2NvcmVUaW1lLmhyc0xhYmVsJyxcbiAgICAgICAgICAgICAgICAgICAgZnVsbExhYmVsOiAnY29yZVRpbWUuaG91cnNMYWJlbCcsXG4gICAgICAgICAgICAgICAgICAgIGRlY3JlYXNlTGFiZWw6ICdjb3JlVGltZS5kZWNyZWFzZUhvdXJzTGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uSW5zdHJ1Y3Rpb246ICdjb3JlVGltZS5uYXZpZ2F0aW9uSW5zdHJ1Y3Rpb24nXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21pbnV0ZXMnOlxuICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgaW5jcmVhc2VMYWJlbDogJ2NvcmVUaW1lLmluY3JlYXNlTWludXRlc0xhYmVsJyxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdjb3JlVGltZS5taW5MYWJlbCcsXG4gICAgICAgICAgICAgICAgICAgIGZ1bGxMYWJlbDogJ2NvcmVUaW1lLm1pbnV0ZXNMYWJlbCcsXG4gICAgICAgICAgICAgICAgICAgIGRlY3JlYXNlTGFiZWw6ICdjb3JlVGltZS5kZWNyZWFzZU1pbnV0ZXNMYWJlbCcsXG4gICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25JbnN0cnVjdGlvbjogJ2NvcmVUaW1lLm5hdmlnYXRpb25JbnN0cnVjdGlvbidcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2Vjb25kcyc6XG4gICAgICAgICAgICAgICAgdGhpcy5pbnRlcm5hbFRyYW5zbGF0aW9uQ29uZmlnID0ge1xuICAgICAgICAgICAgICAgICAgICBpbmNyZWFzZUxhYmVsOiAnY29yZVRpbWUuaW5jcmVhc2VTZWNvbmRzTGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2NvcmVUaW1lLnNlY0xhYmVsJyxcbiAgICAgICAgICAgICAgICAgICAgZnVsbExhYmVsOiAnY29yZVRpbWUuc2Vjb25kc0xhYmVsJyxcbiAgICAgICAgICAgICAgICAgICAgZGVjcmVhc2VMYWJlbDogJ2NvcmVUaW1lLmRlY3JlYXNlU2Vjb25kc0xhYmVsJyxcbiAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGlvbkluc3RydWN0aW9uOiAnY29yZVRpbWUubmF2aWdhdGlvbkluc3RydWN0aW9uJ1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdwZXJpb2QnOlxuICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgaW5jcmVhc2VMYWJlbDogJ2NvcmVUaW1lLmluY3JlYXNlUGVyaW9kTGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2NvcmVUaW1lLnBlcmlvZExhYmVsJyxcbiAgICAgICAgICAgICAgICAgICAgZnVsbExhYmVsOiAnY29yZVRpbWUucGVyaW9kTGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICBkZWNyZWFzZUxhYmVsOiAnY29yZVRpbWUuZGVjcmVhc2VQZXJpb2RMYWJlbCcsXG4gICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25JbnN0cnVjdGlvbjogJ2NvcmVUaW1lLm5hdmlnYXRpb25JbnN0cnVjdGlvbidcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyA9IG51bGw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbn1cbiIsIjxsYWJlbCBjbGFzcz1cImZkLXRpbWVfX3NsaWRlci1sYWJlbFwiPnt7XG4gICAgdGltZUNvbmZpZz8ubGFiZWwgfHwgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcgJiYgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcubGFiZWwgfCBmZFRyYW5zbGF0ZSkpXG59fTwvbGFiZWw+XG48YnV0dG9uXG4gICAgKm5nSWY9XCJhY3RpdmUgJiYgc3Bpbm5lcnNcIlxuICAgIGZkLWJ1dHRvblxuICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICBnbHlwaD1cIm5hdmlnYXRpb24tdXAtYXJyb3dcIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuICAgIFt0aXRsZV09XCJcbiAgICAgICAgdGltZUNvbmZpZz8uZGVjcmVhc2VMYWJlbCB8fFxuICAgICAgICAoaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyAmJiAoaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZy5kZWNyZWFzZUxhYmVsIHwgZmRUcmFuc2xhdGUpKVxuICAgIFwiXG4gICAgW2FyaWFMYWJlbF09XCJcbiAgICAgICAgdGltZUNvbmZpZz8uZGVjcmVhc2VMYWJlbCB8fFxuICAgICAgICAoaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyAmJiAoaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZy5kZWNyZWFzZUxhYmVsIHwgZmRUcmFuc2xhdGUpKVxuICAgIFwiXG4gICAgKGtleXVwKT1cInNwaW5uZXJCdXR0b25LZXl1cEhhbmRsZSgkZXZlbnQsIHRydWUpXCJcbiAgICAoY2xpY2spPVwic2Nyb2xsVXAoJGV2ZW50KVwiXG4+PC9idXR0b24+XG48ZGl2XG4gICAgY2xhc3M9XCJmZC10aW1lX193cmFwcGVyXCJcbiAgICBbY2xhc3MuZmQtdGltZV9fd3JhcHBlci0tYWN0aXZlXT1cImFjdGl2ZVwiXG4gICAgW2NsYXNzLmZkLXRpbWVfX3dyYXBwZXItLW1lcmlkaWFuXT1cIm1lcmlkaWFuXCJcbiAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImFjdGl2ZSA/IHdyYXBwZXJIZWlnaHQgOiAnJ1wiXG4+XG4gICAgPHVsXG4gICAgICAgIGNsYXNzPVwiZmQtdGltZV9fbGlzdFwiXG4gICAgICAgIFtjbGFzcy5mZC10aW1lLWNvbHVtbi1jdXN0b20taGlkZGVuXT1cIiFhY3RpdmVcIlxuICAgICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgICAgIChjbGljayk9XCJpbmRpY2F0b3IuZm9jdXMoKVwiXG4gICAgICAgIChhY3RpdmVDaGFuZ2UpPVwiYWN0aXZlQ2hhbmdlZEhhbmRsZSgkZXZlbnQpXCJcbiAgICAgICAgKGRyYWdTdGF0ZUNoYW5nZSk9XCJoYW5kbGVEcmFnKCRldmVudClcIlxuICAgICAgICBmZENhcm91c2VsXG4gICAgPlxuICAgICAgICA8bGlcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtdGltZV9faXRlbVwiXG4gICAgICAgICAgICBmZENhcm91c2VsSXRlbVxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHJvdyBvZiByb3dzOyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgICAgICAgICAjaXRlbT1cImZkQ2Fyb3VzZWxJdGVtXCJcbiAgICAgICAgICAgIFtpZF09XCJfY3JlYXRlQ29sdW1uSXRlbUlkQnlJbmRleChpbmRleClcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1kaXNwbGF5ZWQtdmFsdWVdPVwicm93LnZhbHVlXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJyb3dcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLXRpbWVfX3VuaXRcIiByb2xlPVwiYnV0dG9uXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJyb3cubGFiZWxcIiAoY2xpY2spPVwicGljayhpdGVtLCBpbmRleClcIj5cbiAgICAgICAgICAgICAgICB7eyByb3cubGFiZWwgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmZC10aW1lX19jdXJyZW50LWluZGljYXRvclwiXG4gICAgICAgICNpbmRpY2F0b3JcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgICBbYXR0ci5pZF09XCJjdXJyZW50SW5kaWNhdG9ySWRcIlxuICAgICAgICBbY2xhc3MuZmQtdGltZS1jb2x1bW4tY3VzdG9tLWhpZGRlbl09XCIhYWN0aXZlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImN1cnJlbnRJbmRpY2F0b3JWYWx1ZUlkXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmlwdGlvbl09XCJcbiAgICAgICAgICAgIHRpbWVDb25maWc/Lm5hdmlnYXRpb25JbnN0cnVjdGlvbiB8fFxuICAgICAgICAgICAgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcgJiYgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcubmF2aWdhdGlvbkluc3RydWN0aW9uIHwgZmRUcmFuc2xhdGUpKVxuICAgICAgICBcIlxuICAgICAgICAoZm9jdXMpPVwiX29uRm9jdXNJbmRpY2F0b3IoKVwiXG4gICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJmZC10aW1lLWNvbHVtbi1jdXN0b20taGlkZGVuXCJcbiAgICAgICAgICAgIGFyaWEtYXRvbWljPVwidHJ1ZVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCIhYWN0aXZlXCJcbiAgICAgICAgICAgIFthdHRyLmlkXT1cImN1cnJlbnRJbmRpY2F0b3JWYWx1ZUlkXCJcbiAgICAgICAgICAgIFtjbGFzcy5mZC10aW1lLWNvbHVtbi1jdXN0b20taGlkZGVuXT1cImFjdGl2ZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7IGFjdGl2ZVZhbHVlPy5sYWJlbCB9fVxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICB0aW1lQ29uZmlnPy5sYWJlbCB8fCAoaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyAmJiAoaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZy5mdWxsTGFiZWwgfCBmZFRyYW5zbGF0ZSkpXG4gICAgICAgICAgICB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPHNwYW4gKm5nSWY9XCIhYWN0aXZlXCIgY2xhc3M9XCJmZC10aW1lX19pdGVtIGZkLXRpbWVfX2l0ZW0tLWNvbGxhcHNlZFwiPlxuICAgICAgICB7eyBhY3RpdmVWYWx1ZT8ubGFiZWwgfX1cbiAgICA8L3NwYW4+XG48L2Rpdj5cbjxidXR0b25cbiAgICAqbmdJZj1cImFjdGl2ZSAmJiBzcGlubmVyc1wiXG4gICAgZmQtYnV0dG9uXG4gICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgIGdseXBoPVwibmF2aWdhdGlvbi1kb3duLWFycm93XCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgICBbdGl0bGVdPVwiXG4gICAgICAgIHRpbWVDb25maWc/LmluY3JlYXNlTGFiZWwgfHxcbiAgICAgICAgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcgJiYgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcuaW5jcmVhc2VMYWJlbCB8IGZkVHJhbnNsYXRlKSlcbiAgICBcIlxuICAgIFthcmlhTGFiZWxdPVwiXG4gICAgICAgIHRpbWVDb25maWc/LmluY3JlYXNlTGFiZWwgfHxcbiAgICAgICAgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcgJiYgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcuaW5jcmVhc2VMYWJlbCB8IGZkVHJhbnNsYXRlKSlcbiAgICBcIlxuICAgIChrZXl1cCk9XCJzcGlubmVyQnV0dG9uS2V5dXBIYW5kbGUoJGV2ZW50KVwiXG4gICAgKGNsaWNrKT1cInNjcm9sbERvd24oKVwiXG4+PC9idXR0b24+XG4iXX0=
486
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1jb2x1bW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdGltZS90aW1lLWNvbHVtbi90aW1lLWNvbHVtbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90aW1lL3RpbWUtY29sdW1uL3RpbWUtY29sdW1uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BFLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFDTixTQUFTLEVBRVQsU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RSxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhFLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RSxPQUFPLEVBQWtCLGlCQUFpQixFQUFFLHFCQUFxQixFQUFnQixNQUFNLGdDQUFnQyxDQUFDO0FBRXhILE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7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Q0FBQztpSUFPbEcsSUFBSTtzQkFESCxLQUFLO2dCQVFOLFFBQVE7c0JBRFAsS0FBSztnQkFLRixXQUFXO3NCQURkLEtBQUs7Z0JBa0JGLE1BQU07c0JBRFQsS0FBSztnQkFpQk4sUUFBUTtzQkFGUCxLQUFLOztzQkFDTCxXQUFXO3VCQUFDLDRCQUE0QjtnQkFLekMsRUFBRTtzQkFERCxLQUFLO2dCQUtOLFVBQVU7c0JBRFQsS0FBSztnQkFLTix3QkFBd0I7c0JBRHZCLEtBQUs7Z0JBUUYsTUFBTTtzQkFEVCxLQUFLO2dCQVlGLGNBQWM7c0JBRGpCLEtBQUs7Z0JBT04saUJBQWlCO3NCQURoQixNQUFNO2dCQUtQLGlCQUFpQjtzQkFEaEIsTUFBTTtnQkFLUCxRQUFRO3NCQURQLFNBQVM7dUJBQUMsaUJBQWlCO2dCQUs1QixLQUFLO3NCQURKLFlBQVk7dUJBQUMscUJBQXFCO2dCQUtuQyxTQUFTO3NCQURSLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFrSTVDLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxPQUFPO2dCQU9yQixjQUFjO3NCQURiLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWlCbkMsa0JBQWtCO3NCQURqQixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPV05fQVJST1csIFNQQUNFLCBVUF9BUlJPVyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBidWZmZXIsIGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgS2V5VXRpbCwgcmVzaXplT2JzZXJ2YWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IENhcm91c2VsQ29uZmlnLCBDYXJvdXNlbERpcmVjdGl2ZSwgQ2Fyb3VzZWxJdGVtRGlyZWN0aXZlLCBQYW5FbmRPdXRwdXQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY2Fyb3VzZWwnO1xuXG5pbXBvcnQgeyBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9idXR0b24nO1xuaW1wb3J0IHsgRmRUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9pMThuJztcbmltcG9ydCB7IFNlbGVjdGFibGVWaWV3SXRlbSB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBUaW1lQ29sdW1uQ29uZmlnIH0gZnJvbSAnLi90aW1lLWNvbHVtbi1jb25maWcnO1xuXG5sZXQgdGltZUNvbHVtblVuaXF1ZUlkID0gMDtcblxuZXhwb3J0IGludGVyZmFjZSBUaW1lQ29sdW1uSXRlbU91dHB1dDxUPiB7XG4gICAgdmFsdWU6IFQ7XG4gICAgYWZ0ZXI/OiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLXRpbWUtY29sdW1uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGltZS1jb2x1bW4uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3RpbWUtY29sdW1uLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmQtdGltZV9fY29sJ1xuICAgIH0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgQnV0dG9uQ29tcG9uZW50LCBDYXJvdXNlbERpcmVjdGl2ZSwgTmdGb3IsIENhcm91c2VsSXRlbURpcmVjdGl2ZSwgRmRUcmFuc2xhdGVQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBUaW1lQ29sdW1uQ29tcG9uZW50PEsgZXh0ZW5kcyBudW1iZXIsIFQgZXh0ZW5kcyBTZWxlY3RhYmxlVmlld0l0ZW08Sz4gPSBTZWxlY3RhYmxlVmlld0l0ZW08Sz4+XG4gICAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzXG57XG4gICAgLyoqIGl0ZW1zIGluIHJvdyAqL1xuICAgIEBJbnB1dCgpXG4gICAgcm93czogVFtdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBASW5wdXQgV2hlbiBzZXQgdG8gZmFsc2UsIGhpZGVzIHRoZSBidXR0b25zIHRoYXQgaW5jcmVtZW50XG4gICAgICogYW5kIGRlY3JlbWVudCB0aGUgY29ycmVzcG9uZGluZyBjb2x1bW5zLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3Bpbm5lcnMgPSB0cnVlO1xuXG4gICAgLyoqIEN1cnJlbnRseSBjaG9zZW4sIGNlbnRlcmVkIHRpbWUgY29sdW1uIGl0ZW0gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBhY3RpdmVWYWx1ZShhY3RpdmVJdGVtOiBOdWxsYWJsZTxUPikge1xuICAgICAgICBpZiAoIWFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgIC8vIG9taXR0aW5nIFwibnVsbFwiIGFuZCBcInVuZGVmaW5lZFwiXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX3ZpZXdJbml0JC52YWx1ZSAmJiB0aGlzLl9hY3RpdmVWYWx1ZSAhPT0gYWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgdGhpcy5fcGlja1RpbWUodGhpcy5fZ2V0SXRlbShhY3RpdmVJdGVtKSwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2FjdGl2ZVZhbHVlID0gYWN0aXZlSXRlbTtcbiAgICB9XG5cbiAgICBnZXQgYWN0aXZlVmFsdWUoKTogTnVsbGFibGU8VD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZlVmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIERlZmluZXMgaWYgY29sdW1uIGlzIGFjdGl2ZSwgaXQgaGFzIGltcGFjdCBvbiBiZWhhdmlvciBhbmQgdmlzdWFsICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGFjdGl2ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9hY3RpdmUgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHZhbHVlICYmIHRoaXMuX3ZpZXdJbml0JC52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIHRoaXMuX3BpY2tUaW1lKHRoaXMuX2dldEl0ZW0odGhpcy5hY3RpdmVWYWx1ZSksIGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzSW5kaWNhdG9yKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgYWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZlO1xuICAgIH1cblxuICAgIC8qKiBXaGV0aGVyIHRpbWUgY29sdW1uIGlzIG1lcmlkaWFuICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLXRpbWVfX2NvbC0tcGVyaW9kJylcbiAgICBtZXJpZGlhbiA9IGZhbHNlO1xuXG4gICAgLyoqIElkIG9mIGNvbHVtbiwgaW5pdGlhdGVkIHdpdGggc29tZSBkZWZhdWx0IHZhbHVlICovXG4gICAgQElucHV0KClcbiAgICBpZDogc3RyaW5nID0gJ2ZkLXRpbWUtY29sdW1uLScgKyB0aW1lQ29sdW1uVW5pcXVlSWQrKztcblxuICAgIC8qKiBJMThuIGFuZCBsYWJlbHMgKi9cbiAgICBASW5wdXQoKVxuICAgIHRpbWVDb25maWc6IE51bGxhYmxlPFRpbWVDb2x1bW5Db25maWc+O1xuXG4gICAgLyoqIEkxOG4gYW5kIGxhYmVscyAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29sdW1uVHJhbnNsYXRpb25zUHJlc2V0OiAnc2Vjb25kcycgfCAnbWludXRlcycgfCAnaG91cnMnIHwgJ3BlcmlvZCc7XG5cbiAgICAvKipcbiAgICAgKiBPZmZzZXQgZm9yIGNhcm91c2VsIGRpcmVjdGl2ZSwgYWN0aXZlIGl0ZW0gaXMgYWx3YXlzIHRoZSBmaXJzdCBvbmUuXG4gICAgICogSW4gY2FzZSBvZiBoYXZpbmcgbW9yZSBpdGVtcyBpbiBjYXJvdXNlbCB0aGFuIDEsIG1pZGRsZSBlbGVtZW50IHNob3VsZCBiZSBhY3RpdmVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBvZmZzZXQodmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9vZmZzZXQkLm5leHQodmFsdWUpO1xuICAgIH1cbiAgICBnZXQgb2Zmc2V0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vZmZzZXQkLnZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFF1YW50aXR5IG9mIHRoZSBlbGVtZW50cyB0byBiZSBzaG93biBhdCB0aGUgc2FtZSB0aW1lIGluIGNvbHVtblxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGVsZW1lbnRzQXRPbmNlKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fZWxlbWVudHNBdE9uY2UkLm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBFdmVudCBlbWl0dGVkLCB3aGVuIGFjdGl2ZSBpdGVtIGlzIGNoYW5nZWQsIGJ5IGNhcm91c2VsICovXG4gICAgQE91dHB1dCgpXG4gICAgYWN0aXZlVmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxUaW1lQ29sdW1uSXRlbU91dHB1dDxUPj4gPSBuZXcgRXZlbnRFbWl0dGVyPFRpbWVDb2x1bW5JdGVtT3V0cHV0PFQ+PigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQsIHdoZW4gY2VydGFpbiBjb2x1bW4gaXMgYWN0aXZhdGVkICovXG4gICAgQE91dHB1dCgpXG4gICAgYWN0aXZlU3RhdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChDYXJvdXNlbERpcmVjdGl2ZSlcbiAgICBjYXJvdXNlbDogQ2Fyb3VzZWxEaXJlY3RpdmU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oQ2Fyb3VzZWxJdGVtRGlyZWN0aXZlKVxuICAgIGl0ZW1zOiBRdWVyeUxpc3Q8Q2Fyb3VzZWxJdGVtRGlyZWN0aXZlPFQ+PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnaW5kaWNhdG9yJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgaW5kaWNhdG9yOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB3cmFwcGVySGVpZ2h0OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBUaW1lIHRvIHdhaXQgaW4gbWlsbGlzZWNvbmRzIGFmdGVyIHRoZSBsYXN0IGtleWRvd24gYmVmb3JlXG4gICAgICogZm9jdXNpbmcgb3Igc2VsZWN0aW5nIG9wdGlvbiBiYXNlZCBvbiBudW1lcmljL2FscGhhIGtleXMuXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHR5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWwgPSA3NTA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbmZpZzogQ2Fyb3VzZWxDb25maWc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGludGVybmFsVHJhbnNsYXRpb25Db25maWc6IFRpbWVDb2x1bW5Db25maWcgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGN1cnJlbnRJbmRpY2F0b3JJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pZCArICctY3VycmVudC1pbmRpY2F0b3InO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGN1cnJlbnRJbmRpY2F0b3JWYWx1ZUlkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRJbmRpY2F0b3JJZCArICctdmFsdWUnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZWxlbWVudHNBdE9uY2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdCg3KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfb2Zmc2V0JCA9IG5ldyBCZWhhdmlvclN1YmplY3QoMyk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FjdGl2ZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9xdWVyeUtleURvd25FdmVudDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hY3RpdmVWYWx1ZTogTnVsbGFibGU8VD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FjdGl2ZUNhcm91c2VsSXRlbTogQ2Fyb3VzZWxJdGVtRGlyZWN0aXZlPFQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc0RyYWdnaW5nID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ZpZXdJbml0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZXNpemUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogbG9ncyBudW1lcmljIGtleSBpbnB1dHMgdG8gc2V0IHRpbWUgdXNpbmcga2V5Ym9hcmQgaW5wdXQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfa2V5TG9nOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBUaW1lb3V0IHZhcmlhYmxlIHVzZWQgdG8gc2V0IHRpbWVvdXQgZm9yIHN1YnNlcXVlbnQgbnVtZXJpYyBrZXkgaW5wdXQgdG8gc2V0IHRpbWUuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfbnVtZXJpY0lucHV0VGltZW91dDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NoYW5nZURldFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgX2VsbVJlZjogRWxlbWVudFJlZikge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX3ZpZXdJbml0JCwgdGhpcy5fZWxlbWVudHNBdE9uY2UkLCB0aGlzLl9vZmZzZXQkLCB0aGlzLl9yZXNpemUkXSlcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyKChbdmlld0luaXRdKSA9PiB2aWV3SW5pdCksXG4gICAgICAgICAgICAgICAgICAgIHRhcCgoWywgZWxlbWVudHNBdE9uY2UsIG9mZnNldF0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF2ZXJhZ2VIZWlnaHQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMudG9BcnJheSgpLnJlZHVjZSgoYWNjLCBuZXh0KSA9PiBhY2MgKyBuZXh0LmdldEhlaWdodCgpLCAwKSAvIHRoaXMuaXRlbXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53cmFwcGVySGVpZ2h0ID0gYXZlcmFnZUhlaWdodCAqIGVsZW1lbnRzQXRPbmNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmlzaWJsZUJ1dE5vdFNlbGVjdGVkRWxlbWVudHMgPSBNYXRoLmZsb29yKGVsZW1lbnRzQXRPbmNlIC8gMik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtcy5maXJzdC5lbGVtZW50LnN0eWxlLm1hcmdpblRvcCA9IGAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlQnV0Tm90U2VsZWN0ZWRFbGVtZW50cyAqIGF2ZXJhZ2VIZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9cHhgO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMubGFzdC5lbGVtZW50LnN0eWxlLm1hcmdpbkJvdHRvbSA9IGAke1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlQnV0Tm90U2VsZWN0ZWRFbGVtZW50cyAqIGF2ZXJhZ2VIZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9cHhgO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5hY3RpdmVWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3BpY2tUaW1lKHRoaXMuX2dldEl0ZW0odGhpcy5hY3RpdmVWYWx1ZSksIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5fZWxlbWVudHNBdE9uY2UkLnBpcGUodGFwKCgpID0+IHRoaXMuX3NldFVwQ2Fyb3VzZWxDb25maWd1cmF0aW9uKCkpKS5zdWJzY3JpYmUoKSk7XG4gICAgICAgIHRoaXMuX3NldFVwUXVlcnlTdWJzY3JpcHRpb24oKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICByZXNpemVPYnNlcnZhYmxlKHRoaXMuX2VsbVJlZi5uYXRpdmVFbGVtZW50KS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3Jlc2l6ZSQubmV4dCh0cnVlKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX3ZpZXdJbml0JC5uZXh0KHRydWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGUgKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLmNvbHVtblRyYW5zbGF0aW9uc1ByZXNldCkge1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlSW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICAgIG9uSXRlbUNsaWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFjdGl2ZVN0YXRlQ2hhbmdlLmVtaXQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIGtleURvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRE9XTl9BUlJPVykpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsRG93bigpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgVVBfQVJST1cpKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbFVwKCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlUeXBlKGV2ZW50LCAnbnVtZXJpYycpKSB7XG4gICAgICAgICAgICB0aGlzLl9udW1lcmljS2V5SW5wdXRIYW5kbGVyKGV2ZW50KTtcbiAgICAgICAgfSBlbHNlIGlmIChLZXlVdGlsLmlzS2V5VHlwZShldmVudCwgJ2FscGhhYmV0aWNhbCcpKSB7XG4gICAgICAgICAgICB0aGlzLl9hbHBoYUtleUlucHV0SGFuZGxlcihldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ3doZWVsJywgWyckZXZlbnQnXSlcbiAgICBtb3VzZVNjcm9sbEhhbmRsZXIoZXZlbnQ6IFdoZWVsRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKHRoaXMuX2FjdGl2ZSkge1xuICAgICAgICAgICAgZXZlbnQuZGVsdGFZID4gMCA/IHRoaXMuc2Nyb2xsRG93bigpIDogdGhpcy5zY3JvbGxVcCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzcGlubmVyQnV0dG9uS2V5dXBIYW5kbGUoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHVwQnV0dG9uPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFNQQUNFKSkge1xuICAgICAgICAgICAgaWYgKHVwQnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxVcCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbERvd24oKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZXRWYWx1ZU9mQWN0aXZlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fYWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRVcEluaXRpYWxWYWx1ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEl0IHByZXZlbnRzIGZyb20gYWNjaWRlbnRhbGx5IGNoYW5nZSB0aGUgaXRlbSBieSBjbGljayBldmVudCAqL1xuICAgIGhhbmRsZURyYWcoaXNEcmFnZ2luZzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9pc0RyYWdnaW5nID0gaXNEcmFnZ2luZztcbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIHRoYXQgaGFuZGxlcyBhY3RpdmUgaXRlbSBjaGFuZ2UgKi9cbiAgICBhY3RpdmVDaGFuZ2VkSGFuZGxlKG91dHB1dDogUGFuRW5kT3V0cHV0KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFycmF5ID0gdGhpcy5pdGVtcy50b0FycmF5KCk7XG4gICAgICAgIGxldCBpbmRleDogbnVtYmVyID0gYXJyYXkuZmluZEluZGV4KChfX2l0ZW0pID0+IF9faXRlbSA9PT0gb3V0cHV0Lml0ZW0pICsgdGhpcy5vZmZzZXQ7XG5cbiAgICAgICAgaWYgKGluZGV4ID49IGFycmF5Lmxlbmd0aCkge1xuICAgICAgICAgICAgaW5kZXggPSBpbmRleCAtIGFycmF5Lmxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IF9pdGVtID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgICAgIHRoaXMuX2FjdGl2ZVZhbHVlID0gX2l0ZW0udmFsdWU7XG5cbiAgICAgICAgdGhpcy5hY3RpdmVWYWx1ZUNoYW5nZS5lbWl0KHtcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLl9hY3RpdmVWYWx1ZSEsXG4gICAgICAgICAgICBhZnRlcjogb3V0cHV0LmFmdGVyXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2FjdGl2ZUNhcm91c2VsSXRlbSA9IF9pdGVtO1xuICAgIH1cblxuICAgIC8qKiBNZXRob2QgdGhhdCBjaGFuZ2VzIGFjdGl2ZSBpdGVtIGFuZCB0cmlnZ2VycyBjYXJvdXNlbCBzY3JvbGwgKi9cbiAgICBwaWNrKGl0ZW06IENhcm91c2VsSXRlbURpcmVjdGl2ZTxUPiwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50SW5kZXg6IG51bWJlciA9IHRoaXMuaXRlbXMudG9BcnJheSgpLmZpbmRJbmRleCgoX2l0ZW0pID0+IF9pdGVtID09PSB0aGlzLl9hY3RpdmVDYXJvdXNlbEl0ZW0pO1xuICAgICAgICAvKiogVG8gcHJldmVudCBmcm9tIHN3aXRjaGluZyB0aW1lLCB3aGVuIGl0J3MgYmVpbmcgZHJhZ2dlZCAqL1xuICAgICAgICBpZiAoIXRoaXMuX2lzRHJhZ2dpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuX3BpY2tUaW1lKGl0ZW0sIHRydWUsIHRydWUsIGN1cnJlbnRJbmRleCA8IGluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBNZXRob2QgdHJpZ2dlcmVkIGJ5IGtleWJvYXJkLCBvciBpbmNyZW1lbnQgYnV0dG9uICovXG4gICAgc2Nyb2xsVXAoZXZlbnQ/OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIC8qKiBLZXlib2FyZCBldmVudHMgaW4gcmVhY3RpdmUgZm9ybXMsIHNob3VsZG4ndCB0cmlnZ2VyIHRoaXMgbWV0aG9kICovXG4gICAgICAgIGlmIChldmVudCAmJiAhZXZlbnQuY2xpZW50WCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBpbmRleDogbnVtYmVyID0gdGhpcy5pdGVtcy50b0FycmF5KCkuZmluZEluZGV4KChfaXRlbSkgPT4gX2l0ZW0gPT09IHRoaXMuX2FjdGl2ZUNhcm91c2VsSXRlbSk7XG4gICAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgICAgIGluZGV4LS07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbmRleCA9IHRoaXMucm93cy5sZW5ndGggLSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcGlja1RpbWUodGhpcy5pdGVtcy50b0FycmF5KClbaW5kZXhdLCB0cnVlLCB0cnVlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCB0cmlnZ2VyZWQgYnkga2V5Ym9hcmQsIG9yIGRlY3JlbWVudCBidXR0b24gKi9cbiAgICBzY3JvbGxEb3duKCk6IHZvaWQge1xuICAgICAgICBsZXQgaW5kZXg6IG51bWJlciA9IHRoaXMuaXRlbXMudG9BcnJheSgpLmZpbmRJbmRleCgoX2l0ZW0pID0+IF9pdGVtID09PSB0aGlzLl9hY3RpdmVDYXJvdXNlbEl0ZW0pO1xuICAgICAgICBpZiAoaW5kZXggPCB0aGlzLnJvd3MubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGluZGV4ID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3BpY2tUaW1lKHRoaXMuaXRlbXMudG9BcnJheSgpW2luZGV4XSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEZvY3VzIG9uIGNvbHVtbiAqL1xuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmluZGljYXRvcj8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBpZCBmb3IgY29sdW1uIGl0ZW1cbiAgICAgKiBAcGFyYW0gaW5kZXggY29sdW1uIGl0ZW0gaW5kZXhcbiAgICAgKiBAcmV0dXJucyBjb2x1bW4gaXRlbSBpZFxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBfY3JlYXRlQ29sdW1uSXRlbUlkQnlJbmRleChpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWQgKyBpbmRleDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPbiBmb2N1cyBjYWxsYmFja1xuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBfb25Gb2N1c0luZGljYXRvcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmVTdGF0ZUNoYW5nZS5lbWl0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBoYW5kbGVzIGFscGhhYmV0aWNhbCBrZXkgaW5wdXRzIHRvIHNldCBwZXJpb2QuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfYWxwaGFLZXlJbnB1dEhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpID09PSAnYScpIHtcbiAgICAgICAgICAgIHRoaXMuX3BpY2tUaW1lT25WYWx1ZSgnQU0nKTtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ3AnKSB7XG4gICAgICAgICAgICB0aGlzLl9waWNrVGltZU9uVmFsdWUoJ1BNJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIGhhbmRsZXMgbnVtZXJpYyBrZXkgaW5wdXRzIHRvIHNldCB0aW1lLlxuICAgICAqL1xuICAgIHByaXZhdGUgX251bWVyaWNLZXlJbnB1dEhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbGFzdEl0ZW1WYWx1ZSA9IHRoaXMuaXRlbXMubGFzdC52YWx1ZS52YWx1ZTsgLy8gdmFsdWUgb2YgbGFzdCBpdGVtIGluIGNvbHVtblxuXG4gICAgICAgIHRoaXMuX251bWVyaWNJbnB1dFRpbWVvdXQgJiYgY2xlYXJUaW1lb3V0KHRoaXMuX251bWVyaWNJbnB1dFRpbWVvdXQpO1xuICAgICAgICB0aGlzLl9rZXlMb2cucHVzaChldmVudC5rZXkpO1xuICAgICAgICBjb25zdCBpbnB1dFZhbHVlID0gcGFyc2VJbnQodGhpcy5fa2V5TG9nLmpvaW4oJycpLCAxMCk7IC8vIGNvbnZlcnRzIGtleUxvZyBlbGVtZW50cyB0byBhIG51bWJlclxuXG4gICAgICAgIGlmIChpbnB1dFZhbHVlICogMTAgPiBsYXN0SXRlbVZhbHVlIHx8IHRoaXMuX2tleUxvZy5sZW5ndGggPT09IGxhc3RJdGVtVmFsdWUudG9TdHJpbmcoKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX3BpY2tUaW1lT25WYWx1ZShpbnB1dFZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX251bWVyaWNJbnB1dFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9waWNrVGltZU9uVmFsdWUoaW5wdXRWYWx1ZSk7XG4gICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBzZXQgdGhlIHRpbWUgZm9yIGdpdmVuIGl0ZW0gdmFsdWUuIHVzZWQgYnkgX251bWVyaWNLZXlJbnB1dEhhbmRsZXIuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfcGlja1RpbWVPblZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcGlja1RpbWUoXG4gICAgICAgICAgICB0aGlzLml0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0udmFsdWUudmFsdWUgPT09IHZhbHVlKSxcbiAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX2tleUxvZyA9IFtdOyAvLyBjbGVhciBrZXkgbG9nXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHRyaWdnZXJlZCBieSBrZXlib2FyZCwgb3IgZGVjcmVtZW50IGJ1dHRvblxuICAgICAqIEFyZ3M6XG4gICAgICogaXRlbSA9PiBwaWNrZWQgY2Fyb3VzZWwgaXRlbSwgdGhhdCBzaG91bGQgYmUgY2VudGVyZWRcbiAgICAgKiBzbW9vdGggPT4gZGVmaW5lcyBpZiB0cmFuc2l0aW9uIHRpbWUgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRyYW5zZm9ybVxuICAgICAqIGVtaXRFdmVudCA9PiBkZWZpbmVzIGlmIEV2ZW50RW1pdHRlciBzaG91bGQgYmUgdHJpZ2dlcmVkIGJ5IHRoaXMgY2hhbmdlLCBzZXQgdG8gZmFsc2UsIHdoZW4gY2hhbmdlZCBmcm9tIG91dHNpZGVcbiAgICAgKiBhZnRlciA9PiBEZWZpbmVzIGlmIHZhbHVlIHdhcyBpbmNyZW1lbnRlZC9kZWNyZW1lbnRlZCwgbmVlZGVkIGZvciBob3VycyB0byB0cmlnZ2VyIEFNL1BNIGNoYW5nZVxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9waWNrVGltZShpdGVtPzogQ2Fyb3VzZWxJdGVtRGlyZWN0aXZlPFQ+LCBzbW9vdGg/OiBib29sZWFuLCBlbWl0RXZlbnQ/OiBib29sZWFuLCBhZnRlcj86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpdGVtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuX3RyaWdnZXJDYXJvdXNlbChpdGVtLCBzbW9vdGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fYWN0aXZlQ2Fyb3VzZWxJdGVtID0gaXRlbTtcbiAgICAgICAgdGhpcy5fYWN0aXZlVmFsdWUgPSBpdGVtLnZhbHVlO1xuXG4gICAgICAgIGlmIChlbWl0RXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlVmFsdWVDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICAgICAgdmFsdWU6IGl0ZW0udmFsdWUsXG4gICAgICAgICAgICAgICAgYWZ0ZXJcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBpdGVtIHdpdGggcGFzc2VkIHZhbHVlXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldEl0ZW0oX2l0ZW06IE51bGxhYmxlPFQ+KTogQ2Fyb3VzZWxJdGVtRGlyZWN0aXZlPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbXMuZmluZCgoaXRlbSkgPT4gaXRlbS52YWx1ZSA9PT0gX2l0ZW0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdHJpZ2dlckNhcm91c2VsKGl0ZW06IENhcm91c2VsSXRlbURpcmVjdGl2ZTxUPiwgc21vb3RoPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBjb25zdCBhcnJheSA9IHRoaXMuaXRlbXMudG9BcnJheSgpO1xuICAgICAgICBsZXQgaW5kZXg6IG51bWJlciA9IGFycmF5LmZpbmRJbmRleCgoX2l0ZW0pID0+IF9pdGVtID09PSBpdGVtKSAtIHRoaXMub2Zmc2V0O1xuXG4gICAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgICAgIGluZGV4ID0gYXJyYXkubGVuZ3RoICsgaW5kZXg7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNhcm91c2VsLmdvVG9JdGVtKGFycmF5W2luZGV4XSwgc21vb3RoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGb2N1cyBjdXJyZW50IGluZGljYXRvciwgd2hpY2ggYWxsb3dzIHRvIGhhbmRsZSBrZXlkb3duIGV2ZW50cyBpbnNpZGUgY29sdW1uXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2ZvY3VzSW5kaWNhdG9yKCk6IHZvaWQge1xuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmN1cnJlbnRJbmRpY2F0b3JJZCk/LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogYW55IHtcbiAgICAgICAgaWYgKCFpc05hTihOdW1iZXIodmFsdWUpKSkge1xuICAgICAgICAgICAgcmV0dXJuIE51bWJlcih2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldFVwUXVlcnlTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRyaWdnZXIgPSB0aGlzLl9xdWVyeUtleURvd25FdmVudC5waXBlKGRlYm91bmNlVGltZSh0aGlzLnR5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWwpKTtcblxuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgIHRoaXMuX3F1ZXJ5S2V5RG93bkV2ZW50XG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZlcih0cmlnZ2VyKSxcbiAgICAgICAgICAgICAgICAgICAgbWFwKChrZXlzKSA9PiBrZXlzLmpvaW4oJycpKSxcbiAgICAgICAgICAgICAgICAgICAgbWFwKCh2YWx1ZSkgPT4gdGhpcy5fZ2V0VmFsdWUodmFsdWUpKSxcbiAgICAgICAgICAgICAgICAgICAgbWFwKCh2YWx1ZSkgPT4gdGhpcy5fZ2V0SXRlbSh2YWx1ZSkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGl0ZW0pID0+IHRoaXMuX3BpY2tUaW1lKGl0ZW0sIGZhbHNlLCB0cnVlKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldFVwQ2Fyb3VzZWxDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb25maWc6IENhcm91c2VsQ29uZmlnID0ge1xuICAgICAgICAgICAgZ2VzdHVyZVN1cHBvcnQ6IHRydWUsXG4gICAgICAgICAgICB2ZXJ0aWNhbDogdHJ1ZSxcbiAgICAgICAgICAgIGVsZW1lbnRzQXRPbmNlOiB0aGlzLl9lbGVtZW50c0F0T25jZSQudmFsdWUsXG4gICAgICAgICAgICB0cmFuc2l0aW9uOiAnMTUwbXMnXG4gICAgICAgIH07XG4gICAgICAgIGlmICghdGhpcy5tZXJpZGlhbikge1xuICAgICAgICAgICAgY29uZmlnLmluZmluaXRlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldFVwSW5pdGlhbFZhbHVlKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2FjdGl2ZVZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmVWYWx1ZSA9IHRoaXMuaXRlbXMuZmlyc3QudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcGlja1RpbWUodGhpcy5fZ2V0SXRlbSh0aGlzLl9hY3RpdmVWYWx1ZSksIGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZUludGVybmFsVHJhbnNsYXRpb25Db25maWcoKTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5jb2x1bW5UcmFuc2xhdGlvbnNQcmVzZXQpIHtcbiAgICAgICAgICAgIGNhc2UgJ2hvdXJzJzpcbiAgICAgICAgICAgICAgICB0aGlzLmludGVybmFsVHJhbnNsYXRpb25Db25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAgIGluY3JlYXNlTGFiZWw6ICdjb3JlVGltZS5pbmNyZWFzZUhvdXJzTGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2NvcmVUaW1lLmhyc0xhYmVsJyxcbiAgICAgICAgICAgICAgICAgICAgZnVsbExhYmVsOiAnY29yZVRpbWUuaG91cnNMYWJlbCcsXG4gICAgICAgICAgICAgICAgICAgIGRlY3JlYXNlTGFiZWw6ICdjb3JlVGltZS5kZWNyZWFzZUhvdXJzTGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uSW5zdHJ1Y3Rpb246ICdjb3JlVGltZS5uYXZpZ2F0aW9uSW5zdHJ1Y3Rpb24nXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21pbnV0ZXMnOlxuICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgaW5jcmVhc2VMYWJlbDogJ2NvcmVUaW1lLmluY3JlYXNlTWludXRlc0xhYmVsJyxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdjb3JlVGltZS5taW5MYWJlbCcsXG4gICAgICAgICAgICAgICAgICAgIGZ1bGxMYWJlbDogJ2NvcmVUaW1lLm1pbnV0ZXNMYWJlbCcsXG4gICAgICAgICAgICAgICAgICAgIGRlY3JlYXNlTGFiZWw6ICdjb3JlVGltZS5kZWNyZWFzZU1pbnV0ZXNMYWJlbCcsXG4gICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25JbnN0cnVjdGlvbjogJ2NvcmVUaW1lLm5hdmlnYXRpb25JbnN0cnVjdGlvbidcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2Vjb25kcyc6XG4gICAgICAgICAgICAgICAgdGhpcy5pbnRlcm5hbFRyYW5zbGF0aW9uQ29uZmlnID0ge1xuICAgICAgICAgICAgICAgICAgICBpbmNyZWFzZUxhYmVsOiAnY29yZVRpbWUuaW5jcmVhc2VTZWNvbmRzTGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2NvcmVUaW1lLnNlY0xhYmVsJyxcbiAgICAgICAgICAgICAgICAgICAgZnVsbExhYmVsOiAnY29yZVRpbWUuc2Vjb25kc0xhYmVsJyxcbiAgICAgICAgICAgICAgICAgICAgZGVjcmVhc2VMYWJlbDogJ2NvcmVUaW1lLmRlY3JlYXNlU2Vjb25kc0xhYmVsJyxcbiAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGlvbkluc3RydWN0aW9uOiAnY29yZVRpbWUubmF2aWdhdGlvbkluc3RydWN0aW9uJ1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdwZXJpb2QnOlxuICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgaW5jcmVhc2VMYWJlbDogJ2NvcmVUaW1lLmluY3JlYXNlUGVyaW9kTGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2NvcmVUaW1lLnBlcmlvZExhYmVsJyxcbiAgICAgICAgICAgICAgICAgICAgZnVsbExhYmVsOiAnY29yZVRpbWUucGVyaW9kTGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICBkZWNyZWFzZUxhYmVsOiAnY29yZVRpbWUuZGVjcmVhc2VQZXJpb2RMYWJlbCcsXG4gICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25JbnN0cnVjdGlvbjogJ2NvcmVUaW1lLm5hdmlnYXRpb25JbnN0cnVjdGlvbidcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyA9IG51bGw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbn1cbiIsIjxsYWJlbCBjbGFzcz1cImZkLXRpbWVfX3NsaWRlci1sYWJlbFwiPnt7XG4gICAgdGltZUNvbmZpZz8ubGFiZWwgfHwgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcgJiYgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcubGFiZWwgfCBmZFRyYW5zbGF0ZSkpXG59fTwvbGFiZWw+XG48YnV0dG9uXG4gICAgKm5nSWY9XCJhY3RpdmUgJiYgc3Bpbm5lcnNcIlxuICAgIGZkLWJ1dHRvblxuICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICBnbHlwaD1cIm5hdmlnYXRpb24tdXAtYXJyb3dcIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuICAgIFt0aXRsZV09XCJcbiAgICAgICAgdGltZUNvbmZpZz8uZGVjcmVhc2VMYWJlbCB8fFxuICAgICAgICAoaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyAmJiAoaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZy5kZWNyZWFzZUxhYmVsIHwgZmRUcmFuc2xhdGUpKVxuICAgIFwiXG4gICAgW2FyaWFMYWJlbF09XCJcbiAgICAgICAgdGltZUNvbmZpZz8uZGVjcmVhc2VMYWJlbCB8fFxuICAgICAgICAoaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyAmJiAoaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZy5kZWNyZWFzZUxhYmVsIHwgZmRUcmFuc2xhdGUpKVxuICAgIFwiXG4gICAgKGtleXVwKT1cInNwaW5uZXJCdXR0b25LZXl1cEhhbmRsZSgkZXZlbnQsIHRydWUpXCJcbiAgICAoY2xpY2spPVwic2Nyb2xsVXAoJGV2ZW50KVwiXG4+PC9idXR0b24+XG48ZGl2XG4gICAgY2xhc3M9XCJmZC10aW1lX193cmFwcGVyXCJcbiAgICBbY2xhc3MuZmQtdGltZV9fd3JhcHBlci0tYWN0aXZlXT1cImFjdGl2ZVwiXG4gICAgW2NsYXNzLmZkLXRpbWVfX3dyYXBwZXItLW1lcmlkaWFuXT1cIm1lcmlkaWFuXCJcbiAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImFjdGl2ZSA/IHdyYXBwZXJIZWlnaHQgOiAnJ1wiXG4+XG4gICAgPHVsXG4gICAgICAgIGNsYXNzPVwiZmQtdGltZV9fbGlzdFwiXG4gICAgICAgIFtjbGFzcy5mZC10aW1lLWNvbHVtbi1jdXN0b20taGlkZGVuXT1cIiFhY3RpdmVcIlxuICAgICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgICAgIChjbGljayk9XCJpbmRpY2F0b3IuZm9jdXMoKVwiXG4gICAgICAgIChhY3RpdmVDaGFuZ2UpPVwiYWN0aXZlQ2hhbmdlZEhhbmRsZSgkZXZlbnQpXCJcbiAgICAgICAgKGRyYWdTdGF0ZUNoYW5nZSk9XCJoYW5kbGVEcmFnKCRldmVudClcIlxuICAgICAgICBmZENhcm91c2VsXG4gICAgPlxuICAgICAgICA8bGlcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtdGltZV9faXRlbVwiXG4gICAgICAgICAgICBmZENhcm91c2VsSXRlbVxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHJvdyBvZiByb3dzOyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgICAgICAgICAjaXRlbT1cImZkQ2Fyb3VzZWxJdGVtXCJcbiAgICAgICAgICAgIFtpZF09XCJfY3JlYXRlQ29sdW1uSXRlbUlkQnlJbmRleChpbmRleClcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1kaXNwbGF5ZWQtdmFsdWVdPVwicm93LnZhbHVlXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJyb3dcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLXRpbWVfX3VuaXRcIiByb2xlPVwiYnV0dG9uXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJyb3cubGFiZWxcIiAoY2xpY2spPVwicGljayhpdGVtLCBpbmRleClcIj5cbiAgICAgICAgICAgICAgICB7eyByb3cubGFiZWwgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmZC10aW1lX19jdXJyZW50LWluZGljYXRvclwiXG4gICAgICAgICNpbmRpY2F0b3JcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgICBbYXR0ci5pZF09XCJjdXJyZW50SW5kaWNhdG9ySWRcIlxuICAgICAgICBbY2xhc3MuZmQtdGltZS1jb2x1bW4tY3VzdG9tLWhpZGRlbl09XCIhYWN0aXZlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImN1cnJlbnRJbmRpY2F0b3JWYWx1ZUlkXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmlwdGlvbl09XCJcbiAgICAgICAgICAgIHRpbWVDb25maWc/Lm5hdmlnYXRpb25JbnN0cnVjdGlvbiB8fFxuICAgICAgICAgICAgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcgJiYgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcubmF2aWdhdGlvbkluc3RydWN0aW9uIHwgZmRUcmFuc2xhdGUpKVxuICAgICAgICBcIlxuICAgICAgICAoZm9jdXMpPVwiX29uRm9jdXNJbmRpY2F0b3IoKVwiXG4gICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJmZC10aW1lLWNvbHVtbi1jdXN0b20taGlkZGVuXCJcbiAgICAgICAgICAgIGFyaWEtYXRvbWljPVwidHJ1ZVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCIhYWN0aXZlXCJcbiAgICAgICAgICAgIFthdHRyLmlkXT1cImN1cnJlbnRJbmRpY2F0b3JWYWx1ZUlkXCJcbiAgICAgICAgICAgIFtjbGFzcy5mZC10aW1lLWNvbHVtbi1jdXN0b20taGlkZGVuXT1cImFjdGl2ZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7IGFjdGl2ZVZhbHVlPy5sYWJlbCB9fVxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICB0aW1lQ29uZmlnPy5sYWJlbCB8fCAoaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZyAmJiAoaW50ZXJuYWxUcmFuc2xhdGlvbkNvbmZpZy5mdWxsTGFiZWwgfCBmZFRyYW5zbGF0ZSkpXG4gICAgICAgICAgICB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPHNwYW4gKm5nSWY9XCIhYWN0aXZlXCIgY2xhc3M9XCJmZC10aW1lX19pdGVtIGZkLXRpbWVfX2l0ZW0tLWNvbGxhcHNlZFwiPlxuICAgICAgICB7eyBhY3RpdmVWYWx1ZT8ubGFiZWwgfX1cbiAgICA8L3NwYW4+XG48L2Rpdj5cbjxidXR0b25cbiAgICAqbmdJZj1cImFjdGl2ZSAmJiBzcGlubmVyc1wiXG4gICAgZmQtYnV0dG9uXG4gICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgIGdseXBoPVwibmF2aWdhdGlvbi1kb3duLWFycm93XCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgICBbdGl0bGVdPVwiXG4gICAgICAgIHRpbWVDb25maWc/LmluY3JlYXNlTGFiZWwgfHxcbiAgICAgICAgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcgJiYgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcuaW5jcmVhc2VMYWJlbCB8IGZkVHJhbnNsYXRlKSlcbiAgICBcIlxuICAgIFthcmlhTGFiZWxdPVwiXG4gICAgICAgIHRpbWVDb25maWc/LmluY3JlYXNlTGFiZWwgfHxcbiAgICAgICAgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcgJiYgKGludGVybmFsVHJhbnNsYXRpb25Db25maWcuaW5jcmVhc2VMYWJlbCB8IGZkVHJhbnNsYXRlKSlcbiAgICBcIlxuICAgIChrZXl1cCk9XCJzcGlubmVyQnV0dG9uS2V5dXBIYW5kbGUoJGV2ZW50KVwiXG4gICAgKGNsaWNrKT1cInNjcm9sbERvd24oKVwiXG4+PC9idXR0b24+XG4iXX0=
@@ -428,4 +428,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
428
428
  type: ViewChildren,
429
429
  args: [TimeColumnComponent]
430
430
  }] } });
431
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90aW1lL3RpbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdGltZS90aW1lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEUsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBSUwsUUFBUSxFQUNSLFNBQVMsRUFFVCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLFVBQVUsRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWpFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7QUE4QjFFLE1BQU0sT0FBTyxh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d0RBLG15a0JERWMsbUJBQW1CLCtQQUFFLElBQUksd0ZBQUUsU0FBUyx5Q0FBRSxlQUFlOzsyRkFFdEQsYUFBYTtrQkFyQnpCLFNBQVM7K0JBQ0ksU0FBUyxRQUdiO3dCQUNGLFlBQVksRUFBRSxtQkFBbUI7d0JBQ2pDLFFBQVEsRUFBRSxhQUFhO3FCQUMxQixhQUNVO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQzs0QkFDNUMsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7d0JBQ0QsK0JBQStCLEVBQUU7cUJBQ3BDLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGNBQ3pCLElBQUksV0FDUCxDQUFDLG1CQUFtQixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsZUFBZSxDQUFDOzswQkFtSTNELFFBQVE7OzBCQUVSLFFBQVE7NENBN0hiLFFBQVE7c0JBRFAsS0FBSztnQkFPTixRQUFRO3NCQURQLEtBQUs7Z0JBU04sYUFBYTtzQkFEWixLQUFLO2dCQU9OLFFBQVE7c0JBRFAsS0FBSztnQkFPTixjQUFjO3NCQURiLEtBQUs7Z0JBS04sY0FBYztzQkFEYixLQUFLO2dCQU9OLFlBQVk7c0JBRFgsS0FBSztnQkFLTixNQUFNO3NCQURMLEtBQUs7Z0JBS04sY0FBYztzQkFEYixLQUFLO2dCQU9OLElBQUk7c0JBREgsS0FBSztnQkFLTixjQUFjO3NCQURiLEtBQUs7Z0JBS04sT0FBTztzQkFETixZQUFZO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExFRlRfQVJST1csIFJJR0hUX0FSUk9XIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgZm9yd2FyZFJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBLZXlVdGlsLCBSdGxTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgRGF0ZXRpbWVBZGFwdGVyIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RhdGV0aW1lJztcblxuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IEZkVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyBjcmVhdGVNaXNzaW5nRGF0ZUltcGxlbWVudGF0aW9uRXJyb3IgfSBmcm9tICcuL2Vycm9ycyc7XG5pbXBvcnQgeyBNZXJpZGlhbiwgU2VsZWN0YWJsZVZpZXdJdGVtIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgVGltZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vdGltZS1jb2x1bW4vdGltZS1jb2x1bW4uY29tcG9uZW50JztcblxuZXhwb3J0IHR5cGUgRmRUaW1lQWN0aXZlVmlldyA9ICdob3VyJyB8ICdtaW51dGUnIHwgJ3NlY29uZCcgfCAnbWVyaWRpYW4nO1xuXG50eXBlIEhvdXJWaWV3SXRlbSA9IFNlbGVjdGFibGVWaWV3SXRlbTxudW1iZXI+O1xudHlwZSBNaW51dGVWaWV3SXRlbSA9IFNlbGVjdGFibGVWaWV3SXRlbTxudW1iZXI+O1xudHlwZSBTZWNvbmRWaWV3SXRlbSA9IFNlbGVjdGFibGVWaWV3SXRlbTxudW1iZXI+O1xudHlwZSBNZXJpZGlhblZpZXdJdGVtID0gU2VsZWN0YWJsZVZpZXdJdGVtPE1lcmlkaWFuPjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC10aW1lJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGltZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGltZS5jb21wb25lbnQuc2NzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhmb2N1c291dCknOiAnX2ZvY3VzT3V0KCRldmVudCknLFxuICAgICAgICAnKGJsdXIpJzogJ29uVG91Y2hlZCgpJ1xuICAgIH0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGltZUNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzKClcbiAgICBdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbVGltZUNvbHVtbkNvbXBvbmVudCwgTmdJZiwgQXN5bmNQaXBlLCBGZFRyYW5zbGF0ZVBpcGVdXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVDb21wb25lbnQ8RD4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgLyoqXG4gICAgICogQElucHV0IFdoZW4gc2V0IHRvIGZhbHNlLCB1c2VzIHRoZSAyNCBob3VyIGNsb2NrIChob3VycyByYW5naW5nIGZyb20gMCB0byAyMylcbiAgICAgKiBhbmQgZG9lcyBub3QgZGlzcGxheSBhIHBlcmlvZCBjb250cm9sLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbWVyaWRpYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqICBASW5wdXQgV2hlbiBzZXQgdG8gZmFsc2UsIGRvZXMgbm90IHNldCB0aGUgaW5wdXQgZmllbGQgdG8gaW52YWxpZCBzdGF0ZSBvbiBpbnZhbGlkIGVudHJ5LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdmFsaWRhdGUgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQElucHV0IHdoZW4gc2V0IHRvIHRydWUsIHRpbWUgaW5wdXRzIHdvbid0IGFsbG93IHRvIGhhdmUgMSBkaWdpdFxuICAgICAqIGZvciBleGFtcGxlIDkgd2lsbCBiZWNvbWUgMDlcbiAgICAgKiBidXQgMTIgd2lsbCBiZSBrZXB0IGFzIDEyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAga2VlcFR3b0RpZ2l0cyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQElucHV0IERpc2FibGVzIHRoZSBjb21wb25lbnQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEBJbnB1dCBXaGVuIHNldCB0byBmYWxzZSwgaGlkZXMgdGhlIGlucHV0IGZvciBzZWNvbmRzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheVNlY29uZHMgPSB0cnVlO1xuXG4gICAgLyoqIEBJbnB1dCBXaGVuIHNldCB0byBmYWxzZSwgaGlkZXMgdGhlIGlucHV0IGZvciBtaW51dGVzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheU1pbnV0ZXMgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogV2hlbiBzZXQgdG8gZmFsc2UsIGhpZGVzIHRoZSBpbnB1dCBmb3IgaG91cnNcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlIb3VycyA9IHRydWU7XG5cbiAgICAvKiogQElucHV0IERlZmluZXMgaWYgdGltZSBjb21wb25lbnQgc2hvdWxkIGJlIHVzZWQgaW4gdGFibGV0IG1vZGUgKi9cbiAgICBASW5wdXQoKVxuICAgIHRhYmxldCA9IGZhbHNlO1xuXG4gICAgLyoqIEBJbnB1dCBEZWZpbmVzIHF1YW50aXR5IG9mIHRoZSBlbGVtZW50cywgdGhhdCBhcmUgdmlzaWJsZSBhdCB0aGUgc2FtZSB0aW1lLiBTaG91bGQgYmUgb2RkIG51bWJlciAqL1xuICAgIEBJbnB1dCgpXG4gICAgZWxlbWVudHNBdE9uY2UgPSA3O1xuXG4gICAgLyoqXG4gICAgICogQElucHV0IEFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIGRhdGV0aW1lIHJlcHJlc2VudGF0aW9uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB0aW1lOiBEO1xuXG4gICAgLyoqIEBJbnB1dCBXaGV0aGVyIHRvIHNob3cgc3Bpbm5lciBidXR0b25zICovXG4gICAgQElucHV0KClcbiAgICBzcGlubmVyQnV0dG9ucyA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oVGltZUNvbHVtbkNvbXBvbmVudClcbiAgICBjb2x1bW5zOiBRdWVyeUxpc3Q8VGltZUNvbHVtbkNvbXBvbmVudDx1bmtub3duLCBTZWxlY3RhYmxlVmlld0l0ZW08dW5rbm93bj4+PjtcblxuICAgIC8qKiBBY3RpdmUgY29sdW1uIHZpZXcgdG8gaXRlcmF0ZSB3aXRoICovXG4gICAgYWN0aXZlVmlldzogRmRUaW1lQWN0aXZlVmlldyA9ICdob3VyJztcblxuICAgIC8qKiBPZmZzZXQgKi9cbiAgICBnZXQgb2Zmc2V0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKHRoaXMuZWxlbWVudHNBdE9uY2UgLyAyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogY29udGFpbmVyIGZvciBbMCAtIDIzXSBob3Vyc1xuICAgICAqL1xuICAgIGhvdXJWaWV3SXRlbXM6IEhvdXJWaWV3SXRlbVtdID0gW107XG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIHJlZmVyZW5jZSB0byBjdXJyZW50bHkgc2VsZWN0ZWQgaG91clZpZXdJdGVtcyBlbGVtZW50XG4gICAgICovXG4gICAgYWN0aXZlSG91clZpZXdJdGVtPzogSG91clZpZXdJdGVtO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIGNvbnRhaW5lciBmb3IgWzAgLSA1OV0gbWludXRlc1xuICAgICAqL1xuICAgIG1pbnV0ZVZpZXdJdGVtczogTWludXRlVmlld0l0ZW1bXSA9IFtdO1xuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiByZWZlcmVuY2UgdG8gY3VycmVudGx5IHNlbGVjdGVkIG1pbnV0ZVZpZXdJdGVtcyBlbGVtZW50XG4gICAgICovXG4gICAgYWN0aXZlTWludXRlVmlld0l0ZW0/OiBNaW51dGVWaWV3SXRlbTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBjb250YWluZXIgZm9yIFswIC0gNTldIHNlY29uZHNcbiAgICAgKi9cbiAgICBzZWNvbmRWaWV3SXRlbXM6IFNlY29uZFZpZXdJdGVtW10gPSBbXTtcbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogcmVmZXJlbmNlIHRvIGN1cnJlbnRseSBzZWxlY3RlZCBzZWNvbmRWaWV3SXRlbXMgZWxlbWVudFxuICAgICAqL1xuICAgIGFjdGl2ZVNlY29uZFZpZXdJdGVtPzogU2Vjb25kVmlld0l0ZW07XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogY29udGFpbmVyIGZvciBbYW0sIHBtXSBtZXJpZGlhbiB2YWx1ZXNcbiAgICAgKi9cbiAgICBtZXJpZGlhblZpZXdJdGVtczogTWVyaWRpYW5WaWV3SXRlbVtdID0gW107XG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIHJlZmVyZW5jZSB0byBjdXJyZW50bHkgc2VsZWN0ZWQgbWVyaWRpYW5WaWV3SXRlbXMgZWxlbWVudFxuICAgICAqL1xuICAgIGFjdGl2ZU1lcmlkaWFuVmlld0l0ZW0/OiBNZXJpZGlhblZpZXdJdGVtO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vbkRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgLy8gVXNlIEBPcHRpb25hbCB0byBhdm9pZCBhbmd1bGFyIGluamVjdGlvbiBlcnJvciBtZXNzYWdlIGFuZCB0aHJvdyBvdXIgb3duIHdoaWNoIGlzIG1vcmUgcHJlY2lzZSBvbmVcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZGF0ZVRpbWVBZGFwdGVyOiBEYXRldGltZUFkYXB0ZXI8RD4sXG4gICAgICAgIHJlYWRvbmx5IF9jb250ZW50RGVuc2l0eU9ic2VydmVyOiBDb250ZW50RGVuc2l0eU9ic2VydmVyLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9ydGxTZXJ2aWNlOiBSdGxTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIGlmICghX2RhdGVUaW1lQWRhcHRlcikge1xuICAgICAgICAgICAgdGhyb3cgY3JlYXRlTWlzc2luZ0RhdGVJbXBsZW1lbnRhdGlvbkVycm9yKCdEYXRlVGltZUFkYXB0ZXInKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudGltZSA9IHRoaXMuX2dldERlZmF1bHRWYWx1ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5sb2NhbGVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fc2V0VXBWaWV3R3JpZCgpO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9zZXRVcFZpZXdHcmlkKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW5cbiAgICAgKiBSZWFjdHMgb25seSB3aGVuIHRoZXJlIGlzIG1lcmlkaWFuIG9yIHRpbWUgaW5wdXQgY2hhbmdlXG4gICAgICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcy5tZXJpZGlhbiB8fCBjaGFuZ2VzLnRpbWUpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFVwVmlld0dyaWQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlcy5lbGVtZW50c0F0T25jZSAmJiBjaGFuZ2VzLmVsZW1lbnRzQXRPbmNlLmN1cnJlbnRWYWx1ZSAlIDIgPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignW2VsZW1lbnRzQXRPbmNlXSBzaG91bGQgYmUgb2RkIG51bWJlcicpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlZnJlc2hDb2x1bW5zKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvbkNoYW5nZTogKHZhbHVlOiBEKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uVG91Y2hlZCA9ICgpOiB2b2lkID0+IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodGltZTogRCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlZnJlc2hDb2x1bW5zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiBjb2x1bW4uc2V0VmFsdWVPZkFjdGl2ZSgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogSGFuZGxlcyBtZXJpZGlhbiBjaGFuZ2UuXG4gICAgICogVGhpcyBpbXBsaWNpdGx5IGNoYW5nZXMgaG91cnMgYnkgKy8tIDEyXG4gICAgICovXG4gICAgaGFuZGxlTWVyaWRpYW5DaGFuZ2UobWVyaWRpYW46IE1lcmlkaWFuKTogdm9pZCB7XG4gICAgICAgIGxldCBob3VyT2Zmc2V0OiBudW1iZXIgPSBtZXJpZGlhbiA9PT0gTWVyaWRpYW4uQU0gPyAtMTIgOiAxMjtcbiAgICAgICAgbGV0IGN1cnJlbnRIb3VyID0gdGhpcy5fZ2V0TW9kZWxIb3VyKCk7XG5cbiAgICAgICAgaWYgKGN1cnJlbnRIb3VyID4gMTIgJiYgbWVyaWRpYW4gPT09IE1lcmlkaWFuLlBNKSB7XG4gICAgICAgICAgICBjdXJyZW50SG91ciAtPSAxMjtcbiAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50SG91ciA9PT0gMTIpIHtcbiAgICAgICAgICAgIGN1cnJlbnRIb3VyID0gMDtcbiAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50SG91ciA8IDEyICYmIG1lcmlkaWFuID09PSBNZXJpZGlhbi5BTSkge1xuICAgICAgICAgICAgaG91ck9mZnNldCA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdIb3VyID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oMjMsIGN1cnJlbnRIb3VyICsgaG91ck9mZnNldCkpO1xuXG4gICAgICAgIHRoaXMuaGFuZGxlSG91ckNoYW5nZShuZXdIb3VyKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGhhbmRsZVNlY29uZENoYW5nZShzZWNvbmQ6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnRpbWUgPSB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuc2V0U2Vjb25kcyh0aGlzLnRpbWUsIHNlY29uZCk7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZUFjdGl2ZVNlY29uZFZpZXdJdGVtKCk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy50aW1lKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGhhbmRsZU1pbnV0ZUNoYW5nZShtaW51dGU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnRpbWUgPSB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuc2V0TWludXRlcyh0aGlzLnRpbWUsIG1pbnV0ZSk7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZUFjdGl2ZU1pbnV0ZVZpZXdJdGVtKCk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy50aW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogSGFuZGxlcyBjaGFuZ2VzIG9mIGRpc3BsYXllZCBob3VyIHZhbHVlIGZyb20gdGVtcGxhdGUuXG4gICAgICovXG4gICAgaGFuZGxlSG91ckNoYW5nZShob3VyOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50aW1lID0gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLnNldEhvdXJzKHRoaXMudGltZSwgaG91cik7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZUFjdGl2ZUhvdXJWaWV3SXRlbSgpO1xuXG4gICAgICAgIGlmICh0aGlzLm1lcmlkaWFuKSB7XG4gICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGVBY3RpdmVNZXJpZGlhblZpZXdJdGVtKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudGltZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBoYW5kbGVOZXh0Q29sdW1uRm9jdXMoY29sdW1uOiBGZFRpbWVBY3RpdmVWaWV3KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLl9nZXRWaXNpYmxlQ29sdW1uc1dpdGhSdGwoKTtcbiAgICAgICAgbGV0IG5leHRJbmRleCA9IGNvbHVtbnMuaW5kZXhPZihjb2x1bW4pICsgMTtcbiAgICAgICAgaWYgKG5leHRJbmRleCA+PSBjb2x1bW5zLmxlbmd0aCkge1xuICAgICAgICAgICAgbmV4dEluZGV4ID0gMDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNoYW5nZUFjdGl2ZShjb2x1bW5zW25leHRJbmRleF0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgaGFuZGxlUHJldmlvdXNDb2x1bW5Gb2N1cyhjb2x1bW46IEZkVGltZUFjdGl2ZVZpZXcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29sdW1ucyA9IHRoaXMuX2dldFZpc2libGVDb2x1bW5zV2l0aFJ0bCgpO1xuICAgICAgICBsZXQgbmV4dEluZGV4ID0gY29sdW1ucy5pbmRleE9mKGNvbHVtbikgLSAxO1xuICAgICAgICBpZiAobmV4dEluZGV4IDwgMCkge1xuICAgICAgICAgICAgbmV4dEluZGV4ID0gY29sdW1ucy5sZW5ndGggLSAxO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2hhbmdlQWN0aXZlKGNvbHVtbnNbbmV4dEluZGV4XSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBoYW5kbGVLZXlEb3duRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBMRUZUX0FSUk9XKSkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVQcmV2aW91c0NvbHVtbkZvY3VzKHRoaXMuYWN0aXZlVmlldyk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5mb2N1c0FjdGl2ZUNvbHVtbigpO1xuICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBSSUdIVF9BUlJPVykpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlTmV4dENvbHVtbkZvY3VzKHRoaXMuYWN0aXZlVmlldyk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5mb2N1c0FjdGl2ZUNvbHVtbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB3cml0ZVZhbHVlKHRpbWU6IEQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aW1lIHx8ICF0aGlzLl9kYXRlVGltZUFkYXB0ZXIuaXNWYWxpZCh0aW1lKSkge1xuICAgICAgICAgICAgdGltZSA9IHRoaXMuX2dldERlZmF1bHRWYWx1ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGltZSA9IHRpbWU7XG5cbiAgICAgICAgdGhpcy5fc2V0VXBBY3RpdmVWaWV3SXRlbXMoKTtcblxuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjaGFuZ2VBY3RpdmUodmlldzogRmRUaW1lQWN0aXZlVmlldyk6IHZvaWQge1xuICAgICAgICB0aGlzLmFjdGl2ZVZpZXcgPSB2aWV3O1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBpc0FjdGl2ZSh2aWV3OiBGZFRpbWVBY3RpdmVWaWV3KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZVZpZXcgPT09IHZpZXc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBmb2N1c0FjdGl2ZUNvbHVtbigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5jb2x1bW5zLmZpbmQoKHsgYWN0aXZlIH0pID0+IGFjdGl2ZSk7XG4gICAgICAgIGNvbHVtbj8uZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ZvY3VzT3V0KGV2ZW50OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnJlbGF0ZWRUYXJnZXQpKSB7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHZpc2libGUgdGltZSBjb2x1bW5zXG4gICAgICogQHJldHVybnMgdmlzaWJsZSBjb2x1bW5zIGxpc3QgQHNlZSB7RmRUaW1lQWN0aXZlVmlld1tdfVxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldFZpc2libGVDb2x1bW5zKCk6IEZkVGltZUFjdGl2ZVZpZXdbXSB7XG4gICAgICAgIGNvbnN0IGFsbE9wdGlvbnM6IEFycmF5PFtib29sZWFuLCBGZFRpbWVBY3RpdmVWaWV3XT4gPSBbXG4gICAgICAgICAgICBbdGhpcy5kaXNwbGF5SG91cnMsICdob3VyJ10sXG4gICAgICAgICAgICBbdGhpcy5kaXNwbGF5TWludXRlcywgJ21pbnV0ZSddLFxuICAgICAgICAgICAgW3RoaXMuZGlzcGxheVNlY29uZHMsICdzZWNvbmQnXSxcbiAgICAgICAgICAgIFt0aGlzLm1lcmlkaWFuLCAnbWVyaWRpYW4nXVxuICAgICAgICBdO1xuICAgICAgICByZXR1cm4gYWxsT3B0aW9ucy5maWx0ZXIoKFtlbmFibGVkXSkgPT4gZW5hYmxlZCkubWFwKChbLCB2aWV3XSkgPT4gdmlldyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHZpc2libGUgY29sdW1ucyB0YWtpbmcgaW50byBhY2NvdW50IFJUTFxuICAgICAqIEByZXR1cm5zIHZpc2libGUgY29sdW1ucyBsaXN0IEBzZWUge0ZkVGltZUFjdGl2ZVZpZXdbXX1cbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRWaXNpYmxlQ29sdW1uc1dpdGhSdGwoKTogRmRUaW1lQWN0aXZlVmlld1tdIHtcbiAgICAgICAgY29uc3QgY29sdW1ucyA9IHRoaXMuX2dldFZpc2libGVDb2x1bW5zKCk7XG4gICAgICAgIHJldHVybiB0aGlzLl9ydGxTZXJ2aWNlPy5ydGwudmFsdWUgPyBjb2x1bW5zLnJldmVyc2UoKSA6IGNvbHVtbnM7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRVcFZpZXdHcmlkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb25zdHJ1Y3RIb3VyVmlld0l0ZW1zKCk7XG4gICAgICAgIHRoaXMuX2NvbnN0cnVjdE1pbnV0ZVZpZXdJdGVtcygpO1xuICAgICAgICB0aGlzLl9jb25zdHJ1Y3RTZWNvbmRWaWV3SXRlbXMoKTtcbiAgICAgICAgdGhpcy5fY29uc3RydWN0TWVyaWRpYW5WaWV3SXRlbXMoKTtcbiAgICAgICAgLy8gdXBkYXRlIHJlZmVyZW5jZSB0byBhY3RpdmUgdmlldyBpdGVtc1xuICAgICAgICB0aGlzLl9zZXRVcEFjdGl2ZVZpZXdJdGVtcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0VXBBY3RpdmVWaWV3SXRlbXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZUFjdGl2ZUhvdXJWaWV3SXRlbSgpO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVBY3RpdmVNaW51dGVWaWV3SXRlbSgpO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVBY3RpdmVTZWNvbmRWaWV3SXRlbSgpO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVBY3RpdmVNZXJpZGlhblZpZXdJdGVtKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jb25zdHJ1Y3RIb3VyVmlld0l0ZW1zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhvdXJWaWV3SXRlbXMgPSB0aGlzLl9kYXRlVGltZUFkYXB0ZXJcbiAgICAgICAgICAgIC5nZXRIb3VyTmFtZXMoeyBtZXJpZGlhbjogdGhpcy5tZXJpZGlhbiwgdHdvRGlnaXQ6IHRoaXMua2VlcFR3b0RpZ2l0cyB9KVxuICAgICAgICAgICAgLm1hcCgobmFtZSwgaG91cikgPT4gKHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogaG91cixcbiAgICAgICAgICAgICAgICBsYWJlbDogbmFtZVxuICAgICAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY29uc3RydWN0TWludXRlVmlld0l0ZW1zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1pbnV0ZVZpZXdJdGVtcyA9IHRoaXMuX2RhdGVUaW1lQWRhcHRlclxuICAgICAgICAgICAgLmdldE1pbnV0ZU5hbWVzKHsgdHdvRGlnaXQ6IHRoaXMua2VlcFR3b0RpZ2l0cyB9KVxuICAgICAgICAgICAgLm1hcCgobmFtZSwgbWludXRlKSA9PiAoe1xuICAgICAgICAgICAgICAgIHZhbHVlOiBtaW51dGUsXG4gICAgICAgICAgICAgICAgbGFiZWw6IG5hbWVcbiAgICAgICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NvbnN0cnVjdFNlY29uZFZpZXdJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWNvbmRWaWV3SXRlbXMgPSB0aGlzLl9kYXRlVGltZUFkYXB0ZXJcbiAgICAgICAgICAgIC5nZXRTZWNvbmROYW1lcyh7IHR3b0RpZ2l0OiB0aGlzLmtlZXBUd29EaWdpdHMgfSlcbiAgICAgICAgICAgIC5tYXAoKG5hbWUsIHNlY29uZCkgPT4gKHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogc2Vjb25kLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBuYW1lXG4gICAgICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jb25zdHJ1Y3RNZXJpZGlhblZpZXdJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgW2FtTGFiZWwsIHBtTGFiZWxdID0gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmdldERheVBlcmlvZE5hbWVzKCk7XG4gICAgICAgIHRoaXMubWVyaWRpYW5WaWV3SXRlbXMgPSBbXG4gICAgICAgICAgICB7IHZhbHVlOiBNZXJpZGlhbi5BTSwgbGFiZWw6IGFtTGFiZWwgfSxcbiAgICAgICAgICAgIHsgdmFsdWU6IE1lcmlkaWFuLlBNLCBsYWJlbDogcG1MYWJlbCB9XG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVBY3RpdmVIb3VyVmlld0l0ZW0oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGhvdXIgPSB0aGlzLl9nZXRNb2RlbEhvdXIoKTtcbiAgICAgICAgdGhpcy5hY3RpdmVIb3VyVmlld0l0ZW0gPSB0aGlzLmhvdXJWaWV3SXRlbXMuZmluZCgoeyB2YWx1ZSB9KSA9PiB2YWx1ZSA9PT0gaG91cik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVBY3RpdmVNaW51dGVWaWV3SXRlbSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbWludXRlID0gdGhpcy5fZ2V0TW9kZWxNaW51dGUoKTtcbiAgICAgICAgdGhpcy5hY3RpdmVNaW51dGVWaWV3SXRlbSA9IHRoaXMubWludXRlVmlld0l0ZW1zLmZpbmQoKHsgdmFsdWUgfSkgPT4gdmFsdWUgPT09IG1pbnV0ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVBY3RpdmVTZWNvbmRWaWV3SXRlbSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2Vjb25kID0gdGhpcy5fZ2V0TW9kZWxTZWNvbmQoKTtcbiAgICAgICAgdGhpcy5hY3RpdmVTZWNvbmRWaWV3SXRlbSA9IHRoaXMuc2Vjb25kVmlld0l0ZW1zLmZpbmQoKHsgdmFsdWUgfSkgPT4gdmFsdWUgPT09IHNlY29uZCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVBY3RpdmVNZXJpZGlhblZpZXdJdGVtKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBtZXJpZGlhbiA9IHRoaXMuX2dldERheVBlcmlvZEJ5SG91cigpO1xuICAgICAgICB0aGlzLmFjdGl2ZU1lcmlkaWFuVmlld0l0ZW0gPSB0aGlzLm1lcmlkaWFuVmlld0l0ZW1zLmZpbmQoKHsgdmFsdWUgfSkgPT4gdmFsdWUgPT09IG1lcmlkaWFuKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTW9kZWwgaG91cnMgKDAgLSAyMylcbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRNb2RlbEhvdXIoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5nZXRIb3Vycyh0aGlzLnRpbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBNb2RlbCBtaW51dGVzICgwIC0gNTkpXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0TW9kZWxNaW51dGUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5nZXRNaW51dGVzKHRoaXMudGltZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1vZGVsIHNlY29uZHMgKDAgLSA1OSlcbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRNb2RlbFNlY29uZCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmdldFNlY29uZHModGhpcy50aW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogR2V0IG1lcmlkaWFuIHBlcmlvZCBiYXNlZCBvbiBhIGdpdmVuIGhvdXJzXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0RGF5UGVyaW9kQnlIb3VyKGhvdXIgPSB0aGlzLl9nZXRNb2RlbEhvdXIoKSk6IE1lcmlkaWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzUG0oaG91cikgPyBNZXJpZGlhbi5QTSA6IE1lcmlkaWFuLkFNO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXNQbShob3VyczogbnVtYmVyID0gdGhpcy5fZ2V0TW9kZWxIb3VyKCkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGhvdXJzID49IDEyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcmV0dXJucyBkZWZhdWx0IHRpbWUgMDA6MDA6MDBcbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXREZWZhdWx0VmFsdWUoKTogRCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlVGltZUFkYXB0ZXIudG9kYXkoKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJmZC10aW1lXCJcbiAgICBbY2xhc3MuaXMtY29tcGFjdF09XCJfY29udGVudERlbnNpdHlPYnNlcnZlci5pc0NvbXBhY3QkIHwgYXN5bmNcIlxuICAgIChrZXlkb3duKT1cImhhbmRsZUtleURvd25FdmVudCgkZXZlbnQpXCJcbiAgICBbY2xhc3MuZmQtdGltZS0tdGFibGV0XT1cInRhYmxldFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCInY29yZVRpbWUuY29tcG9uZW50QXJpYU5hbWUnIHwgZmRUcmFuc2xhdGVcIlxuPlxuICAgIDxmZC10aW1lLWNvbHVtblxuICAgICAgICBbYWN0aXZlXT1cImlzQWN0aXZlKCdob3VyJylcIlxuICAgICAgICBbcm93c109XCJob3VyVmlld0l0ZW1zXCJcbiAgICAgICAgW29mZnNldF09XCJvZmZzZXRcIlxuICAgICAgICBbZWxlbWVudHNBdE9uY2VdPVwiZWxlbWVudHNBdE9uY2VcIlxuICAgICAgICBbYWN0aXZlVmFsdWVdPVwiYWN0aXZlSG91clZpZXdJdGVtXCJcbiAgICAgICAgY29sdW1uVHJhbnNsYXRpb25zUHJlc2V0PVwiaG91cnNcIlxuICAgICAgICBbc3Bpbm5lcnNdPVwic3Bpbm5lckJ1dHRvbnNcIlxuICAgICAgICAoYWN0aXZlVmFsdWVDaGFuZ2UpPVwiaGFuZGxlSG91ckNoYW5nZSgkZXZlbnQudmFsdWUudmFsdWUpXCJcbiAgICAgICAgKGFjdGl2ZVN0YXRlQ2hhbmdlKT1cImNoYW5nZUFjdGl2ZSgnaG91cicpXCJcbiAgICA+PC9mZC10aW1lLWNvbHVtbj5cbiAgICA8ZmQtdGltZS1jb2x1bW5cbiAgICAgICAgKm5nSWY9XCJkaXNwbGF5TWludXRlc1wiXG4gICAgICAgIFthY3RpdmVdPVwiaXNBY3RpdmUoJ21pbnV0ZScpXCJcbiAgICAgICAgW3Jvd3NdPVwibWludXRlVmlld0l0ZW1zXCJcbiAgICAgICAgW29mZnNldF09XCJvZmZzZXRcIlxuICAgICAgICBbZWxlbWVudHNBdE9uY2VdPVwiZWxlbWVudHNBdE9uY2VcIlxuICAgICAgICBbYWN0aXZlVmFsdWVdPVwiYWN0aXZlTWludXRlVmlld0l0ZW1cIlxuICAgICAgICBjb2x1bW5UcmFuc2xhdGlvbnNQcmVzZXQ9XCJtaW51dGVzXCJcbiAgICAgICAgW3NwaW5uZXJzXT1cInNwaW5uZXJCdXR0b25zXCJcbiAgICAgICAgKGFjdGl2ZVZhbHVlQ2hhbmdlKT1cImhhbmRsZU1pbnV0ZUNoYW5nZSgkZXZlbnQudmFsdWUudmFsdWUpXCJcbiAgICAgICAgKGFjdGl2ZVN0YXRlQ2hhbmdlKT1cImNoYW5nZUFjdGl2ZSgnbWludXRlJylcIlxuICAgID48L2ZkLXRpbWUtY29sdW1uPlxuICAgIDxmZC10aW1lLWNvbHVtblxuICAgICAgICAqbmdJZj1cImRpc3BsYXlTZWNvbmRzXCJcbiAgICAgICAgW2FjdGl2ZV09XCJpc0FjdGl2ZSgnc2Vjb25kJylcIlxuICAgICAgICBbcm93c109XCJzZWNvbmRWaWV3SXRlbXNcIlxuICAgICAgICBbb2Zmc2V0XT1cIm9mZnNldFwiXG4gICAgICAgIFtlbGVtZW50c0F0T25jZV09XCJlbGVtZW50c0F0T25jZVwiXG4gICAgICAgIFthY3RpdmVWYWx1ZV09XCJhY3RpdmVTZWNvbmRWaWV3SXRlbVwiXG4gICAgICAgIGNvbHVtblRyYW5zbGF0aW9uc1ByZXNldD1cInNlY29uZHNcIlxuICAgICAgICBbc3Bpbm5lcnNdPVwic3Bpbm5lckJ1dHRvbnNcIlxuICAgICAgICAoYWN0aXZlVmFsdWVDaGFuZ2UpPVwiaGFuZGxlU2Vjb25kQ2hhbmdlKCRldmVudC52YWx1ZS52YWx1ZSlcIlxuICAgICAgICAoYWN0aXZlU3RhdGVDaGFuZ2UpPVwiY2hhbmdlQWN0aXZlKCdzZWNvbmQnKVwiXG4gICAgPjwvZmQtdGltZS1jb2x1bW4+XG4gICAgPGZkLXRpbWUtY29sdW1uXG4gICAgICAgICpuZ0lmPVwibWVyaWRpYW5cIlxuICAgICAgICBbYWN0aXZlXT1cImlzQWN0aXZlKCdtZXJpZGlhbicpXCJcbiAgICAgICAgW3Jvd3NdPVwibWVyaWRpYW5WaWV3SXRlbXNcIlxuICAgICAgICBbYWN0aXZlVmFsdWVdPVwiYWN0aXZlTWVyaWRpYW5WaWV3SXRlbVwiXG4gICAgICAgIFtvZmZzZXRdPVwiMFwiXG4gICAgICAgIFtlbGVtZW50c0F0T25jZV09XCJlbGVtZW50c0F0T25jZVwiXG4gICAgICAgIGNvbHVtblRyYW5zbGF0aW9uc1ByZXNldD1cInBlcmlvZFwiXG4gICAgICAgIFttZXJpZGlhbl09XCJ0cnVlXCJcbiAgICAgICAgW3NwaW5uZXJzXT1cInNwaW5uZXJCdXR0b25zXCJcbiAgICAgICAgKGFjdGl2ZVZhbHVlQ2hhbmdlKT1cImhhbmRsZU1lcmlkaWFuQ2hhbmdlKCRldmVudC52YWx1ZS52YWx1ZSlcIlxuICAgICAgICAoYWN0aXZlU3RhdGVDaGFuZ2UpPVwiY2hhbmdlQWN0aXZlKCdtZXJpZGlhbicpXCJcbiAgICA+PC9mZC10aW1lLWNvbHVtbj5cbjwvZGl2PlxuIl19
431
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90aW1lL3RpbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdGltZS90aW1lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEUsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBSUwsUUFBUSxFQUNSLFNBQVMsRUFFVCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLFVBQVUsRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWpFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7QUE4QjFFLE1BQU0sT0FBTyxhQUFhO0lBcUV0QixhQUFhO0lBQ2IsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQW9ERCxjQUFjO0lBQ2QsWUFDWSxrQkFBcUMsRUFDckMsV0FBdUI7SUFDL0IscUdBQXFHO0lBQ2pGLGdCQUFvQyxFQUMvQyx1QkFBK0MsRUFDcEMsV0FBdUI7UUFMbkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNyQyxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUVYLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBb0I7UUFDL0MsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF3QjtRQUNwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQWxJL0M7OztXQUdHO1FBRUgsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQjs7V0FFRztRQUVILGFBQVEsR0FBRyxJQUFJLENBQUM7UUFFaEI7Ozs7V0FJRztRQUVILGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBUXRCOztXQUVHO1FBRUgsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFFdEIsNkRBQTZEO1FBRTdELG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBRXRCOztXQUVHO1FBRUgsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFFcEIscUVBQXFFO1FBRXJFLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFZix1R0FBdUc7UUFFdkcsbUJBQWMsR0FBRyxDQUFDLENBQUM7UUFRbkIsNkNBQTZDO1FBRTdDLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBTXRCLHlDQUF5QztRQUN6QyxlQUFVLEdBQXFCLE1BQU0sQ0FBQztRQU90Qzs7O1dBR0c7UUFDSCxrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFPbkM7OztXQUdHO1FBQ0gsb0JBQWUsR0FBcUIsRUFBRSxDQUFDO1FBT3ZDOzs7V0FHRztRQUNILG9CQUFlLEdBQXFCLEVBQUUsQ0FBQztRQU92Qzs7O1dBR0c7UUFDSCxzQkFBaUIsR0FBdUIsRUFBRSxDQUFDO1FBTzNDLGNBQWM7UUFDRyxnQkFBVyxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRWxFLGNBQWM7UUFDTixtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFvRDVDLGNBQWM7UUFDZCxhQUFRLEdBQXVCLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUV4QyxjQUFjO1FBQ2QsY0FBUyxHQUFHLEdBQVMsRUFBRSxHQUFFLENBQUMsQ0FBQztRQTdDdkIsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ25CLE1BQU0sb0NBQW9DLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUNqRTtRQUVELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELGNBQWM7SUFDZCxRQUFRO1FBQ0osSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDakYsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDbEMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3pCO1FBQ0QsSUFBSSxPQUFPLENBQUMsY0FBYyxJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsWUFBWSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDekUsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1NBQzVEO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDZCxXQUFXO1FBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELGNBQWM7SUFDZCxlQUFlO1FBQ1gsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFRRCxjQUFjO0lBQ2QsZ0JBQWdCLENBQUMsRUFBcUI7UUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELGNBQWM7SUFDZCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxjQUFjO0lBQ2QsZ0JBQWdCLENBQUMsVUFBbUI7UUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7UUFDM0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRCxjQUFjO0lBQ2QsY0FBYztRQUNWLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsb0JBQW9CLENBQUMsUUFBa0I7UUFDbkMsSUFBSSxVQUFVLEdBQVcsUUFBUSwyQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM3RCxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFdkMsSUFBSSxXQUFXLEdBQUcsRUFBRSxJQUFJLFFBQVEsMkJBQWdCLEVBQUU7WUFDOUMsV0FBVyxJQUFJLEVBQUUsQ0FBQztTQUNyQjthQUFNLElBQUksV0FBVyxLQUFLLEVBQUUsRUFBRTtZQUMzQixXQUFXLEdBQUcsQ0FBQyxDQUFDO1NBQ25CO2FBQU0sSUFBSSxXQUFXLEdBQUcsRUFBRSxJQUFJLFFBQVEsMkJBQWdCLEVBQUU7WUFDckQsVUFBVSxHQUFHLENBQUMsQ0FBQztTQUNsQjtRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFdBQVcsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBRXBFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsY0FBYztJQUNkLGtCQUFrQixDQUFDLE1BQWM7UUFDN0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLDhCQUE4QixFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELGNBQWM7SUFDZCxrQkFBa0IsQ0FBQyxNQUFjO1FBQzdCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxnQkFBZ0IsQ0FBQyxJQUFZO1FBQ3pCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1FBRXBDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO1NBQzNDO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELGNBQWM7SUFDZCxxQkFBcUIsQ0FBQyxNQUF3QjtRQUMxQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUNqRCxJQUFJLFNBQVMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QyxJQUFJLFNBQVMsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQzdCLFNBQVMsR0FBRyxDQUFDLENBQUM7U0FDakI7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxjQUFjO0lBQ2QseUJBQXlCLENBQUMsTUFBd0I7UUFDOUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDakQsSUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUMsSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFO1lBQ2YsU0FBUyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1NBQ2xDO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsY0FBYztJQUNkLGtCQUFrQixDQUFDLEtBQW9CO1FBQ25DLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEVBQUU7WUFDdEMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNoRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDNUI7YUFBTSxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxFQUFFO1lBQzlDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQzVCO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDZCxVQUFVLENBQUMsSUFBTztRQUNkLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQy9DLElBQUksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUNsQztRQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBRWpCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBRTdCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRUQsY0FBYztJQUNkLFlBQVksQ0FBQyxJQUFzQjtRQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELGNBQWM7SUFDZCxRQUFRLENBQUMsSUFBc0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQztJQUNwQyxDQUFDO0lBRUQsY0FBYztJQUNkLGlCQUFpQjtRQUNiLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekQsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxjQUFjO0lBQ04sU0FBUyxDQUFDLEtBQWlCO1FBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQy9ELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUNwQjtJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSyxrQkFBa0I7UUFDdEIsTUFBTSxVQUFVLEdBQXVDO1lBQ25ELENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUM7WUFDM0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQztZQUMvQixDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDO1lBQy9CLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUM7U0FDOUIsQ0FBQztRQUNGLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVEOzs7T0FHRztJQUNLLHlCQUF5QjtRQUM3QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQyxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDckUsQ0FBQztJQUVELGNBQWM7SUFDTixjQUFjO1FBQ2xCLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQ25DLHdDQUF3QztRQUN4QyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsY0FBYztJQUNOLHFCQUFxQjtRQUN6QixJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsOEJBQThCLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsOEJBQThCLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRUQsY0FBYztJQUNOLHVCQUF1QjtRQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0I7YUFDckMsWUFBWSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQzthQUN2RSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2xCLEtBQUssRUFBRSxJQUFJO1lBQ1gsS0FBSyxFQUFFLElBQUk7U0FDZCxDQUFDLENBQUMsQ0FBQztJQUNaLENBQUM7SUFFRCxjQUFjO0lBQ04seUJBQXlCO1FBQzdCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGdCQUFnQjthQUN2QyxjQUFjLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2FBQ2hELEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDcEIsS0FBSyxFQUFFLE1BQU07WUFDYixLQUFLLEVBQUUsSUFBSTtTQUNkLENBQUMsQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUVELGNBQWM7SUFDTix5QkFBeUI7UUFDN0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCO2FBQ3ZDLGNBQWMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDaEQsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNwQixLQUFLLEVBQUUsTUFBTTtZQUNiLEtBQUssRUFBRSxJQUFJO1NBQ2QsQ0FBQyxDQUFDLENBQUM7SUFDWixDQUFDO0lBRUQsY0FBYztJQUNOLDJCQUEyQjtRQUMvQixNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3JFLElBQUksQ0FBQyxpQkFBaUIsR0FBRztZQUNyQixFQUFFLEtBQUssd0JBQWEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO1lBQ3RDLEVBQUUsS0FBSyx3QkFBYSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7U0FDekMsQ0FBQztJQUNOLENBQUM7SUFFRCxjQUFjO0lBQ04sNEJBQTRCO1FBQ2hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVELGNBQWM7SUFDTiw4QkFBOEI7UUFDbEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxNQUFNLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQsY0FBYztJQUNOLDhCQUE4QjtRQUNsQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLE1BQU0sQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFRCxjQUFjO0lBQ04sZ0NBQWdDO1FBQ3BDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFRDs7O09BR0c7SUFDSyxhQUFhO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGVBQWU7UUFDbkIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssZUFBZTtRQUNuQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7O09BR0c7SUFDSyxtQkFBbUIsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRTtRQUNuRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyx3QkFBYSxDQUFDLHVCQUFZLENBQUM7SUFDeEQsQ0FBQztJQUVELGNBQWM7SUFDTixLQUFLLENBQUMsUUFBZ0IsSUFBSSxDQUFDLGFBQWEsRUFBRTtRQUM5QyxPQUFPLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGdCQUFnQjtRQUNwQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QyxDQUFDOzhHQXBkUSxhQUFhO2tHQUFiLGFBQWEsMmJBYlg7WUFDUDtnQkFDSSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQztnQkFDNUMsS0FBSyxFQUFFLElBQUk7YUFDZDtZQUNELCtCQUErQixFQUFFO1NBQ3BDLHNEQXFFYSxtQkFBbUIscUVDM0hyQyxzcUVBd0RBLG15a0JERWMsbUJBQW1CLCtQQUFFLElBQUksd0ZBQUUsU0FBUyx5Q0FBRSxlQUFlOzsyRkFFdEQsYUFBYTtrQkFyQnpCLFNBQVM7K0JBQ0ksU0FBUyxRQUdiO3dCQUNGLFlBQVksRUFBRSxtQkFBbUI7d0JBQ2pDLFFBQVEsRUFBRSxhQUFhO3FCQUMxQixhQUNVO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQzs0QkFDNUMsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7d0JBQ0QsK0JBQStCLEVBQUU7cUJBQ3BDLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGNBQ3pCLElBQUksV0FDUCxDQUFDLG1CQUFtQixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsZUFBZSxDQUFDOzswQkFtSTNELFFBQVE7OzBCQUVSLFFBQVE7NENBN0hiLFFBQVE7c0JBRFAsS0FBSztnQkFPTixRQUFRO3NCQURQLEtBQUs7Z0JBU04sYUFBYTtzQkFEWixLQUFLO2dCQU9OLFFBQVE7c0JBRFAsS0FBSztnQkFPTixjQUFjO3NCQURiLEtBQUs7Z0JBS04sY0FBYztzQkFEYixLQUFLO2dCQU9OLFlBQVk7c0JBRFgsS0FBSztnQkFLTixNQUFNO3NCQURMLEtBQUs7Z0JBS04sY0FBYztzQkFEYixLQUFLO2dCQU9OLElBQUk7c0JBREgsS0FBSztnQkFLTixjQUFjO3NCQURiLEtBQUs7Z0JBS04sT0FBTztzQkFETixZQUFZO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExFRlRfQVJST1csIFJJR0hUX0FSUk9XIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgZm9yd2FyZFJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBLZXlVdGlsLCBSdGxTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgRGF0ZXRpbWVBZGFwdGVyIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RhdGV0aW1lJztcblxuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IEZkVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyBjcmVhdGVNaXNzaW5nRGF0ZUltcGxlbWVudGF0aW9uRXJyb3IgfSBmcm9tICcuL2Vycm9ycyc7XG5pbXBvcnQgeyBNZXJpZGlhbiwgU2VsZWN0YWJsZVZpZXdJdGVtIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgVGltZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vdGltZS1jb2x1bW4vdGltZS1jb2x1bW4uY29tcG9uZW50JztcblxuZXhwb3J0IHR5cGUgRmRUaW1lQWN0aXZlVmlldyA9ICdob3VyJyB8ICdtaW51dGUnIHwgJ3NlY29uZCcgfCAnbWVyaWRpYW4nO1xuXG50eXBlIEhvdXJWaWV3SXRlbSA9IFNlbGVjdGFibGVWaWV3SXRlbTxudW1iZXI+O1xudHlwZSBNaW51dGVWaWV3SXRlbSA9IFNlbGVjdGFibGVWaWV3SXRlbTxudW1iZXI+O1xudHlwZSBTZWNvbmRWaWV3SXRlbSA9IFNlbGVjdGFibGVWaWV3SXRlbTxudW1iZXI+O1xudHlwZSBNZXJpZGlhblZpZXdJdGVtID0gU2VsZWN0YWJsZVZpZXdJdGVtPE1lcmlkaWFuPjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC10aW1lJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGltZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGltZS5jb21wb25lbnQuc2NzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhmb2N1c291dCknOiAnX2ZvY3VzT3V0KCRldmVudCknLFxuICAgICAgICAnKGJsdXIpJzogJ29uVG91Y2hlZCgpJ1xuICAgIH0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGltZUNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzKClcbiAgICBdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbVGltZUNvbHVtbkNvbXBvbmVudCwgTmdJZiwgQXN5bmNQaXBlLCBGZFRyYW5zbGF0ZVBpcGVdXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVDb21wb25lbnQ8RD4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgLyoqXG4gICAgICogQElucHV0IFdoZW4gc2V0IHRvIGZhbHNlLCB1c2VzIHRoZSAyNCBob3VyIGNsb2NrIChob3VycyByYW5naW5nIGZyb20gMCB0byAyMylcbiAgICAgKiBhbmQgZG9lcyBub3QgZGlzcGxheSBhIHBlcmlvZCBjb250cm9sLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbWVyaWRpYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqICBASW5wdXQgV2hlbiBzZXQgdG8gZmFsc2UsIGRvZXMgbm90IHNldCB0aGUgaW5wdXQgZmllbGQgdG8gaW52YWxpZCBzdGF0ZSBvbiBpbnZhbGlkIGVudHJ5LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdmFsaWRhdGUgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQElucHV0IHdoZW4gc2V0IHRvIHRydWUsIHRpbWUgaW5wdXRzIHdvbid0IGFsbG93IHRvIGhhdmUgMSBkaWdpdFxuICAgICAqIGZvciBleGFtcGxlIDkgd2lsbCBiZWNvbWUgMDlcbiAgICAgKiBidXQgMTIgd2lsbCBiZSBrZXB0IGFzIDEyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAga2VlcFR3b0RpZ2l0cyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQElucHV0IERpc2FibGVzIHRoZSBjb21wb25lbnQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEBJbnB1dCBXaGVuIHNldCB0byBmYWxzZSwgaGlkZXMgdGhlIGlucHV0IGZvciBzZWNvbmRzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheVNlY29uZHMgPSB0cnVlO1xuXG4gICAgLyoqIEBJbnB1dCBXaGVuIHNldCB0byBmYWxzZSwgaGlkZXMgdGhlIGlucHV0IGZvciBtaW51dGVzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheU1pbnV0ZXMgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogV2hlbiBzZXQgdG8gZmFsc2UsIGhpZGVzIHRoZSBpbnB1dCBmb3IgaG91cnNcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlIb3VycyA9IHRydWU7XG5cbiAgICAvKiogQElucHV0IERlZmluZXMgaWYgdGltZSBjb21wb25lbnQgc2hvdWxkIGJlIHVzZWQgaW4gdGFibGV0IG1vZGUgKi9cbiAgICBASW5wdXQoKVxuICAgIHRhYmxldCA9IGZhbHNlO1xuXG4gICAgLyoqIEBJbnB1dCBEZWZpbmVzIHF1YW50aXR5IG9mIHRoZSBlbGVtZW50cywgdGhhdCBhcmUgdmlzaWJsZSBhdCB0aGUgc2FtZSB0aW1lLiBTaG91bGQgYmUgb2RkIG51bWJlciAqL1xuICAgIEBJbnB1dCgpXG4gICAgZWxlbWVudHNBdE9uY2UgPSA3O1xuXG4gICAgLyoqXG4gICAgICogQElucHV0IEFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIGRhdGV0aW1lIHJlcHJlc2VudGF0aW9uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB0aW1lOiBEO1xuXG4gICAgLyoqIEBJbnB1dCBXaGV0aGVyIHRvIHNob3cgc3Bpbm5lciBidXR0b25zICovXG4gICAgQElucHV0KClcbiAgICBzcGlubmVyQnV0dG9ucyA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oVGltZUNvbHVtbkNvbXBvbmVudClcbiAgICBjb2x1bW5zOiBRdWVyeUxpc3Q8VGltZUNvbHVtbkNvbXBvbmVudDxudW1iZXIsIFNlbGVjdGFibGVWaWV3SXRlbTxudW1iZXI+Pj47XG5cbiAgICAvKiogQWN0aXZlIGNvbHVtbiB2aWV3IHRvIGl0ZXJhdGUgd2l0aCAqL1xuICAgIGFjdGl2ZVZpZXc6IEZkVGltZUFjdGl2ZVZpZXcgPSAnaG91cic7XG5cbiAgICAvKiogT2Zmc2V0ICovXG4gICAgZ2V0IG9mZnNldCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcih0aGlzLmVsZW1lbnRzQXRPbmNlIC8gMik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIGNvbnRhaW5lciBmb3IgWzAgLSAyM10gaG91cnNcbiAgICAgKi9cbiAgICBob3VyVmlld0l0ZW1zOiBIb3VyVmlld0l0ZW1bXSA9IFtdO1xuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiByZWZlcmVuY2UgdG8gY3VycmVudGx5IHNlbGVjdGVkIGhvdXJWaWV3SXRlbXMgZWxlbWVudFxuICAgICAqL1xuICAgIGFjdGl2ZUhvdXJWaWV3SXRlbT86IEhvdXJWaWV3SXRlbTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBjb250YWluZXIgZm9yIFswIC0gNTldIG1pbnV0ZXNcbiAgICAgKi9cbiAgICBtaW51dGVWaWV3SXRlbXM6IE1pbnV0ZVZpZXdJdGVtW10gPSBbXTtcbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogcmVmZXJlbmNlIHRvIGN1cnJlbnRseSBzZWxlY3RlZCBtaW51dGVWaWV3SXRlbXMgZWxlbWVudFxuICAgICAqL1xuICAgIGFjdGl2ZU1pbnV0ZVZpZXdJdGVtPzogTWludXRlVmlld0l0ZW07XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogY29udGFpbmVyIGZvciBbMCAtIDU5XSBzZWNvbmRzXG4gICAgICovXG4gICAgc2Vjb25kVmlld0l0ZW1zOiBTZWNvbmRWaWV3SXRlbVtdID0gW107XG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIHJlZmVyZW5jZSB0byBjdXJyZW50bHkgc2VsZWN0ZWQgc2Vjb25kVmlld0l0ZW1zIGVsZW1lbnRcbiAgICAgKi9cbiAgICBhY3RpdmVTZWNvbmRWaWV3SXRlbT86IFNlY29uZFZpZXdJdGVtO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIGNvbnRhaW5lciBmb3IgW2FtLCBwbV0gbWVyaWRpYW4gdmFsdWVzXG4gICAgICovXG4gICAgbWVyaWRpYW5WaWV3SXRlbXM6IE1lcmlkaWFuVmlld0l0ZW1bXSA9IFtdO1xuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiByZWZlcmVuY2UgdG8gY3VycmVudGx5IHNlbGVjdGVkIG1lcmlkaWFuVmlld0l0ZW1zIGVsZW1lbnRcbiAgICAgKi9cbiAgICBhY3RpdmVNZXJpZGlhblZpZXdJdGVtPzogTWVyaWRpYW5WaWV3SXRlbTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfb25EZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIC8vIFVzZSBAT3B0aW9uYWwgdG8gYXZvaWQgYW5ndWxhciBpbmplY3Rpb24gZXJyb3IgbWVzc2FnZSBhbmQgdGhyb3cgb3VyIG93biB3aGljaCBpcyBtb3JlIHByZWNpc2Ugb25lXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2RhdGVUaW1lQWRhcHRlcjogRGF0ZXRpbWVBZGFwdGVyPEQ+LFxuICAgICAgICByZWFkb25seSBfY29udGVudERlbnNpdHlPYnNlcnZlcjogQ29udGVudERlbnNpdHlPYnNlcnZlcixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfcnRsU2VydmljZTogUnRsU2VydmljZVxuICAgICkge1xuICAgICAgICBpZiAoIV9kYXRlVGltZUFkYXB0ZXIpIHtcbiAgICAgICAgICAgIHRocm93IGNyZWF0ZU1pc3NpbmdEYXRlSW1wbGVtZW50YXRpb25FcnJvcignRGF0ZVRpbWVBZGFwdGVyJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRpbWUgPSB0aGlzLl9nZXREZWZhdWx0VmFsdWUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kYXRlVGltZUFkYXB0ZXIubG9jYWxlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3NldFVwVmlld0dyaWQoKTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fc2V0VXBWaWV3R3JpZCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogUmVhY3RzIG9ubHkgd2hlbiB0aGVyZSBpcyBtZXJpZGlhbiBvciB0aW1lIGlucHV0IGNoYW5nZVxuICAgICAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMubWVyaWRpYW4gfHwgY2hhbmdlcy50aW1lKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRVcFZpZXdHcmlkKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZXMuZWxlbWVudHNBdE9uY2UgJiYgY2hhbmdlcy5lbGVtZW50c0F0T25jZS5jdXJyZW50VmFsdWUgJSAyID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1tlbGVtZW50c0F0T25jZV0gc2hvdWxkIGJlIG9kZCBudW1iZXInKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZWZyZXNoQ29sdW1ucygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25DaGFuZ2U6ICh2YWx1ZTogRCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHRpbWU6IEQpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWZyZXNoQ29sdW1ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4gY29sdW1uLnNldFZhbHVlT2ZBY3RpdmUoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEhhbmRsZXMgbWVyaWRpYW4gY2hhbmdlLlxuICAgICAqIFRoaXMgaW1wbGljaXRseSBjaGFuZ2VzIGhvdXJzIGJ5ICsvLSAxMlxuICAgICAqL1xuICAgIGhhbmRsZU1lcmlkaWFuQ2hhbmdlKG1lcmlkaWFuOiBNZXJpZGlhbik6IHZvaWQge1xuICAgICAgICBsZXQgaG91ck9mZnNldDogbnVtYmVyID0gbWVyaWRpYW4gPT09IE1lcmlkaWFuLkFNID8gLTEyIDogMTI7XG4gICAgICAgIGxldCBjdXJyZW50SG91ciA9IHRoaXMuX2dldE1vZGVsSG91cigpO1xuXG4gICAgICAgIGlmIChjdXJyZW50SG91ciA+IDEyICYmIG1lcmlkaWFuID09PSBNZXJpZGlhbi5QTSkge1xuICAgICAgICAgICAgY3VycmVudEhvdXIgLT0gMTI7XG4gICAgICAgIH0gZWxzZSBpZiAoY3VycmVudEhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICBjdXJyZW50SG91ciA9IDA7XG4gICAgICAgIH0gZWxzZSBpZiAoY3VycmVudEhvdXIgPCAxMiAmJiBtZXJpZGlhbiA9PT0gTWVyaWRpYW4uQU0pIHtcbiAgICAgICAgICAgIGhvdXJPZmZzZXQgPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3SG91ciA9IE1hdGgubWF4KDAsIE1hdGgubWluKDIzLCBjdXJyZW50SG91ciArIGhvdXJPZmZzZXQpKTtcblxuICAgICAgICB0aGlzLmhhbmRsZUhvdXJDaGFuZ2UobmV3SG91cik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBoYW5kbGVTZWNvbmRDaGFuZ2Uoc2Vjb25kOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50aW1lID0gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLnNldFNlY29uZHModGhpcy50aW1lLCBzZWNvbmQpO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVBY3RpdmVTZWNvbmRWaWV3SXRlbSgpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudGltZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBoYW5kbGVNaW51dGVDaGFuZ2UobWludXRlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50aW1lID0gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLnNldE1pbnV0ZXModGhpcy50aW1lLCBtaW51dGUpO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVBY3RpdmVNaW51dGVWaWV3SXRlbSgpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudGltZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEhhbmRsZXMgY2hhbmdlcyBvZiBkaXNwbGF5ZWQgaG91ciB2YWx1ZSBmcm9tIHRlbXBsYXRlLlxuICAgICAqL1xuICAgIGhhbmRsZUhvdXJDaGFuZ2UoaG91cjogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGltZSA9IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5zZXRIb3Vycyh0aGlzLnRpbWUsIGhvdXIpO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVBY3RpdmVIb3VyVmlld0l0ZW0oKTtcblxuICAgICAgICBpZiAodGhpcy5tZXJpZGlhbikge1xuICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRlQWN0aXZlTWVyaWRpYW5WaWV3SXRlbSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnRpbWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgaGFuZGxlTmV4dENvbHVtbkZvY3VzKGNvbHVtbjogRmRUaW1lQWN0aXZlVmlldyk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5fZ2V0VmlzaWJsZUNvbHVtbnNXaXRoUnRsKCk7XG4gICAgICAgIGxldCBuZXh0SW5kZXggPSBjb2x1bW5zLmluZGV4T2YoY29sdW1uKSArIDE7XG4gICAgICAgIGlmIChuZXh0SW5kZXggPj0gY29sdW1ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIG5leHRJbmRleCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGFuZ2VBY3RpdmUoY29sdW1uc1tuZXh0SW5kZXhdKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGhhbmRsZVByZXZpb3VzQ29sdW1uRm9jdXMoY29sdW1uOiBGZFRpbWVBY3RpdmVWaWV3KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLl9nZXRWaXNpYmxlQ29sdW1uc1dpdGhSdGwoKTtcbiAgICAgICAgbGV0IG5leHRJbmRleCA9IGNvbHVtbnMuaW5kZXhPZihjb2x1bW4pIC0gMTtcbiAgICAgICAgaWYgKG5leHRJbmRleCA8IDApIHtcbiAgICAgICAgICAgIG5leHRJbmRleCA9IGNvbHVtbnMubGVuZ3RoIC0gMTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNoYW5nZUFjdGl2ZShjb2x1bW5zW25leHRJbmRleF0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgaGFuZGxlS2V5RG93bkV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgTEVGVF9BUlJPVykpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlUHJldmlvdXNDb2x1bW5Gb2N1cyh0aGlzLmFjdGl2ZVZpZXcpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNBY3RpdmVDb2x1bW4oKTtcbiAgICAgICAgfSBlbHNlIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgUklHSFRfQVJST1cpKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZU5leHRDb2x1bW5Gb2N1cyh0aGlzLmFjdGl2ZVZpZXcpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNBY3RpdmVDb2x1bW4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgd3JpdGVWYWx1ZSh0aW1lOiBEKTogdm9pZCB7XG4gICAgICAgIGlmICghdGltZSB8fCAhdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmlzVmFsaWQodGltZSkpIHtcbiAgICAgICAgICAgIHRpbWUgPSB0aGlzLl9nZXREZWZhdWx0VmFsdWUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRpbWUgPSB0aW1lO1xuXG4gICAgICAgIHRoaXMuX3NldFVwQWN0aXZlVmlld0l0ZW1zKCk7XG5cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY2hhbmdlQWN0aXZlKHZpZXc6IEZkVGltZUFjdGl2ZVZpZXcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmVWaWV3ID0gdmlldztcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgaXNBY3RpdmUodmlldzogRmRUaW1lQWN0aXZlVmlldyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVWaWV3ID09PSB2aWV3O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZm9jdXNBY3RpdmVDb2x1bW4oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuY29sdW1ucy5maW5kKCh7IGFjdGl2ZSB9KSA9PiBhY3RpdmUpO1xuICAgICAgICBjb2x1bW4/LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9mb2N1c091dChldmVudDogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0KSkge1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB2aXNpYmxlIHRpbWUgY29sdW1uc1xuICAgICAqIEByZXR1cm5zIHZpc2libGUgY29sdW1ucyBsaXN0IEBzZWUge0ZkVGltZUFjdGl2ZVZpZXdbXX1cbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRWaXNpYmxlQ29sdW1ucygpOiBGZFRpbWVBY3RpdmVWaWV3W10ge1xuICAgICAgICBjb25zdCBhbGxPcHRpb25zOiBBcnJheTxbYm9vbGVhbiwgRmRUaW1lQWN0aXZlVmlld10+ID0gW1xuICAgICAgICAgICAgW3RoaXMuZGlzcGxheUhvdXJzLCAnaG91ciddLFxuICAgICAgICAgICAgW3RoaXMuZGlzcGxheU1pbnV0ZXMsICdtaW51dGUnXSxcbiAgICAgICAgICAgIFt0aGlzLmRpc3BsYXlTZWNvbmRzLCAnc2Vjb25kJ10sXG4gICAgICAgICAgICBbdGhpcy5tZXJpZGlhbiwgJ21lcmlkaWFuJ11cbiAgICAgICAgXTtcbiAgICAgICAgcmV0dXJuIGFsbE9wdGlvbnMuZmlsdGVyKChbZW5hYmxlZF0pID0+IGVuYWJsZWQpLm1hcCgoWywgdmlld10pID0+IHZpZXcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB2aXNpYmxlIGNvbHVtbnMgdGFraW5nIGludG8gYWNjb3VudCBSVExcbiAgICAgKiBAcmV0dXJucyB2aXNpYmxlIGNvbHVtbnMgbGlzdCBAc2VlIHtGZFRpbWVBY3RpdmVWaWV3W119XG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0VmlzaWJsZUNvbHVtbnNXaXRoUnRsKCk6IEZkVGltZUFjdGl2ZVZpZXdbXSB7XG4gICAgICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLl9nZXRWaXNpYmxlQ29sdW1ucygpO1xuICAgICAgICByZXR1cm4gdGhpcy5fcnRsU2VydmljZT8ucnRsLnZhbHVlID8gY29sdW1ucy5yZXZlcnNlKCkgOiBjb2x1bW5zO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0VXBWaWV3R3JpZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29uc3RydWN0SG91clZpZXdJdGVtcygpO1xuICAgICAgICB0aGlzLl9jb25zdHJ1Y3RNaW51dGVWaWV3SXRlbXMoKTtcbiAgICAgICAgdGhpcy5fY29uc3RydWN0U2Vjb25kVmlld0l0ZW1zKCk7XG4gICAgICAgIHRoaXMuX2NvbnN0cnVjdE1lcmlkaWFuVmlld0l0ZW1zKCk7XG4gICAgICAgIC8vIHVwZGF0ZSByZWZlcmVuY2UgdG8gYWN0aXZlIHZpZXcgaXRlbXNcbiAgICAgICAgdGhpcy5fc2V0VXBBY3RpdmVWaWV3SXRlbXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldFVwQWN0aXZlVmlld0l0ZW1zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVBY3RpdmVIb3VyVmlld0l0ZW0oKTtcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlQWN0aXZlTWludXRlVmlld0l0ZW0oKTtcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlQWN0aXZlU2Vjb25kVmlld0l0ZW0oKTtcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlQWN0aXZlTWVyaWRpYW5WaWV3SXRlbSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY29uc3RydWN0SG91clZpZXdJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ob3VyVmlld0l0ZW1zID0gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyXG4gICAgICAgICAgICAuZ2V0SG91ck5hbWVzKHsgbWVyaWRpYW46IHRoaXMubWVyaWRpYW4sIHR3b0RpZ2l0OiB0aGlzLmtlZXBUd29EaWdpdHMgfSlcbiAgICAgICAgICAgIC5tYXAoKG5hbWUsIGhvdXIpID0+ICh7XG4gICAgICAgICAgICAgICAgdmFsdWU6IGhvdXIsXG4gICAgICAgICAgICAgICAgbGFiZWw6IG5hbWVcbiAgICAgICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NvbnN0cnVjdE1pbnV0ZVZpZXdJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5taW51dGVWaWV3SXRlbXMgPSB0aGlzLl9kYXRlVGltZUFkYXB0ZXJcbiAgICAgICAgICAgIC5nZXRNaW51dGVOYW1lcyh7IHR3b0RpZ2l0OiB0aGlzLmtlZXBUd29EaWdpdHMgfSlcbiAgICAgICAgICAgIC5tYXAoKG5hbWUsIG1pbnV0ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogbWludXRlLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBuYW1lXG4gICAgICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jb25zdHJ1Y3RTZWNvbmRWaWV3SXRlbXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2Vjb25kVmlld0l0ZW1zID0gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyXG4gICAgICAgICAgICAuZ2V0U2Vjb25kTmFtZXMoeyB0d29EaWdpdDogdGhpcy5rZWVwVHdvRGlnaXRzIH0pXG4gICAgICAgICAgICAubWFwKChuYW1lLCBzZWNvbmQpID0+ICh7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHNlY29uZCxcbiAgICAgICAgICAgICAgICBsYWJlbDogbmFtZVxuICAgICAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY29uc3RydWN0TWVyaWRpYW5WaWV3SXRlbXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IFthbUxhYmVsLCBwbUxhYmVsXSA9IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5nZXREYXlQZXJpb2ROYW1lcygpO1xuICAgICAgICB0aGlzLm1lcmlkaWFuVmlld0l0ZW1zID0gW1xuICAgICAgICAgICAgeyB2YWx1ZTogTWVyaWRpYW4uQU0sIGxhYmVsOiBhbUxhYmVsIH0sXG4gICAgICAgICAgICB7IHZhbHVlOiBNZXJpZGlhbi5QTSwgbGFiZWw6IHBtTGFiZWwgfVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlQWN0aXZlSG91clZpZXdJdGVtKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBob3VyID0gdGhpcy5fZ2V0TW9kZWxIb3VyKCk7XG4gICAgICAgIHRoaXMuYWN0aXZlSG91clZpZXdJdGVtID0gdGhpcy5ob3VyVmlld0l0ZW1zLmZpbmQoKHsgdmFsdWUgfSkgPT4gdmFsdWUgPT09IGhvdXIpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlQWN0aXZlTWludXRlVmlld0l0ZW0oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG1pbnV0ZSA9IHRoaXMuX2dldE1vZGVsTWludXRlKCk7XG4gICAgICAgIHRoaXMuYWN0aXZlTWludXRlVmlld0l0ZW0gPSB0aGlzLm1pbnV0ZVZpZXdJdGVtcy5maW5kKCh7IHZhbHVlIH0pID0+IHZhbHVlID09PSBtaW51dGUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlQWN0aXZlU2Vjb25kVmlld0l0ZW0oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlY29uZCA9IHRoaXMuX2dldE1vZGVsU2Vjb25kKCk7XG4gICAgICAgIHRoaXMuYWN0aXZlU2Vjb25kVmlld0l0ZW0gPSB0aGlzLnNlY29uZFZpZXdJdGVtcy5maW5kKCh7IHZhbHVlIH0pID0+IHZhbHVlID09PSBzZWNvbmQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlQWN0aXZlTWVyaWRpYW5WaWV3SXRlbSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbWVyaWRpYW4gPSB0aGlzLl9nZXREYXlQZXJpb2RCeUhvdXIoKTtcbiAgICAgICAgdGhpcy5hY3RpdmVNZXJpZGlhblZpZXdJdGVtID0gdGhpcy5tZXJpZGlhblZpZXdJdGVtcy5maW5kKCh7IHZhbHVlIH0pID0+IHZhbHVlID09PSBtZXJpZGlhbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1vZGVsIGhvdXJzICgwIC0gMjMpXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0TW9kZWxIb3VyKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuZ2V0SG91cnModGhpcy50aW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTW9kZWwgbWludXRlcyAoMCAtIDU5KVxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldE1vZGVsTWludXRlKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuZ2V0TWludXRlcyh0aGlzLnRpbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBNb2RlbCBzZWNvbmRzICgwIC0gNTkpXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0TW9kZWxTZWNvbmQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5nZXRTZWNvbmRzKHRoaXMudGltZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEdldCBtZXJpZGlhbiBwZXJpb2QgYmFzZWQgb24gYSBnaXZlbiBob3Vyc1xuICAgICAqL1xuICAgIHByaXZhdGUgX2dldERheVBlcmlvZEJ5SG91cihob3VyID0gdGhpcy5fZ2V0TW9kZWxIb3VyKCkpOiBNZXJpZGlhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1BtKGhvdXIpID8gTWVyaWRpYW4uUE0gOiBNZXJpZGlhbi5BTTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lzUG0oaG91cnM6IG51bWJlciA9IHRoaXMuX2dldE1vZGVsSG91cigpKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBob3VycyA+PSAxMjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHJldHVybnMgZGVmYXVsdCB0aW1lIDAwOjAwOjAwXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0RGVmYXVsdFZhbHVlKCk6IEQge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLnRvZGF5KCk7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGNsYXNzPVwiZmQtdGltZVwiXG4gICAgW2NsYXNzLmlzLWNvbXBhY3RdPVwiX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXIuaXNDb21wYWN0JCB8IGFzeW5jXCJcbiAgICAoa2V5ZG93bik9XCJoYW5kbGVLZXlEb3duRXZlbnQoJGV2ZW50KVwiXG4gICAgW2NsYXNzLmZkLXRpbWUtLXRhYmxldF09XCJ0YWJsZXRcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ2NvcmVUaW1lLmNvbXBvbmVudEFyaWFOYW1lJyB8IGZkVHJhbnNsYXRlXCJcbj5cbiAgICA8ZmQtdGltZS1jb2x1bW5cbiAgICAgICAgW2FjdGl2ZV09XCJpc0FjdGl2ZSgnaG91cicpXCJcbiAgICAgICAgW3Jvd3NdPVwiaG91clZpZXdJdGVtc1wiXG4gICAgICAgIFtvZmZzZXRdPVwib2Zmc2V0XCJcbiAgICAgICAgW2VsZW1lbnRzQXRPbmNlXT1cImVsZW1lbnRzQXRPbmNlXCJcbiAgICAgICAgW2FjdGl2ZVZhbHVlXT1cImFjdGl2ZUhvdXJWaWV3SXRlbVwiXG4gICAgICAgIGNvbHVtblRyYW5zbGF0aW9uc1ByZXNldD1cImhvdXJzXCJcbiAgICAgICAgW3NwaW5uZXJzXT1cInNwaW5uZXJCdXR0b25zXCJcbiAgICAgICAgKGFjdGl2ZVZhbHVlQ2hhbmdlKT1cImhhbmRsZUhvdXJDaGFuZ2UoJGV2ZW50LnZhbHVlLnZhbHVlKVwiXG4gICAgICAgIChhY3RpdmVTdGF0ZUNoYW5nZSk9XCJjaGFuZ2VBY3RpdmUoJ2hvdXInKVwiXG4gICAgPjwvZmQtdGltZS1jb2x1bW4+XG4gICAgPGZkLXRpbWUtY29sdW1uXG4gICAgICAgICpuZ0lmPVwiZGlzcGxheU1pbnV0ZXNcIlxuICAgICAgICBbYWN0aXZlXT1cImlzQWN0aXZlKCdtaW51dGUnKVwiXG4gICAgICAgIFtyb3dzXT1cIm1pbnV0ZVZpZXdJdGVtc1wiXG4gICAgICAgIFtvZmZzZXRdPVwib2Zmc2V0XCJcbiAgICAgICAgW2VsZW1lbnRzQXRPbmNlXT1cImVsZW1lbnRzQXRPbmNlXCJcbiAgICAgICAgW2FjdGl2ZVZhbHVlXT1cImFjdGl2ZU1pbnV0ZVZpZXdJdGVtXCJcbiAgICAgICAgY29sdW1uVHJhbnNsYXRpb25zUHJlc2V0PVwibWludXRlc1wiXG4gICAgICAgIFtzcGlubmVyc109XCJzcGlubmVyQnV0dG9uc1wiXG4gICAgICAgIChhY3RpdmVWYWx1ZUNoYW5nZSk9XCJoYW5kbGVNaW51dGVDaGFuZ2UoJGV2ZW50LnZhbHVlLnZhbHVlKVwiXG4gICAgICAgIChhY3RpdmVTdGF0ZUNoYW5nZSk9XCJjaGFuZ2VBY3RpdmUoJ21pbnV0ZScpXCJcbiAgICA+PC9mZC10aW1lLWNvbHVtbj5cbiAgICA8ZmQtdGltZS1jb2x1bW5cbiAgICAgICAgKm5nSWY9XCJkaXNwbGF5U2Vjb25kc1wiXG4gICAgICAgIFthY3RpdmVdPVwiaXNBY3RpdmUoJ3NlY29uZCcpXCJcbiAgICAgICAgW3Jvd3NdPVwic2Vjb25kVmlld0l0ZW1zXCJcbiAgICAgICAgW29mZnNldF09XCJvZmZzZXRcIlxuICAgICAgICBbZWxlbWVudHNBdE9uY2VdPVwiZWxlbWVudHNBdE9uY2VcIlxuICAgICAgICBbYWN0aXZlVmFsdWVdPVwiYWN0aXZlU2Vjb25kVmlld0l0ZW1cIlxuICAgICAgICBjb2x1bW5UcmFuc2xhdGlvbnNQcmVzZXQ9XCJzZWNvbmRzXCJcbiAgICAgICAgW3NwaW5uZXJzXT1cInNwaW5uZXJCdXR0b25zXCJcbiAgICAgICAgKGFjdGl2ZVZhbHVlQ2hhbmdlKT1cImhhbmRsZVNlY29uZENoYW5nZSgkZXZlbnQudmFsdWUudmFsdWUpXCJcbiAgICAgICAgKGFjdGl2ZVN0YXRlQ2hhbmdlKT1cImNoYW5nZUFjdGl2ZSgnc2Vjb25kJylcIlxuICAgID48L2ZkLXRpbWUtY29sdW1uPlxuICAgIDxmZC10aW1lLWNvbHVtblxuICAgICAgICAqbmdJZj1cIm1lcmlkaWFuXCJcbiAgICAgICAgW2FjdGl2ZV09XCJpc0FjdGl2ZSgnbWVyaWRpYW4nKVwiXG4gICAgICAgIFtyb3dzXT1cIm1lcmlkaWFuVmlld0l0ZW1zXCJcbiAgICAgICAgW2FjdGl2ZVZhbHVlXT1cImFjdGl2ZU1lcmlkaWFuVmlld0l0ZW1cIlxuICAgICAgICBbb2Zmc2V0XT1cIjBcIlxuICAgICAgICBbZWxlbWVudHNBdE9uY2VdPVwiZWxlbWVudHNBdE9uY2VcIlxuICAgICAgICBjb2x1bW5UcmFuc2xhdGlvbnNQcmVzZXQ9XCJwZXJpb2RcIlxuICAgICAgICBbbWVyaWRpYW5dPVwidHJ1ZVwiXG4gICAgICAgIFtzcGlubmVyc109XCJzcGlubmVyQnV0dG9uc1wiXG4gICAgICAgIChhY3RpdmVWYWx1ZUNoYW5nZSk9XCJoYW5kbGVNZXJpZGlhbkNoYW5nZSgkZXZlbnQudmFsdWUudmFsdWUpXCJcbiAgICAgICAgKGFjdGl2ZVN0YXRlQ2hhbmdlKT1cImNoYW5nZUFjdGl2ZSgnbWVyaWRpYW4nKVwiXG4gICAgPjwvZmQtdGltZS1jb2x1bW4+XG48L2Rpdj5cbiJdfQ==