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

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 (121) 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/header-cell.js +123 -44
  7. package/dist/cjs/common/data-table/index.js +102 -29
  8. package/dist/cjs/common/histogram-plot.js +1 -1
  9. package/dist/cjs/common/icons/{arrow-down-solid.js → draw-point.js} +21 -11
  10. package/dist/cjs/common/icons/index.js +15 -1
  11. package/dist/cjs/common/icons/line-string.js +60 -0
  12. package/dist/cjs/common/toolbar-item.js +24 -3
  13. package/dist/cjs/editor/editor.js +26 -8
  14. package/dist/cjs/editor/feature-action-panel.js +34 -12
  15. package/dist/cjs/editor/feature-properties-editor.js +215 -0
  16. package/dist/cjs/editor/filter-feature-badges.js +92 -0
  17. package/dist/cjs/index.js +33 -1
  18. package/dist/cjs/kepler-gl.js +20 -3
  19. package/dist/cjs/map/map-control-toolbar.js +2 -2
  20. package/dist/cjs/map/map-control.js +13 -7
  21. package/dist/cjs/map/map-draw-panel.js +65 -15
  22. package/dist/cjs/map/theme-toggle-button.js +64 -0
  23. package/dist/cjs/map-container.js +16 -5
  24. package/dist/cjs/modal-container.js +2 -1
  25. package/dist/cjs/modals/cloud-components/cloud-item.js +55 -7
  26. package/dist/cjs/modals/cloud-components/cloud-item.spec.js +75 -3
  27. package/dist/cjs/modals/cloud-components/cloud-maps.js +2 -1
  28. package/dist/cjs/modals/cloud-tile.js +52 -38
  29. package/dist/cjs/modals/data-table-modal.js +37 -25
  30. package/dist/cjs/modals/export-video-modal.js +28 -1
  31. package/dist/cjs/modals/export-video-modal.spec.js +56 -10
  32. package/dist/cjs/modals/globe-export-video-container.js +19 -3
  33. package/dist/cjs/modals/globe-export-video-preview.js +25 -7
  34. package/dist/cjs/modals/hubble-utils.js +8 -3
  35. package/dist/cjs/modals/swipe-composite-utils.js +9 -1
  36. package/dist/cjs/modals/swipe-composite-utils.spec.js +69 -0
  37. package/dist/cjs/modals/swipe-export-video-preview.js +9 -5
  38. package/dist/cjs/side-panel/layer-manager.js +11 -3
  39. package/dist/cjs/side-panel/layer-panel/dataset-layer-section.js +11 -3
  40. package/dist/cjs/side-panel/layer-panel/layer-configurator.js +74 -31
  41. package/dist/cjs/side-panel/map-style-panel/globe-config-panel.js +90 -25
  42. package/dist/common/data-table/column-statistics-categoric.d.ts +9 -0
  43. package/dist/common/data-table/column-statistics-components.d.ts +31 -0
  44. package/dist/common/data-table/column-statistics-numeric.d.ts +18 -0
  45. package/dist/common/data-table/column-statistics-time.d.ts +19 -0
  46. package/dist/common/data-table/header-cell.d.ts +7 -5
  47. package/dist/common/data-table/index.d.ts +7 -24
  48. package/dist/common/histogram-plot.d.ts +24 -1
  49. package/dist/common/icons/{arrow-down-solid.d.ts → draw-point.d.ts} +2 -1
  50. package/dist/common/icons/index.d.ts +2 -0
  51. package/dist/common/icons/line-string.d.ts +10 -0
  52. package/dist/common/toolbar-item.d.ts +2 -0
  53. package/dist/editor/editor.d.ts +1 -0
  54. package/dist/editor/feature-action-panel.d.ts +1 -0
  55. package/dist/editor/feature-properties-editor.d.ts +8 -0
  56. package/dist/editor/filter-feature-badges.d.ts +12 -0
  57. package/dist/esm/common/data-table/cell-size.js +40 -23
  58. package/dist/esm/common/data-table/column-statistics-categoric.js +33 -0
  59. package/dist/esm/common/data-table/column-statistics-components.js +59 -0
  60. package/dist/esm/common/data-table/column-statistics-numeric.js +78 -0
  61. package/dist/esm/common/data-table/column-statistics-time.js +60 -0
  62. package/dist/esm/common/data-table/header-cell.js +125 -46
  63. package/dist/esm/common/data-table/index.js +102 -29
  64. package/dist/esm/common/histogram-plot.js +1 -1
  65. package/dist/esm/common/icons/draw-point.js +44 -0
  66. package/dist/esm/common/icons/index.js +3 -1
  67. package/dist/esm/common/icons/line-string.js +54 -0
  68. package/dist/esm/common/toolbar-item.js +24 -3
  69. package/dist/esm/editor/editor.js +26 -8
  70. package/dist/esm/editor/feature-action-panel.js +37 -15
  71. package/dist/esm/editor/feature-properties-editor.js +208 -0
  72. package/dist/esm/editor/filter-feature-badges.js +85 -0
  73. package/dist/esm/index.js +5 -1
  74. package/dist/esm/kepler-gl.js +20 -3
  75. package/dist/esm/map/map-control-toolbar.js +2 -2
  76. package/dist/esm/map/map-control.js +13 -7
  77. package/dist/esm/map/map-draw-panel.js +63 -11
  78. package/dist/esm/map/theme-toggle-button.js +55 -0
  79. package/dist/esm/map-container.js +16 -5
  80. package/dist/esm/modal-container.js +2 -1
  81. package/dist/esm/modals/cloud-components/cloud-item.js +53 -7
  82. package/dist/esm/modals/cloud-components/cloud-item.spec.js +76 -4
  83. package/dist/esm/modals/cloud-components/cloud-maps.js +2 -1
  84. package/dist/esm/modals/cloud-tile.js +52 -38
  85. package/dist/esm/modals/data-table-modal.js +38 -26
  86. package/dist/esm/modals/export-video-modal.js +29 -2
  87. package/dist/esm/modals/export-video-modal.spec.js +56 -10
  88. package/dist/esm/modals/globe-export-video-container.js +20 -4
  89. package/dist/esm/modals/globe-export-video-preview.js +26 -8
  90. package/dist/esm/modals/hubble-utils.js +8 -3
  91. package/dist/esm/modals/swipe-composite-utils.js +9 -1
  92. package/dist/esm/modals/swipe-composite-utils.spec.js +67 -0
  93. package/dist/esm/modals/swipe-export-video-preview.js +8 -4
  94. package/dist/esm/side-panel/layer-manager.js +11 -3
  95. package/dist/esm/side-panel/layer-panel/dataset-layer-section.js +11 -3
  96. package/dist/esm/side-panel/layer-panel/layer-configurator.js +74 -31
  97. package/dist/esm/side-panel/map-style-panel/globe-config-panel.js +90 -25
  98. package/dist/index.d.ts +8 -0
  99. package/dist/kepler-gl.d.ts +3 -0
  100. package/dist/map/map-control.d.ts +6 -2
  101. package/dist/map/map-draw-panel.d.ts +1 -0
  102. package/dist/map/theme-toggle-button.d.ts +18 -0
  103. package/dist/map-container.d.ts +1 -0
  104. package/dist/modals/cloud-components/cloud-item.d.ts +2 -1
  105. package/dist/modals/data-table-modal.d.ts +1 -0
  106. package/dist/modals/globe-export-video-container.d.ts +2 -0
  107. package/dist/modals/globe-export-video-preview.d.ts +3 -0
  108. package/dist/modals/hubble-utils.d.ts +2 -1
  109. package/dist/modals/swipe-composite-utils.d.ts +1 -1
  110. package/dist/modals/swipe-composite-utils.spec.d.ts +1 -0
  111. package/package.json +20 -20
  112. package/dist/cjs/modals/cloud-components/provider-loading.js +0 -20
  113. package/dist/cjs/modals/storage-map-viewer.js +0 -98
  114. package/dist/cjs/side-panel/cloud-storage-dropdown.js +0 -40
  115. package/dist/esm/common/icons/arrow-down-solid.js +0 -34
  116. package/dist/esm/modals/cloud-components/provider-loading.js +0 -15
  117. package/dist/esm/modals/storage-map-viewer.js +0 -93
  118. package/dist/esm/side-panel/cloud-storage-dropdown.js +0 -33
  119. package/dist/modals/cloud-components/provider-loading.d.ts +0 -2
  120. package/dist/modals/storage-map-viewer.d.ts +0 -21
  121. package/dist/side-panel/cloud-storage-dropdown.d.ts +0 -6
@@ -1,14 +1,23 @@
1
+ import _taggedTemplateLiteral from "@babel/runtime/helpers/esm/taggedTemplateLiteral";
2
+ var _templateObject, _templateObject2;
1
3
  // SPDX-License-Identifier: MIT
2
4
  // Copyright contributors to the kepler.gl project
3
5
 
4
6
  import React, { useCallback } from 'react';
5
7
  import classnames from 'classnames';
8
+ import copy from 'copy-to-clipboard';
9
+ import styled from 'styled-components';
6
10
  import { EDITOR_MODES } from '@kepler.gl/constants';
7
- import { CursorClick, DrawPolygon, EyeSeen, EyeUnseen, Polygon, Rectangle } from '../common/icons';
11
+ import { editorFeaturesToFeatureCollection, getApplicationConfig } from '@kepler.gl/utils';
12
+ import { Copy, CursorClick, DrawPoint, DrawPolygon, EyeSeen, EyeUnseen, Layers, LineString, Polygon, Rectangle } from '../common/icons';
8
13
  import { MapControlButton } from '../common/styled-components';
9
14
  import ToolbarItem from '../common/toolbar-item';
10
15
  import MapControlTooltipFactory from './map-control-tooltip';
11
16
  import MapControlToolbarFactory from './map-control-toolbar';
17
+ var ToolbarSeparator = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n height: 1px;\n margin: 4px 12px;\n background-color: ", ";\n opacity: 0.2;\n"])), function (props) {
18
+ return props.theme.panelHeaderIcon;
19
+ });
20
+ var DrawControls = styled.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n position: relative;\n\n .convert-to-layer .toolbar-item__title {\n flex: 1;\n min-width: 0;\n white-space: pre;\n text-align: center;\n line-height: 1.25;\n overflow: hidden;\n font-size: 11px;\n }\n"])));
12
21
  MapDrawPanelFactory.deps = [MapControlTooltipFactory, MapControlToolbarFactory];
13
22
  function MapDrawPanelFactory(MapControlTooltip, MapControlToolbar) {
14
23
  var defaultActionIcons = {
@@ -17,31 +26,42 @@ function MapDrawPanelFactory(MapControlTooltip, MapControlToolbar) {
17
26
  polygon: DrawPolygon,
18
27
  cursor: CursorClick,
19
28
  innerPolygon: Polygon,
20
- rectangle: Rectangle
29
+ rectangle: Rectangle,
30
+ point: DrawPoint,
31
+ line: LineString,
32
+ copy: Copy,
33
+ layers: Layers
21
34
  };
22
35
  var MapDrawPanel = /*#__PURE__*/React.memo(function (_ref) {
23
- var _mapControls$mapDraw, _mapControls$mapDraw2;
36
+ var _mapControls$mapDraw, _editor$features, _mapControls$mapDraw2;
24
37
  var editor = _ref.editor,
25
38
  mapControls = _ref.mapControls,
26
39
  onToggleMapControl = _ref.onToggleMapControl,
27
40
  onSetEditorMode = _ref.onSetEditorMode,
41
+ onConvertEditorFeaturesToLayer = _ref.onConvertEditorFeaturesToLayer,
28
42
  _ref$actionIcons = _ref.actionIcons,
29
43
  actionIcons = _ref$actionIcons === void 0 ? defaultActionIcons : _ref$actionIcons;
30
44
  var isActive = mapControls === null || mapControls === void 0 || (_mapControls$mapDraw = mapControls.mapDraw) === null || _mapControls$mapDraw === void 0 ? void 0 : _mapControls$mapDraw.active;
45
+ var hasSketchFeatures = Boolean(editor === null || editor === void 0 || (_editor$features = editor.features) === null || _editor$features === void 0 ? void 0 : _editor$features.length);
46
+ var enableSketches = getApplicationConfig().enableDrawOnMapSketches;
31
47
  var onToggleMenuPanel = useCallback(function () {
32
48
  if (!isActive) {
33
49
  onSetEditorMode(EDITOR_MODES.DRAW_RECTANGLE);
34
50
  }
35
51
  onToggleMapControl('mapDraw');
36
52
  }, [isActive, onToggleMapControl, onSetEditorMode]);
53
+ var onCopyAllGeometry = useCallback(function () {
54
+ var _editor$features2;
55
+ if (!(editor !== null && editor !== void 0 && (_editor$features2 = editor.features) !== null && _editor$features2 !== void 0 && _editor$features2.length)) {
56
+ return;
57
+ }
58
+ copy(JSON.stringify(editorFeaturesToFeatureCollection(editor.features)));
59
+ }, [editor === null || editor === void 0 ? void 0 : editor.features]);
37
60
  if (!(mapControls !== null && mapControls !== void 0 && (_mapControls$mapDraw2 = mapControls.mapDraw) !== null && _mapControls$mapDraw2 !== void 0 && _mapControls$mapDraw2.show)) {
38
61
  return null;
39
62
  }
40
- return /*#__PURE__*/React.createElement("div", {
41
- className: "map-draw-controls",
42
- style: {
43
- position: 'relative'
44
- }
63
+ return /*#__PURE__*/React.createElement(DrawControls, {
64
+ className: "map-draw-controls"
45
65
  }, isActive ? /*#__PURE__*/React.createElement(MapControlToolbar, {
46
66
  $show: isActive
47
67
  }, /*#__PURE__*/React.createElement(ToolbarItem, {
@@ -52,7 +72,23 @@ function MapDrawPanelFactory(MapControlTooltip, MapControlToolbar) {
52
72
  label: "toolbar.select",
53
73
  icon: actionIcons.cursor,
54
74
  active: editor.mode === EDITOR_MODES.EDIT
55
- }), /*#__PURE__*/React.createElement(ToolbarItem, {
75
+ }), enableSketches ? /*#__PURE__*/React.createElement(ToolbarItem, {
76
+ className: "draw-point",
77
+ onClick: function onClick() {
78
+ return onSetEditorMode(EDITOR_MODES.DRAW_POINT);
79
+ },
80
+ label: "toolbar.point",
81
+ icon: actionIcons.point,
82
+ active: editor.mode === EDITOR_MODES.DRAW_POINT
83
+ }) : null, enableSketches ? /*#__PURE__*/React.createElement(ToolbarItem, {
84
+ className: "draw-line",
85
+ onClick: function onClick() {
86
+ return onSetEditorMode(EDITOR_MODES.DRAW_LINESTRING);
87
+ },
88
+ label: "toolbar.line",
89
+ icon: actionIcons.line,
90
+ active: editor.mode === EDITOR_MODES.DRAW_LINESTRING
91
+ }) : null, /*#__PURE__*/React.createElement(ToolbarItem, {
56
92
  className: "draw-feature",
57
93
  onClick: function onClick() {
58
94
  return onSetEditorMode(EDITOR_MODES.DRAW_POLYGON);
@@ -68,7 +104,23 @@ function MapDrawPanelFactory(MapControlTooltip, MapControlToolbar) {
68
104
  label: "toolbar.rectangle",
69
105
  icon: actionIcons.rectangle,
70
106
  active: editor.mode === EDITOR_MODES.DRAW_RECTANGLE
71
- })) : null, /*#__PURE__*/React.createElement(MapControlTooltip, {
107
+ }), enableSketches ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ToolbarSeparator, null), /*#__PURE__*/React.createElement(ToolbarItem, {
108
+ className: "copy-all-geometry",
109
+ onClick: onCopyAllGeometry,
110
+ label: "toolbar.copyAll",
111
+ tooltip: "tooltip.copyAllSketches",
112
+ icon: actionIcons.copy,
113
+ disabled: !hasSketchFeatures
114
+ }), /*#__PURE__*/React.createElement(ToolbarItem, {
115
+ className: "convert-to-layer",
116
+ onClick: function onClick() {
117
+ return onConvertEditorFeaturesToLayer === null || onConvertEditorFeaturesToLayer === void 0 ? void 0 : onConvertEditorFeaturesToLayer();
118
+ },
119
+ label: "toolbar.convertToLayer",
120
+ tooltip: "tooltip.convertToLayer",
121
+ icon: actionIcons.layers,
122
+ disabled: !hasSketchFeatures
123
+ })) : null) : null, /*#__PURE__*/React.createElement(MapControlTooltip, {
72
124
  id: "map-draw",
73
125
  message: "tooltip.DrawOnMap"
74
126
  }, /*#__PURE__*/React.createElement(MapControlButton, {
@@ -88,4 +140,4 @@ function MapDrawPanelFactory(MapControlTooltip, MapControlToolbar) {
88
140
  return MapDrawPanel;
89
141
  }
90
142
  export default MapDrawPanelFactory;
91
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNhbGxiYWNrIiwiY2xhc3NuYW1lcyIsIkVESVRPUl9NT0RFUyIsIkN1cnNvckNsaWNrIiwiRHJhd1BvbHlnb24iLCJFeWVTZWVuIiwiRXllVW5zZWVuIiwiUG9seWdvbiIsIlJlY3RhbmdsZSIsIk1hcENvbnRyb2xCdXR0b24iLCJUb29sYmFySXRlbSIsIk1hcENvbnRyb2xUb29sdGlwRmFjdG9yeSIsIk1hcENvbnRyb2xUb29sYmFyRmFjdG9yeSIsIk1hcERyYXdQYW5lbEZhY3RvcnkiLCJkZXBzIiwiTWFwQ29udHJvbFRvb2x0aXAiLCJNYXBDb250cm9sVG9vbGJhciIsImRlZmF1bHRBY3Rpb25JY29ucyIsInZpc2libGUiLCJoaWRkZW4iLCJwb2x5Z29uIiwiY3Vyc29yIiwiaW5uZXJQb2x5Z29uIiwicmVjdGFuZ2xlIiwiTWFwRHJhd1BhbmVsIiwibWVtbyIsIl9yZWYiLCJfbWFwQ29udHJvbHMkbWFwRHJhdyIsIl9tYXBDb250cm9scyRtYXBEcmF3MiIsImVkaXRvciIsIm1hcENvbnRyb2xzIiwib25Ub2dnbGVNYXBDb250cm9sIiwib25TZXRFZGl0b3JNb2RlIiwiX3JlZiRhY3Rpb25JY29ucyIsImFjdGlvbkljb25zIiwiaXNBY3RpdmUiLCJtYXBEcmF3IiwiYWN0aXZlIiwib25Ub2dnbGVNZW51UGFuZWwiLCJEUkFXX1JFQ1RBTkdMRSIsInNob3ciLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwic3R5bGUiLCJwb3NpdGlvbiIsIiRzaG93Iiwib25DbGljayIsIkVESVQiLCJsYWJlbCIsImljb24iLCJtb2RlIiwiRFJBV19QT0xZR09OIiwiaWQiLCJtZXNzYWdlIiwiZSIsInByZXZlbnREZWZhdWx0IiwiaGVpZ2h0IiwiZGlzcGxheU5hbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWFwL21hcC1kcmF3LXBhbmVsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VDYWxsYmFja30gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5cbmltcG9ydCB7RURJVE9SX01PREVTfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0N1cnNvckNsaWNrLCBEcmF3UG9seWdvbiwgRXllU2VlbiwgRXllVW5zZWVuLCBQb2x5Z29uLCBSZWN0YW5nbGV9IGZyb20gJy4uL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQge01hcENvbnRyb2xCdXR0b259IGZyb20gJy4uL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgVG9vbGJhckl0ZW0gZnJvbSAnLi4vY29tbW9uL3Rvb2xiYXItaXRlbSc7XG5pbXBvcnQgTWFwQ29udHJvbFRvb2x0aXBGYWN0b3J5IGZyb20gJy4vbWFwLWNvbnRyb2wtdG9vbHRpcCc7XG5pbXBvcnQgTWFwQ29udHJvbFRvb2xiYXJGYWN0b3J5IGZyb20gJy4vbWFwLWNvbnRyb2wtdG9vbGJhcic7XG5pbXBvcnQge0VkaXRvciwgTWFwQ29udHJvbHN9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtCYXNlUHJvcHN9IGZyb20gJy4uL2NvbW1vbi9pY29ucyc7XG5cbk1hcERyYXdQYW5lbEZhY3RvcnkuZGVwcyA9IFtNYXBDb250cm9sVG9vbHRpcEZhY3RvcnksIE1hcENvbnRyb2xUb29sYmFyRmFjdG9yeV07XG5cbmV4cG9ydCB0eXBlIE1hcERyYXdQYW5lbFByb3BzID0ge1xuICBlZGl0b3I6IEVkaXRvcjtcbiAgbWFwQ29udHJvbHM6IE1hcENvbnRyb2xzO1xuICBvblRvZ2dsZU1hcENvbnRyb2w6IChjb250cm9sOiBzdHJpbmcpID0+IHZvaWQ7XG4gIG9uU2V0RWRpdG9yTW9kZTogKG1vZGU6IHN0cmluZykgPT4gdm9pZDtcbiAgb25Ub2dnbGVFZGl0b3JWaXNpYmlsaXR5OiAoKSA9PiB2b2lkO1xuICBhY3Rpb25JY29uczoge1tpZDogc3RyaW5nXTogUmVhY3QuQ29tcG9uZW50VHlwZTxQYXJ0aWFsPEJhc2VQcm9wcz4+fTtcbn07XG5cbmZ1bmN0aW9uIE1hcERyYXdQYW5lbEZhY3RvcnkoXG4gIE1hcENvbnRyb2xUb29sdGlwOiBSZXR1cm5UeXBlPHR5cGVvZiBNYXBDb250cm9sVG9vbHRpcEZhY3Rvcnk+LFxuICBNYXBDb250cm9sVG9vbGJhcjogUmV0dXJuVHlwZTx0eXBlb2YgTWFwQ29udHJvbFRvb2xiYXJGYWN0b3J5PlxuKSB7XG4gIGNvbnN0IGRlZmF1bHRBY3Rpb25JY29ucyA9IHtcbiAgICB2aXNpYmxlOiBFeWVTZWVuLFxuICAgIGhpZGRlbjogRXllVW5zZWVuLFxuICAgIHBvbHlnb246IERyYXdQb2x5Z29uLFxuICAgIGN1cnNvcjogQ3Vyc29yQ2xpY2ssXG4gICAgaW5uZXJQb2x5Z29uOiBQb2x5Z29uLFxuICAgIHJlY3RhbmdsZTogUmVjdGFuZ2xlXG4gIH07XG5cbiAgY29uc3QgTWFwRHJhd1BhbmVsOiBSZWFjdC5GQzxNYXBEcmF3UGFuZWxQcm9wcz4gPSBSZWFjdC5tZW1vKFxuICAgICh7XG4gICAgICBlZGl0b3IsXG4gICAgICBtYXBDb250cm9scyxcbiAgICAgIG9uVG9nZ2xlTWFwQ29udHJvbCxcbiAgICAgIG9uU2V0RWRpdG9yTW9kZSxcbiAgICAgIGFjdGlvbkljb25zID0gZGVmYXVsdEFjdGlvbkljb25zXG4gICAgfSkgPT4ge1xuICAgICAgY29uc3QgaXNBY3RpdmUgPSBtYXBDb250cm9scz8ubWFwRHJhdz8uYWN0aXZlO1xuICAgICAgY29uc3Qgb25Ub2dnbGVNZW51UGFuZWwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIGlmICghaXNBY3RpdmUpIHtcbiAgICAgICAgICBvblNldEVkaXRvck1vZGUoRURJVE9SX01PREVTLkRSQVdfUkVDVEFOR0xFKTtcbiAgICAgICAgfVxuICAgICAgICBvblRvZ2dsZU1hcENvbnRyb2woJ21hcERyYXcnKTtcbiAgICAgIH0sIFtpc0FjdGl2ZSwgb25Ub2dnbGVNYXBDb250cm9sLCBvblNldEVkaXRvck1vZGVdKTtcbiAgICAgIGlmICghbWFwQ29udHJvbHM/Lm1hcERyYXc/LnNob3cpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1hcC1kcmF3LWNvbnRyb2xzXCIgc3R5bGU9e3twb3NpdGlvbjogJ3JlbGF0aXZlJ319PlxuICAgICAgICAgIHtpc0FjdGl2ZSA/IChcbiAgICAgICAgICAgIDxNYXBDb250cm9sVG9vbGJhciAkc2hvdz17aXNBY3RpdmV9PlxuICAgICAgICAgICAgICA8VG9vbGJhckl0ZW1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJlZGl0LWZlYXR1cmVcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uU2V0RWRpdG9yTW9kZShFRElUT1JfTU9ERVMuRURJVCl9XG4gICAgICAgICAgICAgICAgbGFiZWw9XCJ0b29sYmFyLnNlbGVjdFwiXG4gICAgICAgICAgICAgICAgaWNvbj17YWN0aW9uSWNvbnMuY3Vyc29yfVxuICAgICAgICAgICAgICAgIGFjdGl2ZT17ZWRpdG9yLm1vZGUgPT09IEVESVRPUl9NT0RFUy5FRElUfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8VG9vbGJhckl0ZW1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJkcmF3LWZlYXR1cmVcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uU2V0RWRpdG9yTW9kZShFRElUT1JfTU9ERVMuRFJBV19QT0xZR09OKX1cbiAgICAgICAgICAgICAgICBsYWJlbD1cInRvb2xiYXIucG9seWdvblwiXG4gICAgICAgICAgICAgICAgaWNvbj17YWN0aW9uSWNvbnMuaW5uZXJQb2x5Z29ufVxuICAgICAgICAgICAgICAgIGFjdGl2ZT17ZWRpdG9yLm1vZGUgPT09IEVESVRPUl9NT0RFUy5EUkFXX1BPTFlHT059XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxUb29sYmFySXRlbVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImRyYXctcmVjdGFuZ2xlXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblNldEVkaXRvck1vZGUoRURJVE9SX01PREVTLkRSQVdfUkVDVEFOR0xFKX1cbiAgICAgICAgICAgICAgICBsYWJlbD1cInRvb2xiYXIucmVjdGFuZ2xlXCJcbiAgICAgICAgICAgICAgICBpY29uPXthY3Rpb25JY29ucy5yZWN0YW5nbGV9XG4gICAgICAgICAgICAgICAgYWN0aXZlPXtlZGl0b3IubW9kZSA9PT0gRURJVE9SX01PREVTLkRSQVdfUkVDVEFOR0xFfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9NYXBDb250cm9sVG9vbGJhcj5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8TWFwQ29udHJvbFRvb2x0aXAgaWQ9XCJtYXAtZHJhd1wiIG1lc3NhZ2U9XCJ0b29sdGlwLkRyYXdPbk1hcFwiPlxuICAgICAgICAgICAgPE1hcENvbnRyb2xCdXR0b25cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdtYXAtY29udHJvbC1idXR0b24nLCAnbWFwLWRyYXcnLCB7aXNBY3RpdmV9KX1cbiAgICAgICAgICAgICAgb25DbGljaz17ZSA9PiB7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIG9uVG9nZ2xlTWVudVBhbmVsKCk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGFjdGl2ZT17aXNBY3RpdmV9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxhY3Rpb25JY29ucy5wb2x5Z29uIGhlaWdodD1cIjE4cHhcIiAvPlxuICAgICAgICAgICAgPC9NYXBDb250cm9sQnV0dG9uPlxuICAgICAgICAgIDwvTWFwQ29udHJvbFRvb2x0aXA+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKTtcbiAgICB9XG4gICk7XG5cbiAgTWFwRHJhd1BhbmVsLmRpc3BsYXlOYW1lID0gJ01hcERyYXdQYW5lbCc7XG4gIHJldHVybiBNYXBEcmF3UGFuZWw7XG59XG5cbmV4cG9ydCBkZWZhdWx0IE1hcERyYXdQYW5lbEZhY3Rvcnk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUEsT0FBT0EsS0FBSyxJQUFHQyxXQUFXLFFBQU8sT0FBTztBQUN4QyxPQUFPQyxVQUFVLE1BQU0sWUFBWTtBQUVuQyxTQUFRQyxZQUFZLFFBQU8sc0JBQXNCO0FBQ2pELFNBQVFDLFdBQVcsRUFBRUMsV0FBVyxFQUFFQyxPQUFPLEVBQUVDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxTQUFTLFFBQU8saUJBQWlCO0FBQ2hHLFNBQVFDLGdCQUFnQixRQUFPLDZCQUE2QjtBQUM1RCxPQUFPQyxXQUFXLE1BQU0sd0JBQXdCO0FBQ2hELE9BQU9DLHdCQUF3QixNQUFNLHVCQUF1QjtBQUM1RCxPQUFPQyx3QkFBd0IsTUFBTSx1QkFBdUI7QUFJNURDLG1CQUFtQixDQUFDQyxJQUFJLEdBQUcsQ0FBQ0gsd0JBQXdCLEVBQUVDLHdCQUF3QixDQUFDO0FBVy9FLFNBQVNDLG1CQUFtQkEsQ0FDMUJFLGlCQUE4RCxFQUM5REMsaUJBQThELEVBQzlEO0VBQ0EsSUFBTUMsa0JBQWtCLEdBQUc7SUFDekJDLE9BQU8sRUFBRWIsT0FBTztJQUNoQmMsTUFBTSxFQUFFYixTQUFTO0lBQ2pCYyxPQUFPLEVBQUVoQixXQUFXO0lBQ3BCaUIsTUFBTSxFQUFFbEIsV0FBVztJQUNuQm1CLFlBQVksRUFBRWYsT0FBTztJQUNyQmdCLFNBQVMsRUFBRWY7RUFDYixDQUFDO0VBRUQsSUFBTWdCLFlBQXlDLGdCQUFHekIsS0FBSyxDQUFDMEIsSUFBSSxDQUMxRCxVQUFBQyxJQUFBLEVBTU07SUFBQSxJQUFBQyxvQkFBQSxFQUFBQyxxQkFBQTtJQUFBLElBTEpDLE1B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
143
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNhbGxiYWNrIiwiY2xhc3NuYW1lcyIsImNvcHkiLCJzdHlsZWQiLCJFRElUT1JfTU9ERVMiLCJlZGl0b3JGZWF0dXJlc1RvRmVhdHVyZUNvbGxlY3Rpb24iLCJnZXRBcHBsaWNhdGlvbkNvbmZpZyIsIkNvcHkiLCJDdXJzb3JDbGljayIsIkRyYXdQb2ludCIsIkRyYXdQb2x5Z29uIiwiRXllU2VlbiIsIkV5ZVVuc2VlbiIsIkxheWVycyIsIkxpbmVTdHJpbmciLCJQb2x5Z29uIiwiUmVjdGFuZ2xlIiwiTWFwQ29udHJvbEJ1dHRvbiIsIlRvb2xiYXJJdGVtIiwiTWFwQ29udHJvbFRvb2x0aXBGYWN0b3J5IiwiTWFwQ29udHJvbFRvb2xiYXJGYWN0b3J5IiwiVG9vbGJhclNlcGFyYXRvciIsImRpdiIsIl90ZW1wbGF0ZU9iamVjdCIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwiLCJwcm9wcyIsInRoZW1lIiwicGFuZWxIZWFkZXJJY29uIiwiRHJhd0NvbnRyb2xzIiwiX3RlbXBsYXRlT2JqZWN0MiIsIk1hcERyYXdQYW5lbEZhY3RvcnkiLCJkZXBzIiwiTWFwQ29udHJvbFRvb2x0aXAiLCJNYXBDb250cm9sVG9vbGJhciIsImRlZmF1bHRBY3Rpb25JY29ucyIsInZpc2libGUiLCJoaWRkZW4iLCJwb2x5Z29uIiwiY3Vyc29yIiwiaW5uZXJQb2x5Z29uIiwicmVjdGFuZ2xlIiwicG9pbnQiLCJsaW5lIiwibGF5ZXJzIiwiTWFwRHJhd1BhbmVsIiwibWVtbyIsIl9yZWYiLCJfbWFwQ29udHJvbHMkbWFwRHJhdyIsIl9lZGl0b3IkZmVhdHVyZXMiLCJfbWFwQ29udHJvbHMkbWFwRHJhdzIiLCJlZGl0b3IiLCJtYXBDb250cm9scyIsIm9uVG9nZ2xlTWFwQ29udHJvbCIsIm9uU2V0RWRpdG9yTW9kZSIsIm9uQ29udmVydEVkaXRvckZlYXR1cmVzVG9MYXllciIsIl9yZWYkYWN0aW9uSWNvbnMiLCJhY3Rpb25JY29ucyIsImlzQWN0aXZlIiwibWFwRHJhdyIsImFjdGl2ZSIsImhhc1NrZXRjaEZlYXR1cmVzIiwiQm9vbGVhbiIsImZlYXR1cmVzIiwibGVuZ3RoIiwiZW5hYmxlU2tldGNoZXMiLCJlbmFibGVEcmF3T25NYXBTa2V0Y2hlcyIsIm9uVG9nZ2xlTWVudVBhbmVsIiwiRFJBV19SRUNUQU5HTEUiLCJvbkNvcHlBbGxHZW9tZXRyeSIsIl9lZGl0b3IkZmVhdHVyZXMyIiwiSlNPTiIsInN0cmluZ2lmeSIsInNob3ciLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiJHNob3ciLCJvbkNsaWNrIiwiRURJVCIsImxhYmVsIiwiaWNvbiIsIm1vZGUiLCJEUkFXX1BPSU5UIiwiRFJBV19MSU5FU1RSSU5HIiwiRFJBV19QT0xZR09OIiwiRnJhZ21lbnQiLCJ0b29sdGlwIiwiZGlzYWJsZWQiLCJpZCIsIm1lc3NhZ2UiLCJlIiwicHJldmVudERlZmF1bHQiLCJoZWlnaHQiLCJkaXNwbGF5TmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tYXAvbWFwLWRyYXctcGFuZWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBjb3B5IGZyb20gJ2NvcHktdG8tY2xpcGJvYXJkJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQge0VESVRPUl9NT0RFU30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtlZGl0b3JGZWF0dXJlc1RvRmVhdHVyZUNvbGxlY3Rpb24sIGdldEFwcGxpY2F0aW9uQ29uZmlnfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7XG4gIENvcHksXG4gIEN1cnNvckNsaWNrLFxuICBEcmF3UG9pbnQsXG4gIERyYXdQb2x5Z29uLFxuICBFeWVTZWVuLFxuICBFeWVVbnNlZW4sXG4gIExheWVycyxcbiAgTGluZVN0cmluZyxcbiAgUG9seWdvbixcbiAgUmVjdGFuZ2xlXG59IGZyb20gJy4uL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQge01hcENvbnRyb2xCdXR0b259IGZyb20gJy4uL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgVG9vbGJhckl0ZW0gZnJvbSAnLi4vY29tbW9uL3Rvb2xiYXItaXRlbSc7XG5pbXBvcnQgTWFwQ29udHJvbFRvb2x0aXBGYWN0b3J5IGZyb20gJy4vbWFwLWNvbnRyb2wtdG9vbHRpcCc7XG5pbXBvcnQgTWFwQ29udHJvbFRvb2xiYXJGYWN0b3J5IGZyb20gJy4vbWFwLWNvbnRyb2wtdG9vbGJhcic7XG5pbXBvcnQge0VkaXRvciwgTWFwQ29udHJvbHN9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtCYXNlUHJvcHN9IGZyb20gJy4uL2NvbW1vbi9pY29ucyc7XG5cbmNvbnN0IFRvb2xiYXJTZXBhcmF0b3IgPSBzdHlsZWQuZGl2YFxuICBoZWlnaHQ6IDFweDtcbiAgbWFyZ2luOiA0cHggMTJweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wYW5lbEhlYWRlckljb259O1xuICBvcGFjaXR5OiAwLjI7XG5gO1xuXG5jb25zdCBEcmF3Q29udHJvbHMgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLmNvbnZlcnQtdG8tbGF5ZXIgLnRvb2xiYXItaXRlbV9fdGl0bGUge1xuICAgIGZsZXg6IDE7XG4gICAgbWluLXdpZHRoOiAwO1xuICAgIHdoaXRlLXNwYWNlOiBwcmU7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI1O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgZm9udC1zaXplOiAxMXB4O1xuICB9XG5gO1xuXG5NYXBEcmF3UGFuZWxGYWN0b3J5LmRlcHMgPSBbTWFwQ29udHJvbFRvb2x0aXBGYWN0b3J5LCBNYXBDb250cm9sVG9vbGJhckZhY3RvcnldO1xuXG5leHBvcnQgdHlwZSBNYXBEcmF3UGFuZWxQcm9wcyA9IHtcbiAgZWRpdG9yOiBFZGl0b3I7XG4gIG1hcENvbnRyb2xzOiBNYXBDb250cm9scztcbiAgb25Ub2dnbGVNYXBDb250cm9sOiAoY29udHJvbDogc3RyaW5nKSA9PiB2b2lkO1xuICBvblNldEVkaXRvck1vZGU6IChtb2RlOiBzdHJpbmcpID0+IHZvaWQ7XG4gIG9uVG9nZ2xlRWRpdG9yVmlzaWJpbGl0eTogKCkgPT4gdm9pZDtcbiAgb25Db252ZXJ0RWRpdG9yRmVhdHVyZXNUb0xheWVyPzogKCkgPT4gdm9pZDtcbiAgYWN0aW9uSWNvbnM6IHtbaWQ6IHN0cmluZ106IFJlYWN0LkNvbXBvbmVudFR5cGU8UGFydGlhbDxCYXNlUHJvcHM+Pn07XG59O1xuXG5mdW5jdGlvbiBNYXBEcmF3UGFuZWxGYWN0b3J5KFxuICBNYXBDb250cm9sVG9vbHRpcDogUmV0dXJuVHlwZTx0eXBlb2YgTWFwQ29udHJvbFRvb2x0aXBGYWN0b3J5PixcbiAgTWFwQ29udHJvbFRvb2xiYXI6IFJldHVyblR5cGU8dHlwZW9mIE1hcENvbnRyb2xUb29sYmFyRmFjdG9yeT5cbikge1xuICBjb25zdCBkZWZhdWx0QWN0aW9uSWNvbnMgPSB7XG4gICAgdmlzaWJsZTogRXllU2VlbixcbiAgICBoaWRkZW46IEV5ZVVuc2VlbixcbiAgICBwb2x5Z29uOiBEcmF3UG9seWdvbixcbiAgICBjdXJzb3I6IEN1cnNvckNsaWNrLFxuICAgIGlubmVyUG9seWdvbjogUG9seWdvbixcbiAgICByZWN0YW5nbGU6IFJlY3RhbmdsZSxcbiAgICBwb2ludDogRHJhd1BvaW50LFxuICAgIGxpbmU6IExpbmVTdHJpbmcsXG4gICAgY29weTogQ29weSxcbiAgICBsYXllcnM6IExheWVyc1xuICB9O1xuXG4gIGNvbnN0IE1hcERyYXdQYW5lbDogUmVhY3QuRkM8TWFwRHJhd1BhbmVsUHJvcHM+ID0gUmVhY3QubWVtbyhcbiAgICAoe1xuICAgICAgZWRpdG9yLFxuICAgICAgbWFwQ29udHJvbHMsXG4gICAgICBvblRvZ2dsZU1hcENvbnRyb2wsXG4gICAgICBvblNldEVkaXRvck1vZGUsXG4gICAgICBvbkNvbnZlcnRFZGl0b3JGZWF0dXJlc1RvTGF5ZXIsXG4gICAgICBhY3Rpb25JY29ucyA9IGRlZmF1bHRBY3Rpb25JY29uc1xuICAgIH0pID0+IHtcbiAgICAgIGNvbnN0IGlzQWN0aXZlID0gbWFwQ29udHJvbHM/Lm1hcERyYXc/LmFjdGl2ZTtcbiAgICAgIGNvbnN0IGhhc1NrZXRjaEZlYXR1cmVzID0gQm9vbGVhbihlZGl0b3I/LmZlYXR1cmVzPy5sZW5ndGgpO1xuICAgICAgY29uc3QgZW5hYmxlU2tldGNoZXMgPSBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmVuYWJsZURyYXdPbk1hcFNrZXRjaGVzO1xuICAgICAgY29uc3Qgb25Ub2dnbGVNZW51UGFuZWwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIGlmICghaXNBY3RpdmUpIHtcbiAgICAgICAgICBvblNldEVkaXRvck1vZGUoRURJVE9SX01PREVTLkRSQVdfUkVDVEFOR0xFKTtcbiAgICAgICAgfVxuICAgICAgICBvblRvZ2dsZU1hcENvbnRyb2woJ21hcERyYXcnKTtcbiAgICAgIH0sIFtpc0FjdGl2ZSwgb25Ub2dnbGVNYXBDb250cm9sLCBvblNldEVkaXRvck1vZGVdKTtcbiAgICAgIGNvbnN0IG9uQ29weUFsbEdlb21ldHJ5ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICBpZiAoIWVkaXRvcj8uZmVhdHVyZXM/Lmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb3B5KEpTT04uc3RyaW5naWZ5KGVkaXRvckZlYXR1cmVzVG9GZWF0dXJlQ29sbGVjdGlvbihlZGl0b3IuZmVhdHVyZXMpKSk7XG4gICAgICB9LCBbZWRpdG9yPy5mZWF0dXJlc10pO1xuICAgICAgaWYgKCFtYXBDb250cm9scz8ubWFwRHJhdz8uc2hvdykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxEcmF3Q29udHJvbHMgY2xhc3NOYW1lPVwibWFwLWRyYXctY29udHJvbHNcIj5cbiAgICAgICAgICB7aXNBY3RpdmUgPyAoXG4gICAgICAgICAgICA8TWFwQ29udHJvbFRvb2xiYXIgJHNob3c9e2lzQWN0aXZlfT5cbiAgICAgICAgICAgICAgPFRvb2xiYXJJdGVtXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZWRpdC1mZWF0dXJlXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblNldEVkaXRvck1vZGUoRURJVE9SX01PREVTLkVESVQpfVxuICAgICAgICAgICAgICAgIGxhYmVsPVwidG9vbGJhci5zZWxlY3RcIlxuICAgICAgICAgICAgICAgIGljb249e2FjdGlvbkljb25zLmN1cnNvcn1cbiAgICAgICAgICAgICAgICBhY3RpdmU9e2VkaXRvci5tb2RlID09PSBFRElUT1JfTU9ERVMuRURJVH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAge2VuYWJsZVNrZXRjaGVzID8gKFxuICAgICAgICAgICAgICAgIDxUb29sYmFySXRlbVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZHJhdy1wb2ludFwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblNldEVkaXRvck1vZGUoRURJVE9SX01PREVTLkRSQVdfUE9JTlQpfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9XCJ0b29sYmFyLnBvaW50XCJcbiAgICAgICAgICAgICAgICAgIGljb249e2FjdGlvbkljb25zLnBvaW50fVxuICAgICAgICAgICAgICAgICAgYWN0aXZlPXtlZGl0b3IubW9kZSA9PT0gRURJVE9SX01PREVTLkRSQVdfUE9JTlR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIHtlbmFibGVTa2V0Y2hlcyA/IChcbiAgICAgICAgICAgICAgICA8VG9vbGJhckl0ZW1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImRyYXctbGluZVwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblNldEVkaXRvck1vZGUoRURJVE9SX01PREVTLkRSQVdfTElORVNUUklORyl9XG4gICAgICAgICAgICAgICAgICBsYWJlbD1cInRvb2xiYXIubGluZVwiXG4gICAgICAgICAgICAgICAgICBpY29uPXthY3Rpb25JY29ucy5saW5lfVxuICAgICAgICAgICAgICAgICAgYWN0aXZlPXtlZGl0b3IubW9kZSA9PT0gRURJVE9SX01PREVTLkRSQVdfTElORVNUUklOR31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPFRvb2xiYXJJdGVtXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZHJhdy1mZWF0dXJlXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblNldEVkaXRvck1vZGUoRURJVE9SX01PREVTLkRSQVdfUE9MWUdPTil9XG4gICAgICAgICAgICAgICAgbGFiZWw9XCJ0b29sYmFyLnBvbHlnb25cIlxuICAgICAgICAgICAgICAgIGljb249e2FjdGlvbkljb25zLmlubmVyUG9seWdvbn1cbiAgICAgICAgICAgICAgICBhY3RpdmU9e2VkaXRvci5tb2RlID09PSBFRElUT1JfTU9ERVMuRFJBV19QT0xZR09OfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8VG9vbGJhckl0ZW1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJkcmF3LXJlY3RhbmdsZVwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25TZXRFZGl0b3JNb2RlKEVESVRPUl9NT0RFUy5EUkFXX1JFQ1RBTkdMRSl9XG4gICAgICAgICAgICAgICAgbGFiZWw9XCJ0b29sYmFyLnJlY3RhbmdsZVwiXG4gICAgICAgICAgICAgICAgaWNvbj17YWN0aW9uSWNvbnMucmVjdGFuZ2xlfVxuICAgICAgICAgICAgICAgIGFjdGl2ZT17ZWRpdG9yLm1vZGUgPT09IEVESVRPUl9NT0RFUy5EUkFXX1JFQ1RBTkdMRX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAge2VuYWJsZVNrZXRjaGVzID8gKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICA8VG9vbGJhclNlcGFyYXRvciAvPlxuICAgICAgICAgICAgICAgICAgPFRvb2xiYXJJdGVtXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImNvcHktYWxsLWdlb21ldHJ5XCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17b25Db3B5QWxsR2VvbWV0cnl9XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPVwidG9vbGJhci5jb3B5QWxsXCJcbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcD1cInRvb2x0aXAuY29weUFsbFNrZXRjaGVzXCJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj17YWN0aW9uSWNvbnMuY29weX1cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFoYXNTa2V0Y2hGZWF0dXJlc31cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8VG9vbGJhckl0ZW1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiY29udmVydC10by1sYXllclwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uQ29udmVydEVkaXRvckZlYXR1cmVzVG9MYXllcj8uKCl9XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPVwidG9vbGJhci5jb252ZXJ0VG9MYXllclwiXG4gICAgICAgICAgICAgICAgICAgIHRvb2x0aXA9XCJ0b29sdGlwLmNvbnZlcnRUb0xheWVyXCJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj17YWN0aW9uSWNvbnMubGF5ZXJzfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17IWhhc1NrZXRjaEZlYXR1cmVzfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8L01hcENvbnRyb2xUb29sYmFyPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDxNYXBDb250cm9sVG9vbHRpcCBpZD1cIm1hcC1kcmF3XCIgbWVzc2FnZT1cInRvb2x0aXAuRHJhd09uTWFwXCI+XG4gICAgICAgICAgICA8TWFwQ29udHJvbEJ1dHRvblxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoJ21hcC1jb250cm9sLWJ1dHRvbicsICdtYXAtZHJhdycsIHtpc0FjdGl2ZX0pfVxuICAgICAgICAgICAgICBvbkNsaWNrPXtlID0+IHtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgb25Ub2dnbGVNZW51UGFuZWwoKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgYWN0aXZlPXtpc0FjdGl2ZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGFjdGlvbkljb25zLnBvbHlnb24gaGVpZ2h0PVwiMThweFwiIC8+XG4gICAgICAgICAgICA8L01hcENvbnRyb2xCdXR0b24+XG4gICAgICAgICAgPC9NYXBDb250cm9sVG9vbHRpcD5cbiAgICAgICAgPC9EcmF3Q29udHJvbHM+XG4gICAgICApO1xuICAgIH1cbiAgKTtcblxuICBNYXBEcmF3UGFuZWwuZGlzcGxheU5hbWUgPSAnTWFwRHJhd1BhbmVsJztcbiAgcmV0dXJuIE1hcERyYXdQYW5lbDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgTWFwRHJhd1BhbmVsRmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNB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
@@ -0,0 +1,55 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // Copyright contributors to the kepler.gl project
3
+
4
+ import React, { useCallback } from 'react';
5
+ import classnames from 'classnames';
6
+ import { THEME } from '@kepler.gl/constants';
7
+ import { getApplicationConfig } from '@kepler.gl/utils';
8
+ import { Moon, Sun } from '../common/icons';
9
+ import { MapControlButton } from '../common/styled-components';
10
+ import MapControlTooltipFactory from './map-control-tooltip';
11
+ ThemeToggleButtonFactory.deps = [MapControlTooltipFactory];
12
+ function ThemeToggleButtonFactory(MapControlTooltip) {
13
+ var defaultActionIcons = {
14
+ sun: Sun,
15
+ moon: Moon
16
+ };
17
+ var ThemeToggleButton = function ThemeToggleButton(_ref) {
18
+ var _mapControls$mapTheme;
19
+ var _ref$themeName = _ref.themeName,
20
+ themeName = _ref$themeName === void 0 ? THEME.dark : _ref$themeName,
21
+ onSetTheme = _ref.onSetTheme,
22
+ mapControls = _ref.mapControls,
23
+ _ref$actionIcons = _ref.actionIcons,
24
+ actionIcons = _ref$actionIcons === void 0 ? defaultActionIcons : _ref$actionIcons;
25
+ var isLight = themeName === THEME.light;
26
+ var onClick = useCallback(function (event) {
27
+ event.preventDefault();
28
+ onSetTheme(isLight ? THEME.dark : THEME.light);
29
+ }, [isLight, onSetTheme]);
30
+ if (!getApplicationConfig().enableThemeToggle) {
31
+ return null;
32
+ }
33
+ var showControl = mapControls === null || mapControls === void 0 || (_mapControls$mapTheme = mapControls.mapTheme) === null || _mapControls$mapTheme === void 0 ? void 0 : _mapControls$mapTheme.show;
34
+ if (!showControl) {
35
+ return null;
36
+ }
37
+ var Icon = isLight ? actionIcons.moon : actionIcons.sun;
38
+ return /*#__PURE__*/React.createElement(MapControlTooltip, {
39
+ id: "toggle-theme",
40
+ message: isLight ? 'tooltip.switchToDarkTheme' : 'tooltip.switchToLightTheme'
41
+ }, /*#__PURE__*/React.createElement(MapControlButton, {
42
+ className: classnames('map-control-button', 'toggle-theme', {
43
+ light: isLight
44
+ }),
45
+ onClick: onClick,
46
+ active: isLight
47
+ }, /*#__PURE__*/React.createElement(Icon, {
48
+ height: "18px"
49
+ })));
50
+ };
51
+ ThemeToggleButton.displayName = 'ThemeToggleButton';
52
+ return /*#__PURE__*/React.memo(ThemeToggleButton);
53
+ }
54
+ export default ThemeToggleButtonFactory;
55
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNhbGxiYWNrIiwiY2xhc3NuYW1lcyIsIlRIRU1FIiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJNb29uIiwiU3VuIiwiTWFwQ29udHJvbEJ1dHRvbiIsIk1hcENvbnRyb2xUb29sdGlwRmFjdG9yeSIsIlRoZW1lVG9nZ2xlQnV0dG9uRmFjdG9yeSIsImRlcHMiLCJNYXBDb250cm9sVG9vbHRpcCIsImRlZmF1bHRBY3Rpb25JY29ucyIsInN1biIsIm1vb24iLCJUaGVtZVRvZ2dsZUJ1dHRvbiIsIl9yZWYiLCJfbWFwQ29udHJvbHMkbWFwVGhlbWUiLCJfcmVmJHRoZW1lTmFtZSIsInRoZW1lTmFtZSIsImRhcmsiLCJvblNldFRoZW1lIiwibWFwQ29udHJvbHMiLCJfcmVmJGFjdGlvbkljb25zIiwiYWN0aW9uSWNvbnMiLCJpc0xpZ2h0IiwibGlnaHQiLCJvbkNsaWNrIiwiZXZlbnQiLCJwcmV2ZW50RGVmYXVsdCIsImVuYWJsZVRoZW1lVG9nZ2xlIiwic2hvd0NvbnRyb2wiLCJtYXBUaGVtZSIsInNob3ciLCJJY29uIiwiY3JlYXRlRWxlbWVudCIsImlkIiwibWVzc2FnZSIsImNsYXNzTmFtZSIsImFjdGl2ZSIsImhlaWdodCIsImRpc3BsYXlOYW1lIiwibWVtbyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tYXAvdGhlbWUtdG9nZ2xlLWJ1dHRvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50VHlwZSwgdXNlQ2FsbGJhY2t9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuXG5pbXBvcnQge1RIRU1FfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge01hcENvbnRyb2xzfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7Z2V0QXBwbGljYXRpb25Db25maWd9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuXG5pbXBvcnQge01vb24sIFN1bn0gZnJvbSAnLi4vY29tbW9uL2ljb25zJztcbmltcG9ydCB7TWFwQ29udHJvbEJ1dHRvbn0gZnJvbSAnLi4vY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBNYXBDb250cm9sVG9vbHRpcEZhY3RvcnkgZnJvbSAnLi9tYXAtY29udHJvbC10b29sdGlwJztcblxuaW50ZXJmYWNlIFRoZW1lVG9nZ2xlQnV0dG9uSWNvbnMge1xuICBzdW46IENvbXBvbmVudFR5cGU8YW55PjtcbiAgbW9vbjogQ29tcG9uZW50VHlwZTxhbnk+O1xufVxuXG5leHBvcnQgdHlwZSBUaGVtZVRvZ2dsZUJ1dHRvblByb3BzID0ge1xuICB0aGVtZU5hbWU/OiBzdHJpbmc7XG4gIG9uU2V0VGhlbWU6ICh0aGVtZTogc3RyaW5nKSA9PiB2b2lkO1xuICBtYXBDb250cm9sczogTWFwQ29udHJvbHM7XG4gIGFjdGlvbkljb25zPzogVGhlbWVUb2dnbGVCdXR0b25JY29ucztcbn07XG5cblRoZW1lVG9nZ2xlQnV0dG9uRmFjdG9yeS5kZXBzID0gW01hcENvbnRyb2xUb29sdGlwRmFjdG9yeV07XG5cbmZ1bmN0aW9uIFRoZW1lVG9nZ2xlQnV0dG9uRmFjdG9yeShcbiAgTWFwQ29udHJvbFRvb2x0aXA6IFJldHVyblR5cGU8dHlwZW9mIE1hcENvbnRyb2xUb29sdGlwRmFjdG9yeT5cbikge1xuICBjb25zdCBkZWZhdWx0QWN0aW9uSWNvbnMgPSB7XG4gICAgc3VuOiBTdW4sXG4gICAgbW9vbjogTW9vblxuICB9O1xuXG4gIGNvbnN0IFRoZW1lVG9nZ2xlQnV0dG9uOiBSZWFjdC5GQzxUaGVtZVRvZ2dsZUJ1dHRvblByb3BzPiA9ICh7XG4gICAgdGhlbWVOYW1lID0gVEhFTUUuZGFyayxcbiAgICBvblNldFRoZW1lLFxuICAgIG1hcENvbnRyb2xzLFxuICAgIGFjdGlvbkljb25zID0gZGVmYXVsdEFjdGlvbkljb25zXG4gIH0pID0+IHtcbiAgICBjb25zdCBpc0xpZ2h0ID0gdGhlbWVOYW1lID09PSBUSEVNRS5saWdodDtcblxuICAgIGNvbnN0IG9uQ2xpY2sgPSB1c2VDYWxsYmFjayhcbiAgICAgIGV2ZW50ID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgb25TZXRUaGVtZShpc0xpZ2h0ID8gVEhFTUUuZGFyayA6IFRIRU1FLmxpZ2h0KTtcbiAgICAgIH0sXG4gICAgICBbaXNMaWdodCwgb25TZXRUaGVtZV1cbiAgICApO1xuXG4gICAgaWYgKCFnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmVuYWJsZVRoZW1lVG9nZ2xlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBzaG93Q29udHJvbCA9IG1hcENvbnRyb2xzPy5tYXBUaGVtZT8uc2hvdztcbiAgICBpZiAoIXNob3dDb250cm9sKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBJY29uID0gaXNMaWdodCA/IGFjdGlvbkljb25zLm1vb24gOiBhY3Rpb25JY29ucy5zdW47XG5cbiAgICByZXR1cm4gKFxuICAgICAgPE1hcENvbnRyb2xUb29sdGlwXG4gICAgICAgIGlkPVwidG9nZ2xlLXRoZW1lXCJcbiAgICAgICAgbWVzc2FnZT17aXNMaWdodCA/ICd0b29sdGlwLnN3aXRjaFRvRGFya1RoZW1lJyA6ICd0b29sdGlwLnN3aXRjaFRvTGlnaHRUaGVtZSd9XG4gICAgICA+XG4gICAgICAgIDxNYXBDb250cm9sQnV0dG9uXG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdtYXAtY29udHJvbC1idXR0b24nLCAndG9nZ2xlLXRoZW1lJywge2xpZ2h0OiBpc0xpZ2h0fSl9XG4gICAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgICAgICBhY3RpdmU9e2lzTGlnaHR9XG4gICAgICAgID5cbiAgICAgICAgICA8SWNvbiBoZWlnaHQ9XCIxOHB4XCIgLz5cbiAgICAgICAgPC9NYXBDb250cm9sQnV0dG9uPlxuICAgICAgPC9NYXBDb250cm9sVG9vbHRpcD5cbiAgICApO1xuICB9O1xuXG4gIFRoZW1lVG9nZ2xlQnV0dG9uLmRpc3BsYXlOYW1lID0gJ1RoZW1lVG9nZ2xlQnV0dG9uJztcbiAgcmV0dXJuIFJlYWN0Lm1lbW8oVGhlbWVUb2dnbGVCdXR0b24pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBUaGVtZVRvZ2dsZUJ1dHRvbkZhY3Rvcnk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUEsT0FBT0EsS0FBSyxJQUFrQkMsV0FBVyxRQUFPLE9BQU87QUFDdkQsT0FBT0MsVUFBVSxNQUFNLFlBQVk7QUFFbkMsU0FBUUMsS0FBSyxRQUFPLHNCQUFzQjtBQUUxQyxTQUFRQyxvQkFBb0IsUUFBTyxrQkFBa0I7QUFFckQsU0FBUUMsSUFBSSxFQUFFQyxHQUFHLFFBQU8saUJBQWlCO0FBQ3pDLFNBQVFDLGdCQUFnQixRQUFPLDZCQUE2QjtBQUM1RCxPQUFPQyx3QkFBd0IsTUFBTSx1QkFBdUI7QUFjNURDLHdCQUF3QixDQUFDQyxJQUFJLEdBQUcsQ0FBQ0Ysd0JBQXdCLENBQUM7QUFFMUQsU0FBU0Msd0JBQXdCQSxDQUMvQkUsaUJBQThELEVBQzlEO0VBQ0EsSUFBTUMsa0JBQWtCLEdBQUc7SUFDekJDLEdBQUcsRUFBRVAsR0FBRztJQUNSUSxJQUFJLEVBQUVUO0VBQ1IsQ0FBQztFQUVELElBQU1VLGlCQUFtRCxHQUFHLFNBQXREQSxpQkFBbURBLENBQUFDLElBQUEsRUFLbkQ7SUFBQSxJQUFBQyxxQkFBQTtJQUFBLElBQUFDLGNBQUEsR0FBQUYsSUFBQSxDQUpKRyxTQUFTO01BQVRBLFNBQVMsR0FBQUQsY0FBQSxjQUFHZixLQUFLLENBQUNpQixJQUFJLEdBQUFGLGNBQUE7TUFDdEJHLFVBQVUsR0FBQUwsSUFBQSxDQUFWSyxVQUFVO01BQ1ZDLFdBQVcsR0FBQU4sSUFBQSxDQUFYTSxXQUFXO01BQUFDLGdCQUFBLEdBQUFQLElBQUEsQ0FDWFEsV0FBVztNQUFYQSxXQUFXLEdBQUFELGdCQUFBLGNBQUdYLGtCQUFrQixHQUFBVyxnQkFBQTtJQUVoQyxJQUFNRSxPQUFPLEdBQUdOLFNBQVMsS0FBS2hCLEtBQUssQ0FBQ3VCLEtBQUs7SUFFekMsSUFBTUMsT0FBTyxHQUFHMUIsV0FBVyxDQUN6QixVQUFBMkIsS0FBSyxFQUFJO01BQ1BBLEtBQUssQ0FBQ0MsY0FBYyxDQUFDLENBQUM7TUFDdEJSLFVBQVUsQ0FBQ0ksT0FBTyxHQUFHdEIsS0FBSyxDQUFDaUIsSUFBSSxHQUFHakIsS0FBSyxDQUFDdUIsS0FBSyxDQUFDO0lBQ2hELENBQUMsRUFDRCxDQUFDRCxPQUFPLEVBQUVKLFVBQVUsQ0FDdEIsQ0FBQztJQUVELElBQUksQ0FBQ2pCLG9CQUFvQixDQUFDLENBQUMsQ0FBQzBCLGlCQUFpQixFQUFFO01BQzdDLE9BQU8sSUFBSTtJQUNiO0lBRUEsSUFBTUMsV0FBVyxHQUFHVCxXQUFXLGFBQVhBLFdBQVcsZ0JBQUFMLHFCQUFBLEdBQVhLLFdBQVcsQ0FBRVUsUUFBUSxjQUFBZixxQkFBQSx1QkFBckJBLHFCQUFBLENBQXVCZ0IsSUFBSTtJQUMvQyxJQUFJLENBQUNGLFdBQVcsRUFBRTtNQUNoQixPQUFPLElBQUk7SUFDYjtJQUVBLElBQU1HLElBQUksR0FBR1QsT0FBTyxHQUFHRCxXQUFXLENBQUNWLElBQUksR0FBR1UsV0FBVyxDQUFDWCxHQUFHO0lBRXpELG9CQUNFYixLQUFBLENBQUFtQyxhQUFBLENBQUN4QixpQkFBaUI7TUFDaEJ5QixFQUFFLEVBQUMsY0FBYztNQUNqQkMsT0FBTyxFQUFFWixPQUFPLEdBQUcsMkJBQTJCLEdBQUc7SUFBNkIsZ0JBRTlFekIsS0FBQSxDQUFBbUMsYUFBQSxDQUFDNUIsZ0JBQWdCO01BQ2YrQixTQUFTLEVBQUVwQyxVQUFVLENBQUMsb0JBQW9CLEVBQUUsY0FBYyxFQUFFO1FBQUN3QixLQUFLLEVBQUVEO01BQU8sQ0FBQyxDQUFFO01BQzlFRSxPQUFPLEVBQUVBLE9BQVE7TUFDakJZLE1BQU0sRUFBRWQ7SUFBUSxnQkFFaEJ6QixLQUFBLENBQUFtQyxhQUFBLENBQUNELElBQUk7TUFBQ00sTUFBTSxFQUFDO0lBQU0sQ0FBRSxDQUNMLENBQ0QsQ0FBQztFQUV4QixDQUFDO0VBRUR6QixpQkFBaUIsQ0FBQzBCLFdBQVcsR0FBRyxtQkFBbUI7RUFDbkQsb0JBQU96QyxLQUFLLENBQUMwQyxJQUFJLENBQUMzQixpQkFBaUIsQ0FBQztBQUN0QztBQUVBLGVBQWVOLHdCQUF3QiIsImlnbm9yZUxpc3QiOltdfQ==