@ikenxuan/amagi 3.1.1 → 3.2.0

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.
Files changed (42) hide show
  1. package/README.md +45 -34
  2. package/lib/business/bilibili/getdata.js +52 -27
  3. package/lib/business/bilibili/index.d.ts +1 -0
  4. package/lib/business/bilibili/index.js +2 -1
  5. package/lib/business/bilibili/result.js +14 -3
  6. package/lib/business/bilibili/sign/bv2av.d.ts +2 -0
  7. package/lib/business/bilibili/sign/bv2av.js +27 -0
  8. package/lib/business/douyin/getdata.js +12 -8
  9. package/lib/business/douyin/result.js +12 -3
  10. package/lib/business/index.d.ts +0 -1
  11. package/lib/business/index.js +1 -2
  12. package/lib/model/DataFetchers.d.ts +1 -14
  13. package/lib/model/DataFetchers.js +2 -18
  14. package/lib/model/logger.d.ts +14 -0
  15. package/lib/model/logger.js +13 -2
  16. package/lib/model/networks.js +4 -3
  17. package/lib/server/client.d.ts +12 -21
  18. package/lib/server/client.js +63 -39
  19. package/lib/test.js +7 -5
  20. package/lib/types/BilibiliAPIParams.d.ts +4 -1
  21. package/lib/types/DataType.d.ts +3 -7
  22. package/lib/types/DouyinAPIParams.d.ts +8 -3
  23. package/lib/types/OptionsType.d.ts +5 -12
  24. package/lib/types/index.d.ts +3 -4
  25. package/lib/types/index.js +1 -1
  26. package/package.json +7 -6
  27. package/lib/business/xiaohongshu/AIP.d.ts +0 -14
  28. package/lib/business/xiaohongshu/AIP.js +0 -17
  29. package/lib/business/xiaohongshu/getdata.d.ts +0 -13
  30. package/lib/business/xiaohongshu/getdata.js +0 -58
  31. package/lib/business/xiaohongshu/index.d.ts +0 -5
  32. package/lib/business/xiaohongshu/index.js +0 -6
  33. package/lib/business/xiaohongshu/result.d.ts +0 -9
  34. package/lib/business/xiaohongshu/result.js +0 -19
  35. package/lib/business/xiaohongshu/sign/generateX_S.d.ts +0 -2
  36. package/lib/business/xiaohongshu/sign/generateX_S.js +0 -207
  37. package/lib/business/xiaohongshu/sign/generateX_S_Common.d.ts +0 -6
  38. package/lib/business/xiaohongshu/sign/generateX_S_Common.js +0 -141
  39. package/lib/business/xiaohongshu/sign/index.d.ts +0 -16
  40. package/lib/business/xiaohongshu/sign/index.js +0 -29
  41. package/lib/types/XiaohongshuAPIParams.d.ts +0 -13
  42. package/lib/types/XiaohongshuAPIParams.js +0 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ikenxuan/amagi",
3
- "version": "3.1.1",
3
+ "version": "3.2.0",
4
4
  "homepage": "https://github.com/ikenxuan/amagi",
5
5
  "bugs": {
6
6
  "url": "https://github.com/ikenxuan/amagi/issues"
@@ -23,23 +23,24 @@
23
23
  "build": "tsc --project tsconfig.json && tsc-alias -p tsconfig.json && npm run fix",
24
24
  "dev": "tsx watch src/dev.ts",
25
25
  "dev:js": "node src/dev.js",
26
- "fix": "eslint lib/**/*.js --fix && eslint lib/**/*.d.ts --fix",
26
+ "fix": "npx eslint lib/**/*.js --fix && npx eslint lib/**/*.d.ts --fix",
27
27
  "sort": "npx sort-package-json",
28
28
  "test": "node lib/test.js"
29
29
  },
30
30
  "dependencies": {
31
31
  "axios": "^1.7.7",
32
- "fastify": "^5.0.0",
32
+ "chalk": "^5.3.0",
33
+ "fastify": "^4.28.1",
33
34
  "lodash": "^4.17.21",
34
35
  "log4js": "6.9.0",
35
36
  "pino-pretty": "^11.2.2"
36
37
  },
37
38
  "devDependencies": {
38
39
  "@types/lodash": "^4.17.9",
39
- "@types/node": "^22.7.3",
40
- "@typescript-eslint/parser": "^8.7.0",
40
+ "@types/node": "^22.7.4",
41
+ "@typescript-eslint/parser": "^8.8.0",
41
42
  "eslint": "^9.11.1",
42
- "globals": "^15.9.0",
43
+ "globals": "^15.10.0",
43
44
  "neostandard": "^0.11.6",
44
45
  "sort-package-json": "^2.10.1",
45
46
  "tsc-alias": "^1.8.10",
@@ -1,14 +0,0 @@
1
- import { XiaohongshuDataOptionsMapKeys } from '../../types/index.js';
2
- declare class XiaohongshuAPI {
3
- 单个笔记(data: XiaohongshuDataOptionsMapKeys['NoteInfoParams']): XiaoHongShuAPIType;
4
- }
5
- interface XiaoHongShuAPIType {
6
- /** 请求地址 */
7
- url: string;
8
- /** 请求方法 */
9
- method: string;
10
- /** 请求体 */
11
- body: any;
12
- }
13
- declare const _default: XiaohongshuAPI;
14
- export default _default;
@@ -1,17 +0,0 @@
1
- class XiaohongshuAPI {
2
- 单个笔记(data) {
3
- return {
4
- url: 'https://edith.xiaohongshu.com/api/sns/web/v1/feed',
5
- method: 'POST',
6
- body: {
7
- source_note_id: data.source_note_id,
8
- image_formats: ['jpg', 'webp', 'avif'],
9
- extra: { need_body_topic: 1 },
10
- xsec_source: 'pc_feed',
11
- xsec_token: data.xsec_token
12
- }
13
- };
14
- }
15
- }
16
- export default new XiaohongshuAPI();
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQUlQLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2J1c2luZXNzL3hpYW9ob25nc2h1L0FJUC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxNQUFNLGNBQWM7SUFDbEIsSUFBSSxDQUFFLElBQXFEO1FBQ3pELE9BQU87WUFDTCxHQUFHLEVBQUUsbURBQW1EO1lBQ3hELE1BQU0sRUFBRSxNQUFNO1lBQ2QsSUFBSSxFQUFFO2dCQUNKLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztnQkFDbkMsYUFBYSxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7Z0JBQ3RDLEtBQUssRUFBRSxFQUFFLGVBQWUsRUFBRSxDQUFDLEVBQUU7Z0JBQzdCLFdBQVcsRUFBRSxTQUFTO2dCQUN0QixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7YUFDNUI7U0FDRixDQUFBO0lBQ0gsQ0FBQztDQUNGO0FBV0QsZUFBZSxJQUFJLGNBQWMsRUFBRSxDQUFBIn0=
@@ -1,13 +0,0 @@
1
- import { XiaohongshuDataType, XiaohongshuOptionsType } from '../../types/index.js';
2
- export default class XiaohongshuData {
3
- type: any;
4
- headers: any;
5
- constructor(type: keyof typeof XiaohongshuDataType, cookie: string);
6
- GetData(data?: XiaohongshuOptionsType): Promise<any>;
7
- GlobalGetData(options: {
8
- url: string;
9
- method?: string;
10
- headers?: any;
11
- body?: any;
12
- }): Promise<any>;
13
- }
@@ -1,58 +0,0 @@
1
- import { XiaohongshuAPI } from '../../business/xiaohongshu/index.js';
2
- import { Networks, logger } from '../../model/index.js';
3
- import { XiaohongshuSign } from '../../business/xiaohongshu/index.js';
4
- export default class XiaohongshuData {
5
- type;
6
- headers;
7
- constructor(type, cookie) {
8
- this.type = type;
9
- this.headers = headers;
10
- this.headers.cookie = cookie;
11
- }
12
- async GetData(data = {}) {
13
- switch (this.type) {
14
- case "\u5355\u4E2A\u7B14\u8BB0" /* XiaohongshuDataType.单个笔记 */: {
15
- const API = XiaohongshuAPI.单个笔记({ source_note_id: data.source_note_id, xsec_token: data.xsec_token || 'xsec_token' });
16
- const xs = XiaohongshuSign.x_s(API.url, this.headers.cookie, API.body);
17
- const WorkData = await this.GlobalGetData({
18
- url: API.url,
19
- method: 'POST',
20
- headers: {
21
- ...this.headers,
22
- 'x-s': xs,
23
- 'x-b3-traceid': XiaohongshuSign.x_b3_traceid(),
24
- 'x-s-common': XiaohongshuSign.x_s_common({ x_s: xs, cookie: this.headers.cookie }),
25
- 'x-t': Date.now()
26
- },
27
- body: API.body
28
- });
29
- return WorkData;
30
- }
31
- default:
32
- break;
33
- }
34
- }
35
- async GlobalGetData(options) {
36
- const result = await new Networks(options).getData();
37
- if (!result || result === '') {
38
- logger.error('获取响应数据失败!\n请求类型:' + this.type + '\n请求URL:' + options.url);
39
- }
40
- return result;
41
- }
42
- }
43
- const headers = {
44
- 'accept': 'application/json, text/plain, */*',
45
- 'accept-language': 'zh-CN,zh;q=0.9',
46
- 'content-type': 'application/json;charset=UTF-8',
47
- 'origin': 'https://www.xiaohongshu.com',
48
- 'priority': 'u=1, i',
49
- 'referer': 'https://www.xiaohongshu.com/',
50
- 'sec-ch-ua': '"Chromium";v="128", "Not;A=Brand";v="24", "Google Chrome";v="128"',
51
- 'sec-ch-ua-mobile': '?0',
52
- 'sec-ch-ua-platform': '"Windows"',
53
- 'sec-fetch-dest': 'empty',
54
- 'sec-fetch-mode': 'cors',
55
- 'sec-fetch-site': 'same-site',
56
- 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36',
57
- };
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0ZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9idXNpbmVzcy94aWFvaG9uZ3NodS9nZXRkYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUUzRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFFNUQsTUFBTSxDQUFDLE9BQU8sT0FBTyxlQUFlO0lBQ2xDLElBQUksQ0FBSztJQUNULE9BQU8sQ0FBSztJQUNaLFlBQWEsSUFBc0MsRUFBRSxNQUFjO1FBQ2pFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO1FBQ2hCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtJQUM5QixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBRSxPQUFPLEVBQTRCO1FBQ2hELFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xCLDhEQUE2QixDQUFDLENBQUMsQ0FBQztnQkFDOUIsTUFBTSxHQUFHLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBd0IsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsSUFBSSxZQUFZLEVBQUUsQ0FBQyxDQUFBO2dCQUMvSCxNQUFNLEVBQUUsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUN0RSxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQ3ZDO29CQUNFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRztvQkFDWixNQUFNLEVBQUUsTUFBTTtvQkFDZCxPQUFPLEVBQUU7d0JBQ1AsR0FBRyxJQUFJLENBQUMsT0FBTzt3QkFDZixLQUFLLEVBQUUsRUFBRTt3QkFDVCxjQUFjLEVBQUUsZUFBZSxDQUFDLFlBQVksRUFBRTt3QkFDOUMsWUFBWSxFQUFFLGVBQWUsQ0FBQyxVQUFVLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO3dCQUNsRixLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRTtxQkFDbEI7b0JBQ0QsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO2lCQUNmLENBQ0YsQ0FBQTtnQkFDRCxPQUFPLFFBQVEsQ0FBQTtZQUNqQixDQUFDO1lBRUQ7Z0JBQ0UsTUFBSztRQUNULENBQUM7SUFFSCxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBRSxPQUFvRTtRQUN2RixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQ3BELElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQzdCLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ3pFLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxHQUFHO0lBQ2QsUUFBUSxFQUFFLG1DQUFtQztJQUM3QyxpQkFBaUIsRUFBRSxnQkFBZ0I7SUFDbkMsY0FBYyxFQUFFLGdDQUFnQztJQUNoRCxRQUFRLEVBQUUsNkJBQTZCO0lBQ3ZDLFVBQVUsRUFBRSxRQUFRO0lBQ3BCLFNBQVMsRUFBRSw4QkFBOEI7SUFDekMsV0FBVyxFQUFFLG1FQUFtRTtJQUNoRixrQkFBa0IsRUFBRSxJQUFJO0lBQ3hCLG9CQUFvQixFQUFFLFdBQVc7SUFDakMsZ0JBQWdCLEVBQUUsT0FBTztJQUN6QixnQkFBZ0IsRUFBRSxNQUFNO0lBQ3hCLGdCQUFnQixFQUFFLFdBQVc7SUFDN0IsWUFBWSxFQUFFLGlIQUFpSDtDQUNoSSxDQUFBIn0=
@@ -1,5 +0,0 @@
1
- import { XiaohongshuSign } from './sign/index.js';
2
- import XiaohongshuAPI from './AIP.js';
3
- import XiaohongshuData from './getdata.js';
4
- import XiaohongshuResult from './result.js';
5
- export { XiaohongshuSign, XiaohongshuAPI, XiaohongshuData, XiaohongshuResult };
@@ -1,6 +0,0 @@
1
- import { XiaohongshuSign } from './sign/index.js';
2
- import XiaohongshuAPI from './AIP.js';
3
- import XiaohongshuData from './getdata.js';
4
- import XiaohongshuResult from './result.js';
5
- export { XiaohongshuSign, XiaohongshuAPI, XiaohongshuData, XiaohongshuResult };
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnVzaW5lc3MveGlhb2hvbmdzaHUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUN4QyxPQUFPLGNBQWMsTUFBTSxPQUFPLENBQUE7QUFDbEMsT0FBTyxlQUFlLE1BQU0sV0FBVyxDQUFBO0FBQ3ZDLE9BQU8saUJBQWlCLE1BQU0sVUFBVSxDQUFBO0FBRXhDLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxDQUFBIn0=
@@ -1,9 +0,0 @@
1
- import { XiaohongshuDataType, XiaohongshuOptionsType, GetDataResponseType } from '../../types/index.js';
2
- interface configParams {
3
- /** 请求数据的类型 */
4
- type: keyof typeof XiaohongshuDataType;
5
- /** 小红书用户ck */
6
- cookie: string;
7
- }
8
- export default function XiaohongshuResult(config?: configParams, options?: XiaohongshuOptionsType): Promise<GetDataResponseType>;
9
- export {};
@@ -1,19 +0,0 @@
1
- import { XiaohongshuData } from '../../business/xiaohongshu/index.js';
2
- export default async function XiaohongshuResult(config = { cookie: '' }, options = {}) {
3
- let result;
4
- switch (config.type) {
5
- case "\u5355\u4E2A\u7B14\u8BB0" /* XiaohongshuDataType.单个笔记 */: {
6
- result = await new XiaohongshuData(config.type, config.cookie).GetData(options);
7
- break;
8
- }
9
- default:
10
- result = '';
11
- break;
12
- }
13
- return {
14
- code: result !== false && result !== '' ? 200 : 503,
15
- message: result !== false && result !== '' ? 'success' : 'error',
16
- data: result !== false && result !== '' ? result : null
17
- };
18
- }
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2J1c2luZXNzL3hpYW9ob25nc2h1L3Jlc3VsdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFRNUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFVBQVUsaUJBQWlCLENBQzdDLFNBQXVCLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBa0IsRUFDckQsVUFBVSxFQUE0QjtJQUV0QyxJQUFJLE1BQVcsQ0FBQTtJQUNmLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BCLDhEQUE2QixDQUFDLENBQUMsQ0FBQztZQUM5QixNQUFNLEdBQUcsTUFBTSxJQUFJLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDL0UsTUFBSztRQUNQLENBQUM7UUFFRDtZQUNFLE1BQU0sR0FBRyxFQUFFLENBQUE7WUFDWCxNQUFLO0lBQ1QsQ0FBQztJQUNELE9BQU87UUFDTCxJQUFJLEVBQUUsTUFBTSxLQUFLLEtBQUssSUFBSSxNQUFNLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUc7UUFDbkQsT0FBTyxFQUFFLE1BQU0sS0FBSyxLQUFLLElBQUksTUFBTSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPO1FBQ2hFLElBQUksRUFBRSxNQUFNLEtBQUssS0FBSyxJQUFJLE1BQU0sS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSTtLQUN4RCxDQUFBO0FBRUgsQ0FBQyJ9
@@ -1,2 +0,0 @@
1
- export declare function getPayload(base64String: string): string;
2
- export declare function generateX_S(url: string, cookie: string, body?: any): string;
@@ -1,207 +0,0 @@
1
- import crypto from 'crypto';
2
- let key = [187050025, 472920585, 186915882, 876157969, 255199502, 806945584, 220596020, 958210835, 757275681,
3
- 940378667, 489892883, 705504304, 354103316, 688857884, 890312192, 219096591, 622400037, 254088489,
4
- 907618332, 52759587, 907877143, 53870614, 839463457, 389417746, 975774727, 372382245, 437136414,
5
- 909246726, 168694017, 473575703, 52697872, 1010440969
6
- ];
7
- function des(key, message, encrypt, mode, iv, padding) {
8
- if (encrypt) //如果是加密的话,首先转换编码
9
- message = unescape(encodeURIComponent(message));
10
- //declaring this locally speeds things up a bit
11
- const spfunction1 = new Array(0x1010400, 0, 0x10000, 0x1010404, 0x1010004, 0x10404, 0x4, 0x10000, 0x400, 0x1010400, 0x1010404, 0x400, 0x1000404, 0x1010004, 0x1000000, 0x4, 0x404, 0x1000400, 0x1000400, 0x10400, 0x10400, 0x1010000, 0x1010000, 0x1000404, 0x10004, 0x1000004, 0x1000004, 0x10004, 0, 0x404, 0x10404, 0x1000000, 0x10000, 0x1010404, 0x4, 0x1010000, 0x1010400, 0x1000000, 0x1000000, 0x400, 0x1010004, 0x10000, 0x10400, 0x1000004, 0x400, 0x4, 0x1000404, 0x10404, 0x1010404, 0x10004, 0x1010000, 0x1000404, 0x1000004, 0x404, 0x10404, 0x1010400, 0x404, 0x1000400, 0x1000400, 0, 0x10004, 0x10400, 0, 0x1010004);
12
- const spfunction2 = new Array(-0x7fef7fe0, -0x7fff8000, 0x8000, 0x108020, 0x100000, 0x20, -0x7fefffe0, -0x7fff7fe0, -0x7fffffe0, -0x7fef7fe0, -0x7fef8000, -0x80000000, -0x7fff8000, 0x100000, 0x20, -0x7fefffe0, 0x108000, 0x100020, -0x7fff7fe0, 0, -0x80000000, 0x8000, 0x108020, -0x7ff00000, 0x100020, -0x7fffffe0, 0, 0x108000, 0x8020, -0x7fef8000, -0x7ff00000, 0x8020, 0, 0x108020, -0x7fefffe0, 0x100000, -0x7fff7fe0, -0x7ff00000, -0x7fef8000, 0x8000, -0x7ff00000, -0x7fff8000, 0x20, -0x7fef7fe0, 0x108020, 0x20, 0x8000, -0x80000000, 0x8020, -0x7fef8000, 0x100000, -0x7fffffe0, 0x100020, -0x7fff7fe0, -0x7fffffe0, 0x100020, 0x108000, 0, -0x7fff8000, 0x8020, -0x80000000, -0x7fefffe0, -0x7fef7fe0, 0x108000);
13
- const spfunction3 = new Array(0x208, 0x8020200, 0, 0x8020008, 0x8000200, 0, 0x20208, 0x8000200, 0x20008, 0x8000008, 0x8000008, 0x20000, 0x8020208, 0x20008, 0x8020000, 0x208, 0x8000000, 0x8, 0x8020200, 0x200, 0x20200, 0x8020000, 0x8020008, 0x20208, 0x8000208, 0x20200, 0x20000, 0x8000208, 0x8, 0x8020208, 0x200, 0x8000000, 0x8020200, 0x8000000, 0x20008, 0x208, 0x20000, 0x8020200, 0x8000200, 0, 0x200, 0x20008, 0x8020208, 0x8000200, 0x8000008, 0x200, 0, 0x8020008, 0x8000208, 0x20000, 0x8000000, 0x8020208, 0x8, 0x20208, 0x20200, 0x8000008, 0x8020000, 0x8000208, 0x208, 0x8020000, 0x20208, 0x8, 0x8020008, 0x20200);
14
- const spfunction4 = new Array(0x802001, 0x2081, 0x2081, 0x80, 0x802080, 0x800081, 0x800001, 0x2001, 0, 0x802000, 0x802000, 0x802081, 0x81, 0, 0x800080, 0x800001, 0x1, 0x2000, 0x800000, 0x802001, 0x80, 0x800000, 0x2001, 0x2080, 0x800081, 0x1, 0x2080, 0x800080, 0x2000, 0x802080, 0x802081, 0x81, 0x800080, 0x800001, 0x802000, 0x802081, 0x81, 0, 0, 0x802000, 0x2080, 0x800080, 0x800081, 0x1, 0x802001, 0x2081, 0x2081, 0x80, 0x802081, 0x81, 0x1, 0x2000, 0x800001, 0x2001, 0x802080, 0x800081, 0x2001, 0x2080, 0x800000, 0x802001, 0x80, 0x800000, 0x2000, 0x802080);
15
- const spfunction5 = new Array(0x100, 0x2080100, 0x2080000, 0x42000100, 0x80000, 0x100, 0x40000000, 0x2080000, 0x40080100, 0x80000, 0x2000100, 0x40080100, 0x42000100, 0x42080000, 0x80100, 0x40000000, 0x2000000, 0x40080000, 0x40080000, 0, 0x40000100, 0x42080100, 0x42080100, 0x2000100, 0x42080000, 0x40000100, 0, 0x42000000, 0x2080100, 0x2000000, 0x42000000, 0x80100, 0x80000, 0x42000100, 0x100, 0x2000000, 0x40000000, 0x2080000, 0x42000100, 0x40080100, 0x2000100, 0x40000000, 0x42080000, 0x2080100, 0x40080100, 0x100, 0x2000000, 0x42080000, 0x42080100, 0x80100, 0x42000000, 0x42080100, 0x2080000, 0, 0x40080000, 0x42000000, 0x80100, 0x2000100, 0x40000100, 0x80000, 0, 0x40080000, 0x2080100, 0x40000100);
16
- const spfunction6 = new Array(0x20000010, 0x20400000, 0x4000, 0x20404010, 0x20400000, 0x10, 0x20404010, 0x400000, 0x20004000, 0x404010, 0x400000, 0x20000010, 0x400010, 0x20004000, 0x20000000, 0x4010, 0, 0x400010, 0x20004010, 0x4000, 0x404000, 0x20004010, 0x10, 0x20400010, 0x20400010, 0, 0x404010, 0x20404000, 0x4010, 0x404000, 0x20404000, 0x20000000, 0x20004000, 0x10, 0x20400010, 0x404000, 0x20404010, 0x400000, 0x4010, 0x20000010, 0x400000, 0x20004000, 0x20000000, 0x4010, 0x20000010, 0x20404010, 0x404000, 0x20400000, 0x404010, 0x20404000, 0, 0x20400010, 0x10, 0x4000, 0x20400000, 0x404010, 0x4000, 0x400010, 0x20004010, 0, 0x20404000, 0x20000000, 0x400010, 0x20004010);
17
- const spfunction7 = new Array(0x200000, 0x4200002, 0x4000802, 0, 0x800, 0x4000802, 0x200802, 0x4200800, 0x4200802, 0x200000, 0, 0x4000002, 0x2, 0x4000000, 0x4200002, 0x802, 0x4000800, 0x200802, 0x200002, 0x4000800, 0x4000002, 0x4200000, 0x4200800, 0x200002, 0x4200000, 0x800, 0x802, 0x4200802, 0x200800, 0x2, 0x4000000, 0x200800, 0x4000000, 0x200800, 0x200000, 0x4000802, 0x4000802, 0x4200002, 0x4200002, 0x2, 0x200002, 0x4000000, 0x4000800, 0x200000, 0x4200800, 0x802, 0x200802, 0x4200800, 0x802, 0x4000002, 0x4200802, 0x4200000, 0x200800, 0, 0x2, 0x4200802, 0, 0x200802, 0x4200000, 0x800, 0x4000002, 0x4000800, 0x800, 0x200002);
18
- const spfunction8 = new Array(0x10001040, 0x1000, 0x40000, 0x10041040, 0x10000000, 0x10001040, 0x40, 0x10000000, 0x40040, 0x10040000, 0x10041040, 0x41000, 0x10041000, 0x41040, 0x1000, 0x40, 0x10040000, 0x10000040, 0x10001000, 0x1040, 0x41000, 0x40040, 0x10040040, 0x10041000, 0x1040, 0, 0, 0x10040040, 0x10000040, 0x10001000, 0x41040, 0x40000, 0x41040, 0x40000, 0x10041000, 0x1000, 0x40, 0x10040040, 0x1000, 0x41040, 0x10001000, 0x40, 0x10000040, 0x10040000, 0x10040040, 0x10000000, 0x40000, 0x10001040, 0, 0x10041040, 0x40040, 0x10000040, 0x10040000, 0x10001000, 0x10001040, 0, 0x10041040, 0x41000, 0x41000, 0x1040, 0x1040, 0x40040, 0x10000000, 0x10041000);
19
- // create the 16 or 48 subkeys we will need
20
- // var keys = des_createKeys(key)
21
- const keys = key;
22
- let m = 0, i, j, temp, temp2, right1, right2, left, right, looping;
23
- let cbcleft, cbcleft2, cbcright, cbcright2;
24
- let endloop, loopinc;
25
- let len = message.length;
26
- let chunk = 0;
27
- //set up the loops for single and triple des
28
- var iterations = keys.length == 32 ? 3 : 9; //single or triple des
29
- if (iterations == 3) {
30
- looping = encrypt ? new Array(0, 32, 2) : new Array(30, -2, -2);
31
- }
32
- else {
33
- looping = encrypt ? new Array(0, 32, 2, 62, 30, -2, 64, 96, 2) : new Array(94, 62, -2, 32, 64, 2, 30, -2, -2);
34
- }
35
- //pad the message depending on the padding parameter
36
- if (padding == 2)
37
- message += " "; //pad the message with spaces
38
- else if (padding == 1) {
39
- if (encrypt) {
40
- temp = 8 - (len % 8);
41
- message += String.fromCharCode(temp, temp, temp, temp, temp, temp, temp, temp);
42
- if (temp === 8)
43
- len += 8;
44
- }
45
- } //PKCS7 padding
46
- else if (!padding)
47
- message += "\0\0\0\0\0\0\0\0"; //pad the message out with null bytes
48
- //store the result here
49
- var result = "";
50
- var tempresult = "";
51
- if (mode == 1) { //CBC mode
52
- cbcleft = (iv.charCodeAt(m++) << 24) | (iv.charCodeAt(m++) << 16) | (iv.charCodeAt(m++) << 8) | iv.charCodeAt(m++);
53
- cbcright = (iv.charCodeAt(m++) << 24) | (iv.charCodeAt(m++) << 16) | (iv.charCodeAt(m++) << 8) | iv.charCodeAt(m++);
54
- m = 0;
55
- }
56
- //loop through each 64 bit chunk of the message
57
- while (m < len) {
58
- left = (message.charCodeAt(m++) << 24) | (message.charCodeAt(m++) << 16) | (message.charCodeAt(m++) << 8) | message.charCodeAt(m++);
59
- right = (message.charCodeAt(m++) << 24) | (message.charCodeAt(m++) << 16) | (message.charCodeAt(m++) << 8) | message.charCodeAt(m++);
60
- //for Cipher Block Chaining mode, xor the message with the previous result
61
- if (mode == 1) {
62
- if (encrypt) {
63
- left ^= cbcleft;
64
- right ^= cbcright;
65
- }
66
- else {
67
- cbcleft2 = cbcleft;
68
- cbcright2 = cbcright;
69
- cbcleft = left;
70
- cbcright = right;
71
- }
72
- }
73
- //first each 64 but chunk of the message must be permuted according to IP
74
- temp = ((left >>> 4) ^ right) & 0x0f0f0f0f;
75
- right ^= temp;
76
- left ^= (temp << 4);
77
- temp = ((left >>> 16) ^ right) & 0x0000ffff;
78
- right ^= temp;
79
- left ^= (temp << 16);
80
- temp = ((right >>> 2) ^ left) & 0x33333333;
81
- left ^= temp;
82
- right ^= (temp << 2);
83
- temp = ((right >>> 8) ^ left) & 0x00ff00ff;
84
- left ^= temp;
85
- right ^= (temp << 8);
86
- temp = ((left >>> 1) ^ right) & 0x55555555;
87
- right ^= temp;
88
- left ^= (temp << 1);
89
- left = ((left << 1) | (left >>> 31));
90
- right = ((right << 1) | (right >>> 31));
91
- //do this either 1 or 3 times for each chunk of the message
92
- for (j = 0; j < iterations; j += 3) {
93
- endloop = looping[j + 1];
94
- loopinc = looping[j + 2];
95
- //now go through and perform the encryption or decryption
96
- for (i = looping[j]; i != endloop; i += loopinc) { //for efficiency
97
- right1 = right ^ keys[i];
98
- right2 = ((right >>> 4) | (right << 28)) ^ keys[i + 1];
99
- //the result is attained by passing these bytes through the S selection functions
100
- temp = left;
101
- left = right;
102
- right = temp ^ (spfunction2[(right1 >>> 24) & 0x3f] | spfunction4[(right1 >>> 16) & 0x3f]
103
- | spfunction6[(right1 >>> 8) & 0x3f] | spfunction8[right1 & 0x3f]
104
- | spfunction1[(right2 >>> 24) & 0x3f] | spfunction3[(right2 >>> 16) & 0x3f]
105
- | spfunction5[(right2 >>> 8) & 0x3f] | spfunction7[right2 & 0x3f]);
106
- }
107
- temp = left;
108
- left = right;
109
- right = temp; //unreverse left and right
110
- } //for either 1 or 3 iterations
111
- //move then each one bit to the right
112
- left = ((left >>> 1) | (left << 31));
113
- right = ((right >>> 1) | (right << 31));
114
- //now perform IP-1, which is IP in the opposite direction
115
- temp = ((left >>> 1) ^ right) & 0x55555555;
116
- right ^= temp;
117
- left ^= (temp << 1);
118
- temp = ((right >>> 8) ^ left) & 0x00ff00ff;
119
- left ^= temp;
120
- right ^= (temp << 8);
121
- temp = ((right >>> 2) ^ left) & 0x33333333;
122
- left ^= temp;
123
- right ^= (temp << 2);
124
- temp = ((left >>> 16) ^ right) & 0x0000ffff;
125
- right ^= temp;
126
- left ^= (temp << 16);
127
- temp = ((left >>> 4) ^ right) & 0x0f0f0f0f;
128
- right ^= temp;
129
- left ^= (temp << 4);
130
- //for Cipher Block Chaining mode, xor the message with the previous result
131
- if (mode == 1) {
132
- if (encrypt) {
133
- cbcleft = left;
134
- cbcright = right;
135
- }
136
- else {
137
- left ^= cbcleft2;
138
- right ^= cbcright2;
139
- }
140
- }
141
- // tempresult += String.fromCharCode((left >>> 24), ((left >>> 16) & 0xff), ((left >>> 8) & 0xff), (left & 0xff), (right >>> 24), ((right >>> 16) & 0xff), ((right >>> 8) & 0xff), (right & 0xff))
142
- tempresult += String.fromCharCode(left >>> 24);
143
- tempresult += String.fromCharCode((left >>> 16) & 255);
144
- tempresult += String.fromCharCode((left >>> 8) & 255);
145
- tempresult += String.fromCharCode(left & 255);
146
- tempresult += String.fromCharCode(right >>> 24);
147
- tempresult += String.fromCharCode((right >>> 16) & 255);
148
- tempresult += String.fromCharCode((right >>> 8) & 255);
149
- tempresult += String.fromCharCode(right & 255);
150
- chunk += 8;
151
- if (chunk == 512) {
152
- result += tempresult;
153
- tempresult = "";
154
- chunk = 0;
155
- }
156
- } //for every 8 characters, or 64 bits in the message
157
- //return the result as an array
158
- result += tempresult;
159
- result = result.replace(/\\0*$/g, "");
160
- if (!encrypt) { //如果是解密的话,解密结束后对PKCS7 padding进行解码,并转换成utf-8编码
161
- if (padding === 1) { //PKCS7 padding解码
162
- let len = result.length, paddingChars = 0;
163
- len && (paddingChars = result.charCodeAt(len - 1));
164
- (paddingChars <= 8) && (result = result.substring(0, len - paddingChars));
165
- }
166
- //转换成UTF-8编码
167
- result = decodeURIComponent(escape(result));
168
- }
169
- return result;
170
- } //end of des
171
- export function getPayload(base64String) {
172
- let result = '';
173
- for (let char of des(key, base64String, true, 0, '', 0)) {
174
- let n = char.charCodeAt(0);
175
- result += (n >> 4).toString(16);
176
- result += (n & 15).toString(16);
177
- }
178
- return result;
179
- }
180
- export function generateX_S(url, cookie, body) {
181
- const P = new URL(url);
182
- let extra = '';
183
- if (body) {
184
- extra = JSON.stringify(body);
185
- }
186
- else {
187
- extra = '';
188
- }
189
- const params = {
190
- x1: crypto.createHash('md5').update(`url=${P.pathname}${extra}`).digest('hex'), // 直接使用路径部分
191
- x2: '0|0|0|1|0|0|1|0|0|0|1|0|0|0|0', // 固定值
192
- x3: cookie.includes('a1=') ? cookie.split('a1=')[1].split(';')[0] : 'undefined', // 从cookie中获取a1
193
- x4: String(Date.now()) // 当前时间戳
194
- };
195
- // 使用 Object.entries 将对象转换为键值对数组,然后使用 join 方法构建查询字符串
196
- const payloadParts = Object.entries(params).map(([key, value]) => `${key}=${value}`);
197
- const mergeplst = payloadParts.join(';');
198
- const origin = {
199
- signSvn: '55',
200
- signType: 'x2',
201
- appId: 'xhs-pc-web',
202
- signVersion: '1',
203
- payload: getPayload(mergeplst)
204
- };
205
- return 'XYW_' + btoa(JSON.stringify(origin)) + '=';
206
- }
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVYX1MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYnVzaW5lc3MveGlhb2hvbmdzaHUvc2lnbi9nZW5lcmF0ZVhfUy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUE7QUFFM0IsSUFBSSxHQUFHLEdBQUcsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVM7SUFDMUcsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTO0lBQ2pHLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUztJQUMvRixTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVTtDQUN0RCxDQUFBO0FBRUQsU0FBUyxHQUFHLENBQUUsR0FBYSxFQUFFLE9BQVksRUFBRSxPQUFnQixFQUFFLElBQXdCLEVBQUUsRUFBVSxFQUFFLE9BQTJCO0lBQzVILElBQUksT0FBTyxFQUFFLGdCQUFnQjtRQUMzQixPQUFPLEdBQUcsUUFBUSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7SUFDakQsK0NBQStDO0lBQy9DLE1BQU0sV0FBVyxHQUFHLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQ3JtQixNQUFNLFdBQVcsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDanNCLE1BQU0sV0FBVyxHQUFHLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3JtQixNQUFNLFdBQVcsR0FBRyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUM3aUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFDN3JCLE1BQU0sV0FBVyxHQUFHLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFBO0lBQ2pxQixNQUFNLFdBQVcsR0FBRyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUNybkIsTUFBTSxXQUFXLEdBQUcsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxV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
@@ -1,6 +0,0 @@
1
- export declare function xsCommon(t: {
2
- a1: any;
3
- x_t: number;
4
- x_s: string;
5
- fingerprint: any;
6
- }): string;
@@ -1,141 +0,0 @@
1
- export function xsCommon(t) {
2
- const k = {
3
- s0: 5,
4
- s1: "",
5
- x0: "1",
6
- x1: "3.7.8-2",
7
- x2: "Windows",
8
- x3: "xhs-pc-web",
9
- x4: "4.34.0",
10
- x5: t.a1, // a1 的值
11
- x6: t.x_t, // x-t 的值
12
- x7: t.x_s, // x-s的值
13
- x8: t.fingerprint, // 浏览器指纹,可以写死
14
- x9: mrc(''.concat(String(t.x_t)).concat(t.x_s).concat(t.fingerprint)),
15
- x10: 1
16
- };
17
- const utf8 = encodeUtf8(JSON.stringify(k));
18
- return b64Encode(new Uint8Array(utf8));
19
- }
20
- function mrc(e) {
21
- const ie = [
22
- 0, 1996959894, 3993919788, 2567524794, 124634137, 1886057615, 3915621685,
23
- 2657392035, 249268274, 2044508324, 3772115230, 2547177864, 162941995,
24
- 2125561021, 3887607047, 2428444049, 498536548, 1789927666, 4089016648,
25
- 2227061214, 450548861, 1843258603, 4107580753, 2211677639, 325883990,
26
- 1684777152, 4251122042, 2321926636, 335633487, 1661365465, 4195302755,
27
- 2366115317, 997073096, 1281953886, 3579855332, 2724688242, 1006888145,
28
- 1258607687, 3524101629, 2768942443, 901097722, 1119000684, 3686517206,
29
- 2898065728, 853044451, 1172266101, 3705015759, 2882616665, 651767980,
30
- 1373503546, 3369554304, 3218104598, 565507253, 1454621731, 3485111705,
31
- 3099436303, 671266974, 1594198024, 3322730930, 2970347812, 795835527,
32
- 1483230225, 3244367275, 3060149565, 1994146192, 31158534, 2563907772,
33
- 4023717930, 1907459465, 112637215, 2680153253, 3904427059, 2013776290,
34
- 251722036, 2517215374, 3775830040, 2137656763, 141376813, 2439277719,
35
- 3865271297, 1802195444, 476864866, 2238001368, 4066508878, 1812370925,
36
- 453092731, 2181625025, 4111451223, 1706088902, 314042704, 2344532202,
37
- 4240017532, 1658658271, 366619977, 2362670323, 4224994405, 1303535960,
38
- 984961486, 2747007092, 3569037538, 1256170817, 1037604311, 2765210733,
39
- 3554079995, 1131014506, 879679996, 2909243462, 3663771856, 1141124467,
40
- 855842277, 2852801631, 3708648649, 1342533948, 654459306, 3188396048,
41
- 3373015174, 1466479909, 544179635, 3110523913, 3462522015, 1591671054,
42
- 702138776, 2966460450, 3352799412, 1504918807, 783551873, 3082640443,
43
- 3233442989, 3988292384, 2596254646, 62317068, 1957810842, 3939845945,
44
- 2647816111, 81470997, 1943803523, 3814918930, 2489596804, 225274430,
45
- 2053790376, 3826175755, 2466906013, 167816743, 2097651377, 4027552580,
46
- 2265490386, 503444072, 1762050814, 4150417245, 2154129355, 426522225,
47
- 1852507879, 4275313526, 2312317920, 282753626, 1742555852, 4189708143,
48
- 2394877945, 397917763, 1622183637, 3604390888, 2714866558, 953729732,
49
- 1340076626, 3518719985, 2797360999, 1068828381, 1219638859, 3624741850,
50
- 2936675148, 906185462, 1090812512, 3747672003, 2825379669, 829329135,
51
- 1181335161, 3412177804, 3160834842, 628085408, 1382605366, 3423369109,
52
- 3138078467, 570562233, 1426400815, 3317316542, 2998733608, 733239954,
53
- 1555261956, 3268935591, 3050360625, 752459403, 1541320221, 2607071920,
54
- 3965973030, 1969922972, 40735498, 2617837225, 3943577151, 1913087877,
55
- 83908371, 2512341634, 3803740692, 2075208622, 213261112, 2463272603,
56
- 3855990285, 2094854071, 198958881, 2262029012, 4057260610, 1759359992,
57
- 534414190, 2176718541, 4139329115, 1873836001, 414664567, 2282248934,
58
- 4279200368, 1711684554, 285281116, 2405801727, 4167216745, 1634467795,
59
- 376229701, 2685067896, 3608007406, 1308918612, 956543938, 2808555105,
60
- 3495958263, 1231636301, 1047427035, 2932959818, 3654703836, 1088359270,
61
- 936918000, 2847714899, 3736837829, 1202900863, 817233897, 3183342108,
62
- 3401237130, 1404277552, 615818150, 3134207493, 3453421203, 1423857449,
63
- 601450431, 3009837614, 3294710456, 1567103746, 711928724, 3020668471,
64
- 3272380065, 1510334235, 755167117,
65
- ];
66
- let o = -1;
67
- function right_without_sign(num, bit = 0) {
68
- const val = (num >>> bit) & 0xFFFFFFFF; // 无符号右移,确保32位无符号整数
69
- const MAX32INT = 4294967295;
70
- return (val + (MAX32INT + 1)) % (2 * (MAX32INT + 1)) - MAX32INT - 1;
71
- }
72
- for (let n = 0; n < 57; n++) {
73
- o = ie[(o & 255) ^ e.charCodeAt(n)] ^ right_without_sign(o, 8);
74
- }
75
- return o ^ -1 ^ 3988292384;
76
- }
77
- function encodeUtf8(e) {
78
- const b = [];
79
- let m = encodeURIComponent(e);
80
- m = m.replace(/%20/g, "+") // 替换空格
81
- .replace(/[!'()*]/g, (char) => `%${char.charCodeAt(0).toString(16).toUpperCase()}`);
82
- let w = 0;
83
- while (w < m.length) {
84
- const T = m[w];
85
- if (T === "%") {
86
- const E = m[w + 1] + m[w + 2];
87
- const S = parseInt(E, 16);
88
- b.push(S);
89
- w += 2;
90
- }
91
- else {
92
- b.push(T.charCodeAt(0));
93
- }
94
- w += 1;
95
- }
96
- return b;
97
- }
98
- const lookup = [
99
- "Z", "m", "s", "e", "r", "b", "B", "o", "H", "Q", "t",
100
- "N", "P", "+", "w", "O", "c", "z", "a", "/", "L", "p",
101
- "n", "g", "G", "8", "y", "J", "q", "4", "2", "K", "W",
102
- "Y", "j", "0", "D", "S", "f", "d", "i", "k", "x", "3",
103
- "V", "T", "1", "6", "I", "l", "U", "A", "F", "M", "9",
104
- "7", "h", "E", "C", "v", "u", "R", "X", "5",
105
- ];
106
- function b64Encode(e) {
107
- const P = e.length;
108
- const W = P % 3;
109
- const U = [];
110
- const z = 16383;
111
- let H = 0;
112
- const Z = P - W;
113
- while (H < Z) {
114
- U.push(encodeChunk(e, H, H + z > Z ? Z : H + z));
115
- H += z;
116
- }
117
- if (W === 1) {
118
- const F = e[P - 1];
119
- U.push(lookup[F >> 2] + lookup[(F << 4) & 63] + "==");
120
- }
121
- else if (W === 2) {
122
- const F = (e[P - 2] << 8) + e[P - 1];
123
- U.push(lookup[F >> 10] + lookup[(F >> 4) & 63] + lookup[(F << 2) & 63] + "=");
124
- }
125
- return U.join('');
126
- }
127
- function encodeChunk(e, t, r) {
128
- const m = [];
129
- for (let b = t; b < r; b += 3) {
130
- const n = (16711680 & (e[b] << 16)) + ((e[b + 1] << 8) & 65280) + (e[b + 2] & 255);
131
- m.push(tripletToBase64(n));
132
- }
133
- return m.join('');
134
- }
135
- function tripletToBase64(e) {
136
- return (lookup[(e >> 18) & 63] +
137
- lookup[(e >> 12) & 63] +
138
- lookup[(e >> 6) & 63] +
139
- lookup[e & 63]);
140
- }
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVYX1NfQ29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2J1c2luZXNzL3hpYW9ob25nc2h1L3NpZ24vZ2VuZXJhdGVYX1NfQ29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxRQUFRLENBQUUsQ0FBMEQ7SUFDbEYsTUFBTSxDQUFDLEdBQUc7UUFDUixFQUFFLEVBQUUsQ0FBQztRQUNMLEVBQUUsRUFBRSxFQUFFO1FBQ04sRUFBRSxFQUFFLEdBQUc7UUFDUCxFQUFFLEVBQUUsU0FBUztRQUNiLEVBQUUsRUFBRSxTQUFTO1FBQ2IsRUFBRSxFQUFFLFlBQVk7UUFDaEIsRUFBRSxFQUFFLFFBQVE7UUFDWixFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxRQUFRO1FBQ2xCLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFHLFNBQVM7UUFDckIsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsUUFBUTtRQUNuQixFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxhQUFhO1FBQ2hDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JFLEdBQUcsRUFBRSxDQUFDO0tBQ1AsQ0FBQTtJQUNELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDMUMsT0FBTyxTQUFTLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtBQUN4QyxDQUFDO0FBRUQsU0FBUyxHQUFHLENBQUUsQ0FBUztJQUNyQixNQUFNLEVBQUUsR0FBYTtRQUNuQixDQUFDLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVO1FBQ3hFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUztRQUNwRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVU7UUFDckUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTO1FBQ3BFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVTtRQUNyRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVU7UUFDckUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVO1FBQ3JFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUztRQUNwRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVU7UUFDckUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTO1FBQ3BFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVTtRQUNwRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVU7UUFDckUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVO1FBQ3BFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVTtRQUNyRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVU7UUFDcEUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVO1FBQ3JFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVTtRQUNyRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVU7UUFDckUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVO1FBQ3BFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVTtRQUNyRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVU7UUFDcEUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVO1FBQ3BFLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUztRQUNuRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVU7UUFDckUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTO1FBQ3BFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVTtRQUNyRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVM7UUFDcEUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVO1FBQ3RFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUztRQUNwRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVU7UUFDckUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTO1FBQ3BFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVTtRQUNyRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVU7UUFDcEUsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVO1FBQ25FLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVTtRQUNyRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVU7UUFDcEUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVO1FBQ3JFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVTtRQUNwRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVU7UUFDdEUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVO1FBQ3BFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVTtRQUNyRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVU7UUFDcEUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTO0tBQ2xDLENBQUE7SUFDRCxJQUFJLENBQUMsR0FBVyxDQUFDLENBQUMsQ0FBQTtJQUVsQixTQUFTLGtCQUFrQixDQUFFLEdBQVcsRUFBRSxNQUFjLENBQUM7UUFDdkQsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFBLENBQUMsbUJBQW1CO1FBQzFELE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQTtRQUMzQixPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFBO0lBQ3JFLENBQUM7SUFFRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDNUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ2hFLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUE7QUFDNUIsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFFLENBQVM7SUFDNUIsTUFBTSxDQUFDLEdBQWEsRUFBRSxDQUFBO0lBQ3RCLElBQUksQ0FBQyxHQUFHLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFBO0lBRTdCLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPO1NBQy9CLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBRXJGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNULE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNwQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDZCxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNkLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtZQUM3QixNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1lBQ3pCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDVCxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ1IsQ0FBQzthQUFNLENBQUM7WUFDTixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN6QixDQUFDO1FBQ0QsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNSLENBQUM7SUFFRCxPQUFPLENBQUMsQ0FBQTtBQUNWLENBQUM7QUFFRCxNQUFNLE1BQU0sR0FBRztJQUNiLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0lBQ3JELEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0lBQ3JELEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0lBQ3JELEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxH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