kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
131 lines (113 loc) • 18.6 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = TimeRangeSliderFactory;
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
var _react = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _lodash = _interopRequireDefault(require("lodash.throttle"));
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _rangeSlider = _interopRequireDefault(require("./range-slider"));
var _timeSliderMarker = _interopRequireDefault(require("./time-slider-marker"));
var _playbackControls = _interopRequireDefault(require("./animation-control/playback-controls"));
var _timeRangeSliderTimeTitle = _interopRequireDefault(require("./time-range-slider-time-title"));
var _templateObject;
var animationControlWidth = 176;
var StyledSliderContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n align-items: flex-end;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n padding-left: ", "px;\n\n .timeline-container .kg-slider {\n display: none;\n }\n\n .playback-controls {\n margin-left: 22px;\n }\n"])), function (props) {
return props.isEnlarged ? 24 : 0;
});
TimeRangeSliderFactory.deps = [_playbackControls["default"], _rangeSlider["default"], _timeSliderMarker["default"], _timeRangeSliderTimeTitle["default"]];
function TimeRangeSliderFactory(PlaybackControls, RangeSlider, TimeSliderMarker, TimeRangeSliderTimeTitle) {
var TimeRangeSlider = function TimeRangeSlider(props) {
var domain = props.domain,
value = props.value,
isEnlarged = props.isEnlarged,
hideTimeTitle = props.hideTimeTitle,
isAnimating = props.isAnimating,
resetAnimation = props.resetAnimation,
timeFormat = props.timeFormat,
timezone = props.timezone,
histogram = props.histogram,
plotType = props.plotType,
lineChart = props.lineChart,
step = props.step,
isAnimatable = props.isAnimatable,
speed = props.speed,
animationWindow = props.animationWindow,
updateAnimationSpeed = props.updateAnimationSpeed,
setFilterAnimationWindow = props.setFilterAnimationWindow,
toggleAnimation = props.toggleAnimation,
onChange = props.onChange;
var throttledOnchange = (0, _react.useMemo)(function () {
return (0, _lodash["default"])(onChange, 20);
}, [onChange]);
return /*#__PURE__*/_react["default"].createElement("div", {
className: "time-range-slider"
}, !hideTimeTitle ? /*#__PURE__*/_react["default"].createElement("div", {
className: "time-range-slider__title",
style: {
width: isEnlarged ? "calc(100% - ".concat(animationControlWidth, "px)") : '100%'
}
}, /*#__PURE__*/_react["default"].createElement(TimeRangeSliderTimeTitle, {
timeFormat: timeFormat,
timezone: timezone,
value: value,
isEnlarged: isEnlarged
})) : null, /*#__PURE__*/_react["default"].createElement(StyledSliderContainer, {
className: "time-range-slider__container",
isEnlarged: isEnlarged
}, /*#__PURE__*/_react["default"].createElement("div", {
className: "timeline-container",
style: {
width: isEnlarged ? "calc(100% - ".concat(animationControlWidth, "px)") : '100%'
}
}, /*#__PURE__*/_react["default"].createElement(RangeSlider, {
range: domain,
value0: value[0],
value1: value[1],
histogram: histogram,
lineChart: lineChart,
plotType: plotType,
isEnlarged: isEnlarged,
showInput: false,
step: step,
onChange: throttledOnchange,
xAxis: TimeSliderMarker,
timezone: timezone,
timeFormat: timeFormat
})), isEnlarged ? /*#__PURE__*/_react["default"].createElement(PlaybackControls, {
isAnimatable: isAnimatable,
width: animationControlWidth,
speed: speed,
animationWindow: animationWindow,
updateAnimationSpeed: updateAnimationSpeed,
setFilterAnimationWindow: setFilterAnimationWindow,
pauseAnimation: toggleAnimation,
resetAnimation: resetAnimation,
isAnimating: isAnimating,
startAnimation: toggleAnimation
}) : null));
};
TimeRangeSlider.propTypes = {
onChange: _propTypes["default"].func.isRequired,
domain: _propTypes["default"].arrayOf(_propTypes["default"].number),
value: _propTypes["default"].arrayOf(_propTypes["default"].number).isRequired,
step: _propTypes["default"].number.isRequired,
plotType: _propTypes["default"].string,
histogram: _propTypes["default"].arrayOf(_propTypes["default"].any),
lineChart: _propTypes["default"].object,
toggleAnimation: _propTypes["default"].func.isRequired,
exportAnimation: _propTypes["default"].func,
isAnimatable: _propTypes["default"].bool,
isEnlarged: _propTypes["default"].bool,
speed: _propTypes["default"].number,
timeFormat: _propTypes["default"].string,
timezone: _propTypes["default"].string,
hideTimeTitle: _propTypes["default"].bool
};
return /*#__PURE__*/_react["default"].memo(TimeRangeSlider);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NvbW1vbi90aW1lLXJhbmdlLXNsaWRlci5qcyJdLCJuYW1lcyI6WyJhbmltYXRpb25Db250cm9sV2lkdGgiLCJTdHlsZWRTbGlkZXJDb250YWluZXIiLCJzdHlsZWQiLCJkaXYiLCJwcm9wcyIsImlzRW5sYXJnZWQiLCJUaW1lUmFuZ2VTbGlkZXJGYWN0b3J5IiwiZGVwcyIsIlBsYXliYWNrQ29udHJvbHNGYWN0b3J5IiwiUmFuZ2VTbGlkZXJGYWN0b3J5IiwiVGltZVNsaWRlck1hcmtlckZhY3RvcnkiLCJUaW1lUmFuZ2VTbGlkZXJUaW1lVGl0bGVGYWN0b3J5IiwiUGxheWJhY2tDb250cm9scyIsIlJhbmdlU2xpZGVyIiwiVGltZVNsaWRlck1hcmtlciIsIlRpbWVSYW5nZVNsaWRlclRpbWVUaXRsZSIsIlRpbWVSYW5nZVNsaWRlciIsImRvbWFpbiIsInZhbHVlIiwiaGlkZVRpbWVUaXRsZSIsImlzQW5pbWF0aW5nIiwicmVzZXRBbmltYXRpb24iLCJ0aW1lRm9ybWF0IiwidGltZXpvbmUiLCJoaXN0b2dyYW0iLCJwbG90VHlwZSIsImxpbmVDaGFydCIsInN0ZXAiLCJpc0FuaW1hdGFibGUiLCJzcGVlZCIsImFuaW1hdGlvbldpbmRvdyIsInVwZGF0ZUFuaW1hdGlvblNwZWVkIiwic2V0RmlsdGVyQW5pbWF0aW9uV2luZG93IiwidG9nZ2xlQW5pbWF0aW9uIiwib25DaGFuZ2UiLCJ0aHJvdHRsZWRPbmNoYW5nZSIsIndpZHRoIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwiZnVuYyIsImlzUmVxdWlyZWQiLCJhcnJheU9mIiwibnVtYmVyIiwic3RyaW5nIiwiYW55Iiwib2JqZWN0IiwiZXhwb3J0QW5pbWF0aW9uIiwiYm9vbCIsIlJlYWN0IiwibWVtbyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQUVBLElBQU1B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QkFBVUMsSUFBVixDQUFlQyxVQURDO0FBRTFCdkIsSUFBQUEsTUFBTSxFQUFFcUIsc0JBQVVHLE9BQVYsQ0FBa0JILHNCQUFVSSxNQUE1QixDQUZrQjtBQUcxQnhCLElBQUFBLEtBQUssRUFBRW9CLHNCQUFVRyxPQUFWLENBQWtCSCxzQkFBVUksTUFBNUIsRUFBb0NGLFVBSGpCO0FBSTFCYixJQUFBQSxJQUFJLEVBQUVXLHNCQUFVSSxNQUFWLENBQWlCRixVQUpHO0FBSzFCZixJQUFBQSxRQUFRLEVBQUVhLHNCQUFVSyxNQUxNO0FBTTFCbkIsSUFBQUEsU0FBUyxFQUFFYyxzQkFBVUcsT0FBVixDQUFrQkgsc0JBQVVNLEdBQTVCLENBTmU7QUFPMUJsQixJQUFBQSxTQUFTLEVBQUVZLHNCQUFVTyxNQVBLO0FBUTFCWixJQUFBQSxlQUFlLEVBQUVLLHNCQUFVQyxJQUFWLENBQWVDLFVBUk47QUFTMUJNLElBQUFBLGVBQWUsRUFBRVIsc0JBQVVDLElBVEQ7QUFVMUJYLElBQUFBLFlBQVksRUFBRVUsc0JBQVVTLElBVkU7QUFXMUIxQyxJQUFBQSxVQUFVLEVBQUVpQyxzQkFBVVMsSUFYSTtBQVkxQmxCLElBQUFBLEtBQUssRUFBRVMsc0JBQVVJLE1BWlM7QUFhMUJwQixJQUFBQSxVQUFVLEVBQUVnQixzQkFBVUssTUFiSTtBQWMxQnBCLElBQUFBLFFBQVEsRUFBRWUsc0JBQVVLLE1BZE07QUFlMUJ4QixJQUFBQSxhQUFhLEVBQUVtQixzQkFBVVM7QUFmQyxHQUE1QjtBQWtCQSxzQkFBT0Msa0JBQU1DLElBQU4sQ0FBV2pDLGVBQVgsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIxIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7dXNlTWVtb30gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB0aHJvdHRsZSBmcm9tICdsb2Rhc2gudGhyb3R0bGUnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCBSYW5nZVNsaWRlckZhY3RvcnkgZnJvbSAnY29tcG9uZW50cy9jb21tb24vcmFuZ2Utc2xpZGVyJztcbmltcG9ydCBUaW1lU2xpZGVyTWFya2VyRmFjdG9yeSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi90aW1lLXNsaWRlci1tYXJrZXInO1xuaW1wb3J0IFBsYXliYWNrQ29udHJvbHNGYWN0b3J5IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL2FuaW1hdGlvbi1jb250cm9sL3BsYXliYWNrLWNvbnRyb2xzJztcbmltcG9ydCBUaW1lUmFuZ2VTbGlkZXJUaW1lVGl0bGVGYWN0b3J5IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3RpbWUtcmFuZ2Utc2xpZGVyLXRpbWUtdGl0bGUnO1xuXG5jb25zdCBhbmltYXRpb25Db250cm9sV2lkdGggPSAxNzY7XG5cbmNvbnN0IFN0eWxlZFNsaWRlckNvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBwYWRkaW5nLWxlZnQ6ICR7cHJvcHMgPT4gKHByb3BzLmlzRW5sYXJnZWQgPyAyNCA6IDApfXB4O1xuXG4gIC50aW1lbGluZS1jb250YWluZXIgLmtnLXNsaWRlciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC5wbGF5YmFjay1jb250cm9scyB7XG4gICAgbWFyZ2luLWxlZnQ6IDIycHg7XG4gIH1cbmA7XG5cblRpbWVSYW5nZVNsaWRlckZhY3RvcnkuZGVwcyA9IFtcbiAgUGxheWJhY2tDb250cm9sc0ZhY3RvcnksXG4gIFJhbmdlU2xpZGVyRmFjdG9yeSxcbiAgVGltZVNsaWRlck1hcmtlckZhY3RvcnksXG4gIFRpbWVSYW5nZVNsaWRlclRpbWVUaXRsZUZhY3Rvcnlcbl07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFRpbWVSYW5nZVNsaWRlckZhY3RvcnkoXG4gIFBsYXliYWNrQ29udHJvbHMsXG4gIFJhbmdlU2xpZGVyLFxuICBUaW1lU2xpZGVyTWFya2VyLFxuICBUaW1lUmFuZ2VTbGlkZXJUaW1lVGl0bGVcbikge1xuICBjb25zdCBUaW1lUmFuZ2VTbGlkZXIgPSBwcm9wcyA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgZG9tYWluLFxuICAgICAgdmFsdWUsXG4gICAgICBpc0VubGFyZ2VkLFxuICAgICAgaGlkZVRpbWVUaXRsZSxcbiAgICAgIGlzQW5pbWF0aW5nLFxuICAgICAgcmVzZXRBbmltYXRpb24sXG4gICAgICB0aW1lRm9ybWF0LFxuICAgICAgdGltZXpvbmUsXG4gICAgICBoaXN0b2dyYW0sXG4gICAgICBwbG90VHlwZSxcbiAgICAgIGxpbmVDaGFydCxcbiAgICAgIHN0ZXAsXG4gICAgICBpc0FuaW1hdGFibGUsXG4gICAgICBzcGVlZCxcbiAgICAgIGFuaW1hdGlvbldpbmRvdyxcbiAgICAgIHVwZGF0ZUFuaW1hdGlvblNwZWVkLFxuICAgICAgc2V0RmlsdGVyQW5pbWF0aW9uV2luZG93LFxuICAgICAgdG9nZ2xlQW5pbWF0aW9uLFxuICAgICAgb25DaGFuZ2VcbiAgICB9ID0gcHJvcHM7XG4gICAgY29uc3QgdGhyb3R0bGVkT25jaGFuZ2UgPSB1c2VNZW1vKCgpID0+IHRocm90dGxlKG9uQ2hhbmdlLCAyMCksIFtvbkNoYW5nZV0pO1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInRpbWUtcmFuZ2Utc2xpZGVyXCI+XG4gICAgICAgIHshaGlkZVRpbWVUaXRsZSA/IChcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJ0aW1lLXJhbmdlLXNsaWRlcl9fdGl0bGVcIlxuICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgd2lkdGg6IGlzRW5sYXJnZWQgPyBgY2FsYygxMDAlIC0gJHthbmltYXRpb25Db250cm9sV2lkdGh9cHgpYCA6ICcxMDAlJ1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8VGltZVJhbmdlU2xpZGVyVGltZVRpdGxlXG4gICAgICAgICAgICAgIHRpbWVGb3JtYXQ9e3RpbWVGb3JtYXR9XG4gICAgICAgICAgICAgIHRpbWV6b25lPXt0aW1lem9uZX1cbiAgICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgICBpc0VubGFyZ2VkPXtpc0VubGFyZ2VkfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDxTdHlsZWRTbGlkZXJDb250YWluZXIgY2xhc3NOYW1lPVwidGltZS1yYW5nZS1zbGlkZXJfX2NvbnRhaW5lclwiIGlzRW5sYXJnZWQ9e2lzRW5sYXJnZWR9PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInRpbWVsaW5lLWNvbnRhaW5lclwiXG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICB3aWR0aDogaXNFbmxhcmdlZCA/IGBjYWxjKDEwMCUgLSAke2FuaW1hdGlvbkNvbnRyb2xXaWR0aH1weClgIDogJzEwMCUnXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxSYW5nZVNsaWRlclxuICAgICAgICAgICAgICByYW5nZT17ZG9tYWlufVxuICAgICAgICAgICAgICB2YWx1ZTA9e3ZhbHVlWzBdfVxuICAgICAgICAgICAgICB2YWx1ZTE9e3ZhbHVlWzFdfVxuICAgICAgICAgICAgICBoaXN0b2dyYW09e2hpc3RvZ3JhbX1cbiAgICAgICAgICAgICAgbGluZUNoYXJ0PXtsaW5lQ2hhcnR9XG4gICAgICAgICAgICAgIHBsb3RUeXBlPXtwbG90VHlwZX1cbiAgICAgICAgICAgICAgaXNFbmxhcmdlZD17aXNFbmxhcmdlZH1cbiAgICAgICAgICAgICAgc2hvd0lucHV0PXtmYWxzZX1cbiAgICAgICAgICAgICAgc3RlcD17c3RlcH1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e3Rocm90dGxlZE9uY2hhbmdlfVxuICAgICAgICAgICAgICB4QXhpcz17VGltZVNsaWRlck1hcmtlcn1cbiAgICAgICAgICAgICAgdGltZXpvbmU9e3RpbWV6b25lfVxuICAgICAgICAgICAgICB0aW1lRm9ybWF0PXt0aW1lRm9ybWF0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB7aXNFbmxhcmdlZCA/IChcbiAgICAgICAgICAgIDxQbGF5YmFja0NvbnRyb2xzXG4gICAgICAgICAgICAgIGlzQW5pbWF0YWJsZT17aXNBbmltYXRhYmxlfVxuICAgICAgICAgICAgICB3aWR0aD17YW5pbWF0aW9uQ29udHJvbFdpZHRofVxuICAgICAgICAgICAgICBzcGVlZD17c3BlZWR9XG4gICAgICAgICAgICAgIGFuaW1hdGlvbldpbmRvdz17YW5pbWF0aW9uV2luZG93fVxuICAgICAgICAgICAgICB1cGRhdGVBbmltYXRpb25TcGVlZD17dXBkYXRlQW5pbWF0aW9uU3BlZWR9XG4gICAgICAgICAgICAgIHNldEZpbHRlckFuaW1hdGlvbldpbmRvdz17c2V0RmlsdGVyQW5pbWF0aW9uV2luZG93fVxuICAgICAgICAgICAgICBwYXVzZUFuaW1hdGlvbj17dG9nZ2xlQW5pbWF0aW9ufVxuICAgICAgICAgICAgICByZXNldEFuaW1hdGlvbj17cmVzZXRBbmltYXRpb259XG4gICAgICAgICAgICAgIGlzQW5pbWF0aW5nPXtpc0FuaW1hdGluZ31cbiAgICAgICAgICAgICAgc3RhcnRBbmltYXRpb249e3RvZ2dsZUFuaW1hdGlvbn1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvU3R5bGVkU2xpZGVyQ29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfTtcblxuICBUaW1lUmFuZ2VTbGlkZXIucHJvcFR5cGVzID0ge1xuICAgIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIGRvbWFpbjogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm51bWJlciksXG4gICAgdmFsdWU6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5udW1iZXIpLmlzUmVxdWlyZWQsXG4gICAgc3RlcDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICAgIHBsb3RUeXBlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGhpc3RvZ3JhbTogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSksXG4gICAgbGluZUNoYXJ0OiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHRvZ2dsZUFuaW1hdGlvbjogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBleHBvcnRBbmltYXRpb246IFByb3BUeXBlcy5mdW5jLFxuICAgIGlzQW5pbWF0YWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgaXNFbmxhcmdlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgc3BlZWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgdGltZUZvcm1hdDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB0aW1lem9uZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBoaWRlVGltZVRpdGxlOiBQcm9wVHlwZXMuYm9vbFxuICB9O1xuXG4gIHJldHVybiBSZWFjdC5tZW1vKFRpbWVSYW5nZVNsaWRlcik7XG59XG4iXX0=