@kepler.gl/deckgl-layers 3.3.0-alpha.5 → 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 (189) hide show
  1. package/dist/cjs/3d-building-layer/3d-building-layer.js +66 -0
  2. package/dist/cjs/3d-building-layer/3d-building-utils.js +166 -0
  3. package/dist/cjs/3d-building-layer/types.js +6 -0
  4. package/dist/cjs/cluster-layer/cluster-layer.js +292 -0
  5. package/dist/cjs/column-layer/enhanced-column-layer.js +160 -0
  6. package/dist/{deckgl-extensions → cjs/deckgl-extensions}/filter-arrow-layer.js +1 -1
  7. package/dist/cjs/deckgl-extensions/filter-shader-module.js +26 -0
  8. package/dist/cjs/globe/atmosphere-layer.js +341 -0
  9. package/dist/cjs/globe/enhanced-multi-icon-layer.js +63 -0
  10. package/dist/cjs/globe/globe-depth-disk-layer.js +145 -0
  11. package/dist/cjs/globe/globe-layers.js +574 -0
  12. package/dist/cjs/globe/globe-stars-layer.js +99 -0
  13. package/dist/cjs/globe/globe-stars-layer.spec.js +42 -0
  14. package/dist/cjs/globe/globe-view.js +404 -0
  15. package/dist/{globe → cjs/globe}/index.js +19 -1
  16. package/dist/cjs/globe/mvt-label-layer.js +190 -0
  17. package/dist/cjs/grid-layer/enhanced-cpu-grid-layer.js +116 -0
  18. package/dist/cjs/hexagon-layer/enhanced-hexagon-layer.js +134 -0
  19. package/dist/{index.js → cjs/index.js} +1 -1
  20. package/dist/cjs/layer-utils/aggregation-utils.js +181 -0
  21. package/dist/cjs/layer-utils/cluster-utils.js +93 -0
  22. package/dist/cjs/layer-utils/cpu-aggregator.js +798 -0
  23. package/dist/cjs/layer-utils/globe-cell-utils.js +173 -0
  24. package/dist/cjs/layer-utils/shader-utils.js +38 -0
  25. package/dist/cjs/line-layer/line-layer.js +95 -0
  26. package/dist/cjs/raster/images.js +271 -0
  27. package/dist/cjs/raster/pipeline-validation-patch.js +101 -0
  28. package/dist/cjs/raster/raster-layer/raster-layer-shaders.js +163 -0
  29. package/dist/cjs/raster/raster-layer/raster-layer-webgl1.fs.js +10 -0
  30. package/dist/cjs/raster/raster-layer/raster-layer-webgl1.vs.js +10 -0
  31. package/dist/cjs/raster/raster-layer/raster-layer-webgl2.fs.js +10 -0
  32. package/dist/cjs/raster/raster-layer/raster-layer-webgl2.vs.js +10 -0
  33. package/dist/cjs/raster/raster-layer/raster-layer.js +287 -0
  34. package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-shaders.js +38 -0
  35. package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl1.fs.js +10 -0
  36. package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl1.vs.js +10 -0
  37. package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl2.fs.js +10 -0
  38. package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +10 -0
  39. package/dist/cjs/raster/raster-mesh-layer/raster-mesh-layer.js +321 -0
  40. package/dist/cjs/raster/raster-processing-uniforms.js +124 -0
  41. package/dist/cjs/raster/types.js +6 -0
  42. package/dist/cjs/raster/util.js +139 -0
  43. package/dist/cjs/raster/webgl/color/colormap.js +45 -0
  44. package/dist/cjs/raster/webgl/color/filter.js +58 -0
  45. package/dist/cjs/raster/webgl/color/gamma-contrast.js +68 -0
  46. package/dist/cjs/raster/webgl/color/linear-rescale.js +35 -0
  47. package/dist/cjs/raster/webgl/color/saturation.js +42 -0
  48. package/dist/cjs/raster/webgl/color/sigmoidal-contrast.js +68 -0
  49. package/dist/{raster → cjs/raster}/webgl/index.js +1 -1
  50. package/dist/cjs/raster/webgl/pansharpen/pansharpen-brovey.js +46 -0
  51. package/dist/cjs/raster/webgl/spectral-indices/evi.js +26 -0
  52. package/dist/cjs/raster/webgl/spectral-indices/msavi.js +25 -0
  53. package/dist/cjs/raster/webgl/spectral-indices/normalized-difference.js +19 -0
  54. package/dist/cjs/raster/webgl/spectral-indices/savi.js +21 -0
  55. package/dist/cjs/raster/webgl/texture/combine-bands.js +65 -0
  56. package/dist/cjs/raster/webgl/texture/mask.js +50 -0
  57. package/dist/cjs/raster/webgl/texture/reorder-bands.js +72 -0
  58. package/dist/cjs/raster/webgl/texture/rgba-image.js +34 -0
  59. package/dist/cjs/raster/webgl/types.js +6 -0
  60. package/dist/cjs/svg-icon-layer/scatterplot-icon-layer.js +88 -0
  61. package/dist/cjs/svg-icon-layer/svg-icon-layer.js +104 -0
  62. package/dist/cjs/wms/wms-layer.js +624 -0
  63. package/dist/esm/3d-building-layer/3d-building-layer.js +62 -0
  64. package/dist/esm/3d-building-layer/3d-building-utils.js +157 -0
  65. package/dist/esm/3d-building-layer/types.js +3 -0
  66. package/dist/esm/cluster-layer/cluster-layer.js +286 -0
  67. package/dist/esm/column-layer/enhanced-column-layer.js +156 -0
  68. package/dist/esm/deckgl-extensions/filter-arrow-layer.js +64 -0
  69. package/dist/esm/deckgl-extensions/filter-shader-module.js +20 -0
  70. package/dist/esm/globe/atmosphere-layer.js +335 -0
  71. package/dist/esm/globe/enhanced-multi-icon-layer.js +60 -0
  72. package/dist/esm/globe/globe-depth-disk-layer.js +140 -0
  73. package/dist/esm/globe/globe-layers.js +566 -0
  74. package/dist/esm/globe/globe-stars-layer.js +92 -0
  75. package/dist/esm/globe/globe-stars-layer.spec.js +40 -0
  76. package/dist/esm/globe/globe-view.js +398 -0
  77. package/dist/esm/globe/index.js +26 -0
  78. package/dist/esm/globe/mvt-label-layer.js +187 -0
  79. package/dist/esm/grid-layer/enhanced-cpu-grid-layer.js +112 -0
  80. package/dist/esm/hexagon-layer/enhanced-hexagon-layer.js +130 -0
  81. package/dist/esm/index.js +22 -0
  82. package/dist/esm/layer-utils/aggregation-utils.js +172 -0
  83. package/dist/esm/layer-utils/cluster-utils.js +86 -0
  84. package/dist/esm/layer-utils/cpu-aggregator.js +788 -0
  85. package/dist/esm/layer-utils/globe-cell-utils.js +167 -0
  86. package/dist/esm/layer-utils/shader-utils.js +32 -0
  87. package/dist/esm/line-layer/line-layer.js +91 -0
  88. package/dist/esm/raster/images.js +267 -0
  89. package/dist/esm/raster/pipeline-validation-patch.js +94 -0
  90. package/dist/esm/raster/raster-layer/raster-layer-shaders.js +153 -0
  91. package/dist/esm/raster/raster-layer/raster-layer-webgl1.fs.js +5 -0
  92. package/dist/esm/raster/raster-layer/raster-layer-webgl1.vs.js +5 -0
  93. package/dist/esm/raster/raster-layer/raster-layer-webgl2.fs.js +5 -0
  94. package/dist/esm/raster/raster-layer/raster-layer-webgl2.vs.js +5 -0
  95. package/dist/esm/raster/raster-layer/raster-layer.js +283 -0
  96. package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-shaders.js +30 -0
  97. package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl1.fs.js +5 -0
  98. package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl1.vs.js +5 -0
  99. package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl2.fs.js +5 -0
  100. package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +5 -0
  101. package/dist/esm/raster/raster-mesh-layer/raster-mesh-layer.js +318 -0
  102. package/dist/esm/raster/raster-processing-uniforms.js +118 -0
  103. package/dist/esm/raster/types.js +3 -0
  104. package/dist/esm/raster/util.js +134 -0
  105. package/dist/esm/raster/webgl/color/colormap.js +39 -0
  106. package/dist/esm/raster/webgl/color/filter.js +52 -0
  107. package/dist/esm/raster/webgl/color/gamma-contrast.js +62 -0
  108. package/dist/esm/raster/webgl/color/linear-rescale.js +29 -0
  109. package/dist/esm/raster/webgl/color/saturation.js +36 -0
  110. package/dist/esm/raster/webgl/color/sigmoidal-contrast.js +62 -0
  111. package/dist/esm/raster/webgl/index.js +26 -0
  112. package/dist/esm/raster/webgl/pansharpen/pansharpen-brovey.js +40 -0
  113. package/dist/esm/raster/webgl/spectral-indices/evi.js +20 -0
  114. package/dist/esm/raster/webgl/spectral-indices/msavi.js +19 -0
  115. package/dist/esm/raster/webgl/spectral-indices/normalized-difference.js +13 -0
  116. package/dist/esm/raster/webgl/spectral-indices/savi.js +15 -0
  117. package/dist/esm/raster/webgl/texture/combine-bands.js +58 -0
  118. package/dist/esm/raster/webgl/texture/mask.js +44 -0
  119. package/dist/esm/raster/webgl/texture/reorder-bands.js +65 -0
  120. package/dist/esm/raster/webgl/texture/rgba-image.js +28 -0
  121. package/dist/esm/raster/webgl/types.js +3 -0
  122. package/dist/esm/svg-icon-layer/scatterplot-icon-layer.js +84 -0
  123. package/dist/esm/svg-icon-layer/svg-icon-layer.js +101 -0
  124. package/dist/esm/wms/wms-layer.js +619 -0
  125. package/dist/globe/atmosphere-layer.d.ts +22 -1
  126. package/dist/globe/globe-stars-layer.d.ts +5 -0
  127. package/dist/globe/globe-stars-layer.spec.d.ts +1 -0
  128. package/dist/globe/index.d.ts +2 -2
  129. package/dist/wms/wms-layer.d.ts +8 -0
  130. package/package.json +19 -10
  131. package/dist/3d-building-layer/3d-building-layer.js +0 -66
  132. package/dist/3d-building-layer/3d-building-utils.js +0 -166
  133. package/dist/3d-building-layer/types.js +0 -6
  134. package/dist/cluster-layer/cluster-layer.js +0 -292
  135. package/dist/column-layer/enhanced-column-layer.js +0 -160
  136. package/dist/deckgl-extensions/filter-shader-module.js +0 -26
  137. package/dist/globe/atmosphere-layer.js +0 -220
  138. package/dist/globe/enhanced-multi-icon-layer.js +0 -63
  139. package/dist/globe/globe-depth-disk-layer.js +0 -145
  140. package/dist/globe/globe-layers.js +0 -569
  141. package/dist/globe/globe-stars-layer.js +0 -69
  142. package/dist/globe/globe-view.js +0 -404
  143. package/dist/globe/mvt-label-layer.js +0 -190
  144. package/dist/grid-layer/enhanced-cpu-grid-layer.js +0 -116
  145. package/dist/hexagon-layer/enhanced-hexagon-layer.js +0 -134
  146. package/dist/layer-utils/aggregation-utils.js +0 -181
  147. package/dist/layer-utils/cluster-utils.js +0 -93
  148. package/dist/layer-utils/cpu-aggregator.js +0 -798
  149. package/dist/layer-utils/globe-cell-utils.js +0 -173
  150. package/dist/layer-utils/shader-utils.js +0 -38
  151. package/dist/line-layer/line-layer.js +0 -95
  152. package/dist/raster/images.js +0 -271
  153. package/dist/raster/pipeline-validation-patch.js +0 -101
  154. package/dist/raster/raster-layer/raster-layer-shaders.js +0 -163
  155. package/dist/raster/raster-layer/raster-layer-webgl1.fs.js +0 -10
  156. package/dist/raster/raster-layer/raster-layer-webgl1.vs.js +0 -10
  157. package/dist/raster/raster-layer/raster-layer-webgl2.fs.js +0 -10
  158. package/dist/raster/raster-layer/raster-layer-webgl2.vs.js +0 -10
  159. package/dist/raster/raster-layer/raster-layer.js +0 -287
  160. package/dist/raster/raster-mesh-layer/matrix.d.ts +0 -4
  161. package/dist/raster/raster-mesh-layer/matrix.js +0 -18
  162. package/dist/raster/raster-mesh-layer/raster-mesh-layer-shaders.js +0 -38
  163. package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl1.fs.js +0 -10
  164. package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl1.vs.js +0 -10
  165. package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.fs.js +0 -10
  166. package/dist/raster/raster-mesh-layer/raster-mesh-layer-webgl2.vs.js +0 -10
  167. package/dist/raster/raster-mesh-layer/raster-mesh-layer.js +0 -321
  168. package/dist/raster/raster-processing-uniforms.js +0 -124
  169. package/dist/raster/types.js +0 -6
  170. package/dist/raster/util.js +0 -139
  171. package/dist/raster/webgl/color/colormap.js +0 -45
  172. package/dist/raster/webgl/color/filter.js +0 -58
  173. package/dist/raster/webgl/color/gamma-contrast.js +0 -68
  174. package/dist/raster/webgl/color/linear-rescale.js +0 -35
  175. package/dist/raster/webgl/color/saturation.js +0 -42
  176. package/dist/raster/webgl/color/sigmoidal-contrast.js +0 -68
  177. package/dist/raster/webgl/pansharpen/pansharpen-brovey.js +0 -46
  178. package/dist/raster/webgl/spectral-indices/evi.js +0 -26
  179. package/dist/raster/webgl/spectral-indices/msavi.js +0 -25
  180. package/dist/raster/webgl/spectral-indices/normalized-difference.js +0 -19
  181. package/dist/raster/webgl/spectral-indices/savi.js +0 -21
  182. package/dist/raster/webgl/texture/combine-bands.js +0 -65
  183. package/dist/raster/webgl/texture/mask.js +0 -50
  184. package/dist/raster/webgl/texture/reorder-bands.js +0 -72
  185. package/dist/raster/webgl/texture/rgba-image.js +0 -34
  186. package/dist/raster/webgl/types.js +0 -6
  187. package/dist/svg-icon-layer/scatterplot-icon-layer.js +0 -88
  188. package/dist/svg-icon-layer/svg-icon-layer.js +0 -104
  189. package/dist/wms/wms-layer.js +0 -594
@@ -0,0 +1,140 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
3
+ import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
4
+ import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
5
+ import _get from "@babel/runtime/helpers/esm/get";
6
+ import _inherits from "@babel/runtime/helpers/esm/inherits";
7
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
8
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
9
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
10
+ function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
11
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
12
+ function _superPropGet(t, o, e, r) { var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e); return 2 & r && "function" == typeof p ? function (t) { return p.apply(e, t); } : p; }
13
+ // SPDX-License-Identifier: MIT
14
+ // Copyright contributors to the kepler.gl project
15
+
16
+ import { COORDINATE_SYSTEM } from '@deck.gl/core';
17
+ import { SimpleMeshLayer } from '@deck.gl/mesh-layers';
18
+ import { PlaneGeometry } from '@luma.gl/engine';
19
+ import { Vector3 } from '@math.gl/core';
20
+ import { editShader } from '../layer-utils/shader-utils';
21
+ // luma.gl 9's PlaneGeometry ignores `radius`; pass explicit type/xlen/ylen so we
22
+ // get a [-1, 1] quad (a `radius: 1` plane would only span [-0.5, 0.5]).
23
+ var PLANE_GEOMETRY = new PlaneGeometry({
24
+ type: 'x,y',
25
+ xlen: 2,
26
+ ylen: 2
27
+ });
28
+ var DEPTH_DISK_PARAMETERS = {
29
+ // Depth writes only happen with depthTest enabled. The disk is opaque-black-ish
30
+ // and used purely to fill the depth buffer so far-side geometry (arcs/lines) is
31
+ // occluded by the planet.
32
+ depthTest: true,
33
+ cull: false
34
+ };
35
+
36
+ // Earth radius in meters. The disk geometry is a [-1, 1] plane; we scale it into
37
+ // METERS in the vertex shader (like the atmosphere SphereGeometry, whose radius is
38
+ // ~6.4e6 m) and let SimpleMeshLayer's stock projection map it onto the globe —
39
+ // exactly the working path the atmosphere mesh layers use.
40
+ var DEPTH_DISK_FULL_RADIUS = 6.371e6;
41
+
42
+ // Globe common space uses GLOBE_RADIUS = 256 units (see deck.gl's project_globe_).
43
+ // The disk orientation math is done in that 256-unit common space (matching
44
+ // viewport.cameraPosition), then the resulting radius/shift ratios are converted to
45
+ // meters for the shader, since the disk geometry is expressed in meters.
46
+ export var GLOBE_COMMON_RADIUS = 256;
47
+
48
+ /**
49
+ * Creates a view-oriented disk positioned along the direction from the globe's center to the camera.
50
+ * The disk is a cross-section of the globe between the front (visible) and back side, and it fills
51
+ * the depth buffer so anything on the far side of the globe (e.g. arcs/lines) is depth-culled and
52
+ * hidden behind the planet.
53
+ */
54
+ export var GlobeDepthDiskLayer = /*#__PURE__*/function (_SimpleMeshLayer) {
55
+ function GlobeDepthDiskLayer() {
56
+ _classCallCheck(this, GlobeDepthDiskLayer);
57
+ return _callSuper(this, GlobeDepthDiskLayer, arguments);
58
+ }
59
+ _inherits(GlobeDepthDiskLayer, _SimpleMeshLayer);
60
+ return _createClass(GlobeDepthDiskLayer, [{
61
+ key: "getShaders",
62
+ value: function getShaders() {
63
+ var shaders = _superPropGet(GlobeDepthDiskLayer, "getShaders", this, 3)([]);
64
+
65
+ // Override the local `pos` computation: reorient the flat [-1,1] plane to face
66
+ // the camera, scale it to meters, and shift it toward the camera along the view
67
+ // axis so it sits at the globe's silhouette cross-section. The stock
68
+ // project_position_to_clipspace call is left untouched so the disk projects onto
69
+ // the globe through the exact same (working) path the atmosphere mesh layers use.
70
+ var vs = editShader(shaders.vs, 'globe depth disk vs', 'vec3 pos = (instanceModelMatrix * positions) * simpleMesh.sizeScale + instanceTranslation;', "mat3 u_matDepthDiskOrientation = mat3(\n u_depthDiskOrientCol0,\n u_depthDiskOrientCol1,\n u_depthDiskOrientCol2\n );\n vec3 pos = (u_matDepthDiskOrientation * positions) * u_depthDiskRadius;\n vDepthDiskPos = pos;\n pos = pos + u_directionToCamera * u_depthDiskShift;\n ");
71
+ var inject = {
72
+ 'vs:#decl': "\n uniform vec3 u_depthDiskOrientCol0;\n uniform vec3 u_depthDiskOrientCol1;\n uniform vec3 u_depthDiskOrientCol2;\n uniform vec3 u_directionToCamera;\n uniform float u_depthDiskShift;\n uniform float u_depthDiskRadius;\n out vec3 vDepthDiskPos;\n ",
73
+ 'fs:#decl': "\n uniform float u_depthDiskRadius;\n in vec3 vDepthDiskPos;\n ",
74
+ 'fs:#main-start': "\n if (length(vDepthDiskPos) > u_depthDiskRadius) {\n discard;\n }\n "
75
+ };
76
+ return _objectSpread(_objectSpread({}, shaders), {}, {
77
+ vs: vs,
78
+ inject: inject
79
+ });
80
+ }
81
+ }, {
82
+ key: "draw",
83
+ value: function draw(_ref) {
84
+ var uniforms = _ref.uniforms;
85
+ var normalizedRadius = GLOBE_COMMON_RADIUS;
86
+ var camPos = new Vector3(this.context.viewport.cameraPosition);
87
+ var camDir = camPos.clone().normalize();
88
+ var topDir = new Vector3(0, 0, 1);
89
+ var sideDir = camDir.clone().cross(topDir);
90
+ var sidePoint = sideDir.clone().scale(normalizedRadius);
91
+ var camToSide = sidePoint.clone().subtract(camPos).normalize();
92
+ var adjustedSidePoint = camToSide.cross(topDir).scale(-normalizedRadius);
93
+ var shiftToCamera = camDir.dot(adjustedSidePoint);
94
+ var adjustedDiskRadius = Math.sqrt(normalizedRadius * normalizedRadius - shiftToCamera * shiftToCamera);
95
+
96
+ // Camera-facing orientation: the plane's local X/Y axes map to world `right`/`up`
97
+ // (both perpendicular to the camera direction), and local Z maps to `forward`.
98
+ // Columns are handed to the shader as vec3s to avoid Matrix3 row/column ambiguity.
99
+ var forward = camDir.clone();
100
+ var right = topDir.clone().cross(forward).normalize();
101
+ var up = forward.clone().cross(right).normalize();
102
+ var model = this.state.model;
103
+ if (model) {
104
+ // Use the same uniform-delivery mechanism as the (working) atmosphere layers:
105
+ // raw `uniform` declarations + assignment to model.props.uniforms.
106
+ model.props.uniforms = _objectSpread(_objectSpread({}, model.props.uniforms), {}, {
107
+ // mat3(col0, col1, col2) in GLSL is column-major; mat3 * (x, y, 0) = x*right + y*up.
108
+ u_depthDiskOrientCol0: [right[0], right[1], right[2]],
109
+ u_depthDiskOrientCol1: [up[0], up[1], up[2]],
110
+ u_depthDiskOrientCol2: [forward[0], forward[1], forward[2]],
111
+ u_directionToCamera: [camDir[0], camDir[1], camDir[2]],
112
+ // Convert the common-space (256-unit) radius/shift to meters, since the disk
113
+ // geometry (and therefore `pos`) is expressed in meters.
114
+ u_depthDiskShift: shiftToCamera / normalizedRadius * DEPTH_DISK_FULL_RADIUS,
115
+ u_depthDiskRadius: adjustedDiskRadius / normalizedRadius * DEPTH_DISK_FULL_RADIUS
116
+ });
117
+ }
118
+ _superPropGet(GlobeDepthDiskLayer, "draw", this, 3)([{
119
+ uniforms: uniforms
120
+ }]);
121
+ }
122
+ }]);
123
+ }(SimpleMeshLayer);
124
+ _defineProperty(GlobeDepthDiskLayer, "layerName", 'GlobeDepthDiskLayer');
125
+ export var getGlobeDepthDiskLayer = function getGlobeDepthDiskLayer(_ref2) {
126
+ var fillColor = _ref2.fillColor;
127
+ return new GlobeDepthDiskLayer({
128
+ id: 'globe-depth-disk-layer',
129
+ data: [[0, 0, 0]],
130
+ coordinateOrigin: [0, 0, 0],
131
+ coordinateSystem: COORDINATE_SYSTEM.CARTESIAN,
132
+ getPosition: function getPosition(d) {
133
+ return d;
134
+ },
135
+ getColor: fillColor !== null && fillColor !== void 0 ? fillColor : [0, 0, 0],
136
+ mesh: PLANE_GEOMETRY,
137
+ parameters: DEPTH_DISK_PARAMETERS
138
+ });
139
+ };
140
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDT09SRElOQVRFX1NZU1RFTSIsIlNpbXBsZU1lc2hMYXllciIsIlBsYW5lR2VvbWV0cnkiLCJWZWN0b3IzIiwiZWRpdFNoYWRlciIsIlBMQU5FX0dFT01FVFJZIiwidHlwZSIsInhsZW4iLCJ5bGVuIiwiREVQVEhfRElTS19QQVJBTUVURVJTIiwiZGVwdGhUZXN0IiwiY3VsbCIsIkRFUFRIX0RJU0tfRlVMTF9SQURJVVMiLCJHTE9CRV9DT01NT05fUkFESVVTIiwiR2xvYmVEZXB0aERpc2tMYXllciIsIl9TaW1wbGVNZXNoTGF5ZXIiLCJfY2xhc3NDYWxsQ2hlY2siLCJfY2FsbFN1cGVyIiwiYXJndW1lbnRzIiwiX2luaGVyaXRzIiwiX2NyZWF0ZUNsYXNzIiwia2V5IiwidmFsdWUiLCJnZXRTaGFkZXJzIiwic2hhZGVycyIsIl9zdXBlclByb3BHZXQiLCJ2cyIsImluamVjdCIsIl9vYmplY3RTcHJlYWQiLCJkcmF3IiwiX3JlZiIsInVuaWZvcm1zIiwibm9ybWFsaXplZFJhZGl1cyIsImNhbVBvcyIsImNvbnRleHQiLCJ2aWV3cG9ydCIsImNhbWVyYVBvc2l0aW9uIiwiY2FtRGlyIiwiY2xvbmUiLCJub3JtYWxpemUiLCJ0b3BEaXIiLCJzaWRlRGlyIiwiY3Jvc3MiLCJzaWRlUG9pbnQiLCJzY2FsZSIsImNhbVRvU2lkZSIsInN1YnRyYWN0IiwiYWRqdXN0ZWRTaWRlUG9pbnQiLCJzaGlmdFRvQ2FtZXJhIiwiZG90IiwiYWRqdXN0ZWREaXNrUmFkaXVzIiwiTWF0aCIsInNxcnQiLCJmb3J3YXJkIiwicmlnaHQiLCJ1cCIsIm1vZGVsIiwic3RhdGUiLCJwcm9wcyIsInVfZGVwdGhEaXNrT3JpZW50Q29sMCIsInVfZGVwdGhEaXNrT3JpZW50Q29sMSIsInVfZGVwdGhEaXNrT3JpZW50Q29sMiIsInVfZGlyZWN0aW9uVG9DYW1lcmEiLCJ1X2RlcHRoRGlza1NoaWZ0IiwidV9kZXB0aERpc2tSYWRpdXMiLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRHbG9iZURlcHRoRGlza0xheWVyIiwiX3JlZjIiLCJmaWxsQ29sb3IiLCJpZCIsImRhdGEiLCJjb29yZGluYXRlT3JpZ2luIiwiY29vcmRpbmF0ZVN5c3RlbSIsIkNBUlRFU0lBTiIsImdldFBvc2l0aW9uIiwiZCIsImdldENvbG9yIiwibWVzaCIsInBhcmFtZXRlcnMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZ2xvYmUvZ2xvYmUtZGVwdGgtZGlzay1sYXllci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge0NPT1JESU5BVEVfU1lTVEVNfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbmltcG9ydCB7U2ltcGxlTWVzaExheWVyfSBmcm9tICdAZGVjay5nbC9tZXNoLWxheWVycyc7XG5pbXBvcnQge1BsYW5lR2VvbWV0cnl9IGZyb20gJ0BsdW1hLmdsL2VuZ2luZSc7XG5pbXBvcnQge1ZlY3RvcjN9IGZyb20gJ0BtYXRoLmdsL2NvcmUnO1xuXG5pbXBvcnQge2VkaXRTaGFkZXJ9IGZyb20gJy4uL2xheWVyLXV0aWxzL3NoYWRlci11dGlscyc7XG5pbXBvcnQgdHlwZSB7UkdCQ29sb3J9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG4vLyBsdW1hLmdsIDkncyBQbGFuZUdlb21ldHJ5IGlnbm9yZXMgYHJhZGl1c2A7IHBhc3MgZXhwbGljaXQgdHlwZS94bGVuL3lsZW4gc28gd2Vcbi8vIGdldCBhIFstMSwgMV0gcXVhZCAoYSBgcmFkaXVzOiAxYCBwbGFuZSB3b3VsZCBvbmx5IHNwYW4gWy0wLjUsIDAuNV0pLlxuY29uc3QgUExBTkVfR0VPTUVUUlkgPSBuZXcgUGxhbmVHZW9tZXRyeSh7XG4gIHR5cGU6ICd4LHknLFxuICB4bGVuOiAyLFxuICB5bGVuOiAyXG59IGFzIGFueSk7XG5cbmNvbnN0IERFUFRIX0RJU0tfUEFSQU1FVEVSUyA9IHtcbiAgLy8gRGVwdGggd3JpdGVzIG9ubHkgaGFwcGVuIHdpdGggZGVwdGhUZXN0IGVuYWJsZWQuIFRoZSBkaXNrIGlzIG9wYXF1ZS1ibGFjay1pc2hcbiAgLy8gYW5kIHVzZWQgcHVyZWx5IHRvIGZpbGwgdGhlIGRlcHRoIGJ1ZmZlciBzbyBmYXItc2lkZSBnZW9tZXRyeSAoYXJjcy9saW5lcykgaXNcbiAgLy8gb2NjbHVkZWQgYnkgdGhlIHBsYW5ldC5cbiAgZGVwdGhUZXN0OiB0cnVlLFxuICBjdWxsOiBmYWxzZVxufTtcblxuLy8gRWFydGggcmFkaXVzIGluIG1ldGVycy4gVGhlIGRpc2sgZ2VvbWV0cnkgaXMgYSBbLTEsIDFdIHBsYW5lOyB3ZSBzY2FsZSBpdCBpbnRvXG4vLyBNRVRFUlMgaW4gdGhlIHZlcnRleCBzaGFkZXIgKGxpa2UgdGhlIGF0bW9zcGhlcmUgU3BoZXJlR2VvbWV0cnksIHdob3NlIHJhZGl1cyBpc1xuLy8gfjYuNGU2IG0pIGFuZCBsZXQgU2ltcGxlTWVzaExheWVyJ3Mgc3RvY2sgcHJvamVjdGlvbiBtYXAgaXQgb250byB0aGUgZ2xvYmUg4oCUXG4vLyBleGFjdGx5IHRoZSB3b3JraW5nIHBhdGggdGhlIGF0bW9zcGhlcmUgbWVzaCBsYXllcnMgdXNlLlxuY29uc3QgREVQVEhfRElTS19GVUxMX1JBRElVUyA9IDYuMzcxZTY7XG5cbi8vIEdsb2JlIGNvbW1vbiBzcGFjZSB1c2VzIEdMT0JFX1JBRElVUyA9IDI1NiB1bml0cyAoc2VlIGRlY2suZ2wncyBwcm9qZWN0X2dsb2JlXykuXG4vLyBUaGUgZGlzayBvcmllbnRhdGlvbiBtYXRoIGlzIGRvbmUgaW4gdGhhdCAyNTYtdW5pdCBjb21tb24gc3BhY2UgKG1hdGNoaW5nXG4vLyB2aWV3cG9ydC5jYW1lcmFQb3NpdGlvbiksIHRoZW4gdGhlIHJlc3VsdGluZyByYWRpdXMvc2hpZnQgcmF0aW9zIGFyZSBjb252ZXJ0ZWQgdG9cbi8vIG1ldGVycyBmb3IgdGhlIHNoYWRlciwgc2luY2UgdGhlIGRpc2sgZ2VvbWV0cnkgaXMgZXhwcmVzc2VkIGluIG1ldGVycy5cbmV4cG9ydCBjb25zdCBHTE9CRV9DT01NT05fUkFESVVTID0gMjU2O1xuXG4vKipcbiAqIENyZWF0ZXMgYSB2aWV3LW9yaWVudGVkIGRpc2sgcG9zaXRpb25lZCBhbG9uZyB0aGUgZGlyZWN0aW9uIGZyb20gdGhlIGdsb2JlJ3MgY2VudGVyIHRvIHRoZSBjYW1lcmEuXG4gKiBUaGUgZGlzayBpcyBhIGNyb3NzLXNlY3Rpb24gb2YgdGhlIGdsb2JlIGJldHdlZW4gdGhlIGZyb250ICh2aXNpYmxlKSBhbmQgYmFjayBzaWRlLCBhbmQgaXQgZmlsbHNcbiAqIHRoZSBkZXB0aCBidWZmZXIgc28gYW55dGhpbmcgb24gdGhlIGZhciBzaWRlIG9mIHRoZSBnbG9iZSAoZS5nLiBhcmNzL2xpbmVzKSBpcyBkZXB0aC1jdWxsZWQgYW5kXG4gKiBoaWRkZW4gYmVoaW5kIHRoZSBwbGFuZXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBHbG9iZURlcHRoRGlza0xheWVyIGV4dGVuZHMgU2ltcGxlTWVzaExheWVyPGFueT4ge1xuICBzdGF0aWMgbGF5ZXJOYW1lID0gJ0dsb2JlRGVwdGhEaXNrTGF5ZXInO1xuXG4gIGdldFNoYWRlcnMoKTogYW55IHtcbiAgICBjb25zdCBzaGFkZXJzID0gc3VwZXIuZ2V0U2hhZGVycygpO1xuXG4gICAgLy8gT3ZlcnJpZGUgdGhlIGxvY2FsIGBwb3NgIGNvbXB1dGF0aW9uOiByZW9yaWVudCB0aGUgZmxhdCBbLTEsMV0gcGxhbmUgdG8gZmFjZVxuICAgIC8vIHRoZSBjYW1lcmEsIHNjYWxlIGl0IHRvIG1ldGVycywgYW5kIHNoaWZ0IGl0IHRvd2FyZCB0aGUgY2FtZXJhIGFsb25nIHRoZSB2aWV3XG4gICAgLy8gYXhpcyBzbyBpdCBzaXRzIGF0IHRoZSBnbG9iZSdzIHNpbGhvdWV0dGUgY3Jvc3Mtc2VjdGlvbi4gVGhlIHN0b2NrXG4gICAgLy8gcHJvamVjdF9wb3NpdGlvbl90b19jbGlwc3BhY2UgY2FsbCBpcyBsZWZ0IHVudG91Y2hlZCBzbyB0aGUgZGlzayBwcm9qZWN0cyBvbnRvXG4gICAgLy8gdGhlIGdsb2JlIHRocm91Z2ggdGhlIGV4YWN0IHNhbWUgKHdvcmtpbmcpIHBhdGggdGhlIGF0bW9zcGhlcmUgbWVzaCBsYXllcnMgdXNlLlxuICAgIGNvbnN0IHZzID0gZWRpdFNoYWRlcihcbiAgICAgIHNoYWRlcnMudnMsXG4gICAgICAnZ2xvYmUgZGVwdGggZGlzayB2cycsXG4gICAgICAndmVjMyBwb3MgPSAoaW5zdGFuY2VNb2RlbE1hdHJpeCAqIHBvc2l0aW9ucykgKiBzaW1wbGVNZXNoLnNpemVTY2FsZSArIGluc3RhbmNlVHJhbnNsYXRpb247JyxcbiAgICAgIGBtYXQzIHVfbWF0RGVwdGhEaXNrT3JpZW50YXRpb24gPSBtYXQzKFxuICAgICAgICAgdV9kZXB0aERpc2tPcmllbnRDb2wwLFxuICAgICAgICAgdV9kZXB0aERpc2tPcmllbnRDb2wxLFxuICAgICAgICAgdV9kZXB0aERpc2tPcmllbnRDb2wyXG4gICAgICAgKTtcbiAgICAgICB2ZWMzIHBvcyA9ICh1X21hdERlcHRoRGlza09yaWVudGF0aW9uICogcG9zaXRpb25zKSAqIHVfZGVwdGhEaXNrUmFkaXVzO1xuICAgICAgIHZEZXB0aERpc2tQb3MgPSBwb3M7XG4gICAgICAgcG9zID0gcG9zICsgdV9kaXJlY3Rpb25Ub0NhbWVyYSAqIHVfZGVwdGhEaXNrU2hpZnQ7XG4gICAgICBgXG4gICAgKTtcblxuICAgIGNvbnN0IGluamVjdCA9IHtcbiAgICAgICd2czojZGVjbCc6IGBcbiAgICAgICAgdW5pZm9ybSB2ZWMzIHVfZGVwdGhEaXNrT3JpZW50Q29sMDtcbiAgICAgICAgdW5pZm9ybSB2ZWMzIHVfZGVwdGhEaXNrT3JpZW50Q29sMTtcbiAgICAgICAgdW5pZm9ybSB2ZWMzIHVfZGVwdGhEaXNrT3JpZW50Q29sMjtcbiAgICAgICAgdW5pZm9ybSB2ZWMzIHVfZGlyZWN0aW9uVG9DYW1lcmE7XG4gICAgICAgIHVuaWZvcm0gZmxvYXQgdV9kZXB0aERpc2tTaGlmdDtcbiAgICAgICAgdW5pZm9ybSBmbG9hdCB1X2RlcHRoRGlza1JhZGl1cztcbiAgICAgICAgb3V0IHZlYzMgdkRlcHRoRGlza1BvcztcbiAgICAgIGAsXG4gICAgICAnZnM6I2RlY2wnOiBgXG4gICAgICAgIHVuaWZvcm0gZmxvYXQgdV9kZXB0aERpc2tSYWRpdXM7XG4gICAgICAgIGluIHZlYzMgdkRlcHRoRGlza1BvcztcbiAgICAgIGAsXG4gICAgICAnZnM6I21haW4tc3RhcnQnOiBgXG4gICAgICAgIGlmIChsZW5ndGgodkRlcHRoRGlza1BvcykgPiB1X2RlcHRoRGlza1JhZGl1cykge1xuICAgICAgICAgIGRpc2NhcmQ7XG4gICAgICAgIH1cbiAgICAgIGBcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnNoYWRlcnMsXG4gICAgICB2cyxcbiAgICAgIGluamVjdFxuICAgIH07XG4gIH1cblxuICBkcmF3KHt1bmlmb3Jtc306IHt1bmlmb3Jtczogb2JqZWN0fSk6IHZvaWQge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRSYWRpdXMgPSBHTE9CRV9DT01NT05fUkFESVVTO1xuXG4gICAgY29uc3QgY2FtUG9zID0gbmV3IFZlY3RvcjMoKHRoaXMuY29udGV4dC52aWV3cG9ydCBhcyBhbnkpLmNhbWVyYVBvc2l0aW9uKTtcbiAgICBjb25zdCBjYW1EaXIgPSBjYW1Qb3MuY2xvbmUoKS5ub3JtYWxpemUoKTtcbiAgICBjb25zdCB0b3BEaXIgPSBuZXcgVmVjdG9yMygwLCAwLCAxKTtcbiAgICBjb25zdCBzaWRlRGlyID0gY2FtRGlyLmNsb25lKCkuY3Jvc3ModG9wRGlyKTtcbiAgICBjb25zdCBzaWRlUG9pbnQgPSBzaWRlRGlyLmNsb25lKCkuc2NhbGUobm9ybWFsaXplZFJhZGl1cyk7XG5cbiAgICBjb25zdCBjYW1Ub1NpZGUgPSBzaWRlUG9pbnQuY2xvbmUoKS5zdWJ0cmFjdChjYW1Qb3MpLm5vcm1hbGl6ZSgpO1xuICAgIGNvbnN0IGFkanVzdGVkU2lkZVBvaW50ID0gY2FtVG9TaWRlLmNyb3NzKHRvcERpcikuc2NhbGUoLW5vcm1hbGl6ZWRSYWRpdXMpO1xuXG4gICAgY29uc3Qgc2hpZnRUb0NhbWVyYSA9IGNhbURpci5kb3QoYWRqdXN0ZWRTaWRlUG9pbnQpO1xuICAgIGNvbnN0IGFkanVzdGVkRGlza1JhZGl1cyA9IE1hdGguc3FydChcbiAgICAgIG5vcm1hbGl6ZWRSYWRpdXMgKiBub3JtYWxpemVkUmFkaXVzIC0gc2hpZnRUb0NhbWVyYSAqIHNoaWZ0VG9DYW1lcmFcbiAgICApO1xuXG4gICAgLy8gQ2FtZXJhLWZhY2luZyBvcmllbnRhdGlvbjogdGhlIHBsYW5lJ3MgbG9jYWwgWC9ZIGF4ZXMgbWFwIHRvIHdvcmxkIGByaWdodGAvYHVwYFxuICAgIC8vIChib3RoIHBlcnBlbmRpY3VsYXIgdG8gdGhlIGNhbWVyYSBkaXJlY3Rpb24pLCBhbmQgbG9jYWwgWiBtYXBzIHRvIGBmb3J3YXJkYC5cbiAgICAvLyBDb2x1bW5zIGFyZSBoYW5kZWQgdG8gdGhlIHNoYWRlciBhcyB2ZWMzcyB0byBhdm9pZCBNYXRyaXgzIHJvdy9jb2x1bW4gYW1iaWd1aXR5LlxuICAgIGNvbnN0IGZvcndhcmQgPSBjYW1EaXIuY2xvbmUoKTtcbiAgICBjb25zdCByaWdodCA9IHRvcERpci5jbG9uZSgpLmNyb3NzKGZvcndhcmQpLm5vcm1hbGl6ZSgpO1xuICAgIGNvbnN0IHVwID0gZm9yd2FyZC5jbG9uZSgpLmNyb3NzKHJpZ2h0KS5ub3JtYWxpemUoKTtcblxuICAgIGNvbnN0IG1vZGVsID0gdGhpcy5zdGF0ZS5tb2RlbDtcbiAgICBpZiAobW9kZWwpIHtcbiAgICAgIC8vIFVzZSB0aGUgc2FtZSB1bmlmb3JtLWRlbGl2ZXJ5IG1lY2hhbmlzbSBhcyB0aGUgKHdvcmtpbmcpIGF0bW9zcGhlcmUgbGF5ZXJzOlxuICAgICAgLy8gcmF3IGB1bmlmb3JtYCBkZWNsYXJhdGlvbnMgKyBhc3NpZ25tZW50IHRvIG1vZGVsLnByb3BzLnVuaWZvcm1zLlxuICAgICAgKG1vZGVsIGFzIGFueSkucHJvcHMudW5pZm9ybXMgPSB7XG4gICAgICAgIC4uLihtb2RlbCBhcyBhbnkpLnByb3BzLnVuaWZvcm1zLFxuICAgICAgICAvLyBtYXQzKGNvbDAsIGNvbDEsIGNvbDIpIGluIEdMU0wgaXMgY29sdW1uLW1ham9yOyBtYXQzICogKHgsIHksIDApID0geCpyaWdodCArIHkqdXAuXG4gICAgICAgIHVfZGVwdGhEaXNrT3JpZW50Q29sMDogW3JpZ2h0WzBdLCByaWdodFsxXSwgcmlnaHRbMl1dLFxuICAgICAgICB1X2RlcHRoRGlza09yaWVudENvbDE6IFt1cFswXSwgdXBbMV0sIHVwWzJdXSxcbiAgICAgICAgdV9kZXB0aERpc2tPcmllbnRDb2wyOiBbZm9yd2FyZFswXSwgZm9yd2FyZFsxXSwgZm9yd2FyZFsyXV0sXG4gICAgICAgIHVfZGlyZWN0aW9uVG9DYW1lcmE6IFtjYW1EaXJbMF0sIGNhbURpclsxXSwgY2FtRGlyWzJdXSxcbiAgICAgICAgLy8gQ29udmVydCB0aGUgY29tbW9uLXNwYWNlICgyNTYtdW5pdCkgcmFkaXVzL3NoaWZ0IHRvIG1ldGVycywgc2luY2UgdGhlIGRpc2tcbiAgICAgICAgLy8gZ2VvbWV0cnkgKGFuZCB0aGVyZWZvcmUgYHBvc2ApIGlzIGV4cHJlc3NlZCBpbiBtZXRlcnMuXG4gICAgICAgIHVfZGVwdGhEaXNrU2hpZnQ6IChzaGlmdFRvQ2FtZXJhIC8gbm9ybWFsaXplZFJhZGl1cykgKiBERVBUSF9ESVNLX0ZVTExfUkFESVVTLFxuICAgICAgICB1X2RlcHRoRGlza1JhZGl1czogKGFkanVzdGVkRGlza1JhZGl1cyAvIG5vcm1hbGl6ZWRSYWRpdXMpICogREVQVEhfRElTS19GVUxMX1JBRElVU1xuICAgICAgfTtcbiAgICB9XG4gICAgc3VwZXIuZHJhdyh7dW5pZm9ybXN9KTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZ2V0R2xvYmVEZXB0aERpc2tMYXllciA9ICh7ZmlsbENvbG9yfToge2ZpbGxDb2xvcj86IFJHQkNvbG9yfSkgPT4ge1xuICByZXR1cm4gbmV3IEdsb2JlRGVwdGhEaXNrTGF5ZXIoe1xuICAgIGlkOiAnZ2xvYmUtZGVwdGgtZGlzay1sYXllcicsXG4gICAgZGF0YTogW1swLCAwLCAwXV0sXG4gICAgY29vcmRpbmF0ZU9yaWdpbjogWzAsIDAsIDBdLFxuICAgIGNvb3JkaW5hdGVTeXN0ZW06IENPT1JESU5BVEVfU1lTVEVNLkNBUlRFU0lBTixcbiAgICBnZXRQb3NpdGlvbjogKGQ6IG51bWJlcltdKSA9PiBkLFxuICAgIGdldENvbG9yOiAoZmlsbENvbG9yID8/IFswLCAwLCAwXSkgYXMgYW55LFxuICAgIG1lc2g6IFBMQU5FX0dFT01FVFJZLFxuICAgIHBhcmFtZXRlcnM6IERFUFRIX0RJU0tfUEFSQU1FVEVSU1xuICB9IGFzIGFueSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTtBQUNBOztBQUVBLFNBQVFBLGlCQUFpQixRQUFPLGVBQWU7QUFDL0MsU0FBUUMsZUFBZSxRQUFPLHNCQUFzQjtBQUNwRCxTQUFRQyxhQUFhLFFBQU8saUJBQWlCO0FBQzdDLFNBQVFDLE9BQU8sUUFBTyxlQUFlO0FBRXJDLFNBQVFDLFVBQVUsUUFBTyw2QkFBNkI7QUFHdEQ7QUFDQTtBQUNBLElBQU1DLGNBQWMsR0FBRyxJQUFJSCxhQUFhLENBQUM7RUFDdkNJLElBQUksRUFBRSxLQUFLO0VBQ1hDLElBQUksRUFBRSxDQUFDO0VBQ1BDLElBQUksRUFBRTtBQUNSLENBQVEsQ0FBQztBQUVULElBQU1DLHFCQUFxQixHQUFHO0VBQzVCO0VBQ0E7RUFDQTtFQUNBQyxTQUFTLEVBQUUsSUFBSTtFQUNmQyxJQUFJLEVBQUU7QUFDUixDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUMsc0JBQXNCLEdBQUcsT0FBTzs7QUFFdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLElBQU1DLG1CQUFtQixHQUFHLEdBQUc7O0FBRXRDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQWFDLG1CQUFtQiwwQkFBQUMsZ0JBQUE7RUFBQSxTQUFBRCxvQkFBQTtJQUFBRSxlQUFBLE9BQUFGLG1CQUFB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