UNPKG

kepler.gl.geoiq

Version:

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

242 lines (187 loc) 20.7 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.StyledConfigGroupHeader = exports.StyledLayerConfigGroup = exports.ConfigGroupCollapsibleContent = exports.StyledLayerConfigGroupAction = exports.StyledLayerConfigGroupLabel = 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 _getPrototypeOf3 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral")); var _react = _interopRequireWildcard(require("react")); var _styledComponents = _interopRequireDefault(require("styled-components")); var _classnames = _interopRequireDefault(require("classnames")); var _switch = _interopRequireDefault(require("../../common/switch")); var _icons = require("../../common/icons"); var _infoHelper = _interopRequireDefault(require("../../common/info-helper")); function _templateObject6() { var data = (0, _taggedTemplateLiteral2["default"])(["\n &.disabled {\n opacity: 0.3;\n pointer-events: none;\n * {\n pointer-events: none;\n }\n }\n"]); _templateObject6 = function _templateObject6() { return data; }; return data; } function _templateObject5() { var data = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 12px;\n\n :hover {\n cursor: pointer;\n .layer-config-group__label {\n color: ", ";\n border-left: 2px solid ", ";\n }\n\n .layer-config-group__action {\n color: ", ";\n }\n }\n"]); _templateObject5 = function _templateObject5() { return data; }; return data; } function _templateObject4() { var data = (0, _taggedTemplateLiteral2["default"])(["\n padding-left: 18px;\n margin-bottom: 12px;\n\n &.collapsed {\n .layer-config-group__content {\n .layer-config-group__content__collapsible {\n /* display: none; */\n /* flex: 0; */\n overflow: hidden;\n max-height: 0;\n }\n }\n }\n"]); _templateObject4 = function _templateObject4() { return data; }; return data; } function _templateObject3() { var data = (0, _taggedTemplateLiteral2["default"])(["\n overflow: visible;\n transition: max-height 0.3s ease-out;\n height: max-content;\n max-height: 600px;\n"]); _templateObject3 = function _templateObject3() { return data; }; return data; } function _templateObject2() { var data = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n color: ", ";\n"]); _templateObject2 = function _templateObject2() { return data; }; return data; } function _templateObject() { var data = (0, _taggedTemplateLiteral2["default"])(["\n border-left: 2px solid ", ";\n color: ", ";\n font-size: 12px;\n font-weight: 500;\n line-height: 12px;\n margin-left: -12px;\n padding-left: 10px;\n text-transform: capitalize;\n letter-spacing: 0.2px;\n"]); _templateObject = function _templateObject() { return data; }; return data; } var StyledLayerConfigGroupLabel = _styledComponents["default"].div(_templateObject(), function (props) { return props.theme.labelColor; }, function (props) { return props.theme.textColor; }); exports.StyledLayerConfigGroupLabel = StyledLayerConfigGroupLabel; var StyledLayerConfigGroupAction = _styledComponents["default"].div(_templateObject2(), function (props) { return props.theme.textColor; }); exports.StyledLayerConfigGroupAction = StyledLayerConfigGroupAction; var ConfigGroupCollapsibleContent = _styledComponents["default"].div.attrs({ className: 'layer-config-group__content__collapsible' })(_templateObject3()); exports.ConfigGroupCollapsibleContent = ConfigGroupCollapsibleContent; var StyledLayerConfigGroup = _styledComponents["default"].div(_templateObject4()); exports.StyledLayerConfigGroup = StyledLayerConfigGroup; var StyledConfigGroupHeader = _styledComponents["default"].div(_templateObject5(), function (props) { return props.theme.textColorHl; }, function (props) { return props.theme.textColorHl; }, function (props) { return props.theme.textColorHl; }); exports.StyledConfigGroupHeader = StyledConfigGroupHeader; var ConfigGroupContent = _styledComponents["default"].div(_templateObject6()); var LayerConfigGroup = /*#__PURE__*/ function (_Component) { (0, _inherits2["default"])(LayerConfigGroup, _Component); function LayerConfigGroup() { var _getPrototypeOf2; var _this; (0, _classCallCheck2["default"])(this, LayerConfigGroup); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = (0, _possibleConstructorReturn2["default"])(this, (_getPrototypeOf2 = (0, _getPrototypeOf3["default"])(LayerConfigGroup)).call.apply(_getPrototypeOf2, [this].concat(args))); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", { collapsed: true }); return _this; } (0, _createClass2["default"])(LayerConfigGroup, [{ key: "componentDidMount", value: function componentDidMount() { this._setCollapseState(this.props.expanded); } }, { key: "componentWillReceiveProps", value: function componentWillReceiveProps(nextProps) { this._setCollapseState(nextProps.expanded); } }, { key: "_setCollapseState", value: function _setCollapseState(expanded) { // if props,expanded, and state collapsed, set collapsed to be false if (expanded && this.state.collapsed) { this.setState({ collapsed: false }); } } }, { key: "render", value: function render() { var _this2 = this; var _this$props = this.props, label = _this$props.label, children = _this$props.children, property = _this$props.property, widget = _this$props.widget, _onChange2 = _this$props.onChange, collapsible = _this$props.collapsible, description = _this$props.description; var collapsed = this.state.collapsed; return _react["default"].createElement(StyledLayerConfigGroup, { className: (0, _classnames["default"])('layer-config-group', { collapsed: collapsed }) }, _react["default"].createElement(StyledConfigGroupHeader, { className: "layer-config-group__header", onClick: function onClick() { return _this2.setState({ collapsed: !_this2.state.collapsed }); } }, _react["default"].createElement("div", { style: { display: 'flex' } }, _react["default"].createElement(StyledLayerConfigGroupLabel, { className: "layer-config-group__label", style: { marginTop: '2px' } }, label), description && _react["default"].createElement(_infoHelper["default"], { description: description, id: "".concat(this.props.id, "-").concat(property) })), _react["default"].createElement(StyledLayerConfigGroupAction, { className: "layer-config-group__action" }, property ? _react["default"].createElement(_switch["default"], { checked: widget.config[property], id: "".concat(widget.id, "-").concat(property), onChange: function onChange() { return _onChange2((0, _defineProperty2["default"])({}, property, !widget.config[property])); } }) : null, collapsible ? _react["default"].createElement(_icons.VertThreeDots, { height: "18px" }) : null)), _react["default"].createElement(ConfigGroupContent, { className: (0, _classnames["default"])('layer-config-group__content', { disabled: property && !widget.config[property] }) }, children)); } }]); return LayerConfigGroup; }(_react.Component); exports["default"] = LayerConfigGroup; (0, _defineProperty2["default"])(LayerConfigGroup, "defaultProps", { collapsible: false, expanded: false, onChange: function onChange() {} }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvd2lkZ2V0LXBhbmVsL3dpZGdldC1jb25maWctZ3JvdXAuanMiXSwibmFtZXMiOlsiU3R5bGVkTGF5ZXJDb25maWdHcm91cExhYmVsIiwic3R5bGVkIiwiZGl2IiwicHJvcHMiLCJ0aGVtZSIsImxhYmVsQ29sb3IiLCJ0ZXh0Q29sb3IiLCJTdHlsZWRMYXllckNvbmZpZ0dyb3VwQWN0aW9uIiwiQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQiLCJhdHRycyIsImNsYXNzTmFtZSIsIlN0eWxlZExheWVyQ29uZmlnR3JvdXAiLCJTdHlsZWRDb25maWdHcm91cEhlYWRlciIsInRleHRDb2xvckhsIiwiQ29uZmlnR3JvdXBDb250ZW50IiwiTGF5ZXJDb25maWdHcm91cCIsImNvbGxhcHNlZCIsIl9zZXRDb2xsYXBzZVN0YXRlIiwiZXhwYW5kZWQiLCJuZXh0UHJvcHMiLCJzdGF0ZSIsInNldFN0YXRlIiwibGFiZWwiLCJjaGlsZHJlbiIsInByb3BlcnR5Iiwid2lkZ2V0Iiwib25DaGFuZ2UiLCJjb2xsYXBzaWJsZSIsImRlc2NyaXB0aW9uIiwiZGlzcGxheSIsIm1hcmdpblRvcCIsImlkIiwiY29uZmlnIiwiZGlzYWJsZWQiLCJDb21wb25lbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFTyxJQUFNQSwyQkFBMkIsR0FBR0MsNkJBQU9DLEdBQVYsb0JBQ2IsVUFBQUMsS0FBSztBQUFBLFNBQUlBLEtBQUssQ0FBQ0MsS0FBTixDQUFZQyxVQUFoQjtBQUFBLENBRFEsRUFFN0IsVUFBQUYsS0FBSztBQUFBLFNBQUlBLEtBQUssQ0FBQ0MsS0FBTixDQUFZRSxTQUFoQjtBQUFBLENBRndC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UUFBQSxPQUFPLEVBQUVDLE1BQU0sQ0FBQ08sTUFBUCxDQUFjUixRQUFkLENBRFg7QUFFRSxRQUFBLEVBQUUsWUFBS0MsTUFBTSxDQUFDTSxFQUFaLGNBQWtCUCxRQUFsQixDQUZKO0FBR0UsUUFBQSxRQUFRLEVBQUU7QUFBQSxpQkFDUkUsVUFBUSxzQ0FBR0YsUUFBSCxFQUFjLENBQUNDLE1BQU0sQ0FBQ08sTUFBUCxDQUFjUixRQUFkLENBQWYsRUFEQTtBQUFBO0FBSFosUUFETyxHQVFMLElBVE4sRUFVR0csV0FBVyxHQUFHLGdDQUFDLG9CQUFEO0FBQWUsUUFBQSxNQUFNLEVBQUM7QUFBdEIsUUFBSCxHQUFxQyxJQVZuRCxDQWxCRixDQUhGLEVBa0NFLGdDQUFDLGtCQUFEO0FBQ0UsUUFBQSxTQUFTLEVBQUUsNEJBQVcsNkJBQVgsRUFBMEM7QUFDbkRNLFVBQUFBLFFBQVEsRUFBRVQsUUFBUSxJQUFJLENBQUNDLE1BQU0sQ0FBQ08sTUFBUCxDQUFjUixRQUFkO0FBRDRCLFNBQTFDO0FBRGIsU0FLR0QsUUFMSCxDQWxDRixDQURGO0FBNENEOzs7RUFsRjJDVyxnQjs7O2lDQUF6Qm5CLGdCLGtCQUNHO0FBQ3BCWSxFQUFBQSxXQUFXLEVBQUUsS0FETztBQUVwQlQsRUFBQUEsUUFBUSxFQUFFLEtBRlU7QUFHcEJRLEVBQUFBLFFBQVEsRUFBRSxvQkFBTSxDQUFFO0FBSEUsQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAxOSBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBTd2l0Y2ggZnJvbSAnY29tcG9uZW50cy9jb21tb24vc3dpdGNoJztcbmltcG9ydCB7VmVydFRocmVlRG90c30gZnJvbSAnY29tcG9uZW50cy9jb21tb24vaWNvbnMnO1xuaW1wb3J0IEluZm9IZWxwZXIgZnJvbSAnY29tcG9uZW50cy9jb21tb24vaW5mby1oZWxwZXInO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkTGF5ZXJDb25maWdHcm91cExhYmVsID0gc3R5bGVkLmRpdmBcbiAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLmxhYmVsQ29sb3J9O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3J9O1xuICBmb250LXNpemU6IDEycHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGxpbmUtaGVpZ2h0OiAxMnB4O1xuICBtYXJnaW4tbGVmdDogLTEycHg7XG4gIHBhZGRpbmctbGVmdDogMTBweDtcbiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG4gIGxldHRlci1zcGFjaW5nOiAwLjJweDtcbmA7XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRMYXllckNvbmZpZ0dyb3VwQWN0aW9uID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbmA7XG5cbmV4cG9ydCBjb25zdCBDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudCA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdsYXllci1jb25maWctZ3JvdXBfX2NvbnRlbnRfX2NvbGxhcHNpYmxlJ1xufSlgXG4gIG92ZXJmbG93OiB2aXNpYmxlO1xuICB0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IDAuM3MgZWFzZS1vdXQ7XG4gIGhlaWdodDogbWF4LWNvbnRlbnQ7XG4gIG1heC1oZWlnaHQ6IDYwMHB4O1xuYDtcblxuZXhwb3J0IGNvbnN0IFN0eWxlZExheWVyQ29uZmlnR3JvdXAgPSBzdHlsZWQuZGl2YFxuICBwYWRkaW5nLWxlZnQ6IDE4cHg7XG4gIG1hcmdpbi1ib3R0b206IDEycHg7XG5cbiAgJi5jb2xsYXBzZWQge1xuICAgIC5sYXllci1jb25maWctZ3JvdXBfX2NvbnRlbnQge1xuICAgICAgLmxheWVyLWNvbmZpZy1ncm91cF9fY29udGVudF9fY29sbGFwc2libGUge1xuICAgICAgICAvKiBkaXNwbGF5OiBub25lOyAqL1xuICAgICAgICAvKiBmbGV4OiAwOyAqL1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBtYXgtaGVpZ2h0OiAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IFN0eWxlZENvbmZpZ0dyb3VwSGVhZGVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBtYXJnaW4tYm90dG9tOiAxMnB4O1xuXG4gIDpob3ZlciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIC5sYXllci1jb25maWctZ3JvdXBfX2xhYmVsIHtcbiAgICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvckhsfTtcbiAgICAgIGJvcmRlci1sZWZ0OiAycHggc29saWQgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JIbH07XG4gICAgfVxuXG4gICAgLmxheWVyLWNvbmZpZy1ncm91cF9fYWN0aW9uIHtcbiAgICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvckhsfTtcbiAgICB9XG4gIH1cbmA7XG5cbmNvbnN0IENvbmZpZ0dyb3VwQ29udGVudCA9IHN0eWxlZC5kaXZgXG4gICYuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IDAuMztcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAqIHtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cbiAgfVxuYDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGF5ZXJDb25maWdHcm91cCBleHRlbmRzIENvbXBvbmVudCB7XG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgY29sbGFwc2libGU6IGZhbHNlLFxuICAgIGV4cGFuZGVkOiBmYWxzZSxcbiAgICBvbkNoYW5nZTogKCkgPT4ge31cbiAgfTtcblxuICBzdGF0ZSA9IHtcbiAgICBjb2xsYXBzZWQ6IHRydWVcbiAgfTtcblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICB0aGlzLl9zZXRDb2xsYXBzZVN0YXRlKHRoaXMucHJvcHMuZXhwYW5kZWQpO1xuICB9XG5cbiAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMpIHtcbiAgICB0aGlzLl9zZXRDb2xsYXBzZVN0YXRlKG5leHRQcm9wcy5leHBhbmRlZCk7XG4gIH1cblxuICBfc2V0Q29sbGFwc2VTdGF0ZShleHBhbmRlZCkge1xuICAgIC8vIGlmIHByb3BzLGV4cGFuZGVkLCBhbmQgc3RhdGUgY29sbGFwc2VkLCBzZXQgY29sbGFwc2VkIHRvIGJlIGZhbHNlXG4gICAgaWYgKGV4cGFuZGVkICYmIHRoaXMuc3RhdGUuY29sbGFwc2VkKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtjb2xsYXBzZWQ6IGZhbHNlfSk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGxhYmVsLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBwcm9wZXJ0eSxcbiAgICAgIHdpZGdldCxcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgY29sbGFwc2libGUsXG4gICAgICBkZXNjcmlwdGlvblxuICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3Qge2NvbGxhcHNlZH0gPSB0aGlzLnN0YXRlO1xuICAgIHJldHVybiAoXG4gICAgICA8U3R5bGVkTGF5ZXJDb25maWdHcm91cFxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoJ2xheWVyLWNvbmZpZy1ncm91cCcsIHtjb2xsYXBzZWR9KX1cbiAgICAgID5cbiAgICAgICAgPFN0eWxlZENvbmZpZ0dyb3VwSGVhZGVyXG4gICAgICAgICAgY2xhc3NOYW1lPVwibGF5ZXItY29uZmlnLWdyb3VwX19oZWFkZXJcIlxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRoaXMuc2V0U3RhdGUoe2NvbGxhcHNlZDogIXRoaXMuc3RhdGUuY29sbGFwc2VkfSl9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IHN0eWxlPXt7ZGlzcGxheTogJ2ZsZXgnfX0+XG4gICAgICAgICAgICA8U3R5bGVkTGF5ZXJDb25maWdHcm91cExhYmVsXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImxheWVyLWNvbmZpZy1ncm91cF9fbGFiZWxcIlxuICAgICAgICAgICAgICBzdHlsZT17e21hcmdpblRvcDogJzJweCd9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bGFiZWx9XG4gICAgICAgICAgICA8L1N0eWxlZExheWVyQ29uZmlnR3JvdXBMYWJlbD5cbiAgICAgICAgICAgIHtkZXNjcmlwdGlvbiAmJiAoXG4gICAgICAgICAgICAgIDxJbmZvSGVscGVyXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb249e2Rlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgIGlkPXtgJHt0aGlzLnByb3BzLmlkfS0ke3Byb3BlcnR5fWB9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxTdHlsZWRMYXllckNvbmZpZ0dyb3VwQWN0aW9uIGNsYXNzTmFtZT1cImxheWVyLWNvbmZpZy1ncm91cF9fYWN0aW9uXCI+XG4gICAgICAgICAgICB7cHJvcGVydHkgPyAoXG4gICAgICAgICAgICAgIDxTd2l0Y2hcbiAgICAgICAgICAgICAgICBjaGVja2VkPXt3aWRnZXQuY29uZmlnW3Byb3BlcnR5XX1cbiAgICAgICAgICAgICAgICBpZD17YCR7d2lkZ2V0LmlkfS0ke3Byb3BlcnR5fWB9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZSh7W3Byb3BlcnR5XTogIXdpZGdldC5jb25maWdbcHJvcGVydHldfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIHtjb2xsYXBzaWJsZSA/IDxWZXJ0VGhyZWVEb3RzIGhlaWdodD1cIjE4cHhcIiAvPiA6IG51bGx9XG4gICAgICAgICAgPC9TdHlsZWRMYXllckNvbmZpZ0dyb3VwQWN0aW9uPlxuICAgICAgICA8L1N0eWxlZENvbmZpZ0dyb3VwSGVhZGVyPlxuICAgICAgICA8Q29uZmlnR3JvdXBDb250ZW50XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdsYXllci1jb25maWctZ3JvdXBfX2NvbnRlbnQnLCB7XG4gICAgICAgICAgICBkaXNhYmxlZDogcHJvcGVydHkgJiYgIXdpZGdldC5jb25maWdbcHJvcGVydHldXG4gICAgICAgICAgfSl9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvQ29uZmlnR3JvdXBDb250ZW50PlxuICAgICAgPC9TdHlsZWRMYXllckNvbmZpZ0dyb3VwPlxuICAgICk7XG4gIH1cbn1cbiJdfQ==