@kepler.gl/components 3.2.6 → 3.3.0-alpha.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 (370) hide show
  1. package/dist/annotations/annotation-node.d.ts +11 -0
  2. package/dist/annotations/annotation-node.js +145 -0
  3. package/dist/annotations/annotation-overlay.d.ts +16 -0
  4. package/dist/annotations/annotation-overlay.js +166 -0
  5. package/dist/annotations/annotation-panel.d.ts +24 -0
  6. package/dist/annotations/annotation-panel.js +362 -0
  7. package/dist/annotations/annotation-text.d.ts +16 -0
  8. package/dist/annotations/annotation-text.js +150 -0
  9. package/dist/annotations/annotation-utils.d.ts +39 -0
  10. package/dist/annotations/annotation-utils.js +156 -0
  11. package/dist/annotations/index.d.ts +7 -0
  12. package/dist/annotations/index.js +53 -0
  13. package/dist/annotations/lexical-editor/clickable-link-plugin.d.ts +3 -0
  14. package/dist/annotations/lexical-editor/clickable-link-plugin.js +71 -0
  15. package/dist/annotations/lexical-editor/floating-link-editor.d.ts +1 -0
  16. package/dist/annotations/lexical-editor/floating-link-editor.js +194 -0
  17. package/dist/annotations/lexical-editor/index.d.ts +7 -0
  18. package/dist/annotations/lexical-editor/index.js +78 -0
  19. package/dist/annotations/lexical-editor/lexical-constants.d.ts +12 -0
  20. package/dist/annotations/lexical-editor/lexical-constants.js +22 -0
  21. package/dist/annotations/lexical-editor/lexical-nodes.d.ts +3 -0
  22. package/dist/annotations/lexical-editor/lexical-nodes.js +13 -0
  23. package/dist/annotations/lexical-editor/lexical-rich-text-editor.d.ts +15 -0
  24. package/dist/annotations/lexical-editor/lexical-rich-text-editor.js +122 -0
  25. package/dist/annotations/lexical-editor/lexical-theme.d.ts +15 -0
  26. package/dist/annotations/lexical-editor/lexical-theme.js +25 -0
  27. package/dist/annotations/lexical-editor/lexical-toolbar.d.ts +7 -0
  28. package/dist/annotations/lexical-editor/lexical-toolbar.js +293 -0
  29. package/dist/annotations/lexical-editor/lexical-utils.d.ts +4 -0
  30. package/dist/annotations/lexical-editor/lexical-utils.js +45 -0
  31. package/dist/annotations/lexical-editor/use-lexical-toolbar.d.ts +36 -0
  32. package/dist/annotations/lexical-editor/use-lexical-toolbar.js +253 -0
  33. package/dist/bottom-widget.d.ts +5 -5
  34. package/dist/bottom-widget.js +12 -6
  35. package/dist/common/action-panel.d.ts +3 -3
  36. package/dist/common/animation-control/animation-control.d.ts +2 -1
  37. package/dist/common/animation-control/animation-control.js +3 -1
  38. package/dist/common/animation-control/animation-controller.js +8 -6
  39. package/dist/common/animation-control/export-video-control.d.ts +9 -0
  40. package/dist/common/animation-control/export-video-control.js +43 -0
  41. package/dist/common/animation-control/playback-controls.d.ts +5 -3
  42. package/dist/common/animation-control/playback-controls.js +7 -4
  43. package/dist/common/checkbox.d.ts +5 -21
  44. package/dist/common/checkbox.js +58 -70
  45. package/dist/common/color-legend.d.ts +4 -4
  46. package/dist/common/color-legend.js +3 -3
  47. package/dist/common/column-stats-chart.d.ts +3 -3
  48. package/dist/common/data-table/button.d.ts +1 -1
  49. package/dist/common/data-table/canvas.d.ts +0 -1
  50. package/dist/common/data-table/cell-size.d.ts +2 -2
  51. package/dist/common/data-table/display-format.d.ts +1 -1
  52. package/dist/common/data-table/header-cell.d.ts +2 -2
  53. package/dist/common/data-table/index.d.ts +8 -10
  54. package/dist/common/data-table/index.js +3 -3
  55. package/dist/common/data-table/option-dropdown.d.ts +1 -1
  56. package/dist/common/field-selector.d.ts +5 -5
  57. package/dist/common/field-token.d.ts +1 -1
  58. package/dist/common/file-uploader/file-drop.d.ts +1 -1
  59. package/dist/common/file-uploader/file-upload-progress.d.ts +1 -1
  60. package/dist/common/file-uploader/file-upload.d.ts +1 -1
  61. package/dist/common/file-uploader/file-upload.js +4 -4
  62. package/dist/common/flex-container.d.ts +2 -3
  63. package/dist/common/histogram-plot.d.ts +1 -1
  64. package/dist/common/histogram-plot.js +102 -53
  65. package/dist/common/icon-button.d.ts +16 -16
  66. package/dist/common/icons/3d-models/airplane.d.ts +14 -0
  67. package/dist/common/icons/3d-models/airplane.js +104 -0
  68. package/dist/common/icons/3d-models/bicycle.d.ts +14 -0
  69. package/dist/common/icons/3d-models/bicycle.js +426 -0
  70. package/dist/common/icons/3d-models/boeing.d.ts +14 -0
  71. package/dist/common/icons/3d-models/boeing.js +119 -0
  72. package/dist/common/icons/3d-models/car.d.ts +14 -0
  73. package/dist/common/icons/3d-models/car.js +110 -0
  74. package/dist/common/icons/3d-models/cargoship.d.ts +14 -0
  75. package/dist/common/icons/3d-models/cargoship.js +246 -0
  76. package/dist/common/icons/3d-models/evtol.d.ts +14 -0
  77. package/dist/common/icons/3d-models/evtol.js +134 -0
  78. package/dist/common/icons/3d-models/glider.d.ts +14 -0
  79. package/dist/common/icons/3d-models/glider.js +62 -0
  80. package/dist/common/icons/3d-models/helicopter.d.ts +14 -0
  81. package/dist/common/icons/3d-models/helicopter.js +110 -0
  82. package/dist/common/icons/3d-models/scooter.d.ts +14 -0
  83. package/dist/common/icons/3d-models/scooter.js +159 -0
  84. package/dist/common/icons/3d-models/semitruck.d.ts +14 -0
  85. package/dist/common/icons/3d-models/semitruck.js +177 -0
  86. package/dist/common/icons/3d-models/truck.d.ts +14 -0
  87. package/dist/common/icons/3d-models/truck.js +122 -0
  88. package/dist/common/icons/anchor_window.d.ts +1 -8
  89. package/dist/common/icons/anchor_window.js +17 -10
  90. package/dist/common/icons/annotation-text.d.ts +9 -0
  91. package/dist/common/icons/annotation-text.js +56 -0
  92. package/dist/common/icons/base.d.ts +1 -1
  93. package/dist/common/icons/close.js +1 -1
  94. package/dist/common/icons/effects/distance-fog.d.ts +14 -0
  95. package/dist/common/icons/effects/distance-fog.js +79 -0
  96. package/dist/common/icons/effects/surface-fog.d.ts +14 -0
  97. package/dist/common/icons/effects/surface-fog.js +86 -0
  98. package/dist/common/icons/index.d.ts +3 -0
  99. package/dist/common/icons/index.js +22 -1
  100. package/dist/common/item-selector/chickleted-input.d.ts +5 -5
  101. package/dist/common/item-selector/chickleted-input.js +5 -5
  102. package/dist/common/item-selector/dropdown-list.d.ts +3 -3
  103. package/dist/common/item-selector/dropdown-select.d.ts +7 -7
  104. package/dist/common/item-selector/item-selector.d.ts +2 -2
  105. package/dist/common/item-selector/typeahead.d.ts +3 -3
  106. package/dist/common/line-chart.d.ts +4 -1
  107. package/dist/common/line-chart.js +59 -12
  108. package/dist/common/loading-spinner.d.ts +2 -2
  109. package/dist/common/modal.d.ts +5 -5
  110. package/dist/common/portaled.d.ts +8 -25
  111. package/dist/common/progress-bar.d.ts +1 -1
  112. package/dist/common/radius-legend.d.ts +1 -1
  113. package/dist/common/range-brush.d.ts +1 -1
  114. package/dist/common/range-plot.d.ts +1 -1
  115. package/dist/common/range-plot.js +4 -2
  116. package/dist/common/range-slider.d.ts +2 -0
  117. package/dist/common/range-slider.js +108 -43
  118. package/dist/common/slider/mouse-event.d.ts +1 -1
  119. package/dist/common/slider/slider-bar-handle.d.ts +2 -2
  120. package/dist/common/slider/slider-handle.d.ts +3 -3
  121. package/dist/common/slider/slider.d.ts +6 -2
  122. package/dist/common/slider/slider.js +78 -35
  123. package/dist/common/styled-components.d.ts +158 -159
  124. package/dist/common/styled-components.js +2 -2
  125. package/dist/common/sync-timeline-control.d.ts +3 -3
  126. package/dist/common/time-range-slider-time-title.d.ts +2 -2
  127. package/dist/common/time-range-slider-time-title.js +5 -5
  128. package/dist/common/time-range-slider.d.ts +4 -3
  129. package/dist/common/time-range-slider.js +19 -7
  130. package/dist/common/timeline-helpers.d.ts +3 -0
  131. package/dist/common/timeline-helpers.js +57 -0
  132. package/dist/common/timeline-slider.d.ts +1 -1
  133. package/dist/common/timeline-slider.js +21 -12
  134. package/dist/common/tippy-tooltip.d.ts +1 -1
  135. package/dist/common/toolbar-item.d.ts +1 -1
  136. package/dist/common/toolbar-item.js +5 -5
  137. package/dist/common/toolbar.d.ts +2 -2
  138. package/dist/common/toolbar.js +4 -4
  139. package/dist/common/vertical-toolbar.d.ts +2 -3
  140. package/dist/container.d.ts +6 -6
  141. package/dist/context.d.ts +3 -3
  142. package/dist/dnd-context.d.ts +2 -2
  143. package/dist/editor/editor.d.ts +1 -1
  144. package/dist/editor/editor.js +1 -1
  145. package/dist/editor/feature-action-panel.d.ts +1 -1
  146. package/dist/editor/feature-action-panel.js +1 -1
  147. package/dist/effects/compact-color-picker.d.ts +1 -1
  148. package/dist/effects/effect-configurator.d.ts +5 -4
  149. package/dist/effects/effect-configurator.js +243 -44
  150. package/dist/effects/effect-list.d.ts +1 -1
  151. package/dist/effects/effect-manager.d.ts +3 -3
  152. package/dist/effects/effect-manager.js +11 -4
  153. package/dist/effects/effect-panel-header.d.ts +2 -2
  154. package/dist/effects/effect-panel-header.js +35 -18
  155. package/dist/effects/effect-panel.d.ts +6 -6
  156. package/dist/effects/effect-panel.js +61 -86
  157. package/dist/effects/effect-time-configurator.d.ts +1 -1
  158. package/dist/effects/effect-time-configurator.js +10 -10
  159. package/dist/effects/effect-time-selector.d.ts +1 -1
  160. package/dist/effects/effect-time-slider.d.ts +3 -3
  161. package/dist/effects/effect-type-dropdown-list.d.ts +3 -2
  162. package/dist/effects/effect-type-dropdown-list.js +1 -1
  163. package/dist/effects/effect-type-list-item.d.ts +2 -1
  164. package/dist/effects/effect-type-list-item.js +23 -7
  165. package/dist/effects/effect-type-selector.d.ts +3 -2
  166. package/dist/effects/effect-type-selector.js +2 -2
  167. package/dist/effects/side-panel-title.d.ts +1 -1
  168. package/dist/effects/surface-fog-section.d.ts +14 -0
  169. package/dist/effects/surface-fog-section.js +263 -0
  170. package/dist/effects/timezone-selector.d.ts +1 -1
  171. package/dist/filters/components.d.ts +2 -3
  172. package/dist/filters/filter-panels/types.d.ts +4 -4
  173. package/dist/filters/index.d.ts +1 -0
  174. package/dist/filters/index.js +8 -1
  175. package/dist/filters/polygon-filter.js +2 -2
  176. package/dist/filters/time-range-filter.js +3 -1
  177. package/dist/filters/time-widget-settings.d.ts +14 -0
  178. package/dist/filters/time-widget-settings.js +312 -0
  179. package/dist/filters/time-widget-top.d.ts +2 -3
  180. package/dist/filters/time-widget-top.js +32 -39
  181. package/dist/filters/time-widget.d.ts +3 -2
  182. package/dist/filters/time-widget.js +285 -9
  183. package/dist/filters/types.d.ts +11 -11
  184. package/dist/filters/types.js +1 -1
  185. package/dist/geocoder/geocoder.d.ts +7 -4
  186. package/dist/geocoder/geocoder.js +65 -14
  187. package/dist/geocoder-panel.d.ts +11 -2
  188. package/dist/geocoder-panel.js +8 -4
  189. package/dist/hooks/use-cloud-list-provider.d.ts +1 -1
  190. package/dist/hooks/use-dnd-effects.d.ts +1 -1
  191. package/dist/hooks/use-dnd-layers.d.ts +1 -1
  192. package/dist/hooks/use-feature-flags.d.ts +1 -1
  193. package/dist/hooks/use-fetch-raster-tile-metadata.d.ts +3 -3
  194. package/dist/hooks/use-fetch-vector-tile-metadata.d.ts +2 -2
  195. package/dist/hooks/use-legend-position.d.ts +4 -5
  196. package/dist/index.d.ts +14 -0
  197. package/dist/index.js +124 -1
  198. package/dist/injector.d.ts +5 -5
  199. package/dist/kepler-gl.d.ts +70 -67
  200. package/dist/kepler-gl.js +89 -11
  201. package/dist/loading-indicator.d.ts +6 -4
  202. package/dist/loading-indicator.js +6 -3
  203. package/dist/map/annotations/annotation-control.d.ts +16 -0
  204. package/dist/map/annotations/annotation-control.js +56 -0
  205. package/dist/map/effects/effect-control.d.ts +1 -1
  206. package/dist/map/layer-hover-info.d.ts +3 -3
  207. package/dist/map/layer-hover-info.js +69 -36
  208. package/dist/map/layer-selector-panel.d.ts +2 -2
  209. package/dist/map/lazy-tippy.js +3 -3
  210. package/dist/map/locale-panel.d.ts +2 -2
  211. package/dist/map/locale-panel.js +2 -2
  212. package/dist/map/map-control-panel.d.ts +1 -1
  213. package/dist/map/map-control-toolbar.d.ts +7 -8
  214. package/dist/map/map-control-tooltip.d.ts +1 -1
  215. package/dist/map/map-control.d.ts +8 -4
  216. package/dist/map/map-control.js +16 -7
  217. package/dist/map/map-draw-panel.d.ts +2 -2
  218. package/dist/map/map-draw-panel.js +7 -4
  219. package/dist/map/map-legend-panel.d.ts +5 -4
  220. package/dist/map/map-legend-panel.js +10 -8
  221. package/dist/map/map-legend.d.ts +11 -9
  222. package/dist/map/map-legend.js +39 -9
  223. package/dist/map/map-navigation-control.d.ts +13 -0
  224. package/dist/map/map-navigation-control.js +143 -0
  225. package/dist/map/map-popover-content.d.ts +2 -2
  226. package/dist/map/map-popover.d.ts +2 -2
  227. package/dist/map/map-popover.js +2 -2
  228. package/dist/map/split-map-button.d.ts +1 -1
  229. package/dist/map/toggle-3d-button.d.ts +1 -1
  230. package/dist/map-container.d.ts +15 -5
  231. package/dist/map-container.js +286 -73
  232. package/dist/map-view-state-context.d.ts +10 -2
  233. package/dist/map-view-state-context.js +1 -1
  234. package/dist/modal-container.d.ts +6 -8
  235. package/dist/modal-container.js +28 -6
  236. package/dist/modals/add-map-style-modal.js +173 -200
  237. package/dist/modals/cloud-components/cloud-header.d.ts +1 -1
  238. package/dist/modals/cloud-components/provider-select.d.ts +1 -1
  239. package/dist/modals/cloud-tile.d.ts +1 -1
  240. package/dist/modals/data-table-modal.d.ts +2 -2
  241. package/dist/modals/data-table-modal.js +146 -194
  242. package/dist/modals/export-data-modal.js +117 -139
  243. package/dist/modals/export-image-modal.js +1 -1
  244. package/dist/modals/export-map-modal/components.d.ts +1 -1
  245. package/dist/modals/export-map-modal/export-html-map.d.ts +1 -1
  246. package/dist/modals/export-map-modal/export-json-map.d.ts +1 -1
  247. package/dist/modals/export-video-modal.d.ts +25 -0
  248. package/dist/modals/export-video-modal.js +338 -0
  249. package/dist/modals/export-video-modal.spec.d.ts +1 -0
  250. package/dist/modals/export-video-modal.spec.js +686 -0
  251. package/dist/modals/fog-height-animation.d.ts +8 -0
  252. package/dist/modals/fog-height-animation.js +97 -0
  253. package/dist/modals/hubble-utils.d.ts +25 -0
  254. package/dist/modals/hubble-utils.js +197 -0
  255. package/dist/modals/hubble-utils.spec.d.ts +1 -0
  256. package/dist/modals/hubble-utils.spec.js +397 -0
  257. package/dist/modals/image-modal-container.d.ts +1 -1
  258. package/dist/modals/load-data-modal.d.ts +2 -2
  259. package/dist/modals/modal-dialog.d.ts +0 -2
  260. package/dist/modals/overwrite-map-modal.d.ts +1 -1
  261. package/dist/modals/save-map-modal.d.ts +3 -3
  262. package/dist/modals/share-map-modal.d.ts +1 -1
  263. package/dist/modals/tilesets-modals/common.d.ts +3 -3
  264. package/dist/modals/tilesets-modals/common.js +1 -1
  265. package/dist/modals/tilesets-modals/load-data-footer.d.ts +1 -1
  266. package/dist/modals/tilesets-modals/load-data-footer.js +2 -2
  267. package/dist/modals/tilesets-modals/load-tileset.d.ts +1 -1
  268. package/dist/modals/tilesets-modals/load-tileset.js +27 -10
  269. package/dist/modals/tilesets-modals/tileset-bitmap-form.d.ts +14 -0
  270. package/dist/modals/tilesets-modals/tileset-bitmap-form.js +284 -0
  271. package/dist/modals/tilesets-modals/tileset-icon.d.ts +1 -1
  272. package/dist/modals/tilesets-modals/tileset-raster-form.d.ts +2 -2
  273. package/dist/modals/tilesets-modals/tileset-raster-form.js +94 -11
  274. package/dist/modals/tilesets-modals/tileset-tile3d-form.d.ts +12 -0
  275. package/dist/modals/tilesets-modals/tileset-tile3d-form.js +389 -0
  276. package/dist/modals/tilesets-modals/tileset-vector-form.d.ts +3 -3
  277. package/dist/modals/tilesets-modals/tileset-vector-form.js +58 -4
  278. package/dist/modals/tilesets-modals/tileset-wms-form.d.ts +1 -1
  279. package/dist/modals/tilesets-modals/tileset-wms-form.js +55 -11
  280. package/dist/notification-panel/notification-item.d.ts +1 -53
  281. package/dist/notification-panel/notification-item.js +47 -75
  282. package/dist/notification-panel.d.ts +1 -1
  283. package/dist/notification-panel.js +20 -42
  284. package/dist/plot-container.js +55 -14
  285. package/dist/side-panel/add-by-dataset-button.d.ts +1 -1
  286. package/dist/side-panel/add-by-dataset-button.js +3 -3
  287. package/dist/side-panel/common/dataset-info.d.ts +2 -2
  288. package/dist/side-panel/common/dataset-info.js +2 -2
  289. package/dist/side-panel/common/dataset-tag.d.ts +2 -2
  290. package/dist/side-panel/common/dataset-title.d.ts +2 -2
  291. package/dist/side-panel/common/source-data-catalog.d.ts +3 -3
  292. package/dist/side-panel/common/types.d.ts +8 -8
  293. package/dist/side-panel/custom-panel.d.ts +2 -2
  294. package/dist/side-panel/filter-manager.d.ts +3 -3
  295. package/dist/side-panel/filter-panel/add-filter-button.d.ts +1 -1
  296. package/dist/side-panel/filter-panel/filter-panel-header.d.ts +2 -2
  297. package/dist/side-panel/interaction-manager.d.ts +1 -1
  298. package/dist/side-panel/interaction-panel/brush-config.d.ts +1 -1
  299. package/dist/side-panel/interaction-panel/geocoder-config.d.ts +11 -0
  300. package/dist/side-panel/interaction-panel/geocoder-config.js +45 -0
  301. package/dist/side-panel/interaction-panel/interaction-panel.d.ts +3 -2
  302. package/dist/side-panel/interaction-panel/interaction-panel.js +10 -3
  303. package/dist/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.d.ts +3 -3
  304. package/dist/side-panel/interaction-panel/tooltip-config.d.ts +1 -1
  305. package/dist/side-panel/layer-manager.d.ts +2 -2
  306. package/dist/side-panel/layer-manager.js +11 -3
  307. package/dist/side-panel/layer-panel/add-layer-button.d.ts +1 -1
  308. package/dist/side-panel/layer-panel/channel-by-value-selector.d.ts +1 -1
  309. package/dist/side-panel/layer-panel/color-breaks-panel.d.ts +4 -4
  310. package/dist/side-panel/layer-panel/color-palette-preset.d.ts +1 -1
  311. package/dist/side-panel/layer-panel/color-palette.d.ts +2 -2
  312. package/dist/side-panel/layer-panel/color-range-selector.d.ts +3 -3
  313. package/dist/side-panel/layer-panel/color-scale-selector.d.ts +5 -5
  314. package/dist/side-panel/layer-panel/color-scale-selector.js +1 -1
  315. package/dist/side-panel/layer-panel/color-selector.d.ts +3 -3
  316. package/dist/side-panel/layer-panel/column-selector.d.ts +1 -1
  317. package/dist/side-panel/layer-panel/custom-palette.d.ts +10 -10
  318. package/dist/side-panel/layer-panel/custom-palette.js +5 -5
  319. package/dist/side-panel/layer-panel/custom-picker.d.ts +1 -1
  320. package/dist/side-panel/layer-panel/dataset-layer-group.d.ts +1 -1
  321. package/dist/side-panel/layer-panel/dataset-layer-section.d.ts +1 -1
  322. package/dist/side-panel/layer-panel/dataset-layer-section.js +19 -3
  323. package/dist/side-panel/layer-panel/dataset-section.d.ts +2 -2
  324. package/dist/side-panel/layer-panel/dimension-scale-selector.d.ts +1 -1
  325. package/dist/side-panel/layer-panel/how-to-button.d.ts +1 -1
  326. package/dist/side-panel/layer-panel/layer-color-selector.d.ts +3 -3
  327. package/dist/side-panel/layer-panel/layer-column-config.d.ts +1 -1
  328. package/dist/side-panel/layer-panel/layer-column-mode-config.d.ts +3 -3
  329. package/dist/side-panel/layer-panel/layer-config-group.d.ts +5 -5
  330. package/dist/side-panel/layer-panel/layer-configurator.d.ts +6 -4
  331. package/dist/side-panel/layer-panel/layer-configurator.js +408 -72
  332. package/dist/side-panel/layer-panel/layer-error-message.d.ts +1 -1
  333. package/dist/side-panel/layer-panel/layer-list.d.ts +2 -2
  334. package/dist/side-panel/layer-panel/layer-panel-header.d.ts +5 -5
  335. package/dist/side-panel/layer-panel/layer-panel-header.js +2 -2
  336. package/dist/side-panel/layer-panel/layer-panel.d.ts +1 -1
  337. package/dist/side-panel/layer-panel/layer-type-dropdown-list.d.ts +2 -2
  338. package/dist/side-panel/layer-panel/layer-type-list-item.d.ts +2 -2
  339. package/dist/side-panel/layer-panel/layer-type-selector.d.ts +1 -1
  340. package/dist/side-panel/layer-panel/radius-by-zoom-input.d.ts +1 -1
  341. package/dist/side-panel/layer-panel/raster-tile-layer-configurator.d.ts +2 -2
  342. package/dist/side-panel/layer-panel/raster-tile-layer-configurator.js +127 -27
  343. package/dist/side-panel/layer-panel/scenegraph-model-selector.d.ts +24 -0
  344. package/dist/side-panel/layer-panel/scenegraph-model-selector.js +123 -0
  345. package/dist/side-panel/layer-panel/single-color-palette.d.ts +1 -1
  346. package/dist/side-panel/layer-panel/text-label-panel.d.ts +2 -2
  347. package/dist/side-panel/layer-panel/text-label-panel.js +11 -2
  348. package/dist/side-panel/layer-panel/vector-tile-layer-configurator.d.ts +3 -3
  349. package/dist/side-panel/layer-panel/vis-config-by-field-selector.d.ts +1 -1
  350. package/dist/side-panel/layer-panel/vis-config-slider.d.ts +3 -1
  351. package/dist/side-panel/layer-panel/vis-config-slider.js +7 -3
  352. package/dist/side-panel/layer-panel/vis-config-switch.d.ts +1 -1
  353. package/dist/side-panel/map-manager.d.ts +1 -1
  354. package/dist/side-panel/map-style-panel/map-layer-group-color-picker.d.ts +1 -1
  355. package/dist/side-panel/map-style-panel/map-layer-group-item.d.ts +2 -2
  356. package/dist/side-panel/map-style-panel/map-layer-selector.d.ts +1 -1
  357. package/dist/side-panel/map-style-panel/map-style-selector.d.ts +1 -1
  358. package/dist/side-panel/panel-header-action.d.ts +1 -1
  359. package/dist/side-panel/panel-header.d.ts +13 -12
  360. package/dist/side-panel/panel-header.js +9 -2
  361. package/dist/side-panel/panel-tab.d.ts +5 -5
  362. package/dist/side-panel/panel-tab.js +4 -4
  363. package/dist/side-panel/panel-title.d.ts +1 -1
  364. package/dist/side-panel/panel-toggle.d.ts +1 -1
  365. package/dist/side-panel/panel-view-list-toggle.d.ts +3 -3
  366. package/dist/side-panel/side-bar.d.ts +2 -2
  367. package/dist/side-panel.d.ts +1 -1
  368. package/dist/side-panel.js +5 -1
  369. package/dist/types.d.ts +3 -3
  370. package/package.json +41 -29
@@ -12,7 +12,7 @@ var _d3Scale = require("d3-scale");
12
12
  var _d3Color = require("d3-color");
13
13
  var _d3Array = require("d3-array");
14
14
  var _styledComponents = _interopRequireDefault(require("styled-components"));
15
- var _templateObject, _templateObject2, _templateObject3; // SPDX-License-Identifier: MIT
15
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4; // SPDX-License-Identifier: MIT
16
16
  // Copyright contributors to the kepler.gl project
17
17
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
18
18
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
@@ -26,7 +26,7 @@ var HISTOGRAM_MASK_BGCOLOR = '#FFFFFF';
26
26
  var HISTOGRAM_MASK_FGCOLOR = '#000000';
27
27
  var histogramStyle = {
28
28
  highlightW: 0.7,
29
- unHighlightedW: 0.4
29
+ unHighlightedW: 0.7
30
30
  };
31
31
  var HistogramWrapper = _styledComponents["default"].svg(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n overflow: visible;\n"])));
32
32
  var HistogramMaskRect = _styledComponents["default"].rect(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n fill: ", ";\n"])), function (props) {
@@ -35,6 +35,9 @@ var HistogramMaskRect = _styledComponents["default"].rect(_templateObject2 || (_
35
35
  var HistogramBreakLine = _styledComponents["default"].g(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n stroke: ", ";\n stroke-width: 1px;\n transform: translate(0, 0);\n"])), function (props) {
36
36
  return props.theme.histogramBreakLineColor;
37
37
  });
38
+ var YAxisTick = _styledComponents["default"].text(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n font-size: 9px;\n fill: ", ";\n"])), function (props) {
39
+ return props.theme.textColor;
40
+ });
38
41
  var BarUnmemoized = _styledComponents["default"].rect(function (_ref) {
39
42
  var theme = _ref.theme,
40
43
  $inRange = _ref.$inRange,
@@ -44,14 +47,11 @@ var BarUnmemoized = _styledComponents["default"].rect(function (_ref) {
44
47
  });
45
48
  var Bar = /*#__PURE__*/_react["default"].memo(BarUnmemoized);
46
49
  Bar.displayName = 'Bar';
47
- var isBarInRange = function isBarInRange(bar, index, list, filterDomain, filterValue) {
48
- // first
49
- // if x0 <= domain[0] and current value[0] wasn't changed from the original domain
50
- var x0Condition = index === 0 ? bar.x0 <= filterDomain[0] && filterDomain[0] === filterValue[0] : false;
51
- // Last
52
- // if x1 >= domain[1] and current value[1] wasn't changed from the original domain
53
- var x1Condition = index === list.length - 1 ? bar.x1 >= filterDomain[1] && filterDomain[1] === filterValue[1] : false;
54
- return (x0Condition || bar.x0 >= filterValue[0]) && (x1Condition || bar.x1 <= filterValue[1]);
50
+ var isBarInRange = function isBarInRange(bar, _index, _list, _filterDomain, filterValue) {
51
+ return bar.x1 > filterValue[0] && bar.x0 < filterValue[1];
52
+ };
53
+ var undefinedToZero = function undefinedToZero(v) {
54
+ return v ? v : 0;
55
55
  };
56
56
  function HistogramPlotFactory() {
57
57
  var HistogramPlot = function HistogramPlot(_ref2) {
@@ -61,6 +61,7 @@ function HistogramPlotFactory() {
61
61
  colorsByGroup = _ref2.colorsByGroup,
62
62
  _ref2$isMasked = _ref2.isMasked,
63
63
  isMasked = _ref2$isMasked === void 0 ? HISTOGRAM_MASK_MODE.NoMask : _ref2$isMasked,
64
+ isEnlarged = _ref2.isEnlarged,
64
65
  _ref2$countProp = _ref2.countProp,
65
66
  countProp = _ref2$countProp === void 0 ? 'count' : _ref2$countProp,
66
67
  margin = _ref2.margin,
@@ -69,9 +70,6 @@ function HistogramPlotFactory() {
69
70
  value = _ref2.value,
70
71
  brushComponent = _ref2.brushComponent,
71
72
  breakLines = _ref2.breakLines;
72
- var undefinedToZero = function undefinedToZero(x) {
73
- return x ? x : 0;
74
- };
75
73
  var groupKeys = (0, _react.useMemo)(function () {
76
74
  return Object.keys(histogramsByGroup)
77
75
  // only keep non-empty groups
@@ -88,26 +86,23 @@ function HistogramPlotFactory() {
88
86
  return histogramsByGroup[key][histogramsByGroup[key].length - 1].x1;
89
87
  })) !== null && _max !== void 0 ? _max : 0];
90
88
  }, [range, histogramsByGroup, groupKeys]);
91
- var barWidth = (0, _react.useMemo)(function () {
89
+ var numBins = (0, _react.useMemo)(function () {
92
90
  if (groupKeys.length === 0) return 0;
93
- // find histogramsByGroup with max number of bins
94
91
  var maxGroup = groupKeys.reduce(function (accu, key, _idx) {
95
92
  if (histogramsByGroup[key].length > accu.length) {
96
93
  return histogramsByGroup[key];
97
94
  }
98
95
  return accu;
99
96
  }, histogramsByGroup[groupKeys[0]]);
100
-
101
- // find the bin for measuring step
102
- var stdBinIdx = maxGroup.length > 1 ? 1 : 0;
103
- var xStep = maxGroup[stdBinIdx].x1 - maxGroup[stdBinIdx].x0;
104
- var maxBins = (domain[1] - domain[0]) / xStep;
105
- if (!maxBins) return 0;
106
- return width / maxBins / (isMasked ? 1 : groupKeys.length);
107
- }, [histogramsByGroup, domain, groupKeys, width, isMasked]);
97
+ return maxGroup.length;
98
+ }, [histogramsByGroup, groupKeys]);
108
99
  var x = (0, _react.useMemo)(function () {
109
- return (0, _d3Scale.scaleLinear)().domain(domain).range([barWidth, width]);
110
- }, [domain, width, barWidth]);
100
+ return (0, _d3Scale.scaleLinear)().domain(domain).range([0, width]);
101
+ }, [domain, width]);
102
+ var fallbackBarWidth = (0, _react.useMemo)(function () {
103
+ if (numBins === 0) return 0;
104
+ return width / numBins;
105
+ }, [numBins, width]);
111
106
  var y = (0, _react.useMemo)(function () {
112
107
  return (0, _d3Scale.scaleLinear)().domain([0, Math.max(Number((0, _d3Array.max)(groupKeys, function (key) {
113
108
  return (0, _d3Array.max)(histogramsByGroup[key], function (d) {
@@ -115,6 +110,19 @@ function HistogramPlotFactory() {
115
110
  });
116
111
  })), 1)]).range([0, height]);
117
112
  }, [histogramsByGroup, groupKeys, height, countProp]);
113
+ var yAxisTicks = (0, _react.useMemo)(function () {
114
+ if (!isEnlarged) return null;
115
+ var yMax = Math.max(Number((0, _d3Array.max)(groupKeys, function (key) {
116
+ return (0, _d3Array.max)(histogramsByGroup[key], function (d) {
117
+ return d[countProp];
118
+ });
119
+ })), 1);
120
+ var tickCount = 3;
121
+ var ticks = (0, _d3Scale.scaleLinear)().domain([0, yMax]).ticks(tickCount);
122
+ return ticks;
123
+ }, [isEnlarged, groupKeys, histogramsByGroup, countProp]);
124
+ var clipIdRef = (0, _react.useRef)("histogram-clip-".concat(Math.random().toString(36).slice(2)));
125
+ var clipId = clipIdRef.current;
118
126
  if (groupKeys.length === 0) {
119
127
  return null;
120
128
  }
@@ -125,7 +133,14 @@ function HistogramPlotFactory() {
125
133
  style: {
126
134
  margin: "".concat(margin.top, "px ").concat(margin.right, "px ").concat(margin.bottom, "px ").concat(margin.left, "px")
127
135
  }
128
- }, /*#__PURE__*/_react["default"].createElement("defs", null, /*#__PURE__*/_react["default"].createElement("mask", {
136
+ }, /*#__PURE__*/_react["default"].createElement("defs", null, /*#__PURE__*/_react["default"].createElement("clipPath", {
137
+ id: "".concat(clipId, "-mask")
138
+ }, /*#__PURE__*/_react["default"].createElement("rect", {
139
+ x: "0",
140
+ y: "0",
141
+ width: width,
142
+ height: height + margin.bottom
143
+ })), /*#__PURE__*/_react["default"].createElement("mask", {
129
144
  id: "histogram-mask"
130
145
  }, /*#__PURE__*/_react["default"].createElement("rect", {
131
146
  x: "0",
@@ -139,14 +154,18 @@ function HistogramPlotFactory() {
139
154
  }, histogramsByGroup.filteredBins.map(function (bar, idx, list) {
140
155
  var inRange = isBarInRange(bar, idx, list, domain, value);
141
156
  var wRatio = inRange ? histogramStyle.highlightW : histogramStyle.unHighlightedW;
157
+ var bx0 = x(undefinedToZero(bar.x0));
158
+ var bx1 = x(undefinedToZero(bar.x1));
159
+ var binW = Math.max(bx1 - bx0, 1);
160
+ var drawnW = binW * wRatio;
142
161
  return /*#__PURE__*/_react["default"].createElement(Bar, {
143
162
  $isOverlay: false,
144
163
  $inRange: inRange,
145
164
  $color: HISTOGRAM_MASK_FGCOLOR,
146
165
  key: "mask-".concat(idx),
147
166
  height: y(bar[countProp]),
148
- width: barWidth * wRatio,
149
- x: x(bar.x0) + barWidth * (1 - wRatio) / 2,
167
+ width: drawnW,
168
+ x: bx0 + (binW - drawnW) / 2,
150
169
  y: height - y(bar[countProp])
151
170
  });
152
171
  })))), /*#__PURE__*/_react["default"].createElement("g", {
@@ -160,19 +179,24 @@ function HistogramPlotFactory() {
160
179
  })), isMasked === HISTOGRAM_MASK_MODE.MaskWithOverlay && /*#__PURE__*/_react["default"].createElement("g", {
161
180
  key: "bins",
162
181
  transform: "translate(0,0)",
163
- className: "overlay-histogram-bars"
182
+ className: "overlay-histogram-bars",
183
+ clipPath: "url(#".concat(clipId, "-mask)")
164
184
  }, histogramsByGroup.bins.map(function (bar, idx, list) {
165
185
  var filterBar = histogramsByGroup.filteredBins[idx];
166
186
  var maskHeight = filterBar ? y(bar[countProp]) - y(filterBar[countProp]) : y(bar[countProp]);
167
187
  var inRange = isBarInRange(bar, idx, list, domain, value);
168
188
  var wRatio = inRange ? histogramStyle.highlightW : histogramStyle.unHighlightedW;
189
+ var bx0 = x(undefinedToZero(bar.x0));
190
+ var bx1 = x(undefinedToZero(bar.x1));
191
+ var binW = Math.max(bx1 - bx0, 1);
192
+ var drawnW = binW * wRatio;
169
193
  return /*#__PURE__*/_react["default"].createElement(Bar, {
170
194
  $inRange: inRange,
171
195
  $isOverlay: true,
172
196
  key: "bar-".concat(idx),
173
197
  height: maskHeight,
174
- width: barWidth * wRatio,
175
- x: x(bar.x0) + barWidth * (1 - wRatio) / 2,
198
+ width: drawnW,
199
+ x: bx0 + (binW - drawnW) / 2,
176
200
  y: height - y(bar[countProp])
177
201
  });
178
202
  })), /*#__PURE__*/_react["default"].createElement(HistogramBreakLine, null, (breakLines !== null && breakLines !== void 0 ? breakLines : []).map(function (pos, idx) {
@@ -182,7 +206,7 @@ function HistogramPlotFactory() {
182
206
  d: "M".concat(pos, ", 0 l0 100")
183
207
  });
184
208
  })), /*#__PURE__*/_react["default"].createElement("g", {
185
- transform: "translate(".concat(isRanged ? 0 : barWidth / 2, ", 0)")
209
+ transform: "translate(".concat(isRanged ? 0 : fallbackBarWidth / 2, ", 0)")
186
210
  }, brushComponent));
187
211
  };
188
212
  return isMasked ? maskedHistogram() : /*#__PURE__*/_react["default"].createElement(HistogramWrapper, {
@@ -191,33 +215,58 @@ function HistogramPlotFactory() {
191
215
  style: {
192
216
  margin: "".concat(margin.top, "px ").concat(margin.right, "px ").concat(margin.bottom, "px ").concat(margin.left, "px")
193
217
  }
194
- }, /*#__PURE__*/_react["default"].createElement("g", null, groupKeys.map(function (key, i) {
218
+ }, /*#__PURE__*/_react["default"].createElement("defs", null, /*#__PURE__*/_react["default"].createElement("clipPath", {
219
+ id: clipId
220
+ }, /*#__PURE__*/_react["default"].createElement("rect", {
221
+ x: "0",
222
+ y: "0",
223
+ width: width,
224
+ height: height
225
+ }))), /*#__PURE__*/_react["default"].createElement("g", {
226
+ transform: "translate(".concat(isRanged ? 0 : fallbackBarWidth / 2, ", 0)")
227
+ }, brushComponent), /*#__PURE__*/_react["default"].createElement("g", {
228
+ clipPath: "url(#".concat(clipId, ")"),
229
+ style: {
230
+ pointerEvents: 'none'
231
+ }
232
+ }, groupKeys.map(function (key, i) {
195
233
  return /*#__PURE__*/_react["default"].createElement("g", {
196
234
  key: key,
197
235
  className: "histogram-bars"
198
236
  }, histogramsByGroup[key].map(function (bar, idx, list) {
199
237
  var inRange = isBarInRange(bar, idx, list, domain, value);
200
238
  var wRatio = inRange ? histogramStyle.highlightW : histogramStyle.unHighlightedW;
201
- var startX = x(undefinedToZero(bar.x0)) + barWidth * i + barWidth * (1 - wRatio) / 2;
202
- if (startX > 0 && startX + barWidth * histogramStyle.unHighlightedW <= width) {
203
- return /*#__PURE__*/_react["default"].createElement(Bar, {
204
- $isOverlay: false,
205
- $inRange: inRange,
206
- $color: colorsByGroup === null || colorsByGroup === void 0 ? void 0 : colorsByGroup[key],
207
- key: "bar-".concat(idx),
208
- height: y(bar[countProp]),
209
- width: barWidth * wRatio,
210
- x: startX,
211
- rx: 1,
212
- ry: 1,
213
- y: height - y(bar[countProp])
214
- });
215
- }
216
- return null;
239
+ var bx0 = x(undefinedToZero(bar.x0));
240
+ var bx1 = x(undefinedToZero(bar.x1));
241
+ var binW = Math.max(bx1 - bx0, 1);
242
+ var perGroupW = isMasked ? binW : binW / groupKeys.length;
243
+ var drawnWidth = perGroupW * wRatio;
244
+ var groupOffset = groupKeys.length > 1 ? perGroupW * i + (perGroupW - drawnWidth) / 2 : (binW - drawnWidth) / 2;
245
+ var startX = bx0 + groupOffset;
246
+ return /*#__PURE__*/_react["default"].createElement(Bar, {
247
+ $isOverlay: false,
248
+ $inRange: inRange,
249
+ $color: colorsByGroup === null || colorsByGroup === void 0 ? void 0 : colorsByGroup[key],
250
+ key: "bar-".concat(idx),
251
+ height: y(bar[countProp]),
252
+ width: drawnWidth,
253
+ x: startX,
254
+ rx: 1,
255
+ ry: 1,
256
+ y: height - y(bar[countProp])
257
+ });
217
258
  }));
218
- })), /*#__PURE__*/_react["default"].createElement("g", {
219
- transform: "translate(".concat(isRanged ? 0 : barWidth / 2, ", 0)")
220
- }, brushComponent));
259
+ })), yAxisTicks ? /*#__PURE__*/_react["default"].createElement("g", {
260
+ className: "histogram-y-axis"
261
+ }, yAxisTicks.map(function (tick) {
262
+ return /*#__PURE__*/_react["default"].createElement(YAxisTick, {
263
+ key: tick,
264
+ x: -4,
265
+ y: height - y(tick),
266
+ textAnchor: "end",
267
+ dominantBaseline: "middle"
268
+ }, tick);
269
+ })) : null);
221
270
  };
222
271
  var HistogramPlotWithGroups = function HistogramPlotWithGroups(props) {
223
272
  var groups = (0, _react.useMemo)(function () {
@@ -231,4 +280,4 @@ function HistogramPlotFactory() {
231
280
  return HistogramPlotWithGroups;
232
281
  }
233
282
  var _default = exports["default"] = HistogramPlotFactory;
234
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfZDNTY2FsZSIsIl9kM0NvbG9yIiwiX2QzQXJyYXkiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIkhJU1RPR1JBTV9NQVNLX01PREUiLCJleHBvcnRzIiwiTm9NYXNrIiwiTWFzayIsIk1hc2tXaXRoT3ZlcmxheSIsIkhJU1RPR1JBTV9NQVNLX0JHQ09MT1IiLCJISVNUT0dSQU1fTUFTS19GR0NPTE9SIiwiaGlzdG9ncmFtU3R5bGUiLCJoaWdobGlnaHRXIiwidW5IaWdobGlnaHRlZFciLCJIaXN0b2dyYW1XcmFwcGVyIiwic3R5bGVkIiwic3ZnIiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJIaXN0b2dyYW1NYXNrUmVjdCIsInJlY3QiLCJwcm9wcyIsInRoZW1lIiwicGFuZWxCYWNrZ3JvdW5kIiwiSGlzdG9ncmFtQnJlYWtMaW5lIiwiZyIsImhpc3RvZ3JhbUJyZWFrTGluZUNvbG9yIiwiQmFyVW5tZW1vaXplZCIsIl9yZWYiLCIkaW5SYW5nZSIsIiRpc092ZXJsYXkiLCIkY29sb3IiLCJjb25jYXQiLCJoaXN0b2dyYW1PdmVybGF5Q29sb3IiLCJoaXN0b2dyYW1GaWxsSW5SYW5nZSIsImhjbCIsImRhcmtlciIsImhpc3RvZ3JhbUZpbGxPdXRSYW5nZSIsIkJhciIsIlJlYWN0IiwibWVtbyIsImRpc3BsYXlOYW1lIiwiaXNCYXJJblJhbmdlIiwiYmFyIiwiaW5kZXgiLCJsaXN0IiwiZmlsdGVyRG9tYWluIiwiZmlsdGVyVmFsdWUiLCJ4MENvbmRpdGlvbiIsIngwIiwieDFDb25kaXRpb24iLCJsZW5ndGgiLCJ4MSIsIkhpc3RvZ3JhbVBsb3RGYWN0b3J5IiwiSGlzdG9ncmFtUGxvdCIsIl9yZWYyIiwid2lkdGgiLCJoZWlnaHQiLCJoaXN0b2dyYW1zQnlHcm91cCIsImNvbG9yc0J5R3JvdXAiLCJfcmVmMiRpc01hc2tlZCIsImlzTWFza2VkIiwiX3JlZjIkY291bnRQcm9wIiwiY291bnRQcm9wIiwibWFyZ2luIiwiaXNSYW5nZWQiLCJyYW5nZSIsInZhbHVlIiwiYnJ1c2hDb21wb25lbnQiLCJicmVha0xpbmVzIiwidW5kZWZpbmVkVG9aZXJvIiwieCIsImdyb3VwS2V5cyIsInVzZU1lbW8iLCJrZXlzIiwiZmlsdGVyIiwia2V5IiwiX2hpc3RvZ3JhbXNCeUdyb3VwJGtlIiwiZG9tYWluIiwiX21pbiIsIl9tYXgiLCJtaW4iLCJtYXgiLCJiYXJXaWR0aCIsIm1heEdyb3VwIiwicmVkdWNlIiwiYWNjdSIsIl9pZHgiLCJzdGRCaW5JZHgiLCJ4U3RlcCIsIm1heEJpbnMiLCJzY2FsZUxpbmVhciIsInkiLCJNYXRoIiwiTnVtYmVyIiwiZCIsIm1hc2tlZEhpc3RvZ3JhbSIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsInRvcCIsInJpZ2h0IiwiYm90dG9tIiwibGVmdCIsImlkIiwiZmlsbCIsImNsYXNzTmFtZSIsImZpbHRlcmVkQmlucyIsIm1hcCIsImlkeCIsImluUmFuZ2UiLCJ3UmF0aW8iLCJ0cmFuc2Zvcm0iLCJtYXNrIiwiYmlucyIsImZpbHRlckJhciIsIm1hc2tIZWlnaHQiLCJwb3MiLCJzdHJva2VEYXNoYXJyYXkiLCJzdGFydFgiLCJyeCIsInJ5IiwiSGlzdG9ncmFtUGxvdFdpdGhHcm91cHMiLCJncm91cHMiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tb24vaGlzdG9ncmFtLXBsb3QudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge1JlYWN0RWxlbWVudCwgdXNlTWVtb30gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtzY2FsZUxpbmVhcn0gZnJvbSAnZDMtc2NhbGUnO1xuaW1wb3J0IHtoY2x9IGZyb20gJ2QzLWNvbG9yJztcbmltcG9ydCB7bWluLCBtYXh9IGZyb20gJ2QzLWFycmF5JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQge0JpbnN9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG4vLyBjbGlwcGluZyBtYXNrIGNvbnN0YW50c1xuZXhwb3J0IGNvbnN0IEhJU1RPR1JBTV9NQVNLX01PREUgPSB7XG4gIE5vTWFzazogMCxcbiAgTWFzazogMSxcbiAgTWFza1dpdGhPdmVybGF5OiAyXG59O1xuY29uc3QgSElTVE9HUkFNX01BU0tfQkdDT0xPUiA9ICcjRkZGRkZGJztcbmNvbnN0IEhJU1RPR1JBTV9NQVNLX0ZHQ09MT1IgPSAnIzAwMDAwMCc7XG5cbmNvbnN0IGhpc3RvZ3JhbVN0eWxlID0ge1xuICBoaWdobGlnaHRXOiAwLjcsXG4gIHVuSGlnaGxpZ2h0ZWRXOiAwLjRcbn07XG5cbmNvbnN0IEhpc3RvZ3JhbVdyYXBwZXIgPSBzdHlsZWQuc3ZnYFxuICBvdmVyZmxvdzogdmlzaWJsZTtcbmA7XG5cbmNvbnN0IEhpc3RvZ3JhbU1hc2tSZWN0ID0gc3R5bGVkLnJlY3RgXG4gIGZpbGw6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucGFuZWxCYWNrZ3JvdW5kfTtcbmA7XG5cbmNvbnN0IEhpc3RvZ3JhbUJyZWFrTGluZSA9IHN0eWxlZC5nYFxuICBzdHJva2U6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaGlzdG9ncmFtQnJlYWtMaW5lQ29sb3J9O1xuICBzdHJva2Utd2lkdGg6IDFweDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XG5gO1xuXG50eXBlIEJhclR5cGUgPSB7XG4gICRpblJhbmdlOiBib29sZWFuO1xuICAkaXNPdmVybGF5OiBib29sZWFuO1xuICAkY29sb3I/OiBzdHJpbmc7XG59O1xuY29uc3QgQmFyVW5tZW1vaXplZCA9IHN0eWxlZC5yZWN0PEJhclR5cGU+KFxuICAoe3RoZW1lLCAkaW5SYW5nZSwgJGlzT3ZlcmxheSwgJGNvbG9yfSkgPT4gYFxuICAke1xuICAgICRpc092ZXJsYXlcbiAgICAgID8gYGZpbGw6ICR7JGNvbG9yID8/IHRoZW1lLmhpc3RvZ3JhbU92ZXJsYXlDb2xvcn07YFxuICAgICAgOiAkaW5SYW5nZVxuICAgICAgPyBgZmlsbDogJHskY29sb3IgPz8gdGhlbWUuaGlzdG9ncmFtRmlsbEluUmFuZ2V9O2BcbiAgICAgIDogYGZpbGw6ICR7JGNvbG9yID8gaGNsKCRjb2xvcikuZGFya2VyKCkgOiB0aGVtZS5oaXN0b2dyYW1GaWxsT3V0UmFuZ2V9O2BcbiAgfVxuYFxuKTtcbmNvbnN0IEJhciA9IFJlYWN0Lm1lbW8oQmFyVW5tZW1vaXplZCk7XG5CYXIuZGlzcGxheU5hbWUgPSAnQmFyJztcblxuY29uc3QgaXNCYXJJblJhbmdlID0gKFxuICBiYXI6IHt4MDogbnVtYmVyOyB4MTogbnVtYmVyfSxcbiAgaW5kZXg6IG51bWJlcixcbiAgbGlzdDogYW55W10sXG4gIGZpbHRlckRvbWFpbjogYW55W10sXG4gIGZpbHRlclZhbHVlOiBhbnlbXVxuKSA9PiB7XG4gIC8vIGZpcnN0XG4gIC8vIGlmIHgwIDw9IGRvbWFpblswXSBhbmQgY3VycmVudCB2YWx1ZVswXSB3YXNuJ3QgY2hhbmdlZCBmcm9tIHRoZSBvcmlnaW5hbCBkb21haW5cbiAgY29uc3QgeDBDb25kaXRpb24gPVxuICAgIGluZGV4ID09PSAwID8gYmFyLngwIDw9IGZpbHRlckRvbWFpblswXSAmJiBmaWx0ZXJEb21haW5bMF0gPT09IGZpbHRlclZhbHVlWzBdIDogZmFsc2U7XG4gIC8vIExhc3RcbiAgLy8gaWYgeDEgPj0gZG9tYWluWzFdIGFuZCBjdXJyZW50IHZhbHVlWzFdIHdhc24ndCBjaGFuZ2VkIGZyb20gdGhlIG9yaWdpbmFsIGRvbWFpblxuICBjb25zdCB4MUNvbmRpdGlvbiA9XG4gICAgaW5kZXggPT09IGxpc3QubGVuZ3RoIC0gMVxuICAgICAgPyBiYXIueDEgPj0gZmlsdGVyRG9tYWluWzFdICYmIGZpbHRlckRvbWFpblsxXSA9PT0gZmlsdGVyVmFsdWVbMV1cbiAgICAgIDogZmFsc2U7XG4gIHJldHVybiAoeDBDb25kaXRpb24gfHwgYmFyLngwID49IGZpbHRlclZhbHVlWzBdKSAmJiAoeDFDb25kaXRpb24gfHwgYmFyLngxIDw9IGZpbHRlclZhbHVlWzFdKTtcbn07XG5cbmV4cG9ydCB0eXBlIEhpc3RvZ3JhbU1hc2tNb2RlVHlwZSA9IHtcbiAgTm9NYXNrOiBudW1iZXI7XG4gIE1hc2s6IG51bWJlcjtcbiAgTWFza1dpdGhPdmVybGF5OiBudW1iZXI7XG59O1xuXG5pbnRlcmZhY2UgSGlzdG9ncmFtUGxvdFByb3BzIHtcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG4gIG1hcmdpbjoge3RvcDogbnVtYmVyOyBib3R0b206IG51bWJlcjsgbGVmdDogbnVtYmVyOyByaWdodDogbnVtYmVyfTtcbiAgaXNSYW5nZWQ/OiBib29sZWFuO1xuICB2YWx1ZTogbnVtYmVyW107XG4gIGlzTWFza2VkPzogbnVtYmVyO1xuICBicnVzaENvbXBvbmVudD86IFJlYWN0RWxlbWVudDtcbiAgaGlzdG9ncmFtc0J5R3JvdXA6IEJpbnM7XG4gIGNvbG9yc0J5R3JvdXA/OiBudWxsIHwge1tkYXRhSWQ6IHN0cmluZ106IHN0cmluZ307XG4gIGNvdW50UHJvcD86IHN0cmluZztcbiAgcmFuZ2U/OiBudW1iZXJbXTtcbiAgYnJlYWtMaW5lcz86IG51bWJlcltdO1xufVxuXG5mdW5jdGlvbiBIaXN0b2dyYW1QbG90RmFjdG9yeSgpIHtcbiAgY29uc3QgSGlzdG9ncmFtUGxvdCA9ICh7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIGhpc3RvZ3JhbXNCeUdyb3VwLFxuICAgIGNvbG9yc0J5R3JvdXAsXG4gICAgaXNNYXNrZWQgPSBISVNUT0dSQU1fTUFTS19NT0RFLk5vTWFzayxcbiAgICBjb3VudFByb3AgPSAnY291bnQnLFxuICAgIG1hcmdpbixcbiAgICBpc1JhbmdlZCxcbiAgICByYW5nZSxcbiAgICB2YWx1ZSxcbiAgICBicnVzaENvbXBvbmVudCxcbiAgICBicmVha0xpbmVzXG4gIH06IEhpc3RvZ3JhbVBsb3RQcm9wcykgPT4ge1xuICAgIGNvbnN0IHVuZGVmaW5lZFRvWmVybyA9ICh4OiBudW1iZXIgfCB1bmRlZmluZWQpID0+ICh4ID8geCA6IDApO1xuICAgIGNvbnN0IGdyb3VwS2V5cyA9IHVzZU1lbW8oXG4gICAgICAoKSA9PlxuICAgICAgICBPYmplY3Qua2V5cyhoaXN0b2dyYW1zQnlHcm91cClcbiAgICAgICAgICAvLyBvbmx5IGtlZXAgbm9uLWVtcHR5IGdyb3Vwc1xuICAgICAgICAgIC5maWx0ZXIoa2V5ID0+IGhpc3RvZ3JhbXNCeUdyb3VwW2tleV0/Lmxlbmd0aCA+IDApLFxuICAgICAgW2hpc3RvZ3JhbXNCeUdyb3VwXVxuICAgICk7XG5cbiAgICBjb25zdCBkb21haW4gPSB1c2VNZW1vKFxuICAgICAgKCkgPT5cbiAgICAgICAgcmFuZ2UgPz8gW1xuICAgICAgICAgIG1pbihncm91cEtleXMsIGtleSA9PiBoaXN0b2dyYW1zQnlHcm91cFtrZXldWzBdLngwKSA/PyAwLFxuICAgICAgICAgIG1heChncm91cEtleXMsIGtleSA9PiBoaXN0b2dyYW1zQnlHcm91cFtrZXldW2hpc3RvZ3JhbXNCeUdyb3VwW2tleV0ubGVuZ3RoIC0gMV0ueDEpID8/IDBcbiAgICAgICAgXSxcbiAgICAgIFtyYW5nZSwgaGlzdG9ncmFtc0J5R3JvdXAsIGdyb3VwS2V5c11cbiAgICApO1xuXG4gICAgY29uc3QgYmFyV2lkdGggPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGlmIChncm91cEtleXMubGVuZ3RoID09PSAwKSByZXR1cm4gMDtcbiAgICAgIC8vIGZpbmQgaGlzdG9ncmFtc0J5R3JvdXAgd2l0aCBtYXggbnVtYmVyIG9mIGJpbnNcbiAgICAgIGNvbnN0IG1heEdyb3VwID0gZ3JvdXBLZXlzLnJlZHVjZSgoYWNjdSwga2V5LCBfaWR4KSA9PiB7XG4gICAgICAgIGlmIChoaXN0b2dyYW1zQnlHcm91cFtrZXldLmxlbmd0aCA+IGFjY3UubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIGhpc3RvZ3JhbXNCeUdyb3VwW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjY3U7XG4gICAgICB9LCBoaXN0b2dyYW1zQnlHcm91cFtncm91cEtleXNbMF1dKTtcblxuICAgICAgLy8gZmluZCB0aGUgYmluIGZvciBtZWFzdXJpbmcgc3RlcFxuICAgICAgY29uc3Qgc3RkQmluSWR4ID0gbWF4R3JvdXAubGVuZ3RoID4gMSA/IDEgOiAwO1xuICAgICAgY29uc3QgeFN0ZXAgPSBtYXhHcm91cFtzdGRCaW5JZHhdLngxIC0gbWF4R3JvdXBbc3RkQmluSWR4XS54MDtcbiAgICAgIGNvbnN0IG1heEJpbnMgPSAoZG9tYWluWzFdIC0gZG9tYWluWzBdKSAvIHhTdGVwO1xuICAgICAgaWYgKCFtYXhCaW5zKSByZXR1cm4gMDtcbiAgICAgIHJldHVybiB3aWR0aCAvIG1heEJpbnMgLyAoaXNNYXNrZWQgPyAxIDogZ3JvdXBLZXlzLmxlbmd0aCk7XG4gICAgfSwgW2hpc3RvZ3JhbXNCeUdyb3VwLCBkb21haW4sIGdyb3VwS2V5cywgd2lkdGgsIGlzTWFza2VkXSk7XG5cbiAgICBjb25zdCB4ID0gdXNlTWVtbyhcbiAgICAgICgpID0+IHNjYWxlTGluZWFyKCkuZG9tYWluKGRvbWFpbikucmFuZ2UoW2JhcldpZHRoLCB3aWR0aF0pLFxuICAgICAgW2RvbWFpbiwgd2lkdGgsIGJhcldpZHRoXVxuICAgICk7XG5cbiAgICBjb25zdCB5ID0gdXNlTWVtbyhcbiAgICAgICgpID0+XG4gICAgICAgIHNjYWxlTGluZWFyKClcbiAgICAgICAgICAuZG9tYWluKFtcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICBNYXRoLm1heChcbiAgICAgICAgICAgICAgTnVtYmVyKG1heChncm91cEtleXMsIGtleSA9PiBtYXgoaGlzdG9ncmFtc0J5R3JvdXBba2V5XSwgZCA9PiBkW2NvdW50UHJvcF0pKSksXG4gICAgICAgICAgICAgIDFcbiAgICAgICAgICAgIClcbiAgICAgICAgICBdKVxuICAgICAgICAgIC5yYW5nZShbMCwgaGVpZ2h0XSksXG4gICAgICBbaGlzdG9ncmFtc0J5R3JvdXAsIGdyb3VwS2V5cywgaGVpZ2h0LCBjb3VudFByb3BdXG4gICAgKTtcblxuICAgIGlmIChncm91cEtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBtYXNrZWRIaXN0b2dyYW0gPSAoKSA9PiB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8SGlzdG9ncmFtV3JhcHBlclxuICAgICAgICAgIHdpZHRoPXt3aWR0aH1cbiAgICAgICAgICBoZWlnaHQ9e2hlaWdodH1cbiAgICAgICAgICBzdHlsZT17e21hcmdpbjogYCR7bWFyZ2luLnRvcH1weCAke21hcmdpbi5yaWdodH1weCAke21hcmdpbi5ib3R0b219cHggJHttYXJnaW4ubGVmdH1weGB9fVxuICAgICAgICA+XG4gICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICA8bWFzayBpZD1cImhpc3RvZ3JhbS1tYXNrXCI+XG4gICAgICAgICAgICAgIDxyZWN0XG4gICAgICAgICAgICAgICAgeD1cIjBcIlxuICAgICAgICAgICAgICAgIHk9XCIwXCJcbiAgICAgICAgICAgICAgICB3aWR0aD17d2lkdGh9XG4gICAgICAgICAgICAgICAgaGVpZ2h0PXtoZWlnaHQgKyBtYXJnaW4uYm90dG9tfVxuICAgICAgICAgICAgICAgIGZpbGw9e0hJU1RPR1JBTV9NQVNLX0JHQ09MT1J9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxnIGtleT1cImZpbHRlcmVkLWJpbnNcIiBjbGFzc05hbWU9XCJoaXN0b2dyYW0tYmFyc1wiPlxuICAgICAgICAgICAgICAgIHtoaXN0b2dyYW1zQnlHcm91cC5maWx0ZXJlZEJpbnMubWFwKChiYXIsIGlkeCwgbGlzdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgaW5SYW5nZSA9IGlzQmFySW5SYW5nZShiYXIsIGlkeCwgbGlzdCwgZG9tYWluLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICBjb25zdCB3UmF0aW8gPSBpblJhbmdlXG4gICAgICAgICAgICAgICAgICAgID8gaGlzdG9ncmFtU3R5bGUuaGlnaGxpZ2h0V1xuICAgICAgICAgICAgICAgICAgICA6IGhpc3RvZ3JhbVN0eWxlLnVuSGlnaGxpZ2h0ZWRXO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPEJhclxuICAgICAgICAgICAgICAgICAgICAgICRpc092ZXJsYXk9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICRpblJhbmdlPXtpblJhbmdlfVxuICAgICAgICAgICAgICAgICAgICAgICRjb2xvcj17SElTVE9HUkFNX01BU0tfRkdDT0xPUn1cbiAgICAgICAgICAgICAgICAgICAgICBrZXk9e2BtYXNrLSR7aWR4fWB9XG4gICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXt5KGJhcltjb3VudFByb3BdKX1cbiAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17YmFyV2lkdGggKiB3UmF0aW99XG4gICAgICAgICAgICAgICAgICAgICAgeD17eChiYXIueDApICsgKGJhcldpZHRoICogKDEgLSB3UmF0aW8pKSAvIDJ9XG4gICAgICAgICAgICAgICAgICAgICAgeT17aGVpZ2h0IC0geShiYXJbY291bnRQcm9wXSl9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICA8L21hc2s+XG4gICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgIDxnIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLDApXCI+XG4gICAgICAgICAgICA8SGlzdG9ncmFtTWFza1JlY3RcbiAgICAgICAgICAgICAgeD1cIjBcIlxuICAgICAgICAgICAgICB5PVwiMFwiXG4gICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgIGhlaWdodD17aGVpZ2h0ICsgbWFyZ2luLmJvdHRvbX1cbiAgICAgICAgICAgICAgbWFzaz1cInVybCgjaGlzdG9ncmFtLW1hc2spXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9nPlxuICAgICAgICAgIHtpc01hc2tlZCA9PT0gSElTVE9HUkFNX01BU0tfTU9ERS5NYXNrV2l0aE92ZXJsYXkgJiYgKFxuICAgICAgICAgICAgPGcga2V5PVwiYmluc1wiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLDApXCIgY2xhc3NOYW1lPVwib3ZlcmxheS1oaXN0b2dyYW0tYmFyc1wiPlxuICAgICAgICAgICAgICB7aGlzdG9ncmFtc0J5R3JvdXAuYmlucy5tYXAoKGJhciwgaWR4LCBsaXN0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyQmFyID0gaGlzdG9ncmFtc0J5R3JvdXAuZmlsdGVyZWRCaW5zW2lkeF07XG4gICAgICAgICAgICAgICAgY29uc3QgbWFza0hlaWdodCA9IGZpbHRlckJhclxuICAgICAgICAgICAgICAgICAgPyB5KGJhcltjb3VudFByb3BdKSAtIHkoZmlsdGVyQmFyW2NvdW50UHJvcF0pXG4gICAgICAgICAgICAgICAgICA6IHkoYmFyW2NvdW50UHJvcF0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IGluUmFuZ2UgPSBpc0JhckluUmFuZ2UoYmFyLCBpZHgsIGxpc3QsIGRvbWFpbiwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHdSYXRpbyA9IGluUmFuZ2UgPyBoaXN0b2dyYW1TdHlsZS5oaWdobGlnaHRXIDogaGlzdG9ncmFtU3R5bGUudW5IaWdobGlnaHRlZFc7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxCYXJcbiAgICAgICAgICAgICAgICAgICAgJGluUmFuZ2U9e2luUmFuZ2V9XG4gICAgICAgICAgICAgICAgICAgICRpc092ZXJsYXk9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgIGtleT17YGJhci0ke2lkeH1gfVxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9e21hc2tIZWlnaHR9XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPXtiYXJXaWR0aCAqIHdSYXRpb31cbiAgICAgICAgICAgICAgICAgICAgeD17eChiYXIueDApICsgKGJhcldpZHRoICogKDEgLSB3UmF0aW8pKSAvIDJ9XG4gICAgICAgICAgICAgICAgICAgIHk9e2hlaWdodCAtIHkoYmFyW2NvdW50UHJvcF0pfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxIaXN0b2dyYW1CcmVha0xpbmU+XG4gICAgICAgICAgICB7KGJyZWFrTGluZXMgPz8gW10pLm1hcCgocG9zLCBpZHgpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8cGF0aCBrZXk9e2BtYXNrLWxpbmUtJHtpZHh9YH0gc3Ryb2tlRGFzaGFycmF5PVwiNCw0XCIgZD17YE0ke3Bvc30sIDAgbDAgMTAwYH0gLz5cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvSGlzdG9ncmFtQnJlYWtMaW5lPlxuICAgICAgICAgIDxnIHRyYW5zZm9ybT17YHRyYW5zbGF0ZSgke2lzUmFuZ2VkID8gMCA6IGJhcldpZHRoIC8gMn0sIDApYH0+e2JydXNoQ29tcG9uZW50fTwvZz5cbiAgICAgICAgPC9IaXN0b2dyYW1XcmFwcGVyPlxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGlzTWFza2VkID8gKFxuICAgICAgbWFza2VkSGlzdG9ncmFtKClcbiAgICApIDogKFxuICAgICAgPEhpc3RvZ3JhbVdyYXBwZXJcbiAgICAgICAgd2lkdGg9e3dpZHRofVxuICAgICAgICBoZWlnaHQ9e2hlaWdodH1cbiAgICAgICAgc3R5bGU9e3ttYXJnaW46IGAke21hcmdpbi50b3B9cHggJHttYXJnaW4ucmlnaHR9cHggJHttYXJnaW4uYm90dG9tfXB4ICR7bWFyZ2luLmxlZnR9cHhgfX1cbiAgICAgID5cbiAgICAgICAgPGc+XG4gICAgICAgICAge2dyb3VwS2V5cy5tYXAoKGtleSwgaSkgPT4gKFxuICAgICAgICAgICAgPGcga2V5PXtrZXl9IGNsYXNzTmFtZT1cImhpc3RvZ3JhbS1iYXJzXCI+XG4gICAgICAgICAgICAgIHtoaXN0b2dyYW1zQnlHcm91cFtrZXldLm1hcCgoYmFyLCBpZHgsIGxpc3QpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpblJhbmdlID0gaXNCYXJJblJhbmdlKGJhciwgaWR4LCBsaXN0LCBkb21haW4sIHZhbHVlKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHdSYXRpbyA9IGluUmFuZ2UgPyBoaXN0b2dyYW1TdHlsZS5oaWdobGlnaHRXIDogaGlzdG9ncmFtU3R5bGUudW5IaWdobGlnaHRlZFc7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnRYID1cbiAgICAgICAgICAgICAgICAgIHgodW5kZWZpbmVkVG9aZXJvKGJhci54MCkpICsgYmFyV2lkdGggKiBpICsgKGJhcldpZHRoICogKDEgLSB3UmF0aW8pKSAvIDI7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXJ0WCA+IDAgJiYgc3RhcnRYICsgYmFyV2lkdGggKiBoaXN0b2dyYW1TdHlsZS51bkhpZ2hsaWdodGVkVyA8PSB3aWR0aCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPEJhclxuICAgICAgICAgICAgICAgICAgICAgICRpc092ZXJsYXk9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICRpblJhbmdlPXtpblJhbmdlfVxuICAgICAgICAgICAgICAgICAgICAgICRjb2xvcj17Y29sb3JzQnlHcm91cD8uW2tleV19XG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtgYmFyLSR7aWR4fWB9XG4gICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXt5KGJhcltjb3VudFByb3BdKX1cbiAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17YmFyV2lkdGggKiB3UmF0aW99XG4gICAgICAgICAgICAgICAgICAgICAgeD17c3RhcnRYfVxuICAgICAgICAgICAgICAgICAgICAgIHJ4PXsxfVxuICAgICAgICAgICAgICAgICAgICAgIHJ5PXsxfVxuICAgICAgICAgICAgICAgICAgICAgIHk9e2hlaWdodCAtIHkoYmFyW2NvdW50UHJvcF0pfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L2c+XG4gICAgICAgIDxnIHRyYW5zZm9ybT17YHRyYW5zbGF0ZSgke2lzUmFuZ2VkID8gMCA6IGJhcldpZHRoIC8gMn0sIDApYH0+e2JydXNoQ29tcG9uZW50fTwvZz5cbiAgICAgIDwvSGlzdG9ncmFtV3JhcHBlcj5cbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IEhpc3RvZ3JhbVBsb3RXaXRoR3JvdXBzID0gcHJvcHMgPT4ge1xuICAgIGNvbnN0IGdyb3VwcyA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiAocHJvcHMuaGlzdG9ncmFtc0J5R3JvdXAgPyBPYmplY3Qua2V5cyhwcm9wcy5oaXN0b2dyYW1zQnlHcm91cCkgOiBudWxsKSxcbiAgICAgIFtwcm9wcy5oaXN0b2dyYW1zQnlHcm91cF1cbiAgICApO1xuXG4gICAgaWYgKCFncm91cHM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIDxIaXN0b2dyYW1QbG90IHsuLi5wcm9wc30gLz47XG4gIH07XG5cbiAgcmV0dXJuIEhpc3RvZ3JhbVBsb3RXaXRoR3JvdXBzO1xufVxuZXhwb3J0IGRlZmF1bHQgSGlzdG9ncmFtUGxvdEZhY3Rvcnk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFFBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFFBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLGlCQUFBLEdBQUFDLHNCQUFBLENBQUFMLE9BQUE7QUFBdUMsSUFBQU0sZUFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQVB2QztBQUNBO0FBQUEsU0FBQUMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFYLHdCQUFBVyxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLE9BQUEsQ0FBQUwsQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFBRyxDQUFBLEdBQUFKLHdCQUFBLENBQUFHLENBQUEsT0FBQUMsQ0FBQSxJQUFBQSxDQUFBLENBQUFHLEdBQUEsQ0FBQU4sQ0FBQSxVQUFBRyxD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
283
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfZDNTY2FsZSIsIl9kM0NvbG9yIiwiX2QzQXJyYXkiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl90ZW1wbGF0ZU9iamVjdDQiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJISVNUT0dSQU1fTUFTS19NT0RFIiwiZXhwb3J0cyIsIk5vTWFzayIsIk1hc2siLCJNYXNrV2l0aE92ZXJsYXkiLCJISVNUT0dSQU1fTUFTS19CR0NPTE9SIiwiSElTVE9HUkFNX01BU0tfRkdDT0xPUiIsImhpc3RvZ3JhbVN0eWxlIiwiaGlnaGxpZ2h0VyIsInVuSGlnaGxpZ2h0ZWRXIiwiSGlzdG9ncmFtV3JhcHBlciIsInN0eWxlZCIsInN2ZyIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwiSGlzdG9ncmFtTWFza1JlY3QiLCJyZWN0IiwicHJvcHMiLCJ0aGVtZSIsInBhbmVsQmFja2dyb3VuZCIsIkhpc3RvZ3JhbUJyZWFrTGluZSIsImciLCJoaXN0b2dyYW1CcmVha0xpbmVDb2xvciIsIllBeGlzVGljayIsInRleHQiLCJ0ZXh0Q29sb3IiLCJCYXJVbm1lbW9pemVkIiwiX3JlZiIsIiRpblJhbmdlIiwiJGlzT3ZlcmxheSIsIiRjb2xvciIsImNvbmNhdCIsImhpc3RvZ3JhbU92ZXJsYXlDb2xvciIsImhpc3RvZ3JhbUZpbGxJblJhbmdlIiwiaGNsIiwiZGFya2VyIiwiaGlzdG9ncmFtRmlsbE91dFJhbmdlIiwiQmFyIiwiUmVhY3QiLCJtZW1vIiwiZGlzcGxheU5hbWUiLCJpc0JhckluUmFuZ2UiLCJiYXIiLCJfaW5kZXgiLCJfbGlzdCIsIl9maWx0ZXJEb21haW4iLCJmaWx0ZXJWYWx1ZSIsIngxIiwieDAiLCJ1bmRlZmluZWRUb1plcm8iLCJ2IiwiSGlzdG9ncmFtUGxvdEZhY3RvcnkiLCJIaXN0b2dyYW1QbG90IiwiX3JlZjIiLCJ3aWR0aCIsImhlaWdodCIsImhpc3RvZ3JhbXNCeUdyb3VwIiwiY29sb3JzQnlHcm91cCIsIl9yZWYyJGlzTWFza2VkIiwiaXNNYXNrZWQiLCJpc0VubGFyZ2VkIiwiX3JlZjIkY291bnRQcm9wIiwiY291bnRQcm9wIiwibWFyZ2luIiwiaXNSYW5nZWQiLCJyYW5nZSIsInZhbHVlIiwiYnJ1c2hDb21wb25lbnQiLCJicmVha0xpbmVzIiwiZ3JvdXBLZXlzIiwidXNlTWVtbyIsImtleXMiLCJmaWx0ZXIiLCJrZXkiLCJfaGlzdG9ncmFtc0J5R3JvdXAka2UiLCJsZW5ndGgiLCJkb21haW4iLCJfbWluIiwiX21heCIsIm1pbiIsIm1heCIsIm51bUJpbnMiLCJtYXhHcm91cCIsInJlZHVjZSIsImFjY3UiLCJfaWR4IiwieCIsInNjYWxlTGluZWFyIiwiZmFsbGJhY2tCYXJXaWR0aCIsInkiLCJNYXRoIiwiTnVtYmVyIiwiZCIsInlBeGlzVGlja3MiLCJ5TWF4IiwidGlja0NvdW50IiwidGlja3MiLCJjbGlwSWRSZWYiLCJ1c2VSZWYiLCJyYW5kb20iLCJ0b1N0cmluZyIsInNsaWNlIiwiY2xpcElkIiwiY3VycmVudCIsIm1hc2tlZEhpc3RvZ3JhbSIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsInRvcCIsInJpZ2h0IiwiYm90dG9tIiwibGVmdCIsImlkIiwiZmlsbCIsImNsYXNzTmFtZSIsImZpbHRlcmVkQmlucyIsIm1hcCIsImlkeCIsImxpc3QiLCJpblJhbmdlIiwid1JhdGlvIiwiYngwIiwiYngxIiwiYmluVyIsImRyYXduVyIsInRyYW5zZm9ybSIsIm1hc2siLCJjbGlwUGF0aCIsImJpbnMiLCJmaWx0ZXJCYXIiLCJtYXNrSGVpZ2h0IiwicG9zIiwic3Ryb2tlRGFzaGFycmF5IiwicG9pbnRlckV2ZW50cyIsInBlckdyb3VwVyIsImRyYXduV2lkdGgiLCJncm91cE9mZnNldCIsInN0YXJ0WCIsInJ4IiwicnkiLCJ0aWNrIiwidGV4dEFuY2hvciIsImRvbWluYW50QmFzZWxpbmUiLCJIaXN0b2dyYW1QbG90V2l0aEdyb3VwcyIsImdyb3VwcyIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1vbi9oaXN0b2dyYW0tcGxvdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7UmVhY3RFbGVtZW50LCB1c2VNZW1vLCB1c2VSZWZ9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7c2NhbGVMaW5lYXJ9IGZyb20gJ2QzLXNjYWxlJztcbmltcG9ydCB7aGNsfSBmcm9tICdkMy1jb2xvcic7XG5pbXBvcnQge21pbiwgbWF4fSBmcm9tICdkMy1hcnJheSc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxuaW1wb3J0IHtCaW5zfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuLy8gY2xpcHBpbmcgbWFzayBjb25zdGFudHNcbmV4cG9ydCBjb25zdCBISVNUT0dSQU1fTUFTS19NT0RFID0ge1xuICBOb01hc2s6IDAsXG4gIE1hc2s6IDEsXG4gIE1hc2tXaXRoT3ZlcmxheTogMlxufTtcbmNvbnN0IEhJU1RPR1JBTV9NQVNLX0JHQ09MT1IgPSAnI0ZGRkZGRic7XG5jb25zdCBISVNUT0dSQU1fTUFTS19GR0NPTE9SID0gJyMwMDAwMDAnO1xuXG5jb25zdCBoaXN0b2dyYW1TdHlsZSA9IHtcbiAgaGlnaGxpZ2h0VzogMC43LFxuICB1bkhpZ2hsaWdodGVkVzogMC43XG59O1xuXG5jb25zdCBIaXN0b2dyYW1XcmFwcGVyID0gc3R5bGVkLnN2Z2BcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG5gO1xuXG5jb25zdCBIaXN0b2dyYW1NYXNrUmVjdCA9IHN0eWxlZC5yZWN0YFxuICBmaWxsOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnBhbmVsQmFja2dyb3VuZH07XG5gO1xuXG5jb25zdCBIaXN0b2dyYW1CcmVha0xpbmUgPSBzdHlsZWQuZ2BcbiAgc3Ryb2tlOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmhpc3RvZ3JhbUJyZWFrTGluZUNvbG9yfTtcbiAgc3Ryb2tlLXdpZHRoOiAxcHg7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xuYDtcblxuY29uc3QgWUF4aXNUaWNrID0gc3R5bGVkLnRleHRgXG4gIGZvbnQtc2l6ZTogOXB4O1xuICBmaWxsOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvcn07XG5gO1xuXG50eXBlIEJhclR5cGUgPSB7XG4gICRpblJhbmdlOiBib29sZWFuO1xuICAkaXNPdmVybGF5OiBib29sZWFuO1xuICAkY29sb3I/OiBzdHJpbmc7XG59O1xuY29uc3QgQmFyVW5tZW1vaXplZCA9IHN0eWxlZC5yZWN0PEJhclR5cGU+KFxuICAoe3RoZW1lLCAkaW5SYW5nZSwgJGlzT3ZlcmxheSwgJGNvbG9yfSkgPT4gYFxuICAke1xuICAgICRpc092ZXJsYXlcbiAgICAgID8gYGZpbGw6ICR7JGNvbG9yID8/IHRoZW1lLmhpc3RvZ3JhbU92ZXJsYXlDb2xvcn07YFxuICAgICAgOiAkaW5SYW5nZVxuICAgICAgPyBgZmlsbDogJHskY29sb3IgPz8gdGhlbWUuaGlzdG9ncmFtRmlsbEluUmFuZ2V9O2BcbiAgICAgIDogYGZpbGw6ICR7JGNvbG9yID8gaGNsKCRjb2xvcikuZGFya2VyKCkgOiB0aGVtZS5oaXN0b2dyYW1GaWxsT3V0UmFuZ2V9O2BcbiAgfVxuYFxuKTtcbmNvbnN0IEJhciA9IFJlYWN0Lm1lbW8oQmFyVW5tZW1vaXplZCk7XG5CYXIuZGlzcGxheU5hbWUgPSAnQmFyJztcblxuY29uc3QgaXNCYXJJblJhbmdlID0gKFxuICBiYXI6IHt4MDogbnVtYmVyOyB4MTogbnVtYmVyfSxcbiAgX2luZGV4OiBudW1iZXIsXG4gIF9saXN0OiBhbnlbXSxcbiAgX2ZpbHRlckRvbWFpbjogYW55W10sXG4gIGZpbHRlclZhbHVlOiBhbnlbXVxuKSA9PiBiYXIueDEgPiBmaWx0ZXJWYWx1ZVswXSAmJiBiYXIueDAgPCBmaWx0ZXJWYWx1ZVsxXTtcblxuZXhwb3J0IHR5cGUgSGlzdG9ncmFtTWFza01vZGVUeXBlID0ge1xuICBOb01hc2s6IG51bWJlcjtcbiAgTWFzazogbnVtYmVyO1xuICBNYXNrV2l0aE92ZXJsYXk6IG51bWJlcjtcbn07XG5cbmNvbnN0IHVuZGVmaW5lZFRvWmVybyA9ICh2OiBudW1iZXIgfCB1bmRlZmluZWQpID0+ICh2ID8gdiA6IDApO1xuXG5pbnRlcmZhY2UgSGlzdG9ncmFtUGxvdFByb3BzIHtcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG4gIG1hcmdpbjoge3RvcDogbnVtYmVyOyBib3R0b206IG51bWJlcjsgbGVmdDogbnVtYmVyOyByaWdodDogbnVtYmVyfTtcbiAgaXNSYW5nZWQ/OiBib29sZWFuO1xuICBpc0VubGFyZ2VkPzogYm9vbGVhbjtcbiAgdmFsdWU6IG51bWJlcltdO1xuICBpc01hc2tlZD86IG51bWJlcjtcbiAgYnJ1c2hDb21wb25lbnQ/OiBSZWFjdEVsZW1lbnQ7XG4gIGhpc3RvZ3JhbXNCeUdyb3VwOiBCaW5zO1xuICBjb2xvcnNCeUdyb3VwPzogbnVsbCB8IHtbZGF0YUlkOiBzdHJpbmddOiBzdHJpbmd9O1xuICBjb3VudFByb3A/OiBzdHJpbmc7XG4gIHJhbmdlPzogbnVtYmVyW107XG4gIGJyZWFrTGluZXM/OiBudW1iZXJbXTtcbn1cblxuZnVuY3Rpb24gSGlzdG9ncmFtUGxvdEZhY3RvcnkoKSB7XG4gIGNvbnN0IEhpc3RvZ3JhbVBsb3QgPSAoe1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICBoaXN0b2dyYW1zQnlHcm91cCxcbiAgICBjb2xvcnNCeUdyb3VwLFxuICAgIGlzTWFza2VkID0gSElTVE9HUkFNX01BU0tfTU9ERS5Ob01hc2ssXG4gICAgaXNFbmxhcmdlZCxcbiAgICBjb3VudFByb3AgPSAnY291bnQnLFxuICAgIG1hcmdpbixcbiAgICBpc1JhbmdlZCxcbiAgICByYW5nZSxcbiAgICB2YWx1ZSxcbiAgICBicnVzaENvbXBvbmVudCxcbiAgICBicmVha0xpbmVzXG4gIH06IEhpc3RvZ3JhbVBsb3RQcm9wcykgPT4ge1xuICAgIGNvbnN0IGdyb3VwS2V5cyA9IHVzZU1lbW8oXG4gICAgICAoKSA9PlxuICAgICAgICBPYmplY3Qua2V5cyhoaXN0b2dyYW1zQnlHcm91cClcbiAgICAgICAgICAvLyBvbmx5IGtlZXAgbm9uLWVtcHR5IGdyb3Vwc1xuICAgICAgICAgIC5maWx0ZXIoa2V5ID0+IGhpc3RvZ3JhbXNCeUdyb3VwW2tleV0/Lmxlbmd0aCA+IDApLFxuICAgICAgW2hpc3RvZ3JhbXNCeUdyb3VwXVxuICAgICk7XG5cbiAgICBjb25zdCBkb21haW4gPSB1c2VNZW1vKFxuICAgICAgKCkgPT5cbiAgICAgICAgcmFuZ2UgPz8gW1xuICAgICAgICAgIG1pbihncm91cEtleXMsIGtleSA9PiBoaXN0b2dyYW1zQnlHcm91cFtrZXldWzBdLngwKSA/PyAwLFxuICAgICAgICAgIG1heChncm91cEtleXMsIGtleSA9PiBoaXN0b2dyYW1zQnlHcm91cFtrZXldW2hpc3RvZ3JhbXNCeUdyb3VwW2tleV0ubGVuZ3RoIC0gMV0ueDEpID8/IDBcbiAgICAgICAgXSxcbiAgICAgIFtyYW5nZSwgaGlzdG9ncmFtc0J5R3JvdXAsIGdyb3VwS2V5c11cbiAgICApO1xuXG4gICAgY29uc3QgbnVtQmlucyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgaWYgKGdyb3VwS2V5cy5sZW5ndGggPT09IDApIHJldHVybiAwO1xuICAgICAgY29uc3QgbWF4R3JvdXAgPSBncm91cEtleXMucmVkdWNlKChhY2N1LCBrZXksIF9pZHgpID0+IHtcbiAgICAgICAgaWYgKGhpc3RvZ3JhbXNCeUdyb3VwW2tleV0ubGVuZ3RoID4gYWNjdS5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gaGlzdG9ncmFtc0J5R3JvdXBba2V5XTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjdTtcbiAgICAgIH0sIGhpc3RvZ3JhbXNCeUdyb3VwW2dyb3VwS2V5c1swXV0pO1xuICAgICAgcmV0dXJuIG1heEdyb3VwLmxlbmd0aDtcbiAgICB9LCBbaGlzdG9ncmFtc0J5R3JvdXAsIGdyb3VwS2V5c10pO1xuXG4gICAgY29uc3QgeCA9IHVzZU1lbW8oKCkgPT4gc2NhbGVMaW5lYXIoKS5kb21haW4oZG9tYWluKS5yYW5nZShbMCwgd2lkdGhdKSwgW2RvbWFpbiwgd2lkdGhdKTtcblxuICAgIGNvbnN0IGZhbGxiYWNrQmFyV2lkdGggPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGlmIChudW1CaW5zID09PSAwKSByZXR1cm4gMDtcbiAgICAgIHJldHVybiB3aWR0aCAvIG51bUJpbnM7XG4gICAgfSwgW251bUJpbnMsIHdpZHRoXSk7XG5cbiAgICBjb25zdCB5ID0gdXNlTWVtbyhcbiAgICAgICgpID0+XG4gICAgICAgIHNjYWxlTGluZWFyKClcbiAgICAgICAgICAuZG9tYWluKFtcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICBNYXRoLm1heChcbiAgICAgICAgICAgICAgTnVtYmVyKG1heChncm91cEtleXMsIGtleSA9PiBtYXgoaGlzdG9ncmFtc0J5R3JvdXBba2V5XSwgZCA9PiBkW2NvdW50UHJvcF0pKSksXG4gICAgICAgICAgICAgIDFcbiAgICAgICAgICAgIClcbiAgICAgICAgICBdKVxuICAgICAgICAgIC5yYW5nZShbMCwgaGVpZ2h0XSksXG4gICAgICBbaGlzdG9ncmFtc0J5R3JvdXAsIGdyb3VwS2V5cywgaGVpZ2h0LCBjb3VudFByb3BdXG4gICAgKTtcblxuICAgIGNvbnN0IHlBeGlzVGlja3MgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGlmICghaXNFbmxhcmdlZCkgcmV0dXJuIG51bGw7XG4gICAgICBjb25zdCB5TWF4ID0gTWF0aC5tYXgoXG4gICAgICAgIE51bWJlcihtYXgoZ3JvdXBLZXlzLCBrZXkgPT4gbWF4KGhpc3RvZ3JhbXNCeUdyb3VwW2tleV0sIGQgPT4gZFtjb3VudFByb3BdKSkpLFxuICAgICAgICAxXG4gICAgICApO1xuICAgICAgY29uc3QgdGlja0NvdW50ID0gMztcbiAgICAgIGNvbnN0IHRpY2tzID0gc2NhbGVMaW5lYXIoKS5kb21haW4oWzAsIHlNYXhdKS50aWNrcyh0aWNrQ291bnQpO1xuICAgICAgcmV0dXJuIHRpY2tzO1xuICAgIH0sIFtpc0VubGFyZ2VkLCBncm91cEtleXMsIGhpc3RvZ3JhbXNCeUdyb3VwLCBjb3VudFByb3BdKTtcblxuICAgIGNvbnN0IGNsaXBJZFJlZiA9IHVzZVJlZihgaGlzdG9ncmFtLWNsaXAtJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKX1gKTtcbiAgICBjb25zdCBjbGlwSWQgPSBjbGlwSWRSZWYuY3VycmVudDtcblxuICAgIGlmIChncm91cEtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBtYXNrZWRIaXN0b2dyYW0gPSAoKSA9PiB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8SGlzdG9ncmFtV3JhcHBlclxuICAgICAgICAgIHdpZHRoPXt3aWR0aH1cbiAgICAgICAgICBoZWlnaHQ9e2hlaWdodH1cbiAgICAgICAgICBzdHlsZT17e21hcmdpbjogYCR7bWFyZ2luLnRvcH1weCAke21hcmdpbi5yaWdodH1weCAke21hcmdpbi5ib3R0b219cHggJHttYXJnaW4ubGVmdH1weGB9fVxuICAgICAgICA+XG4gICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICA8Y2xpcFBhdGggaWQ9e2Ake2NsaXBJZH0tbWFza2B9PlxuICAgICAgICAgICAgICA8cmVjdCB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9e3dpZHRofSBoZWlnaHQ9e2hlaWdodCArIG1hcmdpbi5ib3R0b219IC8+XG4gICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgPG1hc2sgaWQ9XCJoaXN0b2dyYW0tbWFza1wiPlxuICAgICAgICAgICAgICA8cmVjdFxuICAgICAgICAgICAgICAgIHg9XCIwXCJcbiAgICAgICAgICAgICAgICB5PVwiMFwiXG4gICAgICAgICAgICAgICAgd2lkdGg9e3dpZHRofVxuICAgICAgICAgICAgICAgIGhlaWdodD17aGVpZ2h0ICsgbWFyZ2luLmJvdHRvbX1cbiAgICAgICAgICAgICAgICBmaWxsPXtISVNUT0dSQU1fTUFTS19CR0NPTE9SfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8ZyBrZXk9XCJmaWx0ZXJlZC1iaW5zXCIgY2xhc3NOYW1lPVwiaGlzdG9ncmFtLWJhcnNcIj5cbiAgICAgICAgICAgICAgICB7aGlzdG9ncmFtc0J5R3JvdXAuZmlsdGVyZWRCaW5zLm1hcCgoYmFyLCBpZHgsIGxpc3QpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGluUmFuZ2UgPSBpc0JhckluUmFuZ2UoYmFyLCBpZHgsIGxpc3QsIGRvbWFpbiwgdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgY29uc3Qgd1JhdGlvID0gaW5SYW5nZVxuICAgICAgICAgICAgICAgICAgICA/IGhpc3RvZ3JhbVN0eWxlLmhpZ2hsaWdodFdcbiAgICAgICAgICAgICAgICAgICAgOiBoaXN0b2dyYW1TdHlsZS51bkhpZ2hsaWdodGVkVztcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGJ4MCA9IHgodW5kZWZpbmVkVG9aZXJvKGJhci54MCkpO1xuICAgICAgICAgICAgICAgICAgY29uc3QgYngxID0geCh1bmRlZmluZWRUb1plcm8oYmFyLngxKSk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBiaW5XID0gTWF0aC5tYXgoYngxIC0gYngwLCAxKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGRyYXduVyA9IGJpblcgKiB3UmF0aW87XG4gICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8QmFyXG4gICAgICAgICAgICAgICAgICAgICAgJGlzT3ZlcmxheT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgJGluUmFuZ2U9e2luUmFuZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgJGNvbG9yPXtISVNUT0dSQU1fTUFTS19GR0NPTE9SfVxuICAgICAgICAgICAgICAgICAgICAgIGtleT17YG1hc2stJHtpZHh9YH1cbiAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9e3koYmFyW2NvdW50UHJvcF0pfVxuICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXtkcmF3bld9XG4gICAgICAgICAgICAgICAgICAgICAgeD17YngwICsgKGJpblcgLSBkcmF3blcpIC8gMn1cbiAgICAgICAgICAgICAgICAgICAgICB5PXtoZWlnaHQgLSB5KGJhcltjb3VudFByb3BdKX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgIDwvbWFzaz5cbiAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgPGcgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAsMClcIj5cbiAgICAgICAgICAgIDxIaXN0b2dyYW1NYXNrUmVjdFxuICAgICAgICAgICAgICB4PVwiMFwiXG4gICAgICAgICAgICAgIHk9XCIwXCJcbiAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgaGVpZ2h0PXtoZWlnaHQgKyBtYXJnaW4uYm90dG9tfVxuICAgICAgICAgICAgICBtYXNrPVwidXJsKCNoaXN0b2dyYW0tbWFzaylcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2c+XG4gICAgICAgICAge2lzTWFza2VkID09PSBISVNUT0dSQU1fTUFTS19NT0RFLk1hc2tXaXRoT3ZlcmxheSAmJiAoXG4gICAgICAgICAgICA8Z1xuICAgICAgICAgICAgICBrZXk9XCJiaW5zXCJcbiAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAsMClcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvdmVybGF5LWhpc3RvZ3JhbS1iYXJzXCJcbiAgICAgICAgICAgICAgY2xpcFBhdGg9e2B1cmwoIyR7Y2xpcElkfS1tYXNrKWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtoaXN0b2dyYW1zQnlHcm91cC5iaW5zLm1hcCgoYmFyLCBpZHgsIGxpc3QpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJCYXIgPSBoaXN0b2dyYW1zQnlHcm91cC5maWx0ZXJlZEJpbnNbaWR4XTtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXNrSGVpZ2h0ID0gZmlsdGVyQmFyXG4gICAgICAgICAgICAgICAgICA/IHkoYmFyW2NvdW50UHJvcF0pIC0geShmaWx0ZXJCYXJbY291bnRQcm9wXSlcbiAgICAgICAgICAgICAgICAgIDogeShiYXJbY291bnRQcm9wXSk7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5SYW5nZSA9IGlzQmFySW5SYW5nZShiYXIsIGlkeCwgbGlzdCwgZG9tYWluLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgd1JhdGlvID0gaW5SYW5nZSA/IGhpc3RvZ3JhbVN0eWxlLmhpZ2hsaWdodFcgOiBoaXN0b2dyYW1TdHlsZS51bkhpZ2hsaWdodGVkVztcbiAgICAgICAgICAgICAgICBjb25zdCBieDAgPSB4KHVuZGVmaW5lZFRvWmVybyhiYXIueDApKTtcbiAgICAgICAgICAgICAgICBjb25zdCBieDEgPSB4KHVuZGVmaW5lZFRvWmVybyhiYXIueDEpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBiaW5XID0gTWF0aC5tYXgoYngxIC0gYngwLCAxKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkcmF3blcgPSBiaW5XICogd1JhdGlvO1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8QmFyXG4gICAgICAgICAgICAgICAgICAgICRpblJhbmdlPXtpblJhbmdlfVxuICAgICAgICAgICAgICAgICAgICAkaXNPdmVybGF5PXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICBrZXk9e2BiYXItJHtpZHh9YH1cbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXttYXNrSGVpZ2h0fVxuICAgICAgICAgICAgICAgICAgICB3aWR0aD17ZHJhd25XfVxuICAgICAgICAgICAgICAgICAgICB4PXtieDAgKyAoYmluVyAtIGRyYXduVykgLyAyfVxuICAgICAgICAgICAgICAgICAgICB5PXtoZWlnaHQgLSB5KGJhcltjb3VudFByb3BdKX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICA8L2c+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8SGlzdG9ncmFtQnJlYWtMaW5lPlxuICAgICAgICAgICAgeyhicmVha0xpbmVzID8/IFtdKS5tYXAoKHBvcywgaWR4KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPHBhdGgga2V5PXtgbWFzay1saW5lLSR7aWR4fWB9IHN0cm9rZURhc2hhcnJheT1cIjQsNFwiIGQ9e2BNJHtwb3N9LCAwIGwwIDEwMGB9IC8+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L0hpc3RvZ3JhbUJyZWFrTGluZT5cbiAgICAgICAgICA8ZyB0cmFuc2Zvcm09e2B0cmFuc2xhdGUoJHtpc1JhbmdlZCA/IDAgOiBmYWxsYmFja0JhcldpZHRoIC8gMn0sIDApYH0+e2JydXNoQ29tcG9uZW50fTwvZz5cbiAgICAgICAgPC9IaXN0b2dyYW1XcmFwcGVyPlxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGlzTWFza2VkID8gKFxuICAgICAgbWFza2VkSGlzdG9ncmFtKClcbiAgICApIDogKFxuICAgICAgPEhpc3RvZ3JhbVdyYXBwZXJcbiAgICAgICAgd2lkdGg9e3dpZHRofVxuICAgICAgICBoZWlnaHQ9e2hlaWdodH1cbiAgICAgICAgc3R5bGU9e3ttYXJnaW46IGAke21hcmdpbi50b3B9cHggJHttYXJnaW4ucmlnaHR9cHggJHttYXJnaW4uYm90dG9tfXB4ICR7bWFyZ2luLmxlZnR9cHhgfX1cbiAgICAgID5cbiAgICAgICAgPGRlZnM+XG4gICAgICAgICAgPGNsaXBQYXRoIGlkPXtjbGlwSWR9PlxuICAgICAgICAgICAgPHJlY3QgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPXt3aWR0aH0gaGVpZ2h0PXtoZWlnaHR9IC8+XG4gICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgPC9kZWZzPlxuICAgICAgICA8ZyB0cmFuc2Zvcm09e2B0cmFuc2xhdGUoJHtpc1JhbmdlZCA/IDAgOiBmYWxsYmFja0JhcldpZHRoIC8gMn0sIDApYH0+e2JydXNoQ29tcG9uZW50fTwvZz5cbiAgICAgICAgPGcgY2xpcFBhdGg9e2B1cmwoIyR7Y2xpcElkfSlgfSBzdHlsZT17e3BvaW50ZXJFdmVudHM6ICdub25lJ319PlxuICAgICAgICAgIHtncm91cEtleXMubWFwKChrZXksIGkpID0+IChcbiAgICAgICAgICAgIDxnIGtleT17a2V5fSBjbGFzc05hbWU9XCJoaXN0b2dyYW0tYmFyc1wiPlxuICAgICAgICAgICAgICB7aGlzdG9ncmFtc0J5R3JvdXBba2V5XS5tYXAoKGJhciwgaWR4LCBsaXN0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5SYW5nZSA9IGlzQmFySW5SYW5nZShiYXIsIGlkeCwgbGlzdCwgZG9tYWluLCB2YWx1ZSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB3UmF0aW8gPSBpblJhbmdlID8gaGlzdG9ncmFtU3R5bGUuaGlnaGxpZ2h0VyA6IGhpc3RvZ3JhbVN0eWxlLnVuSGlnaGxpZ2h0ZWRXO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ4MCA9IHgodW5kZWZpbmVkVG9aZXJvKGJhci54MCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ4MSA9IHgodW5kZWZpbmVkVG9aZXJvKGJhci54MSkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJpblcgPSBNYXRoLm1heChieDEgLSBieDAsIDEpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBlckdyb3VwVyA9IGlzTWFza2VkID8gYmluVyA6IGJpblcgLyBncm91cEtleXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRyYXduV2lkdGggPSBwZXJHcm91cFcgKiB3UmF0aW87XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBPZmZzZXQgPVxuICAgICAgICAgICAgICAgICAgZ3JvdXBLZXlzLmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICAgICAgPyBwZXJHcm91cFcgKiBpICsgKHBlckdyb3VwVyAtIGRyYXduV2lkdGgpIC8gMlxuICAgICAgICAgICAgICAgICAgICA6IChiaW5XIC0gZHJhd25XaWR0aCkgLyAyO1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0WCA9IGJ4MCArIGdyb3VwT2Zmc2V0O1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8QmFyXG4gICAgICAgICAgICAgICAgICAgICRpc092ZXJsYXk9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAkaW5SYW5nZT17aW5SYW5nZX1cbiAgICAgICAgICAgICAgICAgICAgJGNvbG9yPXtjb2xvcnNCeUdyb3VwPy5ba2V5XX1cbiAgICAgICAgICAgICAgICAgICAga2V5PXtgYmFyLSR7aWR4fWB9XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD17eShiYXJbY291bnRQcm9wXSl9XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPXtkcmF3bldpZHRofVxuICAgICAgICAgICAgICAgICAgICB4PXtzdGFydFh9XG4gICAgICAgICAgICAgICAgICAgIHJ4PXsxfVxuICAgICAgICAgICAgICAgICAgICByeT17MX1cbiAgICAgICAgICAgICAgICAgICAgeT17aGVpZ2h0IC0geShiYXJbY291bnRQcm9wXSl9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L2c+XG4gICAgICAgIHt5QXhpc1RpY2tzID8gKFxuICAgICAgICAgIDxnIGNsYXNzTmFtZT1cImhpc3RvZ3JhbS15LWF4aXNcIj5cbiAgICAgICAgICAgIHt5QXhpc1RpY2tzLm1hcCh0aWNrID0+IChcbiAgICAgICAgICAgICAgPFlBeGlzVGlja1xuICAgICAgICAgICAgICAgIGtleT17dGlja31cbiAgICAgICAgICAgICAgICB4PXstNH1cbiAgICAgICAgICAgICAgICB5PXtoZWlnaHQgLSB5KHRpY2spfVxuICAgICAgICAgICAgICAgIHRleHRBbmNob3I9XCJlbmRcIlxuICAgICAgICAgICAgICAgIGRvbWluYW50QmFzZWxpbmU9XCJtaWRkbGVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3RpY2t9XG4gICAgICAgICAgICAgIDwvWUF4aXNUaWNrPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9nPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvSGlzdG9ncmFtV3JhcHBlcj5cbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IEhpc3RvZ3JhbVBsb3RXaXRoR3JvdXBzID0gcHJvcHMgPT4ge1xuICAgIGNvbnN0IGdyb3VwcyA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiAocHJvcHMuaGlzdG9ncmFtc0J5R3JvdXAgPyBPYmplY3Qua2V5cyhwcm9wcy5oaXN0b2dyYW1zQnlHcm91cCkgOiBudWxsKSxcbiAgICAgIFtwcm9wcy5oaXN0b2dyYW1zQnlHcm91cF1cbiAgICApO1xuXG4gICAgaWYgKCFncm91cHM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIDxIaXN0b2dyYW1QbG90IHsuLi5wcm9wc30gLz47XG4gIH07XG5cbiAgcmV0dXJuIEhpc3RvZ3JhbVBsb3RXaXRoR3JvdXBzO1xufVxuZXhwb3J0IGRlZmF1bHQgSGlzdG9ncmFtUGxvdEZhY3Rvcnk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFFBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFFBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLGlCQUFBLEdBQUFDLHNCQUFBLENBQUFMLE9BQUE7QUFBdUMsSUFBQU0sZUFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQVB2QztBQUNBO0FBQUEsU0FBQUMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFaLHdCQUFBWSxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLE9BQUEsQ0FBQUwsQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFBRyxDQUFBLEdBQUFKLHdCQUFBLENBQUFHLENBQUEsT0FBQUMsQ0FBQSxJQUFBQSxDQUFBLENBQUFHLEdBQUEsQ0FBQU4sQ0FBQSxVQUFBRyxDQUFBLENBQUFJLEdBQUEsQ0FBQVAsQ0FBQSxPQUFBUSxDQUFBLEtBQUFDLFNBQUEsVUFB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
@@ -8,23 +8,23 @@ interface IconButtonProps extends ButtonProps {
8
8
  children?: ReactNode;
9
9
  }
10
10
  export declare const IconButton: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").Substitute<import("styled-components/dist/types").FastOmit<import("styled-components/dist/types").FastOmit<import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & {
11
- ref?: ((instance: HTMLButtonElement | null) => void) | import("react").RefObject<HTMLButtonElement> | null | undefined;
11
+ ref?: ((instance: HTMLButtonElement | null) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<HTMLButtonElement> | null | undefined;
12
12
  }>, never>, "ref" | "link" | "small" | "width" | keyof import("react").ButtonHTMLAttributes<HTMLButtonElement> | "size" | "negative" | "secondary" | "floating" | "cta" | "large" | "inactive"> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & {
13
- className?: string | undefined;
14
- ref?: import("react").ForwardedRef<HTMLElement> | undefined;
15
- children?: ReactNode;
16
- negative?: boolean | undefined;
17
- secondary?: boolean | undefined;
18
- link?: boolean | undefined;
19
- floating?: boolean | undefined;
20
- cta?: boolean | undefined;
21
- large?: boolean | undefined;
22
- small?: boolean | undefined;
23
- disabled?: boolean | undefined;
24
- width?: string | undefined;
25
- inactive?: boolean | undefined;
26
- size?: string | undefined;
13
+ className?: string;
14
+ ref?: React.ForwardedRef<HTMLElement>;
15
+ children?: React.ReactNode;
16
+ negative?: boolean;
17
+ secondary?: boolean;
18
+ link?: boolean;
19
+ floating?: boolean;
20
+ cta?: boolean;
21
+ large?: boolean;
22
+ small?: boolean;
23
+ disabled?: boolean;
24
+ width?: string;
25
+ inactive?: boolean;
26
+ size?: string;
27
27
  }, IconButtonProps>> & Omit<import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").Substitute<import("styled-components/dist/types").FastOmit<import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & {
28
- ref?: ((instance: HTMLButtonElement | null) => void) | import("react").RefObject<HTMLButtonElement> | null | undefined;
28
+ ref?: ((instance: HTMLButtonElement | null) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<HTMLButtonElement> | null | undefined;
29
29
  }>, never>, ButtonProps>>, keyof import("react").Component<any, {}, any>>;
30
30
  export default IconButton;
@@ -0,0 +1,14 @@
1
+ import React, { Component } from 'react';
2
+ import PropTypes from 'prop-types';
3
+ export default class AirplaneModelIcon extends Component {
4
+ static propTypes: {
5
+ /** Set the height of the icon, ex. '16px' */
6
+ height: PropTypes.Requireable<string>;
7
+ };
8
+ static defaultProps: {
9
+ height: string;
10
+ predefinedClassName: string;
11
+ viewBox: string;
12
+ };
13
+ render(): React.JSX.Element;
14
+ }