@whitesev/utils 2.8.0 → 2.8.2
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/README.md +176 -176
- package/dist/index.amd.js +896 -875
- package/dist/index.amd.js.map +1 -1
- package/dist/index.cjs.js +896 -875
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +896 -875
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +896 -875
- package/dist/index.iife.js.map +1 -1
- package/dist/index.system.js +896 -875
- package/dist/index.system.js.map +1 -1
- package/dist/index.umd.js +896 -875
- package/dist/index.umd.js.map +1 -1
- package/dist/types/src/CommonUtil.d.ts +59 -59
- package/dist/types/src/DOMUtils.d.ts +1 -1
- package/dist/types/src/Dictionary.d.ts +1 -1
- package/dist/types/src/Httpx.d.ts +2 -2
- package/dist/types/src/Progress.d.ts +0 -4
- package/dist/types/src/TryCatch.d.ts +2 -2
- package/dist/types/src/Utils.d.ts +365 -365
- package/dist/types/src/UtilsGMCookie.d.ts +2 -2
- package/dist/types/src/UtilsGMMenu.d.ts +1 -1
- package/dist/types/src/indexedDB.d.ts +3 -3
- package/dist/types/src/types/Event.d.ts +188 -188
- package/dist/types/src/types/Httpx.d.ts +1344 -1343
- package/dist/types/src/types/Log.d.ts +19 -19
- package/dist/types/src/types/Progress.d.ts +20 -20
- package/dist/types/src/types/React.d.ts +119 -119
- package/dist/types/src/types/TryCatch.d.ts +9 -9
- package/dist/types/src/types/UtilsGMCookie.d.ts +93 -93
- package/dist/types/src/types/UtilsGMMenu.d.ts +77 -77
- package/dist/types/src/types/Vue2.d.ts +166 -166
- package/dist/types/src/types/WindowApi.d.ts +14 -14
- package/dist/types/src/types/ajaxHooker.d.ts +151 -151
- package/dist/types/src/types/env.d.ts +7 -2
- package/dist/types/src/types/global.d.ts +31 -31
- package/index.ts +3 -0
- package/package.json +19 -8
- package/src/ColorConversion.ts +105 -106
- package/src/CommonUtil.ts +280 -279
- package/src/DOMUtils.ts +251 -272
- package/src/Dictionary.ts +153 -154
- package/src/GBKEncoder.ts +108 -112
- package/src/Hooks.ts +73 -81
- package/src/Httpx.ts +1457 -1466
- package/src/LockFunction.ts +62 -62
- package/src/Log.ts +258 -259
- package/src/ModuleRaid.js +1 -0
- package/src/Progress.ts +108 -114
- package/src/TryCatch.ts +86 -86
- package/src/Utils.ts +4773 -4825
- package/src/UtilsCommon.ts +14 -14
- package/src/UtilsGMCookie.ts +254 -261
- package/src/UtilsGMMenu.ts +445 -454
- package/src/Vue.ts +233 -229
- package/src/WindowApi.ts +59 -59
- package/src/ajaxHooker/ajaxHooker.js +1 -0
- package/src/indexedDB.ts +497 -502
- package/src/types/Event.d.ts +188 -188
- package/src/types/Httpx.d.ts +1344 -1343
- package/src/types/Log.d.ts +19 -19
- package/src/types/Progress.d.ts +20 -20
- package/src/types/React.d.ts +119 -119
- package/src/types/TryCatch.d.ts +9 -9
- package/src/types/UtilsGMCookie.d.ts +93 -93
- package/src/types/UtilsGMMenu.d.ts +77 -77
- package/src/types/Vue2.d.ts +166 -166
- package/src/types/WindowApi.d.ts +14 -14
- package/src/types/ajaxHooker.d.ts +151 -151
- package/src/types/env.d.ts +7 -2
- package/src/types/global.d.ts +31 -31
package/dist/index.system.js
CHANGED
|
@@ -12,7 +12,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
12
12
|
if (typeof str !== "string") {
|
|
13
13
|
return false;
|
|
14
14
|
}
|
|
15
|
-
if (!str.match(/^(
|
|
15
|
+
if (!str.match(/^(#|)[0-9a-fA-F]{6}$/)) {
|
|
16
16
|
return false;
|
|
17
17
|
}
|
|
18
18
|
return true;
|
|
@@ -26,18 +26,10 @@ System.register('Utils', [], (function (exports) {
|
|
|
26
26
|
*/
|
|
27
27
|
hexToRgba(hex, opacity) {
|
|
28
28
|
if (!this.isHex(hex)) {
|
|
29
|
-
throw new TypeError(
|
|
29
|
+
throw new TypeError(`输入错误的hex:${hex}`);
|
|
30
30
|
}
|
|
31
31
|
return hex && hex.replace(/\s+/g, "").length === 7
|
|
32
|
-
?
|
|
33
|
-
parseInt("0x" + hex.slice(1, 3)) +
|
|
34
|
-
"," +
|
|
35
|
-
parseInt("0x" + hex.slice(3, 5)) +
|
|
36
|
-
"," +
|
|
37
|
-
parseInt("0x" + hex.slice(5, 7)) +
|
|
38
|
-
"," +
|
|
39
|
-
opacity +
|
|
40
|
-
")"
|
|
32
|
+
? `rgba(${parseInt(`0x${hex.slice(1, 3)}`)},${parseInt(`0x${hex.slice(3, 5)}`)},${parseInt(`0x${hex.slice(5, 7)}`)},${opacity})`
|
|
41
33
|
: "";
|
|
42
34
|
}
|
|
43
35
|
/**
|
|
@@ -46,14 +38,15 @@ System.register('Utils', [], (function (exports) {
|
|
|
46
38
|
*/
|
|
47
39
|
hexToRgb(str) {
|
|
48
40
|
if (!this.isHex(str)) {
|
|
49
|
-
throw new TypeError(
|
|
41
|
+
throw new TypeError(`输入错误的hex:${str}`);
|
|
50
42
|
}
|
|
51
43
|
/* replace替换查找的到的字符串 */
|
|
52
44
|
str = str.replace("#", "");
|
|
53
45
|
/* match得到查询数组 */
|
|
54
|
-
|
|
46
|
+
const hxs = str.match(/../g);
|
|
55
47
|
for (let index = 0; index < 3; index++) {
|
|
56
|
-
|
|
48
|
+
const value = parseInt(hxs[index], 16);
|
|
49
|
+
Reflect.set(hxs, index, value);
|
|
57
50
|
}
|
|
58
51
|
return hxs;
|
|
59
52
|
}
|
|
@@ -65,16 +58,16 @@ System.register('Utils', [], (function (exports) {
|
|
|
65
58
|
*/
|
|
66
59
|
rgbToHex(redValue, greenValue, blueValue) {
|
|
67
60
|
/* 验证输入的rgb值是否合法 */
|
|
68
|
-
|
|
61
|
+
const validPattern = /^\d{1,3}$/;
|
|
69
62
|
if (!validPattern.test(redValue.toString()) ||
|
|
70
63
|
!validPattern.test(greenValue.toString()) ||
|
|
71
64
|
!validPattern.test(blueValue.toString()))
|
|
72
65
|
throw new TypeError("输入错误的rgb颜色值");
|
|
73
|
-
|
|
66
|
+
const hexs = [redValue.toString(16), greenValue.toString(16), blueValue.toString(16)];
|
|
74
67
|
for (let index = 0; index < 3; index++)
|
|
75
68
|
if (hexs[index].length == 1)
|
|
76
|
-
hexs[index] =
|
|
77
|
-
return
|
|
69
|
+
hexs[index] = `0${hexs[index]}`;
|
|
70
|
+
return `#${hexs.join("")}`;
|
|
78
71
|
}
|
|
79
72
|
/**
|
|
80
73
|
* 获取颜色变暗或亮
|
|
@@ -83,11 +76,13 @@ System.register('Utils', [], (function (exports) {
|
|
|
83
76
|
*/
|
|
84
77
|
getDarkColor(color, level) {
|
|
85
78
|
if (!this.isHex(color)) {
|
|
86
|
-
throw new TypeError(
|
|
79
|
+
throw new TypeError(`输入错误的hex:${color}`);
|
|
87
80
|
}
|
|
88
|
-
|
|
81
|
+
const rgbc = this.hexToRgb(color);
|
|
89
82
|
for (let index = 0; index < 3; index++) {
|
|
90
|
-
|
|
83
|
+
const rgbcItemValue = rgbc[index];
|
|
84
|
+
const value = Math.floor(Number(rgbcItemValue) * (1 - Number(level)));
|
|
85
|
+
Reflect.set(rgbc, index, value);
|
|
91
86
|
}
|
|
92
87
|
return this.rgbToHex(rgbc[0], rgbc[1], rgbc[2]);
|
|
93
88
|
}
|
|
@@ -98,40 +93,43 @@ System.register('Utils', [], (function (exports) {
|
|
|
98
93
|
*/
|
|
99
94
|
getLightColor(color, level) {
|
|
100
95
|
if (!this.isHex(color)) {
|
|
101
|
-
throw new TypeError(
|
|
96
|
+
throw new TypeError(`输入错误的hex:${color}`);
|
|
102
97
|
}
|
|
103
|
-
|
|
98
|
+
const rgbc = this.hexToRgb(color);
|
|
104
99
|
for (let index = 0; index < 3; index++) {
|
|
105
|
-
|
|
100
|
+
const rgbcItemValue = Number(rgbc[index]);
|
|
101
|
+
const value = Math.floor(255 - rgbcItemValue * level + rgbcItemValue);
|
|
102
|
+
Reflect.set(rgbc, index, value);
|
|
106
103
|
}
|
|
107
104
|
return this.rgbToHex(rgbc[0], rgbc[1], rgbc[2]);
|
|
108
105
|
}
|
|
109
106
|
}
|
|
110
107
|
|
|
111
108
|
class GBKEncoder {
|
|
112
|
-
#data
|
|
109
|
+
#data;
|
|
113
110
|
#U2Ghash = {};
|
|
114
111
|
#G2Uhash = {};
|
|
115
112
|
constructor() {
|
|
116
|
-
let dataText = this.handleText("4e:020405060f12171f20212326292e2f313335373c40414244464a5155575a5b6263646567686a6b6c6d6e6f727475767778797a7b7c7d7f808182838485878a#909697999c9d9ea3aaafb0b1b4b6b7b8b9bcbdbec8cccfd0d2dadbdce0e2e6e7e9edeeeff1f4f8f9fafcfe,4f:00020304050607080b0c12131415161c1d212328292c2d2e31333537393b3e3f40414244454748494a4b4c525456616266686a6b6d6e7172757778797a7d8081828586878a8c8e909293959698999a9c9e9fa1a2a4abadb0b1b2b3b4b6b7b8b9babbbcbdbec0c1c2c6c7c8c9cbcccdd2d3d4d5d6d9dbe0e2e4e5e7ebecf0f2f4f5f6f7f9fbfcfdff,50:000102030405060708090a#0b0e1011131516171b1d1e20222324272b2f303132333435363738393b3d3f404142444546494a4b4d5051525354565758595b5d5e5f6061626364666768696a6b6d6e6f70717273747578797a7c7d818283848687898a8b8c8e8f909192939495969798999a9b9c9d9e9fa0a1a2a4a6aaabadaeafb0b1b3b4b5b6b7b8b9bcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdced0d1d2d3d4d5d7d8d9dbdcdddedfe0e1e2e3e4e5e8e9eaebeff0f1f2f4f6f7f8f9fafcfdfeff,51:00010203040508#090a0c0d0e0f1011131415161718191a1b1c1d1e1f2022232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e42474a4c4e4f5052535758595b5d5e5f606163646667696a6f727a7e7f838486878a8b8e8f90919394989a9d9e9fa1a3a6a7a8a9aaadaeb4b8b9babebfc1c2c3c5c8cacdced0d2d3d4d5d6d7d8d9dadcdedfe2e3e5e6e7e8e9eaeceef1f2f4f7fe,52:0405090b0c0f101314151c1e1f2122232526272a2c2f313234353c3e4445464748494b4e4f5253555758#595a5b5d5f6062636466686b6c6d6e7071737475767778797a7b7c7e808384858687898a8b8c8d8e8f91929495969798999a9ca4a5a6a7aeafb0b4b5b6b7b8b9babbbcbdc0c1c2c4c5c6c8cacccdcecfd1d3d4d5d7d9dadbdcdddee0e1e2e3e5e6e7e8e9eaebecedeeeff1f2f3f4f5f6f7f8fbfcfd,53:0102030407090a0b0c0e11121314181b1c1e1f2224252728292b2c2d2f3031323334353637383c3d404244464b4c4d505458595b5d65686a6c6d7276797b7c7d7e80818387888a8e8f#90919293949697999b9c9ea0a1a4a7aaabacadafb0b1b2b3b4b5b7b8b9babcbdbec0c3c4c5c6c7cecfd0d2d3d5dadcdddee1e2e7f4fafeff,54:000205070b1418191a1c2224252a303336373a3d3f4142444547494c4d4e4f515a5d5e5f6061636567696a6b6c6d6e6f7074797a7e7f8183858788898a8d919397989c9e9fa0a1a2a5aeb0b2b5b6b7b9babcbec3c5cacbd6d8dbe0e1e2e3e4ebeceff0f1f4f5f6f7f8f9fbfe,55:0002030405080a0b0c0d0e121315161718191a1c1d1e1f212526#28292b2d3234353638393a3b3d40424547484b4c4d4e4f515253545758595a5b5d5e5f60626368696b6f7071727374797a7d7f85868c8d8e9092939596979a9b9ea0a1a2a3a4a5a6a8a9aaabacadaeafb0b2b4b6b8babcbfc0c1c2c3c6c7c8cacbcecfd0d5d7d8d9dadbdee0e2e7e9edeef0f1f4f6f8f9fafbfcff,56:0203040506070a0b0d1011121314151617191a1c1d202122252628292a2b2e2f30333537383a3c3d3e404142434445464748494a4b4f5051525355565a5b5d5e5f6061#636566676d6e6f70727374757778797a7d7e7f80818283848788898a8b8c8d9091929495969798999a9b9c9d9e9fa0a1a2a4a5a6a7a8a9aaabacadaeb0b1b2b3b4b5b6b8b9babbbdbebfc0c1c2c3c4c5c6c7c8c9cbcccdcecfd0d1d2d3d5d6d8d9dce3e5e6e7e8e9eaeceeeff2f3f6f7f8fbfc,57:00010205070b0c0d0e0f101112131415161718191a1b1d1e202122242526272b313234353637383c3d3f414344454648494b52535455565859626365676c6e707172747578797a7d7e7f80#818788898a8d8e8f90919495969798999a9c9d9e9fa5a8aaacafb0b1b3b5b6b7b9babbbcbdbebfc0c1c4c5c6c7c8c9cacccdd0d1d3d6d7dbdcdee1e2e3e5e6e7e8e9eaebeceef0f1f2f3f5f6f7fbfcfeff,58:0103040508090a0c0e0f101213141617181a1b1c1d1f222325262728292b2c2d2e2f31323334363738393a3b3c3d3e3f4041424345464748494a4b4e4f505253555657595a5b5c5d5f6061626364666768696a6d6e6f707172737475767778797a7b7c7d7f82848687888a8b8c#8d8e8f909194959697989b9c9da0a1a2a3a4a5a6a7aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbdbebfc0c2c3c4c6c7c8c9cacbcccdcecfd0d2d3d4d6d7d8d9dadbdcdddedfe0e1e2e3e5e6e7e8e9eaedeff1f2f4f5f7f8fafbfcfdfeff,59:000103050608090a0b0c0e1011121317181b1d1e2021222326282c30323335363b3d3e3f404345464a4c4d505253595b5c5d5e5f616364666768696a6b6c6d6e6f70717275777a7b7c7e7f8085898b8c8e8f90919495989a9b9c9d9fa0a1a2a6#a7acadb0b1b3b4b5b6b7b8babcbdbfc0c1c2c3c4c5c7c8c9cccdcecfd5d6d9dbdedfe0e1e2e4e6e7e9eaebedeeeff0f1f2f3f4f5f6f7f8fafcfdfe,5a:00020a0b0d0e0f101214151617191a1b1d1e2122242627282a2b2c2d2e2f3033353738393a3b3d3e3f414243444547484b4c4d4e4f5051525354565758595b5c5d5e5f60616364656668696b6c6d6e6f7071727378797b7c7d7e808182838485868788898a8b8c8d8e8f9091939495969798999c9d9e9fa0a1a2a3a4a5a6a7a8a9abac#adaeafb0b1b4b6b7b9babbbcbdbfc0c3c4c5c6c7c8cacbcdcecfd0d1d3d5d7d9dadbdddedfe2e4e5e7e8eaecedeeeff0f2f3f4f5f6f7f8f9fafbfcfdfeff,5b:0001020304050607080a0b0c0d0e0f10111213141518191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303133353638393a3b3c3d3e3f4142434445464748494a4b4c4d4e4f52565e606167686b6d6e6f7274767778797b7c7e7f82868a8d8e90919294969fa7a8a9acadaeafb1b2b7babbbcc0c1c3c8c9cacbcdcecf#d1d4d5d6d7d8d9dadbdce0e2e3e6e7e9eaebecedeff1f2f3f4f5f6f7fdfe,5c:0002030507080b0c0d0e10121317191b1e1f2021232628292a2b2d2e2f303233353637434446474c4d5253545657585a5b5c5d5f62646768696a6b6c6d70727374757677787b7c7d7e808384858687898a8b8e8f9293959d9e9fa0a1a4a5a6a7a8aaaeafb0b2b4b6b9babbbcbec0c2c3c5c6c7c8c9cacccdcecfd0d1d3d4d5d6d7d8dadbdcdddedfe0e2e3e7e9ebeceeeff1f2f3f4f5f6f7f8f9fafcfdfeff,5d:00#01040508090a0b0c0d0f10111213151718191a1c1d1f2021222325282a2b2c2f3031323335363738393a3b3c3f4041424344454648494d4e4f5051525354555657595a5c5e5f6061626364656667686a6d6e7071727375767778797a7b7c7d7e7f8081838485868788898a8b8c8d8e8f9091929394959697989a9b9c9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b8b9babbbcbdbebfc0c1c2c3c4c6c7c8c9cacbcccecfd0d1d2d3d4d5d6d7d8d9dadcdfe0e3e4eaeced#f0f5f6f8f9fafbfcff,5e:000407090a0b0d0e1213171e1f20212223242528292a2b2c2f303233343536393a3e3f404143464748494a4b4d4e4f50515253565758595a5c5d5f60636465666768696a6b6c6d6e6f70717577797e8182838588898c8d8e92989b9da1a2a3a4a8a9aaabacaeafb0b1b2b4babbbcbdbfc0c1c2c3c4c5c6c7c8cbcccdcecfd0d4d5d7d8d9dadcdddedfe0e1e2e3e4e5e6e7e9ebecedeeeff0f1f2f3f5f8f9fbfcfd,5f:050607090c0d0e10121416191a1c1d1e21222324#282b2c2e30323334353637383b3d3e3f4142434445464748494a4b4c4d4e4f5154595a5b5c5e5f60636567686b6e6f72747576787a7d7e7f83868d8e8f919394969a9b9d9e9fa0a2a3a4a5a6a7a9abacafb0b1b2b3b4b6b8b9babbbebfc0c1c2c7c8cacbced3d4d5dadbdcdedfe2e3e5e6e8e9eceff0f2f3f4f6f7f9fafc,60:0708090b0c10111317181a1e1f2223242c2d2e3031323334363738393a3d3e404445464748494a4c4e4f5153545657585b5c5e5f606165666e71727475777e80#8182858687888a8b8e8f909193959798999c9ea1a2a4a5a7a9aaaeb0b3b5b6b7b9babdbebfc0c1c2c3c4c7c8c9cccdcecfd0d2d3d4d6d7d9dbdee1e2e3e4e5eaf1f2f5f7f8fbfcfdfeff,61:02030405070a0b0c1011121314161718191b1c1d1e21222528292a2c2d2e2f303132333435363738393a3b3c3d3e4041424344454647494b4d4f50525354565758595a5b5c5e5f606163646566696a6b6c6d6e6f717273747678797a7b7c7d7e7f808182838485868788898a8c8d8f9091929395#969798999a9b9c9e9fa0a1a2a3a4a5a6aaabadaeafb0b1b2b3b4b5b6b8b9babbbcbdbfc0c1c3c4c5c6c7c9cccdcecfd0d3d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e7e8e9eaebecedeeeff0f1f2f3f4f6f7f8f9fafbfcfdfe,62:00010203040507091314191c1d1e2023262728292b2d2f303132353638393a3b3c424445464a4f50555657595a5c5d5e5f6061626465687172747577787a7b7d818283858687888b8c8d8e8f9094999c9d9ea3a6a7a9aaadaeafb0b2b3b4b6b7b8babec0c1#c3cbcfd1d5dddee0e1e4eaebf0f2f5f8f9fafb,63:00030405060a0b0c0d0f10121314151718191c2627292c2d2e30313334353637383b3c3e3f40414447484a51525354565758595a5b5c5d60646566686a6b6c6f707273747578797c7d7e7f81838485868b8d9193949597999a9b9c9d9e9fa1a4a6abafb1b2b5b6b9bbbdbfc0c1c2c3c5c7c8cacbccd1d3d4d5d7d8d9dadbdcdddfe2e4e5e6e7e8ebeceeeff0f1f3f5f7f9fafbfcfe,64:0304060708090a0d0e111215161718191a1d1f222324#252728292b2e2f3031323335363738393b3c3e404243494b4c4d4e4f505153555657595a5b5c5d5f60616263646566686a6b6c6e6f70717273747576777b7c7d7e7f8081838688898a8b8c8d8e8f90939497989a9b9c9d9fa0a1a2a3a5a6a7a8aaabafb1b2b3b4b6b9bbbdbebfc1c3c4c6c7c8c9cacbcccfd1d3d4d5d6d9dadbdcdddfe0e1e3e5e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,65:01020304050607080a0b0c0d0e0f10111314151617191a1b1c1d1e1f2021#222324262728292a2c2d30313233373a3c3d404142434446474a4b4d4e5052535457585a5c5f606164656768696a6d6e6f7173757678797a7b7c7d7e7f8081828384858688898a8d8e8f92949596989a9d9ea0a2a3a6a8aaacaeb1b2b3b4b5b6b7b8babbbebfc0c2c7c8c9cacdd0d1d3d4d5d8d9dadbdcdddedfe1e3e4eaebf2f3f4f5f8f9fbfcfdfeff,66:0104050708090b0d1011121617181a1b1c1e2122232426292a2b2c2e3032333738393a3b3d3f40424445464748494a4d4e505158#595b5c5d5e6062636567696a6b6c6d7172737578797b7c7d7f808183858688898a8b8d8e8f909293949598999a9b9c9e9fa0a1a2a3a4a5a6a9aaabacadafb0b1b2b3b5b6b7b8babbbcbdbfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8dadedfe0e1e2e3e4e5e7e8eaebecedeeeff1f5f6f8fafbfd,67:010203040506070c0e0f1112131618191a1c1e20212223242527292e303233363738393b3c3e3f414445474a4b4d5254555758595a5b5d62636466676b6c6e717476#78797a7b7d8082838586888a8c8d8e8f9192939496999b9fa0a1a4a6a9acaeb1b2b4b9babbbcbdbebfc0c2c5c6c7c8c9cacbcccdced5d6d7dbdfe1e3e4e6e7e8eaebedeef2f5f6f7f8f9fafbfcfe,68:01020304060d1012141518191a1b1c1e1f20222324252627282b2c2d2e2f30313435363a3b3f474b4d4f52565758595a5b5c5d5e5f6a6c6d6e6f707172737578797a7b7c7d7e7f8082848788898a8b8c8d8e90919294959698999a9b9c9d9e9fa0a1a3a4a5a9aaabacaeb1b2b4b6b7b8#b9babbbcbdbebfc1c3c4c5c6c7c8cacccecfd0d1d3d4d6d7d9dbdcdddedfe1e2e4e5e6e7e8e9eaebecedeff2f3f4f6f7f8fbfdfeff,69:00020304060708090a0c0f11131415161718191a1b1c1d1e21222325262728292a2b2c2e2f313233353637383a3b3c3e4041434445464748494a4b4c4d4e4f50515253555658595b5c5f616264656768696a6c6d6f7072737475767a7b7d7e7f8183858a8b8c8e8f909192939697999a9d9e9fa0a1a2a3a4a5a6a9aaacaeafb0b2b3b5b6b8b9babcbd#bebfc0c2c3c4c5c6c7c8c9cbcdcfd1d2d3d5d6d7d8d9dadcdddee1e2e3e4e5e6e7e8e9eaebeceeeff0f1f3f4f5f6f7f8f9fafbfcfe,6a:000102030405060708090b0c0d0e0f10111213141516191a1b1c1d1e20222324252627292b2c2d2e30323334363738393a3b3c3f40414243454648494a4b4c4d4e4f515253545556575a5c5d5e5f60626364666768696a6b6c6d6e6f70727374757677787a7b7d7e7f81828385868788898a8b8c8d8f929394959698999a9b9c9d9e9fa1a2a3a4a5a6#a7a8aaadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,6b:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f252628292a2b2c2d2e2f303133343536383b3c3d3f4041424445484a4b4d4e4f5051525354555657585a5b5c5d5e5f606168696b6c6d6e6f7071727374757677787a7d7e7f808588#8c8e8f909194959798999c9d9e9fa0a2a3a4a5a6a7a8a9abacadaeafb0b1b2b6b8b9babbbcbdbec0c3c4c6c7c8c9caccced0d1d8dadcdddedfe0e2e3e4e5e6e7e8e9ecedeef0f1f2f4f6f7f8fafbfcfeff,6c:000102030408090a0b0c0e12171c1d1e2023252b2c2d31333637393a3b3c3e3f434445484b4c4d4e4f5152535658595a62636566676b6c6d6e6f71737577787a7b7c7f8084878a8b8d8e9192959697989a9c9d9ea0a2a8acafb0b4b5b6b7bac0c1c2c3c6c7c8cbcdcecfd1d2d8#d9dadcdddfe4e6e7e9ecedf2f4f9ff,6d:000203050608090a0d0f101113141516181c1d1f20212223242628292c2d2f30343637383a3f404244494c50555657585b5d5f6162646567686b6c6d707172737576797a7b7d7e7f8081838486878a8b8d8f9092969798999a9ca2a5acadb0b1b3b4b6b7b9babbbcbdbec1c2c3c8c9cacdcecfd0d2d3d4d5d7dadbdcdfe2e3e5e7e8e9eaedeff0f2f4f5f6f8fafdfeff,6e:0001020304060708090b0f12131518191b1c1e1f222627282a2c2e30313335#3637393b3c3d3e3f40414245464748494a4b4c4f5051525557595a5c5d5e606162636465666768696a6c6d6f707172737475767778797a7b7c7d8081828487888a8b8c8d8e91929394959697999a9b9d9ea0a1a3a4a6a8a9abacadaeb0b3b5b8b9bcbebfc0c3c4c5c6c8c9cacccdced0d2d6d8d9dbdcdde3e7eaebecedeeeff0f1f2f3f5f6f7f8fafbfcfdfeff,6f:000103040507080a0b0c0d0e101112161718191a1b1c1d1e1f212223252627282c2e303234353738393a3b3c3d3f404142#43444548494a4c4e4f5051525354555657595a5b5d5f60616364656768696a6b6c6f707173757677797b7d7e7f808182838586878a8b8f909192939495969798999a9b9d9e9fa0a2a3a4a5a6a8a9aaabacadaeafb0b1b2b4b5b7b8babbbcbdbebfc1c3c4c5c6c7c8cacbcccdcecfd0d3d4d5d6d7d8d9dadbdcdddfe2e3e4e5e6e7e8e9eaebecedf0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,70:000102030405060708090a0b0c0d0e0f1012131415161718191c1d1e1f2021222425262728292a#2b2c2d2e2f30313233343637383a3b3c3d3e3f404142434445464748494a4b4d4e505152535455565758595a5b5c5d5f606162636465666768696a6e7172737477797a7b7d818283848687888b8c8d8f90919397989a9b9e9fa0a1a2a3a4a5a6a7a8a9aab0b2b4b5b6babebfc4c5c6c7c9cbcccdcecfd0d1d2d3d4d5d6d7dadcdddee0e1e2e3e5eaeef0f1f2f3f4f5f6f8fafbfcfeff,71:0001020304050607080b0c0d0e0f111214171b1c1d1e1f2021222324252728292a2b2c2d2e323334#353738393a3b3c3d3e3f4041424344464748494b4d4f505152535455565758595a5b5d5f6061626365696a6b6c6d6f707174757677797b7c7e7f8081828385868788898b8c8d8e909192939596979a9b9c9d9ea1a2a3a4a5a6a7a9aaabadaeafb0b1b2b4b6b7b8babbbcbdbebfc0c1c2c4c5c6c7c8c9cacbcccdcfd0d1d2d3d6d7d8d9dadbdcdddedfe1e2e3e4e6e8e9eaebecedeff0f1f2f3f4f5f6f7f8fafbfcfdfeff,72:0001020304050708090a0b0c0d0e0f101112131415161718191a#1b1c1e1f2021222324252627292b2d2e2f3233343a3c3e40414243444546494a4b4e4f505153545557585a5c5e60636465686a6b6c6d707173747677787b7c7d828385868788898c8e9091939495969798999a9b9c9d9ea0a1a2a3a4a5a6a7a8a9aaabaeb1b2b3b5babbbcbdbebfc0c5c6c7c9cacbcccfd1d3d4d5d6d8dadb#95$,30:000102,00b702:c9c7,00a830:0305,2014ff5e20:162618191c1d,30:141508090a0b0c0d0e0f16171011,00:b1d7f7,22:362728110f2a2908371aa52520,231222:992b2e614c483d1d606e6f64651e3534,26:4240,00b020:3233,2103ff0400a4ff:e0e1,203000a7211626:0605,25:cbcfcec7c6a1a0b3b2,203b21:92909193,30:13#95$,21:70717273747576777879#4$,24:88898a8b8c8d8e8f909192939495969798999a9b7475767778797a7b7c7d7e7f808182838485868760616263646566676869##,32:20212223242526272829##,21:606162636465666768696a6b#97$,ff:010203e505060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5de3#95$,30:4142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f90919293#106$a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6#103$,03:9192939495969798999a9b9c9d9e9fa0a1a3a4a5a6a7a8a9#6$b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c3c4c5c6c7c8c9#5$,fe:3536393a3f403d3e41424344##3b3c373831#3334#104$,04:10111213141501161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f#13$30313233343551363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f#11$,02:cacbd9,20:13152535,21:050996979899,22:151f23526667bf,25:505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f7071727381828384858687#88898a8b8c8d8e8f939495bcbde2e3e4e5,2609229530:121d1e#9$,010100e101ce00e0011300e9011b00e8012b00ed01d000ec014d00f301d200f2016b00fa01d400f901:d6d8dadc,00:fcea,0251e7c701:4448,e7c802:61#2$,31:05060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223242526272829#19$,30:212223242526272829,32a333:8e8f9c9d9ea1c4ced1d2d5,fe30ff:e2e4#,212132:31#,20:10#1$,30:fc9b9cfdfe069d9e,fe:494a4b4c4d4e4f50515254555657595a5b5c5d5e5f6061#626364656668696a6b,e7:e7e8e9eaebecedeeeff0f1f2f3,30:07#11$,25:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b#13$,72:dcdddfe2e3e4e5e6e7eaebf5f6f9fdfeff,73:00020405060708090b0c0d0f1011121418191a1f2023242627282d2f30323335363a3b3c3d404142434445464748#494a4b4c4e4f515354555658595a5b5c5d5e5f6162636465666768696a6b6e7071#92$72737475767778797a7b7c7d7f808182838586888a8c8d8f90929394959798999a9c9d9ea0a1a3a4a5a6a7a8aaacadb1b4b5b6b8b9bcbdbebfc1c3c4c5c6c7#cbccced2d3d4d5d6d7d8dadbdcdddfe1e2e3e4e6e8eaebeceeeff0f1f3f4f5f6f7#92$f8f9fafbfcfdfeff,74:0001020407080b0c0d0e1112131415161718191c1d1e1f2021232427292b2d2f31323738393a3b3d3e3f4042434445464748494a4b4c4d#4e4f505152535456585d606162636465666768696a6b6c6e6f717273747578797a#92$7b7c7d7f8284858688898a8c8d8f9192939495969798999a9b9d9fa0a1a2a3a4a5a6aaabacadaeafb0b1b2b3b4b5b6b7b8b9bbbcbdbebfc0c1c2c3c4c5c6c7#c8c9cacbcccdcecfd0d1d3d4d5d6d7d8d9dadbdddfe1e5e7e8e9eaebecedf0f1f2#92$f3f5f8f9fafbfcfdfe,75:0001020305060708090a0b0c0e1012141516171b1d1e202122232426272a2e3436393c3d3f414243444647494a4d5051525355565758#5d5e5f60616263646768696b6c6d6e6f7071737576777a7b7c7d7e808182848587#92$88898a8c8d8e909395989b9c9ea2a6a7a8a9aaadb6b7babbbfc0c1c6cbcccecfd0d1d3d7d9dadcdddfe0e1e5e9ecedeeeff2f3f5f6f7f8fafbfdfe,76:02040607#08090b0d0e0f11121314161a1c1d1e212327282c2e2f31323637393a3b3d414244#92$45464748494a4b4e4f50515253555758595a5b5d5f6061626465666768696a6c6d6e7071727374757677797a7c7f80818385898a8c8d8f9092949597989a9b#9c9d9e9fa0a1a2a3a5a6a7a8a9aaabacadafb0b3b5b6b7b8b9babbbcbdbec0c1c3,554a963f57c3632854ce550954c076:914c,853c77ee827e788d72319698978d6c285b894ffa630966975cb880fa684880ae660276ce51f9655671ac7ff1888450b2596561ca6fb382ad634c625253ed54277b06516b75a45df462d48dcb9776628a8019575d97387f627238767d67cf767e64464f708d2562dc7a17659173ed642c6273822c9881677f724862:6ecc,4f3474e3534a529e7eca90a65e2e6886699c81807ed168d278c5868c9551508d8c2482de80de53058912526576:c4c7c9cbccd3d5d9dadcdddee0e1e2e3e4e6e7e8e9eaebecedf0f3f5f6f7fafbfdff,77:00020305060a0c0e0f1011121314151617181b1c1d1e21232425272a2b#2c2e3031323334393b3d3e3f4244454648494a4b4c4d4e4f52535455565758595c,858496f94fdd582199715b9d62:b1a5,66b48c799c8d7206676f789160b253:5117,8f8880cc8d1d94a1500d72c8590760eb711988ab595482ef672c7b285d297ef7752d6cf58e668ff8903c9f3b6bd491197b145f7c78a784d6853d6b:d5d9d6,5e:0187,75f995ed655d5f:0ac5,8f9f58c181c2907f965b97ad8fb97f168d2c62414fbf53:d85e,8f:a8a9ab,904d68075f6a819888689cd6618b522b762a5f6c658c6fd26ee85bbe644851:75b0,67c44e1979c9997c70b377:5d5e5f606467696a6d6e6f7071727374757677787a7b7c818283868788898a8b8f90939495969798999a9b9c9d9ea1a3a4a6a8abadaeafb1b2b4b6b7b8b9ba#bcbec0c1c2c3c4c5c6c7c8c9cacbcccecfd0d1d2d3d4d5d6d8d9dadddedfe0e1e4,75c55e7673bb83e064ad62e894b56ce2535a52c3640f94c27b944f2f5e1b823681:168a,6e246cca9a736355535c54fa886557e04e0d5e036b657c3f90e8601664e6731c88c16750624d8d22776c8e2991c75f6983dc8521991053c286956b8b60:ede8,707f82:cd31,4ed36ca785cf64cd7cd969fd66f9834953957b564fa7518c6d4b5c428e6d63d253c983:2c36,67e578b4643d5bdf5c945dee8be762c667f48c7a640063ba8749998b8c177f2094f24ea7961098a4660c731677:e6e8eaeff0f1f2f4f5f7f9fafbfc,78:0304050607080a0b0e0f101315191b1e20212224282a2b2e2f31323335363d3f414243444648494a4b4d4f51535458595a#5b5c5e5f606162636465666768696f7071727374757678797a7b7d7e7f80818283,573a5c1d5e38957f507f80a05382655e7545553150218d856284949e671d56326f6e5de2543570928f66626f64a463a35f7b6f8890f481e38fb05c1866685ff16c8996488d81886c649179f057ce6a59621054484e587a0b60e96f848bda627f901e9a8b79e4540375f4630153196c608fdf5f1b9a70803b9f7f4f885c3a8d647fc565a570bd51:45b2,866b5d075ba062bd916c75748e0c7a2061017b794ec77ef877854e1181ed521d51fa6a7153a88e87950496cf6ec19664695a78:848586888a8b8f9092949596999d9ea0a2a4a6a8a9aaabacadaeafb5b6b7b8babbbcbdbfc0c2c3c4c6c7c8cccdcecfd1d2d3d6d7d8dadbdcdddedfe0e1e2e3#e4e5e6e7e9eaebedeeeff0f1f3f5f6f8f9fbfcfdfeff,79:00020304060708090a0b0c,784050a877d7641089e6590463e35ddd7a7f693d4f20823955984e3275ae7a975e:628a,95ef521b5439708a6376952457826625693f918755076df37eaf882262337ef075b5832878c196cc8f9e614874f78bcd6b64523a8d506b21806a847156f153064e:ce1b,51d17c97918b7c074fc38e7f7be17a9c64675d1450ac810676017cb96dec7fe067515b:58f8,78cb64:ae13,63:aa2b,9519642d8fbe7b5476296253592754466b7950a362345e266b864ee38d37888b5f85902e79:0d0e0f1011121415161718191a1b1c1d1f2021222325262728292a2b2c2d2e2f3031323335363738393d3f42434445474a4b4c4d4e4f505152545558596163#6466696a6b6c6e70717273747576797b7c7d7e7f8283868788898b8c8d8e909192,6020803d62c54e39535590f863b880c665e66c2e4f4660ee6de18bde5f3986cb5f536321515a83616863520063638e4850125c9b79775bfc52307a3b60bc905376d75f:b797,76848e6c706f767b7b4977aa51f3909358244f4e6ef48fea654c7b1b72c46da47fdf5ae162b55e95573084827b2c5e1d5f1f90127f1498a063826ec7789870b95178975b57ab75354f4375385e9760e659606dc06bbf788953fc96d551cb52016389540a94938c038dcc7239789f87768fed8c0d53e079:939495969798999b9c9d9e9fa0a1a2a3a4a5a6a8a9aaabacadaeafb0b1b2b4b5b6b7b8bcbfc2c4c5c7c8cacccecfd0d3d4d6d7d9dadbdcdddee0e1e2e5e8ea#eceef1f2f3f4f5f6f7f9fafcfeff,7a:0104050708090a0c0f10111213151618191b1c,4e0176ef53ee948998769f0e952d5b9a8ba24e:221c,51ac846361c252a8680b4f97606b51bb6d1e515c6296659796618c46901775d890fd77636bd272:8aec,8bfb583577798d4c675c9540809a5ea66e2159927aef77ed953b6bb565ad7f0e58065151961f5bf958a954288e726566987f56e4949d76fe9041638754c659:1a3a,579b8eb267358dfa8235524160f0581586fe5ce89e454fc4989d8bb95a2560765384627c904f9102997f6069800c513f80335c1499756d314e8c7a:1d1f21222425262728292a2b2c2d2e2f303132343536383a3e4041424344454748494a4b4c4d4e4f50525354555658595a5b5c5d5e5f606162636465666768#696a6b6c6d6e6f717273757b7c7d7e828587898a8b8c8e8f909394999a9b9ea1a2,8d3053d17f5a7b4f4f104e4f96006cd573d085e95e06756a7ffb6a0a77fe94927e4151e170e653cd8fd483038d2972af996d6cdb574a82b365b980aa623f963259a84eff8bbf7eba653e83f2975e556198de80a5532a8bfd542080ba5e9f6cb88d3982ac915a54296c1b52067eb7575f711a6c7e7c89594b4efd5fff61247caa4e305c0167ab87025cf0950b98ce75af70fd902251af7f1d8bbd594951e44f5b5426592b657780a45b7562:76c2,8f905e456c1f7b264f:0fd8,670d7a:a3a4a7a9aaabaeafb0b1b2b4b5b6b7b8b9babbbcbdbec0c1c2c3c4c5c6c7c8c9cacccdcecfd0d1d2d3d4d5d7d8dadbdcdde1e2e4e7e8e9eaebeceef0f1f2f3#f4f5f6f7f8fbfcfe,7b:0001020507090c0d0e1012131617181a1c1d1f21222327292d,6d:6eaa,798f88b15f17752b629a8f854fef91dc65a781:2f51,5e9c81508d74526f89868d4b590d50854ed8961c723681798d1f5bcc8ba3964459877f1a549056:760e,8be565396982949976d66e895e72751867:46d1,7aff809d8d76611f79c665628d635188521a94a27f38809b7eb25c976e2f67607bd9768b9ad8818f7f947cd5641e95507a3f54:4ae5,6b4c640162089e3d80f3759952729769845b683c86e496:0194,94ec4e2a54047ed968398ddf801566f45e9a7fb97b:2f303234353637393b3d3f404142434446484a4d4e535557595c5e5f61636465666768696a6b6c6d6f70737476787a7c7d7f81828384868788898a8b8c8e8f#9192939698999a9b9e9fa0a3a4a5aeafb0b2b3b5b6b7b9babbbcbdbebfc0c2c3c4,57c2803f68975de5653b529f606d9f9a4f9b8eac516c5bab5f135de96c5e62f18d21517194a952fe6c9f82df72d757a267848d2d591f8f9c83c754957b8d4f306cbd5b6459d19f1353e486ca9aa88c3780a16545987e56fa96c7522e74dc52505be1630289024e5662d0602a68fa51735b9851a089c27ba199867f5060ef704c8d2f51495e7f901b747089c4572d78455f529f9f95fa8f689b3c8be17678684267dc8d:ea35,523d8f8a6eda68cd950590ed56fd679c88f98fc754c87b:c5c8c9cacbcdcecfd0d2d4d5d6d7d8dbdcdedfe0e2e3e4e7e8e9ebecedeff0f2f3f4f5f6f8f9fafbfdff,7c:0001020304050608090a0d0e101112131415171819#1a1b1c1d1e20212223242528292b2c2d2e2f3031323334353637393a3b3c3d3e42,9ab85b696d776c264ea55bb39a87916361a890af97e9542b6db55bd251fd558a7f:55f0,64bc634d65f161be608d710a6c:5749,592f676d822a58d5568e8c6a6beb90dd597d801753f76d695475559d83:77cf,683879be548c4f55540876d28c8996026cb36db88d6b89109e648d3a563f9ed175d55f8872e0606854fc4ea86a2a886160528f7054c470d886799e3f6d2a5b8f5f187ea255894faf7334543c539a501954:0e7c,4e4e5ffd745a58f6846b80e1877472d07cca6e567c:434445464748494a4b4c4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f70717275767778797a7e7f8081828384858687#888a8b8c8d8e8f90939496999a9ba0a1a3a6a7a8a9abacadafb0b4b5b6b7b8babb,5f27864e552c62a44e926caa623782b154d7534e733e6ed1753b521253168bdd69d05f8a60006dee574f6b2273af68538fd87f13636260a3552475ea8c6271156da35ba65e7b8352614c9ec478fa87577c27768751f060f6714c66435e4c604d8c0e707063258f895fbd606286d456de6bc160946167534960e066668d3f79fd4f1a70e96c478b:b3f2,7ed88364660f5a5a9b426d:51f7,8c416d3b4f19706b83b7621660d1970d8d27797851fb57:3efa,673a75787a3d79ef7b957c:bfc0c2c3c4c6c9cbcecfd0d1d2d3d4d8dadbdddee1e2e3e4e5e6e7e9eaebecedeef0f1f2f3f4f5f6f7f9fafcfdfeff,7d:000102030405060708090b0c0d0e0f10#1112131415161718191a1b1c1d1e1f212324252628292a2c2d2e30313233343536,808c99658ff96fc08ba59e2159ec7ee97f095409678168d88f917c4d96c653ca602575be6c7253735ac97ea7632451e0810a5df184df628051805b634f0e796d524260b86d4e5b:c4c2,8b:a1b0,65e25fcc964559937e:e7aa,560967b759394f735bb652a0835a988a8d3e753294be50477a3c4ef767b69a7e5ac16b7c76d1575a5c167b3a95f4714e517c80a9827059787f04832768c067ec78:b177,62e363617b804fed526a51cf835069db92748d:f531,89c1952e7bad4ef67d:3738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6f70717273747576#78797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798,506582305251996f6e:1085,6da75efa50f559dc5c066d466c5f7586848b686859568bb253209171964d854969127901712680f64ea490ca6d479a845a0756bc640594f077eb4fa5811a72e189d2997a7f347ede527f655991758f:7f83,53eb7a9663:eda5,768679f888579636622a52ab8282685467706377776b7aed6d017ed389e359d0621285c982a5754c501f4ecb75a58beb5c4a5dfe7b4b65a491d14eca6d25895f7d2795264ec58c288fdb9773664b79818fd170ec6d787d:999a9b9c9d9e9fa0a1a2a3a4a5a7a8a9aaabacadafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9#dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fa,5c3d52b283465162830e775b66769cb84eac60ca7c:beb3,7ecf4e958b66666f988897595883656c955c5f8475c997567a:dfde,51c070af7a9863ea7a767ea0739697ed4e4570784e5d915253a965:51e7,81fc8205548e5c31759a97a062d872d975bd5c459a7983ca5c40548077e94e3e6cae805a62d2636e5de851778ddd8e1e952f4ff153e560e770ac526763509e435a1f5026773753777ee26485652b628963985014723589c951b38bc07edd574783cc94a7519b541b5cfb7d:fbfcfdfeff,7e:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233343536373839#3a3c3d3e3f40424344454648494a4b4c4d4e4f505152535455565758595a5b5c5d,4fca7ae36d5a90e19a8f55805496536154af5f0063e9697751ef6168520a582a52d8574e780d770b5eb761777ce062:5b97,4ea27095800362f770e49760577782db67ef68f578d5989779d158f354b353ef6e34514b523b5ba28bfe80af554357a660735751542d7a7a60505b5463a762a053e362635bc767af54ed7a9f82e691775e9388e4593857ae630e8de880ef57577b774fa95feb5bbd6b3e53217b5072c2684677:ff36,65f751b54e8f76d45cbf7aa58475594e9b4150807e:5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081838485868788898a8b8c8d8e8f909192939495969798999a9c9d9e#aeb4bbbcd6e4ecf9,7f:0a101e37393b3c3d3e3f404143464748494a4b4c4d4e4f5253,998861276e8357646606634656f062:ec69,5ed39614578362c955878721814a8fa3556683b167658d5684dd5a6a680f62e67bee961151706f9c8c3063fd89c861d27f0670c26ee57405699472fc5eca90ce67176d6a635e52b3726280014f6c59e5916a70d96d9d52d24e5096f7956d857e78ca7d2f5121579264c2808b7c7b6cea68f1695e51b7539868a872819ece7bf172f879bb6f137406674e91cc9ca4793c83:8954,540f68174e3d538952b1783e5386522950884f:8bd0,7f:56595b5c5d5e6063646566676b6c6d6f7073757677787a7b7c7d7f8082838485868788898b8d8f9091929395969798999b9ca0a2a3a5a6a8a9aaabacadaeb1#b3b4b5b6b7babbbec0c2c3c4c6c7c8c9cbcdcfd0d1d2d3d6d7d9dadbdcdddee2e3,75e27acb7c926ca596b6529b748354e94fe9805483b28fde95705ec9601c6d9f5e18655b813894fe604b70bc7ec37cae51c968817cb1826f4e248f8691cf667e4eae8c0564a9804a50da759771ce5be58fbd6f664e86648295635ed66599521788c270c852a3730e7433679778f797164e3490bb9cde6dcb51db8d41541d62ce73b283f196f69f8494c34f367f9a51cc707596755cad988653e64ee46e9c740969b4786b998f7559521876246d4167f3516d9f99804b54997b3c7abf7f:e4e7e8eaebecedeff2f4f5f6f7f8f9fafdfeff,80:020708090a0e0f11131a1b1d1e1f2123242b2c2d2e2f303234393a3c3e404144454748494e4f505153555657#595b5c5d5e5f6061626364656667686b6c6d6e6f7072737475767778797a7b7c7d,9686578462e29647697c5a0464027bd36f0f964b82a6536298855e90708963b35364864f9c819e93788c97328d:ef42,9e7f6f5e79845f559646622e9a74541594dd4fa365c55c:6561,7f1586516c2f5f8b73876ee47eff5ce6631b5b6a6ee653754e7163a0756562a18f6e4f264ed16ca67eb68bba841d87ba7f57903b95237ba99aa188f8843d6d1b9a867edc59889ebb739b780186829a:6c82,561b541757cb4e709ea653568fc881097792999286ee6ee1851366fc61626f2b80:7e818285888a8d8e8f909192949597999ea3a6a7a8acb0b3b5b6b8b9bbc5c7c8c9cacbcfd0d1d2d3d4d5d8dfe0e2e3e6eef5f7f9fbfeff,81:000103040507080b#0c1517191b1c1d1f202122232425262728292a2b2d2e3033343537393a3b3c3d3f,8c298292832b76f26c135fd983bd732b8305951a6bdb77db94c6536f830251925e3d8c8c8d384e4873ab679a68859176970971646ca177095a9295416bcf7f8e66275bd059b95a9a95:e8f7,4eec84:0c99,6aac76df9530731b68a65b5f772f919a97617cdc8ff78c1c5f257c7379d889c56ccc871c5bc65e4268c977207ef551:954d,52c95a297f05976282d763cf778485d079d26e3a5e9959998511706d6c1162bf76bf654f60af95fd660e879f9e2394ed54:0d7d,8c2c647881:40414243444547494d4e4f525657585b5c5d5e5f6162636466686a6b6c6f727375767778818384858687898b8c8d8e90929394959697999a9e9fa0a1a2a4a5#a7a9abacadaeafb0b1b2b4b5b6b7b8b9bcbdbebfc4c5c7c8c9cbcdcecfd0d1d2d3,647986116a21819c78e864699b5462b9672b83ab58a89ed86cab6f205bde964c8c0b725f67d062c772614ea959c66bcd589366ae5e5552df6155672876ee776672677a4662ff54:ea50,94a090a35a1c7eb36c164e435976801059485357753796be56ca63208111607c95f96dd65462998151855ae980fd59ae9713502a6ce55c3c62df4f60533f817b90066eba852b62c85e7478be64b5637b5ff55a18917f9e1f5c3f634f80425b7d556e95:4a4d,6d8560a867e072de51dd5b8181:d4d5d6d7d8d9dadbdcdddedfe0e1e2e4e5e6e8e9ebeeeff0f1f2f5f6f7f8f9fafdff,82:030708090a0b0e0f111315161718191a1d2024252627292e323a3c3d3f#404142434546484a4c4d4e5051525354555657595b5c5d5e606162636465666769,62e76cde725b626d94ae7ebd81136d53519c5f04597452aa6012597366968650759f632a61e67cef8bfa54e66b279e256bb485d5545550766ca4556a8db4722c5e156015743662cd6392724c5f986e436d3e65006f5876d878d076fc7554522453db4e535e9e65c180:2ad6,629b5486522870ae888d8dd16ce1547880da57f988f48d54966a914d4f696c9b55b776c6783062a870f96f8e5f6d84ec68da787c7bf781a8670b9e4f636778b0576f7812973962:79ab,528874356bd782:6a6b6c6d71757677787b7c808183858687898c90939495969a9b9ea0a2a3a7b2b5b6babbbcbfc0c2c3c5c6c9d0d6d9dadde2e7e8e9eaecedeef0f2f3f5f6f8#fafcfdfeff,83:000a0b0d1012131618191d1e1f20212223242526292a2e3032373b3d,5564813e75b276ae533975de50fb5c418b6c7bc7504f72479a9798d86f0274e27968648777a562fc98918d2b54c180584e52576a82f9840d5e7351ed74f68bc45c4f57616cfc98875a4678349b448feb7c955256625194fa4ec68386846183e984b257d467345703666e6d668c3166dd7011671f6b3a6816621a59bb4e0351c46f0667d26c8f517668cb59476b6775665d0e81109f5065d779:4841,9a918d775c824e5e4f01542f5951780c56686c148fc45f036c:7de3,8bab639083:3e3f41424445484a4b4c4d4e5355565758595d6270717273747576797a7e7f808182838487888a8b8c8d8f909194959697999a9d9fa1a2a3a4a5a6a7acadae#afb5bbbebfc2c3c4c6c8c9cbcdced0d1d2d3d5d7d9dadbdee2e3e4e6e7e8ebeced,60706d3d7275626694:8ec5,53438fc17b7e4edf8c264e7e9ed494:b1b3,524d6f5c90636d458c3458115d4c6b:2049,67aa545b81547f8c589985375f3a62a26a47953965726084686577a74e544fa85de7979864ac7fd85ced4fcf7a8d520783044e14602f7a8394a64fb54eb279e6743452e482b964d279bd5bdd6c8197528f7b6c22503e537f6e0564ce66746c3060c598778bf75e86743c7a7779cb4e1890b174036c4256da914b6cc58d8b533a86c666f28eaf5c489a716e2083:eeeff3f4f5f6f7fafbfcfeff,84:0002050708090a10121314151617191a1b1e1f20212223292a2b2c2d2e2f30323334353637393a3b3e3f404142434445474849#4a4b4c4d4e4f505253545556585d5e5f606264656667686a6e6f70727477797b7c,53d65a369f8b8da353bb570898a76743919b6cc9516875ca62f372ac52:389d,7f3a7094763853749e4a69b7786e96c088d97fa471:36c3,518967d374e458e4651856b78ba9997662707ed560f970ed58ec4e:c1ba,5fcd97e74efb8ba45203598a7eab62544ecd65e5620e833884c98363878d71946eb65bb97ed2519763c967d480898339881551125b7a59828fb14e736c5d516589258f6f962e854a745e95:10f0,6da682e55f3164926d128428816e9cc3585e8d5b4e0953c184:7d7e7f8081838485868a8d8f90919293949596989a9b9d9e9fa0a2a3a4a5a6a7a8a9aaabacadaeb0b1b3b5b6b7bbbcbec0c2c3c5c6c7c8cbcccecfd2d4d5d7#d8d9dadbdcdee1e2e4e7e8e9eaebedeeeff1f2f3f4f5f6f7f8f9fafbfdfe,85:000102,4f1e6563685155d34e2764149a9a626b5ac2745f82726da968ee50e7838e7802674052396c997eb150bb5565715e7b5b665273ca82eb67495c715220717d886b95ea965564c58d6181b355846c5562477f2e58924f2455468d4f664c4e0a5c1a88f368a2634e7a0d70e7828d52fa97f65c1154e890b57ecd59628d4a86c782:0c0d,8d6664445c0461516d89793e8bbe78377533547b4f388eab6df15a207ec5795e6c885ba15a76751a80be614e6e1758f075:1f25,727253477ef385:030405060708090a0b0d0e0f101214151618191b1c1d1e2022232425262728292a2d2e2f303132333435363e3f404142444546474b4c4d4e4f505152535455#57585a5b5c5d5f60616263656667696a6b6c6d6e6f707173757677787c7d7f8081,770176db526980dc57235e08593172ee65bd6e7f8bd75c388671534177f362fe65f64ec098df86805b9e8bc653f277e24f7f5c4e9a7659cb5f0f793a58eb4e1667ff4e8b62ed8a93901d52bf662f55dc566c90024ed54f8d91ca99706c0f5e0260435ba489c68bd56536624b99965b:88ff,6388552e53d77626517d852c67a268b36b8a62928f9353d482126dd1758f4e668d4e5b70719f85af66:91d9,7f7287009ecd9f205c5e672f8ff06811675f620d7ad658855eb665706f3185:82838688898a8b8c8d8e909192939495969798999a9d9e9fa0a1a2a3a5a6a7a9abacadb1b2b3b4b5b6b8babbbcbdbebfc0c2c3c4c5c6c7c8cacbcccdced1d2#d4d6d7d8d9dadbdddedfe0e1e2e3e5e6e7e8eaebecedeeeff0f1f2f3f4f5f6f7f8,60555237800d6454887075295e05681362f4971c53cc723d8c016c3477617a0e542e77ac987a821c8bf47855671470c165af64955636601d79c153f84e1d6b7b80865bfa55e356db4f:3a3c,99725df3677e80386002988290015b8b8b:bcf5,641c825864de55fd82cf91654fd77d20901f7c9f50f358516eaf5bbf8bc980839178849c7b97867d96:8b8f,7ee59ad3788e5c817a57904296a7795f5b59635f7b0b84d168ad55067f2974107d2295016240584c4ed65b835979585485:f9fafcfdfe,86:0001020304060708090a0b0c0d0e0f10121314151718191a1b1c1d1e1f20212223242526282a2b2c2d2e2f3031323334353637393a3b3d3e3f40#4142434445464748494a4b4c525355565758595b5c5d5f6061636465666768696a,736d631e8e:4b0f,80ce82d462ac53f06cf0915e592a60016c70574d644a8d2a762b6ee9575b6a8075f06f6d8c:2d08,57666bef889278b363a253f970ad6c645858642a580268e0819b55107cd650188eba6dcc8d9f70eb638f6d9b6ed47ee68404684390036dd896768ba85957727985e4817e75bc8a8a68af52548e22951163d098988e44557c4f5366ff568f60d56d9552435c4959296dfb586b75:301c,606c82148146631167618fe2773a8d:f334,94c15e165385542c70c386:6d6f7072737475767778838485868788898e8f90919294969798999a9b9e9fa0a1a2a5a6abadaeb2b3b7b8b9bbbcbdbebfc1c2c3c5c8cccdd2d3d5d6d7dadc#dde0e1e2e3e5e6e7e8eaebeceff5f6f7fafbfcfdff,87:010405060b0c0e0f10111416,6c405ef7505c4ead5ead633a8247901a6850916e77b3540c94dc5f647ae5687663457b527edf75db507762955934900f51f879c37a8156fe5f9290146d825c60571f541051546e4d56e263a89893817f8715892a9000541e5c6f81c062:d658,81319e3596409a:6e7c,692d59a562d3553e631654c786d96d3c5a0374e6889c6b6a59168c4c5f2f6e7e73a9987d4e3870f75b8c7897633d665a769660cb5b9b5a494e0781556c6a738b4ea167897f515f8065fa671b5fd859845a0187:191b1d1f20242627282a2b2c2d2f303233353638393a3c3d404142434445464a4b4d4f505152545556585a5b5c5d5e5f6162666768696a6b6c6d6f71727375#7778797a7f8081848687898a8c8e8f90919294959698999a9b9c9d9ea0a1a2a3a4,5dcd5fae537197e68fdd684556f4552f60df4e3a6f4d7ef482c7840e59d44f:1f2a,5c3e7eac672a851a5473754f80c355829b4f4f4d6e2d8c135c096170536b761f6e29868a658795fb7eb9543b7a337d0a95ee55e17fc174ee631d87176da17a9d621165a1536763e16c835deb545c94a84e4c6c618bec5c4b65e0829c68a754:3e34,6b:cb66,4e9463425348821e4f:0dae,575e620a96fe6664726952:ffa1,609f8bef661471996790897f785277fd6670563b54389521727a87:a5a6a7a9aaaeb0b1b2b4b6b7b8b9bbbcbebfc1c2c3c4c5c7c8c9cccdcecfd0d4d5d6d7d8d9dadcdddedfe1e2e3e4e6e7e8e9ebecedeff0f1f2f3f4f5f6f7f8#fafbfcfdff,88:0001020405060708090b0c0d0e0f101112141718191a1c1d1e1f2023,7a00606f5e0c6089819d591560dc718470ef6eaa6c5072806a8488ad5e2d4e605ab3559c94e36d177cfb9699620f7ec6778e867e5323971e8f9666875ce14fa072ed4e0b53a6590f54136380952851484ed99c9c7ea454b88d248854823795f26d8e5f265acc663e966973:b02e,53bf817a99857fa15baa96:7750,7ebf76f853a2957699997bb189446e584e617fd479658be660f354cd4eab98795df76a6150cf54118c618427785d9704524a54ee56a395006d885bb56dc6665388:2425262728292a2b2c2d2e2f30313334353637383a3b3d3e3f414243464748494a4b4e4f505152535556585a5b5c5d5e5f6066676a6d6f717374757678797a#7b7c80838687898a8c8e8f90919394959798999a9b9d9e9fa0a1a3a5a6a7a8a9aa,5c0f5b5d6821809655787b11654869544e9b6b47874e978b534f631f643a90aa659c80c18c10519968b0537887f961c86c:c4fb,8c225c5185aa82af950c6b238f9b65b05f:fbc3,4fe18845661f8165732960fa51745211578b5f6290a2884c91925e78674f602759d351:44f6,80f853086c7996c4718a4f:11ee,7f9e673d55c5950879c088967ee3589f620c9700865a5618987b5f908bb884c4915753d965ed5e8f755c60647d6e5a7f7e:eaed,8f6955a75ba360ac65cb738488:acaeafb0b2b3b4b5b6b8b9babbbdbebfc0c3c4c7c8cacbcccdcfd0d1d3d6d7dadbdcdddee0e1e6e7e9eaebecedeeeff2f5f6f7fafbfdff,89:0001030405060708#090b0c0d0e0f1114151617181c1d1e1f20222324262728292c2d2e2f3132333537,9009766377297eda9774859b5b667a7496ea884052cb718f5faa65ec8be25bfb9a6f5de16b896c5b8b:adaf,900a8fc5538b62bc9e:262d,54404e2b82bd7259869c5d1688596daf96c554d14e9a8bb6710954bd960970df6df976d04e25781487125ca95ef68a00989c960e708e6cbf594463a9773c884d6f148273583071d5538c781a96c155015f6671305bb48c1a9a8c6b83592e9e2f79e76768626c4f6f75a17f8a6d0b96336c274ef075d2517b68376f3e908081705996747689:38393a3b3c3d3e3f40424345464748494a4b4c4d4e4f505152535455565758595a5b5c5d6061626364656768696a6b6c6d6e6f707172737475767778797a7c#7d7e808284858788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1,64475c2790657a918c2359da54ac8200836f898180006930564e8036723791ce51b64e5f987563964e1a53f666f3814b591c6db24e0058f9533b63d694f14f:9d0a,886398905937905779fb4eea80f075916c825b9c59e85f5d69058681501a5df24e5977e34ee5827a6291661390915c794ebf5f7981c69038808475ab4ea688d4610f6bc55fc64e4976ca6ea28b:e3ae,8c0a8bd15f027f:fccc,7ece83:356b,56e06bb797f3963459fb541f94f66deb5bc5996e5c395f15969089:a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c3cdd3d4d5d7d8d9dbdddfe0e1e2e4e7e8e9eaecedeef0f1f2f4f5f6f7f8f9fa#fbfcfdfeff,8a:01020304050608090a0b0c0d0e0f101112131415161718191a1b1c1d,537082f16a315a749e705e947f2883b984:2425,836787478fce8d6276c85f719896786c662054df62e54f6381c375c85eb896cd8e0a86f9548f6cf36d8c6c38607f52c775285e7d4f1860a05fe75c24753190ae94c072b96cb96e389149670953:cbf3,4f5191c98bf153c85e7c8fc26de44e8e76c26986865e611a82064f:59de,903e9c7c61096e:1d14,96854e885a3196e84e0e5c7f79b95b878bed7fbd738957df828b90c15401904755bb5cea5fa161086b3272f180b28a:891e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3f4041424344454647494a4b4c4d4e4f505152535455565758595a5b5c5d5e#5f606162636465666768696a6b6c6d6e6f7071727374757677787a7b7c7d7e7f80,6d745bd388d598848c6b9a6d9e336e0a51:a443,57a38881539f63f48f9556ed54585706733f6e907f188fdc82d1613f6028966266f07ea68d:8ac3,94a55cb37ca4670860a6960580184e9190e75300966851418fd08574915d665597f55b55531d78386742683d54c9707e5bb08f7d518d572854b1651266828d:5e43,810f846c906d7cdf51ff85fb67a365e96fa186a48e81566a90207682707671e58d2362e952196cfd8d3c600e589e618e66fe8d60624e55b36e23672d8f678a:81828384858687888b8c8d8e8f9091929495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2#c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3,94e195f87728680569a8548b4e4d70b88bc86458658b5b857a84503a5be877bb6be18a797c986cbe76cf65a98f975d2d5c5586386808536062187ad96e5b7efd6a1f7ae05f706f335f20638c6da867564e085e108d264ed780c07634969c62db662d627e6cbc8d7571677f695146808753ec906e629854f286f08f998005951785178fd96d5973cd659f771f7504782781fb8d1e94884fa6679575b98bca9707632f9547963584b8632377415f8172f04e896014657462ef6b63653f8a:e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8b:0001020304050608090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223#24252728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445,5e2775c790d18bc1829d679d652f5431871877e580a281026c414e4b7ec7804c76f4690d6b966267503c4f84574063076b628dbe53ea65e87eb85fd763:1ab7,81:f3f4,7f6e5e1c5cd95236667a79e97a1a8d28709975d46ede6cbb7a924e2d76c55fe0949f88777ec879cd80bf91cd4ef24f17821f54685dde6d328bcc7ca58f7480985e1a549276b15b99663c9aa473e0682a86db6731732a8b:f8db,90107af970db716e62c477a956314e3b845767f152a986c08d2e94f87b518b:464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364656768696a6b6d6e6f707172737475767778797a7b7c7d7e7f80818283848586#8788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9facb1bbc7d0ea,8c:091e,4f4f6ce8795d9a7b6293722a62fd4e1378168f6c64b08d5a7bc668695e8488c55986649e58ee72b6690e95258ffd8d5857607f008c0651c6634962d95353684c74228301914c55447740707c6d4a517954a88d4459ff6ecb6dc45b5c7d2b4ed47c7d6ed35b5081ea6e0d5b579b0368d58e2a5b977efc603b7eb590b98d70594f63cd79df8db3535265cf79568bc5963b7ec494bb7e825634918967007f6a5c0a907566285de64f5067de505a4f5c57505e:a7#3$,8c:38393a3b3c3d3e3f4042434445484a4b4d4e4f5051525354565758595b5c5d5e5f60636465666768696c6d6e6f707172747576777b7c7d7e7f808183848687#888b8d8e8f90919293959697999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacad,4e:8d0c,51404e105eff53454e:15981e,9b325b6c56694e2879ba4e3f53154e47592d723b536e6c1056df80e499976bd3777e9f174e:369f,9f104e:5c6993,82885b5b556c560f4ec453:8d9da3a5ae,97658d5d53:1af5262e3e,8d5c53:6663,52:02080e2d333f404c5e615c,84af52:7d82819093,51827f544e:bbc3c9c2e8e1ebde,4f1b4ef34f:2264,4ef54f:2527092b5e67,65384f:5a5d,8c:aeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebec#edeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8d:000102030405060708090a0b0c0d,4f:5f57323d76749189838f7e7baa7cac94e6e8eac5dae3dcd1dff8,50:294c,4ff350:2c0f2e2d,4ffe50:1c0c25287e4355484e6c7ba5a7a9bad6,510650:edece6ee,51:070b,4edd6c3d4f:5865ce,9fa06c467c74516e5dfd9ec999985181591452f9530d8a07531051eb591951554ea051564eb388:6ea4,4eb5811488d279805b3488037fb851:abb1bdbc,8d:0e0f101112131415161718191a1b1c205152575f6568696a6c6e6f717278797a7b7c7d7e7f808283868788898c8d8e8f90929395969798999a9b9c9d9ea0a1#a2a4a5a6a7a8a9aaabacadaeafb0b2b6b7b9bbbdc0c1c2c5c7c8c9cacdd0d2d3d4,51:c796a2a5,8b:a0a6a7aab4b5b7c2c3cbcfced2d3d4d6d8d9dcdfe0e4e8e9eef0f3f6f9fcff,8c:000204070c0f1112141516191b181d1f202125272a2b2e2f32333536,53:697a,96:1d2221312a3d3c4249545f676c7274888d97b0,90:979b9d99aca1b4b3b6ba,8d:d5d8d9dce0e1e2e5e6e7e9edeef0f1f2f4f6fcfeff,8e:00010203040607080b0d0e1011121315161718191a1b1c202124252627282b2d303233343637383b3c3e#3f4345464c4d4e4f505354555657585a5b5c5d5e5f60616263646567686a6b6e71,90:b8b0cfc5bed0c4c7d3e6e2dcd7dbebeffe,91:04221e23312f394346,520d594252:a2acadbe,54ff52:d0d6f0,53df71ee77cd5ef451:f5fc,9b2f53b65f01755a5def57:4ca9a1,58:7ebcc5d1,57:292c2a33392e2f5c3b4269856b867c7b686d7673ada48cb2cfa7b493a0d5d8dad9d2b8f4eff8e4dd,8e:73757778797a7b7d7e808283848688898a8b8c8d8e91929395969798999a9b9d9fa0a1a2a3a4a5a6a7a8a9aaadaeb0b1b3b4b5b6b7b8b9bbbcbdbebfc0c1c2#c3c4c5c6c7c8c9cacbcccdcfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4,58:0b0d,57:fded,58:001e194420656c81899a80,99a89f1961ff82:797d7f8f8aa8848e919799abb8beb0c8cae398b7aecbccc1a9b4a1aa9fc4cea4e1,830982:f7e4,83:0f07,82:dcf4d2d8,830c82:fbd3,83:111a061415,82:e0d5,83:1c515b5c08923c34319b5e2f4f47435f4017602d3a336665,8e:e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8f:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223#2425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f4041424344,83:681b696c6a6d6eb078b3b4a0aa939c857cb6a97db87b989ea8babcc1,840183:e5d8,580784:180b,83:ddfdd6,84:1c381106,83:d4df,84:0f03,83:f8f9eac5c0,842683:f0e1,84:5c515a597387887a89783c4669768c8e316dc1cdd0e6bdd3cabfbae0a1b9b497e5e3,850c750d853884f085:391f3a,8f:45464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364656a808c929da0a1a2a4a5a6a7aaacadaeafb2b3b4b5b7b8babbbcbfc0c3c6#c9cacbcccdcfd2d6d7dae0e1e3e7eceff1f2f4f5f6fafbfcfeff,90:07080c0e131518,85:563b,84:fffc,85:594868645e7a,77a285:43727ba4a8878f79ae9c85b9b7b0d3c1dcff,86:270529163c,5efe5f0859:3c41,803759:555a58,530f5c:22252c34,62:4c6a9fbbcadad7ee,632262f663:394b43adf6717a8eb46dac8a69aebcf2f8e0ffc4dece,645263:c6be,64:45410b1b200c26215e846d96,90:191c2324252728292a2b2c303132333437393a3d3f4043454648494a4b4c4e545556595a5c5d5e5f6061646667696a6b6c6f70717273767778797a7b7c7e81#84858687898a8c8d8e8f90929496989a9c9e9fa0a4a5a7a8a9abadb2b7bcbdbfc0,64:7ab7b899bac0d0d7e4e2,65:09252e,5f:0bd2,75195f1153:5ff1fde9e8fb,54:1216064b5253545643215759233282947771649a9b8476669dd0adc2b4d2a7a6d3d472a3d5bbbfccd9dadca9aaa4ddcfde,551b54e7552054fd551454f355:22230f11272a678fb5496d41553f503c,90:c2c3c6c8c9cbcccdd2d4d5d6d8d9dadedfe0e3e4e5e9eaeceef0f1f2f3f5f6f7f9fafbfcff,91:00010305060708090a0b0c0d0e0f1011121314151617181a1b1c#1d1f20212425262728292a2b2c2d2e30323334353637383a3b3c3d3e3f40414244,55:375675767733305c8bd283b1b988819f7ed6917bdfbdbe9499eaf7c9,561f55:d1ebecd4e6ddc4efe5f2f3cccde8f5e4,8f9456:1e080c012423,55fe56:00272d5839572c4d62595c4c548664716b7b7c8593afd4d7dde1f5ebf9ff,57:040a091c,5e:0f191411313b3c,91:454748515354555658595b5c5f606667686b6d737a7b7c808182838486888a8e8f939495969798999c9d9e9fa0a1a4a5a6a7a8a9abacb0b1b2b3b6b7b8b9bb#bcbdbebfc0c1c2c3c4c5c6c8cbd0d2d3d4d5d6d7d8d9dadbdddedfe0e1e2e3e4e5,5e:3744545b5e61,5c:8c7a8d9096889899919a9cb5a2bdacabb1a3c1b7c4d2e4cbe5,5d:020327262e241e061b583e343d6c5b6f5d6b4b4a697482999d,8c735d:b7c5,5f:73778287898c95999ca8adb5bc,88625f6172:adb0b4b7b8c3c1cecdd2e8efe9f2f4f7,730172f3730372fa91:e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,92:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021222324#25262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445,72fb73:1713210a1e1d152239252c3831504d57606c6f7e,821b592598e759:2402,99:636768696a6b6c74777d8084878a8d9091939495,5e:80918b96a5a0b9b5beb3,8d535e:d2d1dbe8ea,81ba5f:c4c9d6cf,60035fee60045f:e1e4fe,60:0506,5f:eaedf8,60:1935261b0f0d292b0a3f2178797b7a42,92:464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f7071727375767778797a7b7c7d7e7f808182838485#868788898a8b8c8d8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7,60:6a7d969aad9d83928c9becbbb1ddd8c6dab4,61:20261523,60f461:000e2b4a75ac94a7b7d4f5,5fdd96b395:e9ebf1f3f5f6fcfe,96:030406080a0b0c0d0f12151617191a,4e2c723f62156c:35545c4aa38590948c6869747686a9d0d4adf7f8f1d7b2e0d6faebeeb1d3effe,92:a8a9aaabacadafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8#e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,93:00010203040506070809,6d:39270c43480704190e2b4d2e351a4f525433916f9ea05e93945c607c63,6e1a6d:c7c5de,6e0e6d:bfe0,6e116d:e6ddd9,6e166dab6e0c6dae6e:2b6e4e6bb25f865354322544dfb198e0,6f2d6e:e2a5a7bdbbb7d7b4cf8fc29f,6f:6246472415,6ef96f:2f364b742a0929898d8c78727c7ad1,93:0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3f40414243444546474849#4a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696b,6f:c9a7b9b6c2e1eedee0ef,70:1a231b39354f5e,5b:80849593a5b8,752f9a9e64345b:e4ee,89305bf08e478b078f:b6d3d5e5eee4e9e6f3e8,90:05040b26110d162135362d2f445152506858625b,66b990:747d8288838b,5f:50575658,5c3b54ab5c:5059,5b715c:6366,7fbc5f:2a292d,82745f3c9b3b5c6e59:81838da9aaa3,93:6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaab#acadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cbcccd,59:97caab9ea4d2b2afd7be,5a:0506,59dd5a0859:e3d8f9,5a:0c09323411231340674a553c6275,80ec5a:aa9b777abeebb2d2d4b8e0e3f1d6e6d8dc,5b:091716323740,5c:151c,5b:5a6573515362,9a:7577787a7f7d808185888a90929396989b9c9d9fa0a2a3a5a7,7e:9fa1a3a5a8a9,93:cecfd0d1d2d3d4d5d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,94:000102030405060708090a0b0c0d#0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e,7e:adb0bec0c1c2c9cbccd0d4d7dbe0e1e8ebeeeff1f2,7f0d7e:f6fafbfe,7f:01020307080b0c0f111217191c1b1f212223242526272a2b2c2d2f3031323335,5e7a757f5ddb753e909573:8e91aea29fcfc2d1b7b3c0c9c8e5d9,987c740a73:e9e7debaf2,74:0f2a5b262528302e2c,94:2f303132333435363738393a3b3c3d3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6c6d6e6f#707172737475767778797a7b7c7d7e7f8081828384919698c7cfd3d4dae6fb,95:1c20,74:1b1a415c575559776d7e9c8e8081878b9ea8a990a7d2ba,97:eaebec,67:4c535e4869a5876a7398a775a89ead8b777cf0,680967d8680a67:e9b0,680c67:d9b5dab3dd,680067:c3b8e2,680e67:c1fd,68:323360614e624464831d55664167403e4a4929b58f7477936bc2,696e68fc69:1f20,68f995:27333d43484b555a606e74757778797a7b7c7d7e808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aa#abacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacb,692468f069:0b0157,68e369:10713960425d846b80987834cc8788ce896663799ba7bbabadd4b1c1cadf95e08dff,6a2f69ed6a:171865,69f26a:443ea0505b358e793d28587c9190a997ab,73:3752,6b:8182878492938d9a9ba1aa,8f:6b6d71727375767877797a7c7e818284878b,95:cccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7ecff,96:0713181b1e20232425262728292b2c2d2f303738393a3e41434a4e4f5152535657#58595a5c5d5e606365666b6d6e6f70717378797a7b7c7d7e7f808182838487898a,8f:8d8e8f989a,8ece62:0b171b1f222125242c,81e774:eff4ff,75:0f1113,65:34eeeff0,66:0a19,677266:031500,708566:f71d34313635,800666:5f54414f56615777848ca79dbedbdce6e9,8d:3233363b3d4045464849474d5559,89:c7cacbcccecfd0d1,72:6e9f5d666f7e7f848b8d8f92,63:0832b0,96:8c8e91929395969a9b9d9e9fa0a1a2a3a4a5a6a8a9aaabacadaeafb1b2b4b5b7b8babbbfc2c3c8cacbd0d1d3d4d6d7d8d9dadbdcdddedfe1e2e3e4e5e6e7eb#ecedeef0f1f2f4f5f8fafbfcfdff,97:0203050a0b0c10111214151718191a1b1d1f20,64:3fd8,80046b:eaf3fdf5f9,6c:0507060d1518191a2129242a32,65:35556b,72:4d525630,8662521680:9f9c93bc,670a80:bdb1abadb4b7e7e8e9eadbc2c4d9cdd7,671080:ddebf1f4ed,81:0d0e,80:f2fc,671581128c5a81:361e2c1832484c5374595a7160697c7d6d67,584d5ab581:888291,6ed581:a3aacc,672681:cabb,97:2122232425262728292b2c2e2f3133343536373a3b3c3d3f404142434445464748494a4b4c4d4e4f5051545557585a5c5d5f63646667686a6b6c6d6e6f7071#72757778797a7b7d7e7f8081828384868788898a8c8e8f9093959697999a9b9c9d,81:c1a6,6b:243739434659,98:d1d2d3d5d9da,6bb35f406bc289f365909f5165:93bcc6c4c3ccced2d6,70:809c969dbbc0b7abb1e8ca,71:1013162f31735c6845724a787a98b3b5a8a0e0d4e7f9,72:1d28,706c71:1866b9,62:3e3d434849,79:3b4046495b5c535a6257606f677a858a9aa7b3,5f:d1d0,97:9e9fa1a2a4a5a6a7a8a9aaacaeb0b1b3b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3#e4e5e8eeeff0f1f2f4f7f8f9fafbfcfdfeff,98:000102030405060708090a0b0c0d0e,60:3c5d5a67415963ab,61:060d5da99dcbd1,620680:807f,6c:93f6,6dfc77:f6f8,78:0009171811,65ab78:2d1c1d393a3b1f3c252c23294e6d56572650474c6a9b939a879ca1a3b2b9a5d4d9c9ecf2,790578f479:13241e34,9f9b9e:f9fbfc,76f177:040d,76f977:07081a22192d263538505147435a68,98:0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d#4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e,77:62657f8d7d808c919fa0b0b5bd,75:3a404e4b485b727983,7f:58615f,8a487f:68747179817e,76:cde5,883294:8586878b8a8c8d8f909497959a9b9ca3a4abaaadacafb0b2b4b6b7b8b9babcbdbfc4c8c9cacbcccdced0d1d2d5d6d7d9d8dbdedfe0e2e4e5e7e8ea,98:6f70717273748b8e929599a3a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcfd0d4d6d7dbdcdde0e1e2e3e4#e5e6e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,99:0001020304050607,94:e9ebeeeff3f4f5f7f9fcfdff,95:03020607090a0d0e0f1213141516181b1d1e1f222a2b292c3132343637383c3e3f4235444546494c4e4f525354565758595b5e5f5d61626465666768696a6b6c6f7172733a,77:e7ec,96c979:d5ede3eb,7a065d477a:03021e14,99:08090a0b0c0e0f1112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2f303132333435363738393a3b3c3d3e3f40414243444546474849#4a4b4c4d4e4f50515253565758595a5b5c5d5e5f60616264667378797b7e828389,7a:393751,9ecf99a57a7076:888e9399a4,74:dee0,752c9e:202228292a2b2c3231363837393a3e414244464748494b4c4e5155575a5b5c5e63666768696a6b6c716d73,75:929496a09daca3b3b4b8c4b1b0c3c2d6cde3e8e6e4ebe7,760375:f1fcff,76:1000050c170a25181519,99:8c8e9a9b9c9d9e9fa0a1a2a3a4a6a7a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8#d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9,76:1b3c2220402d303f35433e334d5e545c566b6f,7fca7a:e6787980868895a6a0aca8adb3,88:6469727d7f82a2c6b7bcc9e2cee3e5f1,891a88:fce8fef0,89:2119131b0a342b3641667b,758b80e576:b2b4,77dc80:1214161c20222526272928310b3543464d526971,898398:788083,99:fafbfcfdfeff,9a:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738#393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f50515253545556575859,98:898c8d8f949a9b9e9fa1a2a5a6,86:4d546c6e7f7a7c7ba88d8bac9da7a3aa93a9b6c4b5ceb0bab1afc9cfb4e9f1f2edf3d0,871386:def4dfd8d1,87:0307,86f887:080a0d09233b1e252e1a3e48343129373f82227d7e7b60704c6e8b53637c64596593afa8d2,9a:5a5b5c5d5e5f606162636465666768696a6b7283898d8e949599a6a9aaabacadaeafb2b3b4b5b9bbbdbebfc3c4c6c7c8c9cacdcecfd0d2d4d5d6d7d9dadbdc#dddee0e2e3e4e5e7e8e9eaeceef0f1f2f3f4f5f6f7f8fafcfdfeff,9b:000102040506,87:c68885ad9783abe5acb5b3cbd3bdd1c0cadbeae0ee,88:1613,87fe88:0a1b21393c,7f:36424445,82107a:fafd,7b:080304150a2b0f47382a192e31202524333e1e585a45754c5d606e7b62727190a6a7b8ac9da885aa9ca2abb4d1c1ccdddae5e6ea,7c0c7b:fefc,7c:0f160b,9b:07090a0b0c0d0e1011121415161718191a1b1c1d1e2021222425262728292a2b2c2d2e3031333435363738393a3d3e3f40464a4b4c4e50525355565758595a#5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b,7c:1f2a26384140,81fe82:010204,81ec884482:2122232d2f282b383b33343e44494b4f5a5f68,88:7e8588d8df,895e7f:9d9fa7afb0b2,7c7c65497c:919d9c9ea2b2bcbdc1c7cccdc8c5d7e8,826e66a87f:bfced5e5e1e6e9eef3,7cf87d:77a6ae,7e:479b,9e:b8b4,8d:73849491b1676d,8c:4749,91:4a504e4f64,9b:7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9ba#bbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadb,91:626170696f7d7e7274798c85908d91a2a3aaadaeafb5b4ba,8c559e7e8d:b8eb,8e:055969,8d:b5bfbcbac4d6d7dadececfdbc6ecf7f8e3f9fbe4,8e098dfd8e:141d1f2c2e232f3a4039353d3149414251524a70767c6f74858f94909c9e,8c:78828a859894,659b89:d6dedadc,9b:dcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9c:000102030405060708090a0b0c0d0e0f101112131415161718191a#1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b,89:e5ebef,8a3e8b26975396:e9f3ef,97:0601080f0e2a2d303e,9f:808385868788898a8c,9efe9f:0b0d,96:b9bcbdced2,77bf96e092:8eaec8,93:3e6aca8f,94:3e6b,9c:7f8285868788,7a239c:8b8e90919294959a9b9e9fa0a1a2a3a5a6a7a8a9abadaeb0b1b2b3b4b5b6b7babbbcbdc4c5c6c7cacb3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a#7b7d7e808384898a8c8f93969798999daaacafb9bebfc0c1c2c8c9d1d2dadbe0e1cccdcecfd0d3d4d5d7d8d9dcdddfe2,97:7c85919294afaba3b2b4,9a:b1b0b7,9e589a:b6babcc1c0c5c2cbccd1,9b:45434749484d51,98e899:0d2e5554,9a:dfe1e6efebfbedf9,9b:080f131f23,9e:bdbe,7e3b9e:8287888b92,93d69e:9d9fdbdcdde0dfe2e9e7e5eaef,9f:222c2f39373d3e44,9c:e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9d:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021#22232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142#92$434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081#82838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2#92$a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1#e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9e:000102#92$030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e24272e30343b3c404d5052535456595d5f606162656e6f727475767778797a7b7c7d80#8183848586898a8c8d8e8f90919495969798999a9b9c9ea0a1a2a3a4a5a7a8a9aa#92$abacadaeafb0b1b2b3b5b6b7b9babcbfc0c1c2c3c5c6c7c8cacbccd0d2d3d5d6d7d9dadee1e3e4e6e8ebecedeef0f1f2f3f4f5f6f7f8fafdff,9f:000102030405#060708090a0c0f1112141516181a1b1c1d1e1f21232425262728292a2b2d2e3031#92$3233343536383a3c3f4041424345464748494a4b4c4d4e4f52535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778#797a7b7c7d7e81828d8e8f9091929394959697989c9d9ea1a2a3a4a5,f9:2c7995e7f1#92$,fa:0c0d0e0f111314181f20212324272829,e8:15161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f40414243#4445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364");
|
|
113
|
+
const dataText = this.handleText("4e:020405060f12171f20212326292e2f313335373c40414244464a5155575a5b6263646567686a6b6c6d6e6f727475767778797a7b7c7d7f808182838485878a#909697999c9d9ea3aaafb0b1b4b6b7b8b9bcbdbec8cccfd0d2dadbdce0e2e6e7e9edeeeff1f4f8f9fafcfe,4f:00020304050607080b0c12131415161c1d212328292c2d2e31333537393b3e3f40414244454748494a4b4c525456616266686a6b6d6e7172757778797a7d8081828586878a8c8e909293959698999a9c9e9fa1a2a4abadb0b1b2b3b4b6b7b8b9babbbcbdbec0c1c2c6c7c8c9cbcccdd2d3d4d5d6d9dbe0e2e4e5e7ebecf0f2f4f5f6f7f9fbfcfdff,50:000102030405060708090a#0b0e1011131516171b1d1e20222324272b2f303132333435363738393b3d3f404142444546494a4b4d5051525354565758595b5d5e5f6061626364666768696a6b6d6e6f70717273747578797a7c7d818283848687898a8b8c8e8f909192939495969798999a9b9c9d9e9fa0a1a2a4a6aaabadaeafb0b1b3b4b5b6b7b8b9bcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdced0d1d2d3d4d5d7d8d9dbdcdddedfe0e1e2e3e4e5e8e9eaebeff0f1f2f4f6f7f8f9fafcfdfeff,51:00010203040508#090a0c0d0e0f1011131415161718191a1b1c1d1e1f2022232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e42474a4c4e4f5052535758595b5d5e5f606163646667696a6f727a7e7f838486878a8b8e8f90919394989a9d9e9fa1a3a6a7a8a9aaadaeb4b8b9babebfc1c2c3c5c8cacdced0d2d3d4d5d6d7d8d9dadcdedfe2e3e5e6e7e8e9eaeceef1f2f4f7fe,52:0405090b0c0f101314151c1e1f2122232526272a2c2f313234353c3e4445464748494b4e4f5253555758#595a5b5d5f6062636466686b6c6d6e7071737475767778797a7b7c7e808384858687898a8b8c8d8e8f91929495969798999a9ca4a5a6a7aeafb0b4b5b6b7b8b9babbbcbdc0c1c2c4c5c6c8cacccdcecfd1d3d4d5d7d9dadbdcdddee0e1e2e3e5e6e7e8e9eaebecedeeeff1f2f3f4f5f6f7f8fbfcfd,53:0102030407090a0b0c0e11121314181b1c1e1f2224252728292b2c2d2f3031323334353637383c3d404244464b4c4d505458595b5d65686a6c6d7276797b7c7d7e80818387888a8e8f#90919293949697999b9c9ea0a1a4a7aaabacadafb0b1b2b3b4b5b7b8b9babcbdbec0c3c4c5c6c7cecfd0d2d3d5dadcdddee1e2e7f4fafeff,54:000205070b1418191a1c2224252a303336373a3d3f4142444547494c4d4e4f515a5d5e5f6061636567696a6b6c6d6e6f7074797a7e7f8183858788898a8d919397989c9e9fa0a1a2a5aeb0b2b5b6b7b9babcbec3c5cacbd6d8dbe0e1e2e3e4ebeceff0f1f4f5f6f7f8f9fbfe,55:0002030405080a0b0c0d0e121315161718191a1c1d1e1f212526#28292b2d3234353638393a3b3d40424547484b4c4d4e4f515253545758595a5b5d5e5f60626368696b6f7071727374797a7d7f85868c8d8e9092939596979a9b9ea0a1a2a3a4a5a6a8a9aaabacadaeafb0b2b4b6b8babcbfc0c1c2c3c6c7c8cacbcecfd0d5d7d8d9dadbdee0e2e7e9edeef0f1f4f6f8f9fafbfcff,56:0203040506070a0b0d1011121314151617191a1c1d202122252628292a2b2e2f30333537383a3c3d3e404142434445464748494a4b4f5051525355565a5b5d5e5f6061#636566676d6e6f70727374757778797a7d7e7f80818283848788898a8b8c8d9091929495969798999a9b9c9d9e9fa0a1a2a4a5a6a7a8a9aaabacadaeb0b1b2b3b4b5b6b8b9babbbdbebfc0c1c2c3c4c5c6c7c8c9cbcccdcecfd0d1d2d3d5d6d8d9dce3e5e6e7e8e9eaeceeeff2f3f6f7f8fbfc,57:00010205070b0c0d0e0f101112131415161718191a1b1d1e202122242526272b313234353637383c3d3f414344454648494b52535455565859626365676c6e707172747578797a7d7e7f80#818788898a8d8e8f90919495969798999a9c9d9e9fa5a8aaacafb0b1b3b5b6b7b9babbbcbdbebfc0c1c4c5c6c7c8c9cacccdd0d1d3d6d7dbdcdee1e2e3e5e6e7e8e9eaebeceef0f1f2f3f5f6f7fbfcfeff,58:0103040508090a0c0e0f101213141617181a1b1c1d1f222325262728292b2c2d2e2f31323334363738393a3b3c3d3e3f4041424345464748494a4b4e4f505253555657595a5b5c5d5f6061626364666768696a6d6e6f707172737475767778797a7b7c7d7f82848687888a8b8c#8d8e8f909194959697989b9c9da0a1a2a3a4a5a6a7aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbdbebfc0c2c3c4c6c7c8c9cacbcccdcecfd0d2d3d4d6d7d8d9dadbdcdddedfe0e1e2e3e5e6e7e8e9eaedeff1f2f4f5f7f8fafbfcfdfeff,59:000103050608090a0b0c0e1011121317181b1d1e2021222326282c30323335363b3d3e3f404345464a4c4d505253595b5c5d5e5f616364666768696a6b6c6d6e6f70717275777a7b7c7e7f8085898b8c8e8f90919495989a9b9c9d9fa0a1a2a6#a7acadb0b1b3b4b5b6b7b8babcbdbfc0c1c2c3c4c5c7c8c9cccdcecfd5d6d9dbdedfe0e1e2e4e6e7e9eaebedeeeff0f1f2f3f4f5f6f7f8fafcfdfe,5a:00020a0b0d0e0f101214151617191a1b1d1e2122242627282a2b2c2d2e2f3033353738393a3b3d3e3f414243444547484b4c4d4e4f5051525354565758595b5c5d5e5f60616364656668696b6c6d6e6f7071727378797b7c7d7e808182838485868788898a8b8c8d8e8f9091939495969798999c9d9e9fa0a1a2a3a4a5a6a7a8a9abac#adaeafb0b1b4b6b7b9babbbcbdbfc0c3c4c5c6c7c8cacbcdcecfd0d1d3d5d7d9dadbdddedfe2e4e5e7e8eaecedeeeff0f2f3f4f5f6f7f8f9fafbfcfdfeff,5b:0001020304050607080a0b0c0d0e0f10111213141518191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303133353638393a3b3c3d3e3f4142434445464748494a4b4c4d4e4f52565e606167686b6d6e6f7274767778797b7c7e7f82868a8d8e90919294969fa7a8a9acadaeafb1b2b7babbbcc0c1c3c8c9cacbcdcecf#d1d4d5d6d7d8d9dadbdce0e2e3e6e7e9eaebecedeff1f2f3f4f5f6f7fdfe,5c:0002030507080b0c0d0e10121317191b1e1f2021232628292a2b2d2e2f303233353637434446474c4d5253545657585a5b5c5d5f62646768696a6b6c6d70727374757677787b7c7d7e808384858687898a8b8e8f9293959d9e9fa0a1a4a5a6a7a8aaaeafb0b2b4b6b9babbbcbec0c2c3c5c6c7c8c9cacccdcecfd0d1d3d4d5d6d7d8dadbdcdddedfe0e2e3e7e9ebeceeeff1f2f3f4f5f6f7f8f9fafcfdfeff,5d:00#01040508090a0b0c0d0f10111213151718191a1c1d1f2021222325282a2b2c2f3031323335363738393a3b3c3f4041424344454648494d4e4f5051525354555657595a5c5e5f6061626364656667686a6d6e7071727375767778797a7b7c7d7e7f8081838485868788898a8b8c8d8e8f9091929394959697989a9b9c9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b8b9babbbcbdbebfc0c1c2c3c4c6c7c8c9cacbcccecfd0d1d2d3d4d5d6d7d8d9dadcdfe0e3e4eaeced#f0f5f6f8f9fafbfcff,5e:000407090a0b0d0e1213171e1f20212223242528292a2b2c2f303233343536393a3e3f404143464748494a4b4d4e4f50515253565758595a5c5d5f60636465666768696a6b6c6d6e6f70717577797e8182838588898c8d8e92989b9da1a2a3a4a8a9aaabacaeafb0b1b2b4babbbcbdbfc0c1c2c3c4c5c6c7c8cbcccdcecfd0d4d5d7d8d9dadcdddedfe0e1e2e3e4e5e6e7e9ebecedeeeff0f1f2f3f5f8f9fbfcfd,5f:050607090c0d0e10121416191a1c1d1e21222324#282b2c2e30323334353637383b3d3e3f4142434445464748494a4b4c4d4e4f5154595a5b5c5e5f60636567686b6e6f72747576787a7d7e7f83868d8e8f919394969a9b9d9e9fa0a2a3a4a5a6a7a9abacafb0b1b2b3b4b6b8b9babbbebfc0c1c2c7c8cacbced3d4d5dadbdcdedfe2e3e5e6e8e9eceff0f2f3f4f6f7f9fafc,60:0708090b0c10111317181a1e1f2223242c2d2e3031323334363738393a3d3e404445464748494a4c4e4f5153545657585b5c5e5f606165666e71727475777e80#8182858687888a8b8e8f909193959798999c9ea1a2a4a5a7a9aaaeb0b3b5b6b7b9babdbebfc0c1c2c3c4c7c8c9cccdcecfd0d2d3d4d6d7d9dbdee1e2e3e4e5eaf1f2f5f7f8fbfcfdfeff,61:02030405070a0b0c1011121314161718191b1c1d1e21222528292a2c2d2e2f303132333435363738393a3b3c3d3e4041424344454647494b4d4f50525354565758595a5b5c5e5f606163646566696a6b6c6d6e6f717273747678797a7b7c7d7e7f808182838485868788898a8c8d8f9091929395#969798999a9b9c9e9fa0a1a2a3a4a5a6aaabadaeafb0b1b2b3b4b5b6b8b9babbbcbdbfc0c1c3c4c5c6c7c9cccdcecfd0d3d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e7e8e9eaebecedeeeff0f1f2f3f4f6f7f8f9fafbfcfdfe,62:00010203040507091314191c1d1e2023262728292b2d2f303132353638393a3b3c424445464a4f50555657595a5c5d5e5f6061626465687172747577787a7b7d818283858687888b8c8d8e8f9094999c9d9ea3a6a7a9aaadaeafb0b2b3b4b6b7b8babec0c1#c3cbcfd1d5dddee0e1e4eaebf0f2f5f8f9fafb,63:00030405060a0b0c0d0f10121314151718191c2627292c2d2e30313334353637383b3c3e3f40414447484a51525354565758595a5b5c5d60646566686a6b6c6f707273747578797c7d7e7f81838485868b8d9193949597999a9b9c9d9e9fa1a4a6abafb1b2b5b6b9bbbdbfc0c1c2c3c5c7c8cacbccd1d3d4d5d7d8d9dadbdcdddfe2e4e5e6e7e8ebeceeeff0f1f3f5f7f9fafbfcfe,64:0304060708090a0d0e111215161718191a1d1f222324#252728292b2e2f3031323335363738393b3c3e404243494b4c4d4e4f505153555657595a5b5c5d5f60616263646566686a6b6c6e6f70717273747576777b7c7d7e7f8081838688898a8b8c8d8e8f90939497989a9b9c9d9fa0a1a2a3a5a6a7a8aaabafb1b2b3b4b6b9bbbdbebfc1c3c4c6c7c8c9cacbcccfd1d3d4d5d6d9dadbdcdddfe0e1e3e5e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,65:01020304050607080a0b0c0d0e0f10111314151617191a1b1c1d1e1f2021#222324262728292a2c2d30313233373a3c3d404142434446474a4b4d4e5052535457585a5c5f606164656768696a6d6e6f7173757678797a7b7c7d7e7f8081828384858688898a8d8e8f92949596989a9d9ea0a2a3a6a8aaacaeb1b2b3b4b5b6b7b8babbbebfc0c2c7c8c9cacdd0d1d3d4d5d8d9dadbdcdddedfe1e3e4eaebf2f3f4f5f8f9fbfcfdfeff,66:0104050708090b0d1011121617181a1b1c1e2122232426292a2b2c2e3032333738393a3b3d3f40424445464748494a4d4e505158#595b5c5d5e6062636567696a6b6c6d7172737578797b7c7d7f808183858688898a8b8d8e8f909293949598999a9b9c9e9fa0a1a2a3a4a5a6a9aaabacadafb0b1b2b3b5b6b7b8babbbcbdbfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8dadedfe0e1e2e3e4e5e7e8eaebecedeeeff1f5f6f8fafbfd,67:010203040506070c0e0f1112131618191a1c1e20212223242527292e303233363738393b3c3e3f414445474a4b4d5254555758595a5b5d62636466676b6c6e717476#78797a7b7d8082838586888a8c8d8e8f9192939496999b9fa0a1a4a6a9acaeb1b2b4b9babbbcbdbebfc0c2c5c6c7c8c9cacbcccdced5d6d7dbdfe1e3e4e6e7e8eaebedeef2f5f6f7f8f9fafbfcfe,68:01020304060d1012141518191a1b1c1e1f20222324252627282b2c2d2e2f30313435363a3b3f474b4d4f52565758595a5b5c5d5e5f6a6c6d6e6f707172737578797a7b7c7d7e7f8082848788898a8b8c8d8e90919294959698999a9b9c9d9e9fa0a1a3a4a5a9aaabacaeb1b2b4b6b7b8#b9babbbcbdbebfc1c3c4c5c6c7c8cacccecfd0d1d3d4d6d7d9dbdcdddedfe1e2e4e5e6e7e8e9eaebecedeff2f3f4f6f7f8fbfdfeff,69:00020304060708090a0c0f11131415161718191a1b1c1d1e21222325262728292a2b2c2e2f313233353637383a3b3c3e4041434445464748494a4b4c4d4e4f50515253555658595b5c5f616264656768696a6c6d6f7072737475767a7b7d7e7f8183858a8b8c8e8f909192939697999a9d9e9fa0a1a2a3a4a5a6a9aaacaeafb0b2b3b5b6b8b9babcbd#bebfc0c2c3c4c5c6c7c8c9cbcdcfd1d2d3d5d6d7d8d9dadcdddee1e2e3e4e5e6e7e8e9eaebeceeeff0f1f3f4f5f6f7f8f9fafbfcfe,6a:000102030405060708090b0c0d0e0f10111213141516191a1b1c1d1e20222324252627292b2c2d2e30323334363738393a3b3c3f40414243454648494a4b4c4d4e4f515253545556575a5c5d5e5f60626364666768696a6b6c6d6e6f70727374757677787a7b7d7e7f81828385868788898a8b8c8d8f929394959698999a9b9c9d9e9fa1a2a3a4a5a6#a7a8aaadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,6b:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f252628292a2b2c2d2e2f303133343536383b3c3d3f4041424445484a4b4d4e4f5051525354555657585a5b5c5d5e5f606168696b6c6d6e6f7071727374757677787a7d7e7f808588#8c8e8f909194959798999c9d9e9fa0a2a3a4a5a6a7a8a9abacadaeafb0b1b2b6b8b9babbbcbdbec0c3c4c6c7c8c9caccced0d1d8dadcdddedfe0e2e3e4e5e6e7e8e9ecedeef0f1f2f4f6f7f8fafbfcfeff,6c:000102030408090a0b0c0e12171c1d1e2023252b2c2d31333637393a3b3c3e3f434445484b4c4d4e4f5152535658595a62636566676b6c6d6e6f71737577787a7b7c7f8084878a8b8d8e9192959697989a9c9d9ea0a2a8acafb0b4b5b6b7bac0c1c2c3c6c7c8cbcdcecfd1d2d8#d9dadcdddfe4e6e7e9ecedf2f4f9ff,6d:000203050608090a0d0f101113141516181c1d1f20212223242628292c2d2f30343637383a3f404244494c50555657585b5d5f6162646567686b6c6d707172737576797a7b7d7e7f8081838486878a8b8d8f9092969798999a9ca2a5acadb0b1b3b4b6b7b9babbbcbdbec1c2c3c8c9cacdcecfd0d2d3d4d5d7dadbdcdfe2e3e5e7e8e9eaedeff0f2f4f5f6f8fafdfeff,6e:0001020304060708090b0f12131518191b1c1e1f222627282a2c2e30313335#3637393b3c3d3e3f40414245464748494a4b4c4f5051525557595a5c5d5e606162636465666768696a6c6d6f707172737475767778797a7b7c7d8081828487888a8b8c8d8e91929394959697999a9b9d9ea0a1a3a4a6a8a9abacadaeb0b3b5b8b9bcbebfc0c3c4c5c6c8c9cacccdced0d2d6d8d9dbdcdde3e7eaebecedeeeff0f1f2f3f5f6f7f8fafbfcfdfeff,6f:000103040507080a0b0c0d0e101112161718191a1b1c1d1e1f212223252627282c2e303234353738393a3b3c3d3f404142#43444548494a4c4e4f5051525354555657595a5b5d5f60616364656768696a6b6c6f707173757677797b7d7e7f808182838586878a8b8f909192939495969798999a9b9d9e9fa0a2a3a4a5a6a8a9aaabacadaeafb0b1b2b4b5b7b8babbbcbdbebfc1c3c4c5c6c7c8cacbcccdcecfd0d3d4d5d6d7d8d9dadbdcdddfe2e3e4e5e6e7e8e9eaebecedf0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,70:000102030405060708090a0b0c0d0e0f1012131415161718191c1d1e1f2021222425262728292a#2b2c2d2e2f30313233343637383a3b3c3d3e3f404142434445464748494a4b4d4e505152535455565758595a5b5c5d5f606162636465666768696a6e7172737477797a7b7d818283848687888b8c8d8f90919397989a9b9e9fa0a1a2a3a4a5a6a7a8a9aab0b2b4b5b6babebfc4c5c6c7c9cbcccdcecfd0d1d2d3d4d5d6d7dadcdddee0e1e2e3e5eaeef0f1f2f3f4f5f6f8fafbfcfeff,71:0001020304050607080b0c0d0e0f111214171b1c1d1e1f2021222324252728292a2b2c2d2e323334#353738393a3b3c3d3e3f4041424344464748494b4d4f505152535455565758595a5b5d5f6061626365696a6b6c6d6f707174757677797b7c7e7f8081828385868788898b8c8d8e909192939596979a9b9c9d9ea1a2a3a4a5a6a7a9aaabadaeafb0b1b2b4b6b7b8babbbcbdbebfc0c1c2c4c5c6c7c8c9cacbcccdcfd0d1d2d3d6d7d8d9dadbdcdddedfe1e2e3e4e6e8e9eaebecedeff0f1f2f3f4f5f6f7f8fafbfcfdfeff,72:0001020304050708090a0b0c0d0e0f101112131415161718191a#1b1c1e1f2021222324252627292b2d2e2f3233343a3c3e40414243444546494a4b4e4f505153545557585a5c5e60636465686a6b6c6d707173747677787b7c7d828385868788898c8e9091939495969798999a9b9c9d9ea0a1a2a3a4a5a6a7a8a9aaabaeb1b2b3b5babbbcbdbebfc0c5c6c7c9cacbcccfd1d3d4d5d6d8dadb#95$,30:000102,00b702:c9c7,00a830:0305,2014ff5e20:162618191c1d,30:141508090a0b0c0d0e0f16171011,00:b1d7f7,22:362728110f2a2908371aa52520,231222:992b2e614c483d1d606e6f64651e3534,26:4240,00b020:3233,2103ff0400a4ff:e0e1,203000a7211626:0605,25:cbcfcec7c6a1a0b3b2,203b21:92909193,30:13#95$,21:70717273747576777879#4$,24:88898a8b8c8d8e8f909192939495969798999a9b7475767778797a7b7c7d7e7f808182838485868760616263646566676869##,32:20212223242526272829##,21:606162636465666768696a6b#97$,ff:010203e505060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5de3#95$,30:4142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f90919293#106$a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6#103$,03:9192939495969798999a9b9c9d9e9fa0a1a3a4a5a6a7a8a9#6$b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c3c4c5c6c7c8c9#5$,fe:3536393a3f403d3e41424344##3b3c373831#3334#104$,04:10111213141501161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f#13$30313233343551363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f#11$,02:cacbd9,20:13152535,21:050996979899,22:151f23526667bf,25:505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f7071727381828384858687#88898a8b8c8d8e8f939495bcbde2e3e4e5,2609229530:121d1e#9$,010100e101ce00e0011300e9011b00e8012b00ed01d000ec014d00f301d200f2016b00fa01d400f901:d6d8dadc,00:fcea,0251e7c701:4448,e7c802:61#2$,31:05060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223242526272829#19$,30:212223242526272829,32a333:8e8f9c9d9ea1c4ced1d2d5,fe30ff:e2e4#,212132:31#,20:10#1$,30:fc9b9cfdfe069d9e,fe:494a4b4c4d4e4f50515254555657595a5b5c5d5e5f6061#626364656668696a6b,e7:e7e8e9eaebecedeeeff0f1f2f3,30:07#11$,25:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b#13$,72:dcdddfe2e3e4e5e6e7eaebf5f6f9fdfeff,73:00020405060708090b0c0d0f1011121418191a1f2023242627282d2f30323335363a3b3c3d404142434445464748#494a4b4c4e4f515354555658595a5b5c5d5e5f6162636465666768696a6b6e7071#92$72737475767778797a7b7c7d7f808182838586888a8c8d8f90929394959798999a9c9d9ea0a1a3a4a5a6a7a8aaacadb1b4b5b6b8b9bcbdbebfc1c3c4c5c6c7#cbccced2d3d4d5d6d7d8dadbdcdddfe1e2e3e4e6e8eaebeceeeff0f1f3f4f5f6f7#92$f8f9fafbfcfdfeff,74:0001020407080b0c0d0e1112131415161718191c1d1e1f2021232427292b2d2f31323738393a3b3d3e3f4042434445464748494a4b4c4d#4e4f505152535456585d606162636465666768696a6b6c6e6f717273747578797a#92$7b7c7d7f8284858688898a8c8d8f9192939495969798999a9b9d9fa0a1a2a3a4a5a6aaabacadaeafb0b1b2b3b4b5b6b7b8b9bbbcbdbebfc0c1c2c3c4c5c6c7#c8c9cacbcccdcecfd0d1d3d4d5d6d7d8d9dadbdddfe1e5e7e8e9eaebecedf0f1f2#92$f3f5f8f9fafbfcfdfe,75:0001020305060708090a0b0c0e1012141516171b1d1e202122232426272a2e3436393c3d3f414243444647494a4d5051525355565758#5d5e5f60616263646768696b6c6d6e6f7071737576777a7b7c7d7e808182848587#92$88898a8c8d8e909395989b9c9ea2a6a7a8a9aaadb6b7babbbfc0c1c6cbcccecfd0d1d3d7d9dadcdddfe0e1e5e9ecedeeeff2f3f5f6f7f8fafbfdfe,76:02040607#08090b0d0e0f11121314161a1c1d1e212327282c2e2f31323637393a3b3d414244#92$45464748494a4b4e4f50515253555758595a5b5d5f6061626465666768696a6c6d6e7071727374757677797a7c7f80818385898a8c8d8f9092949597989a9b#9c9d9e9fa0a1a2a3a5a6a7a8a9aaabacadafb0b3b5b6b7b8b9babbbcbdbec0c1c3,554a963f57c3632854ce550954c076:914c,853c77ee827e788d72319698978d6c285b894ffa630966975cb880fa684880ae660276ce51f9655671ac7ff1888450b2596561ca6fb382ad634c625253ed54277b06516b75a45df462d48dcb9776628a8019575d97387f627238767d67cf767e64464f708d2562dc7a17659173ed642c6273822c9881677f724862:6ecc,4f3474e3534a529e7eca90a65e2e6886699c81807ed168d278c5868c9551508d8c2482de80de53058912526576:c4c7c9cbccd3d5d9dadcdddee0e1e2e3e4e6e7e8e9eaebecedf0f3f5f6f7fafbfdff,77:00020305060a0c0e0f1011121314151617181b1c1d1e21232425272a2b#2c2e3031323334393b3d3e3f4244454648494a4b4c4d4e4f52535455565758595c,858496f94fdd582199715b9d62:b1a5,66b48c799c8d7206676f789160b253:5117,8f8880cc8d1d94a1500d72c8590760eb711988ab595482ef672c7b285d297ef7752d6cf58e668ff8903c9f3b6bd491197b145f7c78a784d6853d6b:d5d9d6,5e:0187,75f995ed655d5f:0ac5,8f9f58c181c2907f965b97ad8fb97f168d2c62414fbf53:d85e,8f:a8a9ab,904d68075f6a819888689cd6618b522b762a5f6c658c6fd26ee85bbe644851:75b0,67c44e1979c9997c70b377:5d5e5f606467696a6d6e6f7071727374757677787a7b7c818283868788898a8b8f90939495969798999a9b9c9d9ea1a3a4a6a8abadaeafb1b2b4b6b7b8b9ba#bcbec0c1c2c3c4c5c6c7c8c9cacbcccecfd0d1d2d3d4d5d6d8d9dadddedfe0e1e4,75c55e7673bb83e064ad62e894b56ce2535a52c3640f94c27b944f2f5e1b823681:168a,6e246cca9a736355535c54fa886557e04e0d5e036b657c3f90e8601664e6731c88c16750624d8d22776c8e2991c75f6983dc8521991053c286956b8b60:ede8,707f82:cd31,4ed36ca785cf64cd7cd969fd66f9834953957b564fa7518c6d4b5c428e6d63d253c983:2c36,67e578b4643d5bdf5c945dee8be762c667f48c7a640063ba8749998b8c177f2094f24ea7961098a4660c731677:e6e8eaeff0f1f2f4f5f7f9fafbfc,78:0304050607080a0b0e0f101315191b1e20212224282a2b2e2f31323335363d3f414243444648494a4b4d4f51535458595a#5b5c5e5f606162636465666768696f7071727374757678797a7b7d7e7f80818283,573a5c1d5e38957f507f80a05382655e7545553150218d856284949e671d56326f6e5de2543570928f66626f64a463a35f7b6f8890f481e38fb05c1866685ff16c8996488d81886c649179f057ce6a59621054484e587a0b60e96f848bda627f901e9a8b79e4540375f4630153196c608fdf5f1b9a70803b9f7f4f885c3a8d647fc565a570bd51:45b2,866b5d075ba062bd916c75748e0c7a2061017b794ec77ef877854e1181ed521d51fa6a7153a88e87950496cf6ec19664695a78:848586888a8b8f9092949596999d9ea0a2a4a6a8a9aaabacadaeafb5b6b7b8babbbcbdbfc0c2c3c4c6c7c8cccdcecfd1d2d3d6d7d8dadbdcdddedfe0e1e2e3#e4e5e6e7e9eaebedeeeff0f1f3f5f6f8f9fbfcfdfeff,79:00020304060708090a0b0c,784050a877d7641089e6590463e35ddd7a7f693d4f20823955984e3275ae7a975e:628a,95ef521b5439708a6376952457826625693f918755076df37eaf882262337ef075b5832878c196cc8f9e614874f78bcd6b64523a8d506b21806a847156f153064e:ce1b,51d17c97918b7c074fc38e7f7be17a9c64675d1450ac810676017cb96dec7fe067515b:58f8,78cb64:ae13,63:aa2b,9519642d8fbe7b5476296253592754466b7950a362345e266b864ee38d37888b5f85902e79:0d0e0f1011121415161718191a1b1c1d1f2021222325262728292a2b2c2d2e2f3031323335363738393d3f42434445474a4b4c4d4e4f505152545558596163#6466696a6b6c6e70717273747576797b7c7d7e7f8283868788898b8c8d8e909192,6020803d62c54e39535590f863b880c665e66c2e4f4660ee6de18bde5f3986cb5f536321515a83616863520063638e4850125c9b79775bfc52307a3b60bc905376d75f:b797,76848e6c706f767b7b4977aa51f3909358244f4e6ef48fea654c7b1b72c46da47fdf5ae162b55e95573084827b2c5e1d5f1f90127f1498a063826ec7789870b95178975b57ab75354f4375385e9760e659606dc06bbf788953fc96d551cb52016389540a94938c038dcc7239789f87768fed8c0d53e079:939495969798999b9c9d9e9fa0a1a2a3a4a5a6a8a9aaabacadaeafb0b1b2b4b5b6b7b8bcbfc2c4c5c7c8cacccecfd0d3d4d6d7d9dadbdcdddee0e1e2e5e8ea#eceef1f2f3f4f5f6f7f9fafcfeff,7a:0104050708090a0c0f10111213151618191b1c,4e0176ef53ee948998769f0e952d5b9a8ba24e:221c,51ac846361c252a8680b4f97606b51bb6d1e515c6296659796618c46901775d890fd77636bd272:8aec,8bfb583577798d4c675c9540809a5ea66e2159927aef77ed953b6bb565ad7f0e58065151961f5bf958a954288e726566987f56e4949d76fe9041638754c659:1a3a,579b8eb267358dfa8235524160f0581586fe5ce89e454fc4989d8bb95a2560765384627c904f9102997f6069800c513f80335c1499756d314e8c7a:1d1f21222425262728292a2b2c2d2e2f303132343536383a3e4041424344454748494a4b4c4d4e4f50525354555658595a5b5c5d5e5f606162636465666768#696a6b6c6d6e6f717273757b7c7d7e828587898a8b8c8e8f909394999a9b9ea1a2,8d3053d17f5a7b4f4f104e4f96006cd573d085e95e06756a7ffb6a0a77fe94927e4151e170e653cd8fd483038d2972af996d6cdb574a82b365b980aa623f963259a84eff8bbf7eba653e83f2975e556198de80a5532a8bfd542080ba5e9f6cb88d3982ac915a54296c1b52067eb7575f711a6c7e7c89594b4efd5fff61247caa4e305c0167ab87025cf0950b98ce75af70fd902251af7f1d8bbd594951e44f5b5426592b657780a45b7562:76c2,8f905e456c1f7b264f:0fd8,670d7a:a3a4a7a9aaabaeafb0b1b2b4b5b6b7b8b9babbbcbdbec0c1c2c3c4c5c6c7c8c9cacccdcecfd0d1d2d3d4d5d7d8dadbdcdde1e2e4e7e8e9eaebeceef0f1f2f3#f4f5f6f7f8fbfcfe,7b:0001020507090c0d0e1012131617181a1c1d1f21222327292d,6d:6eaa,798f88b15f17752b629a8f854fef91dc65a781:2f51,5e9c81508d74526f89868d4b590d50854ed8961c723681798d1f5bcc8ba3964459877f1a549056:760e,8be565396982949976d66e895e72751867:46d1,7aff809d8d76611f79c665628d635188521a94a27f38809b7eb25c976e2f67607bd9768b9ad8818f7f947cd5641e95507a3f54:4ae5,6b4c640162089e3d80f3759952729769845b683c86e496:0194,94ec4e2a54047ed968398ddf801566f45e9a7fb97b:2f303234353637393b3d3f404142434446484a4d4e535557595c5e5f61636465666768696a6b6c6d6f70737476787a7c7d7f81828384868788898a8b8c8e8f#9192939698999a9b9e9fa0a3a4a5aeafb0b2b3b5b6b7b9babbbcbdbebfc0c2c3c4,57c2803f68975de5653b529f606d9f9a4f9b8eac516c5bab5f135de96c5e62f18d21517194a952fe6c9f82df72d757a267848d2d591f8f9c83c754957b8d4f306cbd5b6459d19f1353e486ca9aa88c3780a16545987e56fa96c7522e74dc52505be1630289024e5662d0602a68fa51735b9851a089c27ba199867f5060ef704c8d2f51495e7f901b747089c4572d78455f529f9f95fa8f689b3c8be17678684267dc8d:ea35,523d8f8a6eda68cd950590ed56fd679c88f98fc754c87b:c5c8c9cacbcdcecfd0d2d4d5d6d7d8dbdcdedfe0e2e3e4e7e8e9ebecedeff0f2f3f4f5f6f8f9fafbfdff,7c:0001020304050608090a0d0e101112131415171819#1a1b1c1d1e20212223242528292b2c2d2e2f3031323334353637393a3b3c3d3e42,9ab85b696d776c264ea55bb39a87916361a890af97e9542b6db55bd251fd558a7f:55f0,64bc634d65f161be608d710a6c:5749,592f676d822a58d5568e8c6a6beb90dd597d801753f76d695475559d83:77cf,683879be548c4f55540876d28c8996026cb36db88d6b89109e648d3a563f9ed175d55f8872e0606854fc4ea86a2a886160528f7054c470d886799e3f6d2a5b8f5f187ea255894faf7334543c539a501954:0e7c,4e4e5ffd745a58f6846b80e1877472d07cca6e567c:434445464748494a4b4c4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f70717275767778797a7e7f8081828384858687#888a8b8c8d8e8f90939496999a9ba0a1a3a6a7a8a9abacadafb0b4b5b6b7b8babb,5f27864e552c62a44e926caa623782b154d7534e733e6ed1753b521253168bdd69d05f8a60006dee574f6b2273af68538fd87f13636260a3552475ea8c6271156da35ba65e7b8352614c9ec478fa87577c27768751f060f6714c66435e4c604d8c0e707063258f895fbd606286d456de6bc160946167534960e066668d3f79fd4f1a70e96c478b:b3f2,7ed88364660f5a5a9b426d:51f7,8c416d3b4f19706b83b7621660d1970d8d27797851fb57:3efa,673a75787a3d79ef7b957c:bfc0c2c3c4c6c9cbcecfd0d1d2d3d4d8dadbdddee1e2e3e4e5e6e7e9eaebecedeef0f1f2f3f4f5f6f7f9fafcfdfeff,7d:000102030405060708090b0c0d0e0f10#1112131415161718191a1b1c1d1e1f212324252628292a2c2d2e30313233343536,808c99658ff96fc08ba59e2159ec7ee97f095409678168d88f917c4d96c653ca602575be6c7253735ac97ea7632451e0810a5df184df628051805b634f0e796d524260b86d4e5b:c4c2,8b:a1b0,65e25fcc964559937e:e7aa,560967b759394f735bb652a0835a988a8d3e753294be50477a3c4ef767b69a7e5ac16b7c76d1575a5c167b3a95f4714e517c80a9827059787f04832768c067ec78:b177,62e363617b804fed526a51cf835069db92748d:f531,89c1952e7bad4ef67d:3738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6f70717273747576#78797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798,506582305251996f6e:1085,6da75efa50f559dc5c066d466c5f7586848b686859568bb253209171964d854969127901712680f64ea490ca6d479a845a0756bc640594f077eb4fa5811a72e189d2997a7f347ede527f655991758f:7f83,53eb7a9663:eda5,768679f888579636622a52ab8282685467706377776b7aed6d017ed389e359d0621285c982a5754c501f4ecb75a58beb5c4a5dfe7b4b65a491d14eca6d25895f7d2795264ec58c288fdb9773664b79818fd170ec6d787d:999a9b9c9d9e9fa0a1a2a3a4a5a7a8a9aaabacadafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9#dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fa,5c3d52b283465162830e775b66769cb84eac60ca7c:beb3,7ecf4e958b66666f988897595883656c955c5f8475c997567a:dfde,51c070af7a9863ea7a767ea0739697ed4e4570784e5d915253a965:51e7,81fc8205548e5c31759a97a062d872d975bd5c459a7983ca5c40548077e94e3e6cae805a62d2636e5de851778ddd8e1e952f4ff153e560e770ac526763509e435a1f5026773753777ee26485652b628963985014723589c951b38bc07edd574783cc94a7519b541b5cfb7d:fbfcfdfeff,7e:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233343536373839#3a3c3d3e3f40424344454648494a4b4c4d4e4f505152535455565758595a5b5c5d,4fca7ae36d5a90e19a8f55805496536154af5f0063e9697751ef6168520a582a52d8574e780d770b5eb761777ce062:5b97,4ea27095800362f770e49760577782db67ef68f578d5989779d158f354b353ef6e34514b523b5ba28bfe80af554357a660735751542d7a7a60505b5463a762a053e362635bc767af54ed7a9f82e691775e9388e4593857ae630e8de880ef57577b774fa95feb5bbd6b3e53217b5072c2684677:ff36,65f751b54e8f76d45cbf7aa58475594e9b4150807e:5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081838485868788898a8b8c8d8e8f909192939495969798999a9c9d9e#aeb4bbbcd6e4ecf9,7f:0a101e37393b3c3d3e3f404143464748494a4b4c4d4e4f5253,998861276e8357646606634656f062:ec69,5ed39614578362c955878721814a8fa3556683b167658d5684dd5a6a680f62e67bee961151706f9c8c3063fd89c861d27f0670c26ee57405699472fc5eca90ce67176d6a635e52b3726280014f6c59e5916a70d96d9d52d24e5096f7956d857e78ca7d2f5121579264c2808b7c7b6cea68f1695e51b7539868a872819ece7bf172f879bb6f137406674e91cc9ca4793c83:8954,540f68174e3d538952b1783e5386522950884f:8bd0,7f:56595b5c5d5e6063646566676b6c6d6f7073757677787a7b7c7d7f8082838485868788898b8d8f9091929395969798999b9ca0a2a3a5a6a8a9aaabacadaeb1#b3b4b5b6b7babbbec0c2c3c4c6c7c8c9cbcdcfd0d1d2d3d6d7d9dadbdcdddee2e3,75e27acb7c926ca596b6529b748354e94fe9805483b28fde95705ec9601c6d9f5e18655b813894fe604b70bc7ec37cae51c968817cb1826f4e248f8691cf667e4eae8c0564a9804a50da759771ce5be58fbd6f664e86648295635ed66599521788c270c852a3730e7433679778f797164e3490bb9cde6dcb51db8d41541d62ce73b283f196f69f8494c34f367f9a51cc707596755cad988653e64ee46e9c740969b4786b998f7559521876246d4167f3516d9f99804b54997b3c7abf7f:e4e7e8eaebecedeff2f4f5f6f7f8f9fafdfeff,80:020708090a0e0f11131a1b1d1e1f2123242b2c2d2e2f303234393a3c3e404144454748494e4f505153555657#595b5c5d5e5f6061626364656667686b6c6d6e6f7072737475767778797a7b7c7d,9686578462e29647697c5a0464027bd36f0f964b82a6536298855e90708963b35364864f9c819e93788c97328d:ef42,9e7f6f5e79845f559646622e9a74541594dd4fa365c55c:6561,7f1586516c2f5f8b73876ee47eff5ce6631b5b6a6ee653754e7163a0756562a18f6e4f264ed16ca67eb68bba841d87ba7f57903b95237ba99aa188f8843d6d1b9a867edc59889ebb739b780186829a:6c82,561b541757cb4e709ea653568fc881097792999286ee6ee1851366fc61626f2b80:7e818285888a8d8e8f909192949597999ea3a6a7a8acb0b3b5b6b8b9bbc5c7c8c9cacbcfd0d1d2d3d4d5d8dfe0e2e3e6eef5f7f9fbfeff,81:000103040507080b#0c1517191b1c1d1f202122232425262728292a2b2d2e3033343537393a3b3c3d3f,8c298292832b76f26c135fd983bd732b8305951a6bdb77db94c6536f830251925e3d8c8c8d384e4873ab679a68859176970971646ca177095a9295416bcf7f8e66275bd059b95a9a95:e8f7,4eec84:0c99,6aac76df9530731b68a65b5f772f919a97617cdc8ff78c1c5f257c7379d889c56ccc871c5bc65e4268c977207ef551:954d,52c95a297f05976282d763cf778485d079d26e3a5e9959998511706d6c1162bf76bf654f60af95fd660e879f9e2394ed54:0d7d,8c2c647881:40414243444547494d4e4f525657585b5c5d5e5f6162636466686a6b6c6f727375767778818384858687898b8c8d8e90929394959697999a9e9fa0a1a2a4a5#a7a9abacadaeafb0b1b2b4b5b6b7b8b9bcbdbebfc4c5c7c8c9cbcdcecfd0d1d2d3,647986116a21819c78e864699b5462b9672b83ab58a89ed86cab6f205bde964c8c0b725f67d062c772614ea959c66bcd589366ae5e5552df6155672876ee776672677a4662ff54:ea50,94a090a35a1c7eb36c164e435976801059485357753796be56ca63208111607c95f96dd65462998151855ae980fd59ae9713502a6ce55c3c62df4f60533f817b90066eba852b62c85e7478be64b5637b5ff55a18917f9e1f5c3f634f80425b7d556e95:4a4d,6d8560a867e072de51dd5b8181:d4d5d6d7d8d9dadbdcdddedfe0e1e2e4e5e6e8e9ebeeeff0f1f2f5f6f7f8f9fafdff,82:030708090a0b0e0f111315161718191a1d2024252627292e323a3c3d3f#404142434546484a4c4d4e5051525354555657595b5c5d5e606162636465666769,62e76cde725b626d94ae7ebd81136d53519c5f04597452aa6012597366968650759f632a61e67cef8bfa54e66b279e256bb485d5545550766ca4556a8db4722c5e156015743662cd6392724c5f986e436d3e65006f5876d878d076fc7554522453db4e535e9e65c180:2ad6,629b5486522870ae888d8dd16ce1547880da57f988f48d54966a914d4f696c9b55b776c6783062a870f96f8e5f6d84ec68da787c7bf781a8670b9e4f636778b0576f7812973962:79ab,528874356bd782:6a6b6c6d71757677787b7c808183858687898c90939495969a9b9ea0a2a3a7b2b5b6babbbcbfc0c2c3c5c6c9d0d6d9dadde2e7e8e9eaecedeef0f2f3f5f6f8#fafcfdfeff,83:000a0b0d1012131618191d1e1f20212223242526292a2e3032373b3d,5564813e75b276ae533975de50fb5c418b6c7bc7504f72479a9798d86f0274e27968648777a562fc98918d2b54c180584e52576a82f9840d5e7351ed74f68bc45c4f57616cfc98875a4678349b448feb7c955256625194fa4ec68386846183e984b257d467345703666e6d668c3166dd7011671f6b3a6816621a59bb4e0351c46f0667d26c8f517668cb59476b6775665d0e81109f5065d779:4841,9a918d775c824e5e4f01542f5951780c56686c148fc45f036c:7de3,8bab639083:3e3f41424445484a4b4c4d4e5355565758595d6270717273747576797a7e7f808182838487888a8b8c8d8f909194959697999a9d9fa1a2a3a4a5a6a7acadae#afb5bbbebfc2c3c4c6c8c9cbcdced0d1d2d3d5d7d9dadbdee2e3e4e6e7e8ebeced,60706d3d7275626694:8ec5,53438fc17b7e4edf8c264e7e9ed494:b1b3,524d6f5c90636d458c3458115d4c6b:2049,67aa545b81547f8c589985375f3a62a26a47953965726084686577a74e544fa85de7979864ac7fd85ced4fcf7a8d520783044e14602f7a8394a64fb54eb279e6743452e482b964d279bd5bdd6c8197528f7b6c22503e537f6e0564ce66746c3060c598778bf75e86743c7a7779cb4e1890b174036c4256da914b6cc58d8b533a86c666f28eaf5c489a716e2083:eeeff3f4f5f6f7fafbfcfeff,84:0002050708090a10121314151617191a1b1e1f20212223292a2b2c2d2e2f30323334353637393a3b3e3f404142434445474849#4a4b4c4d4e4f505253545556585d5e5f606264656667686a6e6f70727477797b7c,53d65a369f8b8da353bb570898a76743919b6cc9516875ca62f372ac52:389d,7f3a7094763853749e4a69b7786e96c088d97fa471:36c3,518967d374e458e4651856b78ba9997662707ed560f970ed58ec4e:c1ba,5fcd97e74efb8ba45203598a7eab62544ecd65e5620e833884c98363878d71946eb65bb97ed2519763c967d480898339881551125b7a59828fb14e736c5d516589258f6f962e854a745e95:10f0,6da682e55f3164926d128428816e9cc3585e8d5b4e0953c184:7d7e7f8081838485868a8d8f90919293949596989a9b9d9e9fa0a2a3a4a5a6a7a8a9aaabacadaeb0b1b3b5b6b7bbbcbec0c2c3c5c6c7c8cbcccecfd2d4d5d7#d8d9dadbdcdee1e2e4e7e8e9eaebedeeeff1f2f3f4f5f6f7f8f9fafbfdfe,85:000102,4f1e6563685155d34e2764149a9a626b5ac2745f82726da968ee50e7838e7802674052396c997eb150bb5565715e7b5b665273ca82eb67495c715220717d886b95ea965564c58d6181b355846c5562477f2e58924f2455468d4f664c4e0a5c1a88f368a2634e7a0d70e7828d52fa97f65c1154e890b57ecd59628d4a86c782:0c0d,8d6664445c0461516d89793e8bbe78377533547b4f388eab6df15a207ec5795e6c885ba15a76751a80be614e6e1758f075:1f25,727253477ef385:030405060708090a0b0d0e0f101214151618191b1c1d1e2022232425262728292a2d2e2f303132333435363e3f404142444546474b4c4d4e4f505152535455#57585a5b5c5d5f60616263656667696a6b6c6d6e6f707173757677787c7d7f8081,770176db526980dc57235e08593172ee65bd6e7f8bd75c388671534177f362fe65f64ec098df86805b9e8bc653f277e24f7f5c4e9a7659cb5f0f793a58eb4e1667ff4e8b62ed8a93901d52bf662f55dc566c90024ed54f8d91ca99706c0f5e0260435ba489c68bd56536624b99965b:88ff,6388552e53d77626517d852c67a268b36b8a62928f9353d482126dd1758f4e668d4e5b70719f85af66:91d9,7f7287009ecd9f205c5e672f8ff06811675f620d7ad658855eb665706f3185:82838688898a8b8c8d8e909192939495969798999a9d9e9fa0a1a2a3a5a6a7a9abacadb1b2b3b4b5b6b8babbbcbdbebfc0c2c3c4c5c6c7c8cacbcccdced1d2#d4d6d7d8d9dadbdddedfe0e1e2e3e5e6e7e8eaebecedeeeff0f1f2f3f4f5f6f7f8,60555237800d6454887075295e05681362f4971c53cc723d8c016c3477617a0e542e77ac987a821c8bf47855671470c165af64955636601d79c153f84e1d6b7b80865bfa55e356db4f:3a3c,99725df3677e80386002988290015b8b8b:bcf5,641c825864de55fd82cf91654fd77d20901f7c9f50f358516eaf5bbf8bc980839178849c7b97867d96:8b8f,7ee59ad3788e5c817a57904296a7795f5b59635f7b0b84d168ad55067f2974107d2295016240584c4ed65b835979585485:f9fafcfdfe,86:0001020304060708090a0b0c0d0e0f10121314151718191a1b1c1d1e1f20212223242526282a2b2c2d2e2f3031323334353637393a3b3d3e3f40#4142434445464748494a4b4c525355565758595b5c5d5f6061636465666768696a,736d631e8e:4b0f,80ce82d462ac53f06cf0915e592a60016c70574d644a8d2a762b6ee9575b6a8075f06f6d8c:2d08,57666bef889278b363a253f970ad6c645858642a580268e0819b55107cd650188eba6dcc8d9f70eb638f6d9b6ed47ee68404684390036dd896768ba85957727985e4817e75bc8a8a68af52548e22951163d098988e44557c4f5366ff568f60d56d9552435c4959296dfb586b75:301c,606c82148146631167618fe2773a8d:f334,94c15e165385542c70c386:6d6f7072737475767778838485868788898e8f90919294969798999a9b9e9fa0a1a2a5a6abadaeb2b3b7b8b9bbbcbdbebfc1c2c3c5c8cccdd2d3d5d6d7dadc#dde0e1e2e3e5e6e7e8eaebeceff5f6f7fafbfcfdff,87:010405060b0c0e0f10111416,6c405ef7505c4ead5ead633a8247901a6850916e77b3540c94dc5f647ae5687663457b527edf75db507762955934900f51f879c37a8156fe5f9290146d825c60571f541051546e4d56e263a89893817f8715892a9000541e5c6f81c062:d658,81319e3596409a:6e7c,692d59a562d3553e631654c786d96d3c5a0374e6889c6b6a59168c4c5f2f6e7e73a9987d4e3870f75b8c7897633d665a769660cb5b9b5a494e0781556c6a738b4ea167897f515f8065fa671b5fd859845a0187:191b1d1f20242627282a2b2c2d2f303233353638393a3c3d404142434445464a4b4d4f505152545556585a5b5c5d5e5f6162666768696a6b6c6d6f71727375#7778797a7f8081848687898a8c8e8f90919294959698999a9b9c9d9ea0a1a2a3a4,5dcd5fae537197e68fdd684556f4552f60df4e3a6f4d7ef482c7840e59d44f:1f2a,5c3e7eac672a851a5473754f80c355829b4f4f4d6e2d8c135c096170536b761f6e29868a658795fb7eb9543b7a337d0a95ee55e17fc174ee631d87176da17a9d621165a1536763e16c835deb545c94a84e4c6c618bec5c4b65e0829c68a754:3e34,6b:cb66,4e9463425348821e4f:0dae,575e620a96fe6664726952:ffa1,609f8bef661471996790897f785277fd6670563b54389521727a87:a5a6a7a9aaaeb0b1b2b4b6b7b8b9bbbcbebfc1c2c3c4c5c7c8c9cccdcecfd0d4d5d6d7d8d9dadcdddedfe1e2e3e4e6e7e8e9ebecedeff0f1f2f3f4f5f6f7f8#fafbfcfdff,88:0001020405060708090b0c0d0e0f101112141718191a1c1d1e1f2023,7a00606f5e0c6089819d591560dc718470ef6eaa6c5072806a8488ad5e2d4e605ab3559c94e36d177cfb9699620f7ec6778e867e5323971e8f9666875ce14fa072ed4e0b53a6590f54136380952851484ed99c9c7ea454b88d248854823795f26d8e5f265acc663e966973:b02e,53bf817a99857fa15baa96:7750,7ebf76f853a2957699997bb189446e584e617fd479658be660f354cd4eab98795df76a6150cf54118c618427785d9704524a54ee56a395006d885bb56dc6665388:2425262728292a2b2c2d2e2f30313334353637383a3b3d3e3f414243464748494a4b4e4f505152535556585a5b5c5d5e5f6066676a6d6f717374757678797a#7b7c80838687898a8c8e8f90919394959798999a9b9d9e9fa0a1a3a5a6a7a8a9aa,5c0f5b5d6821809655787b11654869544e9b6b47874e978b534f631f643a90aa659c80c18c10519968b0537887f961c86c:c4fb,8c225c5185aa82af950c6b238f9b65b05f:fbc3,4fe18845661f8165732960fa51745211578b5f6290a2884c91925e78674f602759d351:44f6,80f853086c7996c4718a4f:11ee,7f9e673d55c5950879c088967ee3589f620c9700865a5618987b5f908bb884c4915753d965ed5e8f755c60647d6e5a7f7e:eaed,8f6955a75ba360ac65cb738488:acaeafb0b2b3b4b5b6b8b9babbbdbebfc0c3c4c7c8cacbcccdcfd0d1d3d6d7dadbdcdddee0e1e6e7e9eaebecedeeeff2f5f6f7fafbfdff,89:0001030405060708#090b0c0d0e0f1114151617181c1d1e1f20222324262728292c2d2e2f3132333537,9009766377297eda9774859b5b667a7496ea884052cb718f5faa65ec8be25bfb9a6f5de16b896c5b8b:adaf,900a8fc5538b62bc9e:262d,54404e2b82bd7259869c5d1688596daf96c554d14e9a8bb6710954bd960970df6df976d04e25781487125ca95ef68a00989c960e708e6cbf594463a9773c884d6f148273583071d5538c781a96c155015f6671305bb48c1a9a8c6b83592e9e2f79e76768626c4f6f75a17f8a6d0b96336c274ef075d2517b68376f3e908081705996747689:38393a3b3c3d3e3f40424345464748494a4b4c4d4e4f505152535455565758595a5b5c5d6061626364656768696a6b6c6d6e6f707172737475767778797a7c#7d7e808284858788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1,64475c2790657a918c2359da54ac8200836f898180006930564e8036723791ce51b64e5f987563964e1a53f666f3814b591c6db24e0058f9533b63d694f14f:9d0a,886398905937905779fb4eea80f075916c825b9c59e85f5d69058681501a5df24e5977e34ee5827a6291661390915c794ebf5f7981c69038808475ab4ea688d4610f6bc55fc64e4976ca6ea28b:e3ae,8c0a8bd15f027f:fccc,7ece83:356b,56e06bb797f3963459fb541f94f66deb5bc5996e5c395f15969089:a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c3cdd3d4d5d7d8d9dbdddfe0e1e2e4e7e8e9eaecedeef0f1f2f4f5f6f7f8f9fa#fbfcfdfeff,8a:01020304050608090a0b0c0d0e0f101112131415161718191a1b1c1d,537082f16a315a749e705e947f2883b984:2425,836787478fce8d6276c85f719896786c662054df62e54f6381c375c85eb896cd8e0a86f9548f6cf36d8c6c38607f52c775285e7d4f1860a05fe75c24753190ae94c072b96cb96e389149670953:cbf3,4f5191c98bf153c85e7c8fc26de44e8e76c26986865e611a82064f:59de,903e9c7c61096e:1d14,96854e885a3196e84e0e5c7f79b95b878bed7fbd738957df828b90c15401904755bb5cea5fa161086b3272f180b28a:891e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3f4041424344454647494a4b4c4d4e4f505152535455565758595a5b5c5d5e#5f606162636465666768696a6b6c6d6e6f7071727374757677787a7b7c7d7e7f80,6d745bd388d598848c6b9a6d9e336e0a51:a443,57a38881539f63f48f9556ed54585706733f6e907f188fdc82d1613f6028966266f07ea68d:8ac3,94a55cb37ca4670860a6960580184e9190e75300966851418fd08574915d665597f55b55531d78386742683d54c9707e5bb08f7d518d572854b1651266828d:5e43,810f846c906d7cdf51ff85fb67a365e96fa186a48e81566a90207682707671e58d2362e952196cfd8d3c600e589e618e66fe8d60624e55b36e23672d8f678a:81828384858687888b8c8d8e8f9091929495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2#c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3,94e195f87728680569a8548b4e4d70b88bc86458658b5b857a84503a5be877bb6be18a797c986cbe76cf65a98f975d2d5c5586386808536062187ad96e5b7efd6a1f7ae05f706f335f20638c6da867564e085e108d264ed780c07634969c62db662d627e6cbc8d7571677f695146808753ec906e629854f286f08f998005951785178fd96d5973cd659f771f7504782781fb8d1e94884fa6679575b98bca9707632f9547963584b8632377415f8172f04e896014657462ef6b63653f8a:e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8b:0001020304050608090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223#24252728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445,5e2775c790d18bc1829d679d652f5431871877e580a281026c414e4b7ec7804c76f4690d6b966267503c4f84574063076b628dbe53ea65e87eb85fd763:1ab7,81:f3f4,7f6e5e1c5cd95236667a79e97a1a8d28709975d46ede6cbb7a924e2d76c55fe0949f88777ec879cd80bf91cd4ef24f17821f54685dde6d328bcc7ca58f7480985e1a549276b15b99663c9aa473e0682a86db6731732a8b:f8db,90107af970db716e62c477a956314e3b845767f152a986c08d2e94f87b518b:464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364656768696a6b6d6e6f707172737475767778797a7b7c7d7e7f80818283848586#8788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9facb1bbc7d0ea,8c:091e,4f4f6ce8795d9a7b6293722a62fd4e1378168f6c64b08d5a7bc668695e8488c55986649e58ee72b6690e95258ffd8d5857607f008c0651c6634962d95353684c74228301914c55447740707c6d4a517954a88d4459ff6ecb6dc45b5c7d2b4ed47c7d6ed35b5081ea6e0d5b579b0368d58e2a5b977efc603b7eb590b98d70594f63cd79df8db3535265cf79568bc5963b7ec494bb7e825634918967007f6a5c0a907566285de64f5067de505a4f5c57505e:a7#3$,8c:38393a3b3c3d3e3f4042434445484a4b4d4e4f5051525354565758595b5c5d5e5f60636465666768696c6d6e6f707172747576777b7c7d7e7f808183848687#888b8d8e8f90919293959697999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacad,4e:8d0c,51404e105eff53454e:15981e,9b325b6c56694e2879ba4e3f53154e47592d723b536e6c1056df80e499976bd3777e9f174e:369f,9f104e:5c6993,82885b5b556c560f4ec453:8d9da3a5ae,97658d5d53:1af5262e3e,8d5c53:6663,52:02080e2d333f404c5e615c,84af52:7d82819093,51827f544e:bbc3c9c2e8e1ebde,4f1b4ef34f:2264,4ef54f:2527092b5e67,65384f:5a5d,8c:aeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebec#edeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8d:000102030405060708090a0b0c0d,4f:5f57323d76749189838f7e7baa7cac94e6e8eac5dae3dcd1dff8,50:294c,4ff350:2c0f2e2d,4ffe50:1c0c25287e4355484e6c7ba5a7a9bad6,510650:edece6ee,51:070b,4edd6c3d4f:5865ce,9fa06c467c74516e5dfd9ec999985181591452f9530d8a07531051eb591951554ea051564eb388:6ea4,4eb5811488d279805b3488037fb851:abb1bdbc,8d:0e0f101112131415161718191a1b1c205152575f6568696a6c6e6f717278797a7b7c7d7e7f808283868788898c8d8e8f90929395969798999a9b9c9d9ea0a1#a2a4a5a6a7a8a9aaabacadaeafb0b2b6b7b9bbbdc0c1c2c5c7c8c9cacdd0d2d3d4,51:c796a2a5,8b:a0a6a7aab4b5b7c2c3cbcfced2d3d4d6d8d9dcdfe0e4e8e9eef0f3f6f9fcff,8c:000204070c0f1112141516191b181d1f202125272a2b2e2f32333536,53:697a,96:1d2221312a3d3c4249545f676c7274888d97b0,90:979b9d99aca1b4b3b6ba,8d:d5d8d9dce0e1e2e5e6e7e9edeef0f1f2f4f6fcfeff,8e:00010203040607080b0d0e1011121315161718191a1b1c202124252627282b2d303233343637383b3c3e#3f4345464c4d4e4f505354555657585a5b5c5d5e5f60616263646567686a6b6e71,90:b8b0cfc5bed0c4c7d3e6e2dcd7dbebeffe,91:04221e23312f394346,520d594252:a2acadbe,54ff52:d0d6f0,53df71ee77cd5ef451:f5fc,9b2f53b65f01755a5def57:4ca9a1,58:7ebcc5d1,57:292c2a33392e2f5c3b4269856b867c7b686d7673ada48cb2cfa7b493a0d5d8dad9d2b8f4eff8e4dd,8e:73757778797a7b7d7e808283848688898a8b8c8d8e91929395969798999a9b9d9fa0a1a2a3a4a5a6a7a8a9aaadaeb0b1b3b4b5b6b7b8b9bbbcbdbebfc0c1c2#c3c4c5c6c7c8c9cacbcccdcfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4,58:0b0d,57:fded,58:001e194420656c81899a80,99a89f1961ff82:797d7f8f8aa8848e919799abb8beb0c8cae398b7aecbccc1a9b4a1aa9fc4cea4e1,830982:f7e4,83:0f07,82:dcf4d2d8,830c82:fbd3,83:111a061415,82:e0d5,83:1c515b5c08923c34319b5e2f4f47435f4017602d3a336665,8e:e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8f:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223#2425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f4041424344,83:681b696c6a6d6eb078b3b4a0aa939c857cb6a97db87b989ea8babcc1,840183:e5d8,580784:180b,83:ddfdd6,84:1c381106,83:d4df,84:0f03,83:f8f9eac5c0,842683:f0e1,84:5c515a597387887a89783c4669768c8e316dc1cdd0e6bdd3cabfbae0a1b9b497e5e3,850c750d853884f085:391f3a,8f:45464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364656a808c929da0a1a2a4a5a6a7aaacadaeafb2b3b4b5b7b8babbbcbfc0c3c6#c9cacbcccdcfd2d6d7dae0e1e3e7eceff1f2f4f5f6fafbfcfeff,90:07080c0e131518,85:563b,84:fffc,85:594868645e7a,77a285:43727ba4a8878f79ae9c85b9b7b0d3c1dcff,86:270529163c,5efe5f0859:3c41,803759:555a58,530f5c:22252c34,62:4c6a9fbbcadad7ee,632262f663:394b43adf6717a8eb46dac8a69aebcf2f8e0ffc4dece,645263:c6be,64:45410b1b200c26215e846d96,90:191c2324252728292a2b2c303132333437393a3d3f4043454648494a4b4c4e545556595a5c5d5e5f6061646667696a6b6c6f70717273767778797a7b7c7e81#84858687898a8c8d8e8f90929496989a9c9e9fa0a4a5a7a8a9abadb2b7bcbdbfc0,64:7ab7b899bac0d0d7e4e2,65:09252e,5f:0bd2,75195f1153:5ff1fde9e8fb,54:1216064b5253545643215759233282947771649a9b8476669dd0adc2b4d2a7a6d3d472a3d5bbbfccd9dadca9aaa4ddcfde,551b54e7552054fd551454f355:22230f11272a678fb5496d41553f503c,90:c2c3c6c8c9cbcccdd2d4d5d6d8d9dadedfe0e3e4e5e9eaeceef0f1f2f3f5f6f7f9fafbfcff,91:00010305060708090a0b0c0d0e0f1011121314151617181a1b1c#1d1f20212425262728292a2b2c2d2e30323334353637383a3b3c3d3e3f40414244,55:375675767733305c8bd283b1b988819f7ed6917bdfbdbe9499eaf7c9,561f55:d1ebecd4e6ddc4efe5f2f3cccde8f5e4,8f9456:1e080c012423,55fe56:00272d5839572c4d62595c4c548664716b7b7c8593afd4d7dde1f5ebf9ff,57:040a091c,5e:0f191411313b3c,91:454748515354555658595b5c5f606667686b6d737a7b7c808182838486888a8e8f939495969798999c9d9e9fa0a1a4a5a6a7a8a9abacb0b1b2b3b6b7b8b9bb#bcbdbebfc0c1c2c3c4c5c6c8cbd0d2d3d4d5d6d7d8d9dadbdddedfe0e1e2e3e4e5,5e:3744545b5e61,5c:8c7a8d9096889899919a9cb5a2bdacabb1a3c1b7c4d2e4cbe5,5d:020327262e241e061b583e343d6c5b6f5d6b4b4a697482999d,8c735d:b7c5,5f:73778287898c95999ca8adb5bc,88625f6172:adb0b4b7b8c3c1cecdd2e8efe9f2f4f7,730172f3730372fa91:e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,92:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021222324#25262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445,72fb73:1713210a1e1d152239252c3831504d57606c6f7e,821b592598e759:2402,99:636768696a6b6c74777d8084878a8d9091939495,5e:80918b96a5a0b9b5beb3,8d535e:d2d1dbe8ea,81ba5f:c4c9d6cf,60035fee60045f:e1e4fe,60:0506,5f:eaedf8,60:1935261b0f0d292b0a3f2178797b7a42,92:464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f7071727375767778797a7b7c7d7e7f808182838485#868788898a8b8c8d8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7,60:6a7d969aad9d83928c9becbbb1ddd8c6dab4,61:20261523,60f461:000e2b4a75ac94a7b7d4f5,5fdd96b395:e9ebf1f3f5f6fcfe,96:030406080a0b0c0d0f12151617191a,4e2c723f62156c:35545c4aa38590948c6869747686a9d0d4adf7f8f1d7b2e0d6faebeeb1d3effe,92:a8a9aaabacadafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8#e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,93:00010203040506070809,6d:39270c43480704190e2b4d2e351a4f525433916f9ea05e93945c607c63,6e1a6d:c7c5de,6e0e6d:bfe0,6e116d:e6ddd9,6e166dab6e0c6dae6e:2b6e4e6bb25f865354322544dfb198e0,6f2d6e:e2a5a7bdbbb7d7b4cf8fc29f,6f:6246472415,6ef96f:2f364b742a0929898d8c78727c7ad1,93:0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3f40414243444546474849#4a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696b,6f:c9a7b9b6c2e1eedee0ef,70:1a231b39354f5e,5b:80849593a5b8,752f9a9e64345b:e4ee,89305bf08e478b078f:b6d3d5e5eee4e9e6f3e8,90:05040b26110d162135362d2f445152506858625b,66b990:747d8288838b,5f:50575658,5c3b54ab5c:5059,5b715c:6366,7fbc5f:2a292d,82745f3c9b3b5c6e59:81838da9aaa3,93:6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaab#acadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cbcccd,59:97caab9ea4d2b2afd7be,5a:0506,59dd5a0859:e3d8f9,5a:0c09323411231340674a553c6275,80ec5a:aa9b777abeebb2d2d4b8e0e3f1d6e6d8dc,5b:091716323740,5c:151c,5b:5a6573515362,9a:7577787a7f7d808185888a90929396989b9c9d9fa0a2a3a5a7,7e:9fa1a3a5a8a9,93:cecfd0d1d2d3d4d5d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,94:000102030405060708090a0b0c0d#0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e,7e:adb0bec0c1c2c9cbccd0d4d7dbe0e1e8ebeeeff1f2,7f0d7e:f6fafbfe,7f:01020307080b0c0f111217191c1b1f212223242526272a2b2c2d2f3031323335,5e7a757f5ddb753e909573:8e91aea29fcfc2d1b7b3c0c9c8e5d9,987c740a73:e9e7debaf2,74:0f2a5b262528302e2c,94:2f303132333435363738393a3b3c3d3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6c6d6e6f#707172737475767778797a7b7c7d7e7f8081828384919698c7cfd3d4dae6fb,95:1c20,74:1b1a415c575559776d7e9c8e8081878b9ea8a990a7d2ba,97:eaebec,67:4c535e4869a5876a7398a775a89ead8b777cf0,680967d8680a67:e9b0,680c67:d9b5dab3dd,680067:c3b8e2,680e67:c1fd,68:323360614e624464831d55664167403e4a4929b58f7477936bc2,696e68fc69:1f20,68f995:27333d43484b555a606e74757778797a7b7c7d7e808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aa#abacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacb,692468f069:0b0157,68e369:10713960425d846b80987834cc8788ce896663799ba7bbabadd4b1c1cadf95e08dff,6a2f69ed6a:171865,69f26a:443ea0505b358e793d28587c9190a997ab,73:3752,6b:8182878492938d9a9ba1aa,8f:6b6d71727375767877797a7c7e818284878b,95:cccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7ecff,96:0713181b1e20232425262728292b2c2d2f303738393a3e41434a4e4f5152535657#58595a5c5d5e606365666b6d6e6f70717378797a7b7c7d7e7f808182838487898a,8f:8d8e8f989a,8ece62:0b171b1f222125242c,81e774:eff4ff,75:0f1113,65:34eeeff0,66:0a19,677266:031500,708566:f71d34313635,800666:5f54414f56615777848ca79dbedbdce6e9,8d:3233363b3d4045464849474d5559,89:c7cacbcccecfd0d1,72:6e9f5d666f7e7f848b8d8f92,63:0832b0,96:8c8e91929395969a9b9d9e9fa0a1a2a3a4a5a6a8a9aaabacadaeafb1b2b4b5b7b8babbbfc2c3c8cacbd0d1d3d4d6d7d8d9dadbdcdddedfe1e2e3e4e5e6e7eb#ecedeef0f1f2f4f5f8fafbfcfdff,97:0203050a0b0c10111214151718191a1b1d1f20,64:3fd8,80046b:eaf3fdf5f9,6c:0507060d1518191a2129242a32,65:35556b,72:4d525630,8662521680:9f9c93bc,670a80:bdb1abadb4b7e7e8e9eadbc2c4d9cdd7,671080:ddebf1f4ed,81:0d0e,80:f2fc,671581128c5a81:361e2c1832484c5374595a7160697c7d6d67,584d5ab581:888291,6ed581:a3aacc,672681:cabb,97:2122232425262728292b2c2e2f3133343536373a3b3c3d3f404142434445464748494a4b4c4d4e4f5051545557585a5c5d5f63646667686a6b6c6d6e6f7071#72757778797a7b7d7e7f8081828384868788898a8c8e8f9093959697999a9b9c9d,81:c1a6,6b:243739434659,98:d1d2d3d5d9da,6bb35f406bc289f365909f5165:93bcc6c4c3ccced2d6,70:809c969dbbc0b7abb1e8ca,71:1013162f31735c6845724a787a98b3b5a8a0e0d4e7f9,72:1d28,706c71:1866b9,62:3e3d434849,79:3b4046495b5c535a6257606f677a858a9aa7b3,5f:d1d0,97:9e9fa1a2a4a5a6a7a8a9aaacaeb0b1b3b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3#e4e5e8eeeff0f1f2f4f7f8f9fafbfcfdfeff,98:000102030405060708090a0b0c0d0e,60:3c5d5a67415963ab,61:060d5da99dcbd1,620680:807f,6c:93f6,6dfc77:f6f8,78:0009171811,65ab78:2d1c1d393a3b1f3c252c23294e6d56572650474c6a9b939a879ca1a3b2b9a5d4d9c9ecf2,790578f479:13241e34,9f9b9e:f9fbfc,76f177:040d,76f977:07081a22192d263538505147435a68,98:0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d#4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e,77:62657f8d7d808c919fa0b0b5bd,75:3a404e4b485b727983,7f:58615f,8a487f:68747179817e,76:cde5,883294:8586878b8a8c8d8f909497959a9b9ca3a4abaaadacafb0b2b4b6b7b8b9babcbdbfc4c8c9cacbcccdced0d1d2d5d6d7d9d8dbdedfe0e2e4e5e7e8ea,98:6f70717273748b8e929599a3a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcfd0d4d6d7dbdcdde0e1e2e3e4#e5e6e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,99:0001020304050607,94:e9ebeeeff3f4f5f7f9fcfdff,95:03020607090a0d0e0f1213141516181b1d1e1f222a2b292c3132343637383c3e3f4235444546494c4e4f525354565758595b5e5f5d61626465666768696a6b6c6f7172733a,77:e7ec,96c979:d5ede3eb,7a065d477a:03021e14,99:08090a0b0c0e0f1112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2f303132333435363738393a3b3c3d3e3f40414243444546474849#4a4b4c4d4e4f50515253565758595a5b5c5d5e5f60616264667378797b7e828389,7a:393751,9ecf99a57a7076:888e9399a4,74:dee0,752c9e:202228292a2b2c3231363837393a3e414244464748494b4c4e5155575a5b5c5e63666768696a6b6c716d73,75:929496a09daca3b3b4b8c4b1b0c3c2d6cde3e8e6e4ebe7,760375:f1fcff,76:1000050c170a25181519,99:8c8e9a9b9c9d9e9fa0a1a2a3a4a6a7a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8#d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9,76:1b3c2220402d303f35433e334d5e545c566b6f,7fca7a:e6787980868895a6a0aca8adb3,88:6469727d7f82a2c6b7bcc9e2cee3e5f1,891a88:fce8fef0,89:2119131b0a342b3641667b,758b80e576:b2b4,77dc80:1214161c20222526272928310b3543464d526971,898398:788083,99:fafbfcfdfeff,9a:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738#393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f50515253545556575859,98:898c8d8f949a9b9e9fa1a2a5a6,86:4d546c6e7f7a7c7ba88d8bac9da7a3aa93a9b6c4b5ceb0bab1afc9cfb4e9f1f2edf3d0,871386:def4dfd8d1,87:0307,86f887:080a0d09233b1e252e1a3e48343129373f82227d7e7b60704c6e8b53637c64596593afa8d2,9a:5a5b5c5d5e5f606162636465666768696a6b7283898d8e949599a6a9aaabacadaeafb2b3b4b5b9bbbdbebfc3c4c6c7c8c9cacdcecfd0d2d4d5d6d7d9dadbdc#dddee0e2e3e4e5e7e8e9eaeceef0f1f2f3f4f5f6f7f8fafcfdfeff,9b:000102040506,87:c68885ad9783abe5acb5b3cbd3bdd1c0cadbeae0ee,88:1613,87fe88:0a1b21393c,7f:36424445,82107a:fafd,7b:080304150a2b0f47382a192e31202524333e1e585a45754c5d606e7b62727190a6a7b8ac9da885aa9ca2abb4d1c1ccdddae5e6ea,7c0c7b:fefc,7c:0f160b,9b:07090a0b0c0d0e1011121415161718191a1b1c1d1e2021222425262728292a2b2c2d2e3031333435363738393a3d3e3f40464a4b4c4e50525355565758595a#5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b,7c:1f2a26384140,81fe82:010204,81ec884482:2122232d2f282b383b33343e44494b4f5a5f68,88:7e8588d8df,895e7f:9d9fa7afb0b2,7c7c65497c:919d9c9ea2b2bcbdc1c7cccdc8c5d7e8,826e66a87f:bfced5e5e1e6e9eef3,7cf87d:77a6ae,7e:479b,9e:b8b4,8d:73849491b1676d,8c:4749,91:4a504e4f64,9b:7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9ba#bbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadb,91:626170696f7d7e7274798c85908d91a2a3aaadaeafb5b4ba,8c559e7e8d:b8eb,8e:055969,8d:b5bfbcbac4d6d7dadececfdbc6ecf7f8e3f9fbe4,8e098dfd8e:141d1f2c2e232f3a4039353d3149414251524a70767c6f74858f94909c9e,8c:78828a859894,659b89:d6dedadc,9b:dcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9c:000102030405060708090a0b0c0d0e0f101112131415161718191a#1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b,89:e5ebef,8a3e8b26975396:e9f3ef,97:0601080f0e2a2d303e,9f:808385868788898a8c,9efe9f:0b0d,96:b9bcbdced2,77bf96e092:8eaec8,93:3e6aca8f,94:3e6b,9c:7f8285868788,7a239c:8b8e90919294959a9b9e9fa0a1a2a3a5a6a7a8a9abadaeb0b1b2b3b4b5b6b7babbbcbdc4c5c6c7cacb3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a#7b7d7e808384898a8c8f93969798999daaacafb9bebfc0c1c2c8c9d1d2dadbe0e1cccdcecfd0d3d4d5d7d8d9dcdddfe2,97:7c85919294afaba3b2b4,9a:b1b0b7,9e589a:b6babcc1c0c5c2cbccd1,9b:45434749484d51,98e899:0d2e5554,9a:dfe1e6efebfbedf9,9b:080f131f23,9e:bdbe,7e3b9e:8287888b92,93d69e:9d9fdbdcdde0dfe2e9e7e5eaef,9f:222c2f39373d3e44,9c:e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9d:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021#22232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142#92$434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081#82838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2#92$a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1#e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9e:000102#92$030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e24272e30343b3c404d5052535456595d5f606162656e6f727475767778797a7b7c7d80#8183848586898a8c8d8e8f90919495969798999a9b9c9ea0a1a2a3a4a5a7a8a9aa#92$abacadaeafb0b1b2b3b5b6b7b9babcbfc0c1c2c3c5c6c7c8cacbccd0d2d3d5d6d7d9dadee1e3e4e6e8ebecedeef0f1f2f3f4f5f6f7f8fafdff,9f:000102030405#060708090a0c0f1112141516181a1b1c1d1e1f21232425262728292a2b2d2e3031#92$3233343536383a3c3f4041424345464748494a4b4c4d4e4f52535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778#797a7b7c7d7e81828d8e8f9091929394959697989c9d9ea1a2a3a4a5,f9:2c7995e7f1#92$,fa:0c0d0e0f111314181f20212324272829,e8:15161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f40414243#4445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364");
|
|
117
114
|
let index = 0;
|
|
118
115
|
this.#data = dataText.match(/..../g);
|
|
119
116
|
for (let i = 0x81; i <= 0xfe; i++) {
|
|
120
117
|
for (let j = 0x40; j <= 0xfe; j++) {
|
|
121
|
-
this.#U2Ghash[this.#data[index++]] =
|
|
118
|
+
this.#U2Ghash[this.#data[index++]] = `%${i.toString(16)}%${j.toString(16)}`.toUpperCase();
|
|
122
119
|
}
|
|
123
120
|
}
|
|
124
|
-
for (
|
|
125
|
-
this.#
|
|
121
|
+
for (const key in this.#U2Ghash) {
|
|
122
|
+
const u2ghashValue = Reflect.get(this.#U2Ghash, key);
|
|
123
|
+
Reflect.set(this.#G2Uhash, u2ghashValue, key);
|
|
126
124
|
}
|
|
127
125
|
}
|
|
128
126
|
handleText(text) {
|
|
129
127
|
text = text
|
|
130
|
-
.replace(/#(\d+)\$/g, function (
|
|
128
|
+
.replace(/#(\d+)\$/g, function (_, b) {
|
|
131
129
|
return Array(+b + 3).join("#");
|
|
132
130
|
})
|
|
133
131
|
.replace(/#/g, "####")
|
|
134
|
-
.replace(/(\w\w):([\w#]+)(?:,|$)/g, function (
|
|
132
|
+
.replace(/(\w\w):([\w#]+)(?:,|$)/g, function (_, hd, dt) {
|
|
135
133
|
return dt.replace(/../g, function (a) {
|
|
136
134
|
if (a != "##") {
|
|
137
135
|
return hd + a;
|
|
@@ -151,8 +149,8 @@ System.register('Utils', [], (function (exports) {
|
|
|
151
149
|
* @param str
|
|
152
150
|
*/
|
|
153
151
|
encode(str) {
|
|
154
|
-
|
|
155
|
-
return [...str].reduce((result, val
|
|
152
|
+
const that = this;
|
|
153
|
+
return [...str].reduce((result, val) => {
|
|
156
154
|
return result + toGBK(val);
|
|
157
155
|
}, "");
|
|
158
156
|
function toGBK(val) {
|
|
@@ -161,7 +159,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
161
159
|
const codePoint = val.codePointAt(i);
|
|
162
160
|
const code = String.fromCodePoint(codePoint);
|
|
163
161
|
let key = codePoint.toString(16);
|
|
164
|
-
key.length != 4 && (key =
|
|
162
|
+
key.length != 4 && (key = `000${key}`.match(/....$/)?.[0]);
|
|
165
163
|
/* Add up i by code.length */
|
|
166
164
|
i += code.length - 1;
|
|
167
165
|
/* If code is in ascii range */
|
|
@@ -175,9 +173,9 @@ System.register('Utils', [], (function (exports) {
|
|
|
175
173
|
continue;
|
|
176
174
|
}
|
|
177
175
|
/*
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
176
|
+
If 2 or more char combines to one visible code,
|
|
177
|
+
or just this code is not in GBK
|
|
178
|
+
*/
|
|
181
179
|
result += toGBK(`&#${codePoint};`);
|
|
182
180
|
}
|
|
183
181
|
return result;
|
|
@@ -188,18 +186,18 @@ System.register('Utils', [], (function (exports) {
|
|
|
188
186
|
* @param str
|
|
189
187
|
*/
|
|
190
188
|
decode(str) {
|
|
191
|
-
|
|
192
|
-
|
|
189
|
+
const GBKMatcher = /%[0-9A-F]{2}%[0-9A-F]{2}/;
|
|
190
|
+
const UTFMatcher = /%[0-9A-F]{2}/;
|
|
193
191
|
// let gbk = true;
|
|
194
192
|
let utf = true;
|
|
195
193
|
const that = this;
|
|
196
194
|
while (utf) {
|
|
197
|
-
|
|
198
|
-
|
|
195
|
+
const gbkMatch = str.match(GBKMatcher);
|
|
196
|
+
const utfMatch = str.match(UTFMatcher);
|
|
199
197
|
// gbk = Boolean(gbkMatch);
|
|
200
198
|
utf = Boolean(utfMatch);
|
|
201
199
|
if (gbkMatch && gbkMatch in that.#G2Uhash) {
|
|
202
|
-
str = str.replace(gbkMatch, String.fromCharCode(
|
|
200
|
+
str = str.replace(gbkMatch, String.fromCharCode(`0x${that.#G2Uhash[gbkMatch]}`));
|
|
203
201
|
}
|
|
204
202
|
else {
|
|
205
203
|
str = str.replace(utfMatch, decodeURIComponent(utfMatch));
|
|
@@ -213,7 +211,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
213
211
|
/* 定义变量和函数 */
|
|
214
212
|
let callbackFunction = null;
|
|
215
213
|
let context = null;
|
|
216
|
-
let handleError = (
|
|
214
|
+
let handleError = () => { };
|
|
217
215
|
let defaultDetails = {
|
|
218
216
|
log: true,
|
|
219
217
|
};
|
|
@@ -245,7 +243,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
245
243
|
run(callback, __context__) {
|
|
246
244
|
callbackFunction = callback;
|
|
247
245
|
context = __context__ || this;
|
|
248
|
-
|
|
246
|
+
const result = executeTryCatch(callbackFunction, handleError, context);
|
|
249
247
|
return result !== void 0 ? result : TryCatchCore;
|
|
250
248
|
},
|
|
251
249
|
};
|
|
@@ -269,8 +267,8 @@ System.register('Utils', [], (function (exports) {
|
|
|
269
267
|
catch (error) {
|
|
270
268
|
if (defaultDetails.log) {
|
|
271
269
|
callback = callback;
|
|
272
|
-
console.log(`%c ${callback?.name ? callback?.name : callback
|
|
273
|
-
console.log(`%c
|
|
270
|
+
console.log(`%c ${callback?.name ? callback?.name : `${callback}`} `, "color: #f20000");
|
|
271
|
+
console.log(`%c ${error}`, "color: #f20000");
|
|
274
272
|
console.trace(callback);
|
|
275
273
|
}
|
|
276
274
|
if (handleErrorFunc) {
|
|
@@ -289,9 +287,9 @@ System.register('Utils', [], (function (exports) {
|
|
|
289
287
|
|
|
290
288
|
class CommonUtil {
|
|
291
289
|
assign(target = {}, source = {}, isAdd = false) {
|
|
292
|
-
|
|
290
|
+
const UtilsContext = this;
|
|
293
291
|
if (Array.isArray(source)) {
|
|
294
|
-
|
|
292
|
+
const canTraverse = source.filter((item) => {
|
|
295
293
|
return typeof item === "object";
|
|
296
294
|
});
|
|
297
295
|
if (!canTraverse.length) {
|
|
@@ -307,34 +305,34 @@ System.register('Utils', [], (function (exports) {
|
|
|
307
305
|
if (isAdd) {
|
|
308
306
|
for (const sourceKeyName in source) {
|
|
309
307
|
const targetKeyName = sourceKeyName;
|
|
310
|
-
|
|
311
|
-
|
|
308
|
+
const targetValue = Reflect.get(target, targetKeyName);
|
|
309
|
+
const sourceValue = Reflect.get(source, sourceKeyName);
|
|
312
310
|
if (typeof sourceValue === "object" &&
|
|
313
311
|
sourceValue != null &&
|
|
314
312
|
sourceKeyName in target &&
|
|
315
313
|
!UtilsContext.isDOM(sourceValue)) {
|
|
316
314
|
/* 源端的值是object类型,且不是元素节点 */
|
|
317
|
-
target
|
|
315
|
+
Reflect.set(target, sourceKeyName, UtilsContext.assign(targetValue, sourceValue, isAdd));
|
|
318
316
|
continue;
|
|
319
317
|
}
|
|
320
|
-
target
|
|
318
|
+
Reflect.set(target, sourceKeyName, sourceValue);
|
|
321
319
|
}
|
|
322
320
|
}
|
|
323
321
|
else {
|
|
324
322
|
for (const targetKeyName in target) {
|
|
325
323
|
if (targetKeyName in source) {
|
|
326
|
-
|
|
327
|
-
|
|
324
|
+
const targetValue = Reflect.get(target, targetKeyName);
|
|
325
|
+
const sourceValue = Reflect.get(source, targetKeyName);
|
|
328
326
|
if (typeof sourceValue === "object" &&
|
|
329
327
|
sourceValue != null &&
|
|
330
328
|
!UtilsContext.isDOM(sourceValue) &&
|
|
331
329
|
Object.keys(sourceValue).length) {
|
|
332
330
|
/* 源端的值是object类型,且不是元素节点 */
|
|
333
|
-
target
|
|
331
|
+
Reflect.set(target, targetKeyName, UtilsContext.assign(targetValue, sourceValue, isAdd));
|
|
334
332
|
continue;
|
|
335
333
|
}
|
|
336
334
|
/* 直接赋值 */
|
|
337
|
-
target
|
|
335
|
+
Reflect.set(target, targetKeyName, sourceValue);
|
|
338
336
|
}
|
|
339
337
|
}
|
|
340
338
|
}
|
|
@@ -342,7 +340,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
342
340
|
}
|
|
343
341
|
isNull(...args) {
|
|
344
342
|
let result = true;
|
|
345
|
-
|
|
343
|
+
const checkList = [...args];
|
|
346
344
|
for (const objItem of checkList) {
|
|
347
345
|
let itemResult = false;
|
|
348
346
|
if (objItem === null || objItem === undefined) {
|
|
@@ -368,11 +366,12 @@ System.register('Utils', [], (function (exports) {
|
|
|
368
366
|
case "boolean":
|
|
369
367
|
itemResult = !objItem;
|
|
370
368
|
break;
|
|
371
|
-
case "function":
|
|
372
|
-
|
|
369
|
+
case "function": {
|
|
370
|
+
const funcStr = objItem.toString().replace(/\s/g, "");
|
|
373
371
|
/* 排除()=>{}、(xxx="")=>{}、function(){}、function(xxx=""){} */
|
|
374
372
|
itemResult = Boolean(funcStr.match(/^\(.*?\)=>\{\}$|^function.*?\(.*?\)\{\}$/));
|
|
375
373
|
break;
|
|
374
|
+
}
|
|
376
375
|
}
|
|
377
376
|
}
|
|
378
377
|
result = result && itemResult;
|
|
@@ -393,18 +392,23 @@ System.register('Utils', [], (function (exports) {
|
|
|
393
392
|
return target instanceof Node;
|
|
394
393
|
}
|
|
395
394
|
isNotNull(...args) {
|
|
396
|
-
|
|
395
|
+
const UtilsContext = this;
|
|
397
396
|
return !UtilsContext.isNull.apply(this, args);
|
|
398
397
|
}
|
|
399
398
|
deepClone(obj) {
|
|
400
|
-
|
|
399
|
+
const UtilsContext = this;
|
|
401
400
|
if (obj === void 0)
|
|
402
401
|
return void 0;
|
|
403
402
|
if (obj === null)
|
|
404
403
|
return null;
|
|
405
|
-
|
|
404
|
+
const clone = obj instanceof Array ? [] : {};
|
|
406
405
|
for (const [key, value] of Object.entries(obj)) {
|
|
407
|
-
|
|
406
|
+
if (typeof value === "object") {
|
|
407
|
+
Reflect.set(clone, key, UtilsContext.deepClone(value));
|
|
408
|
+
}
|
|
409
|
+
else {
|
|
410
|
+
Reflect.set(clone, key, value);
|
|
411
|
+
}
|
|
408
412
|
}
|
|
409
413
|
return clone;
|
|
410
414
|
}
|
|
@@ -431,11 +435,11 @@ System.register('Utils', [], (function (exports) {
|
|
|
431
435
|
}
|
|
432
436
|
TryCatch()
|
|
433
437
|
.config({ log: false })
|
|
434
|
-
.error((
|
|
438
|
+
.error(() => {
|
|
435
439
|
TryCatch()
|
|
436
440
|
.error(() => {
|
|
437
441
|
try {
|
|
438
|
-
result = new Function(
|
|
442
|
+
result = new Function(`return ${data}`)();
|
|
439
443
|
}
|
|
440
444
|
catch (error2) {
|
|
441
445
|
if (typeof errorCallBack === "function") {
|
|
@@ -446,14 +450,14 @@ System.register('Utils', [], (function (exports) {
|
|
|
446
450
|
.run(() => {
|
|
447
451
|
if (data &&
|
|
448
452
|
/^[\],:{}\s]*$/.test(data
|
|
449
|
-
.replace(/\\(?:["
|
|
450
|
-
.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][
|
|
453
|
+
.replace(/\\(?:["\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")
|
|
454
|
+
.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+-]?\d+)?/g, "]")
|
|
451
455
|
.replace(/(?:^|:|,)(?:\s*\[)+/g, ""))) {
|
|
452
|
-
result = new Function(
|
|
456
|
+
result = new Function(`return ${data}`)();
|
|
453
457
|
}
|
|
454
458
|
else {
|
|
455
459
|
if (typeof errorCallBack === "function") {
|
|
456
|
-
errorCallBack(new Error("target is not
|
|
460
|
+
errorCallBack(new Error("target is not JSON object"));
|
|
457
461
|
}
|
|
458
462
|
}
|
|
459
463
|
});
|
|
@@ -465,7 +469,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
465
469
|
return result;
|
|
466
470
|
}
|
|
467
471
|
}
|
|
468
|
-
|
|
472
|
+
const commonUtil = new CommonUtil();
|
|
469
473
|
|
|
470
474
|
class UtilsGMCookie {
|
|
471
475
|
windowApi = {
|
|
@@ -494,14 +498,14 @@ System.register('Utils', [], (function (exports) {
|
|
|
494
498
|
if (typeof cookieName !== "string") {
|
|
495
499
|
throw new TypeError("Utils.GMCookie.get 参数cookieName 必须为字符串");
|
|
496
500
|
}
|
|
497
|
-
|
|
501
|
+
const cookies = this.getCookiesList();
|
|
498
502
|
let findValue = void 0;
|
|
499
503
|
for (const cookieItem of cookies) {
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
504
|
+
const item = cookieItem.trim();
|
|
505
|
+
const itemSplit = item.split("=");
|
|
506
|
+
const itemName = itemSplit[0];
|
|
503
507
|
itemSplit.splice(0, 1);
|
|
504
|
-
|
|
508
|
+
const itemValue = decodeURIComponent(itemSplit.join(""));
|
|
505
509
|
if (itemName === cookieName) {
|
|
506
510
|
findValue = {
|
|
507
511
|
domain: this.windowApi.window.location.hostname,
|
|
@@ -531,7 +535,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
531
535
|
if (option == null) {
|
|
532
536
|
throw new Error("Utils.GMCookie.list 参数不能为空");
|
|
533
537
|
}
|
|
534
|
-
|
|
538
|
+
const resultData = [];
|
|
535
539
|
try {
|
|
536
540
|
let defaultOption = {
|
|
537
541
|
url: this.windowApi.window.location.href,
|
|
@@ -540,16 +544,16 @@ System.register('Utils', [], (function (exports) {
|
|
|
540
544
|
path: "/",
|
|
541
545
|
};
|
|
542
546
|
defaultOption = commonUtil.assign(defaultOption, option);
|
|
543
|
-
|
|
547
|
+
const cookies = this.getCookiesList();
|
|
544
548
|
cookies.forEach((item) => {
|
|
545
549
|
item = item.trim();
|
|
546
|
-
|
|
547
|
-
|
|
550
|
+
const itemSplit = item.split("=");
|
|
551
|
+
const itemName = itemSplit[0];
|
|
548
552
|
itemSplit.splice(0, 1);
|
|
549
|
-
|
|
550
|
-
|
|
553
|
+
const itemValue = decodeURIComponent(itemSplit.join(""));
|
|
554
|
+
const nameRegexp = defaultOption.name instanceof RegExp
|
|
551
555
|
? defaultOption.name
|
|
552
|
-
: new RegExp(
|
|
556
|
+
: new RegExp(`^${defaultOption.name}`, "g");
|
|
553
557
|
if (itemName.match(nameRegexp)) {
|
|
554
558
|
resultData.push({
|
|
555
559
|
domain: this.windowApi.window.location.hostname,
|
|
@@ -583,7 +587,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
583
587
|
if (option == null) {
|
|
584
588
|
throw new Error("Utils.GMCookie.list 参数不能为空");
|
|
585
589
|
}
|
|
586
|
-
|
|
590
|
+
const resultData = [];
|
|
587
591
|
let defaultOption = {
|
|
588
592
|
url: this.windowApi.window.location.href,
|
|
589
593
|
domain: this.windowApi.window.location.hostname,
|
|
@@ -591,16 +595,16 @@ System.register('Utils', [], (function (exports) {
|
|
|
591
595
|
path: "/",
|
|
592
596
|
};
|
|
593
597
|
defaultOption = commonUtil.assign(defaultOption, option);
|
|
594
|
-
|
|
598
|
+
const cookies = this.getCookiesList();
|
|
595
599
|
cookies.forEach((item) => {
|
|
596
600
|
item = item.trim();
|
|
597
|
-
|
|
598
|
-
|
|
601
|
+
const itemSplit = item.split("=");
|
|
602
|
+
const itemName = itemSplit[0];
|
|
599
603
|
itemSplit.splice(0, 1);
|
|
600
|
-
|
|
601
|
-
|
|
604
|
+
const itemValue = decodeURIComponent(itemSplit.join(""));
|
|
605
|
+
const nameRegexp = defaultOption.name instanceof RegExp
|
|
602
606
|
? defaultOption.name
|
|
603
|
-
: new RegExp(
|
|
607
|
+
: new RegExp(`^${defaultOption.name}`, "g");
|
|
604
608
|
if (itemName.match(nameRegexp)) {
|
|
605
609
|
resultData.push({
|
|
606
610
|
domain: this.windowApi.window.location.hostname,
|
|
@@ -640,17 +644,12 @@ System.register('Utils', [], (function (exports) {
|
|
|
640
644
|
expirationDate: Math.floor(Date.now()) + 60 * 60 * 24 * 30,
|
|
641
645
|
};
|
|
642
646
|
defaultOption = commonUtil.assign(defaultOption, option);
|
|
643
|
-
|
|
647
|
+
const life = defaultOption.expirationDate
|
|
644
648
|
? defaultOption.expirationDate
|
|
645
649
|
: Math.floor(Date.now()) + 60 * 60 * 24 * 30;
|
|
646
|
-
let cookieStr = defaultOption.name
|
|
647
|
-
"=" +
|
|
648
|
-
decodeURIComponent(defaultOption.value) +
|
|
649
|
-
";expires=" +
|
|
650
|
-
new Date(life).toGMTString() +
|
|
651
|
-
"; path=/";
|
|
650
|
+
let cookieStr = `${defaultOption.name}=${decodeURIComponent(defaultOption.value)};expires=${new Date(life).toGMTString()}; path=/`;
|
|
652
651
|
if (commonUtil.isNull(defaultOption.domain)) {
|
|
653
|
-
cookieStr +=
|
|
652
|
+
cookieStr += `; domain=${defaultOption.domain}`;
|
|
654
653
|
}
|
|
655
654
|
this.windowApi.document.cookie = cookieStr;
|
|
656
655
|
}
|
|
@@ -702,14 +701,14 @@ System.register('Utils', [], (function (exports) {
|
|
|
702
701
|
if (cookieStr.trim() === "") {
|
|
703
702
|
return [];
|
|
704
703
|
}
|
|
705
|
-
|
|
706
|
-
|
|
704
|
+
const cookies = cookieStr.split(";");
|
|
705
|
+
const result = [];
|
|
707
706
|
for (const cookieItem of cookies) {
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
707
|
+
const item = cookieItem.trim();
|
|
708
|
+
const itemSplit = item.split("=");
|
|
709
|
+
const itemName = itemSplit[0];
|
|
711
710
|
itemSplit.splice(0, 1);
|
|
712
|
-
|
|
711
|
+
const itemValue = decodeURIComponent(itemSplit.join(""));
|
|
713
712
|
result.push({
|
|
714
713
|
key: itemName,
|
|
715
714
|
value: itemValue,
|
|
@@ -719,6 +718,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
719
718
|
}
|
|
720
719
|
}
|
|
721
720
|
|
|
721
|
+
/* eslint-disable */
|
|
722
722
|
// ==UserScript==
|
|
723
723
|
// @name ajaxHooker
|
|
724
724
|
// @author cxxjackie
|
|
@@ -1769,15 +1769,15 @@ System.register('Utils', [], (function (exports) {
|
|
|
1769
1769
|
*/
|
|
1770
1770
|
init() {
|
|
1771
1771
|
for (let index = 0; index < this.$data.data.length; index++) {
|
|
1772
|
-
|
|
1772
|
+
const menuOption = this.$data.data[index]["data"];
|
|
1773
1773
|
menuOption.enable = Boolean(this.getLocalMenuData(menuOption.key, menuOption.enable));
|
|
1774
1774
|
if (typeof menuOption.showText !== "function") {
|
|
1775
1775
|
menuOption.showText = (menuText, menuEnable) => {
|
|
1776
1776
|
if (menuEnable) {
|
|
1777
|
-
return this.$emoji.success
|
|
1777
|
+
return `${this.$emoji.success} ${menuText}`;
|
|
1778
1778
|
}
|
|
1779
1779
|
else {
|
|
1780
|
-
return this.$emoji.error
|
|
1780
|
+
return `${this.$emoji.error} ${menuText}`;
|
|
1781
1781
|
}
|
|
1782
1782
|
};
|
|
1783
1783
|
}
|
|
@@ -1788,7 +1788,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
1788
1788
|
* @param menuOptions 如果存在,使用它
|
|
1789
1789
|
*/
|
|
1790
1790
|
register(menuOptions) {
|
|
1791
|
-
|
|
1791
|
+
const that = this;
|
|
1792
1792
|
if (menuOptions == null) {
|
|
1793
1793
|
throw new TypeError("register菜单数据不能为空");
|
|
1794
1794
|
}
|
|
@@ -1796,9 +1796,9 @@ System.register('Utils', [], (function (exports) {
|
|
|
1796
1796
|
menuOptions = [menuOptions];
|
|
1797
1797
|
}
|
|
1798
1798
|
for (let index = 0; index < menuOptions.length; index++) {
|
|
1799
|
-
|
|
1799
|
+
const cloneMenuOptionData = commonUtil.deepClone(menuOptions[index].data);
|
|
1800
1800
|
const { showText, clickCallBack } = this.handleMenuData(cloneMenuOptionData);
|
|
1801
|
-
|
|
1801
|
+
const menuId = that.context.GM_Api.registerMenuCommand(showText, clickCallBack);
|
|
1802
1802
|
menuOptions[index].id = menuId;
|
|
1803
1803
|
cloneMenuOptionData.deleteMenu = function () {
|
|
1804
1804
|
that.context.GM_Api.unregisterMenuCommand(menuId);
|
|
@@ -1812,7 +1812,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
1812
1812
|
* @param {string} key 键
|
|
1813
1813
|
*/
|
|
1814
1814
|
getLocalMenuData(key, defaultValue) {
|
|
1815
|
-
|
|
1815
|
+
const localData = this.context.GM_Api.getValue(this.$data.key, {});
|
|
1816
1816
|
if (key in localData) {
|
|
1817
1817
|
return localData[key];
|
|
1818
1818
|
}
|
|
@@ -1826,7 +1826,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
1826
1826
|
* @param value 值
|
|
1827
1827
|
*/
|
|
1828
1828
|
setLocalMenuData(key, value) {
|
|
1829
|
-
|
|
1829
|
+
const localData = this.context.GM_Api.getValue(this.$data.key, {});
|
|
1830
1830
|
localData[key] = value;
|
|
1831
1831
|
this.context.GM_Api.setValue(this.$data.key, localData);
|
|
1832
1832
|
},
|
|
@@ -1839,10 +1839,10 @@ System.register('Utils', [], (function (exports) {
|
|
|
1839
1839
|
if (typeof menuOption.showText !== "function") {
|
|
1840
1840
|
menuOption.showText = (menuText, menuEnable) => {
|
|
1841
1841
|
if (menuEnable) {
|
|
1842
|
-
return this.$emoji.success
|
|
1842
|
+
return `${this.$emoji.success} ${menuText}`;
|
|
1843
1843
|
}
|
|
1844
1844
|
else {
|
|
1845
|
-
return this.$emoji.error
|
|
1845
|
+
return `${this.$emoji.error} ${menuText}`;
|
|
1846
1846
|
}
|
|
1847
1847
|
};
|
|
1848
1848
|
}
|
|
@@ -1853,12 +1853,12 @@ System.register('Utils', [], (function (exports) {
|
|
|
1853
1853
|
* @param menuOption
|
|
1854
1854
|
*/
|
|
1855
1855
|
handleMenuData(menuOption) {
|
|
1856
|
-
|
|
1857
|
-
|
|
1856
|
+
const that = this;
|
|
1857
|
+
const menuLocalDataItemKey = menuOption.key;
|
|
1858
1858
|
/* 菜单默认开启的状态 */
|
|
1859
|
-
|
|
1859
|
+
const defaultEnable = Boolean(this.getLocalMenuData(menuLocalDataItemKey, menuOption.enable));
|
|
1860
1860
|
/** 油猴菜单上显示的文本 */
|
|
1861
|
-
|
|
1861
|
+
const showText = menuOption.showText(menuOption.text, defaultEnable);
|
|
1862
1862
|
// const GMMenuOptions = {
|
|
1863
1863
|
// /**
|
|
1864
1864
|
// * 菜单的id
|
|
@@ -1888,7 +1888,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
1888
1888
|
* @param event
|
|
1889
1889
|
*/
|
|
1890
1890
|
function clickCallBack(event) {
|
|
1891
|
-
|
|
1891
|
+
const localEnable = Boolean(that.getLocalMenuData(menuLocalDataItemKey, defaultEnable));
|
|
1892
1892
|
if (menuOption.isStoreValue) {
|
|
1893
1893
|
that.setLocalMenuData(menuLocalDataItemKey, !localEnable);
|
|
1894
1894
|
}
|
|
@@ -2001,7 +2001,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
2001
2001
|
menuOptionList = [...menuOptionList, options];
|
|
2002
2002
|
}
|
|
2003
2003
|
menuOptionList.forEach((menuOption) => {
|
|
2004
|
-
|
|
2004
|
+
const oldMenuOption = this.MenuHandle.getMenuOption(menuOption.key);
|
|
2005
2005
|
if (oldMenuOption) {
|
|
2006
2006
|
// 覆盖
|
|
2007
2007
|
Object.assign(oldMenuOption, menuOption);
|
|
@@ -2169,42 +2169,42 @@ System.register('Utils', [], (function (exports) {
|
|
|
2169
2169
|
* 在Function原型上添加自定义方法.hook和.unhook
|
|
2170
2170
|
*/
|
|
2171
2171
|
initEnv() {
|
|
2172
|
-
Function.prototype.hook = function (
|
|
2172
|
+
Function.prototype.hook = function (_, hookFunc, context) {
|
|
2173
2173
|
let _context = null; //函数上下文
|
|
2174
2174
|
let _funcName = null; //函数名
|
|
2175
2175
|
_context = context || window;
|
|
2176
2176
|
_funcName = getFuncName(this);
|
|
2177
|
-
_context[
|
|
2177
|
+
_context[`realFunc_${_funcName}`] = this;
|
|
2178
2178
|
if (_context[_funcName].prototype && _context[_funcName].prototype.isHooked) {
|
|
2179
2179
|
console.log("Already has been hooked,unhook first");
|
|
2180
2180
|
return false;
|
|
2181
2181
|
}
|
|
2182
2182
|
function getFuncName(fn) {
|
|
2183
2183
|
// 获取函数名
|
|
2184
|
-
|
|
2185
|
-
|
|
2186
|
-
|
|
2184
|
+
const strFunc = fn.toString();
|
|
2185
|
+
const _regex = /function\s+(\w+)\s*\(/;
|
|
2186
|
+
const patten = strFunc.match(_regex);
|
|
2187
2187
|
if (patten) {
|
|
2188
2188
|
return patten[1];
|
|
2189
2189
|
}
|
|
2190
2190
|
return "";
|
|
2191
2191
|
}
|
|
2192
2192
|
try {
|
|
2193
|
-
new Function("_context", "_funcName", "hookFunc", `_context[_funcName] = function ${_funcName}() {
|
|
2194
|
-
let args = Array.prototype.slice.call(arguments, 0);
|
|
2195
|
-
let obj = this;
|
|
2196
|
-
hookFunc.apply(obj, args);
|
|
2197
|
-
return _context['realFunc_${_funcName}'].apply(obj, args);
|
|
2193
|
+
new Function("_context", "_funcName", "hookFunc", `_context[_funcName] = function ${_funcName}() {
|
|
2194
|
+
let args = Array.prototype.slice.call(arguments, 0);
|
|
2195
|
+
let obj = this;
|
|
2196
|
+
hookFunc.apply(obj, args);
|
|
2197
|
+
return _context['realFunc_${_funcName}'].apply(obj, args);
|
|
2198
2198
|
};`)(_context, _funcName, hookFunc);
|
|
2199
2199
|
_context[_funcName].prototype.isHooked = true;
|
|
2200
2200
|
return true;
|
|
2201
2201
|
}
|
|
2202
2202
|
catch (e) {
|
|
2203
|
-
console.log("Hook failed,check the params.");
|
|
2203
|
+
console.log("Hook failed,check the params.", e);
|
|
2204
2204
|
return false;
|
|
2205
2205
|
}
|
|
2206
2206
|
};
|
|
2207
|
-
Function.prototype.unhook = function (
|
|
2207
|
+
Function.prototype.unhook = function (_, funcName, context) {
|
|
2208
2208
|
let _context = null;
|
|
2209
2209
|
let _funcName = null;
|
|
2210
2210
|
_context = context || window;
|
|
@@ -2213,8 +2213,8 @@ System.register('Utils', [], (function (exports) {
|
|
|
2213
2213
|
console.log("No function is hooked on");
|
|
2214
2214
|
return false;
|
|
2215
2215
|
}
|
|
2216
|
-
_context[_funcName] = _context[
|
|
2217
|
-
Reflect.deleteProperty(_context,
|
|
2216
|
+
_context[_funcName] = _context[`realFunc${_funcName}`];
|
|
2217
|
+
Reflect.deleteProperty(_context, `realFunc_${_funcName}`);
|
|
2218
2218
|
return true;
|
|
2219
2219
|
};
|
|
2220
2220
|
}
|
|
@@ -2222,10 +2222,10 @@ System.register('Utils', [], (function (exports) {
|
|
|
2222
2222
|
* 删除在Function原型上添加的自定义方法.hook和.unhook
|
|
2223
2223
|
*/
|
|
2224
2224
|
cleanEnv() {
|
|
2225
|
-
if (
|
|
2225
|
+
if (Object.prototype.hasOwnProperty.call(Function.prototype, "hook")) {
|
|
2226
2226
|
Reflect.deleteProperty(Function.prototype, "hook");
|
|
2227
2227
|
}
|
|
2228
|
-
if (
|
|
2228
|
+
if (Object.prototype.hasOwnProperty.call(Function.prototype, "unhook")) {
|
|
2229
2229
|
Reflect.deleteProperty(Function.prototype, "unhook");
|
|
2230
2230
|
}
|
|
2231
2231
|
return true;
|
|
@@ -2241,7 +2241,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
2241
2241
|
}
|
|
2242
2242
|
else {
|
|
2243
2243
|
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (charStr) {
|
|
2244
|
-
|
|
2244
|
+
const randomValue = (Math.random() * 16) | 0, randomCharValue = charStr === "x" ? randomValue : (randomValue & 0x3) | 0x8;
|
|
2245
2245
|
return randomCharValue.toString(16);
|
|
2246
2246
|
});
|
|
2247
2247
|
}
|
|
@@ -2283,9 +2283,9 @@ System.register('Utils', [], (function (exports) {
|
|
|
2283
2283
|
}
|
|
2284
2284
|
}
|
|
2285
2285
|
for (let index = 0; index < this.$config.configList.length; index++) {
|
|
2286
|
-
|
|
2286
|
+
const item = this.$config.configList[index];
|
|
2287
2287
|
if (typeof item.fn === "function") {
|
|
2288
|
-
|
|
2288
|
+
const result = await item.fn(details);
|
|
2289
2289
|
if (result == null) {
|
|
2290
2290
|
return;
|
|
2291
2291
|
}
|
|
@@ -2298,7 +2298,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
2298
2298
|
*/
|
|
2299
2299
|
add(fn) {
|
|
2300
2300
|
if (typeof fn === "function") {
|
|
2301
|
-
|
|
2301
|
+
const uuid = GenerateUUID();
|
|
2302
2302
|
this.$config.configList.push({
|
|
2303
2303
|
id: uuid,
|
|
2304
2304
|
fn: fn,
|
|
@@ -2315,7 +2315,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
2315
2315
|
*/
|
|
2316
2316
|
delete(id) {
|
|
2317
2317
|
if (typeof id === "string") {
|
|
2318
|
-
|
|
2318
|
+
const findIndex = this.$config.configList.findIndex((item) => item.id === id);
|
|
2319
2319
|
if (findIndex !== -1) {
|
|
2320
2320
|
this.$config.configList.splice(findIndex, 1);
|
|
2321
2321
|
return true;
|
|
@@ -2361,9 +2361,9 @@ System.register('Utils', [], (function (exports) {
|
|
|
2361
2361
|
}
|
|
2362
2362
|
}
|
|
2363
2363
|
for (let index = 0; index < this.$config.configList.length; index++) {
|
|
2364
|
-
|
|
2364
|
+
const item = this.$config.configList[index];
|
|
2365
2365
|
if (typeof item.successFn === "function") {
|
|
2366
|
-
|
|
2366
|
+
const result = await item.successFn(response, details);
|
|
2367
2367
|
if (result == null) {
|
|
2368
2368
|
return;
|
|
2369
2369
|
}
|
|
@@ -2396,9 +2396,9 @@ System.register('Utils', [], (function (exports) {
|
|
|
2396
2396
|
}
|
|
2397
2397
|
}
|
|
2398
2398
|
for (let index = 0; index < this.$config.configList.length; index++) {
|
|
2399
|
-
|
|
2399
|
+
const item = this.$config.configList[index];
|
|
2400
2400
|
if (typeof item.errorFn === "function") {
|
|
2401
|
-
|
|
2401
|
+
const result = await item.errorFn(data);
|
|
2402
2402
|
if (result == null) {
|
|
2403
2403
|
return;
|
|
2404
2404
|
}
|
|
@@ -2410,7 +2410,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
2410
2410
|
* 添加请求前的回调处理配置
|
|
2411
2411
|
*/
|
|
2412
2412
|
add(successFn, errorFn) {
|
|
2413
|
-
|
|
2413
|
+
const id = GenerateUUID();
|
|
2414
2414
|
this.$config.configList.push({
|
|
2415
2415
|
id: id,
|
|
2416
2416
|
successFn: successFn,
|
|
@@ -2424,7 +2424,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
2424
2424
|
*/
|
|
2425
2425
|
delete(id) {
|
|
2426
2426
|
if (typeof id === "string") {
|
|
2427
|
-
|
|
2427
|
+
const findIndex = this.$config.configList.findIndex((item) => item.id === id);
|
|
2428
2428
|
if (findIndex !== -1) {
|
|
2429
2429
|
this.$config.configList.splice(findIndex, 1);
|
|
2430
2430
|
return true;
|
|
@@ -2445,23 +2445,23 @@ System.register('Utils', [], (function (exports) {
|
|
|
2445
2445
|
* 对请求的参数进行合并处理
|
|
2446
2446
|
*/
|
|
2447
2447
|
handleBeforeRequestOptionArgs(...args) {
|
|
2448
|
-
|
|
2448
|
+
const option = {
|
|
2449
2449
|
url: void 0,
|
|
2450
2450
|
};
|
|
2451
2451
|
if (typeof args[0] === "string") {
|
|
2452
2452
|
/* 传入的是url,转为配置 */
|
|
2453
|
-
|
|
2453
|
+
const url = args[0];
|
|
2454
2454
|
option.url = url;
|
|
2455
2455
|
if (typeof args[1] === "object") {
|
|
2456
2456
|
/* 处理第二个参数details */
|
|
2457
|
-
|
|
2457
|
+
const optionArg = args[1];
|
|
2458
2458
|
commonUtil.assign(option, optionArg, true);
|
|
2459
2459
|
option.url = url;
|
|
2460
2460
|
}
|
|
2461
2461
|
}
|
|
2462
2462
|
else {
|
|
2463
2463
|
/* 传入的是配置 */
|
|
2464
|
-
|
|
2464
|
+
const optionArg = args[0];
|
|
2465
2465
|
commonUtil.assign(option, optionArg, true);
|
|
2466
2466
|
}
|
|
2467
2467
|
return option;
|
|
@@ -2474,7 +2474,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
2474
2474
|
* @param reject promise抛出错误回调
|
|
2475
2475
|
*/
|
|
2476
2476
|
getRequestOption(method, userRequestOption, resolve, reject) {
|
|
2477
|
-
|
|
2477
|
+
const that = this;
|
|
2478
2478
|
let url = userRequestOption.url || this.context.#defaultRequestOption.url;
|
|
2479
2479
|
if (typeof url === "string") {
|
|
2480
2480
|
// 去除左右空格
|
|
@@ -2487,7 +2487,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
2487
2487
|
}
|
|
2488
2488
|
}
|
|
2489
2489
|
}
|
|
2490
|
-
|
|
2490
|
+
const requestOption = {
|
|
2491
2491
|
url: url,
|
|
2492
2492
|
method: (method || "GET").toString().toUpperCase().trim(),
|
|
2493
2493
|
timeout: userRequestOption.timeout || this.context.#defaultRequestOption.timeout,
|
|
@@ -2509,9 +2509,12 @@ System.register('Utils', [], (function (exports) {
|
|
|
2509
2509
|
/* 对象使用深拷贝 */
|
|
2510
2510
|
fetchInit: commonUtil.deepClone(this.context.#defaultRequestOption.fetchInit),
|
|
2511
2511
|
allowInterceptConfig: {
|
|
2512
|
-
beforeRequest: this.context.#defaultRequestOption.allowInterceptConfig
|
|
2513
|
-
|
|
2514
|
-
|
|
2512
|
+
beforeRequest: this.context.#defaultRequestOption.allowInterceptConfig
|
|
2513
|
+
.beforeRequest,
|
|
2514
|
+
afterResponseSuccess: this.context.#defaultRequestOption.allowInterceptConfig
|
|
2515
|
+
.afterResponseSuccess,
|
|
2516
|
+
afterResponseError: this.context.#defaultRequestOption.allowInterceptConfig
|
|
2517
|
+
.afterResponseError,
|
|
2515
2518
|
},
|
|
2516
2519
|
user: userRequestOption.user || this.context.#defaultRequestOption.user,
|
|
2517
2520
|
password: userRequestOption.password || this.context.#defaultRequestOption.password,
|
|
@@ -2539,15 +2542,17 @@ System.register('Utils', [], (function (exports) {
|
|
|
2539
2542
|
};
|
|
2540
2543
|
// 补全allowInterceptConfig参数
|
|
2541
2544
|
if (typeof userRequestOption.allowInterceptConfig === "boolean") {
|
|
2542
|
-
Object.keys(requestOption.allowInterceptConfig)
|
|
2545
|
+
const allowInterceptConfigKeys = Object.keys(requestOption.allowInterceptConfig);
|
|
2546
|
+
allowInterceptConfigKeys.forEach((keyName) => {
|
|
2543
2547
|
Reflect.set(requestOption.allowInterceptConfig, keyName, userRequestOption.allowInterceptConfig);
|
|
2544
2548
|
});
|
|
2545
2549
|
}
|
|
2546
2550
|
else {
|
|
2547
2551
|
if (typeof userRequestOption.allowInterceptConfig === "object" &&
|
|
2548
2552
|
userRequestOption.allowInterceptConfig != null) {
|
|
2549
|
-
Object.keys(
|
|
2550
|
-
|
|
2553
|
+
const allowInterceptConfigKeys = Object.keys(requestOption.allowInterceptConfig);
|
|
2554
|
+
allowInterceptConfigKeys.forEach((keyName) => {
|
|
2555
|
+
const value = Reflect.get(userRequestOption.allowInterceptConfig, keyName);
|
|
2551
2556
|
if (typeof value === "boolean" &&
|
|
2552
2557
|
Reflect.has(requestOption.allowInterceptConfig, keyName)) {
|
|
2553
2558
|
Reflect.set(requestOption.allowInterceptConfig, keyName, value);
|
|
@@ -2561,7 +2566,8 @@ System.register('Utils', [], (function (exports) {
|
|
|
2561
2566
|
}
|
|
2562
2567
|
if (typeof requestOption.headers === "object") {
|
|
2563
2568
|
if (typeof userRequestOption.headers === "object") {
|
|
2564
|
-
Object.keys(
|
|
2569
|
+
const headerKeys = Object.keys(requestOption.headers);
|
|
2570
|
+
headerKeys.forEach((keyName) => {
|
|
2565
2571
|
if (keyName in requestOption.headers && userRequestOption.headers?.[keyName] == null) {
|
|
2566
2572
|
/* 在默认的header中存在,且设置它新的值为空,那么就是默认的值 */
|
|
2567
2573
|
Reflect.deleteProperty(requestOption.headers, keyName);
|
|
@@ -2579,8 +2585,9 @@ System.register('Utils', [], (function (exports) {
|
|
|
2579
2585
|
if (typeof requestOption.fetchInit === "object") {
|
|
2580
2586
|
/* 使用assign替换且添加 */
|
|
2581
2587
|
if (typeof userRequestOption.fetchInit === "object") {
|
|
2582
|
-
Object.keys(
|
|
2583
|
-
|
|
2588
|
+
const fetchInitKeys = Object.keys(requestOption.fetchInit);
|
|
2589
|
+
fetchInitKeys.forEach((keyName) => {
|
|
2590
|
+
if (keyName in requestOption.fetchInit && Reflect.get(userRequestOption.fetchInit ?? {}, keyName) == null) {
|
|
2584
2591
|
/* 在默认的fetchInit中存在,且设置它新的值为空,那么就是默认的值 */
|
|
2585
2592
|
Reflect.deleteProperty(requestOption.fetchInit, keyName);
|
|
2586
2593
|
}
|
|
@@ -2605,7 +2612,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
2605
2612
|
try {
|
|
2606
2613
|
new URL(requestOption.url);
|
|
2607
2614
|
}
|
|
2608
|
-
catch
|
|
2615
|
+
catch {
|
|
2609
2616
|
if (requestOption.url.startsWith("//")) {
|
|
2610
2617
|
// 补充https:
|
|
2611
2618
|
requestOption.url = globalThis.location.protocol + requestOption.url;
|
|
@@ -2616,7 +2623,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
2616
2623
|
}
|
|
2617
2624
|
else {
|
|
2618
2625
|
// 补充origin+/
|
|
2619
|
-
requestOption.url = globalThis.location.origin
|
|
2626
|
+
requestOption.url = `${globalThis.location.origin}/${requestOption.url}`;
|
|
2620
2627
|
}
|
|
2621
2628
|
}
|
|
2622
2629
|
if (requestOption.fetchInit && !requestOption.fetch) {
|
|
@@ -2626,12 +2633,12 @@ System.register('Utils', [], (function (exports) {
|
|
|
2626
2633
|
// 转换data类型
|
|
2627
2634
|
try {
|
|
2628
2635
|
/** 是否对数据进行处理 */
|
|
2629
|
-
|
|
2636
|
+
const processData = userRequestOption.processData ?? true;
|
|
2630
2637
|
if (requestOption.data != null && processData) {
|
|
2631
|
-
|
|
2638
|
+
const method = requestOption.method;
|
|
2632
2639
|
if (method === "GET" || method === "HEAD") {
|
|
2633
2640
|
// GET类型,data如果有,那么需要转为searchParams
|
|
2634
|
-
|
|
2641
|
+
const urlObj = new URL(requestOption.url);
|
|
2635
2642
|
let urlSearch = "";
|
|
2636
2643
|
let isHandler = false;
|
|
2637
2644
|
if (typeof requestOption.data === "string") {
|
|
@@ -2641,7 +2648,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
2641
2648
|
else if (typeof requestOption.data === "object") {
|
|
2642
2649
|
isHandler = true;
|
|
2643
2650
|
// URLSearchParams参数可以转普通的string:string,包括FormData
|
|
2644
|
-
|
|
2651
|
+
const searchParams = new URLSearchParams(requestOption.data);
|
|
2645
2652
|
urlSearch = searchParams.toString();
|
|
2646
2653
|
}
|
|
2647
2654
|
if (isHandler) {
|
|
@@ -2662,7 +2669,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
2662
2669
|
}
|
|
2663
2670
|
else {
|
|
2664
2671
|
// xxx=xxx&xxx=
|
|
2665
|
-
urlObj.search = urlObj.search
|
|
2672
|
+
urlObj.search = `${urlObj.search}&${urlSearch}`;
|
|
2666
2673
|
}
|
|
2667
2674
|
}
|
|
2668
2675
|
}
|
|
@@ -2670,14 +2677,14 @@ System.register('Utils', [], (function (exports) {
|
|
|
2670
2677
|
}
|
|
2671
2678
|
else if (method === "POST" && requestOption.headers != null) {
|
|
2672
2679
|
// POST类型,data如果是FormData,那么需要转为string
|
|
2673
|
-
|
|
2674
|
-
|
|
2680
|
+
const headersKeyList = Object.keys(requestOption.headers);
|
|
2681
|
+
const ContentTypeIndex = headersKeyList.findIndex((headerKey) => {
|
|
2675
2682
|
return (headerKey.trim().toLowerCase() === "content-type" &&
|
|
2676
2683
|
typeof requestOption.headers[headerKey] === "string");
|
|
2677
2684
|
});
|
|
2678
2685
|
if (ContentTypeIndex !== -1) {
|
|
2679
|
-
|
|
2680
|
-
|
|
2686
|
+
const ContentTypeKey = headersKeyList[ContentTypeIndex];
|
|
2687
|
+
const ContentType = requestOption.headers[ContentTypeKey];
|
|
2681
2688
|
// 设置了Content-Type
|
|
2682
2689
|
if (ContentType.includes("application/json")) {
|
|
2683
2690
|
// application/json
|
|
@@ -2718,10 +2725,10 @@ System.register('Utils', [], (function (exports) {
|
|
|
2718
2725
|
* @param option 请求配置
|
|
2719
2726
|
*/
|
|
2720
2727
|
removeRequestNullOption(option) {
|
|
2721
|
-
Object.keys(option)
|
|
2722
|
-
|
|
2723
|
-
|
|
2724
|
-
|
|
2728
|
+
const optionKeys = Object.keys(option);
|
|
2729
|
+
optionKeys.forEach((keyName) => {
|
|
2730
|
+
const optionValue = option[keyName];
|
|
2731
|
+
if (optionValue == null || (optionValue instanceof Function && commonUtil.isNull(optionValue))) {
|
|
2725
2732
|
Reflect.deleteProperty(option, keyName);
|
|
2726
2733
|
return;
|
|
2727
2734
|
}
|
|
@@ -2739,14 +2746,14 @@ System.register('Utils', [], (function (exports) {
|
|
|
2739
2746
|
/**
|
|
2740
2747
|
* fetch的请求配置
|
|
2741
2748
|
**/
|
|
2742
|
-
|
|
2749
|
+
const fetchRequestOption = {};
|
|
2743
2750
|
if ((option.method === "GET" || option.method === "HEAD") && option.data != null) {
|
|
2744
2751
|
/* GET 或 HEAD 方法的请求不能包含 body 信息 */
|
|
2745
2752
|
Reflect.deleteProperty(option, "data");
|
|
2746
2753
|
}
|
|
2747
2754
|
/* 中止信号控制器 */
|
|
2748
|
-
|
|
2749
|
-
|
|
2755
|
+
const abortController = new AbortController();
|
|
2756
|
+
const signal = abortController.signal;
|
|
2750
2757
|
signal.onabort = () => {
|
|
2751
2758
|
option.onabort({
|
|
2752
2759
|
isFetch: true,
|
|
@@ -2791,10 +2798,10 @@ System.register('Utils', [], (function (exports) {
|
|
|
2791
2798
|
* onabort请求被取消-触发
|
|
2792
2799
|
* @param details 配置
|
|
2793
2800
|
* @param resolve promise回调
|
|
2794
|
-
* @param
|
|
2801
|
+
* @param _reject promise抛出错误回调
|
|
2795
2802
|
* @param argsResult 返回的参数列表
|
|
2796
2803
|
*/
|
|
2797
|
-
async onAbort(details, resolve,
|
|
2804
|
+
async onAbort(details, resolve, _reject, argsResult) {
|
|
2798
2805
|
// console.log(argsResult);
|
|
2799
2806
|
if (typeof details?.onabort === "function") {
|
|
2800
2807
|
details.onabort.apply(this, argsResult);
|
|
@@ -2831,7 +2838,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
2831
2838
|
* @param reject 抛出错误
|
|
2832
2839
|
* @param argsResult 返回的参数列表
|
|
2833
2840
|
*/
|
|
2834
|
-
async onTimeout(details, resolve,
|
|
2841
|
+
async onTimeout(details, resolve, _reject, argsResult) {
|
|
2835
2842
|
// console.log(argsResult);
|
|
2836
2843
|
if (typeof details?.ontimeout === "function") {
|
|
2837
2844
|
// 执行配置中的ontime回调
|
|
@@ -2869,10 +2876,10 @@ System.register('Utils', [], (function (exports) {
|
|
|
2869
2876
|
* onerror请求异常-触发
|
|
2870
2877
|
* @param details 配置
|
|
2871
2878
|
* @param resolve 回调
|
|
2872
|
-
* @param
|
|
2879
|
+
* @param _reject 抛出错误
|
|
2873
2880
|
* @param argsResult 返回的参数列表
|
|
2874
2881
|
*/
|
|
2875
|
-
async onError(details, resolve,
|
|
2882
|
+
async onError(details, resolve, _reject, argsResult) {
|
|
2876
2883
|
// console.log(argsResult);
|
|
2877
2884
|
if (typeof details?.onerror === "function") {
|
|
2878
2885
|
details.onerror.apply(this, argsResult);
|
|
@@ -2906,16 +2913,15 @@ System.register('Utils', [], (function (exports) {
|
|
|
2906
2913
|
* onload加载完毕-触发
|
|
2907
2914
|
* @param details 请求的配置
|
|
2908
2915
|
* @param resolve 回调
|
|
2909
|
-
* @param
|
|
2916
|
+
* @param _reject 抛出错误
|
|
2910
2917
|
* @param argsResult 返回的参数列表
|
|
2911
2918
|
*/
|
|
2912
|
-
async onLoad(details, resolve,
|
|
2919
|
+
async onLoad(details, resolve, _reject, argsResult) {
|
|
2913
2920
|
// console.log(argsResult);
|
|
2914
2921
|
/* X浏览器会因为设置了responseType导致不返回responseText */
|
|
2915
|
-
|
|
2922
|
+
const originResponse = argsResult[0];
|
|
2916
2923
|
/* responseText为空,response不为空的情况 */
|
|
2917
|
-
if (commonUtil.isNull(originResponse["responseText"]) &&
|
|
2918
|
-
commonUtil.isNotNull(originResponse["response"])) {
|
|
2924
|
+
if (commonUtil.isNull(originResponse["responseText"]) && commonUtil.isNotNull(originResponse["response"])) {
|
|
2919
2925
|
if (typeof originResponse["response"] === "object") {
|
|
2920
2926
|
TryCatch().run(() => {
|
|
2921
2927
|
originResponse["responseText"] = JSON.stringify(originResponse["response"]);
|
|
@@ -2930,51 +2936,51 @@ System.register('Utils', [], (function (exports) {
|
|
|
2930
2936
|
typeof originResponse["responseText"] === "string" &&
|
|
2931
2937
|
originResponse["responseText"].trim() !== "") {
|
|
2932
2938
|
/** 原始的请求text */
|
|
2933
|
-
|
|
2939
|
+
const httpxResponseText = originResponse.responseText;
|
|
2934
2940
|
// 自定义个新的response
|
|
2935
2941
|
let httpxResponse = httpxResponseText;
|
|
2936
2942
|
if (details.responseType === "json") {
|
|
2937
2943
|
httpxResponse = commonUtil.toJSON(httpxResponseText);
|
|
2938
2944
|
}
|
|
2939
2945
|
else if (details.responseType === "document") {
|
|
2940
|
-
|
|
2946
|
+
const parser = new DOMParser();
|
|
2941
2947
|
httpxResponse = parser.parseFromString(httpxResponseText, "text/html");
|
|
2942
2948
|
}
|
|
2943
2949
|
else if (details.responseType === "arraybuffer") {
|
|
2944
|
-
|
|
2945
|
-
|
|
2950
|
+
const encoder = new TextEncoder();
|
|
2951
|
+
const arrayBuffer = encoder.encode(httpxResponseText);
|
|
2946
2952
|
httpxResponse = arrayBuffer;
|
|
2947
2953
|
}
|
|
2948
2954
|
else if (details.responseType === "blob") {
|
|
2949
|
-
|
|
2950
|
-
|
|
2955
|
+
const encoder = new TextEncoder();
|
|
2956
|
+
const arrayBuffer = encoder.encode(httpxResponseText);
|
|
2951
2957
|
httpxResponse = new Blob([arrayBuffer]);
|
|
2952
2958
|
}
|
|
2953
2959
|
// 尝试覆盖原response
|
|
2954
2960
|
try {
|
|
2955
|
-
|
|
2961
|
+
const setStatus = Reflect.set(originResponse, "response", httpxResponse);
|
|
2956
2962
|
if (!setStatus) {
|
|
2957
2963
|
console.warn("[Httpx-HttpxCallBack.oonLoad] 覆盖原始 response 失败,尝试添加新的httpxResponse");
|
|
2958
2964
|
try {
|
|
2959
2965
|
Reflect.set(originResponse, "httpxResponse", httpxResponse);
|
|
2960
2966
|
}
|
|
2961
|
-
catch
|
|
2967
|
+
catch {
|
|
2962
2968
|
console.warn("[Httpx-HttpxCallBack.oonLoad] httpxResponse 无法被覆盖");
|
|
2963
2969
|
}
|
|
2964
2970
|
}
|
|
2965
2971
|
}
|
|
2966
|
-
catch
|
|
2972
|
+
catch {
|
|
2967
2973
|
console.warn("[Httpx-HttpxCallBack.oonLoad] 原始 response 无法被覆盖,尝试添加新的httpxResponse");
|
|
2968
2974
|
try {
|
|
2969
2975
|
Reflect.set(originResponse, "httpxResponse", httpxResponse);
|
|
2970
2976
|
}
|
|
2971
|
-
catch
|
|
2977
|
+
catch {
|
|
2972
2978
|
console.warn("[Httpx-HttpxCallBack.oonLoad] httpxResponse 无法被覆盖");
|
|
2973
2979
|
}
|
|
2974
2980
|
}
|
|
2975
2981
|
}
|
|
2976
2982
|
/* Stay扩展中没有finalUrl,对应的是responseURL */
|
|
2977
|
-
|
|
2983
|
+
const originResponseURL = Reflect.get(originResponse, "responseURL");
|
|
2978
2984
|
if (originResponse["finalUrl"] == null && originResponseURL != null) {
|
|
2979
2985
|
Reflect.set(originResponse, "finalUrl", originResponseURL);
|
|
2980
2986
|
}
|
|
@@ -2994,7 +3000,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
2994
3000
|
});
|
|
2995
3001
|
}
|
|
2996
3002
|
else {
|
|
2997
|
-
this.context.HttpxResponseCallBack.onError(details, resolve,
|
|
3003
|
+
this.context.HttpxResponseCallBack.onError(details, resolve, _reject, argsResult);
|
|
2998
3004
|
}
|
|
2999
3005
|
},
|
|
3000
3006
|
/**
|
|
@@ -3051,7 +3057,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
3051
3057
|
console.log("[Httpx-HttpxRequest.request] 请求前的配置👇", details);
|
|
3052
3058
|
}
|
|
3053
3059
|
if (typeof this.context.HttpxRequestHook.beforeRequestCallBack === "function") {
|
|
3054
|
-
|
|
3060
|
+
const hookResult = await this.context.HttpxRequestHook.beforeRequestCallBack(details);
|
|
3055
3061
|
if (hookResult == null) {
|
|
3056
3062
|
return;
|
|
3057
3063
|
}
|
|
@@ -3083,7 +3089,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
3083
3089
|
fetch(option.url, fetchRequestOption)
|
|
3084
3090
|
.then(async (fetchResponse) => {
|
|
3085
3091
|
/** 自定义的response */
|
|
3086
|
-
|
|
3092
|
+
const httpxResponse = {
|
|
3087
3093
|
isFetch: true,
|
|
3088
3094
|
finalUrl: fetchResponse.url,
|
|
3089
3095
|
readyState: 4,
|
|
@@ -3098,9 +3104,9 @@ System.register('Utils', [], (function (exports) {
|
|
|
3098
3104
|
};
|
|
3099
3105
|
Object.assign(httpxResponse, option.context || {});
|
|
3100
3106
|
// 把headers转为字符串
|
|
3101
|
-
|
|
3107
|
+
fetchResponse.headers.forEach((value, key) => {
|
|
3102
3108
|
httpxResponse.responseHeaders += `${key}: ${value}\n`;
|
|
3103
|
-
}
|
|
3109
|
+
});
|
|
3104
3110
|
/** 请求返回的类型 */
|
|
3105
3111
|
const fetchResponseType = fetchResponse.headers.get("Content-Type");
|
|
3106
3112
|
/* 如果需要stream,且获取到的是stream,那直接返回 */
|
|
@@ -3121,11 +3127,11 @@ System.register('Utils', [], (function (exports) {
|
|
|
3121
3127
|
/** 响应xml文档 */
|
|
3122
3128
|
let responseXML = "";
|
|
3123
3129
|
/** 先获取二进制数据 */
|
|
3124
|
-
|
|
3130
|
+
const arrayBuffer = await fetchResponse.arrayBuffer();
|
|
3125
3131
|
/** 数据编码 */
|
|
3126
3132
|
let encoding = "utf-8";
|
|
3127
3133
|
if (fetchResponse.headers.has("Content-Type")) {
|
|
3128
|
-
|
|
3134
|
+
const charsetMatched = fetchResponse.headers.get("Content-Type")?.match(/charset=(.+)/);
|
|
3129
3135
|
if (charsetMatched) {
|
|
3130
3136
|
encoding = charsetMatched[1];
|
|
3131
3137
|
encoding = encoding.toLowerCase();
|
|
@@ -3135,7 +3141,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
3135
3141
|
// 去除引号
|
|
3136
3142
|
encoding = encoding.replace(/('|")/gi, "");
|
|
3137
3143
|
// 编码
|
|
3138
|
-
|
|
3144
|
+
const textDecoder = new TextDecoder(encoding);
|
|
3139
3145
|
responseText = textDecoder.decode(arrayBuffer);
|
|
3140
3146
|
response = responseText;
|
|
3141
3147
|
if (option.responseType === "arraybuffer") {
|
|
@@ -3153,11 +3159,11 @@ System.register('Utils', [], (function (exports) {
|
|
|
3153
3159
|
}
|
|
3154
3160
|
else if (option.responseType === "document" || option.responseType == null) {
|
|
3155
3161
|
// response返回格式是文档格式
|
|
3156
|
-
|
|
3162
|
+
const parser = new DOMParser();
|
|
3157
3163
|
response = parser.parseFromString(responseText, "text/html");
|
|
3158
3164
|
}
|
|
3159
3165
|
// 转为XML结构
|
|
3160
|
-
|
|
3166
|
+
const parser = new DOMParser();
|
|
3161
3167
|
responseXML = parser.parseFromString(responseText, "text/xml");
|
|
3162
3168
|
httpxResponse.response = response;
|
|
3163
3169
|
httpxResponse.responseText = responseText;
|
|
@@ -3231,6 +3237,9 @@ System.register('Utils', [], (function (exports) {
|
|
|
3231
3237
|
onreadystatechange() { },
|
|
3232
3238
|
onprogress() { },
|
|
3233
3239
|
};
|
|
3240
|
+
/**
|
|
3241
|
+
* 实例化的默认配置
|
|
3242
|
+
*/
|
|
3234
3243
|
#defaultInitOption = {
|
|
3235
3244
|
/**
|
|
3236
3245
|
* `baseURL` 将自动加在 `url` 前面,除非 `url` 是一个绝对 URL。
|
|
@@ -3346,7 +3355,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
3346
3355
|
* @param details 配置
|
|
3347
3356
|
*/
|
|
3348
3357
|
get(...args) {
|
|
3349
|
-
|
|
3358
|
+
const useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
|
|
3350
3359
|
useRequestOption.method = "GET";
|
|
3351
3360
|
return this.request(useRequestOption, (option) => {
|
|
3352
3361
|
Reflect.deleteProperty(option, "onprogress");
|
|
@@ -3356,7 +3365,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
3356
3365
|
* POST 请求
|
|
3357
3366
|
*/
|
|
3358
3367
|
post(...args) {
|
|
3359
|
-
|
|
3368
|
+
const useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
|
|
3360
3369
|
useRequestOption.method = "POST";
|
|
3361
3370
|
return this.request(useRequestOption);
|
|
3362
3371
|
}
|
|
@@ -3364,7 +3373,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
3364
3373
|
* HEAD 请求
|
|
3365
3374
|
*/
|
|
3366
3375
|
head(...args) {
|
|
3367
|
-
|
|
3376
|
+
const useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
|
|
3368
3377
|
useRequestOption.method = "HEAD";
|
|
3369
3378
|
return this.request(useRequestOption, (option) => {
|
|
3370
3379
|
Reflect.deleteProperty(option, "onprogress");
|
|
@@ -3374,7 +3383,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
3374
3383
|
* OPTIONS 请求
|
|
3375
3384
|
*/
|
|
3376
3385
|
options(...args) {
|
|
3377
|
-
|
|
3386
|
+
const useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
|
|
3378
3387
|
useRequestOption.method = "OPTIONS";
|
|
3379
3388
|
return this.request(useRequestOption, (option) => {
|
|
3380
3389
|
Reflect.deleteProperty(option, "onprogress");
|
|
@@ -3384,7 +3393,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
3384
3393
|
* DELETE 请求
|
|
3385
3394
|
*/
|
|
3386
3395
|
delete(...args) {
|
|
3387
|
-
|
|
3396
|
+
const useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
|
|
3388
3397
|
useRequestOption.method = "DELETE";
|
|
3389
3398
|
return this.request(useRequestOption, (option) => {
|
|
3390
3399
|
Reflect.deleteProperty(option, "onprogress");
|
|
@@ -3394,7 +3403,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
3394
3403
|
* PUT 请求
|
|
3395
3404
|
*/
|
|
3396
3405
|
put(...args) {
|
|
3397
|
-
|
|
3406
|
+
const userRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
|
|
3398
3407
|
userRequestOption.method = "PUT";
|
|
3399
3408
|
return this.request(userRequestOption);
|
|
3400
3409
|
}
|
|
@@ -3404,18 +3413,30 @@ System.register('Utils', [], (function (exports) {
|
|
|
3404
3413
|
* @param beforeRequestOption 处理请求前的配置
|
|
3405
3414
|
*/
|
|
3406
3415
|
request(details, beforeRequestOption) {
|
|
3407
|
-
|
|
3408
|
-
|
|
3416
|
+
// 对请求的参数进行合并处理
|
|
3417
|
+
const userRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(details);
|
|
3418
|
+
/**
|
|
3419
|
+
* 取消请求
|
|
3420
|
+
*/
|
|
3409
3421
|
let abortFn = null;
|
|
3410
|
-
|
|
3411
|
-
|
|
3422
|
+
const promise = new globalThis.Promise(async (resolve, reject) => {
|
|
3423
|
+
// 请求配置
|
|
3424
|
+
let requestOption = this.HttpxRequestOption.getRequestOption(userRequestOption.method, userRequestOption, (resultOption) => {
|
|
3425
|
+
resolve(resultOption);
|
|
3426
|
+
}, (...args) => {
|
|
3427
|
+
reject(...args);
|
|
3428
|
+
});
|
|
3429
|
+
requestOption = this.HttpxRequestOption.removeRequestNullOption(requestOption);
|
|
3412
3430
|
if (typeof beforeRequestOption === "function") {
|
|
3413
3431
|
beforeRequestOption(requestOption);
|
|
3414
3432
|
}
|
|
3415
|
-
|
|
3433
|
+
// 处理重试逻辑
|
|
3416
3434
|
const requestResult = await this.HttpxRequest.request(requestOption);
|
|
3417
3435
|
if (requestResult != null && typeof requestResult.abort === "function") {
|
|
3418
|
-
abortFn =
|
|
3436
|
+
abortFn = () => {
|
|
3437
|
+
// 取消请求
|
|
3438
|
+
requestResult.abort();
|
|
3439
|
+
};
|
|
3419
3440
|
}
|
|
3420
3441
|
});
|
|
3421
3442
|
promise.abort = () => {
|
|
@@ -3434,10 +3455,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
3434
3455
|
/* websql的版本号,由于ios的问题,版本号的写法不一样 */
|
|
3435
3456
|
// #slqVersion = "1";
|
|
3436
3457
|
/* 监听IndexDB */
|
|
3437
|
-
#indexedDB =
|
|
3438
|
-
window.mozIndexedDB ||
|
|
3439
|
-
window.webkitIndexedDB ||
|
|
3440
|
-
window.msIndexedDB;
|
|
3458
|
+
#indexedDB = globalThis.indexedDB || globalThis.mozIndexedDB || globalThis.webkitIndexedDB || globalThis.msIndexedDB;
|
|
3441
3459
|
/* 缓存数据库,避免同一个页面重复创建和销毁 */
|
|
3442
3460
|
#db = {};
|
|
3443
3461
|
// #store: IDBObjectStore = null as any;
|
|
@@ -3472,7 +3490,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
3472
3490
|
this.#storeName = storeName;
|
|
3473
3491
|
this.#dbVersion = dbVersion;
|
|
3474
3492
|
if (!this.#indexedDB) {
|
|
3475
|
-
alert("很抱歉,您的浏览器不支持indexedDB");
|
|
3493
|
+
window.alert("很抱歉,您的浏览器不支持indexedDB");
|
|
3476
3494
|
throw new TypeError("很抱歉,您的浏览器不支持indexedDB");
|
|
3477
3495
|
}
|
|
3478
3496
|
}
|
|
@@ -3481,10 +3499,9 @@ System.register('Utils', [], (function (exports) {
|
|
|
3481
3499
|
* @param dbName 表名
|
|
3482
3500
|
*/
|
|
3483
3501
|
createStore(dbName) {
|
|
3484
|
-
|
|
3485
|
-
txn = this.#db[dbName].transaction(this.#storeName, "readwrite");
|
|
3502
|
+
const txn = this.#db[dbName].transaction(this.#storeName, "readwrite");
|
|
3486
3503
|
/* IndexDB的读写权限 */
|
|
3487
|
-
store = txn.objectStore(this.#storeName);
|
|
3504
|
+
const store = txn.objectStore(this.#storeName);
|
|
3488
3505
|
// this.#store = store;
|
|
3489
3506
|
return store;
|
|
3490
3507
|
}
|
|
@@ -3494,12 +3511,12 @@ System.register('Utils', [], (function (exports) {
|
|
|
3494
3511
|
* @param dbName 数据库名
|
|
3495
3512
|
*/
|
|
3496
3513
|
open(callback, dbName) {
|
|
3497
|
-
|
|
3514
|
+
const that = this;
|
|
3498
3515
|
/* 打开数据库 */
|
|
3499
3516
|
/* 如果支持IndexDB */
|
|
3500
3517
|
if (!that.#db[dbName]) {
|
|
3501
3518
|
/* 如果缓存中没有,则进行数据库的创建或打开,提高效率 */
|
|
3502
|
-
|
|
3519
|
+
const request = that.#indexedDB.open(dbName, that.#dbVersion);
|
|
3503
3520
|
request.onerror = function (event) {
|
|
3504
3521
|
callback(null, {
|
|
3505
3522
|
code: that.#statusCode.openFailed.code,
|
|
@@ -3509,26 +3526,26 @@ System.register('Utils', [], (function (exports) {
|
|
|
3509
3526
|
};
|
|
3510
3527
|
request.onsuccess = function (event) {
|
|
3511
3528
|
if (!that.#db[dbName]) {
|
|
3512
|
-
|
|
3529
|
+
const target = event.target;
|
|
3513
3530
|
that.#db[dbName] = target.result;
|
|
3514
3531
|
}
|
|
3515
|
-
|
|
3532
|
+
const store = that.createStore(dbName);
|
|
3516
3533
|
callback(store);
|
|
3517
3534
|
};
|
|
3518
3535
|
request.onupgradeneeded = function (event) {
|
|
3519
|
-
|
|
3536
|
+
const target = event.target;
|
|
3520
3537
|
that.#db[dbName] = target.result;
|
|
3521
|
-
|
|
3538
|
+
const store = that.#db[dbName].createObjectStore(that.#storeName, {
|
|
3522
3539
|
keyPath: "key",
|
|
3523
3540
|
});
|
|
3524
|
-
store.transaction.oncomplete = function (
|
|
3541
|
+
store.transaction.oncomplete = function () {
|
|
3525
3542
|
callback(store);
|
|
3526
3543
|
};
|
|
3527
3544
|
};
|
|
3528
3545
|
}
|
|
3529
3546
|
else {
|
|
3530
3547
|
/* 如果缓存中已经打开了数据库,就直接使用 */
|
|
3531
|
-
|
|
3548
|
+
const store = this.createStore(dbName);
|
|
3532
3549
|
callback(store);
|
|
3533
3550
|
}
|
|
3534
3551
|
}
|
|
@@ -3538,10 +3555,10 @@ System.register('Utils', [], (function (exports) {
|
|
|
3538
3555
|
* @param value 数据值
|
|
3539
3556
|
*/
|
|
3540
3557
|
async save(key, value) {
|
|
3541
|
-
|
|
3558
|
+
const that = this;
|
|
3542
3559
|
return new Promise((resolve) => {
|
|
3543
|
-
|
|
3544
|
-
|
|
3560
|
+
const dbName = this.#dbName;
|
|
3561
|
+
const inData = {
|
|
3545
3562
|
key: key,
|
|
3546
3563
|
value: value,
|
|
3547
3564
|
};
|
|
@@ -3554,7 +3571,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
3554
3571
|
});
|
|
3555
3572
|
}
|
|
3556
3573
|
else {
|
|
3557
|
-
|
|
3574
|
+
const request = idbStore.put(inData);
|
|
3558
3575
|
request.onsuccess = function (event) {
|
|
3559
3576
|
/* 保存成功有success 字段 */
|
|
3560
3577
|
resolve({
|
|
@@ -3581,9 +3598,9 @@ System.register('Utils', [], (function (exports) {
|
|
|
3581
3598
|
* @param key 数据key
|
|
3582
3599
|
*/
|
|
3583
3600
|
async has(key) {
|
|
3584
|
-
|
|
3601
|
+
const that = this;
|
|
3585
3602
|
return new Promise((resolve) => {
|
|
3586
|
-
|
|
3603
|
+
const dbName = this.#dbName;
|
|
3587
3604
|
this.open(function (idbStore) {
|
|
3588
3605
|
/* 判断返回的数据中是否有error字段 */
|
|
3589
3606
|
if (idbStore == null) {
|
|
@@ -3594,7 +3611,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
3594
3611
|
});
|
|
3595
3612
|
}
|
|
3596
3613
|
else {
|
|
3597
|
-
|
|
3614
|
+
const request = idbStore.get(key);
|
|
3598
3615
|
request.onsuccess = function (event) {
|
|
3599
3616
|
/* result 返回的是 {key: string, value: any} */
|
|
3600
3617
|
/* 键值对存储 */
|
|
@@ -3622,9 +3639,9 @@ System.register('Utils', [], (function (exports) {
|
|
|
3622
3639
|
* @param key 数据key
|
|
3623
3640
|
*/
|
|
3624
3641
|
async get(key) {
|
|
3625
|
-
|
|
3642
|
+
const that = this;
|
|
3626
3643
|
return new Promise((resolve) => {
|
|
3627
|
-
|
|
3644
|
+
const dbName = this.#dbName;
|
|
3628
3645
|
this.open(function (idbStore) {
|
|
3629
3646
|
/* 判断返回的数据中是否有error字段 */
|
|
3630
3647
|
if (idbStore == null) {
|
|
@@ -3636,13 +3653,13 @@ System.register('Utils', [], (function (exports) {
|
|
|
3636
3653
|
});
|
|
3637
3654
|
}
|
|
3638
3655
|
else {
|
|
3639
|
-
|
|
3656
|
+
const request = idbStore.get(key);
|
|
3640
3657
|
request.onsuccess = function (event) {
|
|
3641
|
-
|
|
3642
|
-
|
|
3658
|
+
const target = event.target;
|
|
3659
|
+
const result = target.result;
|
|
3643
3660
|
/* result 返回的是 {key: string, value: any} */
|
|
3644
3661
|
/* 键值对存储 */
|
|
3645
|
-
|
|
3662
|
+
const data = result ? result.value : void 0;
|
|
3646
3663
|
if (data == null) {
|
|
3647
3664
|
resolve({
|
|
3648
3665
|
success: true,
|
|
@@ -3683,10 +3700,10 @@ System.register('Utils', [], (function (exports) {
|
|
|
3683
3700
|
*/
|
|
3684
3701
|
async regexpGet(key) {
|
|
3685
3702
|
let list = [];
|
|
3686
|
-
|
|
3703
|
+
const that = this;
|
|
3687
3704
|
return new Promise((resolve) => {
|
|
3688
3705
|
/* 正则查询 */
|
|
3689
|
-
|
|
3706
|
+
const dbName = that.#dbName;
|
|
3690
3707
|
this.open(function (idbStore) {
|
|
3691
3708
|
/* 判断返回的数据中是否有error字段 */
|
|
3692
3709
|
if (idbStore == null) {
|
|
@@ -3698,16 +3715,16 @@ System.register('Utils', [], (function (exports) {
|
|
|
3698
3715
|
});
|
|
3699
3716
|
}
|
|
3700
3717
|
else {
|
|
3701
|
-
|
|
3718
|
+
const request = idbStore.getAll();
|
|
3702
3719
|
request.onsuccess = function (event) {
|
|
3703
|
-
|
|
3704
|
-
|
|
3720
|
+
const target = event.target;
|
|
3721
|
+
const result = target.result;
|
|
3705
3722
|
if (result.length !== 0) {
|
|
3706
|
-
result.forEach((dataItem
|
|
3723
|
+
result.forEach((dataItem) => {
|
|
3707
3724
|
// 当前项的key
|
|
3708
|
-
|
|
3725
|
+
const __key = dataItem["key"];
|
|
3709
3726
|
// 当前项的value
|
|
3710
|
-
|
|
3727
|
+
const __value = dataItem["value"];
|
|
3711
3728
|
if (__key.match(key)) {
|
|
3712
3729
|
list = list.concat(__value);
|
|
3713
3730
|
}
|
|
@@ -3739,10 +3756,10 @@ System.register('Utils', [], (function (exports) {
|
|
|
3739
3756
|
* @param key 数据key
|
|
3740
3757
|
*/
|
|
3741
3758
|
async delete(key) {
|
|
3742
|
-
|
|
3759
|
+
const that = this;
|
|
3743
3760
|
return new Promise((resolve) => {
|
|
3744
3761
|
/* 根据key删除某条数据 */
|
|
3745
|
-
|
|
3762
|
+
const dbName = that.#dbName;
|
|
3746
3763
|
this.open(function (idbStore) {
|
|
3747
3764
|
if (idbStore == null) {
|
|
3748
3765
|
resolve({
|
|
@@ -3753,7 +3770,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
3753
3770
|
}
|
|
3754
3771
|
else {
|
|
3755
3772
|
// 删除键
|
|
3756
|
-
|
|
3773
|
+
const request = idbStore.delete(key);
|
|
3757
3774
|
request.onsuccess = function (event) {
|
|
3758
3775
|
resolve({
|
|
3759
3776
|
success: true,
|
|
@@ -3778,10 +3795,10 @@ System.register('Utils', [], (function (exports) {
|
|
|
3778
3795
|
* 删除所有数据
|
|
3779
3796
|
*/
|
|
3780
3797
|
async deleteAll() {
|
|
3781
|
-
|
|
3798
|
+
const that = this;
|
|
3782
3799
|
return new Promise((resolve) => {
|
|
3783
3800
|
/* 清空数据库 */
|
|
3784
|
-
|
|
3801
|
+
const dbName = that.#dbName;
|
|
3785
3802
|
this.open(function (idbStore) {
|
|
3786
3803
|
if (idbStore == null) {
|
|
3787
3804
|
resolve({
|
|
@@ -3792,7 +3809,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
3792
3809
|
}
|
|
3793
3810
|
else {
|
|
3794
3811
|
// 清空
|
|
3795
|
-
|
|
3812
|
+
const operateResult = idbStore.clear();
|
|
3796
3813
|
operateResult.onsuccess = function (event) {
|
|
3797
3814
|
resolve({
|
|
3798
3815
|
success: true,
|
|
@@ -3825,7 +3842,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
3825
3842
|
run;
|
|
3826
3843
|
isLock;
|
|
3827
3844
|
constructor(callback, context, delayTime) {
|
|
3828
|
-
|
|
3845
|
+
const that = this;
|
|
3829
3846
|
this.#callback = callback;
|
|
3830
3847
|
if (typeof context === "number") {
|
|
3831
3848
|
this.#delayTime = context;
|
|
@@ -3915,14 +3932,14 @@ System.register('Utils', [], (function (exports) {
|
|
|
3915
3932
|
* @param stack
|
|
3916
3933
|
*/
|
|
3917
3934
|
parseErrorStack(stack) {
|
|
3918
|
-
|
|
3935
|
+
const result = {
|
|
3919
3936
|
name: "",
|
|
3920
3937
|
position: "",
|
|
3921
3938
|
};
|
|
3922
3939
|
for (let stackString of stack) {
|
|
3923
3940
|
stackString = stackString.trim();
|
|
3924
|
-
|
|
3925
|
-
|
|
3941
|
+
const stackFunctionNameMatch = stackString.match(/^at[\s]+(.+?)[\s]+/i);
|
|
3942
|
+
const stackFunctionNamePositionMatch = stackString.match(/^at[\s]+.+[\s]+\((.+?)\)/i);
|
|
3926
3943
|
if (stackFunctionNameMatch == null) {
|
|
3927
3944
|
continue;
|
|
3928
3945
|
}
|
|
@@ -3930,8 +3947,8 @@ System.register('Utils', [], (function (exports) {
|
|
|
3930
3947
|
continue;
|
|
3931
3948
|
}
|
|
3932
3949
|
/* 获取最后一个,因为第一个是包含了at */
|
|
3933
|
-
|
|
3934
|
-
|
|
3950
|
+
const stackFunctionName = stackFunctionNameMatch[stackFunctionNameMatch.length - 1];
|
|
3951
|
+
const stackFunctionNamePosition = stackFunctionNamePositionMatch[stackFunctionNamePositionMatch.length - 1];
|
|
3935
3952
|
if (stackFunctionName === "" ||
|
|
3936
3953
|
stackFunctionName.match(/^(Utils\.|)Log(\.|)|.<anonymous>$|^Function.each|^NodeList.forEach|^k.fn.init.each/g)) {
|
|
3937
3954
|
continue;
|
|
@@ -3943,9 +3960,9 @@ System.register('Utils', [], (function (exports) {
|
|
|
3943
3960
|
}
|
|
3944
3961
|
}
|
|
3945
3962
|
if (result.position === "") {
|
|
3946
|
-
|
|
3963
|
+
const lastStackString = stack[stack.length - 1].trim();
|
|
3947
3964
|
if (lastStackString.startsWith("at chrome-extension://")) {
|
|
3948
|
-
|
|
3965
|
+
const lastStackMatch = lastStackString.match(/^at[\s]+(.+)/);
|
|
3949
3966
|
if (lastStackMatch) {
|
|
3950
3967
|
result.position = lastStackMatch[lastStackMatch.length - 1];
|
|
3951
3968
|
}
|
|
@@ -3975,16 +3992,18 @@ System.register('Utils', [], (function (exports) {
|
|
|
3975
3992
|
printContent(msg, color, otherStyle) {
|
|
3976
3993
|
this.checkClearConsole();
|
|
3977
3994
|
otherStyle = otherStyle || "";
|
|
3978
|
-
|
|
3995
|
+
const stackSplit = new Error().stack.split("\n");
|
|
3979
3996
|
stackSplit.splice(0, 2);
|
|
3980
|
-
|
|
3981
|
-
|
|
3982
|
-
|
|
3997
|
+
const { name: callerName, position: callerPosition } = this.parseErrorStack(stackSplit);
|
|
3998
|
+
const tagName = this.tag;
|
|
3999
|
+
const that = this;
|
|
3983
4000
|
/** tag的html输出格式 */
|
|
3984
|
-
|
|
4001
|
+
const tagNameHTML = `%c[${tagName}%c`;
|
|
3985
4002
|
/** 调用的函数名的html输出格式 */
|
|
3986
4003
|
let callerNameHTML = `%c${callerName}%c]%c`;
|
|
3987
|
-
callerName.trim()
|
|
4004
|
+
if (callerName.trim() === "") {
|
|
4005
|
+
callerNameHTML = `-${callerNameHTML}`;
|
|
4006
|
+
}
|
|
3988
4007
|
/**
|
|
3989
4008
|
* 输出消息到控制台
|
|
3990
4009
|
* @param message
|
|
@@ -4070,14 +4089,14 @@ System.register('Utils', [], (function (exports) {
|
|
|
4070
4089
|
if (this.#disable)
|
|
4071
4090
|
return;
|
|
4072
4091
|
this.checkClearConsole();
|
|
4073
|
-
|
|
4092
|
+
const stack = new Error().stack.split("\n");
|
|
4074
4093
|
stack.splice(0, 1);
|
|
4075
|
-
|
|
4094
|
+
const errorStackParse = this.parseErrorStack(stack);
|
|
4076
4095
|
/** 堆栈函数名 */
|
|
4077
|
-
|
|
4096
|
+
const stackFunctionName = errorStackParse.name;
|
|
4078
4097
|
/** 堆栈位置 */
|
|
4079
|
-
|
|
4080
|
-
|
|
4098
|
+
const stackFunctionNamePosition = errorStackParse.position;
|
|
4099
|
+
const callerName = stackFunctionName;
|
|
4081
4100
|
this.#console.log(`%c[${this.tag}%c-%c${callerName}%c]%c`, ...this.#msgColorDetails, `color: ${this.#details.infoColor};`);
|
|
4082
4101
|
this.#console.table(msg);
|
|
4083
4102
|
if (this.#details.debug) {
|
|
@@ -4140,9 +4159,9 @@ System.register('Utils', [], (function (exports) {
|
|
|
4140
4159
|
*/
|
|
4141
4160
|
circleRadius: 50,
|
|
4142
4161
|
};
|
|
4143
|
-
#ctx
|
|
4144
|
-
#width
|
|
4145
|
-
#height
|
|
4162
|
+
#ctx;
|
|
4163
|
+
#width;
|
|
4164
|
+
#height;
|
|
4146
4165
|
/**
|
|
4147
4166
|
*
|
|
4148
4167
|
* @param paramConfig 配置信息
|
|
@@ -4152,14 +4171,8 @@ System.register('Utils', [], (function (exports) {
|
|
|
4152
4171
|
if (!(this.#config.canvasNode instanceof HTMLCanvasElement)) {
|
|
4153
4172
|
throw new Error("Utils.Progress 参数 canvasNode 必须是 HTMLCanvasElement");
|
|
4154
4173
|
}
|
|
4155
|
-
this.init();
|
|
4156
|
-
}
|
|
4157
|
-
/**
|
|
4158
|
-
* 初始化
|
|
4159
|
-
*/
|
|
4160
|
-
init() {
|
|
4161
4174
|
/* 获取画笔 */
|
|
4162
|
-
|
|
4175
|
+
const ctx = this.#config.canvasNode.getContext("2d");
|
|
4163
4176
|
if (ctx == null) {
|
|
4164
4177
|
throw new Error("Utils.Progress 获取画笔失败");
|
|
4165
4178
|
}
|
|
@@ -4170,8 +4183,8 @@ System.register('Utils', [], (function (exports) {
|
|
|
4170
4183
|
this.#height = this.#config.canvasNode.height;
|
|
4171
4184
|
/* 清除锯齿 */
|
|
4172
4185
|
if (window.devicePixelRatio) {
|
|
4173
|
-
this.#config.canvasNode.style.width = this.#width
|
|
4174
|
-
this.#config.canvasNode.style.height = this.#height
|
|
4186
|
+
this.#config.canvasNode.style.width = `${this.#width}px`;
|
|
4187
|
+
this.#config.canvasNode.style.height = `${this.#height}px`;
|
|
4175
4188
|
this.#config.canvasNode.height = this.#height * window.devicePixelRatio;
|
|
4176
4189
|
this.#config.canvasNode.width = this.#width * window.devicePixelRatio;
|
|
4177
4190
|
this.#ctx.scale(window.devicePixelRatio, window.devicePixelRatio);
|
|
@@ -4183,7 +4196,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
4183
4196
|
* 绘制
|
|
4184
4197
|
*/
|
|
4185
4198
|
draw() {
|
|
4186
|
-
|
|
4199
|
+
const degActive = (this.#config.progress * 360) / 100;
|
|
4187
4200
|
/* 清除画布 */
|
|
4188
4201
|
this.#ctx.clearRect(0, 0, this.#width, this.#height);
|
|
4189
4202
|
/* 开始绘制底圆 */
|
|
@@ -4197,11 +4210,11 @@ System.register('Utils', [], (function (exports) {
|
|
|
4197
4210
|
this.#ctx.strokeStyle = this.#config.lineColor;
|
|
4198
4211
|
this.#ctx.stroke();
|
|
4199
4212
|
/* 获取百分比 */
|
|
4200
|
-
|
|
4201
|
-
this.#ctx.font = this.#config.fontSize
|
|
4213
|
+
const txt = `${parseInt(this.#config.progress.toString())}%`;
|
|
4214
|
+
this.#ctx.font = `${this.#config.fontSize}px SimHei`;
|
|
4202
4215
|
/* 获取文本宽度 */
|
|
4203
|
-
|
|
4204
|
-
|
|
4216
|
+
const w = this.#ctx.measureText(txt).width;
|
|
4217
|
+
const h = this.#config.fontSize / 2;
|
|
4205
4218
|
this.#ctx.fillStyle = this.#config.textColor;
|
|
4206
4219
|
this.#ctx.fillText(txt, this.#width / 2 - w / 2, this.#height / 2 + h / 2);
|
|
4207
4220
|
}
|
|
@@ -4225,9 +4238,9 @@ System.register('Utils', [], (function (exports) {
|
|
|
4225
4238
|
* 迭代器
|
|
4226
4239
|
*/
|
|
4227
4240
|
get entries() {
|
|
4228
|
-
|
|
4241
|
+
const that = this;
|
|
4229
4242
|
return function* () {
|
|
4230
|
-
|
|
4243
|
+
const itemKeys = Object.keys(that.getItems());
|
|
4231
4244
|
for (const keyName of itemKeys) {
|
|
4232
4245
|
yield [keyName, that.get(keyName)];
|
|
4233
4246
|
}
|
|
@@ -4237,9 +4250,8 @@ System.register('Utils', [], (function (exports) {
|
|
|
4237
4250
|
* 是否可遍历
|
|
4238
4251
|
*/
|
|
4239
4252
|
get [Symbol.iterator]() {
|
|
4240
|
-
|
|
4241
|
-
|
|
4242
|
-
return that.entries();
|
|
4253
|
+
return () => {
|
|
4254
|
+
return this.entries();
|
|
4243
4255
|
};
|
|
4244
4256
|
}
|
|
4245
4257
|
/**
|
|
@@ -4326,7 +4338,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
4326
4338
|
* @param callbackfn 回调函数
|
|
4327
4339
|
*/
|
|
4328
4340
|
forEach(callbackfn) {
|
|
4329
|
-
this.items.forEach((value, key
|
|
4341
|
+
this.items.forEach((value, key) => {
|
|
4330
4342
|
callbackfn(value, key, this);
|
|
4331
4343
|
});
|
|
4332
4344
|
}
|
|
@@ -4418,6 +4430,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
4418
4430
|
}
|
|
4419
4431
|
}
|
|
4420
4432
|
|
|
4433
|
+
// @ts-nocheck
|
|
4421
4434
|
const VueUtils = {
|
|
4422
4435
|
/** 标签 */
|
|
4423
4436
|
ReactiveFlags: {
|
|
@@ -4456,10 +4469,10 @@ System.register('Utils', [], (function (exports) {
|
|
|
4456
4469
|
deps = [];
|
|
4457
4470
|
active = true;
|
|
4458
4471
|
fn;
|
|
4459
|
-
|
|
4472
|
+
scheduler;
|
|
4460
4473
|
constructor(fn, scheduler) {
|
|
4461
4474
|
this.fn = fn;
|
|
4462
|
-
|
|
4475
|
+
this.scheduler = scheduler;
|
|
4463
4476
|
}
|
|
4464
4477
|
run(cb) {
|
|
4465
4478
|
if (!this.active) {
|
|
@@ -4531,7 +4544,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
4531
4544
|
if (VueUtils.isReactive(target)) {
|
|
4532
4545
|
return target;
|
|
4533
4546
|
}
|
|
4534
|
-
|
|
4547
|
+
const exisProxy = this.reactMap.get(target);
|
|
4535
4548
|
if (exisProxy) {
|
|
4536
4549
|
return exisProxy;
|
|
4537
4550
|
}
|
|
@@ -4544,8 +4557,8 @@ System.register('Utils', [], (function (exports) {
|
|
|
4544
4557
|
return Reflect.get(target, key, receiver);
|
|
4545
4558
|
},
|
|
4546
4559
|
set(target, key, value, receiver) {
|
|
4547
|
-
|
|
4548
|
-
|
|
4560
|
+
const oldValue = target[key];
|
|
4561
|
+
const result = Reflect.set(target, key, value, receiver);
|
|
4549
4562
|
if (oldValue !== value) {
|
|
4550
4563
|
that.trigger(target, "set", key, oldValue, value);
|
|
4551
4564
|
}
|
|
@@ -4595,11 +4608,12 @@ System.register('Utils', [], (function (exports) {
|
|
|
4595
4608
|
}
|
|
4596
4609
|
toRefs(object) {
|
|
4597
4610
|
const result = VueUtils.isArray(object) ? new Array(object.length) : {};
|
|
4598
|
-
for (
|
|
4611
|
+
for (const key in object) {
|
|
4599
4612
|
result[key] = this.toRef(object, key);
|
|
4600
4613
|
}
|
|
4601
4614
|
return result;
|
|
4602
4615
|
}
|
|
4616
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4603
4617
|
trigger(target, type, key, oldValue, value) {
|
|
4604
4618
|
const depsMap = this.targetMap.get(target);
|
|
4605
4619
|
if (!depsMap)
|
|
@@ -4607,8 +4621,9 @@ System.register('Utils', [], (function (exports) {
|
|
|
4607
4621
|
const effects = depsMap.get(key);
|
|
4608
4622
|
this.triggerEffect(effects, "effects");
|
|
4609
4623
|
}
|
|
4624
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4610
4625
|
triggerEffect(effects, name) {
|
|
4611
|
-
effects
|
|
4626
|
+
if (effects) {
|
|
4612
4627
|
effects.forEach((effect) => {
|
|
4613
4628
|
if (effect.scheduler) {
|
|
4614
4629
|
effect.scheduler();
|
|
@@ -4617,6 +4632,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
4617
4632
|
effect.run();
|
|
4618
4633
|
}
|
|
4619
4634
|
});
|
|
4635
|
+
}
|
|
4620
4636
|
}
|
|
4621
4637
|
track(target, type, key) {
|
|
4622
4638
|
if (!this.activeEffect)
|
|
@@ -4633,7 +4649,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
4633
4649
|
}
|
|
4634
4650
|
trackEffect(dep) {
|
|
4635
4651
|
if (this.activeEffect) {
|
|
4636
|
-
|
|
4652
|
+
const shouldTrack = !dep.has(this.activeEffect);
|
|
4637
4653
|
if (shouldTrack) {
|
|
4638
4654
|
dep.add(this.activeEffect);
|
|
4639
4655
|
this.activeEffect.deps.push(dep);
|
|
@@ -4647,7 +4663,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
4647
4663
|
return value;
|
|
4648
4664
|
}
|
|
4649
4665
|
set.add(value);
|
|
4650
|
-
for (
|
|
4666
|
+
for (const key in value) {
|
|
4651
4667
|
this.traversal(value[key], set);
|
|
4652
4668
|
}
|
|
4653
4669
|
return value;
|
|
@@ -4899,6 +4915,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
4899
4915
|
const setInterval = (...args) => loadOrReturnBroker().setInterval(...args);
|
|
4900
4916
|
const setTimeout$1 = (...args) => loadOrReturnBroker().setTimeout(...args);
|
|
4901
4917
|
|
|
4918
|
+
/* eslint-disable */
|
|
4902
4919
|
// ==UserScript==
|
|
4903
4920
|
// @name ModuleRaid.js
|
|
4904
4921
|
// @namespace http://tampermonkey.net/
|
|
@@ -5316,28 +5333,26 @@ System.register('Utils', [], (function (exports) {
|
|
|
5316
5333
|
return $ele?.innerHTML?.trim() === "";
|
|
5317
5334
|
});
|
|
5318
5335
|
}
|
|
5319
|
-
else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) ||
|
|
5320
|
-
selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)) {
|
|
5336
|
+
else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) || selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)) {
|
|
5321
5337
|
// contains 语法
|
|
5322
|
-
|
|
5323
|
-
|
|
5338
|
+
const textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
|
|
5339
|
+
const text = textMatch[2];
|
|
5324
5340
|
selector = selector.replace(/:contains\(("|')(.*)("|')\)$/gi, "");
|
|
5325
5341
|
return Array.from(parent.querySelectorAll(selector)).filter(($ele) => {
|
|
5326
5342
|
return ($ele?.textContent || $ele?.innerText)?.includes(text);
|
|
5327
5343
|
});
|
|
5328
5344
|
}
|
|
5329
|
-
else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) ||
|
|
5330
|
-
selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)) {
|
|
5345
|
+
else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) || selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)) {
|
|
5331
5346
|
// regexp 语法
|
|
5332
|
-
|
|
5347
|
+
const textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
|
|
5333
5348
|
let pattern = textMatch[2];
|
|
5334
|
-
|
|
5349
|
+
const flagMatch = pattern.match(/("|'),[\s]*("|')([igm]{0,3})$/i);
|
|
5335
5350
|
let flags = "";
|
|
5336
5351
|
if (flagMatch) {
|
|
5337
5352
|
pattern = pattern.replace(/("|'),[\s]*("|')([igm]{0,3})$/gi, "");
|
|
5338
5353
|
flags = flagMatch[3];
|
|
5339
5354
|
}
|
|
5340
|
-
|
|
5355
|
+
const regexp = new RegExp(pattern, flags);
|
|
5341
5356
|
selector = selector.replace(/:regexp\(("|')(.*)("|')\)$/gi, "");
|
|
5342
5357
|
return Array.from(parent.querySelectorAll(selector)).filter(($ele) => {
|
|
5343
5358
|
return Boolean(($ele?.textContent || $ele?.innerText)?.match(regexp));
|
|
@@ -5379,11 +5394,10 @@ System.register('Utils', [], (function (exports) {
|
|
|
5379
5394
|
selector = selector.replace(/:empty$/gi, "");
|
|
5380
5395
|
return $el.matches(selector) && $el?.innerHTML?.trim() === "";
|
|
5381
5396
|
}
|
|
5382
|
-
else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) ||
|
|
5383
|
-
selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)) {
|
|
5397
|
+
else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) || selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)) {
|
|
5384
5398
|
// contains 语法
|
|
5385
|
-
|
|
5386
|
-
|
|
5399
|
+
const textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
|
|
5400
|
+
const text = textMatch[2];
|
|
5387
5401
|
selector = selector.replace(/:contains\(("|')(.*)("|')\)$/gi, "");
|
|
5388
5402
|
let content = $el?.textContent || $el?.innerText;
|
|
5389
5403
|
if (typeof content !== "string") {
|
|
@@ -5391,18 +5405,17 @@ System.register('Utils', [], (function (exports) {
|
|
|
5391
5405
|
}
|
|
5392
5406
|
return $el.matches(selector) && content?.includes(text);
|
|
5393
5407
|
}
|
|
5394
|
-
else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) ||
|
|
5395
|
-
selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)) {
|
|
5408
|
+
else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) || selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)) {
|
|
5396
5409
|
// regexp 语法
|
|
5397
|
-
|
|
5410
|
+
const textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
|
|
5398
5411
|
let pattern = textMatch[2];
|
|
5399
|
-
|
|
5412
|
+
const flagMatch = pattern.match(/("|'),[\s]*("|')([igm]{0,3})$/i);
|
|
5400
5413
|
let flags = "";
|
|
5401
5414
|
if (flagMatch) {
|
|
5402
5415
|
pattern = pattern.replace(/("|'),[\s]*("|')([igm]{0,3})$/gi, "");
|
|
5403
5416
|
flags = flagMatch[3];
|
|
5404
5417
|
}
|
|
5405
|
-
|
|
5418
|
+
const regexp = new RegExp(pattern, flags);
|
|
5406
5419
|
selector = selector.replace(/:regexp\(("|')(.*)("|')\)$/gi, "");
|
|
5407
5420
|
let content = $el?.textContent || $el?.innerText;
|
|
5408
5421
|
if (typeof content !== "string") {
|
|
@@ -5420,43 +5433,41 @@ System.register('Utils', [], (function (exports) {
|
|
|
5420
5433
|
if (selector.match(/[^\s]{1}:empty$/gi)) {
|
|
5421
5434
|
// empty 语法
|
|
5422
5435
|
selector = selector.replace(/:empty$/gi, "");
|
|
5423
|
-
|
|
5436
|
+
const $closest = $el?.closest(selector);
|
|
5424
5437
|
if ($closest && $closest?.innerHTML?.trim() === "") {
|
|
5425
5438
|
return $closest;
|
|
5426
5439
|
}
|
|
5427
5440
|
return null;
|
|
5428
5441
|
}
|
|
5429
|
-
else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) ||
|
|
5430
|
-
selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)) {
|
|
5442
|
+
else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) || selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)) {
|
|
5431
5443
|
// contains 语法
|
|
5432
|
-
|
|
5433
|
-
|
|
5444
|
+
const textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
|
|
5445
|
+
const text = textMatch[2];
|
|
5434
5446
|
selector = selector.replace(/:contains\(("|')(.*)("|')\)$/gi, "");
|
|
5435
|
-
|
|
5447
|
+
const $closest = $el?.closest(selector);
|
|
5436
5448
|
if ($closest) {
|
|
5437
|
-
|
|
5449
|
+
const content = $el?.textContent || $el?.innerText;
|
|
5438
5450
|
if (typeof content === "string" && content.includes(text)) {
|
|
5439
5451
|
return $closest;
|
|
5440
5452
|
}
|
|
5441
5453
|
}
|
|
5442
5454
|
return null;
|
|
5443
5455
|
}
|
|
5444
|
-
else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) ||
|
|
5445
|
-
selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)) {
|
|
5456
|
+
else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) || selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)) {
|
|
5446
5457
|
// regexp 语法
|
|
5447
|
-
|
|
5458
|
+
const textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
|
|
5448
5459
|
let pattern = textMatch[2];
|
|
5449
|
-
|
|
5460
|
+
const flagMatch = pattern.match(/("|'),[\s]*("|')([igm]{0,3})$/i);
|
|
5450
5461
|
let flags = "";
|
|
5451
5462
|
if (flagMatch) {
|
|
5452
5463
|
pattern = pattern.replace(/("|'),[\s]*("|')([igm]{0,3})$/gi, "");
|
|
5453
5464
|
flags = flagMatch[3];
|
|
5454
5465
|
}
|
|
5455
|
-
|
|
5466
|
+
const regexp = new RegExp(pattern, flags);
|
|
5456
5467
|
selector = selector.replace(/:regexp\(("|')(.*)("|')\)$/gi, "");
|
|
5457
|
-
|
|
5468
|
+
const $closest = $el?.closest(selector);
|
|
5458
5469
|
if ($closest) {
|
|
5459
|
-
|
|
5470
|
+
const content = $el?.textContent || $el?.innerText;
|
|
5460
5471
|
if (typeof content === "string" && content.match(regexp)) {
|
|
5461
5472
|
return $closest;
|
|
5462
5473
|
}
|
|
@@ -5465,12 +5476,14 @@ System.register('Utils', [], (function (exports) {
|
|
|
5465
5476
|
}
|
|
5466
5477
|
else {
|
|
5467
5478
|
// 普通语法
|
|
5468
|
-
|
|
5479
|
+
const $closest = $el?.closest(selector);
|
|
5469
5480
|
return $closest;
|
|
5470
5481
|
}
|
|
5471
5482
|
}
|
|
5472
5483
|
}
|
|
5473
|
-
|
|
5484
|
+
const domUtils = new DOMUtils();
|
|
5485
|
+
|
|
5486
|
+
const version = "2.8.2";
|
|
5474
5487
|
|
|
5475
5488
|
class Utils {
|
|
5476
5489
|
windowApi;
|
|
@@ -5478,12 +5491,12 @@ System.register('Utils', [], (function (exports) {
|
|
|
5478
5491
|
this.windowApi = new WindowApi(option);
|
|
5479
5492
|
}
|
|
5480
5493
|
/** 版本号 */
|
|
5481
|
-
version =
|
|
5494
|
+
version = version;
|
|
5482
5495
|
addStyle(cssText) {
|
|
5483
5496
|
if (typeof cssText !== "string") {
|
|
5484
5497
|
throw new Error("Utils.addStyle 参数cssText 必须为String类型");
|
|
5485
5498
|
}
|
|
5486
|
-
|
|
5499
|
+
const cssNode = this.windowApi.document.createElement("style");
|
|
5487
5500
|
cssNode.setAttribute("type", "text/css");
|
|
5488
5501
|
cssNode.innerHTML = cssText;
|
|
5489
5502
|
if (this.windowApi.document.head) {
|
|
@@ -5505,23 +5518,23 @@ System.register('Utils', [], (function (exports) {
|
|
|
5505
5518
|
return cssNode;
|
|
5506
5519
|
}
|
|
5507
5520
|
/**
|
|
5508
|
-
|
|
5509
|
-
|
|
5510
|
-
|
|
5511
|
-
|
|
5512
|
-
|
|
5513
|
-
|
|
5514
|
-
|
|
5515
|
-
|
|
5516
|
-
|
|
5517
|
-
|
|
5518
|
-
|
|
5519
|
-
|
|
5520
|
-
|
|
5521
|
-
|
|
5521
|
+
* JSON数据从源端替换到目标端中,如果目标端存在该数据则替换,不添加,返回结果为目标端替换完毕的结果
|
|
5522
|
+
* @param target 目标数据
|
|
5523
|
+
* @param source 源数据
|
|
5524
|
+
* @param isAdd 是否可以追加键,默认false
|
|
5525
|
+
* @example
|
|
5526
|
+
* Utils.assign({"1":1,"2":{"3":3}}, {"2":{"3":4}});
|
|
5527
|
+
* >
|
|
5528
|
+
* {
|
|
5529
|
+
"1": 1,
|
|
5530
|
+
"2": {
|
|
5531
|
+
"3": 4
|
|
5532
|
+
}
|
|
5533
|
+
}
|
|
5534
|
+
*/
|
|
5522
5535
|
assign = commonUtil.assign.bind(commonUtil);
|
|
5523
5536
|
async asyncReplaceAll(string, pattern, asyncFn) {
|
|
5524
|
-
|
|
5537
|
+
const UtilsContext = this;
|
|
5525
5538
|
if (typeof string !== "string") {
|
|
5526
5539
|
throw new TypeError("string必须是字符串");
|
|
5527
5540
|
}
|
|
@@ -5593,18 +5606,18 @@ System.register('Utils', [], (function (exports) {
|
|
|
5593
5606
|
canvasElement.dispatchEvent(new MouseEvent("mouseup", eventInit));
|
|
5594
5607
|
}
|
|
5595
5608
|
checkUserClickInNode(element) {
|
|
5596
|
-
|
|
5609
|
+
const UtilsContext = this;
|
|
5597
5610
|
if (!UtilsContext.isDOM(element)) {
|
|
5598
5611
|
throw new Error("Utils.checkUserClickInNode 参数 targetNode 必须为 Element|Node 类型");
|
|
5599
5612
|
}
|
|
5600
|
-
|
|
5601
|
-
|
|
5602
|
-
|
|
5613
|
+
const clickEvent = UtilsContext.windowApi.window.event;
|
|
5614
|
+
const touchEvent = UtilsContext.windowApi.window.event;
|
|
5615
|
+
const $click = clickEvent?.composedPath()?.[0];
|
|
5603
5616
|
// 点击的x坐标
|
|
5604
|
-
|
|
5617
|
+
const clickPosX = clickEvent?.clientX != null ? clickEvent.clientX : touchEvent.touches[0].clientX;
|
|
5605
5618
|
// 点击的y坐标
|
|
5606
|
-
|
|
5607
|
-
|
|
5619
|
+
const clickPosY = clickEvent?.clientY != null ? clickEvent.clientY : touchEvent.touches[0].clientY;
|
|
5620
|
+
const {
|
|
5608
5621
|
/* 要检测的元素的相对屏幕的横坐标最左边 */
|
|
5609
5622
|
left: elementPosXLeft,
|
|
5610
5623
|
/* 要检测的元素的相对屏幕的横坐标最右边 */
|
|
@@ -5632,32 +5645,32 @@ System.register('Utils', [], (function (exports) {
|
|
|
5632
5645
|
* @param formData 需要clone的数据
|
|
5633
5646
|
*/
|
|
5634
5647
|
cloneFormData(formData, filterFn) {
|
|
5635
|
-
|
|
5636
|
-
|
|
5637
|
-
|
|
5648
|
+
const clonedFormData = new FormData();
|
|
5649
|
+
formData.forEach((value, key) => {
|
|
5650
|
+
const isFilter = typeof filterFn === "function" ? filterFn(key, value) : false;
|
|
5638
5651
|
if (typeof isFilter === "boolean" && isFilter) {
|
|
5639
|
-
|
|
5652
|
+
return;
|
|
5640
5653
|
}
|
|
5641
5654
|
clonedFormData.append(key, value);
|
|
5642
|
-
}
|
|
5655
|
+
});
|
|
5643
5656
|
return clonedFormData;
|
|
5644
5657
|
}
|
|
5645
5658
|
createOverload() {
|
|
5646
|
-
|
|
5659
|
+
const fnMap = new Map();
|
|
5647
5660
|
function overload(...args) {
|
|
5648
|
-
|
|
5649
|
-
|
|
5661
|
+
const key = args.map((it) => typeof it).join(",");
|
|
5662
|
+
const fn = fnMap.get(key);
|
|
5650
5663
|
if (!fn) {
|
|
5651
5664
|
throw new TypeError("没有找到对应的实现");
|
|
5652
5665
|
}
|
|
5653
5666
|
return fn.apply(this, args);
|
|
5654
5667
|
}
|
|
5655
5668
|
overload.addImpl = function (...args) {
|
|
5656
|
-
|
|
5669
|
+
const fn = args.pop();
|
|
5657
5670
|
if (typeof fn !== "function") {
|
|
5658
5671
|
throw new TypeError("最后一个参数必须是函数");
|
|
5659
5672
|
}
|
|
5660
|
-
|
|
5673
|
+
const key = args.join(",");
|
|
5661
5674
|
fnMap.set(key, fn);
|
|
5662
5675
|
};
|
|
5663
5676
|
return overload;
|
|
@@ -5674,7 +5687,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
5674
5687
|
deepClone = commonUtil.deepClone.bind(commonUtil);
|
|
5675
5688
|
debounce(fn, delay = 0) {
|
|
5676
5689
|
let timer = null;
|
|
5677
|
-
|
|
5690
|
+
const UtilsContext = this;
|
|
5678
5691
|
return function (...args) {
|
|
5679
5692
|
UtilsContext.workerClearTimeout(timer);
|
|
5680
5693
|
timer = UtilsContext.workerSetTimeout(function () {
|
|
@@ -5683,7 +5696,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
5683
5696
|
};
|
|
5684
5697
|
}
|
|
5685
5698
|
deleteParentNode(element, targetSelector) {
|
|
5686
|
-
|
|
5699
|
+
const UtilsContext = this;
|
|
5687
5700
|
if (element == null) {
|
|
5688
5701
|
return;
|
|
5689
5702
|
}
|
|
@@ -5694,7 +5707,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
5694
5707
|
throw new Error("Utils.deleteParentNode 参数 targetSelector 必须为 string 类型");
|
|
5695
5708
|
}
|
|
5696
5709
|
let result = false;
|
|
5697
|
-
|
|
5710
|
+
const needRemoveDOM = domUtils.closest(element, targetSelector);
|
|
5698
5711
|
if (needRemoveDOM) {
|
|
5699
5712
|
needRemoveDOM.remove();
|
|
5700
5713
|
result = true;
|
|
@@ -5724,7 +5737,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
5724
5737
|
eventNameList = [...eventName];
|
|
5725
5738
|
}
|
|
5726
5739
|
eventNameList.forEach((_eventName_) => {
|
|
5727
|
-
|
|
5740
|
+
const event = new Event(_eventName_);
|
|
5728
5741
|
if (details) {
|
|
5729
5742
|
Object.assign(event, details);
|
|
5730
5743
|
}
|
|
@@ -5732,7 +5745,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
5732
5745
|
});
|
|
5733
5746
|
}
|
|
5734
5747
|
downloadBase64(base64Data, fileName, isIFrame = false) {
|
|
5735
|
-
|
|
5748
|
+
const UtilsContext = this;
|
|
5736
5749
|
if (typeof base64Data !== "string") {
|
|
5737
5750
|
throw new Error("Utils.downloadBase64 参数 base64Data 必须为 string 类型");
|
|
5738
5751
|
}
|
|
@@ -5764,7 +5777,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
5764
5777
|
let strFound;
|
|
5765
5778
|
if (this.windowApi.globalThis.find) {
|
|
5766
5779
|
/* CODE FOR BROWSERS THAT SUPPORT window.find */
|
|
5767
|
-
|
|
5780
|
+
const windowFind = this.windowApi.self.find;
|
|
5768
5781
|
strFound = windowFind(str, caseSensitive, true, true, false);
|
|
5769
5782
|
if (strFound && this.windowApi.self.getSelection && !this.windowApi.self.getSelection().anchorNode) {
|
|
5770
5783
|
strFound = windowFind(str, caseSensitive, true, true, false);
|
|
@@ -5798,19 +5811,19 @@ System.register('Utils', [], (function (exports) {
|
|
|
5798
5811
|
return strFound ? true : false;
|
|
5799
5812
|
}
|
|
5800
5813
|
*findElementsWithText(element, text, filter) {
|
|
5801
|
-
|
|
5814
|
+
const that = this;
|
|
5802
5815
|
if (element.outerHTML.includes(text)) {
|
|
5803
5816
|
if (element.children.length === 0) {
|
|
5804
|
-
|
|
5817
|
+
const filterResult = typeof filter === "function" ? filter(element) : false;
|
|
5805
5818
|
if (!filterResult) {
|
|
5806
5819
|
yield element;
|
|
5807
5820
|
}
|
|
5808
5821
|
}
|
|
5809
5822
|
else {
|
|
5810
|
-
|
|
5811
|
-
for (
|
|
5823
|
+
const textElement = Array.from(element.childNodes).filter((ele) => ele.nodeType === Node.TEXT_NODE);
|
|
5824
|
+
for (const $child of textElement) {
|
|
5812
5825
|
if ($child.textContent.includes(text)) {
|
|
5813
|
-
|
|
5826
|
+
const filterResult = typeof filter === "function" ? filter(element) : false;
|
|
5814
5827
|
if (!filterResult) {
|
|
5815
5828
|
yield $child;
|
|
5816
5829
|
}
|
|
@@ -5819,7 +5832,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
5819
5832
|
}
|
|
5820
5833
|
}
|
|
5821
5834
|
for (let index = 0; index < element.children.length; index++) {
|
|
5822
|
-
|
|
5835
|
+
const $child = element.children[index];
|
|
5823
5836
|
yield* that.findElementsWithText($child, text, filter);
|
|
5824
5837
|
}
|
|
5825
5838
|
}
|
|
@@ -5833,8 +5846,8 @@ System.register('Utils', [], (function (exports) {
|
|
|
5833
5846
|
findVisibleElement(element) {
|
|
5834
5847
|
let currentElement = element;
|
|
5835
5848
|
while (currentElement) {
|
|
5836
|
-
|
|
5837
|
-
if (
|
|
5849
|
+
const elementRect = currentElement.getBoundingClientRect();
|
|
5850
|
+
if (elementRect.length) {
|
|
5838
5851
|
return currentElement;
|
|
5839
5852
|
}
|
|
5840
5853
|
currentElement = currentElement.parentElement;
|
|
@@ -5848,7 +5861,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
5848
5861
|
}
|
|
5849
5862
|
let result = 0;
|
|
5850
5863
|
let resultType = "KB";
|
|
5851
|
-
|
|
5864
|
+
const sizeData = {};
|
|
5852
5865
|
sizeData.B = 1;
|
|
5853
5866
|
sizeData.KB = 1024;
|
|
5854
5867
|
sizeData.MB = sizeData.KB * sizeData.KB;
|
|
@@ -5861,7 +5874,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
5861
5874
|
sizeData.BB = sizeData.YB * sizeData.KB;
|
|
5862
5875
|
sizeData.NB = sizeData.BB * sizeData.KB;
|
|
5863
5876
|
sizeData.DB = sizeData.NB * sizeData.KB;
|
|
5864
|
-
for (
|
|
5877
|
+
for (const key in sizeData) {
|
|
5865
5878
|
result = byteSize / sizeData[key];
|
|
5866
5879
|
resultType = key;
|
|
5867
5880
|
if (sizeData.KB >= result) {
|
|
@@ -5874,7 +5887,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
5874
5887
|
}
|
|
5875
5888
|
getNodeListValue(...args) {
|
|
5876
5889
|
let resultArray = [];
|
|
5877
|
-
for (
|
|
5890
|
+
for (const arg of args) {
|
|
5878
5891
|
let value = arg;
|
|
5879
5892
|
if (typeof arg === "function") {
|
|
5880
5893
|
/* 方法 */
|
|
@@ -5889,7 +5902,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
5889
5902
|
}
|
|
5890
5903
|
getNonNullValue(...args) {
|
|
5891
5904
|
let resultValue = args[args.length - 1];
|
|
5892
|
-
|
|
5905
|
+
const UtilsContext = this;
|
|
5893
5906
|
for (const argValue of args) {
|
|
5894
5907
|
if (UtilsContext.isNotNull(argValue)) {
|
|
5895
5908
|
resultValue = argValue;
|
|
@@ -5899,7 +5912,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
5899
5912
|
return resultValue;
|
|
5900
5913
|
}
|
|
5901
5914
|
formatTime(text = new Date(), formatType = "yyyy-MM-dd HH:mm:ss") {
|
|
5902
|
-
|
|
5915
|
+
const time = text == null ? new Date() : new Date(text);
|
|
5903
5916
|
/**
|
|
5904
5917
|
* 校验时间补0
|
|
5905
5918
|
* @param timeNum
|
|
@@ -5907,7 +5920,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
5907
5920
|
*/
|
|
5908
5921
|
function checkTime(timeNum) {
|
|
5909
5922
|
if (timeNum < 10)
|
|
5910
|
-
return
|
|
5923
|
+
return `0${timeNum}`;
|
|
5911
5924
|
return timeNum;
|
|
5912
5925
|
}
|
|
5913
5926
|
/**
|
|
@@ -5918,7 +5931,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
5918
5931
|
function timeSystemChange(hourNum) {
|
|
5919
5932
|
return hourNum > 12 ? hourNum - 12 : hourNum;
|
|
5920
5933
|
}
|
|
5921
|
-
|
|
5934
|
+
const timeRegexp = {
|
|
5922
5935
|
yyyy: time.getFullYear(),
|
|
5923
5936
|
/* 年 */
|
|
5924
5937
|
MM: checkTime(time.getMonth() + 1),
|
|
@@ -5935,7 +5948,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
5935
5948
|
/* 秒 */
|
|
5936
5949
|
};
|
|
5937
5950
|
Object.keys(timeRegexp).forEach(function (key) {
|
|
5938
|
-
|
|
5951
|
+
const replaecRegexp = new RegExp(key, "g");
|
|
5939
5952
|
formatType = formatType.replace(replaecRegexp, timeRegexp[key]);
|
|
5940
5953
|
});
|
|
5941
5954
|
return formatType;
|
|
@@ -5947,12 +5960,12 @@ System.register('Utils', [], (function (exports) {
|
|
|
5947
5960
|
}
|
|
5948
5961
|
if (text.length === 8) {
|
|
5949
5962
|
/* 该字符串只有时分秒 */
|
|
5950
|
-
|
|
5951
|
-
text = today.getFullYear()
|
|
5963
|
+
const today = new Date();
|
|
5964
|
+
text = `${today.getFullYear()}-${today.getMonth() + 1}-${today.getDate()} ${text}`;
|
|
5952
5965
|
}
|
|
5953
5966
|
text = text.substring(0, 19);
|
|
5954
5967
|
text = text.replace(/-/g, "/");
|
|
5955
|
-
|
|
5968
|
+
const timestamp = new Date(text).getTime();
|
|
5956
5969
|
return timestamp;
|
|
5957
5970
|
}
|
|
5958
5971
|
/**
|
|
@@ -6002,16 +6015,16 @@ System.register('Utils', [], (function (exports) {
|
|
|
6002
6015
|
if (timestamp2.toString().length === 10) {
|
|
6003
6016
|
timestamp2 = timestamp2 * 1000;
|
|
6004
6017
|
}
|
|
6005
|
-
|
|
6006
|
-
|
|
6007
|
-
|
|
6008
|
-
|
|
6009
|
-
|
|
6010
|
-
|
|
6011
|
-
|
|
6012
|
-
|
|
6013
|
-
|
|
6014
|
-
|
|
6018
|
+
const smallTimeStamp = timestamp1 > timestamp2 ? timestamp2 : timestamp1;
|
|
6019
|
+
const bigTimeStamp = timestamp1 > timestamp2 ? timestamp1 : timestamp2;
|
|
6020
|
+
const oneSecond = 1000; /* 一秒的毫秒数 */
|
|
6021
|
+
const oneMinute = 60 * oneSecond; /* 一分钟的毫秒数 */
|
|
6022
|
+
const oneHour = 60 * oneMinute; /* 一小时的毫秒数 */
|
|
6023
|
+
const oneDay = 24 * oneHour; /* 一天的毫秒数 */
|
|
6024
|
+
const oneMonth = 30 * oneDay; /* 一个月的毫秒数(30天) */
|
|
6025
|
+
const oneYear = 12 * oneMonth; /* 一年的毫秒数 */
|
|
6026
|
+
const bigDate = new Date(bigTimeStamp);
|
|
6027
|
+
const smallDate = new Date(smallTimeStamp);
|
|
6015
6028
|
let remainderValue = 1;
|
|
6016
6029
|
if (type === "年") {
|
|
6017
6030
|
remainderValue = oneYear;
|
|
@@ -6033,30 +6046,30 @@ System.register('Utils', [], (function (exports) {
|
|
|
6033
6046
|
}
|
|
6034
6047
|
let diffValue = Math.round(Math.abs((bigDate - smallDate) / remainderValue));
|
|
6035
6048
|
if (type === "auto") {
|
|
6036
|
-
|
|
6049
|
+
const timeDifference = bigTimeStamp - smallTimeStamp;
|
|
6037
6050
|
diffValue = Math.floor(timeDifference / (24 * 3600 * 1000));
|
|
6038
6051
|
if (diffValue > 0) {
|
|
6039
|
-
diffValue = diffValue
|
|
6052
|
+
diffValue = `${diffValue}天`;
|
|
6040
6053
|
}
|
|
6041
6054
|
else {
|
|
6042
6055
|
/* 计算出小时数 */
|
|
6043
|
-
|
|
6044
|
-
|
|
6056
|
+
const leave1 = timeDifference % (24 * 3600 * 1000); /* 计算天数后剩余的毫秒数 */
|
|
6057
|
+
const hours = Math.floor(leave1 / (3600 * 1000));
|
|
6045
6058
|
if (hours > 0) {
|
|
6046
|
-
diffValue = hours
|
|
6059
|
+
diffValue = `${hours}小时`;
|
|
6047
6060
|
}
|
|
6048
6061
|
else {
|
|
6049
6062
|
/* 计算相差分钟数 */
|
|
6050
|
-
|
|
6051
|
-
|
|
6063
|
+
const leave2 = leave1 % (3600 * 1000); /* 计算小时数后剩余的毫秒数 */
|
|
6064
|
+
const minutes = Math.floor(leave2 / (60 * 1000));
|
|
6052
6065
|
if (minutes > 0) {
|
|
6053
|
-
diffValue = minutes
|
|
6066
|
+
diffValue = `${minutes}分钟`;
|
|
6054
6067
|
}
|
|
6055
6068
|
else {
|
|
6056
6069
|
/* 计算相差秒数 */
|
|
6057
|
-
|
|
6058
|
-
|
|
6059
|
-
diffValue = seconds
|
|
6070
|
+
const leave3 = leave2 % (60 * 1000); /* 计算分钟数后剩余的毫秒数 */
|
|
6071
|
+
const seconds = Math.round(leave3 / 1000);
|
|
6072
|
+
diffValue = `${seconds}秒`;
|
|
6060
6073
|
}
|
|
6061
6074
|
}
|
|
6062
6075
|
}
|
|
@@ -6064,14 +6077,14 @@ System.register('Utils', [], (function (exports) {
|
|
|
6064
6077
|
return diffValue;
|
|
6065
6078
|
}
|
|
6066
6079
|
getElementSelector(element) {
|
|
6067
|
-
|
|
6080
|
+
const UtilsContext = this;
|
|
6068
6081
|
if (!element)
|
|
6069
6082
|
return void 0;
|
|
6070
6083
|
if (!element.parentElement)
|
|
6071
6084
|
return void 0;
|
|
6072
6085
|
/* 如果元素有id属性,则直接返回id选择器 */
|
|
6073
6086
|
if (element.id)
|
|
6074
|
-
return
|
|
6087
|
+
return `#${element.id}`;
|
|
6075
6088
|
/* 递归地获取父元素的选择器 */
|
|
6076
6089
|
let selector = UtilsContext.getElementSelector(element.parentElement);
|
|
6077
6090
|
if (!selector) {
|
|
@@ -6079,11 +6092,11 @@ System.register('Utils', [], (function (exports) {
|
|
|
6079
6092
|
}
|
|
6080
6093
|
/* 如果有多个相同类型的兄弟元素,则需要添加索引 */
|
|
6081
6094
|
if (element.parentElement.querySelectorAll(element.tagName).length > 1) {
|
|
6082
|
-
|
|
6083
|
-
selector +=
|
|
6095
|
+
const index = Array.prototype.indexOf.call(element.parentElement.children, element) + 1;
|
|
6096
|
+
selector += ` > ${element.tagName.toLowerCase()}:nth-child(${index})`;
|
|
6084
6097
|
}
|
|
6085
6098
|
else {
|
|
6086
|
-
selector +=
|
|
6099
|
+
selector += ` > ${element.tagName.toLowerCase()}`;
|
|
6087
6100
|
}
|
|
6088
6101
|
return selector;
|
|
6089
6102
|
}
|
|
@@ -6094,15 +6107,15 @@ System.register('Utils', [], (function (exports) {
|
|
|
6094
6107
|
* > 2
|
|
6095
6108
|
*/
|
|
6096
6109
|
getMaxValue(...args) {
|
|
6097
|
-
|
|
6110
|
+
const result = [...args];
|
|
6098
6111
|
let newResult = [];
|
|
6099
6112
|
if (result.length === 0) {
|
|
6100
6113
|
return void 0;
|
|
6101
6114
|
}
|
|
6102
6115
|
if (result.length > 1) {
|
|
6103
6116
|
if (result.length === 2 && typeof result[0] === "object" && typeof result[1] === "function") {
|
|
6104
|
-
|
|
6105
|
-
|
|
6117
|
+
const data = result[0];
|
|
6118
|
+
const handleDataFunc = result[1];
|
|
6106
6119
|
Object.keys(data).forEach((keyName) => {
|
|
6107
6120
|
newResult = [...newResult, handleDataFunc(keyName, data[keyName])];
|
|
6108
6121
|
});
|
|
@@ -6150,7 +6163,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
6150
6163
|
*/
|
|
6151
6164
|
function queryMaxZIndex($ele) {
|
|
6152
6165
|
if (typeof ignoreCallBack === "function") {
|
|
6153
|
-
|
|
6166
|
+
const ignoreResult = ignoreCallBack($ele);
|
|
6154
6167
|
if (typeof ignoreResult === "boolean" && !ignoreResult) {
|
|
6155
6168
|
return;
|
|
6156
6169
|
}
|
|
@@ -6159,7 +6172,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
6159
6172
|
const nodeStyle = UtilsContext.windowApi.window.getComputedStyle($ele);
|
|
6160
6173
|
/* 不对position为static和display为none的元素进行获取它们的z-index */
|
|
6161
6174
|
if (isVisibleNode(nodeStyle)) {
|
|
6162
|
-
|
|
6175
|
+
const nodeZIndex = parseInt(nodeStyle.zIndex);
|
|
6163
6176
|
if (!isNaN(nodeZIndex)) {
|
|
6164
6177
|
if (nodeZIndex > zIndex) {
|
|
6165
6178
|
// 赋值到全局
|
|
@@ -6175,7 +6188,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
6175
6188
|
}
|
|
6176
6189
|
}
|
|
6177
6190
|
}
|
|
6178
|
-
target.querySelectorAll("*").forEach(($ele
|
|
6191
|
+
target.querySelectorAll("*").forEach(($ele) => {
|
|
6179
6192
|
queryMaxZIndex($ele);
|
|
6180
6193
|
});
|
|
6181
6194
|
zIndex += deviation;
|
|
@@ -6192,15 +6205,15 @@ System.register('Utils', [], (function (exports) {
|
|
|
6192
6205
|
return this.getMaxZIndexNodeInfo(deviation, target, ignoreCallBack).zIndex;
|
|
6193
6206
|
}
|
|
6194
6207
|
getMinValue(...args) {
|
|
6195
|
-
|
|
6208
|
+
const result = [...args];
|
|
6196
6209
|
let newResult = [];
|
|
6197
6210
|
if (result.length === 0) {
|
|
6198
6211
|
return void 0;
|
|
6199
6212
|
}
|
|
6200
6213
|
if (result.length > 1) {
|
|
6201
6214
|
if (result.length === 2 && typeof result[0] === "object" && typeof result[1] === "function") {
|
|
6202
|
-
|
|
6203
|
-
|
|
6215
|
+
const data = result[0];
|
|
6216
|
+
const handleDataFunc = result[1];
|
|
6204
6217
|
Object.keys(data).forEach((keyName) => {
|
|
6205
6218
|
newResult = [...newResult, handleDataFunc(keyName, data[keyName])];
|
|
6206
6219
|
});
|
|
@@ -6230,8 +6243,8 @@ System.register('Utils', [], (function (exports) {
|
|
|
6230
6243
|
* > 'Mozilla/5.0 (Linux; Android 10; MI 13 Build/OPR1.170623.027; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.3490.40 Mobile Safari/537.36'
|
|
6231
6244
|
**/
|
|
6232
6245
|
getRandomAndroidUA() {
|
|
6233
|
-
|
|
6234
|
-
|
|
6246
|
+
const UtilsContext = this;
|
|
6247
|
+
const mobileNameList = [
|
|
6235
6248
|
"LDN-LX3",
|
|
6236
6249
|
"RNE-L03",
|
|
6237
6250
|
"ASUS_X00ID Build/NMF26F",
|
|
@@ -6248,14 +6261,14 @@ System.register('Utils', [], (function (exports) {
|
|
|
6248
6261
|
"MI 13 Build/OPR1.170623.027; wv",
|
|
6249
6262
|
];
|
|
6250
6263
|
/* 安卓版本 */
|
|
6251
|
-
|
|
6264
|
+
const androidVersion = UtilsContext.getRandomValue(12, 14);
|
|
6252
6265
|
/* 手机型号 */
|
|
6253
|
-
|
|
6266
|
+
const randomMobile = UtilsContext.getRandomValue(mobileNameList);
|
|
6254
6267
|
/* chrome大版本号 */
|
|
6255
|
-
|
|
6256
|
-
|
|
6257
|
-
|
|
6258
|
-
|
|
6268
|
+
const chromeVersion1 = UtilsContext.getRandomValue(120, 132);
|
|
6269
|
+
const chromeVersion2 = UtilsContext.getRandomValue(0, 0);
|
|
6270
|
+
const chromeVersion3 = UtilsContext.getRandomValue(2272, 6099);
|
|
6271
|
+
const chromeVersion4 = UtilsContext.getRandomValue(1, 218);
|
|
6259
6272
|
return `Mozilla/5.0 (Linux; Android ${androidVersion}; ${randomMobile}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${chromeVersion1}.${chromeVersion2}.${chromeVersion3}.${chromeVersion4} Mobile Safari/537.36`;
|
|
6260
6273
|
}
|
|
6261
6274
|
/**
|
|
@@ -6277,20 +6290,20 @@ System.register('Utils', [], (function (exports) {
|
|
|
6277
6290
|
* > 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.5068.19 Safari/537.36'
|
|
6278
6291
|
**/
|
|
6279
6292
|
getRandomPCUA() {
|
|
6280
|
-
|
|
6293
|
+
const UtilsContext = this;
|
|
6281
6294
|
/* chrome大版本号 */
|
|
6282
|
-
|
|
6283
|
-
|
|
6284
|
-
|
|
6285
|
-
|
|
6295
|
+
const chromeVersion1 = UtilsContext.getRandomValue(120, 132);
|
|
6296
|
+
const chromeVersion2 = UtilsContext.getRandomValue(0, 0);
|
|
6297
|
+
const chromeVersion3 = UtilsContext.getRandomValue(2272, 6099);
|
|
6298
|
+
const chromeVersion4 = UtilsContext.getRandomValue(1, 218);
|
|
6286
6299
|
return `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${chromeVersion1}.${chromeVersion2}.${chromeVersion3}.${chromeVersion4} Safari/537.36`;
|
|
6287
6300
|
}
|
|
6288
6301
|
getRandomValue(...args) {
|
|
6289
|
-
|
|
6302
|
+
const result = [...args];
|
|
6290
6303
|
if (result.length > 1) {
|
|
6291
6304
|
if (result.length === 2 && typeof result[0] === "number" && typeof result[1] === "number") {
|
|
6292
|
-
|
|
6293
|
-
|
|
6305
|
+
const leftNumber = result[0] > result[1] ? result[1] : result[0];
|
|
6306
|
+
const rightNumber = result[0] > result[1] ? result[0] : result[1];
|
|
6294
6307
|
return Math.round(Math.random() * (rightNumber - leftNumber)) + leftNumber;
|
|
6295
6308
|
}
|
|
6296
6309
|
else {
|
|
@@ -6298,12 +6311,12 @@ System.register('Utils', [], (function (exports) {
|
|
|
6298
6311
|
}
|
|
6299
6312
|
}
|
|
6300
6313
|
else if (result.length === 1) {
|
|
6301
|
-
|
|
6314
|
+
const paramData = result[0];
|
|
6302
6315
|
if (Array.isArray(paramData)) {
|
|
6303
6316
|
return paramData[Math.floor(Math.random() * paramData.length)];
|
|
6304
6317
|
}
|
|
6305
6318
|
else if (typeof paramData === "object" && Object.keys(paramData).length > 0) {
|
|
6306
|
-
|
|
6319
|
+
const paramObjDataKey = Object.keys(paramData)[Math.floor(Math.random() * Object.keys(paramData).length)];
|
|
6307
6320
|
return paramData[paramObjDataKey];
|
|
6308
6321
|
}
|
|
6309
6322
|
else {
|
|
@@ -6319,7 +6332,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
6319
6332
|
* Utils.getReactObj(document.querySelector("input"))?.reactProps?.onChange({target:{value:"123"}});
|
|
6320
6333
|
*/
|
|
6321
6334
|
getReactObj(element) {
|
|
6322
|
-
|
|
6335
|
+
const result = {};
|
|
6323
6336
|
if (element == null) {
|
|
6324
6337
|
return result;
|
|
6325
6338
|
}
|
|
@@ -6345,9 +6358,9 @@ System.register('Utils', [], (function (exports) {
|
|
|
6345
6358
|
if (typeof target !== "object") {
|
|
6346
6359
|
throw new TypeError("target不是一个对象");
|
|
6347
6360
|
}
|
|
6348
|
-
|
|
6361
|
+
const objectsSymbols = Object.getOwnPropertySymbols(target);
|
|
6349
6362
|
if (typeof keyName === "string") {
|
|
6350
|
-
|
|
6363
|
+
const findSymbol = objectsSymbols.find((key) => {
|
|
6351
6364
|
return key.toString() === keyName;
|
|
6352
6365
|
});
|
|
6353
6366
|
if (findSymbol) {
|
|
@@ -6355,7 +6368,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
6355
6368
|
}
|
|
6356
6369
|
}
|
|
6357
6370
|
else if (typeof keyName === "symbol") {
|
|
6358
|
-
|
|
6371
|
+
const findSymbol = objectsSymbols.find((key) => {
|
|
6359
6372
|
return key === keyName;
|
|
6360
6373
|
});
|
|
6361
6374
|
if (findSymbol) {
|
|
@@ -6363,7 +6376,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
6363
6376
|
}
|
|
6364
6377
|
}
|
|
6365
6378
|
else {
|
|
6366
|
-
|
|
6379
|
+
const result = {};
|
|
6367
6380
|
objectsSymbols.forEach((item) => {
|
|
6368
6381
|
result[item] = target[item];
|
|
6369
6382
|
});
|
|
@@ -6378,12 +6391,12 @@ System.register('Utils', [], (function (exports) {
|
|
|
6378
6391
|
* > 12
|
|
6379
6392
|
*/
|
|
6380
6393
|
getTextLength(text) {
|
|
6381
|
-
|
|
6382
|
-
|
|
6394
|
+
const encoder = new TextEncoder();
|
|
6395
|
+
const bytes = encoder.encode(text);
|
|
6383
6396
|
return bytes.length;
|
|
6384
6397
|
}
|
|
6385
6398
|
getTextStorageSize(text, addType = true) {
|
|
6386
|
-
|
|
6399
|
+
const UtilsContext = this;
|
|
6387
6400
|
return UtilsContext.formatByteToSize(UtilsContext.getTextLength(text), addType);
|
|
6388
6401
|
}
|
|
6389
6402
|
getThunderUrl(url) {
|
|
@@ -6396,88 +6409,75 @@ System.register('Utils', [], (function (exports) {
|
|
|
6396
6409
|
if (url.trim() === "") {
|
|
6397
6410
|
throw new TypeError("url不能为空字符串或纯空格");
|
|
6398
6411
|
}
|
|
6399
|
-
return `thunder://${this.windowApi.globalThis.btoa(
|
|
6412
|
+
return `thunder://${this.windowApi.globalThis.btoa(`AA${url}ZZ`)}`;
|
|
6400
6413
|
}
|
|
6401
6414
|
/**
|
|
6402
|
-
|
|
6403
|
-
|
|
6404
|
-
|
|
6405
|
-
|
|
6406
|
-
|
|
6407
|
-
|
|
6408
|
-
|
|
6409
|
-
|
|
6410
|
-
|
|
6411
|
-
|
|
6412
|
-
|
|
6413
|
-
|
|
6414
|
-
|
|
6415
|
-
|
|
6416
|
-
|
|
6417
|
-
|
|
6418
|
-
|
|
6419
|
-
|
|
6420
|
-
|
|
6421
|
-
|
|
6422
|
-
|
|
6423
|
-
|
|
6424
|
-
|
|
6425
|
-
|
|
6426
|
-
|
|
6427
|
-
|
|
6415
|
+
* 对于GM_cookie的兼容写法,当无法使用GM_cookie时可以使用这个,但是并不完全兼容,有些写不出来且限制了httponly是无法访问的
|
|
6416
|
+
* @example
|
|
6417
|
+
let GM_cookie = new Utils.GM_Cookie();
|
|
6418
|
+
GM_cookie.list({name:"xxx_cookie_xxx"},function(cookies,error){
|
|
6419
|
+
if (!error) {
|
|
6420
|
+
console.log(cookies);
|
|
6421
|
+
console.log(cookies.value);
|
|
6422
|
+
} else {
|
|
6423
|
+
console.error(error);
|
|
6424
|
+
}
|
|
6425
|
+
});
|
|
6426
|
+
GM_cookie.set({name:"xxx_cookie_test_xxx",value:"这是Cookie测试值"},function(error){
|
|
6427
|
+
if (error) {
|
|
6428
|
+
console.error(error);
|
|
6429
|
+
} else {
|
|
6430
|
+
console.log('Cookie set successfully.');
|
|
6431
|
+
}
|
|
6432
|
+
})
|
|
6433
|
+
GM_cookie.delete({name:"xxx_cookie_test_xxx"},function(error){
|
|
6434
|
+
if (error) {
|
|
6435
|
+
console.error(error);
|
|
6436
|
+
} else {
|
|
6437
|
+
console.log('Cookie set successfully.');
|
|
6438
|
+
}
|
|
6439
|
+
})
|
|
6440
|
+
**/
|
|
6428
6441
|
GM_Cookie = UtilsGMCookie;
|
|
6429
6442
|
/**
|
|
6430
|
-
|
|
6431
|
-
|
|
6432
|
-
|
|
6433
|
-
|
|
6434
|
-
|
|
6435
|
-
|
|
6436
|
-
|
|
6437
|
-
|
|
6438
|
-
|
|
6439
|
-
|
|
6440
|
-
|
|
6441
|
-
|
|
6443
|
+
* 注册油猴菜单,要求本地存储的键名不能存在其它键名`GM_Menu_Local_Map`会冲突/覆盖
|
|
6444
|
+
* @example
|
|
6445
|
+
let GM_Menu = new Utils.GM_Menu({
|
|
6446
|
+
data: [
|
|
6447
|
+
{
|
|
6448
|
+
menu_key: "menu_key",
|
|
6449
|
+
text: "测试按钮",
|
|
6450
|
+
enable: true,
|
|
6451
|
+
accessKey: "a",
|
|
6452
|
+
autoClose: false,
|
|
6453
|
+
showText(text, enable) {
|
|
6454
|
+
return "[" + (enable ? "√" : "×") + "]" + text;
|
|
6455
|
+
},
|
|
6456
|
+
callback(data) {
|
|
6457
|
+
console.log("点击菜单,值修改为", data.enable);
|
|
6458
|
+
},
|
|
6442
6459
|
},
|
|
6443
|
-
|
|
6444
|
-
|
|
6445
|
-
|
|
6446
|
-
|
|
6447
|
-
|
|
6448
|
-
|
|
6449
|
-
|
|
6450
|
-
|
|
6451
|
-
|
|
6452
|
-
|
|
6453
|
-
|
|
6454
|
-
|
|
6455
|
-
|
|
6456
|
-
|
|
6457
|
-
|
|
6458
|
-
|
|
6459
|
-
|
|
6460
|
-
|
|
6461
|
-
|
|
6462
|
-
|
|
6463
|
-
|
|
6464
|
-
// 添加键为menu_key2的菜单项
|
|
6465
|
-
GM_Menu.add({
|
|
6466
|
-
key:"menu_key2",
|
|
6467
|
-
text: "测试按钮2",
|
|
6468
|
-
enable: false,
|
|
6469
|
-
showText(text,enable){
|
|
6470
|
-
return "[" + (enable ? "√" : "×") + "]" + text;
|
|
6471
|
-
},
|
|
6472
|
-
callback(data){
|
|
6473
|
-
console.log("点击菜单,值修改为",data.enable);
|
|
6474
|
-
}
|
|
6475
|
-
});
|
|
6476
|
-
// 使用数组的方式添加多个菜单,如menu_key3、menu_key4
|
|
6477
|
-
GM_Menu.add([
|
|
6478
|
-
{
|
|
6479
|
-
key:"menu_key3",
|
|
6480
|
-
text: "测试按钮3",
|
|
6460
|
+
],
|
|
6461
|
+
autoReload: false,
|
|
6462
|
+
GM_getValue,
|
|
6463
|
+
GM_setValue,
|
|
6464
|
+
GM_registerMenuCommand,
|
|
6465
|
+
GM_unregisterMenuCommand,
|
|
6466
|
+
});
|
|
6467
|
+
|
|
6468
|
+
|
|
6469
|
+
// 获取某个菜单项的值
|
|
6470
|
+
GM_Menu.get("menu_key");
|
|
6471
|
+
> true
|
|
6472
|
+
|
|
6473
|
+
// 获取某个菜单项的开启/关闭后显示的文本
|
|
6474
|
+
GM_Menu.getShowTextValue("menu_key");
|
|
6475
|
+
> √测试按钮
|
|
6476
|
+
|
|
6477
|
+
// 添加键为menu_key2的菜单项
|
|
6478
|
+
GM_Menu.add({
|
|
6479
|
+
key:"menu_key2",
|
|
6480
|
+
text: "测试按钮2",
|
|
6481
6481
|
enable: false,
|
|
6482
6482
|
showText(text,enable){
|
|
6483
6483
|
return "[" + (enable ? "√" : "×") + "]" + text;
|
|
@@ -6485,152 +6485,165 @@ System.register('Utils', [], (function (exports) {
|
|
|
6485
6485
|
callback(data){
|
|
6486
6486
|
console.log("点击菜单,值修改为",data.enable);
|
|
6487
6487
|
}
|
|
6488
|
-
}
|
|
6489
|
-
|
|
6490
|
-
|
|
6491
|
-
|
|
6492
|
-
|
|
6493
|
-
|
|
6494
|
-
|
|
6488
|
+
});
|
|
6489
|
+
// 使用数组的方式添加多个菜单,如menu_key3、menu_key4
|
|
6490
|
+
GM_Menu.add([
|
|
6491
|
+
{
|
|
6492
|
+
key:"menu_key3",
|
|
6493
|
+
text: "测试按钮3",
|
|
6494
|
+
enable: false,
|
|
6495
|
+
showText(text,enable){
|
|
6496
|
+
return "[" + (enable ? "√" : "×") + "]" + text;
|
|
6497
|
+
},
|
|
6498
|
+
callback(data){
|
|
6499
|
+
console.log("点击菜单,值修改为",data.enable);
|
|
6500
|
+
}
|
|
6495
6501
|
},
|
|
6496
|
-
|
|
6497
|
-
|
|
6502
|
+
{
|
|
6503
|
+
key:"menu_key4",
|
|
6504
|
+
text: "测试按钮4",
|
|
6505
|
+
enable: false,
|
|
6506
|
+
showText(text,enable){
|
|
6507
|
+
return "[" + (enable ? "√" : "×") + "]" + text;
|
|
6508
|
+
},
|
|
6509
|
+
callback(data){
|
|
6510
|
+
console.log("点击菜单,值修改为",data.enable);
|
|
6511
|
+
}
|
|
6498
6512
|
}
|
|
6499
|
-
|
|
6500
|
-
|
|
6501
|
-
|
|
6502
|
-
|
|
6503
|
-
|
|
6504
|
-
|
|
6505
|
-
|
|
6506
|
-
|
|
6507
|
-
|
|
6508
|
-
|
|
6509
|
-
|
|
6510
|
-
|
|
6511
|
-
|
|
6513
|
+
]);
|
|
6514
|
+
|
|
6515
|
+
// 更新键为menu_key的显示文字和点击回调
|
|
6516
|
+
GM_Menu.update({
|
|
6517
|
+
menu_key:{
|
|
6518
|
+
text: "更新后的测试按钮",
|
|
6519
|
+
enable: true,
|
|
6520
|
+
showText(text,enable){
|
|
6521
|
+
return "[" + (enable ? "√" : "×") + "]" + text;
|
|
6522
|
+
},
|
|
6523
|
+
callback(data){
|
|
6524
|
+
console.log("点击菜单更新后的测试按钮,新值修改为",data.enable);
|
|
6525
|
+
}
|
|
6512
6526
|
}
|
|
6513
|
-
}
|
|
6514
|
-
|
|
6515
|
-
|
|
6516
|
-
|
|
6517
|
-
|
|
6518
|
-
**/
|
|
6527
|
+
});
|
|
6528
|
+
|
|
6529
|
+
// 删除键为menu_key的菜单
|
|
6530
|
+
GM_Menu.delete("menu_key");
|
|
6531
|
+
**/
|
|
6519
6532
|
GM_Menu = GMMenu;
|
|
6520
6533
|
/**
|
|
6521
|
-
|
|
6522
|
-
|
|
6523
|
-
|
|
6524
|
-
|
|
6525
|
-
|
|
6526
|
-
|
|
6527
|
-
|
|
6528
|
-
|
|
6529
|
-
|
|
6530
|
-
|
|
6531
|
-
|
|
6532
|
-
|
|
6533
|
-
|
|
6534
|
-
|
|
6535
|
-
|
|
6536
|
-
|
|
6537
|
-
|
|
6538
|
-
|
|
6539
|
-
|
|
6540
|
-
|
|
6541
|
-
|
|
6542
|
-
|
|
6543
|
-
|
|
6534
|
+
* 基于Function prototype,能够勾住和释放任何函数
|
|
6535
|
+
*
|
|
6536
|
+
* .hook
|
|
6537
|
+
* + realFunc {string} 用于保存原始函数的函数名称,用于unHook
|
|
6538
|
+
* + hookFunc {string} 替换的hook函数
|
|
6539
|
+
* + context {object} 目标函数所在对象,用于hook非window对象下的函数,如String.protype.slice,carInstance1
|
|
6540
|
+
* + methodName {string} 匿名函数需显式传入目标函数名eg:this.Begin = function(){....};}
|
|
6541
|
+
*
|
|
6542
|
+
* .unhook
|
|
6543
|
+
* + realFunc {string} 用于保存原始函数的函数名称,用于unHook
|
|
6544
|
+
* + funcName {string} 被Hook的函数名称
|
|
6545
|
+
* + context {object} 目标函数所在对象,用于hook非window对象下的函数,如String.protype.slice,carInstance1
|
|
6546
|
+
* @example
|
|
6547
|
+
let hook = new Utils.Hooks();
|
|
6548
|
+
hook.initEnv();
|
|
6549
|
+
function myFunction(){
|
|
6550
|
+
console.log("我自己需要执行的函数");
|
|
6551
|
+
}
|
|
6552
|
+
function testFunction(){
|
|
6553
|
+
console.log("正常执行的函数");
|
|
6554
|
+
}
|
|
6555
|
+
testFunction.hook(testFunction,myFunction,window);
|
|
6556
|
+
**/
|
|
6544
6557
|
Hooks = Hooks;
|
|
6545
6558
|
/**
|
|
6546
|
-
|
|
6547
|
-
|
|
6548
|
-
|
|
6549
|
-
|
|
6550
|
-
|
|
6551
|
-
|
|
6552
|
-
|
|
6553
|
-
|
|
6554
|
-
|
|
6555
|
-
|
|
6556
|
-
|
|
6557
|
-
|
|
6558
|
-
|
|
6559
|
-
|
|
6560
|
-
|
|
6561
|
-
|
|
6562
|
-
|
|
6563
|
-
|
|
6564
|
-
|
|
6565
|
-
|
|
6566
|
-
|
|
6567
|
-
|
|
6568
|
-
|
|
6569
|
-
|
|
6570
|
-
|
|
6571
|
-
|
|
6572
|
-
|
|
6573
|
-
|
|
6574
|
-
|
|
6575
|
-
|
|
6576
|
-
|
|
6577
|
-
|
|
6578
|
-
|
|
6579
|
-
|
|
6580
|
-
|
|
6581
|
-
|
|
6582
|
-
|
|
6559
|
+
* 为减少代码量和回调,把GM_xmlhttpRequest封装
|
|
6560
|
+
* 文档地址: https://www.tampermonkey.net/documentation.php?ext=iikm
|
|
6561
|
+
* 其中onloadstart、onprogress、onreadystatechange是回调形式,onabort、ontimeout、onerror可以设置全局回调函数
|
|
6562
|
+
* @param _GM_xmlHttpRequest_ 油猴中的GM_xmlhttpRequest
|
|
6563
|
+
* @example
|
|
6564
|
+
let httpx = new Utils.Httpx(GM_xmlhttpRequest);
|
|
6565
|
+
let postResp = await httpx.post({
|
|
6566
|
+
url:url,
|
|
6567
|
+
data:JSON.stringify({
|
|
6568
|
+
test:1
|
|
6569
|
+
}),
|
|
6570
|
+
timeout: 5000
|
|
6571
|
+
});
|
|
6572
|
+
console.log(postResp);
|
|
6573
|
+
> {
|
|
6574
|
+
status: true,
|
|
6575
|
+
data: {responseText: "...", response: xxx,...},
|
|
6576
|
+
msg: "请求完毕",
|
|
6577
|
+
type: "onload",
|
|
6578
|
+
}
|
|
6579
|
+
|
|
6580
|
+
if(postResp === "onload" && postResp.status){
|
|
6581
|
+
// onload
|
|
6582
|
+
}else if(postResp === "ontimeout"){
|
|
6583
|
+
// ontimeout
|
|
6584
|
+
}
|
|
6585
|
+
* @example
|
|
6586
|
+
// 也可以先配置全局参数
|
|
6587
|
+
let httpx = new Utils.Httpx(GM_xmlhttpRequest);
|
|
6588
|
+
httpx.config({
|
|
6589
|
+
timeout: 5000,
|
|
6590
|
+
async: false,
|
|
6591
|
+
responseType: "html",
|
|
6592
|
+
redirect: "follow",
|
|
6593
|
+
})
|
|
6594
|
+
// 优先级为 默认details < 全局details < 单独的details
|
|
6595
|
+
*/
|
|
6583
6596
|
Httpx = Httpx;
|
|
6584
6597
|
/**
|
|
6585
|
-
|
|
6586
|
-
|
|
6587
|
-
|
|
6588
|
-
|
|
6589
|
-
|
|
6590
|
-
|
|
6591
|
-
|
|
6592
|
-
|
|
6593
|
-
|
|
6594
|
-
|
|
6595
|
-
|
|
6596
|
-
|
|
6597
|
-
|
|
6598
|
-
|
|
6599
|
-
|
|
6600
|
-
|
|
6601
|
-
|
|
6602
|
-
|
|
6603
|
-
|
|
6604
|
-
|
|
6605
|
-
|
|
6606
|
-
|
|
6607
|
-
|
|
6608
|
-
|
|
6598
|
+
* 浏览器端的indexedDB操作封装
|
|
6599
|
+
* @example
|
|
6600
|
+
let db = new Utils.indexedDB('web_DB', 'nav_text')
|
|
6601
|
+
let data = {name:'管理员', roleId: 1, type: 1};
|
|
6602
|
+
db.save('list',data).then((resolve)=>{
|
|
6603
|
+
console.log(resolve,'存储成功')
|
|
6604
|
+
})
|
|
6605
|
+
|
|
6606
|
+
db.get('list').then((resolve)=>{
|
|
6607
|
+
console.log(resolve,'查询成功')
|
|
6608
|
+
})
|
|
6609
|
+
|
|
6610
|
+
db.getPaging('list',20,10).then((resolve)=>{
|
|
6611
|
+
console.log(resolve,'查询分页偏移第20,一共10行成功');
|
|
6612
|
+
})
|
|
6613
|
+
|
|
6614
|
+
db.delete('list').then(resolve=>{
|
|
6615
|
+
console.log(resolve,'删除成功---->>>>>>name')
|
|
6616
|
+
})
|
|
6617
|
+
|
|
6618
|
+
db.deleteAll().then(resolve=>{
|
|
6619
|
+
console.log(resolve,'清除数据库---->>>>>>name')
|
|
6620
|
+
})
|
|
6621
|
+
**/
|
|
6609
6622
|
indexedDB = indexedDB;
|
|
6610
6623
|
isNativeFunc(target) {
|
|
6611
6624
|
return Boolean(target.toString().match(/^function .*\(\) { \[native code\] }$/));
|
|
6612
6625
|
}
|
|
6613
6626
|
isNearBottom(...args) {
|
|
6614
6627
|
let nearBottomHeight = 50;
|
|
6615
|
-
|
|
6628
|
+
const checkWindow = () => {
|
|
6616
6629
|
// 已滚动的距离
|
|
6617
|
-
|
|
6630
|
+
const scrollTop = this.windowApi.window.pageYOffset || this.windowApi.document.documentElement.scrollTop;
|
|
6618
6631
|
// 视窗高度
|
|
6619
|
-
|
|
6632
|
+
const viewportHeight = this.windowApi.window.innerHeight || this.windowApi.document.documentElement.clientHeight;
|
|
6620
6633
|
// 最大滚动距离
|
|
6621
|
-
|
|
6634
|
+
const maxScrollHeight = this.windowApi.document.documentElement.scrollHeight - nearBottomHeight;
|
|
6622
6635
|
return scrollTop + viewportHeight >= maxScrollHeight;
|
|
6623
6636
|
};
|
|
6624
|
-
|
|
6637
|
+
const checkNode = ($ele) => {
|
|
6625
6638
|
// 已滚动的距离
|
|
6626
|
-
|
|
6639
|
+
const scrollTop = $ele.scrollTop;
|
|
6627
6640
|
// 视窗高度
|
|
6628
|
-
|
|
6641
|
+
const viewportHeight = $ele.clientHeight;
|
|
6629
6642
|
// 最大滚动距离
|
|
6630
|
-
|
|
6643
|
+
const maxScrollHeight = $ele.scrollHeight - viewportHeight - nearBottomHeight;
|
|
6631
6644
|
return scrollTop >= maxScrollHeight;
|
|
6632
6645
|
};
|
|
6633
|
-
|
|
6646
|
+
const firstArg = args[0];
|
|
6634
6647
|
if (args.length === 0 || typeof args[0] === "number") {
|
|
6635
6648
|
// nearBottomHeight
|
|
6636
6649
|
//
|
|
@@ -6645,7 +6658,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
6645
6658
|
return checkNode(args[0]);
|
|
6646
6659
|
}
|
|
6647
6660
|
else {
|
|
6648
|
-
throw new TypeError(
|
|
6661
|
+
throw new TypeError(`参数1类型错误${typeof firstArg}`);
|
|
6649
6662
|
}
|
|
6650
6663
|
}
|
|
6651
6664
|
/**
|
|
@@ -6675,7 +6688,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
6675
6688
|
}
|
|
6676
6689
|
if (typeof target === "object") {
|
|
6677
6690
|
/* 也有种可能,这个jQuery对象是1.8.3版本的,页面中的jQuery是3.4.1版本的 */
|
|
6678
|
-
|
|
6691
|
+
const jQueryProps = [
|
|
6679
6692
|
"add",
|
|
6680
6693
|
"addBack",
|
|
6681
6694
|
"addClass",
|
|
@@ -6859,50 +6872,50 @@ System.register('Utils', [], (function (exports) {
|
|
|
6859
6872
|
*/
|
|
6860
6873
|
isNotNull = commonUtil.isNotNull.bind(commonUtil);
|
|
6861
6874
|
/**
|
|
6862
|
-
|
|
6863
|
-
|
|
6864
|
-
|
|
6865
|
-
|
|
6866
|
-
|
|
6867
|
-
|
|
6868
|
-
|
|
6869
|
-
|
|
6870
|
-
|
|
6871
|
-
|
|
6872
|
-
|
|
6873
|
-
|
|
6874
|
-
|
|
6875
|
-
|
|
6876
|
-
|
|
6877
|
-
|
|
6878
|
-
|
|
6879
|
-
|
|
6880
|
-
|
|
6881
|
-
|
|
6882
|
-
|
|
6883
|
-
|
|
6884
|
-
|
|
6885
|
-
|
|
6886
|
-
|
|
6887
|
-
|
|
6888
|
-
|
|
6889
|
-
|
|
6890
|
-
|
|
6891
|
-
|
|
6892
|
-
|
|
6893
|
-
|
|
6894
|
-
|
|
6895
|
-
|
|
6896
|
-
|
|
6897
|
-
|
|
6898
|
-
|
|
6899
|
-
|
|
6900
|
-
|
|
6901
|
-
|
|
6902
|
-
|
|
6903
|
-
|
|
6904
|
-
|
|
6905
|
-
|
|
6875
|
+
* 判断对象或数据是否为空
|
|
6876
|
+
* + `String`判空的值,如 ""、"null"、"undefined"、" "
|
|
6877
|
+
* + `Number`判空的值,如 0
|
|
6878
|
+
* + `Object`判空的值,如 {}、null、undefined
|
|
6879
|
+
* + `Array`(存在属性Symbol.iterator)判空的值,如 []
|
|
6880
|
+
* + `Boolean`判空的值,如false
|
|
6881
|
+
* + `Function`判空的值,如()=>{}、(xxx="")=>{}、function(){}、function(xxx=""){}
|
|
6882
|
+
* @returns
|
|
6883
|
+
* + true 为空
|
|
6884
|
+
* + false 不为空
|
|
6885
|
+
* @example
|
|
6886
|
+
Utils.isNull({});
|
|
6887
|
+
> true
|
|
6888
|
+
* @example
|
|
6889
|
+
Utils.isNull([]);
|
|
6890
|
+
> true
|
|
6891
|
+
* @example
|
|
6892
|
+
Utils.isNull(" ");
|
|
6893
|
+
> true
|
|
6894
|
+
* @example
|
|
6895
|
+
Utils.isNull(function(){});
|
|
6896
|
+
> true
|
|
6897
|
+
* @example
|
|
6898
|
+
Utils.isNull(()=>{}));
|
|
6899
|
+
> true
|
|
6900
|
+
* @example
|
|
6901
|
+
Utils.isNull("undefined");
|
|
6902
|
+
> true
|
|
6903
|
+
* @example
|
|
6904
|
+
Utils.isNull("null");
|
|
6905
|
+
> true
|
|
6906
|
+
* @example
|
|
6907
|
+
Utils.isNull(" ", false);
|
|
6908
|
+
> true
|
|
6909
|
+
* @example
|
|
6910
|
+
Utils.isNull([1],[]);
|
|
6911
|
+
> false
|
|
6912
|
+
* @example
|
|
6913
|
+
Utils.isNull([],[1]);
|
|
6914
|
+
> false
|
|
6915
|
+
* @example
|
|
6916
|
+
Utils.isNull(false,[123]);
|
|
6917
|
+
> false
|
|
6918
|
+
**/
|
|
6906
6919
|
isNull = commonUtil.isNull.bind(commonUtil);
|
|
6907
6920
|
isThemeDark() {
|
|
6908
6921
|
return this.windowApi.globalThis.matchMedia("(prefers-color-scheme: dark)").matches;
|
|
@@ -6931,15 +6944,15 @@ System.register('Utils', [], (function (exports) {
|
|
|
6931
6944
|
}
|
|
6932
6945
|
let result = true;
|
|
6933
6946
|
for (const domItem of needCheckDomList) {
|
|
6934
|
-
|
|
6947
|
+
const domDisplay = this.windowApi.window.getComputedStyle(domItem);
|
|
6935
6948
|
if (domDisplay.display === "none") {
|
|
6936
6949
|
result = false;
|
|
6937
6950
|
}
|
|
6938
6951
|
else {
|
|
6939
|
-
|
|
6952
|
+
const domClientRect = domItem.getBoundingClientRect();
|
|
6940
6953
|
if (inView) {
|
|
6941
|
-
|
|
6942
|
-
|
|
6954
|
+
const viewportWidth = this.windowApi.window.innerWidth || this.windowApi.document.documentElement.clientWidth;
|
|
6955
|
+
const viewportHeight = this.windowApi.window.innerHeight || this.windowApi.document.documentElement.clientHeight;
|
|
6943
6956
|
result = !(domClientRect.right < 0 ||
|
|
6944
6957
|
domClientRect.left > viewportWidth ||
|
|
6945
6958
|
domClientRect.bottom < 0 ||
|
|
@@ -6958,11 +6971,11 @@ System.register('Utils', [], (function (exports) {
|
|
|
6958
6971
|
}
|
|
6959
6972
|
isWebView_Via() {
|
|
6960
6973
|
let result = true;
|
|
6961
|
-
|
|
6974
|
+
const UtilsContext = this;
|
|
6962
6975
|
if (typeof this.windowApi.top.window.via === "object") {
|
|
6963
6976
|
for (const key in Object.values(this.windowApi.top.window.via)) {
|
|
6964
6977
|
if (Reflect.has(this.windowApi.top.window.via, key)) {
|
|
6965
|
-
|
|
6978
|
+
const objValueFunc = this.windowApi.top.window.via[key];
|
|
6966
6979
|
if (typeof objValueFunc === "function" && UtilsContext.isNativeFunc(objValueFunc)) {
|
|
6967
6980
|
result = true;
|
|
6968
6981
|
}
|
|
@@ -6980,11 +6993,11 @@ System.register('Utils', [], (function (exports) {
|
|
|
6980
6993
|
}
|
|
6981
6994
|
isWebView_X() {
|
|
6982
6995
|
let result = true;
|
|
6983
|
-
|
|
6996
|
+
const UtilsContext = this;
|
|
6984
6997
|
if (typeof this.windowApi.top.window.mbrowser === "object") {
|
|
6985
6998
|
for (const key in Object.values(this.windowApi.top.window.mbrowser)) {
|
|
6986
6999
|
if (Reflect.has(this.windowApi.top.window.mbrowser, key)) {
|
|
6987
|
-
|
|
7000
|
+
const objValueFunc = this.windowApi.top.window.mbrowser[key];
|
|
6988
7001
|
if (typeof objValueFunc === "function" && UtilsContext.isNativeFunc(objValueFunc)) {
|
|
6989
7002
|
result = true;
|
|
6990
7003
|
}
|
|
@@ -7011,46 +7024,46 @@ System.register('Utils', [], (function (exports) {
|
|
|
7011
7024
|
return result;
|
|
7012
7025
|
}
|
|
7013
7026
|
/**
|
|
7014
|
-
|
|
7015
|
-
|
|
7016
|
-
|
|
7017
|
-
|
|
7018
|
-
|
|
7019
|
-
|
|
7020
|
-
|
|
7021
|
-
|
|
7022
|
-
|
|
7023
|
-
|
|
7027
|
+
* 自动锁对象,用于循环判断运行的函数,在循环外new后使用,注意,如果函数内部存在异步操作,需要使用await
|
|
7028
|
+
* @example
|
|
7029
|
+
let lock = new Utils.LockFunction(()=>{console.log(1)}))
|
|
7030
|
+
lock.run();
|
|
7031
|
+
> 1
|
|
7032
|
+
* @example
|
|
7033
|
+
let lock = new Utils.LockFunction(()=>{console.log(1)}),true) -- 异步操作
|
|
7034
|
+
await lock.run();
|
|
7035
|
+
> 1
|
|
7036
|
+
**/
|
|
7024
7037
|
LockFunction = LockFunction;
|
|
7025
7038
|
/**
|
|
7026
|
-
|
|
7027
|
-
|
|
7028
|
-
|
|
7029
|
-
|
|
7030
|
-
|
|
7031
|
-
|
|
7032
|
-
|
|
7033
|
-
|
|
7034
|
-
|
|
7035
|
-
|
|
7036
|
-
|
|
7037
|
-
|
|
7038
|
-
|
|
7039
|
-
|
|
7040
|
-
|
|
7041
|
-
|
|
7042
|
-
|
|
7043
|
-
|
|
7044
|
-
|
|
7045
|
-
|
|
7046
|
-
|
|
7047
|
-
|
|
7048
|
-
|
|
7049
|
-
|
|
7050
|
-
|
|
7051
|
-
|
|
7052
|
-
|
|
7053
|
-
|
|
7039
|
+
* 日志对象
|
|
7040
|
+
* @param _GM_info_ 油猴管理器的API GM_info,或者是一个对象,如{"script":{name:"Utils.Log"}}
|
|
7041
|
+
* @example
|
|
7042
|
+
let log = new Utils.Log(GM_info);
|
|
7043
|
+
log.info("普通输出");
|
|
7044
|
+
> 普通输出
|
|
7045
|
+
|
|
7046
|
+
log.success("成功输出");
|
|
7047
|
+
> 成功输出
|
|
7048
|
+
|
|
7049
|
+
log.error("错误输出");
|
|
7050
|
+
> 错误输出
|
|
7051
|
+
|
|
7052
|
+
log.warn("警告输出");
|
|
7053
|
+
> 警告输出
|
|
7054
|
+
|
|
7055
|
+
log.tag = "自定义tag信息";
|
|
7056
|
+
log.info("自定义info的颜色","#e0e0e0");
|
|
7057
|
+
> 自定义info的颜色
|
|
7058
|
+
|
|
7059
|
+
log.config({
|
|
7060
|
+
successColor: "#31dc02",
|
|
7061
|
+
errorColor: "#e02d2d",
|
|
7062
|
+
infoColor: "black",
|
|
7063
|
+
})
|
|
7064
|
+
log.success("颜色为#31dc02");
|
|
7065
|
+
> 颜色为#31dc02
|
|
7066
|
+
*/
|
|
7054
7067
|
Log = Log;
|
|
7055
7068
|
mergeArrayToString(data, handleFunc) {
|
|
7056
7069
|
if (!(data instanceof Array)) {
|
|
@@ -7079,8 +7092,8 @@ System.register('Utils', [], (function (exports) {
|
|
|
7079
7092
|
return content;
|
|
7080
7093
|
}
|
|
7081
7094
|
mutationObserver(target, observer_config) {
|
|
7082
|
-
|
|
7083
|
-
|
|
7095
|
+
const UtilsContext = this;
|
|
7096
|
+
const default_obverser_config = {
|
|
7084
7097
|
/* 监听到元素有反馈,需执行的函数 */
|
|
7085
7098
|
callback: () => { },
|
|
7086
7099
|
config: {
|
|
@@ -7122,11 +7135,11 @@ System.register('Utils', [], (function (exports) {
|
|
|
7122
7135
|
immediate: false,
|
|
7123
7136
|
};
|
|
7124
7137
|
observer_config = UtilsContext.assign(default_obverser_config, observer_config);
|
|
7125
|
-
|
|
7138
|
+
const windowMutationObserver = this.windowApi.window.MutationObserver ||
|
|
7126
7139
|
this.windowApi.window.webkitMutationObserver ||
|
|
7127
7140
|
this.windowApi.window.MozMutationObserver;
|
|
7128
7141
|
// 观察者对象
|
|
7129
|
-
|
|
7142
|
+
const mutationObserver = new windowMutationObserver(function (mutations, observer) {
|
|
7130
7143
|
if (typeof observer_config.callback === "function") {
|
|
7131
7144
|
observer_config.callback(mutations, observer);
|
|
7132
7145
|
}
|
|
@@ -7139,7 +7152,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
7139
7152
|
}
|
|
7140
7153
|
else if (UtilsContext.isJQuery(target)) {
|
|
7141
7154
|
/* 传入的参数是jQuery对象 */
|
|
7142
|
-
target.each((
|
|
7155
|
+
target.each((_, item) => {
|
|
7143
7156
|
mutationObserver.observe(item, observer_config.config);
|
|
7144
7157
|
});
|
|
7145
7158
|
}
|
|
@@ -7177,7 +7190,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
7177
7190
|
threshold: [0.01, 0.99],
|
|
7178
7191
|
};
|
|
7179
7192
|
defaultOptions = this.assign(defaultOptions, options || {});
|
|
7180
|
-
|
|
7193
|
+
const intersectionObserver = new IntersectionObserver((entries, observer) => {
|
|
7181
7194
|
if (entries[0].isIntersecting) {
|
|
7182
7195
|
if (typeof callback === "function") {
|
|
7183
7196
|
callback(entries, observer);
|
|
@@ -7207,7 +7220,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
7207
7220
|
return utils;
|
|
7208
7221
|
}
|
|
7209
7222
|
noConflictFunc(needReleaseObject, needReleaseName, functionNameList = [], release = true) {
|
|
7210
|
-
|
|
7223
|
+
const UtilsContext = this;
|
|
7211
7224
|
if (typeof needReleaseObject !== "object") {
|
|
7212
7225
|
throw new Error("Utils.noConflictFunc 参数 needReleaseObject 必须为 object 类型");
|
|
7213
7226
|
}
|
|
@@ -7217,7 +7230,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
7217
7230
|
if (!Array.isArray(functionNameList)) {
|
|
7218
7231
|
throw new Error("Utils.noConflictFunc 参数 functionNameList 必须为 Array 类型");
|
|
7219
7232
|
}
|
|
7220
|
-
|
|
7233
|
+
const needReleaseKey = `__${needReleaseName}`;
|
|
7221
7234
|
/**
|
|
7222
7235
|
* 释放所有
|
|
7223
7236
|
*/
|
|
@@ -7305,7 +7318,9 @@ System.register('Utils', [], (function (exports) {
|
|
|
7305
7318
|
if (typeof dataUri !== "string") {
|
|
7306
7319
|
throw new Error("Utils.parseBase64ToBlob 参数 dataUri 必须为 string 类型");
|
|
7307
7320
|
}
|
|
7308
|
-
|
|
7321
|
+
const dataUriSplit = dataUri.split(","), dataUriMime = dataUriSplit[0].match(/:(.*?);/)[1], dataUriBase64Str = atob(dataUriSplit[1]);
|
|
7322
|
+
let dataUriLength = dataUriBase64Str.length;
|
|
7323
|
+
const u8arr = new Uint8Array(dataUriLength);
|
|
7309
7324
|
while (dataUriLength--) {
|
|
7310
7325
|
u8arr[dataUriLength] = dataUriBase64Str.charCodeAt(dataUriLength);
|
|
7311
7326
|
}
|
|
@@ -7320,7 +7335,9 @@ System.register('Utils', [], (function (exports) {
|
|
|
7320
7335
|
if (typeof fileName !== "string") {
|
|
7321
7336
|
throw new Error("Utils.parseBase64ToFile 参数 fileName 必须为 string 类型");
|
|
7322
7337
|
}
|
|
7323
|
-
|
|
7338
|
+
const dataUriSplit = dataUri.split(","), dataUriMime = dataUriSplit[0].match(/:(.*?);/)[1], dataUriBase64Str = atob(dataUriSplit[1]);
|
|
7339
|
+
let dataUriLength = dataUriBase64Str.length;
|
|
7340
|
+
const u8arr = new Uint8Array(dataUriLength);
|
|
7324
7341
|
while (dataUriLength--) {
|
|
7325
7342
|
u8arr[dataUriLength] = dataUriBase64Str.charCodeAt(dataUriLength);
|
|
7326
7343
|
}
|
|
@@ -7354,15 +7371,15 @@ System.register('Utils', [], (function (exports) {
|
|
|
7354
7371
|
}
|
|
7355
7372
|
parseCDATA(text = "") {
|
|
7356
7373
|
let result = "";
|
|
7357
|
-
|
|
7358
|
-
|
|
7374
|
+
const cdataRegexp = /<!\[CDATA\[([\s\S]*)\]\]>/;
|
|
7375
|
+
const cdataMatch = cdataRegexp.exec(text.trim());
|
|
7359
7376
|
if (cdataMatch && cdataMatch.length > 1) {
|
|
7360
7377
|
result = cdataMatch[cdataMatch.length - 1];
|
|
7361
7378
|
}
|
|
7362
7379
|
return result;
|
|
7363
7380
|
}
|
|
7364
7381
|
async parseFileToBase64(fileObj) {
|
|
7365
|
-
|
|
7382
|
+
const reader = new FileReader();
|
|
7366
7383
|
reader.readAsDataURL(fileObj);
|
|
7367
7384
|
return new Promise((resolve) => {
|
|
7368
7385
|
reader.onload = function (event) {
|
|
@@ -7371,14 +7388,14 @@ System.register('Utils', [], (function (exports) {
|
|
|
7371
7388
|
});
|
|
7372
7389
|
}
|
|
7373
7390
|
parseFromString(text, mimeType = "text/html") {
|
|
7374
|
-
|
|
7391
|
+
const parser = new DOMParser();
|
|
7375
7392
|
return parser.parseFromString(text, mimeType);
|
|
7376
7393
|
}
|
|
7377
7394
|
parseStringToRegExpString(text) {
|
|
7378
7395
|
if (typeof text !== "string") {
|
|
7379
7396
|
throw new TypeError("string必须是字符串");
|
|
7380
7397
|
}
|
|
7381
|
-
|
|
7398
|
+
const regString = text.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&");
|
|
7382
7399
|
return regString;
|
|
7383
7400
|
}
|
|
7384
7401
|
preventEvent(element, eventNameList = [], capture) {
|
|
@@ -7393,6 +7410,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
7393
7410
|
}
|
|
7394
7411
|
if (arguments.length === 1) {
|
|
7395
7412
|
/* 直接阻止事件 */
|
|
7413
|
+
// eslint-disable-next-line prefer-rest-params
|
|
7396
7414
|
return stopEvent(arguments[0]);
|
|
7397
7415
|
}
|
|
7398
7416
|
else {
|
|
@@ -7408,11 +7426,11 @@ System.register('Utils', [], (function (exports) {
|
|
|
7408
7426
|
}
|
|
7409
7427
|
}
|
|
7410
7428
|
/**
|
|
7411
|
-
|
|
7412
|
-
|
|
7413
|
-
|
|
7414
|
-
|
|
7415
|
-
|
|
7429
|
+
* 在canvas元素节点上绘制进度圆圈
|
|
7430
|
+
* @example
|
|
7431
|
+
let progress = new Utils.Process({canvasNode:document.querySelector("canvas")});
|
|
7432
|
+
progress.draw();
|
|
7433
|
+
* **/
|
|
7416
7434
|
Progress = Progress;
|
|
7417
7435
|
registerTrustClickEvent(isTrustValue = true, filter) {
|
|
7418
7436
|
function trustEvent(event) {
|
|
@@ -7434,8 +7452,8 @@ System.register('Utils', [], (function (exports) {
|
|
|
7434
7452
|
}
|
|
7435
7453
|
const originalListener = EventTarget.prototype.addEventListener;
|
|
7436
7454
|
EventTarget.prototype.addEventListener = function (...args) {
|
|
7437
|
-
|
|
7438
|
-
|
|
7455
|
+
const type = args[0];
|
|
7456
|
+
const callback = args[1];
|
|
7439
7457
|
// let options = args[2];
|
|
7440
7458
|
if (filter(type)) {
|
|
7441
7459
|
if (typeof callback === "function") {
|
|
@@ -7444,7 +7462,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
7444
7462
|
};
|
|
7445
7463
|
}
|
|
7446
7464
|
else if (typeof callback === "object" && "handleEvent" in callback) {
|
|
7447
|
-
|
|
7465
|
+
const oldHandleEvent = callback["handleEvent"];
|
|
7448
7466
|
args[1]["handleEvent"] = function (event) {
|
|
7449
7467
|
if (event == null) {
|
|
7450
7468
|
return;
|
|
@@ -7455,7 +7473,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
7455
7473
|
event instanceof Proxy;
|
|
7456
7474
|
oldHandleEvent.call(this, trustEvent(event));
|
|
7457
7475
|
}
|
|
7458
|
-
catch
|
|
7476
|
+
catch {
|
|
7459
7477
|
Reflect.set(event, "isTrusted", isTrustValue);
|
|
7460
7478
|
}
|
|
7461
7479
|
};
|
|
@@ -7478,7 +7496,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
7478
7496
|
return isNegative ? -reversedNum : reversedNum;
|
|
7479
7497
|
}
|
|
7480
7498
|
selectElementText(element, childTextNode, startIndex, endIndex) {
|
|
7481
|
-
|
|
7499
|
+
const range = this.windowApi.document.createRange();
|
|
7482
7500
|
range.selectNodeContents(element);
|
|
7483
7501
|
if (childTextNode) {
|
|
7484
7502
|
if (childTextNode.nodeType !== Node.TEXT_NODE) {
|
|
@@ -7489,7 +7507,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
7489
7507
|
range.setEnd(childTextNode, endIndex);
|
|
7490
7508
|
}
|
|
7491
7509
|
}
|
|
7492
|
-
|
|
7510
|
+
const selection = this.windowApi.globalThis.getSelection();
|
|
7493
7511
|
if (selection) {
|
|
7494
7512
|
selection.removeAllRanges();
|
|
7495
7513
|
selection.addRange(range);
|
|
@@ -7517,7 +7535,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
7517
7535
|
else {
|
|
7518
7536
|
textType = "text/plain";
|
|
7519
7537
|
}
|
|
7520
|
-
|
|
7538
|
+
const UtilsContext = this;
|
|
7521
7539
|
class UtilsClipboard {
|
|
7522
7540
|
#resolve;
|
|
7523
7541
|
#copyData;
|
|
@@ -7529,7 +7547,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
7529
7547
|
}
|
|
7530
7548
|
async init() {
|
|
7531
7549
|
let copyStatus = false;
|
|
7532
|
-
|
|
7550
|
+
const requestPermissionStatus = await this.requestClipboardPermission();
|
|
7533
7551
|
console.log(requestPermissionStatus);
|
|
7534
7552
|
if (this.hasClipboard() && (this.hasClipboardWrite() || this.hasClipboardWriteText())) {
|
|
7535
7553
|
try {
|
|
@@ -7568,7 +7586,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
7568
7586
|
*/
|
|
7569
7587
|
copyTextByTextArea() {
|
|
7570
7588
|
try {
|
|
7571
|
-
|
|
7589
|
+
const copyElement = UtilsContext.windowApi.document.createElement("textarea");
|
|
7572
7590
|
copyElement.value = this.#copyData;
|
|
7573
7591
|
copyElement.setAttribute("type", "text");
|
|
7574
7592
|
copyElement.setAttribute("style", "opacity:0;position:absolute;");
|
|
@@ -7588,20 +7606,17 @@ System.register('Utils', [], (function (exports) {
|
|
|
7588
7606
|
* 申请剪贴板权限
|
|
7589
7607
|
*/
|
|
7590
7608
|
requestClipboardPermission() {
|
|
7591
|
-
return new Promise((resolve
|
|
7609
|
+
return new Promise((resolve) => {
|
|
7592
7610
|
if (navigator.permissions && navigator.permissions.query) {
|
|
7593
7611
|
navigator.permissions
|
|
7594
7612
|
.query({
|
|
7595
7613
|
name: "clipboard-write",
|
|
7596
7614
|
})
|
|
7597
|
-
.then((
|
|
7615
|
+
.then(() => {
|
|
7598
7616
|
resolve(true);
|
|
7599
7617
|
})
|
|
7600
7618
|
.catch((error) => {
|
|
7601
|
-
console.error([
|
|
7602
|
-
"申请剪贴板权限失败,尝试直接写入👉",
|
|
7603
|
-
error.message ?? error.name ?? error.stack,
|
|
7604
|
-
]);
|
|
7619
|
+
console.error(["申请剪贴板权限失败,尝试直接写入👉", error.message ?? error.name ?? error.stack]);
|
|
7605
7620
|
resolve(false);
|
|
7606
7621
|
});
|
|
7607
7622
|
}
|
|
@@ -7628,7 +7643,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
7628
7643
|
}
|
|
7629
7644
|
else {
|
|
7630
7645
|
/* 可复制对象 */
|
|
7631
|
-
|
|
7646
|
+
const textBlob = new Blob([this.#copyData], {
|
|
7632
7647
|
type: this.#copyDataType,
|
|
7633
7648
|
});
|
|
7634
7649
|
navigator.clipboard
|
|
@@ -7660,7 +7675,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
7660
7675
|
});
|
|
7661
7676
|
}
|
|
7662
7677
|
setTimeout(callback, delayTime = 0) {
|
|
7663
|
-
|
|
7678
|
+
const UtilsContext = this;
|
|
7664
7679
|
if (typeof callback !== "function" && typeof callback !== "string") {
|
|
7665
7680
|
throw new TypeError("Utils.setTimeout 参数 callback 必须为 function|string 类型");
|
|
7666
7681
|
}
|
|
@@ -7674,7 +7689,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
7674
7689
|
});
|
|
7675
7690
|
}
|
|
7676
7691
|
sleep(delayTime = 0) {
|
|
7677
|
-
|
|
7692
|
+
const UtilsContext = this;
|
|
7678
7693
|
if (typeof delayTime !== "number") {
|
|
7679
7694
|
throw new Error("Utils.sleep 参数 delayTime 必须为 number 类型");
|
|
7680
7695
|
}
|
|
@@ -7685,18 +7700,18 @@ System.register('Utils', [], (function (exports) {
|
|
|
7685
7700
|
});
|
|
7686
7701
|
}
|
|
7687
7702
|
dragSlider(selector, offsetX = this.windowApi.window.innerWidth) {
|
|
7688
|
-
|
|
7703
|
+
const UtilsContext = this;
|
|
7689
7704
|
function initMouseEvent(eventName, offSetX, offSetY) {
|
|
7690
|
-
|
|
7691
|
-
|
|
7705
|
+
const win = typeof unsafeWindow === "undefined" ? globalThis : unsafeWindow;
|
|
7706
|
+
const mouseEvent = UtilsContext.windowApi.document.createEvent("MouseEvents");
|
|
7692
7707
|
mouseEvent.initMouseEvent(eventName, true, true, win, 0, offSetX, offSetY, offSetX, offSetY, false, false, false, false, 0, null);
|
|
7693
7708
|
return mouseEvent;
|
|
7694
7709
|
}
|
|
7695
|
-
|
|
7710
|
+
const sliderElement = typeof selector === "string" ? domUtils.selector(selector) : selector;
|
|
7696
7711
|
if (!(sliderElement instanceof Node) || !(sliderElement instanceof Element)) {
|
|
7697
7712
|
throw new Error("Utils.dragSlider 参数selector 必须为Node/Element类型");
|
|
7698
7713
|
}
|
|
7699
|
-
|
|
7714
|
+
const rect = sliderElement.getBoundingClientRect(), x0 = rect.x || rect.left, y0 = rect.y || rect.top, x1 = x0 + offsetX, y1 = y0;
|
|
7700
7715
|
sliderElement.dispatchEvent(initMouseEvent("mousedown", x0, y0));
|
|
7701
7716
|
sliderElement.dispatchEvent(initMouseEvent("mousemove", x1, y1));
|
|
7702
7717
|
sliderElement.dispatchEvent(initMouseEvent("mouseleave", x1, y1));
|
|
@@ -7724,34 +7739,34 @@ System.register('Utils', [], (function (exports) {
|
|
|
7724
7739
|
console.error(err);
|
|
7725
7740
|
}
|
|
7726
7741
|
}
|
|
7727
|
-
exitFullScreen(
|
|
7728
|
-
if (
|
|
7729
|
-
return
|
|
7742
|
+
exitFullScreen($el = this.windowApi.document.documentElement) {
|
|
7743
|
+
if ($el.exitFullscreen) {
|
|
7744
|
+
return $el.exitFullscreen();
|
|
7730
7745
|
}
|
|
7731
|
-
else if (
|
|
7732
|
-
return
|
|
7746
|
+
else if ($el.msExitFullscreen) {
|
|
7747
|
+
return $el.msExitFullscreen();
|
|
7733
7748
|
}
|
|
7734
|
-
else if (
|
|
7735
|
-
return
|
|
7749
|
+
else if ($el.mozCancelFullScreen) {
|
|
7750
|
+
return $el.mozCancelFullScreen();
|
|
7736
7751
|
}
|
|
7737
|
-
else if (
|
|
7738
|
-
return
|
|
7752
|
+
else if ($el.webkitCancelFullScreen) {
|
|
7753
|
+
return $el.webkitCancelFullScreen();
|
|
7739
7754
|
}
|
|
7740
7755
|
else {
|
|
7741
|
-
return new Promise((
|
|
7756
|
+
return new Promise((_, reject) => {
|
|
7742
7757
|
reject(new TypeError("该浏览器不支持全屏API"));
|
|
7743
7758
|
});
|
|
7744
7759
|
}
|
|
7745
7760
|
}
|
|
7746
7761
|
sortListByProperty(data, getPropertyValueFunc, sortByDesc = true) {
|
|
7747
|
-
|
|
7762
|
+
const UtilsContext = this;
|
|
7748
7763
|
if (typeof getPropertyValueFunc !== "function" && typeof getPropertyValueFunc !== "string") {
|
|
7749
7764
|
throw new Error("Utils.sortListByProperty 参数 getPropertyValueFunc 必须为 function|string 类型");
|
|
7750
7765
|
}
|
|
7751
7766
|
if (typeof sortByDesc !== "boolean") {
|
|
7752
7767
|
throw new Error("Utils.sortListByProperty 参数 sortByDesc 必须为 boolean 类型");
|
|
7753
7768
|
}
|
|
7754
|
-
|
|
7769
|
+
const getObjValue = function (obj) {
|
|
7755
7770
|
return typeof getPropertyValueFunc === "string" ? obj[getPropertyValueFunc] : getPropertyValueFunc(obj);
|
|
7756
7771
|
};
|
|
7757
7772
|
/**
|
|
@@ -7760,9 +7775,9 @@ System.register('Utils', [], (function (exports) {
|
|
|
7760
7775
|
* @param {any} before_obj
|
|
7761
7776
|
* @returns
|
|
7762
7777
|
*/
|
|
7763
|
-
|
|
7764
|
-
|
|
7765
|
-
|
|
7778
|
+
const sortFunc = function (after_obj, before_obj) {
|
|
7779
|
+
const beforeValue = getObjValue(before_obj); /* 前 */
|
|
7780
|
+
const afterValue = getObjValue(after_obj); /* 后 */
|
|
7766
7781
|
if (sortByDesc) {
|
|
7767
7782
|
if (afterValue > beforeValue) {
|
|
7768
7783
|
return -1;
|
|
@@ -7791,19 +7806,18 @@ System.register('Utils', [], (function (exports) {
|
|
|
7791
7806
|
* @param nodeList 元素列表
|
|
7792
7807
|
* @param getNodeListFunc 获取元素列表的函数
|
|
7793
7808
|
*/
|
|
7794
|
-
|
|
7795
|
-
|
|
7809
|
+
const sortNodeFunc = function (nodeList, getNodeListFunc) {
|
|
7810
|
+
const nodeListLength = nodeList.length;
|
|
7796
7811
|
for (let i = 0; i < nodeListLength - 1; i++) {
|
|
7797
7812
|
for (let j = 0; j < nodeListLength - 1 - i; j++) {
|
|
7798
|
-
|
|
7799
|
-
|
|
7800
|
-
|
|
7801
|
-
|
|
7802
|
-
if ((sortByDesc == true && beforeValue < afterValue) ||
|
|
7803
|
-
(sortByDesc == false && beforeValue > afterValue)) {
|
|
7813
|
+
const beforeNode = nodeList[j];
|
|
7814
|
+
const afterNode = nodeList[j + 1];
|
|
7815
|
+
const beforeValue = getObjValue(beforeNode); /* 前 */
|
|
7816
|
+
const afterValue = getObjValue(afterNode); /* 后 */
|
|
7817
|
+
if ((sortByDesc == true && beforeValue < afterValue) || (sortByDesc == false && beforeValue > afterValue)) {
|
|
7804
7818
|
/* 升序/降序 */
|
|
7805
7819
|
/* 相邻元素两两对比 */
|
|
7806
|
-
|
|
7820
|
+
const temp = beforeNode.nextElementSibling;
|
|
7807
7821
|
afterNode.after(beforeNode);
|
|
7808
7822
|
if (temp == null) {
|
|
7809
7823
|
/* 如果为空,那么是最后一个元素,使用append */
|
|
@@ -7861,7 +7875,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
7861
7875
|
return newTargetString;
|
|
7862
7876
|
}
|
|
7863
7877
|
startsWith(target, searchString, position = 0) {
|
|
7864
|
-
|
|
7878
|
+
const UtilsContext = this;
|
|
7865
7879
|
if (position > target.length) {
|
|
7866
7880
|
/* 超出目标字符串的长度 */
|
|
7867
7881
|
return false;
|
|
@@ -7905,7 +7919,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
7905
7919
|
*/
|
|
7906
7920
|
toJSON = commonUtil.toJSON.bind(commonUtil);
|
|
7907
7921
|
toSearchParamsStr(obj, addPrefix) {
|
|
7908
|
-
|
|
7922
|
+
const UtilsContext = this;
|
|
7909
7923
|
let searhParamsStr = "";
|
|
7910
7924
|
if (Array.isArray(obj)) {
|
|
7911
7925
|
obj.forEach((item) => {
|
|
@@ -7913,7 +7927,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
7913
7927
|
searhParamsStr += UtilsContext.toSearchParamsStr(item);
|
|
7914
7928
|
}
|
|
7915
7929
|
else {
|
|
7916
|
-
searhParamsStr +=
|
|
7930
|
+
searhParamsStr += `&${UtilsContext.toSearchParamsStr(item)}`;
|
|
7917
7931
|
}
|
|
7918
7932
|
});
|
|
7919
7933
|
}
|
|
@@ -7921,7 +7935,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
7921
7935
|
searhParamsStr = new URLSearchParams(Object.entries(obj)).toString();
|
|
7922
7936
|
}
|
|
7923
7937
|
if (addPrefix && !searhParamsStr.startsWith("?")) {
|
|
7924
|
-
searhParamsStr =
|
|
7938
|
+
searhParamsStr = `?${searhParamsStr}`;
|
|
7925
7939
|
}
|
|
7926
7940
|
return searhParamsStr;
|
|
7927
7941
|
}
|
|
@@ -7969,7 +7983,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
7969
7983
|
}
|
|
7970
7984
|
}
|
|
7971
7985
|
waitArrayLoopToEnd(data, handleFunc) {
|
|
7972
|
-
|
|
7986
|
+
const UtilsContext = this;
|
|
7973
7987
|
if (typeof handleFunc !== "function" && typeof handleFunc !== "string") {
|
|
7974
7988
|
throw new Error("Utils.waitArrayLoopToEnd 参数 handleDataFunction 必须为 function|string 类型");
|
|
7975
7989
|
}
|
|
@@ -7979,17 +7993,17 @@ System.register('Utils', [], (function (exports) {
|
|
|
7979
7993
|
}
|
|
7980
7994
|
wait(checkFn, timeout, parent) {
|
|
7981
7995
|
const UtilsContext = this;
|
|
7982
|
-
|
|
7996
|
+
const __timeout__ = typeof timeout === "number" ? timeout : 0;
|
|
7983
7997
|
return new Promise((resolve) => {
|
|
7984
|
-
|
|
7998
|
+
const observer = UtilsContext.mutationObserver(parent || UtilsContext.windowApi.document, {
|
|
7985
7999
|
config: {
|
|
7986
8000
|
subtree: true,
|
|
7987
8001
|
childList: true,
|
|
7988
8002
|
attributes: true,
|
|
7989
8003
|
},
|
|
7990
8004
|
immediate: true,
|
|
7991
|
-
callback(
|
|
7992
|
-
|
|
8005
|
+
callback(_, __observer__) {
|
|
8006
|
+
const result = checkFn();
|
|
7993
8007
|
if (result.success) {
|
|
7994
8008
|
// 取消观察器
|
|
7995
8009
|
if (typeof __observer__?.disconnect === "function") {
|
|
@@ -8013,9 +8027,9 @@ System.register('Utils', [], (function (exports) {
|
|
|
8013
8027
|
waitNode(...args) {
|
|
8014
8028
|
// 过滤掉undefined
|
|
8015
8029
|
args = args.filter((arg) => arg !== void 0);
|
|
8016
|
-
|
|
8030
|
+
const UtilsContext = this;
|
|
8017
8031
|
// 选择器
|
|
8018
|
-
|
|
8032
|
+
const selector = args[0];
|
|
8019
8033
|
// 父元素(监听的元素)
|
|
8020
8034
|
let parent = UtilsContext.windowApi.document;
|
|
8021
8035
|
// 超时时间
|
|
@@ -8025,7 +8039,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
8025
8039
|
}
|
|
8026
8040
|
if (args.length === 1) ;
|
|
8027
8041
|
else if (args.length === 2) {
|
|
8028
|
-
|
|
8042
|
+
const secondParam = args[1];
|
|
8029
8043
|
if (typeof secondParam === "number") {
|
|
8030
8044
|
// "div",10000
|
|
8031
8045
|
timeout = secondParam;
|
|
@@ -8041,9 +8055,9 @@ System.register('Utils', [], (function (exports) {
|
|
|
8041
8055
|
else if (args.length === 3) {
|
|
8042
8056
|
// "div",document,10000
|
|
8043
8057
|
// 第二个参数,parent
|
|
8044
|
-
|
|
8058
|
+
const secondParam = args[1];
|
|
8045
8059
|
// 第三个参数,timeout
|
|
8046
|
-
|
|
8060
|
+
const thirdParam = args[2];
|
|
8047
8061
|
if (typeof secondParam === "object" && secondParam instanceof Node) {
|
|
8048
8062
|
parent = secondParam;
|
|
8049
8063
|
if (typeof thirdParam === "number") {
|
|
@@ -8062,9 +8076,9 @@ System.register('Utils', [], (function (exports) {
|
|
|
8062
8076
|
}
|
|
8063
8077
|
function getNode() {
|
|
8064
8078
|
if (Array.isArray(selector)) {
|
|
8065
|
-
|
|
8079
|
+
const result = [];
|
|
8066
8080
|
for (let index = 0; index < selector.length; index++) {
|
|
8067
|
-
|
|
8081
|
+
const node = domUtils.selector(selector[index]);
|
|
8068
8082
|
if (node) {
|
|
8069
8083
|
result.push(node);
|
|
8070
8084
|
}
|
|
@@ -8081,7 +8095,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
8081
8095
|
}
|
|
8082
8096
|
}
|
|
8083
8097
|
return UtilsContext.wait(() => {
|
|
8084
|
-
|
|
8098
|
+
const node = getNode();
|
|
8085
8099
|
if (node) {
|
|
8086
8100
|
return {
|
|
8087
8101
|
success: true,
|
|
@@ -8099,9 +8113,9 @@ System.register('Utils', [], (function (exports) {
|
|
|
8099
8113
|
waitAnyNode(...args) {
|
|
8100
8114
|
// 过滤掉undefined
|
|
8101
8115
|
args = args.filter((arg) => arg !== void 0);
|
|
8102
|
-
|
|
8116
|
+
const UtilsContext = this;
|
|
8103
8117
|
// 选择器
|
|
8104
|
-
|
|
8118
|
+
const selectorList = args[0];
|
|
8105
8119
|
// 父元素(监听的元素)
|
|
8106
8120
|
let parent = UtilsContext.windowApi.document;
|
|
8107
8121
|
// 超时时间
|
|
@@ -8111,7 +8125,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
8111
8125
|
}
|
|
8112
8126
|
if (args.length === 1) ;
|
|
8113
8127
|
else if (args.length === 2) {
|
|
8114
|
-
|
|
8128
|
+
const secondParam = args[1];
|
|
8115
8129
|
if (typeof secondParam === "number") {
|
|
8116
8130
|
// "div",10000
|
|
8117
8131
|
timeout = secondParam;
|
|
@@ -8127,9 +8141,9 @@ System.register('Utils', [], (function (exports) {
|
|
|
8127
8141
|
else if (args.length === 3) {
|
|
8128
8142
|
// "div",document,10000
|
|
8129
8143
|
// 第二个参数,parent
|
|
8130
|
-
|
|
8144
|
+
const secondParam = args[1];
|
|
8131
8145
|
// 第三个参数,timeout
|
|
8132
|
-
|
|
8146
|
+
const thirdParam = args[2];
|
|
8133
8147
|
if (typeof secondParam === "object" && secondParam instanceof Node) {
|
|
8134
8148
|
parent = secondParam;
|
|
8135
8149
|
if (typeof thirdParam === "number") {
|
|
@@ -8146,7 +8160,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
8146
8160
|
else {
|
|
8147
8161
|
throw new TypeError("Utils.waitAnyNode 参数个数错误");
|
|
8148
8162
|
}
|
|
8149
|
-
|
|
8163
|
+
const promiseList = selectorList.map((selector) => {
|
|
8150
8164
|
return UtilsContext.waitNode(selector, parent, timeout);
|
|
8151
8165
|
});
|
|
8152
8166
|
return Promise.any(promiseList);
|
|
@@ -8154,9 +8168,9 @@ System.register('Utils', [], (function (exports) {
|
|
|
8154
8168
|
waitNodeList(...args) {
|
|
8155
8169
|
// 过滤掉undefined
|
|
8156
8170
|
args = args.filter((arg) => arg !== void 0);
|
|
8157
|
-
|
|
8171
|
+
const UtilsContext = this;
|
|
8158
8172
|
// 选择器数组
|
|
8159
|
-
|
|
8173
|
+
const selector = args[0];
|
|
8160
8174
|
// 父元素(监听的元素)
|
|
8161
8175
|
let parent = UtilsContext.windowApi.document;
|
|
8162
8176
|
// 超时时间
|
|
@@ -8166,7 +8180,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
8166
8180
|
}
|
|
8167
8181
|
if (args.length === 1) ;
|
|
8168
8182
|
else if (args.length === 2) {
|
|
8169
|
-
|
|
8183
|
+
const secondParam = args[1];
|
|
8170
8184
|
if (typeof secondParam === "number") {
|
|
8171
8185
|
// "div",10000
|
|
8172
8186
|
timeout = secondParam;
|
|
@@ -8182,9 +8196,9 @@ System.register('Utils', [], (function (exports) {
|
|
|
8182
8196
|
else if (args.length === 3) {
|
|
8183
8197
|
// "div",document,10000
|
|
8184
8198
|
// 第二个参数,parent
|
|
8185
|
-
|
|
8199
|
+
const secondParam = args[1];
|
|
8186
8200
|
// 第三个参数,timeout
|
|
8187
|
-
|
|
8201
|
+
const thirdParam = args[2];
|
|
8188
8202
|
if (typeof secondParam === "object" && secondParam instanceof Node) {
|
|
8189
8203
|
parent = secondParam;
|
|
8190
8204
|
if (typeof thirdParam === "number") {
|
|
@@ -8203,9 +8217,9 @@ System.register('Utils', [], (function (exports) {
|
|
|
8203
8217
|
}
|
|
8204
8218
|
function getNodeList() {
|
|
8205
8219
|
if (Array.isArray(selector)) {
|
|
8206
|
-
|
|
8220
|
+
const result = [];
|
|
8207
8221
|
for (let index = 0; index < selector.length; index++) {
|
|
8208
|
-
|
|
8222
|
+
const nodeList = domUtils.selectorAll(selector[index], parent);
|
|
8209
8223
|
if (nodeList.length) {
|
|
8210
8224
|
result.push(nodeList);
|
|
8211
8225
|
}
|
|
@@ -8215,14 +8229,14 @@ System.register('Utils', [], (function (exports) {
|
|
|
8215
8229
|
}
|
|
8216
8230
|
}
|
|
8217
8231
|
else {
|
|
8218
|
-
|
|
8232
|
+
const nodeList = domUtils.selectorAll(selector, parent);
|
|
8219
8233
|
if (nodeList.length) {
|
|
8220
8234
|
return nodeList;
|
|
8221
8235
|
}
|
|
8222
8236
|
}
|
|
8223
8237
|
}
|
|
8224
8238
|
return UtilsContext.wait(() => {
|
|
8225
|
-
|
|
8239
|
+
const node = getNodeList();
|
|
8226
8240
|
if (node) {
|
|
8227
8241
|
return {
|
|
8228
8242
|
success: true,
|
|
@@ -8240,9 +8254,9 @@ System.register('Utils', [], (function (exports) {
|
|
|
8240
8254
|
waitAnyNodeList(...args) {
|
|
8241
8255
|
// 过滤掉undefined
|
|
8242
8256
|
args = args.filter((arg) => arg !== void 0);
|
|
8243
|
-
|
|
8257
|
+
const UtilsContext = this;
|
|
8244
8258
|
// 选择器数组
|
|
8245
|
-
|
|
8259
|
+
const selectorList = args[0];
|
|
8246
8260
|
// 父元素(监听的元素)
|
|
8247
8261
|
let parent = UtilsContext.windowApi.document;
|
|
8248
8262
|
// 超时时间
|
|
@@ -8252,7 +8266,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
8252
8266
|
}
|
|
8253
8267
|
if (args.length === 1) ;
|
|
8254
8268
|
else if (args.length === 2) {
|
|
8255
|
-
|
|
8269
|
+
const secondParam = args[1];
|
|
8256
8270
|
if (typeof secondParam === "number") {
|
|
8257
8271
|
// "div",10000
|
|
8258
8272
|
timeout = secondParam;
|
|
@@ -8268,9 +8282,9 @@ System.register('Utils', [], (function (exports) {
|
|
|
8268
8282
|
else if (args.length === 3) {
|
|
8269
8283
|
// "div",document,10000
|
|
8270
8284
|
// 第二个参数,parent
|
|
8271
|
-
|
|
8285
|
+
const secondParam = args[1];
|
|
8272
8286
|
// 第三个参数,timeout
|
|
8273
|
-
|
|
8287
|
+
const thirdParam = args[2];
|
|
8274
8288
|
if (typeof secondParam === "object" && secondParam instanceof Node) {
|
|
8275
8289
|
parent = secondParam;
|
|
8276
8290
|
if (typeof thirdParam === "number") {
|
|
@@ -8287,7 +8301,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
8287
8301
|
else {
|
|
8288
8302
|
throw new TypeError("Utils.waitAnyNodeList 参数个数错误");
|
|
8289
8303
|
}
|
|
8290
|
-
|
|
8304
|
+
const promiseList = selectorList.map((selector) => {
|
|
8291
8305
|
return UtilsContext.waitNodeList(selector, parent, timeout);
|
|
8292
8306
|
});
|
|
8293
8307
|
return Promise.any(promiseList);
|
|
@@ -8316,13 +8330,13 @@ System.register('Utils', [], (function (exports) {
|
|
|
8316
8330
|
});
|
|
8317
8331
|
}
|
|
8318
8332
|
waitPropertyByInterval(checkObj, checkPropertyName, intervalTimer = 250, maxTime = -1) {
|
|
8319
|
-
|
|
8333
|
+
const UtilsContext = this;
|
|
8320
8334
|
if (checkObj == null) {
|
|
8321
8335
|
throw new TypeError("checkObj 不能为空对象 ");
|
|
8322
8336
|
}
|
|
8323
8337
|
let isResolve = false;
|
|
8324
8338
|
return new Promise((resolve, reject) => {
|
|
8325
|
-
|
|
8339
|
+
const interval = UtilsContext.workerSetInterval(() => {
|
|
8326
8340
|
let obj = checkObj;
|
|
8327
8341
|
if (typeof checkObj === "function") {
|
|
8328
8342
|
obj = checkObj();
|
|
@@ -8355,7 +8369,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
8355
8369
|
throw new Error("Utils.waitVueByInterval 参数element 不能为空");
|
|
8356
8370
|
}
|
|
8357
8371
|
let flag = false;
|
|
8358
|
-
|
|
8372
|
+
const UtilsContext = this;
|
|
8359
8373
|
try {
|
|
8360
8374
|
await UtilsContext.waitPropertyByInterval(element, function (targetElement) {
|
|
8361
8375
|
if (targetElement == null) {
|
|
@@ -8367,7 +8381,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
8367
8381
|
if (propertyName == null) {
|
|
8368
8382
|
return true;
|
|
8369
8383
|
}
|
|
8370
|
-
|
|
8384
|
+
const vueObject = targetElement[vueName];
|
|
8371
8385
|
if (typeof propertyName === "string") {
|
|
8372
8386
|
if (propertyName in vueObject) {
|
|
8373
8387
|
flag = true;
|
|
@@ -8383,6 +8397,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
8383
8397
|
}
|
|
8384
8398
|
return false;
|
|
8385
8399
|
}, timer, maxTime);
|
|
8400
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
8386
8401
|
}
|
|
8387
8402
|
catch (error) {
|
|
8388
8403
|
return flag;
|
|
@@ -8441,7 +8456,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
8441
8456
|
if (target == null) {
|
|
8442
8457
|
return;
|
|
8443
8458
|
}
|
|
8444
|
-
|
|
8459
|
+
const handleResult = handler(target);
|
|
8445
8460
|
if (handleResult && typeof handleResult.isFind === "boolean" && handleResult.isFind) {
|
|
8446
8461
|
return handleResult.data;
|
|
8447
8462
|
}
|
|
@@ -8454,10 +8469,10 @@ System.register('Utils', [], (function (exports) {
|
|
|
8454
8469
|
*/
|
|
8455
8470
|
async asyncQueryProperty(target, handler) {
|
|
8456
8471
|
if (target == null) {
|
|
8457
|
-
// @ts-
|
|
8472
|
+
// @ts-expect-error 空返回
|
|
8458
8473
|
return;
|
|
8459
8474
|
}
|
|
8460
|
-
|
|
8475
|
+
const handleResult = await handler(target);
|
|
8461
8476
|
if (handleResult && typeof handleResult.isFind === "boolean" && handleResult.isFind) {
|
|
8462
8477
|
return handleResult.data;
|
|
8463
8478
|
}
|
|
@@ -8565,6 +8580,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
8565
8580
|
workerSetTimeout(callback, timeout = 0) {
|
|
8566
8581
|
try {
|
|
8567
8582
|
return setTimeout$1(callback, timeout);
|
|
8583
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
8568
8584
|
}
|
|
8569
8585
|
catch (error) {
|
|
8570
8586
|
return this.windowApi.setTimeout(callback, timeout);
|
|
@@ -8579,8 +8595,10 @@ System.register('Utils', [], (function (exports) {
|
|
|
8579
8595
|
if (timeId != null) {
|
|
8580
8596
|
clearTimeout$1(timeId);
|
|
8581
8597
|
}
|
|
8598
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
8582
8599
|
}
|
|
8583
8600
|
catch (error) {
|
|
8601
|
+
// console.log(error);
|
|
8584
8602
|
}
|
|
8585
8603
|
finally {
|
|
8586
8604
|
this.windowApi.clearTimeout(timeId);
|
|
@@ -8594,6 +8612,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
8594
8612
|
workerSetInterval(callback, timeout = 0) {
|
|
8595
8613
|
try {
|
|
8596
8614
|
return setInterval(callback, timeout);
|
|
8615
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
8597
8616
|
}
|
|
8598
8617
|
catch (error) {
|
|
8599
8618
|
return this.windowApi.setInterval(callback, timeout);
|
|
@@ -8608,8 +8627,10 @@ System.register('Utils', [], (function (exports) {
|
|
|
8608
8627
|
if (timeId != null) {
|
|
8609
8628
|
clearInterval(timeId);
|
|
8610
8629
|
}
|
|
8630
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
8611
8631
|
}
|
|
8612
8632
|
catch (error) {
|
|
8633
|
+
// console.log(error);
|
|
8613
8634
|
}
|
|
8614
8635
|
finally {
|
|
8615
8636
|
this.windowApi.clearInterval(timeId);
|
|
@@ -8643,10 +8664,10 @@ System.register('Utils', [], (function (exports) {
|
|
|
8643
8664
|
.query({
|
|
8644
8665
|
name: "clipboard-read",
|
|
8645
8666
|
})
|
|
8646
|
-
.then((
|
|
8667
|
+
.then(() => {
|
|
8647
8668
|
readClipboardText();
|
|
8648
8669
|
})
|
|
8649
|
-
.catch((
|
|
8670
|
+
.catch(() => {
|
|
8650
8671
|
/* 该权限申请Api可能在该环境下不生效,尝试直接读取剪贴板 */
|
|
8651
8672
|
readClipboardText();
|
|
8652
8673
|
});
|
|
@@ -8683,7 +8704,7 @@ System.register('Utils', [], (function (exports) {
|
|
|
8683
8704
|
});
|
|
8684
8705
|
}
|
|
8685
8706
|
}
|
|
8686
|
-
|
|
8707
|
+
const utils = exports("default", new Utils());
|
|
8687
8708
|
|
|
8688
8709
|
})
|
|
8689
8710
|
};
|