UNPKG

kepler.gl.geoiq

Version:

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

193 lines (151 loc) 26.9 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.ModalTitle = exports.ModalFooter = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); 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 _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); 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 _reactModal = _interopRequireDefault(require("react-modal")); var _icons = require("./icons"); var _styledComponents2 = require("./styled-components"); var _mediaBreakpoints = require("../../styles/media-breakpoints"); var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13; 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; } } function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } var ModalContentWrapper = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n overflow-y: scroll;\n max-width: 70vw;\n max-height: 85vh;\n padding: 24px 72px 40px;\n position: relative;\n top: 92px;\n left: 0;\n right: 0;\n margin: 0 auto;\n background-color: #ffffff;\n border-radius: 4px;\n transition: ", ";\n box-sizing: border-box;\n font-size: 12px;\n color: ", ";\n\n ", "\n\n ", "\n\n ", ";\n"])), function (props) { return props.theme.transition; }, function (props) { return props.theme.labelColorLT; }, _mediaBreakpoints.media.portable(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n padding: 12px 36px 24px;\n max-width: 80vw;\n "]))), _mediaBreakpoints.media.palm(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n max-width: 100vw;\n "]))), function (props) { return props.cssStyle || ''; }); var ModalContent = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n z-index: ", ";\n"])), function (props) { return props.theme.modalContentZ; }); var ModalTitle = exports.ModalTitle = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n font-size: ", ";\n color: ", ";\n margin-bottom: 10px;\n position: relative;\n z-index: ", ";\n"])), function (props) { return props.theme.modalTitleFontSize; }, function (props) { return props.theme.modalTitleColor; }, function (props) { return props.theme.modalTitleZ; }); var StyledModalFooter = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n width: 100%;\n left: 0;\n bottom: 0;\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n padding-top: 24px;\n ", ";\n\n ", ";\n z-index: ", ";\n"])), _mediaBreakpoints.media.portable(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n padding-top: 24px;\n "]))), _mediaBreakpoints.media.palm(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n padding-top: 16px;\n "]))), function (props) { return props.theme.modalFooterZ; }); var CloseButton = _styledComponents["default"].div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n display: flex;\n justify-content: flex-end;\n z-index: ", ";\n position: absolute;\n top: 24px;\n right: 24px;\n\n :hover {\n cursor: pointer;\n }\n"])), function (props) { return props.theme.titleColorLT; }, function (props) { return props.theme.modalButtonZ; }); var FooterActionWrapper = _styledComponents["default"].div(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: flex-end;\n"]))); var defaultCancelButton = { link: true, large: true, children: 'Cancel' }; var defaultConfirmButton = { large: true, width: '160px', children: 'Confirm' }; var ModalFooter = exports.ModalFooter = function ModalFooter(_ref) { var cancel = _ref.cancel, confirm = _ref.confirm, cancelButton = _ref.cancelButton, confirmButton = _ref.confirmButton; var cancelButtonProps = _objectSpread(_objectSpread({}, defaultCancelButton), cancelButton); var confirmButtonProps = _objectSpread(_objectSpread({}, defaultConfirmButton), confirmButton); return (/*#__PURE__*/_react["default"].createElement(StyledModalFooter, { className: "modal--footer" }, /*#__PURE__*/_react["default"].createElement(FooterActionWrapper, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.Button, (0, _extends2["default"])({}, cancelButtonProps, { onClick: cancel }), cancelButtonProps.children), /*#__PURE__*/_react["default"].createElement(_styledComponents2.Button, (0, _extends2["default"])({}, confirmButtonProps, { onClick: confirm }), confirmButtonProps.children))) ); }; var ModalDialog = /*#__PURE__*/function (_Component) { (0, _inherits2["default"])(ModalDialog, _Component); var _super = _createSuper(ModalDialog); function ModalDialog() { (0, _classCallCheck2["default"])(this, ModalDialog); return _super.apply(this, arguments); } (0, _createClass2["default"])(ModalDialog, [{ key: "render", value: function render() { var props = this.props; return (/*#__PURE__*/_react["default"].createElement(_reactModal["default"], (0, _extends2["default"])({ className: this.props.className }, props, { ariaHideApp: false, style: { overlay: _objectSpread({ backgroundColor: props.theme && props.theme.modalOverlayBgd || 'rgba(0, 0, 0, 0.5)', zIndex: props.theme && props.theme.modalOverLayZ || 1000 }, props.style) } }), /*#__PURE__*/_react["default"].createElement(ModalContentWrapper, { className: "modal--wrapper", cssStyle: props.cssStyle, footer: props.footer }, props.close && /*#__PURE__*/_react["default"].createElement(CloseButton, { className: "modal--close", onClick: props.close }, /*#__PURE__*/_react["default"].createElement(_icons.Delete, { height: "14px" })), /*#__PURE__*/_react["default"].createElement("div", null, props.title && /*#__PURE__*/_react["default"].createElement(ModalTitle, { className: "modal--title" }, props.title), /*#__PURE__*/_react["default"].createElement(ModalContent, { className: "modal--body" }, props.children), props.footer && /*#__PURE__*/_react["default"].createElement(ModalFooter, { cancel: props.close, confirm: props.onConfirm, cancelButton: props.cancelButton, confirmButton: props.confirmButton })))) ); } }]); return ModalDialog; }(_react.Component); (0, _defineProperty2["default"])(ModalDialog, "propTypes", { footer: _propTypes["default"].bool, close: _propTypes["default"].func.isRequired, onConfirm: _propTypes["default"].func, onCancel: _propTypes["default"].func, confirmButton: _propTypes["default"].object, confirmButtonLabel: _propTypes["default"].string, cancelButton: _propTypes["default"].object, cancelButtonLabel: _propTypes["default"].string, cssStyle: _propTypes["default"].arrayOf(_propTypes["default"].any) }); (0, _defineProperty2["default"])(ModalDialog, "defaultProps", { footer: false, close: function close() {}, onConfirm: function onConfirm() {}, onCancel: function onCancel() {}, cancelButton: defaultCancelButton, confirmButton: defaultConfirmButton, cssStyle: [] }); var StyledModal = (0, _styledComponents["default"])(ModalDialog)(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n top: 0;\n left: 0;\n transition: ", ";\n padding-left: 40px;\n padding-right: 40px;\n\n ", ";\n\n ", ";\n\n :focus {\n outline: 0\n }\n"])), function (props) { return props.theme.transition; }, _mediaBreakpoints.media.portable(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["\n padding-left: 24px;\n padding-right: 24px;\n "]))), _mediaBreakpoints.media.palm(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteral2["default"])(["\n padding-left: 0;\n padding-right: 0;\n "])))); var _default = exports["default"] = StyledModal; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NvbW1vbi9tb2RhbC5qcyJdLCJuYW1lcyI6WyJNb2RhbENvbnRlbnRXcmFwcGVyIiwic3R5bGVkIiwiZGl2IiwicHJvcHMiLCJ0aGVtZSIsInRyYW5zaXRpb24iLCJsYWJlbENvbG9yTFQiLCJtZWRpYSIsInBvcnRhYmxlIiwicGFsbSIsImNzc1N0eWxlIiwiTW9kYWxDb250ZW50IiwibW9kYWxDb250ZW50WiIsIk1vZGFsVGl0bGUiLCJtb2RhbFRpdGxlRm9udFNpemUiLCJtb2RhbFRpdGxlQ29sb3IiLCJtb2RhbFRpdGxlWiIsIlN0eWxlZE1vZGFsRm9vdGVyIiwibW9kYWxGb290ZXJaIiwiQ2xvc2VCdXR0b24iLCJ0aXRsZUNvbG9yTFQiLCJtb2RhbEJ1dHRvbloiLCJGb290ZXJBY3Rpb25XcmFwcGVyIiwiZGVmYXVsdENhbmNlbEJ1dHRvbiIsImxpbmsiLCJsYXJnZSIsImNoaWxkcmVuIiwiZGVmYXVsdENvbmZpcm1CdXR0b24iLCJ3aWR0aCIsIk1vZGFsRm9vdGVyIiwiY2FuY2VsIiwiY29uZmlybSIsImNhbmNlbEJ1dHRvbiIsImNvbmZpcm1CdXR0b24iLCJjYW5jZWxCdXR0b25Qcm9wcyIsImNvbmZpcm1CdXR0b25Qcm9wcyIsIk1vZGFsRGlhbG9nIiwiY2xhc3NOYW1lIiwib3ZlcmxheSIsImJhY2tncm91bmRDb2xvciIsIm1vZGFsT3ZlcmxheUJnZCIsInpJbmRleCIsIm1vZGFsT3ZlckxheVoiLCJzdHlsZSIsImZvb3RlciIsImNsb3NlIiwidGl0bGUiLCJvbkNvbmZpcm0iLCJDb21wb25lbnQiLCJQcm9wVHlwZXMiLCJib29sIiwiZnVuYyIsImlzUmVxdWlyZWQiLCJvbkNhbmNlbCIsIm9iamVjdCIsImNvbmZpcm1CdXR0b25MYWJlbCIsInN0cmluZyIsImNhbmNlbEJ1dHRvbkxhYmVsIiwiYXJyYXlPZiIsImFueSIsIlN0eWxlZE1vZGFsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7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LFdBQVcsR0FBRyxrQ0FBT3hCLFdBQVAsQ0FBSCxpUEFHRCxVQUFBakMsS0FBSztBQUFBLFNBQUlBLEtBQUssQ0FBQ0MsS0FBTixDQUFZQyxVQUFoQjtBQUFBLENBSEosRUFPYkUsd0JBQU1DLFFBUE8sbUpBWWJELHdCQUFNRSxJQVpPLDRJQUFqQjs7b0NBc0JlbUQsVyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMyBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcblxuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgTW9kYWwgZnJvbSAncmVhY3QtbW9kYWwnO1xuaW1wb3J0IHtEZWxldGV9IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL2ljb25zJztcbmltcG9ydCB7QnV0dG9ufSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge21lZGlhfSBmcm9tICdzdHlsZXMvbWVkaWEtYnJlYWtwb2ludHMnO1xuXG5jb25zdCBNb2RhbENvbnRlbnRXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgb3ZlcmZsb3cteTogc2Nyb2xsO1xuICBtYXgtd2lkdGg6IDcwdnc7XG4gIG1heC1oZWlnaHQ6IDg1dmg7XG4gIHBhZGRpbmc6IDI0cHggNzJweCA0MHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHRvcDogOTJweDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIHRyYW5zaXRpb246ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudHJhbnNpdGlvbn07XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGFiZWxDb2xvckxUfTtcblxuICAke21lZGlhLnBvcnRhYmxlYFxuICAgIHBhZGRpbmc6IDEycHggMzZweCAyNHB4O1xuICAgIG1heC13aWR0aDogODB2dztcbiAgYH1cblxuICAke21lZGlhLnBhbG1gXG4gICAgbWF4LXdpZHRoOiAxMDB2dztcbiAgYH1cblxuICAke3Byb3BzID0+IHByb3BzLmNzc1N0eWxlIHx8ICcnfTtcbmA7XG5cbmNvbnN0IE1vZGFsQ29udGVudCA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5tb2RhbENvbnRlbnRafTtcbmA7XG5cbmV4cG9ydCBjb25zdCBNb2RhbFRpdGxlID0gc3R5bGVkLmRpdmBcbiAgZm9udC1zaXplOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLm1vZGFsVGl0bGVGb250U2l6ZX07XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLm1vZGFsVGl0bGVDb2xvcn07XG4gIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5tb2RhbFRpdGxlWn07XG5gO1xuXG5jb25zdCBTdHlsZWRNb2RhbEZvb3RlciA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAxMDAlO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIHBhZGRpbmctdG9wOiAyNHB4O1xuICAke21lZGlhLnBvcnRhYmxlYFxuICAgIHBhZGRpbmctdG9wOiAyNHB4O1xuICBgfTtcblxuICAke21lZGlhLnBhbG1gXG4gICAgcGFkZGluZy10b3A6IDE2cHg7XG4gIGB9O1xuICB6LWluZGV4OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLm1vZGFsRm9vdGVyWn07XG5gO1xuXG5jb25zdCBDbG9zZUJ1dHRvbiA9IHN0eWxlZC5kaXZgXG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRpdGxlQ29sb3JMVH07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIHotaW5kZXg6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubW9kYWxCdXR0b25afTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDI0cHg7XG4gIHJpZ2h0OiAyNHB4O1xuXG4gIDpob3ZlciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG5gO1xuXG5jb25zdCBGb290ZXJBY3Rpb25XcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbmA7XG5cbmNvbnN0IGRlZmF1bHRDYW5jZWxCdXR0b24gPSB7XG4gIGxpbms6IHRydWUsXG4gIGxhcmdlOiB0cnVlLFxuICBjaGlsZHJlbjogJ0NhbmNlbCdcbn07XG5cbmNvbnN0IGRlZmF1bHRDb25maXJtQnV0dG9uID0ge1xuICBsYXJnZTogdHJ1ZSxcbiAgd2lkdGg6ICcxNjBweCcsXG4gIGNoaWxkcmVuOiAnQ29uZmlybSdcbn07XG5cbmV4cG9ydCBjb25zdCBNb2RhbEZvb3RlciA9ICh7XG4gIGNhbmNlbCxcbiAgY29uZmlybSxcbiAgY2FuY2VsQnV0dG9uLFxuICBjb25maXJtQnV0dG9uXG59KSA9PiB7XG4gIGNvbnN0IGNhbmNlbEJ1dHRvblByb3BzID0gey4uLmRlZmF1bHRDYW5jZWxCdXR0b24sIC4uLmNhbmNlbEJ1dHRvbn07XG4gIGNvbnN0IGNvbmZpcm1CdXR0b25Qcm9wcyA9IHsuLi5kZWZhdWx0Q29uZmlybUJ1dHRvbiwgLi4uY29uZmlybUJ1dHRvbn07XG4gIHJldHVybiAoXG4gICAgPFN0eWxlZE1vZGFsRm9vdGVyIGNsYXNzTmFtZT1cIm1vZGFsLS1mb290ZXJcIj5cbiAgICAgIDxGb290ZXJBY3Rpb25XcmFwcGVyPlxuICAgICAgICA8QnV0dG9uIHsuLi5jYW5jZWxCdXR0b25Qcm9wc30gb25DbGljaz17Y2FuY2VsfT5cbiAgICAgICAgICB7Y2FuY2VsQnV0dG9uUHJvcHMuY2hpbGRyZW59XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8QnV0dG9uIHsuLi5jb25maXJtQnV0dG9uUHJvcHN9IG9uQ2xpY2s9e2NvbmZpcm19PlxuICAgICAgICAgIHtjb25maXJtQnV0dG9uUHJvcHMuY2hpbGRyZW59XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9Gb290ZXJBY3Rpb25XcmFwcGVyPlxuICAgIDwvU3R5bGVkTW9kYWxGb290ZXI+XG4gICk7XG59O1xuXG5jbGFzcyBNb2RhbERpYWxvZyBleHRlbmRzIENvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgZm9vdGVyOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBjbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBvbkNvbmZpcm06IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uQ2FuY2VsOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBjb25maXJtQnV0dG9uOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGNvbmZpcm1CdXR0b25MYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBjYW5jZWxCdXR0b246IFByb3BUeXBlcy5vYmplY3QsXG4gICAgY2FuY2VsQnV0dG9uTGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY3NzU3R5bGU6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpXG4gIH07XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBmb290ZXI6IGZhbHNlLFxuICAgIGNsb3NlOiAoKSA9PiB7fSxcbiAgICBvbkNvbmZpcm06ICgpID0+IHt9LFxuICAgIG9uQ2FuY2VsOiAoKSA9PiB7fSxcbiAgICBjYW5jZWxCdXR0b246IGRlZmF1bHRDYW5jZWxCdXR0b24sXG4gICAgY29uZmlybUJ1dHRvbjogZGVmYXVsdENvbmZpcm1CdXR0b24sXG4gICAgY3NzU3R5bGU6IFtdXG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtwcm9wc30gPSB0aGlzO1xuICAgIHJldHVybiAoXG4gICAgICA8TW9kYWxcbiAgICAgICAgY2xhc3NOYW1lPXt0aGlzLnByb3BzLmNsYXNzTmFtZX1cbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgICBhcmlhSGlkZUFwcD17ZmFsc2V9XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgb3ZlcmxheToge1xuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAocHJvcHMudGhlbWUgJiYgcHJvcHMudGhlbWUubW9kYWxPdmVybGF5QmdkKSB8fCAncmdiYSgwLCAwLCAwLCAwLjUpJyxcbiAgICAgICAgICAgIHpJbmRleDogKHByb3BzLnRoZW1lICYmIHByb3BzLnRoZW1lLm1vZGFsT3ZlckxheVopIHx8IDEwMDAsXG4gICAgICAgICAgICAvLyBpbiBjYXNlIHdlIHdhbnQgdG8gb3ZlcnJpZGUgdGhlIG1vZGFsIGRpYWxvZyBzdHlsZVxuICAgICAgICAgICAgLi4ucHJvcHMuc3R5bGVcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxNb2RhbENvbnRlbnRXcmFwcGVyXG4gICAgICAgICAgY2xhc3NOYW1lPVwibW9kYWwtLXdyYXBwZXJcIlxuICAgICAgICAgIGNzc1N0eWxlPXtwcm9wcy5jc3NTdHlsZX1cbiAgICAgICAgICBmb290ZXI9e3Byb3BzLmZvb3Rlcn1cbiAgICAgICAgPlxuICAgICAgICAgIHtwcm9wcy5jbG9zZSAmJiAoXG4gICAgICAgICAgICA8Q2xvc2VCdXR0b24gY2xhc3NOYW1lPVwibW9kYWwtLWNsb3NlXCIgb25DbGljaz17cHJvcHMuY2xvc2V9PlxuICAgICAgICAgICAgICA8RGVsZXRlIGhlaWdodD1cIjE0cHhcIiAvPlxuICAgICAgICAgICAgPC9DbG9zZUJ1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICB7cHJvcHMudGl0bGUgJiYgKFxuICAgICAgICAgICAgICA8TW9kYWxUaXRsZSBjbGFzc05hbWU9XCJtb2RhbC0tdGl0bGVcIj57cHJvcHMudGl0bGV9PC9Nb2RhbFRpdGxlPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxNb2RhbENvbnRlbnQgY2xhc3NOYW1lPVwibW9kYWwtLWJvZHlcIj57cHJvcHMuY2hpbGRyZW59PC9Nb2RhbENvbnRlbnQ+XG4gICAgICAgICAgICB7cHJvcHMuZm9vdGVyICYmIChcbiAgICAgICAgICAgICAgPE1vZGFsRm9vdGVyXG4gICAgICAgICAgICAgICAgY2FuY2VsPXtwcm9wcy5jbG9zZX1cbiAgICAgICAgICAgICAgICBjb25maXJtPXtwcm9wcy5vbkNvbmZpcm19XG4gICAgICAgICAgICAgICAgY2FuY2VsQnV0dG9uPXtwcm9wcy5jYW5jZWxCdXR0b259XG4gICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvbj17cHJvcHMuY29uZmlybUJ1dHRvbn1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9Nb2RhbENvbnRlbnRXcmFwcGVyPlxuICAgICAgPC9Nb2RhbD5cbiAgICApO1xuICB9XG59XG5cbmNvbnN0IFN0eWxlZE1vZGFsID0gc3R5bGVkKE1vZGFsRGlhbG9nKWBcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB0cmFuc2l0aW9uOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRyYW5zaXRpb259O1xuICBwYWRkaW5nLWxlZnQ6IDQwcHg7XG4gIHBhZGRpbmctcmlnaHQ6IDQwcHg7XG5cbiAgJHttZWRpYS5wb3J0YWJsZWBcbiAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7XG4gICAgcGFkZGluZy1yaWdodDogMjRweDtcbiAgYH07XG5cbiAgJHttZWRpYS5wYWxtYFxuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICBgfTtcblxuICA6Zm9jdXMge1xuICAgIG91dGxpbmU6IDBcbiAgfVxuYDtcblxuZXhwb3J0IGRlZmF1bHQgU3R5bGVkTW9kYWw7XG4iXX0=