UNPKG

kepler.gl.geoiq

Version:

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

176 lines (141 loc) 21 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"] = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); 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 _propTypes = _interopRequireDefault(require("prop-types")); var _reactAnythingSortable = _interopRequireDefault(require("react-anything-sortable")); var _styledComponents = _interopRequireDefault(require("styled-components")); var _reselect = require("reselect"); var _widgetPanel = _interopRequireDefault(require("./widget-panel/widget-panel")); var _sourceDataCatalog = _interopRequireDefault(require("./source-data-catalog")); var _icons = require("../common/icons"); var _styledComponents2 = require("../common/styled-components"); function _templateObject() { var data = (0, _taggedTemplateLiteral2["default"])(["\n .ui-sortable {\n display: block;\n position: relative;\n overflow: visible;\n user-select: none;\n\n :before {\n content: ' ';\n display: table;\n }\n\n :after {\n content: ' ';\n display: table;\n }\n }\n\n .ui-sortable-item.ui-sortable-dragging {\n position: absolute;\n z-index: 1688;\n cursor: move;\n }\n\n .ui-sortable-item.ui-sortable-dragging:hover {\n cursor: move;\n opacity: 0.5;\n }\n\n .ui-sortable-placeholder {\n display: none;\n }\n\n .ui-sortable-placeholder.visible {\n display: block;\n opacity: 0;\n z-index: -1;\n }\n"]); _templateObject = function _templateObject() { return data; }; return data; } var StyledSortable = _styledComponents["default"].div(_templateObject()); WidgetManagerFactory.deps = [_widgetPanel["default"], _sourceDataCatalog["default"]]; function WidgetManagerFactory(WidgetPanel, SourceDataCatalog) { var _class, _temp; return _temp = _class = /*#__PURE__*/ function (_Component) { (0, _inherits2["default"])(WidgetManager, _Component); function WidgetManager() { var _getPrototypeOf2; var _this; (0, _classCallCheck2["default"])(this, WidgetManager); 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"])(WidgetManager)).call.apply(_getPrototypeOf2, [this].concat(args))); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "widgetClassSelector", function (props) { return props.widgetClasses; }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "widgetTypeOptionsSelector", (0, _reselect.createSelector)(_this.widgetClassSelector, function (widgetClasses) { return Object.keys(widgetClasses).map(function (key) { var widget = new widgetClasses[key](); return { id: key, label: widget.name, icon: widget.widgetIcon }; }); })); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_addEmptyNewWidget", function () { _this.props.addWidget(); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_handleSort", function (order) { _this.props.updateWidgetOrder(order); }); return _this; } (0, _createClass2["default"])(WidgetManager, [{ key: "render", value: function render() { var _this$props = this.props, widgets = _this$props.widgets, layers = _this$props.layers, datasets = _this$props.datasets, widgetOrder = _this$props.widgetOrder, openModal = _this$props.openModal, mapState = _this$props.mapState; var defaultLayer = Object.keys(layers)[0]; var widgetTypeOptions = this.widgetTypeOptionsSelector(this.props); var widgetActions = { widgetConfigChange: this.props.widgetConfigChange, widgetVisualChannelConfigChange: this.props.widgetVisualChannelConfigChange, widgetTypeChange: this.props.widgetTypeChange, widgetVisConfigChange: this.props.widgetVisConfigChange, removeWidget: this.props.removeWidget }; var panelProps = { datasets: datasets, openModal: openModal, widgetTypeOptions: widgetTypeOptions }; return _react["default"].createElement(StyledSortable, { className: "widget-manager" }, _react["default"].createElement(SourceDataCatalog, { datasets: datasets, showDatasetTable: this.props.showDatasetTable }), _react["default"].createElement(_styledComponents2.SidePanelDivider, null), _react["default"].createElement(_styledComponents2.SidePanelSection, null, _react["default"].createElement(_reactAnythingSortable["default"], { onSort: this._handleSort, direction: "vertical", sortHandle: "sort--handle", dynamic: true }, widgetOrder.map(function (idx) { return _react["default"].createElement(WidgetPanel, (0, _extends2["default"])({}, panelProps, widgetActions, { sortData: idx, key: widgets[idx].id, idx: idx, widget: widgets[idx], layers: layers, mapState: mapState })); }))), _react["default"].createElement(_styledComponents2.SidePanelSection, null, defaultLayer ? _react["default"].createElement(_styledComponents2.Button, { onClick: this._addEmptyNewWidget, width: "auto" }, _react["default"].createElement(_icons.Add, { height: "12px" }), "Add Widget") : null)); } }]); return WidgetManager; }(_react.Component), (0, _defineProperty2["default"])(_class, "propTypes", { addWidget: _propTypes["default"].func.isRequired, datasets: _propTypes["default"].object.isRequired, widgetClasses: _propTypes["default"].object.isRequired, widgets: _propTypes["default"].arrayOf(_propTypes["default"].any).isRequired, widgetConfigChange: _propTypes["default"].func.isRequired, widgetVisualChannelConfigChange: _propTypes["default"].func.isRequired, widgetTypeChange: _propTypes["default"].func.isRequired, widgetVisConfigChange: _propTypes["default"].func.isRequired, // layers: propTypes.arrayOf(propTypes.any), openModal: _propTypes["default"].func.isRequired, removeWidget: _propTypes["default"].func.isRequired, showDatasetTable: _propTypes["default"].func.isRequired, updateWidgetOrder: _propTypes["default"].func.isRequired, mapState: _propTypes["default"].object.isRequired }), _temp; } var _default = WidgetManagerFactory; exports["default"] = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvd2lkZ2V0LW1hbmFnZXIuanMiXSwibmFtZXMiOlsiU3R5bGVkU29ydGFibGUiLCJzdHlsZWQiLCJkaXYiLCJXaWRnZXRNYW5hZ2VyRmFjdG9yeSIsImRlcHMiLCJXaWRnZXRQYW5lbEZhY3RvcnkiLCJTb3VyY2VEYXRhQ2F0YWxvZ0ZhY3RvcnkiLCJXaWRnZXRQYW5lbCIsIlNvdXJjZURhdGFDYXRhbG9nIiwicHJvcHMiLCJ3aWRnZXRDbGFzc2VzIiwid2lkZ2V0Q2xhc3NTZWxlY3RvciIsIk9iamVjdCIsImtleXMiLCJtYXAiLCJrZXkiLCJ3aWRnZXQiLCJpZCIsImxhYmVsIiwibmFtZSIsImljb24iLCJ3aWRnZXRJY29uIiwiYWRkV2lkZ2V0Iiwib3JkZXIiLCJ1cGRhdGVXaWRnZXRPcmRlciIsIndpZGdldHMiLCJsYXllcnMiLCJkYXRhc2V0cyIsIndpZGdldE9yZGVyIiwib3Blbk1vZGFsIiwibWFwU3RhdGUiLCJkZWZhdWx0TGF5ZXIiLCJ3aWRnZXRUeXBlT3B0aW9ucyIsIndpZGdldFR5cGVPcHRpb25zU2VsZWN0b3IiLCJ3aWRnZXRBY3Rpb25zIiwid2lkZ2V0Q29uZmlnQ2hhbmdlIiwid2lkZ2V0VmlzdWFsQ2hhbm5lbENvbmZpZ0NoYW5nZSIsIndpZGdldFR5cGVDaGFuZ2UiLCJ3aWRnZXRWaXNDb25maWdDaGFuZ2UiLCJyZW1vdmVXaWRnZXQiLCJwYW5lbFByb3BzIiwic2hvd0RhdGFzZXRUYWJsZSIsIl9oYW5kbGVTb3J0IiwiaWR4IiwiX2FkZEVtcHR5TmV3V2lkZ2V0IiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwiZnVuYyIsImlzUmVxdWlyZWQiLCJvYmplY3QiLCJhcnJheU9mIiwiYW55Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7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QkFBVUMsSUFBVixDQUFlQyxVQVBoQjtBQVFqQlYsSUFBQUEscUJBQXFCLEVBQUVRLHNCQUFVQyxJQUFWLENBQWVDLFVBUnJCO0FBU2pCO0FBQ0FuQixJQUFBQSxTQUFTLEVBQUVpQixzQkFBVUMsSUFBVixDQUFlQyxVQVZUO0FBV2pCVCxJQUFBQSxZQUFZLEVBQUVPLHNCQUFVQyxJQUFWLENBQWVDLFVBWFo7QUFZakJQLElBQUFBLGdCQUFnQixFQUFFSyxzQkFBVUMsSUFBVixDQUFlQyxVQVpoQjtBQWFqQnhCLElBQUFBLGlCQUFpQixFQUFFc0Isc0JBQVVDLElBQVYsQ0FBZUMsVUFiakI7QUFjakJsQixJQUFBQSxRQUFRLEVBQUVnQixzQkFBVUcsTUFBVixDQUFpQkQ7QUFkVixHQURyQjtBQXNHRDs7ZUFFYzdDLG9CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDE5IFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFNvcnRhYmxlIGZyb20gJ3JlYWN0LWFueXRoaW5nLXNvcnRhYmxlJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtjcmVhdGVTZWxlY3Rvcn0gZnJvbSAncmVzZWxlY3QnO1xuXG5pbXBvcnQgV2lkZ2V0UGFuZWxGYWN0b3J5IGZyb20gJy4vd2lkZ2V0LXBhbmVsL3dpZGdldC1wYW5lbCc7XG5pbXBvcnQgU291cmNlRGF0YUNhdGFsb2dGYWN0b3J5IGZyb20gJy4vc291cmNlLWRhdGEtY2F0YWxvZyc7XG5pbXBvcnQge0FkZH0gZnJvbSAnY29tcG9uZW50cy9jb21tb24vaWNvbnMnO1xuaW1wb3J0IHtcbiAgU2lkZVBhbmVsRGl2aWRlcixcbiAgU2lkZVBhbmVsU2VjdGlvbixcbiAgQnV0dG9uXG59IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcblxuY29uc3QgU3R5bGVkU29ydGFibGUgPSBzdHlsZWQuZGl2YFxuICAudWktc29ydGFibGUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcblxuICAgIDpiZWZvcmUge1xuICAgICAgY29udGVudDogJyAnO1xuICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgfVxuXG4gICAgOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICcgJztcbiAgICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIH1cbiAgfVxuXG4gIC51aS1zb3J0YWJsZS1pdGVtLnVpLXNvcnRhYmxlLWRyYWdnaW5nIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogMTY4ODtcbiAgICBjdXJzb3I6IG1vdmU7XG4gIH1cblxuICAudWktc29ydGFibGUtaXRlbS51aS1zb3J0YWJsZS1kcmFnZ2luZzpob3ZlciB7XG4gICAgY3Vyc29yOiBtb3ZlO1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgfVxuXG4gIC51aS1zb3J0YWJsZS1wbGFjZWhvbGRlciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC51aS1zb3J0YWJsZS1wbGFjZWhvbGRlci52aXNpYmxlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBvcGFjaXR5OiAwO1xuICAgIHotaW5kZXg6IC0xO1xuICB9XG5gO1xuXG5XaWRnZXRNYW5hZ2VyRmFjdG9yeS5kZXBzID0gW1dpZGdldFBhbmVsRmFjdG9yeSwgU291cmNlRGF0YUNhdGFsb2dGYWN0b3J5XTtcblxuZnVuY3Rpb24gV2lkZ2V0TWFuYWdlckZhY3RvcnkoV2lkZ2V0UGFuZWwsIFNvdXJjZURhdGFDYXRhbG9nKSB7XG4gIHJldHVybiBjbGFzcyBXaWRnZXRNYW5hZ2VyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgICAgYWRkV2lkZ2V0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgICAgZGF0YXNldHM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIHdpZGdldENsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIHdpZGdldHM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLmlzUmVxdWlyZWQsXG4gICAgICB3aWRnZXRDb25maWdDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICB3aWRnZXRWaXN1YWxDaGFubmVsQ29uZmlnQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgICAgd2lkZ2V0VHlwZUNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAgIHdpZGdldFZpc0NvbmZpZ0NoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAgIC8vIGxheWVyczogcHJvcFR5cGVzLmFycmF5T2YocHJvcFR5cGVzLmFueSksXG4gICAgICBvcGVuTW9kYWw6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICByZW1vdmVXaWRnZXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICBzaG93RGF0YXNldFRhYmxlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgICAgdXBkYXRlV2lkZ2V0T3JkZXI6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICBtYXBTdGF0ZTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkXG4gICAgfTtcblxuICAgIHdpZGdldENsYXNzU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy53aWRnZXRDbGFzc2VzO1xuICAgIHdpZGdldFR5cGVPcHRpb25zU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIHRoaXMud2lkZ2V0Q2xhc3NTZWxlY3RvcixcbiAgICAgIHdpZGdldENsYXNzZXMgPT5cbiAgICAgICAgT2JqZWN0LmtleXMod2lkZ2V0Q2xhc3NlcykubWFwKGtleSA9PiB7XG4gICAgICAgICAgY29uc3Qgd2lkZ2V0ID0gbmV3IHdpZGdldENsYXNzZXNba2V5XSgpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpZDoga2V5LFxuICAgICAgICAgICAgbGFiZWw6IHdpZGdldC5uYW1lLFxuICAgICAgICAgICAgaWNvbjogd2lkZ2V0LndpZGdldEljb25cbiAgICAgICAgICB9O1xuICAgICAgICB9KVxuICAgICk7XG5cbiAgICBfYWRkRW1wdHlOZXdXaWRnZXQgPSAoKSA9PiB7XG4gICAgICB0aGlzLnByb3BzLmFkZFdpZGdldCgpO1xuICAgIH07XG5cbiAgICBfaGFuZGxlU29ydCA9IG9yZGVyID0+IHtcbiAgICAgIHRoaXMucHJvcHMudXBkYXRlV2lkZ2V0T3JkZXIob3JkZXIpO1xuICAgIH07XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHdpZGdldHMsXG4gICAgICAgIGxheWVycyxcbiAgICAgICAgZGF0YXNldHMsXG4gICAgICAgIHdpZGdldE9yZGVyLFxuICAgICAgICBvcGVuTW9kYWwsXG4gICAgICAgIG1hcFN0YXRlXG4gICAgICB9ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IGRlZmF1bHRMYXllciA9IE9iamVjdC5rZXlzKGxheWVycylbMF07XG4gICAgICBjb25zdCB3aWRnZXRUeXBlT3B0aW9ucyA9IHRoaXMud2lkZ2V0VHlwZU9wdGlvbnNTZWxlY3Rvcih0aGlzLnByb3BzKTtcblxuICAgICAgY29uc3Qgd2lkZ2V0QWN0aW9ucyA9IHtcbiAgICAgICAgd2lkZ2V0Q29uZmlnQ2hhbmdlOiB0aGlzLnByb3BzLndpZGdldENvbmZpZ0NoYW5nZSxcbiAgICAgICAgd2lkZ2V0VmlzdWFsQ2hhbm5lbENvbmZpZ0NoYW5nZTogdGhpcy5wcm9wc1xuICAgICAgICAgIC53aWRnZXRWaXN1YWxDaGFubmVsQ29uZmlnQ2hhbmdlLFxuICAgICAgICB3aWRnZXRUeXBlQ2hhbmdlOiB0aGlzLnByb3BzLndpZGdldFR5cGVDaGFuZ2UsXG4gICAgICAgIHdpZGdldFZpc0NvbmZpZ0NoYW5nZTogdGhpcy5wcm9wcy53aWRnZXRWaXNDb25maWdDaGFuZ2UsXG4gICAgICAgIHJlbW92ZVdpZGdldDogdGhpcy5wcm9wcy5yZW1vdmVXaWRnZXRcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHBhbmVsUHJvcHMgPSB7ZGF0YXNldHMsIG9wZW5Nb2RhbCwgd2lkZ2V0VHlwZU9wdGlvbnN9O1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZFNvcnRhYmxlIGNsYXNzTmFtZT1cIndpZGdldC1tYW5hZ2VyXCI+XG4gICAgICAgICAgPFNvdXJjZURhdGFDYXRhbG9nXG4gICAgICAgICAgICBkYXRhc2V0cz17ZGF0YXNldHN9XG4gICAgICAgICAgICBzaG93RGF0YXNldFRhYmxlPXt0aGlzLnByb3BzLnNob3dEYXRhc2V0VGFibGV9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8U2lkZVBhbmVsRGl2aWRlciAvPlxuICAgICAgICAgIDxTaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgICAgICAgPFNvcnRhYmxlXG4gICAgICAgICAgICAgIG9uU29ydD17dGhpcy5faGFuZGxlU29ydH1cbiAgICAgICAgICAgICAgZGlyZWN0aW9uPVwidmVydGljYWxcIlxuICAgICAgICAgICAgICBzb3J0SGFuZGxlPVwic29ydC0taGFuZGxlXCJcbiAgICAgICAgICAgICAgZHluYW1pY1xuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7d2lkZ2V0T3JkZXIubWFwKGlkeCA9PiAoXG4gICAgICAgICAgICAgICAgPFdpZGdldFBhbmVsXG4gICAgICAgICAgICAgICAgICB7Li4ucGFuZWxQcm9wc31cbiAgICAgICAgICAgICAgICAgIHsuLi53aWRnZXRBY3Rpb25zfVxuICAgICAgICAgICAgICAgICAgc29ydERhdGE9e2lkeH1cbiAgICAgICAgICAgICAgICAgIGtleT17d2lkZ2V0c1tpZHhdLmlkfVxuICAgICAgICAgICAgICAgICAgaWR4PXtpZHh9XG4gICAgICAgICAgICAgICAgICB3aWRnZXQ9e3dpZGdldHNbaWR4XX1cbiAgICAgICAgICAgICAgICAgIGxheWVycz17bGF5ZXJzfVxuICAgICAgICAgICAgICAgICAgbWFwU3RhdGU9e21hcFN0YXRlfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9Tb3J0YWJsZT5cbiAgICAgICAgICA8L1NpZGVQYW5lbFNlY3Rpb24+XG4gICAgICAgICAgPFNpZGVQYW5lbFNlY3Rpb24+XG4gICAgICAgICAgICB7ZGVmYXVsdExheWVyID8gKFxuICAgICAgICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e3RoaXMuX2FkZEVtcHR5TmV3V2lkZ2V0fSB3aWR0aD1cImF1dG9cIj5cbiAgICAgICAgICAgICAgICA8QWRkIGhlaWdodD1cIjEycHhcIiAvPlxuICAgICAgICAgICAgICAgIEFkZCBXaWRnZXRcbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8L1NpZGVQYW5lbFNlY3Rpb24+XG4gICAgICAgIDwvU3R5bGVkU29ydGFibGU+XG4gICAgICApO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgV2lkZ2V0TWFuYWdlckZhY3Rvcnk7XG4iXX0=