UNPKG

kepler.gl.geoiq

Version:

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

180 lines (139 loc) 21.7 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof3 = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral")); var _react = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _styledComponents = _interopRequireDefault(require("styled-components")); var _colorUtils = require("../../../utils/color-utils"); var _singleColorPalette = _interopRequireDefault(require("../layer-panel/single-color-palette")); var _colorRangeSelector = _interopRequireDefault(require("../layer-panel/color-range-selector")); var _colorPalette = _interopRequireDefault(require("../layer-panel/color-palette")); var _styledComponents2 = require("../../common/styled-components"); var _reactOnclickoutside = _interopRequireDefault(require("react-onclickoutside")); var _templateObject, _templateObject2, _templateObject3; function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } var ColorBlock = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n width: 32px;\n height: 18px;\n border-radius: 1px;\n background-color: ", ";\n"])), function (props) { return "rgb(".concat(props.color.slice(0, 3).join(','), ")"); }); var ColorSelectorInput = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n ", ";\n height: ", ";\n\n .color-selector__selector__label {\n text-transform: capitalize;\n font-size: 12px;\n text-align: center;\n color: ", ";\n }\n"])), function (props) { return props.inputTheme === 'secondary' ? props.theme.secondaryInput : props.theme.input; }, function (props) { return props.theme.inputBoxHeight; }, function (props) { return props.theme.inputPlaceholderColor; }); var InputBoxContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n\n .color-select__input-group {\n flex-grow: 1;\n }\n .color-select__input-group:nth-child(2) {\n margin-left: 12px;\n }\n"]))); var ColorSelector = /*#__PURE__*/function (_Component) { (0, _inherits2["default"])(ColorSelector, _Component); var _super = _createSuper(ColorSelector); function ColorSelector() { var _this; (0, _classCallCheck2["default"])(this, ColorSelector); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _super.call.apply(_super, [this].concat(args)); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", { editing: false }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleClickOutside", function (e) { if (_this.state.editing !== false) { _this.setState({ editing: false }); } }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_onSelectColor", function (color, e) { e.stopPropagation(); if (_this.props.colorSets[_this.state.editing]) { _this.props.colorSets[_this.state.editing].setColor(color); } }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_showDropdown", function (e, i) { e.stopPropagation(); e.preventDefault(); _this.setState({ editing: i }); }); return _this; } (0, _createClass2["default"])(ColorSelector, [{ key: "render", value: function render() { var _this2 = this; var _this$props = this.props, colorSets = _this$props.colorSets, disabled = _this$props.disabled, inputTheme = _this$props.inputTheme; var editing = this.state.editing; var currentEditing = colorSets[editing] && (0, _typeof2["default"])(colorSets[editing]) === 'object'; return (/*#__PURE__*/_react["default"].createElement("div", { className: "color-selector" }, /*#__PURE__*/_react["default"].createElement(InputBoxContainer, null, colorSets.map(function (cSet, i) { return (/*#__PURE__*/_react["default"].createElement("div", { className: "color-select__input-group", key: i }, /*#__PURE__*/_react["default"].createElement(ColorSelectorInput, { className: "color-selector__selector", active: editing === i, disabled: disabled, inputTheme: inputTheme, onMouseDown: function onMouseDown(e) { return _this2._showDropdown(e, i); } }, cSet.isRange ? /*#__PURE__*/_react["default"].createElement(_colorPalette["default"], { colors: cSet.selectedColor.colors }) : /*#__PURE__*/_react["default"].createElement(ColorBlock, { className: "color-selector__selector__block", color: cSet.selectedColor }), cSet.label ? /*#__PURE__*/_react["default"].createElement("div", { className: "color-selector__selector__label" }, cSet.label) : null)) ); })), currentEditing ? /*#__PURE__*/_react["default"].createElement(_styledComponents2.StyledPanelDropdown, { className: "color-selector__dropdown" }, colorSets[editing].isRange ? /*#__PURE__*/_react["default"].createElement(_colorRangeSelector["default"], { selectedColorRange: colorSets[editing].selectedColor, onSelectColorRange: this._onSelectColor }) : /*#__PURE__*/_react["default"].createElement(_singleColorPalette["default"], { selectedColor: (0, _colorUtils.rgbToHex)(colorSets[editing].selectedColor), onSelectColor: this._onSelectColor })) : null) ); } }]); return ColorSelector; }(_react.Component); (0, _defineProperty2["default"])(ColorSelector, "propTypes", { colorSets: _propTypes["default"].arrayOf(_propTypes["default"].shape({ selectedColor: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].any), _propTypes["default"].object]), setColor: _propTypes["default"].func.isRequired, isRange: _propTypes["default"].bool, label: _propTypes["default"].string })), inputTheme: _propTypes["default"].string, disabled: _propTypes["default"].bool }); (0, _defineProperty2["default"])(ColorSelector, "defaultProps", { colorSets: [] }); ; var _default = exports["default"] = (0, _reactOnclickoutside["default"])(ColorSelector); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvd2lkZ2V0LXBhbmVsL2NvbG9yLXNlbGVjdG9yLmpzIl0sIm5hbWVzIjpbIkNvbG9yQmxvY2siLCJzdHlsZWQiLCJkaXYiLCJwcm9wcyIsImNvbG9yIiwic2xpY2UiLCJqb2luIiwiQ29sb3JTZWxlY3RvcklucHV0IiwiaW5wdXRUaGVtZSIsInRoZW1lIiwic2Vjb25kYXJ5SW5wdXQiLCJpbnB1dCIsImlucHV0Qm94SGVpZ2h0IiwiaW5wdXRQbGFjZWhvbGRlckNvbG9yIiwiSW5wdXRCb3hDb250YWluZXIiLCJDb2xvclNlbGVjdG9yIiwiZWRpdGluZyIsImUiLCJzdGF0ZSIsInNldFN0YXRlIiwic3RvcFByb3BhZ2F0aW9uIiwiY29sb3JTZXRzIiwic2V0Q29sb3IiLCJpIiwicHJldmVudERlZmF1bHQiLCJkaXNhYmxlZCIsImN1cnJlbnRFZGl0aW5nIiwibWFwIiwiY1NldCIsIl9zaG93RHJvcGRvd24iLCJpc1JhbmdlIiwic2VsZWN0ZWRDb2xvciIsImNvbG9ycyIsImxhYmVsIiwiX29uU2VsZWN0Q29sb3IiLCJDb21wb25lbnQiLCJQcm9wVHlwZXMiLCJhcnJheU9mIiwic2hhcGUiLCJvbmVPZlR5cGUiLCJhbnkiLCJvYmplY3QiLCJmdW5jIiwiaXNSZXF1aXJlZCIsImJvb2wiLCJzdHJpbmciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxVQUFVLEdBQUdDLDZCQUFPQyxHQUFWLDRLQUlNLFVBQUFDLEtBQUs7QUFBQSx1QkFBV0EsS0FBSyxDQUFDQyxLQUFOLENBQVlDLEtBQVosQ0FBa0IsQ0FBbEIsRUFBcUIsQ0FBckIsRUFBd0JDLElBQXhCLENBQTZCLEdBQTdCLENBQVg7QUFBQSxDQUpYLENBQWhCOztBQU9BLElB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a0I7QUFDcEJNLEVBQUFBLFNBQVMsRUFBRTtBQURTLEM7QUE2RXZCOztvQ0FFYyxxQ0FBZU4sYUFBZixDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIzIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge3JnYlRvSGV4fSBmcm9tICd1dGlscy9jb2xvci11dGlscyc7XG5pbXBvcnQgU2luZ2xlQ29sb3JQYWxldHRlIGZyb20gJ2NvbXBvbmVudHMvc2lkZS1wYW5lbC9sYXllci1wYW5lbC9zaW5nbGUtY29sb3ItcGFsZXR0ZSc7XG5pbXBvcnQgQ29sb3JSYW5nZVNlbGVjdG9yIGZyb20gJ2NvbXBvbmVudHMvc2lkZS1wYW5lbC9sYXllci1wYW5lbC9jb2xvci1yYW5nZS1zZWxlY3Rvcic7XG5pbXBvcnQgQ29sb3JQYWxldHRlIGZyb20gJ2NvbXBvbmVudHMvc2lkZS1wYW5lbC9sYXllci1wYW5lbC9jb2xvci1wYWxldHRlJztcbmltcG9ydCB7U3R5bGVkUGFuZWxEcm9wZG93bn0gZnJvbSAnY29tcG9uZW50cy9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IG9uQ2xpY2tPdXRzaWRlIGZyb20gJ3JlYWN0LW9uY2xpY2tvdXRzaWRlJztcblxuY29uc3QgQ29sb3JCbG9jayA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAzMnB4O1xuICBoZWlnaHQ6IDE4cHg7XG4gIGJvcmRlci1yYWRpdXM6IDFweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBgcmdiKCR7cHJvcHMuY29sb3Iuc2xpY2UoMCwgMykuam9pbignLCcpfSlgfTtcbmA7XG5cbmNvbnN0IENvbG9yU2VsZWN0b3JJbnB1dCA9IHN0eWxlZC5kaXZgXG4gICR7cHJvcHMgPT5cbiAgICBwcm9wcy5pbnB1dFRoZW1lID09PSAnc2Vjb25kYXJ5J1xuICAgICAgPyBwcm9wcy50aGVtZS5zZWNvbmRhcnlJbnB1dFxuICAgICAgOiBwcm9wcy50aGVtZS5pbnB1dH07XG4gIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pbnB1dEJveEhlaWdodH07XG5cbiAgLmNvbG9yLXNlbGVjdG9yX19zZWxlY3Rvcl9fbGFiZWwge1xuICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaW5wdXRQbGFjZWhvbGRlckNvbG9yfTtcbiAgfVxuYDtcblxuY29uc3QgSW5wdXRCb3hDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cbiAgLmNvbG9yLXNlbGVjdF9faW5wdXQtZ3JvdXAge1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgfVxuICAuY29sb3Itc2VsZWN0X19pbnB1dC1ncm91cDpudGgtY2hpbGQoMikge1xuICAgIG1hcmdpbi1sZWZ0OiAxMnB4O1xuICB9XG5gO1xuXG5jbGFzcyBDb2xvclNlbGVjdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBjb2xvclNldHM6IFByb3BUeXBlcy5hcnJheU9mKFxuICAgICAgUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgICAgc2VsZWN0ZWRDb2xvcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSksIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgICAgICAgc2V0Q29sb3I6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICAgIGlzUmFuZ2U6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICBsYWJlbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgICAgfSlcbiAgICApLFxuICAgIGlucHV0VGhlbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sXG4gIH07XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBjb2xvclNldHM6IFtdXG4gIH07XG5cbiAgc3RhdGUgPSB7XG4gICAgZWRpdGluZzogZmFsc2VcbiAgfTtcblxuICBoYW5kbGVDbGlja091dHNpZGUgPSBlID0+IHtcbiAgICBpZiAodGhpcy5zdGF0ZS5lZGl0aW5nICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7ZWRpdGluZzogZmFsc2V9KTtcbiAgICB9XG4gIH07XG5cbiAgX29uU2VsZWN0Q29sb3IgPSAoY29sb3IsIGUpID0+IHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICh0aGlzLnByb3BzLmNvbG9yU2V0c1t0aGlzLnN0YXRlLmVkaXRpbmddKSB7XG4gICAgICB0aGlzLnByb3BzLmNvbG9yU2V0c1t0aGlzLnN0YXRlLmVkaXRpbmddLnNldENvbG9yKGNvbG9yKTtcbiAgICB9XG4gIH07XG5cbiAgX3Nob3dEcm9wZG93biA9IChlLCBpKSA9PiB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5zZXRTdGF0ZSh7ZWRpdGluZzogaX0pO1xuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7Y29sb3JTZXRzLCBkaXNhYmxlZCwgaW5wdXRUaGVtZX0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHtlZGl0aW5nfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3QgY3VycmVudEVkaXRpbmcgPVxuICAgICAgY29sb3JTZXRzW2VkaXRpbmddICYmIHR5cGVvZiBjb2xvclNldHNbZWRpdGluZ10gPT09ICdvYmplY3QnO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sb3Itc2VsZWN0b3JcIj5cbiAgICAgICAgPElucHV0Qm94Q29udGFpbmVyPlxuICAgICAgICAgIHtjb2xvclNldHMubWFwKChjU2V0LCBpKSA9PiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbG9yLXNlbGVjdF9faW5wdXQtZ3JvdXBcIiBrZXk9e2l9PlxuXG4gICAgICAgICAgICAgIDxDb2xvclNlbGVjdG9ySW5wdXRcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJjb2xvci1zZWxlY3Rvcl9fc2VsZWN0b3JcIlxuICAgICAgICAgICAgICAgIGFjdGl2ZT17ZWRpdGluZyA9PT0gaX1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgaW5wdXRUaGVtZT17aW5wdXRUaGVtZX1cbiAgICAgICAgICAgICAgICBvbk1vdXNlRG93bj17ZSA9PiB0aGlzLl9zaG93RHJvcGRvd24oZSwgaSl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7Y1NldC5pc1JhbmdlID8gKFxuICAgICAgICAgICAgICAgICAgPENvbG9yUGFsZXR0ZSBjb2xvcnM9e2NTZXQuc2VsZWN0ZWRDb2xvci5jb2xvcnN9IC8+XG4gICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgIDxDb2xvckJsb2NrXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImNvbG9yLXNlbGVjdG9yX19zZWxlY3Rvcl9fYmxvY2tcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj17Y1NldC5zZWxlY3RlZENvbG9yfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHtjU2V0LmxhYmVsID8gPGRpdiBjbGFzc05hbWU9XCJjb2xvci1zZWxlY3Rvcl9fc2VsZWN0b3JfX2xhYmVsXCI+e2NTZXQubGFiZWx9PC9kaXY+IDogbnVsbH1cbiAgICAgICAgICAgICAgPC9Db2xvclNlbGVjdG9ySW5wdXQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9JbnB1dEJveENvbnRhaW5lcj5cbiAgICAgICAge2N1cnJlbnRFZGl0aW5nID8gKFxuICAgICAgICAgIDxTdHlsZWRQYW5lbERyb3Bkb3duIGNsYXNzTmFtZT1cImNvbG9yLXNlbGVjdG9yX19kcm9wZG93blwiPlxuICAgICAgICAgICAge2NvbG9yU2V0c1tlZGl0aW5nXS5pc1JhbmdlID8gKFxuICAgICAgICAgICAgICA8Q29sb3JSYW5nZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb2xvclJhbmdlPXtjb2xvclNldHNbZWRpdGluZ10uc2VsZWN0ZWRDb2xvcn1cbiAgICAgICAgICAgICAgICBvblNlbGVjdENvbG9yUmFuZ2U9e3RoaXMuX29uU2VsZWN0Q29sb3J9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8U2luZ2xlQ29sb3JQYWxldHRlXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb2xvcj17cmdiVG9IZXgoY29sb3JTZXRzW2VkaXRpbmddLnNlbGVjdGVkQ29sb3IpfVxuICAgICAgICAgICAgICAgIG9uU2VsZWN0Q29sb3I9e3RoaXMuX29uU2VsZWN0Q29sb3J9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvU3R5bGVkUGFuZWxEcm9wZG93bj5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBvbkNsaWNrT3V0c2lkZShDb2xvclNlbGVjdG9yKTtcbiJdfQ==