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