ngx-hana-nameserver-history-viewer 1.1.1 → 1.1.90

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 (242) hide show
  1. package/README.md +7 -6
  2. package/esm2020/ngx-hana-nameserver-history-viewer.mjs +5 -0
  3. package/esm2020/public-api.mjs +2 -0
  4. package/esm2020/src/nameserver-history-viewer/components/alert/alert.component.mjs +68 -0
  5. package/esm2020/src/nameserver-history-viewer/components/alert/alert.module.mjs +22 -0
  6. package/esm2020/src/nameserver-history-viewer/components/alert/index.mjs +3 -0
  7. package/esm2020/src/nameserver-history-viewer/components/file-drop-input/file-drop-input.component.mjs +112 -0
  8. package/esm2020/src/nameserver-history-viewer/components/file-drop-input/index.mjs +2 -0
  9. package/esm2020/src/nameserver-history-viewer/components/index.mjs +9 -0
  10. package/esm2020/src/nameserver-history-viewer/components/instruction/index.mjs +2 -0
  11. package/esm2020/src/nameserver-history-viewer/components/instruction/instruction.component.mjs +42 -0
  12. package/esm2020/src/nameserver-history-viewer/components/nameserver-history.component.mjs +550 -0
  13. package/esm2020/src/nameserver-history-viewer/components/port-selector/index.mjs +2 -0
  14. package/esm2020/src/nameserver-history-viewer/components/port-selector/port-selector.component.mjs +69 -0
  15. package/esm2020/src/nameserver-history-viewer/components/port-selector/port-selector.service.mjs +41 -0
  16. package/esm2020/src/nameserver-history-viewer/components/progress-bar/index.mjs +2 -0
  17. package/esm2020/src/nameserver-history-viewer/components/progress-bar/progress-bar.component.mjs +40 -0
  18. package/esm2020/src/nameserver-history-viewer/components/time-range-selector/index.mjs +2 -0
  19. package/esm2020/src/nameserver-history-viewer/components/time-range-selector/time-range-selector.component.mjs +70 -0
  20. package/esm2020/src/nameserver-history-viewer/components/timezone-selector/index.mjs +2 -0
  21. package/esm2020/src/nameserver-history-viewer/components/timezone-selector/timezone-selector.component.mjs +90 -0
  22. package/esm2020/src/nameserver-history-viewer/components/timezone-selector/timezone-selector.service.mjs +49 -0
  23. package/esm2020/src/nameserver-history-viewer/index.mjs +3 -0
  24. package/esm2020/src/nameserver-history-viewer/nameserver-history.module.mjs +63 -0
  25. package/esm2020/src/nameserver-history-viewer/services/chart.service.mjs +323 -0
  26. package/esm2020/src/nameserver-history-viewer/services/file.service.mjs +390 -0
  27. package/esm2020/src/nameserver-history-viewer/services/index.mjs +4 -0
  28. package/esm2020/src/nameserver-history-viewer/services/ui.service.mjs +557 -0
  29. package/esm2020/src/nameserver-history-viewer/types/abort.types.mjs +6 -0
  30. package/esm2020/src/nameserver-history-viewer/types/alert.types.mjs +8 -0
  31. package/esm2020/src/nameserver-history-viewer/types/chart-content-data-item.types.mjs +2 -0
  32. package/esm2020/src/nameserver-history-viewer/types/chart-content-data.types.mjs +2 -0
  33. package/esm2020/src/nameserver-history-viewer/types/chart-content-header.types.mjs +2 -0
  34. package/esm2020/src/nameserver-history-viewer/types/chart-content-time.types.mjs +2 -0
  35. package/esm2020/src/nameserver-history-viewer/types/chart-content.types.mjs +2 -0
  36. package/esm2020/src/nameserver-history-viewer/types/color-rgba.types.mjs +2 -0
  37. package/esm2020/src/nameserver-history-viewer/types/html-element.type.mjs +9 -0
  38. package/esm2020/src/nameserver-history-viewer/types/index.mjs +28 -0
  39. package/esm2020/src/nameserver-history-viewer/types/item.types.mjs +14 -0
  40. package/esm2020/src/nameserver-history-viewer/types/legend-color.types.mjs +2 -0
  41. package/esm2020/src/nameserver-history-viewer/types/load-history-info-backup.types.mjs +2 -0
  42. package/esm2020/src/nameserver-history-viewer/types/load-history-info-columnstore.types.mjs +2 -0
  43. package/esm2020/src/nameserver-history-viewer/types/load-history-info-host.types.mjs +2 -0
  44. package/esm2020/src/nameserver-history-viewer/types/load-history-info-item.types.mjs +2 -0
  45. package/esm2020/src/nameserver-history-viewer/types/load-history-info-persistence.types.mjs +2 -0
  46. package/esm2020/src/nameserver-history-viewer/types/load-history-info-rowstore.types.mjs +2 -0
  47. package/esm2020/src/nameserver-history-viewer/types/load-history-info-server.types.mjs +2 -0
  48. package/esm2020/src/nameserver-history-viewer/types/load-history-info-session-admission-control.types.mjs +2 -0
  49. package/esm2020/src/nameserver-history-viewer/types/load-history-info-sql.types.mjs +2 -0
  50. package/esm2020/src/nameserver-history-viewer/types/load-history-info-sync-primitives.types.mjs +2 -0
  51. package/esm2020/src/nameserver-history-viewer/types/load-history-info-threads.types.mjs +2 -0
  52. package/esm2020/src/nameserver-history-viewer/types/load-history-info.types.mjs +2 -0
  53. package/esm2020/src/nameserver-history-viewer/types/port.types.mjs +2 -0
  54. package/esm2020/src/nameserver-history-viewer/types/scale-group.types.mjs +17 -0
  55. package/esm2020/src/nameserver-history-viewer/types/unit-category.types.mjs +10 -0
  56. package/esm2020/src/nameserver-history-viewer/types/unit.types.mjs +14 -0
  57. package/esm2020/src/nameserver-history-viewer/utils/chart-util.mjs +25 -0
  58. package/esm2020/src/nameserver-history-viewer/utils/chartjs-downsample/chartjs_ext.mjs +2 -0
  59. package/esm2020/src/nameserver-history-viewer/utils/chartjs-downsample/data_culling.mjs +57 -0
  60. package/esm2020/src/nameserver-history-viewer/utils/chartjs-downsample/data_mipmap.mjs +139 -0
  61. package/esm2020/src/nameserver-history-viewer/utils/chartjs-downsample/index.mjs +41 -0
  62. package/esm2020/src/nameserver-history-viewer/utils/chartjs-downsample/lttb_data_mipmap.mjs +106 -0
  63. package/esm2020/src/nameserver-history-viewer/utils/chartjs-downsample/responsive_downsample_plugin.mjs +168 -0
  64. package/esm2020/src/nameserver-history-viewer/utils/chartjs-downsample/utils.mjs +114 -0
  65. package/esm2020/src/nameserver-history-viewer/utils/chartjs-zoom/chart.zoom.mjs +527 -0
  66. package/esm2020/src/nameserver-history-viewer/utils/chartjs-zoom/index.mjs +2 -0
  67. package/esm2020/src/nameserver-history-viewer/utils/file-util.mjs +154 -0
  68. package/esm2020/src/nameserver-history-viewer/utils/index.mjs +5 -0
  69. package/esm2020/src/nameserver-history-viewer/utils/time-util.mjs +101 -0
  70. package/esm2020/src/nameserver-history-viewer/utils/ui-util.mjs +162 -0
  71. package/fesm2015/ngx-hana-nameserver-history-viewer.mjs +4081 -0
  72. package/fesm2015/ngx-hana-nameserver-history-viewer.mjs.map +1 -0
  73. package/fesm2020/ngx-hana-nameserver-history-viewer.mjs +4081 -0
  74. package/fesm2020/ngx-hana-nameserver-history-viewer.mjs.map +1 -0
  75. package/ngx-hana-nameserver-history-viewer.d.ts +1 -1
  76. package/package.json +36 -61
  77. package/src/nameserver-history-viewer/components/alert/alert.component.d.ts +4 -1
  78. package/src/nameserver-history-viewer/components/alert/alert.module.d.ts +6 -0
  79. package/src/nameserver-history-viewer/components/file-drop-input/file-drop-input.component.d.ts +3 -0
  80. package/src/nameserver-history-viewer/components/instruction/instruction.component.d.ts +3 -0
  81. package/src/nameserver-history-viewer/components/nameserver-history.component.d.ts +33 -14
  82. package/src/nameserver-history-viewer/components/port-selector/port-selector.component.d.ts +4 -1
  83. package/src/nameserver-history-viewer/components/port-selector/port-selector.service.d.ts +3 -0
  84. package/src/nameserver-history-viewer/components/progress-bar/progress-bar.component.d.ts +3 -0
  85. package/src/nameserver-history-viewer/components/time-range-selector/time-range-selector.component.d.ts +3 -0
  86. package/src/nameserver-history-viewer/components/timezone-selector/timezone-selector.component.d.ts +3 -0
  87. package/src/nameserver-history-viewer/components/timezone-selector/timezone-selector.service.d.ts +3 -0
  88. package/src/nameserver-history-viewer/index.d.ts +1 -0
  89. package/src/nameserver-history-viewer/nameserver-history.module.d.ts +17 -0
  90. package/src/nameserver-history-viewer/services/chart.service.d.ts +4 -1
  91. package/src/nameserver-history-viewer/services/file.service.d.ts +4 -0
  92. package/src/nameserver-history-viewer/services/ui.service.d.ts +5 -2
  93. package/src/nameserver-history-viewer/types/load-history-info-session-admission-control.types.d.ts +3 -0
  94. package/src/nameserver-history-viewer/utils/chartjs-downsample/lttb_data_mipmap.d.ts +1 -1
  95. package/src/nameserver-history-viewer/utils/file-util.d.ts +11 -0
  96. package/bundles/ngx-hana-nameserver-history-viewer.umd.js +0 -6298
  97. package/bundles/ngx-hana-nameserver-history-viewer.umd.js.map +0 -1
  98. package/bundles/ngx-hana-nameserver-history-viewer.umd.min.js +0 -2
  99. package/bundles/ngx-hana-nameserver-history-viewer.umd.min.js.map +0 -1
  100. package/esm2015/ngx-hana-nameserver-history-viewer.js +0 -10
  101. package/esm2015/public-api.js +0 -6
  102. package/esm2015/src/nameserver-history-viewer/components/alert/alert.component.js +0 -108
  103. package/esm2015/src/nameserver-history-viewer/components/alert/alert.module.js +0 -21
  104. package/esm2015/src/nameserver-history-viewer/components/alert/index.js +0 -7
  105. package/esm2015/src/nameserver-history-viewer/components/file-drop-input/file-drop-input.component.js +0 -141
  106. package/esm2015/src/nameserver-history-viewer/components/file-drop-input/index.js +0 -6
  107. package/esm2015/src/nameserver-history-viewer/components/index.js +0 -13
  108. package/esm2015/src/nameserver-history-viewer/components/instruction/index.js +0 -6
  109. package/esm2015/src/nameserver-history-viewer/components/instruction/instruction.component.js +0 -62
  110. package/esm2015/src/nameserver-history-viewer/components/nameserver-history.component.js +0 -742
  111. package/esm2015/src/nameserver-history-viewer/components/port-selector/index.js +0 -6
  112. package/esm2015/src/nameserver-history-viewer/components/port-selector/port-selector.component.js +0 -93
  113. package/esm2015/src/nameserver-history-viewer/components/port-selector/port-selector.service.js +0 -56
  114. package/esm2015/src/nameserver-history-viewer/components/progress-bar/index.js +0 -6
  115. package/esm2015/src/nameserver-history-viewer/components/progress-bar/progress-bar.component.js +0 -35
  116. package/esm2015/src/nameserver-history-viewer/components/time-range-selector/index.js +0 -6
  117. package/esm2015/src/nameserver-history-viewer/components/time-range-selector/time-range-selector.component.js +0 -68
  118. package/esm2015/src/nameserver-history-viewer/components/timezone-selector/index.js +0 -6
  119. package/esm2015/src/nameserver-history-viewer/components/timezone-selector/timezone-selector.component.js +0 -135
  120. package/esm2015/src/nameserver-history-viewer/components/timezone-selector/timezone-selector.service.js +0 -72
  121. package/esm2015/src/nameserver-history-viewer/index.js +0 -6
  122. package/esm2015/src/nameserver-history-viewer/nameserver-history.module.js +0 -42
  123. package/esm2015/src/nameserver-history-viewer/services/chart.service.js +0 -423
  124. package/esm2015/src/nameserver-history-viewer/services/file.service.js +0 -447
  125. package/esm2015/src/nameserver-history-viewer/services/index.js +0 -8
  126. package/esm2015/src/nameserver-history-viewer/services/ui.service.js +0 -817
  127. package/esm2015/src/nameserver-history-viewer/types/abort.types.js +0 -13
  128. package/esm2015/src/nameserver-history-viewer/types/alert.types.js +0 -13
  129. package/esm2015/src/nameserver-history-viewer/types/chart-content-data-item.types.js +0 -15
  130. package/esm2015/src/nameserver-history-viewer/types/chart-content-data.types.js +0 -9
  131. package/esm2015/src/nameserver-history-viewer/types/chart-content-header.types.js +0 -15
  132. package/esm2015/src/nameserver-history-viewer/types/chart-content-time.types.js +0 -9
  133. package/esm2015/src/nameserver-history-viewer/types/chart-content.types.js +0 -21
  134. package/esm2015/src/nameserver-history-viewer/types/color-rgba.types.js +0 -19
  135. package/esm2015/src/nameserver-history-viewer/types/html-element.type.js +0 -19
  136. package/esm2015/src/nameserver-history-viewer/types/index.js +0 -32
  137. package/esm2015/src/nameserver-history-viewer/types/item.types.js +0 -19
  138. package/esm2015/src/nameserver-history-viewer/types/legend-color.types.js +0 -9
  139. package/esm2015/src/nameserver-history-viewer/types/load-history-info-backup.types.js +0 -19
  140. package/esm2015/src/nameserver-history-viewer/types/load-history-info-columnstore.types.js +0 -19
  141. package/esm2015/src/nameserver-history-viewer/types/load-history-info-host.types.js +0 -35
  142. package/esm2015/src/nameserver-history-viewer/types/load-history-info-item.types.js +0 -31
  143. package/esm2015/src/nameserver-history-viewer/types/load-history-info-persistence.types.js +0 -27
  144. package/esm2015/src/nameserver-history-viewer/types/load-history-info-rowstore.types.js +0 -15
  145. package/esm2015/src/nameserver-history-viewer/types/load-history-info-server.types.js +0 -25
  146. package/esm2015/src/nameserver-history-viewer/types/load-history-info-session-admission-control.types.js +0 -19
  147. package/esm2015/src/nameserver-history-viewer/types/load-history-info-sql.types.js +0 -37
  148. package/esm2015/src/nameserver-history-viewer/types/load-history-info-sync-primitives.types.js +0 -15
  149. package/esm2015/src/nameserver-history-viewer/types/load-history-info-threads.types.js +0 -23
  150. package/esm2015/src/nameserver-history-viewer/types/load-history-info.types.js +0 -31
  151. package/esm2015/src/nameserver-history-viewer/types/port.types.js +0 -17
  152. package/esm2015/src/nameserver-history-viewer/types/scale-group.types.js +0 -35
  153. package/esm2015/src/nameserver-history-viewer/types/unit-category.types.js +0 -21
  154. package/esm2015/src/nameserver-history-viewer/types/unit.types.js +0 -19
  155. package/esm2015/src/nameserver-history-viewer/utils/chart-util.js +0 -38
  156. package/esm2015/src/nameserver-history-viewer/utils/chartjs-downsample/chartjs_ext.js +0 -100
  157. package/esm2015/src/nameserver-history-viewer/utils/chartjs-downsample/data_culling.js +0 -88
  158. package/esm2015/src/nameserver-history-viewer/utils/chartjs-downsample/data_mipmap.js +0 -213
  159. package/esm2015/src/nameserver-history-viewer/utils/chartjs-downsample/index.js +0 -46
  160. package/esm2015/src/nameserver-history-viewer/utils/chartjs-downsample/lttb_data_mipmap.js +0 -158
  161. package/esm2015/src/nameserver-history-viewer/utils/chartjs-downsample/responsive_downsample_plugin.js +0 -295
  162. package/esm2015/src/nameserver-history-viewer/utils/chartjs-downsample/utils.js +0 -130
  163. package/esm2015/src/nameserver-history-viewer/utils/chartjs-zoom/chart.zoom.js +0 -733
  164. package/esm2015/src/nameserver-history-viewer/utils/chartjs-zoom/index.js +0 -6
  165. package/esm2015/src/nameserver-history-viewer/utils/file-util.js +0 -149
  166. package/esm2015/src/nameserver-history-viewer/utils/index.js +0 -9
  167. package/esm2015/src/nameserver-history-viewer/utils/time-util.js +0 -135
  168. package/esm2015/src/nameserver-history-viewer/utils/ui-util.js +0 -203
  169. package/esm5/ngx-hana-nameserver-history-viewer.js +0 -10
  170. package/esm5/public-api.js +0 -6
  171. package/esm5/src/nameserver-history-viewer/components/alert/alert.component.js +0 -140
  172. package/esm5/src/nameserver-history-viewer/components/alert/alert.module.js +0 -25
  173. package/esm5/src/nameserver-history-viewer/components/alert/index.js +0 -7
  174. package/esm5/src/nameserver-history-viewer/components/file-drop-input/file-drop-input.component.js +0 -155
  175. package/esm5/src/nameserver-history-viewer/components/file-drop-input/index.js +0 -6
  176. package/esm5/src/nameserver-history-viewer/components/index.js +0 -13
  177. package/esm5/src/nameserver-history-viewer/components/instruction/index.js +0 -6
  178. package/esm5/src/nameserver-history-viewer/components/instruction/instruction.component.js +0 -67
  179. package/esm5/src/nameserver-history-viewer/components/nameserver-history.component.js +0 -990
  180. package/esm5/src/nameserver-history-viewer/components/port-selector/index.js +0 -6
  181. package/esm5/src/nameserver-history-viewer/components/port-selector/port-selector.component.js +0 -93
  182. package/esm5/src/nameserver-history-viewer/components/port-selector/port-selector.service.js +0 -81
  183. package/esm5/src/nameserver-history-viewer/components/progress-bar/index.js +0 -6
  184. package/esm5/src/nameserver-history-viewer/components/progress-bar/progress-bar.component.js +0 -26
  185. package/esm5/src/nameserver-history-viewer/components/time-range-selector/index.js +0 -6
  186. package/esm5/src/nameserver-history-viewer/components/time-range-selector/time-range-selector.component.js +0 -58
  187. package/esm5/src/nameserver-history-viewer/components/timezone-selector/index.js +0 -6
  188. package/esm5/src/nameserver-history-viewer/components/timezone-selector/timezone-selector.component.js +0 -164
  189. package/esm5/src/nameserver-history-viewer/components/timezone-selector/timezone-selector.service.js +0 -102
  190. package/esm5/src/nameserver-history-viewer/index.js +0 -6
  191. package/esm5/src/nameserver-history-viewer/nameserver-history.module.js +0 -46
  192. package/esm5/src/nameserver-history-viewer/services/chart.service.js +0 -578
  193. package/esm5/src/nameserver-history-viewer/services/file.service.js +0 -566
  194. package/esm5/src/nameserver-history-viewer/services/index.js +0 -8
  195. package/esm5/src/nameserver-history-viewer/services/ui.service.js +0 -1036
  196. package/esm5/src/nameserver-history-viewer/types/abort.types.js +0 -13
  197. package/esm5/src/nameserver-history-viewer/types/alert.types.js +0 -13
  198. package/esm5/src/nameserver-history-viewer/types/chart-content-data-item.types.js +0 -15
  199. package/esm5/src/nameserver-history-viewer/types/chart-content-data.types.js +0 -9
  200. package/esm5/src/nameserver-history-viewer/types/chart-content-header.types.js +0 -15
  201. package/esm5/src/nameserver-history-viewer/types/chart-content-time.types.js +0 -9
  202. package/esm5/src/nameserver-history-viewer/types/chart-content.types.js +0 -21
  203. package/esm5/src/nameserver-history-viewer/types/color-rgba.types.js +0 -19
  204. package/esm5/src/nameserver-history-viewer/types/html-element.type.js +0 -19
  205. package/esm5/src/nameserver-history-viewer/types/index.js +0 -32
  206. package/esm5/src/nameserver-history-viewer/types/item.types.js +0 -19
  207. package/esm5/src/nameserver-history-viewer/types/legend-color.types.js +0 -9
  208. package/esm5/src/nameserver-history-viewer/types/load-history-info-backup.types.js +0 -19
  209. package/esm5/src/nameserver-history-viewer/types/load-history-info-columnstore.types.js +0 -19
  210. package/esm5/src/nameserver-history-viewer/types/load-history-info-host.types.js +0 -35
  211. package/esm5/src/nameserver-history-viewer/types/load-history-info-item.types.js +0 -31
  212. package/esm5/src/nameserver-history-viewer/types/load-history-info-persistence.types.js +0 -27
  213. package/esm5/src/nameserver-history-viewer/types/load-history-info-rowstore.types.js +0 -15
  214. package/esm5/src/nameserver-history-viewer/types/load-history-info-server.types.js +0 -25
  215. package/esm5/src/nameserver-history-viewer/types/load-history-info-session-admission-control.types.js +0 -19
  216. package/esm5/src/nameserver-history-viewer/types/load-history-info-sql.types.js +0 -37
  217. package/esm5/src/nameserver-history-viewer/types/load-history-info-sync-primitives.types.js +0 -15
  218. package/esm5/src/nameserver-history-viewer/types/load-history-info-threads.types.js +0 -23
  219. package/esm5/src/nameserver-history-viewer/types/load-history-info.types.js +0 -31
  220. package/esm5/src/nameserver-history-viewer/types/port.types.js +0 -17
  221. package/esm5/src/nameserver-history-viewer/types/scale-group.types.js +0 -35
  222. package/esm5/src/nameserver-history-viewer/types/unit-category.types.js +0 -21
  223. package/esm5/src/nameserver-history-viewer/types/unit.types.js +0 -19
  224. package/esm5/src/nameserver-history-viewer/utils/chart-util.js +0 -39
  225. package/esm5/src/nameserver-history-viewer/utils/chartjs-downsample/chartjs_ext.js +0 -100
  226. package/esm5/src/nameserver-history-viewer/utils/chartjs-downsample/data_culling.js +0 -88
  227. package/esm5/src/nameserver-history-viewer/utils/chartjs-downsample/data_mipmap.js +0 -307
  228. package/esm5/src/nameserver-history-viewer/utils/chartjs-downsample/index.js +0 -46
  229. package/esm5/src/nameserver-history-viewer/utils/chartjs-downsample/lttb_data_mipmap.js +0 -232
  230. package/esm5/src/nameserver-history-viewer/utils/chartjs-downsample/responsive_downsample_plugin.js +0 -350
  231. package/esm5/src/nameserver-history-viewer/utils/chartjs-downsample/utils.js +0 -142
  232. package/esm5/src/nameserver-history-viewer/utils/chartjs-zoom/chart.zoom.js +0 -733
  233. package/esm5/src/nameserver-history-viewer/utils/chartjs-zoom/index.js +0 -6
  234. package/esm5/src/nameserver-history-viewer/utils/file-util.js +0 -150
  235. package/esm5/src/nameserver-history-viewer/utils/index.js +0 -9
  236. package/esm5/src/nameserver-history-viewer/utils/time-util.js +0 -135
  237. package/esm5/src/nameserver-history-viewer/utils/ui-util.js +0 -205
  238. package/fesm2015/ngx-hana-nameserver-history-viewer.js +0 -5223
  239. package/fesm2015/ngx-hana-nameserver-history-viewer.js.map +0 -1
  240. package/fesm5/ngx-hana-nameserver-history-viewer.js +0 -6295
  241. package/fesm5/ngx-hana-nameserver-history-viewer.js.map +0 -1
  242. package/ngx-hana-nameserver-history-viewer.metadata.json +0 -1
@@ -1,232 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- import * as tslib_1 from "tslib";
6
- import * as utils from './utils';
7
- import { DataMipmap } from './data_mipmap';
8
- /**
9
- * A mipmap data structure that uses Largest-Triangle-Three-Buckets algorithm to downsample data
10
- */
11
- var /**
12
- * A mipmap data structure that uses Largest-Triangle-Three-Buckets algorithm to downsample data
13
- */
14
- LTTBDataMipmap = /** @class */ (function (_super) {
15
- tslib_1.__extends(LTTBDataMipmap, _super);
16
- function LTTBDataMipmap() {
17
- return _super !== null && _super.apply(this, arguments) || this;
18
- }
19
- /**
20
- * @param {?} resolution
21
- * @return {?}
22
- */
23
- LTTBDataMipmap.prototype.getMipMapIndexForResolution = /**
24
- * @param {?} resolution
25
- * @return {?}
26
- */
27
- function (resolution) {
28
- if (utils.isNil(resolution)) {
29
- return 0;
30
- }
31
- /** @type {?} */
32
- var index = utils.findIndexInArray(this.resolutions, function (levelResolution) { return levelResolution >= resolution; });
33
- if (index === -1) {
34
- // use smallest mipmap as fallback
35
- index = this.resolutions.length - 1;
36
- }
37
- return index;
38
- };
39
- /**
40
- * @protected
41
- * @return {?}
42
- */
43
- LTTBDataMipmap.prototype.createMipMap = /**
44
- * @protected
45
- * @return {?}
46
- */
47
- function () {
48
- var _this = this;
49
- _super.prototype.createMipMap.call(this);
50
- this.resolutions = this.mipMaps.map(function (level) { return _this.computeAverageResolution(level); });
51
- };
52
- /**
53
- * This method is adapted from: https://github.com/sveinn-steinarsson/flot-downsample
54
- *
55
- * The MIT License
56
- * Copyright (c) 2013 by Sveinn Steinarsson
57
- * Permission is hereby granted, free of charge, to any person obtaining a copy
58
- * of this software and associated documentation files (the "Software"), to deal
59
- * in the Software without restriction, including without limitation the rights
60
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
61
- * copies of the Software, and to permit persons to whom the Software is
62
- * furnished to do so, subject to the following conditions:
63
- * The above copyright notice and this permission notice shall be included in
64
- * all copies or substantial portions of the Software.
65
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
66
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
67
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
68
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
69
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
70
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
71
- * THE SOFTWARE.
72
- */
73
- /**
74
- * This method is adapted from: https://github.com/sveinn-steinarsson/flot-downsample
75
- *
76
- * The MIT License
77
- * Copyright (c) 2013 by Sveinn Steinarsson
78
- * Permission is hereby granted, free of charge, to any person obtaining a copy
79
- * of this software and associated documentation files (the "Software"), to deal
80
- * in the Software without restriction, including without limitation the rights
81
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
82
- * copies of the Software, and to permit persons to whom the Software is
83
- * furnished to do so, subject to the following conditions:
84
- * The above copyright notice and this permission notice shall be included in
85
- * all copies or substantial portions of the Software.
86
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
87
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
88
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
89
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
90
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
91
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
92
- * THE SOFTWARE.
93
- * @protected
94
- * @param {?} data
95
- * @param {?} targetResolution
96
- * @param {?} targetLength
97
- * @return {?}
98
- */
99
- LTTBDataMipmap.prototype.downsampleToResolution = /**
100
- * This method is adapted from: https://github.com/sveinn-steinarsson/flot-downsample
101
- *
102
- * The MIT License
103
- * Copyright (c) 2013 by Sveinn Steinarsson
104
- * Permission is hereby granted, free of charge, to any person obtaining a copy
105
- * of this software and associated documentation files (the "Software"), to deal
106
- * in the Software without restriction, including without limitation the rights
107
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
108
- * copies of the Software, and to permit persons to whom the Software is
109
- * furnished to do so, subject to the following conditions:
110
- * The above copyright notice and this permission notice shall be included in
111
- * all copies or substantial portions of the Software.
112
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
113
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
114
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
115
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
116
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
117
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
118
- * THE SOFTWARE.
119
- * @protected
120
- * @param {?} data
121
- * @param {?} targetResolution
122
- * @param {?} targetLength
123
- * @return {?}
124
- */
125
- function (data, targetResolution, targetLength) {
126
- /** @type {?} */
127
- var dataLength = data.length;
128
- if (targetLength >= dataLength || targetLength === 0) {
129
- return data; // data has target size
130
- }
131
- /** @type {?} */
132
- var output = [];
133
- // bucket size, leave room for start and end data points
134
- /** @type {?} */
135
- var bucksetSize = (dataLength - 2) / (targetLength - 2);
136
- /** @type {?} */
137
- var a = 0;
138
- // initially a is the first point in the triangle
139
- /** @type {?} */
140
- var maxAreaPoint;
141
- /** @type {?} */
142
- var maxArea;
143
- /** @type {?} */
144
- var area;
145
- /** @type {?} */
146
- var nextA;
147
- // always add the first point
148
- output.push(data[a]);
149
- for (var i = 0; i < targetLength - 2; ++i) {
150
- // Calculate point average for next bucket (containing c)
151
- /** @type {?} */
152
- var avgX = 0;
153
- /** @type {?} */
154
- var avgY = 0;
155
- /** @type {?} */
156
- var avgRangeStart = Math.floor((i + 1) * bucksetSize) + 1;
157
- /** @type {?} */
158
- var avgRangeEnd = Math.floor((i + 2) * bucksetSize) + 1;
159
- avgRangeEnd = avgRangeEnd < dataLength ? avgRangeEnd : dataLength;
160
- /** @type {?} */
161
- var avgRangeLength = avgRangeEnd - avgRangeStart;
162
- for (; avgRangeStart < avgRangeEnd; avgRangeStart++) {
163
- avgX += this.getTime(data[avgRangeStart]);
164
- avgY += (/** @type {?} */ (data[avgRangeStart].y)) * 1;
165
- }
166
- avgX /= avgRangeLength;
167
- avgY /= avgRangeLength;
168
- // Get the range for this bucket
169
- /** @type {?} */
170
- var rangeOffs = Math.floor((i + 0) * bucksetSize) + 1;
171
- /** @type {?} */
172
- var rangeTo = Math.floor((i + 1) * bucksetSize) + 1;
173
- // Point a
174
- /** @type {?} */
175
- var pointA = data[a];
176
- /** @type {?} */
177
- var pointAX = this.getTime(pointA);
178
- /** @type {?} */
179
- var pointAY = (/** @type {?} */ (pointA.y)) * 1;
180
- maxArea = area = -1;
181
- for (; rangeOffs < rangeTo; rangeOffs++) {
182
- // Calculate triangle area over three buckets
183
- area = Math.abs((pointAX - avgX) * ((/** @type {?} */ (data[rangeOffs].y)) - pointAY) -
184
- (pointAX - this.getTime(data[rangeOffs])) * (avgY - pointAY)) * 0.5;
185
- if (area > maxArea) {
186
- maxArea = area;
187
- maxAreaPoint = data[rangeOffs];
188
- nextA = rangeOffs; // Next a is this b
189
- }
190
- }
191
- output.push(maxAreaPoint); // Pick this point from the bucket
192
- a = nextA; // This a is the next a (chosen b)
193
- }
194
- output.push(data[dataLength - 1]); // Always add last
195
- return output;
196
- };
197
- /**
198
- * @protected
199
- * @param {?} data
200
- * @return {?}
201
- */
202
- LTTBDataMipmap.prototype.computeAverageResolution = /**
203
- * @protected
204
- * @param {?} data
205
- * @return {?}
206
- */
207
- function (data) {
208
- /** @type {?} */
209
- var timeDistances = 0;
210
- for (var i = 0, end = this.originalData.length - 1; i < end; ++i) {
211
- /** @type {?} */
212
- var current = this.originalData[i];
213
- /** @type {?} */
214
- var next = this.originalData[i + 1];
215
- timeDistances += Math.abs(this.getTime(current) - this.getTime(next));
216
- }
217
- return timeDistances / (data.length - 1);
218
- };
219
- return LTTBDataMipmap;
220
- }(DataMipmap));
221
- /**
222
- * A mipmap data structure that uses Largest-Triangle-Three-Buckets algorithm to downsample data
223
- */
224
- export { LTTBDataMipmap };
225
- if (false) {
226
- /**
227
- * @type {?}
228
- * @protected
229
- */
230
- LTTBDataMipmap.prototype.resolutions;
231
- }
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHR0Yl9kYXRhX21pcG1hcC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1oYW5hLW5hbWVzZXJ2ZXItaGlzdG9yeS12aWV3ZXIvIiwic291cmNlcyI6WyJzcmMvbmFtZXNlcnZlci1oaXN0b3J5LXZpZXdlci91dGlscy9jaGFydGpzLWRvd25zYW1wbGUvbHR0Yl9kYXRhX21pcG1hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQXlCQSxPQUFPLEtBQUssS0FBSyxNQUFNLFNBQVMsQ0FBQztBQUNqQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBSzNDOzs7O0lBQW9DLDBDQUFVO0lBQTlDOztJQThIQSxDQUFDOzs7OztJQTNIRyxvREFBMkI7Ozs7SUFBM0IsVUFBNEIsVUFBa0I7UUFDMUMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQUUsT0FBTyxDQUFDLENBQUM7U0FBRTs7WUFFdEMsS0FBSyxHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFVBQUMsZUFBZSxJQUFLLE9BQUEsZUFBZSxJQUFJLFVBQVUsRUFBN0IsQ0FBNkIsQ0FBQztRQUN4RyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRTtZQUNkLGtDQUFrQztZQUNsQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1NBQ3ZDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQzs7Ozs7SUFFUyxxQ0FBWTs7OztJQUF0QjtRQUFBLGlCQUdDO1FBRkcsaUJBQU0sWUFBWSxXQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFDLEtBQUssSUFBSyxPQUFBLEtBQUksQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsRUFBcEMsQ0FBb0MsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFF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LHFDQUFnQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBwbHVnaW4gaXMgYWRhcHRlZCBmcm9tOiBodHRwczovL2dpdGh1Yi5jb20vM2RjbC9jaGFydGpzLXBsdWdpbi1yZXNwb25zaXZlLWRvd25zYW1wbGVcbiAqIGZvciBjb250cm9sbGluZyB0aGUgcmFkaXVzIG9mIHBvaW50LlxuICpcbiAqIE1JVCBMaWNlbnNlXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTggM0QgQ29udGVudCBMb2dpc3RpY3NcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cbmltcG9ydCB7IENoYXJ0UG9pbnQgfSBmcm9tICdjaGFydC5qcyc7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IERhdGFNaXBtYXAgfSBmcm9tICcuL2RhdGFfbWlwbWFwJztcblxuLyoqXG4gKiBBIG1pcG1hcCBkYXRhIHN0cnVjdHVyZSB0aGF0IHVzZXMgTGFyZ2VzdC1UcmlhbmdsZS1UaHJlZS1CdWNrZXRzIGFsZ29yaXRobSB0byBkb3duc2FtcGxlIGRhdGFcbiAqL1xuZXhwb3J0IGNsYXNzIExUVEJEYXRhTWlwbWFwIGV4dGVuZHMgRGF0YU1pcG1hcCB7XG4gICAgcHJvdGVjdGVkIHJlc29sdXRpb25zOiBudW1iZXJbXTtcblxuICAgIGdldE1pcE1hcEluZGV4Rm9yUmVzb2x1dGlvbihyZXNvbHV0aW9uOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBpZiAodXRpbHMuaXNOaWwocmVzb2x1dGlvbikpIHsgcmV0dXJuIDA7IH1cblxuICAgICAgICBsZXQgaW5kZXggPSB1dGlscy5maW5kSW5kZXhJbkFycmF5KHRoaXMucmVzb2x1dGlvbnMsIChsZXZlbFJlc29sdXRpb24pID0+IGxldmVsUmVzb2x1dGlvbiA+PSByZXNvbHV0aW9uKTtcbiAgICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgLy8gdXNlIHNtYWxsZXN0IG1pcG1hcCBhcyBmYWxsYmFja1xuICAgICAgICAgICAgaW5kZXggPSB0aGlzLnJlc29sdXRpb25zLmxlbmd0aCAtIDE7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZU1pcE1hcCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuY3JlYXRlTWlwTWFwKCk7XG4gICAgICAgIHRoaXMucmVzb2x1dGlvbnMgPSB0aGlzLm1pcE1hcHMubWFwKChsZXZlbCkgPT4gdGhpcy5jb21wdXRlQXZlcmFnZVJlc29sdXRpb24obGV2ZWwpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBhZGFwdGVkIGZyb206IGh0dHBzOi8vZ2l0aHViLmNvbS9zdmVpbm4tc3RlaW5hcnNzb24vZmxvdC1kb3duc2FtcGxlXG4gICAgICpcbiAgICAgKiBUaGUgTUlUIExpY2Vuc2VcbiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMTMgYnkgU3ZlaW5uIFN0ZWluYXJzc29uXG4gICAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICAgICAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAgICAgKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gICAgICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICAgICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICAgICAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gICAgICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbiAgICAgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAgICAgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gICAgICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gICAgICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gICAgICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICAgICAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gICAgICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuICAgICAqIFRIRSBTT0ZUV0FSRS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZG93bnNhbXBsZVRvUmVzb2x1dGlvbihcbiAgICAgICAgZGF0YTogQ2hhcnRQb2ludFtdLFxuICAgICAgICB0YXJnZXRSZXNvbHV0aW9uOiBudW1iZXIsXG4gICAgICAgIHRhcmdldExlbmd0aDogbnVtYmVyXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGRhdGFMZW5ndGggPSBkYXRhLmxlbmd0aDtcbiAgICAgICAgaWYgKHRhcmdldExlbmd0aCA+PSBkYXRhTGVuZ3RoIHx8IHRhcmdldExlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7IC8vIGRhdGEgaGFzIHRhcmdldCBzaXplXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvdXRwdXQ6IENoYXJ0UG9pbnRbXSA9IFtdO1xuXG4gICAgICAgIC8vIGJ1Y2tldCBzaXplLCBsZWF2ZSByb29tIGZvciBzdGFydCBhbmQgZW5kIGRhdGEgcG9pbnRzXG4gICAgICAgIGNvbnN0IGJ1Y2tzZXRTaXplID0gKGRhdGFMZW5ndGggLSAyKSAvICh0YXJnZXRMZW5ndGggLSAyKTtcblxuICAgICAgICBsZXQgYSA9IDA7ICAvLyBpbml0aWFsbHkgYSBpcyB0aGUgZmlyc3QgcG9pbnQgaW4gdGhlIHRyaWFuZ2xlXG4gICAgICAgIGxldCBtYXhBcmVhUG9pbnQ6IENoYXJ0UG9pbnQ7XG4gICAgICAgIGxldCBtYXhBcmVhOiBudW1iZXI7XG4gICAgICAgIGxldCBhcmVhOiBudW1iZXI7XG4gICAgICAgIGxldCBuZXh0QTogbnVtYmVyO1xuXG4gICAgICAgIC8vIGFsd2F5cyBhZGQgdGhlIGZpcnN0IHBvaW50XG4gICAgICAgIG91dHB1dC5wdXNoKGRhdGFbYV0pO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFyZ2V0TGVuZ3RoIC0gMjsgKytpKSB7XG4gICAgICAgICAgICAvLyBDYWxjdWxhdGUgcG9pbnQgYXZlcmFnZSBmb3IgbmV4dCBidWNrZXQgKGNvbnRhaW5pbmcgYylcbiAgICAgICAgICAgIGxldCBhdmdYID0gMDtcbiAgICAgICAgICAgIGxldCBhdmdZID0gMDtcbiAgICAgICAgICAgIGxldCBhdmdSYW5nZVN0YXJ0ID0gTWF0aC5mbG9vcigoaSArIDEpICogYnVja3NldFNpemUpICsgMTtcbiAgICAgICAgICAgIGxldCBhdmdSYW5nZUVuZCA9IE1hdGguZmxvb3IoKGkgKyAyKSAqIGJ1Y2tzZXRTaXplKSArIDE7XG4gICAgICAgICAgICBhdmdSYW5nZUVuZCA9IGF2Z1JhbmdlRW5kIDwgZGF0YUxlbmd0aCA/IGF2Z1JhbmdlRW5kIDogZGF0YUxlbmd0aDtcblxuICAgICAgICAgICAgY29uc3QgYXZnUmFuZ2VMZW5ndGggPSBhdmdSYW5nZUVuZCAtIGF2Z1JhbmdlU3RhcnQ7XG5cbiAgICAgICAgICAgIGZvciAoOyBhdmdSYW5nZVN0YXJ0IDwgYXZnUmFuZ2VFbmQ7IGF2Z1JhbmdlU3RhcnQrKykge1xuICAgICAgICAgICAgICAgIGF2Z1ggKz0gdGhpcy5nZXRUaW1lKGRhdGFbYXZnUmFuZ2VTdGFydF0pO1xuICAgICAgICAgICAgICAgIGF2Z1kgKz0gZGF0YVthdmdSYW5nZVN0YXJ0XS55IGFzIG51bWJlciAqIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhdmdYIC89IGF2Z1JhbmdlTGVuZ3RoO1xuICAgICAgICAgICAgYXZnWSAvPSBhdmdSYW5nZUxlbmd0aDtcblxuICAgICAgICAgICAgLy8gR2V0IHRoZSByYW5nZSBmb3IgdGhpcyBidWNrZXRcbiAgICAgICAgICAgIGxldCByYW5nZU9mZnMgPSBNYXRoLmZsb29yKChpICsgMCkgKiBidWNrc2V0U2l6ZSkgKyAxO1xuICAgICAgICAgICAgY29uc3QgcmFuZ2VUbyA9IE1hdGguZmxvb3IoKGkgKyAxKSAqIGJ1Y2tzZXRTaXplKSArIDE7XG5cbiAgICAgICAgICAgIC8vIFBvaW50IGFcbiAgICAgICAgICAgIGNvbnN0IHBvaW50QSA9IGRhdGFbYV07XG4gICAgICAgICAgICBjb25zdCBwb2ludEFYID0gdGhpcy5nZXRUaW1lKHBvaW50QSk7XG4gICAgICAgICAgICBjb25zdCBwb2ludEFZID0gcG9pbnRBLnkgYXMgbnVtYmVyICogMTtcblxuICAgICAgICAgICAgbWF4QXJlYSA9IGFyZWEgPSAtMTtcblxuICAgICAgICAgICAgZm9yICg7IHJhbmdlT2ZmcyA8IHJhbmdlVG87IHJhbmdlT2ZmcysrKSB7XG4gICAgICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRyaWFuZ2xlIGFyZWEgb3ZlciB0aHJlZSBidWNrZXRzXG4gICAgICAgICAgICAgICAgYXJlYSA9IE1hdGguYWJzKChwb2ludEFYIC0gYXZnWCkgKiAoZGF0YVtyYW5nZU9mZnNdLnkgYXMgbnVtYmVyIC0gcG9pbnRBWSkgLVxuICAgICAgICAgICAgICAgICAgICAocG9pbnRBWCAtIHRoaXMuZ2V0VGltZShkYXRhW3JhbmdlT2Zmc10pKSAqIChhdmdZIC0gcG9pbnRBWSlcbiAgICAgICAgICAgICAgICApICogMC41O1xuXG4gICAgICAgICAgICAgICAgaWYgKGFyZWEgPiBtYXhBcmVhKSB7XG4gICAgICAgICAgICAgICAgICAgIG1heEFyZWEgPSBhcmVhO1xuICAgICAgICAgICAgICAgICAgICBtYXhBcmVhUG9pbnQgPSBkYXRhW3JhbmdlT2Zmc107XG4gICAgICAgICAgICAgICAgICAgIG5leHRBID0gcmFuZ2VPZmZzOyAvLyBOZXh0IGEgaXMgdGhpcyBiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBvdXRwdXQucHVzaChtYXhBcmVhUG9pbnQpOyAvLyBQaWNrIHRoaXMgcG9pbnQgZnJvbSB0aGUgYnVja2V0XG4gICAgICAgICAgICBhID0gbmV4dEE7IC8vIFRoaXMgYSBpcyB0aGUgbmV4dCBhIChjaG9zZW4gYilcbiAgICAgICAgfVxuXG4gICAgICAgIG91dHB1dC5wdXNoKGRhdGFbZGF0YUxlbmd0aCAtIDFdKTsgLy8gQWx3YXlzIGFkZCBsYXN0XG5cbiAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY29tcHV0ZUF2ZXJhZ2VSZXNvbHV0aW9uKGRhdGE6IENoYXJ0UG9pbnRbXSk6IG51bWJlciB7XG4gICAgICAgIGxldCB0aW1lRGlzdGFuY2VzID0gMDtcblxuICAgICAgICBmb3IgKGxldCBpID0gMCwgZW5kID0gdGhpcy5vcmlnaW5hbERhdGEubGVuZ3RoIC0gMTsgaSA8IGVuZDsgKytpKSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5vcmlnaW5hbERhdGFbaV07XG4gICAgICAgICAgICBjb25zdCBuZXh0ID0gdGhpcy5vcmlnaW5hbERhdGFbaSArIDFdO1xuXG4gICAgICAgICAgICB0aW1lRGlzdGFuY2VzICs9IE1hdGguYWJzKHRoaXMuZ2V0VGltZShjdXJyZW50KSAtIHRoaXMuZ2V0VGltZShuZXh0KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRpbWVEaXN0YW5jZXMgLyAoZGF0YS5sZW5ndGggLSAxKTtcbiAgICB9XG59XG4iXX0=
@@ -1,350 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- /**
6
- * This plugin is adapted from: https://github.com/3dcl/chartjs-plugin-responsive-downsample
7
- * for controlling the radius of point.
8
- *
9
- * MIT License
10
- * Copyright (c) 2018 3D Content Logistics
11
- *
12
- * Permission is hereby granted, free of charge, to any person obtaining a copy
13
- * of this software and associated documentation files (the "Software"), to deal
14
- * in the Software without restriction, including without limitation the rights
15
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
16
- * copies of the Software, and to permit persons to whom the Software is
17
- * furnished to do so, subject to the following conditions:
18
- * The above copyright notice and this permission notice shall be included in all
19
- * copies or substantial portions of the Software.
20
- *
21
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27
- * SOFTWARE.
28
- */
29
- import * as moment_module from 'moment';
30
- /** @type {?} */
31
- var moment = (window && ((/** @type {?} */ (window))).moment) ? ((/** @type {?} */ (window))).moment : moment_module;
32
- import * as utils from './utils';
33
- import { DataMipmap } from './data_mipmap';
34
- import { LTTBDataMipmap } from './lttb_data_mipmap';
35
- import * as data_culling from './data_culling';
36
- /**
37
- * @record
38
- */
39
- function MipMapDataSets() { }
40
- if (false) {
41
- /** @type {?|undefined} */
42
- MipMapDataSets.prototype.originalData;
43
- /** @type {?|undefined} */
44
- MipMapDataSets.prototype.currentMipMapLevel;
45
- /** @type {?|undefined} */
46
- MipMapDataSets.prototype.mipMap;
47
- }
48
- /**
49
- * @record
50
- */
51
- export function ResponsiveDownsamplePluginOptions() { }
52
- if (false) {
53
- /**
54
- * Enable/disable plugin
55
- * @type {?|undefined}
56
- */
57
- ResponsiveDownsamplePluginOptions.prototype.enabled;
58
- /**
59
- * The aggregation algorithm to thin out data. Default: LTTB
60
- * @type {?|undefined}
61
- */
62
- ResponsiveDownsamplePluginOptions.prototype.aggregationAlgorithm;
63
- /**
64
- * Desired minimal distance between data points in pixels. Default: 1 pixel
65
- * @type {?|undefined}
66
- */
67
- ResponsiveDownsamplePluginOptions.prototype.desiredDataPointDistance;
68
- /**
69
- * Minimal number of data points. Limits
70
- * @type {?|undefined}
71
- */
72
- ResponsiveDownsamplePluginOptions.prototype.minNumPoints;
73
- /**
74
- * Cull data to displayed range of x scale
75
- * @type {?|undefined}
76
- */
77
- ResponsiveDownsamplePluginOptions.prototype.cullData;
78
- /**
79
- * Flag is set by plugin to trigger reload of data
80
- * @type {?|undefined}
81
- */
82
- ResponsiveDownsamplePluginOptions.prototype.needsUpdate;
83
- /**
84
- * Current target resolution(Set by plugin)
85
- * @type {?|undefined}
86
- */
87
- ResponsiveDownsamplePluginOptions.prototype.targetResolution;
88
- /**
89
- * Scale range of x axis
90
- * @type {?|undefined}
91
- */
92
- ResponsiveDownsamplePluginOptions.prototype.scaleRange;
93
- /**
94
- * Draw points only if the points number less than the limitation
95
- * @type {?|undefined}
96
- */
97
- ResponsiveDownsamplePluginOptions.prototype.maxNumPointsToDraw;
98
- }
99
- // Using dynamic flag to fix the issue of ng-packagr #696: Lambda not supported
100
- // @dynamic
101
- /**
102
- * Chart js Plugin for downsampling data
103
- */
104
- var
105
- // Using dynamic flag to fix the issue of ng-packagr #696: Lambda not supported
106
- // @dynamic
107
- /**
108
- * Chart js Plugin for downsampling data
109
- */
110
- ResponsiveDownsamplePlugin = /** @class */ (function () {
111
- function ResponsiveDownsamplePlugin() {
112
- }
113
- /**
114
- * @param {?} chart
115
- * @return {?}
116
- */
117
- ResponsiveDownsamplePlugin.getPluginOptions = /**
118
- * @param {?} chart
119
- * @return {?}
120
- */
121
- function (chart) {
122
- /** @type {?} */
123
- var options = chart.options.responsiveDownsample || {};
124
- utils.defaultsDeep(options, {
125
- enabled: false,
126
- aggregationAlgorithm: 'LTTB',
127
- desiredDataPointDistance: 1,
128
- minNumPoints: 100,
129
- maxNumPointsToDraw: 100,
130
- cullData: true
131
- });
132
- if (options.enabled) {
133
- chart.options.responsiveDownsample = options;
134
- }
135
- return options;
136
- };
137
- /**
138
- * @param {?} chart
139
- * @return {?}
140
- */
141
- ResponsiveDownsamplePlugin.hasDataChanged = /**
142
- * @param {?} chart
143
- * @return {?}
144
- */
145
- function (chart) {
146
- return !utils.isNil(utils.findInArray((/** @type {?} */ (chart.data.datasets)), function (dataset) {
147
- return utils.isNil(dataset.mipMap);
148
- }));
149
- };
150
- /**
151
- * @param {?} chart
152
- * @param {?} options
153
- * @return {?}
154
- */
155
- ResponsiveDownsamplePlugin.createDataMipMap = /**
156
- * @param {?} chart
157
- * @param {?} options
158
- * @return {?}
159
- */
160
- function (chart, options) {
161
- chart.data.datasets.forEach(function (dataset) {
162
- // @ts-ignore
163
- /** @type {?} */
164
- var data = !utils.isNil(dataset.originalData) ? dataset.originalData : (/** @type {?} */ (dataset.data));
165
- /** @type {?} */
166
- var mipMap = (options.aggregationAlgorithm === 'LTTB')
167
- ? new LTTBDataMipmap(data, options.minNumPoints)
168
- : new DataMipmap(data, options.minNumPoints);
169
- dataset.originalData = data;
170
- dataset.mipMap = mipMap;
171
- // @ts-ignore
172
- dataset.data = mipMap.getMipMapLevel(mipMap.getNumLevel() - 1); // set last level for first render pass
173
- });
174
- };
175
- /**
176
- * @param {?} chart
177
- * @return {?}
178
- */
179
- ResponsiveDownsamplePlugin.restoreOriginalData = /**
180
- * @param {?} chart
181
- * @return {?}
182
- */
183
- function (chart) {
184
- /** @type {?} */
185
- var updated = false;
186
- chart.data.datasets.forEach(function (dataset) {
187
- // @ts-ignore
188
- if (!utils.isNil(dataset.originalData) && dataset.data !== dataset.originalData) {
189
- // @ts-ignore
190
- dataset.data = dataset.originalData;
191
- updated = true;
192
- }
193
- });
194
- return updated;
195
- };
196
- /**
197
- * @param {?} chart
198
- * @param {?} options
199
- * @return {?}
200
- */
201
- ResponsiveDownsamplePlugin.getTargetResolution = /**
202
- * @param {?} chart
203
- * @param {?} options
204
- * @return {?}
205
- */
206
- function (chart, options) {
207
- /** @type {?} */
208
- var xScale = ((/** @type {?} */ (chart))).scales['x-axis-0'];
209
- if (utils.isNil(xScale)) {
210
- return null;
211
- }
212
- /** @type {?} */
213
- var start = moment((/** @type {?} */ (xScale.getValueForPixel(xScale.left))));
214
- /** @type {?} */
215
- var end = moment((/** @type {?} */ (xScale.getValueForPixel(xScale.left + 1))));
216
- /** @type {?} */
217
- var targetResolution = end.diff(start);
218
- return targetResolution * options.desiredDataPointDistance;
219
- };
220
- /**
221
- * @param {?} chart
222
- * @param {?} options
223
- * @param {?} rangeChanged
224
- * @return {?}
225
- */
226
- ResponsiveDownsamplePlugin.updateMipMap = /**
227
- * @param {?} chart
228
- * @param {?} options
229
- * @param {?} rangeChanged
230
- * @return {?}
231
- */
232
- function (chart, options, rangeChanged) {
233
- /** @type {?} */
234
- var updated = false;
235
- chart.data.datasets.forEach(function (dataset) {
236
- /** @type {?} */
237
- var mipMap = dataset.mipMap;
238
- if (utils.isNil(mipMap)) {
239
- return;
240
- }
241
- /** @type {?} */
242
- var mipMalLevel = mipMap.getMipMapIndexForResolution(options.targetResolution);
243
- if (mipMalLevel === dataset.currentMipMapLevel && !rangeChanged) {
244
- // skip update if mip map level and data range did not change
245
- return;
246
- }
247
- updated = true;
248
- dataset.currentMipMapLevel = mipMalLevel;
249
- /** @type {?} */
250
- var newData = mipMap.getMipMapLevel(mipMalLevel);
251
- if (options.cullData) {
252
- newData = data_culling.cullData(newData, options.scaleRange);
253
- }
254
- // @ts-ignore
255
- dataset.data = newData;
256
- });
257
- return updated;
258
- };
259
- /**
260
- * @param {?} chart
261
- * @return {?}
262
- */
263
- ResponsiveDownsamplePlugin.prototype.beforeInit = /**
264
- * @param {?} chart
265
- * @return {?}
266
- */
267
- function (chart) {
268
- /** @type {?} */
269
- var options = ResponsiveDownsamplePlugin.getPluginOptions(chart);
270
- if (!options.enabled) {
271
- return;
272
- }
273
- ResponsiveDownsamplePlugin.createDataMipMap(chart, options);
274
- options.needsUpdate = true;
275
- };
276
- /**
277
- * @param {?} chart
278
- * @return {?}
279
- */
280
- ResponsiveDownsamplePlugin.prototype.beforeDatasetsUpdate = /**
281
- * @param {?} chart
282
- * @return {?}
283
- */
284
- function (chart) {
285
- /** @type {?} */
286
- var options = ResponsiveDownsamplePlugin.getPluginOptions(chart);
287
- if (!options.enabled) {
288
- // restore original data and remove state from options
289
- options.needsUpdate = ResponsiveDownsamplePlugin.restoreOriginalData(chart);
290
- delete options.targetResolution;
291
- delete options.scaleRange;
292
- return;
293
- }
294
- // only update mip map if data set was reloaded externally
295
- if (ResponsiveDownsamplePlugin.hasDataChanged(chart)) {
296
- ResponsiveDownsamplePlugin.createDataMipMap(chart, options);
297
- options.needsUpdate = true;
298
- }
299
- };
300
- /**
301
- * @param {?} chart
302
- * @return {?}
303
- */
304
- ResponsiveDownsamplePlugin.prototype.beforeRender = /**
305
- * @param {?} chart
306
- * @return {?}
307
- */
308
- function (chart) {
309
- /** @type {?} */
310
- var options = ResponsiveDownsamplePlugin.getPluginOptions(chart);
311
- if (!options.enabled) {
312
- // update chart if data was restored from original data
313
- if (options.needsUpdate) {
314
- options.needsUpdate = false;
315
- chart.update(0);
316
- return false;
317
- }
318
- return;
319
- }
320
- /** @type {?} */
321
- var targetResolution = ResponsiveDownsamplePlugin.getTargetResolution(chart, options);
322
- /** @type {?} */
323
- var xScale = ((/** @type {?} */ (chart))).scales['x-axis-0'];
324
- /** @type {?} */
325
- var scaleRange = data_culling.getScaleRange(xScale);
326
- /** @type {?} */
327
- var rangeChanged = !data_culling.rangeIsEqual(options.scaleRange, scaleRange);
328
- if (options.needsUpdate ||
329
- options.targetResolution !== targetResolution ||
330
- rangeChanged) {
331
- options.targetResolution = targetResolution;
332
- options.scaleRange = scaleRange;
333
- options.needsUpdate = false;
334
- if (ResponsiveDownsamplePlugin.updateMipMap(chart, options, rangeChanged)) {
335
- utils.changePointRadius(chart, options);
336
- // update chart and cancel current render
337
- chart.update(0);
338
- return false;
339
- }
340
- }
341
- };
342
- return ResponsiveDownsamplePlugin;
343
- }());
344
- // Using dynamic flag to fix the issue of ng-packagr #696: Lambda not supported
345
- // @dynamic
346
- /**
347
- * Chart js Plugin for downsampling data
348
- */
349
- export { ResponsiveDownsamplePlugin };
350
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2l2ZV9kb3duc2FtcGxlX3BsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1oYW5hLW5hbWVzZXJ2ZXItaGlzdG9yeS12aWV3ZXIvIiwic291cmNlcyI6WyJzcmMvbmFtZXNlcnZlci1oaXN0b3J5LXZpZXdlci91dGlscy9jaGFydGpzLWRvd25zYW1wbGUvcmVzcG9uc2l2ZV9kb3duc2FtcGxlX3BsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0JBLE9BQU8sS0FBSyxhQUFhLE1BQU0sUUFBUSxDQUFDOztJQUNsQyxNQUFNLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxtQkFBQSxNQUFNLEVBQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFBLE1BQU0sRUFBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxhQUFhO0FBRzFGLE9BQU8sS0FBSyxLQUFLLE1BQU0sU0FBUyxDQUFDO0FBRWpDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sS0FBSyxZQUFZLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFFL0MsNkJBSUM7OztJQUhDLHNDQUE0Qjs7SUFDNUIsNENBQTRCOztJQUM1QixnQ0FBb0I7Ozs7O0FBR3RCLHVEQXFDQzs7Ozs7O0lBakNDLG9EQUFrQjs7Ozs7SUFJbEIsaUVBQXNDOzs7OztJQUl0QyxxRUFBa0M7Ozs7O0lBSWxDLHlEQUFzQjs7Ozs7SUFJdEIscURBQW1COzs7OztJQUluQix3REFBc0I7Ozs7O0lBSXRCLDZEQUEwQjs7Ozs7SUFJMUIsdURBQWdDOzs7OztJQUloQywrREFBNEI7Ozs7Ozs7QUFROUI7Ozs7Ozs7SUFBQTtJQW9LQSxDQUFDOzs7OztJQW5LUSwyQ0FBZ0I7Ozs7SUFBdkIsVUFBd0IsS0FBVTs7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V0FBVyxFQUFFO2dCQUN2QixPQUFPLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztnQkFDNUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFaEIsT0FBTyxLQUFLLENBQUM7YUFDZDtZQUNELE9BQU87U0FDUjs7WUFFSyxnQkFBZ0IsR0FBRywwQkFBMEIsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDOztZQUNqRixNQUFNLEdBQWMsQ0FBQyxtQkFBQSxLQUFLLEVBQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7O1lBQ3JELFVBQVUsR0FBRyxZQUFZLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQzs7WUFDL0MsWUFBWSxHQUFHLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQztRQUUvRSxJQUFJLE9BQU8sQ0FBQyxXQUFXO1lBQ3JCLE9BQU8sQ0FBQyxnQkFBZ0IsS0FBSyxnQkFBZ0I7WUFDN0MsWUFBWSxFQUNaO1lBQ0EsT0FBTyxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO1lBQzVDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1lBQ2hDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBRTVCLElBQUksMEJBQTBCLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDLEVBQUU7Z0JBQ3pFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQ3hDLHlDQUF5QztnQkFDekMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFaEIsT0FBTyxLQUFLLENBQUM7YUFDZDtTQUNGO0lBQ0gsQ0FBQztJQUNILGlDQUFDO0FBQUQsQ0FBQyxBQXBLRCxJQW9LQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBwbHVnaW4gaXMgYWRhcHRlZCBmcm9tOiBodHRwczovL2dpdGh1Yi5jb20vM2RjbC9jaGFydGpzLXBsdWdpbi1yZXNwb25zaXZlLWRvd25zYW1wbGVcbiAqIGZvciBjb250cm9sbGluZyB0aGUgcmFkaXVzIG9mIHBvaW50LlxuICpcbiAqIE1JVCBMaWNlbnNlXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTggM0QgQ29udGVudCBMb2dpc3RpY3NcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cbmltcG9ydCAqIGFzIG1vbWVudF9tb2R1bGUgZnJvbSAnbW9tZW50JztcbmNvbnN0IG1vbWVudCA9ICh3aW5kb3cgJiYgKHdpbmRvdyBhcyBhbnkpLm1vbWVudCkgPyAod2luZG93IGFzIGFueSkubW9tZW50IDogbW9tZW50X21vZHVsZTtcbmltcG9ydCB7IENoYXJ0LCBDaGFydERhdGEsIENoYXJ0RGF0YVNldHMsIENoYXJ0UG9pbnQgfSBmcm9tICdjaGFydC5qcyc7XG5pbXBvcnQgeyBJQ2hhcnRQbHVnaW4sIFRpbWVTY2FsZSB9IGZyb20gJy4vY2hhcnRqc19leHQnO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmltcG9ydCB7IERhdGFNaXBtYXAgfSBmcm9tICcuL2RhdGFfbWlwbWFwJztcbmltcG9ydCB7IExUVEJEYXRhTWlwbWFwIH0gZnJvbSAnLi9sdHRiX2RhdGFfbWlwbWFwJztcbmltcG9ydCAqIGFzIGRhdGFfY3VsbGluZyBmcm9tICcuL2RhdGFfY3VsbGluZyc7XG5cbmludGVyZmFjZSBNaXBNYXBEYXRhU2V0cyBleHRlbmRzIENoYXJ0RGF0YVNldHMge1xuICBvcmlnaW5hbERhdGE/OiBDaGFydFBvaW50W107XG4gIGN1cnJlbnRNaXBNYXBMZXZlbD86IG51bWJlcjtcbiAgbWlwTWFwPzogRGF0YU1pcG1hcDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNwb25zaXZlRG93bnNhbXBsZVBsdWdpbk9wdGlvbnMge1xuICAvKipcbiAgICogRW5hYmxlL2Rpc2FibGUgcGx1Z2luXG4gICAqL1xuICBlbmFibGVkPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBhZ2dyZWdhdGlvbiBhbGdvcml0aG0gdG8gdGhpbiBvdXQgZGF0YS4gRGVmYXVsdDogTFRUQlxuICAgKi9cbiAgYWdncmVnYXRpb25BbGdvcml0aG0/OiAnQVZHJyB8ICdMVFRCJztcbiAgLyoqXG4gICAqIERlc2lyZWQgbWluaW1hbCBkaXN0YW5jZSBiZXR3ZWVuIGRhdGEgcG9pbnRzIGluIHBpeGVscy4gRGVmYXVsdDogMSBwaXhlbFxuICAgKi9cbiAgZGVzaXJlZERhdGFQb2ludERpc3RhbmNlPzogbnVtYmVyO1xuICAvKipcbiAgICogTWluaW1hbCBudW1iZXIgb2YgZGF0YSBwb2ludHMuIExpbWl0c1xuICAgKi9cbiAgbWluTnVtUG9pbnRzPzogbnVtYmVyO1xuICAvKipcbiAgICogQ3VsbCBkYXRhIHRvIGRpc3BsYXllZCByYW5nZSBvZiB4IHNjYWxlXG4gICAqL1xuICBjdWxsRGF0YT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBGbGFnIGlzIHNldCBieSBwbHVnaW4gdG8gdHJpZ2dlciByZWxvYWQgb2YgZGF0YVxuICAgKi9cbiAgbmVlZHNVcGRhdGU/OiBib29sZWFuO1xuICAvKipcbiAgICogQ3VycmVudCB0YXJnZXQgcmVzb2x1dGlvbihTZXQgYnkgcGx1Z2luKVxuICAgKi9cbiAgdGFyZ2V0UmVzb2x1dGlvbj86IG51bWJlcjtcbiAgLyoqXG4gICAqIFNjYWxlIHJhbmdlIG9mIHggYXhpc1xuICAgKi9cbiAgc2NhbGVSYW5nZT86IGRhdGFfY3VsbGluZy5SYW5nZTtcbiAgLyoqXG4gICAqIERyYXcgcG9pbnRzIG9ubHkgaWYgdGhlIHBvaW50cyBudW1iZXIgbGVzcyB0aGFuIHRoZSBsaW1pdGF0aW9uXG4gICAqL1xuICBtYXhOdW1Qb2ludHNUb0RyYXc/OiBudW1iZXI7XG59XG5cbi8vIFVzaW5nIGR5bmFtaWMgZmxhZyB0byBmaXggdGhlIGlzc3VlIG9mIG5nLXBhY2thZ3IgIzY5NjogTGFtYmRhIG5vdCBzdXBwb3J0ZWRcbi8vIEBkeW5hbWljXG4vKipcbiAqIENoYXJ0IGpzIFBsdWdpbiBmb3IgZG93bnNhbXBsaW5nIGRhdGFcbiAqL1xuZXhwb3J0IGNsYXNzIFJlc3BvbnNpdmVEb3duc2FtcGxlUGx1Z2luIGltcGxlbWVudHMgSUNoYXJ0UGx1Z2luIHtcbiAgc3RhdGljIGdldFBsdWdpbk9wdGlvbnMoY2hhcnQ6IGFueSk6IFJlc3BvbnNpdmVEb3duc2FtcGxlUGx1Z2luT3B0aW9ucyB7XG4gICAgY29uc3Qgb3B0aW9uczogUmVzcG9uc2l2ZURvd25zYW1wbGVQbHVnaW5PcHRpb25zID0gY2hhcnQub3B0aW9ucy5yZXNwb25zaXZlRG93bnNhbXBsZSB8fCB7fTtcbiAgICB1dGlscy5kZWZhdWx0c0RlZXAob3B0aW9ucywge1xuICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICBhZ2dyZWdhdGlvbkFsZ29yaXRobTogJ0xUVEInLFxuICAgICAgZGVzaXJlZERhdGFQb2ludERpc3RhbmNlOiAxLFxuICAgICAgbWluTnVtUG9pbnRzOiAxMDAsXG4gICAgICBtYXhOdW1Qb2ludHNUb0RyYXc6IDEwMCxcbiAgICAgIGN1bGxEYXRhOiB0cnVlXG4gICAgfSk7XG5cbiAgICBpZiAob3B0aW9ucy5lbmFibGVkKSB7XG4gICAgICBjaGFydC5vcHRpb25zLnJlc3BvbnNpdmVEb3duc2FtcGxlID0gb3B0aW9ucztcbiAgICB9XG5cbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxuXG4gIHN0YXRpYyBoYXNEYXRhQ2hhbmdlZChjaGFydDogQ2hhcnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXV0aWxzLmlzTmlsKFxuICAgICAgdXRpbHMuZmluZEluQXJyYXkoXG4gICAgICAgIGNoYXJ0LmRhdGEuZGF0YXNldHMgYXMgTWlwTWFwRGF0YVNldHNbXSxcbiAgICAgICAgKGRhdGFzZXQpID0+IHtcbiAgICAgICAgICByZXR1cm4gdXRpbHMuaXNOaWwoZGF0YXNldC5taXBNYXApO1xuICAgICAgICB9XG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVEYXRhTWlwTWFwKGNoYXJ0OiBDaGFydCwgb3B0aW9uczogUmVzcG9uc2l2ZURvd25zYW1wbGVQbHVnaW5PcHRpb25zKTogdm9pZCB7XG4gICAgY2hhcnQuZGF0YS5kYXRhc2V0cy5mb3JFYWNoKChkYXRhc2V0OiBNaXBNYXBEYXRhU2V0cykgPT4ge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgZGF0YSA9ICF1dGlscy5pc05pbChkYXRhc2V0Lm9yaWdpbmFsRGF0YSkgPyBkYXRhc2V0Lm9yaWdpbmFsRGF0YSA6IGRhdGFzZXQuZGF0YSBhcyBDaGFydFBvaW50W107XG5cbiAgICAgIGNvbnN0IG1pcE1hcCA9IChvcHRpb25zLmFnZ3JlZ2F0aW9uQWxnb3JpdGhtID09PSAnTFRUQicpXG4gICAgICAgID8gbmV3IExUVEJEYXRhTWlwbWFwKGRhdGEsIG9wdGlvbnMubWluTnVtUG9pbnRzKVxuICAgICAgICA6IG5ldyBEYXRhTWlwbWFwKGRhdGEsIG9wdGlvbnMubWluTnVtUG9pbnRzKTtcblxuICAgICAgZGF0YXNldC5vcmlnaW5hbERhdGEgPSBkYXRhO1xuICAgICAgZGF0YXNldC5taXBNYXAgPSBtaXBNYXA7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBkYXRhc2V0LmRhdGEgPSBtaXBNYXAuZ2V0TWlwTWFwTGV2ZWwobWlwTWFwLmdldE51bUxldmVsKCkgLSAxKTsgLy8gc2V0IGxhc3QgbGV2ZWwgZm9yIGZpcnN0IHJlbmRlciBwYXNzXG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcmVzdG9yZU9yaWdpbmFsRGF0YShjaGFydDogQ2hhcnQpOiBib29sZWFuIHtcbiAgICBsZXQgdXBkYXRlZCA9IGZhbHNlO1xuXG4gICAgY2hhcnQuZGF0YS5kYXRhc2V0cy5mb3JFYWNoKChkYXRhc2V0OiBNaXBNYXBEYXRhU2V0cykgPT4ge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaWYgKCF1dGlscy5pc05pbChkYXRhc2V0Lm9yaWdpbmFsRGF0YSkgJiYgZGF0YXNldC5kYXRhICE9PSBkYXRhc2V0Lm9yaWdpbmFsRGF0YSkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGRhdGFzZXQuZGF0YSA9IGRhdGFzZXQub3JpZ2luYWxEYXRhO1xuICAgICAgICB1cGRhdGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB1cGRhdGVkO1xuICB9XG5cbiAgc3RhdGljIGdldFRhcmdldFJlc29sdXRpb24oY2hhcnQ6IENoYXJ0LCBvcHRpb25zOiBSZXNwb25zaXZlRG93bnNhbXBsZVBsdWdpbk9wdGlvbnMpOiBudW1iZXIge1xuICAgIGNvbnN0IHhTY2FsZTogVGltZVNjYWxlID0gKGNoYXJ0IGFzIGFueSkuc2NhbGVzWyd4LWF4aXMtMCddO1xuXG4gICAgaWYgKHV0aWxzLmlzTmlsKHhTY2FsZSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0ID0gbW9tZW50KHhTY2FsZS5nZXRWYWx1ZUZvclBpeGVsKHhTY2FsZS5sZWZ0KSBhcyBhbnkpO1xuICAgIGNvbnN0IGVuZCA9IG1vbWVudCh4U2NhbGUuZ2V0VmFsdWVGb3JQaXhlbCh4U2NhbGUubGVmdCArIDEpIGFzIGFueSk7XG4gICAgY29uc3QgdGFyZ2V0UmVzb2x1dGlvbiA9IGVuZC5kaWZmKHN0YXJ0KTtcblxuICAgIHJldHVybiB0YXJnZXRSZXNvbHV0aW9uICogb3B0aW9ucy5kZXNpcmVkRGF0YVBvaW50RGlzdGFuY2U7XG4gIH1cblxuICBzdGF0aWMgdXBkYXRlTWlwTWFwKGNoYXJ0OiBDaGFydCwgb3B0aW9uczogUmVzcG9uc2l2ZURvd25zYW1wbGVQbHVnaW5PcHRpb25zLCByYW5nZUNoYW5nZWQ6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICBsZXQgdXBkYXRlZCA9IGZhbHNlO1xuXG4gICAgY2hhcnQuZGF0YS5kYXRhc2V0cy5mb3JFYWNoKChkYXRhc2V0OiBNaXBNYXBEYXRhU2V0cykgPT4ge1xuICAgICAgY29uc3QgbWlwTWFwID0gZGF0YXNldC5taXBNYXA7XG4gICAgICBpZiAodXRpbHMuaXNOaWwobWlwTWFwKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1pcE1hbExldmVsID0gbWlwTWFwLmdldE1pcE1hcEluZGV4Rm9yUmVzb2x1dGlvbihvcHRpb25zLnRhcmdldFJlc29sdXRpb24pO1xuICAgICAgaWYgKG1pcE1hbExldmVsID09PSBkYXRhc2V0LmN1cnJlbnRNaXBNYXBMZXZlbCAmJiAhcmFuZ2VDaGFuZ2VkKSB7XG4gICAgICAgIC8vIHNraXAgdXBkYXRlIGlmIG1pcCBtYXAgbGV2ZWwgYW5kIGRhdGEgcmFuZ2UgZGlkIG5vdCBjaGFuZ2VcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdXBkYXRlZCA9IHRydWU7XG4gICAgICBkYXRhc2V0LmN1cnJlbnRNaXBNYXBMZXZlbCA9IG1pcE1hbExldmVsO1xuXG4gICAgICBsZXQgbmV3RGF0YSA9IG1pcE1hcC5nZXRNaXBNYXBMZXZlbChtaXBNYWxMZXZlbCk7XG4gICAgICBpZiAob3B0aW9ucy5jdWxsRGF0YSkge1xuICAgICAgICBuZXdEYXRhID0gZGF0YV9jdWxsaW5nLmN1bGxEYXRhKG5ld0RhdGEsIG9wdGlvbnMuc2NhbGVSYW5nZSk7XG4gICAgICB9XG5cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGRhdGFzZXQuZGF0YSA9IG5ld0RhdGE7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdXBkYXRlZDtcbiAgfVxuXG4gIGJlZm9yZUluaXQoY2hhcnQ6IENoYXJ0KTogdm9pZCB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IFJlc3BvbnNpdmVEb3duc2FtcGxlUGx1Z2luLmdldFBsdWdpbk9wdGlvbnMoY2hhcnQpO1xuICAgIGlmICghb3B0aW9ucy5lbmFibGVkKSB7IHJldHVybjsgfVxuXG4gICAgUmVzcG9uc2l2ZURvd25zYW1wbGVQbHVnaW4uY3JlYXRlRGF0YU1pcE1hcChjaGFydCwgb3B0aW9ucyk7XG4gICAgb3B0aW9ucy5uZWVkc1VwZGF0ZSA9IHRydWU7XG4gIH1cblxuICBiZWZvcmVEYXRhc2V0c1VwZGF0ZShjaGFydDogQ2hhcnQpOiB2b2lkIHtcbiAgICBjb25zdCBvcHRpb25zID0gUmVzcG9uc2l2ZURvd25zYW1wbGVQbHVnaW4uZ2V0UGx1Z2luT3B0aW9ucyhjaGFydCk7XG4gICAgaWYgKCFvcHRpb25zLmVuYWJsZWQpIHtcbiAgICAgIC8vIHJlc3RvcmUgb3JpZ2luYWwgZGF0YSBhbmQgcmVtb3ZlIHN0YXRlIGZyb20gb3B0aW9uc1xuICAgICAgb3B0aW9ucy5uZWVkc1VwZGF0ZSA9IFJlc3BvbnNpdmVEb3duc2FtcGxlUGx1Z2luLnJlc3RvcmVPcmlnaW5hbERhdGEoY2hhcnQpO1xuICAgICAgZGVsZXRlIG9wdGlvbnMudGFyZ2V0UmVzb2x1dGlvbjtcbiAgICAgIGRlbGV0ZSBvcHRpb25zLnNjYWxlUmFuZ2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gb25seSB1cGRhdGUgbWlwIG1hcCBpZiBkYXRhIHNldCB3YXMgcmVsb2FkZWQgZXh0ZXJuYWxseVxuICAgIGlmIChSZXNwb25zaXZlRG93bnNhbXBsZVBsdWdpbi5oYXNEYXRhQ2hhbmdlZChjaGFydCkpIHtcbiAgICAgIFJlc3BvbnNpdmVEb3duc2FtcGxlUGx1Z2luLmNyZWF0ZURhdGFNaXBNYXAoY2hhcnQsIG9wdGlvbnMpO1xuICAgICAgb3B0aW9ucy5uZWVkc1VwZGF0ZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgYmVmb3JlUmVuZGVyKGNoYXJ0OiBDaGFydCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBSZXNwb25zaXZlRG93bnNhbXBsZVBsdWdpbi5nZXRQbHVnaW5PcHRpb25zKGNoYXJ0KTtcbiAgICBpZiAoIW9wdGlvbnMuZW5hYmxlZCkge1xuICAgICAgLy8gdXBkYXRlIGNoYXJ0IGlmIGRhdGEgd2FzIHJlc3RvcmVkIGZyb20gb3JpZ2luYWwgZGF0YVxuICAgICAgaWYgKG9wdGlvbnMubmVlZHNVcGRhdGUpIHtcbiAgICAgICAgb3B0aW9ucy5uZWVkc1VwZGF0ZSA9IGZhbHNlO1xuICAgICAgICBjaGFydC51cGRhdGUoMCk7XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRhcmdldFJlc29sdXRpb24gPSBSZXNwb25zaXZlRG93bnNhbXBsZVBsdWdpbi5nZXRUYXJnZXRSZXNvbHV0aW9uKGNoYXJ0LCBvcHRpb25zKTtcbiAgICBjb25zdCB4U2NhbGU6IFRpbWVTY2FsZSA9IChjaGFydCBhcyBhbnkpLnNjYWxlc1sneC1heGlzLTAnXTtcbiAgICBjb25zdCBzY2FsZVJhbmdlID0gZGF0YV9jdWxsaW5nLmdldFNjYWxlUmFuZ2UoeFNjYWxlKTtcbiAgICBjb25zdCByYW5nZUNoYW5nZWQgPSAhZGF0YV9jdWxsaW5nLnJhbmdlSXNFcXVhbChvcHRpb25zLnNjYWxlUmFuZ2UsIHNjYWxlUmFuZ2UpO1xuXG4gICAgaWYgKG9wdGlvbnMubmVlZHNVcGRhdGUgfHxcbiAgICAgIG9wdGlvbnMudGFyZ2V0UmVzb2x1dGlvbiAhPT0gdGFyZ2V0UmVzb2x1dGlvbiB8fFxuICAgICAgcmFuZ2VDaGFuZ2VkXG4gICAgKSB7XG4gICAgICBvcHRpb25zLnRhcmdldFJlc29sdXRpb24gPSB0YXJnZXRSZXNvbHV0aW9uO1xuICAgICAgb3B0aW9ucy5zY2FsZVJhbmdlID0gc2NhbGVSYW5nZTtcbiAgICAgIG9wdGlvbnMubmVlZHNVcGRhdGUgPSBmYWxzZTtcblxuICAgICAgaWYgKFJlc3BvbnNpdmVEb3duc2FtcGxlUGx1Z2luLnVwZGF0ZU1pcE1hcChjaGFydCwgb3B0aW9ucywgcmFuZ2VDaGFuZ2VkKSkge1xuICAgICAgICB1dGlscy5jaGFuZ2VQb2ludFJhZGl1cyhjaGFydCwgb3B0aW9ucyk7XG4gICAgICAgIC8vIHVwZGF0ZSBjaGFydCBhbmQgY2FuY2VsIGN1cnJlbnQgcmVuZGVyXG4gICAgICAgIGNoYXJ0LnVwZGF0ZSgwKTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=