UNPKG

kepler.gl

Version:

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

186 lines (158 loc) 19.2 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 _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); 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 _styledComponents = _interopRequireDefault(require("styled-components")); var _imagePreview = _interopRequireDefault(require("../common/image-preview")); var _defaultSettings = require("../../constants/default-settings"); var _styledComponents2 = require("../common/styled-components"); var _switch = _interopRequireDefault(require("../common/switch")); var _reactIntl = require("react-intl"); function _templateObject() { var data = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n justify-content: space-around;\n width: 250px;\n\n .image-option-section {\n .image-option-section-title {\n font-weight: 500;\n font-size: 14px;\n }\n }\n\n .button-list {\n display: flex;\n flex-direction: row;\n padding: 8px 0px;\n }\n\n input {\n margin-right: 8px;\n }\n"]); _templateObject = function _templateObject() { return data; }; return data; } var ImageOptionList = _styledComponents["default"].div(_templateObject()); var ExportImageModalFactory = function ExportImageModalFactory() { var ExportImageModal = /*#__PURE__*/ function (_Component) { (0, _inherits2["default"])(ExportImageModal, _Component); function ExportImageModal() { (0, _classCallCheck2["default"])(this, ExportImageModal); return (0, _possibleConstructorReturn2["default"])(this, (0, _getPrototypeOf2["default"])(ExportImageModal).apply(this, arguments)); } (0, _createClass2["default"])(ExportImageModal, [{ key: "componentDidMount", value: function componentDidMount() { this._updateMapDim(); } }, { key: "componentDidUpdate", value: function componentDidUpdate() { this._updateMapDim(); } }, { key: "_updateMapDim", value: function _updateMapDim() { var _this$props = this.props, exportImage = _this$props.exportImage, mapH = _this$props.mapH, mapW = _this$props.mapW; if (mapH !== exportImage.mapH || mapW !== exportImage.mapW) { this.props.onUpdateSetting({ mapH: mapH, mapW: mapW, ratio: _defaultSettings.EXPORT_IMG_RATIOS.CUSTOM, legend: false }); } } }, { key: "render", value: function render() { var _this$props2 = this.props, exportImage = _this$props2.exportImage, onUpdateSetting = _this$props2.onUpdateSetting, intl = _this$props2.intl; var legend = exportImage.legend, ratio = exportImage.ratio, resolution = exportImage.resolution; return _react["default"].createElement(_styledComponents2.StyledModalContent, { className: "export-image-modal" }, _react["default"].createElement(ImageOptionList, null, _react["default"].createElement("div", { className: "image-option-section" }, _react["default"].createElement("div", { className: "image-option-section-title" }, _react["default"].createElement(_reactIntl.FormattedMessage, { id: 'modal.exportImage.ratioTitle' })), _react["default"].createElement(_reactIntl.FormattedMessage, { id: 'modal.exportImage.ratioDescription' }), _react["default"].createElement("div", { className: "button-list" }, _defaultSettings.EXPORT_IMG_RATIO_OPTIONS.filter(function (op) { return !op.hidden; }).map(function (op) { return _react["default"].createElement(_styledComponents2.SelectionButton, { key: op.id, selected: ratio === op.id, onClick: function onClick() { return onUpdateSetting({ ratio: op.id }); } }, _react["default"].createElement(_reactIntl.FormattedMessage, { id: op.label })); }))), _react["default"].createElement("div", { className: "image-option-section" }, _react["default"].createElement("div", { className: "image-option-section-title" }, _react["default"].createElement(_reactIntl.FormattedMessage, { id: 'modal.exportImage.resolutionTitle' })), _react["default"].createElement(_reactIntl.FormattedMessage, { id: 'modal.exportImage.resolutionDescription' }), _react["default"].createElement("div", { className: "button-list" }, _defaultSettings.EXPORT_IMG_RESOLUTION_OPTIONS.map(function (op) { return _react["default"].createElement(_styledComponents2.SelectionButton, { key: op.id, selected: resolution === op.id, onClick: function onClick() { return op.available && onUpdateSetting({ resolution: op.id }); } }, op.label); }))), _react["default"].createElement("div", { className: "image-option-section" }, _react["default"].createElement("div", { className: "image-option-section-title" }, _react["default"].createElement(_reactIntl.FormattedMessage, { id: 'modal.exportImage.mapLegendTitle' })), _react["default"].createElement(_switch["default"], { type: "checkbox", id: "add-map-legend", checked: legend, label: intl.formatMessage({ id: 'modal.exportImage.mapLegendAdd' }), onChange: function onChange() { return onUpdateSetting({ legend: !legend }); } }))), _react["default"].createElement(_imagePreview["default"], { exportImage: exportImage })); } }]); return ExportImageModal; }(_react.Component); (0, _defineProperty2["default"])(ExportImageModal, "propTypes", { mapW: _propTypes["default"].number.isRequired, mapH: _propTypes["default"].number.isRequired, exportImage: _propTypes["default"].object.isRequired, // callbacks onUpdateSetting: _propTypes["default"].func.isRequired }); return (0, _reactIntl.injectIntl)(ExportImageModal); }; var _default = ExportImageModalFactory; exports["default"] = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vZGFscy9leHBvcnQtaW1hZ2UtbW9kYWwuanMiXSwibmFtZXMiOlsiSW1hZ2VPcHRpb25MaXN0Iiwic3R5bGVkIiwiZGl2IiwiRXhwb3J0SW1hZ2VNb2RhbEZhY3RvcnkiLCJFeHBvcnRJbWFnZU1vZGFsIiwiX3VwZGF0ZU1hcERpbSIsInByb3BzIiwiZXhwb3J0SW1hZ2UiLCJtYXBIIiwibWFwVyIsIm9uVXBkYXRlU2V0dGluZyIsInJhdGlvIiwiRVhQT1JUX0lNR19SQVRJT1MiLCJDVVNUT00iLCJsZWdlbmQiLCJpbnRsIiwicmVzb2x1dGlvbiIsIkVYUE9SVF9JTUdfUkFUSU9fT1BUSU9OUyIsImZpbHRlciIsIm9wIiwiaGlkZGVuIiwibWFwIiwiaWQiLCJsYWJlbCIsIkVYUE9SVF9JTUdfUkVTT0xVVElPTl9PUFRJT05TIiwiYXZhaWxhYmxlIiwiZm9ybWF0TWVzc2FnZSIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsIm51bWJlciIsImlzUmVxdWlyZWQiLCJvYmplY3QiLCJmdW5jIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQU1BOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxlQUFlLEdBQUdDLDZCQUFPQyxHQUFWLG1CQUFyQjs7QUF3QkEsSUFBTUMsdUJBQXVCLEdBQUcsU0FBMUJBLHVCQUEwQixHQUFNO0FBQUEsTUFDOUJDLGdCQUQ4QjtBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBQUEsMENBVWQ7QUFDbEIsYUFBS0MsYUFBTDtBQUNEO0FBWmlDO0FBQUE7QUFBQSwyQ0FjYjtBQUNuQixhQUFLQSxhQUFMO0FBQ0Q7QUFoQmlDO0FBQUE7QUFBQSxzQ0FrQmxCO0FBQUEsMEJBQ29CLEtBQUtDLEtBRHpCO0FBQUEsWUFDUEMsV0FETyxlQUNQQSxXQURPO0FBQUEs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SyxVQUFBLFNBQVMsRUFBQztBQUFmLFdBQ0UsZ0NBQUMsMkJBQUQ7QUFBa0IsVUFBQSxFQUFFLEVBQUU7QUFBdEIsVUFERixDQURGLEVBSUUsZ0NBQUMsa0JBQUQ7QUFDRSxVQUFBLElBQUksRUFBQyxVQURQO0FBRUUsVUFBQSxFQUFFLEVBQUMsZ0JBRkw7QUFHRSxVQUFBLE9BQU8sRUFBRVQsTUFIWDtBQUlFLFVBQUEsS0FBSyxFQUFFQyxJQUFJLENBQUNXLGFBQUwsQ0FBbUI7QUFBQ0osWUFBQUEsRUFBRSxFQUFFO0FBQUwsV0FBbkIsQ0FKVDtBQUtFLFVBQUEsUUFBUSxFQUFFO0FBQUEsbUJBQU1aLGVBQWUsQ0FBQztBQUFDSSxjQUFBQSxNQUFNLEVBQUUsQ0FBQ0E7QUFBVixhQUFELENBQXJCO0FBQUE7QUFMWixVQUpGLENBbkNGLENBREYsRUFpREUsZ0NBQUMsd0JBQUQ7QUFBYyxVQUFBLFdBQVcsRUFBRVA7QUFBM0IsVUFqREYsQ0FERjtBQXFERDtBQXZGaUM7QUFBQTtBQUFBLElBQ0xvQixnQkFESzs7QUFBQSxtQ0FDOUJ2QixnQkFEOEIsZUFFZjtBQUNqQkssSUFBQUEsSUFBSSxFQUFFbUIsc0JBQVVDLE1BQVYsQ0FBaUJDLFVBRE47QUFFakJ0QixJQUFBQSxJQUFJLEVBQUVvQixzQkFBVUMsTUFBVixDQUFpQkMsVUFGTjtBQUdqQnZCLElBQUFBLFdBQVcsRUFBRXFCLHNCQUFVRyxNQUFWLENBQWlCRCxVQUhiO0FBSWpCO0FBQ0FwQixJQUFBQSxlQUFlLEVBQUVrQixzQkFBVUksSUFBVixDQUFlRjtBQUxmLEdBRmU7QUEwRnBDLFNBQU8sMkJBQVcxQixnQkFBWCxDQUFQO0FBQ0QsQ0EzRkQ7O2VBNkZlRCx1QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMCBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IEltYWdlUHJldmlldyBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9pbWFnZS1wcmV2aWV3JztcblxuaW1wb3J0IHtcbiAgRVhQT1JUX0lNR19SQVRJT19PUFRJT05TLFxuICBFWFBPUlRfSU1HX1JFU09MVVRJT05fT1BUSU9OUyxcbiAgRVhQT1JUX0lNR19SQVRJT1Ncbn0gZnJvbSAnY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MnO1xuXG5pbXBvcnQge1N0eWxlZE1vZGFsQ29udGVudCwgU2VsZWN0aW9uQnV0dG9ufSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgU3dpdGNoIGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3N3aXRjaCc7XG5pbXBvcnQge0Zvcm1hdHRlZE1lc3NhZ2UsIGluamVjdEludGx9IGZyb20gJ3JlYWN0LWludGwnO1xuXG5jb25zdCBJbWFnZU9wdGlvbkxpc3QgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbiAgd2lkdGg6IDI1MHB4O1xuXG4gIC5pbWFnZS1vcHRpb24tc2VjdGlvbiB7XG4gICAgLmltYWdlLW9wdGlvbi1zZWN0aW9uLXRpdGxlIHtcbiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgfVxuICB9XG5cbiAgLmJ1dHRvbi1saXN0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgcGFkZGluZzogOHB4IDBweDtcbiAgfVxuXG4gIGlucHV0IHtcbiAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgfVxuYDtcblxuY29uc3QgRXhwb3J0SW1hZ2VNb2RhbEZhY3RvcnkgPSAoKSA9PiB7XG4gIGNsYXNzIEV4cG9ydEltYWdlTW9kYWwgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgICBtYXBXOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gICAgICBtYXBIOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gICAgICBleHBvcnRJbWFnZTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgLy8gY2FsbGJhY2tzXG4gICAgICBvblVwZGF0ZVNldHRpbmc6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbiAgICB9O1xuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICB0aGlzLl91cGRhdGVNYXBEaW0oKTtcbiAgICB9XG5cbiAgICBjb21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgICB0aGlzLl91cGRhdGVNYXBEaW0oKTtcbiAgICB9XG5cbiAgICBfdXBkYXRlTWFwRGltKCkge1xuICAgICAgY29uc3Qge2V4cG9ydEltYWdlLCBtYXBILCBtYXBXfSA9IHRoaXMucHJvcHM7XG4gICAgICBpZiAobWFwSCAhPT0gZXhwb3J0SW1hZ2UubWFwSCB8fCBtYXBXICE9PSBleHBvcnRJbWFnZS5tYXBXKSB7XG4gICAgICAgIHRoaXMucHJvcHMub25VcGRhdGVTZXR0aW5nKHtcbiAgICAgICAgICBtYXBILFxuICAgICAgICAgIG1hcFcsXG4gICAgICAgICAgcmF0aW86IEVYUE9SVF9JTUdfUkFUSU9TLkNVU1RPTSxcbiAgICAgICAgICBsZWdlbmQ6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHtleHBvcnRJbWFnZSwgb25VcGRhdGVTZXR0aW5nLCBpbnRsfSA9IHRoaXMucHJvcHM7XG4gICAgICBjb25zdCB7bGVnZW5kLCByYXRpbywgcmVzb2x1dGlvbn0gPSBleHBvcnRJbWFnZTtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZE1vZGFsQ29udGVudCBjbGFzc05hbWU9XCJleHBvcnQtaW1hZ2UtbW9kYWxcIj5cbiAgICAgICAgICA8SW1hZ2VPcHRpb25MaXN0PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJpbWFnZS1vcHRpb24tc2VjdGlvblwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImltYWdlLW9wdGlvbi1zZWN0aW9uLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9eydtb2RhbC5leHBvcnRJbWFnZS5yYXRpb1RpdGxlJ30gLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXsnbW9kYWwuZXhwb3J0SW1hZ2UucmF0aW9EZXNjcmlwdGlvbid9IC8+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYnV0dG9uLWxpc3RcIj5cbiAgICAgICAgICAgICAgICB7RVhQT1JUX0lNR19SQVRJT19PUFRJT05TLmZpbHRlcihvcCA9PiAhb3AuaGlkZGVuKS5tYXAob3AgPT4gKFxuICAgICAgICAgICAgICAgICAgPFNlbGVjdGlvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBrZXk9e29wLmlkfVxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17cmF0aW8gPT09IG9wLmlkfVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblVwZGF0ZVNldHRpbmcoe3JhdGlvOiBvcC5pZH0pfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17b3AubGFiZWx9IC8+XG4gICAgICAgICAgICAgICAgICA8L1NlbGVjdGlvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW1hZ2Utb3B0aW9uLXNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJpbWFnZS1vcHRpb24tc2VjdGlvbi10aXRsZVwiPlxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXsnbW9kYWwuZXhwb3J0SW1hZ2UucmVzb2x1dGlvblRpdGxlJ30gLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXsnbW9kYWwuZXhwb3J0SW1hZ2UucmVzb2x1dGlvbkRlc2NyaXB0aW9uJ30gLz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJidXR0b24tbGlzdFwiPlxuICAgICAgICAgICAgICAgIHtFWFBPUlRfSU1HX1JFU09MVVRJT05fT1BUSU9OUy5tYXAob3AgPT4gKFxuICAgICAgICAgICAgICAgICAgPFNlbGVjdGlvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBrZXk9e29wLmlkfVxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17cmVzb2x1dGlvbiA9PT0gb3AuaWR9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9wLmF2YWlsYWJsZSAmJiBvblVwZGF0ZVNldHRpbmcoe3Jlc29sdXRpb246IG9wLmlkfSl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtvcC5sYWJlbH1cbiAgICAgICAgICAgICAgICAgIDwvU2VsZWN0aW9uQnV0dG9uPlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJpbWFnZS1vcHRpb24tc2VjdGlvblwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImltYWdlLW9wdGlvbi1zZWN0aW9uLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9eydtb2RhbC5leHBvcnRJbWFnZS5tYXBMZWdlbmRUaXRsZSd9IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8U3dpdGNoXG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBpZD1cImFkZC1tYXAtbGVnZW5kXCJcbiAgICAgICAgICAgICAgICBjaGVja2VkPXtsZWdlbmR9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2ludGwuZm9ybWF0TWVzc2FnZSh7aWQ6ICdtb2RhbC5leHBvcnRJbWFnZS5tYXBMZWdlbmRBZGQnfSl9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IG9uVXBkYXRlU2V0dGluZyh7bGVnZW5kOiAhbGVnZW5kfSl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L0ltYWdlT3B0aW9uTGlzdD5cbiAgICAgICAgICA8SW1hZ2VQcmV2aWV3IGV4cG9ydEltYWdlPXtleHBvcnRJbWFnZX0gLz5cbiAgICAgICAgPC9TdHlsZWRNb2RhbENvbnRlbnQ+XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpbmplY3RJbnRsKEV4cG9ydEltYWdlTW9kYWwpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRXhwb3J0SW1hZ2VNb2RhbEZhY3Rvcnk7XG4iXX0=