@kepler.gl/components 3.3.0-alpha.0 → 3.3.0-alpha.10

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 (1455) hide show
  1. package/dist/annotations/annotation-node.d.ts +11 -0
  2. package/dist/annotations/annotation-overlay.d.ts +17 -0
  3. package/dist/annotations/annotation-panel.d.ts +24 -0
  4. package/dist/annotations/annotation-text.d.ts +16 -0
  5. package/dist/annotations/annotation-utils.d.ts +53 -0
  6. package/dist/annotations/index.d.ts +7 -0
  7. package/dist/annotations/lexical-editor/clickable-link-plugin.d.ts +3 -0
  8. package/dist/annotations/lexical-editor/floating-link-editor.d.ts +1 -0
  9. package/dist/annotations/lexical-editor/index.d.ts +7 -0
  10. package/dist/annotations/lexical-editor/lexical-constants.d.ts +12 -0
  11. package/dist/annotations/lexical-editor/lexical-nodes.d.ts +3 -0
  12. package/dist/annotations/lexical-editor/lexical-rich-text-editor.d.ts +15 -0
  13. package/dist/annotations/lexical-editor/lexical-theme.d.ts +15 -0
  14. package/dist/annotations/lexical-editor/lexical-toolbar.d.ts +7 -0
  15. package/dist/annotations/lexical-editor/lexical-utils.d.ts +4 -0
  16. package/dist/annotations/lexical-editor/use-lexical-toolbar.d.ts +36 -0
  17. package/dist/bottom-widget.d.ts +1 -1
  18. package/dist/cjs/annotations/annotation-node.js +145 -0
  19. package/dist/cjs/annotations/annotation-overlay.js +168 -0
  20. package/dist/cjs/annotations/annotation-panel.js +361 -0
  21. package/dist/cjs/annotations/annotation-text.js +149 -0
  22. package/dist/cjs/annotations/annotation-utils.js +197 -0
  23. package/dist/cjs/annotations/index.js +53 -0
  24. package/dist/cjs/annotations/lexical-editor/clickable-link-plugin.js +71 -0
  25. package/dist/cjs/annotations/lexical-editor/floating-link-editor.js +193 -0
  26. package/dist/cjs/annotations/lexical-editor/index.js +78 -0
  27. package/dist/cjs/annotations/lexical-editor/lexical-constants.js +22 -0
  28. package/dist/cjs/annotations/lexical-editor/lexical-nodes.js +13 -0
  29. package/dist/cjs/annotations/lexical-editor/lexical-rich-text-editor.js +121 -0
  30. package/dist/cjs/annotations/lexical-editor/lexical-theme.js +25 -0
  31. package/dist/cjs/annotations/lexical-editor/lexical-toolbar.js +292 -0
  32. package/dist/cjs/annotations/lexical-editor/lexical-utils.js +45 -0
  33. package/dist/cjs/annotations/lexical-editor/use-lexical-toolbar.js +253 -0
  34. package/dist/cjs/bottom-widget.js +183 -0
  35. package/dist/cjs/common/action-panel.js +133 -0
  36. package/dist/cjs/common/animation-control/animation-control.js +100 -0
  37. package/dist/cjs/common/animation-control/animation-controller.js +271 -0
  38. package/dist/cjs/common/animation-control/animation-speed-slider.js +63 -0
  39. package/dist/cjs/common/animation-control/animation-window-control.js +59 -0
  40. package/dist/cjs/common/animation-control/export-video-control.js +43 -0
  41. package/dist/cjs/common/animation-control/floating-time-display.js +131 -0
  42. package/dist/cjs/common/animation-control/play-control.js +50 -0
  43. package/dist/cjs/common/animation-control/playback-controls.js +164 -0
  44. package/dist/cjs/common/animation-control/reset-control.js +41 -0
  45. package/dist/cjs/common/animation-control/speed-control.js +51 -0
  46. package/dist/cjs/common/animation-control/window-action-control.js +57 -0
  47. package/dist/cjs/common/checkbox.js +101 -0
  48. package/dist/cjs/common/color-legend.js +272 -0
  49. package/dist/cjs/common/column-stats-chart.js +312 -0
  50. package/dist/cjs/common/data-table/button.js +38 -0
  51. package/dist/cjs/common/data-table/canvas.js +26 -0
  52. package/dist/cjs/common/data-table/cell-size.js +200 -0
  53. package/dist/cjs/common/data-table/column-statistics-categoric.js +40 -0
  54. package/dist/cjs/common/data-table/column-statistics-components.js +65 -0
  55. package/dist/cjs/common/data-table/column-statistics-numeric.js +87 -0
  56. package/dist/cjs/common/data-table/column-statistics-time.js +69 -0
  57. package/dist/cjs/common/data-table/display-format.js +125 -0
  58. package/dist/cjs/common/data-table/grid.js +106 -0
  59. package/dist/cjs/common/data-table/header-cell.js +227 -0
  60. package/dist/cjs/common/data-table/index.js +543 -0
  61. package/dist/cjs/common/data-table/option-dropdown.js +159 -0
  62. package/dist/cjs/common/dataset-label.js +27 -0
  63. package/dist/cjs/common/dnd-layer-items.js +22 -0
  64. package/dist/cjs/common/error-boundary.js +59 -0
  65. package/dist/cjs/common/field-selector.js +172 -0
  66. package/dist/cjs/common/field-token.js +43 -0
  67. package/dist/cjs/common/file-uploader/file-drop.js +180 -0
  68. package/dist/cjs/common/file-uploader/file-upload-progress.js +84 -0
  69. package/dist/cjs/common/file-uploader/file-upload.js +452 -0
  70. package/dist/cjs/common/file-uploader/upload-button.js +58 -0
  71. package/dist/cjs/common/flex-container.js +15 -0
  72. package/dist/cjs/common/histogram-plot.js +282 -0
  73. package/dist/cjs/common/icon-button.js +25 -0
  74. package/dist/cjs/common/icons/3d-models/airplane.js +103 -0
  75. package/dist/cjs/common/icons/3d-models/bicycle.js +425 -0
  76. package/dist/cjs/common/icons/3d-models/boeing.js +118 -0
  77. package/dist/cjs/common/icons/3d-models/car.js +109 -0
  78. package/dist/cjs/common/icons/3d-models/cargoship.js +245 -0
  79. package/dist/cjs/common/icons/3d-models/evtol.js +133 -0
  80. package/dist/cjs/common/icons/3d-models/glider.js +61 -0
  81. package/dist/cjs/common/icons/3d-models/helicopter.js +109 -0
  82. package/dist/cjs/common/icons/3d-models/scooter.js +158 -0
  83. package/dist/cjs/common/icons/3d-models/semitruck.js +176 -0
  84. package/dist/cjs/common/icons/3d-models/truck.js +121 -0
  85. package/dist/cjs/common/icons/add.js +40 -0
  86. package/dist/cjs/common/icons/anchor_window.js +41 -0
  87. package/dist/cjs/common/icons/annotation-text.js +55 -0
  88. package/dist/cjs/common/icons/arrow-down-alt.js +40 -0
  89. package/dist/cjs/common/icons/arrow-down-full.js +49 -0
  90. package/dist/cjs/common/icons/arrow-down-small.js +53 -0
  91. package/dist/cjs/common/icons/arrow-down.js +50 -0
  92. package/dist/cjs/common/icons/arrow-left.js +43 -0
  93. package/dist/cjs/common/icons/arrow-right.js +40 -0
  94. package/dist/cjs/common/icons/arrow-up-alt.js +41 -0
  95. package/dist/cjs/common/icons/arrow-up-solid.js +40 -0
  96. package/dist/cjs/common/icons/arrow-up.js +40 -0
  97. package/dist/cjs/common/icons/base-map.js +56 -0
  98. package/dist/cjs/common/icons/base.js +78 -0
  99. package/dist/cjs/common/icons/bug.js +70 -0
  100. package/dist/cjs/common/icons/calendar.js +48 -0
  101. package/dist/cjs/common/icons/cancel.js +40 -0
  102. package/dist/cjs/common/icons/checkmark.js +46 -0
  103. package/dist/cjs/common/icons/circle.js +54 -0
  104. package/dist/cjs/common/icons/clipboard.js +41 -0
  105. package/dist/cjs/common/icons/clock.js +42 -0
  106. package/dist/cjs/common/icons/close.js +46 -0
  107. package/dist/cjs/common/icons/cloud.js +50 -0
  108. package/dist/cjs/common/icons/code-alt.js +43 -0
  109. package/dist/cjs/common/icons/copy.js +51 -0
  110. package/dist/cjs/common/icons/crosshairs.js +43 -0
  111. package/dist/cjs/common/icons/cube-3d.js +54 -0
  112. package/dist/cjs/common/icons/cursor-click.js +44 -0
  113. package/dist/cjs/common/icons/cursor-point.js +50 -0
  114. package/dist/cjs/common/icons/data-table.js +76 -0
  115. package/dist/cjs/common/icons/db.js +58 -0
  116. package/dist/cjs/common/icons/delete.js +52 -0
  117. package/dist/cjs/common/icons/docs.js +56 -0
  118. package/dist/cjs/common/icons/docs2.js +50 -0
  119. package/dist/cjs/common/icons/drag-n-drop.js +42 -0
  120. package/dist/cjs/common/icons/draggable-dots.js +84 -0
  121. package/dist/cjs/common/icons/draw-point.js +50 -0
  122. package/dist/cjs/common/icons/draw-polygon.js +60 -0
  123. package/dist/cjs/common/icons/edit.js +48 -0
  124. package/dist/cjs/common/icons/effects/brightness-contrast.js +69 -0
  125. package/dist/cjs/common/icons/effects/color-halftone.js +108 -0
  126. package/dist/cjs/common/icons/effects/distance-fog.js +78 -0
  127. package/dist/cjs/common/icons/effects/dot-screen.js +103 -0
  128. package/dist/cjs/common/icons/effects/edge-work.js +62 -0
  129. package/dist/cjs/common/icons/effects/hexagonal-pixelate.js +129 -0
  130. package/dist/cjs/common/icons/effects/hue-saturation.js +60 -0
  131. package/dist/cjs/common/icons/effects/ink.js +59 -0
  132. package/dist/cjs/common/icons/effects/light-and-shadow.js +48 -0
  133. package/dist/cjs/common/icons/effects/magic-wand.js +60 -0
  134. package/dist/cjs/common/icons/effects/magnify.js +67 -0
  135. package/dist/cjs/common/icons/effects/noise.js +113 -0
  136. package/dist/cjs/common/icons/effects/sepia.js +60 -0
  137. package/dist/cjs/common/icons/effects/surface-fog.js +85 -0
  138. package/dist/cjs/common/icons/effects/tilt-shift.js +69 -0
  139. package/dist/cjs/common/icons/effects/triangle-blur.js +64 -0
  140. package/dist/cjs/common/icons/effects/vibrance.js +60 -0
  141. package/dist/cjs/common/icons/effects/vignette.js +53 -0
  142. package/dist/cjs/common/icons/effects/zoom-blur.js +88 -0
  143. package/dist/cjs/common/icons/email.js +44 -0
  144. package/dist/cjs/common/icons/expand.js +42 -0
  145. package/dist/cjs/common/icons/eye-seen.js +49 -0
  146. package/dist/cjs/common/icons/eye-unseen.js +47 -0
  147. package/dist/cjs/common/icons/file-type.js +35 -0
  148. package/dist/cjs/common/icons/file.js +40 -0
  149. package/dist/cjs/common/icons/files.js +41 -0
  150. package/dist/cjs/common/icons/filter-funnel.js +50 -0
  151. package/dist/cjs/common/icons/folder.js +50 -0
  152. package/dist/cjs/common/icons/free-window.js +44 -0
  153. package/dist/cjs/common/icons/gear.js +42 -0
  154. package/dist/cjs/common/icons/globe.js +53 -0
  155. package/dist/cjs/common/icons/hash.js +40 -0
  156. package/dist/cjs/common/icons/help.js +50 -0
  157. package/dist/cjs/common/icons/histogram.js +41 -0
  158. package/dist/cjs/common/icons/horizontal-resize-handle.js +58 -0
  159. package/dist/cjs/common/icons/index.js +845 -0
  160. package/dist/cjs/common/icons/info.js +53 -0
  161. package/dist/cjs/common/icons/layers.js +54 -0
  162. package/dist/cjs/common/icons/left-arrow.js +43 -0
  163. package/dist/cjs/common/icons/legend.js +68 -0
  164. package/dist/cjs/common/icons/line-chart.js +40 -0
  165. package/dist/cjs/common/icons/line-string.js +60 -0
  166. package/dist/cjs/common/icons/location-marker.js +58 -0
  167. package/dist/cjs/common/icons/login.js +43 -0
  168. package/dist/cjs/common/icons/logout.js +42 -0
  169. package/dist/cjs/common/icons/map-icon.js +47 -0
  170. package/dist/cjs/common/icons/map-pin.js +56 -0
  171. package/dist/cjs/common/icons/messages.js +54 -0
  172. package/dist/cjs/common/icons/minus.js +40 -0
  173. package/dist/cjs/common/icons/moon.js +58 -0
  174. package/dist/cjs/common/icons/order-by-dataset.js +46 -0
  175. package/dist/cjs/common/icons/order-by-list.js +38 -0
  176. package/dist/cjs/common/icons/pause.js +60 -0
  177. package/dist/cjs/common/icons/picture.js +59 -0
  178. package/dist/cjs/common/icons/pin.js +52 -0
  179. package/dist/cjs/common/icons/play.js +50 -0
  180. package/dist/cjs/common/icons/pointer-click.js +58 -0
  181. package/dist/cjs/common/icons/polygon.js +62 -0
  182. package/dist/cjs/common/icons/rectangle.js +63 -0
  183. package/dist/cjs/common/icons/reduce.js +43 -0
  184. package/dist/cjs/common/icons/reset.js +56 -0
  185. package/dist/cjs/common/icons/save.js +57 -0
  186. package/dist/cjs/common/icons/save2.js +54 -0
  187. package/dist/cjs/common/icons/search.js +42 -0
  188. package/dist/cjs/common/icons/settings.js +60 -0
  189. package/dist/cjs/common/icons/share.js +70 -0
  190. package/dist/cjs/common/icons/speed.js +52 -0
  191. package/dist/cjs/common/icons/split.js +68 -0
  192. package/dist/cjs/common/icons/square-select.js +42 -0
  193. package/dist/cjs/common/icons/sun.js +74 -0
  194. package/dist/cjs/common/icons/sunrise.js +70 -0
  195. package/dist/cjs/common/icons/sunset.js +70 -0
  196. package/dist/cjs/common/icons/timeline-marker.js +55 -0
  197. package/dist/cjs/common/icons/trash.js +54 -0
  198. package/dist/cjs/common/icons/vert-dots.js +78 -0
  199. package/dist/cjs/common/icons/vert-three-dots.js +53 -0
  200. package/dist/cjs/common/icons/warning-sign.js +60 -0
  201. package/dist/cjs/common/icons/warning.js +54 -0
  202. package/dist/cjs/common/icons/zoom-in.js +47 -0
  203. package/dist/cjs/common/icons/zoom-out.js +47 -0
  204. package/dist/cjs/common/image-preview.js +64 -0
  205. package/dist/cjs/common/index.js +282 -0
  206. package/dist/cjs/common/info-helper.js +61 -0
  207. package/dist/cjs/common/item-selector/accessor.js +37 -0
  208. package/dist/cjs/common/item-selector/chickleted-input.js +157 -0
  209. package/dist/cjs/common/item-selector/dropdown-list.js +257 -0
  210. package/dist/cjs/common/item-selector/dropdown-select.js +84 -0
  211. package/dist/cjs/common/item-selector/item-selector.js +254 -0
  212. package/dist/cjs/common/item-selector/typeahead.js +435 -0
  213. package/dist/cjs/common/layout-splitter.js +230 -0
  214. package/dist/cjs/common/line-chart.js +286 -0
  215. package/dist/cjs/common/link-renderer.js +20 -0
  216. package/dist/cjs/common/loading-spinner.js +50 -0
  217. package/dist/cjs/common/logo.js +68 -0
  218. package/dist/cjs/common/map-layer-selector.js +38 -0
  219. package/dist/cjs/common/modal.js +170 -0
  220. package/dist/cjs/common/portaled.js +287 -0
  221. package/dist/cjs/common/progress-bar.js +47 -0
  222. package/dist/cjs/common/radius-legend.js +131 -0
  223. package/dist/cjs/common/range-brush.js +265 -0
  224. package/dist/cjs/common/range-plot.js +217 -0
  225. package/dist/cjs/common/range-slider-timeline-panel.js +42 -0
  226. package/dist/cjs/common/range-slider-timeline.js +112 -0
  227. package/dist/cjs/common/range-slider.js +371 -0
  228. package/dist/cjs/common/slider/mouse-event.js +104 -0
  229. package/dist/cjs/common/slider/slider-bar-handle.js +90 -0
  230. package/dist/cjs/common/slider/slider-handle.js +136 -0
  231. package/dist/cjs/common/slider/slider.js +251 -0
  232. package/dist/cjs/common/styled-components.js +447 -0
  233. package/dist/cjs/common/switch.js +21 -0
  234. package/dist/cjs/common/sync-timeline-control.js +61 -0
  235. package/dist/cjs/common/time-range-slider-time-title.js +62 -0
  236. package/dist/cjs/common/time-range-slider.js +143 -0
  237. package/dist/cjs/common/time-slider-marker.js +115 -0
  238. package/dist/cjs/common/timeline-helpers.js +57 -0
  239. package/dist/cjs/common/timeline-slider.js +140 -0
  240. package/dist/cjs/common/tippy-tooltip.js +134 -0
  241. package/dist/cjs/common/toolbar-item.js +81 -0
  242. package/dist/cjs/common/toolbar.js +27 -0
  243. package/dist/cjs/common/vertical-toolbar.js +16 -0
  244. package/dist/cjs/connect/keplergl-connect.js +44 -0
  245. package/dist/cjs/connect/with-local-selector.js +85 -0
  246. package/dist/cjs/container.js +180 -0
  247. package/dist/cjs/context.js +43 -0
  248. package/dist/cjs/dnd-context.js +174 -0
  249. package/dist/cjs/editor/editor.js +218 -0
  250. package/dist/cjs/editor/feature-action-panel.js +169 -0
  251. package/dist/cjs/editor/feature-properties-editor.js +215 -0
  252. package/dist/cjs/editor/filter-feature-badges.js +92 -0
  253. package/dist/cjs/effects/compact-color-picker.js +110 -0
  254. package/dist/cjs/effects/effect-configurator.js +473 -0
  255. package/dist/cjs/effects/effect-list.js +129 -0
  256. package/dist/cjs/effects/effect-manager.js +141 -0
  257. package/dist/cjs/effects/effect-panel-header.js +196 -0
  258. package/dist/cjs/effects/effect-panel.js +86 -0
  259. package/dist/cjs/effects/effect-time-configurator.js +381 -0
  260. package/dist/cjs/effects/effect-time-selector.js +152 -0
  261. package/dist/cjs/effects/effect-time-slider.js +198 -0
  262. package/dist/cjs/effects/effect-type-dropdown-list.js +65 -0
  263. package/dist/cjs/effects/effect-type-list-item.js +98 -0
  264. package/dist/cjs/effects/effect-type-selector.js +76 -0
  265. package/dist/cjs/effects/side-panel-title.js +37 -0
  266. package/dist/cjs/effects/surface-fog-section.js +262 -0
  267. package/dist/cjs/effects/timezone-selector.js +57 -0
  268. package/dist/cjs/filter-animation-controller.js +76 -0
  269. package/dist/cjs/filters/components.js +14 -0
  270. package/dist/cjs/filters/filter-panels/filter-panel-with-field-select.js +77 -0
  271. package/dist/cjs/filters/filter-panels/filter-synced-dataset-panel.js +260 -0
  272. package/dist/cjs/filters/filter-panels/multi-select-filter-panel.js +48 -0
  273. package/dist/cjs/filters/filter-panels/new-filter-panel.js +66 -0
  274. package/dist/cjs/filters/filter-panels/polygon-filter-panel.js +67 -0
  275. package/dist/cjs/filters/filter-panels/range-filter-panel.js +53 -0
  276. package/dist/cjs/filters/filter-panels/single-select-filter-panel.js +48 -0
  277. package/dist/cjs/filters/filter-panels/time-range-filter-panel.js +129 -0
  278. package/dist/cjs/filters/filter-panels/time-synced-field-selector.js +28 -0
  279. package/dist/cjs/filters/filter-panels/types.js +6 -0
  280. package/dist/cjs/filters/index.js +63 -0
  281. package/dist/cjs/filters/multi-select-filter.js +31 -0
  282. package/dist/cjs/filters/polygon-filter.js +76 -0
  283. package/dist/cjs/filters/range-filter.js +35 -0
  284. package/dist/cjs/filters/single-select-filter.js +40 -0
  285. package/dist/cjs/filters/time-range-filter.js +69 -0
  286. package/dist/cjs/filters/time-widget-settings.js +311 -0
  287. package/dist/cjs/filters/time-widget-top.js +80 -0
  288. package/dist/cjs/filters/time-widget.js +376 -0
  289. package/dist/cjs/filters/types.js +6 -0
  290. package/dist/cjs/geocoder/geocoder.js +327 -0
  291. package/dist/cjs/geocoder-panel.js +172 -0
  292. package/dist/cjs/hooks/use-cloud-list-provider.js +46 -0
  293. package/dist/cjs/hooks/use-dnd-effects.js +69 -0
  294. package/dist/cjs/hooks/use-dnd-layers.js +141 -0
  295. package/dist/cjs/hooks/use-feature-flags.js +17 -0
  296. package/dist/cjs/hooks/use-fetch-raster-tile-metadata.js +120 -0
  297. package/dist/cjs/hooks/use-fetch-vector-tile-metadata.js +133 -0
  298. package/dist/cjs/hooks/use-legend-position.js +176 -0
  299. package/dist/cjs/hooks/use-on-click-outside.js +36 -0
  300. package/dist/cjs/index.js +2929 -0
  301. package/dist/cjs/injector.js +151 -0
  302. package/dist/cjs/kepler-gl.js +685 -0
  303. package/dist/cjs/layer-animation-controller.js +53 -0
  304. package/dist/cjs/loading-indicator.js +76 -0
  305. package/dist/cjs/map/annotations/annotation-control.js +55 -0
  306. package/dist/cjs/map/attribution.js +391 -0
  307. package/dist/cjs/map/coordinate-info.js +42 -0
  308. package/dist/cjs/map/effects/effect-control.js +51 -0
  309. package/dist/cjs/map/layer-hover-info.js +318 -0
  310. package/dist/cjs/map/lazy-tippy.js +60 -0
  311. package/dist/cjs/map/locale-panel.js +76 -0
  312. package/dist/cjs/map/map-control-panel.js +140 -0
  313. package/dist/cjs/map/map-control-toolbar.js +18 -0
  314. package/dist/cjs/map/map-control-tooltip.js +34 -0
  315. package/dist/cjs/map/map-control.js +87 -0
  316. package/dist/cjs/map/map-draw-panel.js +159 -0
  317. package/dist/cjs/map/map-legend-panel.js +289 -0
  318. package/dist/cjs/map/map-legend.js +509 -0
  319. package/dist/cjs/map/map-navigation-control.js +159 -0
  320. package/dist/cjs/map/map-popover-content.js +28 -0
  321. package/dist/cjs/map/map-popover.js +189 -0
  322. package/dist/cjs/map/map-scale.js +162 -0
  323. package/dist/cjs/map/split-map-button.js +176 -0
  324. package/dist/cjs/map/theme-toggle-button.js +64 -0
  325. package/dist/cjs/map/toggle-3d-button.js +122 -0
  326. package/dist/cjs/map-container.js +1333 -0
  327. package/dist/cjs/map-view-state-context.js +98 -0
  328. package/dist/cjs/maps-layout.js +102 -0
  329. package/dist/cjs/modal-container.js +457 -0
  330. package/dist/cjs/modals/add-map-style-modal.js +262 -0
  331. package/dist/cjs/modals/cloud-components/cloud-header.js +59 -0
  332. package/dist/cjs/modals/cloud-components/cloud-item.js +107 -0
  333. package/dist/cjs/modals/cloud-components/cloud-item.spec.js +164 -0
  334. package/dist/cjs/modals/cloud-components/cloud-maps.js +48 -0
  335. package/dist/cjs/modals/cloud-components/cloud-maps.spec.js +98 -0
  336. package/dist/cjs/modals/cloud-components/cloud-storage-disclaimer.js +24 -0
  337. package/dist/cjs/modals/cloud-components/provider-select.js +30 -0
  338. package/dist/cjs/modals/cloud-tile.js +245 -0
  339. package/dist/cjs/modals/data-table-modal.js +227 -0
  340. package/dist/cjs/modals/delete-data-modal.js +41 -0
  341. package/dist/cjs/modals/error-display.js +32 -0
  342. package/dist/cjs/modals/export-data-modal.js +163 -0
  343. package/dist/cjs/modals/export-image-modal.js +188 -0
  344. package/dist/cjs/modals/export-map-modal/components.js +43 -0
  345. package/dist/cjs/modals/export-map-modal/export-html-map.js +124 -0
  346. package/dist/cjs/modals/export-map-modal/export-json-map.js +77 -0
  347. package/dist/cjs/modals/export-map-modal/export-map-modal.js +89 -0
  348. package/dist/cjs/modals/export-video-modal.js +440 -0
  349. package/dist/cjs/modals/export-video-modal.spec.js +732 -0
  350. package/dist/cjs/modals/fog-height-animation.js +97 -0
  351. package/dist/cjs/modals/globe-export-video-container.js +642 -0
  352. package/dist/cjs/modals/globe-export-video-preview.js +166 -0
  353. package/dist/cjs/modals/hubble-utils.js +452 -0
  354. package/dist/cjs/modals/hubble-utils.spec.js +397 -0
  355. package/dist/cjs/modals/image-modal-container.js +57 -0
  356. package/dist/cjs/modals/load-data-modal.js +97 -0
  357. package/dist/cjs/modals/load-storage-map.js +82 -0
  358. package/dist/cjs/modals/load-storage-map.spec.js +216 -0
  359. package/dist/cjs/modals/loading-dialog.js +37 -0
  360. package/dist/cjs/modals/modal-dialog.js +16 -0
  361. package/dist/cjs/modals/modal-tabs.js +74 -0
  362. package/dist/cjs/modals/overwrite-map-modal.js +83 -0
  363. package/dist/cjs/modals/save-map-modal.js +180 -0
  364. package/dist/cjs/modals/save-map-modal.spec.js +195 -0
  365. package/dist/cjs/modals/share-map-modal.js +169 -0
  366. package/dist/cjs/modals/share-map-modal.spec.js +173 -0
  367. package/dist/cjs/modals/status-panel.js +65 -0
  368. package/dist/cjs/modals/swipe-composite-utils.js +126 -0
  369. package/dist/cjs/modals/swipe-composite-utils.spec.js +69 -0
  370. package/dist/cjs/modals/swipe-export-settings.js +372 -0
  371. package/dist/cjs/modals/swipe-export-video-container.js +653 -0
  372. package/dist/cjs/modals/swipe-export-video-preview.js +395 -0
  373. package/dist/cjs/modals/tilesets-modals/common.js +6 -0
  374. package/dist/cjs/modals/tilesets-modals/load-data-footer.js +55 -0
  375. package/dist/cjs/modals/tilesets-modals/load-tileset.js +168 -0
  376. package/dist/cjs/modals/tilesets-modals/tileset-bitmap-form.js +283 -0
  377. package/dist/cjs/modals/tilesets-modals/tileset-icon.js +39 -0
  378. package/dist/cjs/modals/tilesets-modals/tileset-raster-form.js +287 -0
  379. package/dist/cjs/modals/tilesets-modals/tileset-tile3d-form.js +388 -0
  380. package/dist/cjs/modals/tilesets-modals/tileset-vector-form.js +261 -0
  381. package/dist/cjs/modals/tilesets-modals/tileset-wms-form.js +206 -0
  382. package/dist/cjs/notification-panel/notification-item.js +165 -0
  383. package/dist/cjs/notification-panel.js +39 -0
  384. package/dist/cjs/plot-container.js +318 -0
  385. package/dist/cjs/remote-dataset-refresh-controller.js +50 -0
  386. package/dist/cjs/side-panel/add-by-dataset-button.js +128 -0
  387. package/dist/cjs/side-panel/common/dataset-info.js +213 -0
  388. package/dist/cjs/side-panel/common/dataset-refresh-progress.js +63 -0
  389. package/dist/cjs/side-panel/common/dataset-tag.js +62 -0
  390. package/dist/cjs/side-panel/common/dataset-title.js +206 -0
  391. package/dist/cjs/side-panel/common/source-data-catalog.js +74 -0
  392. package/dist/cjs/side-panel/common/source-data-selector-content.js +64 -0
  393. package/dist/cjs/side-panel/common/source-data-selector.js +41 -0
  394. package/dist/cjs/side-panel/common/source-selector.js +56 -0
  395. package/dist/cjs/side-panel/common/types.js +6 -0
  396. package/dist/cjs/side-panel/custom-panel.js +39 -0
  397. package/dist/cjs/side-panel/filter-manager.js +206 -0
  398. package/dist/cjs/side-panel/filter-panel/add-filter-button.js +27 -0
  399. package/dist/cjs/side-panel/filter-panel/filter-panel-header.js +67 -0
  400. package/dist/cjs/side-panel/filter-panel/filter-panel.js +92 -0
  401. package/dist/cjs/side-panel/interaction-manager.js +45 -0
  402. package/dist/cjs/side-panel/interaction-panel/brush-config.js +41 -0
  403. package/dist/cjs/side-panel/interaction-panel/geocoder-config.js +45 -0
  404. package/dist/cjs/side-panel/interaction-panel/interaction-panel.js +121 -0
  405. package/dist/cjs/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +164 -0
  406. package/dist/cjs/side-panel/interaction-panel/tooltip-config.js +149 -0
  407. package/dist/cjs/side-panel/layer-manager.js +242 -0
  408. package/dist/cjs/side-panel/layer-panel/add-layer-button.js +27 -0
  409. package/dist/cjs/side-panel/layer-panel/aggr-scale-selector.js +37 -0
  410. package/dist/cjs/side-panel/layer-panel/channel-by-value-selector.js +71 -0
  411. package/dist/cjs/side-panel/layer-panel/color-breaks-panel.js +193 -0
  412. package/dist/cjs/side-panel/layer-panel/color-palette-preset.js +45 -0
  413. package/dist/cjs/side-panel/layer-panel/color-palette.js +74 -0
  414. package/dist/cjs/side-panel/layer-panel/color-range-selector.js +242 -0
  415. package/dist/cjs/side-panel/layer-panel/color-scale-selector.js +295 -0
  416. package/dist/cjs/side-panel/layer-panel/color-selector.js +186 -0
  417. package/dist/cjs/side-panel/layer-panel/column-selector.js +59 -0
  418. package/dist/cjs/side-panel/layer-panel/custom-palette.js +787 -0
  419. package/dist/cjs/side-panel/layer-panel/custom-picker.js +83 -0
  420. package/dist/cjs/side-panel/layer-panel/dataset-layer-group.js +68 -0
  421. package/dist/cjs/side-panel/layer-panel/dataset-layer-section.js +119 -0
  422. package/dist/cjs/side-panel/layer-panel/dataset-section.js +78 -0
  423. package/dist/cjs/side-panel/layer-panel/dimension-scale-selector.js +91 -0
  424. package/dist/cjs/side-panel/layer-panel/how-to-button.js +27 -0
  425. package/dist/cjs/side-panel/layer-panel/layer-color-selector.js +105 -0
  426. package/dist/cjs/side-panel/layer-panel/layer-column-config.js +85 -0
  427. package/dist/cjs/side-panel/layer-panel/layer-column-mode-config.js +192 -0
  428. package/dist/cjs/side-panel/layer-panel/layer-config-group.js +143 -0
  429. package/dist/cjs/side-panel/layer-panel/layer-configurator.js +1130 -0
  430. package/dist/cjs/side-panel/layer-panel/layer-error-message.js +29 -0
  431. package/dist/cjs/side-panel/layer-panel/layer-group-header.js +178 -0
  432. package/dist/cjs/side-panel/layer-panel/layer-list.js +330 -0
  433. package/dist/cjs/side-panel/layer-panel/layer-panel-header.js +311 -0
  434. package/dist/cjs/side-panel/layer-panel/layer-panel.js +171 -0
  435. package/dist/cjs/side-panel/layer-panel/layer-type-dropdown-list.js +77 -0
  436. package/dist/cjs/side-panel/layer-panel/layer-type-list-item.js +71 -0
  437. package/dist/cjs/side-panel/layer-panel/layer-type-selector.js +57 -0
  438. package/dist/cjs/side-panel/layer-panel/raster-tile-colormap-list-item.js +60 -0
  439. package/dist/cjs/side-panel/layer-panel/raster-tile-layer-configurator.js +457 -0
  440. package/dist/cjs/side-panel/layer-panel/scenegraph-model-selector.js +122 -0
  441. package/dist/cjs/side-panel/layer-panel/single-color-palette.js +85 -0
  442. package/dist/cjs/side-panel/layer-panel/text-label-panel.js +173 -0
  443. package/dist/cjs/side-panel/layer-panel/vector-tile-layer-configurator.js +94 -0
  444. package/dist/cjs/side-panel/layer-panel/vis-config-by-field-selector.js +60 -0
  445. package/dist/cjs/side-panel/layer-panel/vis-config-slider.js +167 -0
  446. package/dist/cjs/side-panel/layer-panel/vis-config-switch.js +55 -0
  447. package/dist/cjs/side-panel/map-manager.js +108 -0
  448. package/dist/cjs/side-panel/map-style-panel/globe-config-panel.js +334 -0
  449. package/dist/cjs/side-panel/map-style-panel/map-layer-group-color-picker.js +76 -0
  450. package/dist/cjs/side-panel/map-style-panel/map-layer-group-item.js +94 -0
  451. package/dist/cjs/side-panel/map-style-panel/map-layer-selector.js +74 -0
  452. package/dist/cjs/side-panel/map-style-panel/map-style-selector.js +97 -0
  453. package/dist/cjs/side-panel/panel-header-action.js +73 -0
  454. package/dist/cjs/side-panel/panel-header.js +309 -0
  455. package/dist/cjs/side-panel/panel-tab.js +55 -0
  456. package/dist/cjs/side-panel/panel-title.js +40 -0
  457. package/dist/cjs/side-panel/panel-toggle.js +47 -0
  458. package/dist/cjs/side-panel/panel-view-list-toggle.js +97 -0
  459. package/dist/cjs/side-panel/side-bar.js +126 -0
  460. package/dist/cjs/side-panel.js +235 -0
  461. package/dist/cjs/types.js +6 -0
  462. package/dist/common/animation-control/animation-control.d.ts +1 -0
  463. package/dist/common/animation-control/export-video-control.d.ts +9 -0
  464. package/dist/common/animation-control/playback-controls.d.ts +4 -2
  465. package/dist/common/checkbox.d.ts +5 -21
  466. package/dist/common/color-legend.d.ts +1 -1
  467. package/dist/common/data-table/canvas.d.ts +1 -1
  468. package/dist/common/data-table/column-statistics-categoric.d.ts +9 -0
  469. package/dist/common/data-table/column-statistics-components.d.ts +31 -0
  470. package/dist/common/data-table/column-statistics-numeric.d.ts +18 -0
  471. package/dist/common/data-table/column-statistics-time.d.ts +19 -0
  472. package/dist/common/data-table/header-cell.d.ts +7 -5
  473. package/dist/common/data-table/index.d.ts +8 -25
  474. package/dist/common/dnd-layer-items.d.ts +4 -0
  475. package/dist/common/error-boundary.d.ts +1 -1
  476. package/dist/common/file-uploader/file-upload.d.ts +1 -1
  477. package/dist/common/flex-container.d.ts +15 -7
  478. package/dist/common/histogram-plot.d.ts +24 -1
  479. package/dist/common/icon-button.d.ts +53 -6
  480. package/dist/common/icons/3d-models/airplane.d.ts +14 -0
  481. package/dist/common/icons/3d-models/bicycle.d.ts +14 -0
  482. package/dist/common/icons/3d-models/boeing.d.ts +14 -0
  483. package/dist/common/icons/3d-models/car.d.ts +14 -0
  484. package/dist/common/icons/3d-models/cargoship.d.ts +14 -0
  485. package/dist/common/icons/3d-models/evtol.d.ts +14 -0
  486. package/dist/common/icons/3d-models/glider.d.ts +14 -0
  487. package/dist/common/icons/3d-models/helicopter.d.ts +14 -0
  488. package/dist/common/icons/3d-models/scooter.d.ts +14 -0
  489. package/dist/common/icons/3d-models/semitruck.d.ts +14 -0
  490. package/dist/common/icons/3d-models/truck.d.ts +14 -0
  491. package/dist/common/icons/anchor_window.d.ts +1 -8
  492. package/dist/common/icons/annotation-text.d.ts +9 -0
  493. package/dist/common/icons/arrow-down-full.d.ts +2 -1
  494. package/dist/common/icons/circle.d.ts +10 -0
  495. package/dist/common/icons/draw-point.d.ts +10 -0
  496. package/dist/common/icons/folder.d.ts +10 -0
  497. package/dist/common/icons/index.d.ts +5 -0
  498. package/dist/common/icons/line-string.d.ts +10 -0
  499. package/dist/common/icons/timeline-marker.d.ts +2 -1
  500. package/dist/common/item-selector/chickleted-input.d.ts +1 -1
  501. package/dist/common/item-selector/dropdown-list.d.ts +1 -1
  502. package/dist/common/item-selector/dropdown-select.d.ts +13 -7
  503. package/dist/common/item-selector/item-selector.d.ts +1 -1
  504. package/dist/common/item-selector/typeahead.d.ts +4 -4
  505. package/dist/common/layout-splitter.d.ts +45 -0
  506. package/dist/common/line-chart.d.ts +10 -3
  507. package/dist/common/modal.d.ts +11 -5
  508. package/dist/common/portaled.d.ts +17 -17
  509. package/dist/common/range-slider.d.ts +2 -0
  510. package/dist/common/slider/mouse-event.d.ts +1 -1
  511. package/dist/common/slider/slider-bar-handle.d.ts +1 -1
  512. package/dist/common/slider/slider-handle.d.ts +3 -3
  513. package/dist/common/slider/slider.d.ts +8 -4
  514. package/dist/common/styled-components.d.ts +643 -190
  515. package/dist/common/time-range-slider-time-title.d.ts +1 -1
  516. package/dist/common/time-range-slider.d.ts +2 -1
  517. package/dist/common/timeline-helpers.d.ts +3 -0
  518. package/dist/common/toolbar-item.d.ts +2 -0
  519. package/dist/common/toolbar.d.ts +1 -1
  520. package/dist/common/vertical-toolbar.d.ts +13 -3
  521. package/dist/container.d.ts +3 -2
  522. package/dist/context.d.ts +1 -1
  523. package/dist/dnd-context.d.ts +4 -3
  524. package/dist/editor/editor.d.ts +1 -0
  525. package/dist/editor/feature-action-panel.d.ts +1 -0
  526. package/dist/editor/feature-properties-editor.d.ts +8 -0
  527. package/dist/editor/filter-feature-badges.d.ts +12 -0
  528. package/dist/effects/compact-color-picker.d.ts +1 -1
  529. package/dist/effects/effect-configurator.d.ts +5 -6
  530. package/dist/effects/effect-manager.d.ts +1 -1
  531. package/dist/effects/effect-panel.d.ts +4 -4
  532. package/dist/effects/effect-type-dropdown-list.d.ts +1 -0
  533. package/dist/effects/effect-type-list-item.d.ts +2 -1
  534. package/dist/effects/effect-type-selector.d.ts +1 -0
  535. package/dist/effects/surface-fog-section.d.ts +14 -0
  536. package/dist/esm/annotations/annotation-node.js +138 -0
  537. package/dist/esm/annotations/annotation-overlay.js +161 -0
  538. package/dist/esm/annotations/annotation-panel.js +355 -0
  539. package/dist/esm/annotations/annotation-text.js +142 -0
  540. package/dist/esm/annotations/annotation-utils.js +185 -0
  541. package/dist/esm/annotations/index.js +9 -0
  542. package/dist/esm/annotations/lexical-editor/clickable-link-plugin.js +64 -0
  543. package/dist/esm/annotations/lexical-editor/floating-link-editor.js +186 -0
  544. package/dist/esm/annotations/lexical-editor/index.js +9 -0
  545. package/dist/esm/annotations/lexical-editor/lexical-constants.js +16 -0
  546. package/dist/esm/annotations/lexical-editor/lexical-nodes.js +7 -0
  547. package/dist/esm/annotations/lexical-editor/lexical-rich-text-editor.js +114 -0
  548. package/dist/esm/annotations/lexical-editor/lexical-theme.js +19 -0
  549. package/dist/esm/annotations/lexical-editor/lexical-toolbar.js +285 -0
  550. package/dist/esm/annotations/lexical-editor/lexical-utils.js +37 -0
  551. package/dist/esm/annotations/lexical-editor/use-lexical-toolbar.js +248 -0
  552. package/dist/esm/bottom-widget.js +176 -0
  553. package/dist/esm/common/action-panel.js +126 -0
  554. package/dist/esm/common/animation-control/animation-control.js +95 -0
  555. package/dist/esm/common/animation-control/animation-controller.js +266 -0
  556. package/dist/esm/common/animation-control/animation-speed-slider.js +56 -0
  557. package/dist/esm/common/animation-control/animation-window-control.js +50 -0
  558. package/dist/esm/common/animation-control/export-video-control.js +36 -0
  559. package/dist/esm/common/animation-control/floating-time-display.js +124 -0
  560. package/dist/esm/common/animation-control/play-control.js +43 -0
  561. package/dist/esm/common/animation-control/playback-controls.js +157 -0
  562. package/dist/esm/common/animation-control/reset-control.js +34 -0
  563. package/dist/esm/common/animation-control/speed-control.js +46 -0
  564. package/dist/esm/common/animation-control/window-action-control.js +48 -0
  565. package/dist/esm/common/checkbox.js +94 -0
  566. package/dist/esm/common/color-legend.js +261 -0
  567. package/dist/esm/common/column-stats-chart.js +305 -0
  568. package/dist/esm/common/data-table/button.js +33 -0
  569. package/dist/esm/common/data-table/canvas.js +22 -0
  570. package/dist/esm/common/data-table/cell-size.js +194 -0
  571. package/dist/esm/common/data-table/column-statistics-categoric.js +33 -0
  572. package/dist/esm/common/data-table/column-statistics-components.js +59 -0
  573. package/dist/esm/common/data-table/column-statistics-numeric.js +78 -0
  574. package/dist/esm/common/data-table/column-statistics-time.js +60 -0
  575. package/dist/esm/common/data-table/display-format.js +118 -0
  576. package/dist/esm/common/data-table/grid.js +100 -0
  577. package/dist/esm/common/data-table/header-cell.js +220 -0
  578. package/dist/esm/common/data-table/index.js +536 -0
  579. package/dist/esm/common/data-table/option-dropdown.js +152 -0
  580. package/dist/esm/common/dataset-label.js +22 -0
  581. package/dist/esm/common/dnd-layer-items.js +16 -0
  582. package/dist/esm/common/error-boundary.js +55 -0
  583. package/dist/esm/common/field-selector.js +164 -0
  584. package/dist/esm/common/field-token.js +38 -0
  585. package/dist/esm/common/file-uploader/file-drop.js +170 -0
  586. package/dist/esm/common/file-uploader/file-upload-progress.js +77 -0
  587. package/dist/esm/common/file-uploader/file-upload.js +445 -0
  588. package/dist/esm/common/file-uploader/upload-button.js +51 -0
  589. package/dist/esm/common/flex-container.js +10 -0
  590. package/dist/esm/common/histogram-plot.js +275 -0
  591. package/dist/esm/common/icon-button.js +20 -0
  592. package/dist/esm/common/icons/3d-models/airplane.js +97 -0
  593. package/dist/esm/common/icons/3d-models/bicycle.js +419 -0
  594. package/dist/esm/common/icons/3d-models/boeing.js +112 -0
  595. package/dist/esm/common/icons/3d-models/car.js +103 -0
  596. package/dist/esm/common/icons/3d-models/cargoship.js +239 -0
  597. package/dist/esm/common/icons/3d-models/evtol.js +127 -0
  598. package/dist/esm/common/icons/3d-models/glider.js +55 -0
  599. package/dist/esm/common/icons/3d-models/helicopter.js +103 -0
  600. package/dist/esm/common/icons/3d-models/scooter.js +152 -0
  601. package/dist/esm/common/icons/3d-models/semitruck.js +170 -0
  602. package/dist/esm/common/icons/3d-models/truck.js +115 -0
  603. package/dist/esm/common/icons/add.js +34 -0
  604. package/dist/esm/common/icons/anchor_window.js +36 -0
  605. package/dist/esm/common/icons/annotation-text.js +49 -0
  606. package/dist/esm/common/icons/arrow-down-alt.js +34 -0
  607. package/dist/esm/common/icons/arrow-down-full.js +43 -0
  608. package/dist/esm/common/icons/arrow-down-small.js +47 -0
  609. package/dist/esm/common/icons/arrow-down.js +44 -0
  610. package/dist/esm/common/icons/arrow-left.js +37 -0
  611. package/dist/esm/common/icons/arrow-right.js +34 -0
  612. package/dist/esm/common/icons/arrow-up-alt.js +35 -0
  613. package/dist/esm/common/icons/arrow-up-solid.js +34 -0
  614. package/dist/esm/common/icons/arrow-up.js +34 -0
  615. package/dist/esm/common/icons/base-map.js +49 -0
  616. package/dist/esm/common/icons/base.js +72 -0
  617. package/dist/esm/common/icons/bug.js +64 -0
  618. package/dist/esm/common/icons/calendar.js +42 -0
  619. package/dist/esm/common/icons/cancel.js +34 -0
  620. package/dist/esm/common/icons/checkmark.js +40 -0
  621. package/dist/esm/common/icons/circle.js +48 -0
  622. package/dist/esm/common/icons/clipboard.js +35 -0
  623. package/dist/esm/common/icons/clock.js +36 -0
  624. package/dist/esm/common/icons/close.js +40 -0
  625. package/dist/esm/common/icons/cloud.js +44 -0
  626. package/dist/esm/common/icons/code-alt.js +37 -0
  627. package/dist/esm/common/icons/copy.js +45 -0
  628. package/dist/esm/common/icons/crosshairs.js +37 -0
  629. package/dist/esm/common/icons/cube-3d.js +48 -0
  630. package/dist/esm/common/icons/cursor-click.js +38 -0
  631. package/dist/esm/common/icons/cursor-point.js +44 -0
  632. package/dist/esm/common/icons/data-table.js +70 -0
  633. package/dist/esm/common/icons/db.js +52 -0
  634. package/dist/esm/common/icons/delete.js +46 -0
  635. package/dist/esm/common/icons/docs.js +50 -0
  636. package/dist/esm/common/icons/docs2.js +44 -0
  637. package/dist/esm/common/icons/drag-n-drop.js +36 -0
  638. package/dist/esm/common/icons/draggable-dots.js +78 -0
  639. package/dist/esm/common/icons/draw-point.js +44 -0
  640. package/dist/esm/common/icons/draw-polygon.js +54 -0
  641. package/dist/esm/common/icons/edit.js +42 -0
  642. package/dist/esm/common/icons/effects/brightness-contrast.js +63 -0
  643. package/dist/esm/common/icons/effects/color-halftone.js +102 -0
  644. package/dist/esm/common/icons/effects/distance-fog.js +72 -0
  645. package/dist/esm/common/icons/effects/dot-screen.js +97 -0
  646. package/dist/esm/common/icons/effects/edge-work.js +56 -0
  647. package/dist/esm/common/icons/effects/hexagonal-pixelate.js +123 -0
  648. package/dist/esm/common/icons/effects/hue-saturation.js +54 -0
  649. package/dist/esm/common/icons/effects/ink.js +53 -0
  650. package/dist/esm/common/icons/effects/light-and-shadow.js +42 -0
  651. package/dist/esm/common/icons/effects/magic-wand.js +54 -0
  652. package/dist/esm/common/icons/effects/magnify.js +61 -0
  653. package/dist/esm/common/icons/effects/noise.js +107 -0
  654. package/dist/esm/common/icons/effects/sepia.js +54 -0
  655. package/dist/esm/common/icons/effects/surface-fog.js +79 -0
  656. package/dist/esm/common/icons/effects/tilt-shift.js +63 -0
  657. package/dist/esm/common/icons/effects/triangle-blur.js +58 -0
  658. package/dist/esm/common/icons/effects/vibrance.js +54 -0
  659. package/dist/esm/common/icons/effects/vignette.js +47 -0
  660. package/dist/esm/common/icons/effects/zoom-blur.js +82 -0
  661. package/dist/esm/common/icons/email.js +38 -0
  662. package/dist/esm/common/icons/expand.js +36 -0
  663. package/dist/esm/common/icons/eye-seen.js +43 -0
  664. package/dist/esm/common/icons/eye-unseen.js +41 -0
  665. package/dist/esm/common/icons/file-type.js +30 -0
  666. package/dist/esm/common/icons/file.js +34 -0
  667. package/dist/esm/common/icons/files.js +37 -0
  668. package/dist/esm/common/icons/filter-funnel.js +44 -0
  669. package/dist/esm/common/icons/folder.js +44 -0
  670. package/dist/esm/common/icons/free-window.js +39 -0
  671. package/dist/esm/common/icons/gear.js +36 -0
  672. package/dist/esm/common/icons/globe.js +47 -0
  673. package/dist/esm/common/icons/hash.js +34 -0
  674. package/dist/esm/common/icons/help.js +44 -0
  675. package/dist/esm/common/icons/histogram.js +37 -0
  676. package/dist/esm/common/icons/horizontal-resize-handle.js +52 -0
  677. package/dist/esm/common/icons/index.js +127 -0
  678. package/dist/esm/common/icons/info.js +47 -0
  679. package/dist/esm/common/icons/layers.js +48 -0
  680. package/dist/esm/common/icons/left-arrow.js +37 -0
  681. package/dist/esm/common/icons/legend.js +62 -0
  682. package/dist/esm/common/icons/line-chart.js +34 -0
  683. package/dist/esm/common/icons/line-string.js +54 -0
  684. package/dist/esm/common/icons/location-marker.js +52 -0
  685. package/dist/esm/common/icons/login.js +37 -0
  686. package/dist/esm/common/icons/logout.js +36 -0
  687. package/dist/esm/common/icons/map-icon.js +40 -0
  688. package/dist/esm/common/icons/map-pin.js +50 -0
  689. package/dist/esm/common/icons/messages.js +48 -0
  690. package/dist/esm/common/icons/minus.js +34 -0
  691. package/dist/esm/common/icons/moon.js +52 -0
  692. package/dist/esm/common/icons/order-by-dataset.js +41 -0
  693. package/dist/esm/common/icons/order-by-list.js +33 -0
  694. package/dist/esm/common/icons/pause.js +54 -0
  695. package/dist/esm/common/icons/picture.js +55 -0
  696. package/dist/esm/common/icons/pin.js +46 -0
  697. package/dist/esm/common/icons/play.js +44 -0
  698. package/dist/esm/common/icons/pointer-click.js +52 -0
  699. package/dist/esm/common/icons/polygon.js +56 -0
  700. package/dist/esm/common/icons/rectangle.js +57 -0
  701. package/dist/esm/common/icons/reduce.js +37 -0
  702. package/dist/esm/common/icons/reset.js +50 -0
  703. package/dist/esm/common/icons/save.js +51 -0
  704. package/dist/esm/common/icons/save2.js +48 -0
  705. package/dist/esm/common/icons/search.js +36 -0
  706. package/dist/esm/common/icons/settings.js +54 -0
  707. package/dist/esm/common/icons/share.js +64 -0
  708. package/dist/esm/common/icons/speed.js +46 -0
  709. package/dist/esm/common/icons/split.js +62 -0
  710. package/dist/esm/common/icons/square-select.js +36 -0
  711. package/dist/esm/common/icons/sun.js +68 -0
  712. package/dist/esm/common/icons/sunrise.js +64 -0
  713. package/dist/esm/common/icons/sunset.js +64 -0
  714. package/dist/esm/common/icons/timeline-marker.js +49 -0
  715. package/dist/esm/common/icons/trash.js +48 -0
  716. package/dist/esm/common/icons/vert-dots.js +72 -0
  717. package/dist/esm/common/icons/vert-three-dots.js +47 -0
  718. package/dist/esm/common/icons/warning-sign.js +54 -0
  719. package/dist/esm/common/icons/warning.js +48 -0
  720. package/dist/esm/common/icons/zoom-in.js +41 -0
  721. package/dist/esm/common/icons/zoom-out.js +41 -0
  722. package/dist/esm/common/image-preview.js +59 -0
  723. package/dist/esm/common/index.js +8 -0
  724. package/dist/esm/common/info-helper.js +56 -0
  725. package/dist/esm/common/item-selector/accessor.js +31 -0
  726. package/dist/esm/common/item-selector/chickleted-input.js +150 -0
  727. package/dist/esm/common/item-selector/dropdown-list.js +251 -0
  728. package/dist/esm/common/item-selector/dropdown-select.js +79 -0
  729. package/dist/esm/common/item-selector/item-selector.js +247 -0
  730. package/dist/esm/common/item-selector/typeahead.js +428 -0
  731. package/dist/esm/common/layout-splitter.js +224 -0
  732. package/dist/esm/common/line-chart.js +279 -0
  733. package/dist/esm/common/link-renderer.js +13 -0
  734. package/dist/esm/common/loading-spinner.js +43 -0
  735. package/dist/esm/common/logo.js +63 -0
  736. package/dist/esm/common/map-layer-selector.js +33 -0
  737. package/dist/esm/common/modal.js +163 -0
  738. package/dist/esm/common/portaled.js +280 -0
  739. package/dist/esm/common/progress-bar.js +43 -0
  740. package/dist/esm/common/radius-legend.js +124 -0
  741. package/dist/esm/common/range-brush.js +258 -0
  742. package/dist/esm/common/range-plot.js +210 -0
  743. package/dist/esm/common/range-slider-timeline-panel.js +35 -0
  744. package/dist/esm/common/range-slider-timeline.js +105 -0
  745. package/dist/esm/common/range-slider.js +364 -0
  746. package/dist/esm/common/slider/mouse-event.js +98 -0
  747. package/dist/esm/common/slider/slider-bar-handle.js +84 -0
  748. package/dist/esm/common/slider/slider-handle.js +130 -0
  749. package/dist/esm/common/slider/slider.js +245 -0
  750. package/dist/esm/common/styled-components.js +441 -0
  751. package/dist/esm/common/switch.js +16 -0
  752. package/dist/esm/common/sync-timeline-control.js +54 -0
  753. package/dist/esm/common/time-range-slider-time-title.js +57 -0
  754. package/dist/esm/common/time-range-slider.js +135 -0
  755. package/dist/esm/common/time-slider-marker.js +105 -0
  756. package/dist/esm/common/timeline-helpers.js +48 -0
  757. package/dist/esm/common/timeline-slider.js +133 -0
  758. package/dist/esm/common/tippy-tooltip.js +127 -0
  759. package/dist/esm/common/toolbar-item.js +76 -0
  760. package/dist/esm/common/toolbar.js +22 -0
  761. package/dist/esm/common/vertical-toolbar.js +11 -0
  762. package/dist/esm/connect/keplergl-connect.js +38 -0
  763. package/dist/esm/connect/with-local-selector.js +78 -0
  764. package/dist/esm/container.js +171 -0
  765. package/dist/esm/context.js +35 -0
  766. package/dist/esm/dnd-context.js +167 -0
  767. package/dist/esm/editor/editor.js +211 -0
  768. package/dist/esm/editor/feature-action-panel.js +161 -0
  769. package/dist/esm/editor/feature-properties-editor.js +208 -0
  770. package/dist/esm/editor/filter-feature-badges.js +85 -0
  771. package/dist/esm/effects/compact-color-picker.js +103 -0
  772. package/dist/esm/effects/effect-configurator.js +465 -0
  773. package/dist/esm/effects/effect-list.js +122 -0
  774. package/dist/esm/effects/effect-manager.js +134 -0
  775. package/dist/esm/effects/effect-panel-header.js +188 -0
  776. package/dist/esm/effects/effect-panel.js +79 -0
  777. package/dist/esm/effects/effect-time-configurator.js +374 -0
  778. package/dist/esm/effects/effect-time-selector.js +145 -0
  779. package/dist/esm/effects/effect-time-slider.js +190 -0
  780. package/dist/esm/effects/effect-type-dropdown-list.js +57 -0
  781. package/dist/esm/effects/effect-type-list-item.js +89 -0
  782. package/dist/esm/effects/effect-type-selector.js +69 -0
  783. package/dist/esm/effects/side-panel-title.js +32 -0
  784. package/dist/esm/effects/surface-fog-section.js +254 -0
  785. package/dist/esm/effects/timezone-selector.js +50 -0
  786. package/dist/esm/filter-animation-controller.js +67 -0
  787. package/dist/esm/filters/components.js +9 -0
  788. package/dist/esm/filters/filter-panels/filter-panel-with-field-select.js +68 -0
  789. package/dist/esm/filters/filter-panels/filter-synced-dataset-panel.js +253 -0
  790. package/dist/esm/filters/filter-panels/multi-select-filter-panel.js +39 -0
  791. package/dist/esm/filters/filter-panels/new-filter-panel.js +56 -0
  792. package/dist/esm/filters/filter-panels/polygon-filter-panel.js +58 -0
  793. package/dist/esm/filters/filter-panels/range-filter-panel.js +44 -0
  794. package/dist/esm/filters/filter-panels/single-select-filter-panel.js +39 -0
  795. package/dist/esm/filters/filter-panels/time-range-filter-panel.js +120 -0
  796. package/dist/esm/filters/filter-panels/time-synced-field-selector.js +23 -0
  797. package/dist/esm/filters/filter-panels/types.js +3 -0
  798. package/dist/esm/filters/index.js +12 -0
  799. package/dist/esm/filters/multi-select-filter.js +24 -0
  800. package/dist/esm/filters/polygon-filter.js +67 -0
  801. package/dist/esm/filters/range-filter.js +28 -0
  802. package/dist/esm/filters/single-select-filter.js +33 -0
  803. package/dist/esm/filters/time-range-filter.js +61 -0
  804. package/dist/esm/filters/time-widget-settings.js +304 -0
  805. package/dist/esm/filters/time-widget-top.js +73 -0
  806. package/dist/esm/filters/time-widget.js +369 -0
  807. package/dist/esm/filters/types.js +3 -0
  808. package/dist/esm/geocoder/geocoder.js +318 -0
  809. package/dist/esm/geocoder-panel.js +164 -0
  810. package/dist/esm/hooks/use-cloud-list-provider.js +37 -0
  811. package/dist/esm/hooks/use-dnd-effects.js +62 -0
  812. package/dist/esm/hooks/use-dnd-layers.js +136 -0
  813. package/dist/esm/hooks/use-feature-flags.js +11 -0
  814. package/dist/esm/hooks/use-fetch-raster-tile-metadata.js +113 -0
  815. package/dist/esm/hooks/use-fetch-vector-tile-metadata.js +128 -0
  816. package/dist/esm/hooks/use-legend-position.js +170 -0
  817. package/dist/esm/hooks/use-on-click-outside.js +29 -0
  818. package/dist/esm/index.js +282 -0
  819. package/dist/esm/injector.js +141 -0
  820. package/dist/esm/kepler-gl.js +672 -0
  821. package/dist/esm/layer-animation-controller.js +44 -0
  822. package/dist/esm/loading-indicator.js +69 -0
  823. package/dist/esm/map/annotations/annotation-control.js +46 -0
  824. package/dist/esm/map/attribution.js +382 -0
  825. package/dist/esm/map/coordinate-info.js +36 -0
  826. package/dist/esm/map/effects/effect-control.js +42 -0
  827. package/dist/esm/map/layer-hover-info.js +312 -0
  828. package/dist/esm/map/lazy-tippy.js +53 -0
  829. package/dist/esm/map/locale-panel.js +67 -0
  830. package/dist/esm/map/map-control-panel.js +133 -0
  831. package/dist/esm/map/map-control-toolbar.js +13 -0
  832. package/dist/esm/map/map-control-tooltip.js +27 -0
  833. package/dist/esm/map/map-control.js +83 -0
  834. package/dist/esm/map/map-draw-panel.js +152 -0
  835. package/dist/esm/map/map-legend-panel.js +282 -0
  836. package/dist/esm/map/map-legend.js +496 -0
  837. package/dist/esm/map/map-navigation-control.js +152 -0
  838. package/dist/esm/map/map-popover-content.js +21 -0
  839. package/dist/esm/map/map-popover.js +181 -0
  840. package/dist/esm/map/map-scale.js +155 -0
  841. package/dist/esm/map/split-map-button.js +167 -0
  842. package/dist/esm/map/theme-toggle-button.js +55 -0
  843. package/dist/esm/map/toggle-3d-button.js +113 -0
  844. package/dist/esm/map-container.js +1303 -0
  845. package/dist/esm/map-view-state-context.js +89 -0
  846. package/dist/esm/maps-layout.js +95 -0
  847. package/dist/esm/modal-container.js +454 -0
  848. package/dist/esm/modals/add-map-style-modal.js +256 -0
  849. package/dist/esm/modals/cloud-components/cloud-header.js +52 -0
  850. package/dist/esm/modals/cloud-components/cloud-item.js +100 -0
  851. package/dist/esm/modals/cloud-components/cloud-item.spec.js +163 -0
  852. package/dist/esm/modals/cloud-components/cloud-maps.js +43 -0
  853. package/dist/esm/modals/cloud-components/cloud-maps.spec.js +94 -0
  854. package/dist/esm/modals/cloud-components/cloud-storage-disclaimer.js +19 -0
  855. package/dist/esm/modals/cloud-components/provider-select.js +25 -0
  856. package/dist/esm/modals/cloud-tile.js +238 -0
  857. package/dist/esm/modals/data-table-modal.js +220 -0
  858. package/dist/esm/modals/delete-data-modal.js +36 -0
  859. package/dist/esm/modals/error-display.js +23 -0
  860. package/dist/esm/modals/export-data-modal.js +155 -0
  861. package/dist/esm/modals/export-image-modal.js +181 -0
  862. package/dist/esm/modals/export-map-modal/components.js +38 -0
  863. package/dist/esm/modals/export-map-modal/export-html-map.js +119 -0
  864. package/dist/esm/modals/export-map-modal/export-json-map.js +70 -0
  865. package/dist/esm/modals/export-map-modal/export-map-modal.js +84 -0
  866. package/dist/esm/modals/export-video-modal.js +427 -0
  867. package/dist/esm/modals/export-video-modal.spec.js +731 -0
  868. package/dist/esm/modals/fog-height-animation.js +90 -0
  869. package/dist/esm/modals/globe-export-video-container.js +636 -0
  870. package/dist/esm/modals/globe-export-video-preview.js +159 -0
  871. package/dist/esm/modals/hubble-utils.js +434 -0
  872. package/dist/esm/modals/hubble-utils.spec.js +396 -0
  873. package/dist/esm/modals/image-modal-container.js +48 -0
  874. package/dist/esm/modals/load-data-modal.js +89 -0
  875. package/dist/esm/modals/load-storage-map.js +75 -0
  876. package/dist/esm/modals/load-storage-map.spec.js +212 -0
  877. package/dist/esm/modals/loading-dialog.js +32 -0
  878. package/dist/esm/modals/modal-dialog.js +9 -0
  879. package/dist/esm/modals/modal-tabs.js +67 -0
  880. package/dist/esm/modals/overwrite-map-modal.js +76 -0
  881. package/dist/esm/modals/save-map-modal.js +173 -0
  882. package/dist/esm/modals/save-map-modal.spec.js +196 -0
  883. package/dist/esm/modals/share-map-modal.js +161 -0
  884. package/dist/esm/modals/share-map-modal.spec.js +172 -0
  885. package/dist/esm/modals/status-panel.js +60 -0
  886. package/dist/esm/modals/swipe-composite-utils.js +119 -0
  887. package/dist/esm/modals/swipe-composite-utils.spec.js +67 -0
  888. package/dist/esm/modals/swipe-export-settings.js +366 -0
  889. package/dist/esm/modals/swipe-export-video-container.js +646 -0
  890. package/dist/esm/modals/swipe-export-video-preview.js +388 -0
  891. package/dist/esm/modals/tilesets-modals/common.js +3 -0
  892. package/dist/esm/modals/tilesets-modals/load-data-footer.js +48 -0
  893. package/dist/esm/modals/tilesets-modals/load-tileset.js +161 -0
  894. package/dist/esm/modals/tilesets-modals/tileset-bitmap-form.js +275 -0
  895. package/dist/esm/modals/tilesets-modals/tileset-icon.js +34 -0
  896. package/dist/esm/modals/tilesets-modals/tileset-raster-form.js +279 -0
  897. package/dist/esm/modals/tilesets-modals/tileset-tile3d-form.js +380 -0
  898. package/dist/esm/modals/tilesets-modals/tileset-vector-form.js +253 -0
  899. package/dist/esm/modals/tilesets-modals/tileset-wms-form.js +199 -0
  900. package/dist/esm/notification-panel/notification-item.js +158 -0
  901. package/dist/esm/notification-panel.js +34 -0
  902. package/dist/esm/plot-container.js +311 -0
  903. package/dist/esm/remote-dataset-refresh-controller.js +44 -0
  904. package/dist/esm/side-panel/add-by-dataset-button.js +121 -0
  905. package/dist/esm/side-panel/common/dataset-info.js +206 -0
  906. package/dist/esm/side-panel/common/dataset-refresh-progress.js +56 -0
  907. package/dist/esm/side-panel/common/dataset-tag.js +57 -0
  908. package/dist/esm/side-panel/common/dataset-title.js +199 -0
  909. package/dist/esm/side-panel/common/source-data-catalog.js +67 -0
  910. package/dist/esm/side-panel/common/source-data-selector-content.js +55 -0
  911. package/dist/esm/side-panel/common/source-data-selector.js +34 -0
  912. package/dist/esm/side-panel/common/source-selector.js +49 -0
  913. package/dist/esm/side-panel/common/types.js +3 -0
  914. package/dist/esm/side-panel/custom-panel.js +32 -0
  915. package/dist/esm/side-panel/filter-manager.js +199 -0
  916. package/dist/esm/side-panel/filter-panel/add-filter-button.js +20 -0
  917. package/dist/esm/side-panel/filter-panel/filter-panel-header.js +60 -0
  918. package/dist/esm/side-panel/filter-panel/filter-panel.js +85 -0
  919. package/dist/esm/side-panel/interaction-manager.js +38 -0
  920. package/dist/esm/side-panel/interaction-panel/brush-config.js +36 -0
  921. package/dist/esm/side-panel/interaction-panel/geocoder-config.js +40 -0
  922. package/dist/esm/side-panel/interaction-panel/interaction-panel.js +114 -0
  923. package/dist/esm/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +157 -0
  924. package/dist/esm/side-panel/interaction-panel/tooltip-config.js +142 -0
  925. package/dist/esm/side-panel/layer-manager.js +235 -0
  926. package/dist/esm/side-panel/layer-panel/add-layer-button.js +20 -0
  927. package/dist/esm/side-panel/layer-panel/aggr-scale-selector.js +29 -0
  928. package/dist/esm/side-panel/layer-panel/channel-by-value-selector.js +61 -0
  929. package/dist/esm/side-panel/layer-panel/color-breaks-panel.js +186 -0
  930. package/dist/esm/side-panel/layer-panel/color-palette-preset.js +40 -0
  931. package/dist/esm/side-panel/layer-panel/color-palette.js +67 -0
  932. package/dist/esm/side-panel/layer-panel/color-range-selector.js +236 -0
  933. package/dist/esm/side-panel/layer-panel/color-scale-selector.js +288 -0
  934. package/dist/esm/side-panel/layer-panel/color-selector.js +179 -0
  935. package/dist/esm/side-panel/layer-panel/column-selector.js +52 -0
  936. package/dist/esm/side-panel/layer-panel/custom-palette.js +783 -0
  937. package/dist/esm/side-panel/layer-panel/custom-picker.js +77 -0
  938. package/dist/esm/side-panel/layer-panel/dataset-layer-group.js +59 -0
  939. package/dist/esm/side-panel/layer-panel/dataset-layer-section.js +112 -0
  940. package/dist/esm/side-panel/layer-panel/dataset-section.js +72 -0
  941. package/dist/esm/side-panel/layer-panel/dimension-scale-selector.js +82 -0
  942. package/dist/esm/side-panel/layer-panel/how-to-button.js +22 -0
  943. package/dist/esm/side-panel/layer-panel/layer-color-selector.js +94 -0
  944. package/dist/esm/side-panel/layer-panel/layer-column-config.js +76 -0
  945. package/dist/esm/side-panel/layer-panel/layer-column-mode-config.js +184 -0
  946. package/dist/esm/side-panel/layer-panel/layer-config-group.js +134 -0
  947. package/dist/esm/side-panel/layer-panel/layer-configurator.js +1121 -0
  948. package/dist/esm/side-panel/layer-panel/layer-error-message.js +24 -0
  949. package/dist/esm/side-panel/layer-panel/layer-group-header.js +171 -0
  950. package/dist/esm/side-panel/layer-panel/layer-list.js +323 -0
  951. package/dist/esm/side-panel/layer-panel/layer-panel-header.js +302 -0
  952. package/dist/esm/side-panel/layer-panel/layer-panel.js +164 -0
  953. package/dist/esm/side-panel/layer-panel/layer-type-dropdown-list.js +69 -0
  954. package/dist/esm/side-panel/layer-panel/layer-type-list-item.js +63 -0
  955. package/dist/esm/side-panel/layer-panel/layer-type-selector.js +50 -0
  956. package/dist/esm/side-panel/layer-panel/raster-tile-colormap-list-item.js +55 -0
  957. package/dist/esm/side-panel/layer-panel/raster-tile-layer-configurator.js +450 -0
  958. package/dist/esm/side-panel/layer-panel/scenegraph-model-selector.js +115 -0
  959. package/dist/esm/side-panel/layer-panel/single-color-palette.js +78 -0
  960. package/dist/esm/side-panel/layer-panel/text-label-panel.js +166 -0
  961. package/dist/esm/side-panel/layer-panel/vector-tile-layer-configurator.js +87 -0
  962. package/dist/esm/side-panel/layer-panel/vis-config-by-field-selector.js +53 -0
  963. package/dist/esm/side-panel/layer-panel/vis-config-slider.js +160 -0
  964. package/dist/esm/side-panel/layer-panel/vis-config-switch.js +50 -0
  965. package/dist/esm/side-panel/map-manager.js +99 -0
  966. package/dist/esm/side-panel/map-style-panel/globe-config-panel.js +327 -0
  967. package/dist/esm/side-panel/map-style-panel/map-layer-group-color-picker.js +69 -0
  968. package/dist/esm/side-panel/map-style-panel/map-layer-group-item.js +87 -0
  969. package/dist/esm/side-panel/map-style-panel/map-layer-selector.js +69 -0
  970. package/dist/esm/side-panel/map-style-panel/map-style-selector.js +92 -0
  971. package/dist/esm/side-panel/panel-header-action.js +68 -0
  972. package/dist/esm/side-panel/panel-header.js +303 -0
  973. package/dist/esm/side-panel/panel-tab.js +49 -0
  974. package/dist/esm/side-panel/panel-title.js +35 -0
  975. package/dist/esm/side-panel/panel-toggle.js +40 -0
  976. package/dist/esm/side-panel/panel-view-list-toggle.js +90 -0
  977. package/dist/esm/side-panel/side-bar.js +119 -0
  978. package/dist/esm/side-panel.js +227 -0
  979. package/dist/esm/types.js +3 -0
  980. package/dist/filters/components.d.ts +7 -5
  981. package/dist/filters/filter-panels/filter-synced-dataset-panel.d.ts +6 -2
  982. package/dist/filters/index.d.ts +1 -0
  983. package/dist/filters/time-widget-settings.d.ts +14 -0
  984. package/dist/filters/time-widget-top.d.ts +2 -3
  985. package/dist/filters/time-widget.d.ts +3 -2
  986. package/dist/filters/types.d.ts +3 -3
  987. package/dist/geocoder/geocoder.d.ts +4 -1
  988. package/dist/geocoder-panel.d.ts +3 -2
  989. package/dist/hooks/use-dnd-layers.d.ts +4 -3
  990. package/dist/index.d.ts +27 -3
  991. package/dist/injector.d.ts +1 -1
  992. package/dist/kepler-gl.d.ts +184 -27
  993. package/dist/loading-indicator.d.ts +4 -1
  994. package/dist/map/annotations/annotation-control.d.ts +16 -0
  995. package/dist/map/attribution.d.ts +52 -0
  996. package/dist/map/layer-hover-info.d.ts +7 -3
  997. package/dist/map/map-control-toolbar.d.ts +33 -8
  998. package/dist/map/map-control.d.ts +21 -4
  999. package/dist/map/map-draw-panel.d.ts +1 -0
  1000. package/dist/map/map-legend-panel.d.ts +11 -2
  1001. package/dist/map/map-legend.d.ts +20 -3
  1002. package/dist/map/map-navigation-control.d.ts +13 -0
  1003. package/dist/map/map-scale.d.ts +11 -0
  1004. package/dist/map/split-map-button.d.ts +10 -3
  1005. package/dist/map/theme-toggle-button.d.ts +18 -0
  1006. package/dist/map/toggle-3d-button.d.ts +8 -2
  1007. package/dist/map-container.d.ts +14 -13
  1008. package/dist/map-view-state-context.d.ts +3 -0
  1009. package/dist/maps-layout.d.ts +3 -0
  1010. package/dist/modal-container.d.ts +3 -2
  1011. package/dist/modals/cloud-components/cloud-item.d.ts +2 -1
  1012. package/dist/modals/cloud-components/cloud-storage-disclaimer.d.ts +2 -0
  1013. package/dist/modals/cloud-tile.d.ts +1 -2
  1014. package/dist/modals/data-table-modal.d.ts +2 -1
  1015. package/dist/modals/export-map-modal/components.d.ts +23 -5
  1016. package/dist/modals/export-video-modal.d.ts +28 -0
  1017. package/dist/modals/export-video-modal.spec.d.ts +1 -0
  1018. package/dist/modals/fog-height-animation.d.ts +8 -0
  1019. package/dist/modals/globe-export-video-container.d.ts +119 -0
  1020. package/dist/modals/globe-export-video-preview.d.ts +44 -0
  1021. package/dist/modals/hubble-utils.d.ts +70 -0
  1022. package/dist/modals/hubble-utils.spec.d.ts +1 -0
  1023. package/dist/modals/modal-dialog.d.ts +1 -1
  1024. package/dist/modals/share-map-modal.d.ts +2 -4
  1025. package/dist/modals/swipe-composite-utils.d.ts +10 -0
  1026. package/dist/modals/swipe-composite-utils.spec.d.ts +1 -0
  1027. package/dist/modals/swipe-export-settings.d.ts +25 -0
  1028. package/dist/modals/swipe-export-video-container.d.ts +128 -0
  1029. package/dist/modals/swipe-export-video-preview.d.ts +70 -0
  1030. package/dist/modals/tilesets-modals/tileset-bitmap-form.d.ts +14 -0
  1031. package/dist/notification-panel/notification-item.d.ts +1 -53
  1032. package/dist/notification-panel.d.ts +1 -1
  1033. package/dist/remote-dataset-refresh-controller.d.ts +11 -0
  1034. package/dist/side-panel/common/dataset-info.d.ts +10 -0
  1035. package/dist/side-panel/common/dataset-refresh-progress.d.ts +11 -0
  1036. package/dist/side-panel/common/dataset-title.d.ts +5 -0
  1037. package/dist/side-panel/common/source-data-catalog.d.ts +3 -0
  1038. package/dist/side-panel/filter-panel/filter-panel-header.d.ts +7 -3
  1039. package/dist/side-panel/interaction-panel/geocoder-config.d.ts +11 -0
  1040. package/dist/side-panel/interaction-panel/interaction-panel.d.ts +3 -2
  1041. package/dist/side-panel/layer-manager.d.ts +6 -4
  1042. package/dist/side-panel/layer-panel/color-scale-selector.d.ts +1 -1
  1043. package/dist/side-panel/layer-panel/color-selector.d.ts +6 -4
  1044. package/dist/side-panel/layer-panel/custom-palette.d.ts +3 -5
  1045. package/dist/side-panel/layer-panel/dataset-layer-group.d.ts +3 -1
  1046. package/dist/side-panel/layer-panel/dataset-layer-section.d.ts +3 -1
  1047. package/dist/side-panel/layer-panel/dataset-section.d.ts +2 -0
  1048. package/dist/side-panel/layer-panel/layer-config-group.d.ts +5 -11
  1049. package/dist/side-panel/layer-panel/layer-configurator.d.ts +4 -2
  1050. package/dist/side-panel/layer-panel/layer-group-header.d.ts +15 -0
  1051. package/dist/side-panel/layer-panel/layer-list.d.ts +10 -4
  1052. package/dist/side-panel/layer-panel/layer-panel-header.d.ts +1 -1
  1053. package/dist/side-panel/layer-panel/layer-panel.d.ts +2 -1
  1054. package/dist/side-panel/layer-panel/raster-tile-layer-configurator.d.ts +1 -1
  1055. package/dist/side-panel/layer-panel/scenegraph-model-selector.d.ts +24 -0
  1056. package/dist/side-panel/layer-panel/text-label-panel.d.ts +1 -1
  1057. package/dist/side-panel/layer-panel/vector-tile-layer-configurator.d.ts +1 -1
  1058. package/dist/side-panel/layer-panel/vis-config-slider.d.ts +2 -0
  1059. package/dist/side-panel/map-manager.d.ts +9 -3
  1060. package/dist/side-panel/map-style-panel/globe-config-panel.d.ts +15 -0
  1061. package/dist/side-panel/panel-header.d.ts +1 -0
  1062. package/dist/side-panel/panel-tab.d.ts +2 -4
  1063. package/dist/side-panel/panel-view-list-toggle.d.ts +4 -4
  1064. package/dist/side-panel/side-bar.d.ts +1 -6
  1065. package/dist/side-panel.d.ts +1 -1
  1066. package/dist/types.d.ts +3 -2
  1067. package/package.json +82 -61
  1068. package/dist/bottom-widget.js +0 -178
  1069. package/dist/common/action-panel.js +0 -134
  1070. package/dist/common/animation-control/animation-control.js +0 -98
  1071. package/dist/common/animation-control/animation-controller.js +0 -269
  1072. package/dist/common/animation-control/animation-speed-slider.js +0 -64
  1073. package/dist/common/animation-control/animation-window-control.js +0 -60
  1074. package/dist/common/animation-control/floating-time-display.js +0 -132
  1075. package/dist/common/animation-control/play-control.js +0 -50
  1076. package/dist/common/animation-control/playback-controls.js +0 -162
  1077. package/dist/common/animation-control/reset-control.js +0 -41
  1078. package/dist/common/animation-control/speed-control.js +0 -51
  1079. package/dist/common/animation-control/window-action-control.js +0 -58
  1080. package/dist/common/checkbox.js +0 -114
  1081. package/dist/common/color-legend.js +0 -273
  1082. package/dist/common/column-stats-chart.js +0 -313
  1083. package/dist/common/data-table/button.js +0 -38
  1084. package/dist/common/data-table/canvas.js +0 -26
  1085. package/dist/common/data-table/cell-size.js +0 -183
  1086. package/dist/common/data-table/display-format.js +0 -126
  1087. package/dist/common/data-table/grid.js +0 -107
  1088. package/dist/common/data-table/header-cell.js +0 -149
  1089. package/dist/common/data-table/index.js +0 -471
  1090. package/dist/common/data-table/option-dropdown.js +0 -160
  1091. package/dist/common/dataset-label.js +0 -27
  1092. package/dist/common/dnd-layer-items.js +0 -18
  1093. package/dist/common/error-boundary.js +0 -59
  1094. package/dist/common/field-selector.js +0 -173
  1095. package/dist/common/field-token.js +0 -43
  1096. package/dist/common/file-uploader/file-drop.js +0 -181
  1097. package/dist/common/file-uploader/file-upload-progress.js +0 -85
  1098. package/dist/common/file-uploader/file-upload.js +0 -242
  1099. package/dist/common/file-uploader/upload-button.js +0 -59
  1100. package/dist/common/flex-container.js +0 -15
  1101. package/dist/common/histogram-plot.js +0 -234
  1102. package/dist/common/icon-button.js +0 -25
  1103. package/dist/common/icons/add.js +0 -41
  1104. package/dist/common/icons/anchor_window.js +0 -34
  1105. package/dist/common/icons/arrow-down-alt.js +0 -41
  1106. package/dist/common/icons/arrow-down-full.js +0 -50
  1107. package/dist/common/icons/arrow-down-small.js +0 -54
  1108. package/dist/common/icons/arrow-down-solid.d.ts +0 -9
  1109. package/dist/common/icons/arrow-down-solid.js +0 -41
  1110. package/dist/common/icons/arrow-down.js +0 -51
  1111. package/dist/common/icons/arrow-left.js +0 -44
  1112. package/dist/common/icons/arrow-right.js +0 -41
  1113. package/dist/common/icons/arrow-up-alt.js +0 -42
  1114. package/dist/common/icons/arrow-up-solid.js +0 -41
  1115. package/dist/common/icons/arrow-up.js +0 -41
  1116. package/dist/common/icons/base-map.js +0 -57
  1117. package/dist/common/icons/base.js +0 -79
  1118. package/dist/common/icons/bug.js +0 -71
  1119. package/dist/common/icons/calendar.js +0 -49
  1120. package/dist/common/icons/cancel.js +0 -41
  1121. package/dist/common/icons/checkmark.js +0 -47
  1122. package/dist/common/icons/clipboard.js +0 -42
  1123. package/dist/common/icons/clock.js +0 -43
  1124. package/dist/common/icons/close.js +0 -47
  1125. package/dist/common/icons/cloud.js +0 -51
  1126. package/dist/common/icons/code-alt.js +0 -44
  1127. package/dist/common/icons/copy.js +0 -52
  1128. package/dist/common/icons/crosshairs.js +0 -44
  1129. package/dist/common/icons/cube-3d.js +0 -55
  1130. package/dist/common/icons/cursor-click.js +0 -45
  1131. package/dist/common/icons/cursor-point.js +0 -51
  1132. package/dist/common/icons/data-table.js +0 -77
  1133. package/dist/common/icons/db.js +0 -59
  1134. package/dist/common/icons/delete.js +0 -53
  1135. package/dist/common/icons/docs.js +0 -57
  1136. package/dist/common/icons/docs2.js +0 -51
  1137. package/dist/common/icons/drag-n-drop.js +0 -43
  1138. package/dist/common/icons/draggable-dots.js +0 -85
  1139. package/dist/common/icons/draw-polygon.js +0 -61
  1140. package/dist/common/icons/edit.js +0 -49
  1141. package/dist/common/icons/effects/brightness-contrast.js +0 -70
  1142. package/dist/common/icons/effects/color-halftone.js +0 -109
  1143. package/dist/common/icons/effects/distance-fog.js +0 -79
  1144. package/dist/common/icons/effects/dot-screen.js +0 -104
  1145. package/dist/common/icons/effects/edge-work.js +0 -63
  1146. package/dist/common/icons/effects/hexagonal-pixelate.js +0 -130
  1147. package/dist/common/icons/effects/hue-saturation.js +0 -61
  1148. package/dist/common/icons/effects/ink.js +0 -60
  1149. package/dist/common/icons/effects/light-and-shadow.js +0 -49
  1150. package/dist/common/icons/effects/magic-wand.js +0 -61
  1151. package/dist/common/icons/effects/magnify.js +0 -68
  1152. package/dist/common/icons/effects/noise.js +0 -114
  1153. package/dist/common/icons/effects/sepia.js +0 -61
  1154. package/dist/common/icons/effects/surface-fog.js +0 -86
  1155. package/dist/common/icons/effects/tilt-shift.js +0 -70
  1156. package/dist/common/icons/effects/triangle-blur.js +0 -65
  1157. package/dist/common/icons/effects/vibrance.js +0 -61
  1158. package/dist/common/icons/effects/vignette.js +0 -54
  1159. package/dist/common/icons/effects/zoom-blur.js +0 -89
  1160. package/dist/common/icons/email.js +0 -45
  1161. package/dist/common/icons/expand.js +0 -43
  1162. package/dist/common/icons/eye-seen.js +0 -50
  1163. package/dist/common/icons/eye-unseen.js +0 -48
  1164. package/dist/common/icons/file-type.js +0 -35
  1165. package/dist/common/icons/file.js +0 -41
  1166. package/dist/common/icons/files.js +0 -41
  1167. package/dist/common/icons/filter-funnel.js +0 -51
  1168. package/dist/common/icons/free-window.js +0 -44
  1169. package/dist/common/icons/gear.js +0 -43
  1170. package/dist/common/icons/globe.js +0 -54
  1171. package/dist/common/icons/hash.js +0 -41
  1172. package/dist/common/icons/help.js +0 -51
  1173. package/dist/common/icons/histogram.js +0 -41
  1174. package/dist/common/icons/horizontal-resize-handle.js +0 -59
  1175. package/dist/common/icons/index.js +0 -810
  1176. package/dist/common/icons/info.js +0 -54
  1177. package/dist/common/icons/layers.js +0 -55
  1178. package/dist/common/icons/left-arrow.js +0 -44
  1179. package/dist/common/icons/legend.js +0 -69
  1180. package/dist/common/icons/line-chart.js +0 -41
  1181. package/dist/common/icons/location-marker.js +0 -59
  1182. package/dist/common/icons/login.js +0 -44
  1183. package/dist/common/icons/logout.js +0 -43
  1184. package/dist/common/icons/map-icon.js +0 -48
  1185. package/dist/common/icons/map-pin.js +0 -57
  1186. package/dist/common/icons/messages.js +0 -55
  1187. package/dist/common/icons/minus.js +0 -41
  1188. package/dist/common/icons/moon.js +0 -59
  1189. package/dist/common/icons/order-by-dataset.js +0 -46
  1190. package/dist/common/icons/order-by-list.js +0 -38
  1191. package/dist/common/icons/pause.js +0 -61
  1192. package/dist/common/icons/picture.js +0 -59
  1193. package/dist/common/icons/pin.js +0 -53
  1194. package/dist/common/icons/play.js +0 -51
  1195. package/dist/common/icons/pointer-click.js +0 -59
  1196. package/dist/common/icons/polygon.js +0 -63
  1197. package/dist/common/icons/rectangle.js +0 -64
  1198. package/dist/common/icons/reduce.js +0 -44
  1199. package/dist/common/icons/reset.js +0 -57
  1200. package/dist/common/icons/save.js +0 -58
  1201. package/dist/common/icons/save2.js +0 -55
  1202. package/dist/common/icons/search.js +0 -43
  1203. package/dist/common/icons/settings.js +0 -61
  1204. package/dist/common/icons/share.js +0 -71
  1205. package/dist/common/icons/speed.js +0 -53
  1206. package/dist/common/icons/split.js +0 -69
  1207. package/dist/common/icons/square-select.js +0 -43
  1208. package/dist/common/icons/sun.js +0 -75
  1209. package/dist/common/icons/sunrise.js +0 -71
  1210. package/dist/common/icons/sunset.js +0 -71
  1211. package/dist/common/icons/timeline-marker.js +0 -56
  1212. package/dist/common/icons/trash.js +0 -55
  1213. package/dist/common/icons/vert-dots.js +0 -79
  1214. package/dist/common/icons/vert-three-dots.js +0 -54
  1215. package/dist/common/icons/warning-sign.js +0 -61
  1216. package/dist/common/icons/warning.js +0 -55
  1217. package/dist/common/icons/zoom-in.js +0 -48
  1218. package/dist/common/icons/zoom-out.js +0 -48
  1219. package/dist/common/image-preview.js +0 -64
  1220. package/dist/common/index.js +0 -283
  1221. package/dist/common/info-helper.js +0 -61
  1222. package/dist/common/item-selector/accessor.js +0 -37
  1223. package/dist/common/item-selector/chickleted-input.js +0 -158
  1224. package/dist/common/item-selector/dropdown-list.js +0 -258
  1225. package/dist/common/item-selector/dropdown-select.js +0 -84
  1226. package/dist/common/item-selector/item-selector.js +0 -255
  1227. package/dist/common/item-selector/typeahead.js +0 -438
  1228. package/dist/common/line-chart.js +0 -120
  1229. package/dist/common/link-renderer.js +0 -20
  1230. package/dist/common/loading-spinner.js +0 -51
  1231. package/dist/common/logo.js +0 -68
  1232. package/dist/common/map-layer-selector.js +0 -38
  1233. package/dist/common/modal.js +0 -171
  1234. package/dist/common/portaled.js +0 -288
  1235. package/dist/common/progress-bar.js +0 -47
  1236. package/dist/common/radius-legend.js +0 -132
  1237. package/dist/common/range-brush.js +0 -266
  1238. package/dist/common/range-plot.js +0 -216
  1239. package/dist/common/range-slider-timeline-panel.js +0 -43
  1240. package/dist/common/range-slider-timeline.js +0 -113
  1241. package/dist/common/range-slider.js +0 -309
  1242. package/dist/common/slider/mouse-event.js +0 -105
  1243. package/dist/common/slider/slider-bar-handle.js +0 -91
  1244. package/dist/common/slider/slider-handle.js +0 -137
  1245. package/dist/common/slider/slider.js +0 -209
  1246. package/dist/common/styled-components.js +0 -439
  1247. package/dist/common/switch.js +0 -21
  1248. package/dist/common/sync-timeline-control.js +0 -61
  1249. package/dist/common/time-range-slider-time-title.js +0 -62
  1250. package/dist/common/time-range-slider.js +0 -132
  1251. package/dist/common/time-slider-marker.js +0 -116
  1252. package/dist/common/timeline-slider.js +0 -132
  1253. package/dist/common/tippy-tooltip.js +0 -135
  1254. package/dist/common/toolbar-item.js +0 -60
  1255. package/dist/common/toolbar.js +0 -27
  1256. package/dist/common/vertical-toolbar.js +0 -16
  1257. package/dist/connect/keplergl-connect.js +0 -44
  1258. package/dist/connect/with-local-selector.js +0 -86
  1259. package/dist/container.js +0 -181
  1260. package/dist/context.js +0 -44
  1261. package/dist/dnd-context.js +0 -120
  1262. package/dist/editor/editor.js +0 -201
  1263. package/dist/editor/feature-action-panel.js +0 -148
  1264. package/dist/effects/compact-color-picker.js +0 -111
  1265. package/dist/effects/effect-configurator.js +0 -313
  1266. package/dist/effects/effect-list.js +0 -130
  1267. package/dist/effects/effect-manager.js +0 -127
  1268. package/dist/effects/effect-panel-header.js +0 -180
  1269. package/dist/effects/effect-panel.js +0 -112
  1270. package/dist/effects/effect-time-configurator.js +0 -302
  1271. package/dist/effects/effect-time-selector.js +0 -153
  1272. package/dist/effects/effect-time-slider.js +0 -199
  1273. package/dist/effects/effect-type-dropdown-list.js +0 -66
  1274. package/dist/effects/effect-type-list-item.js +0 -83
  1275. package/dist/effects/effect-type-selector.js +0 -77
  1276. package/dist/effects/side-panel-title.js +0 -37
  1277. package/dist/effects/timezone-selector.js +0 -58
  1278. package/dist/filter-animation-controller.js +0 -77
  1279. package/dist/filters/components.js +0 -14
  1280. package/dist/filters/filter-panels/filter-panel-with-field-select.js +0 -78
  1281. package/dist/filters/filter-panels/filter-synced-dataset-panel.js +0 -261
  1282. package/dist/filters/filter-panels/multi-select-filter-panel.js +0 -49
  1283. package/dist/filters/filter-panels/new-filter-panel.js +0 -67
  1284. package/dist/filters/filter-panels/polygon-filter-panel.js +0 -68
  1285. package/dist/filters/filter-panels/range-filter-panel.js +0 -54
  1286. package/dist/filters/filter-panels/single-select-filter-panel.js +0 -49
  1287. package/dist/filters/filter-panels/time-range-filter-panel.js +0 -130
  1288. package/dist/filters/filter-panels/time-synced-field-selector.js +0 -28
  1289. package/dist/filters/filter-panels/types.js +0 -6
  1290. package/dist/filters/index.js +0 -56
  1291. package/dist/filters/multi-select-filter.js +0 -31
  1292. package/dist/filters/polygon-filter.js +0 -77
  1293. package/dist/filters/range-filter.js +0 -35
  1294. package/dist/filters/single-select-filter.js +0 -40
  1295. package/dist/filters/time-range-filter.js +0 -67
  1296. package/dist/filters/time-widget-top.js +0 -88
  1297. package/dist/filters/time-widget.js +0 -101
  1298. package/dist/filters/types.js +0 -6
  1299. package/dist/geocoder/geocoder.js +0 -281
  1300. package/dist/geocoder-panel.js +0 -170
  1301. package/dist/hooks/use-cloud-list-provider.js +0 -47
  1302. package/dist/hooks/use-dnd-effects.js +0 -69
  1303. package/dist/hooks/use-dnd-layers.js +0 -80
  1304. package/dist/hooks/use-feature-flags.js +0 -17
  1305. package/dist/hooks/use-fetch-raster-tile-metadata.js +0 -120
  1306. package/dist/hooks/use-fetch-vector-tile-metadata.js +0 -133
  1307. package/dist/hooks/use-legend-position.js +0 -176
  1308. package/dist/hooks/use-on-click-outside.js +0 -36
  1309. package/dist/index.js +0 -2710
  1310. package/dist/injector.js +0 -151
  1311. package/dist/kepler-gl.js +0 -585
  1312. package/dist/layer-animation-controller.js +0 -54
  1313. package/dist/loading-indicator.js +0 -71
  1314. package/dist/map/coordinate-info.js +0 -42
  1315. package/dist/map/effects/effect-control.js +0 -52
  1316. package/dist/map/layer-hover-info.js +0 -250
  1317. package/dist/map/layer-selector-panel.d.ts +0 -21
  1318. package/dist/map/layer-selector-panel.js +0 -85
  1319. package/dist/map/lazy-tippy.js +0 -61
  1320. package/dist/map/locale-panel.js +0 -77
  1321. package/dist/map/map-control-panel.js +0 -140
  1322. package/dist/map/map-control-toolbar.js +0 -18
  1323. package/dist/map/map-control-tooltip.js +0 -34
  1324. package/dist/map/map-control.js +0 -71
  1325. package/dist/map/map-draw-panel.js +0 -98
  1326. package/dist/map/map-legend-panel.js +0 -277
  1327. package/dist/map/map-legend.js +0 -396
  1328. package/dist/map/map-popover-content.js +0 -28
  1329. package/dist/map/map-popover.js +0 -190
  1330. package/dist/map/split-map-button.js +0 -65
  1331. package/dist/map/toggle-3d-button.js +0 -60
  1332. package/dist/map-container.js +0 -998
  1333. package/dist/map-view-state-context.js +0 -99
  1334. package/dist/maps-layout.js +0 -43
  1335. package/dist/modal-container.js +0 -435
  1336. package/dist/modals/add-map-style-modal.js +0 -252
  1337. package/dist/modals/cloud-components/cloud-header.js +0 -60
  1338. package/dist/modals/cloud-components/cloud-item.js +0 -59
  1339. package/dist/modals/cloud-components/cloud-item.spec.js +0 -92
  1340. package/dist/modals/cloud-components/cloud-maps.js +0 -47
  1341. package/dist/modals/cloud-components/cloud-maps.spec.js +0 -98
  1342. package/dist/modals/cloud-components/provider-loading.d.ts +0 -2
  1343. package/dist/modals/cloud-components/provider-loading.js +0 -20
  1344. package/dist/modals/cloud-components/provider-select.js +0 -30
  1345. package/dist/modals/cloud-tile.js +0 -203
  1346. package/dist/modals/data-table-modal.js +0 -264
  1347. package/dist/modals/delete-data-modal.js +0 -41
  1348. package/dist/modals/error-display.js +0 -33
  1349. package/dist/modals/export-data-modal.js +0 -186
  1350. package/dist/modals/export-image-modal.js +0 -189
  1351. package/dist/modals/export-map-modal/components.js +0 -34
  1352. package/dist/modals/export-map-modal/export-html-map.js +0 -128
  1353. package/dist/modals/export-map-modal/export-json-map.js +0 -82
  1354. package/dist/modals/export-map-modal/export-map-modal.js +0 -84
  1355. package/dist/modals/image-modal-container.js +0 -58
  1356. package/dist/modals/load-data-modal.js +0 -98
  1357. package/dist/modals/load-storage-map.js +0 -80
  1358. package/dist/modals/load-storage-map.spec.js +0 -216
  1359. package/dist/modals/loading-dialog.js +0 -37
  1360. package/dist/modals/modal-dialog.js +0 -16
  1361. package/dist/modals/modal-tabs.js +0 -75
  1362. package/dist/modals/overwrite-map-modal.js +0 -84
  1363. package/dist/modals/save-map-modal.js +0 -180
  1364. package/dist/modals/save-map-modal.spec.js +0 -195
  1365. package/dist/modals/share-map-modal.js +0 -169
  1366. package/dist/modals/share-map-modal.spec.js +0 -173
  1367. package/dist/modals/status-panel.js +0 -65
  1368. package/dist/modals/storage-map-viewer.d.ts +0 -21
  1369. package/dist/modals/storage-map-viewer.js +0 -98
  1370. package/dist/modals/tilesets-modals/common.js +0 -6
  1371. package/dist/modals/tilesets-modals/load-data-footer.js +0 -56
  1372. package/dist/modals/tilesets-modals/load-tileset.js +0 -158
  1373. package/dist/modals/tilesets-modals/tileset-icon.js +0 -39
  1374. package/dist/modals/tilesets-modals/tileset-raster-form.js +0 -209
  1375. package/dist/modals/tilesets-modals/tileset-tile3d-form.js +0 -388
  1376. package/dist/modals/tilesets-modals/tileset-vector-form.js +0 -208
  1377. package/dist/modals/tilesets-modals/tileset-wms-form.js +0 -206
  1378. package/dist/notification-panel/notification-item.js +0 -148
  1379. package/dist/notification-panel.js +0 -61
  1380. package/dist/plot-container.js +0 -311
  1381. package/dist/side-panel/add-by-dataset-button.js +0 -129
  1382. package/dist/side-panel/cloud-storage-dropdown.d.ts +0 -6
  1383. package/dist/side-panel/cloud-storage-dropdown.js +0 -40
  1384. package/dist/side-panel/common/dataset-info.js +0 -34
  1385. package/dist/side-panel/common/dataset-tag.js +0 -62
  1386. package/dist/side-panel/common/dataset-title.js +0 -144
  1387. package/dist/side-panel/common/source-data-catalog.js +0 -49
  1388. package/dist/side-panel/common/source-data-selector-content.js +0 -65
  1389. package/dist/side-panel/common/source-data-selector.js +0 -41
  1390. package/dist/side-panel/common/source-selector.js +0 -57
  1391. package/dist/side-panel/common/types.js +0 -6
  1392. package/dist/side-panel/custom-panel.js +0 -39
  1393. package/dist/side-panel/filter-manager.js +0 -203
  1394. package/dist/side-panel/filter-panel/add-filter-button.js +0 -27
  1395. package/dist/side-panel/filter-panel/filter-panel-header.js +0 -68
  1396. package/dist/side-panel/filter-panel/filter-panel.js +0 -93
  1397. package/dist/side-panel/interaction-manager.js +0 -45
  1398. package/dist/side-panel/interaction-panel/brush-config.js +0 -41
  1399. package/dist/side-panel/interaction-panel/interaction-panel.js +0 -115
  1400. package/dist/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +0 -165
  1401. package/dist/side-panel/interaction-panel/tooltip-config.js +0 -150
  1402. package/dist/side-panel/layer-manager.js +0 -202
  1403. package/dist/side-panel/layer-panel/add-layer-button.js +0 -27
  1404. package/dist/side-panel/layer-panel/aggr-scale-selector.js +0 -37
  1405. package/dist/side-panel/layer-panel/channel-by-value-selector.js +0 -72
  1406. package/dist/side-panel/layer-panel/color-breaks-panel.js +0 -194
  1407. package/dist/side-panel/layer-panel/color-palette-preset.js +0 -45
  1408. package/dist/side-panel/layer-panel/color-palette.js +0 -75
  1409. package/dist/side-panel/layer-panel/color-range-selector.js +0 -243
  1410. package/dist/side-panel/layer-panel/color-scale-selector.js +0 -296
  1411. package/dist/side-panel/layer-panel/color-selector.js +0 -187
  1412. package/dist/side-panel/layer-panel/column-selector.js +0 -60
  1413. package/dist/side-panel/layer-panel/custom-palette.js +0 -788
  1414. package/dist/side-panel/layer-panel/custom-picker.js +0 -84
  1415. package/dist/side-panel/layer-panel/dataset-layer-group.js +0 -67
  1416. package/dist/side-panel/layer-panel/dataset-layer-section.js +0 -84
  1417. package/dist/side-panel/layer-panel/dataset-section.js +0 -74
  1418. package/dist/side-panel/layer-panel/dimension-scale-selector.js +0 -92
  1419. package/dist/side-panel/layer-panel/how-to-button.js +0 -27
  1420. package/dist/side-panel/layer-panel/layer-color-selector.js +0 -106
  1421. package/dist/side-panel/layer-panel/layer-column-config.js +0 -86
  1422. package/dist/side-panel/layer-panel/layer-column-mode-config.js +0 -193
  1423. package/dist/side-panel/layer-panel/layer-config-group.js +0 -144
  1424. package/dist/side-panel/layer-panel/layer-configurator.js +0 -700
  1425. package/dist/side-panel/layer-panel/layer-error-message.js +0 -29
  1426. package/dist/side-panel/layer-panel/layer-list.js +0 -172
  1427. package/dist/side-panel/layer-panel/layer-panel-header.js +0 -312
  1428. package/dist/side-panel/layer-panel/layer-panel.js +0 -162
  1429. package/dist/side-panel/layer-panel/layer-type-dropdown-list.js +0 -78
  1430. package/dist/side-panel/layer-panel/layer-type-list-item.js +0 -72
  1431. package/dist/side-panel/layer-panel/layer-type-selector.js +0 -58
  1432. package/dist/side-panel/layer-panel/radius-by-zoom-input.d.ts +0 -11
  1433. package/dist/side-panel/layer-panel/radius-by-zoom-input.js +0 -220
  1434. package/dist/side-panel/layer-panel/raster-tile-colormap-list-item.js +0 -60
  1435. package/dist/side-panel/layer-panel/raster-tile-layer-configurator.js +0 -358
  1436. package/dist/side-panel/layer-panel/single-color-palette.js +0 -86
  1437. package/dist/side-panel/layer-panel/text-label-panel.js +0 -165
  1438. package/dist/side-panel/layer-panel/vector-tile-layer-configurator.js +0 -102
  1439. package/dist/side-panel/layer-panel/vis-config-by-field-selector.js +0 -60
  1440. package/dist/side-panel/layer-panel/vis-config-slider.js +0 -164
  1441. package/dist/side-panel/layer-panel/vis-config-switch.js +0 -55
  1442. package/dist/side-panel/map-manager.js +0 -102
  1443. package/dist/side-panel/map-style-panel/map-layer-group-color-picker.js +0 -77
  1444. package/dist/side-panel/map-style-panel/map-layer-group-item.js +0 -95
  1445. package/dist/side-panel/map-style-panel/map-layer-selector.js +0 -74
  1446. package/dist/side-panel/map-style-panel/map-style-selector.js +0 -97
  1447. package/dist/side-panel/panel-header-action.js +0 -73
  1448. package/dist/side-panel/panel-header.js +0 -303
  1449. package/dist/side-panel/panel-tab.js +0 -55
  1450. package/dist/side-panel/panel-title.js +0 -40
  1451. package/dist/side-panel/panel-toggle.js +0 -48
  1452. package/dist/side-panel/panel-view-list-toggle.js +0 -98
  1453. package/dist/side-panel/side-bar.js +0 -127
  1454. package/dist/side-panel.js +0 -230
  1455. package/dist/types.js +0 -6
package/dist/kepler-gl.js DELETED
@@ -1,585 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof3 = require("@babel/runtime/helpers/typeof");
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.geoCoderPanelSelector = exports["default"] = exports.datasetAttributionSelector = exports.bottomWidgetSelector = exports.attributionSelector = exports.DEFAULT_KEPLER_GL_PROPS = void 0;
9
- exports.getVisibleDatasets = getVisibleDatasets;
10
- exports.isViewportDisjointed = exports.isSplitSelector = void 0;
11
- exports.makeGetActionCreators = makeGetActionCreators;
12
- exports.mapStateSelector = exports.mapFieldsSelector = void 0;
13
- exports.mapStateToProps = mapStateToProps;
14
- exports.sidePanelSelector = exports.plotContainerSelector = exports.notificationPanelSelector = exports.modalContainerSelector = void 0;
15
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
16
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
17
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
18
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
19
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
20
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
21
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
22
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
24
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
- var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
26
- var _react = _interopRequireWildcard(require("react"));
27
- var _console = _interopRequireDefault(require("global/console"));
28
- var _redux = require("redux");
29
- var _styledComponents = _interopRequireWildcard(require("styled-components"));
30
- var _reselect = require("reselect");
31
- var _keplerglConnect = require("./connect/keplergl-connect");
32
- var _reactIntl = require("react-intl");
33
- var _localization = require("@kepler.gl/localization");
34
- var _context = require("./context");
35
- var _actions = require("@kepler.gl/actions");
36
- var _commonUtils = require("@kepler.gl/common-utils");
37
- var _styledComponents2 = require("./common/styled-components");
38
- var _constants = require("@kepler.gl/constants");
39
- var _sidePanel = _interopRequireDefault(require("./side-panel"));
40
- var _mapContainer2 = _interopRequireDefault(require("./map-container"));
41
- var _mapsLayout = _interopRequireDefault(require("./maps-layout"));
42
- var _bottomWidget = _interopRequireDefault(require("./bottom-widget"));
43
- var _modalContainer = _interopRequireDefault(require("./modal-container"));
44
- var _plotContainer = _interopRequireDefault(require("./plot-container"));
45
- var _notificationPanel = _interopRequireDefault(require("./notification-panel"));
46
- var _geocoderPanel = _interopRequireDefault(require("./geocoder-panel"));
47
- var _effectManager = _interopRequireDefault(require("./effects/effect-manager"));
48
- var _dndContext = _interopRequireDefault(require("./dnd-context"));
49
- var _useCloudListProvider = require("./hooks/use-cloud-list-provider");
50
- var _utils = require("@kepler.gl/utils");
51
- var _styles = require("@kepler.gl/styles");
52
- var _templateObject; // SPDX-License-Identifier: MIT
53
- // Copyright contributors to the kepler.gl project
54
- 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); }
55
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof3(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; }
56
- function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
57
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
58
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
59
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
60
- // Maybe we should think about exporting this or creating a variable
61
- // as part of the base.js theme
62
- var GlobalStyle = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n font-family: ", ";\n font-weight: ", ";\n font-size: ", ";\n line-height: ", ";\n\n *,\n *:before,\n *:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n }\n\n ul {\n margin: 0;\n padding: 0;\n }\n\n li {\n margin: 0;\n }\n\n a {\n text-decoration: none;\n color: ", ";\n }\n\n :focus {\n outline: none;\n }\n\n .maplibregl-ctrl .maplibregl-ctrl-logo {\n display: none;\n }\n\n .mapboxgl-ctrl .mapboxgl-ctrl-logo {\n display: none;\n }\n"])), function (props) {
63
- return props.theme.fontFamily;
64
- }, function (props) {
65
- return props.theme.fontWeight;
66
- }, function (props) {
67
- return props.theme.fontSize;
68
- }, function (props) {
69
- return props.theme.lineHeight;
70
- }, function (props) {
71
- return props.theme.labelColor;
72
- });
73
- var BottomWidgetOuter = _styledComponents["default"].div(function (_ref) {
74
- var absolute = _ref.absolute;
75
- return "\n ".concat(absolute ? 'position: absolute; bottom: 0; right: 0;' : '', "\n pointer-events: none; /* prevent padding from blocking input */\n & > * {\n /* all children should allow input */\n pointer-events: all;\n }");
76
- });
77
- var isViewportDisjointed = exports.isViewportDisjointed = function isViewportDisjointed(props) {
78
- return props.mapState.isSplit && !props.mapState.isViewportSynced && props.mapState.splitMapViewports.length > 1;
79
- };
80
- var mapStateSelector = exports.mapStateSelector = (0, _reselect.createSelector)([function (props) {
81
- return props.mapState;
82
- }, function (_, index) {
83
- return index;
84
- }], function (mapState, index) {
85
- if (!Number.isFinite(index)) {
86
- // either no index arg or an invalid index was provided
87
- // it is expected to be either 0 or 1 when in split mode
88
- // only use the mapState
89
- return mapState;
90
- }
91
- return isViewportDisjointed({
92
- mapState: mapState
93
- }) ? // mix together the viewport properties intended for this disjointed <MapContainer> with the other necessary mapState properties
94
- _objectSpread(_objectSpread({}, mapState), mapState.splitMapViewports[index || 0]) :
95
- // otherwise only use the mapState
96
- mapState;
97
- });
98
- var mapFieldsSelector = exports.mapFieldsSelector = function mapFieldsSelector(props) {
99
- var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
100
- return {
101
- getMapboxRef: props.getMapboxRef,
102
- mapboxApiAccessToken: props.mapboxApiAccessToken,
103
- mapboxApiUrl: props.mapboxApiUrl ? props.mapboxApiUrl : DEFAULT_KEPLER_GL_PROPS.mapboxApiUrl,
104
- mapState: mapStateSelector(props, index),
105
- datasetAttributions: attributionSelector(props).sources,
106
- mapStyle: props.mapStyle,
107
- onDeckInitialized: props.onDeckInitialized,
108
- onViewStateChange: props.onViewStateChange,
109
- onMouseMove: props.onMouseMove,
110
- deckGlProps: props.deckGlProps,
111
- uiStateActions: props.uiStateActions,
112
- visStateActions: props.visStateActions,
113
- mapStateActions: props.mapStateActions,
114
- // visState
115
- visState: props.visState,
116
- // uiState
117
- activeSidePanel: props.uiState.activeSidePanel,
118
- mapControls: props.uiState.mapControls,
119
- readOnly: props.uiState.readOnly,
120
- locale: props.uiState.locale,
121
- isLoadingIndicatorVisible: Number(props.visState.loadingIndicatorValue) > 0,
122
- sidePanelWidth: props.sidePanelWidth ? props.sidePanelWidth : DEFAULT_KEPLER_GL_PROPS.width,
123
- // mapStyle
124
- topMapContainerProps: props.topMapContainerProps,
125
- bottomMapContainerProps: props.bottomMapContainerProps,
126
- // transformRequest for Mapbox basemaps
127
- transformRequest: props.transformRequest
128
- };
129
- };
130
- function getVisibleDatasets(datasets) {
131
- // We don't want Geocoder dataset to be present in SidePanel dataset list
132
- return (0, _utils.filterObjectByPredicate)(datasets, function (key) {
133
- return key !== _constants.GEOCODER_DATASET_NAME;
134
- });
135
- }
136
- var sidePanelSelector = exports.sidePanelSelector = function sidePanelSelector(props, availableProviders, filteredDatasets) {
137
- return {
138
- appName: props.appName ? props.appName : DEFAULT_KEPLER_GL_PROPS.appName,
139
- version: props.version ? props.version : DEFAULT_KEPLER_GL_PROPS.version,
140
- appWebsite: props.appWebsite,
141
- mapStyle: props.mapStyle,
142
- onSaveMap: props.onSaveMap,
143
- uiState: props.uiState,
144
- mapStyleActions: props.mapStyleActions,
145
- visStateActions: props.visStateActions,
146
- uiStateActions: props.uiStateActions,
147
- mapStateActions: props.mapStateActions,
148
- datasets: filteredDatasets,
149
- filters: props.visState.filters,
150
- layers: props.visState.layers,
151
- layerOrder: props.visState.layerOrder,
152
- layerClasses: props.visState.layerClasses,
153
- interactionConfig: props.visState.interactionConfig,
154
- mapInfo: props.visState.mapInfo,
155
- layerBlending: props.visState.layerBlending,
156
- overlayBlending: props.visState.overlayBlending,
157
- width: props.sidePanelWidth ? props.sidePanelWidth : DEFAULT_KEPLER_GL_PROPS.width,
158
- availableProviders: availableProviders,
159
- mapSaved: props.providerState.mapSaved
160
- };
161
- };
162
- var plotContainerSelector = exports.plotContainerSelector = function plotContainerSelector(props) {
163
- return {
164
- width: props.width,
165
- height: props.height,
166
- ratio: props.uiState.exportImage.ratio,
167
- resolution: props.uiState.exportImage.resolution,
168
- legend: props.uiState.exportImage.legend,
169
- center: props.uiState.exportImage.center,
170
- imageSize: props.uiState.exportImage.imageSize,
171
- escapeXhtmlForWebpack: props.uiState.exportImage.escapeXhtmlForWebpack,
172
- mapFields: mapFieldsSelector(props),
173
- addNotification: props.uiStateActions.addNotification,
174
- setExportImageSetting: props.uiStateActions.setExportImageSetting,
175
- setExportImageDataUri: props.uiStateActions.setExportImageDataUri,
176
- setExportImageError: props.uiStateActions.setExportImageError,
177
- splitMaps: props.visState.splitMaps
178
- };
179
- };
180
- var isSplitSelector = exports.isSplitSelector = function isSplitSelector(props) {
181
- return props.visState.splitMaps && props.visState.splitMaps.length > 1;
182
- };
183
- var bottomWidgetSelector = exports.bottomWidgetSelector = function bottomWidgetSelector(props, theme) {
184
- return {
185
- filters: props.visState.filters,
186
- datasets: props.visState.datasets,
187
- uiState: props.uiState,
188
- layers: props.visState.layers,
189
- animationConfig: props.visState.animationConfig,
190
- visStateActions: props.visStateActions,
191
- toggleModal: props.uiStateActions.toggleModal,
192
- sidePanelWidth: props.uiState.readOnly ? 0 : props.sidePanelWidth + theme.sidePanel.margin.left
193
- };
194
- };
195
- var modalContainerSelector = exports.modalContainerSelector = function modalContainerSelector(props, rootNode) {
196
- return {
197
- appName: props.appName ? props.appName : DEFAULT_KEPLER_GL_PROPS.appName,
198
- mapStyle: props.mapStyle,
199
- visState: props.visState,
200
- mapState: props.mapState,
201
- uiState: props.uiState,
202
- providerState: props.providerState,
203
- mapboxApiAccessToken: props.mapboxApiAccessToken,
204
- mapboxApiUrl: props.mapboxApiUrl,
205
- visStateActions: props.visStateActions,
206
- uiStateActions: props.uiStateActions,
207
- mapStyleActions: props.mapStyleActions,
208
- providerActions: props.providerActions,
209
- rootNode: rootNode,
210
- // User defined cloud provider props
211
- cloudProviders: props.cloudProviders ? props.cloudProviders : DEFAULT_KEPLER_GL_PROPS.cloudProviders,
212
- onExportToCloudSuccess: props.onExportToCloudSuccess,
213
- onLoadCloudMapSuccess: props.onLoadCloudMapSuccess,
214
- onLoadCloudMapError: props.onLoadCloudMapError,
215
- onExportToCloudError: props.onExportToCloudError
216
- };
217
- };
218
- var geoCoderPanelSelector = exports.geoCoderPanelSelector = function geoCoderPanelSelector(props, dimensions) {
219
- return {
220
- isGeocoderEnabled: props.visState.interactionConfig.geocoder.enabled,
221
- mapboxApiAccessToken: props.mapboxApiAccessToken,
222
- mapState: props.mapState,
223
- uiState: props.uiState,
224
- layerOrder: props.visState.layerOrder,
225
- updateVisData: props.visStateActions.updateVisData,
226
- removeDataset: props.visStateActions.removeDataset,
227
- updateMap: props.mapStateActions.updateMap,
228
- appWidth: dimensions.width
229
- };
230
- };
231
-
232
- /**
233
- * Returns array of unique dataset attributions, each with title and url properties.
234
- */
235
- var datasetAttributionSelector = exports.datasetAttributionSelector = (0, _reselect.createSelector)([function (state) {
236
- return state.visState.datasets;
237
- }], function (datasets) {
238
- var uniqueAttributions = [];
239
- Object.keys(datasets).forEach(function (key) {
240
- var _ds$metadata;
241
- var ds = datasets[key];
242
- var attributions = ds === null || ds === void 0 || (_ds$metadata = ds.metadata) === null || _ds$metadata === void 0 ? void 0 : _ds$metadata.attributions;
243
- if (Array.isArray(attributions)) {
244
- attributions.forEach(function (attribution) {
245
- if (typeof attribution === 'string') {
246
- // attribution can be a raw string or a string with link tags
247
- var links = attribution.match(/<a[^]+?a>/g);
248
- if (links) {
249
- try {
250
- links === null || links === void 0 || links.forEach(function (link) {
251
- var _link$match, _link$match2;
252
- var href = (_link$match = link.match(/href="([^"]*)/)) === null || _link$match === void 0 ? void 0 : _link$match[1];
253
- var title = (_link$match2 = link.match(/title="([^"]*)/)) === null || _link$match2 === void 0 ? void 0 : _link$match2[1];
254
- if (href && title) {
255
- uniqueAttributions.push({
256
- title: "".concat(link.indexOf('&copy;') >= 0 ? '© ' : '').concat(title),
257
- url: href
258
- });
259
- }
260
- });
261
- } catch (error) {
262
- // just ignore for now
263
- }
264
- } else {
265
- uniqueAttributions.push({
266
- title: attribution,
267
- url: null
268
- });
269
- }
270
- }
271
- });
272
- }
273
- });
274
- return uniqueAttributions;
275
- });
276
-
277
- /**
278
- * Deduplicated dataset and layer text attributions and logos.
279
- * Returns text attributions and logos to display.
280
- */
281
- var attributionSelector = exports.attributionSelector = (0, _reselect.createSelector)([datasetAttributionSelector], function (datasetAttributions) {
282
- // TODO collect attributions from layers, and merge with dataset attributions here
283
- var uniqueTextAttributions = datasetAttributions;
284
- var logos = [];
285
- return {
286
- sources: uniqueTextAttributions,
287
- logos: logos
288
- };
289
- });
290
- var notificationPanelSelector = exports.notificationPanelSelector = function notificationPanelSelector(props) {
291
- return {
292
- removeNotification: props.uiStateActions.removeNotification,
293
- notifications: props.uiState.notifications
294
- };
295
- };
296
- var DEFAULT_KEPLER_GL_PROPS = exports.DEFAULT_KEPLER_GL_PROPS = {
297
- mapStyles: [],
298
- mapStylesReplaceDefault: false,
299
- mapboxApiUrl: _constants.DEFAULT_MAPBOX_API_URL,
300
- width: 800,
301
- height: 800,
302
- appName: _constants.KEPLER_GL_NAME,
303
- version: _constants.KEPLER_GL_VERSION,
304
- sidePanelWidth: _constants.DIMENSIONS.sidePanel.width,
305
- theme: {},
306
- cloudProviders: [],
307
- readOnly: false,
308
- featureFlags: {}
309
- };
310
- KeplerGlFactory.deps = [_bottomWidget["default"], _geocoderPanel["default"], _mapContainer2["default"], _mapsLayout["default"], _modalContainer["default"], _sidePanel["default"], _plotContainer["default"], _notificationPanel["default"], _dndContext["default"], _effectManager["default"]];
311
- function KeplerGlFactory(BottomWidget, GeoCoderPanel, MapContainer, MapsLayout, ModalContainer, SidePanel, PlotContainer, NotificationPanel, DndContext) {
312
- /** @typedef {import('./kepler-gl').UnconnectedKeplerGlProps} KeplerGlProps */
313
- /** @augments React.Component<KeplerGlProps> */
314
- var KeplerGL = /*#__PURE__*/function (_Component) {
315
- function KeplerGL() {
316
- var _this;
317
- (0, _classCallCheck2["default"])(this, KeplerGL);
318
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
319
- args[_key] = arguments[_key];
320
- }
321
- _this = _callSuper(this, KeplerGL, [].concat(args));
322
- (0, _defineProperty2["default"])(_this, "state", {
323
- dimensions: null
324
- });
325
- (0, _defineProperty2["default"])(_this, "_handleResize", function (dimensions) {
326
- _this.setState({
327
- dimensions: dimensions
328
- });
329
- });
330
- (0, _defineProperty2["default"])(_this, "root", /*#__PURE__*/(0, _react.createRef)());
331
- (0, _defineProperty2["default"])(_this, "bottomWidgetRef", /*#__PURE__*/(0, _react.createRef)());
332
- /* selectors */
333
- (0, _defineProperty2["default"])(_this, "themeSelector", function (props) {
334
- return props.theme;
335
- });
336
- (0, _defineProperty2["default"])(_this, "availableThemeSelector", (0, _reselect.createSelector)(_this.themeSelector, function (theme) {
337
- return (0, _typeof2["default"])(theme) === 'object' ? _objectSpread(_objectSpread({}, _styles.theme), theme) : theme === _constants.THEME.light ? _styles.themeLT : theme === _constants.THEME.base ? _styles.themeBS : theme;
338
- }));
339
- (0, _defineProperty2["default"])(_this, "datasetsSelector", function (props) {
340
- return props.visState.datasets;
341
- });
342
- (0, _defineProperty2["default"])(_this, "filteredDatasetsSelector", (0, _reselect.createSelector)(_this.datasetsSelector, getVisibleDatasets));
343
- (0, _defineProperty2["default"])(_this, "availableProviders", (0, _reselect.createSelector)(function (props) {
344
- return props.cloudProviders;
345
- }, function (providers) {
346
- return Array.isArray(providers) && providers.length ? {
347
- hasStorage: providers.some(function (p) {
348
- return p.hasPrivateStorage();
349
- }),
350
- hasShare: providers.some(function (p) {
351
- return p.hasSharingUrl();
352
- })
353
- } : {};
354
- }));
355
- (0, _defineProperty2["default"])(_this, "localeMessagesSelector", (0, _reselect.createSelector)(function (props) {
356
- return props.localeMessages;
357
- }, function (customMessages) {
358
- return customMessages ? (0, _utils.mergeMessages)(_localization.messages, customMessages) : _localization.messages;
359
- }));
360
- (0, _defineProperty2["default"])(_this, "_loadMapStyle", function () {
361
- var defaultStyles = Object.values(_this.props.mapStyle.mapStyles);
362
- // add id to custom map styles if not given
363
- var customStyles = (_this.props.mapStyles || []).map(function (ms) {
364
- return _objectSpread(_objectSpread({}, ms), {}, {
365
- id: ms.id || (0, _commonUtils.generateHashId)()
366
- });
367
- });
368
- var allStyles = [].concat((0, _toConsumableArray2["default"])(customStyles), defaultStyles).reduce(function (accu, style) {
369
- accu[style.id] = style;
370
- return accu;
371
- }, {});
372
- _this.props.mapStyleActions.loadMapStyles(allStyles);
373
- });
374
- (0, _defineProperty2["default"])(_this, "_deleteMapLabels", function (containerId, layerId) {
375
- _this.props.visStateActions.toggleLayerForMap(containerId, layerId);
376
- });
377
- return _this;
378
- }
379
- (0, _inherits2["default"])(KeplerGL, _Component);
380
- return (0, _createClass2["default"])(KeplerGL, [{
381
- key: "componentDidMount",
382
- value: function componentDidMount() {
383
- var _getApplicationConfig;
384
- if (((_getApplicationConfig = (0, _utils.getApplicationConfig)().baseMapLibraryConfig) === null || _getApplicationConfig === void 0 || (_getApplicationConfig = _getApplicationConfig['mapbox']) === null || _getApplicationConfig === void 0 ? void 0 : _getApplicationConfig.mapLibName) === 'Mapbox') {
385
- this._validateMapboxToken();
386
- }
387
- this._loadMapStyle();
388
- if (typeof this.props.onKeplerGlInitialized === 'function') {
389
- this.props.onKeplerGlInitialized();
390
- }
391
- if (this.root.current instanceof HTMLElement) {
392
- (0, _utils.observeDimensions)(this.root.current, this._handleResize);
393
- }
394
- }
395
- }, {
396
- key: "componentWillUnmount",
397
- value: function componentWillUnmount() {
398
- if (this.root.current instanceof HTMLElement) {
399
- (0, _utils.unobserveDimensions)(this.root.current);
400
- }
401
- }
402
- }, {
403
- key: "_validateMapboxToken",
404
- value: /* private methods */
405
- function _validateMapboxToken() {
406
- var mapboxApiAccessToken = this.props.mapboxApiAccessToken;
407
- if (!(0, _utils.validateToken)(mapboxApiAccessToken)) {
408
- _console["default"].warn(_constants.MISSING_MAPBOX_TOKEN);
409
- }
410
- }
411
- }, {
412
- key: "render",
413
- value:
414
- // eslint-disable-next-line complexity
415
- function render() {
416
- var _this2 = this;
417
- var _this$props = this.props,
418
- _this$props$id = _this$props.id,
419
- id = _this$props$id === void 0 ? 'map' : _this$props$id,
420
- _this$props$width = _this$props.width,
421
- width = _this$props$width === void 0 ? DEFAULT_KEPLER_GL_PROPS.width : _this$props$width,
422
- _this$props$height = _this$props.height,
423
- height = _this$props$height === void 0 ? DEFAULT_KEPLER_GL_PROPS.height : _this$props$height,
424
- uiState = _this$props.uiState,
425
- visState = _this$props.visState,
426
- readOnly = _this$props.readOnly,
427
- featureFlags = _this$props.featureFlags,
428
- _this$props$cloudProv = _this$props.cloudProviders,
429
- cloudProviders = _this$props$cloudProv === void 0 ? [] : _this$props$cloudProv;
430
- var dimensions = this.state.dimensions || {
431
- width: width,
432
- height: height
433
- };
434
- var splitMaps = visState.splitMaps,
435
- interactionConfig = visState.interactionConfig;
436
- var isSplit = isSplitSelector(this.props);
437
- var theme = this.availableThemeSelector(this.props);
438
- var localeMessages = this.localeMessagesSelector(this.props);
439
- var isExportingImage = uiState.exportImage.exporting;
440
- var availableProviders = this.availableProviders(this.props);
441
- var filteredDatasets = this.filteredDatasetsSelector(this.props);
442
- var sideFields = sidePanelSelector(this.props, availableProviders, filteredDatasets);
443
- var plotContainerFields = plotContainerSelector(this.props);
444
- var bottomWidgetFields = bottomWidgetSelector(this.props, theme);
445
- var modalContainerFields = modalContainerSelector(this.props, this.root.current);
446
- var geoCoderPanelFields = geoCoderPanelSelector(this.props, dimensions);
447
- var notificationPanelFields = notificationPanelSelector(this.props);
448
- var mapContainers = !isSplit ? [/*#__PURE__*/_react["default"].createElement(MapContainer, (0, _extends2["default"])({
449
- primary: true,
450
- key: 0,
451
- index: 0
452
- }, mapFieldsSelector(this.props), {
453
- containerId: 0,
454
- deleteMapLabels: this._deleteMapLabels
455
- }))] : splitMaps.map(function (settings, index) {
456
- return /*#__PURE__*/_react["default"].createElement(MapContainer, (0, _extends2["default"])({
457
- key: index,
458
- index: index,
459
- primary: index === 1
460
- }, mapFieldsSelector(_this2.props, index), {
461
- containerId: index,
462
- deleteMapLabels: _this2._deleteMapLabels
463
- }));
464
- });
465
- return /*#__PURE__*/_react["default"].createElement(_context.RootContext.Provider, {
466
- value: this.root
467
- }, /*#__PURE__*/_react["default"].createElement(_context.FeatureFlagsContextProvider, {
468
- featureFlags: featureFlags
469
- }, /*#__PURE__*/_react["default"].createElement(_reactIntl.IntlProvider, {
470
- locale: uiState.locale,
471
- messages: localeMessages[uiState.locale]
472
- }, /*#__PURE__*/_react["default"].createElement(_styledComponents.StyleSheetManager, {
473
- shouldForwardProp: _styledComponents2.shouldForwardProp
474
- }, /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
475
- theme: theme
476
- }, /*#__PURE__*/_react["default"].createElement(_useCloudListProvider.CloudListProvider, {
477
- providers: cloudProviders
478
- }, /*#__PURE__*/_react["default"].createElement(GlobalStyle, {
479
- className: "kepler-gl",
480
- id: "kepler-gl__".concat(id),
481
- style: {
482
- display: 'flex',
483
- flexDirection: 'column',
484
- position: 'relative',
485
- width: "".concat(width, "px"),
486
- height: "".concat(height, "px")
487
- },
488
- ref: this.root
489
- }, /*#__PURE__*/_react["default"].createElement(NotificationPanel, notificationPanelFields), /*#__PURE__*/_react["default"].createElement(DndContext, {
490
- visState: visState
491
- }, !uiState.readOnly && !readOnly && /*#__PURE__*/_react["default"].createElement(SidePanel, sideFields), /*#__PURE__*/_react["default"].createElement(MapsLayout, {
492
- className: "maps",
493
- mapState: this.props.mapState
494
- }, mapContainers)), isExportingImage && /*#__PURE__*/_react["default"].createElement(PlotContainer, plotContainerFields), !isViewportDisjointed(this.props) && interactionConfig.geocoder.enabled && /*#__PURE__*/_react["default"].createElement(GeoCoderPanel, (0, _extends2["default"])({}, geoCoderPanelFields, {
495
- index: 0,
496
- unsyncedViewports: false
497
- })), isViewportDisjointed(this.props) && interactionConfig.geocoder.enabled && mapContainers.map(function (_mapContainer, index) {
498
- return /*#__PURE__*/_react["default"].createElement(GeoCoderPanel, (0, _extends2["default"])({
499
- key: index
500
- }, geoCoderPanelFields, {
501
- index: index,
502
- unsyncedViewports: true
503
- }));
504
- }), /*#__PURE__*/_react["default"].createElement(BottomWidgetOuter, {
505
- absolute: !(0, _utils.hasPortableWidth)(_styles.breakPointValues)
506
- }, /*#__PURE__*/_react["default"].createElement(BottomWidget, (0, _extends2["default"])({
507
- rootRef: this.bottomWidgetRef
508
- }, bottomWidgetFields, {
509
- containerW: dimensions.width,
510
- theme: theme
511
- }))), /*#__PURE__*/_react["default"].createElement(ModalContainer, (0, _extends2["default"])({}, modalContainerFields, {
512
- containerW: dimensions.width,
513
- containerH: dimensions.height
514
- })))))))));
515
- }
516
- }]);
517
- }(_react.Component);
518
- (0, _defineProperty2["default"])(KeplerGL, "defaultProps", DEFAULT_KEPLER_GL_PROPS);
519
- (0, _defineProperty2["default"])(KeplerGL, "contextType", _context.RootContext);
520
- return (0, _keplerglConnect.connect)(mapStateToProps, makeMapDispatchToProps)((0, _styledComponents.withTheme)(KeplerGL));
521
- }
522
- function mapStateToProps(state, props) {
523
- return _objectSpread(_objectSpread({}, props), {}, {
524
- visState: state.visState,
525
- mapStyle: state.mapStyle,
526
- mapState: state.mapState,
527
- uiState: state.uiState,
528
- providerState: state.providerState
529
- });
530
- }
531
- var defaultUserActions = {};
532
- var getDispatch = function getDispatch(dispatch) {
533
- return dispatch;
534
- };
535
- var getUserActions = function getUserActions(dispatch, props) {
536
- return props.actions || defaultUserActions;
537
- };
538
-
539
- /** @type {() => import('reselect').OutputParametricSelector<any, any, any, any>} */
540
- function makeGetActionCreators() {
541
- return (0, _reselect.createSelector)([getDispatch, getUserActions], function (dispatch, userActions) {
542
- var _map = [_actions.VisStateActions, _actions.MapStateActions, _actions.MapStyleActions, _actions.UIStateActions, _actions.ProviderActions].map(function (actions) {
543
- return (0, _redux.bindActionCreators)(mergeActions(actions, userActions), dispatch);
544
- }),
545
- _map2 = (0, _slicedToArray2["default"])(_map, 5),
546
- visStateActions = _map2[0],
547
- mapStateActions = _map2[1],
548
- mapStyleActions = _map2[2],
549
- uiStateActions = _map2[3],
550
- providerActions = _map2[4];
551
- return {
552
- visStateActions: visStateActions,
553
- mapStateActions: mapStateActions,
554
- mapStyleActions: mapStyleActions,
555
- uiStateActions: uiStateActions,
556
- providerActions: providerActions,
557
- dispatch: dispatch
558
- };
559
- });
560
- }
561
- function makeMapDispatchToProps() {
562
- var getActionCreators = makeGetActionCreators();
563
- var mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {
564
- var groupedActionCreators = getActionCreators(dispatch, ownProps);
565
- return _objectSpread(_objectSpread({}, groupedActionCreators), {}, {
566
- dispatch: dispatch
567
- });
568
- };
569
- return mapDispatchToProps;
570
- }
571
-
572
- /**
573
- * Override default kepler.gl actions with user defined actions using the same key
574
- */
575
- function mergeActions(actions, userActions) {
576
- var overrides = {};
577
- for (var key in userActions) {
578
- if (Object.prototype.hasOwnProperty.call(userActions, key) && Object.prototype.hasOwnProperty.call(actions, key)) {
579
- overrides[key] = userActions[key];
580
- }
581
- }
582
- return _objectSpread(_objectSpread({}, actions), overrides);
583
- }
584
- var _default = exports["default"] = KeplerGlFactory;
585
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfY29uc29sZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVkdXgiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9yZXNlbGVjdCIsIl9rZXBsZXJnbENvbm5lY3QiLCJfcmVhY3RJbnRsIiwiX2xvY2FsaXphdGlvbiIsIl9jb250ZXh0IiwiX2FjdGlvbnMiLCJfY29tbW9uVXRpbHMiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfY29uc3RhbnRzIiwiX3NpZGVQYW5lbCIsIl9tYXBDb250YWluZXIyIiwiX21hcHNMYXlvdXQiLCJfYm90dG9tV2lkZ2V0IiwiX21vZGFsQ29udGFpbmVyIiwiX3Bsb3RDb250YWluZXIiLCJfbm90aWZpY2F0aW9uUGFuZWwiLCJfZ2VvY29kZXJQYW5lbCIsIl9lZmZlY3RNYW5hZ2VyIiwiX2RuZENvbnRleHQiLCJfdXNlQ2xvdWRMaXN0UHJvdmlkZXIiLCJfdXRpbHMiLCJfc3R5bGVzIiwiX3RlbXBsYXRlT2JqZWN0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mMyIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9jYWxsU3VwZXIiLCJvIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJhcHBseSIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiR2xvYmFsU3R5bGUiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJmb250RmFtaWx5IiwiZm9udFdlaWdodCIsImZvbnRTaXplIiwibGluZUhlaWdodCIsImxhYmVsQ29sb3IiLCJCb3R0b21XaWRnZXRPdXRlciIsIl9yZWYiLCJhYnNvbHV0ZSIsImNvbmNhdCIsImlzVmlld3BvcnREaXNqb2ludGVkIiwiZXhwb3J0cyIsIm1hcFN0YXRlIiwiaXNTcGxpdCIsImlzVmlld3BvcnRTeW5jZWQiLCJzcGxpdE1hcFZpZXdwb3J0cyIsIm1hcFN0YXRlU2VsZWN0b3IiLCJjcmVhdGVTZWxlY3RvciIsIl8iLCJpbmRleCIsIk51bWJlciIsImlzRmluaXRlIiwibWFwRmllbGRzU2VsZWN0b3IiLCJ1bmRlZmluZWQiLCJnZXRNYXBib3hSZWYiLCJtYXBib3hBcGlBY2Nlc3NUb2tlbiIsIm1hcGJveEFwaVVybCIsIkRFRkFVTFRfS0VQTEVSX0dMX1BST1BTIiwiZGF0YXNldEF0dHJpYnV0aW9ucyIsImF0dHJpYnV0aW9uU2VsZWN0b3IiLCJzb3VyY2VzIiwibWFwU3R5bGUiLCJvbkRlY2tJbml0aWFsaXplZCIsIm9uVmlld1N0YXRlQ2hhbmdlIiwib25Nb3VzZU1vdmUiLCJkZWNrR2xQcm9wcyIsInVpU3RhdGVBY3Rpb25zIiwidmlzU3RhdGVBY3Rpb25zIiwibWFwU3RhdGVBY3Rpb25zIiwidmlzU3RhdGUiLCJhY3RpdmVTaWRlUGFuZWwiLCJ1aVN0YXRlIiwibWFwQ29udHJvbHMiLCJyZWFkT25seSIsImxvY2FsZSIsImlzTG9hZGluZ0luZGljYXRvclZpc2libGUiLCJsb2FkaW5nSW5kaWNhdG9yVmFsdWUiLCJzaWRlUGFuZWxXaWR0aCIsIndpZHRoIiwidG9wTWFwQ29udGFpbmVyUHJvcHMiLCJib3R0b21NYXBDb250YWluZXJQcm9wcyIsInRyYW5zZm9ybVJlcXVlc3QiLCJnZXRWaXNpYmxlRGF0YXNldHMiLCJkYXRhc2V0cyIsImZpbHRlck9iamVjdEJ5UHJlZGljYXRlIiwia2V5IiwiR0VPQ09ERVJfREFUQVNFVF9OQU1FIiwic2lkZVBhbmVsU2VsZWN0b3IiLCJhdmFpbGFibGVQcm92aWRlcnMiLCJmaWx0ZXJlZERhdGFzZXRzIiwiYXBwTmFtZSIsInZlcnNpb24iLCJhcHBXZWJzaXRlIiwib25TYXZlTWFwIiwibWFwU3R5bGVBY3Rpb25zIiwiZmlsdGVycyIsImxheWVycyIsImxheWVyT3JkZXIiLCJsYXllckNsYXNzZXMiLCJpbnRlcmFjdGlvbkNvbmZpZyIsIm1hcEluZm8iLCJsYXllckJsZW5kaW5nIiwib3ZlcmxheUJsZW5kaW5nIiwibWFwU2F2ZWQiLCJwcm92aWRlclN0YXRlIiwicGxvdENvbnRhaW5lclNlbGVjdG9yIiwiaGVpZ2h0IiwicmF0aW8iLCJleHBvcnRJbWFnZSIsInJlc29sdXRpb24iLCJsZWdlbmQiLCJjZW50ZXIiLCJpbWFnZVNpemUiLCJlc2NhcGVYaHRtbEZvcldlYnBhY2siLCJtYXBGaWVsZHMiLCJhZGROb3RpZmljYXRpb24iLCJzZXRFeHBvcnRJbWFnZVNldHRpbmciLCJzZXRFeHBvcnRJbWFnZURhdGFVcmkiLCJzZXRFeHBvcnRJbWFnZUVycm9yIiwic3BsaXRNYXBzIiwiaXNTcGxpdFNlbGVjdG9yIiwiYm90dG9tV2lkZ2V0U2VsZWN0b3IiLCJhbmltYXRpb25Db25maWciLCJ0b2dnbGVNb2RhbCIsInNpZGVQYW5lbCIsIm1hcmdpbiIsImxlZnQiLCJtb2RhbENvbnRhaW5lclNlbGVjdG9yIiwicm9vdE5vZGUiLCJwcm92aWRlckFjdGlvbnMiLCJjbG91ZFByb3ZpZGVycyIsIm9uRXhwb3J0VG9DbG91ZFN1Y2Nlc3MiLCJvbkxvYWRDbG91ZE1hcFN1Y2Nlc3MiLCJvbkxvYWRDbG91ZE1hcEVycm9yIiwib25FeHBvcnRUb0Nsb3VkRXJyb3IiLCJnZW9Db2RlclBhbmVsU2VsZWN0b3IiLCJkaW1lbnNpb25zIiwiaXNHZW9jb2RlckVuYWJsZWQiLCJnZW9jb2RlciIsImVuYWJsZWQiLCJ1cGRhdGVWaXNEYXRhIiwicmVtb3ZlRGF0YXNldCIsInVwZGF0ZU1hcCIsImFwcFdpZHRoIiwiZGF0YXNldEF0dHJpYnV0aW9uU2VsZWN0b3IiLCJzdGF0ZSIsInVuaXF1ZUF0dHJpYnV0aW9ucyIsIl9kcyRtZXRhZGF0YSIsImRzIiwiYXR0cmlidXRpb25zIiwibWV0YWRhdGEiLCJBcnJheSIsImlzQXJyYXkiLCJhdHRyaWJ1dGlvbiIsImxpbmtzIiwibWF0Y2giLCJsaW5rIiwiX2xpbmskbWF0Y2giLCJfbGluayRtYXRjaDIiLCJocmVmIiwidGl0bGUiLCJpbmRleE9mIiwidXJsIiwiZXJyb3IiLCJ1bmlxdWVUZXh0QXR0cmlidXRpb25zIiwibG9nb3MiLCJub3RpZmljYXRpb25QYW5lbFNlbGVjdG9yIiwicmVtb3ZlTm90aWZpY2F0aW9uIiwibm90aWZpY2F0aW9ucyIsIm1hcFN0eWxlcyIsIm1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0IiwiREVGQVVMVF9NQVBCT1hfQVBJX1VSTCIsIktFUExFUl9HTF9OQU1FIiwiS0VQTEVSX0dMX1ZFUlNJT04iLCJESU1FTlNJT05TIiwiZmVhdHVyZUZsYWdzIiwiS2VwbGVyR2xGYWN0b3J5IiwiZGVwcyIsIkJvdHRvbVdpZGdldEZhY3RvcnkiLCJHZW9Db2RlclBhbmVsRmFjdG9yeSIsIk1hcENvbnRhaW5lckZhY3RvcnkiLCJNYXBzTGF5b3V0RmFjdG9yeSIsIk1vZGFsQ29udGFpbmVyRmFjdG9yeSIsIlNpZGVQYW5lbEZhY3RvcnkiLCJQbG90Q29udGFpbmVyRmFjdG9yeSIsIk5vdGlmaWNhdGlvblBhbmVsRmFjdG9yeSIsIkRuZENvbnRleHRGYWN0b3J5IiwiRWZmZWN0TWFuYWdlckZhY3RvcnkiLCJCb3R0b21XaWRnZXQiLCJHZW9Db2RlclBhbmVsIiwiTWFwQ29udGFpbmVyIiwiTWFwc0xheW91dCIsIk1vZGFsQ29udGFpbmVyIiwiU2lkZVBhbmVsIiwiUGxvdENvbnRhaW5lciIsIk5vdGlmaWNhdGlvblBhbmVsIiwiRG5kQ29udGV4dCIsIktlcGxlckdMIiwiX0NvbXBvbmVudCIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9sZW4iLCJhcmdzIiwiX2tleSIsInNldFN0YXRlIiwiY3JlYXRlUmVmIiwidGhlbWVTZWxlY3RvciIsIl90eXBlb2YyIiwiYmFzaWNUaGVtZSIsIlRIRU1FIiwibGlnaHQiLCJ0aGVtZUxUIiwiYmFzZSIsInRoZW1lQlMiLCJkYXRhc2V0c1NlbGVjdG9yIiwicHJvdmlkZXJzIiwiaGFzU3RvcmFnZSIsInNvbWUiLCJwIiwiaGFzUHJpdmF0ZVN0b3JhZ2UiLCJoYXNTaGFyZSIsImhhc1NoYXJpbmdVcmwiLCJsb2NhbGVNZXNzYWdlcyIsImN1c3RvbU1lc3NhZ2VzIiwibWVyZ2VNZXNzYWdlcyIsIm1lc3NhZ2VzIiwiZGVmYXVsdFN0eWxlcyIsInZhbHVlcyIsImN1c3RvbVN0eWxlcyIsIm1hcCIsIm1zIiwiaWQiLCJnZW5lcmF0ZUhhc2hJZCIsImFsbFN0eWxlcyIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJyZWR1Y2UiLCJhY2N1Iiwic3R5bGUiLCJsb2FkTWFwU3R5bGVzIiwiY29udGFpbmVySWQiLCJsYXllcklkIiwidG9nZ2xlTGF5ZXJGb3JNYXAiLCJfaW5oZXJpdHMyIiwiX2NyZWF0ZUNsYXNzMiIsInZhbHVlIiwiY29tcG9uZW50RGlkTW91bnQiLCJfZ2V0QXBwbGljYXRpb25Db25maWciLCJnZXRBcHBsaWNhdGlvbkNvbmZpZyIsImJhc2VNYXBMaWJyYXJ5Q29uZmlnIiwibWFwTGliTmFtZSIsIl92YWxpZGF0ZU1hcGJveFRva2VuIiwiX2xvYWRNYXBTdHlsZSIsIm9uS2VwbGVyR2xJbml0aWFsaXplZCIsInJvb3QiLCJjdXJyZW50IiwiSFRNTEVsZW1lbnQiLCJvYnNlcnZlRGltZW5zaW9ucyIsIl9oYW5kbGVSZXNpemUiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsInVub2JzZXJ2ZURpbWVuc2lvbnMiLCJ2YWxpZGF0ZVRva2VuIiwiQ29uc29sZSIsIndhcm4iLCJNSVNTSU5HX01BUEJPWF9UT0tFTiIsInJlbmRlciIsIl90aGlzMiIsIl90aGlzJHByb3BzIiwiX3RoaXMkcHJvcHMkaWQiLCJfdGhpcyRwcm9wcyR3aWR0aCIsIl90aGlzJHByb3BzJGhlaWdodCIsIl90aGlzJHByb3BzJGNsb3VkUHJvdiIsImF2YWlsYWJsZVRoZW1lU2VsZWN0b3IiLCJsb2NhbGVNZXNzYWdlc1NlbGVjdG9yIiwiaXNFeHBvcnRpbmdJbWFnZSIsImV4cG9ydGluZyIsImZpbHRlcmVkRGF0YXNldHNTZWxlY3RvciIsInNpZGVGaWVsZHMiLCJwbG90Q29udGFpbmVyRmllbGRzIiwiYm90dG9tV2lkZ2V0RmllbGRzIiwibW9kYWxDb250YWluZXJGaWVsZHMiLCJnZW9Db2RlclBhbmVsRmllbGRzIiwibm90aWZpY2F0aW9uUGFuZWxGaWVsZHMiLCJtYXBDb250YWluZXJzIiwiY3JlYXRlRWxlbWVudCIsIl9leHRlbmRzMiIsInByaW1hcnkiLCJkZWxldGVNYXBMYWJlbHMiLCJfZGVsZXRlTWFwTGFiZWxzIiwic2V0dGluZ3MiLCJSb290Q29udGV4dCIsIlByb3ZpZGVyIiwiRmVhdHVyZUZsYWdzQ29udGV4dFByb3ZpZGVyIiwiSW50bFByb3ZpZGVyIiwiU3R5bGVTaGVldE1hbmFnZXIiLCJzaG91bGRGb3J3YXJkUHJvcCIsIlRoZW1lUHJvdmlkZXIiLCJDbG91ZExpc3RQcm92aWRlciIsImNsYXNzTmFtZSIsImRpc3BsYXkiLCJmbGV4RGlyZWN0aW9uIiwicG9zaXRpb24iLCJyZWYiLCJ1bnN5bmNlZFZpZXdwb3J0cyIsIl9tYXBDb250YWluZXIiLCJoYXNQb3J0YWJsZVdpZHRoIiwiYnJlYWtQb2ludFZhbHVlcyIsInJvb3RSZWYiLCJib3R0b21XaWRnZXRSZWYiLCJjb250YWluZXJXIiwiY29udGFpbmVySCIsIkNvbXBvbmVudCIsImtlcGxlckdsQ29ubmVjdCIsIm1hcFN0YXRlVG9Qcm9wcyIsIm1ha2VNYXBEaXNwYXRjaFRvUHJvcHMiLCJ3aXRoVGhlbWUiLCJkZWZhdWx0VXNlckFjdGlvbnMiLCJnZXREaXNwYXRjaCIsImRpc3BhdGNoIiwiZ2V0VXNlckFjdGlvbnMiLCJhY3Rpb25zIiwibWFrZUdldEFjdGlvbkNyZWF0b3JzIiwidXNlckFjdGlvbnMiLCJfbWFwIiwiVmlzU3RhdGVBY3Rpb25zIiwiTWFwU3RhdGVBY3Rpb25zIiwiTWFwU3R5bGVBY3Rpb25zIiwiVUlTdGF0ZUFjdGlvbnMiLCJQcm92aWRlckFjdGlvbnMiLCJiaW5kQWN0aW9uQ3JlYXRvcnMiLCJtZXJnZUFjdGlvbnMiLCJfbWFwMiIsIl9zbGljZWRUb0FycmF5MiIsImdldEFjdGlvbkNyZWF0b3JzIiwibWFwRGlzcGF0Y2hUb1Byb3BzIiwib3duUHJvcHMiLCJncm91cGVkQWN0aW9uQ3JlYXRvcnMiLCJvdmVycmlkZXMiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9rZXBsZXItZ2wudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudCwgY3JlYXRlUmVmLCBEaXNwYXRjaH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IENvbnNvbGUgZnJvbSAnZ2xvYmFsL2NvbnNvbGUnO1xuaW1wb3J0IHtiaW5kQWN0aW9uQ3JlYXRvcnN9IGZyb20gJ3JlZHV4JztcbmltcG9ydCBzdHlsZWQsIHt3aXRoVGhlbWUsIFN0eWxlU2hlZXRNYW5hZ2VyLCBUaGVtZVByb3ZpZGVyfSBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge2NyZWF0ZVNlbGVjdG9yfSBmcm9tICdyZXNlbGVjdCc7XG5pbXBvcnQge2Nvbm5lY3QgYXMga2VwbGVyR2xDb25uZWN0fSBmcm9tICcuL2Nvbm5lY3Qva2VwbGVyZ2wtY29ubmVjdCc7XG5pbXBvcnQge0ludGxQcm92aWRlcn0gZnJvbSAncmVhY3QtaW50bCc7XG5pbXBvcnQge21lc3NhZ2VzfSBmcm9tICdAa2VwbGVyLmdsL2xvY2FsaXphdGlvbic7XG5pbXBvcnQge1Jvb3RDb250ZXh0LCBGZWF0dXJlRmxhZ3NDb250ZXh0UHJvdmlkZXIsIEZlYXR1cmVGbGFnc30gZnJvbSAnLi9jb250ZXh0JztcbmltcG9ydCB7XG4gIEF0dHJpYnV0aW9uV2l0aFN0eWxlLFxuICBEYXRhc2V0QXR0cmlidXRpb24sXG4gIE9uRXJyb3JDYWxsQmFjayxcbiAgT25TdWNjZXNzQ2FsbEJhY2ssXG4gIFZpZXdwb3J0LFxuICBNYXBTdGF0ZVxufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuaW1wb3J0IHtcbiAgTWFwU3RhdGVBY3Rpb25zLFxuICBNYXBTdHlsZUFjdGlvbnMsXG4gIFByb3ZpZGVyQWN0aW9ucyxcbiAgVUlTdGF0ZUFjdGlvbnMsXG4gIFZpc1N0YXRlQWN0aW9uc1xufSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuXG5pbXBvcnQge2dlbmVyYXRlSGFzaElkfSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5cbmltcG9ydCB7c2hvdWxkRm9yd2FyZFByb3B9IGZyb20gJy4vY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcblxudHlwZSBLZXBsZXJHbEFjdGlvbnMgPSB7XG4gIHZpc1N0YXRlQWN0aW9uczogdHlwZW9mIFZpc1N0YXRlQWN0aW9ucztcbiAgbWFwU3RhdGVBY3Rpb25zOiB0eXBlb2YgTWFwU3RhdGVBY3Rpb25zO1xuICBtYXBTdHlsZUFjdGlvbnM6IHR5cGVvZiBNYXBTdHlsZUFjdGlvbnM7XG4gIHVpU3RhdGVBY3Rpb25zOiB0eXBlb2YgVUlTdGF0ZUFjdGlvbnM7XG4gIHByb3ZpZGVyQWN0aW9uczogdHlwZW9mIFByb3ZpZGVyQWN0aW9ucztcbn07XG5cbmltcG9ydCB7XG4gIERJTUVOU0lPTlMsXG4gIEtFUExFUl9HTF9OQU1FLFxuICBLRVBMRVJfR0xfVkVSU0lPTixcbiAgVEhFTUUsXG4gIERFRkFVTFRfTUFQQk9YX0FQSV9VUkwsXG4gIEdFT0NPREVSX0RBVEFTRVRfTkFNRSxcbiAgTUlTU0lOR19NQVBCT1hfVE9LRU5cbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG5pbXBvcnQgU2lkZVBhbmVsRmFjdG9yeSBmcm9tICcuL3NpZGUtcGFuZWwnO1xuaW1wb3J0IE1hcENvbnRhaW5lckZhY3RvcnkgZnJvbSAnLi9tYXAtY29udGFpbmVyJztcbmltcG9ydCBNYXBzTGF5b3V0RmFjdG9yeSBmcm9tICcuL21hcHMtbGF5b3V0JztcbmltcG9ydCBCb3R0b21XaWRnZXRGYWN0b3J5IGZyb20gJy4vYm90dG9tLXdpZGdldCc7XG5pbXBvcnQgTW9kYWxDb250YWluZXJGYWN0b3J5IGZyb20gJy4vbW9kYWwtY29udGFpbmVyJztcbmltcG9ydCBQbG90Q29udGFpbmVyRmFjdG9yeSBmcm9tICcuL3Bsb3QtY29udGFpbmVyJztcbmltcG9ydCBOb3RpZmljYXRpb25QYW5lbEZhY3RvcnkgZnJvbSAnLi9ub3RpZmljYXRpb24tcGFuZWwnO1xuaW1wb3J0IEdlb0NvZGVyUGFuZWxGYWN0b3J5IGZyb20gJy4vZ2VvY29kZXItcGFuZWwnO1xuaW1wb3J0IEVmZmVjdE1hbmFnZXJGYWN0b3J5IGZyb20gJy4vZWZmZWN0cy9lZmZlY3QtbWFuYWdlcic7XG5pbXBvcnQgRG5kQ29udGV4dEZhY3RvcnkgZnJvbSAnLi9kbmQtY29udGV4dCc7XG5pbXBvcnQge0Nsb3VkTGlzdFByb3ZpZGVyfSBmcm9tICcuL2hvb2tzL3VzZS1jbG91ZC1saXN0LXByb3ZpZGVyJztcblxuaW1wb3J0IHtcbiAgZmlsdGVyT2JqZWN0QnlQcmVkaWNhdGUsXG4gIHZhbGlkYXRlVG9rZW4sXG4gIG1lcmdlTWVzc2FnZXMsXG4gIG9ic2VydmVEaW1lbnNpb25zLFxuICB1bm9ic2VydmVEaW1lbnNpb25zLFxuICBoYXNQb3J0YWJsZVdpZHRoLFxuICBnZXRBcHBsaWNhdGlvbkNvbmZpZ1xufSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcblxuaW1wb3J0IHt0aGVtZSBhcyBiYXNpY1RoZW1lLCB0aGVtZUxULCB0aGVtZUJTLCBicmVha1BvaW50VmFsdWVzfSBmcm9tICdAa2VwbGVyLmdsL3N0eWxlcyc7XG5pbXBvcnQge0tlcGxlckdsU3RhdGV9IGZyb20gJ0BrZXBsZXIuZ2wvcmVkdWNlcnMnO1xuaW1wb3J0IHtQcm92aWRlcn0gZnJvbSAnQGtlcGxlci5nbC9jbG91ZC1wcm92aWRlcnMnO1xuXG4vLyBNYXliZSB3ZSBzaG91bGQgdGhpbmsgYWJvdXQgZXhwb3J0aW5nIHRoaXMgb3IgY3JlYXRpbmcgYSB2YXJpYWJsZVxuLy8gYXMgcGFydCBvZiB0aGUgYmFzZS5qcyB0aGVtZVxuY29uc3QgR2xvYmFsU3R5bGUgPSBzdHlsZWQuZGl2YFxuICBmb250LWZhbWlseTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5mb250RmFtaWx5fTtcbiAgZm9udC13ZWlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZm9udFdlaWdodH07XG4gIGZvbnQtc2l6ZTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5mb250U2l6ZX07XG4gIGxpbmUtaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmxpbmVIZWlnaHR9O1xuXG4gICosXG4gICo6YmVmb3JlLFxuICAqOmFmdGVyIHtcbiAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIH1cblxuICB1bCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICBsaSB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG5cbiAgYSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmxhYmVsQ29sb3J9O1xuICB9XG5cbiAgOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLm1hcGxpYnJlZ2wtY3RybCAubWFwbGlicmVnbC1jdHJsLWxvZ28ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAubWFwYm94Z2wtY3RybCAubWFwYm94Z2wtY3RybC1sb2dvIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5gO1xuXG50eXBlIEJvdHRvbVdpZGdldE91dGVyUHJvcHMgPSB7XG4gIGFic29sdXRlPzogYm9vbGVhbjtcbn07XG5cbmNvbnN0IEJvdHRvbVdpZGdldE91dGVyID0gc3R5bGVkLmRpdjxCb3R0b21XaWRnZXRPdXRlclByb3BzPihcbiAgKHthYnNvbHV0ZX0pID0+IGBcbiAgJHthYnNvbHV0ZSA/ICdwb3NpdGlvbjogYWJzb2x1dGU7IGJvdHRvbTogMDsgcmlnaHQ6IDA7JyA6ICcnfVxuICBwb2ludGVyLWV2ZW50czogbm9uZTsgLyogcHJldmVudCBwYWRkaW5nIGZyb20gYmxvY2tpbmcgaW5wdXQgKi9cbiAgJiA+ICoge1xuICAgIC8qIGFsbCBjaGlsZHJlbiBzaG91bGQgYWxsb3cgaW5wdXQgKi9cbiAgICBwb2ludGVyLWV2ZW50czogYWxsO1xuICB9YFxuKTtcblxuZXhwb3J0IGNvbnN0IGlzVmlld3BvcnREaXNqb2ludGVkID0gcHJvcHMgPT4ge1xuICByZXR1cm4gKFxuICAgIHByb3BzLm1hcFN0YXRlLmlzU3BsaXQgJiZcbiAgICAhcHJvcHMubWFwU3RhdGUuaXNWaWV3cG9ydFN5bmNlZCAmJlxuICAgIHByb3BzLm1hcFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzLmxlbmd0aCA+IDFcbiAgKTtcbn07XG5cbnR5cGUgTWFwU3RhdGVQcm9wcyA9IHtcbiAgbWFwU3RhdGU6IE1hcFN0YXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IG1hcFN0YXRlU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgWyhwcm9wczogTWFwU3RhdGVQcm9wcykgPT4gcHJvcHMubWFwU3RhdGUsIChfOiBNYXBTdGF0ZVByb3BzLCBpbmRleD86IG51bWJlcikgPT4gaW5kZXhdLFxuICAobWFwU3RhdGU6IE1hcFN0YXRlLCBpbmRleD86IG51bWJlcik6IE1hcFN0YXRlID0+IHtcbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShpbmRleCkpIHtcbiAgICAgIC8vIGVpdGhlciBubyBpbmRleCBhcmcgb3IgYW4gaW52YWxpZCBpbmRleCB3YXMgcHJvdmlkZWRcbiAgICAgIC8vIGl0IGlzIGV4cGVjdGVkIHRvIGJlIGVpdGhlciAwIG9yIDEgd2hlbiBpbiBzcGxpdCBtb2RlXG4gICAgICAvLyBvbmx5IHVzZSB0aGUgbWFwU3RhdGVcbiAgICAgIHJldHVybiBtYXBTdGF0ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXNWaWV3cG9ydERpc2pvaW50ZWQoe21hcFN0YXRlfSlcbiAgICAgID8gLy8gbWl4IHRvZ2V0aGVyIHRoZSB2aWV3cG9ydCBwcm9wZXJ0aWVzIGludGVuZGVkIGZvciB0aGlzIGRpc2pvaW50ZWQgPE1hcENvbnRhaW5lcj4gd2l0aCB0aGUgb3RoZXIgbmVjZXNzYXJ5IG1hcFN0YXRlIHByb3BlcnRpZXNcbiAgICAgICAgey4uLm1hcFN0YXRlLCAuLi5tYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0c1tpbmRleCB8fCAwXX1cbiAgICAgIDogLy8gb3RoZXJ3aXNlIG9ubHkgdXNlIHRoZSBtYXBTdGF0ZVxuICAgICAgICBtYXBTdGF0ZTtcbiAgfVxuKTtcblxuZXhwb3J0IGNvbnN0IG1hcEZpZWxkc1NlbGVjdG9yID0gKHByb3BzOiBLZXBsZXJHTFByb3BzLCBpbmRleCA9IDApID0+ICh7XG4gIGdldE1hcGJveFJlZjogcHJvcHMuZ2V0TWFwYm94UmVmLFxuICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogcHJvcHMubWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gIG1hcGJveEFwaVVybDogcHJvcHMubWFwYm94QXBpVXJsID8gcHJvcHMubWFwYm94QXBpVXJsIDogREVGQVVMVF9LRVBMRVJfR0xfUFJPUFMubWFwYm94QXBpVXJsLFxuICBtYXBTdGF0ZTogbWFwU3RhdGVTZWxlY3Rvcihwcm9wcywgaW5kZXgpLFxuICBkYXRhc2V0QXR0cmlidXRpb25zOiBhdHRyaWJ1dGlvblNlbGVjdG9yKHByb3BzKS5zb3VyY2VzLFxuICBtYXBTdHlsZTogcHJvcHMubWFwU3R5bGUsXG4gIG9uRGVja0luaXRpYWxpemVkOiBwcm9wcy5vbkRlY2tJbml0aWFsaXplZCxcbiAgb25WaWV3U3RhdGVDaGFuZ2U6IHByb3BzLm9uVmlld1N0YXRlQ2hhbmdlLFxuICBvbk1vdXNlTW92ZTogcHJvcHMub25Nb3VzZU1vdmUsXG4gIGRlY2tHbFByb3BzOiBwcm9wcy5kZWNrR2xQcm9wcyxcbiAgdWlTdGF0ZUFjdGlvbnM6IHByb3BzLnVpU3RhdGVBY3Rpb25zLFxuICB2aXNTdGF0ZUFjdGlvbnM6IHByb3BzLnZpc1N0YXRlQWN0aW9ucyxcbiAgbWFwU3RhdGVBY3Rpb25zOiBwcm9wcy5tYXBTdGF0ZUFjdGlvbnMsXG5cbiAgLy8gdmlzU3RhdGVcbiAgdmlzU3RhdGU6IHByb3BzLnZpc1N0YXRlLFxuXG4gIC8vIHVpU3RhdGVcbiAgYWN0aXZlU2lkZVBhbmVsOiBwcm9wcy51aVN0YXRlLmFjdGl2ZVNpZGVQYW5lbCxcbiAgbWFwQ29udHJvbHM6IHByb3BzLnVpU3RhdGUubWFwQ29udHJvbHMsXG4gIHJlYWRPbmx5OiBwcm9wcy51aVN0YXRlLnJlYWRPbmx5LFxuICBsb2NhbGU6IHByb3BzLnVpU3RhdGUubG9jYWxlLFxuICBpc0xvYWRpbmdJbmRpY2F0b3JWaXNpYmxlOiBOdW1iZXIocHJvcHMudmlzU3RhdGUubG9hZGluZ0luZGljYXRvclZhbHVlKSA+IDAsXG4gIHNpZGVQYW5lbFdpZHRoOiBwcm9wcy5zaWRlUGFuZWxXaWR0aCA/IHByb3BzLnNpZGVQYW5lbFdpZHRoIDogREVGQVVMVF9LRVBMRVJfR0xfUFJPUFMud2lkdGgsXG5cbiAgLy8gbWFwU3R5bGVcbiAgdG9wTWFwQ29udGFpbmVyUHJvcHM6IHByb3BzLnRvcE1hcENvbnRhaW5lclByb3BzLFxuICBib3R0b21NYXBDb250YWluZXJQcm9wczogcHJvcHMuYm90dG9tTWFwQ29udGFpbmVyUHJvcHMsXG5cbiAgLy8gdHJhbnNmb3JtUmVxdWVzdCBmb3IgTWFwYm94IGJhc2VtYXBzXG4gIHRyYW5zZm9ybVJlcXVlc3Q6IHByb3BzLnRyYW5zZm9ybVJlcXVlc3Rcbn0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmlzaWJsZURhdGFzZXRzKGRhdGFzZXRzKSB7XG4gIC8vIFdlIGRvbid0IHdhbnQgR2VvY29kZXIgZGF0YXNldCB0byBiZSBwcmVzZW50IGluIFNpZGVQYW5lbCBkYXRhc2V0IGxpc3RcbiAgcmV0dXJuIGZpbHRlck9iamVjdEJ5UHJlZGljYXRlKGRhdGFzZXRzLCBrZXkgPT4ga2V5ICE9PSBHRU9DT0RFUl9EQVRBU0VUX05BTUUpO1xufVxuXG5leHBvcnQgY29uc3Qgc2lkZVBhbmVsU2VsZWN0b3IgPSAocHJvcHM6IEtlcGxlckdMUHJvcHMsIGF2YWlsYWJsZVByb3ZpZGVycywgZmlsdGVyZWREYXRhc2V0cykgPT4gKHtcbiAgYXBwTmFtZTogcHJvcHMuYXBwTmFtZSA/IHByb3BzLmFwcE5hbWUgOiBERUZBVUxUX0tFUExFUl9HTF9QUk9QUy5hcHBOYW1lLFxuICB2ZXJzaW9uOiBwcm9wcy52ZXJzaW9uID8gcHJvcHMudmVyc2lvbiA6IERFRkFVTFRfS0VQTEVSX0dMX1BST1BTLnZlcnNpb24sXG4gIGFwcFdlYnNpdGU6IHByb3BzLmFwcFdlYnNpdGUsXG4gIG1hcFN0eWxlOiBwcm9wcy5tYXBTdHlsZSxcbiAgb25TYXZlTWFwOiBwcm9wcy5vblNhdmVNYXAsXG4gIHVpU3RhdGU6IHByb3BzLnVpU3RhdGUsXG4gIG1hcFN0eWxlQWN0aW9uczogcHJvcHMubWFwU3R5bGVBY3Rpb25zLFxuICB2aXNTdGF0ZUFjdGlvbnM6IHByb3BzLnZpc1N0YXRlQWN0aW9ucyxcbiAgdWlTdGF0ZUFjdGlvbnM6IHByb3BzLnVpU3RhdGVBY3Rpb25zLFxuICBtYXBTdGF0ZUFjdGlvbnM6IHByb3BzLm1hcFN0YXRlQWN0aW9ucyxcblxuICBkYXRhc2V0czogZmlsdGVyZWREYXRhc2V0cyxcbiAgZmlsdGVyczogcHJvcHMudmlzU3RhdGUuZmlsdGVycyxcbiAgbGF5ZXJzOiBwcm9wcy52aXNTdGF0ZS5sYXllcnMsXG4gIGxheWVyT3JkZXI6IHByb3BzLnZpc1N0YXRlLmxheWVyT3JkZXIsXG4gIGxheWVyQ2xhc3NlczogcHJvcHMudmlzU3RhdGUubGF5ZXJDbGFzc2VzLFxuICBpbnRlcmFjdGlvbkNvbmZpZzogcHJvcHMudmlzU3RhdGUuaW50ZXJhY3Rpb25Db25maWcsXG4gIG1hcEluZm86IHByb3BzLnZpc1N0YXRlLm1hcEluZm8sXG4gIGxheWVyQmxlbmRpbmc6IHByb3BzLnZpc1N0YXRlLmxheWVyQmxlbmRpbmcsXG4gIG92ZXJsYXlCbGVuZGluZzogcHJvcHMudmlzU3RhdGUub3ZlcmxheUJsZW5kaW5nLFxuXG4gIHdpZHRoOiBwcm9wcy5zaWRlUGFuZWxXaWR0aCA/IHByb3BzLnNpZGVQYW5lbFdpZHRoIDogREVGQVVMVF9LRVBMRVJfR0xfUFJPUFMud2lkdGgsXG4gIGF2YWlsYWJsZVByb3ZpZGVycyxcbiAgbWFwU2F2ZWQ6IHByb3BzLnByb3ZpZGVyU3RhdGUubWFwU2F2ZWRcbn0pO1xuXG5leHBvcnQgY29uc3QgcGxvdENvbnRhaW5lclNlbGVjdG9yID0gKHByb3BzOiBLZXBsZXJHTFByb3BzKSA9PiAoe1xuICB3aWR0aDogcHJvcHMud2lkdGgsXG4gIGhlaWdodDogcHJvcHMuaGVpZ2h0LFxuICByYXRpbzogcHJvcHMudWlTdGF0ZS5leHBvcnRJbWFnZS5yYXRpbyxcbiAgcmVzb2x1dGlvbjogcHJvcHMudWlTdGF0ZS5leHBvcnRJbWFnZS5yZXNvbHV0aW9uLFxuICBsZWdlbmQ6IHByb3BzLnVpU3RhdGUuZXhwb3J0SW1hZ2UubGVnZW5kLFxuICBjZW50ZXI6IHByb3BzLnVpU3RhdGUuZXhwb3J0SW1hZ2UuY2VudGVyLFxuICBpbWFnZVNpemU6IHByb3BzLnVpU3RhdGUuZXhwb3J0SW1hZ2UuaW1hZ2VTaXplLFxuICBlc2NhcGVYaHRtbEZvcldlYnBhY2s6IHByb3BzLnVpU3RhdGUuZXhwb3J0SW1hZ2UuZXNjYXBlWGh0bWxGb3JXZWJwYWNrLFxuXG4gIG1hcEZpZWxkczogbWFwRmllbGRzU2VsZWN0b3IocHJvcHMpLFxuICBhZGROb3RpZmljYXRpb246IHByb3BzLnVpU3RhdGVBY3Rpb25zLmFkZE5vdGlmaWNhdGlvbixcbiAgc2V0RXhwb3J0SW1hZ2VTZXR0aW5nOiBwcm9wcy51aVN0YXRlQWN0aW9ucy5zZXRFeHBvcnRJbWFnZVNldHRpbmcsXG4gIHNldEV4cG9ydEltYWdlRGF0YVVyaTogcHJvcHMudWlTdGF0ZUFjdGlvbnMuc2V0RXhwb3J0SW1hZ2VEYXRhVXJpLFxuICBzZXRFeHBvcnRJbWFnZUVycm9yOiBwcm9wcy51aVN0YXRlQWN0aW9ucy5zZXRFeHBvcnRJbWFnZUVycm9yLFxuICBzcGxpdE1hcHM6IHByb3BzLnZpc1N0YXRlLnNwbGl0TWFwc1xufSk7XG5cbmV4cG9ydCBjb25zdCBpc1NwbGl0U2VsZWN0b3IgPSAocHJvcHM6IEtlcGxlckdMUHJvcHMpID0+XG4gIHByb3BzLnZpc1N0YXRlLnNwbGl0TWFwcyAmJiBwcm9wcy52aXNTdGF0ZS5zcGxpdE1hcHMubGVuZ3RoID4gMTtcblxuZXhwb3J0IGNvbnN0IGJvdHRvbVdpZGdldFNlbGVjdG9yID0gKHByb3BzOiBLZXBsZXJHTFByb3BzLCB0aGVtZSkgPT4gKHtcbiAgZmlsdGVyczogcHJvcHMudmlzU3RhdGUuZmlsdGVycyxcbiAgZGF0YXNldHM6IHByb3BzLnZpc1N0YXRlLmRhdGFzZXRzLFxuICB1aVN0YXRlOiBwcm9wcy51aVN0YXRlLFxuICBsYXllcnM6IHByb3BzLnZpc1N0YXRlLmxheWVycyxcbiAgYW5pbWF0aW9uQ29uZmlnOiBwcm9wcy52aXNTdGF0ZS5hbmltYXRpb25Db25maWcsXG4gIHZpc1N0YXRlQWN0aW9uczogcHJvcHMudmlzU3RhdGVBY3Rpb25zLFxuICB0b2dnbGVNb2RhbDogcHJvcHMudWlTdGF0ZUFjdGlvbnMudG9nZ2xlTW9kYWwsXG4gIHNpZGVQYW5lbFdpZHRoOiBwcm9wcy51aVN0YXRlLnJlYWRPbmx5ID8gMCA6IHByb3BzLnNpZGVQYW5lbFdpZHRoICsgdGhlbWUuc2lkZVBhbmVsLm1hcmdpbi5sZWZ0XG59KTtcblxuZXhwb3J0IGNvbnN0IG1vZGFsQ29udGFpbmVyU2VsZWN0b3IgPSAocHJvcHM6IEtlcGxlckdMUHJvcHMsIHJvb3ROb2RlKSA9PiAoe1xuICBhcHBOYW1lOiBwcm9wcy5hcHBOYW1lID8gcHJvcHMuYXBwTmFtZSA6IERFRkFVTFRfS0VQTEVSX0dMX1BST1BTLmFwcE5hbWUsXG4gIG1hcFN0eWxlOiBwcm9wcy5tYXBTdHlsZSxcbiAgdmlzU3RhdGU6IHByb3BzLnZpc1N0YXRlLFxuICBtYXBTdGF0ZTogcHJvcHMubWFwU3RhdGUsXG4gIHVpU3RhdGU6IHByb3BzLnVpU3RhdGUsXG4gIHByb3ZpZGVyU3RhdGU6IHByb3BzLnByb3ZpZGVyU3RhdGUsXG5cbiAgbWFwYm94QXBpQWNjZXNzVG9rZW46IHByb3BzLm1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICBtYXBib3hBcGlVcmw6IHByb3BzLm1hcGJveEFwaVVybCxcbiAgdmlzU3RhdGVBY3Rpb25zOiBwcm9wcy52aXNTdGF0ZUFjdGlvbnMsXG4gIHVpU3RhdGVBY3Rpb25zOiBwcm9wcy51aVN0YXRlQWN0aW9ucyxcbiAgbWFwU3R5bGVBY3Rpb25zOiBwcm9wcy5tYXBTdHlsZUFjdGlvbnMsXG4gIHByb3ZpZGVyQWN0aW9uczogcHJvcHMucHJvdmlkZXJBY3Rpb25zLFxuXG4gIHJvb3ROb2RlLFxuICAvLyBVc2VyIGRlZmluZWQgY2xvdWQgcHJvdmlkZXIgcHJvcHNcbiAgY2xvdWRQcm92aWRlcnM6IHByb3BzLmNsb3VkUHJvdmlkZXJzXG4gICAgPyBwcm9wcy5jbG91ZFByb3ZpZGVyc1xuICAgIDogREVGQVVMVF9LRVBMRVJfR0xfUFJPUFMuY2xvdWRQcm92aWRlcnMsXG4gIG9uRXhwb3J0VG9DbG91ZFN1Y2Nlc3M6IHByb3BzLm9uRXhwb3J0VG9DbG91ZFN1Y2Nlc3MsXG4gIG9uTG9hZENsb3VkTWFwU3VjY2VzczogcHJvcHMub25Mb2FkQ2xvdWRNYXBTdWNjZXNzLFxuICBvbkxvYWRDbG91ZE1hcEVycm9yOiBwcm9wcy5vbkxvYWRDbG91ZE1hcEVycm9yLFxuICBvbkV4cG9ydFRvQ2xvdWRFcnJvcjogcHJvcHMub25FeHBvcnRUb0Nsb3VkRXJyb3Jcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2VvQ29kZXJQYW5lbFNlbGVjdG9yID0gKFxuICBwcm9wczogS2VwbGVyR0xQcm9wcyxcbiAgZGltZW5zaW9uczoge3dpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyfVxuKSA9PiAoe1xuICBpc0dlb2NvZGVyRW5hYmxlZDogcHJvcHMudmlzU3RhdGUuaW50ZXJhY3Rpb25Db25maWcuZ2VvY29kZXIuZW5hYmxlZCxcbiAgbWFwYm94QXBpQWNjZXNzVG9rZW46IHByb3BzLm1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICBtYXBTdGF0ZTogcHJvcHMubWFwU3RhdGUsXG4gIHVpU3RhdGU6IHByb3BzLnVpU3RhdGUsXG4gIGxheWVyT3JkZXI6IHByb3BzLnZpc1N0YXRlLmxheWVyT3JkZXIsXG4gIHVwZGF0ZVZpc0RhdGE6IHByb3BzLnZpc1N0YXRlQWN0aW9ucy51cGRhdGVWaXNEYXRhLFxuICByZW1vdmVEYXRhc2V0OiBwcm9wcy52aXNTdGF0ZUFjdGlvbnMucmVtb3ZlRGF0YXNldCxcbiAgdXBkYXRlTWFwOiBwcm9wcy5tYXBTdGF0ZUFjdGlvbnMudXBkYXRlTWFwLFxuICBhcHBXaWR0aDogZGltZW5zaW9ucy53aWR0aFxufSk7XG5cbi8qKlxuICogUmV0dXJucyBhcnJheSBvZiB1bmlxdWUgZGF0YXNldCBhdHRyaWJ1dGlvbnMsIGVhY2ggd2l0aCB0aXRsZSBhbmQgdXJsIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBkYXRhc2V0QXR0cmlidXRpb25TZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICBbc3RhdGUgPT4gc3RhdGUudmlzU3RhdGUuZGF0YXNldHNdLFxuICBkYXRhc2V0cyA9PiB7XG4gICAgY29uc3QgdW5pcXVlQXR0cmlidXRpb25zOiBEYXRhc2V0QXR0cmlidXRpb25bXSA9IFtdO1xuICAgIE9iamVjdC5rZXlzKGRhdGFzZXRzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBjb25zdCBkcyA9IGRhdGFzZXRzW2tleV07XG4gICAgICBjb25zdCBhdHRyaWJ1dGlvbnMgPSBkcz8ubWV0YWRhdGE/LmF0dHJpYnV0aW9ucztcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGF0dHJpYnV0aW9ucykpIHtcbiAgICAgICAgYXR0cmlidXRpb25zLmZvckVhY2goYXR0cmlidXRpb24gPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgYXR0cmlidXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAvLyBhdHRyaWJ1dGlvbiBjYW4gYmUgYSByYXcgc3RyaW5nIG9yIGEgc3RyaW5nIHdpdGggbGluayB0YWdzXG4gICAgICAgICAgICBjb25zdCBsaW5rcyA9IGF0dHJpYnV0aW9uLm1hdGNoKC88YVteXSs/YT4vZyk7XG4gICAgICAgICAgICBpZiAobGlua3MpIHtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsaW5rcz8uZm9yRWFjaChsaW5rID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGhyZWYgPSBsaW5rLm1hdGNoKC9ocmVmPVwiKFteXCJdKikvKT8uWzFdO1xuICAgICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPSBsaW5rLm1hdGNoKC90aXRsZT1cIihbXlwiXSopLyk/LlsxXTtcbiAgICAgICAgICAgICAgICAgIGlmIChocmVmICYmIHRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHVuaXF1ZUF0dHJpYnV0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogYCR7bGluay5pbmRleE9mKCcmY29weTsnKSA+PSAwID8gJ8KpICcgOiAnJ30ke3RpdGxlfWAsXG4gICAgICAgICAgICAgICAgICAgICAgdXJsOiBocmVmXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIC8vIGp1c3QgaWdub3JlIGZvciBub3dcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdW5pcXVlQXR0cmlidXRpb25zLnB1c2goe3RpdGxlOiBhdHRyaWJ1dGlvbiwgdXJsOiBudWxsfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdW5pcXVlQXR0cmlidXRpb25zO1xuICB9XG4pO1xuXG4vKipcbiAqIERlZHVwbGljYXRlZCBkYXRhc2V0IGFuZCBsYXllciB0ZXh0IGF0dHJpYnV0aW9ucyBhbmQgbG9nb3MuXG4gKiBSZXR1cm5zIHRleHQgYXR0cmlidXRpb25zIGFuZCBsb2dvcyB0byBkaXNwbGF5LlxuICovXG5leHBvcnQgY29uc3QgYXR0cmlidXRpb25TZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICBbZGF0YXNldEF0dHJpYnV0aW9uU2VsZWN0b3JdLFxuICBkYXRhc2V0QXR0cmlidXRpb25zID0+IHtcbiAgICAvLyBUT0RPIGNvbGxlY3QgYXR0cmlidXRpb25zIGZyb20gbGF5ZXJzLCBhbmQgbWVyZ2Ugd2l0aCBkYXRhc2V0IGF0dHJpYnV0aW9ucyBoZXJlXG4gICAgY29uc3QgdW5pcXVlVGV4dEF0dHJpYnV0aW9ucyA9IGRhdGFzZXRBdHRyaWJ1dGlvbnM7XG4gICAgY29uc3QgbG9nb3M6IEF0dHJpYnV0aW9uV2l0aFN0eWxlW10gPSBbXTtcblxuICAgIHJldHVybiB7c291cmNlczogdW5pcXVlVGV4dEF0dHJpYnV0aW9ucywgbG9nb3N9O1xuICB9XG4pO1xuXG5leHBvcnQgY29uc3Qgbm90aWZpY2F0aW9uUGFuZWxTZWxlY3RvciA9IChwcm9wczogS2VwbGVyR0xQcm9wcykgPT4gKHtcbiAgcmVtb3ZlTm90aWZpY2F0aW9uOiBwcm9wcy51aVN0YXRlQWN0aW9ucy5yZW1vdmVOb3RpZmljYXRpb24sXG4gIG5vdGlmaWNhdGlvbnM6IHByb3BzLnVpU3RhdGUubm90aWZpY2F0aW9uc1xufSk7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0tFUExFUl9HTF9QUk9QUyA9IHtcbiAgbWFwU3R5bGVzOiBbXSxcbiAgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHQ6IGZhbHNlLFxuICBtYXBib3hBcGlVcmw6IERFRkFVTFRfTUFQQk9YX0FQSV9VUkwsXG4gIHdpZHRoOiA4MDAsXG4gIGhlaWdodDogODAwLFxuICBhcHBOYW1lOiBLRVBMRVJfR0xfTkFNRSxcbiAgdmVyc2lvbjogS0VQTEVSX0dMX1ZFUlNJT04sXG4gIHNpZGVQYW5lbFdpZHRoOiBESU1FTlNJT05TLnNpZGVQYW5lbC53aWR0aCxcbiAgdGhlbWU6IHt9LFxuICBjbG91ZFByb3ZpZGVyczogW10sXG4gIHJlYWRPbmx5OiBmYWxzZSxcbiAgZmVhdHVyZUZsYWdzOiB7fVxufTtcblxudHlwZSBLZXBsZXJHTEJhc2ljUHJvcHMgPSB7XG4gIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gIG1hcGJveEFwaVVybD86IHN0cmluZztcbiAgaWQ6IHN0cmluZztcbiAgd2lkdGg/OiBudW1iZXI7XG4gIGhlaWdodD86IG51bWJlcjtcblxuICBhcHBXZWJzaXRlPzogYW55O1xuICBvblNhdmVNYXA/OiAoKSA9PiB2b2lkO1xuICBvblZpZXdTdGF0ZUNoYW5nZT86ICh2aWV3U3RhdGU6IFZpZXdwb3J0KSA9PiB2b2lkO1xuICBvbkRlY2tJbml0aWFsaXplZD86ICgpID0+IHZvaWQ7XG4gIG9uS2VwbGVyR2xJbml0aWFsaXplZD86ICgpID0+IHZvaWQ7XG4gIGdldE1hcGJveFJlZj86ICgpID0+IFJlYWN0LlJlZk9iamVjdDxhbnk+O1xuICBtYXBTdHlsZXM/OiB7aWQ6IHN0cmluZzsgc3R5bGU/OiBvYmplY3R9W107XG4gIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0PzogYm9vbGVhbjtcbiAgYXBwTmFtZT86IHN0cmluZztcbiAgdmVyc2lvbj86IHN0cmluZztcbiAgc2lkZVBhbmVsV2lkdGg/OiBudW1iZXI7XG4gIHRoZW1lPzogb2JqZWN0O1xuICBjbG91ZFByb3ZpZGVycz86IFByb3ZpZGVyW107XG4gIGRlY2tHbFByb3BzPzogb2JqZWN0O1xuICBvbkxvYWRDbG91ZE1hcFN1Y2Nlc3M/OiBPblN1Y2Nlc3NDYWxsQmFjaztcbiAgb25Mb2FkQ2xvdWRNYXBFcnJvcj86IE9uRXJyb3JDYWxsQmFjaztcbiAgb25Nb3VzZU1vdmU/OiAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQgJiB7bG5nTGF0PzogW251bWJlciwgbnVtYmVyXX0pID0+IHZvaWQ7XG4gIG9uRXhwb3J0VG9DbG91ZFN1Y2Nlc3M/OiBPblN1Y2Nlc3NDYWxsQmFjaztcbiAgb25FeHBvcnRUb0Nsb3VkRXJyb3I/OiBPbkVycm9yQ2FsbEJhY2s7XG4gIHJlYWRPbmx5PzogYm9vbGVhbjtcbiAgZmVhdHVyZUZsYWdzPzogRmVhdHVyZUZsYWdzO1xuXG4gIGxvY2FsZU1lc3NhZ2VzPzoge1trZXk6IHN0cmluZ106IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9fTtcbiAgZGlzcGF0Y2g6IERpc3BhdGNoPGFueT47XG5cbiAgdG9wTWFwQ29udGFpbmVyUHJvcHM/OiBvYmplY3Q7XG4gIGJvdHRvbU1hcENvbnRhaW5lclByb3BzPzogb2JqZWN0O1xuXG4gIHRyYW5zZm9ybVJlcXVlc3Q/OiAodXJsOiBzdHJpbmcpID0+IHt1cmw6IHN0cmluZ307XG59O1xuXG50eXBlIEtlcGxlckdMUHJvcHMgPSBLZXBsZXJHbFN0YXRlICYgS2VwbGVyR2xBY3Rpb25zICYgS2VwbGVyR0xCYXNpY1Byb3BzO1xudHlwZSBLZXBsZXJHTENvbXBTdGF0ZSA9IHtcbiAgZGltZW5zaW9uczoge3dpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyfSB8IG51bGw7XG59O1xuXG5LZXBsZXJHbEZhY3RvcnkuZGVwcyA9IFtcbiAgQm90dG9tV2lkZ2V0RmFjdG9yeSxcbiAgR2VvQ29kZXJQYW5lbEZhY3RvcnksXG4gIE1hcENvbnRhaW5lckZhY3RvcnksXG4gIE1hcHNMYXlvdXRGYWN0b3J5LFxuICBNb2RhbENvbnRhaW5lckZhY3RvcnksXG4gIFNpZGVQYW5lbEZhY3RvcnksXG4gIFBsb3RDb250YWluZXJGYWN0b3J5LFxuICBOb3RpZmljYXRpb25QYW5lbEZhY3RvcnksXG4gIERuZENvbnRleHRGYWN0b3J5LFxuICBFZmZlY3RNYW5hZ2VyRmFjdG9yeVxuXTtcblxuZnVuY3Rpb24gS2VwbGVyR2xGYWN0b3J5KFxuICBCb3R0b21XaWRnZXQ6IFJldHVyblR5cGU8dHlwZW9mIEJvdHRvbVdpZGdldEZhY3Rvcnk+LFxuICBHZW9Db2RlclBhbmVsOiBSZXR1cm5UeXBlPHR5cGVvZiBHZW9Db2RlclBhbmVsRmFjdG9yeT4sXG4gIE1hcENvbnRhaW5lcjogUmV0dXJuVHlwZTx0eXBlb2YgTWFwQ29udGFpbmVyRmFjdG9yeT4sXG4gIE1hcHNMYXlvdXQ6IFJldHVyblR5cGU8dHlwZW9mIE1hcHNMYXlvdXRGYWN0b3J5PixcbiAgTW9kYWxDb250YWluZXI6IFJldHVyblR5cGU8dHlwZW9mIE1vZGFsQ29udGFpbmVyRmFjdG9yeT4sXG4gIFNpZGVQYW5lbDogUmV0dXJuVHlwZTx0eXBlb2YgU2lkZVBhbmVsRmFjdG9yeT4sXG4gIFBsb3RDb250YWluZXI6IFJldHVyblR5cGU8dHlwZW9mIFBsb3RDb250YWluZXJGYWN0b3J5PixcbiAgTm90aWZpY2F0aW9uUGFuZWw6IFJldHVyblR5cGU8dHlwZW9mIE5vdGlmaWNhdGlvblBhbmVsRmFjdG9yeT4sXG4gIERuZENvbnRleHQ6IFJldHVyblR5cGU8dHlwZW9mIERuZENvbnRleHRGYWN0b3J5PlxuKTogUmVhY3QuQ29tcG9uZW50VHlwZTxLZXBsZXJHTEJhc2ljUHJvcHMgJiB7c2VsZWN0b3I6ICguLi5hcmdzOiBhbnlbXSkgPT4gS2VwbGVyR2xTdGF0ZX0+IHtcbiAgLyoqIEB0eXBlZGVmIHtpbXBvcnQoJy4va2VwbGVyLWdsJykuVW5jb25uZWN0ZWRLZXBsZXJHbFByb3BzfSBLZXBsZXJHbFByb3BzICovXG4gIC8qKiBAYXVnbWVudHMgUmVhY3QuQ29tcG9uZW50PEtlcGxlckdsUHJvcHM+ICovXG4gIGNsYXNzIEtlcGxlckdMIGV4dGVuZHMgQ29tcG9uZW50PFxuICAgIEtlcGxlckdMUHJvcHMgJiB7c2VsZWN0b3I6ICguLi5hcmdzOiBhbnlbXSkgPT4gS2VwbGVyR2xTdGF0ZX0sXG4gICAgS2VwbGVyR0xDb21wU3RhdGVcbiAgPiB7XG4gICAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IERFRkFVTFRfS0VQTEVSX0dMX1BST1BTO1xuXG4gICAgc3RhdGU6IEtlcGxlckdMQ29tcFN0YXRlID0ge1xuICAgICAgZGltZW5zaW9uczogbnVsbFxuICAgIH07XG5cbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIGlmIChnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmJhc2VNYXBMaWJyYXJ5Q29uZmlnPy5bJ21hcGJveCddPy5tYXBMaWJOYW1lID09PSAnTWFwYm94Jykge1xuICAgICAgICB0aGlzLl92YWxpZGF0ZU1hcGJveFRva2VuKCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9sb2FkTWFwU3R5bGUoKTtcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy5vbktlcGxlckdsSW5pdGlhbGl6ZWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vbktlcGxlckdsSW5pdGlhbGl6ZWQoKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnJvb3QuY3VycmVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIG9ic2VydmVEaW1lbnNpb25zKHRoaXMucm9vdC5jdXJyZW50LCB0aGlzLl9oYW5kbGVSZXNpemUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgaWYgKHRoaXMucm9vdC5jdXJyZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgdW5vYnNlcnZlRGltZW5zaW9ucyh0aGlzLnJvb3QuY3VycmVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgX2hhbmRsZVJlc2l6ZSA9IGRpbWVuc2lvbnMgPT4ge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7ZGltZW5zaW9uc30pO1xuICAgIH07XG5cbiAgICBzdGF0aWMgY29udGV4dFR5cGUgPSBSb290Q29udGV4dDtcblxuICAgIHJvb3QgPSBjcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XG4gICAgYm90dG9tV2lkZ2V0UmVmID0gY3JlYXRlUmVmPEhUTUxEaXZFbGVtZW50PigpO1xuXG4gICAgLyogc2VsZWN0b3JzICovXG4gICAgdGhlbWVTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLnRoZW1lO1xuICAgIGF2YWlsYWJsZVRoZW1lU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3Rvcih0aGlzLnRoZW1lU2VsZWN0b3IsIHRoZW1lID0+XG4gICAgICB0eXBlb2YgdGhlbWUgPT09ICdvYmplY3QnXG4gICAgICAgID8ge1xuICAgICAgICAgICAgLi4uYmFzaWNUaGVtZSxcbiAgICAgICAgICAgIC4uLnRoZW1lXG4gICAgICAgICAgfVxuICAgICAgICA6IHRoZW1lID09PSBUSEVNRS5saWdodFxuICAgICAgICA/IHRoZW1lTFRcbiAgICAgICAgOiB0aGVtZSA9PT0gVEhFTUUuYmFzZVxuICAgICAgICA/IHRoZW1lQlNcbiAgICAgICAgOiB0aGVtZVxuICAgICk7XG5cbiAgICBkYXRhc2V0c1NlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMudmlzU3RhdGUuZGF0YXNldHM7XG4gICAgZmlsdGVyZWREYXRhc2V0c1NlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IodGhpcy5kYXRhc2V0c1NlbGVjdG9yLCBnZXRWaXNpYmxlRGF0YXNldHMpO1xuXG4gICAgYXZhaWxhYmxlUHJvdmlkZXJzID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICAocHJvcHM6IEtlcGxlckdMUHJvcHMpID0+IHByb3BzLmNsb3VkUHJvdmlkZXJzLFxuICAgICAgcHJvdmlkZXJzID0+XG4gICAgICAgIEFycmF5LmlzQXJyYXkocHJvdmlkZXJzKSAmJiBwcm92aWRlcnMubGVuZ3RoXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIGhhc1N0b3JhZ2U6IHByb3ZpZGVycy5zb21lKHAgPT4gcC5oYXNQcml2YXRlU3RvcmFnZSgpKSxcbiAgICAgICAgICAgICAgaGFzU2hhcmU6IHByb3ZpZGVycy5zb21lKHAgPT4gcC5oYXNTaGFyaW5nVXJsKCkpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB7fVxuICAgICk7XG5cbiAgICBsb2NhbGVNZXNzYWdlc1NlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICAocHJvcHM6IEtlcGxlckdMUHJvcHMpID0+IHByb3BzLmxvY2FsZU1lc3NhZ2VzLFxuICAgICAgY3VzdG9tTWVzc2FnZXMgPT4gKGN1c3RvbU1lc3NhZ2VzID8gbWVyZ2VNZXNzYWdlcyhtZXNzYWdlcywgY3VzdG9tTWVzc2FnZXMpIDogbWVzc2FnZXMpXG4gICAgKTtcblxuICAgIC8qIHByaXZhdGUgbWV0aG9kcyAqL1xuICAgIF92YWxpZGF0ZU1hcGJveFRva2VuKCkge1xuICAgICAgY29uc3Qge21hcGJveEFwaUFjY2Vzc1Rva2VufSA9IHRoaXMucHJvcHM7XG4gICAgICBpZiAoIXZhbGlkYXRlVG9rZW4obWFwYm94QXBpQWNjZXNzVG9rZW4pKSB7XG4gICAgICAgIENvbnNvbGUud2FybihNSVNTSU5HX01BUEJPWF9UT0tFTik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgX2xvYWRNYXBTdHlsZSA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGRlZmF1bHRTdHlsZXMgPSBPYmplY3QudmFsdWVzKHRoaXMucHJvcHMubWFwU3R5bGUubWFwU3R5bGVzKTtcbiAgICAgIC8vIGFkZCBpZCB0byBjdXN0b20gbWFwIHN0eWxlcyBpZiBub3QgZ2l2ZW5cbiAgICAgIGNvbnN0IGN1c3RvbVN0eWxlcyA9ICh0aGlzLnByb3BzLm1hcFN0eWxlcyB8fCBbXSkubWFwKG1zID0+ICh7XG4gICAgICAgIC4uLm1zLFxuICAgICAgICBpZDogbXMuaWQgfHwgZ2VuZXJhdGVIYXNoSWQoKVxuICAgICAgfSkpO1xuXG4gICAgICBjb25zdCBhbGxTdHlsZXMgPSBbLi4uY3VzdG9tU3R5bGVzLCAuLi5kZWZhdWx0U3R5bGVzXS5yZWR1Y2UoKGFjY3UsIHN0eWxlKSA9PiB7XG4gICAgICAgIGFjY3Vbc3R5bGUuaWRdID0gc3R5bGU7XG4gICAgICAgIHJldHVybiBhY2N1O1xuICAgICAgfSwge30pO1xuXG4gICAgICB0aGlzLnByb3BzLm1hcFN0eWxlQWN0aW9ucy5sb2FkTWFwU3R5bGVzKGFsbFN0eWxlcyk7XG4gICAgfTtcblxuICAgIF9kZWxldGVNYXBMYWJlbHMgPSAoY29udGFpbmVySWQsIGxheWVySWQpID0+IHtcbiAgICAgIHRoaXMucHJvcHMudmlzU3RhdGVBY3Rpb25zLnRvZ2dsZUxheWVyRm9yTWFwKGNvbnRhaW5lcklkLCBsYXllcklkKTtcbiAgICB9O1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGlkID0gJ21hcCcsXG4gICAgICAgIHdpZHRoID0gREVGQVVMVF9LRVBMRVJfR0xfUFJPUFMud2lkdGgsXG4gICAgICAgIGhlaWdodCA9IERFRkFVTFRfS0VQTEVSX0dMX1BST1BTLmhlaWdodCxcbiAgICAgICAgdWlTdGF0ZSxcbiAgICAgICAgdmlzU3RhdGUsXG4gICAgICAgIC8vIHJlYWRPbmx5IG92ZXJyaWRlXG4gICAgICAgIHJlYWRPbmx5LFxuXG4gICAgICAgIC8vIGZlYXR1cmVzXG4gICAgICAgIGZlYXR1cmVGbGFncyxcblxuICAgICAgICAvLyBjbG91ZCBwcm92aWRlcnNcbiAgICAgICAgY2xvdWRQcm92aWRlcnMgPSBbXVxuICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgIGNvbnN0IGRpbWVuc2lvbnMgPSB0aGlzLnN0YXRlLmRpbWVuc2lvbnMgfHwge3dpZHRoLCBoZWlnaHR9O1xuICAgICAgY29uc3Qge1xuICAgICAgICBzcGxpdE1hcHMsIC8vIHRoaXMgd2lsbCBzdG9yZSBzdXBwb3J0IGZvciBzcGxpdCBtYXAgdmlldyBpcyBuZWNlc3NhcnlcbiAgICAgICAgaW50ZXJhY3Rpb25Db25maWdcbiAgICAgIH0gPSB2aXNTdGF0ZTtcblxuICAgICAgY29uc3QgaXNTcGxpdCA9IGlzU3BsaXRTZWxlY3Rvcih0aGlzLnByb3BzKTtcbiAgICAgIGNvbnN0IHRoZW1lID0gdGhpcy5hdmFpbGFibGVUaGVtZVNlbGVjdG9yKHRoaXMucHJvcHMpO1xuICAgICAgY29uc3QgbG9jYWxlTWVzc2FnZXMgPSB0aGlzLmxvY2FsZU1lc3NhZ2VzU2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBpc0V4cG9ydGluZ0ltYWdlID0gdWlTdGF0ZS5leHBvcnRJbWFnZS5leHBvcnRpbmc7XG4gICAgICBjb25zdCBhdmFpbGFibGVQcm92aWRlcnMgPSB0aGlzLmF2YWlsYWJsZVByb3ZpZGVycyh0aGlzLnByb3BzKTtcblxuICAgICAgY29uc3QgZmlsdGVyZWREYXRhc2V0cyA9IHRoaXMuZmlsdGVyZWREYXRhc2V0c1NlbGVjdG9yKHRoaXMucHJvcHMpO1xuICAgICAgY29uc3Qgc2lkZUZpZWxkcyA9IHNpZGVQYW5lbFNlbGVjdG9yKHRoaXMucHJvcHMsIGF2YWlsYWJsZVByb3ZpZGVycywgZmlsdGVyZWREYXRhc2V0cyk7XG4gICAgICBjb25zdCBwbG90Q29udGFpbmVyRmllbGRzID0gcGxvdENvbnRhaW5lclNlbGVjdG9yKHRoaXMucHJvcHMpO1xuICAgICAgY29uc3QgYm90dG9tV2lkZ2V0RmllbGRzID0gYm90dG9tV2lkZ2V0U2VsZWN0b3IodGhpcy5wcm9wcywgdGhlbWUpO1xuICAgICAgY29uc3QgbW9kYWxDb250YWluZXJGaWVsZHMgPSBtb2RhbENvbnRhaW5lclNlbGVjdG9yKHRoaXMucHJvcHMsIHRoaXMucm9vdC5jdXJyZW50KTtcbiAgICAgIGNvbnN0IGdlb0NvZGVyUGFuZWxGaWVsZHMgPSBnZW9Db2RlclBhbmVsU2VsZWN0b3IodGhpcy5wcm9wcywgZGltZW5zaW9ucyk7XG4gICAgICBjb25zdCBub3RpZmljYXRpb25QYW5lbEZpZWxkcyA9IG5vdGlmaWNhdGlvblBhbmVsU2VsZWN0b3IodGhpcy5wcm9wcyk7XG5cbiAgICAgIGNvbnN0IG1hcENvbnRhaW5lcnMgPSAhaXNTcGxpdFxuICAgICAgICA/IFtcbiAgICAgICAgICAgIDxNYXBDb250YWluZXJcbiAgICAgICAgICAgICAgcHJpbWFyeT17dHJ1ZX1cbiAgICAgICAgICAgICAga2V5PXswfVxuICAgICAgICAgICAgICBpbmRleD17MH1cbiAgICAgICAgICAgICAgey4uLm1hcEZpZWxkc1NlbGVjdG9yKHRoaXMucHJvcHMpfVxuICAgICAgICAgICAgICBjb250YWluZXJJZD17MH1cbiAgICAgICAgICAgICAgZGVsZXRlTWFwTGFiZWxzPXt0aGlzLl9kZWxldGVNYXBMYWJlbHN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIF1cbiAgICAgICAgOiBzcGxpdE1hcHMubWFwKChzZXR0aW5ncywgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxNYXBDb250YWluZXJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgaW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICBwcmltYXJ5PXtpbmRleCA9PT0gMX1cbiAgICAgICAgICAgICAgey4uLm1hcEZpZWxkc1NlbGVjdG9yKHRoaXMucHJvcHMsIGluZGV4KX1cbiAgICAgICAgICAgICAgY29udGFpbmVySWQ9e2luZGV4fVxuICAgICAgICAgICAgICBkZWxldGVNYXBMYWJlbHM9e3RoaXMuX2RlbGV0ZU1hcExhYmVsc31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSk7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxSb290Q29udGV4dC5Qcm92aWRlciB2YWx1ZT17dGhpcy5yb290fT5cbiAgICAgICAgICA8RmVhdHVyZUZsYWdzQ29udGV4dFByb3ZpZGVyIGZlYXR1cmVGbGFncz17ZmVhdHVyZUZsYWdzfT5cbiAgICAgICAgICAgIDxJbnRsUHJvdmlkZXIgbG9jYWxlPXt1aVN0YXRlLmxvY2FsZX0gbWVzc2FnZXM9e2xvY2FsZU1lc3NhZ2VzW3VpU3RhdGUubG9jYWxlXX0+XG4gICAgICAgICAgICAgIDxTdHlsZVNoZWV0TWFuYWdlciBzaG91bGRGb3J3YXJkUHJvcD17c2hvdWxkRm9yd2FyZFByb3B9PlxuICAgICAgICAgICAgICAgIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+XG4gICAgICAgICAgICAgICAgICA8Q2xvdWRMaXN0UHJvdmlkZXIgcHJvdmlkZXJzPXtjbG91ZFByb3ZpZGVyc30+XG4gICAgICAgICAgICAgICAgICAgIDxHbG9iYWxTdHlsZVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImtlcGxlci1nbFwiXG4gICAgICAgICAgICAgICAgICAgICAgaWQ9e2BrZXBsZXItZ2xfXyR7aWR9YH1cbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBgJHt3aWR0aH1weGAsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGAke2hlaWdodH1weGBcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy5yb290fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvblBhbmVsIHsuLi5ub3RpZmljYXRpb25QYW5lbEZpZWxkc30gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8RG5kQ29udGV4dCB2aXNTdGF0ZT17dmlzU3RhdGV9PlxuICAgICAgICAgICAgICAgICAgICAgICAgeyF1aVN0YXRlLnJlYWRPbmx5ICYmICFyZWFkT25seSAmJiA8U2lkZVBhbmVsIHsuLi5zaWRlRmllbGRzfSAvPn1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNYXBzTGF5b3V0IGNsYXNzTmFtZT1cIm1hcHNcIiBtYXBTdGF0ZT17dGhpcy5wcm9wcy5tYXBTdGF0ZX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHttYXBDb250YWluZXJzfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9NYXBzTGF5b3V0PlxuICAgICAgICAgICAgICAgICAgICAgIDwvRG5kQ29udGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICB7aXNFeHBvcnRpbmdJbWFnZSAmJiA8UGxvdENvbnRhaW5lciB7Li4ucGxvdENvbnRhaW5lckZpZWxkc30gLz59XG4gICAgICAgICAgICAgICAgICAgICAgey8qIDEgZ2VvY29kZXI6IHNpbmdsZSBtb2RlIE9SIHNwbGl0IG1vZGUgYW5kIHN5bmNlZCB2aWV3cG9ydHMgKi99XG4gICAgICAgICAgICAgICAgICAgICAgeyFpc1ZpZXdwb3J0RGlzam9pbnRlZCh0aGlzLnByb3BzKSAmJiBpbnRlcmFjdGlvbkNvbmZpZy5nZW9jb2Rlci5lbmFibGVkICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxHZW9Db2RlclBhbmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5nZW9Db2RlclBhbmVsRmllbGRzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zeW5jZWRWaWV3cG9ydHM9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIHsvKiAyIGdlb2NvZGVyczogc3BsaXQgbW9kZSBhbmQgdW5zeW5jZWQgdmlld3BvcnRzICovfVxuICAgICAgICAgICAgICAgICAgICAgIHtpc1ZpZXdwb3J0RGlzam9pbnRlZCh0aGlzLnByb3BzKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJhY3Rpb25Db25maWcuZ2VvY29kZXIuZW5hYmxlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwQ29udGFpbmVycy5tYXAoKF9tYXBDb250YWluZXIsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxHZW9Db2RlclBhbmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4uZ2VvQ29kZXJQYW5lbEZpZWxkc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zeW5jZWRWaWV3cG9ydHM9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICA8Qm90dG9tV2lkZ2V0T3V0ZXIgYWJzb2x1dGU9eyFoYXNQb3J0YWJsZVdpZHRoKGJyZWFrUG9pbnRWYWx1ZXMpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxCb3R0b21XaWRnZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdFJlZj17dGhpcy5ib3R0b21XaWRnZXRSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5ib3R0b21XaWRnZXRGaWVsZHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lclc9e2RpbWVuc2lvbnMud2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW1lPXt0aGVtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9Cb3R0b21XaWRnZXRPdXRlcj5cbiAgICAgICAgICAgICAgICAgICAgICA8TW9kYWxDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5tb2RhbENvbnRhaW5lckZpZWxkc31cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lclc9e2RpbWVuc2lvbnMud2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJIPXtkaW1lbnNpb25zLmhlaWdodH1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L0dsb2JhbFN0eWxlPlxuICAgICAgICAgICAgICAgICAgPC9DbG91ZExpc3RQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L1RoZW1lUHJvdmlkZXI+XG4gICAgICAgICAgICAgIDwvU3R5bGVTaGVldE1hbmFnZXI+XG4gICAgICAgICAgICA8L0ludGxQcm92aWRlcj5cbiAgICAgICAgICA8L0ZlYXR1cmVGbGFnc0NvbnRleHRQcm92aWRlcj5cbiAgICAgICAgPC9Sb290Q29udGV4dC5Qcm92aWRlcj5cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGtlcGxlckdsQ29ubmVjdChcbiAgICBtYXBTdGF0ZVRvUHJvcHMsXG4gICAgbWFrZU1hcERpc3BhdGNoVG9Qcm9wc1xuICApKHdpdGhUaGVtZShLZXBsZXJHTCkpIGFzIFJldHVyblR5cGU8dHlwZW9mIEtlcGxlckdsRmFjdG9yeT47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBTdGF0ZVRvUHJvcHMoc3RhdGU6IEtlcGxlckdsU3RhdGUsIHByb3BzOiBLZXBsZXJHTFByb3BzKSB7XG4gIHJldHVybiB7XG4gICAgLi4ucHJvcHMsXG4gICAgdmlzU3RhdGU6IHN0YXRlLnZpc1N0YXRlLFxuICAgIG1hcFN0eWxlOiBzdGF0ZS5tYXBTdHlsZSxcbiAgICBtYXBTdGF0ZTogc3RhdGUubWFwU3RhdGUsXG4gICAgdWlTdGF0ZTogc3RhdGUudWlTdGF0ZSxcbiAgICBwcm92aWRlclN0YXRlOiBzdGF0ZS5wcm92aWRlclN0YXRlXG4gIH07XG59XG5cbmNvbnN0IGRlZmF1bHRVc2VyQWN0aW9ucyA9IHt9O1xuXG5jb25zdCBnZXREaXNwYXRjaCA9IGRpc3BhdGNoID0+IGRpc3BhdGNoO1xuY29uc3QgZ2V0VXNlckFjdGlvbnMgPSAoZGlzcGF0Y2gsIHByb3BzKSA9PiBwcm9wcy5hY3Rpb25zIHx8IGRlZmF1bHRVc2VyQWN0aW9ucztcblxuLyoqIEB0eXBlIHsoKSA9PiBpbXBvcnQoJ3Jlc2VsZWN0JykuT3V0cHV0UGFyYW1ldHJpY1NlbGVjdG9yPGFueSwgYW55LCBhbnksIGFueT59ICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZUdldEFjdGlvbkNyZWF0b3JzKCkge1xuICByZXR1cm4gY3JlYXRlU2VsZWN0b3IoW2dldERpc3BhdGNoLCBnZXRVc2VyQWN0aW9uc10sIChkaXNwYXRjaCwgdXNlckFjdGlvbnMpID0+IHtcbiAgICBjb25zdCBbdmlzU3RhdGVBY3Rpb25zLCBtYXBTdGF0ZUFjdGlvbnMsIG1hcFN0eWxlQWN0aW9ucywgdWlTdGF0ZUFjdGlvbnMsIHByb3ZpZGVyQWN0aW9uc10gPSBbXG4gICAgICBWaXNTdGF0ZUFjdGlvbnMsXG4gICAgICBNYXBTdGF0ZUFjdGlvbnMsXG4gICAgICBNYXBTdHlsZUFjdGlvbnMsXG4gICAgICBVSVN0YXRlQWN0aW9ucyxcbiAgICAgIFByb3ZpZGVyQWN0aW9uc1xuICAgIF0ubWFwKGFjdGlvbnMgPT4gYmluZEFjdGlvbkNyZWF0b3JzKG1lcmdlQWN0aW9ucyhhY3Rpb25zLCB1c2VyQWN0aW9ucyksIGRpc3BhdGNoKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdmlzU3RhdGVBY3Rpb25zLFxuICAgICAgbWFwU3RhdGVBY3Rpb25zLFxuICAgICAgbWFwU3R5bGVBY3Rpb25zLFxuICAgICAgdWlTdGF0ZUFjdGlvbnMsXG4gICAgICBwcm92aWRlckFjdGlvbnMsXG4gICAgICBkaXNwYXRjaFxuICAgIH07XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBtYWtlTWFwRGlzcGF0Y2hUb1Byb3BzKCkge1xuICBjb25zdCBnZXRBY3Rpb25DcmVhdG9ycyA9IG1ha2VHZXRBY3Rpb25DcmVhdG9ycygpO1xuICBjb25zdCBtYXBEaXNwYXRjaFRvUHJvcHMgPSAoZGlzcGF0Y2gsIG93blByb3BzKSA9PiB7XG4gICAgY29uc3QgZ3JvdXBlZEFjdGlvbkNyZWF0b3JzID0gZ2V0QWN0aW9uQ3JlYXRvcnMoZGlzcGF0Y2gsIG93blByb3BzKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5ncm91cGVkQWN0aW9uQ3JlYXRvcnMsXG4gICAgICBkaXNwYXRjaFxuICAgIH07XG4gIH07XG5cbiAgcmV0dXJuIG1hcERpc3BhdGNoVG9Qcm9wcztcbn1cblxuLyoqXG4gKiBPdmVycmlkZSBkZWZhdWx0IGtlcGxlci5nbCBhY3Rpb25zIHdpdGggdXNlciBkZWZpbmVkIGFjdGlvbnMgdXNpbmcgdGhlIHNhbWUga2V5XG4gKi9cbmZ1bmN0aW9uIG1lcmdlQWN0aW9ucyhhY3Rpb25zLCB1c2VyQWN0aW9ucykge1xuICBjb25zdCBvdmVycmlkZXMgPSB7fTtcbiAgZm9yIChjb25zdCBrZXkgaW4gdXNlckFjdGlvbnMpIHtcbiAgICBpZiAoXG4gICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodXNlckFjdGlvbnMsIGtleSkgJiZcbiAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhY3Rpb25zLCBrZXkpXG4gICAgKSB7XG4gICAgICBvdmVycmlkZXNba2V5XSA9IHVzZXJBY3Rpb25zW2tleV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHsuLi5hY3Rpb25zLCAuLi5vdmVy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