UNPKG

kepler.gl

Version:

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

115 lines (111 loc) 21.6 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 _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral")); var _react = _interopRequireWildcard(require("react")); var _reactJsonPretty = _interopRequireDefault(require("react-json-pretty")); var _reactVirtualized = require("react-virtualized"); var _styledComponents = _interopRequireDefault(require("styled-components")); var _layers = require("@kepler.gl/layers"); var _utils = require("@kepler.gl/utils"); var _loadDataFooter = _interopRequireDefault(require("./load-data-footer")); var _tilesetVectorForm = _interopRequireDefault(require("./tileset-vector-form")); var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5; // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project // import TilesetIcon from './tileset-icon'; 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; } // const WIDTH_ICON = '62px'; var LoadTilesetTabContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n"])), function (props) { return props.theme.AZURE; }); var Container = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n background-color: ", ";\n"])), function (props) { return props.theme.WHITE; }); /* const TilesetTypeContainer = styled.div` display: grid; grid-template-columns: repeat(4, ${WIDTH_ICON}); `; */ var MetaContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n max-height: 400px;\n background-color: ", ";\n"])), function (_ref) { var theme = _ref.theme; return theme.editorBackground; }); var MetaInnerContainer = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n border: 1px solid ", ";\n background-color: white;\n border-radius: 2px;\n display: inline-block;\n font: inherit;\n line-height: 1.5em;\n padding: 0.5em 3.5em 0.5em 1em;\n margin-left: 10px;\n box-sizing: border-box;\n overflow-y: scroll;\n overflow-x: auto;\n white-space: pre-wrap;\n word-wrap: break-word;\n height: ", "px;\n width: ", "px;\n max-width: 600px;\n"])), function (props) { return props.theme.selectBorderColorLT; }, function (props) { return props.height; }, function (props) { return props.width; }); var StyledHeaderMessage = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-size: 14px;\n margin-bottom: 12px;\n"])), function (props) { return props.theme.textColorLT; }); var TILE_TYPES = [{ id: 'vectorTile', label: 'Vector Tile', Icon: _layers.VectorTileIcon, Component: _tilesetVectorForm["default"] }]; function isReady(response) { return response.dataset && !response.loading && !response.error; } function LoadTilesetTabFactory() { var LoadTilesetTab = function LoadTilesetTab(_ref2) { var onTilesetAdded = _ref2.onTilesetAdded, isAddingDatasets = _ref2.isAddingDatasets, intl = _ref2.intl; var _useState = (0, _react.useState)(0), _useState2 = (0, _slicedToArray2["default"])(_useState, 1), typeIndex /* , setTypeIndex*/ = _useState2[0]; var _useState3 = (0, _react.useState)({}), _useState4 = (0, _slicedToArray2["default"])(_useState3, 2), response = _useState4[0], setResponse = _useState4[1]; var error = response.error; var loading = response.loading; var data = response.metadata; var jsonDataText = (0, _react.useMemo)(function () { return JSON.stringify(data, null, 2); }, [data]); var createTileDataset = (0, _react.useCallback)(function () { var dataset = response.dataset, metadata = response.metadata; if (dataset) { onTilesetAdded(dataset, metadata); } }, [onTilesetAdded, response]); var CurrentForm = TILE_TYPES[typeIndex].Component; var tilesetHeaderMessage = "".concat(intl.formatMessage({ id: 'tilesetSetup.header' })); return /*#__PURE__*/_react["default"].createElement(LoadTilesetTabContainer, null, /*#__PURE__*/_react["default"].createElement(Container, null, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(StyledHeaderMessage, null, tilesetHeaderMessage), /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(CurrentForm, { setResponse: setResponse }))), /*#__PURE__*/_react["default"].createElement(MetaContainer, null, data && /*#__PURE__*/_react["default"].createElement(_reactVirtualized.AutoSizer, null, function (_ref3) { var height = _ref3.height, width = _ref3.width; return /*#__PURE__*/_react["default"].createElement(MetaInnerContainer, { height: height, width: width }, /*#__PURE__*/_react["default"].createElement(_reactJsonPretty["default"], { id: "json-pretty", json: jsonDataText })); }))), /*#__PURE__*/_react["default"].createElement(_loadDataFooter["default"], { disabled: Boolean(error) || !isReady(response), isLoading: loading || isAddingDatasets, onConfirm: createTileDataset, confirmText: "tilesetSetup.addTilesetText", errorText: error && (0, _utils.getError)(error) })); }; return LoadTilesetTab; } var _default = exports["default"] = LoadTilesetTabFactory; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RKc29uUHJldHR5IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9yZWFjdFZpcnR1YWxpemVkIiwiX3N0eWxlZENvbXBvbmVudHMiLCJfbGF5ZXJzIiwiX3V0aWxzIiwiX2xvYWREYXRhRm9vdGVyIiwiX3RpbGVzZXRWZWN0b3JGb3JtIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJfdGVtcGxhdGVPYmplY3Q0IiwiX3RlbXBsYXRlT2JqZWN0NSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIkxvYWRUaWxlc2V0VGFiQ29udGFpbmVyIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJwcm9wcyIsInRoZW1lIiwiQVpVUkUiLCJDb250YWluZXIiLCJXSElURSIsIk1ldGFDb250YWluZXIiLCJfcmVmIiwiZWRpdG9yQmFja2dyb3VuZCIsIk1ldGFJbm5lckNvbnRhaW5lciIsInNlbGVjdEJvcmRlckNvbG9yTFQiLCJoZWlnaHQiLCJ3aWR0aCIsIlN0eWxlZEhlYWRlck1lc3NhZ2UiLCJ0ZXh0Q29sb3JMVCIsIlRJTEVfVFlQRVMiLCJpZCIsImxhYmVsIiwiSWNvbiIsIlZlY3RvclRpbGVJY29uIiwiQ29tcG9uZW50IiwiVGlsZXNldFZlY3RvckZvcm0iLCJpc1JlYWR5IiwicmVzcG9uc2UiLCJkYXRhc2V0IiwibG9hZGluZyIsImVycm9yIiwiTG9hZFRpbGVzZXRUYWJGYWN0b3J5IiwiTG9hZFRpbGVzZXRUYWIiLCJfcmVmMiIsIm9uVGlsZXNldEFkZGVkIiwiaXNBZGRpbmdEYXRhc2V0cyIsImludGwiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJ0eXBlSW5kZXgiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsInNldFJlc3BvbnNlIiwiZGF0YSIsIm1ldGFkYXRhIiwianNvbkRhdGFUZXh0IiwidXNlTWVtbyIsIkpTT04iLCJzdHJpbmdpZnkiLCJjcmVhdGVUaWxlRGF0YXNldCIsInVzZUNhbGxiYWNrIiwiQ3VycmVudEZvcm0iLCJ0aWxlc2V0SGVhZGVyTWVzc2FnZSIsImNvbmNhdCIsImZvcm1hdE1lc3NhZ2UiLCJjcmVhdGVFbGVtZW50IiwiQXV0b1NpemVyIiwiX3JlZjMiLCJqc29uIiwiZGlzYWJsZWQiLCJCb29sZWFuIiwiaXNMb2FkaW5nIiwib25Db25maXJtIiwiY29uZmlybVRleHQiLCJlcnJvclRleHQiLCJnZXRFcnJvciIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RhbHMvdGlsZXNldHMtbW9kYWxzL2xvYWQtdGlsZXNldC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2ssIHVzZU1lbW8sIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0ludGxTaGFwZX0gZnJvbSAncmVhY3QtaW50bCc7XG5pbXBvcnQgSlNPTlByZXR0eSBmcm9tICdyZWFjdC1qc29uLXByZXR0eSc7XG5pbXBvcnQge0F1dG9TaXplcn0gZnJvbSAncmVhY3QtdmlydHVhbGl6ZWQnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCB7VmVjdG9yVGlsZUljb259IGZyb20gJ0BrZXBsZXIuZ2wvbGF5ZXJzJztcbmltcG9ydCB7Z2V0RXJyb3J9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuXG5pbXBvcnQge01ldGFSZXNwb25zZX0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IExvYWREYXRhRm9vdGVyIGZyb20gJy4vbG9hZC1kYXRhLWZvb3Rlcic7XG4vLyBpbXBvcnQgVGlsZXNldEljb24gZnJvbSAnLi90aWxlc2V0LWljb24nO1xuaW1wb3J0IFRpbGVzZXRWZWN0b3JGb3JtIGZyb20gJy4vdGlsZXNldC12ZWN0b3ItZm9ybSc7XG5cbi8vIGNvbnN0IFdJRFRIX0lDT04gPSAnNjJweCc7XG5cbmNvbnN0IExvYWRUaWxlc2V0VGFiQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuQVpVUkV9O1xuYDtcblxuY29uc3QgQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLldISVRFfTtcbmA7XG5cbi8qXG5jb25zdCBUaWxlc2V0VHlwZUNvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsICR7V0lEVEhfSUNPTn0pO1xuYDtcbiovXG5cbmNvbnN0IE1ldGFDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBtYXgtaGVpZ2h0OiA0MDBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoe3RoZW1lfSkgPT4gdGhlbWUuZWRpdG9yQmFja2dyb3VuZH07XG5gO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFJbm5lckNvbnRhaW5lclByb3BzIHtcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG59XG5cbmNvbnN0IE1ldGFJbm5lckNvbnRhaW5lciA9IHN0eWxlZC5kaXY8TWV0YUlubmVyQ29udGFpbmVyUHJvcHM+YFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJvcmRlcjogMXB4IHNvbGlkICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc2VsZWN0Qm9yZGVyQ29sb3JMVH07XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udDogaW5oZXJpdDtcbiAgbGluZS1oZWlnaHQ6IDEuNWVtO1xuICBwYWRkaW5nOiAwLjVlbSAzLjVlbSAwLjVlbSAxZW07XG4gIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gIG92ZXJmbG93LXg6IGF1dG87XG4gIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICBoZWlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMuaGVpZ2h0fXB4O1xuICB3aWR0aDogJHtwcm9wcyA9PiBwcm9wcy53aWR0aH1weDtcbiAgbWF4LXdpZHRoOiA2MDBweDtcbmA7XG5cbmNvbnN0IFN0eWxlZEhlYWRlck1lc3NhZ2UgPSBzdHlsZWQuZGl2YFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JMVH07XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbWFyZ2luLWJvdHRvbTogMTJweDtcbmA7XG5cbnR5cGUgTG9hZFRpbGVzZXRUYWJQcm9wcyA9IHtcbiAgbWV0YToge1trZXk6IHN0cmluZ106IGFueX07XG4gIGlzQWRkaW5nRGF0YXNldHM6IGJvb2xlYW47XG4gIG9uVGlsZXNldEFkZGVkOiAodGlsZXNldEluZm86IGFueSwgbWV0YWRhdGE/OiBhbnkpID0+IHZvaWQ7XG4gIGludGw6IEludGxTaGFwZTtcbn07XG5cbmNvbnN0IFRJTEVfVFlQRVMgPSBbXG4gIHtcbiAgICBpZDogJ3ZlY3RvclRpbGUnLFxuICAgIGxhYmVsOiAnVmVjdG9yIFRpbGUnLFxuICAgIEljb246IFZlY3RvclRpbGVJY29uLFxuICAgIENvbXBvbmVudDogVGlsZXNldFZlY3RvckZvcm1cbiAgfVxuXTtcblxuZnVuY3Rpb24gaXNSZWFkeShyZXNwb25zZSkge1xuICByZXR1cm4gcmVzcG9uc2UuZGF0YXNldCAmJiAhcmVzcG9uc2UubG9hZGluZyAmJiAhcmVzcG9uc2UuZXJyb3I7XG59XG5cbmZ1bmN0aW9uIExvYWRUaWxlc2V0VGFiRmFjdG9yeSgpIHtcbiAgY29uc3QgTG9hZFRpbGVzZXRUYWI6IFJlYWN0LkZDPExvYWRUaWxlc2V0VGFiUHJvcHM+ID0gKHtcbiAgICBvblRpbGVzZXRBZGRlZCxcbiAgICBpc0FkZGluZ0RhdGFzZXRzLFxuICAgIGludGxcbiAgfSkgPT4ge1xuICAgIGNvbnN0IFt0eXBlSW5kZXggLyogLCBzZXRUeXBlSW5kZXgqL10gPSB1c2VTdGF0ZTxudW1iZXI+KDApO1xuICAgIGNvbnN0IFtyZXNwb25zZSwgc2V0UmVzcG9uc2VdID0gdXNlU3RhdGU8TWV0YVJlc3BvbnNlPih7fSk7XG5cbiAgICBjb25zdCBlcnJvciA9IHJlc3BvbnNlLmVycm9yO1xuICAgIGNvbnN0IGxvYWRpbmcgPSByZXNwb25zZS5sb2FkaW5nO1xuICAgIGNvbnN0IGRhdGEgPSByZXNwb25zZS5tZXRhZGF0YTtcbiAgICBjb25zdCBqc29uRGF0YVRleHQgPSB1c2VNZW1vKCgpID0+IEpTT04uc3RyaW5naWZ5KGRhdGEsIG51bGwsIDIpLCBbZGF0YV0pO1xuXG4gICAgY29uc3QgY3JlYXRlVGlsZURhdGFzZXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBjb25zdCB7ZGF0YXNldCwgbWV0YWRhdGF9ID0gcmVzcG9uc2U7XG4gICAgICBpZiAoZGF0YXNldCkge1xuICAgICAgICBvblRpbGVzZXRBZGRlZChkYXRhc2V0LCBtZXRhZGF0YSk7XG4gICAgICB9XG4gICAgfSwgW29uVGlsZXNldEFkZGVkLCByZXNwb25zZV0pO1xuXG4gICAgY29uc3QgQ3VycmVudEZvcm0gPSBUSUxFX1RZUEVTW3R5cGVJbmRleF0uQ29tcG9uZW50O1xuXG4gICAgY29uc3QgdGlsZXNldEhlYWRlck1lc3NhZ2UgPSBgJHtpbnRsLmZvcm1hdE1lc3NhZ2Uoe1xuICAgICAgaWQ6ICd0aWxlc2V0U2V0dXAuaGVhZGVyJ1xuICAgIH0pfWA7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPExvYWRUaWxlc2V0VGFiQ29udGFpbmVyPlxuICAgICAgICA8Q29udGFpbmVyPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8U3R5bGVkSGVhZGVyTWVzc2FnZT57dGlsZXNldEhlYWRlck1lc3NhZ2V9PC9TdHlsZWRIZWFkZXJNZXNzYWdlPlxuICAgICAgICAgICAgey8qKiBcbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxsYWJlbCBodG1sRm9yPVwidGlsZXNldC10eXBlXCI+VGlsZXNldCBUeXBlPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICogRW5hYmxlIG9uY2Ugd2Ugc3VwcG9ydCBkaWZmZXJlbnQgdmVjdG9yIGxheWVyc1xuICAgICAgICAgICAgPFRpbGVzZXRUeXBlQ29udGFpbmVyIGNsYXNzTmFtZT1cInRpbGVzZXQtdHlwZVwiPlxuICAgICAgICAgICAgICB7VElMRV9UWVBFUy5tYXAoKHRpbGVUeXBlLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgIDxUaWxlc2V0SWNvblxuICAgICAgICAgICAgICAgICAga2V5PXt0aWxlVHlwZS5sYWJlbH1cbiAgICAgICAgICAgICAgICAgIG5hbWU9e3RpbGVUeXBlLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgSWNvbj17PHRpbGVUeXBlLkljb24gaGVpZ2h0PXtXSURUSF9JQ09OfSAvPn1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFR5cGVJbmRleChpbmRleCl9XG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZD17dHlwZUluZGV4ID09PSBpbmRleH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvVGlsZXNldFR5cGVDb250YWluZXI+XG4gICAgICAgICAgICAqL31cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxDdXJyZW50Rm9ybSBzZXRSZXNwb25zZT17c2V0UmVzcG9uc2V9IC8+XG4gICAgICAgICAgICAgIHsvKiogXG4gICAgICAgICAgICAgIHtlcnJvciAmJiA8ZGl2PntnZXRFcnJvcihlcnJvcil9PC9kaXY+fVxuICAgICAgICAgICAgICAqL31cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxNZXRhQ29udGFpbmVyPlxuICAgICAgICAgICAge2RhdGEgJiYgKFxuICAgICAgICAgICAgICA8QXV0b1NpemVyPlxuICAgICAgICAgICAgICAgIHsoe2hlaWdodCwgd2lkdGh9KSA9PiAoXG4gICAgICAgICAgICAgICAgICA8TWV0YUlubmVyQ29udGFpbmVyIGhlaWdodD17aGVpZ2h0fSB3aWR0aD17d2lkdGh9PlxuICAgICAgICAgICAgICAgICAgICA8SlNPTlByZXR0eSBpZD1cImpzb24tcHJldHR5XCIganNvbj17anNvbkRhdGFUZXh0fSAvPlxuICAgICAgICAgICAgICAgICAgPC9NZXRhSW5uZXJDb250YWluZXI+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9BdXRvU2l6ZXI+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvTWV0YUNvbnRhaW5lcj5cbiAgICAgICAgPC9Db250YWluZXI+XG4gICAgICAgIDxMb2FkRGF0YUZvb3RlclxuICAgICAgICAgIGRpc2FibGVkPXtCb29sZWFuKGVycm9yKSB8fCAhaXNSZWFkeShyZXNwb25zZSl9XG4gICAgICAgICAgaXNMb2FkaW5nPXtsb2FkaW5nIHx8IGlzQWRkaW5nRGF0YXNldHN9XG4gICAgICAgICAgb25Db25maXJtPXtjcmVhdGVUaWxlRGF0YXNldH1cbiAgICAgICAgICBjb25maXJtVGV4dD1cInRpbGVzZXRTZXR1cC5hZGRUaWxlc2V0VGV4dFwiXG4gICAgICAgICAgZXJyb3JUZXh0PXtlcnJvciAmJiBnZXRFcnJvcihlcnJvcil9XG4gICAgICAgIC8+XG4gICAgICA8L0xvYWRUaWxlc2V0VGFiQ29udGFpbmVyPlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIExvYWRUaWxlc2V0VGFiO1xufVxuXG5leHBvcnQgZGVmYXVsdCBMb2FkVGlsZXNldFRhYkZhY3Rvcnk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxnQkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsaUJBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLGlCQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBSyxPQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxNQUFBLEdBQUFOLE9BQUE7QUFHQSxJQUFBTyxlQUFBLEdBQUFMLHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBUSxrQkFBQSxHQUFBTixzQkFBQSxDQUFBRixPQUFBO0FBQXNELElBQUFTLGVBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFmdEQ7QUFDQTtBQWFBO0FBQUEsU0FBQUMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFoQix3QkFBQWdCLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFB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