@steedos/accounts 1.23.42 → 1.23.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@steedos/accounts",
3
3
  "private": false,
4
- "version": "1.23.42",
4
+ "version": "1.23.43",
5
5
  "main": "lib/index.js",
6
6
  "files": [
7
7
  "/package.json",
@@ -50,9 +50,9 @@
50
50
  "validator": "^12.2.0"
51
51
  },
52
52
  "devDependencies": {
53
- "@steedos/auth": "^1.23.42",
54
- "@steedos/meteor-bundle-runner": "^1.23.42",
55
- "@steedos/objectql": "^1.23.42",
53
+ "@steedos/auth": "^1.23.43",
54
+ "@steedos/meteor-bundle-runner": "^1.23.43",
55
+ "@steedos/objectql": "^1.23.43",
56
56
  "@steedos/steedos-plugin-workflow": "^2.0.4",
57
57
  "@types/dotenv-flow": "^3.0.0",
58
58
  "@types/node": "12.6.8",
@@ -60,12 +60,12 @@
60
60
  "dotenv": "^8.2.0",
61
61
  "dotenv-flow": "^3.1.0",
62
62
  "nodemon": "1.19.1",
63
- "steedos-server": "^1.23.42",
63
+ "steedos-server": "^1.23.43",
64
64
  "ts-node": "8.3.0",
65
65
  "typescript": "3.5.3"
66
66
  },
67
67
  "publishConfig": {
68
68
  "access": "public"
69
69
  },
70
- "gitHead": "0566b1152b4dc333ccda4cf1151e7fc14089b2e5"
70
+ "gitHead": "ceb3afe807b1d8e7c86d69d031bee53c86129c0c"
71
71
  }
@@ -1,486 +0,0 @@
1
- "use strict";
2
- var _this = this;
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- var tslib_1 = require("tslib");
5
- var objectql_1 = require("@steedos/objectql");
6
- var send_error_1 = require("../../utils/send-error");
7
- var db_1 = require("../../../db");
8
- var core_1 = require("../../../core");
9
- var validator_1 = require("validator");
10
- var moment = require('moment');
11
- var ALLOW_ACTIONS = ['emailVerify', 'mobileVerify', 'emailLogin', 'mobileLogin', 'emailSignupAccount', 'mobileSignupAccount', 'mobileApplyLicense'];
12
- var EFFECTIVE_TIME = 10; //10分钟
13
- var CODE_LENGTH = 6;
14
- var MAX_FAILURE_COUNT = 10;
15
- /**
16
- * Return random 1-9 digit
17
- * @returns {number}
18
- */
19
- var getRandomDigit = function () {
20
- return Math.floor((Math.random() * 9) + 1);
21
- };
22
- /**
23
- * Get random verification code
24
- * @param length
25
- * @returns {string}
26
- */
27
- var getRandomCode = function (length) {
28
- length = length || 4;
29
- var output = "";
30
- while (length-- > 0) {
31
- output += getRandomDigit();
32
- }
33
- return output;
34
- };
35
- var t = function (key, options, lng) {
36
- return TAPi18n.__(key, options, lng);
37
- };
38
- var getEmailSubject = function (action, lng) {
39
- switch (action) {
40
- case 'emailLogin':
41
- return t("accounts_emailSubject_emailLogin", {}, lng);
42
- case 'emailVerify':
43
- return t("accounts_emailSubject_emailVerify", {}, lng);
44
- case 'emailSignupAccount':
45
- return t("accounts_emailSubject_emailSignupAccount", {}, lng);
46
- }
47
- };
48
- var getEmailBody = function (action, code, lng) {
49
- switch (action) {
50
- case 'emailLogin':
51
- return t('accounts_emailBody_emailLogin', { code: code, EFFECTIVE_TIME: EFFECTIVE_TIME }, lng);
52
- case 'emailVerify':
53
- return t('accounts_emailBody_emailVerify', { code: code, EFFECTIVE_TIME: EFFECTIVE_TIME }, lng);
54
- case 'emailSignupAccount':
55
- return t('accounts_emailBody_emailSignupAccount', { code: code, EFFECTIVE_TIME: EFFECTIVE_TIME }, lng);
56
- }
57
- };
58
- function sendEmail(to, subject, html, lng) {
59
- var config = objectql_1.getSteedosConfig().email || {};
60
- var canSend = core_1.canSendEmail();
61
- //如果没有配置发送邮件服务,则打印log
62
- if (!canSend) {
63
- console.log("Please set email configs in steedos-config.yml");
64
- console.log({
65
- to: to,
66
- subject: subject,
67
- html: html
68
- });
69
- return;
70
- }
71
- else {
72
- MailQueue.send({
73
- to: to,
74
- from: config.from || "华炎魔方",
75
- subject: subject,
76
- html: html
77
- });
78
- }
79
- }
80
- function sendSMS(mobile, code, spaceId, lng) {
81
- var message = t('accounts_sms_message', { code: code, EFFECTIVE_TIME: EFFECTIVE_TIME }, lng);
82
- var canSend = core_1.canSendSMS();
83
- if (!canSend) {
84
- console.log("Please set sms configs in steedos-config.yml");
85
- console.log(message);
86
- return;
87
- }
88
- else {
89
- SMSQueue.send({
90
- RecNum: mobile,
91
- msg: message
92
- }, spaceId);
93
- }
94
- }
95
- function sendCode(owner, name, action, spaceId, lng) {
96
- return tslib_1.__awaiter(this, void 0, void 0, function () {
97
- var now, filters, records, record, doc;
98
- return tslib_1.__generator(this, function (_a) {
99
- switch (_a.label) {
100
- case 0:
101
- now = new Date();
102
- filters = [['verifiedAt', '=', null]];
103
- if (owner) {
104
- filters.push(['owner', '=', owner]);
105
- }
106
- filters.push(['name', '=', name]);
107
- filters.push(['action', '=', action]);
108
- filters.push(['expiredAt', '>', now]);
109
- if (spaceId) {
110
- filters.push(['space', '=', spaceId]);
111
- }
112
- return [4 /*yield*/, db_1.db.find('users_verify_code', { filters: filters })];
113
- case 1:
114
- records = _a.sent();
115
- if (!(records && records.length > 0)) return [3 /*break*/, 3];
116
- record = records[0];
117
- if (record.failureCount >= MAX_FAILURE_COUNT) {
118
- throw new Error('accounts.tooManyFailures');
119
- }
120
- return [4 /*yield*/, db_1.db.updateOne('users_verify_code', record._id, { expiredAt: new Date(moment().add(EFFECTIVE_TIME, 'm')) })];
121
- case 2:
122
- _a.sent();
123
- return [3 /*break*/, 5];
124
- case 3:
125
- doc = {
126
- name: name, action: action, owner: owner, code: getRandomCode(CODE_LENGTH), expiredAt: new Date(moment().add(EFFECTIVE_TIME, 'm'))
127
- };
128
- if (spaceId) {
129
- doc.space = spaceId;
130
- }
131
- return [4 /*yield*/, db_1.db.insert('users_verify_code', doc)];
132
- case 4:
133
- record = _a.sent();
134
- _a.label = 5;
135
- case 5:
136
- if (action.startsWith("email")) {
137
- sendEmail(name, getEmailSubject(action, lng), getEmailBody(action, record.code, lng), lng);
138
- }
139
- else if (action.startsWith("mobile")) {
140
- sendSMS(name, record.code, spaceId, lng);
141
- }
142
- return [2 /*return*/, record._id];
143
- }
144
- });
145
- });
146
- }
147
- function checkMobile(mobile, config) {
148
- if (config.mobile_phone_locales) {
149
- return !(mobile.startsWith('+') || !validator_1.default.isMobilePhone(mobile, config.mobile_phone_locales || ['zh-CN']));
150
- }
151
- else {
152
- var mobileReg = config.mobile_regexp || '^[0-9]{11}$';
153
- return new RegExp(mobileReg).test(mobile);
154
- }
155
- }
156
- exports.applyCode = function (accountsServer) { return function (req, res) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
157
- var steedosConfig, tenantConfig, config, action, name, token, spaceId, accessToken, lng, record, _a, _b, verifyMobileUser, session, users, filters, users, user, err_1;
158
- return tslib_1.__generator(this, function (_c) {
159
- switch (_c.label) {
160
- case 0:
161
- _c.trys.push([0, 19, , 20]);
162
- steedosConfig = objectql_1.getSteedosConfig();
163
- tenantConfig = steedosConfig.tenant;
164
- config = steedosConfig.accounts || {};
165
- action = req.body.action;
166
- name = req.body.name;
167
- token = req.body.token;
168
- spaceId = req.body.spaceId;
169
- accessToken = req.body.accessToken;
170
- lng = req.body.lng || 'zh-CN';
171
- if (!token) return [3 /*break*/, 2];
172
- return [4 /*yield*/, db_1.db.findOne("users_verify_code", token, {})];
173
- case 1:
174
- record = _c.sent();
175
- if (record) {
176
- name = record.name;
177
- action = record.action;
178
- spaceId = record.space;
179
- }
180
- else {
181
- throw new Error("accounts.invalidToken");
182
- }
183
- _c.label = 2;
184
- case 2:
185
- if (!action) {
186
- throw new Error("Action is required");
187
- }
188
- if (!name || !name.trim()) {
189
- throw new Error("Name is required");
190
- }
191
- if (ALLOW_ACTIONS.indexOf(action) < 0) {
192
- throw new Error("Invalid action");
193
- }
194
- _a = action.endsWith('SignupAccount');
195
- if (!_a) return [3 /*break*/, 4];
196
- return [4 /*yield*/, core_1.canRegister(spaceId, action)];
197
- case 3:
198
- _a = !(_c.sent());
199
- _c.label = 4;
200
- case 4:
201
- if (_a) {
202
- throw new Error('accounts.unenableRegister');
203
- }
204
- name = name.trim().toLowerCase();
205
- if (action.startsWith("email")) {
206
- if (!validator_1.default.isEmail(name)) {
207
- throw new Error("accounts.invalidEmail");
208
- }
209
- }
210
- _b = spaceId;
211
- if (!_b) return [3 /*break*/, 6];
212
- return [4 /*yield*/, core_1.spaceExists(spaceId)];
213
- case 5:
214
- _b = !(_c.sent());
215
- _c.label = 6;
216
- case 6:
217
- if (_b) {
218
- throw new Error("accounts.spaceUnExists");
219
- }
220
- if (action.startsWith("mobile")) {
221
- if (tenantConfig && !tenantConfig.enable_mobile_code_login) {
222
- if (['mobileLogin', 'mobileSignupAccount'].indexOf(action) > -1) {
223
- throw new Error("accounts.invalidMobile");
224
- }
225
- }
226
- if (!checkMobile(name, config)) {
227
- throw new Error("accounts.invalidMobile");
228
- }
229
- }
230
- verifyMobileUser = null;
231
- if (!(action === 'mobileVerify')) return [3 /*break*/, 10];
232
- if (!accessToken) {
233
- throw new Error("accounts.invalidRequest");
234
- }
235
- return [4 /*yield*/, accountsServer.findSessionByAccessToken(accessToken)];
236
- case 7:
237
- session = _c.sent();
238
- if (!session) {
239
- throw new Error("accounts.invalidRequest");
240
- }
241
- return [4 /*yield*/, accountsServer.findUserById(session.userId)];
242
- case 8:
243
- verifyMobileUser = _c.sent();
244
- if (!verifyMobileUser) {
245
- throw new Error("Not find user");
246
- }
247
- return [4 /*yield*/, db_1.db.find("users", { filters: [['mobile', '=', name], ['_id', '<>', verifyMobileUser.id]] })];
248
- case 9:
249
- users = _c.sent();
250
- if (users.length > 0) {
251
- throw new Error("accounts.mobileAlreadyExists");
252
- }
253
- _c.label = 10;
254
- case 10:
255
- filters = void 0;
256
- if (action.startsWith("email")) {
257
- filters = ['email', '=', name];
258
- }
259
- else if (action.startsWith("mobile")) {
260
- filters = ['mobile', '=', name];
261
- }
262
- if (action === "mobileVerify") {
263
- filters = ['_id', '=', verifyMobileUser.id];
264
- }
265
- if (!(filters.length > 0)) return [3 /*break*/, 17];
266
- return [4 /*yield*/, db_1.db.find("users", { filters: filters })];
267
- case 11:
268
- users = _c.sent();
269
- if (!((users.length === 0 && action.endsWith('SignupAccount')) || action === 'mobileApplyLicense')) return [3 /*break*/, 13];
270
- return [4 /*yield*/, sendCode(null, name, action, spaceId, lng)];
271
- case 12:
272
- token = _c.sent();
273
- return [2 /*return*/, res.send({
274
- token: token
275
- })];
276
- case 13:
277
- if (!(users.length === 1)) return [3 /*break*/, 15];
278
- user = users[0];
279
- return [4 /*yield*/, sendCode(user._id, name, action, spaceId, lng)];
280
- case 14:
281
- token = _c.sent();
282
- return [2 /*return*/, res.send({
283
- token: token
284
- })];
285
- case 15: throw new Error("无效的name");
286
- case 16: return [3 /*break*/, 18];
287
- case 17: throw new Error("accounts.invalidRequest");
288
- case 18: return [3 /*break*/, 20];
289
- case 19:
290
- err_1 = _c.sent();
291
- send_error_1.sendError(res, err_1);
292
- return [3 /*break*/, 20];
293
- case 20: return [2 /*return*/];
294
- }
295
- });
296
- }); }; };
297
- // export const verifyCodeAPI = () => async (
298
- // req: express.Request,
299
- // res: express.Response
300
- // ) => {
301
- // const now: any = new Date();
302
- // try {
303
- // let token = req.body.token;
304
- // let code = req.body.code;
305
- // let userId = req.body.userId;
306
- // let verified = await verifyCode(userId, token, code);
307
- // if (verified) {
308
- // return res.send({
309
- // verified
310
- // });
311
- // }
312
- // } catch (err) {
313
- // sendError(res, err);
314
- // }
315
- // };
316
- exports.getUserIdByToken = function () { return function (req, res) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
317
- var now, token, record, now_1, isEffective, err_2;
318
- return tslib_1.__generator(this, function (_a) {
319
- switch (_a.label) {
320
- case 0:
321
- now = new Date();
322
- _a.label = 1;
323
- case 1:
324
- _a.trys.push([1, 4, , 5]);
325
- token = req.query.token;
326
- return [4 /*yield*/, db_1.db.findOne('users_verify_code', token, {})];
327
- case 2:
328
- record = _a.sent();
329
- if (!record) {
330
- throw new Error("accounts.invalidRequest");
331
- }
332
- now_1 = new Date();
333
- return [4 /*yield*/, db_1.db.count('users_verify_code', { filters: [['_id', '=', token], ['verifiedAt', '=', null], ['expiredAt', '>', now_1]] })];
334
- case 3:
335
- isEffective = _a.sent();
336
- return [2 /*return*/, res.send({
337
- id: record.owner,
338
- name: record.name,
339
- action: record.action,
340
- expired: !isEffective
341
- })];
342
- case 4:
343
- err_2 = _a.sent();
344
- send_error_1.sendError(res, err_2);
345
- return [3 /*break*/, 5];
346
- case 5: return [2 /*return*/];
347
- }
348
- });
349
- }); }; };
350
- exports.getVerifyRecord = function (token) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
351
- return tslib_1.__generator(this, function (_a) {
352
- switch (_a.label) {
353
- case 0: return [4 /*yield*/, db_1.db.findOne('users_verify_code', token, {})];
354
- case 1: return [2 /*return*/, _a.sent()];
355
- }
356
- });
357
- }); };
358
- exports.verifyCode = function (owner, token, code, options) {
359
- if (options === void 0) { options = {}; }
360
- return tslib_1.__awaiter(_this, void 0, void 0, function () {
361
- var now, failureCount, recordByToken, filters, record, userId, error_1;
362
- return tslib_1.__generator(this, function (_a) {
363
- switch (_a.label) {
364
- case 0:
365
- now = new Date();
366
- if (!token) {
367
- throw new Error("accounts.invalidToken");
368
- }
369
- if (!code) {
370
- throw new Error("accounts.codeRequired");
371
- }
372
- failureCount = 0;
373
- return [4 /*yield*/, db_1.db.findOne('users_verify_code', token, { fields: 'failureCount' })];
374
- case 1:
375
- recordByToken = _a.sent();
376
- if (recordByToken) {
377
- failureCount = recordByToken.failureCount || 0;
378
- }
379
- if (failureCount >= MAX_FAILURE_COUNT) {
380
- throw new Error('accounts.tooManyFailures');
381
- }
382
- filters = [['code', '=', code], ['verifiedAt', '=', null], ['expiredAt', '>', now]];
383
- if (owner) {
384
- filters.push(['owner', '=', owner]);
385
- }
386
- return [4 /*yield*/, db_1.db.findOne('users_verify_code', token, { filters: filters })];
387
- case 2:
388
- record = _a.sent();
389
- if (!record) return [3 /*break*/, 8];
390
- return [4 /*yield*/, db_1.db.updateOne('users_verify_code', record._id, { verifiedAt: now })];
391
- case 3:
392
- _a.sent();
393
- _a.label = 4;
394
- case 4:
395
- _a.trys.push([4, 6, , 7]);
396
- return [4 /*yield*/, exports.handleAction(token, options)];
397
- case 5:
398
- userId = _a.sent();
399
- return [2 /*return*/, {
400
- verified: true,
401
- userId: userId
402
- }];
403
- case 6:
404
- error_1 = _a.sent();
405
- console.log(error_1);
406
- throw new Error("accounts.serverError");
407
- case 7: return [3 /*break*/, 9];
408
- case 8:
409
- if (recordByToken) {
410
- db_1.db.updateOne('users_verify_code', token, { failureCount: failureCount + 1 });
411
- }
412
- throw new Error("accounts.invalidCode");
413
- case 9: return [2 /*return*/];
414
- }
415
- });
416
- });
417
- };
418
- /**
419
- * 返回userId
420
- * @param token
421
- * @param options
422
- */
423
- exports.handleAction = function (token, options) {
424
- if (options === void 0) { options = {}; }
425
- return tslib_1.__awaiter(this, void 0, void 0, function () {
426
- var record, handleUserId, user, filters, findUsers, userId;
427
- return tslib_1.__generator(this, function (_a) {
428
- switch (_a.label) {
429
- case 0: return [4 /*yield*/, exports.getVerifyRecord(token)];
430
- case 1:
431
- record = _a.sent();
432
- handleUserId = record.owner;
433
- if (!record.action.endsWith('SignupAccount')) return [3 /*break*/, 7];
434
- if (!record.owner) return [3 /*break*/, 2];
435
- if (record.space) {
436
- Creator.addSpaceUsers(record.space, record.owner, true);
437
- }
438
- return [3 /*break*/, 7];
439
- case 2:
440
- user = {
441
- locale: options.locale || 'zh-cn',
442
- name: options.name,
443
- };
444
- filters = [];
445
- if (record.action.startsWith('email')) {
446
- user.email = record.name;
447
- user.email_verified = true;
448
- filters.push(['email', '=', user.email]);
449
- }
450
- else if (record.action.startsWith('mobile')) {
451
- user.mobile = record.name;
452
- user.mobile_verified = true;
453
- filters.push(['mobile', '=', user.mobile]);
454
- }
455
- return [4 /*yield*/, db_1.db.find('users', { filters: filters, fields: ['_id'] })];
456
- case 3:
457
- findUsers = _a.sent();
458
- if (!(findUsers.length > 0)) return [3 /*break*/, 4];
459
- handleUserId = findUsers[0]._id;
460
- return [3 /*break*/, 6];
461
- case 4: return [4 /*yield*/, options.server.createUser(user)];
462
- case 5:
463
- userId = _a.sent();
464
- handleUserId = userId;
465
- _a.label = 6;
466
- case 6:
467
- if (record.space) {
468
- Creator.addSpaceUsers(record.space, handleUserId, true);
469
- }
470
- _a.label = 7;
471
- case 7:
472
- if (record.action === 'mobileVerify') {
473
- Steedos.setMobile(handleUserId, record.name);
474
- }
475
- if (record.action.startsWith("email")) {
476
- Steedos.setEmailVerified(handleUserId, record.name, true);
477
- }
478
- else if (record.action != 'mobileApplyLicense' && record.action.startsWith("mobile")) {
479
- Steedos.setMobileVerified(handleUserId, record.name, true);
480
- }
481
- return [2 /*return*/, handleUserId];
482
- }
483
- });
484
- });
485
- };
486
- //# sourceMappingURL=verify_code.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"verify_code.js","sourceRoot":"","sources":["../../../../src/rest-express/endpoints/steedos/verify_code.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- {
2
- "files": {
3
- "main.js": "/accounts/a/static/js/main.8aaa42cc.chunk.js",
4
- "main.js.map": "/accounts/a/static/js/main.8aaa42cc.chunk.js.map",
5
- "runtime-main.js": "/accounts/a/static/js/runtime-main.fcbf19ad.js",
6
- "runtime-main.js.map": "/accounts/a/static/js/runtime-main.fcbf19ad.js.map",
7
- "static/js/2.3c20252e.chunk.js": "/accounts/a/static/js/2.3c20252e.chunk.js",
8
- "static/js/2.3c20252e.chunk.js.map": "/accounts/a/static/js/2.3c20252e.chunk.js.map",
9
- "index.html": "/accounts/a/index.html",
10
- "precache-manifest.be3fffe848ef3448b739207c45fd552a.js": "/accounts/a/precache-manifest.be3fffe848ef3448b739207c45fd552a.js",
11
- "service-worker.js": "/accounts/a/service-worker.js"
12
- },
13
- "entrypoints": [
14
- "static/js/runtime-main.fcbf19ad.js",
15
- "static/js/2.3c20252e.chunk.js",
16
- "static/js/main.8aaa42cc.chunk.js"
17
- ]
18
- }
@@ -1,76 +0,0 @@
1
- <html>
2
-
3
- <head>
4
- <meta charset="utf-8">
5
- <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
6
- <meta name="renderer" content="webkit">
7
- <meta name="viewport"
8
- content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no,shrink-to-fit=no">
9
- <title>华炎云</title>
10
- <style>
11
- html,
12
- body {
13
- position: relative;
14
- height: 100%;
15
- width: 100%;
16
- margin: 0;
17
- }
18
-
19
- .app-shell-not-support {
20
- position: absolute;
21
- top: 50%;
22
- left: 50%;
23
- width: 470px;
24
- height: auto;
25
- background: none;
26
- transform: translate(-50%, -50%);
27
- text-align: center;
28
- font-family: "PingFangSC", sans-serif;
29
- }
30
-
31
- .not-support-bg {
32
- width: 100%;
33
- margin-bottom: 3px;
34
- }
35
-
36
- .button {
37
- display: block;
38
- width: 120px;
39
- height: 32px;
40
- border-radius: 4px;
41
- margin-left: 50%;
42
- margin-top: 16px;
43
- transform: translateX(-50%);
44
- line-height: 32px;
45
- background-color: #3377ff;
46
- font-size: 14px;
47
- color: #fff;
48
- cursor: pointer;
49
- user-select: none;
50
- text-decoration: none;
51
- }
52
-
53
- @media (max-width: 600px) {
54
- .app-shell-not-support {
55
- width: 78%;
56
- min-width: 250px;
57
- }
58
- }
59
-
60
- @media (max-width: 400px) {
61
- .app-shell-not-support {
62
- font-size: 12px;
63
- }
64
- }
65
- </style>
66
- </head>
67
-
68
- <body id="root">
69
- <div class="app-shell-not-support">
70
- <img class="not-support-bg" src="images/unsupported.png">
71
- <div><span>我们暂不支持该浏览器,推荐使用华炎客户端访问</span></div>
72
- <a class="button" target="_blank" href="https://www.steedos.com/help/download">下载客户端</a>
73
- </div>
74
- </body>
75
-
76
- </html>
@@ -1,3 +0,0 @@
1
- body {
2
- background-color: #f8f8f8;
3
- }