kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
89 lines (88 loc) • 17.1 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.gridVisConfigs = exports["default"] = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _layers = require("@deck.gl/layers");
var _deckglLayers = require("@kepler.gl/deckgl-layers");
var _aggregationLayer = _interopRequireDefault(require("../aggregation-layer"));
var _gridUtils = require("./grid-utils");
var _gridLayerIcon = _interopRequireDefault(require("./grid-layer-icon"));
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; }
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; }
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)); }
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } // SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
var gridVisConfigs = exports.gridVisConfigs = {
opacity: 'opacity',
worldUnitSize: 'worldUnitSize',
colorRange: 'colorRange',
coverage: 'coverage',
sizeRange: 'elevationRange',
percentile: 'percentile',
elevationPercentile: 'elevationPercentile',
elevationScale: 'elevationScale',
enableElevationZoomFactor: 'enableElevationZoomFactor',
fixedHeight: 'fixedHeight',
colorAggregation: 'colorAggregation',
sizeAggregation: 'sizeAggregation',
enable3d: 'enable3d'
};
var GridLayer = exports["default"] = /*#__PURE__*/function (_AggregationLayer) {
function GridLayer(props) {
var _this;
(0, _classCallCheck2["default"])(this, GridLayer);
_this = _callSuper(this, GridLayer, [props]);
_this.registerVisConfig(gridVisConfigs);
_this.visConfigSettings.worldUnitSize.label = 'columns.grid.worldUnitSize';
return _this;
}
(0, _inherits2["default"])(GridLayer, _AggregationLayer);
return (0, _createClass2["default"])(GridLayer, [{
key: "type",
get: function get() {
return 'grid';
}
}, {
key: "layerIcon",
get: function get() {
return _gridLayerIcon["default"];
}
}, {
key: "renderLayer",
value: function renderLayer(opts) {
var data = opts.data,
objectHovered = opts.objectHovered,
mapState = opts.mapState;
var defaultAggregationLayerProps = this.getDefaultAggregationLayerProp(opts);
var zoomFactor = this.getZoomFactor(mapState);
var visConfig = this.config.visConfig;
var cellSize = visConfig.worldUnitSize * 1000;
var hoveredObject = this.hasHoveredObject(objectHovered);
return [new _deckglLayers.EnhancedGridLayer(_objectSpread(_objectSpread(_objectSpread({}, defaultAggregationLayerProps), data), {}, {
wrapLongitude: false,
cellSize: cellSize
}))].concat((0, _toConsumableArray2["default"])(hoveredObject && !visConfig.enable3d ? [new _layers.GeoJsonLayer(_objectSpread(_objectSpread({}, this.getDefaultHoverLayerProps()), {}, {
visible: defaultAggregationLayerProps.visible,
wrapLongitude: false,
data: [(0, _gridUtils.pointToPolygonGeo)({
object: hoveredObject,
cellSize: cellSize,
coverage: visConfig.coverage,
mapState: mapState
})],
getLineColor: this.config.highlightColor,
lineWidthScale: 8 * zoomFactor
}))] : []));
}
}]);
}(_aggregationLayer["default"]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGF5ZXJzIiwicmVxdWlyZSIsIl9kZWNrZ2xMYXllcnMiLCJfYWdncmVnYXRpb25MYXllciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZ3JpZFV0aWxzIiwiX2dyaWRMYXllckljb24iLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiY2FsbCIsImdyaWRWaXNDb25maWdzIiwiZXhwb3J0cyIsIm9wYWNpdHkiLCJ3b3JsZFVuaXRTaXplIiwiY29sb3JSYW5nZSIsImNvdmVyYWdlIiwic2l6ZVJhbmdlIiwicGVyY2VudGlsZSIsImVsZXZhdGlvblBlcmNlbnRpbGUiLCJlbGV2YXRpb25TY2FsZSIsImVuYWJsZUVsZXZhdGlvblpvb21GYWN0b3IiLCJmaXhlZEhlaWdodCIsImNvbG9yQWdncmVnYXRpb24iLCJzaXplQWdncmVnYXRpb24iLCJlbmFibGUzZCIsIkdyaWRMYXllciIsIl9BZ2dyZWdhdGlvbkxheWVyIiwicHJvcHMiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjazIiLCJyZWdpc3RlclZpc0NvbmZpZyIsInZpc0NvbmZpZ1NldHRpbmdzIiwibGFiZWwiLCJfaW5oZXJpdHMyIiwiX2NyZWF0ZUNsYXNzMiIsImtleSIsImdldCIsIkdyaWRMYXllckljb24iLCJ2YWx1ZSIsInJlbmRlckxheWVyIiwib3B0cyIsImRhdGEiLCJvYmplY3RIb3ZlcmVkIiwibWFwU3RhdGUiLCJkZWZhdWx0QWdncmVnYXRpb25MYXllclByb3BzIiwiZ2V0RGVmYXVsdEFnZ3JlZ2F0aW9uTGF5ZXJQcm9wIiwiem9vbUZhY3RvciIsImdldFpvb21GYWN0b3IiLCJ2aXNDb25maWciLCJjb25maWciLCJjZWxsU2l6ZSIsImhvdmVyZWRPYmplY3QiLCJoYXNIb3ZlcmVkT2JqZWN0IiwiRW5oYW5jZWRHcmlkTGF5ZXIiLCJ3cmFwTG9uZ2l0dWRlIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsIkdlb0pzb25MYXllciIsImdldERlZmF1bHRIb3ZlckxheWVyUHJvcHMiLCJ2aXNpYmxlIiwicG9pbnRUb1BvbHlnb25HZW8iLCJvYmplY3QiLCJnZXRMaW5lQ29sb3IiLCJoaWdobGlnaHRDb2xvciIsImxpbmVXaWR0aFNjYWxlIiwiQWdncmVnYXRpb25MYXllciJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ncmlkLWxheWVyL2dyaWQtbGF5ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtHZW9Kc29uTGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2xheWVycyc7XG5pbXBvcnQge0VuaGFuY2VkR3JpZExheWVyfSBmcm9tICdAa2VwbGVyLmdsL2RlY2tnbC1sYXllcnMnO1xuaW1wb3J0IEFnZ3JlZ2F0aW9uTGF5ZXIsIHtBZ2dyZWdhdGlvbkxheWVyQ29uZmlnfSBmcm9tICcuLi9hZ2dyZWdhdGlvbi1sYXllcic7XG5pbXBvcnQge3BvaW50VG9Qb2x5Z29uR2VvfSBmcm9tICcuL2dyaWQtdXRpbHMnO1xuaW1wb3J0IEdyaWRMYXllckljb24gZnJvbSAnLi9ncmlkLWxheWVyLWljb24nO1xuaW1wb3J0IHtcbiAgQ29sb3JSYW5nZSxcbiAgVmlzQ29uZmlnQm9vbGVhbixcbiAgVmlzQ29uZmlnQ29sb3JSYW5nZSxcbiAgVmlzQ29uZmlnTnVtYmVyLFxuICBWaXNDb25maWdSYW5nZSxcbiAgVmlzQ29uZmlnU2VsZWN0aW9uLFxuICBNZXJnZVxufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7QWdncmVnYXRpb25UeXBlc30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG5leHBvcnQgdHlwZSBHcmlkTGF5ZXJWaXNDb25maWdTZXR0aW5ncyA9IHtcbiAgb3BhY2l0eTogVmlzQ29uZmlnTnVtYmVyO1xuICB3b3JsZFVuaXRTaXplOiBWaXNDb25maWdOdW1iZXI7XG4gIGNvbG9yUmFuZ2U6IFZpc0NvbmZpZ0NvbG9yUmFuZ2U7XG4gIGNvdmVyYWdlOiBWaXNDb25maWdOdW1iZXI7XG4gIHNpemVSYW5nZTogVmlzQ29uZmlnUmFuZ2U7XG4gIHBlcmNlbnRpbGU6IFZpc0NvbmZpZ1JhbmdlO1xuICBlbGV2YXRpb25QZXJjZW50aWxlOiBWaXNDb25maWdSYW5nZTtcbiAgZWxldmF0aW9uU2NhbGU6IFZpc0NvbmZpZ051bWJlcjtcbiAgZW5hYmxlRWxldmF0aW9uWm9vbUZhY3RvcjogVmlzQ29uZmlnQm9vbGVhbjtcbiAgY29sb3JBZ2dyZWdhdGlvbjogVmlzQ29uZmlnU2VsZWN0aW9uO1xuICBzaXplQWdncmVnYXRpb246IFZpc0NvbmZpZ1NlbGVjdGlvbjtcbiAgZW5hYmxlM2Q6IFZpc0NvbmZpZ0Jvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBHcmlkTGF5ZXJWaXNDb25maWcgPSB7XG4gIG9wYWNpdHk6IG51bWJlcjtcbiAgd29ybGRVbml0U2l6ZTogbnVtYmVyO1xuICBjb2xvclJhbmdlOiBDb2xvclJhbmdlO1xuICBjb3ZlcmFnZTogbnVtYmVyO1xuICBzaXplUmFuZ2U6IFtudW1iZXIsIG51bWJlcl07XG4gIHBlcmNlbnRpbGU6IFtudW1iZXIsIG51bWJlcl07XG4gIGVsZXZhdGlvblBlcmNlbnRpbGU6IFtudW1iZXIsIG51bWJlcl07XG4gIGVsZXZhdGlvblNjYWxlOiBudW1iZXI7XG4gIGVuYWJsZUVsZXZhdGlvblpvb21GYWN0b3I6IGJvb2xlYW47XG4gIGNvbG9yQWdncmVnYXRpb246IEFnZ3JlZ2F0aW9uVHlwZXM7XG4gIHNpemVBZ2dyZWdhdGlvbjogQWdncmVnYXRpb25UeXBlcztcbiAgZW5hYmxlM2Q6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBHcmlkTGF5ZXJDb25maWcgPSBNZXJnZTxBZ2dyZWdhdGlvbkxheWVyQ29uZmlnLCB7dmlzQ29uZmlnOiBHcmlkTGF5ZXJWaXNDb25maWd9PjtcblxuZXhwb3J0IGNvbnN0IGdyaWRWaXNDb25maWdzOiB7XG4gIG9wYWNpdHk6ICdvcGFjaXR5JztcbiAgd29ybGRVbml0U2l6ZTogJ3dvcmxkVW5pdFNpemUnO1xuICBjb2xvclJhbmdlOiAnY29sb3JSYW5nZSc7XG4gIGNvdmVyYWdlOiAnY292ZXJhZ2UnO1xuICBzaXplUmFuZ2U6ICdlbGV2YXRpb25SYW5nZSc7XG4gIHBlcmNlbnRpbGU6ICdwZXJjZW50aWxlJztcbiAgZWxldmF0aW9uUGVyY2VudGlsZTogJ2VsZXZhdGlvblBlcmNlbnRpbGUnO1xuICBlbGV2YXRpb25TY2FsZTogJ2VsZXZhdGlvblNjYWxlJztcbiAgZW5hYmxlRWxldmF0aW9uWm9vbUZhY3RvcjogJ2VuYWJsZUVsZXZhdGlvblpvb21GYWN0b3InO1xuICBmaXhlZEhlaWdodDogJ2ZpeGVkSGVpZ2h0JztcbiAgY29sb3JBZ2dyZWdhdGlvbjogJ2NvbG9yQWdncmVnYXRpb24nO1xuICBzaXplQWdncmVnYXRpb246ICdzaXplQWdncmVnYXRpb24nO1xuICBlbmFibGUzZDogJ2VuYWJsZTNkJztcbn0gPSB7XG4gIG9wYWNpdHk6ICdvcGFjaXR5JyxcbiAgd29ybGRVbml0U2l6ZTogJ3dvcmxkVW5pdFNpemUnLFxuICBjb2xvclJhbmdlOiAnY29sb3JSYW5nZScsXG4gIGNvdmVyYWdlOiAnY292ZXJhZ2UnLFxuICBzaXplUmFuZ2U6ICdlbGV2YXRpb25SYW5nZScsXG4gIHBlcmNlbnRpbGU6ICdwZXJjZW50aWxlJyxcbiAgZWxldmF0aW9uUGVyY2VudGlsZTogJ2VsZXZhdGlvblBlcmNlbnRpbGUnLFxuICBlbGV2YXRpb25TY2FsZTogJ2VsZXZhdGlvblNjYWxlJyxcbiAgZW5hYmxlRWxldmF0aW9uWm9vbUZhY3RvcjogJ2VuYWJsZUVsZXZhdGlvblpvb21GYWN0b3InLFxuICBmaXhlZEhlaWdodDogJ2ZpeGVkSGVpZ2h0JyxcbiAgY29sb3JBZ2dyZWdhdGlvbjogJ2NvbG9yQWdncmVnYXRpb24nLFxuICBzaXplQWdncmVnYXRpb246ICdzaXplQWdncmVnYXRpb24nLFxuICBlbmFibGUzZDogJ2VuYWJsZTNkJ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgR3JpZExheWVyIGV4dGVuZHMgQWdncmVnYXRpb25MYXllciB7XG4gIGRlY2xhcmUgdmlzQ29uZmlnU2V0dGluZ3M6IEdyaWRMYXllclZpc0NvbmZpZ1NldHRpbmdzO1xuICBkZWNsYXJlIGNvbmZpZzogR3JpZExheWVyQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgdGhpcy5yZWdpc3RlclZpc0NvbmZpZyhncmlkVmlzQ29uZmlncyk7XG4gICAgdGhpcy52aXNDb25maWdTZXR0aW5ncy53b3JsZFVuaXRTaXplLmxhYmVsID0gJ2NvbHVtbnMuZ3JpZC53b3JsZFVuaXRTaXplJztcbiAgfVxuXG4gIGdldCB0eXBlKCk6ICdncmlkJyB7XG4gICAgcmV0dXJuICdncmlkJztcbiAgfVxuXG4gIGdldCBsYXllckljb24oKSB7XG4gICAgcmV0dXJuIEdyaWRMYXllckljb247XG4gIH1cblxuICByZW5kZXJMYXllcihvcHRzKSB7XG4gICAgY29uc3Qge2RhdGEsIG9iamVjdEhvdmVyZWQsIG1hcFN0YXRlfSA9IG9wdHM7XG5cbiAgICBjb25zdCBkZWZhdWx0QWdncmVnYXRpb25MYXllclByb3BzID0gdGhpcy5nZXREZWZhdWx0QWdncmVnYXRpb25MYXllclByb3Aob3B0cyk7XG4gICAgY29uc3Qgem9vbUZhY3RvciA9IHRoaXMuZ2V0Wm9vbUZhY3RvcihtYXBTdGF0ZSk7XG4gICAgY29uc3Qge3Zpc0NvbmZpZ30gPSB0aGlzLmNvbmZpZztcbiAgICBjb25zdCBjZWxsU2l6ZSA9IHZpc0NvbmZpZy53b3JsZFVuaXRTaXplICogMTAwMDtcbiAgICBjb25zdCBob3ZlcmVkT2JqZWN0ID0gdGhpcy5oYXNIb3ZlcmVkT2JqZWN0KG9iamVjdEhvdmVyZWQpO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIG5ldyBFbmhhbmNlZEdyaWRMYXllcih7XG4gICAgICAgIC4uLmRlZmF1bHRBZ2dyZWdhdGlvbkxheWVyUHJvcHMsXG4gICAgICAgIC4uLmRhdGEsXG4gICAgICAgIHdyYXBMb25naXR1ZGU6IGZhbHNlLFxuICAgICAgICBjZWxsU2l6ZVxuICAgICAgfSksXG5cbiAgICAgIC8vIHJlbmRlciBhbiBvdXRsaW5lIG9mIGVhY2ggY2VsbCBpZiBub3QgZXh0cnVkZWRcbiAgICAgIC4uLihob3ZlcmVkT2JqZWN0ICYmICF2aXNDb25maWcuZW5hYmxlM2RcbiAgICAgICAgPyBbXG4gICAgICAgICAgICBuZXcgR2VvSnNvbkxheWVyKHtcbiAgICAgICAgICAgICAgLi4udGhpcy5nZXREZWZhdWx0SG92ZXJMYXllclByb3BzKCksXG4gICAgICAgICAgICAgIHZpc2libGU6IGRlZmF1bHRBZ2dyZWdhdGlvbkxheWVyUHJvcHMudmlzaWJsZSxcbiAgICAgICAgICAgICAgd3JhcExvbmdpdHVkZTogZmFsc2UsXG4gICAgICAgICAgICAgIGRhdGE6IFtcbiAgICAgICAgICAgICAgICBwb2ludFRvUG9seWdvbkdlbyh7XG4gICAgICAgICAgICAgICAgICBvYmplY3Q6IGhvdmVyZWRPYmplY3QsXG4gICAgICAgICAgICAgICAgICBjZWxsU2l6ZSxcbiAgICAgICAgICAgICAgICAgIGNvdmVyYWdlOiB2aXNDb25maWcuY292ZXJhZ2UsXG4gICAgICAgICAgICAgICAgICBtYXBTdGF0ZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIGdldExpbmVDb2xvcjogdGhpcy5jb25maWcuaGlnaGxpZ2h0Q29sb3IsXG4gICAgICAgICAgICAgIGxpbmVXaWR0aFNjYWxlOiA4ICogem9vbUZhY3RvclxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdXG4gICAgICAgIDogW10pXG4gICAgXTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLGFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGlCQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxVQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxjQUFBLEdBQUFGLHNCQUFBLENBQUFILE9BQUE7QUFBOEMsU0FBQU0sUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFBLEVBQUFDLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxDQUFBLEVBQUFJLENBQUEsWUFBQUosQ0FBQTtBQUFBLFNBQUFVLGNBQUFaLENBQUEsYUFBQUMsQ0FBQSxNQUFBQSxDQUFBLEdBQUFZLFNBQUEsQ0FBQUMsTUFBQSxFQUFBYixDQUFBLFVBQUFDLENBQUEsV0FBQVcsU0FBQSxD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
;