@kepler.gl/deckgl-layers 3.3.0-alpha.3 → 3.3.0-alpha.4

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 (34) hide show
  1. package/dist/cluster-layer/cluster-layer.js +2 -3
  2. package/dist/column-layer/enhanced-column-layer.js +30 -5
  3. package/dist/globe/atmosphere-layer.d.ts +26 -0
  4. package/dist/globe/atmosphere-layer.js +184 -0
  5. package/dist/globe/enhanced-multi-icon-layer.d.ts +6 -0
  6. package/dist/globe/enhanced-multi-icon-layer.js +63 -0
  7. package/dist/globe/globe-depth-disk-layer.d.ts +18 -0
  8. package/dist/globe/globe-depth-disk-layer.js +145 -0
  9. package/dist/globe/globe-layers.d.ts +102 -0
  10. package/dist/globe/globe-layers.js +565 -0
  11. package/dist/globe/globe-stars-layer.d.ts +5 -0
  12. package/dist/globe/globe-stars-layer.js +69 -0
  13. package/dist/globe/globe-view.d.ts +23 -0
  14. package/dist/globe/globe-view.js +316 -0
  15. package/dist/globe/index.d.ts +8 -0
  16. package/dist/globe/index.js +122 -0
  17. package/dist/globe/mvt-label-layer.d.ts +7928 -0
  18. package/dist/globe/mvt-label-layer.js +190 -0
  19. package/dist/grid-layer/enhanced-cpu-grid-layer.d.ts +53 -49
  20. package/dist/grid-layer/enhanced-cpu-grid-layer.js +28 -2
  21. package/dist/hexagon-layer/enhanced-hexagon-layer.d.ts +53 -49
  22. package/dist/hexagon-layer/enhanced-hexagon-layer.js +28 -2
  23. package/dist/index.d.ts +1 -0
  24. package/dist/index.js +14 -3
  25. package/dist/layer-utils/globe-cell-utils.d.ts +30 -0
  26. package/dist/layer-utils/globe-cell-utils.js +173 -0
  27. package/dist/line-layer/line-layer.js +2 -2
  28. package/dist/raster/raster-layer/raster-layer.js +2 -2
  29. package/dist/raster/raster-mesh-layer/raster-mesh-layer.js +2 -2
  30. package/dist/svg-icon-layer/scatterplot-icon-layer.d.ts +4 -1
  31. package/dist/svg-icon-layer/scatterplot-icon-layer.js +52 -15
  32. package/dist/wms/wms-layer.d.ts +19 -0
  33. package/dist/wms/wms-layer.js +193 -23
  34. package/package.json +8 -5
@@ -20,8 +20,7 @@ var _viewportMercatorProject = require("viewport-mercator-project");
20
20
  var _d3Array = require("d3-array");
21
21
  var _constants = require("@kepler.gl/constants");
22
22
  var _clusterUtils = _interopRequireWildcard(require("../layer-utils/cluster-utils"));
23
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
24
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
23
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
25
24
  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; }
26
25
  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; }
27
26
  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)); }
@@ -290,4 +289,4 @@ var ClusterLayer = exports["default"] = /*#__PURE__*/function (_CompositeLayer)
290
289
  }(_core.CompositeLayer);
291
290
  ClusterLayer.layerName = 'ClusterLayer';
292
291
  ClusterLayer.defaultProps = defaultProps;
293
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfbGF5ZXJzIiwiX2dlb1ZpZXdwb3J0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jcHVBZ2dyZWdhdG9yIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfdmlld3BvcnRNZXJjYXRvclByb2plY3QiLCJfZDNBcnJheSIsIl9jb25zdGFudHMiLCJfY2x1c3RlclV0aWxzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJkZWZhdWx0UmFkaXVzIiwiTEFZRVJfVklTX0NPTkZJR1MiLCJjbHVzdGVyUmFkaXVzIiwiZGVmYXVsdFZhbHVlIiwiZGVmYXVsdFJhZGl1c1JhbmdlIiwiY2x1c3RlclJhZGl1c1JhbmdlIiwiZGVmYXVsdEdldENvbG9yVmFsdWUiLCJwb2ludHMiLCJkZWZhdWx0R2V0UmFkaXVzVmFsdWUiLCJjZWxsIiwiZmlsdGVyZWRQb2ludHMiLCJwcm9jZXNzR2VvSlNPTiIsInN0ZXAiLCJwcm9wcyIsImFnZ3JlZ2F0aW9uIiwiX3JlZiIsInZpZXdwb3J0IiwiZGF0YSIsImdldFBvc2l0aW9uIiwiZmlsdGVyRGF0YSIsImdlb0pTT04iLCJnZXRHZW9KU09OIiwiY2x1c3RlckJ1aWxkZXIiLCJDbHVzdGVyQnVpbGRlciIsInNldFN0YXRlIiwiZ2V0Q2x1c3RlcnMiLCJfcmVmMiIsIl9jbHVzdGVyQnVpbGRlciRjbHVzdCIsIl90aGlzJHN0YXRlIiwic3RhdGUiLCJ6b29tIiwid2lkdGgiLCJoZWlnaHQiLCJsb25naXR1ZGUiLCJsYXRpdHVkZSIsImJib3giLCJnZW9WaWV3cG9ydCIsImJvdW5kcyIsImNsdXN0ZXJzIiwiY2x1c3RlcnNBdFpvb20iLCJsYXllckRhdGEiLCJnZXRTdWJMYXllclJhZGl1cyIsImRpbWVuc2lvblN0YXRlIiwiZGltZW5zaW9uIiwibGF5ZXJQcm9wcyIsImdldFJhZGl1c1ZhbHVlIiwic2NhbGVGdW5jIiwiY2x1c3RlckFnZ3JlZ2F0aW9uIiwiZXhwb3J0cyIsImtleSIsInVwZGF0ZVN0ZXBzIiwidHJpZ2dlcnMiLCJwb3NpdGlvbiIsInByb3AiLCJ1cGRhdGVUcmlnZ2VyIiwidXBkYXRlciIsImdldFJhZGl1c1ZhbHVlRG9tYWluIiwiZGltZW5zaW9uVXBkYXRlciIsInZhbHVlRG9tYWluIiwibWF4IiwiX3NldERpbWVuc2lvblN0YXRlIiwiY2x1c3RlckxheWVyRGltZW5zaW9ucyIsImRlZmF1bHRDb2xvckRpbWVuc2lvbiIsImFjY2Vzc29yIiwibnVsbFZhbHVlIiwidmFsdWUiLCJkb21haW4iLCJyYW5nZSIsInNjYWxlVHlwZSIsImdldERpbWVuc2lvblNjYWxlIiwiZ2V0U3ViTGF5ZXJBY2Nlc3NvciIsImdldFBpY2tpbmdJbmZvIiwicmFkaXVzVmFsdWUiLCJzY2FsZWRSYWRpdXNWYWx1ZSIsImRlZmF1bHRQcm9wcyIsImNvbG9yRG9tYWluIiwiY29sb3JSYW5nZSIsIkRFRkFVTFRfQ09MT1JfUkFOR0UiLCJjb2xvclNjYWxlVHlwZSIsIlNDQUxFX1RZUEVTIiwicXVhbnRpemUiLCJyYWRpdXNTY2FsZVR5cGUiLCJzcXJ0IiwicmFkaXVzUmFuZ2UiLCJ0eXBlIiwieCIsImdldENvbG9yVmFsdWUiLCJDbHVzdGVyTGF5ZXIiLCJfQ29tcG9zaXRlTGF5ZXIiLCJfY2xhc3NDYWxsQ2hlY2syIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJpbml0aWFsaXplU3RhdGUiLCJjcHVBZ2dyZWdhdG9yIiwiQ1BVQWdncmVnYXRvciIsImRpbWVuc2lvbnMiLCJhZ2dyZWdhdG9yU3RhdGUiLCJ1cGRhdGVTdGF0ZSIsIl9yZWYzIiwib2xkUHJvcHMiLCJjaGFuZ2VGbGFncyIsImNvbnRleHQiLCJudW1JbnN0YW5jZXMiLCJnZXROdW1JbnN0YW5jZXMiLCJfcmVmNCIsImluZm8iLCJvYmoiLCJvYmplY3QiLCJkaXN0YW5jZVNjYWxlIiwiZ2V0RGlzdGFuY2VTY2FsZXMiLCJtZXRlcnNQZXJQaXhlbCIsIl9nZXRTdWJsYXllclVwZGF0ZVRyaWdnZXJzIiwiZ2V0VXBkYXRlVHJpZ2dlcnMiLCJfZ2V0U3ViTGF5ZXJBY2Nlc3NvcnMiLCJnZXRSYWRpdXMiLCJnZXRBY2Nlc3NvciIsImdldEZpbGxDb2xvciIsInJlbmRlckxheWVycyIsIl9yZWY1IiwiaWQiLCJyYWRpdXNTY2FsZSIsInZpc2libGUiLCJvcGFjaXR5IiwicGlja2FibGUiLCJhdXRvSGlnaGxpZ2h0IiwiaGlnaGxpZ2h0Q29sb3IiLCJfcmVmNiIsInVwZGF0ZVRyaWdnZXJzIiwiYWNjZXNzb3JzIiwiU2NhdHRlcnBsb3RMYXllciIsImNvbmNhdCIsInBhcmFtZXRlcnMiLCJkZXB0aE1hc2siLCJDb21wb3NpdGVMYXllciIsImxheWVyTmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbHVzdGVyLWxheWVyL2NsdXN0ZXItbGF5ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtDb21wb3NpdGVMYXllciwgR2V0UGlja2luZ0luZm9QYXJhbXMsIFBpY2tpbmdJbmZvfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbmltcG9ydCB7U2NhdHRlcnBsb3RMYXllcn0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcblxuaW1wb3J0IGdlb1ZpZXdwb3J0IGZyb20gJ0BtYXBib3gvZ2VvLXZpZXdwb3J0JztcbmltcG9ydCBDUFVBZ2dyZWdhdG9yLCB7XG4gIEFnZ3JlZ2F0aW9uVHlwZSxcbiAgZGVmYXVsdENvbG9yRGltZW5zaW9uLFxuICBEaW1lbnNpb25UeXBlLFxuICBnZXREaW1lbnNpb25TY2FsZVxufSBmcm9tICcuLi9sYXllci11dGlscy9jcHUtYWdncmVnYXRvcic7XG5pbXBvcnQge2dldERpc3RhbmNlU2NhbGVzfSBmcm9tICd2aWV3cG9ydC1tZXJjYXRvci1wcm9qZWN0JztcbmltcG9ydCB7bWF4fSBmcm9tICdkMy1hcnJheSc7XG5cbmltcG9ydCB7U0NBTEVfVFlQRVMsIERFRkFVTFRfQ09MT1JfUkFOR0UsIExBWUVSX1ZJU19DT05GSUdTfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQgQ2x1c3RlckJ1aWxkZXIsIHtnZXRHZW9KU09OfSBmcm9tICcuLi9sYXllci11dGlscy9jbHVzdGVyLXV0aWxzJztcbmltcG9ydCB7UkdCQUNvbG9yfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuY29uc3QgZGVmYXVsdFJhZGl1cyA9IExBWUVSX1ZJU19DT05GSUdTLmNsdXN0ZXJSYWRpdXMuZGVmYXVsdFZhbHVlO1xuY29uc3QgZGVmYXVsdFJhZGl1c1JhbmdlID0gTEFZRVJfVklTX0NPTkZJR1MuY2x1c3RlclJhZGl1c1JhbmdlLmRlZmF1bHRWYWx1ZTtcblxuY29uc3QgZGVmYXVsdEdldENvbG9yVmFsdWUgPSAocG9pbnRzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdKSA9PiBwb2ludHMubGVuZ3RoO1xuY29uc3QgZGVmYXVsdEdldFJhZGl1c1ZhbHVlID0gKGNlbGw6IHtmaWx0ZXJlZFBvaW50cz86IHVua25vd25bXTsgcG9pbnRzOiB1bmtub3duW119KSA9PlxuICBjZWxsLmZpbHRlcmVkUG9pbnRzID8gY2VsbC5maWx0ZXJlZFBvaW50cy5sZW5ndGggOiBjZWxsLnBvaW50cy5sZW5ndGg7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbmZ1bmN0aW9uIHByb2Nlc3NHZW9KU09OKHRoaXM6IENQVUFnZ3JlZ2F0b3IsIHN0ZXAsIHByb3BzLCBhZ2dyZWdhdGlvbiwge3ZpZXdwb3J0fSkge1xuICBjb25zdCB7ZGF0YSwgZ2V0UG9zaXRpb24sIGZpbHRlckRhdGF9ID0gcHJvcHM7XG4gIGNvbnN0IGdlb0pTT04gPSBnZXRHZW9KU09OKGRhdGEsIGdldFBvc2l0aW9uLCBmaWx0ZXJEYXRhKTtcbiAgY29uc3QgY2x1c3RlckJ1aWxkZXIgPSBuZXcgQ2x1c3RlckJ1aWxkZXIoKTtcblxuICB0aGlzLnNldFN0YXRlKHtnZW9KU09OLCBjbHVzdGVyQnVpbGRlcn0pO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5mdW5jdGlvbiBnZXRDbHVzdGVycyh0aGlzOiBDUFVBZ2dyZWdhdG9yLCBzdGVwLCBwcm9wcywgYWdncmVnYXRpb24sIHt2aWV3cG9ydH0pIHtcbiAgY29uc3Qge2dlb0pTT04sIGNsdXN0ZXJCdWlsZGVyfSA9IHRoaXMuc3RhdGU7XG4gIGNvbnN0IHtjbHVzdGVyUmFkaXVzLCB6b29tLCB3aWR0aCwgaGVpZ2h0fSA9IHByb3BzO1xuICBjb25zdCB7bG9uZ2l0dWRlLCBsYXRpdHVkZX0gPSB2aWV3cG9ydDtcblxuICAvLyB6b29tIG5lZWRzIHRvIGJlIGFuIGludGVnZXIgZm9yIHRoZSBkaWZmZXJlbnQgbWFwIHV0aWxzLiBBbHNvIGhlbHBzIHdpdGggY2FjaGUga2V5LlxuICBjb25zdCBiYm94ID0gZ2VvVmlld3BvcnQuYm91bmRzKFtsb25naXR1ZGUsIGxhdGl0dWRlXSwgem9vbSwgW3dpZHRoLCBoZWlnaHRdKTtcbiAgY29uc3QgY2x1c3RlcnMgPSBjbHVzdGVyQnVpbGRlcj8uY2x1c3RlcnNBdFpvb20oe2Jib3gsIGNsdXN0ZXJSYWRpdXMsIGdlb0pTT04sIHpvb219KSA/PyBbXTtcblxuICB0aGlzLnNldFN0YXRlKHtcbiAgICBsYXllckRhdGE6IHtkYXRhOiBjbHVzdGVyc31cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldFN1YkxheWVyUmFkaXVzKFxuICBkaW1lbnNpb25TdGF0ZToge3NjYWxlRnVuYzogKHY6IG51bWJlcikgPT4gbnVtYmVyfSxcbiAgZGltZW5zaW9uOiBEaW1lbnNpb25UeXBlLFxuICBsYXllclByb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4pIHtcbiAgcmV0dXJuIChjZWxsOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IG51bWJlciA9PiB7XG4gICAgY29uc3Qge2dldFJhZGl1c1ZhbHVlfSA9IGxheWVyUHJvcHM7XG4gICAgY29uc3Qge3NjYWxlRnVuY30gPSBkaW1lbnNpb25TdGF0ZTtcbiAgICByZXR1cm4gc2NhbGVGdW5jKGdldFJhZGl1c1ZhbHVlKGNlbGwpKTtcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IGNsdXN0ZXJBZ2dyZWdhdGlvbjogQWdncmVnYXRpb25UeXBlID0ge1xuICBrZXk6ICdwb3NpdGlvbicsXG4gIHVwZGF0ZVN0ZXBzOiBbXG4gICAge1xuICAgICAga2V5OiAnZ2VvanNvbicsXG4gICAgICB0cmlnZ2Vyczoge1xuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgIHByb3A6ICdnZXRQb3NpdGlvbicsXG4gICAgICAgICAgdXBkYXRlVHJpZ2dlcjogJ2dldFBvc2l0aW9uJ1xuICAgICAgICB9LFxuICAgICAgICBmaWx0ZXJEYXRhOiB7XG4gICAgICAgICAgcHJvcDogJ2ZpbHRlckRhdGEnLFxuICAgICAgICAgIHVwZGF0ZVRyaWdnZXI6ICdmaWx0ZXJEYXRhJ1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdXBkYXRlcjogcHJvY2Vzc0dlb0pTT05cbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2NsdXN0ZXJpbmcnLFxuICAgICAgdHJpZ2dlcnM6IHtcbiAgICAgICAgY2x1c3RlclJhZGl1czoge1xuICAgICAgICAgIHByb3A6ICdjbHVzdGVyUmFkaXVzJ1xuICAgICAgICB9LFxuICAgICAgICB6b29tOiB7XG4gICAgICAgICAgcHJvcDogJ3pvb20nXG4gICAgICAgIH0sXG4gICAgICAgIHdpZHRoOiB7XG4gICAgICAgICAgcHJvcDogJ3dpZHRoJ1xuICAgICAgICB9LFxuICAgICAgICBoZWlnaHQ6IHtcbiAgICAgICAgICBwcm9wOiAnaGVpZ2h0J1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdXBkYXRlcjogZ2V0Q2x1c3RlcnNcbiAgICB9XG4gIF1cbn07XG5cbmZ1bmN0aW9uIGdldFJhZGl1c1ZhbHVlRG9tYWluKHRoaXM6IENQVUFnZ3JlZ2F0b3IsIHN0ZXAsIHByb3BzLCBkaW1lbnNpb25VcGRhdGVyKSB7XG4gIGNvbnN0IHtrZXl9ID0gZGltZW5zaW9uVXBkYXRlcjtcbiAgY29uc3Qge2dldFJhZGl1c1ZhbHVlfSA9IHByb3BzO1xuICBjb25zdCB7bGF5ZXJEYXRhfSA9IHRoaXMuc3RhdGU7XG5cbiAgY29uc3QgdmFsdWVEb21haW4gPSBbMCwgbWF4KGxheWVyRGF0YS5kYXRhIGFzIHVua25vd24gYXMgbnVtYmVyW10sIGdldFJhZGl1c1ZhbHVlKV07XG4gIHRoaXMuX3NldERpbWVuc2lvblN0YXRlKGtleSwge3ZhbHVlRG9tYWlufSk7XG59XG5cbmNvbnN0IGNsdXN0ZXJMYXllckRpbWVuc2lvbnM6IFtEaW1lbnNpb25UeXBlPFJHQkFDb2xvcj4sIERpbWVuc2lvblR5cGU8bnVtYmVyPl0gPSBbXG4gIGRlZmF1bHRDb2xvckRpbWVuc2lvbixcbiAge1xuICAgIGtleTogJ3JhZGl1cycsXG4gICAgYWNjZXNzb3I6ICdnZXRSYWRpdXMnLFxuICAgIG51bGxWYWx1ZTogMCxcbiAgICB1cGRhdGVTdGVwczogW1xuICAgICAge1xuICAgICAgICBrZXk6ICdnZXREb21haW4nLFxuICAgICAgICB0cmlnZ2Vyczoge1xuICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICBwcm9wOiAnZ2V0UmFkaXVzVmFsdWUnLFxuICAgICAgICAgICAgdXBkYXRlVHJpZ2dlcjogJ2dldFJhZGl1c1ZhbHVlJ1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgdXBkYXRlcjogZ2V0UmFkaXVzVmFsdWVEb21haW5cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ2dldFNjYWxlRnVuYycsXG4gICAgICAgIHRyaWdnZXJzOiB7XG4gICAgICAgICAgZG9tYWluOiB7cHJvcDogJ3JhZGl1c0RvbWFpbid9LFxuICAgICAgICAgIHJhbmdlOiB7cHJvcDogJ3JhZGl1c1JhbmdlJ30sXG4gICAgICAgICAgc2NhbGVUeXBlOiB7cHJvcDogJ3JhZGl1c1NjYWxlVHlwZSd9XG4gICAgICAgIH0sXG4gICAgICAgIHVwZGF0ZXI6IGdldERpbWVuc2lvblNjYWxlXG4gICAgICB9XG4gICAgXSxcbiAgICBnZXRTdWJMYXllckFjY2Vzc29yOiBnZXRTdWJMYXllclJhZGl1cyxcbiAgICBnZXRQaWNraW5nSW5mbzogKGRpbWVuc2lvblN0YXRlLCBjZWxsLCBsYXllclByb3BzKSA9PiB7XG4gICAgICBjb25zdCByYWRpdXNWYWx1ZSA9IGxheWVyUHJvcHMuZ2V0UmFkaXVzVmFsdWUoY2VsbCk7XG4gICAgICBjb25zdCB7c2NhbGVGdW5jfSA9IGRpbWVuc2lvblN0YXRlO1xuICAgICAgY29uc3Qgc2NhbGVkUmFkaXVzVmFsdWUgPSBzY2FsZUZ1bmMgPyBzY2FsZUZ1bmMocmFkaXVzVmFsdWUpIDogcmFkaXVzVmFsdWU7XG5cbiAgICAgIHJldHVybiB7cmFkaXVzVmFsdWUsIHNjYWxlZFJhZGl1c1ZhbHVlfTtcbiAgICB9XG4gIH1cbl07XG5cbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgY2x1c3RlclJhZGl1czogZGVmYXVsdFJhZGl1cyxcbiAgY29sb3JEb21haW46IG51bGwsXG4gIGNvbG9yUmFuZ2U6IERFRkFVTFRfQ09MT1JfUkFOR0UsXG4gIGNvbG9yU2NhbGVUeXBlOiBTQ0FMRV9UWVBFUy5xdWFudGl6ZSxcbiAgcmFkaXVzU2NhbGVUeXBlOiBTQ0FMRV9UWVBFUy5zcXJ0LFxuICByYWRpdXNSYW5nZTogZGVmYXVsdFJhZGl1c1JhbmdlLFxuICBnZXRQb3NpdGlvbjoge3R5cGU6ICdhY2Nlc3NvcicsIHZhbHVlOiB4ID0+IHgucG9zaXRpb259LFxuICBnZXRDb2xvclZhbHVlOiB7dHlwZTogJ2FjY2Vzc29yJywgdmFsdWU6IGRlZmF1bHRHZXRDb2xvclZhbHVlfSxcbiAgZ2V0UmFkaXVzVmFsdWU6IHt0eXBlOiAnYWNjZXNzb3InLCB2YWx1ZTogZGVmYXVsdEdldFJhZGl1c1ZhbHVlfVxufTtcblxuaW50ZXJmYWNlIENsdXN0ZXJMYXllclN0YXRlIHtcbiAgY3B1QWdncmVnYXRvcjogQ1BVQWdncmVnYXRvcjtcbiAgYWdncmVnYXRvclN0YXRlOiBDUFVBZ2dyZWdhdG9yWydzdGF0ZSddO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDbHVzdGVyTGF5ZXIgZXh0ZW5kcyBDb21wb3NpdGVMYXllciB7XG4gIGluaXRpYWxpemVTdGF0ZSgpIHtcbiAgICBjb25zdCBjcHVBZ2dyZWdhdG9yID0gbmV3IENQVUFnZ3JlZ2F0b3Ioe1xuICAgICAgYWdncmVnYXRpb246IGNsdXN0ZXJBZ2dyZWdhdGlvbixcbiAgICAgIGRpbWVuc2lvbnM6IGNsdXN0ZXJMYXllckRpbWVuc2lvbnNcbiAgICB9KTtcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBjcHVBZ2dyZWdhdG9yLFxuICAgICAgYWdncmVnYXRvclN0YXRlOiBjcHVBZ2dyZWdhdG9yLnN0YXRlXG4gICAgfTtcbiAgfVxuXG4gIHVwZGF0ZVN0YXRlKHtcbiAgICBvbGRQcm9wcyxcbiAgICBwcm9wcyxcbiAgICBjaGFuZ2VGbGFnc1xuICB9OiB7XG4gICAgb2xkUHJvcHM6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgcHJvcHM6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgY2hhbmdlRmxhZ3M6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIH0pIHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGFnZ3JlZ2F0b3JTdGF0ZTogKHRoaXMuc3RhdGUgYXMgdW5rbm93biBhcyBDbHVzdGVyTGF5ZXJTdGF0ZSkuY3B1QWdncmVnYXRvci51cGRhdGVTdGF0ZShcbiAgICAgICAge29sZFByb3BzLCBwcm9wcywgY2hhbmdlRmxhZ3N9LFxuICAgICAgICB7XG4gICAgICAgICAgdmlld3BvcnQ6IHRoaXMuY29udGV4dC52aWV3cG9ydCxcbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHByb3BzIHBhc3NlZCBmb3IgaW50ZXJuYWwgY2FsY3VsYXRpb25cbiAgICAgICAgICBudW1JbnN0YW5jZXM6IHRoaXMuZ2V0TnVtSW5zdGFuY2VzKHByb3BzKVxuICAgICAgICB9XG4gICAgICApXG4gICAgfSk7XG4gIH1cblxuICBnZXRQaWNraW5nSW5mbyh7aW5mb306IEdldFBpY2tpbmdJbmZvUGFyYW1zKTogUGlja2luZ0luZm8ge1xuICAgIGNvbnN0IG9iaiA9ICh0aGlzLnN0YXRlIGFzIHVua25vd24gYXMgQ2x1c3RlckxheWVyU3RhdGUpLmNwdUFnZ3JlZ2F0b3IuZ2V0UGlja2luZ0luZm8oXG4gICAgICB7aW5mb30sXG4gICAgICB0aGlzLnByb3BzXG4gICAgKTtcbiAgICBpZiAob2JqPy5vYmplY3QpIHtcbiAgICAgIGNvbnN0IGRpc3RhbmNlU2NhbGUgPSBnZXREaXN0YW5jZVNjYWxlcyh0aGlzLmNvbnRleHQudmlld3BvcnQpO1xuICAgICAgY29uc3QgbWV0ZXJzUGVyUGl4ZWwgPSBkaXN0YW5jZVNjYWxlLm1ldGVyc1BlclBpeGVsWzBdO1xuICAgICAgb2JqLm9iamVjdC5zY2FsZWRSYWRpdXNWYWx1ZSA9IG9iai5vYmplY3Quc2NhbGVkUmFkaXVzVmFsdWUgKiBtZXRlcnNQZXJQaXhlbDtcbiAgICB9XG5cbiAgICByZXR1cm4gb2JqIGFzIFBpY2tpbmdJbmZvO1xuICB9XG5cbiAgX2dldFN1YmxheWVyVXBkYXRlVHJpZ2dlcnMoKSB7XG4gICAgcmV0dXJuICh0aGlzLnN0YXRlIGFzIHVua25vd24gYXMgQ2x1c3RlckxheWVyU3RhdGUpLmNwdUFnZ3JlZ2F0b3IuZ2V0VXBkYXRlVHJpZ2dlcnModGhpcy5wcm9wcyk7XG4gIH1cblxuICBfZ2V0U3ViTGF5ZXJBY2Nlc3NvcnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdldFJhZGl1czogKHRoaXMuc3RhdGUgYXMgdW5rbm93biBhcyBDbHVzdGVyTGF5ZXJTdGF0ZSkuY3B1QWdncmVnYXRvci5nZXRBY2Nlc3NvcihcbiAgICAgICAgJ3JhZGl1cycsXG4gICAgICAgIHRoaXMucHJvcHNcbiAgICAgICksXG4gICAgICBnZXRGaWxsQ29sb3I6ICh0aGlzLnN0YXRlIGFzIHVua25vd24gYXMgQ2x1c3RlckxheWVyU3RhdGUpLmNwdUFnZ3JlZ2F0b3IuZ2V0QWNjZXNzb3IoXG4gICAgICAgICdmaWxsQ29sb3InLFxuICAgICAgICB0aGlzLnByb3BzXG4gICAgICApXG4gICAgfTtcbiAgfVxuXG4gIHJlbmRlckxheWVycygpIHtcbiAgICBjb25zdCB7aWQsIHJhZGl1c1NjYWxlLCB2aXNpYmxlLCBvcGFjaXR5LCBwaWNrYWJsZSwgYXV0b0hpZ2hsaWdodCwgaGlnaGxpZ2h0Q29sb3J9ID0gdGhpc1xuICAgICAgLnByb3BzIGFzIFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgY29uc3Qge2NwdUFnZ3JlZ2F0b3J9ID0gdGhpcy5zdGF0ZSBhcyB1bmtub3duIGFzIENsdXN0ZXJMYXllclN0YXRlO1xuICAgIGNvbnN0IHVwZGF0ZVRyaWdnZXJzID0gdGhpcy5fZ2V0U3VibGF5ZXJVcGRhdGVUcmlnZ2VycygpO1xuICAgIGNvbnN0IGFjY2Vzc29ycyA9IHRoaXMuX2dldFN1YkxheWVyQWNjZXNzb3JzKCk7XG5cbiAgICBjb25zdCBkaXN0YW5jZVNjYWxlID0gZ2V0RGlzdGFuY2VTY2FsZXModGhpcy5jb250ZXh0LnZpZXdwb3J0KTtcbiAgICBjb25zdCBtZXRlcnNQZXJQaXhlbCA9IGRpc3RhbmNlU2NhbGUubWV0ZXJzUGVyUGl4ZWxbMF07XG5cbiAgICAvLyByZXR1cm4gcHJvcHMgdG8gdGhlIHN1YmxheWVyIGNvbnN0cnVjdG9yXG4gICAgcmV0dXJuIG5ldyBTY2F0dGVycGxvdExheWVyKHtcbiAgICAgIGlkOiBgJHtpZH0tY2x1c3RlcmAsXG4gICAgICBkYXRhOiBjcHVBZ2dyZWdhdG9yLnN0YXRlLmxheWVyRGF0YS5kYXRhLFxuICAgICAgcmFkaXVzU2NhbGU6IG1ldGVyc1BlclBpeGVsICogcmFkaXVzU2NhbGUsXG4gICAgICB2aXNpYmxlLFxuICAgICAgb3BhY2l0eSxcbiAgICAgIHBpY2thYmxlLFxuICAgICAgYXV0b0hpZ2hsaWdodCxcbiAgICAgIGhpZ2hsaWdodENvbG9yLFxuICAgICAgdXBkYXRlVHJpZ2dlcnMsXG4gICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgIGRlcHRoTWFzazogZmFsc2VcbiAgICAgIH0sXG4gICAgICAuLi5hY2Nlc3NvcnNcbiAgICB9KTtcbiAgfVxufVxuXG5DbHVzdGVyTGF5ZXIubGF5ZXJOYW1lID0gJ0NsdXN0ZXJMYXllcic7XG5DbHVzdGVyTGF5ZXIuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLEtBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLFlBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFJLGNB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
292
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfbGF5ZXJzIiwiX2dlb1ZpZXdwb3J0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jcHVBZ2dyZWdhdG9yIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfdmlld3BvcnRNZXJjYXRvclByb2plY3QiLCJfZDNBcnJheSIsIl9jb25zdGFudHMiLCJfY2x1c3RlclV0aWxzIiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiX3R5cGVvZiIsImhhcyIsImdldCIsInNldCIsIl90IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiZGVmYXVsdFJhZGl1cyIsIkxBWUVSX1ZJU19DT05GSUdTIiwiY2x1c3RlclJhZGl1cyIsImRlZmF1bHRWYWx1ZSIsImRlZmF1bHRSYWRpdXNSYW5nZSIsImNsdXN0ZXJSYWRpdXNSYW5nZSIsImRlZmF1bHRHZXRDb2xvclZhbHVlIiwicG9pbnRzIiwiZGVmYXVsdEdldFJhZGl1c1ZhbHVlIiwiY2VsbCIsImZpbHRlcmVkUG9pbnRzIiwicHJvY2Vzc0dlb0pTT04iLCJzdGVwIiwicHJvcHMiLCJhZ2dyZWdhdGlvbiIsIl9yZWYiLCJ2aWV3cG9ydCIsImRhdGEiLCJnZXRQb3NpdGlvbiIsImZpbHRlckRhdGEiLCJnZW9KU09OIiwiZ2V0R2VvSlNPTiIsImNsdXN0ZXJCdWlsZGVyIiwiQ2x1c3RlckJ1aWxkZXIiLCJzZXRTdGF0ZSIsImdldENsdXN0ZXJzIiwiX3JlZjIiLCJfY2x1c3RlckJ1aWxkZXIkY2x1c3QiLCJfdGhpcyRzdGF0ZSIsInN0YXRlIiwiem9vbSIsIndpZHRoIiwiaGVpZ2h0IiwibG9uZ2l0dWRlIiwibGF0aXR1ZGUiLCJiYm94IiwiZ2VvVmlld3BvcnQiLCJib3VuZHMiLCJjbHVzdGVycyIsImNsdXN0ZXJzQXRab29tIiwibGF5ZXJEYXRhIiwiZ2V0U3ViTGF5ZXJSYWRpdXMiLCJkaW1lbnNpb25TdGF0ZSIsImRpbWVuc2lvbiIsImxheWVyUHJvcHMiLCJnZXRSYWRpdXNWYWx1ZSIsInNjYWxlRnVuYyIsImNsdXN0ZXJBZ2dyZWdhdGlvbiIsImV4cG9ydHMiLCJrZXkiLCJ1cGRhdGVTdGVwcyIsInRyaWdnZXJzIiwicG9zaXRpb24iLCJwcm9wIiwidXBkYXRlVHJpZ2dlciIsInVwZGF0ZXIiLCJnZXRSYWRpdXNWYWx1ZURvbWFpbiIsImRpbWVuc2lvblVwZGF0ZXIiLCJ2YWx1ZURvbWFpbiIsIm1heCIsIl9zZXREaW1lbnNpb25TdGF0ZSIsImNsdXN0ZXJMYXllckRpbWVuc2lvbnMiLCJkZWZhdWx0Q29sb3JEaW1lbnNpb24iLCJhY2Nlc3NvciIsIm51bGxWYWx1ZSIsInZhbHVlIiwiZG9tYWluIiwicmFuZ2UiLCJzY2FsZVR5cGUiLCJnZXREaW1lbnNpb25TY2FsZSIsImdldFN1YkxheWVyQWNjZXNzb3IiLCJnZXRQaWNraW5nSW5mbyIsInJhZGl1c1ZhbHVlIiwic2NhbGVkUmFkaXVzVmFsdWUiLCJkZWZhdWx0UHJvcHMiLCJjb2xvckRvbWFpbiIsImNvbG9yUmFuZ2UiLCJERUZBVUxUX0NPTE9SX1JBTkdFIiwiY29sb3JTY2FsZVR5cGUiLCJTQ0FMRV9UWVBFUyIsInF1YW50aXplIiwicmFkaXVzU2NhbGVUeXBlIiwic3FydCIsInJhZGl1c1JhbmdlIiwidHlwZSIsIngiLCJnZXRDb2xvclZhbHVlIiwiQ2x1c3RlckxheWVyIiwiX0NvbXBvc2l0ZUxheWVyIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwiaW5pdGlhbGl6ZVN0YXRlIiwiY3B1QWdncmVnYXRvciIsIkNQVUFnZ3JlZ2F0b3IiLCJkaW1lbnNpb25zIiwiYWdncmVnYXRvclN0YXRlIiwidXBkYXRlU3RhdGUiLCJfcmVmMyIsIm9sZFByb3BzIiwiY2hhbmdlRmxhZ3MiLCJjb250ZXh0IiwibnVtSW5zdGFuY2VzIiwiZ2V0TnVtSW5zdGFuY2VzIiwiX3JlZjQiLCJpbmZvIiwib2JqIiwib2JqZWN0IiwiZGlzdGFuY2VTY2FsZSIsImdldERpc3RhbmNlU2NhbGVzIiwibWV0ZXJzUGVyUGl4ZWwiLCJfZ2V0U3VibGF5ZXJVcGRhdGVUcmlnZ2VycyIsImdldFVwZGF0ZVRyaWdnZXJzIiwiX2dldFN1YkxheWVyQWNjZXNzb3JzIiwiZ2V0UmFkaXVzIiwiZ2V0QWNjZXNzb3IiLCJnZXRGaWxsQ29sb3IiLCJyZW5kZXJMYXllcnMiLCJfcmVmNSIsImlkIiwicmFkaXVzU2NhbGUiLCJ2aXNpYmxlIiwib3BhY2l0eSIsInBpY2thYmxlIiwiYXV0b0hpZ2hsaWdodCIsImhpZ2hsaWdodENvbG9yIiwiX3JlZjYiLCJ1cGRhdGVUcmlnZ2VycyIsImFjY2Vzc29ycyIsIlNjYXR0ZXJwbG90TGF5ZXIiLCJjb25jYXQiLCJwYXJhbWV0ZXJzIiwiZGVwdGhNYXNrIiwiQ29tcG9zaXRlTGF5ZXIiLCJsYXllck5hbWUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY2x1c3Rlci1sYXllci9jbHVzdGVyLWxheWVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7Q29tcG9zaXRlTGF5ZXIsIEdldFBpY2tpbmdJbmZvUGFyYW1zLCBQaWNraW5nSW5mb30gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5pbXBvcnQge1NjYXR0ZXJwbG90TGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2xheWVycyc7XG5cbmltcG9ydCBnZW9WaWV3cG9ydCBmcm9tICdAbWFwYm94L2dlby12aWV3cG9ydCc7XG5pbXBvcnQgQ1BVQWdncmVnYXRvciwge1xuICBBZ2dyZWdhdGlvblR5cGUsXG4gIGRlZmF1bHRDb2xvckRpbWVuc2lvbixcbiAgRGltZW5zaW9uVHlwZSxcbiAgZ2V0RGltZW5zaW9uU2NhbGVcbn0gZnJvbSAnLi4vbGF5ZXItdXRpbHMvY3B1LWFnZ3JlZ2F0b3InO1xuaW1wb3J0IHtnZXREaXN0YW5jZVNjYWxlc30gZnJvbSAndmlld3BvcnQtbWVyY2F0b3ItcHJvamVjdCc7XG5pbXBvcnQge21heH0gZnJvbSAnZDMtYXJyYXknO1xuXG5pbXBvcnQge1NDQUxFX1RZUEVTLCBERUZBVUxUX0NPTE9SX1JBTkdFLCBMQVlFUl9WSVNfQ09ORklHU30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IENsdXN0ZXJCdWlsZGVyLCB7Z2V0R2VvSlNPTn0gZnJvbSAnLi4vbGF5ZXItdXRpbHMvY2x1c3Rlci11dGlscyc7XG5pbXBvcnQge1JHQkFDb2xvcn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmNvbnN0IGRlZmF1bHRSYWRpdXMgPSBMQVlFUl9WSVNfQ09ORklHUy5jbHVzdGVyUmFkaXVzLmRlZmF1bHRWYWx1ZTtcbmNvbnN0IGRlZmF1bHRSYWRpdXNSYW5nZSA9IExBWUVSX1ZJU19DT05GSUdTLmNsdXN0ZXJSYWRpdXNSYW5nZS5kZWZhdWx0VmFsdWU7XG5cbmNvbnN0IGRlZmF1bHRHZXRDb2xvclZhbHVlID0gKHBvaW50czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSkgPT4gcG9pbnRzLmxlbmd0aDtcbmNvbnN0IGRlZmF1bHRHZXRSYWRpdXNWYWx1ZSA9IChjZWxsOiB7ZmlsdGVyZWRQb2ludHM/OiB1bmtub3duW107IHBvaW50czogdW5rbm93bltdfSkgPT5cbiAgY2VsbC5maWx0ZXJlZFBvaW50cyA/IGNlbGwuZmlsdGVyZWRQb2ludHMubGVuZ3RoIDogY2VsbC5wb2ludHMubGVuZ3RoO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5mdW5jdGlvbiBwcm9jZXNzR2VvSlNPTih0aGlzOiBDUFVBZ2dyZWdhdG9yLCBzdGVwLCBwcm9wcywgYWdncmVnYXRpb24sIHt2aWV3cG9ydH0pIHtcbiAgY29uc3Qge2RhdGEsIGdldFBvc2l0aW9uLCBmaWx0ZXJEYXRhfSA9IHByb3BzO1xuICBjb25zdCBnZW9KU09OID0gZ2V0R2VvSlNPTihkYXRhLCBnZXRQb3NpdGlvbiwgZmlsdGVyRGF0YSk7XG4gIGNvbnN0IGNsdXN0ZXJCdWlsZGVyID0gbmV3IENsdXN0ZXJCdWlsZGVyKCk7XG5cbiAgdGhpcy5zZXRTdGF0ZSh7Z2VvSlNPTiwgY2x1c3RlckJ1aWxkZXJ9KTtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuZnVuY3Rpb24gZ2V0Q2x1c3RlcnModGhpczogQ1BVQWdncmVnYXRvciwgc3RlcCwgcHJvcHMsIGFnZ3JlZ2F0aW9uLCB7dmlld3BvcnR9KSB7XG4gIGNvbnN0IHtnZW9KU09OLCBjbHVzdGVyQnVpbGRlcn0gPSB0aGlzLnN0YXRlO1xuICBjb25zdCB7Y2x1c3RlclJhZGl1cywgem9vbSwgd2lkdGgsIGhlaWdodH0gPSBwcm9wcztcbiAgY29uc3Qge2xvbmdpdHVkZSwgbGF0aXR1ZGV9ID0gdmlld3BvcnQ7XG5cbiAgLy8gem9vbSBuZWVkcyB0byBiZSBhbiBpbnRlZ2VyIGZvciB0aGUgZGlmZmVyZW50IG1hcCB1dGlscy4gQWxzbyBoZWxwcyB3aXRoIGNhY2hlIGtleS5cbiAgY29uc3QgYmJveCA9IGdlb1ZpZXdwb3J0LmJvdW5kcyhbbG9uZ2l0dWRlLCBsYXRpdHVkZV0sIHpvb20sIFt3aWR0aCwgaGVpZ2h0XSk7XG4gIGNvbnN0IGNsdXN0ZXJzID0gY2x1c3RlckJ1aWxkZXI/LmNsdXN0ZXJzQXRab29tKHtiYm94LCBjbHVzdGVyUmFkaXVzLCBnZW9KU09OLCB6b29tfSkgPz8gW107XG5cbiAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgbGF5ZXJEYXRhOiB7ZGF0YTogY2x1c3RlcnN9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRTdWJMYXllclJhZGl1cyhcbiAgZGltZW5zaW9uU3RhdGU6IHtzY2FsZUZ1bmM6ICh2OiBudW1iZXIpID0+IG51bWJlcn0sXG4gIGRpbWVuc2lvbjogRGltZW5zaW9uVHlwZSxcbiAgbGF5ZXJQcm9wczogUmVjb3JkPHN0cmluZywgYW55PlxuKSB7XG4gIHJldHVybiAoY2VsbDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBudW1iZXIgPT4ge1xuICAgIGNvbnN0IHtnZXRSYWRpdXNWYWx1ZX0gPSBsYXllclByb3BzO1xuICAgIGNvbnN0IHtzY2FsZUZ1bmN9ID0gZGltZW5zaW9uU3RhdGU7XG4gICAgcmV0dXJuIHNjYWxlRnVuYyhnZXRSYWRpdXNWYWx1ZShjZWxsKSk7XG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBjbHVzdGVyQWdncmVnYXRpb246IEFnZ3JlZ2F0aW9uVHlwZSA9IHtcbiAga2V5OiAncG9zaXRpb24nLFxuICB1cGRhdGVTdGVwczogW1xuICAgIHtcbiAgICAgIGtleTogJ2dlb2pzb24nLFxuICAgICAgdHJpZ2dlcnM6IHtcbiAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICBwcm9wOiAnZ2V0UG9zaXRpb24nLFxuICAgICAgICAgIHVwZGF0ZVRyaWdnZXI6ICdnZXRQb3NpdGlvbidcbiAgICAgICAgfSxcbiAgICAgICAgZmlsdGVyRGF0YToge1xuICAgICAgICAgIHByb3A6ICdmaWx0ZXJEYXRhJyxcbiAgICAgICAgICB1cGRhdGVUcmlnZ2VyOiAnZmlsdGVyRGF0YSdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHVwZGF0ZXI6IHByb2Nlc3NHZW9KU09OXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdjbHVzdGVyaW5nJyxcbiAgICAgIHRyaWdnZXJzOiB7XG4gICAgICAgIGNsdXN0ZXJSYWRpdXM6IHtcbiAgICAgICAgICBwcm9wOiAnY2x1c3RlclJhZGl1cydcbiAgICAgICAgfSxcbiAgICAgICAgem9vbToge1xuICAgICAgICAgIHByb3A6ICd6b29tJ1xuICAgICAgICB9LFxuICAgICAgICB3aWR0aDoge1xuICAgICAgICAgIHByb3A6ICd3aWR0aCdcbiAgICAgICAgfSxcbiAgICAgICAgaGVpZ2h0OiB7XG4gICAgICAgICAgcHJvcDogJ2hlaWdodCdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHVwZGF0ZXI6IGdldENsdXN0ZXJzXG4gICAgfVxuICBdXG59O1xuXG5mdW5jdGlvbiBnZXRSYWRpdXNWYWx1ZURvbWFpbih0aGlzOiBDUFVBZ2dyZWdhdG9yLCBzdGVwLCBwcm9wcywgZGltZW5zaW9uVXBkYXRlcikge1xuICBjb25zdCB7a2V5fSA9IGRpbWVuc2lvblVwZGF0ZXI7XG4gIGNvbnN0IHtnZXRSYWRpdXNWYWx1ZX0gPSBwcm9wcztcbiAgY29uc3Qge2xheWVyRGF0YX0gPSB0aGlzLnN0YXRlO1xuXG4gIGNvbnN0IHZhbHVlRG9tYWluID0gWzAsIG1heChsYXllckRhdGEuZGF0YSBhcyB1bmtub3duIGFzIG51bWJlcltdLCBnZXRSYWRpdXNWYWx1ZSldO1xuICB0aGlzLl9zZXREaW1lbnNpb25TdGF0ZShrZXksIHt2YWx1ZURvbWFpbn0pO1xufVxuXG5jb25zdCBjbHVzdGVyTGF5ZXJEaW1lbnNpb25zOiBbRGltZW5zaW9uVHlwZTxSR0JBQ29sb3I+LCBEaW1lbnNpb25UeXBlPG51bWJlcj5dID0gW1xuICBkZWZhdWx0Q29sb3JEaW1lbnNpb24sXG4gIHtcbiAgICBrZXk6ICdyYWRpdXMnLFxuICAgIGFjY2Vzc29yOiAnZ2V0UmFkaXVzJyxcbiAgICBudWxsVmFsdWU6IDAsXG4gICAgdXBkYXRlU3RlcHM6IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiAnZ2V0RG9tYWluJyxcbiAgICAgICAgdHJpZ2dlcnM6IHtcbiAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgcHJvcDogJ2dldFJhZGl1c1ZhbHVlJyxcbiAgICAgICAgICAgIHVwZGF0ZVRyaWdnZXI6ICdnZXRSYWRpdXNWYWx1ZSdcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHVwZGF0ZXI6IGdldFJhZGl1c1ZhbHVlRG9tYWluXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdnZXRTY2FsZUZ1bmMnLFxuICAgICAgICB0cmlnZ2Vyczoge1xuICAgICAgICAgIGRvbWFpbjoge3Byb3A6ICdyYWRpdXNEb21haW4nfSxcbiAgICAgICAgICByYW5nZToge3Byb3A6ICdyYWRpdXNSYW5nZSd9LFxuICAgICAgICAgIHNjYWxlVHlwZToge3Byb3A6ICdyYWRpdXNTY2FsZVR5cGUnfVxuICAgICAgICB9LFxuICAgICAgICB1cGRhdGVyOiBnZXREaW1lbnNpb25TY2FsZVxuICAgICAgfVxuICAgIF0sXG4gICAgZ2V0U3ViTGF5ZXJBY2Nlc3NvcjogZ2V0U3ViTGF5ZXJSYWRpdXMsXG4gICAgZ2V0UGlja2luZ0luZm86IChkaW1lbnNpb25TdGF0ZSwgY2VsbCwgbGF5ZXJQcm9wcykgPT4ge1xuICAgICAgY29uc3QgcmFkaXVzVmFsdWUgPSBsYXllclByb3BzLmdldFJhZGl1c1ZhbHVlKGNlbGwpO1xuICAgICAgY29uc3Qge3NjYWxlRnVuY30gPSBkaW1lbnNpb25TdGF0ZTtcbiAgICAgIGNvbnN0IHNjYWxlZFJhZGl1c1ZhbHVlID0gc2NhbGVGdW5jID8gc2NhbGVGdW5jKHJhZGl1c1ZhbHVlKSA6IHJhZGl1c1ZhbHVlO1xuXG4gICAgICByZXR1cm4ge3JhZGl1c1ZhbHVlLCBzY2FsZWRSYWRpdXNWYWx1ZX07XG4gICAgfVxuICB9XG5dO1xuXG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIGNsdXN0ZXJSYWRpdXM6IGRlZmF1bHRSYWRpdXMsXG4gIGNvbG9yRG9tYWluOiBudWxsLFxuICBjb2xvclJhbmdlOiBERUZBVUxUX0NPTE9SX1JBTkdFLFxuICBjb2xvclNjYWxlVHlwZTogU0NBTEVfVFlQRVMucXVhbnRpemUsXG4gIHJhZGl1c1NjYWxlVHlwZTogU0NBTEVfVFlQRVMuc3FydCxcbiAgcmFkaXVzUmFuZ2U6IGRlZmF1bHRSYWRpdXNSYW5nZSxcbiAgZ2V0UG9zaXRpb246IHt0eXBlOiAnYWNjZXNzb3InLCB2YWx1ZTogeCA9PiB4LnBvc2l0aW9ufSxcbiAgZ2V0Q29sb3JWYWx1ZToge3R5cGU6ICdhY2Nlc3NvcicsIHZhbHVlOiBkZWZhdWx0R2V0Q29sb3JWYWx1ZX0sXG4gIGdldFJhZGl1c1ZhbHVlOiB7dHlwZTogJ2FjY2Vzc29yJywgdmFsdWU6IGRlZmF1bHRHZXRSYWRpdXNWYWx1ZX1cbn07XG5cbmludGVyZmFjZSBDbHVzdGVyTGF5ZXJTdGF0ZSB7XG4gIGNwdUFnZ3JlZ2F0b3I6IENQVUFnZ3JlZ2F0b3I7XG4gIGFnZ3JlZ2F0b3JTdGF0ZTogQ1BVQWdncmVnYXRvclsnc3RhdGUnXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2x1c3RlckxheWVyIGV4dGVuZHMgQ29tcG9zaXRlTGF5ZXIge1xuICBpbml0aWFsaXplU3RhdGUoKSB7XG4gICAgY29uc3QgY3B1QWdncmVnYXRvciA9IG5ldyBDUFVBZ2dyZWdhdG9yKHtcbiAgICAgIGFnZ3JlZ2F0aW9uOiBjbHVzdGVyQWdncmVnYXRpb24sXG4gICAgICBkaW1lbnNpb25zOiBjbHVzdGVyTGF5ZXJEaW1lbnNpb25zXG4gICAgfSk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgY3B1QWdncmVnYXRvcixcbiAgICAgIGFnZ3JlZ2F0b3JTdGF0ZTogY3B1QWdncmVnYXRvci5zdGF0ZVxuICAgIH07XG4gIH1cblxuICB1cGRhdGVTdGF0ZSh7XG4gICAgb2xkUHJvcHMsXG4gICAgcHJvcHMsXG4gICAgY2hhbmdlRmxhZ3NcbiAgfToge1xuICAgIG9sZFByb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIHByb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIGNoYW5nZUZsYWdzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICB9KSB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBhZ2dyZWdhdG9yU3RhdGU6ICh0aGlzLnN0YXRlIGFzIHVua25vd24gYXMgQ2x1c3RlckxheWVyU3RhdGUpLmNwdUFnZ3JlZ2F0b3IudXBkYXRlU3RhdGUoXG4gICAgICAgIHtvbGRQcm9wcywgcHJvcHMsIGNoYW5nZUZsYWdzfSxcbiAgICAgICAge1xuICAgICAgICAgIHZpZXdwb3J0OiB0aGlzLmNvbnRleHQudmlld3BvcnQsXG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBwcm9wcyBwYXNzZWQgZm9yIGludGVybmFsIGNhbGN1bGF0aW9uXG4gICAgICAgICAgbnVtSW5zdGFuY2VzOiB0aGlzLmdldE51bUluc3RhbmNlcyhwcm9wcylcbiAgICAgICAgfVxuICAgICAgKVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0UGlja2luZ0luZm8oe2luZm99OiBHZXRQaWNraW5nSW5mb1BhcmFtcyk6IFBpY2tpbmdJbmZvIHtcbiAgICBjb25zdCBvYmogPSAodGhpcy5zdGF0ZSBhcyB1bmtub3duIGFzIENsdXN0ZXJMYXllclN0YXRlKS5jcHVBZ2dyZWdhdG9yLmdldFBpY2tpbmdJbmZvKFxuICAgICAge2luZm99LFxuICAgICAgdGhpcy5wcm9wc1xuICAgICk7XG4gICAgaWYgKG9iaj8ub2JqZWN0KSB7XG4gICAgICBjb25zdCBkaXN0YW5jZVNjYWxlID0gZ2V0RGlzdGFuY2VTY2FsZXModGhpcy5jb250ZXh0LnZpZXdwb3J0KTtcbiAgICAgIGNvbnN0IG1ldGVyc1BlclBpeGVsID0gZGlzdGFuY2VTY2FsZS5tZXRlcnNQZXJQaXhlbFswXTtcbiAgICAgIG9iai5vYmplY3Quc2NhbGVkUmFkaXVzVmFsdWUgPSBvYmoub2JqZWN0LnNjYWxlZFJhZGl1c1ZhbHVlICogbWV0ZXJzUGVyUGl4ZWw7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9iaiBhcyBQaWNraW5nSW5mbztcbiAgfVxuXG4gIF9nZXRTdWJsYXllclVwZGF0ZVRyaWdnZXJzKCkge1xuICAgIHJldHVybiAodGhpcy5zdGF0ZSBhcyB1bmtub3duIGFzIENsdXN0ZXJMYXllclN0YXRlKS5jcHVBZ2dyZWdhdG9yLmdldFVwZGF0ZVRyaWdnZXJzKHRoaXMucHJvcHMpO1xuICB9XG5cbiAgX2dldFN1YkxheWVyQWNjZXNzb3JzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBnZXRSYWRpdXM6ICh0aGlzLnN0YXRlIGFzIHVua25vd24gYXMgQ2x1c3RlckxheWVyU3RhdGUpLmNwdUFnZ3JlZ2F0b3IuZ2V0QWNjZXNzb3IoXG4gICAgICAgICdyYWRpdXMnLFxuICAgICAgICB0aGlzLnByb3BzXG4gICAgICApLFxuICAgICAgZ2V0RmlsbENvbG9yOiAodGhpcy5zdGF0ZSBhcyB1bmtub3duIGFzIENsdXN0ZXJMYXllclN0YXRlKS5jcHVBZ2dyZWdhdG9yLmdldEFjY2Vzc29yKFxuICAgICAgICAnZmlsbENvbG9yJyxcbiAgICAgICAgdGhpcy5wcm9wc1xuICAgICAgKVxuICAgIH07XG4gIH1cblxuICByZW5kZXJMYXllcnMoKSB7XG4gICAgY29uc3Qge2lkLCByYWRpdXNTY2FsZSwgdmlzaWJsZSwgb3BhY2l0eSwgcGlja2FibGUsIGF1dG9IaWdobGlnaHQsIGhpZ2hsaWdodENvbG9yfSA9IHRoaXNcbiAgICAgIC5wcm9wcyBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIGNvbnN0IHtjcHVBZ2dyZWdhdG9yfSA9IHRoaXMuc3RhdGUgYXMgdW5rbm93biBhcyBDbHVzdGVyTGF5ZXJTdGF0ZTtcbiAgICBjb25zdCB1cGRhdGVUcmlnZ2VycyA9IHRoaXMuX2dldFN1YmxheWVyVXBkYXRlVHJpZ2dlcnMoKTtcbiAgICBjb25zdCBhY2Nlc3NvcnMgPSB0aGlzLl9nZXRTdWJMYXllckFjY2Vzc29ycygpO1xuXG4gICAgY29uc3QgZGlzdGFuY2VTY2FsZSA9IGdldERpc3RhbmNlU2NhbGVzKHRoaXMuY29udGV4dC52aWV3cG9ydCk7XG4gICAgY29uc3QgbWV0ZXJzUGVyUGl4ZWwgPSBkaXN0YW5jZVNjYWxlLm1ldGVyc1BlclBpeGVsWzBdO1xuXG4gICAgLy8gcmV0dXJuIHByb3BzIHRvIHRoZSBzdWJsYXllciBjb25zdHJ1Y3RvclxuICAgIHJldHVybiBuZXcgU2NhdHRlcnBsb3RMYXllcih7XG4gICAgICBpZDogYCR7aWR9LWNsdXN0ZXJgLFxuICAgICAgZGF0YTogY3B1QWdncmVnYXRvci5zdGF0ZS5sYXllckRhdGEuZGF0YSxcbiAgICAgIHJhZGl1c1NjYWxlOiBtZXRlcnNQZXJQaXhlbCAqIHJhZGl1c1NjYWxlLFxuICAgICAgdmlzaWJsZSxcbiAgICAgIG9wYWNpdHksXG4gICAgICBwaWNrYWJsZSxcbiAgICAgIGF1dG9IaWdobGlnaHQsXG4gICAgICBoaWdobGlnaHRDb2xvcixcbiAgICAgIHVwZGF0ZVRyaWdnZXJzLFxuICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICBkZXB0aE1hc2s6IGZhbHNlXG4gICAgICB9LFxuICAgICAgLi4uYWNjZXNzb3JzXG4gICAgfSk7XG4gIH1cbn1cblxuQ2x1c3RlckxheWVyLmxheWVyTmFtZSA9ICdDbHVzdGVyTGF5ZXInO1xuQ2x1c3RlckxheWVyLmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxLQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxZQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxjQUFBLEdBQUFDLHVCQUFBLENBQUFMLE9BQUE7QUFNQSxJQUFBTSx3QkFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sUUFBQSxHQUFBUCxPQUFBO0FBRUEsSUFBQVEsVUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsYUFBQSxHQUFBSix1QkFBQSxDQUFBTCxPQUFBO0FBQXdFLFNBQUFLLHdCQUFBSyxDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBUCx1QkFBQSxZQUFBQSx3QkFBQUssQ0FBQSxFQUFBQyxDQUFBLFNBQUFBLENBQUEsSUFBQUQsQ0FBQSxJQUFBQSxDQUFBLENBQUFLLFVBQUEsU0FBQUwsQ0FBQSxNQUFBTSxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxLQUFBQyxTQUFBLG1CQUFBVCxDQUFBLGlCQUFBQSxDQUFBLGdCQUFBVSxPQUFBLENBQUFWLENBQUEsMEJBQUFBLENBQUEsU0FBQVEsQ0FBQSxNQUFBRixDQUFBLEdBQUFMLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLFFBQUFHLENBQUEsQ0FBQUssR0FBQSxDQUFBWCxDQUFBLFVBQUFNLENBQUEsQ0FBQU0sR0FBQSxDQUFBWixDQUFBLEdBQUFNLENBQUEsQ0FBQU8sR0FBQSxDQUFBYixDQUFBLEVBQUFRLENBQUEsY0FBQU0sRUFBQSxJQUFBZCxDQUFBLGdCQUFBYyxFQUFBLE9BQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBaEIsQ0FBQSxFQUFBYyxFQUFBLE9BQUFQLENBQUEsSUFBQUQsQ0FBQSxHQUFBVyxNQUFBLENBQUFDLGNBQUEsS0FBQUQsTUFBQSxDQUFBRSx3QkFBQSxDQUFBbkIsQ0FBQSxFQUFBYyxFQUFBLE9BQUFQLENBQUEsQ0FBQUssR0FBQSxJQUFBTCxDQUFBLENBQUFNLEdBQUEsSUFBQVAsQ0FBQSxDQUFBRSxDQUFBLEVBQUFNLEVBQUEsRUFBQVAsQ0FBQSxJQUFBQyxDQUFBLENBQUFNLEVBQUEsSUFBQWQsQ0FBQSxDQUFBYyxFQUFBLFdBQUFOLENBQUEsS0FBQVIsQ0FBQSxFQUFBQyxDQUFBO0FBQUEsU0FBQW1CLFFBQUFwQixDQUFBLEVBQUFHLENBQUEsUUFBQUYsQ0FBQSxHQUFBZ0IsTUFBQSxDQUFBSSxJQUFBLENBQUFyQixDQUFBLE9BQUFpQixNQUFBLENBQUFLLHFCQUFBLFFBQUFoQixDQUFBLEdBQUFXLE1BQUEsQ0FBQUsscUJBQUEsQ0FBQXRCLENBQUEsR0FBQUcsQ0FBQSxLQUFBRyxDQUFBLEdBQUFBLENBQUEsQ0FBQWlCLE1BQUEsV0FBQXBCLENBQUEsV0FBQWMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBbkIsQ0FBQSxFQUFBRyxDQUFBLEVBQUFxQixVQUFBLE9BQUF2QixDQUFBLENBQUF3QixJQUFBLENBQUFDLEtBQUEsQ0FBQXpCLENBQUEsRUFBQUssQ0FBQSxZQUFBTCxDQUFBO0FBQUEsU0FBQTBCLGNBQUEzQixDQUFBLGFBQUFHLENBQUEsTUFBQUEsQ0FBQSxHQUFBeUIsU0FBQSxDQUFBQyxNQUFBLEVBQUExQixDQUFBLFVBQUFGLENBQUEsV0FBQTJCLFNBQUEsQ0FBQXpCLENBQUEsSUFBQXlCLFNBQUEsQ0FBQXpCLENBQUEsUUFBQUEsQ0FBQSxPQUFBaUIsT0FBQSxDQUFBSCxNQUFBLENBQUFoQixDQUFBLE9BQUE2QixPQUFBLFdBQUEzQixDQUFBLFFBQUE0QixnQkFBQSxhQUFBL0IsQ0FBQSxFQUFBRyxDQUFBLEVBQUFGLENBQUEsQ0FBQUUsQ0FBQSxTQUFBYyxNQUFBLENBQUFlLHlCQUFBLEdBQUFmLE1BQUEsQ0FBQWdCLGdCQUFBLENBQUFqQyxDQUFBLEVBQUFpQixNQUFBLENBQUFlLHlCQUFBLENBQUEvQixDQUFBLEtBQUFtQixPQUFBLENBQUFILE1BQUEsQ0FBQWhCLENBQUEsR0FBQTZCLE9BQUEsV0FBQTNCLENBQUEsSUFBQWMsTUFBQSxDQUFBQyxjQUFBLENBQUFsQixDQUFBLEVBQUFHLENBQUEsRUFBQWMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBbEIsQ0FBQSxFQUFBRSxDQUFBLGlCQUFBSCxDQUFBO0FBQUEsU0FBQWtDLFdBQUFqQyxDQUFBLEVBQUFLLENBQUEsRUFBQU4sQ0FBQSxXQUFBTSxDQUFBLE9BQUE2QixnQkFBQSxhQUFBN0IsQ0FBQSxPQUFBOEIsMkJBQUEsYUFBQW5DLENBQUEsRUFBQW9DLHlCQUFBLEtBQUFDLE9BQUEsQ0FBQUMsU0FBQSxDQUFBakMsQ0FBQSxFQUFBTixDQUFBLFlBQUFtQyxnQkFBQSxhQUFBbEMsQ0FBQSxFQUFBdUMsV0FBQSxJQUFBbEMsQ0FBQSxDQUFBb0IsS0FBQSxDQUFBekIsQ0FBQSxFQUFBRCxDQUFBO0FBQUEsU0FBQXFDLDBCQUFBLGNBQUFwQyxDQUFBLElBQUF3QyxPQUFBLENBQUFDLFNBQUEsQ0FBQUMsT0FBQSxDQUFBM0IsSUFBQSxDQUFBc0IsT0FBQSxDQUFBQyxTQUFBLENBQUFFLE9BQUEsaUNBQUF4QyxDQUFBLGFBQUFvQyx5QkFBQSxZQUFBQSwwQkFBQSxhQUFBcEMsQ0FBQSxVQWpCeEU7QUFDQTtBQW1CQSxJQUFNMkMsYUFBYSxHQUFHQyw0QkFBaUIsQ0FBQ0MsYUFBYSxDQUFDQyxZQUFZO0FBQ2xFLElBQU1DLGtCQUFrQixHQUFHSCw0QkFBaUIsQ0FBQ0ksa0JBQWtCLENBQUNGLFlBQVk7QUFFNUUsSUFBTUcsb0JBQW9CLEdBQUcsU0FBdkJBLG9CQUFvQkEsQ0FBSUMsTUFBaUM7RUFBQSxPQUFLQSxNQUFNLENBQUN0QixNQUFNO0FBQUE7QUFDakYsSUFBTXVCLHFCQUFxQixHQUFHLFNBQXhCQSxxQkFBcUJBLENBQUlDLElBQXFEO0VBQUEsT0FDbEZBLElBQUksQ0FBQ0MsY0FBYyxHQUFHRCxJQUFJLENBQUNDLGNBQWMsQ0FBQ3pCLE1BQU0sR0FBR3dCLElBQUksQ0FBQ0YsTUFBTSxDQUFDdEIsTUFBTTtBQUFBOztBQUV2RTtBQUNBLFNBQVMwQixjQUFjQSxDQUFzQkMsSUFBSSxFQUFFQyxLQUFLLEVBQUVDLFdBQVcsRUFBQUMsSUFBQSxFQUFjO0VBQUEsSUFBWEMsUUFBUSxHQUFBRCxJQUFBLENBQVJDLFFBQVE7RUFDOUUsSUFBT0MsSUFBSSxHQUE2QkosS0FBSyxDQUF0Q0ksSUFBSTtJQUFFQyxXQUFXLEdBQWdCTCxLQUFLLENBQWhDSyxXQUFXO0lBQUVDLFVBQVUsR0FBSU4sS0FBSyxDQUFuQk0sVUFBVTtFQUNwQyxJQUFNQyxPQUFPLEdBQUcsSUFBQUMsd0JBQVUsRUFBQ0osSUFBSSxFQUFFQyxXQUFXLEVBQUVDLFVBQVUsQ0FBQztFQUN6RCxJQUFNRyxjQUFjLEdBQUcsSUFBSUMsd0JBQWMsQ0FBQyxDQUFDO0VBRTNDLElBQUksQ0FBQ0MsUUFBUSxDQUFDO0lBQUNKLE9BQU8sRUFBUEEsT0FBTztJQUFFRSxjQUFjLEVBQWRBO0VBQWMsQ0FBQyxDQUFDO0FBQzFDOztBQUVBO0FBQ0EsU0FBU0csV0FBV0EsQ0FBc0JiLElBQUksRUFBRUMsS0FBSyxFQUFFQyxXQUFXLEVBQUFZLEtBQUEsRUFBYztFQUFBLElBQUFDLHFCQUFBO0VBQUEsSUFBWFgsUUFBUSxHQUFBVSxLQUFBLENBQVJWLFFBQVE7RUFDM0UsSUFBQVksV0FBQSxHQUFrQyxJQUFJLENBQUNDLEtBQUs7SUFBckNULE9BQU8sR0FBQVEsV0FBQSxDQUFQUixPQUFPO0lBQUVFLGNBQWMsR0FBQU0sV0FBQSxDQUFkTixjQUFjO0VBQzlCLElBQU9wQixhQUFhLEdBQXlCVyxLQUFLLENBQTNDWCxhQUFhO0lBQUU0QixJQUFJLEdBQW1CakIsS0FBSyxDQUE1QmlCLElBQUk7SUFBRUMsS0FBSyxHQUFZbEIsS0FBSyxDQUF0QmtCLEtBQUs7SUFBRUMsTUFBTSxHQUFJbkIsS0FBSyxDQUFmbUIsTUFBTTtFQUN6QyxJQUFPQyxTQUFTLEdBQWNqQixRQUFRLENBQS9CaUIsU0FBUztJQUFFQyxRQUFRLEdBQUlsQixRQUFRLENBQXBCa0IsUUFBUTs7RUFFMUI7RUFDQSxJQUFNQyxJQUFJLEdBQUdDLHVCQUFXLENBQUNDLE1BQU0sQ0FBQyxDQUFDSixTQUFTLEVBQUVDLFFBQVEsQ0FBQyxFQUFFSixJQUFJLEVBQUUsQ0FBQ0MsS0FBSyxFQUFFQyxNQUFNLENBQUMsQ0FBQztFQUM3RSxJQUFNTSxRQUFRLElBQUFYLHFCQUFBLEdBQUdMLGNBQWMsYUFBZEEsY0FBYyx1QkFBZEEsY0FBYyxDQUFFaUIsY0FBYyxDQUFDO0lBQUNKLElBQUksRUFBSkEsSUFBSTtJQUFFakMsYUFBYSxFQUFiQSxhQUFhO0lBQUVrQixPQUFPLEVBQVBBLE9BQU87SUFBRVUsSUFBSSxFQUFKQTtFQUFJLENBQUMsQ0FBQyxjQUFBSCxxQkFBQSxjQUFBQSxxQkFBQSxHQUFJLEVBQUU7RUFFM0YsSUFBSSxDQUFDSCxRQUFRLENBQUM7SUFDWmdCLFNBQVMsRUFBRTtNQUFDdkIsSUFBSSxFQUFFcUI7SUFBUTtFQUM1QixDQUFDLENBQUM7QUFDSjtBQUVBLFNBQVNHLGlCQUFpQkEsQ0FDeEJDLGNBQWtELEVBQ2xEQyxTQUF3QixFQUN4QkMsVUFBK0IsRUFDL0I7RUFDQSxPQUFPLFVBQUNuQyxJQUE2QixFQUFhO0lBQ2hELElBQU9vQyxjQUFjLEdBQUlELFVBQVUsQ0FBNUJDLGNBQWM7SUFDckIsSUFBT0MsU0FBUyxHQUFJSixjQUFjLENBQTNCSSxTQUFTO0lBQ2hCLE9BQU9BLFNBQVMsQ0FBQ0QsY0FBYyxDQUFDcEMsSUFBSSxDQUFDLENBQUM7RUFDeEMsQ0FBQztBQUNIO0FBRU8sSUFBTXNDLGtCQUFtQyxHQUFBQyxPQUFBLENBQUFELGtCQUFBLEdBQUc7RUFDakRFLEdBQUcsRUFBRSxVQUFVO0VBQ2ZDLFdBQVcsRUFBRSxDQUNYO0lBQ0VELEdBQUcsRUFBRSxTQUFTO0lBQ2RFLFFBQVEsRUFBRTtNQUNSQyxRQUFRLEVBQUU7UUFDUkMsSUFBSSxFQUFFLGFBQWE7UUFDbkJDLGFBQWEsRUFBRTtNQUNqQixDQUFDO01BQ0RuQyxVQUFVLEVBQUU7UUFDVmtDLElBQUksRUFBRSxZQUFZO1FBQ2xCQyxhQUFhLEVBQUU7TUFDakI7SUFDRixDQUFDO0lBQ0RDLE9BQU8sRUFBRTVDO0VBQ1gsQ0FBQyxFQUNEO0lBQ0VzQyxHQUFHLEVBQUUsWUFBWTtJQUNqQkUsUUFBUSxFQUFFO01BQ1JqRCxhQUFhLEVBQUU7UUFDYm1ELElBQUksRUFBRTtNQUNSLENBQUM7TUFDRHZCLElBQUksRUFBRTtRQUNKdUIsSUFBSSxFQUFFO01BQ1IsQ0FBQztNQUNEdEIsS0FBSyxFQUFFO1FBQ0xzQixJQUFJLEVBQUU7TUFDUixDQUFDO01BQ0RyQixNQUFNLEVBQUU7UUFDTnFCLElBQUksRUFBRTtNQUNSO0lBQ0YsQ0FBQztJQUNERSxPQUFPLEVBQUU5QjtFQUNYLENBQUM7QUFFTCxDQUFDO0FBRUQsU0FBUytCLG9CQUFvQkEsQ0FBc0I1QyxJQUFJLEVBQUVDLEtBQUssRUFBRTRDLGdCQUFnQixFQUFFO0VBQ2hGLElBQU9SLEdBQUcsR0FBSVEsZ0JBQWdCLENBQXZCUixHQUFHO0VBQ1YsSUFBT0osY0FBYyxHQUFJaEMsS0FBSyxDQUF2QmdDLGNBQWM7RUFDckIsSUFBT0wsU0FBUyxHQUFJLElBQUksQ0FBQ1gsS0FBSyxDQUF2QlcsU0FBUztFQUVoQixJQUFNa0IsV0FBVyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUFDLFlBQUcsRUFBQ25CLFNBQVMsQ0FBQ3ZCLElBQUksRUFBeUI0QixjQUFjLENBQUMsQ0FBQztFQUNuRixJQUFJLENBQUNlLGtCQUFrQixDQUFDWCxHQUFHLEVBQUU7SUFBQ1MsV0FBVyxFQUFYQTtFQUFXLENBQUMsQ0FBQztBQUM3QztBQUVBLElBQU1HLHNCQUF5RSxHQUFHLENBQ2hGQyxvQ0FBcUIsRUFDckI7RUFDRWIsR0FBRyxFQUFFLFFBQVE7RUFDYmMsUUFBUSxFQUFFLFdBQVc7RUFDckJDLFNBQVMsRUFBRSxDQUFDO0VBQ1pkLFdBQVcsRUFBRSxDQUNYO0lBQ0VELEdBQUcsRUFBRSxXQUFXO0lBQ2hCRSxRQUFRLEVBQUU7TUFDUmMsS0FBSyxFQUFFO1FBQ0xaLElBQUksRUFBRSxnQkFBZ0I7UUFDdEJDLGFBQWEsRUFBRTtNQUNqQjtJQUNGLENBQUM7SUFDREMsT0FBTyxFQUFFQztFQUNYLENBQUMsRUFDRDtJQUNFUCxHQUFHLEVBQUUsY0FBYztJQUNuQkUsUUFBUSxFQUFFO01BQ1JlLE1BQU0sRUFBRTtRQUFDYixJQUFJLEVBQUU7TUFBYyxDQUFDO01BQzlCYyxLQUFLLEVBQUU7UUFBQ2QsSUFBSSxFQUFFO01BQWEsQ0FBQztNQUM1QmUsU0FBUyxFQUFFO1FBQUNmLElBQUksRUFBRTtNQUFpQjtJQUNyQyxDQUFDO0lBQ0RFLE9BQU8sRUFBRWM7RUFDWCxDQUFDLENBQ0Y7RUFDREMsbUJBQW1CLEVBQUU3QixpQkFBaUI7RUFDdEM4QixjQUFjLEVBQUUsU0FBaEJBLGNBQWNBLENBQUc3QixjQUFjLEVBQUVqQyxJQUFJLEVBQUVtQyxVQUFVLEVBQUs7SUFDcEQsSUFBTTRCLFdBQVcsR0FBRzVCLFVBQVUsQ0FBQ0MsY0FBYyxDQUFDcEMsSUFBSSxDQUFDO0lBQ25ELElBQU9xQyxTQUFTLEdBQUlKLGNBQWMsQ0FBM0JJLFNBQVM7SUFDaEIsSUFBTTJCLGlCQUFpQixHQUFHM0IsU0FBUyxHQUFHQSxTQUFTLENBQUMwQixXQUFXLENBQUMsR0FBR0EsV0FBVztJQUUxRSxPQUFPO01BQUNBLFdBQVcsRUFBWEEsV0FBVztNQUFFQyxpQkFBaUIsRUFBakJBO0lBQWlCLENBQUM7RUFDekM7QUFDRixDQUFDLENBQ0Y7QUFFRCxJQUFNQyxZQUFZLEdBQUc7RUFDbkJ4RSxhQUFhLEVBQUVGLGFBQWE7RUFDNUIyRSxXQUFXLEVBQUUsSUFBSTtFQUNqQkMsVUFBVSxFQUFFQyw4QkFBbUI7RUFDL0JDLGNBQWMsRUFBRUMsc0JBQVcsQ0FBQ0MsUUFBUTtFQUNwQ0MsZUFBZSxFQUFFRixzQkFBVyxDQUFDRyxJQUFJO0VBQ2pDQyxXQUFXLEVBQUUvRSxrQkFBa0I7RUFDL0JjLFdBQVcsRUFBRTtJQUFDa0UsSUFBSSxFQUFFLFVBQVU7SUFBRW5CLEtBQUssRUFBRSxTQUFQQSxLQUFLQSxDQUFFb0IsQ0FBQztNQUFBLE9BQUlBLENBQUMsQ0FBQ2pDLFFBQVE7SUFBQTtFQUFBLENBQUM7RUFDdkRrQyxhQUFhLEVBQUU7SUFBQ0YsSUFBSSxFQUFFLFVBQVU7SUFBRW5CLEtBQUssRUFBRTNEO0VBQW9CLENBQUM7RUFDOUR1QyxjQUFjLEVBQUU7SUFBQ3VDLElBQUksRUFBRSxVQUFVO0lBQUVuQixLQUFLLEVBQUV6RDtFQUFxQjtBQUNqRSxDQUFDO0FBQUMsSUFPbUIrRSxZQUFZLEdBQUF2QyxPQUFBLHFDQUFBd0MsZUFBQTtFQUFBLFNBQUFELGFBQUE7SUFBQSxJQUFBRSxnQkFBQSxtQkFBQUYsWUFBQTtJQUFBLE9BQUFqRyxVQUFBLE9BQUFpRyxZQUFBLEVBQUF2RyxTQUFBO0VBQUE7RUFBQSxJQUFBMEcsVUFBQSxhQUFBSCxZQUFBLEVBQUFDLGVBQUE7RUFBQSxXQUFBRyxhQUFBLGFBQUFKLFlBQUE7SUFBQXRDLEdBQUE7SUFBQWdCLEtBQUEsRUFDL0IsU0FBQTJCLGVBQWVBLENBQUEsRUFBRztNQUNoQixJQUFNQyxhQUFhLEdBQUcsSUFBSUMseUJBQWEsQ0FBQztRQUN0Q2hGLFdBQVcsRUFBRWlDLGtCQUFrQjtRQUMvQmdELFVBQVUsRUFBRWxDO01BQ2QsQ0FBQyxDQUFDO01BRUYsSUFBSSxDQUFDaEMsS0FBSyxHQUFHO1FBQ1hnRSxhQUFhLEVBQWJBLGFBQWE7UUFDYkcsZUFBZSxFQUFFSCxhQUFhLENBQUNoRTtNQUNqQyxDQUFDO0lBQ0g7RUFBQztJQUFBb0IsR0FBQTtJQUFBZ0IsS0FBQSxFQUVELFNBQUFnQyxXQUFXQSxDQUFBQyxLQUFBLEVBUVI7TUFBQSxJQVBEQyxRQUFRLEdBQUFELEtBQUEsQ0FBUkMsUUFBUTtRQUNSdEYsS0FBSyxHQUFBcUYsS0FBQSxDQUFMckYsS0FBSztRQUNMdUYsV0FBVyxHQUFBRixLQUFBLENBQVhFLFdBQVc7TUFNWCxJQUFJLENBQUM1RSxRQUFRLENBQUM7UUFDWndFLGVBQWUsRUFBRyxJQUFJLENBQUNuRSxLQUFLLENBQWtDZ0UsYUFBYSxDQUFDSSxXQUFXLENBQ3JGO1VBQUNFLFFBQVEsRUFBUkEsUUFBUTtVQUFFdEYsS0FBSyxFQUFMQSxLQUFLO1VBQUV1RixXQUFXLEVBQVhBO1FBQVcsQ0FBQyxFQUM5QjtVQUNFcEYsUUFBUSxFQUFFLElBQUksQ0FBQ3FGLE9BQU8sQ0FBQ3JGLFFBQVE7VUFDL0I7VUFDQXNGLFlBQVksRUFBRSxJQUFJLENBQUNDLGVBQWUsQ0FBQzFGLEtBQUs7UUFDMUMsQ0FDRjtNQUNGLENBQUMsQ0FBQztJQUNKO0VBQUM7SUFBQW9DLEdBQUE7SUFBQWdCLEtBQUEsRUFFRCxTQUFBTSxjQUFjQSxDQUFBaUMsS0FBQSxFQUE0QztNQUFBLElBQTFDQyxJQUFJLEdBQUFELEtBQUEsQ0FBSkMsSUFBSTtNQUNsQixJQUFNQyxHQUFHLEdBQUksSUFBSSxDQUFDN0UsS0FBSyxDQUFrQ2dFLGFBQWEsQ0FBQ3RCLGNBQWMsQ0FDbkY7UUFBQ2tDLElBQUksRUFBSkE7TUFBSSxDQUFDLEVBQ04sSUFBSSxDQUFDNUYsS0FDUCxDQUFDO01BQ0QsSUFBSTZGLEdBQUcsYUFBSEEsR0FBRyxlQUFIQSxHQUFHLENBQUVDLE1BQU0sRUFBRTtRQUNmLElBQU1DLGFBQWEsR0FBRyxJQUFBQywwQ0FBaUIsRUFBQyxJQUFJLENBQUNSLE9BQU8sQ0FBQ3JGLFFBQVEsQ0FBQztRQUM5RCxJQUFNOEYsY0FBYyxHQUFHRixhQUFhLENBQUNFLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDdERKLEdBQUcsQ0FBQ0MsTUFBTSxDQUFDbEMsaUJBQWlCLEdBQUdpQyxHQUFHLENBQUNDLE1BQU0sQ0FBQ2xDLGlCQUFpQixHQUFHcUMsY0FBYztNQUM5RTtNQUVBLE9BQU9KLEdBQUc7SUFDWjtFQUFDO0lBQUF6RCxHQUFBO0lBQUFnQixLQUFBLEVBRUQsU0FBQThDLDBCQUEwQkEsQ0FBQSxFQUFHO01BQzNCLE9BQVEsSUFBSSxDQUFDbEYsS0FBSyxDQUFrQ2dFLGFBQWEsQ0FBQ21CLGlCQUFpQixDQUFDLElBQUksQ0FBQ25HLEtBQUssQ0FBQztJQUNqRztFQUFDO0lBQUFvQyxHQUFBO0lBQUFnQixLQUFBLEVBRUQsU0FBQWdELHFCQUFxQkEsQ0FBQSxFQUFHO01BQ3RCLE9BQU87UUFDTEMsU0FBUyxFQUFHLElBQUksQ0FBQ3JGLEtBQUssQ0FBa0NnRSxhQUFhLENBQUNzQixXQUFXLENBQy9FLFFBQVEsRUFDUixJQUFJLENBQUN0RyxLQUNQLENBQUM7UUFDRHVHLFlBQVksRUFBRyxJQUFJLENBQUN2RixLQUFLLENBQWtDZ0UsYUFBYSxDQUFDc0IsV0FBVyxDQUNsRixXQUFXLEVBQ1gsSUFBSSxDQUFDdEcsS0FDUDtNQUNGLENBQUM7SUFDSDtFQUFDO0lBQUFvQyxHQUFBO0lBQUFnQixLQUFBLEVBRUQsU0FBQW9ELFlBQVlBLENBQUEsRUFBRztNQUNiLElBQUFDLEtBQUEsR0FBcUYsSUFBSSxDQUN0RnpHLEtBQUs7UUFERDBHLEVBQUUsR0FBQUQsS0FBQSxDQUFGQyxFQUFFO1FBQUVDLFdBQVcsR0FBQUYsS0FBQSxDQUFYRSxXQUFXO1FBQUVDLE9BQU8sR0FBQUgsS0FBQSxDQUFQRyxPQUFPO1FBQUVDLE9BQU8sR0FBQUosS0FBQSxDQUFQSSxPQUFPO1FBQUVDLFFBQVEsR0FBQUwsS0FBQSxDQUFSSyxRQUFRO1FBQUVDLGFBQWEsR0FBQU4sS0FBQSxDQUFiTSxhQUFhO1FBQUVDLGNBQWMsR0FBQVAsS0FBQSxDQUFkTyxjQUFjO01BRWpGLElBQUFDLEtBQUEsR0FBd0IsSUFBSSxDQUFDakcsS0FBSztRQUEzQmdFLGFBQWEsR0FBQWlDLEtBQUEsQ0FBYmpDLGFBQWE7TUFDcEIsSUFBTWtDLGNBQWMsR0FBRyxJQUFJLENBQUNoQiwwQkFBMEIsQ0FBQyxDQUFDO01BQ3hELElBQU1pQixTQUFTLEdBQUcsSUFBSSxDQUFDZixxQkFBcUIsQ0FBQyxDQUFDO01BRTlDLElBQU1MLGFBQWEsR0FBRyxJQUFBQywwQ0FBaUIsRUFBQyxJQUFJLENBQUNSLE9BQU8sQ0FBQ3JGLFFBQVEsQ0FBQztNQUM5RCxJQUFNOEYsY0FBYyxHQUFHRixhQUFhLENBQUNFLGNBQWMsQ0FBQyxDQUFDLENBQUM7O01BRXREO01BQ0EsT0FBTyxJQUFJbUIsd0JBQWdCLENBQUFsSixhQUFBO1FBQ3pCd0ksRUFBRSxLQUFBVyxNQUFBLENBQUtYLEVBQUUsYUFBVTtRQUNuQnRHLElBQUksRUFBRTRFLGFBQWEsQ0FBQ2hFLEtBQUssQ0FBQ1csU0FBUyxDQUFDdkIsSUFBSTtRQUN4Q3VHLFdBQVcsRUFBRVYsY0FBYyxHQUFHVSxXQUFXO1FBQ3pDQyxPQUFPLEVBQVBBLE9BQU87UUFDUEMsT0FBTyxFQUFQQSxPQUFPO1FBQ1BDLFFBQVEsRUFBUkEsUUFBUTtRQUNSQyxhQUFhLEVBQWJBLGFBQWE7UUFDYkMsY0FBYyxFQUFkQSxjQUFjO1FBQ2RFLGNBQWMsRUFBZEEsY0FBYztRQUNkSSxVQUFVLEVBQUU7VUFDVkMsU0FBUyxFQUFFO1FBQ2I7TUFBQyxHQUNFSixTQUFTLENBQ2IsQ0FBQztJQUNKO0VBQUM7QUFBQSxFQTNGdUNLLG9CQUFjO0FBOEZ4RDlDLFlBQVksQ0FBQytDLFNBQVMsR0FBRyxjQUFjO0FBQ3ZDL0MsWUFBWSxDQUFDYixZQUFZLEdBQUdBLFlBQVkiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports["default"] = void 0;
8
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
8
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
11
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
@@ -19,12 +20,24 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
19
20
  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; }
20
21
  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)); }
21
22
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
22
- function _superPropGet(t, e, r, o) { var p = (0, _get2["default"])((0, _getPrototypeOf2["default"])(1 & o ? t.prototype : t), e, r); return 2 & o ? function (t) { return p.apply(r, t); } : p; } // SPDX-License-Identifier: MIT
23
+ 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
23
24
  // Copyright contributors to the kepler.gl project
25
+ // deck.gl 9 / luma 9 sets custom uniforms via UBO-backed shader modules (Model has
26
+ // no setUniforms). This module exposes the globe-mode flag to the shader.
27
+ var globeModeUniforms = {
28
+ name: 'globeMode',
29
+ vs: "layout(std140) uniform globeModeUniforms {\n float globeMode;\n} globeModeProps;\n",
30
+ uniformTypes: {
31
+ globeMode: 'f32'
32
+ }
33
+ };
24
34
  function addInstanceCoverage(vs) {
25
35
  var addDecl = (0, _.editShader)(vs, 'hexagon cell vs add instance 1', 'in vec3 instancePickingColors;', "in vec3 instancePickingColors;\n in float instanceCoverage;");
26
36
  return (0, _.editShader)(addDecl, 'hexagon cell vs add instance 2', 'float dotRadius = column.radius * column.coverage * shouldRender;', 'float dotRadius = column.radius * column.coverage * instanceCoverage * shouldRender;');
27
37
  }
38
+ function addGlobeScaling(vs) {
39
+ return (0, _.editShader)(vs, 'hexagon cell vs globe scale mod', 'vec2 offset = (rotationMatrix * positions.xy * strokeOffsetRatio + column.offset) * dotRadius;', "float radiusGlobeMod = globeModeProps.globeMode > 0.5 ? sin((90.0 - abs(geometry.worldPosition.y)) * PI / 180.0) * PI : 1.0;\n vec2 offset = (rotationMatrix * positions.xy * strokeOffsetRatio + column.offset) * dotRadius * radiusGlobeMod;");
40
+ }
28
41
  var EnhancedColumnLayer = /*#__PURE__*/function (_ColumnLayer) {
29
42
  function EnhancedColumnLayer() {
30
43
  (0, _classCallCheck2["default"])(this, EnhancedColumnLayer);
@@ -35,8 +48,10 @@ var EnhancedColumnLayer = /*#__PURE__*/function (_ColumnLayer) {
35
48
  key: "getShaders",
36
49
  value: function getShaders() {
37
50
  var shaders = _superPropGet(EnhancedColumnLayer, "getShaders", this, 3)([]);
51
+ var vs = addGlobeScaling(addInstanceCoverage(shaders.vs));
38
52
  return _objectSpread(_objectSpread({}, shaders), {}, {
39
- vs: addInstanceCoverage(shaders.vs)
53
+ vs: vs,
54
+ modules: [].concat((0, _toConsumableArray2["default"])(shaders.modules || []), [globeModeUniforms])
40
55
  });
41
56
  }
42
57
  }, {
@@ -76,6 +91,7 @@ var EnhancedColumnLayer = /*#__PURE__*/function (_ColumnLayer) {
76
91
  var _this$state = this.state,
77
92
  fillVertexCount = _this$state.fillVertexCount,
78
93
  edgeDistance = _this$state.edgeDistance;
94
+ var globeMode = this.context.viewport.resolution ? 1.0 : 0.0;
79
95
  var columnProps = {
80
96
  radius: radius,
81
97
  angle: angle / 180 * Math.PI,
@@ -95,7 +111,10 @@ var EnhancedColumnLayer = /*#__PURE__*/function (_ColumnLayer) {
95
111
  wireframeModel.shaderInputs.setProps({
96
112
  column: _objectSpread(_objectSpread({}, columnProps), {}, {
97
113
  isStroke: true
98
- })
114
+ }),
115
+ globeMode: {
116
+ globeMode: globeMode
117
+ }
99
118
  });
100
119
  wireframeModel.draw(this.context.renderPass);
101
120
  }
@@ -104,7 +123,10 @@ var EnhancedColumnLayer = /*#__PURE__*/function (_ColumnLayer) {
104
123
  fillModel.shaderInputs.setProps({
105
124
  column: _objectSpread(_objectSpread({}, columnProps), {}, {
106
125
  isStroke: false
107
- })
126
+ }),
127
+ globeMode: {
128
+ globeMode: globeMode
129
+ }
108
130
  });
109
131
  fillModel.draw(this.context.renderPass);
110
132
  }
@@ -116,6 +138,9 @@ var EnhancedColumnLayer = /*#__PURE__*/function (_ColumnLayer) {
116
138
  }),
117
139
  layer: {
118
140
  opacity: strokeOpacity !== null && strokeOpacity !== void 0 ? strokeOpacity : this.props.opacity
141
+ },
142
+ globeMode: {
143
+ globeMode: globeMode
119
144
  }
120
145
  });
121
146
  fillModel.draw(this.context.renderPass);
@@ -132,4 +157,4 @@ var EnhancedColumnLayer = /*#__PURE__*/function (_ColumnLayer) {
132
157
  }(_layers.ColumnLayer);
133
158
  EnhancedColumnLayer.layerName = 'EnhancedColumnLayer';
134
159
  var _default = exports["default"] = EnhancedColumnLayer;
135
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGF5ZXJzIiwicmVxdWlyZSIsIl9jb3JlIiwiXyIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJjYWxsIiwiX3N1cGVyUHJvcEdldCIsInAiLCJfZ2V0MiIsImFkZEluc3RhbmNlQ292ZXJhZ2UiLCJ2cyIsImFkZERlY2wiLCJlZGl0U2hhZGVyIiwiRW5oYW5jZWRDb2x1bW5MYXllciIsIl9Db2x1bW5MYXllciIsIl9jbGFzc0NhbGxDaGVjazIiLCJfaW5oZXJpdHMyIiwiX2NyZWF0ZUNsYXNzMiIsImtleSIsInZhbHVlIiwiZ2V0U2hhZGVycyIsInNoYWRlcnMiLCJpbml0aWFsaXplU3RhdGUiLCJfdGhpcyRnZXRBdHRyaWJ1dGVNYW4iLCJnZXRBdHRyaWJ1dGVNYW5hZ2VyIiwiYWRkSW5zdGFuY2VkIiwiaW5zdGFuY2VDb3ZlcmFnZSIsInNpemUiLCJhY2Nlc3NvciIsImRyYXciLCJfcmVmIiwiX3VuaWZvcm1zIiwidW5pZm9ybXMiLCJfdGhpcyRwcm9wcyIsInByb3BzIiwibGluZVdpZHRoVW5pdHMiLCJsaW5lV2lkdGhTY2FsZSIsImxpbmVXaWR0aE1pblBpeGVscyIsImxpbmVXaWR0aE1heFBpeGVscyIsInJhZGl1c1VuaXRzIiwiZWxldmF0aW9uU2NhbGUiLCJleHRydWRlZCIsImZpbGxlZCIsInN0cm9rZWQiLCJzdHJva2VPcGFjaXR5Iiwid2lyZWZyYW1lIiwib2Zmc2V0IiwiY292ZXJhZ2UiLCJyYWRpdXMiLCJhbmdsZSIsImZpbGxNb2RlbCIsInN0YXRlIiwid2lyZWZyYW1lTW9kZWwiLCJfdGhpcyRzdGF0ZSIsImZpbGxWZXJ0ZXhDb3VudCIsImVkZ2VEaXN0YW5jZSIsImNvbHVtblByb3BzIiwiTWF0aCIsIlBJIiwiVU5JVCIsIndpZHRoVW5pdHMiLCJ3aWR0aFNjYWxlIiwid2lkdGhNaW5QaXhlbHMiLCJ3aWR0aE1heFBpeGVscyIsInNoYWRlcklucHV0cyIsInNldFByb3BzIiwiY29sdW1uIiwiaXNTdHJva2UiLCJjb250ZXh0IiwicmVuZGVyUGFzcyIsInNldFZlcnRleENvdW50IiwibGF5ZXIiLCJvcGFjaXR5IiwiQ29sdW1uTGF5ZXIiLCJsYXllck5hbWUiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29sdW1uLWxheWVyL2VuaGFuY2VkLWNvbHVtbi1sYXllci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge0NvbHVtbkxheWVyLCBDb2x1bW5MYXllclByb3BzfSBmcm9tICdAZGVjay5nbC9sYXllcnMnO1xuaW1wb3J0IHtVTklUfSBmcm9tICdAZGVjay5nbC9jb3JlJztcblxuaW1wb3J0IHtlZGl0U2hhZGVyfSBmcm9tICcuLi8nO1xuXG5mdW5jdGlvbiBhZGRJbnN0YW5jZUNvdmVyYWdlKHZzOiBzdHJpbmcpIHtcbiAgY29uc3QgYWRkRGVjbCA9IGVkaXRTaGFkZXIoXG4gICAgdnMsXG4gICAgJ2hleGFnb24gY2VsbCB2cyBhZGQgaW5zdGFuY2UgMScsXG4gICAgJ2luIHZlYzMgaW5zdGFuY2VQaWNraW5nQ29sb3JzOycsXG4gICAgYGluIHZlYzMgaW5zdGFuY2VQaWNraW5nQ29sb3JzO1xuICAgICBpbiBmbG9hdCBpbnN0YW5jZUNvdmVyYWdlO2BcbiAgKTtcblxuICByZXR1cm4gZWRpdFNoYWRlcihcbiAgICBhZGREZWNsLFxuICAgICdoZXhhZ29uIGNlbGwgdnMgYWRkIGluc3RhbmNlIDInLFxuICAgICdmbG9hdCBkb3RSYWRpdXMgPSBjb2x1bW4ucmFkaXVzICogY29sdW1uLmNvdmVyYWdlICogc2hvdWxkUmVuZGVyOycsXG4gICAgJ2Zsb2F0IGRvdFJhZGl1cyA9IGNvbHVtbi5yYWRpdXMgKiBjb2x1bW4uY292ZXJhZ2UgKiBpbnN0YW5jZUNvdmVyYWdlICogc2hvdWxkUmVuZGVyOydcbiAgKTtcbn1cblxudHlwZSBFbmhhbmNlZENvbHVtbkxheWVyUHJvcHMgPSBDb2x1bW5MYXllclByb3BzPGFueT4gJiB7XG4gIHN0cm9rZU9wYWNpdHk6IG51bWJlcjtcbn07XG5cbmNsYXNzIEVuaGFuY2VkQ29sdW1uTGF5ZXIgZXh0ZW5kcyBDb2x1bW5MYXllcjxhbnksIEVuaGFuY2VkQ29sdW1uTGF5ZXJQcm9wcz4ge1xuICBnZXRTaGFkZXJzKCkge1xuICAgIGNvbnN0IHNoYWRlcnMgPSBzdXBlci5nZXRTaGFkZXJzKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc2hhZGVycyxcbiAgICAgIHZzOiBhZGRJbnN0YW5jZUNvdmVyYWdlKHNoYWRlcnMudnMpXG4gICAgfTtcbiAgfVxuXG4gIGluaXRpYWxpemVTdGF0ZSgpIHtcbiAgICBzdXBlci5pbml0aWFsaXplU3RhdGUoKTtcblxuICAgIHRoaXMuZ2V0QXR0cmlidXRlTWFuYWdlcigpPy5hZGRJbnN0YW5jZWQoe1xuICAgICAgaW5zdGFuY2VDb3ZlcmFnZToge3NpemU6IDEsIGFjY2Vzc29yOiAnZ2V0Q292ZXJhZ2UnfVxuICAgIH0pO1xuICB9XG5cbiAgZHJhdyh7dW5pZm9ybXM6IF91bmlmb3Jtc30pIHtcbiAgICBjb25zdCB7XG4gICAgICBsaW5lV2lkdGhVbml0cyxcbiAgICAgIGxpbmVXaWR0aFNjYWxlLFxuICAgICAgbGluZVdpZHRoTWluUGl4ZWxzLFxuICAgICAgbGluZVdpZHRoTWF4UGl4ZWxzLFxuICAgICAgcmFkaXVzVW5pdHMsXG4gICAgICBlbGV2YXRpb25TY2FsZSxcbiAgICAgIGV4dHJ1ZGVkLFxuICAgICAgZmlsbGVkLFxuICAgICAgc3Ryb2tlZCxcbiAgICAgIHN0cm9rZU9wYWNpdHksXG4gICAgICB3aXJlZnJhbWUsXG4gICAgICBvZmZzZXQsXG4gICAgICBjb3ZlcmFnZSxcbiAgICAgIHJhZGl1cyxcbiAgICAgIGFuZ2xlXG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgZmlsbE1vZGVsID0gdGhpcy5zdGF0ZS5maWxsTW9kZWw7XG4gICAgY29uc3Qgd2lyZWZyYW1lTW9kZWwgPSB0aGlzLnN0YXRlLndpcmVmcmFtZU1vZGVsO1xuICAgIGNvbnN0IHtmaWxsVmVydGV4Q291bnQsIGVkZ2VEaXN0YW5jZX0gPSB0aGlzLnN0YXRlO1xuXG4gICAgY29uc3QgY29sdW1uUHJvcHMgPSB7XG4gICAgICByYWRpdXMsXG4gICAgICBhbmdsZTogKGFuZ2xlIC8gMTgwKSAqIE1hdGguUEksXG4gICAgICBvZmZzZXQsXG4gICAgICBleHRydWRlZCxcbiAgICAgIHN0cm9rZWQsXG4gICAgICBjb3ZlcmFnZSxcbiAgICAgIGVsZXZhdGlvblNjYWxlLFxuICAgICAgZWRnZURpc3RhbmNlLFxuICAgICAgcmFkaXVzVW5pdHM6IFVOSVRbcmFkaXVzVW5pdHNdLFxuICAgICAgd2lkdGhVbml0czogVU5JVFtsaW5lV2lkdGhVbml0c10sXG4gICAgICB3aWR0aFNjYWxlOiBsaW5lV2lkdGhTY2FsZSxcbiAgICAgIHdpZHRoTWluUGl4ZWxzOiBsaW5lV2lkdGhNaW5QaXhlbHMsXG4gICAgICB3aWR0aE1heFBpeGVsczogbGluZVdpZHRoTWF4UGl4ZWxzXG4gICAgfTtcblxuICAgIGlmIChleHRydWRlZCAmJiB3aXJlZnJhbWUgJiYgd2lyZWZyYW1lTW9kZWwpIHtcbiAgICAgIHdpcmVmcmFtZU1vZGVsLnNoYWRlcklucHV0cy5zZXRQcm9wcyh7XG4gICAgICAgIGNvbHVtbjogey4uLmNvbHVtblByb3BzLCBpc1N0cm9rZTogdHJ1ZX1cbiAgICAgIH0pO1xuICAgICAgd2lyZWZyYW1lTW9kZWwuZHJhdyh0aGlzLmNvbnRleHQucmVuZGVyUGFzcyk7XG4gICAgfVxuICAgIGlmIChmaWxsZWQgJiYgZmlsbE1vZGVsKSB7XG4gICAgICBmaWxsTW9kZWwuc2V0VmVydGV4Q291bnQoZmlsbFZlcnRleENvdW50KTtcbiAgICAgIGZpbGxNb2RlbC5zaGFkZXJJbnB1dHMuc2V0UHJvcHMoe1xuICAgICAgICBjb2x1bW46IHsuLi5jb2x1bW5Qcm9wcywgaXNTdHJva2U6IGZhbHNlfVxuICAgICAgfSk7XG4gICAgICBmaWxsTW9kZWwuZHJhdyh0aGlzLmNvbnRleHQucmVuZGVyUGFzcyk7XG4gICAgfVxuICAgIGlmICghZXh0cnVkZWQgJiYgc3Ryb2tlZCAmJiBmaWxsTW9kZWwpIHtcbiAgICAgIGZpbGxNb2RlbC5zZXRWZXJ0ZXhDb3VudCgoZmlsbFZlcnRleENvdW50ICogMikgLyAzKTtcbiAgICAgIGZpbGxNb2RlbC5zaGFkZXJJbnB1dHMuc2V0UHJvcHMoe1xuICAgICAgICBjb2x1bW46IHsuLi5jb2x1bW5Qcm9wcywgaXNTdHJva2U6IHRydWV9LFxuICAgICAgICBsYXllcjoge29wYWNpdHk6IHN0cm9rZU9wYWNpdHkgPz8gdGhpcy5wcm9wcy5vcGFjaXR5fVxuICAgICAgfSk7XG4gICAgICBmaWxsTW9kZWwuZHJhdyh0aGlzLmNvbnRleHQucmVuZGVyUGFzcyk7XG4gICAgICAvLyBSZXN0b3JlIG9yaWdpbmFsIHZlcnRleCBjb3VudCBhbmQgb3BhY2l0eSBzbyBzdWJzZXF1ZW50IHBhc3NlcyBhcmUgdW5hZmZlY3RlZFxuICAgICAgZmlsbE1vZGVsLnNldFZlcnRleENvdW50KGZpbGxWZXJ0ZXhDb3VudCk7XG4gICAgICBmaWxsTW9kZWwuc2hhZGVySW5wdXRzLnNldFByb3BzKHtcbiAgICAgICAgbGF5ZXI6IHtvcGFjaXR5OiB0aGlzLnByb3BzLm9wYWNpdHl9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuRW5oYW5jZWRDb2x1bW5MYXllci5sYXllck5hbWUgPSAnRW5oYW5jZWRDb2x1bW5MYXllcic7XG5cbmV4cG9ydCBkZWZhdWx0IEVuaGFuY2VkQ29sdW1uTGF5ZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBRCxPQUFBO0FBRUEsSUFBQUUsQ0FBQSxHQUFBRixPQUFBO0FBQStCLFNBQUFHLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFMLENBQUEsR0FBQUMsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFRLFVBQUEsT0FBQVAsQ0FBQSxDQUFBUSxJQUFBLENBQUFDLEtBQUEsQ0FBQVQsQ0FBQSxFQUFBSSxDQUFBLFlBQUFKLENBQUE7QUFBQSxTQUFBVSxjQUFBWixDQUFBLGFBQUFDLENBQUEsTUFBQUEsQ0FBQSxHQUFBWSxTQUFBLENBQUFDLE1BQUEsRUFBQWIsQ0FBQSxVQUFBQyxDQUFBLFdBQUFXLFNBQUEsQ0FBQVosQ0FBQSxJQUFBWSxTQUFBLENBQUFaLENBQUEsUUFBQUEsQ0FBQSxPQUFBRixPQUFBLENBQUFJLE1BQUEsQ0FBQUQsQ0FBQSxPQUFBYSxPQUFBLFdBQUFkLENBQUEsUUFBQWUsZ0JBQUEsYUFBQWhCLENBQUEsRUFBQUMsQ0FBQSxFQUFB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
160
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGF5ZXJzIiwicmVxdWlyZSIsIl9jb3JlIiwiXyIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJjYWxsIiwiX3N1cGVyUHJvcEdldCIsInAiLCJfZ2V0MiIsImdsb2JlTW9kZVVuaWZvcm1zIiwibmFtZSIsInZzIiwidW5pZm9ybVR5cGVzIiwiZ2xvYmVNb2RlIiwiYWRkSW5zdGFuY2VDb3ZlcmFnZSIsImFkZERlY2wiLCJlZGl0U2hhZGVyIiwiYWRkR2xvYmVTY2FsaW5nIiwiRW5oYW5jZWRDb2x1bW5MYXllciIsIl9Db2x1bW5MYXllciIsIl9jbGFzc0NhbGxDaGVjazIiLCJfaW5oZXJpdHMyIiwiX2NyZWF0ZUNsYXNzMiIsImtleSIsInZhbHVlIiwiZ2V0U2hhZGVycyIsInNoYWRlcnMiLCJtb2R1bGVzIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImluaXRpYWxpemVTdGF0ZSIsIl90aGlzJGdldEF0dHJpYnV0ZU1hbiIsImdldEF0dHJpYnV0ZU1hbmFnZXIiLCJhZGRJbnN0YW5jZWQiLCJpbnN0YW5jZUNvdmVyYWdlIiwic2l6ZSIsImFjY2Vzc29yIiwiZHJhdyIsIl9yZWYiLCJfdW5pZm9ybXMiLCJ1bmlmb3JtcyIsIl90aGlzJHByb3BzIiwicHJvcHMiLCJsaW5lV2lkdGhVbml0cyIsImxpbmVXaWR0aFNjYWxlIiwibGluZVdpZHRoTWluUGl4ZWxzIiwibGluZVdpZHRoTWF4UGl4ZWxzIiwicmFkaXVzVW5pdHMiLCJlbGV2YXRpb25TY2FsZSIsImV4dHJ1ZGVkIiwiZmlsbGVkIiwic3Ryb2tlZCIsInN0cm9rZU9wYWNpdHkiLCJ3aXJlZnJhbWUiLCJvZmZzZXQiLCJjb3ZlcmFnZSIsInJhZGl1cyIsImFuZ2xlIiwiZmlsbE1vZGVsIiwic3RhdGUiLCJ3aXJlZnJhbWVNb2RlbCIsIl90aGlzJHN0YXRlIiwiZmlsbFZlcnRleENvdW50IiwiZWRnZURpc3RhbmNlIiwiY29udGV4dCIsInZpZXdwb3J0IiwicmVzb2x1dGlvbiIsImNvbHVtblByb3BzIiwiTWF0aCIsIlBJIiwiVU5JVCIsIndpZHRoVW5pdHMiLCJ3aWR0aFNjYWxlIiwid2lkdGhNaW5QaXhlbHMiLCJ3aWR0aE1heFBpeGVscyIsInNoYWRlcklucHV0cyIsInNldFByb3BzIiwiY29sdW1uIiwiaXNTdHJva2UiLCJyZW5kZXJQYXNzIiwic2V0VmVydGV4Q291bnQiLCJsYXllciIsIm9wYWNpdHkiLCJDb2x1bW5MYXllciIsImxheWVyTmFtZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb2x1bW4tbGF5ZXIvZW5oYW5jZWQtY29sdW1uLWxheWVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7Q29sdW1uTGF5ZXIsIENvbHVtbkxheWVyUHJvcHN9IGZyb20gJ0BkZWNrLmdsL2xheWVycyc7XG5pbXBvcnQge1VOSVR9IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuXG5pbXBvcnQge2VkaXRTaGFkZXJ9IGZyb20gJy4uLyc7XG5cbi8vIGRlY2suZ2wgOSAvIGx1bWEgOSBzZXRzIGN1c3RvbSB1bmlmb3JtcyB2aWEgVUJPLWJhY2tlZCBzaGFkZXIgbW9kdWxlcyAoTW9kZWwgaGFzXG4vLyBubyBzZXRVbmlmb3JtcykuIFRoaXMgbW9kdWxlIGV4cG9zZXMgdGhlIGdsb2JlLW1vZGUgZmxhZyB0byB0aGUgc2hhZGVyLlxuY29uc3QgZ2xvYmVNb2RlVW5pZm9ybXMgPSB7XG4gIG5hbWU6ICdnbG9iZU1vZGUnLFxuICB2czogYGxheW91dChzdGQxNDApIHVuaWZvcm0gZ2xvYmVNb2RlVW5pZm9ybXMge1xuICBmbG9hdCBnbG9iZU1vZGU7XG59IGdsb2JlTW9kZVByb3BzO1xuYCxcbiAgdW5pZm9ybVR5cGVzOiB7XG4gICAgZ2xvYmVNb2RlOiAnZjMyJ1xuICB9XG59IGFzIGNvbnN0O1xuXG5mdW5jdGlvbiBhZGRJbnN0YW5jZUNvdmVyYWdlKHZzOiBzdHJpbmcpIHtcbiAgY29uc3QgYWRkRGVjbCA9IGVkaXRTaGFkZXIoXG4gICAgdnMsXG4gICAgJ2hleGFnb24gY2VsbCB2cyBhZGQgaW5zdGFuY2UgMScsXG4gICAgJ2luIHZlYzMgaW5zdGFuY2VQaWNraW5nQ29sb3JzOycsXG4gICAgYGluIHZlYzMgaW5zdGFuY2VQaWNraW5nQ29sb3JzO1xuICAgICBpbiBmbG9hdCBpbnN0YW5jZUNvdmVyYWdlO2BcbiAgKTtcblxuICByZXR1cm4gZWRpdFNoYWRlcihcbiAgICBhZGREZWNsLFxuICAgICdoZXhhZ29uIGNlbGwgdnMgYWRkIGluc3RhbmNlIDInLFxuICAgICdmbG9hdCBkb3RSYWRpdXMgPSBjb2x1bW4ucmFkaXVzICogY29sdW1uLmNvdmVyYWdlICogc2hvdWxkUmVuZGVyOycsXG4gICAgJ2Zsb2F0IGRvdFJhZGl1cyA9IGNvbHVtbi5yYWRpdXMgKiBjb2x1bW4uY292ZXJhZ2UgKiBpbnN0YW5jZUNvdmVyYWdlICogc2hvdWxkUmVuZGVyOydcbiAgKTtcbn1cblxuZnVuY3Rpb24gYWRkR2xvYmVTY2FsaW5nKHZzOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGVkaXRTaGFkZXIoXG4gICAgdnMsXG4gICAgJ2hleGFnb24gY2VsbCB2cyBnbG9iZSBzY2FsZSBtb2QnLFxuICAgICd2ZWMyIG9mZnNldCA9IChyb3RhdGlvbk1hdHJpeCAqIHBvc2l0aW9ucy54eSAqIHN0cm9rZU9mZnNldFJhdGlvICsgY29sdW1uLm9mZnNldCkgKiBkb3RSYWRpdXM7JyxcbiAgICBgZmxvYXQgcmFkaXVzR2xvYmVNb2QgPSBnbG9iZU1vZGVQcm9wcy5nbG9iZU1vZGUgPiAwLjUgPyBzaW4oKDkwLjAgLSBhYnMoZ2VvbWV0cnkud29ybGRQb3NpdGlvbi55KSkgKiBQSSAvIDE4MC4wKSAqIFBJIDogMS4wO1xuICAgICAgdmVjMiBvZmZzZXQgPSAocm90YXRpb25NYXRyaXggKiBwb3NpdGlvbnMueHkgKiBzdHJva2VPZmZzZXRSYXRpbyArIGNvbHVtbi5vZmZzZXQpICogZG90UmFkaXVzICogcmFkaXVzR2xvYmVNb2Q7YFxuICApO1xufVxuXG50eXBlIEVuaGFuY2VkQ29sdW1uTGF5ZXJQcm9wcyA9IENvbHVtbkxheWVyUHJvcHM8YW55PiAmIHtcbiAgc3Ryb2tlT3BhY2l0eTogbnVtYmVyO1xufTtcblxuY2xhc3MgRW5oYW5jZWRDb2x1bW5MYXllciBleHRlbmRzIENvbHVtbkxheWVyPGFueSwgRW5oYW5jZWRDb2x1bW5MYXllclByb3BzPiB7XG4gIGdldFNoYWRlcnMoKSB7XG4gICAgY29uc3Qgc2hhZGVycyA9IHN1cGVyLmdldFNoYWRlcnMoKTtcblxuICAgIGNvbnN0IHZzID0gYWRkR2xvYmVTY2FsaW5nKGFkZEluc3RhbmNlQ292ZXJhZ2Uoc2hhZGVycy52cykpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnNoYWRlcnMsXG4gICAgICB2cyxcbiAgICAgIG1vZHVsZXM6IFsuLi4oc2hhZGVycy5tb2R1bGVzIHx8IFtdKSwgZ2xvYmVNb2RlVW5pZm9ybXNdXG4gICAgfTtcbiAgfVxuXG4gIGluaXRpYWxpemVTdGF0ZSgpIHtcbiAgICBzdXBlci5pbml0aWFsaXplU3RhdGUoKTtcblxuICAgIHRoaXMuZ2V0QXR0cmlidXRlTWFuYWdlcigpPy5hZGRJbnN0YW5jZWQoe1xuICAgICAgaW5zdGFuY2VDb3ZlcmFnZToge3NpemU6IDEsIGFjY2Vzc29yOiAnZ2V0Q292ZXJhZ2UnfVxuICAgIH0pO1xuICB9XG5cbiAgZHJhdyh7dW5pZm9ybXM6IF91bmlmb3Jtc30pIHtcbiAgICBjb25zdCB7XG4gICAgICBsaW5lV2lkdGhVbml0cyxcbiAgICAgIGxpbmVXaWR0aFNjYWxlLFxuICAgICAgbGluZVdpZHRoTWluUGl4ZWxzLFxuICAgICAgbGluZVdpZHRoTWF4UGl4ZWxzLFxuICAgICAgcmFkaXVzVW5pdHMsXG4gICAgICBlbGV2YXRpb25TY2FsZSxcbiAgICAgIGV4dHJ1ZGVkLFxuICAgICAgZmlsbGVkLFxuICAgICAgc3Ryb2tlZCxcbiAgICAgIHN0cm9rZU9wYWNpdHksXG4gICAgICB3aXJlZnJhbWUsXG4gICAgICBvZmZzZXQsXG4gICAgICBjb3ZlcmFnZSxcbiAgICAgIHJhZGl1cyxcbiAgICAgIGFuZ2xlXG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgZmlsbE1vZGVsID0gdGhpcy5zdGF0ZS5maWxsTW9kZWw7XG4gICAgY29uc3Qgd2lyZWZyYW1lTW9kZWwgPSB0aGlzLnN0YXRlLndpcmVmcmFtZU1vZGVsO1xuICAgIGNvbnN0IHtmaWxsVmVydGV4Q291bnQsIGVkZ2VEaXN0YW5jZX0gPSB0aGlzLnN0YXRlO1xuXG4gICAgY29uc3QgZ2xvYmVNb2RlID0gKHRoaXMuY29udGV4dC52aWV3cG9ydCBhcyBhbnkpLnJlc29sdXRpb24gPyAxLjAgOiAwLjA7XG5cbiAgICBjb25zdCBjb2x1bW5Qcm9wcyA9IHtcbiAgICAgIHJhZGl1cyxcbiAgICAgIGFuZ2xlOiAoYW5nbGUgLyAxODApICogTWF0aC5QSSxcbiAgICAgIG9mZnNldCxcbiAgICAgIGV4dHJ1ZGVkLFxuICAgICAgc3Ryb2tlZCxcbiAgICAgIGNvdmVyYWdlLFxuICAgICAgZWxldmF0aW9uU2NhbGUsXG4gICAgICBlZGdlRGlzdGFuY2UsXG4gICAgICByYWRpdXNVbml0czogVU5JVFtyYWRpdXNVbml0c10sXG4gICAgICB3aWR0aFVuaXRzOiBVTklUW2xpbmVXaWR0aFVuaXRzXSxcbiAgICAgIHdpZHRoU2NhbGU6IGxpbmVXaWR0aFNjYWxlLFxuICAgICAgd2lkdGhNaW5QaXhlbHM6IGxpbmVXaWR0aE1pblBpeGVscyxcbiAgICAgIHdpZHRoTWF4UGl4ZWxzOiBsaW5lV2lkdGhNYXhQaXhlbHNcbiAgICB9O1xuXG4gICAgaWYgKGV4dHJ1ZGVkICYmIHdpcmVmcmFtZSAmJiB3aXJlZnJhbWVNb2RlbCkge1xuICAgICAgd2lyZWZyYW1lTW9kZWwuc2hhZGVySW5wdXRzLnNldFByb3BzKHtcbiAgICAgICAgY29sdW1uOiB7Li4uY29sdW1uUHJvcHMsIGlzU3Ryb2tlOiB0cnVlfSxcbiAgICAgICAgZ2xvYmVNb2RlOiB7Z2xvYmVNb2RlfVxuICAgICAgfSk7XG4gICAgICB3aXJlZnJhbWVNb2RlbC5kcmF3KHRoaXMuY29udGV4dC5yZW5kZXJQYXNzKTtcbiAgICB9XG4gICAgaWYgKGZpbGxlZCAmJiBmaWxsTW9kZWwpIHtcbiAgICAgIGZpbGxNb2RlbC5zZXRWZXJ0ZXhDb3VudChmaWxsVmVydGV4Q291bnQpO1xuICAgICAgZmlsbE1vZGVsLnNoYWRlcklucHV0cy5zZXRQcm9wcyh7XG4gICAgICAgIGNvbHVtbjogey4uLmNvbHVtblByb3BzLCBpc1N0cm9rZTogZmFsc2V9LFxuICAgICAgICBnbG9iZU1vZGU6IHtnbG9iZU1vZGV9XG4gICAgICB9KTtcbiAgICAgIGZpbGxNb2RlbC5kcmF3KHRoaXMuY29udGV4dC5yZW5kZXJQYXNzKTtcbiAgICB9XG4gICAgaWYgKCFleHRydWRlZCAmJiBzdHJva2VkICYmIGZpbGxNb2RlbCkge1xuICAgICAgZmlsbE1vZGVsLnNldFZlcnRleENvdW50KChmaWxsVmVydGV4Q291bnQgKiAyKSAvIDMpO1xuICAgICAgZmlsbE1vZGVsLnNoYWRlcklucHV0cy5zZXRQcm9wcyh7XG4gICAgICAgIGNvbHVtbjogey4uLmNvbHVtblByb3BzLCBpc1N0cm9rZTogdHJ1ZX0sXG4gICAgICAgIGxheWVyOiB7b3BhY2l0eTogc3Ryb2tlT3BhY2l0eSA/PyB0aGlzLnByb3BzLm9wYWNpdHl9LFxuICAgICAgICBnbG9iZU1vZGU6IHtnbG9iZU1vZGV9XG4gICAgICB9KTtcbiAgICAgIGZpbGxNb2RlbC5kcmF3KHRoaXMuY29udGV4dC5yZW5kZXJQYXNzKTtcbiAgICAgIC8vIFJlc3RvcmUgb3JpZ2luYWwgdmVydGV4IGNvdW50IGFuZCBvcGFjaXR5IHNvIHN1YnNlcXVlbnQgcGFzc2VzIGFyZSB1bmFmZmVjdGVkXG4gICAgICBmaWxsTW9kZWwuc2V0VmVydGV4Q291bnQoZmlsbFZlcnRleENvdW50KTtcbiAgICAgIGZpbGxNb2RlbC5zaGFkZXJJbnB1dHMuc2V0UHJvcHMoe1xuICAgICAgICBsYXllcjoge29wYWNpdHk6IHRoaXMucHJvcHMub3BhY2l0eX1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG5FbmhhbmNlZENvbHVtbkxheWVyLmxheWVyTmFtZSA9ICdFbmhhbmNlZENvbHVtbkxheWVyJztcblxuZXhwb3J0IGRlZmF1bHQgRW5oYW5jZWRDb2x1bW5MYXllcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBRCxPQUFBO0FBRUEsSUFBQUUsQ0FBQSxHQUFBRixPQUFBO0FBQStCLFNBQUFHLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFMLENBQUEsR0FBQUMsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFB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
@@ -0,0 +1,26 @@
1
+ import { SimpleMeshLayer } from '@deck.gl/mesh-layers';
2
+ import type { GlobeConfig } from '@kepler.gl/constants';
3
+ type AtmosphereLayerProps = {
4
+ config: GlobeConfig;
5
+ };
6
+ export declare class AtmosphereLayerRealistic extends SimpleMeshLayer<any, AtmosphereLayerProps> {
7
+ static layerName: string;
8
+ draw({ uniforms }: {
9
+ uniforms: object;
10
+ }): void;
11
+ getShaders(): any;
12
+ }
13
+ export declare class AtmosphereSkyLayerRealistic extends SimpleMeshLayer<any, AtmosphereLayerProps> {
14
+ static layerName: string;
15
+ draw({ uniforms }: {
16
+ uniforms: object;
17
+ }): void;
18
+ getShaders(): any;
19
+ }
20
+ export declare const getGlobeAtmosphereLayer: ({ config }: {
21
+ config: GlobeConfig;
22
+ }) => AtmosphereLayerRealistic;
23
+ export declare const getGlobeAtmosphereSkyLayer: ({ config }: {
24
+ config: GlobeConfig;
25
+ }) => AtmosphereSkyLayerRealistic;
26
+ export {};
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.getGlobeAtmosphereSkyLayer = exports.getGlobeAtmosphereLayer = exports.AtmosphereSkyLayerRealistic = exports.AtmosphereLayerRealistic = 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 _sun = require("@math.gl/sun");
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
+ // Shaders ported from iTowns, based on Sean O'Neil's approach in GPU Gems 2
27
+ // SEE: https://github.com/iTowns/itowns/blob/master/src/Core/Prefab/Globe/Atmosphere.js
28
+ // SEE: https://developer.nvidia.com/gpugems/gpugems2/part-ii-shading-lighting-and-shadows/chapter-16-accurate-atmospheric-scattering
29
+ var toRadians = function toRadians(degrees) {
30
+ return degrees * Math.PI / 180;
31
+ };
32
+ var angleToVec = function angleToVec(angle) {
33
+ return [Math.sin(angle), Math.cos(angle), 0];
34
+ };
35
+ var angleToSunPos = function angleToSunPos(angle) {
36
+ return new _core2.Vector3(angleToVec(angle)).normalize();
37
+ };
38
+ var GLOBE_MESH_INNER = new _engine.SphereGeometry({
39
+ radius: 6.4e6,
40
+ nlat: 100,
41
+ nlong: 100
42
+ });
43
+ var GLOBE_MESH_OUTER = new _engine.SphereGeometry({
44
+ radius: 6.7e6,
45
+ nlat: 100,
46
+ nlong: 100
47
+ });
48
+ var lon = 0,
49
+ lat = 90;
50
+ var sunPosNow = (0, _sun.getSunPosition)(Date.now(), lat, lon);
51
+ var v3SunPosNow = angleToSunPos(sunPosNow.azimuth + Math.PI);
52
+ var NUM_SAMPLE_RAYS = 3;
53
+ var ATMOSPHERE_UNIFORMS = {
54
+ v3SunPos: v3SunPosNow,
55
+ exposure: 2,
56
+ fSamples: 3,
57
+ g: -0.65,
58
+ fKrESun: 0.00025 * 20,
59
+ fKmESun: 0.0001 * 20,
60
+ fKr4PI: 0.00025 * 4 * Math.PI,
61
+ fKm4PI: 0.0001 * 4 * Math.PI,
62
+ fScaleDepth: 0.25,
63
+ fInnerRadius: 258,
64
+ fOuterRadius: 265,
65
+ fTerminatorAttenuateFactor: 0.8,
66
+ fTerminatorOpacityFactor: 1
67
+ };
68
+ var AtmosphereLayerRealistic = exports.AtmosphereLayerRealistic = /*#__PURE__*/function (_SimpleMeshLayer) {
69
+ function AtmosphereLayerRealistic() {
70
+ (0, _classCallCheck2["default"])(this, AtmosphereLayerRealistic);
71
+ return _callSuper(this, AtmosphereLayerRealistic, arguments);
72
+ }
73
+ (0, _inherits2["default"])(AtmosphereLayerRealistic, _SimpleMeshLayer);
74
+ return (0, _createClass2["default"])(AtmosphereLayerRealistic, [{
75
+ key: "draw",
76
+ value: function draw(_ref) {
77
+ var uniforms = _ref.uniforms;
78
+ var config = this.props.config;
79
+ var model = this.state.model;
80
+ if (model) {
81
+ model.props.uniforms = _objectSpread(_objectSpread(_objectSpread({}, model.props.uniforms), ATMOSPHERE_UNIFORMS), {}, {
82
+ fTerminatorOpacityFactor: config.terminator ? config.terminatorOpacity : 0,
83
+ v3SunPos: config.azimuth ? angleToSunPos(toRadians(config.azimuthAngle)) : v3SunPosNow
84
+ });
85
+ }
86
+ _superPropGet(AtmosphereLayerRealistic, "draw", this, 3)([{
87
+ uniforms: uniforms
88
+ }]);
89
+ }
90
+ }, {
91
+ key: "getShaders",
92
+ value: function getShaders() {
93
+ return _objectSpread(_objectSpread({}, _superPropGet(AtmosphereLayerRealistic, "getShaders", this, 3)([])), {}, {
94
+ inject: {
95
+ 'fs:#decl': "\n uniform vec3 v3SunPos;\n\n uniform float g;\n uniform float exposure;\n\n uniform float fSamples;\n\n uniform float fInnerRadius;\n uniform float fOuterRadius;\n uniform float fKrESun;\n uniform float fKmESun;\n uniform float fKr4PI;\n uniform float fKm4PI;\n uniform float fScaleDepth;\n\n uniform float fTerminatorAttenuateFactor;\n uniform float fTerminatorOpacityFactor;\n\n const int nSamples = ".concat(NUM_SAMPLE_RAYS, ";\n\n float scale(float fCos) {\n float x = 1.0 - fCos;\n return fScaleDepth * exp(-0.00287 + x*(0.459 + x*(3.83 + x*(-6.8 + x*5.25))));\n }\n "),
96
+ 'fs:#main-end': "\n vec3 v3CameraPos = cameraPosition;\n vec3 v3Pos = position_commonspace.xyz;\n\n float g2 = g * g;\n\n vec3 v3InvWavelength = vec3(1.0 / pow(0.650, 4.0), 1.0 / pow(0.570, 4.0), 1.0 / pow(0.475, 4.0));\n\n float fInnerRadius2 = fInnerRadius * fInnerRadius;\n float fOuterRadius2 = fOuterRadius * fOuterRadius;\n float fScale = 1.0 / (fOuterRadius - fInnerRadius);\n float fScaleOverScaleDepth = 1.0 / (fOuterRadius - fInnerRadius) / fScaleDepth;\n\n float cameraHeight2 = length(v3CameraPos) * length(v3CameraPos);\n\n vec3 v3Ray = v3Pos - v3CameraPos;\n float fFar = length(v3Ray);\n v3Ray /= fFar;\n\n float B = 2.0 * dot(v3CameraPos, v3Ray);\n float C = cameraHeight2 - fOuterRadius2;\n float fDet = max(0.0, B*B - 4.0 * C);\n float fNear = 0.5 * (-B - sqrt(fDet));\n\n vec3 v3Start = v3CameraPos + v3Ray * fNear;\n fFar -= fNear;\n\n float fDepth = exp((fInnerRadius - fOuterRadius) / fScaleDepth);\n float fCameraAngle = dot(-v3Ray, v3Pos) / length(v3Pos);\n float fLightAngle = dot(v3SunPos, v3Pos) / length(v3Pos);\n float fCameraScale = scale(fCameraAngle);\n float fLightScale = scale(fLightAngle);\n float fCameraOffset = fDepth*fCameraScale;\n float fTemp = (fLightScale + fCameraScale);\n\n float fSampleLength = fFar / fSamples;\n float fScaledLength = fSampleLength * fScale;\n vec3 v3SampleRay = v3Ray * fSampleLength;\n vec3 v3SamplePoint = v3Start + v3SampleRay * 0.5;\n\n vec3 v3FrontColor = vec3(0.0, 0.0, 0.0);\n vec3 v3Attenuate = vec3(0.0, 0.0, 0.0);\n for(int i=0; i<nSamples; i++)\n {\n float fHeight = length(v3SamplePoint);\n float fDepth = exp(fScaleOverScaleDepth * (fInnerRadius - fHeight));\n float fScatter = fDepth*fTemp - fCameraOffset;\n v3Attenuate = exp(-fScatter * (v3InvWavelength * fKr4PI + fKm4PI));\n v3FrontColor += v3Attenuate * (fDepth * fScaledLength);\n v3SamplePoint += v3SampleRay;\n }\n\n vec3 c0 = v3Attenuate;\n vec3 c1 = v3FrontColor * (v3InvWavelength * fKrESun + fKmESun);\n\n fragColor = vec4(c1, 1.0 - c0 * fTerminatorAttenuateFactor);\n fragColor.a *= fTerminatorOpacityFactor;\n\n // Keep the day hemisphere completely unshaded \u2014 the attenuation-based\n // alpha above is non-zero even at noon, which slightly darkens the lit\n // side. Gate it with a day/night mask so darkening only appears across\n // the terminator and onto the night side.\n // fLightAngle = dot(sunDir, surfaceNormal): +1 at the subsolar point\n // (noon), 0 at the terminator, -1 at midnight. smoothstep maps the day\n // side (>= 0.2) to 0 (no darkening), ramps through the terminator, and\n // reaches full darkening on the night side (<= -0.2).\n float fNightMask = smoothstep(0.2, -0.2, fLightAngle);\n fragColor.a *= fNightMask;\n ",
97
+ 'fs:DECKGL_FILTER_COLOR': ""
98
+ }
99
+ });
100
+ }
101
+ }]);
102
+ }(_meshLayers.SimpleMeshLayer);
103
+ (0, _defineProperty2["default"])(AtmosphereLayerRealistic, "layerName", 'AtmosphereLayerRealistic');
104
+ var AtmosphereSkyLayerRealistic = exports.AtmosphereSkyLayerRealistic = /*#__PURE__*/function (_SimpleMeshLayer2) {
105
+ function AtmosphereSkyLayerRealistic() {
106
+ (0, _classCallCheck2["default"])(this, AtmosphereSkyLayerRealistic);
107
+ return _callSuper(this, AtmosphereSkyLayerRealistic, arguments);
108
+ }
109
+ (0, _inherits2["default"])(AtmosphereSkyLayerRealistic, _SimpleMeshLayer2);
110
+ return (0, _createClass2["default"])(AtmosphereSkyLayerRealistic, [{
111
+ key: "draw",
112
+ value: function draw(_ref2) {
113
+ var uniforms = _ref2.uniforms;
114
+ var config = this.props.config;
115
+ var model = this.state.model;
116
+ if (model) {
117
+ model.props.uniforms = _objectSpread(_objectSpread(_objectSpread({}, model.props.uniforms), ATMOSPHERE_UNIFORMS), {}, {
118
+ v3SunPos: config.azimuth ? angleToSunPos(toRadians(config.azimuthAngle)) : v3SunPosNow
119
+ });
120
+ }
121
+ _superPropGet(AtmosphereSkyLayerRealistic, "draw", this, 3)([{
122
+ uniforms: uniforms
123
+ }]);
124
+ }
125
+ }, {
126
+ key: "getShaders",
127
+ value: function getShaders() {
128
+ return _objectSpread(_objectSpread({}, _superPropGet(AtmosphereSkyLayerRealistic, "getShaders", this, 3)([])), {}, {
129
+ inject: {
130
+ 'fs:#decl': "\n uniform vec3 v3SunPos;\n\n uniform float g;\n uniform float exposure;\n\n uniform float fSamples;\n\n uniform float fInnerRadius;\n uniform float fOuterRadius;\n uniform float fKrESun;\n uniform float fKmESun;\n uniform float fKr4PI;\n uniform float fKm4PI;\n uniform float fScaleDepth;\n\n const int nSamples = ".concat(NUM_SAMPLE_RAYS, ";\n\n float scale(float fCos) {\n float x = 1.0 - fCos;\n return fScaleDepth * exp(-0.00287 + x*(0.459 + x*(3.83 + x*(-6.8 + x*5.25))));\n }\n\n float getMiePhase(float fCos, float fCos2, float g, float g2) {\n return 1.5 * ((1.0 - g2) / (2.0 + g2)) * (1.0 + fCos2) / pow(1.0 + g2 - 2.0 * g * fCos, 1.5);\n }\n\n float getRayleighPhase(float fCos2) {\n return 0.75 + 0.75 * fCos2;\n }\n "),
131
+ 'fs:#main-end': "\n vec3 v3CameraPos = cameraPosition;\n vec3 v3Pos = position_commonspace.xyz;\n\n float g2 = g * g;\n\n vec3 v3InvWavelength = vec3(1.0 / pow(0.650, 4.0), 1.0 / pow(0.570, 4.0), 1.0 / pow(0.475, 4.0));\n\n float fInnerRadius2 = fInnerRadius * fInnerRadius;\n float fOuterRadius2 = fOuterRadius * fOuterRadius;\n float fScale = 1.0 / (fOuterRadius - fInnerRadius);\n float fScaleOverScaleDepth = 1.0 / (fOuterRadius - fInnerRadius) / fScaleDepth;\n\n float cameraHeight2 = length(v3CameraPos) * length(v3CameraPos);\n\n vec3 v3Ray = v3Pos - v3CameraPos;\n float fFar = length(v3Ray);\n v3Ray /= fFar;\n\n float B = 2.0 * dot(v3CameraPos, v3Ray);\n float C = cameraHeight2 - fOuterRadius2;\n float fDet = max(0.0, B*B - 4.0 * C);\n float fNear = 0.5 * (-B - sqrt(fDet));\n\n vec3 v3Start = v3CameraPos + v3Ray * fNear;\n fFar -= fNear;\n float fStartAngle = dot(v3Ray, v3Start) / fOuterRadius;\n float fStartDepth = exp(-1.0 / fScaleDepth);\n float fStartOffset = fStartDepth * scale(fStartAngle);\n\n float fSampleLength = fFar / fSamples;\n float fScaledLength = fSampleLength * fScale;\n vec3 v3SampleRay = v3Ray * fSampleLength;\n vec3 v3SamplePoint = v3Start + v3SampleRay * 0.5;\n\n vec3 v3FrontColor = vec3(0.0, 0.0, 0.0);\n for(int i=0; i<nSamples; i++)\n {\n float fHeight = length(v3SamplePoint);\n float fDepth = exp(fScaleOverScaleDepth * (fInnerRadius - fHeight));\n float fLightAngle = dot(v3SunPos, v3SamplePoint) / fHeight;\n float fCameraAngle = dot(v3Ray, v3SamplePoint) / fHeight;\n float fScatter = (fStartOffset + fDepth * (scale(fLightAngle) - scale(fCameraAngle)));\n vec3 v3Attenuate = exp(-fScatter * (v3InvWavelength * fKr4PI + fKm4PI));\n\n v3FrontColor += v3Attenuate * (fDepth * fScaledLength);\n v3SamplePoint += v3SampleRay;\n }\n\n vec3 c0 = v3FrontColor * (v3InvWavelength * fKrESun);\n vec3 c1 = v3FrontColor * fKmESun;\n\n vec3 v3Direction = v3CameraPos - v3Pos;\n\n float fCos = dot(v3SunPos, v3Direction) / length(v3Direction);\n float fCos2 = fCos * fCos;\n\n vec3 skyColor = getRayleighPhase(fCos2) * c0 + getMiePhase(fCos, fCos2, g, g2) * c1;\n\n fragColor = vec4(skyColor, 1.0);\n fragColor.a = fragColor.b;\n ",
132
+ 'fs:DECKGL_FILTER_COLOR': ""
133
+ }
134
+ });
135
+ }
136
+ }]);
137
+ }(_meshLayers.SimpleMeshLayer);
138
+ (0, _defineProperty2["default"])(AtmosphereSkyLayerRealistic, "layerName", 'AtmosphereSkyLayerRealistic');
139
+ var ATMOSPHERE_PARAMETERS = {
140
+ depthTest: false,
141
+ blendFunc: [0x0302, 0x0303, 1, 0x0303],
142
+ // SRC_ALPHA, ONE_MINUS_SRC_ALPHA, ONE, ONE_MINUS_SRC_ALPHA
143
+ blendEquation: [0x8006, 0x8006] // FUNC_ADD
144
+ };
145
+ var ATMOSPHERE_SKY_PARAMETERS = {
146
+ cullFace: 0x0404,
147
+ // GL.FRONT
148
+ depthMask: false,
149
+ blendFunc: [0x0302, 0x0303, 1, 0x0303],
150
+ blendEquation: [0x8006, 0x8006]
151
+ };
152
+ var getGlobeAtmosphereLayer = exports.getGlobeAtmosphereLayer = function getGlobeAtmosphereLayer(_ref3) {
153
+ var config = _ref3.config;
154
+ return new AtmosphereLayerRealistic({
155
+ id: 'atmosphere',
156
+ data: [[0, 0, 0]],
157
+ config: config,
158
+ coordinateOrigin: [0, 0, 0],
159
+ coordinateSystem: _core.COORDINATE_SYSTEM.CARTESIAN,
160
+ getPosition: function getPosition(d) {
161
+ return d;
162
+ },
163
+ getColor: [0, 0, 0],
164
+ mesh: GLOBE_MESH_INNER,
165
+ parameters: ATMOSPHERE_PARAMETERS
166
+ });
167
+ };
168
+ var getGlobeAtmosphereSkyLayer = exports.getGlobeAtmosphereSkyLayer = function getGlobeAtmosphereSkyLayer(_ref4) {
169
+ var config = _ref4.config;
170
+ return new AtmosphereSkyLayerRealistic({
171
+ id: 'atmosphere-sky',
172
+ data: [[0, 0, 0]],
173
+ config: config,
174
+ coordinateOrigin: [0, 0, 0],
175
+ coordinateSystem: _core.COORDINATE_SYSTEM.CARTESIAN,
176
+ getPosition: function getPosition(d) {
177
+ return d;
178
+ },
179
+ getColor: [0, 0, 0],
180
+ mesh: GLOBE_MESH_OUTER,
181
+ parameters: ATMOSPHERE_SKY_PARAMETERS
182
+ });
183
+ };
184
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfbWVzaExheWVycyIsIl9lbmdpbmUiLCJfY29yZTIiLCJfc3VuIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsImNhbGwiLCJfc3VwZXJQcm9wR2V0IiwicCIsIl9nZXQyIiwidG9SYWRpYW5zIiwiZGVncmVlcyIsIk1hdGgiLCJQSSIsImFuZ2xlVG9WZWMiLCJhbmdsZSIsInNpbiIsImNvcyIsImFuZ2xlVG9TdW5Qb3MiLCJWZWN0b3IzIiwibm9ybWFsaXplIiwiR0xPQkVfTUVTSF9JTk5FUiIsIlNwaGVyZUdlb21ldHJ5IiwicmFkaXVzIiwibmxhdCIsIm5sb25nIiwiR0xPQkVfTUVTSF9PVVRFUiIsImxvbiIsImxhdCIsInN1blBvc05vdyIsImdldFN1blBvc2l0aW9uIiwiRGF0ZSIsIm5vdyIsInYzU3VuUG9zTm93IiwiYXppbXV0aCIsIk5VTV9TQU1QTEVfUkFZUyIsIkFUTU9TUEhFUkVfVU5JRk9STVMiLCJ2M1N1blBvcyIsImV4cG9zdXJlIiwiZlNhbXBsZXMiLCJnIiwiZktyRVN1biIsImZLbUVTdW4iLCJmS3I0UEkiLCJmS200UEkiLCJmU2NhbGVEZXB0aCIsImZJbm5lclJhZGl1cyIsImZPdXRlclJhZGl1cyIsImZUZXJtaW5hdG9yQXR0ZW51YXRlRmFjdG9yIiwiZlRlcm1pbmF0b3JPcGFjaXR5RmFjdG9yIiwiQXRtb3NwaGVyZUxheWVyUmVhbGlzdGljIiwiZXhwb3J0cyIsIl9TaW1wbGVNZXNoTGF5ZXIiLCJfY2xhc3NDYWxsQ2hlY2syIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJ2YWx1ZSIsImRyYXciLCJfcmVmIiwidW5pZm9ybXMiLCJjb25maWciLCJwcm9wcyIsIm1vZGVsIiwic3RhdGUiLCJ0ZXJtaW5hdG9yIiwidGVybWluYXRvck9wYWNpdHkiLCJhemltdXRoQW5nbGUiLCJnZXRTaGFkZXJzIiwiaW5qZWN0IiwiY29uY2F0IiwiU2ltcGxlTWVzaExheWVyIiwiQXRtb3NwaGVyZVNreUxheWVyUmVhbGlzdGljIiwiX1NpbXBsZU1lc2hMYXllcjIiLCJfcmVmMiIsIkFUTU9TUEhFUkVfUEFSQU1FVEVSUyIsImRlcHRoVGVzdCIsImJsZW5kRnVuYyIsImJsZW5kRXF1YXRpb24iLCJBVE1PU1BIRVJFX1NLWV9QQVJBTUVURVJTIiwiY3VsbEZhY2UiLCJkZXB0aE1hc2siLCJnZXRHbG9iZUF0bW9zcGhlcmVMYXllciIsIl9yZWYzIiwiaWQiLCJkYXRhIiwiY29vcmRpbmF0ZU9yaWdpbiIsImNvb3JkaW5hdGVTeXN0ZW0iLCJDT09SRElOQVRFX1NZU1RFTSIsIkNBUlRFU0lBTiIsImdldFBvc2l0aW9uIiwiZCIsImdldENvbG9yIiwibWVzaCIsInBhcmFtZXRlcnMiLCJnZXRHbG9iZUF0bW9zcGhlcmVTa3lMYXllciIsIl9yZWY0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2dsb2JlL2F0bW9zcGhlcmUtbGF5ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuLy8gU2hhZGVycyBwb3J0ZWQgZnJvbSBpVG93bnMsIGJhc2VkIG9uIFNlYW4gTydOZWlsJ3MgYXBwcm9hY2ggaW4gR1BVIEdlbXMgMlxuLy8gU0VFOiBodHRwczovL2dpdGh1Yi5jb20vaVRvd25zL2l0b3ducy9ibG9iL21hc3Rlci9zcmMvQ29yZS9QcmVmYWIvR2xvYmUvQXRtb3NwaGVyZS5qc1xuLy8gU0VFOiBodHRwczovL2RldmVsb3Blci5udmlkaWEuY29tL2dwdWdlbXMvZ3B1Z2VtczIvcGFydC1paS1zaGFkaW5nLWxpZ2h0aW5nLWFuZC1zaGFkb3dzL2NoYXB0ZXItMTYtYWNjdXJhdGUtYXRtb3NwaGVyaWMtc2NhdHRlcmluZ1xuXG5pbXBvcnQge0NPT1JESU5BVEVfU1lTVEVNfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbmltcG9ydCB7U2ltcGxlTWVzaExheWVyfSBmcm9tICdAZGVjay5nbC9tZXNoLWxheWVycyc7XG5pbXBvcnQge1NwaGVyZUdlb21ldHJ5fSBmcm9tICdAbHVtYS5nbC9lbmdpbmUnO1xuaW1wb3J0IHtWZWN0b3IzfSBmcm9tICdAbWF0aC5nbC9jb3JlJztcbmltcG9ydCB7Z2V0U3VuUG9zaXRpb259IGZyb20gJ0BtYXRoLmdsL3N1bic7XG5cbmltcG9ydCB0eXBlIHtHbG9iZUNvbmZpZ30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG5jb25zdCB0b1JhZGlhbnMgPSAoZGVncmVlczogbnVtYmVyKTogbnVtYmVyID0+IChkZWdyZWVzICogTWF0aC5QSSkgLyAxODA7XG5cbmNvbnN0IGFuZ2xlVG9WZWMgPSAoYW5nbGU6IG51bWJlcik6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSA9PiB7XG4gIHJldHVybiBbTWF0aC5zaW4oYW5nbGUpLCBNYXRoLmNvcyhhbmdsZSksIDBdO1xufTtcblxuY29uc3QgYW5nbGVUb1N1blBvcyA9IChhbmdsZTogbnVtYmVyKTogbnVtYmVyW10gPT4ge1xuICByZXR1cm4gbmV3IFZlY3RvcjMoYW5nbGVUb1ZlYyhhbmdsZSkpLm5vcm1hbGl6ZSgpIGFzIHVua25vd24gYXMgbnVtYmVyW107XG59O1xuXG5jb25zdCBHTE9CRV9NRVNIX0lOTkVSID0gbmV3IFNwaGVyZUdlb21ldHJ5KHtcbiAgcmFkaXVzOiA2LjRlNixcbiAgbmxhdDogMTAwLFxuICBubG9uZzogMTAwXG59KTtcblxuY29uc3QgR0xPQkVfTUVTSF9PVVRFUiA9IG5ldyBTcGhlcmVHZW9tZXRyeSh7XG4gIHJhZGl1czogNi43ZTYsXG4gIG5sYXQ6IDEwMCxcbiAgbmxvbmc6IDEwMFxufSk7XG5cbmNvbnN0IFtsb24sIGxhdF0gPSBbMCwgOTBdO1xuY29uc3Qgc3VuUG9zTm93ID0gZ2V0U3VuUG9zaXRpb24oRGF0ZS5ub3coKSwgbGF0LCBsb24pO1xuY29uc3QgdjNTdW5Qb3NOb3cgPSBhbmdsZVRvU3VuUG9zKHN1blBvc05vdy5hemltdXRoICsgTWF0aC5QSSk7XG5cbmNvbnN0IE5VTV9TQU1QTEVfUkFZUyA9IDM7XG5cbmNvbnN0IEFUTU9TUEhFUkVfVU5JRk9STVMgPSB7XG4gIHYzU3VuUG9zOiB2M1N1blBvc05vdyxcbiAgZXhwb3N1cmU6IDIsXG4gIGZTYW1wbGVzOiAzLFxuICBnOiAtMC42NSxcbiAgZktyRVN1bjogMC4wMDAyNSAqIDIwLFxuICBmS21FU3VuOiAwLjAwMDEgKiAyMCxcbiAgZktyNFBJOiAwLjAwMDI1ICogNCAqIE1hdGguUEksXG4gIGZLbTRQSTogMC4wMDAxICogNCAqIE1hdGguUEksXG4gIGZTY2FsZURlcHRoOiAwLjI1LFxuICBmSW5uZXJSYWRpdXM6IDI1OCxcbiAgZk91dGVyUmFkaXVzOiAyNjUsXG4gIGZUZXJtaW5hdG9yQXR0ZW51YXRlRmFjdG9yOiAwLjgsXG4gIGZUZXJtaW5hdG9yT3BhY2l0eUZhY3RvcjogMVxufTtcblxudHlwZSBBdG1vc3BoZXJlTGF5ZXJQcm9wcyA9IHtcbiAgY29uZmlnOiBHbG9iZUNvbmZpZztcbn07XG5cbmV4cG9ydCBjbGFzcyBBdG1vc3BoZXJlTGF5ZXJSZWFsaXN0aWMgZXh0ZW5kcyBTaW1wbGVNZXNoTGF5ZXI8YW55LCBBdG1vc3BoZXJlTGF5ZXJQcm9wcz4ge1xuICBzdGF0aWMgbGF5ZXJOYW1lID0gJ0F0bW9zcGhlcmVMYXllclJlYWxpc3RpYyc7XG5cbiAgZHJhdyh7dW5pZm9ybXN9OiB7dW5pZm9ybXM6IG9iamVjdH0pOiB2b2lkIHtcbiAgICBjb25zdCB7Y29uZmlnfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgbW9kZWwgPSB0aGlzLnN0YXRlLm1vZGVsO1xuICAgIGlmIChtb2RlbCkge1xuICAgICAgKG1vZGVsIGFzIGFueSkucHJvcHMudW5pZm9ybXMgPSB7XG4gICAgICAgIC4uLihtb2RlbCBhcyBhbnkpLnByb3BzLnVuaWZvcm1zLFxuICAgICAgICAuLi5BVE1PU1BIRVJFX1VOSUZPUk1TLFxuICAgICAgICBmVGVybWluYXRvck9wYWNpdHlGYWN0b3I6IGNvbmZpZy50ZXJtaW5hdG9yID8gY29uZmlnLnRlcm1pbmF0b3JPcGFjaXR5IDogMCxcbiAgICAgICAgdjNTdW5Qb3M6IGNvbmZpZy5hemltdXRoID8gYW5nbGVUb1N1blBvcyh0b1JhZGlhbnMoY29uZmlnLmF6aW11dGhBbmdsZSkpIDogdjNTdW5Qb3NOb3dcbiAgICAgIH07XG4gICAgfVxuICAgIHN1cGVyLmRyYXcoe3VuaWZvcm1zfSk7XG4gIH1cblxuICBnZXRTaGFkZXJzKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1cGVyLmdldFNoYWRlcnMoKSxcbiAgICAgIGluamVjdDoge1xuICAgICAgICAnZnM6I2RlY2wnOiBgXG4gICAgICAgICAgdW5pZm9ybSB2ZWMzIHYzU3VuUG9zO1xuXG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBnO1xuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZXhwb3N1cmU7XG5cbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZTYW1wbGVzO1xuXG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmSW5uZXJSYWRpdXM7XG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmT3V0ZXJSYWRpdXM7XG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmS3JFU3VuO1xuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZkttRVN1bjtcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZLcjRQSTtcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZLbTRQSTtcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZTY2FsZURlcHRoO1xuXG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmVGVybWluYXRvckF0dGVudWF0ZUZhY3RvcjtcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZUZXJtaW5hdG9yT3BhY2l0eUZhY3RvcjtcblxuICAgICAgICAgIGNvbnN0IGludCBuU2FtcGxlcyA9ICR7TlVNX1NBTVBMRV9SQVlTfTtcblxuICAgICAgICAgIGZsb2F0IHNjYWxlKGZsb2F0IGZDb3MpIHtcbiAgICAgICAgICAgIGZsb2F0IHggPSAxLjAgLSBmQ29zO1xuICAgICAgICAgICAgcmV0dXJuIGZTY2FsZURlcHRoICogZXhwKC0wLjAwMjg3ICsgeCooMC40NTkgKyB4KigzLjgzICsgeCooLTYuOCArIHgqNS4yNSkpKSk7XG4gICAgICAgICAgfVxuICAgICAgICBgLFxuICAgICAgICAnZnM6I21haW4tZW5kJzogYFxuICAgICAgICAgIHZlYzMgdjNDYW1lcmFQb3MgPSBjYW1lcmFQb3NpdGlvbjtcbiAgICAgICAgICB2ZWMzIHYzUG9zID0gcG9zaXRpb25fY29tbW9uc3BhY2UueHl6O1xuXG4gICAgICAgICAgZmxvYXQgZzIgPSBnICogZztcblxuICAgICAgICAgIHZlYzMgdjNJbnZXYXZlbGVuZ3RoID0gdmVjMygxLjAgLyBwb3coMC42NTAsIDQuMCksIDEuMCAvIHBvdygwLjU3MCwgNC4wKSwgMS4wIC8gcG93KDAuNDc1LCA0LjApKTtcblxuICAgICAgICAgIGZsb2F0IGZJbm5lclJhZGl1czIgPSBmSW5uZXJSYWRpdXMgKiBmSW5uZXJSYWRpdXM7XG4gICAgICAgICAgZmxvYXQgZk91dGVyUmFkaXVzMiA9IGZPdXRlclJhZGl1cyAqIGZPdXRlclJhZGl1cztcbiAgICAgICAgICBmbG9hdCBmU2NhbGUgPSAxLjAgLyAoZk91dGVyUmFkaXVzIC0gZklubmVyUmFkaXVzKTtcbiAgICAgICAgICBmbG9hdCBmU2NhbGVPdmVyU2NhbGVEZXB0aCA9IDEuMCAvIChmT3V0ZXJSYWRpdXMgLSBmSW5uZXJSYWRpdXMpIC8gZlNjYWxlRGVwdGg7XG5cbiAgICAgICAgICBmbG9hdCBjYW1lcmFIZWlnaHQyID0gbGVuZ3RoKHYzQ2FtZXJhUG9zKSAqIGxlbmd0aCh2M0NhbWVyYVBvcyk7XG5cbiAgICAgICAgICB2ZWMzIHYzUmF5ID0gdjNQb3MgLSB2M0NhbWVyYVBvcztcbiAgICAgICAgICBmbG9hdCBmRmFyID0gbGVuZ3RoKHYzUmF5KTtcbiAgICAgICAgICB2M1JheSAvPSBmRmFyO1xuXG4gICAgICAgICAgZmxvYXQgQiA9IDIuMCAqIGRvdCh2M0NhbWVyYVBvcywgdjNSYXkpO1xuICAgICAgICAgIGZsb2F0IEMgPSBjYW1lcmFIZWlnaHQyIC0gZk91dGVyUmFkaXVzMjtcbiAgICAgICAgICBmbG9hdCBmRGV0ID0gbWF4KDAuMCwgQipCIC0gNC4wICogQyk7XG4gICAgICAgICAgZmxvYXQgZk5lYXIgPSAwLjUgKiAoLUIgLSBzcXJ0KGZEZXQpKTtcblxuICAgICAgICAgIHZlYzMgdjNTdGFydCA9IHYzQ2FtZXJhUG9zICsgdjNSYXkgKiBmTmVhcjtcbiAgICAgICAgICBmRmFyIC09IGZOZWFyO1xuXG4gICAgICAgICAgZmxvYXQgZkRlcHRoID0gZXhwKChmSW5uZXJSYWRpdXMgLSBmT3V0ZXJSYWRpdXMpIC8gZlNjYWxlRGVwdGgpO1xuICAgICAgICAgIGZsb2F0IGZDYW1lcmFBbmdsZSA9IGRvdCgtdjNSYXksIHYzUG9zKSAvIGxlbmd0aCh2M1Bvcyk7XG4gICAgICAgICAgZmxvYXQgZkxpZ2h0QW5nbGUgPSBkb3QodjNTdW5Qb3MsIHYzUG9zKSAvIGxlbmd0aCh2M1Bvcyk7XG4gICAgICAgICAgZmxvYXQgZkNhbWVyYVNjYWxlID0gc2NhbGUoZkNhbWVyYUFuZ2xlKTtcbiAgICAgICAgICBmbG9hdCBmTGlnaHRTY2FsZSA9IHNjYWxlKGZMaWdodEFuZ2xlKTtcbiAgICAgICAgICBmbG9hdCBmQ2FtZXJhT2Zmc2V0ID0gZkRlcHRoKmZDYW1lcmFTY2FsZTtcbiAgICAgICAgICBmbG9hdCBmVGVtcCA9IChmTGlnaHRTY2FsZSArIGZDYW1lcmFTY2FsZSk7XG5cbiAgICAgICAgICBmbG9hdCBmU2FtcGxlTGVuZ3RoID0gZkZhciAvIGZTYW1wbGVzO1xuICAgICAgICAgIGZsb2F0IGZTY2FsZWRMZW5ndGggPSBmU2FtcGxlTGVuZ3RoICogZlNjYWxlO1xuICAgICAgICAgIHZlYzMgdjNTYW1wbGVSYXkgPSB2M1JheSAqIGZTYW1wbGVMZW5ndGg7XG4gICAgICAgICAgdmVjMyB2M1NhbXBsZVBvaW50ID0gdjNTdGFydCArIHYzU2FtcGxlUmF5ICogMC41O1xuXG4gICAgICAgICAgdmVjMyB2M0Zyb250Q29sb3IgPSB2ZWMzKDAuMCwgMC4wLCAwLjApO1xuICAgICAgICAgIHZlYzMgdjNBdHRlbnVhdGUgPSB2ZWMzKDAuMCwgMC4wLCAwLjApO1xuICAgICAgICAgIGZvcihpbnQgaT0wOyBpPG5TYW1wbGVzOyBpKyspXG4gICAgICAgICAge1xuICAgICAgICAgICAgICBmbG9hdCBmSGVpZ2h0ID0gbGVuZ3RoKHYzU2FtcGxlUG9pbnQpO1xuICAgICAgICAgICAgICBmbG9hdCBmRGVwdGggPSBleHAoZlNjYWxlT3ZlclNjYWxlRGVwdGggKiAoZklubmVyUmFkaXVzIC0gZkhlaWdodCkpO1xuICAgICAgICAgICAgICBmbG9hdCBmU2NhdHRlciA9IGZEZXB0aCpmVGVtcCAtIGZDYW1lcmFPZmZzZXQ7XG4gICAgICAgICAgICAgIHYzQXR0ZW51YXRlID0gZXhwKC1mU2NhdHRlciAqICh2M0ludldhdmVsZW5ndGggKiBmS3I0UEkgKyBmS200UEkpKTtcbiAgICAgICAgICAgICAgdjNGcm9udENvbG9yICs9IHYzQXR0ZW51YXRlICogKGZEZXB0aCAqIGZTY2FsZWRMZW5ndGgpO1xuICAgICAgICAgICAgICB2M1NhbXBsZVBvaW50ICs9IHYzU2FtcGxlUmF5O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZlYzMgYzAgPSB2M0F0dGVudWF0ZTtcbiAgICAgICAgICB2ZWMzIGMxID0gdjNGcm9udENvbG9yICogKHYzSW52V2F2ZWxlbmd0aCAqIGZLckVTdW4gKyBmS21FU3VuKTtcblxuICAgICAgICAgIGZyYWdDb2xvciA9IHZlYzQoYzEsIDEuMCAtIGMwICogZlRlcm1pbmF0b3JBdHRlbnVhdGVGYWN0b3IpO1xuICAgICAgICAgIGZyYWdDb2xvci5hICo9IGZUZXJtaW5hdG9yT3BhY2l0eUZhY3RvcjtcblxuICAgICAgICAgIC8vIEtlZXAgdGhlIGRheSBoZW1pc3BoZXJlIGNvbXBsZXRlbHkgdW5zaGFkZWQg4oCUIHRoZSBhdHRlbnVhdGlvbi1iYXNlZFxuICAgICAgICAgIC8vIGFscGhhIGFib3ZlIGlzIG5vbi16ZXJvIGV2ZW4gYXQgbm9vbiwgd2hpY2ggc2xpZ2h0bHkgZGFya2VucyB0aGUgbGl0XG4gICAgICAgICAgLy8gc2lkZS4gR2F0ZSBpdCB3aXRoIGEgZGF5L25pZ2h0IG1hc2sgc28gZGFya2VuaW5nIG9ubHkgYXBwZWFycyBhY3Jvc3NcbiAgICAgICAgICAvLyB0aGUgdGVybWluYXRvciBhbmQgb250byB0aGUgbmlnaHQgc2lkZS5cbiAgICAgICAgICAvLyBmTGlnaHRBbmdsZSA9IGRvdChzdW5EaXIsIHN1cmZhY2VOb3JtYWwpOiArMSBhdCB0aGUgc3Vic29sYXIgcG9pbnRcbiAgICAgICAgICAvLyAobm9vbiksIDAgYXQgdGhlIHRlcm1pbmF0b3IsIC0xIGF0IG1pZG5pZ2h0LiBzbW9vdGhzdGVwIG1hcHMgdGhlIGRheVxuICAgICAgICAgIC8vIHNpZGUgKD49IDAuMikgdG8gMCAobm8gZGFya2VuaW5nKSwgcmFtcHMgdGhyb3VnaCB0aGUgdGVybWluYXRvciwgYW5kXG4gICAgICAgICAgLy8gcmVhY2hlcyBmdWxsIGRhcmtlbmluZyBvbiB0aGUgbmlnaHQgc2lkZSAoPD0gLTAuMikuXG4gICAgICAgICAgZmxvYXQgZk5pZ2h0TWFzayA9IHNtb290aHN0ZXAoMC4yLCAtMC4yLCBmTGlnaHRBbmdsZSk7XG4gICAgICAgICAgZnJhZ0NvbG9yLmEgKj0gZk5pZ2h0TWFzaztcbiAgICAgICAgYCxcbiAgICAgICAgJ2ZzOkRFQ0tHTF9GSUxURVJfQ09MT1InOiBgYFxuICAgICAgfVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEF0bW9zcGhlcmVTa3lMYXllclJlYWxpc3RpYyBleHRlbmRzIFNpbXBsZU1lc2hMYXllcjxhbnksIEF0bW9zcGhlcmVMYXllclByb3BzPiB7XG4gIHN0YXRpYyBsYXllck5hbWUgPSAnQXRtb3NwaGVyZVNreUxheWVyUmVhbGlzdGljJztcblxuICBkcmF3KHt1bmlmb3Jtc306IHt1bmlmb3Jtczogb2JqZWN0fSk6IHZvaWQge1xuICAgIGNvbnN0IHtjb25maWd9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBtb2RlbCA9IHRoaXMuc3RhdGUubW9kZWw7XG4gICAgaWYgKG1vZGVsKSB7XG4gICAgICAobW9kZWwgYXMgYW55KS5wcm9wcy51bmlmb3JtcyA9IHtcbiAgICAgICAgLi4uKG1vZGVsIGFzIGFueSkucHJvcHMudW5pZm9ybXMsXG4gICAgICAgIC4uLkFUTU9TUEhFUkVfVU5JRk9STVMsXG4gICAgICAgIHYzU3VuUG9zOiBjb25maWcuYXppbXV0aCA/IGFuZ2xlVG9TdW5Qb3ModG9SYWRpYW5zKGNvbmZpZy5hemltdXRoQW5nbGUpKSA6IHYzU3VuUG9zTm93XG4gICAgICB9O1xuICAgIH1cbiAgICBzdXBlci5kcmF3KHt1bmlmb3Jtc30pO1xuICB9XG5cbiAgZ2V0U2hhZGVycygpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdXBlci5nZXRTaGFkZXJzKCksXG4gICAgICBpbmplY3Q6IHtcbiAgICAgICAgJ2ZzOiNkZWNsJzogYFxuICAgICAgICAgIHVuaWZvcm0gdmVjMyB2M1N1blBvcztcblxuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZztcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGV4cG9zdXJlO1xuXG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmU2FtcGxlcztcblxuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZklubmVyUmFkaXVzO1xuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZk91dGVyUmFkaXVzO1xuICAgICAgICAgIHVuaWZvcm0gZmxvYXQgZktyRVN1bjtcbiAgICAgICAgICB1bmlmb3JtIGZsb2F0IGZLbUVTdW47XG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmS3I0UEk7XG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmS200UEk7XG4gICAgICAgICAgdW5pZm9ybSBmbG9hdCBmU2NhbGVEZXB0aDtcblxuICAgICAgICAgIGNvbnN0IGludCBuU2FtcGxlcyA9ICR7TlVNX1NBTVBMRV9SQVlTfTtcblxuICAgICAgICAgIGZsb2F0IHNjYWxlKGZsb2F0IGZDb3MpIHtcbiAgICAgICAgICAgIGZsb2F0IHggPSAxLjAgLSBmQ29zO1xuICAgICAgICAgICAgcmV0dXJuIGZTY2FsZURlcHRoICogZXhwKC0wLjAwMjg3ICsgeCooMC40NTkgKyB4KigzLjgzICsgeCooLTYuOCArIHgqNS4yNSkpKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZmxvYXQgZ2V0TWllUGhhc2UoZmxvYXQgZkNvcywgZmxvYXQgZkNvczIsIGZsb2F0IGcsIGZsb2F0IGcyKSB7XG4gICAgICAgICAgICByZXR1cm4gMS41ICogKCgxLjAgLSBnMikgLyAoMi4wICsgZzIpKSAqICgxLjAgKyBmQ29zMikgLyBwb3coMS4wICsgZzIgLSAyLjAgKiBnICogZkNvcywgMS41KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmbG9hdCBnZXRSYXlsZWlnaFBoYXNlKGZsb2F0IGZDb3MyKSB7XG4gICAgICAgICAgICByZXR1cm4gMC43NSArIDAuNzUgKiBmQ29zMjtcbiAgICAgICAgICB9XG4gICAgICAgIGAsXG4gICAgICAgICdmczojbWFpbi1lbmQnOiBgXG4gICAgICAgICAgdmVjMyB2M0NhbWVyYVBvcyA9IGNhbWVyYVBvc2l0aW9uO1xuICAgICAgICAgIHZlYzMgdjNQb3MgPSBwb3NpdGlvbl9jb21tb25zcGFjZS54eXo7XG5cbiAgICAgICAgICBmbG9hdCBnMiA9IGcgKiBnO1xuXG4gICAgICAgICAgdmVjMyB2M0ludldhdmVsZW5ndGggPSB2ZWMzKDEuMCAvIHBvdygwLjY1MCwgNC4wKSwgMS4wIC8gcG93KDAuNTcwLCA0LjApLCAxLjAgLyBwb3coMC40NzUsIDQuMCkpO1xuXG4gICAgICAgICAgZmxvYXQgZklubmVyUmFkaXVzMiA9IGZJbm5lclJhZGl1cyAqIGZJbm5lclJhZGl1cztcbiAgICAgICAgICBmbG9hdCBmT3V0ZXJSYWRpdXMyID0gZk91dGVyUmFkaXVzICogZk91dGVyUmFkaXVzO1xuICAgICAgICAgIGZsb2F0IGZTY2FsZSA9IDEuMCAvIChmT3V0ZXJSYWRpdXMgLSBmSW5uZXJSYWRpdXMpO1xuICAgICAgICAgIGZsb2F0IGZTY2FsZU92ZXJTY2FsZURlcHRoID0gMS4wIC8gKGZPdXRlclJhZGl1cyAtIGZJbm5lclJhZGl1cykgLyBmU2NhbGVEZXB0aDtcblxuICAgICAgICAgIGZsb2F0IGNhbWVyYUhlaWdodDIgPSBsZW5ndGgodjNDYW1lcmFQb3MpICogbGVuZ3RoKHYzQ2FtZXJhUG9zKTtcblxuICAgICAgICAgIHZlYzMgdjNSYXkgPSB2M1BvcyAtIHYzQ2FtZXJhUG9zO1xuICAgICAgICAgIGZsb2F0IGZGYXIgPSBsZW5ndGgodjNSYXkpO1xuICAgICAgICAgIHYzUmF5IC89IGZGYXI7XG5cbiAgICAgICAgICBmbG9hdCBCID0gMi4wICogZG90KHYzQ2FtZXJhUG9zLCB2M1JheSk7XG4gICAgICAgICAgZmxvYXQgQyA9IGNhbWVyYUhlaWdodDIgLSBmT3V0ZXJSYWRpdXMyO1xuICAgICAgICAgIGZsb2F0IGZEZXQgPSBtYXgoMC4wLCBCKkIgLSA0LjAgKiBDKTtcbiAgICAgICAgICBmbG9hdCBmTmVhciA9IDAuNSAqICgtQiAtIHNxcnQoZkRldCkpO1xuXG4gICAgICAgICAgdmVjMyB2M1N0YXJ0ID0gdjNDYW1lcmFQb3MgKyB2M1JheSAqIGZOZWFyO1xuICAgICAgICAgIGZGYXIgLT0gZk5lYXI7XG4gICAgICAgICAgZmxvYXQgZlN0YXJ0QW5nbGUgPSBkb3QodjNSYXksIHYzU3RhcnQpIC8gZk91dGVyUmFkaXVzO1xuICAgICAgICAgIGZsb2F0IGZTdGFydERlcHRoID0gZXhwKC0xLjAgLyBmU2NhbGVEZXB0aCk7XG4gICAgICAgICAgZmxvYXQgZlN0YXJ0T2Zmc2V0ID0gZlN0YXJ0RGVwdGggKiBzY2FsZShmU3RhcnRBbmdsZSk7XG5cbiAgICAgICAgICBmbG9hdCBmU2FtcGxlTGVuZ3RoID0gZkZhciAvIGZTYW1wbGVzO1xuICAgICAgICAgIGZsb2F0IGZTY2FsZWRMZW5ndGggPSBmU2FtcGxlTGVuZ3RoICogZlNjYWxlO1xuICAgICAgICAgIHZlYzMgdjNTYW1wbGVSYXkgPSB2M1JheSAqIGZTYW1wbGVMZW5ndGg7XG4gICAgICAgICAgdmVjMyB2M1NhbXBsZVBvaW50ID0gdjNTdGFydCArIHYzU2FtcGxlUmF5ICogMC41O1xuXG4gICAgICAgICAgdmVjMyB2M0Zyb250Q29sb3IgPSB2ZWMzKDAuMCwgMC4wLCAwLjApO1xuICAgICAgICAgIGZvcihpbnQgaT0wOyBpPG5TYW1wbGVzOyBpKyspXG4gICAgICAgICAge1xuICAgICAgICAgICAgZmxvYXQgZkhlaWdodCA9IGxlbmd0aCh2M1NhbXBsZVBvaW50KTtcbiAgICAgICAgICAgIGZsb2F0IGZEZXB0aCA9IGV4cChmU2NhbGVPdmVyU2NhbGVEZXB0aCAqIChmSW5uZXJSYWRpdXMgLSBmSGVpZ2h0KSk7XG4gICAgICAgICAgICBmbG9hdCBmTGlnaHRBbmdsZSA9IGRvdCh2M1N1blBvcywgdjNTYW1wbGVQb2ludCkgLyBmSGVpZ2h0O1xuICAgICAgICAgICAgZmxvYXQgZkNhbWVyYUFuZ2xlID0gZG90KHYzUmF5LCB2M1NhbXBsZVBvaW50KSAvIGZIZWlnaHQ7XG4gICAgICAgICAgICBmbG9hdCBmU2NhdHRlciA9IChmU3RhcnRPZmZzZXQgKyBmRGVwdGggKiAoc2NhbGUoZkxpZ2h0QW5nbGUpIC0gc2NhbGUoZkNhbWVyYUFuZ2xlKSkpO1xuICAgICAgICAgICAgdmVjMyB2M0F0dGVudWF0ZSA9IGV4cCgtZlNjYXR0ZXIgKiAodjNJbnZXYXZlbGVuZ3RoICogZktyNFBJICsgZkttNFBJKSk7XG5cbiAgICAgICAgICAgIHYzRnJvbnRDb2xvciArPSB2M0F0dGVudWF0ZSAqIChmRGVwdGggKiBmU2NhbGVkTGVuZ3RoKTtcbiAgICAgICAgICAgIHYzU2FtcGxlUG9pbnQgKz0gdjNTYW1wbGVSYXk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmVjMyBjMCA9IHYzRnJvbnRDb2xvciAqICh2M0ludldhdmVsZW5ndGggKiBmS3JFU3VuKTtcbiAgICAgICAgICB2ZWMzIGMxID0gdjNGcm9udENvbG9yICogZkttRVN1bjtcblxuICAgICAgICAgIHZlYzMgdjNEaXJlY3Rpb24gPSB2M0NhbWVyYVBvcyAtIHYzUG9zO1xuXG4gICAgICAgICAgZmxvYXQgZkNvcyA9IGRvdCh2M1N1blBvcywgdjNEaXJlY3Rpb24pIC8gbGVuZ3RoKHYzRGlyZWN0aW9uKTtcbiAgICAgICAgICBmbG9hdCBmQ29zMiA9IGZDb3MgKiBmQ29zO1xuXG4gICAgICAgICAgdmVjMyBza3lDb2xvciA9IGdldFJheWxlaWdoUGhhc2UoZkNvczIpICogYzAgKyBnZXRNaWVQaGFzZShmQ29zLCBmQ29zMiwgZywgZzIpICogYzE7XG5cbiAgICAgICAgICBmcmFnQ29sb3IgPSB2ZWM0KHNreUNvbG9yLCAxLjApO1xuICAgICAgICAgIGZyYWdDb2xvci5hID0gZnJhZ0NvbG9yLmI7XG4gICAgICAgIGAsXG4gICAgICAgICdmczpERUNLR0xfRklMVEVSX0NPTE9SJzogYGBcbiAgICAgIH1cbiAgICB9O1xuICB9XG59XG5cbmNvbnN0IEFUTU9TUEhFUkVfUEFSQU1FVEVSUyA9IHtcbiAgZGVwdGhUZXN0OiBmYWxzZSxcbiAgYmxlbmRGdW5jOiBbMHgwMzAyLCAweDAzMDMsIDEsIDB4MDMwM10sIC8vIFNSQ19BTFBIQSwgT05FX01JTlVTX1NSQ19BTFBIQSwgT05FLCBPTkVfTUlOVVNfU1JDX0FMUEhBXG4gIGJsZW5kRXF1YXRpb246IFsweDgwMDYsIDB4ODAwNl0gLy8gRlVOQ19BRERcbn07XG5cbmNvbnN0IEFUTU9TUEhFUkVfU0tZX1BBUkFNRVRFUlMgPSB7XG4gIGN1bGxGYWNlOiAweDA0MDQsIC8vIEdMLkZST05UXG4gIGRlcHRoTWFzazogZmFsc2UsXG4gIGJsZW5kRnVuYzogWzB4MDMwMiwgMHgwMzAzLCAxLCAweDAzMDNdLFxuICBibGVuZEVxdWF0aW9uOiBbMHg4MDA2LCAweDgwMDZdXG59O1xuXG5leHBvcnQgY29uc3QgZ2V0R2xvYmVBdG1vc3BoZXJlTGF5ZXIgPSAoe2NvbmZpZ306IHtjb25maWc6IEdsb2JlQ29uZmlnfSkgPT4ge1xuICByZXR1cm4gbmV3IEF0bW9zcGhlcmVMYXllclJlYWxpc3RpYyh7XG4gICAgaWQ6ICdhdG1vc3BoZXJlJyxcbiAgICBkYXRhOiBbWzAsIDAsIDBdXSxcbiAgICBjb25maWcsXG4gICAgY29vcmRpbmF0ZU9yaWdpbjogWzAsIDAsIDBdLFxuICAgIGNvb3JkaW5hdGVTeXN0ZW06IENPT1JESU5BVEVfU1lTVEVNLkNBUlRFU0lBTixcbiAgICBnZXRQb3NpdGlvbjogKChkOiBudW1iZXJbXSkgPT4gZCkgYXMgYW55LFxuICAgIGdldENvbG9yOiBbMCwgMCwgMF0sXG4gICAgbWVzaDogR0xPQkVfTUVTSF9JTk5FUixcbiAgICBwYXJhbWV0ZXJzOiBBVE1PU1BIRVJFX1BBUkFNRVRFUlNcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0R2xvYmVBdG1vc3BoZXJlU2t5TGF5ZXIgPSAoe2NvbmZpZ306IHtjb25maWc6IEdsb2JlQ29uZmlnfSkgPT4ge1xuICByZXR1cm4gbmV3IEF0bW9zcGhlcmVTa3lMYXllclJlYWxpc3RpYyh7XG4gICAgaWQ6ICdhdG1vc3BoZXJlLXNreScsXG4gICAgZGF0YTogW1swLCAwLCAwXV0sXG4gICAgY29uZmlnLFxuICAgIGNvb3JkaW5hdGVPcmlnaW46IFswLCAwLCAwXSxcbiAgICBjb29yZGluYXRlU3lzdGVtOiBDT09SRElOQVRFX1NZU1RFTS5DQVJURVNJQU4sXG4gICAgZ2V0UG9zaXRpb246ICgoZDogbnVtYmVyW10pID0+IGQpIGFzIGFueSxcbiAgICBnZXRDb2xvcjogWzAsIDAsIDBdLFxuICAgIG1lc2g6IEdMT0JFX01FU0hfT1VURVIsXG4gICAgcGFyYW1ldGVyczogQVRNT1NQSEVSRV9TS1lfUEFSQU1FVEVSU1xuICB9KTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBT0EsSUFBQUEsS0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsV0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksSUFBQSxHQUFBSixPQUFBO0FBQTRDLFNBQUFLLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFMLENBQUEsR0FBQUMsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFRLFVBQUEsT0FBQVAsQ0FBQSxDQUFBUSxJQUFBLENBQUFDLEtBQUEsQ0FBQVQsQ0FBQSxFQUFBSSxDQUFBLFlBQUFKLENBQUE7QUFBQSxTQUFBVSxjQUFBWixDQUFBLGFBQUFDLENBQUEsTUFBQUEsQ0FBQSxHQUFBWSxTQUFBLENBQUFDLE1BQUEsRUFBQWIsQ0FBQSxVQUFBQyxDQUFBLFdB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
@@ -0,0 +1,6 @@
1
+ declare const EnhancedMultiIconLayer_base: any;
2
+ export default class EnhancedMultiIconLayer extends EnhancedMultiIconLayer_base {
3
+ static layerName: string;
4
+ getShaders(): any;
5
+ }
6
+ export {};