UNPKG

apeman-react-sign

Version:
302 lines (266 loc) 24.3 kB
/** * Form for signup * @class ApSignupForm */ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.ApSigninForm = undefined; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); 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 }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var noop = function noop(e) { return console.log(e); }; /** @lends ApSigninForm */ var ApSigninForm = function (_Component) { _inherits(ApSigninForm, _Component); function ApSigninForm(props) { _classCallCheck(this, ApSigninForm); var _this = _possibleConstructorReturn(this, (ApSigninForm.__proto__ || Object.getPrototypeOf(ApSigninForm)).call(this, props)); var s = _this; s.state = {}; return _this; } _createClass(ApSigninForm, [{ key: 'render', value: function render() { var s = this; var props = s.props; var id = props.id; var idOf = props.idOf; var labels = props.labels; var values = props.values; var images = props.images; var actions = props.actions; var placeholders = props.placeholders; var onUpdate = props.onUpdate; var onSubmit = props.onSubmit; var spinning = props.spinning; var errorList = props.errorList; var errorStyle = props.errorStyle; var centered = props.centered; var 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: Object.assign({}, 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 }, _react2.default.createElement(ApSigninForm.ButtonField, { idOf: idOf, labels: labels, values: values, onSubmit: onSubmit }) ) ); } }]); return ApSigninForm; }(_react.Component); Object.assign(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; var labels = _ref.labels; var values = _ref.values; var 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; var labels = _ref2.labels; var values = _ref2.values; var 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; var labels = _ref3.labels; var values = _ref3.values; var 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; var labels = _ref4.labels; var values = _ref4.values; var onUpdate = _ref4.onUpdate; var placeholders = _ref4.placeholders; var images = _ref4.images; var actions = _ref4.actions; var 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; var labels = _ref5.labels; var values = _ref5.values; var 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwX3NpZ251cF9mb3JtLmpzeCJdLCJuYW1lcyI6WyJub29wIiwiZSIsImNvbnNvbGUiLCJsb2ciLCJBcFNpZ25pbkZvcm0iLCJwcm9wcyIsInMiLCJzdGF0ZSIsImlkIiwiaWRPZiIsImxhYmVscyIsInZhbHVlcyIsImltYWdlcyIsImFjdGlvbnMiLCJwbGFjZWhvbGRlcnMiLCJvblVwZGF0ZSIsIm9uU3VibWl0Iiwic3Bpbm5pbmciLCJlcnJvckxpc3QiLCJlcnJvclN0eWxlIiwiY2VudGVyZWQiLCJjYXB0Y2hhU3Bpbm5pbmciLCJjbGFzc05hbWUiLCJPYmplY3QiLCJhc3NpZ24iLCJzdHlsZSIsInByb3BUeXBlcyIsImJvb2wiLCJkZWZhdWx0UHJvcHMiLCJrZXkiLCJlbWFpbCIsInBhc3N3b3JkIiwiY2FwdGNoYSIsImNhcHRjaGFSZWZyZXNoIiwic3VibWl0IiwiS2V5RmllbGQiLCJ0YXJnZXQiLCJ2YWx1ZSIsIkVtYWlsRmllbGQiLCJQYXNzd29yZEZpZWxkIiwiQ2FwdGNoYUZpZWxkIiwiQnV0dG9uRmllbGQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OztBQUtBOzs7Ozs7Ozs7QUFFQTs7OztBQUNBOzs7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxPQUFPLFNBQVBBLElBQU8sQ0FBQ0MsQ0FBRDtBQUFBLFNBQU9DLFFBQVFDLEdBQVIsQ0FBWUYsQ0FBWixDQUFQO0FBQUEsQ0FBYjs7QUFFQTs7SUFDTUcsWTs7O0FBQ0osd0JBQWFDLEtBQWIsRUFBb0I7QUFBQTs7QUFBQSw0SEFDWkEsS0FEWTs7QUFFbEIsUUFBTUMsU0FBTjtBQUNBQSxNQUFFQyxLQUFGLEdBQVUsRUFBVjtBQUhrQjtBQUluQjs7Ozs2QkFFUztBQUNSLFVBQU1ELElBQUksSUFBVjtBQURRLFVBRUZELEtBRkUsR0FFUUMsQ0FGUixDQUVGRCxLQUZFO0FBQUEsVUFJTkcsRUFKTSxHQWtCSkgsS0FsQkksQ0FJTkcsRUFKTTtBQUFB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USxJQUFLSixLQUFLLFNBQUwsQ0FBYjtBQUNRLGdCQUFPLFNBRGY7QUFFUSxpQkFBUUUsT0FBUSxTQUFSLENBRmhCO0FBR1Esb0JBQVcsa0JBQUNWLENBQUQ7QUFBQSxtQkFBT2MsU0FBUyxFQUFFaUIsU0FBUy9CLEVBQUVtQyxNQUFGLENBQVNDLEtBQXBCLEVBQVQsQ0FBUDtBQUFBLFdBSG5CO0FBSVEsdUJBQWN2QixhQUFjLFNBQWQ7QUFKdEI7QUFORjtBQUpGLEtBREY7QUFvQkQsR0ExR3lCO0FBNEcxQjJCLGFBNUcwQiw4QkE0R3VCO0FBQUEsUUFBbENoQyxJQUFrQyxTQUFsQ0EsSUFBa0M7QUFBQSxRQUE1QkMsTUFBNEIsU0FBNUJBLE1BQTRCO0FBQUEsUUFBcEJDLE1BQW9CLFNBQXBCQSxNQUFvQjtBQUFBLFFBQVpLLFFBQVksU0FBWkEsUUFBWTs7QUFDL0MsV0FDRTtBQUFBO0FBQUEsUUFBUyxZQUFULEVBQWdCLFdBQVUsNkJBQTFCO0FBQ0U7QUFBQTtBQUFBLFVBQVUsSUFBS1AsS0FBSyxRQUFMLENBQWY7QUFDVSxpQkFBUTtBQUFBLG1CQUFNTyxTQUFTTCxNQUFULENBQU47QUFBQSxXQURsQjtBQUVVLG9CQUZWO0FBR1U7QUFIVjtBQUlHRCxlQUFRLFFBQVI7QUFKSDtBQURGLEtBREY7QUFTRDtBQXRIeUIsQ0FBNUI7O1FBeUhTTixZLEdBQUFBLFk7a0JBQ00sK0JBQVNBLFlBQVQsQyIsImZpbGUiOiJhcF9zaWdudXBfZm9ybS5qc3giLCJzb3VyY2VSb290IjoibGliIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGb3JtIGZvciBzaWdudXBcbiAqIEBjbGFzcyBBcFNpZ251cEZvcm1cbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudCwgUHJvcFR5cGVzIGFzIHR5cGVzIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJ1xuXG5pbXBvcnQgeyBBcEZvcm0sIHdpdGhGb3JtIH0gZnJvbSAnYXBlbWFuLXJlYWN0LWZvcm0nXG5pbXBvcnQgeyBBcEZpZWxkU2V0LCBBcEZpZWxkLCBBcEZpZWxkTGFiZWwsIEFwRmllbGRWYWx1ZSB9IGZyb20gJ2FwZW1hbi1yZWFjdC1maWVsZCdcbmltcG9ydCB7IEFwQnV0dG9uLCBBcENlbGxCdXR0b24sIEFwQ2VsbEJ1dHRvblJvdywgQXBJY29uQnV0dG9uLCBBcEljb25CdXR0b25Sb3cgfSBmcm9tICdhcGVtYW4tcmVhY3QtYnV0dG9uJ1xuaW1wb3J0IHsgQXBUZXh0IH0gZnJvbSAnYXBlbWFuLXJlYWN0LXRleHQnXG5pbXBvcnQgeyBBcFBhc3N3b3JkIH0gZnJvbSAnYXBlbWFuLXJlYWN0LXBhc3N3b3JkJ1xuaW1wb3J0IHsgQXBDYXB0Y2hhIH0gZnJvbSAnYXBlbWFuLXJlYWN0LWNhcHRjaGEnXG5cbmNvbnN0IG5vb3AgPSAoZSkgPT4gY29uc29sZS5sb2coZSlcblxuLyoqIEBsZW5kcyBBcFNpZ25pbkZvcm0gKi9cbmNsYXNzIEFwU2lnbmluRm9ybSBleHRlbmRzIENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yIChwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKVxuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgcy5zdGF0ZSA9IHt9XG4gIH1cblxuICByZW5kZXIgKCkge1xuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgbGV0IHsgcHJvcHMgfSA9IHNcbiAgICBsZXQge1xuICAgICAgaWQsXG4gICAgICBpZE9mLFxuICAgICAgbGFiZWxzLFxuICAgICAgdmFsdWVzLFxuICAgICAgaW1hZ2VzLFxuICAgICAgYWN0aW9ucyxcbiAgICAgIHBsYWNlaG9sZGVycyxcbiAgICAgIG9uVXBkYXRlLFxuICAgICAgb25TdWJtaXQsXG4gICAgICBzcGlubmluZyxcbiAgICAgIGVycm9yTGlzdCxcbiAgICAgIGVycm9yU3R5bGUsXG4gICAgICBjZW50ZXJlZCxcbiAgICAgIGNhcHRjaGFTcGlubmluZ1xuICAgIH0gPSBwcm9wc1xuICAgIHJldHVybiAoXG4gICAgICA8QXBGb3JtIGlkPXsgaWQgfVxuICAgICAgICAgICAgICBzcGlubmluZz17IHNwaW5uaW5nIH1cbiAgICAgICAgICAgICAgY2VudGVyZWQ9eyBjZW50ZXJlZCB9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17IGNsYXNzbmFtZXMoJ2FwLXNpZ25pbi1mb3JtJywgcHJvcHMuY2xhc3NOYW1lKX1cbiAgICAgICAgICAgICAgc3R5bGU9eyBPYmplY3QuYXNzaWduKHt9LCBwcm9wcy5zdHlsZSkgfVxuICAgICAgPlxuICAgICAgICA8QXBGaWVsZFNldCBwbGFpbj5cbiAgICAgICAgICB7IGVycm9yTGlzdCB9XG4gICAgICAgICAgeyBlcnJvclN0eWxlIH1cbiAgICAgICAgICA8QXBTaWduaW5Gb3JtLktleUZpZWxkIHsgLi4ueyBpZE9mLCBsYWJlbHMsIHZhbHVlcywgb25VcGRhdGUgfSB9Lz5cbiAgICAgICAgICA8QXBTaWduaW5Gb3JtLkVtYWlsRmllbGQgeyAuLi57IGlkT2YsIGxhYmVscywgdmFsdWVzLCBvblVwZGF0ZSB9IH0vPlxuICAgICAgICAgIDxBcFNpZ25pbkZvcm0uUGFzc3dvcmRGaWVsZCB7IC4uLnsgaWRPZiwgbGFiZWxzLCB2YWx1ZXMsIG9uVXBkYXRlIH0gfS8+XG4gICAgICAgIDwvQXBGaWVsZFNldD5cbiAgICAgICAgPEFwRmllbGRTZXQgcGxhaW4+XG4gICAgICAgICAgPEFwU2lnbmluRm9ybS5DYXB0Y2hhRmllbGQgeyAuLi57XG4gICAgICAgICAgICBpZE9mLFxuICAgICAgICAgICAgbGFiZWxzLFxuICAgICAgICAgICAgdmFsdWVzLFxuICAgICAgICAgICAgb25VcGRhdGUsXG4gICAgICAgICAgICBwbGFjZWhvbGRlcnMsXG4gICAgICAgICAgICBpbWFnZXMsXG4gICAgICAgICAgICBhY3Rpb25zLFxuICAgICAgICAgICAgY2FwdGNoYVNwaW5uaW5nXG4gICAgICAgICAgfSB9Lz5cbiAgICAgICAgPC9BcEZpZWxkU2V0PlxuICAgICAgICA8QXBGaWVsZFNldCBwbGFpbj5cbiAgICAgICAgICA8QXBTaWduaW5Gb3JtLkJ1dHRvbkZpZWxkIHsgLi4ueyBpZE9mLCBsYWJlbHMsIHZhbHVlcywgb25TdWJtaXQgfSB9Lz5cbiAgICAgICAgPC9BcEZpZWxkU2V0PlxuICAgICAgPC9BcEZvcm0+XG4gICAgKVxuICB9XG59XG5PYmplY3QuYXNzaWduKEFwU2lnbmluRm9ybSwge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBTcGVjc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIHByb3BUeXBlczoge1xuICAgIGNhcHRjaGFTcGlubmluZzogdHlwZXMuYm9vbFxuICB9LFxuXG4gIGRlZmF1bHRQcm9wczoge1xuICAgIGxhYmVsczoge1xuICAgICAga2V5OiAnVXNlcm5hbWUnLFxuICAgICAgZW1haWw6ICdFbWFpbCcsXG4gICAgICBwYXNzd29yZDogJ1Bhc3N3b3JkJyxcbiAgICAgIGNhcHRjaGE6ICdDYXB0Y2hhJyxcbiAgICAgIGNhcHRjaGFSZWZyZXNoOiAncmVmcmVzaCcsXG4gICAgICBzdWJtaXQ6ICdTaWduIFVwJ1xuICAgIH0sXG4gICAgcGxhY2Vob2xkZXJzOiB7XG4gICAgICBjYXB0Y2hhOiAnKFR5cGUgbnVtYmVycyBhYm92ZSknXG4gICAgfSxcbiAgICBpbWFnZXM6IHtcbiAgICAgIGNhcHRjaGE6ICcnXG4gICAgfSxcbiAgICBhY3Rpb25zOiB7XG4gICAgICBjYXB0Y2hhUmVmcmVzaDogbm9vcFxuICAgIH0sXG4gICAgY2FwdGNoYVNwaW5uaW5nOiBmYWxzZVxuICB9LFxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIFN1YiBDb21wb25lbnRcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgS2V5RmllbGQgKHsgaWRPZiwgbGFiZWxzLCB2YWx1ZXMsIG9uVXBkYXRlIH0pIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEFwRmllbGQ+XG4gICAgICAgIDxBcEZpZWxkTGFiZWwgaHRtbEZvcj17IGlkT2YoJ2tleScpIH0+XG4gICAgICAgICAgeyBsYWJlbHNbICdrZXknIF0gfVxuICAgICAgICA8L0FwRmllbGRMYWJlbD5cbiAgICAgICAgPEFwRmllbGRWYWx1ZT5cbiAgICAgICAgICA8QXBUZXh0IGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgaWQ9eyBpZE9mKCdrZXknKSB9XG4gICAgICAgICAgICAgICAgICBuYW1lPXsgJ2tleScgfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9eyB2YWx1ZXNbICdrZXknIF0gfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyAoZSkgPT4gb25VcGRhdGUoeyBrZXk6IGUudGFyZ2V0LnZhbHVlIH0pIH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0FwRmllbGRWYWx1ZT5cbiAgICAgIDwvQXBGaWVsZD5cbiAgICApXG4gIH0sXG5cbiAgRW1haWxGaWVsZCAoeyBpZE9mLCBsYWJlbHMsIHZhbHVlcywgb25VcGRhdGUgfSkge1xuICAgIHJldHVybiAoXG4gICAgICA8QXBGaWVsZD5cbiAgICAgICAgPEFwRmllbGRMYWJlbCBodG1sRm9yPXsgaWRPZignZW1haWwnKSB9PlxuICAgICAgICAgIHsgbGFiZWxzWyAnZW1haWwnIF0gfVxuICAgICAgICA8L0FwRmllbGRMYWJlbD5cbiAgICAgICAgPEFwRmllbGRWYWx1ZT5cbiAgICAgICAgICA8QXBUZXh0IGlkPXsgaWRPZignZW1haWwnKSB9XG4gICAgICAgICAgICAgICAgICBuYW1lPXsgJ2VtYWlsJyB9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17IHZhbHVlc1sgJ2VtYWlsJyBdIH1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKGUpID0+IG9uVXBkYXRlKHsgZW1haWw6IGUudGFyZ2V0LnZhbHVlIH0pIH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0FwRmllbGRWYWx1ZT5cbiAgICAgIDwvQXBGaWVsZD5cbiAgICApXG4gIH0sXG5cbiAgUGFzc3dvcmRGaWVsZCAoeyBpZE9mLCBsYWJlbHMsIHZhbHVlcywgb25VcGRhdGUgfSkge1xuICAgIHJldHVybiAoXG4gICAgICA8QXBGaWVsZD5cbiAgICAgICAgPEFwRmllbGRMYWJlbCBodG1sRm9yPXsgaWRPZigncGFzc3dvcmQnKSB9PlxuICAgICAgICAgIHsgbGFiZWxzWyAncGFzc3dvcmQnIF0gfVxuICAgICAgICA8L0FwRmllbGRMYWJlbD5cbiAgICAgICAgPEFwRmllbGRWYWx1ZT5cbiAgICAgICAgICA8QXBQYXNzd29yZCBpZD17IGlkT2YoJ3Bhc3N3b3JkJykgfVxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9eyAncGFzc3dvcmQnIH1cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17IHZhbHVlc1sgJ3Bhc3N3b3JkJyBdIH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17IChlKSA9PiBvblVwZGF0ZSh7IHBhc3N3b3JkOiBlLnRhcmdldC52YWx1ZSB9KSB9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9BcEZpZWxkVmFsdWU+XG4gICAgICA8L0FwRmllbGQ+XG4gICAgKVxuICB9LFxuXG4gIENhcHRjaGFGaWVsZCAoeyBpZE9mLCBsYWJlbHMsIHZhbHVlcywgb25VcGRhdGUsIHBsYWNlaG9sZGVycywgaW1hZ2VzLCBhY3Rpb25zLCBjYXB0Y2hhU3Bpbm5pbmcgfSkge1xuICAgIHJldHVybiAoXG4gICAgICA8QXBGaWVsZD5cbiAgICAgICAgPEFwRmllbGRMYWJlbCBodG1sRm9yPXsgaWRPZignY2FwdGNoYScpIH0+XG4gICAgICAgICAgeyBsYWJlbHNbICdjYXB0Y2hhJyBdIH1cbiAgICAgICAgPC9BcEZpZWxkTGFiZWw+XG4gICAgICAgIDxBcEZpZWxkVmFsdWU+XG4gICAgICAgICAgPEFwQ2FwdGNoYSBzcmM9eyBpbWFnZXNbICdjYXB0Y2hhJyBdIH1cbiAgICAgICAgICAgICAgICAgICAgIHNwaW5uaW5nPXsgY2FwdGNoYVNwaW5uaW5nIH1cbiAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hUZXh0PXsgbGFiZWxzWyAnY2FwdGNoYVJlZnJlc2gnIF0gfVxuICAgICAgICAgICAgICAgICAgICAgb25SZWZyZXNoPXsgYWN0aW9uc1sgJ2NhcHRjaGFSZWZyZXNoJyBdIH0+XG4gICAgICAgICAgPC9BcENhcHRjaGE+XG4gICAgICAgICAgPEFwVGV4dCBpZD17IGlkT2YoJ2NhcHRjaGEnKSB9XG4gICAgICAgICAgICAgICAgICBuYW1lPXsgJ2NhcHRjaGEnIH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXsgdmFsdWVzWyAnY2FwdGNoYScgXSB9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17IChlKSA9PiBvblVwZGF0ZSh7IGNhcHRjaGE6IGUudGFyZ2V0LnZhbHVlIH0pIH1cbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXsgcGxhY2Vob2xkZXJzWyAnY2FwdGNoYScgXSB9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9BcEZpZWxkVmFsdWU+XG4gICAgICA8L0FwRmllbGQ+XG4gICAgKVxuICB9LFxuXG4gIEJ1dHRvbkZpZWxkICh7IGlkT2YsIGxhYmVscywgdmFsdWVzLCBvblN1Ym1pdCB9KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxBcEZpZWxkIGNlbnRlciBjbGFzc05hbWU9J2FwLXNpZ251cC1mb3JtLWJ1dHRvbi1maWVsZCc+XG4gICAgICAgIDxBcEJ1dHRvbiBpZD17IGlkT2YoJ3N1Ym1pdCcpIH1cbiAgICAgICAgICAgICAgICAgIG9uVGFwPXsgKCkgPT4gb25TdWJtaXQodmFsdWVzKSB9XG4gICAgICAgICAgICAgICAgICB3aWRlXG4gICAgICAgICAgICAgICAgICBwcmltYXJ5XG4gICAgICAgID57IGxhYmVsc1sgJ3N1Ym1pdCcgXSB9PC9BcEJ1dHRvbj5cbiAgICAgIDwvQXBGaWVsZD5cbiAgICApXG4gIH1cbn0pXG5cbmV4cG9ydCB7IEFwU2lnbmluRm9ybSB9XG5leHBvcnQgZGVmYXVsdCB3aXRoRm9ybShBcFNpZ25pbkZvcm0pXG4iXX0=