UNPKG

apeman-react-sign

Version:
322 lines (279 loc) 24 kB
/** * Form for signup * @class ApSignupForm */ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.ApSigninForm = undefined; var _assign = require('babel-runtime/core-js/object/assign'); var _assign2 = _interopRequireDefault(_assign); var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames); var _apemanReactForm = require('apeman-react-form'); var _apemanReactField = require('apeman-react-field'); var _apemanReactButton = require('apeman-react-button'); var _apemanReactText = require('apeman-react-text'); var _apemanReactPassword = require('apeman-react-password'); var _apemanReactCaptcha = require('apeman-react-captcha'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var noop = function noop(e) { return console.log(e); }; /** @lends ApSigninForm */ var ApSigninForm = function (_Component) { (0, _inherits3.default)(ApSigninForm, _Component); function ApSigninForm(props) { (0, _classCallCheck3.default)(this, ApSigninForm); var _this = (0, _possibleConstructorReturn3.default)(this, (ApSigninForm.__proto__ || (0, _getPrototypeOf2.default)(ApSigninForm)).call(this, props)); var s = _this; s.state = {}; return _this; } (0, _createClass3.default)(ApSigninForm, [{ key: 'render', value: function render() { var s = this; var props = s.props; var id = props.id, idOf = props.idOf, labels = props.labels, values = props.values, images = props.images, actions = props.actions, placeholders = props.placeholders, onUpdate = props.onUpdate, onSubmit = props.onSubmit, spinning = props.spinning, errorList = props.errorList, errorStyle = props.errorStyle, centered = props.centered, captchaSpinning = props.captchaSpinning; return _react2.default.createElement( _apemanReactForm.ApForm, { id: id, spinning: spinning, centered: centered, className: (0, _classnames2.default)('ap-signin-form', props.className), style: (0, _assign2.default)({}, props.style) }, _react2.default.createElement( _apemanReactField.ApFieldSet, { plain: true }, errorList, errorStyle, _react2.default.createElement(ApSigninForm.KeyField, { idOf: idOf, labels: labels, values: values, onUpdate: onUpdate }), _react2.default.createElement(ApSigninForm.EmailField, { idOf: idOf, labels: labels, values: values, onUpdate: onUpdate }), _react2.default.createElement(ApSigninForm.PasswordField, { idOf: idOf, labels: labels, values: values, onUpdate: onUpdate }) ), _react2.default.createElement( _apemanReactField.ApFieldSet, { plain: true }, _react2.default.createElement(ApSigninForm.CaptchaField, { idOf: idOf, labels: labels, values: values, onUpdate: onUpdate, placeholders: placeholders, images: images, actions: actions, captchaSpinning: captchaSpinning }) ), _react2.default.createElement( _apemanReactField.ApFieldSet, { plain: true }, props.children ), _react2.default.createElement( _apemanReactField.ApFieldSet, { plain: true }, _react2.default.createElement(ApSigninForm.ButtonField, { idOf: idOf, labels: labels, values: values, onSubmit: onSubmit }) ) ); } }]); return ApSigninForm; }(_react.Component); (0, _assign2.default)(ApSigninForm, { // -------------------- // Specs // -------------------- propTypes: { captchaSpinning: _react.PropTypes.bool }, defaultProps: { labels: { key: 'Username', email: 'Email', password: 'Password', captcha: 'Captcha', captchaRefresh: 'refresh', submit: 'Sign Up' }, placeholders: { captcha: '(Type numbers above)' }, images: { captcha: '' }, actions: { captchaRefresh: noop }, captchaSpinning: false }, // -------------------- // Sub Component // -------------------- KeyField: function KeyField(_ref) { var idOf = _ref.idOf, labels = _ref.labels, values = _ref.values, onUpdate = _ref.onUpdate; return _react2.default.createElement( _apemanReactField.ApField, null, _react2.default.createElement( _apemanReactField.ApFieldLabel, { htmlFor: idOf('key') }, labels['key'] ), _react2.default.createElement( _apemanReactField.ApFieldValue, null, _react2.default.createElement(_apemanReactText.ApText, { autoFocus: true, id: idOf('key'), name: 'key', value: values['key'], onChange: function onChange(e) { return onUpdate({ key: e.target.value }); } }) ) ); }, EmailField: function EmailField(_ref2) { var idOf = _ref2.idOf, labels = _ref2.labels, values = _ref2.values, onUpdate = _ref2.onUpdate; return _react2.default.createElement( _apemanReactField.ApField, null, _react2.default.createElement( _apemanReactField.ApFieldLabel, { htmlFor: idOf('email') }, labels['email'] ), _react2.default.createElement( _apemanReactField.ApFieldValue, null, _react2.default.createElement(_apemanReactText.ApText, { id: idOf('email'), name: 'email', value: values['email'], onChange: function onChange(e) { return onUpdate({ email: e.target.value }); } }) ) ); }, PasswordField: function PasswordField(_ref3) { var idOf = _ref3.idOf, labels = _ref3.labels, values = _ref3.values, onUpdate = _ref3.onUpdate; return _react2.default.createElement( _apemanReactField.ApField, null, _react2.default.createElement( _apemanReactField.ApFieldLabel, { htmlFor: idOf('password') }, labels['password'] ), _react2.default.createElement( _apemanReactField.ApFieldValue, null, _react2.default.createElement(_apemanReactPassword.ApPassword, { id: idOf('password'), name: 'password', value: values['password'], onChange: function onChange(e) { return onUpdate({ password: e.target.value }); } }) ) ); }, CaptchaField: function CaptchaField(_ref4) { var idOf = _ref4.idOf, labels = _ref4.labels, values = _ref4.values, onUpdate = _ref4.onUpdate, placeholders = _ref4.placeholders, images = _ref4.images, actions = _ref4.actions, captchaSpinning = _ref4.captchaSpinning; return _react2.default.createElement( _apemanReactField.ApField, null, _react2.default.createElement( _apemanReactField.ApFieldLabel, { htmlFor: idOf('captcha') }, labels['captcha'] ), _react2.default.createElement( _apemanReactField.ApFieldValue, null, _react2.default.createElement(_apemanReactCaptcha.ApCaptcha, { src: images['captcha'], spinning: captchaSpinning, refreshText: labels['captchaRefresh'], onRefresh: actions['captchaRefresh'] }), _react2.default.createElement(_apemanReactText.ApText, { id: idOf('captcha'), name: 'captcha', value: values['captcha'], onChange: function onChange(e) { return onUpdate({ captcha: e.target.value }); }, placeholder: placeholders['captcha'] }) ) ); }, ButtonField: function ButtonField(_ref5) { var idOf = _ref5.idOf, labels = _ref5.labels, values = _ref5.values, onSubmit = _ref5.onSubmit; return _react2.default.createElement( _apemanReactField.ApField, { center: true, className: 'ap-signup-form-button-field' }, _react2.default.createElement( _apemanReactButton.ApButton, { id: idOf('submit'), onTap: function onTap() { return onSubmit(values); }, wide: true, primary: true }, labels['submit'] ) ); } }); exports.ApSigninForm = ApSigninForm; exports.default = (0, _apemanReactForm.withForm)(ApSigninForm); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwX3NpZ251cF9mb3JtLmpzeCJdLCJuYW1lcyI6WyJub29wIiwiZSIsImNvbnNvbGUiLCJsb2ciLCJBcFNpZ25pbkZvcm0iLCJwcm9wcyIsInMiLCJzdGF0ZSIsImlkIiwiaWRPZiIsImxhYmVscyIsInZhbHVlcyIsImltYWdlcyIsImFjdGlvbnMiLCJwbGFjZWhvbGRlcnMiLCJvblVwZGF0ZSIsIm9uU3VibWl0Iiwic3Bpbm5pbmciLCJlcnJvckxpc3QiLCJlcnJvclN0eWxlIiwiY2VudGVyZWQiLCJjYXB0Y2hhU3Bpbm5pbmciLCJjbGFzc05hbWUiLCJzdHlsZSIsImNoaWxkcmVuIiwicHJvcFR5cGVzIiwiYm9vbCIsImRlZmF1bHRQcm9wcyIsImtleSIsImVtYWlsIiwicGFzc3dvcmQiLCJjYXB0Y2hhIiwiY2FwdGNoYVJlZnJlc2giLCJzdWJtaXQiLCJLZXlGaWVsZCIsInRhcmdldCIsInZhbHVlIiwiRW1haWxGaWVsZCIsIlBhc3N3b3JkRmllbGQiLCJDYXB0Y2hhRmllbGQiLCJCdXR0b25GaWVsZCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0FBS0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTs7OztBQUNBOzs7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFFQSxJQUFNQSxPQUFPLFNBQVBBLElBQU8sQ0FBQ0MsQ0FBRDtBQUFBLFNBQU9DLFFBQVFDLEdBQVIsQ0FBWUYsQ0FBWixDQUFQO0FBQUEsQ0FBYjs7QUFFQTs7SUFDTUcsWTs7O0FBQ0osd0JBQWFDLEtBQWIsRUFBb0I7QUFBQTs7QUFBQSxrSkFDWkEsS0FEWTs7QUFFbEIsUUFBTUMsU0FBTjtBQUNBQSxNQUFFQyxLQUFGLEdBQVUsRUFBVjtBQUhrQjtBQUluQjs7Ozs2QkFFUztBQUNSLFVBQU1ELElBQUksSUFBVjtBQURRLFVBRUZELEtBRkUsR0FFUUMsQ0FGUixDQUVGRCxLQUZFO0FBQUEsVUFJTkcsRUFKTSxHQWtCSkgsS0FsQkksQ0FJTkcs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QUFZRyxRQUFTLGdCQUFULENBSHZCLEdBREY7QUFNRSxpRUFBUSxJQUFLSixLQUFLLFNBQUwsQ0FBYjtBQUNRLGdCQUFPLFNBRGY7QUFFUSxpQkFBUUUsT0FBUSxTQUFSLENBRmhCO0FBR1Esb0JBQVcsa0JBQUNWLENBQUQ7QUFBQSxtQkFBT2MsU0FBUyxFQUFFZ0IsU0FBUzlCLEVBQUVrQyxNQUFGLENBQVNDLEtBQXBCLEVBQVQsQ0FBUDtBQUFBLFdBSG5CO0FBSVEsdUJBQWN0QixhQUFjLFNBQWQ7QUFKdEI7QUFORjtBQUpGLEtBREY7QUFvQkQsR0ExR3lCO0FBNEcxQjBCLGFBNUcwQiw4QkE0R3VCO0FBQUEsUUFBbEMvQixJQUFrQyxTQUFsQ0EsSUFBa0M7QUFBQSxRQUE1QkMsTUFBNEIsU0FBNUJBLE1BQTRCO0FBQUEsUUFBcEJDLE1BQW9CLFNBQXBCQSxNQUFvQjtBQUFBLFFBQVpLLFFBQVksU0FBWkEsUUFBWTs7QUFDL0MsV0FDRTtBQUFBO0FBQUEsUUFBUyxZQUFULEVBQWdCLFdBQVUsNkJBQTFCO0FBQ0U7QUFBQTtBQUFBLFVBQVUsSUFBS1AsS0FBSyxRQUFMLENBQWY7QUFDVSxpQkFBUTtBQUFBLG1CQUFNTyxTQUFTTCxNQUFULENBQU47QUFBQSxXQURsQjtBQUVVLG9CQUZWO0FBR1U7QUFIVjtBQUlHRCxlQUFRLFFBQVI7QUFKSDtBQURGLEtBREY7QUFTRDtBQXRIeUIsQ0FBNUI7O1FBeUhTTixZLEdBQUFBLFk7a0JBQ00sK0JBQVNBLFlBQVQsQyIsImZpbGUiOiJhcF9zaWdudXBfZm9ybS5qc3giLCJzb3VyY2VSb290IjoibGliIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGb3JtIGZvciBzaWdudXBcbiAqIEBjbGFzcyBBcFNpZ251cEZvcm1cbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudCwgUHJvcFR5cGVzIGFzIHR5cGVzIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJ1xuXG5pbXBvcnQgeyBBcEZvcm0sIHdpdGhGb3JtIH0gZnJvbSAnYXBlbWFuLXJlYWN0LWZvcm0nXG5pbXBvcnQgeyBBcEZpZWxkU2V0LCBBcEZpZWxkLCBBcEZpZWxkTGFiZWwsIEFwRmllbGRWYWx1ZSB9IGZyb20gJ2FwZW1hbi1yZWFjdC1maWVsZCdcbmltcG9ydCB7IEFwQnV0dG9uLCBBcENlbGxCdXR0b24sIEFwQ2VsbEJ1dHRvblJvdywgQXBJY29uQnV0dG9uLCBBcEljb25CdXR0b25Sb3cgfSBmcm9tICdhcGVtYW4tcmVhY3QtYnV0dG9uJ1xuaW1wb3J0IHsgQXBUZXh0IH0gZnJvbSAnYXBlbWFuLXJlYWN0LXRleHQnXG5pbXBvcnQgeyBBcFBhc3N3b3JkIH0gZnJvbSAnYXBlbWFuLXJlYWN0LXBhc3N3b3JkJ1xuaW1wb3J0IHsgQXBDYXB0Y2hhIH0gZnJvbSAnYXBlbWFuLXJlYWN0LWNhcHRjaGEnXG5cbmNvbnN0IG5vb3AgPSAoZSkgPT4gY29uc29sZS5sb2coZSlcblxuLyoqIEBsZW5kcyBBcFNpZ25pbkZvcm0gKi9cbmNsYXNzIEFwU2lnbmluRm9ybSBleHRlbmRzIENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yIChwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKVxuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgcy5zdGF0ZSA9IHt9XG4gIH1cblxuICByZW5kZXIgKCkge1xuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgbGV0IHsgcHJvcHMgfSA9IHNcbiAgICBsZXQge1xuICAgICAgaWQsXG4gICAgICBpZE9mLFxuICAgICAgbGFiZWxzLFxuICAgICAgdmFsdWVzLFxuICAgICAgaW1hZ2VzLFxuICAgICAgYWN0aW9ucyxcbiAgICAgIHBsYWNlaG9sZGVycyxcbiAgICAgIG9uVXBkYXRlLFxuICAgICAgb25TdWJtaXQsXG4gICAgICBzcGlubmluZyxcbiAgICAgIGVycm9yTGlzdCxcbiAgICAgIGVycm9yU3R5bGUsXG4gICAgICBjZW50ZXJlZCxcbiAgICAgIGNhcHRjaGFTcGlubmluZ1xuICAgIH0gPSBwcm9wc1xuICAgIHJldHVybiAoXG4gICAgICA8QXBGb3JtIGlkPXsgaWQgfVxuICAgICAgICAgICAgICBzcGlubmluZz17IHNwaW5uaW5nIH1cbiAgICAgICAgICAgICAgY2VudGVyZWQ9eyBjZW50ZXJlZCB9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17IGNsYXNzbmFtZXMoJ2FwLXNpZ25pbi1mb3JtJywgcHJvcHMuY2xhc3NOYW1lKX1cbiAgICAgICAgICAgICAgc3R5bGU9eyBPYmplY3QuYXNzaWduKHt9LCBwcm9wcy5zdHlsZSkgfVxuICAgICAgPlxuICAgICAgICA8QXBGaWVsZFNldCBwbGFpbj5cbiAgICAgICAgICB7IGVycm9yTGlzdCB9XG4gICAgICAgICAgeyBlcnJvclN0eWxlIH1cbiAgICAgICAgICA8QXBTaWduaW5Gb3JtLktleUZpZWxkIHsgLi4ueyBpZE9mLCBsYWJlbHMsIHZhbHVlcywgb25VcGRhdGUgfSB9Lz5cbiAgICAgICAgICA8QXBTaWduaW5Gb3JtLkVtYWlsRmllbGQgeyAuLi57IGlkT2YsIGxhYmVscywgdmFsdWVzLCBvblVwZGF0ZSB9IH0vPlxuICAgICAgICAgIDxBcFNpZ25pbkZvcm0uUGFzc3dvcmRGaWVsZCB7IC4uLnsgaWRPZiwgbGFiZWxzLCB2YWx1ZXMsIG9uVXBkYXRlIH0gfS8+XG4gICAgICAgIDwvQXBGaWVsZFNldD5cbiAgICAgICAgPEFwRmllbGRTZXQgcGxhaW4+XG4gICAgICAgICAgPEFwU2lnbmluRm9ybS5DYXB0Y2hhRmllbGQgeyAuLi57XG4gICAgICAgICAgICBpZE9mLFxuICAgICAgICAgICAgbGFiZWxzLFxuICAgICAgICAgICAgdmFsdWVzLFxuICAgICAgICAgICAgb25VcGRhdGUsXG4gICAgICAgICAgICBwbGFjZWhvbGRlcnMsXG4gICAgICAgICAgICBpbWFnZXMsXG4gICAgICAgICAgICBhY3Rpb25zLFxuICAgICAgICAgICAgY2FwdGNoYVNwaW5uaW5nXG4gICAgICAgICAgfSB9Lz5cbiAgICAgICAgPC9BcEZpZWxkU2V0PlxuICAgICAgICA8QXBGaWVsZFNldCBwbGFpbj5cbiAgICAgICAgICB7IHByb3BzLmNoaWxkcmVuIH1cbiAgICAgICAgPC9BcEZpZWxkU2V0PlxuICAgICAgICA8QXBGaWVsZFNldCBwbGFpbj5cbiAgICAgICAgICA8QXBTaWduaW5Gb3JtLkJ1dHRvbkZpZWxkIHsgLi4ueyBpZE9mLCBsYWJlbHMsIHZhbHVlcywgb25TdWJtaXQgfSB9Lz5cbiAgICAgICAgPC9BcEZpZWxkU2V0PlxuICAgICAgPC9BcEZvcm0+XG4gICAgKVxuICB9XG59XG5PYmplY3QuYXNzaWduKEFwU2lnbmluRm9ybSwge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBTcGVjc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIHByb3BUeXBlczoge1xuICAgIGNhcHRjaGFTcGlubmluZzogdHlwZXMuYm9vbFxuICB9LFxuXG4gIGRlZmF1bHRQcm9wczoge1xuICAgIGxhYmVsczoge1xuICAgICAga2V5OiAnVXNlcm5hbWUnLFxuICAgICAgZW1haWw6ICdFbWFpbCcsXG4gICAgICBwYXNzd29yZDogJ1Bhc3N3b3JkJyxcbiAgICAgIGNhcHRjaGE6ICdDYXB0Y2hhJyxcbiAgICAgIGNhcHRjaGFSZWZyZXNoOiAncmVmcmVzaCcsXG4gICAgICBzdWJtaXQ6ICdTaWduIFVwJ1xuICAgIH0sXG4gICAgcGxhY2Vob2xkZXJzOiB7XG4gICAgICBjYXB0Y2hhOiAnKFR5cGUgbnVtYmVycyBhYm92ZSknXG4gICAgfSxcbiAgICBpbWFnZXM6IHtcbiAgICAgIGNhcHRjaGE6ICcnXG4gICAgfSxcbiAgICBhY3Rpb25zOiB7XG4gICAgICBjYXB0Y2hhUmVmcmVzaDogbm9vcFxuICAgIH0sXG4gICAgY2FwdGNoYVNwaW5uaW5nOiBmYWxzZVxuICB9LFxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIFN1YiBDb21wb25lbnRcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgS2V5RmllbGQgKHsgaWRPZiwgbGFiZWxzLCB2YWx1ZXMsIG9uVXBkYXRlIH0pIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEFwRmllbGQ+XG4gICAgICAgIDxBcEZpZWxkTGFiZWwgaHRtbEZvcj17IGlkT2YoJ2tleScpIH0+XG4gICAgICAgICAgeyBsYWJlbHNbICdrZXknIF0gfVxuICAgICAgICA8L0FwRmllbGRMYWJlbD5cbiAgICAgICAgPEFwRmllbGRWYWx1ZT5cbiAgICAgICAgICA8QXBUZXh0IGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgaWQ9eyBpZE9mKCdrZXknKSB9XG4gICAgICAgICAgICAgICAgICBuYW1lPXsgJ2tleScgfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9eyB2YWx1ZXNbICdrZXknIF0gfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyAoZSkgPT4gb25VcGRhdGUoeyBrZXk6IGUudGFyZ2V0LnZhbHVlIH0pIH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0FwRmllbGRWYWx1ZT5cbiAgICAgIDwvQXBGaWVsZD5cbiAgICApXG4gIH0sXG5cbiAgRW1haWxGaWVsZCAoeyBpZE9mLCBsYWJlbHMsIHZhbHVlcywgb25VcGRhdGUgfSkge1xuICAgIHJldHVybiAoXG4gICAgICA8QXBGaWVsZD5cbiAgICAgICAgPEFwRmllbGRMYWJlbCBodG1sRm9yPXsgaWRPZignZW1haWwnKSB9PlxuICAgICAgICAgIHsgbGFiZWxzWyAnZW1haWwnIF0gfVxuICAgICAgICA8L0FwRmllbGRMYWJlbD5cbiAgICAgICAgPEFwRmllbGRWYWx1ZT5cbiAgICAgICAgICA8QXBUZXh0IGlkPXsgaWRPZignZW1haWwnKSB9XG4gICAgICAgICAgICAgICAgICBuYW1lPXsgJ2VtYWlsJyB9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17IHZhbHVlc1sgJ2VtYWlsJyBdIH1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKGUpID0+IG9uVXBkYXRlKHsgZW1haWw6IGUudGFyZ2V0LnZhbHVlIH0pIH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0FwRmllbGRWYWx1ZT5cbiAgICAgIDwvQXBGaWVsZD5cbiAgICApXG4gIH0sXG5cbiAgUGFzc3dvcmRGaWVsZCAoeyBpZE9mLCBsYWJlbHMsIHZhbHVlcywgb25VcGRhdGUgfSkge1xuICAgIHJldHVybiAoXG4gICAgICA8QXBGaWVsZD5cbiAgICAgICAgPEFwRmllbGRMYWJlbCBodG1sRm9yPXsgaWRPZigncGFzc3dvcmQnKSB9PlxuICAgICAgICAgIHsgbGFiZWxzWyAncGFzc3dvcmQnIF0gfVxuICAgICAgICA8L0FwRmllbGRMYWJlbD5cbiAgICAgICAgPEFwRmllbGRWYWx1ZT5cbiAgICAgICAgICA8QXBQYXNzd29yZCBpZD17IGlkT2YoJ3Bhc3N3b3JkJykgfVxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9eyAncGFzc3dvcmQnIH1cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IHZhbHVlc1sgJ3Bhc3N3b3JkJyBdIH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17IChlKSA9PiBvblVwZGF0ZSh7IHBhc3N3b3JkOiBlLnRhcmdldC52YWx1ZSB9KSB9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9BcEZpZWxkVmFsdWU+XG4gICAgICA8L0FwRmllbGQ+XG4gICAgKVxuICB9LFxuXG4gIENhcHRjaGFGaWVsZCAoeyBpZE9mLCBsYWJlbHMsIHZhbHVlcywgb25VcGRhdGUsIHBsYWNlaG9sZGVycywgaW1hZ2VzLCBhY3Rpb25zLCBjYXB0Y2hhU3Bpbm5pbmcgfSkge1xuICAgIHJldHVybiAoXG4gICAgICA8QXBGaWVsZD5cbiAgICAgICAgPEFwRmllbGRMYWJlbCBodG1sRm9yPXsgaWRPZignY2FwdGNoYScpIH0+XG4gICAgICAgICAgeyBsYWJlbHNbICdjYXB0Y2hhJyBdIH1cbiAgICAgICAgPC9BcEZpZWxkTGFiZWw+XG4gICAgICAgIDxBcEZpZWxkVmFsdWU+XG4gICAgICAgICAgPEFwQ2FwdGNoYSBzcmM9eyBpbWFnZXNbICdjYXB0Y2hhJyBdIH1cbiAgICAgICAgICAgICAgICAgICAgIHNwaW5uaW5nPXsgY2FwdGNoYVNwaW5uaW5nIH1cbiAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hUZXh0PXsgbGFiZWxzWyAnY2FwdGNoYVJlZnJlc2gnIF0gfVxuICAgICAgICAgICAgICAgICAgICAgb25SZWZyZXNoPXsgYWN0aW9uc1sgJ2NhcHRjaGFSZWZyZXNoJyBdIH0+XG4gICAgICAgICAgPC9BcENhcHRjaGE+XG4gICAgICAgICAgPEFwVGV4dCBpZD17IGlkT2YoJ2NhcHRjaGEnKSB9XG4gICAgICAgICAgICAgICAgICBuYW1lPXsgJ2NhcHRjaGEnIH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXsgdmFsdWVzWyAnY2FwdGNoYScgXSB9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17IChlKSA9PiBvblVwZGF0ZSh7IGNhcHRjaGE6IGUudGFyZ2V0LnZhbHVlIH0pIH1cbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXsgcGxhY2Vob2xkZXJzWyAnY2FwdGNoYScgXSB9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9BcEZpZWxkVmFsdWU+XG4gICAgICA8L0FwRmllbGQ+XG4gICAgKVxuICB9LFxuXG4gIEJ1dHRvbkZpZWxkICh7IGlkT2YsIGxhYmVscywgdmFsdWVzLCBvblN1Ym1pdCB9KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxBcEZpZWxkIGNlbnRlciBjbGFzc05hbWU9J2FwLXNpZ251cC1mb3JtLWJ1dHRvbi1maWVsZCc+XG4gICAgICAgIDxBcEJ1dHRvbiBpZD17IGlkT2YoJ3N1Ym1pdCcpIH1cbiAgICAgICAgICAgICAgICAgIG9uVGFwPXsgKCkgPT4gb25TdWJtaXQodmFsdWVzKSB9XG4gICAgICAgICAgICAgICAgICB3aWRlXG4gICAgICAgICAgICAgICAgICBwcmltYXJ5XG4gICAgICAgID57IGxhYmVsc1sgJ3N1Ym1pdCcgXSB9PC9BcEJ1dHRvbj5cbiAgICAgIDwvQXBGaWVsZD5cbiAgICApXG4gIH1cbn0pXG5cbmV4cG9ydCB7IEFwU2lnbmluRm9ybSB9XG5leHBvcnQgZGVmYXVsdCB3aXRoRm9ybShBcFNpZ25pbkZvcm0pXG4iXX0=