kepler.gl.geoiq
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
161 lines (131 loc) • 21.2 kB
JavaScript
;
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 _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 _classnames = _interopRequireDefault(require("classnames"));
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _mouseEvent = _interopRequireDefault(require("./mouse-event"));
var _templateObject, _templateObject2;
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 || _typeof(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 StyledSliderHandle = _styledComponents["default"].span(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n z-index: 10;\n margin-", ": -", "px;\n height: ", "px;\n width: ", "px;\n box-shadow: ", ";\n background-color: ", ";\n border-width: 1px;\n border-style: solid;\n border-color: ", ";\n\n :hover {\n background-color: ", ";\n cursor: pointer;\n }\n"])), function (props) {
return props.vertical ? 'left' : 'top';
}, function (props) {
return (props.sliderHandleWidth - props.theme.sliderBarHeight) / 2;
}, function (props) {
return Number.isFinite(props.sliderHandleWidth) ? props.sliderHandleWidth : props.theme.sliderHandleHeight;
}, function (props) {
return Number.isFinite(props.sliderHandleWidth) ? props.sliderHandleWidth : props.theme.sliderHandleHeight;
}, function (props) {
return props.theme.sliderHandleShadow;
}, function (props) {
return props.theme.sliderHandleColor;
}, function (props) {
return props.active ? props.theme.selectBorderColor : props.theme.sliderHandleColor;
}, function (props) {
return props.theme.sliderHandleHoverColor;
});
var StyledSliderTooltip = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n border-radius: 3px;\n display: inline-block;\n pointer-events: none;\n transition: opacity 0.3s ease-out;\n z-index: 999;\n margin-left: ", "px;\n font-size: 9.5px;\n font-weight: 500;\n padding: 7px 10px;\n background-color: ", ";\n color: ", ";\n margin-bottom: -6px;\n width: 50px;\n\n :before,:after {\n content: '';\n width: 0;\n height: 0;\n position: absolute;\n }\n\n :before {\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n left: -8px;\n top: 50%;\n }\n\n :after {\n border-top: 5px solid transparent;\n border-bottom: 5px solid transparent;\n left: -6px;\n top: 50%;\n margin-top: -4px;\n border-right-color: ", ";\n border-right-style: solid;\n border-right-width: 6px;\n }\n"])), function (props) {
return props.sliderHandleWidth + 12;
}, function (props) {
return props.theme.tooltipBg;
}, function (props) {
return props.theme.tooltipColor;
}, function (props) {
return props.theme.tooltipBg;
});
var SliderTooltip = function SliderTooltip(_ref) {
var value = _ref.value,
_ref$format = _ref.format,
format = _ref$format === void 0 ? function (val) {
return val;
} : _ref$format,
style = _ref.style,
sliderHandleWidth = _ref.sliderHandleWidth;
return (/*#__PURE__*/_react["default"].createElement(StyledSliderTooltip, {
sliderHandleWidth: sliderHandleWidth,
style: style
}, format(value))
);
};
var SliderHandle = exports["default"] = /*#__PURE__*/function (_Component) {
(0, _inherits2["default"])(SliderHandle, _Component);
var _super = _createSuper(SliderHandle);
function SliderHandle(props) {
var _this;
(0, _classCallCheck2["default"])(this, SliderHandle);
_this = _super.call(this, props);
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
mouseOver: false
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "toggleMouseOver", function () {
_this.setState({
mouseOver: !_this.state.mouseOver
});
});
_this.mouseEvent = new _mouseEvent["default"]({
vertical: props.vertical,
valueListener: props.valueListener,
toggleMouseOver: _this.toggleMouseOver
});
return _this;
}
(0, _createClass2["default"])(SliderHandle, [{
key: "render",
value: function render() {
var style = (0, _defineProperty2["default"])({}, this.props.vertical ? 'bottom' : 'left', this.props.left);
return (/*#__PURE__*/_react["default"].createElement("div", {
style: {
display: this.props.display ? 'block' : 'none'
}
}, this.props.showTooltip && this.state.mouseOver ? /*#__PURE__*/_react["default"].createElement(SliderTooltip, {
style: style,
sliderHandleWidth: this.props.sliderHandleWidth,
value: Number.isFinite(this.props.value) ? this.props.value : null
}) : null, /*#__PURE__*/_react["default"].createElement(StyledSliderHandle, {
className: (0, _classnames["default"])('kg-range-slider__handle', {
'kg-range-slider__handle--active': this.state.mouseOver
}),
sliderHandleWidth: this.props.sliderHandleWidth,
active: this.state.mouseOver,
vertical: this.props.vertical,
style: style,
onMouseDown: this.mouseEvent.handleMouseDown,
onTouchStart: this.mouseEvent.handleTouchStart
}))
);
}
}]);
return SliderHandle;
}(_react.Component);
(0, _defineProperty2["default"])(SliderHandle, "propTypes", {
sliderHandleWidth: _propTypes["default"].number,
left: _propTypes["default"].string,
display: _propTypes["default"].bool,
valueListener: _propTypes["default"].func,
vertical: _propTypes["default"].bool
});
(0, _defineProperty2["default"])(SliderHandle, "defaultProps", {
sliderHandleWidth: 12,
left: '50%',
display: true,
vertical: false,
valueListener: function valueListenerFn() {},
showTooltip: false
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NvbW1vbi9zbGlkZXIvc2xpZGVyLWhhbmRsZS5qcyJdLCJuYW1lcyI6WyJTdHlsZWRTbGlkZXJIYW5kbGUiLCJzdHlsZWQiLCJzcGFuIiwicHJvcHMiLCJ2ZXJ0aWNhbCIsInNsaWRlckhhbmRsZVdpZHRoIiwidGhlbWUiLCJzbGlkZXJCYXJIZWlnaHQiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsInNsaWRlckhhbmRsZUhlaWdodCIsInNsaWRlckhhbmRsZVNoYWRvdyIsInNsaWRlckhhbmRsZUNvbG9yIiwiYWN0aXZlIiwic2VsZWN0Qm9yZGVyQ29sb3IiLCJzbGlkZXJIYW5kbGVIb3ZlckNvbG9yIiwiU3R5bGVkU2xpZGVyVG9vbHRpcCIsImRpdiIsInRvb2x0aXBCZyIsInRvb2x0aXBDb2xvciIsIlNsaWRlclRvb2x0aXAiLCJ2YWx1ZSIsImZvcm1hdCIsInZhbCIsInN0eWxlIiwiU2xpZGVySGFuZGxlIiwibW91c2VPdmVyIiwic2V0U3RhdGUiLCJzdGF0ZSIsIm1vdXNlRXZlbnQiLCJNb3VzZUV2ZW50SGFuZGxlciIsInZhbHVlTGlzdGVuZXIiLCJ0b2dnbGVNb3VzZU92ZXIiLCJsZWZ0IiwiZGlzcGxheSIsInNob3dUb29sdGlwIiwiaGFuZGxlTW91c2VEb3duIiwiaGFuZGxlVG91Y2hTdGFydCIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsIm51bWJlciIsInN0cmluZyIsImJvb2wiLCJmdW5jIiwidmFsdWVMaXN0ZW5lckZuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLGtCQUFrQixHQUFHQyw2QkFBT0MsSUFBVix5WEFHYixVQUFBQyxLQUFLO0FBQUEsU0FBS0EsS0FBSyxDQUFDQyxRQUFOLEdBQWlCLE1BQWpCLEdBQTBCLEtBQS9CO0FBQUEsQ0FIUSxFQUdtQyxVQUFBRCxLQUFL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VUUsTUFGQztBQUdqQlAsRUFBQUEsT0FBTyxFQUFFSyxzQkFBVUcsSUFIRjtBQUlqQlgsRUFBQUEsYUFBYSxFQUFFUSxzQkFBVUksSUFKUjtBQUtqQnZDLEVBQUFBLFFBQVEsRUFBRW1DLHNCQUFVRztBQUxILEM7aUNBREFqQixZLGtCQVNHO0FBQ3BCcEIsRUFBQUEsaUJBQWlCLEVBQUUsRUFEQztBQUVwQjRCLEVBQUFBLElBQUksRUFBRSxLQUZjO0FBR3BCQyxFQUFBQSxPQUFPLEVBQUUsSUFIVztBQUlwQjlCLEVBQUFBLFFBQVEsRUFBRSxLQUpVO0FBS3BCMkIsRUFBQUEsYUFBYSxFQUFFLFNBQVNhLGVBQVQsR0FBMkIsQ0FBRSxDQUx4QjtBQU1wQlQsRUFBQUEsV0FBVyxFQUFFO0FBTk8sQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMyBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgTW91c2VFdmVudEhhbmRsZXIgZnJvbSAnLi9tb3VzZS1ldmVudCc7XG5cbmNvbnN0IFN0eWxlZFNsaWRlckhhbmRsZSA9IHN0eWxlZC5zcGFuYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDEwO1xuICBtYXJnaW4tJHtwcm9wcyA9PiAocHJvcHMudmVydGljYWwgPyAnbGVmdCcgOiAndG9wJyl9OiAtJHtwcm9wcyA9PlxuICAocHJvcHMuc2xpZGVySGFuZGxlV2lkdGggLSBwcm9wcy50aGVtZS5zbGlkZXJCYXJIZWlnaHQpIC8gMn1weDtcbiAgaGVpZ2h0OiAke3Byb3BzID0+XG4gICAgTnVtYmVyLmlzRmluaXRlKHByb3BzLnNsaWRlckhhbmRsZVdpZHRoKVxuICAgICAgPyBwcm9wcy5zbGlkZXJIYW5kbGVXaWR0aFxuICAgICAgOiBwcm9wcy50aGVtZS5zbGlkZXJIYW5kbGVIZWlnaHR9cHg7XG4gIHdpZHRoOiAke3Byb3BzID0+XG4gICAgTnVtYmVyLmlzRmluaXRlKHByb3BzLnNsaWRlckhhbmRsZVdpZHRoKVxuICAgICAgPyBwcm9wcy5zbGlkZXJIYW5kbGVXaWR0aFxuICAgICAgOiBwcm9wcy50aGVtZS5zbGlkZXJIYW5kbGVIZWlnaHR9cHg7XG4gIGJveC1zaGFkb3c6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc2xpZGVySGFuZGxlU2hhZG93fTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zbGlkZXJIYW5kbGVDb2xvcn07XG4gIGJvcmRlci13aWR0aDogMXB4O1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICBib3JkZXItY29sb3I6ICR7cHJvcHMgPT5cbiAgICBwcm9wcy5hY3RpdmVcbiAgICAgID8gcHJvcHMudGhlbWUuc2VsZWN0Qm9yZGVyQ29sb3JcbiAgICAgIDogcHJvcHMudGhlbWUuc2xpZGVySGFuZGxlQ29sb3J9O1xuXG4gIDpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zbGlkZXJIYW5kbGVIb3ZlckNvbG9yfTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZFNsaWRlclRvb2x0aXAgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2Utb3V0O1xuICB6LWluZGV4OiA5OTk7XG4gIG1hcmdpbi1sZWZ0OiAke3Byb3BzID0+IHByb3BzLnNsaWRlckhhbmRsZVdpZHRoICsgMTJ9cHg7XG4gIGZvbnQtc2l6ZTogOS41cHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIHBhZGRpbmc6IDdweCAxMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRvb2x0aXBCZ307XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRvb2x0aXBDb2xvcn07XG4gIG1hcmdpbi1ib3R0b206IC02cHg7XG4gIHdpZHRoOiA1MHB4O1xuXG4gIDpiZWZvcmUsOmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICB3aWR0aDogMDtcbiAgICBoZWlnaHQ6IDA7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICB9XG5cbiAgOmJlZm9yZSB7XG4gICAgYm9yZGVyLXRvcDogNnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1ib3R0b206IDZweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBsZWZ0OiAtOHB4O1xuICAgIHRvcDogNTAlO1xuICB9XG5cbiAgOmFmdGVyIHtcbiAgICBib3JkZXItdG9wOiA1cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLWJvdHRvbTogNXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIGxlZnQ6IC02cHg7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogLTRweDtcbiAgICBib3JkZXItcmlnaHQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudG9vbHRpcEJnfTtcbiAgICBib3JkZXItcmlnaHQtc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1yaWdodC13aWR0aDogNnB4O1xuICB9XG5gO1xuXG5jb25zdCBTbGlkZXJUb29sdGlwID0gKHtcbiAgdmFsdWUsXG4gIGZvcm1hdCA9IHZhbCA9PiB2YWwsXG4gIHN0eWxlLFxuICBzbGlkZXJIYW5kbGVXaWR0aFxufSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxTdHlsZWRTbGlkZXJUb29sdGlwXG4gICAgICBzbGlkZXJIYW5kbGVXaWR0aD17c2xpZGVySGFuZGxlV2lkdGh9XG4gICAgICBzdHlsZT17c3R5bGV9Pntmb3JtYXQodmFsdWUpfVxuICAgIDwvU3R5bGVkU2xpZGVyVG9vbHRpcD5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTbGlkZXJIYW5kbGUgZXh0ZW5kcyBDb21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIHNsaWRlckhhbmRsZVdpZHRoOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGxlZnQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGlzcGxheTogUHJvcFR5cGVzLmJvb2wsXG4gICAgdmFsdWVMaXN0ZW5lcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgdmVydGljYWw6IFByb3BUeXBlcy5ib29sXG4gIH07XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBzbGlkZXJIYW5kbGVXaWR0aDogMTIsXG4gICAgbGVmdDogJzUwJScsXG4gICAgZGlzcGxheTogdHJ1ZSxcbiAgICB2ZXJ0aWNhbDogZmFsc2UsXG4gICAgdmFsdWVMaXN0ZW5lcjogZnVuY3Rpb24gdmFsdWVMaXN0ZW5lckZuKCkge30sXG4gICAgc2hvd1Rvb2x0aXA6IGZhbHNlXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLm1vdXNlRXZlbnQgPSBuZXcgTW91c2VFdmVudEhhbmRsZXIoe1xuICAgICAgdmVydGljYWw6IHByb3BzLnZlcnRpY2FsLFxuICAgICAgdmFsdWVMaXN0ZW5lcjogcHJvcHMudmFsdWVMaXN0ZW5lcixcbiAgICAgIHRvZ2dsZU1vdXNlT3ZlcjogdGhpcy50b2dnbGVNb3VzZU92ZXJcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRlID0ge21vdXNlT3ZlcjogZmFsc2V9O1xuXG4gIHRvZ2dsZU1vdXNlT3ZlciA9ICgpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHttb3VzZU92ZXI6ICF0aGlzLnN0YXRlLm1vdXNlT3Zlcn0pO1xuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCBzdHlsZSA9IHtbdGhpcy5wcm9wcy52ZXJ0aWNhbCA/ICdib3R0b20nIDogJ2xlZnQnXTogdGhpcy5wcm9wcy5sZWZ0fTtcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IHN0eWxlPXt7ZGlzcGxheTogdGhpcy5wcm9wcy5kaXNwbGF5ID8gJ2Jsb2NrJyA6ICdub25lJ319PlxuICAgICAgICB7dGhpcy5wcm9wcy5zaG93VG9vbHRpcCAmJiB0aGlzLnN0YXRlLm1vdXNlT3ZlciA/IDxTbGlkZXJUb29sdGlwXG4gICAgICAgICAgc3R5bGU9e3N0eWxlfVxuICAgICAgICAgIHNsaWRlckhhbmRsZVdpZHRoPXt0aGlzLnByb3BzLnNsaWRlckhhbmRsZVdpZHRofVxuICAgICAgICAgIHZhbHVlPXtOdW1iZXIuaXNGaW5pdGUodGhpcy5wcm9wcy52YWx1ZSkgPyB0aGlzLnByb3BzLnZhbHVlIDogbnVsbH1cbiAgICAgICAgLz4gOiBudWxsfVxuICAgICAgICA8U3R5bGVkU2xpZGVySGFuZGxlXG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdrZy1yYW5nZS1zbGlkZXJfX2hhbmRsZScsIHtcbiAgICAgICAgICAgICdrZy1yYW5nZS1zbGlkZXJfX2hhbmRsZS0tYWN0aXZlJzogdGhpcy5zdGF0ZS5tb3VzZU92ZXJcbiAgICAgICAgICB9KX1cbiAgICAgICAgICBzbGlkZXJIYW5kbGVXaWR0aD17dGhpcy5wcm9wcy5zbGlkZXJIYW5kbGVXaWR0aH1cbiAgICAgICAgICBhY3RpdmU9e3RoaXMuc3RhdGUubW91c2VPdmVyfVxuICAgICAgICAgIHZlcnRpY2FsPXt0aGlzLnByb3BzLnZlcnRpY2FsfVxuICAgICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgICBvbk1vdXNlRG93bj17dGhpcy5tb3VzZUV2ZW50LmhhbmRsZU1vdXNlRG93bn1cbiAgICAgICAgICBvblRvdWNoU3RhcnQ9e3RoaXMubW91c2VFdmVudC5oYW5kbGVUb3VjaFN0YXJ0fVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufVxuIl19