UNPKG

kepler.gl

Version:

kepler.gl is a webgl based application to visualize large scale location data in the browser

127 lines (126 loc) 22.7 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; 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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireWildcard(require("react")); var _reselect = require("reselect"); var _styledComponents = require("../common/styled-components"); var _mapStyleSelector = _interopRequireDefault(require("./map-style-panel/map-style-selector")); var _mapLayerSelector = _interopRequireDefault(require("./map-style-panel/map-layer-selector")); var _panelTitle = _interopRequireDefault(require("../side-panel/panel-title")); var _icons = require("../common/icons"); var _reactIntl = require("react-intl"); var _localization = require("@kepler.gl/localization"); 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); } 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; } 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 MapManagerFactory.deps = [_mapStyleSelector["default"], _mapLayerSelector["default"], _panelTitle["default"]]; function MapManagerFactory(MapStyleSelector, LayerGroupSelector, PanelTitle) { var MapManager = /*#__PURE__*/function (_Component) { function MapManager() { var _this; (0, _classCallCheck2["default"])(this, MapManager); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _callSuper(this, MapManager, [].concat(args)); (0, _defineProperty2["default"])(_this, "state", { isSelecting: false }); (0, _defineProperty2["default"])(_this, "_toggleSelecting", function () { _this.setState({ isSelecting: !_this.state.isSelecting }); }); (0, _defineProperty2["default"])(_this, "_selectStyle", function (val) { var mapStyleActions = _this.props.mapStyleActions; var mapStyleChange = mapStyleActions.mapStyleChange; mapStyleChange(val); _this._toggleSelecting(); }); (0, _defineProperty2["default"])(_this, "getCustomMapStylesActions", (0, _reselect.createSelector)(function (props) { return props.mapStyle.mapStyles; }, function (props) { return props.mapStyleActions; }, function (mapStyles, mapStyleActions) { var actionsPerCustomStyle = {}; Object.values(mapStyles).filter(function (mapStyle) { return Boolean(mapStyle.custom); }).forEach(function (_ref) { var id = _ref.id; actionsPerCustomStyle[id] = [{ id: "remove-map-style-".concat(id), IconComponent: _icons.Trash, tooltip: 'tooltip.removeBaseMapStyle', onClick: function onClick() { return mapStyleActions.removeCustomMapStyle({ id: id }); } }]; }); return actionsPerCustomStyle; })); return _this; } (0, _inherits2["default"])(MapManager, _Component); return (0, _createClass2["default"])(MapManager, [{ key: "render", value: function render() { var _this$props = this.props, mapStyle = _this$props.mapStyle, intl = _this$props.intl, mapStyleActions = _this$props.mapStyleActions, showAddMapStyleModal = _this$props.showAddMapStyleModal, panelMetadata = _this$props.panelMetadata; var currentStyle = mapStyle.mapStyles[mapStyle.styleType] || {}; var editableLayers = currentStyle.layerGroups || []; var customMapStylesActions = this.getCustomMapStylesActions(this.props); return /*#__PURE__*/_react["default"].createElement("div", { className: "map-style-panel" }, /*#__PURE__*/_react["default"].createElement(PanelTitle, { className: "map-manager-title", title: intl.formatMessage({ id: panelMetadata.label }) }, /*#__PURE__*/_react["default"].createElement(_styledComponents.Button, { className: "add-map-style-button", onClick: showAddMapStyleModal }, /*#__PURE__*/_react["default"].createElement(_icons.Add, { height: "12px" }), /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, { id: 'mapManager.addMapStyle' }))), /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(MapStyleSelector, { mapStyle: mapStyle, isSelecting: this.state.isSelecting, onChange: this._selectStyle, toggleActive: this._toggleSelecting, customMapStylesActions: customMapStylesActions }), editableLayers.length ? /*#__PURE__*/_react["default"].createElement(LayerGroupSelector, { layers: mapStyle.visibleLayerGroups, editableLayers: editableLayers, topLayers: mapStyle.topLayerGroups, onChange: mapStyleActions.mapConfigChange, threeDBuildingColor: mapStyle.threeDBuildingColor, on3dBuildingColorChange: mapStyleActions.set3dBuildingColor, backgroundColor: mapStyle.backgroundColor, onBackgroundColorChange: mapStyleActions.setBackgroundColor }) : null)); } }]); }(_react.Component); return (0, _reactIntl.injectIntl)(MapManager); } var _default = exports["default"] = MapManagerFactory; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVzZWxlY3QiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9tYXBTdHlsZVNlbGVjdG9yIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9tYXBMYXllclNlbGVjdG9yIiwiX3BhbmVsVGl0bGUiLCJfaWNvbnMiLCJfcmVhY3RJbnRsIiwiX2xvY2FsaXphdGlvbiIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9jYWxsU3VwZXIiLCJvIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJhcHBseSIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiTWFwTWFuYWdlckZhY3RvcnkiLCJkZXBzIiwiTWFwU3R5bGVTZWxlY3RvckZhY3RvcnkiLCJMYXllckdyb3VwU2VsZWN0b3JGYWN0b3J5IiwiUGFuZWxUaXRsZUZhY3RvcnkiLCJNYXBTdHlsZVNlbGVjdG9yIiwiTGF5ZXJHcm91cFNlbGVjdG9yIiwiUGFuZWxUaXRsZSIsIk1hcE1hbmFnZXIiLCJfQ29tcG9uZW50IiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJjb25jYXQiLCJfZGVmaW5lUHJvcGVydHkyIiwiaXNTZWxlY3RpbmciLCJzZXRTdGF0ZSIsInN0YXRlIiwidmFsIiwibWFwU3R5bGVBY3Rpb25zIiwicHJvcHMiLCJtYXBTdHlsZUNoYW5nZSIsIl90b2dnbGVTZWxlY3RpbmciLCJjcmVhdGVTZWxlY3RvciIsIm1hcFN0eWxlIiwibWFwU3R5bGVzIiwiYWN0aW9uc1BlckN1c3RvbVN0eWxlIiwidmFsdWVzIiwiZmlsdGVyIiwiY3VzdG9tIiwiZm9yRWFjaCIsIl9yZWYiLCJpZCIsIkljb25Db21wb25lbnQiLCJUcmFzaCIsInRvb2x0aXAiLCJvbkNsaWNrIiwicmVtb3ZlQ3VzdG9tTWFwU3R5bGUiLCJfaW5oZXJpdHMyIiwiX2NyZWF0ZUNsYXNzMiIsImtleSIsInZhbHVlIiwicmVuZGVyIiwiX3RoaXMkcHJvcHMiLCJpbnRsIiwic2hvd0FkZE1hcFN0eWxlTW9kYWwiLCJwYW5lbE1ldGFkYXRhIiwiY3VycmVudFN0eWxlIiwic3R5bGVUeXBlIiwiZWRpdGFibGVMYXllcnMiLCJsYXllckdyb3VwcyIsImN1c3RvbU1hcFN0eWxlc0FjdGlvbnMiLCJnZXRDdXN0b21NYXBTdHlsZXNBY3Rpb25zIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsInRpdGxlIiwiZm9ybWF0TWVzc2FnZSIsImxhYmVsIiwiQnV0dG9uIiwiQWRkIiwiaGVpZ2h0IiwiRm9ybWF0dGVkTWVzc2FnZSIsIm9uQ2hhbmdlIiwiX3NlbGVjdFN0eWxlIiwidG9nZ2xlQWN0aXZlIiwibGF5ZXJzIiwidmlzaWJsZUxheWVyR3JvdXBzIiwidG9wTGF5ZXJzIiwidG9wTGF5ZXJHcm91cHMiLCJtYXBDb25maWdDaGFuZ2UiLCJ0aHJlZURCdWlsZGluZ0NvbG9yIiwib24zZEJ1aWxkaW5nQ29sb3JDaGFuZ2UiLCJzZXQzZEJ1aWxkaW5nQ29sb3IiLCJiYWNrZ3JvdW5kQ29sb3IiLCJvbkJhY2tncm91bmRDb2xvckNoYW5nZSIsInNldEJhY2tncm91bmRDb2xvciIsIkNvbXBvbmVudCIsImluamVjdEludGwiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2lkZS1wYW5lbC9tYXAtbWFuYWdlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge2NyZWF0ZVNlbGVjdG9yfSBmcm9tICdyZXNlbGVjdCc7XG5cbmltcG9ydCB7QnV0dG9ufSBmcm9tICcuLi9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IE1hcFN0eWxlU2VsZWN0b3JGYWN0b3J5IGZyb20gJy4vbWFwLXN0eWxlLXBhbmVsL21hcC1zdHlsZS1zZWxlY3Rvcic7XG5pbXBvcnQgTGF5ZXJHcm91cFNlbGVjdG9yRmFjdG9yeSBmcm9tICcuL21hcC1zdHlsZS1wYW5lbC9tYXAtbGF5ZXItc2VsZWN0b3InO1xuaW1wb3J0IFBhbmVsVGl0bGVGYWN0b3J5IGZyb20gJy4uL3NpZGUtcGFuZWwvcGFuZWwtdGl0bGUnO1xuXG5pbXBvcnQge0FkZCwgVHJhc2h9IGZyb20gJy4uL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQge1BhbmVsTWV0YX0gZnJvbSAnLi9jb21tb24vdHlwZXMnO1xuaW1wb3J0IHtpbmplY3RJbnRsLCBXcmFwcGVkQ29tcG9uZW50UHJvcHN9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IHtGb3JtYXR0ZWRNZXNzYWdlfSBmcm9tICdAa2VwbGVyLmdsL2xvY2FsaXphdGlvbic7XG5pbXBvcnQge01hcFN0eWxlfSBmcm9tICdAa2VwbGVyLmdsL3JlZHVjZXJzJztcbmltcG9ydCB7TWFwU3R5bGVBY3Rpb25zfSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtNYXBTdHlsZXN9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBNYXBNYW5hZ2VyUHJvcHMgPSB7XG4gIG1hcFN0eWxlOiBNYXBTdHlsZTtcbiAgbWFwU3R5bGVBY3Rpb25zOiB7XG4gICAgbWFwU3R5bGVDaGFuZ2U6IHR5cGVvZiBNYXBTdHlsZUFjdGlvbnMubWFwU3R5bGVDaGFuZ2U7XG4gICAgbWFwQ29uZmlnQ2hhbmdlOiB0eXBlb2YgTWFwU3R5bGVBY3Rpb25zLm1hcENvbmZpZ0NoYW5nZTtcbiAgICBzZXQzZEJ1aWxkaW5nQ29sb3I6IHR5cGVvZiBNYXBTdHlsZUFjdGlvbnMuc2V0M2RCdWlsZGluZ0NvbG9yO1xuICAgIHNldEJhY2tncm91bmRDb2xvcjogdHlwZW9mIE1hcFN0eWxlQWN0aW9ucy5zZXRCYWNrZ3JvdW5kQ29sb3I7XG4gICAgcmVtb3ZlQ3VzdG9tTWFwU3R5bGU6IHR5cGVvZiBNYXBTdHlsZUFjdGlvbnMucmVtb3ZlQ3VzdG9tTWFwU3R5bGU7XG4gIH07XG4gIHNob3dBZGRNYXBTdHlsZU1vZGFsOiAoKSA9PiB2b2lkO1xuICBwYW5lbE1ldGFkYXRhOiBQYW5lbE1ldGE7XG59ICYgV3JhcHBlZENvbXBvbmVudFByb3BzO1xuXG5NYXBNYW5hZ2VyRmFjdG9yeS5kZXBzID0gW01hcFN0eWxlU2VsZWN0b3JGYWN0b3J5LCBMYXllckdyb3VwU2VsZWN0b3JGYWN0b3J5LCBQYW5lbFRpdGxlRmFjdG9yeV07XG5cbmZ1bmN0aW9uIE1hcE1hbmFnZXJGYWN0b3J5KFxuICBNYXBTdHlsZVNlbGVjdG9yOiBSZXR1cm5UeXBlPHR5cGVvZiBNYXBTdHlsZVNlbGVjdG9yRmFjdG9yeT4sXG4gIExheWVyR3JvdXBTZWxlY3RvcjogUmV0dXJuVHlwZTx0eXBlb2YgTGF5ZXJHcm91cFNlbGVjdG9yRmFjdG9yeT4sXG4gIFBhbmVsVGl0bGU6IFJldHVyblR5cGU8dHlwZW9mIFBhbmVsVGl0bGVGYWN0b3J5PlxuKSB7XG4gIGNsYXNzIE1hcE1hbmFnZXIgZXh0ZW5kcyBDb21wb25lbnQ8TWFwTWFuYWdlclByb3BzPiB7XG4gICAgc3RhdGUgPSB7XG4gICAgICBpc1NlbGVjdGluZzogZmFsc2VcbiAgICB9O1xuXG4gICAgX3RvZ2dsZVNlbGVjdGluZyA9ICgpID0+IHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe2lzU2VsZWN0aW5nOiAhdGhpcy5zdGF0ZS5pc1NlbGVjdGluZ30pO1xuICAgIH07XG5cbiAgICBfc2VsZWN0U3R5bGUgPSAodmFsOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHttYXBTdHlsZUFjdGlvbnN9ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IHttYXBTdHlsZUNoYW5nZX0gPSBtYXBTdHlsZUFjdGlvbnM7XG4gICAgICBtYXBTdHlsZUNoYW5nZSh2YWwpO1xuICAgICAgdGhpcy5fdG9nZ2xlU2VsZWN0aW5nKCk7XG4gICAgfTtcblxuICAgIGdldEN1c3RvbU1hcFN0eWxlc0FjdGlvbnMgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIChwcm9wczogTWFwTWFuYWdlclByb3BzKSA9PiBwcm9wcy5tYXBTdHlsZS5tYXBTdHlsZXMsXG4gICAgICAocHJvcHM6IE1hcE1hbmFnZXJQcm9wcykgPT4gcHJvcHMubWFwU3R5bGVBY3Rpb25zLFxuICAgICAgKG1hcFN0eWxlczogTWFwU3R5bGVzLCBtYXBTdHlsZUFjdGlvbnMpID0+IHtcbiAgICAgICAgY29uc3QgYWN0aW9uc1BlckN1c3RvbVN0eWxlID0ge307XG4gICAgICAgIE9iamVjdC52YWx1ZXMobWFwU3R5bGVzKVxuICAgICAgICAgIC5maWx0ZXIobWFwU3R5bGUgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIEJvb2xlYW4obWFwU3R5bGUuY3VzdG9tKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5mb3JFYWNoKCh7aWR9KSA9PiB7XG4gICAgICAgICAgICBhY3Rpb25zUGVyQ3VzdG9tU3R5bGVbaWRdID0gW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IGByZW1vdmUtbWFwLXN0eWxlLSR7aWR9YCxcbiAgICAgICAgICAgICAgICBJY29uQ29tcG9uZW50OiBUcmFzaCxcbiAgICAgICAgICAgICAgICB0b29sdGlwOiAndG9vbHRpcC5yZW1vdmVCYXNlTWFwU3R5bGUnLFxuICAgICAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IG1hcFN0eWxlQWN0aW9ucy5yZW1vdmVDdXN0b21NYXBTdHlsZSh7aWR9KVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdO1xuICAgICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYWN0aW9uc1BlckN1c3RvbVN0eWxlO1xuICAgICAgfVxuICAgICk7XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7bWFwU3R5bGUsIGludGwsIG1hcFN0eWxlQWN0aW9ucywgc2hvd0FkZE1hcFN0eWxlTW9kYWwsIHBhbmVsTWV0YWRhdGF9ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IGN1cnJlbnRTdHlsZSA9IG1hcFN0eWxlLm1hcFN0eWxlc1ttYXBTdHlsZS5zdHlsZVR5cGVdIHx8IHt9O1xuICAgICAgY29uc3QgZWRpdGFibGVMYXllcnMgPSBjdXJyZW50U3R5bGUubGF5ZXJHcm91cHMgfHwgW107XG4gICAgICBjb25zdCBjdXN0b21NYXBTdHlsZXNBY3Rpb25zID0gdGhpcy5nZXRDdXN0b21NYXBTdHlsZXNBY3Rpb25zKHRoaXMucHJvcHMpO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1hcC1zdHlsZS1wYW5lbFwiPlxuICAgICAgICAgIDxQYW5lbFRpdGxlXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJtYXAtbWFuYWdlci10aXRsZVwiXG4gICAgICAgICAgICB0aXRsZT17aW50bC5mb3JtYXRNZXNzYWdlKHtpZDogcGFuZWxNZXRhZGF0YS5sYWJlbH0pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPVwiYWRkLW1hcC1zdHlsZS1idXR0b25cIiBvbkNsaWNrPXtzaG93QWRkTWFwU3R5bGVNb2RhbH0+XG4gICAgICAgICAgICAgIDxBZGQgaGVpZ2h0PVwiMTJweFwiIC8+XG4gICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXsnbWFwTWFuYWdlci5hZGRNYXBTdHlsZSd9IC8+XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8L1BhbmVsVGl0bGU+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxNYXBTdHlsZVNlbGVjdG9yXG4gICAgICAgICAgICAgIG1hcFN0eWxlPXttYXBTdHlsZX1cbiAgICAgICAgICAgICAgaXNTZWxlY3Rpbmc9e3RoaXMuc3RhdGUuaXNTZWxlY3Rpbmd9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLl9zZWxlY3RTdHlsZX1cbiAgICAgICAgICAgICAgdG9nZ2xlQWN0aXZlPXt0aGlzLl90b2dnbGVTZWxlY3Rpbmd9XG4gICAgICAgICAgICAgIGN1c3RvbU1hcFN0eWxlc0FjdGlvbnM9e2N1c3RvbU1hcFN0eWxlc0FjdGlvbnN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAge2VkaXRhYmxlTGF5ZXJzLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgPExheWVyR3JvdXBTZWxlY3RvclxuICAgICAgICAgICAgICAgIGxheWVycz17bWFwU3R5bGUudmlzaWJsZUxheWVyR3JvdXBzfVxuICAgICAgICAgICAgICAgIGVkaXRhYmxlTGF5ZXJzPXtlZGl0YWJsZUxheWVyc31cbiAgICAgICAgICAgICAgICB0b3BMYXllcnM9e21hcFN0eWxlLnRvcExheWVyR3JvdXBzfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXttYXBTdHlsZUFjdGlvbnMubWFwQ29uZmlnQ2hhbmdlfVxuICAgICAgICAgICAgICAgIHRocmVlREJ1aWxkaW5nQ29sb3I9e21hcFN0eWxlLnRocmVlREJ1aWxkaW5nQ29sb3J9XG4gICAgICAgICAgICAgICAgb24zZEJ1aWxkaW5nQ29sb3JDaGFuZ2U9e21hcFN0eWxlQWN0aW9ucy5zZXQzZEJ1aWxkaW5nQ29sb3J9XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yPXttYXBTdHlsZS5iYWNrZ3JvdW5kQ29sb3J9XG4gICAgICAgICAgICAgICAgb25CYWNrZ3JvdW5kQ29sb3JDaGFuZ2U9e21hcFN0eWxlQWN0aW9ucy5zZXRCYWNrZ3JvdW5kQ29sb3J9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaW5qZWN0SW50bChNYXBNYW5hZ2VyKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgTWFwTWFuYWdlckZhY3Rvcnk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsU0FBQSxHQUFBRCxPQUFBO0FBRUEsSUFBQUUsaUJBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLGlCQUFBLEdBQUFDLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBSyxpQkFBQSxHQUFBRCxzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQU0sV0FBQSxHQUFBRixzQkFBQSxDQUFBSixPQUFBO0FBRUEsSUFBQU8sTUFBQSxHQUFBUCxPQUFBO0FBRUEsSUFBQVEsVUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsYUFBQSxHQUFBVCxPQUFBO0FBQXlELFNBQUFVLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBWix3QkFBQVksQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLGdCQUFBSyxPQUFBLENBQUFMLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENB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