@kepler.gl/components 3.3.0-alpha.6 → 3.3.0-alpha.8

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 (165) hide show
  1. package/dist/cjs/common/data-table/cell-size.js +40 -23
  2. package/dist/cjs/common/data-table/column-statistics-categoric.js +40 -0
  3. package/dist/cjs/common/data-table/column-statistics-components.js +65 -0
  4. package/dist/cjs/common/data-table/column-statistics-numeric.js +87 -0
  5. package/dist/cjs/common/data-table/column-statistics-time.js +69 -0
  6. package/dist/cjs/common/data-table/grid.js +2 -2
  7. package/dist/cjs/common/data-table/header-cell.js +123 -44
  8. package/dist/cjs/common/data-table/index.js +104 -31
  9. package/dist/cjs/common/file-uploader/file-upload.js +250 -40
  10. package/dist/cjs/common/histogram-plot.js +1 -1
  11. package/dist/cjs/common/icons/circle.js +54 -0
  12. package/dist/cjs/common/icons/{arrow-down-solid.js → draw-point.js} +21 -11
  13. package/dist/cjs/common/icons/index.js +22 -1
  14. package/dist/cjs/common/icons/line-string.js +60 -0
  15. package/dist/cjs/common/item-selector/item-selector.js +2 -2
  16. package/dist/cjs/common/portaled.js +3 -3
  17. package/dist/cjs/common/time-range-slider.js +2 -2
  18. package/dist/cjs/common/timeline-slider.js +2 -2
  19. package/dist/cjs/common/toolbar-item.js +24 -3
  20. package/dist/cjs/editor/editor.js +27 -9
  21. package/dist/cjs/editor/feature-action-panel.js +34 -12
  22. package/dist/cjs/editor/feature-properties-editor.js +215 -0
  23. package/dist/cjs/editor/filter-feature-badges.js +92 -0
  24. package/dist/cjs/filters/filter-panels/polygon-filter-panel.js +2 -2
  25. package/dist/cjs/filters/time-widget.js +2 -2
  26. package/dist/cjs/index.js +33 -1
  27. package/dist/cjs/kepler-gl.js +20 -3
  28. package/dist/cjs/map/layer-hover-info.js +2 -2
  29. package/dist/cjs/map/map-control-toolbar.js +2 -2
  30. package/dist/cjs/map/map-control.js +14 -8
  31. package/dist/cjs/map/map-draw-panel.js +74 -15
  32. package/dist/cjs/map/theme-toggle-button.js +64 -0
  33. package/dist/cjs/map-container.js +17 -6
  34. package/dist/cjs/map-view-state-context.js +3 -3
  35. package/dist/cjs/modal-container.js +3 -2
  36. package/dist/cjs/modals/cloud-components/cloud-item.js +55 -7
  37. package/dist/cjs/modals/cloud-components/cloud-item.spec.js +75 -3
  38. package/dist/cjs/modals/cloud-components/cloud-maps.js +2 -1
  39. package/dist/cjs/modals/cloud-components/cloud-storage-disclaimer.js +24 -0
  40. package/dist/cjs/modals/cloud-tile.js +82 -39
  41. package/dist/cjs/modals/data-table-modal.js +37 -25
  42. package/dist/cjs/modals/export-video-modal.js +28 -1
  43. package/dist/cjs/modals/export-video-modal.spec.js +56 -10
  44. package/dist/cjs/modals/globe-export-video-container.js +19 -3
  45. package/dist/cjs/modals/globe-export-video-preview.js +25 -7
  46. package/dist/cjs/modals/hubble-utils.js +8 -3
  47. package/dist/cjs/modals/image-modal-container.js +2 -2
  48. package/dist/cjs/modals/load-data-modal.js +3 -3
  49. package/dist/cjs/modals/load-storage-map.js +9 -6
  50. package/dist/cjs/modals/save-map-modal.js +4 -3
  51. package/dist/cjs/modals/share-map-modal.js +5 -4
  52. package/dist/cjs/modals/swipe-composite-utils.js +9 -1
  53. package/dist/cjs/modals/swipe-composite-utils.spec.js +69 -0
  54. package/dist/cjs/modals/swipe-export-video-preview.js +9 -5
  55. package/dist/cjs/plot-container.js +12 -5
  56. package/dist/cjs/side-panel/common/dataset-info.js +2 -2
  57. package/dist/cjs/side-panel/filter-panel/filter-panel.js +2 -2
  58. package/dist/cjs/side-panel/layer-manager.js +11 -3
  59. package/dist/cjs/side-panel/layer-panel/custom-palette.js +2 -2
  60. package/dist/cjs/side-panel/layer-panel/dataset-layer-section.js +11 -3
  61. package/dist/cjs/side-panel/layer-panel/layer-configurator.js +74 -31
  62. package/dist/cjs/side-panel/map-style-panel/globe-config-panel.js +90 -25
  63. package/dist/common/data-table/column-statistics-categoric.d.ts +9 -0
  64. package/dist/common/data-table/column-statistics-components.d.ts +31 -0
  65. package/dist/common/data-table/column-statistics-numeric.d.ts +18 -0
  66. package/dist/common/data-table/column-statistics-time.d.ts +19 -0
  67. package/dist/common/data-table/header-cell.d.ts +7 -5
  68. package/dist/common/data-table/index.d.ts +7 -24
  69. package/dist/common/histogram-plot.d.ts +24 -1
  70. package/dist/common/icons/{arrow-down-solid.d.ts → circle.d.ts} +2 -1
  71. package/dist/common/icons/draw-point.d.ts +10 -0
  72. package/dist/common/icons/index.d.ts +3 -0
  73. package/dist/common/icons/line-string.d.ts +10 -0
  74. package/dist/common/toolbar-item.d.ts +2 -0
  75. package/dist/editor/editor.d.ts +1 -0
  76. package/dist/editor/feature-action-panel.d.ts +1 -0
  77. package/dist/editor/feature-properties-editor.d.ts +8 -0
  78. package/dist/editor/filter-feature-badges.d.ts +12 -0
  79. package/dist/esm/common/data-table/cell-size.js +40 -23
  80. package/dist/esm/common/data-table/column-statistics-categoric.js +33 -0
  81. package/dist/esm/common/data-table/column-statistics-components.js +59 -0
  82. package/dist/esm/common/data-table/column-statistics-numeric.js +78 -0
  83. package/dist/esm/common/data-table/column-statistics-time.js +60 -0
  84. package/dist/esm/common/data-table/grid.js +2 -2
  85. package/dist/esm/common/data-table/header-cell.js +125 -46
  86. package/dist/esm/common/data-table/index.js +104 -31
  87. package/dist/esm/common/file-uploader/file-upload.js +251 -41
  88. package/dist/esm/common/histogram-plot.js +1 -1
  89. package/dist/esm/common/icons/circle.js +48 -0
  90. package/dist/esm/common/icons/draw-point.js +44 -0
  91. package/dist/esm/common/icons/index.js +4 -1
  92. package/dist/esm/common/icons/line-string.js +54 -0
  93. package/dist/esm/common/item-selector/item-selector.js +2 -2
  94. package/dist/esm/common/portaled.js +3 -3
  95. package/dist/esm/common/time-range-slider.js +2 -2
  96. package/dist/esm/common/timeline-slider.js +2 -2
  97. package/dist/esm/common/toolbar-item.js +24 -3
  98. package/dist/esm/editor/editor.js +27 -9
  99. package/dist/esm/editor/feature-action-panel.js +37 -15
  100. package/dist/esm/editor/feature-properties-editor.js +208 -0
  101. package/dist/esm/editor/filter-feature-badges.js +85 -0
  102. package/dist/esm/filters/filter-panels/polygon-filter-panel.js +2 -2
  103. package/dist/esm/filters/time-widget.js +2 -2
  104. package/dist/esm/index.js +5 -1
  105. package/dist/esm/kepler-gl.js +20 -3
  106. package/dist/esm/map/layer-hover-info.js +2 -2
  107. package/dist/esm/map/map-control-toolbar.js +2 -2
  108. package/dist/esm/map/map-control.js +14 -8
  109. package/dist/esm/map/map-draw-panel.js +72 -11
  110. package/dist/esm/map/theme-toggle-button.js +55 -0
  111. package/dist/esm/map-container.js +17 -6
  112. package/dist/esm/map-view-state-context.js +3 -3
  113. package/dist/esm/modal-container.js +3 -2
  114. package/dist/esm/modals/cloud-components/cloud-item.js +53 -7
  115. package/dist/esm/modals/cloud-components/cloud-item.spec.js +76 -4
  116. package/dist/esm/modals/cloud-components/cloud-maps.js +2 -1
  117. package/dist/esm/modals/cloud-components/cloud-storage-disclaimer.js +19 -0
  118. package/dist/esm/modals/cloud-tile.js +82 -39
  119. package/dist/esm/modals/data-table-modal.js +38 -26
  120. package/dist/esm/modals/export-video-modal.js +29 -2
  121. package/dist/esm/modals/export-video-modal.spec.js +56 -10
  122. package/dist/esm/modals/globe-export-video-container.js +20 -4
  123. package/dist/esm/modals/globe-export-video-preview.js +26 -8
  124. package/dist/esm/modals/hubble-utils.js +8 -3
  125. package/dist/esm/modals/image-modal-container.js +2 -2
  126. package/dist/esm/modals/load-data-modal.js +3 -3
  127. package/dist/esm/modals/load-storage-map.js +8 -3
  128. package/dist/esm/modals/save-map-modal.js +4 -3
  129. package/dist/esm/modals/share-map-modal.js +5 -4
  130. package/dist/esm/modals/swipe-composite-utils.js +9 -1
  131. package/dist/esm/modals/swipe-composite-utils.spec.js +67 -0
  132. package/dist/esm/modals/swipe-export-video-preview.js +8 -4
  133. package/dist/esm/plot-container.js +12 -5
  134. package/dist/esm/side-panel/common/dataset-info.js +2 -2
  135. package/dist/esm/side-panel/filter-panel/filter-panel.js +2 -2
  136. package/dist/esm/side-panel/layer-manager.js +11 -3
  137. package/dist/esm/side-panel/layer-panel/custom-palette.js +2 -2
  138. package/dist/esm/side-panel/layer-panel/dataset-layer-section.js +11 -3
  139. package/dist/esm/side-panel/layer-panel/layer-configurator.js +74 -31
  140. package/dist/esm/side-panel/map-style-panel/globe-config-panel.js +90 -25
  141. package/dist/index.d.ts +8 -0
  142. package/dist/kepler-gl.d.ts +3 -0
  143. package/dist/map/map-control.d.ts +6 -2
  144. package/dist/map/map-draw-panel.d.ts +1 -0
  145. package/dist/map/theme-toggle-button.d.ts +18 -0
  146. package/dist/map-container.d.ts +1 -0
  147. package/dist/modals/cloud-components/cloud-item.d.ts +2 -1
  148. package/dist/modals/cloud-components/cloud-storage-disclaimer.d.ts +2 -0
  149. package/dist/modals/data-table-modal.d.ts +1 -0
  150. package/dist/modals/globe-export-video-container.d.ts +2 -0
  151. package/dist/modals/globe-export-video-preview.d.ts +3 -0
  152. package/dist/modals/hubble-utils.d.ts +2 -1
  153. package/dist/modals/swipe-composite-utils.d.ts +1 -1
  154. package/dist/modals/swipe-composite-utils.spec.d.ts +1 -0
  155. package/package.json +20 -21
  156. package/dist/cjs/modals/cloud-components/provider-loading.js +0 -20
  157. package/dist/cjs/modals/storage-map-viewer.js +0 -98
  158. package/dist/cjs/side-panel/cloud-storage-dropdown.js +0 -40
  159. package/dist/esm/common/icons/arrow-down-solid.js +0 -34
  160. package/dist/esm/modals/cloud-components/provider-loading.js +0 -15
  161. package/dist/esm/modals/storage-map-viewer.js +0 -93
  162. package/dist/esm/side-panel/cloud-storage-dropdown.js +0 -33
  163. package/dist/modals/cloud-components/provider-loading.d.ts +0 -2
  164. package/dist/modals/storage-map-viewer.d.ts +0 -21
  165. package/dist/side-panel/cloud-storage-dropdown.d.ts +0 -6
@@ -1,38 +1,49 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
  import _taggedTemplateLiteral from "@babel/runtime/helpers/esm/taggedTemplateLiteral";
3
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
3
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9;
4
4
  // SPDX-License-Identifier: MIT
5
5
  // Copyright contributors to the kepler.gl project
6
6
 
7
7
  import React, { useCallback } from 'react';
8
8
  import styled, { css } from 'styled-components';
9
+ import { DEFAULT_GLOBE_CONFIG } from '@kepler.gl/constants';
9
10
  import { FormattedMessage } from '@kepler.gl/localization';
10
11
  import { EyeSeen, EyeUnseen } from '../../common/icons';
11
12
  import { PanelLabel, PanelContent, PanelLabelBold, PanelLabelWrapper } from '../../common/styled-components';
12
13
  import PanelHeaderActionFactory from '../panel-header-action';
13
14
  import RangeSliderFactory from '../../common/range-slider';
14
15
  import LayerGroupColorPickerFactory from './map-layer-group-color-picker';
15
- var StyledGlobeConfigPanel = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n padding-bottom: 6px;\n"])));
16
+ var StyledGlobeConfigPanel = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n padding-bottom: 6px;\n\n /* Give slider/color controls more horizontal room. */\n .side-panel-panel__content {\n padding-right: 2px;\n }\n"])));
16
17
  var StyledConfigRow = styled.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n margin-bottom: 10px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n &:last-child {\n margin-bottom: 0;\n }\n\n .layer-group__visibility-toggle {\n margin-right: 12px;\n }\n"])));
17
18
  var disableSlider = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n opacity: 0.5;\n pointer-events: none;\n"])));
18
19
  var SliderWrapper = styled.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n flex-grow: 1;\n margin-left: 4px;\n ", "\n"])), function (props) {
19
20
  return props.$enabled ? '' : disableSlider;
20
21
  });
21
22
 
23
+ // Atmosphere slider rows: shrink the numeric inputs by 5px so the track can use
24
+ // the extra space (default theme.sliderInputWidth is 56).
25
+ var AtmosphereSliderWrapper = styled(SliderWrapper)(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n input {\n width: ", "px;\n }\n"])), function (props) {
26
+ return props.theme.sliderInputWidth - 5;
27
+ });
28
+
29
+ // Keep color swatches slightly inset from the panel edge (sliders already get
30
+ // inset from their numeric inputs; swatches need an explicit margin).
31
+ var ColorPickerSlot = styled.div(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n margin-right: 10px;\n"])));
32
+
22
33
  // Slider rows (Day/Night, Sun Azimuth) put the label and the slider side by side.
23
34
  // Give the label only the width its (short) text needs so the slider gets the
24
35
  // rest of the row. The child indent is kept small (~half an eye-icon width) so the
25
36
  // sub-row eye icon lines up close to the parent (atmosphere) row, rather than
26
37
  // being pushed ~1.5 icon widths to the right.
27
- var SliderRow = styled(StyledConfigRow)(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n align-items: center;\n\n .side-panel-panel__label-wrapper {\n flex: 0 0 auto;\n padding-left: 8px;\n white-space: nowrap;\n }\n"])));
28
- var LayerLabel = styled(PanelLabelBold)(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n color: ", ";\n"])), function (props) {
38
+ var SliderRow = styled(StyledConfigRow)(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n align-items: center;\n\n .side-panel-panel__label-wrapper {\n flex: 0 0 auto;\n padding-left: 8px;\n white-space: nowrap;\n }\n"])));
39
+ var LayerLabel = styled(PanelLabelBold)(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n color: ", ";\n"])), function (props) {
29
40
  return props.$active ? props.theme.textColor : props.theme.labelColor;
30
41
  });
31
- var ChildRow = styled(StyledConfigRow)(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n .side-panel-panel__label-wrapper {\n padding-left: 8px;\n }\n"])));
42
+ var ChildRow = styled(StyledConfigRow)(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n .side-panel-panel__label-wrapper {\n padding-left: 8px;\n }\n"])));
32
43
  GlobeConfigPanelFactory.deps = [PanelHeaderActionFactory, RangeSliderFactory, LayerGroupColorPickerFactory];
33
44
  function GlobeConfigPanelFactory(PanelHeaderAction, RangeSlider, LayerGroupColorPicker) {
34
45
  var GlobeConfigPanel = function GlobeConfigPanel(_ref) {
35
- var _mapState$globe, _mapState$globe2;
46
+ var _mapState$globe, _mapState$globe2, _globeConfig$hugeHalo, _globeConfig$hugeHalo2;
36
47
  var mapState = _ref.mapState,
37
48
  onGlobeConfigChange = _ref.onGlobeConfigChange;
38
49
  var globeConfig = (_mapState$globe = mapState.globe) === null || _mapState$globe === void 0 ? void 0 : _mapState$globe.config;
@@ -75,7 +86,61 @@ function GlobeConfigPanelFactory(PanelHeaderAction, RangeSlider, LayerGroupColor
75
86
  $active: globeConfig.atmosphere
76
87
  }, /*#__PURE__*/React.createElement(FormattedMessage, {
77
88
  id: "mapLayers.atmosphere"
78
- })))), /*#__PURE__*/React.createElement(SliderRow, null, /*#__PURE__*/React.createElement(PanelLabelWrapper, null, /*#__PURE__*/React.createElement(PanelHeaderAction, {
89
+ })))), /*#__PURE__*/React.createElement(ChildRow, null, /*#__PURE__*/React.createElement(PanelLabelWrapper, null, /*#__PURE__*/React.createElement(PanelHeaderAction, {
90
+ className: "layer-group__visibility-toggle",
91
+ id: "globe-huge-halo-toggle",
92
+ tooltip: globeConfig.hugeHalo ? 'tooltip.hide' : 'tooltip.show',
93
+ onClick: function onClick() {
94
+ return onToggle('hugeHalo', undefined, 'atmosphere');
95
+ },
96
+ IconComponent: globeConfig.hugeHalo ? EyeSeen : EyeUnseen,
97
+ active: Boolean(globeConfig.hugeHalo && globeConfig.atmosphere),
98
+ flush: true
99
+ }), /*#__PURE__*/React.createElement(LayerLabel, {
100
+ $active: Boolean(globeConfig.hugeHalo && globeConfig.atmosphere)
101
+ }, /*#__PURE__*/React.createElement(FormattedMessage, {
102
+ id: "mapLayers.hugeHalo"
103
+ })))), /*#__PURE__*/React.createElement(SliderRow, null, /*#__PURE__*/React.createElement(PanelLabelWrapper, null, /*#__PURE__*/React.createElement(LayerLabel, {
104
+ $active: Boolean(globeConfig.hugeHalo && globeConfig.atmosphere),
105
+ style: {
106
+ paddingLeft: 28
107
+ }
108
+ }, /*#__PURE__*/React.createElement(FormattedMessage, {
109
+ id: "mapLayers.hugeHaloRadius"
110
+ }))), /*#__PURE__*/React.createElement(AtmosphereSliderWrapper, {
111
+ $enabled: Boolean(globeConfig.hugeHalo && globeConfig.atmosphere)
112
+ }, /*#__PURE__*/React.createElement(RangeSlider, {
113
+ range: [0.5, 3.5],
114
+ value0: 0,
115
+ value1: (_globeConfig$hugeHalo = globeConfig.hugeHaloRadius) !== null && _globeConfig$hugeHalo !== void 0 ? _globeConfig$hugeHalo : DEFAULT_GLOBE_CONFIG.hugeHaloRadius,
116
+ step: 0.05,
117
+ isRanged: false,
118
+ onChange: function onChange(val) {
119
+ return onSliderChange('hugeHaloRadius', val);
120
+ },
121
+ inputTheme: "secondary",
122
+ showInput: true
123
+ }))), /*#__PURE__*/React.createElement(SliderRow, null, /*#__PURE__*/React.createElement(PanelLabelWrapper, null, /*#__PURE__*/React.createElement(LayerLabel, {
124
+ $active: Boolean(globeConfig.hugeHalo && globeConfig.atmosphere),
125
+ style: {
126
+ paddingLeft: 28
127
+ }
128
+ }, /*#__PURE__*/React.createElement(FormattedMessage, {
129
+ id: "mapLayers.hugeHaloOpacity"
130
+ }))), /*#__PURE__*/React.createElement(AtmosphereSliderWrapper, {
131
+ $enabled: Boolean(globeConfig.hugeHalo && globeConfig.atmosphere)
132
+ }, /*#__PURE__*/React.createElement(RangeSlider, {
133
+ range: [0, 1],
134
+ value0: 0,
135
+ value1: (_globeConfig$hugeHalo2 = globeConfig.hugeHaloOpacity) !== null && _globeConfig$hugeHalo2 !== void 0 ? _globeConfig$hugeHalo2 : DEFAULT_GLOBE_CONFIG.hugeHaloOpacity,
136
+ step: 0.01,
137
+ isRanged: false,
138
+ onChange: function onChange(val) {
139
+ return onSliderChange('hugeHaloOpacity', val);
140
+ },
141
+ inputTheme: "secondary",
142
+ showInput: true
143
+ }))), /*#__PURE__*/React.createElement(SliderRow, null, /*#__PURE__*/React.createElement(PanelLabelWrapper, null, /*#__PURE__*/React.createElement(PanelHeaderAction, {
79
144
  className: "layer-group__visibility-toggle",
80
145
  id: "globe-terminator-toggle",
81
146
  tooltip: globeConfig.terminator ? 'tooltip.hide' : 'tooltip.show',
@@ -89,7 +154,7 @@ function GlobeConfigPanelFactory(PanelHeaderAction, RangeSlider, LayerGroupColor
89
154
  $active: globeConfig.terminator && globeConfig.atmosphere
90
155
  }, /*#__PURE__*/React.createElement(FormattedMessage, {
91
156
  id: "mapLayers.terminator"
92
- }))), /*#__PURE__*/React.createElement(SliderWrapper, {
157
+ }))), /*#__PURE__*/React.createElement(AtmosphereSliderWrapper, {
93
158
  $enabled: globeConfig.terminator && globeConfig.atmosphere
94
159
  }, /*#__PURE__*/React.createElement(RangeSlider, {
95
160
  range: [0, 1],
@@ -116,7 +181,7 @@ function GlobeConfigPanelFactory(PanelHeaderAction, RangeSlider, LayerGroupColor
116
181
  $active: globeConfig.azimuth && globeConfig.atmosphere
117
182
  }, /*#__PURE__*/React.createElement(FormattedMessage, {
118
183
  id: "mapLayers.sunAzimuth"
119
- }))), /*#__PURE__*/React.createElement(SliderWrapper, {
184
+ }))), /*#__PURE__*/React.createElement(AtmosphereSliderWrapper, {
120
185
  $enabled: globeConfig.azimuth && globeConfig.atmosphere
121
186
  }, /*#__PURE__*/React.createElement(RangeSlider, {
122
187
  range: [0, 360],
@@ -157,15 +222,15 @@ function GlobeConfigPanelFactory(PanelHeaderAction, RangeSlider, LayerGroupColor
157
222
  $active: globeConfig.labels && globeConfig.basemap
158
223
  }, /*#__PURE__*/React.createElement(FormattedMessage, {
159
224
  id: "mapLayers.label"
160
- }))), /*#__PURE__*/React.createElement(LayerGroupColorPicker, {
225
+ }))), /*#__PURE__*/React.createElement(ColorPickerSlot, null, /*#__PURE__*/React.createElement(LayerGroupColorPicker, {
161
226
  slug: "globe-labels",
162
227
  color: globeConfig.labelsColor,
163
228
  onColorChange: function onColorChange(color) {
164
229
  return _onColorChange('labelsColor', color);
165
230
  },
166
- extraMarginRight: false,
231
+ extraMarginRight: true,
167
232
  disabled: !(globeConfig.labels && globeConfig.basemap)
168
- })), /*#__PURE__*/React.createElement(ChildRow, null, /*#__PURE__*/React.createElement(PanelLabelWrapper, null, /*#__PURE__*/React.createElement(PanelHeaderAction, {
233
+ }))), /*#__PURE__*/React.createElement(ChildRow, null, /*#__PURE__*/React.createElement(PanelLabelWrapper, null, /*#__PURE__*/React.createElement(PanelHeaderAction, {
169
234
  className: "layer-group__visibility-toggle",
170
235
  id: "globe-admin-toggle",
171
236
  tooltip: globeConfig.adminLines ? 'tooltip.hide' : 'tooltip.show',
@@ -179,15 +244,15 @@ function GlobeConfigPanelFactory(PanelHeaderAction, RangeSlider, LayerGroupColor
179
244
  $active: globeConfig.adminLines && globeConfig.basemap
180
245
  }, /*#__PURE__*/React.createElement(FormattedMessage, {
181
246
  id: "mapLayers.adminBorders"
182
- }))), /*#__PURE__*/React.createElement(LayerGroupColorPicker, {
247
+ }))), /*#__PURE__*/React.createElement(ColorPickerSlot, null, /*#__PURE__*/React.createElement(LayerGroupColorPicker, {
183
248
  slug: "globe-admin",
184
249
  color: globeConfig.adminLinesColor,
185
250
  onColorChange: function onColorChange(color) {
186
251
  return _onColorChange('adminLinesColor', color);
187
252
  },
188
- extraMarginRight: false,
253
+ extraMarginRight: true,
189
254
  disabled: !(globeConfig.adminLines && globeConfig.basemap)
190
- })), /*#__PURE__*/React.createElement(ChildRow, null, /*#__PURE__*/React.createElement(PanelLabelWrapper, null, /*#__PURE__*/React.createElement(PanelHeaderAction, {
255
+ }))), /*#__PURE__*/React.createElement(ChildRow, null, /*#__PURE__*/React.createElement(PanelLabelWrapper, null, /*#__PURE__*/React.createElement(PanelHeaderAction, {
191
256
  className: "layer-group__visibility-toggle",
192
257
  id: "globe-water-toggle",
193
258
  tooltip: globeConfig.water ? 'tooltip.hide' : 'tooltip.show',
@@ -201,45 +266,45 @@ function GlobeConfigPanelFactory(PanelHeaderAction, RangeSlider, LayerGroupColor
201
266
  $active: globeConfig.water && globeConfig.basemap
202
267
  }, /*#__PURE__*/React.createElement(FormattedMessage, {
203
268
  id: "mapLayers.water"
204
- }))), /*#__PURE__*/React.createElement(LayerGroupColorPicker, {
269
+ }))), /*#__PURE__*/React.createElement(ColorPickerSlot, null, /*#__PURE__*/React.createElement(LayerGroupColorPicker, {
205
270
  slug: "globe-water",
206
271
  color: globeConfig.waterColor,
207
272
  onColorChange: function onColorChange(color) {
208
273
  return _onColorChange('waterColor', color);
209
274
  },
210
- extraMarginRight: false,
275
+ extraMarginRight: true,
211
276
  disabled: !(globeConfig.water && globeConfig.basemap)
212
- })), /*#__PURE__*/React.createElement(StyledConfigRow, null, /*#__PURE__*/React.createElement(PanelLabelWrapper, null, /*#__PURE__*/React.createElement(LayerLabel, {
277
+ }))), /*#__PURE__*/React.createElement(StyledConfigRow, null, /*#__PURE__*/React.createElement(PanelLabelWrapper, null, /*#__PURE__*/React.createElement(LayerLabel, {
213
278
  $active: true,
214
279
  style: {
215
280
  marginLeft: '28px'
216
281
  }
217
282
  }, /*#__PURE__*/React.createElement(FormattedMessage, {
218
283
  id: "mapLayers.surface"
219
- }))), /*#__PURE__*/React.createElement(LayerGroupColorPicker, {
284
+ }))), /*#__PURE__*/React.createElement(ColorPickerSlot, null, /*#__PURE__*/React.createElement(LayerGroupColorPicker, {
220
285
  slug: "globe-surface",
221
286
  color: globeConfig.surfaceColor,
222
287
  onColorChange: function onColorChange(color) {
223
288
  return _onColorChange('surfaceColor', color);
224
289
  },
225
- extraMarginRight: false,
290
+ extraMarginRight: true,
226
291
  disabled: false
227
- })), /*#__PURE__*/React.createElement(StyledConfigRow, null, /*#__PURE__*/React.createElement(PanelLabelWrapper, null, /*#__PURE__*/React.createElement(LayerLabel, {
292
+ }))), /*#__PURE__*/React.createElement(StyledConfigRow, null, /*#__PURE__*/React.createElement(PanelLabelWrapper, null, /*#__PURE__*/React.createElement(LayerLabel, {
228
293
  $active: true,
229
294
  style: {
230
295
  marginLeft: '28px'
231
296
  }
232
297
  }, /*#__PURE__*/React.createElement(FormattedMessage, {
233
298
  id: "mapLayers.background"
234
- }))), /*#__PURE__*/React.createElement(LayerGroupColorPicker, {
299
+ }))), /*#__PURE__*/React.createElement(ColorPickerSlot, null, /*#__PURE__*/React.createElement(LayerGroupColorPicker, {
235
300
  slug: "globe-background",
236
301
  color: globeConfig.backgroundColor,
237
302
  onColorChange: function onColorChange(color) {
238
303
  return _onColorChange('backgroundColor', color);
239
304
  },
240
- extraMarginRight: false,
305
+ extraMarginRight: true,
241
306
  disabled: false
242
- })), /*#__PURE__*/React.createElement(StyledConfigRow, null, /*#__PURE__*/React.createElement(PanelLabelWrapper, null, /*#__PURE__*/React.createElement(PanelHeaderAction, {
307
+ }))), /*#__PURE__*/React.createElement(StyledConfigRow, null, /*#__PURE__*/React.createElement(PanelLabelWrapper, null, /*#__PURE__*/React.createElement(PanelHeaderAction, {
243
308
  className: "layer-group__visibility-toggle",
244
309
  id: "globe-stars-toggle",
245
310
  tooltip: globeConfig.stars ? 'tooltip.hide' : 'tooltip.show',
@@ -259,4 +324,4 @@ function GlobeConfigPanelFactory(PanelHeaderAction, RangeSlider, LayerGroupColor
259
324
  return GlobeConfigPanel;
260
325
  }
261
326
  export default GlobeConfigPanelFactory;
262
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNhbGxiYWNrIiwic3R5bGVkIiwiY3NzIiwiRm9ybWF0dGVkTWVzc2FnZSIsIkV5ZVNlZW4iLCJFeWVVbnNlZW4iLCJQYW5lbExhYmVsIiwiUGFuZWxDb250ZW50IiwiUGFuZWxMYWJlbEJvbGQiLCJQYW5lbExhYmVsV3JhcHBlciIsIlBhbmVsSGVhZGVyQWN0aW9uRmFjdG9yeSIsIlJhbmdlU2xpZGVyRmFjdG9yeSIsIkxheWVyR3JvdXBDb2xvclBpY2tlckZhY3RvcnkiLCJTdHlsZWRHbG9iZUNvbmZpZ1BhbmVsIiwiZGl2IiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbCIsIlN0eWxlZENvbmZpZ1JvdyIsIl90ZW1wbGF0ZU9iamVjdDIiLCJkaXNhYmxlU2xpZGVyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIlNsaWRlcldyYXBwZXIiLCJfdGVtcGxhdGVPYmplY3Q0IiwicHJvcHMiLCIkZW5hYmxlZCIsIlNsaWRlclJvdyIsIl90ZW1wbGF0ZU9iamVjdDUiLCJMYXllckxhYmVsIiwiX3RlbXBsYXRlT2JqZWN0NiIsIiRhY3RpdmUiLCJ0aGVtZSIsInRleHRDb2xvciIsImxhYmVsQ29sb3IiLCJDaGlsZFJvdyIsIl90ZW1wbGF0ZU9iamVjdDciLCJHbG9iZUNvbmZpZ1BhbmVsRmFjdG9yeSIsImRlcHMiLCJQYW5lbEhlYWRlckFjdGlvbiIsIlJhbmdlU2xpZGVyIiwiTGF5ZXJHcm91cENvbG9yUGlja2VyIiwiR2xvYmVDb25maWdQYW5lbCIsIl9yZWYiLCJfbWFwU3RhdGUkZ2xvYmUiLCJfbWFwU3RhdGUkZ2xvYmUyIiwibWFwU3RhdGUiLCJvbkdsb2JlQ29uZmlnQ2hhbmdlIiwiZ2xvYmVDb25maWciLCJnbG9iZSIsImNvbmZpZyIsIm9uVG9nZ2xlIiwia2V5IiwiY2hpbGRLZXlzIiwicGFyZW50S2V5IiwibmV3VmFsdWUiLCJ1cGRhdGUiLCJfZGVmaW5lUHJvcGVydHkiLCJmb3JFYWNoIiwiY2hpbGRLZXkiLCJvblNsaWRlckNoYW5nZSIsInZhbHVlIiwib25Db2xvckNoYW5nZSIsImNvbG9yIiwiZW5hYmxlZCIsImNyZWF0ZUVsZW1lbnQiLCJpZCIsImNsYXNzTmFtZSIsInRvb2x0aXAiLCJhdG1vc3BoZXJlIiwib25DbGljayIsIkljb25Db21wb25lbnQiLCJhY3RpdmUiLCJmbHVzaCIsInRlcm1pbmF0b3IiLCJ1bmRlZmluZWQiLCJyYW5nZSIsInZhbHVlMCIsInZhbHVlMSIsInRlcm1pbmF0b3JPcGFjaXR5Iiwic3RlcCIsImlzUmFuZ2VkIiwib25DaGFuZ2UiLCJ2YWwiLCJpbnB1dFRoZW1lIiwic2hvd0lucHV0IiwiYXppbXV0aCIsImF6aW11dGhBbmdsZSIsImJhc2VtYXAiLCJsYWJlbHMiLCJzbHVnIiwibGFiZWxzQ29sb3IiLCJleHRyYU1hcmdpblJpZ2h0IiwiZGlzYWJsZWQiLCJhZG1pbkxpbmVzIiwiYWRtaW5MaW5lc0NvbG9yIiwid2F0ZXIiLCJ3YXRlckNvbG9yIiwic3R5bGUiLCJtYXJnaW5MZWZ0Iiwic3VyZmFjZUNvbG9yIiwiYmFja2dyb3VuZENvbG9yIiwic3RhcnMiLCJkaXNwbGF5TmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zaWRlLXBhbmVsL21hcC1zdHlsZS1wYW5lbC9nbG9iZS1jb25maWctcGFuZWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkLCB7Y3NzfSBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCB7TWFwU3RhdGUsIFJHQkNvbG9yfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7R2xvYmVDb25maWd9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7Rm9ybWF0dGVkTWVzc2FnZX0gZnJvbSAnQGtlcGxlci5nbC9sb2NhbGl6YXRpb24nO1xuXG5pbXBvcnQge0V5ZVNlZW4sIEV5ZVVuc2Vlbn0gZnJvbSAnLi4vLi4vY29tbW9uL2ljb25zJztcbmltcG9ydCB7XG4gIFBhbmVsTGFiZWwsXG4gIFBhbmVsQ29udGVudCxcbiAgUGFuZWxMYWJlbEJvbGQsXG4gIFBhbmVsTGFiZWxXcmFwcGVyXG59IGZyb20gJy4uLy4uL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgUGFuZWxIZWFkZXJBY3Rpb25GYWN0b3J5IGZyb20gJy4uL3BhbmVsLWhlYWRlci1hY3Rpb24nO1xuaW1wb3J0IFJhbmdlU2xpZGVyRmFjdG9yeSBmcm9tICcuLi8uLi9jb21tb24vcmFuZ2Utc2xpZGVyJztcbmltcG9ydCBMYXllckdyb3VwQ29sb3JQaWNrZXJGYWN0b3J5IGZyb20gJy4vbWFwLWxheWVyLWdyb3VwLWNvbG9yLXBpY2tlcic7XG5cbmNvbnN0IFN0eWxlZEdsb2JlQ29uZmlnUGFuZWwgPSBzdHlsZWQuZGl2YFxuICBwYWRkaW5nLWJvdHRvbTogNnB4O1xuYDtcblxuY29uc3QgU3R5bGVkQ29uZmlnUm93ID0gc3R5bGVkLmRpdmBcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICY6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG4gIC5sYXllci1ncm91cF9fdmlzaWJpbGl0eS10b2dnbGUge1xuICAgIG1hcmdpbi1yaWdodDogMTJweDtcbiAgfVxuYDtcblxuY29uc3QgZGlzYWJsZVNsaWRlciA9IGNzc2BcbiAgb3BhY2l0eTogMC41O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbmA7XG5cbmNvbnN0IFNsaWRlcldyYXBwZXIgPSBzdHlsZWQuZGl2PHskZW5hYmxlZD86IGJvb2xlYW59PmBcbiAgZmxleC1ncm93OiAxO1xuICBtYXJnaW4tbGVmdDogNHB4O1xuICAke3Byb3BzID0+IChwcm9wcy4kZW5hYmxlZCA/ICcnIDogZGlzYWJsZVNsaWRlcil9XG5gO1xuXG4vLyBTbGlkZXIgcm93cyAoRGF5L05pZ2h0LCBTdW4gQXppbXV0aCkgcHV0IHRoZSBsYWJlbCBhbmQgdGhlIHNsaWRlciBzaWRlIGJ5IHNpZGUuXG4vLyBHaXZlIHRoZSBsYWJlbCBvbmx5IHRoZSB3aWR0aCBpdHMgKHNob3J0KSB0ZXh0IG5lZWRzIHNvIHRoZSBzbGlkZXIgZ2V0cyB0aGVcbi8vIHJlc3Qgb2YgdGhlIHJvdy4gVGhlIGNoaWxkIGluZGVudCBpcyBrZXB0IHNtYWxsICh+aGFsZiBhbiBleWUtaWNvbiB3aWR0aCkgc28gdGhlXG4vLyBzdWItcm93IGV5ZSBpY29uIGxpbmVzIHVwIGNsb3NlIHRvIHRoZSBwYXJlbnQgKGF0bW9zcGhlcmUpIHJvdywgcmF0aGVyIHRoYW5cbi8vIGJlaW5nIHB1c2hlZCB+MS41IGljb24gd2lkdGhzIHRvIHRoZSByaWdodC5cbmNvbnN0IFNsaWRlclJvdyA9IHN0eWxlZChTdHlsZWRDb25maWdSb3cpYFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gIC5zaWRlLXBhbmVsLXBhbmVsX19sYWJlbC13cmFwcGVyIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBwYWRkaW5nLWxlZnQ6IDhweDtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB9XG5gO1xuXG5jb25zdCBMYXllckxhYmVsID0gc3R5bGVkKFBhbmVsTGFiZWxCb2xkKTx7JGFjdGl2ZTogYm9vbGVhbn0+YFxuICBjb2xvcjogJHtwcm9wcyA9PiAocHJvcHMuJGFjdGl2ZSA/IHByb3BzLnRoZW1lLnRleHRDb2xvciA6IHByb3BzLnRoZW1lLmxhYmVsQ29sb3IpfTtcbmA7XG5cbmNvbnN0IENoaWxkUm93ID0gc3R5bGVkKFN0eWxlZENvbmZpZ1JvdylgXG4gIC5zaWRlLXBhbmVsLXBhbmVsX19sYWJlbC13cmFwcGVyIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDhweDtcbiAgfVxuYDtcblxuZXhwb3J0IHR5cGUgR2xvYmVDb25maWdQYW5lbFByb3BzID0ge1xuICBtYXBTdGF0ZTogTWFwU3RhdGU7XG4gIG9uR2xvYmVDb25maWdDaGFuZ2U6IChjb25maWc6IFBhcnRpYWw8R2xvYmVDb25maWc+KSA9PiB2b2lkO1xufTtcblxuR2xvYmVDb25maWdQYW5lbEZhY3RvcnkuZGVwcyA9IFtcbiAgUGFuZWxIZWFkZXJBY3Rpb25GYWN0b3J5LFxuICBSYW5nZVNsaWRlckZhY3RvcnksXG4gIExheWVyR3JvdXBDb2xvclBpY2tlckZhY3Rvcnlcbl07XG5cbmZ1bmN0aW9uIEdsb2JlQ29uZmlnUGFuZWxGYWN0b3J5KFxuICBQYW5lbEhlYWRlckFjdGlvbjogUmV0dXJuVHlwZTx0eXBlb2YgUGFuZWxIZWFkZXJBY3Rpb25GYWN0b3J5PixcbiAgUmFuZ2VTbGlkZXI6IFJldHVyblR5cGU8dHlwZW9mIFJhbmdlU2xpZGVyRmFjdG9yeT4sXG4gIExheWVyR3JvdXBDb2xvclBpY2tlcjogUmV0dXJuVHlwZTx0eXBlb2YgTGF5ZXJHcm91cENvbG9yUGlja2VyRmFjdG9yeT5cbikge1xuICBjb25zdCBHbG9iZUNvbmZpZ1BhbmVsOiBSZWFjdC5GQzxHbG9iZUNvbmZpZ1BhbmVsUHJvcHM+ID0gKHttYXBTdGF0ZSwgb25HbG9iZUNvbmZpZ0NoYW5nZX0pID0+IHtcbiAgICBjb25zdCBnbG9iZUNvbmZpZyA9IG1hcFN0YXRlLmdsb2JlPy5jb25maWc7XG5cbiAgICBjb25zdCBvblRvZ2dsZSA9IHVzZUNhbGxiYWNrKFxuICAgICAgKFxuICAgICAgICBrZXk6IGtleW9mIEdsb2JlQ29uZmlnLFxuICAgICAgICBjaGlsZEtleXM/OiAoa2V5b2YgR2xvYmVDb25maWcpW10sXG4gICAgICAgIHBhcmVudEtleT86IGtleW9mIEdsb2JlQ29uZmlnXG4gICAgICApID0+IHtcbiAgICAgICAgaWYgKCFnbG9iZUNvbmZpZykgcmV0dXJuO1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9ICFnbG9iZUNvbmZpZ1trZXldO1xuICAgICAgICBjb25zdCB1cGRhdGU6IFBhcnRpYWw8R2xvYmVDb25maWc+ID0ge1trZXldOiBuZXdWYWx1ZX07XG4gICAgICAgIGlmIChjaGlsZEtleXMpIHtcbiAgICAgICAgICBjaGlsZEtleXMuZm9yRWFjaChjaGlsZEtleSA9PiB7XG4gICAgICAgICAgICB1cGRhdGVbY2hpbGRLZXldID0gbmV3VmFsdWUgYXMgYW55O1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJlbnRLZXkgJiYgbmV3VmFsdWUgPT09IHRydWUpIHtcbiAgICAgICAgICB1cGRhdGVbcGFyZW50S2V5XSA9IHRydWUgYXMgYW55O1xuICAgICAgICB9XG4gICAgICAgIG9uR2xvYmVDb25maWdDaGFuZ2UodXBkYXRlKTtcbiAgICAgIH0sXG4gICAgICBbZ2xvYmVDb25maWcsIG9uR2xvYmVDb25maWdDaGFuZ2VdXG4gICAgKTtcblxuICAgIGNvbnN0IG9uU2xpZGVyQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgICAoa2V5OiBrZXlvZiBHbG9iZUNvbmZpZywgdmFsdWU6IG51bWJlcltdKSA9PiB7XG4gICAgICAgIG9uR2xvYmVDb25maWdDaGFuZ2Uoe1trZXldOiB2YWx1ZVsxXX0gYXMgUGFydGlhbDxHbG9iZUNvbmZpZz4pO1xuICAgICAgfSxcbiAgICAgIFtvbkdsb2JlQ29uZmlnQ2hhbmdlXVxuICAgICk7XG5cbiAgICBjb25zdCBvbkNvbG9yQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgICAoa2V5OiBrZXlvZiBHbG9iZUNvbmZpZywgY29sb3I6IFJHQkNvbG9yKSA9PiB7XG4gICAgICAgIG9uR2xvYmVDb25maWdDaGFuZ2Uoe1trZXldOiBjb2xvcn0gYXMgUGFydGlhbDxHbG9iZUNvbmZpZz4pO1xuICAgICAgfSxcbiAgICAgIFtvbkdsb2JlQ29uZmlnQ2hhbmdlXVxuICAgICk7XG5cbiAgICBpZiAoIW1hcFN0YXRlLmdsb2JlPy5lbmFibGVkIHx8ICFnbG9iZUNvbmZpZykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHlsZWRHbG9iZUNvbmZpZ1BhbmVsPlxuICAgICAgICA8UGFuZWxMYWJlbD5cbiAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cIm1hcE1hbmFnZXIuZ2xvYmVMYXllcnNcIiAvPlxuICAgICAgICA8L1BhbmVsTGFiZWw+XG4gICAgICAgIDxQYW5lbENvbnRlbnQ+XG4gICAgICAgICAgey8qIEF0bW9zcGhlcmUgKi99XG4gICAgICAgICAgPFN0eWxlZENvbmZpZ1Jvdz5cbiAgICAgICAgICAgIDxQYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICAgICAgPFBhbmVsSGVhZGVyQWN0aW9uXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibGF5ZXItZ3JvdXBfX3Zpc2liaWxpdHktdG9nZ2xlXCJcbiAgICAgICAgICAgICAgICBpZD1cImdsb2JlLWF0bW9zcGhlcmUtdG9nZ2xlXCJcbiAgICAgICAgICAgICAgICB0b29sdGlwPXtnbG9iZUNvbmZpZy5hdG1vc3BoZXJlID8gJ3Rvb2x0aXAuaGlkZScgOiAndG9vbHRpcC5zaG93J31cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblRvZ2dsZSgnYXRtb3NwaGVyZScsIFsndGVybWluYXRvcicsICdhemltdXRoJ10pfVxuICAgICAgICAgICAgICAgIEljb25Db21wb25lbnQ9e2dsb2JlQ29uZmlnLmF0bW9zcGhlcmUgPyBFeWVTZWVuIDogRXllVW5zZWVufVxuICAgICAgICAgICAgICAgIGFjdGl2ZT17Z2xvYmVDb25maWcuYXRtb3NwaGVyZX1cbiAgICAgICAgICAgICAgICBmbHVzaFxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8TGF5ZXJMYWJlbCAkYWN0aXZlPXtnbG9iZUNvbmZpZy5hdG1vc3BoZXJlfT5cbiAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cIm1hcExheWVycy5hdG1vc3BoZXJlXCIgLz5cbiAgICAgICAgICAgICAgPC9MYXllckxhYmVsPlxuICAgICAgICAgICAgPC9QYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICA8L1N0eWxlZENvbmZpZ1Jvdz5cblxuICAgICAgICAgIHsvKiBUZXJtaW5hdG9yIChjaGlsZCBvZiBhdG1vc3BoZXJlKSAqL31cbiAgICAgICAgICA8U2xpZGVyUm93PlxuICAgICAgICAgICAgPFBhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgICA8UGFuZWxIZWFkZXJBY3Rpb25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJsYXllci1ncm91cF9fdmlzaWJpbGl0eS10b2dnbGVcIlxuICAgICAgICAgICAgICAgIGlkPVwiZ2xvYmUtdGVybWluYXRvci10b2dnbGVcIlxuICAgICAgICAgICAgICAgIHRvb2x0aXA9e2dsb2JlQ29uZmlnLnRlcm1pbmF0b3IgPyAndG9vbHRpcC5oaWRlJyA6ICd0b29sdGlwLnNob3cnfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uVG9nZ2xlKCd0ZXJtaW5hdG9yJywgdW5kZWZpbmVkLCAnYXRtb3NwaGVyZScpfVxuICAgICAgICAgICAgICAgIEljb25Db21wb25lbnQ9e2dsb2JlQ29uZmlnLnRlcm1pbmF0b3IgPyBFeWVTZWVuIDogRXllVW5zZWVufVxuICAgICAgICAgICAgICAgIGFjdGl2ZT17Z2xvYmVDb25maWcudGVybWluYXRvciAmJiBnbG9iZUNvbmZpZy5hdG1vc3BoZXJlfVxuICAgICAgICAgICAgICAgIGZsdXNoXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxMYXllckxhYmVsICRhY3RpdmU9e2dsb2JlQ29uZmlnLnRlcm1pbmF0b3IgJiYgZ2xvYmVDb25maWcuYXRtb3NwaGVyZX0+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJtYXBMYXllcnMudGVybWluYXRvclwiIC8+XG4gICAgICAgICAgICAgIDwvTGF5ZXJMYWJlbD5cbiAgICAgICAgICAgIDwvUGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgICA8U2xpZGVyV3JhcHBlciAkZW5hYmxlZD17Z2xvYmVDb25maWcudGVybWluYXRvciAmJiBnbG9iZUNvbmZpZy5hdG1vc3BoZXJlfT5cbiAgICAgICAgICAgICAgPFJhbmdlU2xpZGVyXG4gICAgICAgICAgICAgICAgcmFuZ2U9e1swLCAxXX1cbiAgICAgICAgICAgICAgICB2YWx1ZTA9ezB9XG4gICAgICAgICAgICAgICAgdmFsdWUxPXtnbG9iZUNvbmZpZy50ZXJtaW5hdG9yT3BhY2l0eX1cbiAgICAgICAgICAgICAgICBzdGVwPXswLjAxfVxuICAgICAgICAgICAgICAgIGlzUmFuZ2VkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17dmFsID0+IG9uU2xpZGVyQ2hhbmdlKCd0ZXJtaW5hdG9yT3BhY2l0eScsIHZhbCl9XG4gICAgICAgICAgICAgICAgaW5wdXRUaGVtZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgc2hvd0lucHV0XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L1NsaWRlcldyYXBwZXI+XG4gICAgICAgICAgPC9TbGlkZXJSb3c+XG5cbiAgICAgICAgICB7LyogU3VuIEF6aW11dGggKGNoaWxkIG9mIGF0bW9zcGhlcmUpICovfVxuICAgICAgICAgIDxTbGlkZXJSb3c+XG4gICAgICAgICAgICA8UGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgICAgIDxQYW5lbEhlYWRlckFjdGlvblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImxheWVyLWdyb3VwX192aXNpYmlsaXR5LXRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgaWQ9XCJnbG9iZS1hemltdXRoLXRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgdG9vbHRpcD17Z2xvYmVDb25maWcuYXppbXV0aCA/ICd0b29sdGlwLmhpZGUnIDogJ3Rvb2x0aXAuc2hvdyd9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Ub2dnbGUoJ2F6aW11dGgnLCB1bmRlZmluZWQsICdhdG1vc3BoZXJlJyl9XG4gICAgICAgICAgICAgICAgSWNvbkNvbXBvbmVudD17Z2xvYmVDb25maWcuYXppbXV0aCA/IEV5ZVNlZW4gOiBFeWVVbnNlZW59XG4gICAgICAgICAgICAgICAgYWN0aXZlPXtnbG9iZUNvbmZpZy5hemltdXRoICYmIGdsb2JlQ29uZmlnLmF0bW9zcGhlcmV9XG4gICAgICAgICAgICAgICAgZmx1c2hcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPExheWVyTGFiZWwgJGFjdGl2ZT17Z2xvYmVDb25maWcuYXppbXV0aCAmJiBnbG9iZUNvbmZpZy5hdG1vc3BoZXJlfT5cbiAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cIm1hcExheWVycy5zdW5BemltdXRoXCIgLz5cbiAgICAgICAgICAgICAgPC9MYXllckxhYmVsPlxuICAgICAgICAgICAgPC9QYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICAgIDxTbGlkZXJXcmFwcGVyICRlbmFibGVkPXtnbG9iZUNvbmZpZy5hemltdXRoICYmIGdsb2JlQ29uZmlnLmF0bW9zcGhlcmV9PlxuICAgICAgICAgICAgICA8UmFuZ2VTbGlkZXJcbiAgICAgICAgICAgICAgICByYW5nZT17WzAsIDM2MF19XG4gICAgICAgICAgICAgICAgdmFsdWUwPXswfVxuICAgICAgICAgICAgICAgIHZhbHVlMT17Z2xvYmVDb25maWcuYXppbXV0aEFuZ2xlfVxuICAgICAgICAgICAgICAgIHN0ZXA9ezF9XG4gICAgICAgICAgICAgICAgaXNSYW5nZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt2YWwgPT4gb25TbGlkZXJDaGFuZ2UoJ2F6aW11dGhBbmdsZScsIHZhbCl9XG4gICAgICAgICAgICAgICAgaW5wdXRUaGVtZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgc2hvd0lucHV0XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L1NsaWRlcldyYXBwZXI+XG4gICAgICAgICAgPC9TbGlkZXJSb3c+XG5cbiAgICAgICAgICB7LyogQmFzZW1hcCAqL31cbiAgICAgICAgICA8U3R5bGVkQ29uZmlnUm93PlxuICAgICAgICAgICAgPFBhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgICA8UGFuZWxIZWFkZXJBY3Rpb25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJsYXllci1ncm91cF9fdmlzaWJpbGl0eS10b2dnbGVcIlxuICAgICAgICAgICAgICAgIGlkPVwiZ2xvYmUtYmFzZW1hcC10b2dnbGVcIlxuICAgICAgICAgICAgICAgIHRvb2x0aXA9e2dsb2JlQ29uZmlnLmJhc2VtYXAgPyAndG9vbHRpcC5oaWRlJyA6ICd0b29sdGlwLnNob3cnfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uVG9nZ2xlKCdiYXNlbWFwJywgWydsYWJlbHMnLCAnYWRtaW5MaW5lcycsICd3YXRlciddKX1cbiAgICAgICAgICAgICAgICBJY29uQ29tcG9uZW50PXtnbG9iZUNvbmZpZy5iYXNlbWFwID8gRXllU2VlbiA6IEV5ZVVuc2Vlbn1cbiAgICAgICAgICAgICAgICBhY3RpdmU9e2dsb2JlQ29uZmlnLmJhc2VtYXB9XG4gICAgICAgICAgICAgICAgZmx1c2hcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPExheWVyTGFiZWwgJGFjdGl2ZT17Z2xvYmVDb25maWcuYmFzZW1hcH0+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJtYXBMYXllcnMuYmFzZW1hcFwiIC8+XG4gICAgICAgICAgICAgIDwvTGF5ZXJMYWJlbD5cbiAgICAgICAgICAgIDwvUGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgPC9TdHlsZWRDb25maWdSb3c+XG5cbiAgICAgICAgICB7LyogTGFiZWxzIChjaGlsZCBvZiBiYXNlbWFwKSAqL31cbiAgICAgICAgICA8Q2hpbGRSb3c+XG4gICAgICAgICAgICA8UGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgICAgIDxQYW5lbEhlYWRlckFjdGlvblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImxheWVyLWdyb3VwX192aXNpYmlsaXR5LXRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgaWQ9XCJnbG9iZS1sYWJlbHMtdG9nZ2xlXCJcbiAgICAgICAgICAgICAgICB0b29sdGlwPXtnbG9iZUNvbmZpZy5sYWJlbHMgPyAndG9vbHRpcC5oaWRlJyA6ICd0b29sdGlwLnNob3cnfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uVG9nZ2xlKCdsYWJlbHMnLCB1bmRlZmluZWQsICdiYXNlbWFwJyl9XG4gICAgICAgICAgICAgICAgSWNvbkNvbXBvbmVudD17Z2xvYmVDb25maWcubGFiZWxzID8gRXllU2VlbiA6IEV5ZVVuc2Vlbn1cbiAgICAgICAgICAgICAgICBhY3RpdmU9e2dsb2JlQ29uZmlnLmxhYmVscyAmJiBnbG9iZUNvbmZpZy5iYXNlbWFwfVxuICAgICAgICAgICAgICAgIGZsdXNoXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxMYXllckxhYmVsICRhY3RpdmU9e2dsb2JlQ29uZmlnLmxhYmVscyAmJiBnbG9iZUNvbmZpZy5iYXNlbWFwfT5cbiAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cIm1hcExheWVycy5sYWJlbFwiIC8+XG4gICAgICAgICAgICAgIDwvTGF5ZXJMYWJlbD5cbiAgICAgICAgICAgIDwvUGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgICA8TGF5ZXJHcm91cENvbG9yUGlja2VyXG4gICAgICAgICAgICAgIHNsdWc9XCJnbG9iZS1sYWJlbHNcIlxuICAgICAgICAgICAgICBjb2xvcj17Z2xvYmVDb25maWcubGFiZWxzQ29sb3J9XG4gICAgICAgICAgICAgIG9uQ29sb3JDaGFuZ2U9eyhjb2xvcjogUkdCQ29sb3IpID0+IG9uQ29sb3JDaGFuZ2UoJ2xhYmVsc0NvbG9yJywgY29sb3IpfVxuICAgICAgICAgICAgICBleHRyYU1hcmdpblJpZ2h0PXtmYWxzZX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9eyEoZ2xvYmVDb25maWcubGFiZWxzICYmIGdsb2JlQ29uZmlnLmJhc2VtYXApfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0NoaWxkUm93PlxuXG4gICAgICAgICAgey8qIEFkbWluIExpbmVzIChjaGlsZCBvZiBiYXNlbWFwKSAqL31cbiAgICAgICAgICA8Q2hpbGRSb3c+XG4gICAgICAgICAgICA8UGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgICAgIDxQYW5lbEhlYWRlckFjdGlvblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImxheWVyLWdyb3VwX192aXNpYmlsaXR5LXRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgaWQ9XCJnbG9iZS1hZG1pbi10b2dnbGVcIlxuICAgICAgICAgICAgICAgIHRvb2x0aXA9e2dsb2JlQ29uZmlnLmFkbWluTGluZXMgPyAndG9vbHRpcC5oaWRlJyA6ICd0b29sdGlwLnNob3cnfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uVG9nZ2xlKCdhZG1pbkxpbmVzJywgdW5kZWZpbmVkLCAnYmFzZW1hcCcpfVxuICAgICAgICAgICAgICAgIEljb25Db21wb25lbnQ9e2dsb2JlQ29uZmlnLmFkbWluTGluZXMgPyBFeWVTZWVuIDogRXllVW5zZWVufVxuICAgICAgICAgICAgICAgIGFjdGl2ZT17Z2xvYmVDb25maWcuYWRtaW5MaW5lcyAmJiBnbG9iZUNvbmZpZy5iYXNlbWFwfVxuICAgICAgICAgICAgICAgIGZsdXNoXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxMYXllckxhYmVsICRhY3RpdmU9e2dsb2JlQ29uZmlnLmFkbWluTGluZXMgJiYgZ2xvYmVDb25maWcuYmFzZW1hcH0+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJtYXBMYXllcnMuYWRtaW5Cb3JkZXJzXCIgLz5cbiAgICAgICAgICAgICAgPC9MYXllckxhYmVsPlxuICAgICAgICAgICAgPC9QYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICAgIDxMYXllckdyb3VwQ29sb3JQaWNrZXJcbiAgICAgICAgICAgICAgc2x1Zz1cImdsb2JlLWFkbWluXCJcbiAgICAgICAgICAgICAgY29sb3I9e2dsb2JlQ29uZmlnLmFkbWluTGluZXNDb2xvcn1cbiAgICAgICAgICAgICAgb25Db2xvckNoYW5nZT17KGNvbG9yOiBSR0JDb2xvcikgPT4gb25Db2xvckNoYW5nZSgnYWRtaW5MaW5lc0NvbG9yJywgY29sb3IpfVxuICAgICAgICAgICAgICBleHRyYU1hcmdpblJpZ2h0PXtmYWxzZX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9eyEoZ2xvYmVDb25maWcuYWRtaW5MaW5lcyAmJiBnbG9iZUNvbmZpZy5iYXNlbWFwKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9DaGlsZFJvdz5cblxuICAgICAgICAgIHsvKiBXYXRlciAoY2hpbGQgb2YgYmFzZW1hcCkgKi99XG4gICAgICAgICAgPENoaWxkUm93PlxuICAgICAgICAgICAgPFBhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgICA8UGFuZWxIZWFkZXJBY3Rpb25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJsYXllci1ncm91cF9fdmlzaWJpbGl0eS10b2dnbGVcIlxuICAgICAgICAgICAgICAgIGlkPVwiZ2xvYmUtd2F0ZXItdG9nZ2xlXCJcbiAgICAgICAgICAgICAgICB0b29sdGlwPXtnbG9iZUNvbmZpZy53YXRlciA/ICd0b29sdGlwLmhpZGUnIDogJ3Rvb2x0aXAuc2hvdyd9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Ub2dnbGUoJ3dhdGVyJywgdW5kZWZpbmVkLCAnYmFzZW1hcCcpfVxuICAgICAgICAgICAgICAgIEljb25Db21wb25lbnQ9e2dsb2JlQ29uZmlnLndhdGVyID8gRXllU2VlbiA6IEV5ZVVuc2Vlbn1cbiAgICAgICAgICAgICAgICBhY3RpdmU9e2dsb2JlQ29uZmlnLndhdGVyICYmIGdsb2JlQ29uZmlnLmJhc2VtYXB9XG4gICAgICAgICAgICAgICAgZmx1c2hcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPExheWVyTGFiZWwgJGFjdGl2ZT17Z2xvYmVDb25maWcud2F0ZXIgJiYgZ2xvYmVDb25maWcuYmFzZW1hcH0+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJtYXBMYXllcnMud2F0ZXJcIiAvPlxuICAgICAgICAgICAgICA8L0xheWVyTGFiZWw+XG4gICAgICAgICAgICA8L1BhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgPExheWVyR3JvdXBDb2xvclBpY2tlclxuICAgICAgICAgICAgICBzbHVnPVwiZ2xvYmUtd2F0ZXJcIlxuICAgICAgICAgICAgICBjb2xvcj17Z2xvYmVDb25maWcud2F0ZXJDb2xvcn1cbiAgICAgICAgICAgICAgb25Db2xvckNoYW5nZT17KGNvbG9yOiBSR0JDb2xvcikgPT4gb25Db2xvckNoYW5nZSgnd2F0ZXJDb2xvcicsIGNvbG9yKX1cbiAgICAgICAgICAgICAgZXh0cmFNYXJnaW5SaWdodD17ZmFsc2V9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXshKGdsb2JlQ29uZmlnLndhdGVyICYmIGdsb2JlQ29uZmlnLmJhc2VtYXApfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0NoaWxkUm93PlxuXG4gICAgICAgICAgey8qIEdsb2JlIFN1cmZhY2UgKGFsd2F5cyB2aXNpYmxlLCBvbmx5IGhhcyBjb2xvcikgKi99XG4gICAgICAgICAgPFN0eWxlZENvbmZpZ1Jvdz5cbiAgICAgICAgICAgIDxQYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICAgICAgPExheWVyTGFiZWwgJGFjdGl2ZT17dHJ1ZX0gc3R5bGU9e3ttYXJnaW5MZWZ0OiAnMjhweCd9fT5cbiAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cIm1hcExheWVycy5zdXJmYWNlXCIgLz5cbiAgICAgICAgICAgICAgPC9MYXllckxhYmVsPlxuICAgICAgICAgICAgPC9QYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICAgIDxMYXllckdyb3VwQ29sb3JQaWNrZXJcbiAgICAgICAgICAgICAgc2x1Zz1cImdsb2JlLXN1cmZhY2VcIlxuICAgICAgICAgICAgICBjb2xvcj17Z2xvYmVDb25maWcuc3VyZmFjZUNvbG9yfVxuICAgICAgICAgICAgICBvbkNvbG9yQ2hhbmdlPXsoY29sb3I6IFJHQkNvbG9yKSA9PiBvbkNvbG9yQ2hhbmdlKCdzdXJmYWNlQ29sb3InLCBjb2xvcil9XG4gICAgICAgICAgICAgIGV4dHJhTWFyZ2luUmlnaHQ9e2ZhbHNlfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3R5bGVkQ29uZmlnUm93PlxuXG4gICAgICAgICAgey8qIEJhY2tncm91bmQgKGVtcHR5IHNwYWNlIGFyb3VuZCB0aGUgZ2xvYmUsIGFsd2F5cyB2aXNpYmxlKSAqL31cbiAgICAgICAgICA8U3R5bGVkQ29uZmlnUm93PlxuICAgICAgICAgICAgPFBhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgICA8TGF5ZXJMYWJlbCAkYWN0aXZlPXt0cnVlfSBzdHlsZT17e21hcmdpbkxlZnQ6ICcyOHB4J319PlxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwibWFwTGF5ZXJzLmJhY2tncm91bmRcIiAvPlxuICAgICAgICAgICAgICA8L0xheWVyTGFiZWw+XG4gICAgICAgICAgICA8L1BhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgPExheWVyR3JvdXBDb2xvclBpY2tlclxuICAgICAgICAgICAgICBzbHVnPVwiZ2xvYmUtYmFja2dyb3VuZFwiXG4gICAgICAgICAgICAgIGNvbG9yPXtnbG9iZUNvbmZpZy5iYWNrZ3JvdW5kQ29sb3J9XG4gICAgICAgICAgICAgIG9uQ29sb3JDaGFuZ2U9eyhjb2xvcjogUkdCQ29sb3IpID0+IG9uQ29sb3JDaGFuZ2UoJ2JhY2tncm91bmRDb2xvcicsIGNvbG9yKX1cbiAgICAgICAgICAgICAgZXh0cmFNYXJnaW5SaWdodD17ZmFsc2V9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TdHlsZWRDb25maWdSb3c+XG5cbiAgICAgICAgICB7LyogU3RhcnMgKHJlbmRlcmVkIGJlaGluZCB0aGUgZ2xvYmUgaW4gM0Qgc3BhY2UpICovfVxuICAgICAgICAgIDxTdHlsZWRDb25maWdSb3c+XG4gICAgICAgICAgICA8UGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgICAgIDxQYW5lbEhlYWRlckFjdGlvblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImxheWVyLWdyb3VwX192aXNpYmlsaXR5LXRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgaWQ9XCJnbG9iZS1zdGFycy10b2dnbGVcIlxuICAgICAgICAgICAgICAgIHRvb2x0aXA9e2dsb2JlQ29uZmlnLnN0YXJzID8gJ3Rvb2x0aXAuaGlkZScgOiAndG9vbHRpcC5zaG93J31cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblRvZ2dsZSgnc3RhcnMnKX1cbiAgICAgICAgICAgICAgICBJY29uQ29tcG9uZW50PXtnbG9iZUNvbmZpZy5zdGFycyA/IEV5ZVNlZW4gOiBFeWVVbnNlZW59XG4gICAgICAgICAgICAgICAgYWN0aXZlPXtnbG9iZUNvbmZpZy5zdGFyc31cbiAgICAgICAgICAgICAgICBmbHVzaFxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8TGF5ZXJMYWJlbCAkYWN0aXZlPXtnbG9iZUNvbmZpZy5zdGFyc30+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJtYXBMYXllcnMuc3RhcnNcIiAvPlxuICAgICAgICAgICAgICA8L0xheWVyTGFiZWw+XG4gICAgICAgICAgICA8L1BhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgIDwvU3R5bGVkQ29uZmlnUm93PlxuICAgICAgICA8L1BhbmVsQ29udGVudD5cbiAgICAgIDwvU3R5bGVkR2xvYmVDb25maWdQYW5lbD5cbiAgICApO1xuICB9O1xuXG4gIEdsb2JlQ29uZmlnUGFuZWwuZGlzcGxheU5hbWUgPSAnR2xvYmVDb25maWdQYW5lbCc7XG4gIHJldHVybiBHbG9iZUNvbmZpZ1BhbmVsO1xufVxuXG5leHBvcnQgZGVmYXVsdCBHbG9iZUNvbmZpZ1BhbmVsRmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7QUFDQTs7QUFFQSxPQUFPQSxLQUFLLElBQUdDLFdBQVcsUUFBTyxPQUFPO0FBQ3hDLE9BQU9DLE1BQU0sSUFBR0MsR0FBRyxRQUFPLG1CQUFtQjtBQUk3QyxTQUFRQyxnQkFBZ0IsUUFBTyx5QkFBeUI7QUFFeEQsU0FBUUMsT0FBTyxFQUFFQyxTQUFTLFFBQU8sb0JBQW9CO0FBQ3JELFNBQ0VDLFVBQVUsRUFDVkMsWUFBWSxFQUNaQyxjQUFjLEVBQ2RDLGlCQUFpQixRQUNaLGdDQUFnQztBQUN2QyxPQUFPQyx3QkFBd0IsTUFBTSx3QkFBd0I7QUFDN0QsT0FBT0Msa0JBQWtCLE1BQU0sMkJBQTJCO0FBQzFELE9BQU9DLDRCQUE0QixNQUFNLGdDQUFnQztBQUV6RSxJQUFNQyxzQkFBc0IsR0FBR1osTUFBTSxDQUFDYSxHQUFHLENBQUFDLGVBQUEsS0FBQUEsZUFBQSxHQUFBQyxzQkFBQSxrQ0FFeEM7QUFFRCxJQUFNQyxlQUFlLEdBQUdoQixNQUFNLENBQUNhLEdBQUcsQ0FBQUksZ0JBQUEsS0FBQUEsZ0JBQUEsR0FBQUYsc0JBQUEsb09BYWpDO0FBRUQsSUFBTUcsYUFBYSxHQUFHakIsR0FBRyxDQUFBa0IsZ0JBQUEsS0FBQUEsZ0JBQUEsR0FBQUosc0JBQUEsb0RBR3hCO0FBRUQsSUFB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QyxVQUFVLEVBQUU7TUFBTTtJQUFFLGdCQUNyRGxHLEtBQUEsQ0FBQWdFLGFBQUEsQ0FBQzVELGdCQUFnQjtNQUFDNkQsRUFBRSxFQUFDO0lBQXNCLENBQUUsQ0FDbkMsQ0FDSyxDQUFDLGVBQ3BCakUsS0FBQSxDQUFBZ0UsYUFBQSxDQUFDeEIscUJBQXFCO01BQ3BCaUQsSUFBSSxFQUFDLGtCQUFrQjtNQUN2QjNCLEtBQUssRUFBRWYsV0FBVyxDQUFDcUQsZUFBZ0I7TUFDbkN2QyxhQUFhLEVBQUUsU0FBZkEsYUFBYUEsQ0FBR0MsS0FBZTtRQUFBLE9BQUtELGNBQWEsQ0FBQyxpQkFBaUIsRUFBRUMsS0FBSyxDQUFDO01BQUEsQ0FBQztNQUM1RTZCLGdCQUFnQixFQUFFLEtBQU07TUFDeEJDLFFBQVEsRUFBRTtJQUFNLENBQ2pCLENBQ2MsQ0FBQyxlQUdsQjVGLEtBQUEsQ0FBQWdFLGFBQUEsQ0FBQzlDLGVBQWUscUJBQ2RsQixLQUFBLENBQUFnRSxhQUFBLENBQUN0RCxpQkFBaUIscUJBQ2hCVixLQUFBLENBQUFnRSxhQUFBLENBQUMxQixpQkFBaUI7TUFDaEI0QixTQUFTLEVBQUMsZ0NBQWdDO01BQzFDRCxFQUFFLEVBQUMsb0JBQW9CO01BQ3ZCRSxPQUFPLEVBQUVwQixXQUFXLENBQUNzRCxLQUFLLEdBQUcsY0FBYyxHQUFHLGNBQWU7TUFDN0RoQyxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQTtRQUFBLE9BQVFuQixRQUFRLENBQUMsT0FBTyxDQUFDO01BQUEsQ0FBQztNQUNqQ29CLGFBQWEsRUFBRXZCLFdBQVcsQ0FBQ3NELEtBQUssR0FBR2hHLE9BQU8sR0FBR0MsU0FBVTtNQUN2RGlFLE1BQU0sRUFBRXhCLFdBQVcsQ0FBQ3NELEtBQU07TUFDMUI3QixLQUFLO0lBQUEsQ0FDTixDQUFDLGVBQ0Z4RSxLQUFBLENBQUFnRSxhQUFBLENBQUNwQyxVQUFVO01BQUNFLE9BQU8sRUFBRWlCLFdBQVcsQ0FBQ3NEO0lBQU0sZ0JBQ3JDckcsS0FBQSxDQUFBZ0UsYUFBQSxDQUFDNUQsZ0JBQWdCO01BQUM2RCxFQUFFLEVBQUM7SUFBaUIsQ0FBRSxDQUM5QixDQUNLLENBQ0osQ0FDTCxDQUNRLENBQUM7RUFFN0IsQ0FBQztFQUVEeEIsZ0JBQWdCLENBQUM2RCxXQUFXLEdBQUcsa0JBQWtCO0VBQ2pELE9BQU83RCxnQkFBZ0I7QUFDekI7QUFFQSxlQUFlTCx1QkFBdUIiLCJpZ25vcmVMaXN0IjpbXX0=
327
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNhbGxiYWNrIiwic3R5bGVkIiwiY3NzIiwiREVGQVVMVF9HTE9CRV9DT05GSUciLCJGb3JtYXR0ZWRNZXNzYWdlIiwiRXllU2VlbiIsIkV5ZVVuc2VlbiIsIlBhbmVsTGFiZWwiLCJQYW5lbENvbnRlbnQiLCJQYW5lbExhYmVsQm9sZCIsIlBhbmVsTGFiZWxXcmFwcGVyIiwiUGFuZWxIZWFkZXJBY3Rpb25GYWN0b3J5IiwiUmFuZ2VTbGlkZXJGYWN0b3J5IiwiTGF5ZXJHcm91cENvbG9yUGlja2VyRmFjdG9yeSIsIlN0eWxlZEdsb2JlQ29uZmlnUGFuZWwiLCJkaXYiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsIiwiU3R5bGVkQ29uZmlnUm93IiwiX3RlbXBsYXRlT2JqZWN0MiIsImRpc2FibGVTbGlkZXIiLCJfdGVtcGxhdGVPYmplY3QzIiwiU2xpZGVyV3JhcHBlciIsIl90ZW1wbGF0ZU9iamVjdDQiLCJwcm9wcyIsIiRlbmFibGVkIiwiQXRtb3NwaGVyZVNsaWRlcldyYXBwZXIiLCJfdGVtcGxhdGVPYmplY3Q1IiwidGhlbWUiLCJzbGlkZXJJbnB1dFdpZHRoIiwiQ29sb3JQaWNrZXJTbG90IiwiX3RlbXBsYXRlT2JqZWN0NiIsIlNsaWRlclJvdyIsIl90ZW1wbGF0ZU9iamVjdDciLCJMYXllckxhYmVsIiwiX3RlbXBsYXRlT2JqZWN0OCIsIiRhY3RpdmUiLCJ0ZXh0Q29sb3IiLCJsYWJlbENvbG9yIiwiQ2hpbGRSb3ciLCJfdGVtcGxhdGVPYmplY3Q5IiwiR2xvYmVDb25maWdQYW5lbEZhY3RvcnkiLCJkZXBzIiwiUGFuZWxIZWFkZXJBY3Rpb24iLCJSYW5nZVNsaWRlciIsIkxheWVyR3JvdXBDb2xvclBpY2tlciIsIkdsb2JlQ29uZmlnUGFuZWwiLCJfcmVmIiwiX21hcFN0YXRlJGdsb2JlIiwiX21hcFN0YXRlJGdsb2JlMiIsIl9nbG9iZUNvbmZpZyRodWdlSGFsbyIsIl9nbG9iZUNvbmZpZyRodWdlSGFsbzIiLCJtYXBTdGF0ZSIsIm9uR2xvYmVDb25maWdDaGFuZ2UiLCJnbG9iZUNvbmZpZyIsImdsb2JlIiwiY29uZmlnIiwib25Ub2dnbGUiLCJrZXkiLCJjaGlsZEtleXMiLCJwYXJlbnRLZXkiLCJuZXdWYWx1ZSIsInVwZGF0ZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImZvckVhY2giLCJjaGlsZEtleSIsIm9uU2xpZGVyQ2hhbmdlIiwidmFsdWUiLCJvbkNvbG9yQ2hhbmdlIiwiY29sb3IiLCJlbmFibGVkIiwiY3JlYXRlRWxlbWVudCIsImlkIiwiY2xhc3NOYW1lIiwidG9vbHRpcCIsImF0bW9zcGhlcmUiLCJvbkNsaWNrIiwiSWNvbkNvbXBvbmVudCIsImFjdGl2ZSIsImZsdXNoIiwiaHVnZUhhbG8iLCJ1bmRlZmluZWQiLCJCb29sZWFuIiwic3R5bGUiLCJwYWRkaW5nTGVmdCIsInJhbmdlIiwidmFsdWUwIiwidmFsdWUxIiwiaHVnZUhhbG9SYWRpdXMiLCJzdGVwIiwiaXNSYW5nZWQiLCJvbkNoYW5nZSIsInZhbCIsImlucHV0VGhlbWUiLCJzaG93SW5wdXQiLCJodWdlSGFsb09wYWNpdHkiLCJ0ZXJtaW5hdG9yIiwidGVybWluYXRvck9wYWNpdHkiLCJhemltdXRoIiwiYXppbXV0aEFuZ2xlIiwiYmFzZW1hcCIsImxhYmVscyIsInNsdWciLCJsYWJlbHNDb2xvciIsImV4dHJhTWFyZ2luUmlnaHQiLCJkaXNhYmxlZCIsImFkbWluTGluZXMiLCJhZG1pbkxpbmVzQ29sb3IiLCJ3YXRlciIsIndhdGVyQ29sb3IiLCJtYXJnaW5MZWZ0Iiwic3VyZmFjZUNvbG9yIiwiYmFja2dyb3VuZENvbG9yIiwic3RhcnMiLCJkaXNwbGF5TmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zaWRlLXBhbmVsL21hcC1zdHlsZS1wYW5lbC9nbG9iZS1jb25maWctcGFuZWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkLCB7Y3NzfSBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCB7TWFwU3RhdGUsIFJHQkNvbG9yfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7R2xvYmVDb25maWcsIERFRkFVTFRfR0xPQkVfQ09ORklHfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0Zvcm1hdHRlZE1lc3NhZ2V9IGZyb20gJ0BrZXBsZXIuZ2wvbG9jYWxpemF0aW9uJztcblxuaW1wb3J0IHtFeWVTZWVuLCBFeWVVbnNlZW59IGZyb20gJy4uLy4uL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQge1xuICBQYW5lbExhYmVsLFxuICBQYW5lbENvbnRlbnQsXG4gIFBhbmVsTGFiZWxCb2xkLFxuICBQYW5lbExhYmVsV3JhcHBlclxufSBmcm9tICcuLi8uLi9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IFBhbmVsSGVhZGVyQWN0aW9uRmFjdG9yeSBmcm9tICcuLi9wYW5lbC1oZWFkZXItYWN0aW9uJztcbmltcG9ydCBSYW5nZVNsaWRlckZhY3RvcnkgZnJvbSAnLi4vLi4vY29tbW9uL3JhbmdlLXNsaWRlcic7XG5pbXBvcnQgTGF5ZXJHcm91cENvbG9yUGlja2VyRmFjdG9yeSBmcm9tICcuL21hcC1sYXllci1ncm91cC1jb2xvci1waWNrZXInO1xuXG5jb25zdCBTdHlsZWRHbG9iZUNvbmZpZ1BhbmVsID0gc3R5bGVkLmRpdmBcbiAgcGFkZGluZy1ib3R0b206IDZweDtcblxuICAvKiBHaXZlIHNsaWRlci9jb2xvciBjb250cm9scyBtb3JlIGhvcml6b250YWwgcm9vbS4gKi9cbiAgLnNpZGUtcGFuZWwtcGFuZWxfX2NvbnRlbnQge1xuICAgIHBhZGRpbmctcmlnaHQ6IDJweDtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkQ29uZmlnUm93ID0gc3R5bGVkLmRpdmBcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICY6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG4gIC5sYXllci1ncm91cF9fdmlzaWJpbGl0eS10b2dnbGUge1xuICAgIG1hcmdpbi1yaWdodDogMTJweDtcbiAgfVxuYDtcblxuY29uc3QgZGlzYWJsZVNsaWRlciA9IGNzc2BcbiAgb3BhY2l0eTogMC41O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbmA7XG5cbmNvbnN0IFNsaWRlcldyYXBwZXIgPSBzdHlsZWQuZGl2PHskZW5hYmxlZD86IGJvb2xlYW59PmBcbiAgZmxleC1ncm93OiAxO1xuICBtYXJnaW4tbGVmdDogNHB4O1xuICAke3Byb3BzID0+IChwcm9wcy4kZW5hYmxlZCA/ICcnIDogZGlzYWJsZVNsaWRlcil9XG5gO1xuXG4vLyBBdG1vc3BoZXJlIHNsaWRlciByb3dzOiBzaHJpbmsgdGhlIG51bWVyaWMgaW5wdXRzIGJ5IDVweCBzbyB0aGUgdHJhY2sgY2FuIHVzZVxuLy8gdGhlIGV4dHJhIHNwYWNlIChkZWZhdWx0IHRoZW1lLnNsaWRlcklucHV0V2lkdGggaXMgNTYpLlxuY29uc3QgQXRtb3NwaGVyZVNsaWRlcldyYXBwZXIgPSBzdHlsZWQoU2xpZGVyV3JhcHBlcilgXG4gIGlucHV0IHtcbiAgICB3aWR0aDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zbGlkZXJJbnB1dFdpZHRoIC0gNX1weDtcbiAgfVxuYDtcblxuLy8gS2VlcCBjb2xvciBzd2F0Y2hlcyBzbGlnaHRseSBpbnNldCBmcm9tIHRoZSBwYW5lbCBlZGdlIChzbGlkZXJzIGFscmVhZHkgZ2V0XG4vLyBpbnNldCBmcm9tIHRoZWlyIG51bWVyaWMgaW5wdXRzOyBzd2F0Y2hlcyBuZWVkIGFuIGV4cGxpY2l0IG1hcmdpbikuXG5jb25zdCBDb2xvclBpY2tlclNsb3QgPSBzdHlsZWQuZGl2YFxuICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG5gO1xuXG4vLyBTbGlkZXIgcm93cyAoRGF5L05pZ2h0LCBTdW4gQXppbXV0aCkgcHV0IHRoZSBsYWJlbCBhbmQgdGhlIHNsaWRlciBzaWRlIGJ5IHNpZGUuXG4vLyBHaXZlIHRoZSBsYWJlbCBvbmx5IHRoZSB3aWR0aCBpdHMgKHNob3J0KSB0ZXh0IG5lZWRzIHNvIHRoZSBzbGlkZXIgZ2V0cyB0aGVcbi8vIHJlc3Qgb2YgdGhlIHJvdy4gVGhlIGNoaWxkIGluZGVudCBpcyBrZXB0IHNtYWxsICh+aGFsZiBhbiBleWUtaWNvbiB3aWR0aCkgc28gdGhlXG4vLyBzdWItcm93IGV5ZSBpY29uIGxpbmVzIHVwIGNsb3NlIHRvIHRoZSBwYXJlbnQgKGF0bW9zcGhlcmUpIHJvdywgcmF0aGVyIHRoYW5cbi8vIGJlaW5nIHB1c2hlZCB+MS41IGljb24gd2lkdGhzIHRvIHRoZSByaWdodC5cbmNvbnN0IFNsaWRlclJvdyA9IHN0eWxlZChTdHlsZWRDb25maWdSb3cpYFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gIC5zaWRlLXBhbmVsLXBhbmVsX19sYWJlbC13cmFwcGVyIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBwYWRkaW5nLWxlZnQ6IDhweDtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB9XG5gO1xuXG5jb25zdCBMYXllckxhYmVsID0gc3R5bGVkKFBhbmVsTGFiZWxCb2xkKTx7JGFjdGl2ZTogYm9vbGVhbn0+YFxuICBjb2xvcjogJHtwcm9wcyA9PiAocHJvcHMuJGFjdGl2ZSA/IHByb3BzLnRoZW1lLnRleHRDb2xvciA6IHByb3BzLnRoZW1lLmxhYmVsQ29sb3IpfTtcbmA7XG5cbmNvbnN0IENoaWxkUm93ID0gc3R5bGVkKFN0eWxlZENvbmZpZ1JvdylgXG4gIC5zaWRlLXBhbmVsLXBhbmVsX19sYWJlbC13cmFwcGVyIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDhweDtcbiAgfVxuYDtcblxuZXhwb3J0IHR5cGUgR2xvYmVDb25maWdQYW5lbFByb3BzID0ge1xuICBtYXBTdGF0ZTogTWFwU3RhdGU7XG4gIG9uR2xvYmVDb25maWdDaGFuZ2U6IChjb25maWc6IFBhcnRpYWw8R2xvYmVDb25maWc+KSA9PiB2b2lkO1xufTtcblxuR2xvYmVDb25maWdQYW5lbEZhY3RvcnkuZGVwcyA9IFtcbiAgUGFuZWxIZWFkZXJBY3Rpb25GYWN0b3J5LFxuICBSYW5nZVNsaWRlckZhY3RvcnksXG4gIExheWVyR3JvdXBDb2xvclBpY2tlckZhY3Rvcnlcbl07XG5cbmZ1bmN0aW9uIEdsb2JlQ29uZmlnUGFuZWxGYWN0b3J5KFxuICBQYW5lbEhlYWRlckFjdGlvbjogUmV0dXJuVHlwZTx0eXBlb2YgUGFuZWxIZWFkZXJBY3Rpb25GYWN0b3J5PixcbiAgUmFuZ2VTbGlkZXI6IFJldHVyblR5cGU8dHlwZW9mIFJhbmdlU2xpZGVyRmFjdG9yeT4sXG4gIExheWVyR3JvdXBDb2xvclBpY2tlcjogUmV0dXJuVHlwZTx0eXBlb2YgTGF5ZXJHcm91cENvbG9yUGlja2VyRmFjdG9yeT5cbikge1xuICBjb25zdCBHbG9iZUNvbmZpZ1BhbmVsOiBSZWFjdC5GQzxHbG9iZUNvbmZpZ1BhbmVsUHJvcHM+ID0gKHttYXBTdGF0ZSwgb25HbG9iZUNvbmZpZ0NoYW5nZX0pID0+IHtcbiAgICBjb25zdCBnbG9iZUNvbmZpZyA9IG1hcFN0YXRlLmdsb2JlPy5jb25maWc7XG5cbiAgICBjb25zdCBvblRvZ2dsZSA9IHVzZUNhbGxiYWNrKFxuICAgICAgKFxuICAgICAgICBrZXk6IGtleW9mIEdsb2JlQ29uZmlnLFxuICAgICAgICBjaGlsZEtleXM/OiAoa2V5b2YgR2xvYmVDb25maWcpW10sXG4gICAgICAgIHBhcmVudEtleT86IGtleW9mIEdsb2JlQ29uZmlnXG4gICAgICApID0+IHtcbiAgICAgICAgaWYgKCFnbG9iZUNvbmZpZykgcmV0dXJuO1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9ICFnbG9iZUNvbmZpZ1trZXldO1xuICAgICAgICBjb25zdCB1cGRhdGU6IFBhcnRpYWw8R2xvYmVDb25maWc+ID0ge1trZXldOiBuZXdWYWx1ZX07XG4gICAgICAgIGlmIChjaGlsZEtleXMpIHtcbiAgICAgICAgICBjaGlsZEtleXMuZm9yRWFjaChjaGlsZEtleSA9PiB7XG4gICAgICAgICAgICB1cGRhdGVbY2hpbGRLZXldID0gbmV3VmFsdWUgYXMgYW55O1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJlbnRLZXkgJiYgbmV3VmFsdWUgPT09IHRydWUpIHtcbiAgICAgICAgICB1cGRhdGVbcGFyZW50S2V5XSA9IHRydWUgYXMgYW55O1xuICAgICAgICB9XG4gICAgICAgIG9uR2xvYmVDb25maWdDaGFuZ2UodXBkYXRlKTtcbiAgICAgIH0sXG4gICAgICBbZ2xvYmVDb25maWcsIG9uR2xvYmVDb25maWdDaGFuZ2VdXG4gICAgKTtcblxuICAgIGNvbnN0IG9uU2xpZGVyQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgICAoa2V5OiBrZXlvZiBHbG9iZUNvbmZpZywgdmFsdWU6IG51bWJlcltdKSA9PiB7XG4gICAgICAgIG9uR2xvYmVDb25maWdDaGFuZ2Uoe1trZXldOiB2YWx1ZVsxXX0gYXMgUGFydGlhbDxHbG9iZUNvbmZpZz4pO1xuICAgICAgfSxcbiAgICAgIFtvbkdsb2JlQ29uZmlnQ2hhbmdlXVxuICAgICk7XG5cbiAgICBjb25zdCBvbkNvbG9yQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgICAoa2V5OiBrZXlvZiBHbG9iZUNvbmZpZywgY29sb3I6IFJHQkNvbG9yKSA9PiB7XG4gICAgICAgIG9uR2xvYmVDb25maWdDaGFuZ2Uoe1trZXldOiBjb2xvcn0gYXMgUGFydGlhbDxHbG9iZUNvbmZpZz4pO1xuICAgICAgfSxcbiAgICAgIFtvbkdsb2JlQ29uZmlnQ2hhbmdlXVxuICAgICk7XG5cbiAgICBpZiAoIW1hcFN0YXRlLmdsb2JlPy5lbmFibGVkIHx8ICFnbG9iZUNvbmZpZykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHlsZWRHbG9iZUNvbmZpZ1BhbmVsPlxuICAgICAgICA8UGFuZWxMYWJlbD5cbiAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cIm1hcE1hbmFnZXIuZ2xvYmVMYXllcnNcIiAvPlxuICAgICAgICA8L1BhbmVsTGFiZWw+XG4gICAgICAgIDxQYW5lbENvbnRlbnQ+XG4gICAgICAgICAgey8qIEF0bW9zcGhlcmUgKi99XG4gICAgICAgICAgPFN0eWxlZENvbmZpZ1Jvdz5cbiAgICAgICAgICAgIDxQYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICAgICAgPFBhbmVsSGVhZGVyQWN0aW9uXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibGF5ZXItZ3JvdXBfX3Zpc2liaWxpdHktdG9nZ2xlXCJcbiAgICAgICAgICAgICAgICBpZD1cImdsb2JlLWF0bW9zcGhlcmUtdG9nZ2xlXCJcbiAgICAgICAgICAgICAgICB0b29sdGlwPXtnbG9iZUNvbmZpZy5hdG1vc3BoZXJlID8gJ3Rvb2x0aXAuaGlkZScgOiAndG9vbHRpcC5zaG93J31cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblRvZ2dsZSgnYXRtb3NwaGVyZScsIFsndGVybWluYXRvcicsICdhemltdXRoJ10pfVxuICAgICAgICAgICAgICAgIEljb25Db21wb25lbnQ9e2dsb2JlQ29uZmlnLmF0bW9zcGhlcmUgPyBFeWVTZWVuIDogRXllVW5zZWVufVxuICAgICAgICAgICAgICAgIGFjdGl2ZT17Z2xvYmVDb25maWcuYXRtb3NwaGVyZX1cbiAgICAgICAgICAgICAgICBmbHVzaFxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8TGF5ZXJMYWJlbCAkYWN0aXZlPXtnbG9iZUNvbmZpZy5hdG1vc3BoZXJlfT5cbiAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cIm1hcExheWVycy5hdG1vc3BoZXJlXCIgLz5cbiAgICAgICAgICAgICAgPC9MYXllckxhYmVsPlxuICAgICAgICAgICAgPC9QYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICA8L1N0eWxlZENvbmZpZ1Jvdz5cblxuICAgICAgICAgIHsvKiBIdWdlIEhhbG8gKGNoaWxkIG9mIGF0bW9zcGhlcmUpIOKAlCBhZGRpdGl2ZSBzb2Z0IGdsb3cgb24gdG9wIG9mIHJlYWxpc3RpYyBoYWxvICovfVxuICAgICAgICAgIDxDaGlsZFJvdz5cbiAgICAgICAgICAgIDxQYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICAgICAgPFBhbmVsSGVhZGVyQWN0aW9uXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibGF5ZXItZ3JvdXBfX3Zpc2liaWxpdHktdG9nZ2xlXCJcbiAgICAgICAgICAgICAgICBpZD1cImdsb2JlLWh1Z2UtaGFsby10b2dnbGVcIlxuICAgICAgICAgICAgICAgIHRvb2x0aXA9e2dsb2JlQ29uZmlnLmh1Z2VIYWxvID8gJ3Rvb2x0aXAuaGlkZScgOiAndG9vbHRpcC5zaG93J31cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblRvZ2dsZSgnaHVnZUhhbG8nLCB1bmRlZmluZWQsICdhdG1vc3BoZXJlJyl9XG4gICAgICAgICAgICAgICAgSWNvbkNvbXBvbmVudD17Z2xvYmVDb25maWcuaHVnZUhhbG8gPyBFeWVTZWVuIDogRXllVW5zZWVufVxuICAgICAgICAgICAgICAgIGFjdGl2ZT17Qm9vbGVhbihnbG9iZUNvbmZpZy5odWdlSGFsbyAmJiBnbG9iZUNvbmZpZy5hdG1vc3BoZXJlKX1cbiAgICAgICAgICAgICAgICBmbHVzaFxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8TGF5ZXJMYWJlbCAkYWN0aXZlPXtCb29sZWFuKGdsb2JlQ29uZmlnLmh1Z2VIYWxvICYmIGdsb2JlQ29uZmlnLmF0bW9zcGhlcmUpfT5cbiAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cIm1hcExheWVycy5odWdlSGFsb1wiIC8+XG4gICAgICAgICAgICAgIDwvTGF5ZXJMYWJlbD5cbiAgICAgICAgICAgIDwvUGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgPC9DaGlsZFJvdz5cblxuICAgICAgICAgIHsvKiBIdWdlIEhhbG8gcmFkaXVzIG11bHRpcGxpZXIgKi99XG4gICAgICAgICAgPFNsaWRlclJvdz5cbiAgICAgICAgICAgIDxQYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICAgICAgPExheWVyTGFiZWxcbiAgICAgICAgICAgICAgICAkYWN0aXZlPXtCb29sZWFuKGdsb2JlQ29uZmlnLmh1Z2VIYWxvICYmIGdsb2JlQ29uZmlnLmF0bW9zcGhlcmUpfVxuICAgICAgICAgICAgICAgIHN0eWxlPXt7cGFkZGluZ0xlZnQ6IDI4fX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwibWFwTGF5ZXJzLmh1Z2VIYWxvUmFkaXVzXCIgLz5cbiAgICAgICAgICAgICAgPC9MYXllckxhYmVsPlxuICAgICAgICAgICAgPC9QYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICAgIDxBdG1vc3BoZXJlU2xpZGVyV3JhcHBlciAkZW5hYmxlZD17Qm9vbGVhbihnbG9iZUNvbmZpZy5odWdlSGFsbyAmJiBnbG9iZUNvbmZpZy5hdG1vc3BoZXJlKX0+XG4gICAgICAgICAgICAgIDxSYW5nZVNsaWRlclxuICAgICAgICAgICAgICAgIHJhbmdlPXtbMC41LCAzLjVdfVxuICAgICAgICAgICAgICAgIHZhbHVlMD17MH1cbiAgICAgICAgICAgICAgICB2YWx1ZTE9e2dsb2JlQ29uZmlnLmh1Z2VIYWxvUmFkaXVzID8/IERFRkFVTFRfR0xPQkVfQ09ORklHLmh1Z2VIYWxvUmFkaXVzfVxuICAgICAgICAgICAgICAgIHN0ZXA9ezAuMDV9XG4gICAgICAgICAgICAgICAgaXNSYW5nZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt2YWwgPT4gb25TbGlkZXJDaGFuZ2UoJ2h1Z2VIYWxvUmFkaXVzJywgdmFsKX1cbiAgICAgICAgICAgICAgICBpbnB1dFRoZW1lPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICBzaG93SW5wdXRcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQXRtb3NwaGVyZVNsaWRlcldyYXBwZXI+XG4gICAgICAgICAgPC9TbGlkZXJSb3c+XG5cbiAgICAgICAgICB7LyogSHVnZSBIYWxvIG9wYWNpdHkgKi99XG4gICAgICAgICAgPFNsaWRlclJvdz5cbiAgICAgICAgICAgIDxQYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICAgICAgPExheWVyTGFiZWxcbiAgICAgICAgICAgICAgICAkYWN0aXZlPXtCb29sZWFuKGdsb2JlQ29uZmlnLmh1Z2VIYWxvICYmIGdsb2JlQ29uZmlnLmF0bW9zcGhlcmUpfVxuICAgICAgICAgICAgICAgIHN0eWxlPXt7cGFkZGluZ0xlZnQ6IDI4fX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwibWFwTGF5ZXJzLmh1Z2VIYWxvT3BhY2l0eVwiIC8+XG4gICAgICAgICAgICAgIDwvTGF5ZXJMYWJlbD5cbiAgICAgICAgICAgIDwvUGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgICA8QXRtb3NwaGVyZVNsaWRlcldyYXBwZXIgJGVuYWJsZWQ9e0Jvb2xlYW4oZ2xvYmVDb25maWcuaHVnZUhhbG8gJiYgZ2xvYmVDb25maWcuYXRtb3NwaGVyZSl9PlxuICAgICAgICAgICAgICA8UmFuZ2VTbGlkZXJcbiAgICAgICAgICAgICAgICByYW5nZT17WzAsIDFdfVxuICAgICAgICAgICAgICAgIHZhbHVlMD17MH1cbiAgICAgICAgICAgICAgICB2YWx1ZTE9e2dsb2JlQ29uZmlnLmh1Z2VIYWxvT3BhY2l0eSA/PyBERUZBVUxUX0dMT0JFX0NPTkZJRy5odWdlSGFsb09wYWNpdHl9XG4gICAgICAgICAgICAgICAgc3RlcD17MC4wMX1cbiAgICAgICAgICAgICAgICBpc1JhbmdlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e3ZhbCA9PiBvblNsaWRlckNoYW5nZSgnaHVnZUhhbG9PcGFjaXR5JywgdmFsKX1cbiAgICAgICAgICAgICAgICBpbnB1dFRoZW1lPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICBzaG93SW5wdXRcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQXRtb3NwaGVyZVNsaWRlcldyYXBwZXI+XG4gICAgICAgICAgPC9TbGlkZXJSb3c+XG5cbiAgICAgICAgICB7LyogVGVybWluYXRvciAoY2hpbGQgb2YgYXRtb3NwaGVyZSkgKi99XG4gICAgICAgICAgPFNsaWRlclJvdz5cbiAgICAgICAgICAgIDxQYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICAgICAgPFBhbmVsSGVhZGVyQWN0aW9uXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibGF5ZXItZ3JvdXBfX3Zpc2liaWxpdHktdG9nZ2xlXCJcbiAgICAgICAgICAgICAgICBpZD1cImdsb2JlLXRlcm1pbmF0b3ItdG9nZ2xlXCJcbiAgICAgICAgICAgICAgICB0b29sdGlwPXtnbG9iZUNvbmZpZy50ZXJtaW5hdG9yID8gJ3Rvb2x0aXAuaGlkZScgOiAndG9vbHRpcC5zaG93J31cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblRvZ2dsZSgndGVybWluYXRvcicsIHVuZGVmaW5lZCwgJ2F0bW9zcGhlcmUnKX1cbiAgICAgICAgICAgICAgICBJY29uQ29tcG9uZW50PXtnbG9iZUNvbmZpZy50ZXJtaW5hdG9yID8gRXllU2VlbiA6IEV5ZVVuc2Vlbn1cbiAgICAgICAgICAgICAgICBhY3RpdmU9e2dsb2JlQ29uZmlnLnRlcm1pbmF0b3IgJiYgZ2xvYmVDb25maWcuYXRtb3NwaGVyZX1cbiAgICAgICAgICAgICAgICBmbHVzaFxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8TGF5ZXJMYWJlbCAkYWN0aXZlPXtnbG9iZUNvbmZpZy50ZXJtaW5hdG9yICYmIGdsb2JlQ29uZmlnLmF0bW9zcGhlcmV9PlxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwibWFwTGF5ZXJzLnRlcm1pbmF0b3JcIiAvPlxuICAgICAgICAgICAgICA8L0xheWVyTGFiZWw+XG4gICAgICAgICAgICA8L1BhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgPEF0bW9zcGhlcmVTbGlkZXJXcmFwcGVyICRlbmFibGVkPXtnbG9iZUNvbmZpZy50ZXJtaW5hdG9yICYmIGdsb2JlQ29uZmlnLmF0bW9zcGhlcmV9PlxuICAgICAgICAgICAgICA8UmFuZ2VTbGlkZXJcbiAgICAgICAgICAgICAgICByYW5nZT17WzAsIDFdfVxuICAgICAgICAgICAgICAgIHZhbHVlMD17MH1cbiAgICAgICAgICAgICAgICB2YWx1ZTE9e2dsb2JlQ29uZmlnLnRlcm1pbmF0b3JPcGFjaXR5fVxuICAgICAgICAgICAgICAgIHN0ZXA9ezAuMDF9XG4gICAgICAgICAgICAgICAgaXNSYW5nZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt2YWwgPT4gb25TbGlkZXJDaGFuZ2UoJ3Rlcm1pbmF0b3JPcGFjaXR5JywgdmFsKX1cbiAgICAgICAgICAgICAgICBpbnB1dFRoZW1lPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICBzaG93SW5wdXRcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQXRtb3NwaGVyZVNsaWRlcldyYXBwZXI+XG4gICAgICAgICAgPC9TbGlkZXJSb3c+XG5cbiAgICAgICAgICB7LyogU3VuIEF6aW11dGggKGNoaWxkIG9mIGF0bW9zcGhlcmUpICovfVxuICAgICAgICAgIDxTbGlkZXJSb3c+XG4gICAgICAgICAgICA8UGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgICAgIDxQYW5lbEhlYWRlckFjdGlvblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImxheWVyLWdyb3VwX192aXNpYmlsaXR5LXRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgaWQ9XCJnbG9iZS1hemltdXRoLXRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgdG9vbHRpcD17Z2xvYmVDb25maWcuYXppbXV0aCA/ICd0b29sdGlwLmhpZGUnIDogJ3Rvb2x0aXAuc2hvdyd9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Ub2dnbGUoJ2F6aW11dGgnLCB1bmRlZmluZWQsICdhdG1vc3BoZXJlJyl9XG4gICAgICAgICAgICAgICAgSWNvbkNvbXBvbmVudD17Z2xvYmVDb25maWcuYXppbXV0aCA/IEV5ZVNlZW4gOiBFeWVVbnNlZW59XG4gICAgICAgICAgICAgICAgYWN0aXZlPXtnbG9iZUNvbmZpZy5hemltdXRoICYmIGdsb2JlQ29uZmlnLmF0bW9zcGhlcmV9XG4gICAgICAgICAgICAgICAgZmx1c2hcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPExheWVyTGFiZWwgJGFjdGl2ZT17Z2xvYmVDb25maWcuYXppbXV0aCAmJiBnbG9iZUNvbmZpZy5hdG1vc3BoZXJlfT5cbiAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cIm1hcExheWVycy5zdW5BemltdXRoXCIgLz5cbiAgICAgICAgICAgICAgPC9MYXllckxhYmVsPlxuICAgICAgICAgICAgPC9QYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICAgIDxBdG1vc3BoZXJlU2xpZGVyV3JhcHBlciAkZW5hYmxlZD17Z2xvYmVDb25maWcuYXppbXV0aCAmJiBnbG9iZUNvbmZpZy5hdG1vc3BoZXJlfT5cbiAgICAgICAgICAgICAgPFJhbmdlU2xpZGVyXG4gICAgICAgICAgICAgICAgcmFuZ2U9e1swLCAzNjBdfVxuICAgICAgICAgICAgICAgIHZhbHVlMD17MH1cbiAgICAgICAgICAgICAgICB2YWx1ZTE9e2dsb2JlQ29uZmlnLmF6aW11dGhBbmdsZX1cbiAgICAgICAgICAgICAgICBzdGVwPXsxfVxuICAgICAgICAgICAgICAgIGlzUmFuZ2VkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17dmFsID0+IG9uU2xpZGVyQ2hhbmdlKCdhemltdXRoQW5nbGUnLCB2YWwpfVxuICAgICAgICAgICAgICAgIGlucHV0VGhlbWU9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgIHNob3dJbnB1dFxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9BdG1vc3BoZXJlU2xpZGVyV3JhcHBlcj5cbiAgICAgICAgICA8L1NsaWRlclJvdz5cblxuICAgICAgICAgIHsvKiBCYXNlbWFwICovfVxuICAgICAgICAgIDxTdHlsZWRDb25maWdSb3c+XG4gICAgICAgICAgICA8UGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgICAgIDxQYW5lbEhlYWRlckFjdGlvblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImxheWVyLWdyb3VwX192aXNpYmlsaXR5LXRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgaWQ9XCJnbG9iZS1iYXNlbWFwLXRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgdG9vbHRpcD17Z2xvYmVDb25maWcuYmFzZW1hcCA/ICd0b29sdGlwLmhpZGUnIDogJ3Rvb2x0aXAuc2hvdyd9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Ub2dnbGUoJ2Jhc2VtYXAnLCBbJ2xhYmVscycsICdhZG1pbkxpbmVzJywgJ3dhdGVyJ10pfVxuICAgICAgICAgICAgICAgIEljb25Db21wb25lbnQ9e2dsb2JlQ29uZmlnLmJhc2VtYXAgPyBFeWVTZWVuIDogRXllVW5zZWVufVxuICAgICAgICAgICAgICAgIGFjdGl2ZT17Z2xvYmVDb25maWcuYmFzZW1hcH1cbiAgICAgICAgICAgICAgICBmbHVzaFxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8TGF5ZXJMYWJlbCAkYWN0aXZlPXtnbG9iZUNvbmZpZy5iYXNlbWFwfT5cbiAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cIm1hcExheWVycy5iYXNlbWFwXCIgLz5cbiAgICAgICAgICAgICAgPC9MYXllckxhYmVsPlxuICAgICAgICAgICAgPC9QYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICA8L1N0eWxlZENvbmZpZ1Jvdz5cblxuICAgICAgICAgIHsvKiBMYWJlbHMgKGNoaWxkIG9mIGJhc2VtYXApICovfVxuICAgICAgICAgIDxDaGlsZFJvdz5cbiAgICAgICAgICAgIDxQYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICAgICAgPFBhbmVsSGVhZGVyQWN0aW9uXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibGF5ZXItZ3JvdXBfX3Zpc2liaWxpdHktdG9nZ2xlXCJcbiAgICAgICAgICAgICAgICBpZD1cImdsb2JlLWxhYmVscy10b2dnbGVcIlxuICAgICAgICAgICAgICAgIHRvb2x0aXA9e2dsb2JlQ29uZmlnLmxhYmVscyA/ICd0b29sdGlwLmhpZGUnIDogJ3Rvb2x0aXAuc2hvdyd9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Ub2dnbGUoJ2xhYmVscycsIHVuZGVmaW5lZCwgJ2Jhc2VtYXAnKX1cbiAgICAgICAgICAgICAgICBJY29uQ29tcG9uZW50PXtnbG9iZUNvbmZpZy5sYWJlbHMgPyBFeWVTZWVuIDogRXllVW5zZWVufVxuICAgICAgICAgICAgICAgIGFjdGl2ZT17Z2xvYmVDb25maWcubGFiZWxzICYmIGdsb2JlQ29uZmlnLmJhc2VtYXB9XG4gICAgICAgICAgICAgICAgZmx1c2hcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPExheWVyTGFiZWwgJGFjdGl2ZT17Z2xvYmVDb25maWcubGFiZWxzICYmIGdsb2JlQ29uZmlnLmJhc2VtYXB9PlxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwibWFwTGF5ZXJzLmxhYmVsXCIgLz5cbiAgICAgICAgICAgICAgPC9MYXllckxhYmVsPlxuICAgICAgICAgICAgPC9QYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICAgIDxDb2xvclBpY2tlclNsb3Q+XG4gICAgICAgICAgICAgIDxMYXllckdyb3VwQ29sb3JQaWNrZXJcbiAgICAgICAgICAgICAgICBzbHVnPVwiZ2xvYmUtbGFiZWxzXCJcbiAgICAgICAgICAgICAgICBjb2xvcj17Z2xvYmVDb25maWcubGFiZWxzQ29sb3J9XG4gICAgICAgICAgICAgICAgb25Db2xvckNoYW5nZT17KGNvbG9yOiBSR0JDb2xvcikgPT4gb25Db2xvckNoYW5nZSgnbGFiZWxzQ29sb3InLCBjb2xvcil9XG4gICAgICAgICAgICAgICAgZXh0cmFNYXJnaW5SaWdodD17dHJ1ZX1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17IShnbG9iZUNvbmZpZy5sYWJlbHMgJiYgZ2xvYmVDb25maWcuYmFzZW1hcCl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0NvbG9yUGlja2VyU2xvdD5cbiAgICAgICAgICA8L0NoaWxkUm93PlxuXG4gICAgICAgICAgey8qIEFkbWluIExpbmVzIChjaGlsZCBvZiBiYXNlbWFwKSAqL31cbiAgICAgICAgICA8Q2hpbGRSb3c+XG4gICAgICAgICAgICA8UGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgICAgIDxQYW5lbEhlYWRlckFjdGlvblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImxheWVyLWdyb3VwX192aXNpYmlsaXR5LXRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgaWQ9XCJnbG9iZS1hZG1pbi10b2dnbGVcIlxuICAgICAgICAgICAgICAgIHRvb2x0aXA9e2dsb2JlQ29uZmlnLmFkbWluTGluZXMgPyAndG9vbHRpcC5oaWRlJyA6ICd0b29sdGlwLnNob3cnfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uVG9nZ2xlKCdhZG1pbkxpbmVzJywgdW5kZWZpbmVkLCAnYmFzZW1hcCcpfVxuICAgICAgICAgICAgICAgIEljb25Db21wb25lbnQ9e2dsb2JlQ29uZmlnLmFkbWluTGluZXMgPyBFeWVTZWVuIDogRXllVW5zZWVufVxuICAgICAgICAgICAgICAgIGFjdGl2ZT17Z2xvYmVDb25maWcuYWRtaW5MaW5lcyAmJiBnbG9iZUNvbmZpZy5iYXNlbWFwfVxuICAgICAgICAgICAgICAgIGZsdXNoXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxMYXllckxhYmVsICRhY3RpdmU9e2dsb2JlQ29uZmlnLmFkbWluTGluZXMgJiYgZ2xvYmVDb25maWcuYmFzZW1hcH0+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJtYXBMYXllcnMuYWRtaW5Cb3JkZXJzXCIgLz5cbiAgICAgICAgICAgICAgPC9MYXllckxhYmVsPlxuICAgICAgICAgICAgPC9QYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICAgIDxDb2xvclBpY2tlclNsb3Q+XG4gICAgICAgICAgICAgIDxMYXllckdyb3VwQ29sb3JQaWNrZXJcbiAgICAgICAgICAgICAgICBzbHVnPVwiZ2xvYmUtYWRtaW5cIlxuICAgICAgICAgICAgICAgIGNvbG9yPXtnbG9iZUNvbmZpZy5hZG1pbkxpbmVzQ29sb3J9XG4gICAgICAgICAgICAgICAgb25Db2xvckNoYW5nZT17KGNvbG9yOiBSR0JDb2xvcikgPT4gb25Db2xvckNoYW5nZSgnYWRtaW5MaW5lc0NvbG9yJywgY29sb3IpfVxuICAgICAgICAgICAgICAgIGV4dHJhTWFyZ2luUmlnaHQ9e3RydWV9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyEoZ2xvYmVDb25maWcuYWRtaW5MaW5lcyAmJiBnbG9iZUNvbmZpZy5iYXNlbWFwKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQ29sb3JQaWNrZXJTbG90PlxuICAgICAgICAgIDwvQ2hpbGRSb3c+XG5cbiAgICAgICAgICB7LyogV2F0ZXIgKGNoaWxkIG9mIGJhc2VtYXApICovfVxuICAgICAgICAgIDxDaGlsZFJvdz5cbiAgICAgICAgICAgIDxQYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICAgICAgPFBhbmVsSGVhZGVyQWN0aW9uXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibGF5ZXItZ3JvdXBfX3Zpc2liaWxpdHktdG9nZ2xlXCJcbiAgICAgICAgICAgICAgICBpZD1cImdsb2JlLXdhdGVyLXRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgdG9vbHRpcD17Z2xvYmVDb25maWcud2F0ZXIgPyAndG9vbHRpcC5oaWRlJyA6ICd0b29sdGlwLnNob3cnfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uVG9nZ2xlKCd3YXRlcicsIHVuZGVmaW5lZCwgJ2Jhc2VtYXAnKX1cbiAgICAgICAgICAgICAgICBJY29uQ29tcG9uZW50PXtnbG9iZUNvbmZpZy53YXRlciA/IEV5ZVNlZW4gOiBFeWVVbnNlZW59XG4gICAgICAgICAgICAgICAgYWN0aXZlPXtnbG9iZUNvbmZpZy53YXRlciAmJiBnbG9iZUNvbmZpZy5iYXNlbWFwfVxuICAgICAgICAgICAgICAgIGZsdXNoXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxMYXllckxhYmVsICRhY3RpdmU9e2dsb2JlQ29uZmlnLndhdGVyICYmIGdsb2JlQ29uZmlnLmJhc2VtYXB9PlxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwibWFwTGF5ZXJzLndhdGVyXCIgLz5cbiAgICAgICAgICAgICAgPC9MYXllckxhYmVsPlxuICAgICAgICAgICAgPC9QYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICAgIDxDb2xvclBpY2tlclNsb3Q+XG4gICAgICAgICAgICAgIDxMYXllckdyb3VwQ29sb3JQaWNrZXJcbiAgICAgICAgICAgICAgICBzbHVnPVwiZ2xvYmUtd2F0ZXJcIlxuICAgICAgICAgICAgICAgIGNvbG9yPXtnbG9iZUNvbmZpZy53YXRlckNvbG9yfVxuICAgICAgICAgICAgICAgIG9uQ29sb3JDaGFuZ2U9eyhjb2xvcjogUkdCQ29sb3IpID0+IG9uQ29sb3JDaGFuZ2UoJ3dhdGVyQ29sb3InLCBjb2xvcil9XG4gICAgICAgICAgICAgICAgZXh0cmFNYXJnaW5SaWdodD17dHJ1ZX1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17IShnbG9iZUNvbmZpZy53YXRlciAmJiBnbG9iZUNvbmZpZy5iYXNlbWFwKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQ29sb3JQaWNrZXJTbG90PlxuICAgICAgICAgIDwvQ2hpbGRSb3c+XG5cbiAgICAgICAgICB7LyogR2xvYmUgU3VyZmFjZSAoYWx3YXlzIHZpc2libGUsIG9ubHkgaGFzIGNvbG9yKSAqL31cbiAgICAgICAgICA8U3R5bGVkQ29uZmlnUm93PlxuICAgICAgICAgICAgPFBhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgICA8TGF5ZXJMYWJlbCAkYWN0aXZlPXt0cnVlfSBzdHlsZT17e21hcmdpbkxlZnQ6ICcyOHB4J319PlxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwibWFwTGF5ZXJzLnN1cmZhY2VcIiAvPlxuICAgICAgICAgICAgICA8L0xheWVyTGFiZWw+XG4gICAgICAgICAgICA8L1BhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgPENvbG9yUGlja2VyU2xvdD5cbiAgICAgICAgICAgICAgPExheWVyR3JvdXBDb2xvclBpY2tlclxuICAgICAgICAgICAgICAgIHNsdWc9XCJnbG9iZS1zdXJmYWNlXCJcbiAgICAgICAgICAgICAgICBjb2xvcj17Z2xvYmVDb25maWcuc3VyZmFjZUNvbG9yfVxuICAgICAgICAgICAgICAgIG9uQ29sb3JDaGFuZ2U9eyhjb2xvcjogUkdCQ29sb3IpID0+IG9uQ29sb3JDaGFuZ2UoJ3N1cmZhY2VDb2xvcicsIGNvbG9yKX1cbiAgICAgICAgICAgICAgICBleHRyYU1hcmdpblJpZ2h0PXt0cnVlfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQ29sb3JQaWNrZXJTbG90PlxuICAgICAgICAgIDwvU3R5bGVkQ29uZmlnUm93PlxuXG4gICAgICAgICAgey8qIEJhY2tncm91bmQgKGVtcHR5IHNwYWNlIGFyb3VuZCB0aGUgZ2xvYmUsIGFsd2F5cyB2aXNpYmxlKSAqL31cbiAgICAgICAgICA8U3R5bGVkQ29uZmlnUm93PlxuICAgICAgICAgICAgPFBhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgICA8TGF5ZXJMYWJlbCAkYWN0aXZlPXt0cnVlfSBzdHlsZT17e21hcmdpbkxlZnQ6ICcyOHB4J319PlxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwibWFwTGF5ZXJzLmJhY2tncm91bmRcIiAvPlxuICAgICAgICAgICAgICA8L0xheWVyTGFiZWw+XG4gICAgICAgICAgICA8L1BhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgPENvbG9yUGlja2VyU2xvdD5cbiAgICAgICAgICAgICAgPExheWVyR3JvdXBDb2xvclBpY2tlclxuICAgICAgICAgICAgICAgIHNsdWc9XCJnbG9iZS1iYWNrZ3JvdW5kXCJcbiAgICAgICAgICAgICAgICBjb2xvcj17Z2xvYmVDb25maWcuYmFja2dyb3VuZENvbG9yfVxuICAgICAgICAgICAgICAgIG9uQ29sb3JDaGFuZ2U9eyhjb2xvcjogUkdCQ29sb3IpID0+IG9uQ29sb3JDaGFuZ2UoJ2JhY2tncm91bmRDb2xvcicsIGNvbG9yKX1cbiAgICAgICAgICAgICAgICBleHRyYU1hcmdpblJpZ2h0PXt0cnVlfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQ29sb3JQaWNrZXJTbG90PlxuICAgICAgICAgIDwvU3R5bGVkQ29uZmlnUm93PlxuXG4gICAgICAgICAgey8qIFN0YXJzIChyZW5kZXJlZCBiZWhpbmQgdGhlIGdsb2JlIGluIDNEIHNwYWNlKSAqL31cbiAgICAgICAgICA8U3R5bGVkQ29uZmlnUm93PlxuICAgICAgICAgICAgPFBhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgICA8UGFuZWxIZWFkZXJBY3Rpb25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJsYXllci1ncm91cF9fdmlzaWJpbGl0eS10b2dnbGVcIlxuICAgICAgICAgICAgICAgIGlkPVwiZ2xvYmUtc3RhcnMtdG9nZ2xlXCJcbiAgICAgICAgICAgICAgICB0b29sdGlwPXtnbG9iZUNvbmZpZy5zdGFycyA/ICd0b29sdGlwLmhpZGUnIDogJ3Rvb2x0aXAuc2hvdyd9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Ub2dnbGUoJ3N0YXJzJyl9XG4gICAgICAgICAgICAgICAgSWNvbkNvbXBvbmVudD17Z2xvYmVDb25maWcuc3RhcnMgPyBFeWVTZWVuIDogRXllVW5zZWVufVxuICAgICAgICAgICAgICAgIGFjdGl2ZT17Z2xvYmVDb25maWcuc3RhcnN9XG4gICAgICAgICAgICAgICAgZmx1c2hcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPExheWVyTGFiZWwgJGFjdGl2ZT17Z2xvYmVDb25maWcuc3RhcnN9PlxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwibWFwTGF5ZXJzLnN0YXJzXCIgLz5cbiAgICAgICAgICAgICAgPC9MYXllckxhYmVsPlxuICAgICAgICAgICAgPC9QYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICA8L1N0eWxlZENvbmZpZ1Jvdz5cbiAgICAgICAgPC9QYW5lbENvbnRlbnQ+XG4gICAgICA8L1N0eWxlZEdsb2JlQ29uZmlnUGFuZWw+XG4gICAgKTtcbiAgfTtcblxuICBHbG9iZUNvbmZpZ1BhbmVsLmRpc3BsYXlOYW1lID0gJ0dsb2JlQ29uZmlnUGFuZWwnO1xuICByZXR1cm4gR2xvYmVDb25maWdQYW5lbDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgR2xvYmVDb25maWdQYW5lbEZhY3Rvcnk7XG4iXSwibWFwcGlu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
package/dist/index.d.ts CHANGED
@@ -80,6 +80,7 @@ export { default as CoordinateInfoFactory } from './map/coordinate-info';
80
80
  export { default as LayerHoverInfoFactory } from './map/layer-hover-info';
81
81
  export { default as LazyTippy } from './map/lazy-tippy';
82
82
  export { default as LocalePanelFactory } from './map/locale-panel';
83
+ export { default as ThemeToggleButtonFactory } from './map/theme-toggle-button';
83
84
  export { default as MapControlFactory } from './map/map-control';
84
85
  export { default as MapNavigationControlFactory } from './map/map-navigation-control';
85
86
  export { default as MapScaleFactory } from './map/map-scale';
@@ -123,6 +124,7 @@ export { default as SpeedControlFactory } from './common/animation-control/speed
123
124
  export { default as ExportVideoControlFactory } from './common/animation-control/export-video-control';
124
125
  export { default as WindowActionControlFactory } from './common/animation-control/window-action-control';
125
126
  export { default as HistogramPlotFactory, HISTOGRAM_MASK_MODE } from './common/histogram-plot';
127
+ export type { HistogramPlotProps } from './common/histogram-plot';
126
128
  export { default as IconButton } from './common/icon-button';
127
129
  export { default as LinkRenderer } from './common/link-renderer';
128
130
  export { default as ColumnStatsChartFactory, HISTOGRAM_WIDTH, HISTOGRAM_HEIGHT, ColorChartHeader, ColorChartTick } from './common/column-stats-chart';
@@ -152,7 +154,13 @@ export { default as CanvasHack } from './common/data-table/canvas';
152
154
  export { renderedSize } from './common/data-table/cell-size';
153
155
  export { default as DataTableConfigFactory, NumberFormatConfig } from './common/data-table/display-format';
154
156
  export { default as HeaderCellFactory } from './common/data-table/header-cell';
157
+ export type { HeaderCellProps } from './common/data-table/header-cell';
155
158
  export { FormatterDropdown, default as OptionDropdown } from './common/data-table/option-dropdown';
159
+ export { default as ColumnStatisticsNumericFactory } from './common/data-table/column-statistics-numeric';
160
+ export type { ColumnStatisticsNumericProps } from './common/data-table/column-statistics-numeric';
161
+ export { default as ColumnStatisticsTimeFactory } from './common/data-table/column-statistics-time';
162
+ export type { ColumnStatisticsTimeProps } from './common/data-table/column-statistics-time';
163
+ export { STATS_WIDTH } from './common/data-table/column-statistics-components';
156
164
  export { default as DatasetLabel } from './common/dataset-label';
157
165
  export { default as FieldSelectorFactory } from './common/field-selector';
158
166
  export * from './common/field-token';
@@ -68,6 +68,7 @@ export declare const mapFieldsSelector: (props: KeplerGLProps, index?: number) =
68
68
  mapControls: import("@kepler.gl/types").MapControls;
69
69
  readOnly: boolean;
70
70
  locale: string;
71
+ uiTheme: string;
71
72
  isLoadingIndicatorVisible: boolean;
72
73
  sidePanelWidth: number;
73
74
  topMapContainerProps: object | undefined;
@@ -108,6 +109,7 @@ export declare const sidePanelSelector: (props: KeplerGLProps, availableProvider
108
109
  "3D": typeof import("@kepler.gl/layers").ScenegraphLayer;
109
110
  trip: typeof import("@kepler.gl/layers/dist/trip-layer/trip-layer").default;
110
111
  s2: typeof import("@kepler.gl/layers/dist/s2-geometry-layer/s2-geometry-layer").default;
112
+ a5: typeof import("@kepler.gl/layers/dist/a5-layer/a5-layer").default;
111
113
  flow: typeof import("@kepler.gl/layers/dist/flow-layer/flow-layer").default;
112
114
  vectorTile: typeof import("@kepler.gl/layers").VectorTileLayer;
113
115
  rasterTile: typeof import("@kepler.gl/layers").RasterTileLayer;
@@ -159,6 +161,7 @@ export declare const plotContainerSelector: (props: KeplerGLProps) => {
159
161
  mapControls: import("@kepler.gl/types").MapControls;
160
162
  readOnly: boolean;
161
163
  locale: string;
164
+ uiTheme: string;
162
165
  isLoadingIndicatorVisible: boolean;
163
166
  sidePanelWidth: number;
164
167
  topMapContainerProps: object | undefined;
@@ -4,6 +4,7 @@ import Toggle3dButtonFactory from './toggle-3d-button';
4
4
  import MapLegendPanelFactory from './map-legend-panel';
5
5
  import MapDrawPanelFactory from './map-draw-panel';
6
6
  import LocalePanelFactory from './locale-panel';
7
+ import ThemeToggleButtonFactory from './theme-toggle-button';
7
8
  import MapNavigationControlFactory from './map-navigation-control';
8
9
  import { Layer } from '@kepler.gl/layers';
9
10
  import { Editor, LayerVisConfig, LayerOrder, MapControls, MapState } from '@kepler.gl/types';
@@ -36,12 +37,15 @@ export type MapControlProps = {
36
37
  onToggleMapControl: (control: string) => void;
37
38
  onSetEditorMode: (mode: string) => void;
38
39
  onToggleEditorVisibility: () => void;
40
+ onConvertEditorFeaturesToLayer?: () => void;
39
41
  onLayerVisConfigChange: (oldLayer: Layer, newVisConfig: Partial<LayerVisConfig>) => void;
40
42
  onToggleLayerVisibility?: (layer: Layer) => void;
41
43
  top: number;
42
44
  onSetLocale: typeof UIStateActions.setLocale;
45
+ onSetTheme: typeof UIStateActions.setTheme;
43
46
  availableLocales: string[];
44
47
  locale: string;
48
+ themeName?: string;
45
49
  logoComponent?: React.FC | React.ReactNode;
46
50
  isExport?: boolean;
47
51
  setMapControlSettings: typeof UIStateActions.setMapControlSettings;
@@ -63,10 +67,10 @@ export type MapControlProps = {
63
67
  }[];
64
68
  onToggleLayerForMap?: (mapIndex: number, layerId: string) => void;
65
69
  };
66
- declare function MapControlFactory(SplitMapButton: ReturnType<typeof SplitMapButtonFactory>, Toggle3dButton: ReturnType<typeof Toggle3dButtonFactory>, MapLegendPanel: ReturnType<typeof MapLegendPanelFactory>, MapDrawPanel: ReturnType<typeof MapDrawPanelFactory>, LocalePanel: ReturnType<typeof LocalePanelFactory>, AnnotationControl: ReturnType<typeof AnnotationControlFactory>, MapNavigationControl: ReturnType<typeof MapNavigationControlFactory>): React.FC<MapControlProps> & {
70
+ declare function MapControlFactory(SplitMapButton: ReturnType<typeof SplitMapButtonFactory>, Toggle3dButton: ReturnType<typeof Toggle3dButtonFactory>, MapLegendPanel: ReturnType<typeof MapLegendPanelFactory>, MapDrawPanel: ReturnType<typeof MapDrawPanelFactory>, LocalePanel: ReturnType<typeof LocalePanelFactory>, ThemeToggleButton: ReturnType<typeof ThemeToggleButtonFactory>, AnnotationControl: ReturnType<typeof AnnotationControlFactory>, MapNavigationControl: ReturnType<typeof MapNavigationControlFactory>): React.FC<MapControlProps> & {
67
71
  defaultActionComponents: MapControlProps["actionComponents"];
68
72
  };
69
73
  declare namespace MapControlFactory {
70
- var deps: (typeof MapNavigationControlFactory | typeof SplitMapButtonFactory | typeof Toggle3dButtonFactory | typeof MapLegendPanelFactory | typeof MapDrawPanelFactory | typeof LocalePanelFactory | typeof AnnotationControlFactory)[];
74
+ var deps: (typeof MapNavigationControlFactory | typeof SplitMapButtonFactory | typeof Toggle3dButtonFactory | typeof MapLegendPanelFactory | typeof MapDrawPanelFactory | typeof LocalePanelFactory | typeof ThemeToggleButtonFactory | typeof AnnotationControlFactory)[];
71
75
  }
72
76
  export default MapControlFactory;
@@ -9,6 +9,7 @@ export type MapDrawPanelProps = {
9
9
  onToggleMapControl: (control: string) => void;
10
10
  onSetEditorMode: (mode: string) => void;
11
11
  onToggleEditorVisibility: () => void;
12
+ onConvertEditorFeaturesToLayer?: () => void;
12
13
  actionIcons: {
13
14
  [id: string]: React.ComponentType<Partial<BaseProps>>;
14
15
  };
@@ -0,0 +1,18 @@
1
+ import React, { ComponentType } from 'react';
2
+ import { MapControls } from '@kepler.gl/types';
3
+ import MapControlTooltipFactory from './map-control-tooltip';
4
+ interface ThemeToggleButtonIcons {
5
+ sun: ComponentType<any>;
6
+ moon: ComponentType<any>;
7
+ }
8
+ export type ThemeToggleButtonProps = {
9
+ themeName?: string;
10
+ onSetTheme: (theme: string) => void;
11
+ mapControls: MapControls;
12
+ actionIcons?: ThemeToggleButtonIcons;
13
+ };
14
+ declare function ThemeToggleButtonFactory(MapControlTooltip: ReturnType<typeof MapControlTooltipFactory>): React.NamedExoticComponent<ThemeToggleButtonProps>;
15
+ declare namespace ThemeToggleButtonFactory {
16
+ var deps: (typeof MapControlTooltipFactory)[];
17
+ }
18
+ export default ThemeToggleButtonFactory;
@@ -44,6 +44,7 @@ export interface MapContainerProps {
44
44
  activeSidePanel: string | null;
45
45
  sidePanelWidth?: number;
46
46
  locale?: any;
47
+ uiTheme?: string;
47
48
  theme?: any;
48
49
  editor?: any;
49
50
  MapComponent?: typeof MapboxLegacyMap | typeof MaplibreMap;
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
- export declare const CloudItem: ({ vis, onClick }: {
2
+ export declare const CloudItem: ({ vis, onClick, provider }: {
3
3
  vis: any;
4
4
  onClick: any;
5
+ provider: any;
5
6
  }) => React.JSX.Element;
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare const CloudStorageDisclaimer: React.FC;
@@ -31,6 +31,7 @@ interface DataTableModalProps {
31
31
  }) => void;
32
32
  uiStateActions: typeof UIStateActions;
33
33
  uiState: UiState;
34
+ loadColumnStats?: (dataId: string, fieldName: string | string[]) => void;
34
35
  }
35
36
  declare function DataTableModalFactory(DataTable: ReturnType<typeof DataTableFactory>, DataTableConfig: ReturnType<typeof DataTableConfigFactory>): React.ComponentType<Omit<DataTableModalProps, 'theme'>>;
36
37
  declare namespace DataTableModalFactory {
@@ -96,6 +96,8 @@ export declare class GlobeExportVideoPanelContainer extends Component<GlobeExpor
96
96
  setViewState: (viewState: MapViewState) => void;
97
97
  /** CSS background color (area the globe doesn't cover), from globe config. */
98
98
  getBackgroundColor(): string;
99
+ /** Starfield behind the globe, matching the live map's CSS background. */
100
+ areStarsEnabled(): boolean;
99
101
  setStateAndNotify(update: GlobeExportVideoSettings): void;
100
102
  setMediaType: (mediaType: string) => void;
101
103
  setCameraPreset: (cameraPreset: string) => void;
@@ -14,6 +14,9 @@ export type GlobeExportVideoPreviewProps = {
14
14
  durationMs: number;
15
15
  /** CSS color string for the area the globe does not cover. */
16
16
  backgroundColor: string;
17
+ mapProps?: Record<string, any>;
18
+ /** Tileable star-field data URL, matching the live globe map CSS background. */
19
+ starsImage?: string | null;
17
20
  };
18
21
  /**
19
22
  * Single-canvas video export preview for globe mode.
@@ -45,10 +45,11 @@ export declare function getHubbleDeckGlProps(keplerState: KeplerState, mapboxApi
45
45
  * stateful and bound to a single Deck) and its own `mapIndex` so the split-map
46
46
  * layer visibility is respected on each half of the swipe.
47
47
  */
48
- export declare function getGlobeExportLayers(keplerState: KeplerState, { mapIndex, mapboxApiAccessToken, mapboxApiUrl }: {
48
+ export declare function getGlobeExportLayers(keplerState: KeplerState, { mapIndex, mapboxApiAccessToken, mapboxApiUrl, viewState }: {
49
49
  mapIndex: number;
50
50
  mapboxApiAccessToken?: string;
51
51
  mapboxApiUrl?: string;
52
+ viewState?: MapViewState;
52
53
  }): (import("@kepler.gl/layers").Layer | import("@deck.gl/core").Layer<{}>)[];
53
54
  export declare function getAnimatableFilters(keplerState: KeplerState): TimeRangeFilter[];
54
55
  export declare function scaleToVideoExport(viewState: MapViewState, container: {
@@ -7,4 +7,4 @@ export declare function getSwipePercentageAtTime(timeMs: number, durationMs: num
7
7
  * Composite two canvases (left/right map views) with a swipe divider
8
8
  * into a single output canvas.
9
9
  */
10
- export declare function compositeSwipeFrame(leftCanvas: HTMLCanvasElement, rightCanvas: HTMLCanvasElement, outputCanvas: HTMLCanvasElement, percentage: number, showDivider?: boolean, backgroundColor?: string): void;
10
+ export declare function compositeSwipeFrame(leftCanvas: HTMLCanvasElement, rightCanvas: HTMLCanvasElement, outputCanvas: HTMLCanvasElement, percentage: number, showDivider?: boolean, backgroundColor?: string, showStars?: boolean): void;
@@ -0,0 +1 @@
1
+ export {};