1 | /**
|
2 | * Dialog to confirm.
|
3 | * @class ApConfirmDialog
|
4 | */
|
5 |
|
6 | ;
|
7 |
|
8 | Object.defineProperty(exports, "__esModule", {
|
9 | value: true
|
10 | });
|
11 |
|
12 | var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
13 |
|
14 | var _react = require('react');
|
15 |
|
16 | var _react2 = _interopRequireDefault(_react);
|
17 |
|
18 | var _classnames = require('classnames');
|
19 |
|
20 | var _classnames2 = _interopRequireDefault(_classnames);
|
21 |
|
22 | var _apemanReactCheckbox = require('apeman-react-checkbox');
|
23 |
|
24 | var _apemanReactButton = require('apeman-react-button');
|
25 |
|
26 | var _apemanReactMixinPure = require('apeman-react-mixin-pure');
|
27 |
|
28 | var _ap_dialog = require('./ap_dialog');
|
29 |
|
30 | var _ap_dialog2 = _interopRequireDefault(_ap_dialog);
|
31 |
|
32 | var _uuid = require('uuid');
|
33 |
|
34 | var _uuid2 = _interopRequireDefault(_uuid);
|
35 |
|
36 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
37 |
|
38 | /** lends ApConfirmDialog */
|
39 | var ApConfirmDialog = _react2.default.createClass({
|
40 | displayName: 'ApConfirmDialog',
|
41 |
|
42 |
|
43 | // --------------------
|
44 | // Specs
|
45 | // --------------------
|
46 |
|
47 | propTypes: {
|
48 | present: _react.PropTypes.bool.isRequired,
|
49 | /** Handler for submit event */
|
50 | onSubmit: _react.PropTypes.func,
|
51 | /** Handler for cancel event */
|
52 | onCancel: _react.PropTypes.func,
|
53 | /** Dialog title */
|
54 | title: _react.PropTypes.string,
|
55 | /** Dialog message */
|
56 | message: _react.PropTypes.string,
|
57 | /** Id of checkbox */
|
58 | checkboxId: _react.PropTypes.string,
|
59 | /** Name of checkbox */
|
60 | checkboxName: _react.PropTypes.string,
|
61 | /** Label text of checkbox */
|
62 | checkboxText: _react.PropTypes.string,
|
63 | /** Errot text when not checked */
|
64 | errorText: _react.PropTypes.string,
|
65 | /** Submit button text */
|
66 | submitText: _react.PropTypes.string
|
67 | },
|
68 |
|
69 | mixins: [_apemanReactMixinPure.ApPureMixin],
|
70 |
|
71 | statics: {},
|
72 |
|
73 | getInitialState: function getInitialState() {
|
74 | return {
|
75 | checked: false,
|
76 | errored: false
|
77 | };
|
78 | },
|
79 | getDefaultProps: function getDefaultProps() {
|
80 | var id = _uuid2.default.v4().replace(/\-/g, '');
|
81 | return {
|
82 | onSubmit: null,
|
83 | onCancel: null,
|
84 | checkboxId: 'ap-confirm-dialog-checkbox-' + id,
|
85 | checkboxName: 'ap-confirm-check-' + id,
|
86 | checkboxText: null,
|
87 | submitText: 'submit',
|
88 | errorText: 'Needs check before submit.',
|
89 | message: 'Once destroyed, there is no going back. Please be certain.'
|
90 | };
|
91 | },
|
92 | render: function render() {
|
93 | var s = this;
|
94 | var state = s.state;
|
95 | var props = s.props;
|
96 |
|
97 | if (!props.present) {
|
98 | return null;
|
99 | }
|
100 | return _react2.default.createElement(
|
101 | _ap_dialog2.default,
|
102 | _extends({ className: (0, _classnames2.default)('ap-confirm-dialog', props.className),
|
103 | style: Object.assign({}, props.style),
|
104 | onClose: s.handleCancel
|
105 | }, props),
|
106 | _react2.default.createElement(
|
107 | 'p',
|
108 | { className: 'ap-confirm-dialog-message' },
|
109 | props.message
|
110 | ),
|
111 | _react2.default.createElement(
|
112 | 'div',
|
113 | null,
|
114 | props.children
|
115 | ),
|
116 | _react2.default.createElement(
|
117 | 'div',
|
118 | { className: 'ap-confirm-dialog-control' },
|
119 | s._renderError(state.errored),
|
120 | s._renderCheckbox(state.checked),
|
121 | s._renderSubmitButton(state.checked)
|
122 | )
|
123 | );
|
124 | },
|
125 | toggleCheckbox: function toggleCheckbox() {
|
126 | var s = this;
|
127 | var state = s.state;
|
128 | s.setState({
|
129 | checked: !state.checked,
|
130 | errored: false
|
131 | });
|
132 | },
|
133 | handleSubmit: function handleSubmit(e) {
|
134 | var s = this;
|
135 | var state = s.state;
|
136 | var props = s.props;
|
137 |
|
138 | if (!state.checked) {
|
139 | s.setState({
|
140 | errored: true
|
141 | });
|
142 | return;
|
143 | }
|
144 | s.setState({
|
145 | errored: false
|
146 | });
|
147 | if (props.onSubmit) {
|
148 | props.onSubmit(e);
|
149 | }
|
150 | },
|
151 | handleCancel: function handleCancel(e) {
|
152 | var s = this;
|
153 | var props = s.props;
|
154 |
|
155 | s.setState({ errored: false });
|
156 | if (props.onCancel) {
|
157 | props.onCancel(e);
|
158 | }
|
159 | },
|
160 |
|
161 |
|
162 | // ------------------
|
163 | // Private
|
164 | // ------------------
|
165 | _renderError: function _renderError(errored) {
|
166 | var s = this;
|
167 | var props = s.props;
|
168 |
|
169 | if (!errored) {
|
170 | return null;
|
171 | }
|
172 | return _react2.default.createElement(
|
173 | 'div',
|
174 | { className: 'ap-confirm-dialog-err' },
|
175 | _react2.default.createElement(
|
176 | 'span',
|
177 | null,
|
178 | props.errorText
|
179 | )
|
180 | );
|
181 | },
|
182 | _renderCheckbox: function _renderCheckbox(checked) {
|
183 | var s = this;
|
184 | var props = s.props;
|
185 |
|
186 | return _react2.default.createElement(
|
187 | 'div',
|
188 | null,
|
189 | _react2.default.createElement(_apemanReactCheckbox.ApCheckbox, { className: 'ap-confirm-dialog-checkbox',
|
190 | checked: checked,
|
191 | name: props.checkboxName,
|
192 | id: props.checkboxId,
|
193 | title: props.checkboxText,
|
194 | onChange: s.toggleCheckbox,
|
195 | value: 'YES'
|
196 |
|
197 | })
|
198 | );
|
199 | },
|
200 | _renderSubmitButton: function _renderSubmitButton(checked) {
|
201 | var s = this;
|
202 | var props = s.props;
|
203 |
|
204 | return _react2.default.createElement(
|
205 | _apemanReactButton.ApButton,
|
206 | { onTap: s.handleSubmit,
|
207 | disabled: false,
|
208 | primary: true,
|
209 | className: (0, _classnames2.default)('ap-confirm-dialog-button', {
|
210 | 'ap-confirm-dialog-button-disabled': !checked
|
211 | }) },
|
212 | _react2.default.createElement(
|
213 | 'span',
|
214 | { className: 'ap-confirm-dialog-button-text' },
|
215 | props.submitText
|
216 | )
|
217 | );
|
218 | }
|
219 | });
|
220 |
|
221 | exports.default = ApConfirmDialog;
|
222 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwX2NvbmZpcm1fZGlhbG9nLmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUtBOzs7Ozs7OztBQUVBOzs7O0FBQ0E7Ozs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQUNBOzs7Ozs7O0FBR0EsSUFBTSxrQkFBa0IsZ0JBQU0sV0FBTixDQUFrQjtBQUFBOzs7Ozs7O0FBTXhDLGFBQVc7QUFDVCxhQUFTLGlCQUFNLElBQU4sQ0FBVyxVQURYOztBQUdULGNBQVUsaUJBQU0sSUFIUDs7QUFLVCxjQUFVLGlCQUFNLElBTFA7O0FBT1QsV0FBTyxpQkFBTSxNQVBKOztBQVNULGFBQVMsaUJBQU0sTUFUTjs7QUFXVCxnQkFBWSxpQkFBTSxNQVhUOztBQWFULGtCQUFjLGlCQUFNLE1BYlg7O0FBZVQsa0JBQWMsaUJBQU0sTUFmWDs7QUFpQlQsZUFBVyxpQkFBTSxNQWpCUjs7QUFtQlQsZ0JBQVksaUJBQU07QUFuQlQsR0FONkI7O0FBNEJ4QyxVQUFRLG1DQTVCZ0M7O0FBZ0N4QyxXQUFTLEVBaEMrQjs7QUFrQ3hDLGlCQWxDd0MsNkJBa0NyQjtBQUNqQixXQUFPO0FBQ0wsZUFBUyxLQURKO0FBRUwsZUFBUztBQUZKLEtBQVA7QUFJRCxHQXZDdUM7QUF5Q3hDLGlCQXpDd0MsNkJBeUNyQjtBQUNqQixRQUFJLEtBQUssZUFBSyxFQUFMLEdBQVUsT0FBVixDQUFrQixLQUFsQixFQUF5QixFQUF6QixDQUFUO0FBQ0EsV0FBTztBQUNMLGdCQUFVLElBREw7QUFFTCxnQkFBVSxJQUZMO0FBR0wsa0RBQTBDLEVBSHJDO0FBSUwsMENBQWtDLEVBSjdCO0FBS0wsb0JBQWMsSUFMVDtBQU1MLGtCQUFZLFFBTlA7QUFPTCxpQkFBVyw0QkFQTjtBQVFMLGVBQVM7QUFSSixLQUFQO0FBVUQsR0FyRHVDO0FBdUR4QyxRQXZEd0Msb0JBdUQ5QjtBQUNSLFFBQU0sSUFBSSxJQUFWO0FBRFEsUUFFRixLQUZFLEdBRWUsQ0FGZixDQUVGLEtBRkU7QUFBQSxRQUVLLEtB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QUFXLEtBRHJCO0FBRVUsaUJBQVUsSUFGcEI7QUFHVSxtQkFBWSwwQkFBVywwQkFBWCxFQUF1QztBQUN2QywrQ0FBcUMsQ0FBQztBQURDLFNBQXZDLENBSHRCO01BTUU7QUFBQTtRQUFBLEVBQU0sV0FBVSwrQkFBaEI7UUFBa0QsTUFBTTtBQUF4RDtBQU5GLEtBREY7QUFVRDtBQWhLdUMsQ0FBbEIsQ0FBeEI7O2tCQW9LZSxlIiwiZmlsZSI6ImFwX2NvbmZpcm1fZGlhbG9nLmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9va3VuaXNoaW5pc2hpL1Byb2plY3RzL2FwZW1hbi1wcm9qZWN0cy9hcGVtYW4tcmVhY3QtZGlhbG9nL2xpYiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRGlhbG9nIHRvIGNvbmZpcm0uXG4gKiBAY2xhc3MgQXBDb25maXJtRGlhbG9nXG4gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbmltcG9ydCBSZWFjdCwge1Byb3BUeXBlcyBhcyB0eXBlc30gZnJvbSAncmVhY3QnXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJ1xuXG5pbXBvcnQge0FwQ2hlY2tib3h9IGZyb20gJ2FwZW1hbi1yZWFjdC1jaGVja2JveCdcbmltcG9ydCB7QXBCdXR0b259IGZyb20gJ2FwZW1hbi1yZWFjdC1idXR0b24nXG5pbXBvcnQge0FwUHVyZU1peGlufSBmcm9tICdhcGVtYW4tcmVhY3QtbWl4aW4tcHVyZSdcbmltcG9ydCBBcERpYWxvZyBmcm9tICcuL2FwX2RpYWxvZydcbmltcG9ydCB1dWlkIGZyb20gJ3V1aWQnXG5cbi8qKiBsZW5kcyBBcENvbmZpcm1EaWFsb2cgKi9cbmNvbnN0IEFwQ29uZmlybURpYWxvZyA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBTcGVjc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIHByb3BUeXBlczoge1xuICAgIHByZXNlbnQ6IHR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICAvKiogSGFuZGxlciBmb3Igc3VibWl0IGV2ZW50ICovXG4gICAgb25TdWJtaXQ6IHR5cGVzLmZ1bmMsXG4gICAgLyoqIEhhbmRsZXIgZm9yIGNhbmNlbCBldmVudCAqL1xuICAgIG9uQ2FuY2VsOiB0eXBlcy5mdW5jLFxuICAgIC8qKiBEaWFsb2cgdGl0bGUgKi9cbiAgICB0aXRsZTogdHlwZXMuc3RyaW5nLFxuICAgIC8qKiBEaWFsb2cgbWVzc2FnZSAqL1xuICAgIG1lc3NhZ2U6IHR5cGVzLnN0cmluZyxcbiAgICAvKiogSWQgb2YgY2hlY2tib3ggKi9cbiAgICBjaGVja2JveElkOiB0eXBlcy5zdHJpbmcsXG4gICAgLyoqIE5hbWUgb2YgY2hlY2tib3ggKi9cbiAgICBjaGVja2JveE5hbWU6IHR5cGVzLnN0cmluZyxcbiAgICAvKiogTGFiZWwgdGV4dCBvZiBjaGVja2JveCAqL1xuICAgIGNoZWNrYm94VGV4dDogdHlwZXMuc3RyaW5nLFxuICAgIC8qKiBFcnJvdCB0ZXh0IHdoZW4gbm90IGNoZWNrZWQgKi9cbiAgICBlcnJvclRleHQ6IHR5cGVzLnN0cmluZyxcbiAgICAvKiogU3VibWl0IGJ1dHRvbiB0ZXh0ICovXG4gICAgc3VibWl0VGV4dDogdHlwZXMuc3RyaW5nXG4gIH0sXG5cbiAgbWl4aW5zOiBbXG4gICAgQXBQdXJlTWl4aW5cbiAgXSxcblxuICBzdGF0aWNzOiB7fSxcblxuICBnZXRJbml0aWFsU3RhdGUgKCkge1xuICAgIHJldHVybiB7XG4gICAgICBjaGVja2VkOiBmYWxzZSxcbiAgICAgIGVycm9yZWQ6IGZhbHNlXG4gICAgfVxuICB9LFxuXG4gIGdldERlZmF1bHRQcm9wcyAoKSB7XG4gICAgbGV0IGlkID0gdXVpZC52NCgpLnJlcGxhY2UoL1xcLS9nLCAnJylcbiAgICByZXR1cm4ge1xuICAgICAgb25TdWJtaXQ6IG51bGwsXG4gICAgICBvbkNhbmNlbDogbnVsbCxcbiAgICAgIGNoZWNrYm94SWQ6IGBhcC1jb25maXJtLWRpYWxvZy1jaGVja2JveC0ke2lkfWAsXG4gICAgICBjaGVja2JveE5hbWU6IGBhcC1jb25maXJtLWNoZWNrLSR7aWR9YCxcbiAgICAgIGNoZWNrYm94VGV4dDogbnVsbCxcbiAgICAgIHN1Ym1pdFRleHQ6ICdzdWJtaXQnLFxuICAgICAgZXJyb3JUZXh0OiAnTmVlZHMgY2hlY2sgYmVmb3JlIHN1Ym1pdC4nLFxuICAgICAgbWVzc2FnZTogJ09uY2UgZGVzdHJveWVkLCB0aGVyZSBpcyBubyBnb2luZyBiYWNrLiBQbGVhc2UgYmUgY2VydGFpbi4nXG4gICAgfVxuICB9LFxuXG4gIHJlbmRlciAoKSB7XG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICBsZXQgeyBzdGF0ZSwgcHJvcHMgfSA9IHNcbiAgICBpZiAoIXByb3BzLnByZXNlbnQpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICA8QXBEaWFsb2cgY2xhc3NOYW1lPXsgY2xhc3NuYW1lcygnYXAtY29uZmlybS1kaWFsb2cnLCBwcm9wcy5jbGFzc05hbWUpIH1cbiAgICAgICAgICAgICAgICBzdHlsZT17IE9iamVjdC5hc3NpZ24oe30sIHByb3BzLnN0eWxlKSB9XG4gICAgICAgICAgICAgICAgb25DbG9zZT17IHMuaGFuZGxlQ2FuY2VsIH1cbiAgICAgICAgeyAuLi5wcm9wcyB9XG4gICAgICA+XG4gICAgICAgIDxwIGNsYXNzTmFtZT1cImFwLWNvbmZpcm0tZGlhbG9nLW1lc3NhZ2VcIj5cbiAgICAgICAgICB7IHByb3BzLm1lc3NhZ2UgfVxuICAgICAgICA8L3A+XG4gICAgICAgIDxkaXY+eyBwcm9wcy5jaGlsZHJlbiB9PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYXAtY29uZmlybS1kaWFsb2ctY29udHJvbFwiPlxuICAgICAgICAgIHsgcy5fcmVuZGVyRXJyb3Ioc3RhdGUuZXJyb3JlZCkgfVxuICAgICAgICAgIHsgcy5fcmVuZGVyQ2hlY2tib3goc3RhdGUuY2hlY2tlZCkgfVxuICAgICAgICAgIHsgcy5fcmVuZGVyU3VibWl0QnV0dG9uKHN0YXRlLmNoZWNrZWQpIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L0FwRGlhbG9nPlxuICAgIClcbiAgfSxcblxuICB0b2dnbGVDaGVja2JveCgpIHtcbiAgICBjb25zdCBzID0gdGhpc1xuICAgIGxldCBzdGF0ZSA9IHMuc3RhdGVcbiAgICBzLnNldFN0YXRlKHtcbiAgICAgIGNoZWNrZWQ6ICFzdGF0ZS5jaGVja2VkLFxuICAgICAgZXJyb3JlZDogZmFsc2VcbiAgICB9KVxuICB9LFxuXG4gIGhhbmRsZVN1Ym1pdChlKSB7XG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICBsZXQgeyBzdGF0ZSwgcHJvcHMgfSA9IHNcbiAgICBpZiAoIXN0YXRlLmNoZWNrZWQpIHtcbiAgICAgIHMuc2V0U3RhdGUoe1xuICAgICAgICBlcnJvcmVkOiB0cnVlXG4gICAgICB9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHMuc2V0U3RhdGUoe1xuICAgICAgZXJyb3JlZDogZmFsc2VcbiAgICB9KVxuICAgIGlmIChwcm9wcy5vblN1Ym1pdCkge1xuICAgICAgcHJvcHMub25TdWJtaXQoZSlcbiAgICB9XG4gIH0sXG5cbiAgaGFuZGxlQ2FuY2VsKGUpIHtcbiAgICBjb25zdCBzID0gdGhpcyxcbiAgICAgIHsgcHJvcHMgfSA9IHNcbiAgICBzLnNldFN0YXRlKHsgZXJyb3JlZDogZmFsc2UgfSlcbiAgICBpZiAocHJvcHMub25DYW5jZWwpIHtcbiAgICAgIHByb3BzLm9uQ2FuY2VsKGUpXG4gICAgfVxuICB9LFxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBQcml2YXRlXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuICBfcmVuZGVyRXJyb3IoZXJyb3JlZCkge1xuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgbGV0IHsgcHJvcHMgfSA9IHNcbiAgICBpZiAoIWVycm9yZWQpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImFwLWNvbmZpcm0tZGlhbG9nLWVyclwiPlxuICAgICAgICA8c3Bhbj57IHByb3BzLmVycm9yVGV4dCB9PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9LFxuICBfcmVuZGVyQ2hlY2tib3ggKGNoZWNrZWQpIHtcbiAgICBjb25zdCBzID0gdGhpc1xuICAgIGxldCB7IHByb3BzIH0gPSBzXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXY+XG4gICAgICAgIDxBcENoZWNrYm94IGNsYXNzTmFtZT1cImFwLWNvbmZpcm0tZGlhbG9nLWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17IGNoZWNrZWQgfVxuICAgICAgICAgICAgICAgICAgICBuYW1lPXsgcHJvcHMuY2hlY2tib3hOYW1lIH1cbiAgICAgICAgICAgICAgICAgICAgaWQ9eyBwcm9wcy5jaGVja2JveElkIH1cbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9eyBwcm9wcy5jaGVja2JveFRleHQgfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17IHMudG9nZ2xlQ2hlY2tib3ggfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cIllFU1wiXG5cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfSxcbiAgX3JlbmRlclN1Ym1pdEJ1dHRvbiAoY2hlY2tlZCkge1xuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgbGV0IHsgcHJvcHMgfSA9IHNcbiAgICByZXR1cm4gKFxuICAgICAgPEFwQnV0dG9uIG9uVGFwPXsgcy5oYW5kbGVTdWJtaXQgfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXsgZmFsc2UgfVxuICAgICAgICAgICAgICAgIHByaW1hcnk9eyB0cnVlIH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyBjbGFzc25hbWVzKCdhcC1jb25maXJtLWRpYWxvZy1idXR0b24nLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FwLWNvbmZpcm0tZGlhbG9nLWJ1dHRvbi1kaXNhYmxlZCc6ICFjaGVja2VkXG4gICAgICAgICAgICAgICAgICAgICAgfSkgfT5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYXAtY29uZmlybS1kaWFsb2ctYnV0dG9uLXRleHRcIj57IHByb3BzLnN1Ym1pdFRleHQgfTwvc3Bhbj5cbiAgICAgIDwvQXBCdXR0b24+XG4gICAgKVxuICB9XG5cbn0pXG5cbmV4cG9ydCBkZWZhdWx0IEFwQ29uZmlybURpYWxvZ1xuIl19 |
\ | No newline at end of file |