@whitesev/utils 2.8.0 → 2.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/README.md +176 -176
  2. package/dist/index.amd.js +893 -874
  3. package/dist/index.amd.js.map +1 -1
  4. package/dist/index.cjs.js +893 -874
  5. package/dist/index.cjs.js.map +1 -1
  6. package/dist/index.esm.js +893 -874
  7. package/dist/index.esm.js.map +1 -1
  8. package/dist/index.iife.js +893 -874
  9. package/dist/index.iife.js.map +1 -1
  10. package/dist/index.system.js +893 -874
  11. package/dist/index.system.js.map +1 -1
  12. package/dist/index.umd.js +893 -874
  13. package/dist/index.umd.js.map +1 -1
  14. package/dist/types/src/CommonUtil.d.ts +59 -59
  15. package/dist/types/src/DOMUtils.d.ts +1 -1
  16. package/dist/types/src/Dictionary.d.ts +1 -1
  17. package/dist/types/src/Httpx.d.ts +2 -2
  18. package/dist/types/src/Progress.d.ts +0 -4
  19. package/dist/types/src/TryCatch.d.ts +2 -2
  20. package/dist/types/src/Utils.d.ts +365 -365
  21. package/dist/types/src/UtilsGMCookie.d.ts +2 -2
  22. package/dist/types/src/UtilsGMMenu.d.ts +1 -1
  23. package/dist/types/src/indexedDB.d.ts +3 -3
  24. package/dist/types/src/types/Event.d.ts +188 -188
  25. package/dist/types/src/types/Httpx.d.ts +1344 -1343
  26. package/dist/types/src/types/Log.d.ts +19 -19
  27. package/dist/types/src/types/Progress.d.ts +20 -20
  28. package/dist/types/src/types/React.d.ts +119 -119
  29. package/dist/types/src/types/TryCatch.d.ts +9 -9
  30. package/dist/types/src/types/UtilsGMCookie.d.ts +93 -93
  31. package/dist/types/src/types/UtilsGMMenu.d.ts +77 -77
  32. package/dist/types/src/types/Vue2.d.ts +166 -166
  33. package/dist/types/src/types/WindowApi.d.ts +14 -14
  34. package/dist/types/src/types/ajaxHooker.d.ts +151 -151
  35. package/dist/types/src/types/env.d.ts +7 -2
  36. package/dist/types/src/types/global.d.ts +31 -31
  37. package/package.json +16 -7
  38. package/src/ColorConversion.ts +105 -106
  39. package/src/CommonUtil.ts +280 -279
  40. package/src/DOMUtils.ts +251 -272
  41. package/src/Dictionary.ts +153 -154
  42. package/src/GBKEncoder.ts +108 -112
  43. package/src/Hooks.ts +73 -81
  44. package/src/Httpx.ts +1457 -1466
  45. package/src/LockFunction.ts +62 -62
  46. package/src/Log.ts +258 -259
  47. package/src/ModuleRaid.js +1 -0
  48. package/src/Progress.ts +108 -114
  49. package/src/TryCatch.ts +86 -86
  50. package/src/Utils.ts +4772 -4825
  51. package/src/UtilsCommon.ts +14 -14
  52. package/src/UtilsGMCookie.ts +254 -261
  53. package/src/UtilsGMMenu.ts +445 -454
  54. package/src/Vue.ts +233 -229
  55. package/src/WindowApi.ts +59 -59
  56. package/src/ajaxHooker/ajaxHooker.js +1 -0
  57. package/src/indexedDB.ts +497 -502
  58. package/src/types/Event.d.ts +188 -188
  59. package/src/types/Httpx.d.ts +1344 -1343
  60. package/src/types/Log.d.ts +19 -19
  61. package/src/types/Progress.d.ts +20 -20
  62. package/src/types/React.d.ts +119 -119
  63. package/src/types/TryCatch.d.ts +9 -9
  64. package/src/types/UtilsGMCookie.d.ts +93 -93
  65. package/src/types/UtilsGMMenu.d.ts +77 -77
  66. package/src/types/Vue2.d.ts +166 -166
  67. package/src/types/WindowApi.d.ts +14 -14
  68. package/src/types/ajaxHooker.d.ts +151 -151
  69. package/src/types/env.d.ts +7 -2
  70. package/src/types/global.d.ts +31 -31
package/dist/index.amd.js CHANGED
@@ -9,7 +9,7 @@ define((function () { 'use strict';
9
9
  if (typeof str !== "string") {
10
10
  return false;
11
11
  }
12
- if (!str.match(/^(\#|)[0-9a-fA-F]{6}$/)) {
12
+ if (!str.match(/^(#|)[0-9a-fA-F]{6}$/)) {
13
13
  return false;
14
14
  }
15
15
  return true;
@@ -23,18 +23,10 @@ define((function () { 'use strict';
23
23
  */
24
24
  hexToRgba(hex, opacity) {
25
25
  if (!this.isHex(hex)) {
26
- throw new TypeError("输入错误的hex:" + hex);
26
+ throw new TypeError(`输入错误的hex:${hex}`);
27
27
  }
28
28
  return hex && hex.replace(/\s+/g, "").length === 7
29
- ? "rgba(" +
30
- parseInt("0x" + hex.slice(1, 3)) +
31
- "," +
32
- parseInt("0x" + hex.slice(3, 5)) +
33
- "," +
34
- parseInt("0x" + hex.slice(5, 7)) +
35
- "," +
36
- opacity +
37
- ")"
29
+ ? `rgba(${parseInt(`0x${hex.slice(1, 3)}`)},${parseInt(`0x${hex.slice(3, 5)}`)},${parseInt(`0x${hex.slice(5, 7)}`)},${opacity})`
38
30
  : "";
39
31
  }
40
32
  /**
@@ -43,14 +35,15 @@ define((function () { 'use strict';
43
35
  */
44
36
  hexToRgb(str) {
45
37
  if (!this.isHex(str)) {
46
- throw new TypeError("输入错误的hex:" + str);
38
+ throw new TypeError(`输入错误的hex:${str}`);
47
39
  }
48
40
  /* replace替换查找的到的字符串 */
49
41
  str = str.replace("#", "");
50
42
  /* match得到查询数组 */
51
- let hxs = str.match(/../g);
43
+ const hxs = str.match(/../g);
52
44
  for (let index = 0; index < 3; index++) {
53
- hxs[index] = parseInt(hxs[index], 16);
45
+ const value = parseInt(hxs[index], 16);
46
+ Reflect.set(hxs, index, value);
54
47
  }
55
48
  return hxs;
56
49
  }
@@ -62,16 +55,16 @@ define((function () { 'use strict';
62
55
  */
63
56
  rgbToHex(redValue, greenValue, blueValue) {
64
57
  /* 验证输入的rgb值是否合法 */
65
- let validPattern = /^\d{1,3}$/;
58
+ const validPattern = /^\d{1,3}$/;
66
59
  if (!validPattern.test(redValue.toString()) ||
67
60
  !validPattern.test(greenValue.toString()) ||
68
61
  !validPattern.test(blueValue.toString()))
69
62
  throw new TypeError("输入错误的rgb颜色值");
70
- let hexs = [redValue.toString(16), greenValue.toString(16), blueValue.toString(16)];
63
+ const hexs = [redValue.toString(16), greenValue.toString(16), blueValue.toString(16)];
71
64
  for (let index = 0; index < 3; index++)
72
65
  if (hexs[index].length == 1)
73
- hexs[index] = "0" + hexs[index];
74
- return "#" + hexs.join("");
66
+ hexs[index] = `0${hexs[index]}`;
67
+ return `#${hexs.join("")}`;
75
68
  }
76
69
  /**
77
70
  * 获取颜色变暗或亮
@@ -80,11 +73,13 @@ define((function () { 'use strict';
80
73
  */
81
74
  getDarkColor(color, level) {
82
75
  if (!this.isHex(color)) {
83
- throw new TypeError("输入错误的hex:" + color);
76
+ throw new TypeError(`输入错误的hex:${color}`);
84
77
  }
85
- let rgbc = this.hexToRgb(color);
78
+ const rgbc = this.hexToRgb(color);
86
79
  for (let index = 0; index < 3; index++) {
87
- rgbc[index] = Math.floor(rgbc[index] * (1 - level));
80
+ const rgbcItemValue = rgbc[index];
81
+ const value = Math.floor(Number(rgbcItemValue) * (1 - Number(level)));
82
+ Reflect.set(rgbc, index, value);
88
83
  }
89
84
  return this.rgbToHex(rgbc[0], rgbc[1], rgbc[2]);
90
85
  }
@@ -95,40 +90,43 @@ define((function () { 'use strict';
95
90
  */
96
91
  getLightColor(color, level) {
97
92
  if (!this.isHex(color)) {
98
- throw new TypeError("输入错误的hex:" + color);
93
+ throw new TypeError(`输入错误的hex:${color}`);
99
94
  }
100
- let rgbc = this.hexToRgb(color);
95
+ const rgbc = this.hexToRgb(color);
101
96
  for (let index = 0; index < 3; index++) {
102
- rgbc[index] = Math.floor((255 - rgbc[index]) * level + rgbc[index]);
97
+ const rgbcItemValue = Number(rgbc[index]);
98
+ const value = Math.floor(255 - rgbcItemValue * level + rgbcItemValue);
99
+ Reflect.set(rgbc, index, value);
103
100
  }
104
101
  return this.rgbToHex(rgbc[0], rgbc[1], rgbc[2]);
105
102
  }
106
103
  }
107
104
 
108
105
  class GBKEncoder {
109
- #data = [];
106
+ #data;
110
107
  #U2Ghash = {};
111
108
  #G2Uhash = {};
112
109
  constructor() {
113
- 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");
110
+ 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");
114
111
  let index = 0;
115
112
  this.#data = dataText.match(/..../g);
116
113
  for (let i = 0x81; i <= 0xfe; i++) {
117
114
  for (let j = 0x40; j <= 0xfe; j++) {
118
- this.#U2Ghash[this.#data[index++]] = ("%" + i.toString(16) + "%" + j.toString(16)).toUpperCase();
115
+ this.#U2Ghash[this.#data[index++]] = `%${i.toString(16)}%${j.toString(16)}`.toUpperCase();
119
116
  }
120
117
  }
121
- for (let key in this.#U2Ghash) {
122
- this.#G2Uhash[this.#U2Ghash[key]] = key;
118
+ for (const key in this.#U2Ghash) {
119
+ const u2ghashValue = Reflect.get(this.#U2Ghash, key);
120
+ Reflect.set(this.#G2Uhash, u2ghashValue, key);
123
121
  }
124
122
  }
125
123
  handleText(text) {
126
124
  text = text
127
- .replace(/#(\d+)\$/g, function (a, b) {
125
+ .replace(/#(\d+)\$/g, function (_, b) {
128
126
  return Array(+b + 3).join("#");
129
127
  })
130
128
  .replace(/#/g, "####")
131
- .replace(/(\w\w):([\w#]+)(?:,|$)/g, function (a, hd, dt) {
129
+ .replace(/(\w\w):([\w#]+)(?:,|$)/g, function (_, hd, dt) {
132
130
  return dt.replace(/../g, function (a) {
133
131
  if (a != "##") {
134
132
  return hd + a;
@@ -148,8 +146,8 @@ define((function () { 'use strict';
148
146
  * @param str
149
147
  */
150
148
  encode(str) {
151
- let that = this;
152
- return [...str].reduce((result, val, i) => {
149
+ const that = this;
150
+ return [...str].reduce((result, val) => {
153
151
  return result + toGBK(val);
154
152
  }, "");
155
153
  function toGBK(val) {
@@ -158,7 +156,7 @@ define((function () { 'use strict';
158
156
  const codePoint = val.codePointAt(i);
159
157
  const code = String.fromCodePoint(codePoint);
160
158
  let key = codePoint.toString(16);
161
- key.length != 4 && (key = ("000" + key).match(/....$/)?.[0]);
159
+ key.length != 4 && (key = `000${key}`.match(/....$/)?.[0]);
162
160
  /* Add up i by code.length */
163
161
  i += code.length - 1;
164
162
  /* If code is in ascii range */
@@ -172,9 +170,9 @@ define((function () { 'use strict';
172
170
  continue;
173
171
  }
174
172
  /*
175
- If 2 or more char combines to one visible code,
176
- or just this code is not in GBK
177
- */
173
+ If 2 or more char combines to one visible code,
174
+ or just this code is not in GBK
175
+ */
178
176
  result += toGBK(`&#${codePoint};`);
179
177
  }
180
178
  return result;
@@ -185,18 +183,18 @@ define((function () { 'use strict';
185
183
  * @param str
186
184
  */
187
185
  decode(str) {
188
- let GBKMatcher = /%[0-9A-F]{2}%[0-9A-F]{2}/;
189
- let UTFMatcher = /%[0-9A-F]{2}/;
186
+ const GBKMatcher = /%[0-9A-F]{2}%[0-9A-F]{2}/;
187
+ const UTFMatcher = /%[0-9A-F]{2}/;
190
188
  // let gbk = true;
191
189
  let utf = true;
192
190
  const that = this;
193
191
  while (utf) {
194
- let gbkMatch = str.match(GBKMatcher);
195
- let utfMatch = str.match(UTFMatcher);
192
+ const gbkMatch = str.match(GBKMatcher);
193
+ const utfMatch = str.match(UTFMatcher);
196
194
  // gbk = Boolean(gbkMatch);
197
195
  utf = Boolean(utfMatch);
198
196
  if (gbkMatch && gbkMatch in that.#G2Uhash) {
199
- str = str.replace(gbkMatch, String.fromCharCode(("0x" + that.#G2Uhash[gbkMatch])));
197
+ str = str.replace(gbkMatch, String.fromCharCode(`0x${that.#G2Uhash[gbkMatch]}`));
200
198
  }
201
199
  else {
202
200
  str = str.replace(utfMatch, decodeURIComponent(utfMatch));
@@ -210,7 +208,7 @@ define((function () { 'use strict';
210
208
  /* 定义变量和函数 */
211
209
  let callbackFunction = null;
212
210
  let context = null;
213
- let handleError = (error) => { };
211
+ let handleError = () => { };
214
212
  let defaultDetails = {
215
213
  log: true,
216
214
  };
@@ -242,7 +240,7 @@ define((function () { 'use strict';
242
240
  run(callback, __context__) {
243
241
  callbackFunction = callback;
244
242
  context = __context__ || this;
245
- let result = executeTryCatch(callbackFunction, handleError, context);
243
+ const result = executeTryCatch(callbackFunction, handleError, context);
246
244
  return result !== void 0 ? result : TryCatchCore;
247
245
  },
248
246
  };
@@ -266,8 +264,8 @@ define((function () { 'use strict';
266
264
  catch (error) {
267
265
  if (defaultDetails.log) {
268
266
  callback = callback;
269
- console.log(`%c ${callback?.name ? callback?.name : callback + "出现错误"} `, "color: #f20000");
270
- console.log(`%c 错误原因:${error}`, "color: #f20000");
267
+ console.log(`%c ${callback?.name ? callback?.name : `${callback}`} `, "color: #f20000");
268
+ console.log(`%c ${error}`, "color: #f20000");
271
269
  console.trace(callback);
272
270
  }
273
271
  if (handleErrorFunc) {
@@ -286,9 +284,9 @@ define((function () { 'use strict';
286
284
 
287
285
  class CommonUtil {
288
286
  assign(target = {}, source = {}, isAdd = false) {
289
- let UtilsContext = this;
287
+ const UtilsContext = this;
290
288
  if (Array.isArray(source)) {
291
- let canTraverse = source.filter((item) => {
289
+ const canTraverse = source.filter((item) => {
292
290
  return typeof item === "object";
293
291
  });
294
292
  if (!canTraverse.length) {
@@ -304,34 +302,34 @@ define((function () { 'use strict';
304
302
  if (isAdd) {
305
303
  for (const sourceKeyName in source) {
306
304
  const targetKeyName = sourceKeyName;
307
- let targetValue = target[targetKeyName];
308
- let sourceValue = source[sourceKeyName];
305
+ const targetValue = Reflect.get(target, targetKeyName);
306
+ const sourceValue = Reflect.get(source, sourceKeyName);
309
307
  if (typeof sourceValue === "object" &&
310
308
  sourceValue != null &&
311
309
  sourceKeyName in target &&
312
310
  !UtilsContext.isDOM(sourceValue)) {
313
311
  /* 源端的值是object类型,且不是元素节点 */
314
- target[sourceKeyName] = UtilsContext.assign(targetValue, sourceValue, isAdd);
312
+ Reflect.set(target, sourceKeyName, UtilsContext.assign(targetValue, sourceValue, isAdd));
315
313
  continue;
316
314
  }
317
- target[sourceKeyName] = sourceValue;
315
+ Reflect.set(target, sourceKeyName, sourceValue);
318
316
  }
319
317
  }
320
318
  else {
321
319
  for (const targetKeyName in target) {
322
320
  if (targetKeyName in source) {
323
- let targetValue = target[targetKeyName];
324
- let sourceValue = source[targetKeyName];
321
+ const targetValue = Reflect.get(target, targetKeyName);
322
+ const sourceValue = Reflect.get(source, targetKeyName);
325
323
  if (typeof sourceValue === "object" &&
326
324
  sourceValue != null &&
327
325
  !UtilsContext.isDOM(sourceValue) &&
328
326
  Object.keys(sourceValue).length) {
329
327
  /* 源端的值是object类型,且不是元素节点 */
330
- target[targetKeyName] = UtilsContext.assign(targetValue, sourceValue, isAdd);
328
+ Reflect.set(target, targetKeyName, UtilsContext.assign(targetValue, sourceValue, isAdd));
331
329
  continue;
332
330
  }
333
331
  /* 直接赋值 */
334
- target[targetKeyName] = sourceValue;
332
+ Reflect.set(target, targetKeyName, sourceValue);
335
333
  }
336
334
  }
337
335
  }
@@ -339,7 +337,7 @@ define((function () { 'use strict';
339
337
  }
340
338
  isNull(...args) {
341
339
  let result = true;
342
- let checkList = [...args];
340
+ const checkList = [...args];
343
341
  for (const objItem of checkList) {
344
342
  let itemResult = false;
345
343
  if (objItem === null || objItem === undefined) {
@@ -365,11 +363,12 @@ define((function () { 'use strict';
365
363
  case "boolean":
366
364
  itemResult = !objItem;
367
365
  break;
368
- case "function":
369
- let funcStr = objItem.toString().replace(/\s/g, "");
366
+ case "function": {
367
+ const funcStr = objItem.toString().replace(/\s/g, "");
370
368
  /* 排除()=>{}、(xxx="")=>{}、function(){}、function(xxx=""){} */
371
369
  itemResult = Boolean(funcStr.match(/^\(.*?\)=>\{\}$|^function.*?\(.*?\)\{\}$/));
372
370
  break;
371
+ }
373
372
  }
374
373
  }
375
374
  result = result && itemResult;
@@ -390,18 +389,23 @@ define((function () { 'use strict';
390
389
  return target instanceof Node;
391
390
  }
392
391
  isNotNull(...args) {
393
- let UtilsContext = this;
392
+ const UtilsContext = this;
394
393
  return !UtilsContext.isNull.apply(this, args);
395
394
  }
396
395
  deepClone(obj) {
397
- let UtilsContext = this;
396
+ const UtilsContext = this;
398
397
  if (obj === void 0)
399
398
  return void 0;
400
399
  if (obj === null)
401
400
  return null;
402
- let clone = obj instanceof Array ? [] : {};
401
+ const clone = obj instanceof Array ? [] : {};
403
402
  for (const [key, value] of Object.entries(obj)) {
404
- clone[key] = typeof value === "object" ? UtilsContext.deepClone(value) : value;
403
+ if (typeof value === "object") {
404
+ Reflect.set(clone, key, UtilsContext.deepClone(value));
405
+ }
406
+ else {
407
+ Reflect.set(clone, key, value);
408
+ }
405
409
  }
406
410
  return clone;
407
411
  }
@@ -428,11 +432,11 @@ define((function () { 'use strict';
428
432
  }
429
433
  TryCatch()
430
434
  .config({ log: false })
431
- .error((error) => {
435
+ .error(() => {
432
436
  TryCatch()
433
437
  .error(() => {
434
438
  try {
435
- result = new Function("return " + data)();
439
+ result = new Function(`return ${data}`)();
436
440
  }
437
441
  catch (error2) {
438
442
  if (typeof errorCallBack === "function") {
@@ -443,14 +447,14 @@ define((function () { 'use strict';
443
447
  .run(() => {
444
448
  if (data &&
445
449
  /^[\],:{}\s]*$/.test(data
446
- .replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")
447
- .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]")
450
+ .replace(/\\(?:["\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")
451
+ .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+-]?\d+)?/g, "]")
448
452
  .replace(/(?:^|:|,)(?:\s*\[)+/g, ""))) {
449
- result = new Function("return " + data)();
453
+ result = new Function(`return ${data}`)();
450
454
  }
451
455
  else {
452
456
  if (typeof errorCallBack === "function") {
453
- errorCallBack(new Error("target is not a JSON"));
457
+ errorCallBack(new Error("target is not JSON object"));
454
458
  }
455
459
  }
456
460
  });
@@ -462,7 +466,7 @@ define((function () { 'use strict';
462
466
  return result;
463
467
  }
464
468
  }
465
- let commonUtil = new CommonUtil();
469
+ const commonUtil = new CommonUtil();
466
470
 
467
471
  class UtilsGMCookie {
468
472
  windowApi = {
@@ -491,14 +495,14 @@ define((function () { 'use strict';
491
495
  if (typeof cookieName !== "string") {
492
496
  throw new TypeError("Utils.GMCookie.get 参数cookieName 必须为字符串");
493
497
  }
494
- let cookies = this.getCookiesList();
498
+ const cookies = this.getCookiesList();
495
499
  let findValue = void 0;
496
500
  for (const cookieItem of cookies) {
497
- let item = cookieItem.trim();
498
- let itemSplit = item.split("=");
499
- let itemName = itemSplit[0];
501
+ const item = cookieItem.trim();
502
+ const itemSplit = item.split("=");
503
+ const itemName = itemSplit[0];
500
504
  itemSplit.splice(0, 1);
501
- let itemValue = decodeURIComponent(itemSplit.join(""));
505
+ const itemValue = decodeURIComponent(itemSplit.join(""));
502
506
  if (itemName === cookieName) {
503
507
  findValue = {
504
508
  domain: this.windowApi.window.location.hostname,
@@ -528,7 +532,7 @@ define((function () { 'use strict';
528
532
  if (option == null) {
529
533
  throw new Error("Utils.GMCookie.list 参数不能为空");
530
534
  }
531
- let resultData = [];
535
+ const resultData = [];
532
536
  try {
533
537
  let defaultOption = {
534
538
  url: this.windowApi.window.location.href,
@@ -537,16 +541,16 @@ define((function () { 'use strict';
537
541
  path: "/",
538
542
  };
539
543
  defaultOption = commonUtil.assign(defaultOption, option);
540
- let cookies = this.getCookiesList();
544
+ const cookies = this.getCookiesList();
541
545
  cookies.forEach((item) => {
542
546
  item = item.trim();
543
- let itemSplit = item.split("=");
544
- let itemName = itemSplit[0];
547
+ const itemSplit = item.split("=");
548
+ const itemName = itemSplit[0];
545
549
  itemSplit.splice(0, 1);
546
- let itemValue = decodeURIComponent(itemSplit.join(""));
547
- let nameRegexp = defaultOption.name instanceof RegExp
550
+ const itemValue = decodeURIComponent(itemSplit.join(""));
551
+ const nameRegexp = defaultOption.name instanceof RegExp
548
552
  ? defaultOption.name
549
- : new RegExp("^" + defaultOption.name, "g");
553
+ : new RegExp(`^${defaultOption.name}`, "g");
550
554
  if (itemName.match(nameRegexp)) {
551
555
  resultData.push({
552
556
  domain: this.windowApi.window.location.hostname,
@@ -580,7 +584,7 @@ define((function () { 'use strict';
580
584
  if (option == null) {
581
585
  throw new Error("Utils.GMCookie.list 参数不能为空");
582
586
  }
583
- let resultData = [];
587
+ const resultData = [];
584
588
  let defaultOption = {
585
589
  url: this.windowApi.window.location.href,
586
590
  domain: this.windowApi.window.location.hostname,
@@ -588,16 +592,16 @@ define((function () { 'use strict';
588
592
  path: "/",
589
593
  };
590
594
  defaultOption = commonUtil.assign(defaultOption, option);
591
- let cookies = this.getCookiesList();
595
+ const cookies = this.getCookiesList();
592
596
  cookies.forEach((item) => {
593
597
  item = item.trim();
594
- let itemSplit = item.split("=");
595
- let itemName = itemSplit[0];
598
+ const itemSplit = item.split("=");
599
+ const itemName = itemSplit[0];
596
600
  itemSplit.splice(0, 1);
597
- let itemValue = decodeURIComponent(itemSplit.join(""));
598
- let nameRegexp = defaultOption.name instanceof RegExp
601
+ const itemValue = decodeURIComponent(itemSplit.join(""));
602
+ const nameRegexp = defaultOption.name instanceof RegExp
599
603
  ? defaultOption.name
600
- : new RegExp("^" + defaultOption.name, "g");
604
+ : new RegExp(`^${defaultOption.name}`, "g");
601
605
  if (itemName.match(nameRegexp)) {
602
606
  resultData.push({
603
607
  domain: this.windowApi.window.location.hostname,
@@ -637,17 +641,12 @@ define((function () { 'use strict';
637
641
  expirationDate: Math.floor(Date.now()) + 60 * 60 * 24 * 30,
638
642
  };
639
643
  defaultOption = commonUtil.assign(defaultOption, option);
640
- let life = defaultOption.expirationDate
644
+ const life = defaultOption.expirationDate
641
645
  ? defaultOption.expirationDate
642
646
  : Math.floor(Date.now()) + 60 * 60 * 24 * 30;
643
- let cookieStr = defaultOption.name +
644
- "=" +
645
- decodeURIComponent(defaultOption.value) +
646
- ";expires=" +
647
- new Date(life).toGMTString() +
648
- "; path=/";
647
+ let cookieStr = `${defaultOption.name}=${decodeURIComponent(defaultOption.value)};expires=${new Date(life).toGMTString()}; path=/`;
649
648
  if (commonUtil.isNull(defaultOption.domain)) {
650
- cookieStr += "; domain=" + defaultOption.domain;
649
+ cookieStr += `; domain=${defaultOption.domain}`;
651
650
  }
652
651
  this.windowApi.document.cookie = cookieStr;
653
652
  }
@@ -699,14 +698,14 @@ define((function () { 'use strict';
699
698
  if (cookieStr.trim() === "") {
700
699
  return [];
701
700
  }
702
- let cookies = cookieStr.split(";");
703
- let result = [];
701
+ const cookies = cookieStr.split(";");
702
+ const result = [];
704
703
  for (const cookieItem of cookies) {
705
- let item = cookieItem.trim();
706
- let itemSplit = item.split("=");
707
- let itemName = itemSplit[0];
704
+ const item = cookieItem.trim();
705
+ const itemSplit = item.split("=");
706
+ const itemName = itemSplit[0];
708
707
  itemSplit.splice(0, 1);
709
- let itemValue = decodeURIComponent(itemSplit.join(""));
708
+ const itemValue = decodeURIComponent(itemSplit.join(""));
710
709
  result.push({
711
710
  key: itemName,
712
711
  value: itemValue,
@@ -716,6 +715,7 @@ define((function () { 'use strict';
716
715
  }
717
716
  }
718
717
 
718
+ /* eslint-disable */
719
719
  // ==UserScript==
720
720
  // @name ajaxHooker
721
721
  // @author cxxjackie
@@ -1766,15 +1766,15 @@ define((function () { 'use strict';
1766
1766
  */
1767
1767
  init() {
1768
1768
  for (let index = 0; index < this.$data.data.length; index++) {
1769
- let menuOption = this.$data.data[index]["data"];
1769
+ const menuOption = this.$data.data[index]["data"];
1770
1770
  menuOption.enable = Boolean(this.getLocalMenuData(menuOption.key, menuOption.enable));
1771
1771
  if (typeof menuOption.showText !== "function") {
1772
1772
  menuOption.showText = (menuText, menuEnable) => {
1773
1773
  if (menuEnable) {
1774
- return this.$emoji.success + " " + menuText;
1774
+ return `${this.$emoji.success} ${menuText}`;
1775
1775
  }
1776
1776
  else {
1777
- return this.$emoji.error + " " + menuText;
1777
+ return `${this.$emoji.error} ${menuText}`;
1778
1778
  }
1779
1779
  };
1780
1780
  }
@@ -1785,7 +1785,7 @@ define((function () { 'use strict';
1785
1785
  * @param menuOptions 如果存在,使用它
1786
1786
  */
1787
1787
  register(menuOptions) {
1788
- let that = this;
1788
+ const that = this;
1789
1789
  if (menuOptions == null) {
1790
1790
  throw new TypeError("register菜单数据不能为空");
1791
1791
  }
@@ -1793,9 +1793,9 @@ define((function () { 'use strict';
1793
1793
  menuOptions = [menuOptions];
1794
1794
  }
1795
1795
  for (let index = 0; index < menuOptions.length; index++) {
1796
- let cloneMenuOptionData = commonUtil.deepClone(menuOptions[index].data);
1796
+ const cloneMenuOptionData = commonUtil.deepClone(menuOptions[index].data);
1797
1797
  const { showText, clickCallBack } = this.handleMenuData(cloneMenuOptionData);
1798
- let menuId = that.context.GM_Api.registerMenuCommand(showText, clickCallBack);
1798
+ const menuId = that.context.GM_Api.registerMenuCommand(showText, clickCallBack);
1799
1799
  menuOptions[index].id = menuId;
1800
1800
  cloneMenuOptionData.deleteMenu = function () {
1801
1801
  that.context.GM_Api.unregisterMenuCommand(menuId);
@@ -1809,7 +1809,7 @@ define((function () { 'use strict';
1809
1809
  * @param {string} key 键
1810
1810
  */
1811
1811
  getLocalMenuData(key, defaultValue) {
1812
- let localData = this.context.GM_Api.getValue(this.$data.key, {});
1812
+ const localData = this.context.GM_Api.getValue(this.$data.key, {});
1813
1813
  if (key in localData) {
1814
1814
  return localData[key];
1815
1815
  }
@@ -1823,7 +1823,7 @@ define((function () { 'use strict';
1823
1823
  * @param value 值
1824
1824
  */
1825
1825
  setLocalMenuData(key, value) {
1826
- let localData = this.context.GM_Api.getValue(this.$data.key, {});
1826
+ const localData = this.context.GM_Api.getValue(this.$data.key, {});
1827
1827
  localData[key] = value;
1828
1828
  this.context.GM_Api.setValue(this.$data.key, localData);
1829
1829
  },
@@ -1836,10 +1836,10 @@ define((function () { 'use strict';
1836
1836
  if (typeof menuOption.showText !== "function") {
1837
1837
  menuOption.showText = (menuText, menuEnable) => {
1838
1838
  if (menuEnable) {
1839
- return this.$emoji.success + " " + menuText;
1839
+ return `${this.$emoji.success} ${menuText}`;
1840
1840
  }
1841
1841
  else {
1842
- return this.$emoji.error + " " + menuText;
1842
+ return `${this.$emoji.error} ${menuText}`;
1843
1843
  }
1844
1844
  };
1845
1845
  }
@@ -1850,12 +1850,12 @@ define((function () { 'use strict';
1850
1850
  * @param menuOption
1851
1851
  */
1852
1852
  handleMenuData(menuOption) {
1853
- let that = this;
1854
- let menuLocalDataItemKey = menuOption.key;
1853
+ const that = this;
1854
+ const menuLocalDataItemKey = menuOption.key;
1855
1855
  /* 菜单默认开启的状态 */
1856
- let defaultEnable = Boolean(this.getLocalMenuData(menuLocalDataItemKey, menuOption.enable));
1856
+ const defaultEnable = Boolean(this.getLocalMenuData(menuLocalDataItemKey, menuOption.enable));
1857
1857
  /** 油猴菜单上显示的文本 */
1858
- let showText = menuOption.showText(menuOption.text, defaultEnable);
1858
+ const showText = menuOption.showText(menuOption.text, defaultEnable);
1859
1859
  // const GMMenuOptions = {
1860
1860
  // /**
1861
1861
  // * 菜单的id
@@ -1885,7 +1885,7 @@ define((function () { 'use strict';
1885
1885
  * @param event
1886
1886
  */
1887
1887
  function clickCallBack(event) {
1888
- let localEnable = Boolean(that.getLocalMenuData(menuLocalDataItemKey, defaultEnable));
1888
+ const localEnable = Boolean(that.getLocalMenuData(menuLocalDataItemKey, defaultEnable));
1889
1889
  if (menuOption.isStoreValue) {
1890
1890
  that.setLocalMenuData(menuLocalDataItemKey, !localEnable);
1891
1891
  }
@@ -1998,7 +1998,7 @@ define((function () { 'use strict';
1998
1998
  menuOptionList = [...menuOptionList, options];
1999
1999
  }
2000
2000
  menuOptionList.forEach((menuOption) => {
2001
- let oldMenuOption = this.MenuHandle.getMenuOption(menuOption.key);
2001
+ const oldMenuOption = this.MenuHandle.getMenuOption(menuOption.key);
2002
2002
  if (oldMenuOption) {
2003
2003
  // 覆盖
2004
2004
  Object.assign(oldMenuOption, menuOption);
@@ -2166,42 +2166,42 @@ define((function () { 'use strict';
2166
2166
  * 在Function原型上添加自定义方法.hook和.unhook
2167
2167
  */
2168
2168
  initEnv() {
2169
- Function.prototype.hook = function (realFunc, hookFunc, context) {
2169
+ Function.prototype.hook = function (_, hookFunc, context) {
2170
2170
  let _context = null; //函数上下文
2171
2171
  let _funcName = null; //函数名
2172
2172
  _context = context || window;
2173
2173
  _funcName = getFuncName(this);
2174
- _context["realFunc_" + _funcName] = this;
2174
+ _context[`realFunc_${_funcName}`] = this;
2175
2175
  if (_context[_funcName].prototype && _context[_funcName].prototype.isHooked) {
2176
2176
  console.log("Already has been hooked,unhook first");
2177
2177
  return false;
2178
2178
  }
2179
2179
  function getFuncName(fn) {
2180
2180
  // 获取函数名
2181
- let strFunc = fn.toString();
2182
- let _regex = /function\s+(\w+)\s*\(/;
2183
- let patten = strFunc.match(_regex);
2181
+ const strFunc = fn.toString();
2182
+ const _regex = /function\s+(\w+)\s*\(/;
2183
+ const patten = strFunc.match(_regex);
2184
2184
  if (patten) {
2185
2185
  return patten[1];
2186
2186
  }
2187
2187
  return "";
2188
2188
  }
2189
2189
  try {
2190
- new Function("_context", "_funcName", "hookFunc", `_context[_funcName] = function ${_funcName}() {
2191
- let args = Array.prototype.slice.call(arguments, 0);
2192
- let obj = this;
2193
- hookFunc.apply(obj, args);
2194
- return _context['realFunc_${_funcName}'].apply(obj, args);
2190
+ new Function("_context", "_funcName", "hookFunc", `_context[_funcName] = function ${_funcName}() {
2191
+ let args = Array.prototype.slice.call(arguments, 0);
2192
+ let obj = this;
2193
+ hookFunc.apply(obj, args);
2194
+ return _context['realFunc_${_funcName}'].apply(obj, args);
2195
2195
  };`)(_context, _funcName, hookFunc);
2196
2196
  _context[_funcName].prototype.isHooked = true;
2197
2197
  return true;
2198
2198
  }
2199
2199
  catch (e) {
2200
- console.log("Hook failed,check the params.");
2200
+ console.log("Hook failed,check the params.", e);
2201
2201
  return false;
2202
2202
  }
2203
2203
  };
2204
- Function.prototype.unhook = function (realFunc, funcName, context) {
2204
+ Function.prototype.unhook = function (_, funcName, context) {
2205
2205
  let _context = null;
2206
2206
  let _funcName = null;
2207
2207
  _context = context || window;
@@ -2210,8 +2210,8 @@ define((function () { 'use strict';
2210
2210
  console.log("No function is hooked on");
2211
2211
  return false;
2212
2212
  }
2213
- _context[_funcName] = _context["realFunc" + _funcName];
2214
- Reflect.deleteProperty(_context, "realFunc_" + _funcName);
2213
+ _context[_funcName] = _context[`realFunc${_funcName}`];
2214
+ Reflect.deleteProperty(_context, `realFunc_${_funcName}`);
2215
2215
  return true;
2216
2216
  };
2217
2217
  }
@@ -2219,10 +2219,10 @@ define((function () { 'use strict';
2219
2219
  * 删除在Function原型上添加的自定义方法.hook和.unhook
2220
2220
  */
2221
2221
  cleanEnv() {
2222
- if (Function.prototype.hasOwnProperty("hook")) {
2222
+ if (Object.prototype.hasOwnProperty.call(Function.prototype, "hook")) {
2223
2223
  Reflect.deleteProperty(Function.prototype, "hook");
2224
2224
  }
2225
- if (Function.prototype.hasOwnProperty("unhook")) {
2225
+ if (Object.prototype.hasOwnProperty.call(Function.prototype, "unhook")) {
2226
2226
  Reflect.deleteProperty(Function.prototype, "unhook");
2227
2227
  }
2228
2228
  return true;
@@ -2238,7 +2238,7 @@ define((function () { 'use strict';
2238
2238
  }
2239
2239
  else {
2240
2240
  return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (charStr) {
2241
- var randomValue = (Math.random() * 16) | 0, randomCharValue = charStr === "x" ? randomValue : (randomValue & 0x3) | 0x8;
2241
+ const randomValue = (Math.random() * 16) | 0, randomCharValue = charStr === "x" ? randomValue : (randomValue & 0x3) | 0x8;
2242
2242
  return randomCharValue.toString(16);
2243
2243
  });
2244
2244
  }
@@ -2280,9 +2280,9 @@ define((function () { 'use strict';
2280
2280
  }
2281
2281
  }
2282
2282
  for (let index = 0; index < this.$config.configList.length; index++) {
2283
- let item = this.$config.configList[index];
2283
+ const item = this.$config.configList[index];
2284
2284
  if (typeof item.fn === "function") {
2285
- let result = await item.fn(details);
2285
+ const result = await item.fn(details);
2286
2286
  if (result == null) {
2287
2287
  return;
2288
2288
  }
@@ -2295,7 +2295,7 @@ define((function () { 'use strict';
2295
2295
  */
2296
2296
  add(fn) {
2297
2297
  if (typeof fn === "function") {
2298
- let uuid = GenerateUUID();
2298
+ const uuid = GenerateUUID();
2299
2299
  this.$config.configList.push({
2300
2300
  id: uuid,
2301
2301
  fn: fn,
@@ -2312,7 +2312,7 @@ define((function () { 'use strict';
2312
2312
  */
2313
2313
  delete(id) {
2314
2314
  if (typeof id === "string") {
2315
- let findIndex = this.$config.configList.findIndex((item) => item.id === id);
2315
+ const findIndex = this.$config.configList.findIndex((item) => item.id === id);
2316
2316
  if (findIndex !== -1) {
2317
2317
  this.$config.configList.splice(findIndex, 1);
2318
2318
  return true;
@@ -2358,9 +2358,9 @@ define((function () { 'use strict';
2358
2358
  }
2359
2359
  }
2360
2360
  for (let index = 0; index < this.$config.configList.length; index++) {
2361
- let item = this.$config.configList[index];
2361
+ const item = this.$config.configList[index];
2362
2362
  if (typeof item.successFn === "function") {
2363
- let result = await item.successFn(response, details);
2363
+ const result = await item.successFn(response, details);
2364
2364
  if (result == null) {
2365
2365
  return;
2366
2366
  }
@@ -2393,9 +2393,9 @@ define((function () { 'use strict';
2393
2393
  }
2394
2394
  }
2395
2395
  for (let index = 0; index < this.$config.configList.length; index++) {
2396
- let item = this.$config.configList[index];
2396
+ const item = this.$config.configList[index];
2397
2397
  if (typeof item.errorFn === "function") {
2398
- let result = await item.errorFn(data);
2398
+ const result = await item.errorFn(data);
2399
2399
  if (result == null) {
2400
2400
  return;
2401
2401
  }
@@ -2407,7 +2407,7 @@ define((function () { 'use strict';
2407
2407
  * 添加请求前的回调处理配置
2408
2408
  */
2409
2409
  add(successFn, errorFn) {
2410
- let id = GenerateUUID();
2410
+ const id = GenerateUUID();
2411
2411
  this.$config.configList.push({
2412
2412
  id: id,
2413
2413
  successFn: successFn,
@@ -2421,7 +2421,7 @@ define((function () { 'use strict';
2421
2421
  */
2422
2422
  delete(id) {
2423
2423
  if (typeof id === "string") {
2424
- let findIndex = this.$config.configList.findIndex((item) => item.id === id);
2424
+ const findIndex = this.$config.configList.findIndex((item) => item.id === id);
2425
2425
  if (findIndex !== -1) {
2426
2426
  this.$config.configList.splice(findIndex, 1);
2427
2427
  return true;
@@ -2442,23 +2442,23 @@ define((function () { 'use strict';
2442
2442
  * 对请求的参数进行合并处理
2443
2443
  */
2444
2444
  handleBeforeRequestOptionArgs(...args) {
2445
- let option = {
2445
+ const option = {
2446
2446
  url: void 0,
2447
2447
  };
2448
2448
  if (typeof args[0] === "string") {
2449
2449
  /* 传入的是url,转为配置 */
2450
- let url = args[0];
2450
+ const url = args[0];
2451
2451
  option.url = url;
2452
2452
  if (typeof args[1] === "object") {
2453
2453
  /* 处理第二个参数details */
2454
- let optionArg = args[1];
2454
+ const optionArg = args[1];
2455
2455
  commonUtil.assign(option, optionArg, true);
2456
2456
  option.url = url;
2457
2457
  }
2458
2458
  }
2459
2459
  else {
2460
2460
  /* 传入的是配置 */
2461
- let optionArg = args[0];
2461
+ const optionArg = args[0];
2462
2462
  commonUtil.assign(option, optionArg, true);
2463
2463
  }
2464
2464
  return option;
@@ -2471,7 +2471,7 @@ define((function () { 'use strict';
2471
2471
  * @param reject promise抛出错误回调
2472
2472
  */
2473
2473
  getRequestOption(method, userRequestOption, resolve, reject) {
2474
- let that = this;
2474
+ const that = this;
2475
2475
  let url = userRequestOption.url || this.context.#defaultRequestOption.url;
2476
2476
  if (typeof url === "string") {
2477
2477
  // 去除左右空格
@@ -2484,7 +2484,7 @@ define((function () { 'use strict';
2484
2484
  }
2485
2485
  }
2486
2486
  }
2487
- let requestOption = {
2487
+ const requestOption = {
2488
2488
  url: url,
2489
2489
  method: (method || "GET").toString().toUpperCase().trim(),
2490
2490
  timeout: userRequestOption.timeout || this.context.#defaultRequestOption.timeout,
@@ -2506,9 +2506,12 @@ define((function () { 'use strict';
2506
2506
  /* 对象使用深拷贝 */
2507
2507
  fetchInit: commonUtil.deepClone(this.context.#defaultRequestOption.fetchInit),
2508
2508
  allowInterceptConfig: {
2509
- beforeRequest: this.context.#defaultRequestOption.allowInterceptConfig.beforeRequest,
2510
- afterResponseSuccess: this.context.#defaultRequestOption.allowInterceptConfig.afterResponseSuccess,
2511
- afterResponseError: this.context.#defaultRequestOption.allowInterceptConfig.afterResponseError,
2509
+ beforeRequest: this.context.#defaultRequestOption.allowInterceptConfig
2510
+ .beforeRequest,
2511
+ afterResponseSuccess: this.context.#defaultRequestOption.allowInterceptConfig
2512
+ .afterResponseSuccess,
2513
+ afterResponseError: this.context.#defaultRequestOption.allowInterceptConfig
2514
+ .afterResponseError,
2512
2515
  },
2513
2516
  user: userRequestOption.user || this.context.#defaultRequestOption.user,
2514
2517
  password: userRequestOption.password || this.context.#defaultRequestOption.password,
@@ -2536,15 +2539,17 @@ define((function () { 'use strict';
2536
2539
  };
2537
2540
  // 补全allowInterceptConfig参数
2538
2541
  if (typeof userRequestOption.allowInterceptConfig === "boolean") {
2539
- Object.keys(requestOption.allowInterceptConfig).forEach((keyName) => {
2542
+ const allowInterceptConfigKeys = Object.keys(requestOption.allowInterceptConfig);
2543
+ allowInterceptConfigKeys.forEach((keyName) => {
2540
2544
  Reflect.set(requestOption.allowInterceptConfig, keyName, userRequestOption.allowInterceptConfig);
2541
2545
  });
2542
2546
  }
2543
2547
  else {
2544
2548
  if (typeof userRequestOption.allowInterceptConfig === "object" &&
2545
2549
  userRequestOption.allowInterceptConfig != null) {
2546
- Object.keys(userRequestOption.allowInterceptConfig).forEach((keyName) => {
2547
- let value = Reflect.get(userRequestOption.allowInterceptConfig, keyName);
2550
+ const allowInterceptConfigKeys = Object.keys(requestOption.allowInterceptConfig);
2551
+ allowInterceptConfigKeys.forEach((keyName) => {
2552
+ const value = Reflect.get(userRequestOption.allowInterceptConfig, keyName);
2548
2553
  if (typeof value === "boolean" &&
2549
2554
  Reflect.has(requestOption.allowInterceptConfig, keyName)) {
2550
2555
  Reflect.set(requestOption.allowInterceptConfig, keyName, value);
@@ -2558,7 +2563,8 @@ define((function () { 'use strict';
2558
2563
  }
2559
2564
  if (typeof requestOption.headers === "object") {
2560
2565
  if (typeof userRequestOption.headers === "object") {
2561
- Object.keys(userRequestOption.headers).forEach((keyName, index) => {
2566
+ const headerKeys = Object.keys(requestOption.headers);
2567
+ headerKeys.forEach((keyName) => {
2562
2568
  if (keyName in requestOption.headers && userRequestOption.headers?.[keyName] == null) {
2563
2569
  /* 在默认的header中存在,且设置它新的值为空,那么就是默认的值 */
2564
2570
  Reflect.deleteProperty(requestOption.headers, keyName);
@@ -2576,8 +2582,9 @@ define((function () { 'use strict';
2576
2582
  if (typeof requestOption.fetchInit === "object") {
2577
2583
  /* 使用assign替换且添加 */
2578
2584
  if (typeof userRequestOption.fetchInit === "object") {
2579
- Object.keys(userRequestOption.fetchInit).forEach((keyName, index) => {
2580
- if (keyName in requestOption.fetchInit && userRequestOption.fetchInit[keyName] == null) {
2585
+ const fetchInitKeys = Object.keys(requestOption.fetchInit);
2586
+ fetchInitKeys.forEach((keyName) => {
2587
+ if (keyName in requestOption.fetchInit && Reflect.get(userRequestOption.fetchInit ?? {}, keyName) == null) {
2581
2588
  /* 在默认的fetchInit中存在,且设置它新的值为空,那么就是默认的值 */
2582
2589
  Reflect.deleteProperty(requestOption.fetchInit, keyName);
2583
2590
  }
@@ -2602,7 +2609,7 @@ define((function () { 'use strict';
2602
2609
  try {
2603
2610
  new URL(requestOption.url);
2604
2611
  }
2605
- catch (error) {
2612
+ catch {
2606
2613
  if (requestOption.url.startsWith("//")) {
2607
2614
  // 补充https:
2608
2615
  requestOption.url = globalThis.location.protocol + requestOption.url;
@@ -2613,7 +2620,7 @@ define((function () { 'use strict';
2613
2620
  }
2614
2621
  else {
2615
2622
  // 补充origin+/
2616
- requestOption.url = globalThis.location.origin + "/" + requestOption.url;
2623
+ requestOption.url = `${globalThis.location.origin}/${requestOption.url}`;
2617
2624
  }
2618
2625
  }
2619
2626
  if (requestOption.fetchInit && !requestOption.fetch) {
@@ -2623,12 +2630,12 @@ define((function () { 'use strict';
2623
2630
  // 转换data类型
2624
2631
  try {
2625
2632
  /** 是否对数据进行处理 */
2626
- let processData = userRequestOption.processData ?? true;
2633
+ const processData = userRequestOption.processData ?? true;
2627
2634
  if (requestOption.data != null && processData) {
2628
- let method = requestOption.method;
2635
+ const method = requestOption.method;
2629
2636
  if (method === "GET" || method === "HEAD") {
2630
2637
  // GET类型,data如果有,那么需要转为searchParams
2631
- let urlObj = new URL(requestOption.url);
2638
+ const urlObj = new URL(requestOption.url);
2632
2639
  let urlSearch = "";
2633
2640
  let isHandler = false;
2634
2641
  if (typeof requestOption.data === "string") {
@@ -2638,7 +2645,7 @@ define((function () { 'use strict';
2638
2645
  else if (typeof requestOption.data === "object") {
2639
2646
  isHandler = true;
2640
2647
  // URLSearchParams参数可以转普通的string:string,包括FormData
2641
- let searchParams = new URLSearchParams(requestOption.data);
2648
+ const searchParams = new URLSearchParams(requestOption.data);
2642
2649
  urlSearch = searchParams.toString();
2643
2650
  }
2644
2651
  if (isHandler) {
@@ -2659,7 +2666,7 @@ define((function () { 'use strict';
2659
2666
  }
2660
2667
  else {
2661
2668
  // xxx=xxx&xxx=
2662
- urlObj.search = urlObj.search + "&" + urlSearch;
2669
+ urlObj.search = `${urlObj.search}&${urlSearch}`;
2663
2670
  }
2664
2671
  }
2665
2672
  }
@@ -2667,14 +2674,14 @@ define((function () { 'use strict';
2667
2674
  }
2668
2675
  else if (method === "POST" && requestOption.headers != null) {
2669
2676
  // POST类型,data如果是FormData,那么需要转为string
2670
- let headersKeyList = Object.keys(requestOption.headers);
2671
- let ContentTypeIndex = headersKeyList.findIndex((headerKey) => {
2677
+ const headersKeyList = Object.keys(requestOption.headers);
2678
+ const ContentTypeIndex = headersKeyList.findIndex((headerKey) => {
2672
2679
  return (headerKey.trim().toLowerCase() === "content-type" &&
2673
2680
  typeof requestOption.headers[headerKey] === "string");
2674
2681
  });
2675
2682
  if (ContentTypeIndex !== -1) {
2676
- let ContentTypeKey = headersKeyList[ContentTypeIndex];
2677
- let ContentType = requestOption.headers[ContentTypeKey];
2683
+ const ContentTypeKey = headersKeyList[ContentTypeIndex];
2684
+ const ContentType = requestOption.headers[ContentTypeKey];
2678
2685
  // 设置了Content-Type
2679
2686
  if (ContentType.includes("application/json")) {
2680
2687
  // application/json
@@ -2715,10 +2722,10 @@ define((function () { 'use strict';
2715
2722
  * @param option 请求配置
2716
2723
  */
2717
2724
  removeRequestNullOption(option) {
2718
- Object.keys(option).forEach((keyName) => {
2719
- if (option[keyName] == null ||
2720
- (option[keyName] instanceof Function &&
2721
- commonUtil.isNull(option[keyName]))) {
2725
+ const optionKeys = Object.keys(option);
2726
+ optionKeys.forEach((keyName) => {
2727
+ const optionValue = option[keyName];
2728
+ if (optionValue == null || (optionValue instanceof Function && commonUtil.isNull(optionValue))) {
2722
2729
  Reflect.deleteProperty(option, keyName);
2723
2730
  return;
2724
2731
  }
@@ -2736,14 +2743,14 @@ define((function () { 'use strict';
2736
2743
  /**
2737
2744
  * fetch的请求配置
2738
2745
  **/
2739
- let fetchRequestOption = {};
2746
+ const fetchRequestOption = {};
2740
2747
  if ((option.method === "GET" || option.method === "HEAD") && option.data != null) {
2741
2748
  /* GET 或 HEAD 方法的请求不能包含 body 信息 */
2742
2749
  Reflect.deleteProperty(option, "data");
2743
2750
  }
2744
2751
  /* 中止信号控制器 */
2745
- let abortController = new AbortController();
2746
- let signal = abortController.signal;
2752
+ const abortController = new AbortController();
2753
+ const signal = abortController.signal;
2747
2754
  signal.onabort = () => {
2748
2755
  option.onabort({
2749
2756
  isFetch: true,
@@ -2788,10 +2795,10 @@ define((function () { 'use strict';
2788
2795
  * onabort请求被取消-触发
2789
2796
  * @param details 配置
2790
2797
  * @param resolve promise回调
2791
- * @param reject promise抛出错误回调
2798
+ * @param _reject promise抛出错误回调
2792
2799
  * @param argsResult 返回的参数列表
2793
2800
  */
2794
- async onAbort(details, resolve, reject, argsResult) {
2801
+ async onAbort(details, resolve, _reject, argsResult) {
2795
2802
  // console.log(argsResult);
2796
2803
  if (typeof details?.onabort === "function") {
2797
2804
  details.onabort.apply(this, argsResult);
@@ -2828,7 +2835,7 @@ define((function () { 'use strict';
2828
2835
  * @param reject 抛出错误
2829
2836
  * @param argsResult 返回的参数列表
2830
2837
  */
2831
- async onTimeout(details, resolve, reject, argsResult) {
2838
+ async onTimeout(details, resolve, _reject, argsResult) {
2832
2839
  // console.log(argsResult);
2833
2840
  if (typeof details?.ontimeout === "function") {
2834
2841
  // 执行配置中的ontime回调
@@ -2866,10 +2873,10 @@ define((function () { 'use strict';
2866
2873
  * onerror请求异常-触发
2867
2874
  * @param details 配置
2868
2875
  * @param resolve 回调
2869
- * @param reject 抛出错误
2876
+ * @param _reject 抛出错误
2870
2877
  * @param argsResult 返回的参数列表
2871
2878
  */
2872
- async onError(details, resolve, reject, argsResult) {
2879
+ async onError(details, resolve, _reject, argsResult) {
2873
2880
  // console.log(argsResult);
2874
2881
  if (typeof details?.onerror === "function") {
2875
2882
  details.onerror.apply(this, argsResult);
@@ -2903,16 +2910,15 @@ define((function () { 'use strict';
2903
2910
  * onload加载完毕-触发
2904
2911
  * @param details 请求的配置
2905
2912
  * @param resolve 回调
2906
- * @param reject 抛出错误
2913
+ * @param _reject 抛出错误
2907
2914
  * @param argsResult 返回的参数列表
2908
2915
  */
2909
- async onLoad(details, resolve, reject, argsResult) {
2916
+ async onLoad(details, resolve, _reject, argsResult) {
2910
2917
  // console.log(argsResult);
2911
2918
  /* X浏览器会因为设置了responseType导致不返回responseText */
2912
- let originResponse = argsResult[0];
2919
+ const originResponse = argsResult[0];
2913
2920
  /* responseText为空,response不为空的情况 */
2914
- if (commonUtil.isNull(originResponse["responseText"]) &&
2915
- commonUtil.isNotNull(originResponse["response"])) {
2921
+ if (commonUtil.isNull(originResponse["responseText"]) && commonUtil.isNotNull(originResponse["response"])) {
2916
2922
  if (typeof originResponse["response"] === "object") {
2917
2923
  TryCatch().run(() => {
2918
2924
  originResponse["responseText"] = JSON.stringify(originResponse["response"]);
@@ -2927,51 +2933,51 @@ define((function () { 'use strict';
2927
2933
  typeof originResponse["responseText"] === "string" &&
2928
2934
  originResponse["responseText"].trim() !== "") {
2929
2935
  /** 原始的请求text */
2930
- let httpxResponseText = originResponse.responseText;
2936
+ const httpxResponseText = originResponse.responseText;
2931
2937
  // 自定义个新的response
2932
2938
  let httpxResponse = httpxResponseText;
2933
2939
  if (details.responseType === "json") {
2934
2940
  httpxResponse = commonUtil.toJSON(httpxResponseText);
2935
2941
  }
2936
2942
  else if (details.responseType === "document") {
2937
- let parser = new DOMParser();
2943
+ const parser = new DOMParser();
2938
2944
  httpxResponse = parser.parseFromString(httpxResponseText, "text/html");
2939
2945
  }
2940
2946
  else if (details.responseType === "arraybuffer") {
2941
- let encoder = new TextEncoder();
2942
- let arrayBuffer = encoder.encode(httpxResponseText);
2947
+ const encoder = new TextEncoder();
2948
+ const arrayBuffer = encoder.encode(httpxResponseText);
2943
2949
  httpxResponse = arrayBuffer;
2944
2950
  }
2945
2951
  else if (details.responseType === "blob") {
2946
- let encoder = new TextEncoder();
2947
- let arrayBuffer = encoder.encode(httpxResponseText);
2952
+ const encoder = new TextEncoder();
2953
+ const arrayBuffer = encoder.encode(httpxResponseText);
2948
2954
  httpxResponse = new Blob([arrayBuffer]);
2949
2955
  }
2950
2956
  // 尝试覆盖原response
2951
2957
  try {
2952
- let setStatus = Reflect.set(originResponse, "response", httpxResponse);
2958
+ const setStatus = Reflect.set(originResponse, "response", httpxResponse);
2953
2959
  if (!setStatus) {
2954
2960
  console.warn("[Httpx-HttpxCallBack.oonLoad] 覆盖原始 response 失败,尝试添加新的httpxResponse");
2955
2961
  try {
2956
2962
  Reflect.set(originResponse, "httpxResponse", httpxResponse);
2957
2963
  }
2958
- catch (error) {
2964
+ catch {
2959
2965
  console.warn("[Httpx-HttpxCallBack.oonLoad] httpxResponse 无法被覆盖");
2960
2966
  }
2961
2967
  }
2962
2968
  }
2963
- catch (error) {
2969
+ catch {
2964
2970
  console.warn("[Httpx-HttpxCallBack.oonLoad] 原始 response 无法被覆盖,尝试添加新的httpxResponse");
2965
2971
  try {
2966
2972
  Reflect.set(originResponse, "httpxResponse", httpxResponse);
2967
2973
  }
2968
- catch (error) {
2974
+ catch {
2969
2975
  console.warn("[Httpx-HttpxCallBack.oonLoad] httpxResponse 无法被覆盖");
2970
2976
  }
2971
2977
  }
2972
2978
  }
2973
2979
  /* Stay扩展中没有finalUrl,对应的是responseURL */
2974
- let originResponseURL = Reflect.get(originResponse, "responseURL");
2980
+ const originResponseURL = Reflect.get(originResponse, "responseURL");
2975
2981
  if (originResponse["finalUrl"] == null && originResponseURL != null) {
2976
2982
  Reflect.set(originResponse, "finalUrl", originResponseURL);
2977
2983
  }
@@ -2991,7 +2997,7 @@ define((function () { 'use strict';
2991
2997
  });
2992
2998
  }
2993
2999
  else {
2994
- this.context.HttpxResponseCallBack.onError(details, resolve, reject, argsResult);
3000
+ this.context.HttpxResponseCallBack.onError(details, resolve, _reject, argsResult);
2995
3001
  }
2996
3002
  },
2997
3003
  /**
@@ -3048,7 +3054,7 @@ define((function () { 'use strict';
3048
3054
  console.log("[Httpx-HttpxRequest.request] 请求前的配置👇", details);
3049
3055
  }
3050
3056
  if (typeof this.context.HttpxRequestHook.beforeRequestCallBack === "function") {
3051
- let hookResult = await this.context.HttpxRequestHook.beforeRequestCallBack(details);
3057
+ const hookResult = await this.context.HttpxRequestHook.beforeRequestCallBack(details);
3052
3058
  if (hookResult == null) {
3053
3059
  return;
3054
3060
  }
@@ -3080,7 +3086,7 @@ define((function () { 'use strict';
3080
3086
  fetch(option.url, fetchRequestOption)
3081
3087
  .then(async (fetchResponse) => {
3082
3088
  /** 自定义的response */
3083
- let httpxResponse = {
3089
+ const httpxResponse = {
3084
3090
  isFetch: true,
3085
3091
  finalUrl: fetchResponse.url,
3086
3092
  readyState: 4,
@@ -3095,9 +3101,9 @@ define((function () { 'use strict';
3095
3101
  };
3096
3102
  Object.assign(httpxResponse, option.context || {});
3097
3103
  // 把headers转为字符串
3098
- for (const [key, value] of fetchResponse.headers.entries()) {
3104
+ fetchResponse.headers.forEach((value, key) => {
3099
3105
  httpxResponse.responseHeaders += `${key}: ${value}\n`;
3100
- }
3106
+ });
3101
3107
  /** 请求返回的类型 */
3102
3108
  const fetchResponseType = fetchResponse.headers.get("Content-Type");
3103
3109
  /* 如果需要stream,且获取到的是stream,那直接返回 */
@@ -3118,11 +3124,11 @@ define((function () { 'use strict';
3118
3124
  /** 响应xml文档 */
3119
3125
  let responseXML = "";
3120
3126
  /** 先获取二进制数据 */
3121
- let arrayBuffer = await fetchResponse.arrayBuffer();
3127
+ const arrayBuffer = await fetchResponse.arrayBuffer();
3122
3128
  /** 数据编码 */
3123
3129
  let encoding = "utf-8";
3124
3130
  if (fetchResponse.headers.has("Content-Type")) {
3125
- let charsetMatched = fetchResponse.headers.get("Content-Type")?.match(/charset=(.+)/);
3131
+ const charsetMatched = fetchResponse.headers.get("Content-Type")?.match(/charset=(.+)/);
3126
3132
  if (charsetMatched) {
3127
3133
  encoding = charsetMatched[1];
3128
3134
  encoding = encoding.toLowerCase();
@@ -3132,7 +3138,7 @@ define((function () { 'use strict';
3132
3138
  // 去除引号
3133
3139
  encoding = encoding.replace(/('|")/gi, "");
3134
3140
  // 编码
3135
- let textDecoder = new TextDecoder(encoding);
3141
+ const textDecoder = new TextDecoder(encoding);
3136
3142
  responseText = textDecoder.decode(arrayBuffer);
3137
3143
  response = responseText;
3138
3144
  if (option.responseType === "arraybuffer") {
@@ -3150,11 +3156,11 @@ define((function () { 'use strict';
3150
3156
  }
3151
3157
  else if (option.responseType === "document" || option.responseType == null) {
3152
3158
  // response返回格式是文档格式
3153
- let parser = new DOMParser();
3159
+ const parser = new DOMParser();
3154
3160
  response = parser.parseFromString(responseText, "text/html");
3155
3161
  }
3156
3162
  // 转为XML结构
3157
- let parser = new DOMParser();
3163
+ const parser = new DOMParser();
3158
3164
  responseXML = parser.parseFromString(responseText, "text/xml");
3159
3165
  httpxResponse.response = response;
3160
3166
  httpxResponse.responseText = responseText;
@@ -3228,6 +3234,9 @@ define((function () { 'use strict';
3228
3234
  onreadystatechange() { },
3229
3235
  onprogress() { },
3230
3236
  };
3237
+ /**
3238
+ * 实例化的默认配置
3239
+ */
3231
3240
  #defaultInitOption = {
3232
3241
  /**
3233
3242
  * `baseURL` 将自动加在 `url` 前面,除非 `url` 是一个绝对 URL。
@@ -3343,7 +3352,7 @@ define((function () { 'use strict';
3343
3352
  * @param details 配置
3344
3353
  */
3345
3354
  get(...args) {
3346
- let useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3355
+ const useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3347
3356
  useRequestOption.method = "GET";
3348
3357
  return this.request(useRequestOption, (option) => {
3349
3358
  Reflect.deleteProperty(option, "onprogress");
@@ -3353,7 +3362,7 @@ define((function () { 'use strict';
3353
3362
  * POST 请求
3354
3363
  */
3355
3364
  post(...args) {
3356
- let useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3365
+ const useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3357
3366
  useRequestOption.method = "POST";
3358
3367
  return this.request(useRequestOption);
3359
3368
  }
@@ -3361,7 +3370,7 @@ define((function () { 'use strict';
3361
3370
  * HEAD 请求
3362
3371
  */
3363
3372
  head(...args) {
3364
- let useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3373
+ const useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3365
3374
  useRequestOption.method = "HEAD";
3366
3375
  return this.request(useRequestOption, (option) => {
3367
3376
  Reflect.deleteProperty(option, "onprogress");
@@ -3371,7 +3380,7 @@ define((function () { 'use strict';
3371
3380
  * OPTIONS 请求
3372
3381
  */
3373
3382
  options(...args) {
3374
- let useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3383
+ const useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3375
3384
  useRequestOption.method = "OPTIONS";
3376
3385
  return this.request(useRequestOption, (option) => {
3377
3386
  Reflect.deleteProperty(option, "onprogress");
@@ -3381,7 +3390,7 @@ define((function () { 'use strict';
3381
3390
  * DELETE 请求
3382
3391
  */
3383
3392
  delete(...args) {
3384
- let useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3393
+ const useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3385
3394
  useRequestOption.method = "DELETE";
3386
3395
  return this.request(useRequestOption, (option) => {
3387
3396
  Reflect.deleteProperty(option, "onprogress");
@@ -3391,7 +3400,7 @@ define((function () { 'use strict';
3391
3400
  * PUT 请求
3392
3401
  */
3393
3402
  put(...args) {
3394
- let userRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3403
+ const userRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3395
3404
  userRequestOption.method = "PUT";
3396
3405
  return this.request(userRequestOption);
3397
3406
  }
@@ -3401,18 +3410,30 @@ define((function () { 'use strict';
3401
3410
  * @param beforeRequestOption 处理请求前的配置
3402
3411
  */
3403
3412
  request(details, beforeRequestOption) {
3404
- let useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(details);
3405
- /** 取消请求 */
3413
+ // 对请求的参数进行合并处理
3414
+ const userRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(details);
3415
+ /**
3416
+ * 取消请求
3417
+ */
3406
3418
  let abortFn = null;
3407
- let promise = new globalThis.Promise(async (resolve, reject) => {
3408
- let requestOption = (this.HttpxRequestOption.getRequestOption(useRequestOption.method, useRequestOption, resolve, reject));
3419
+ const promise = new globalThis.Promise(async (resolve, reject) => {
3420
+ // 请求配置
3421
+ let requestOption = this.HttpxRequestOption.getRequestOption(userRequestOption.method, userRequestOption, (resultOption) => {
3422
+ resolve(resultOption);
3423
+ }, (...args) => {
3424
+ reject(...args);
3425
+ });
3426
+ requestOption = this.HttpxRequestOption.removeRequestNullOption(requestOption);
3409
3427
  if (typeof beforeRequestOption === "function") {
3410
3428
  beforeRequestOption(requestOption);
3411
3429
  }
3412
- requestOption = this.HttpxRequestOption.removeRequestNullOption(requestOption);
3430
+ // 处理重试逻辑
3413
3431
  const requestResult = await this.HttpxRequest.request(requestOption);
3414
3432
  if (requestResult != null && typeof requestResult.abort === "function") {
3415
- abortFn = requestResult.abort;
3433
+ abortFn = () => {
3434
+ // 取消请求
3435
+ requestResult.abort();
3436
+ };
3416
3437
  }
3417
3438
  });
3418
3439
  promise.abort = () => {
@@ -3431,10 +3452,7 @@ define((function () { 'use strict';
3431
3452
  /* websql的版本号,由于ios的问题,版本号的写法不一样 */
3432
3453
  // #slqVersion = "1";
3433
3454
  /* 监听IndexDB */
3434
- #indexedDB = window.indexedDB ||
3435
- window.mozIndexedDB ||
3436
- window.webkitIndexedDB ||
3437
- window.msIndexedDB;
3455
+ #indexedDB = globalThis.indexedDB || globalThis.mozIndexedDB || globalThis.webkitIndexedDB || globalThis.msIndexedDB;
3438
3456
  /* 缓存数据库,避免同一个页面重复创建和销毁 */
3439
3457
  #db = {};
3440
3458
  // #store: IDBObjectStore = null as any;
@@ -3469,7 +3487,7 @@ define((function () { 'use strict';
3469
3487
  this.#storeName = storeName;
3470
3488
  this.#dbVersion = dbVersion;
3471
3489
  if (!this.#indexedDB) {
3472
- alert("很抱歉,您的浏览器不支持indexedDB");
3490
+ window.alert("很抱歉,您的浏览器不支持indexedDB");
3473
3491
  throw new TypeError("很抱歉,您的浏览器不支持indexedDB");
3474
3492
  }
3475
3493
  }
@@ -3478,10 +3496,9 @@ define((function () { 'use strict';
3478
3496
  * @param dbName 表名
3479
3497
  */
3480
3498
  createStore(dbName) {
3481
- let txn, store;
3482
- txn = this.#db[dbName].transaction(this.#storeName, "readwrite");
3499
+ const txn = this.#db[dbName].transaction(this.#storeName, "readwrite");
3483
3500
  /* IndexDB的读写权限 */
3484
- store = txn.objectStore(this.#storeName);
3501
+ const store = txn.objectStore(this.#storeName);
3485
3502
  // this.#store = store;
3486
3503
  return store;
3487
3504
  }
@@ -3491,12 +3508,12 @@ define((function () { 'use strict';
3491
3508
  * @param dbName 数据库名
3492
3509
  */
3493
3510
  open(callback, dbName) {
3494
- let that = this;
3511
+ const that = this;
3495
3512
  /* 打开数据库 */
3496
3513
  /* 如果支持IndexDB */
3497
3514
  if (!that.#db[dbName]) {
3498
3515
  /* 如果缓存中没有,则进行数据库的创建或打开,提高效率 */
3499
- let request = that.#indexedDB.open(dbName, that.#dbVersion);
3516
+ const request = that.#indexedDB.open(dbName, that.#dbVersion);
3500
3517
  request.onerror = function (event) {
3501
3518
  callback(null, {
3502
3519
  code: that.#statusCode.openFailed.code,
@@ -3506,26 +3523,26 @@ define((function () { 'use strict';
3506
3523
  };
3507
3524
  request.onsuccess = function (event) {
3508
3525
  if (!that.#db[dbName]) {
3509
- let target = event.target;
3526
+ const target = event.target;
3510
3527
  that.#db[dbName] = target.result;
3511
3528
  }
3512
- let store = that.createStore(dbName);
3529
+ const store = that.createStore(dbName);
3513
3530
  callback(store);
3514
3531
  };
3515
3532
  request.onupgradeneeded = function (event) {
3516
- let target = event.target;
3533
+ const target = event.target;
3517
3534
  that.#db[dbName] = target.result;
3518
- let store = that.#db[dbName].createObjectStore(that.#storeName, {
3535
+ const store = that.#db[dbName].createObjectStore(that.#storeName, {
3519
3536
  keyPath: "key",
3520
3537
  });
3521
- store.transaction.oncomplete = function (event) {
3538
+ store.transaction.oncomplete = function () {
3522
3539
  callback(store);
3523
3540
  };
3524
3541
  };
3525
3542
  }
3526
3543
  else {
3527
3544
  /* 如果缓存中已经打开了数据库,就直接使用 */
3528
- let store = this.createStore(dbName);
3545
+ const store = this.createStore(dbName);
3529
3546
  callback(store);
3530
3547
  }
3531
3548
  }
@@ -3535,10 +3552,10 @@ define((function () { 'use strict';
3535
3552
  * @param value 数据值
3536
3553
  */
3537
3554
  async save(key, value) {
3538
- let that = this;
3555
+ const that = this;
3539
3556
  return new Promise((resolve) => {
3540
- let dbName = this.#dbName;
3541
- let inData = {
3557
+ const dbName = this.#dbName;
3558
+ const inData = {
3542
3559
  key: key,
3543
3560
  value: value,
3544
3561
  };
@@ -3551,7 +3568,7 @@ define((function () { 'use strict';
3551
3568
  });
3552
3569
  }
3553
3570
  else {
3554
- let request = idbStore.put(inData);
3571
+ const request = idbStore.put(inData);
3555
3572
  request.onsuccess = function (event) {
3556
3573
  /* 保存成功有success 字段 */
3557
3574
  resolve({
@@ -3578,9 +3595,9 @@ define((function () { 'use strict';
3578
3595
  * @param key 数据key
3579
3596
  */
3580
3597
  async has(key) {
3581
- let that = this;
3598
+ const that = this;
3582
3599
  return new Promise((resolve) => {
3583
- let dbName = this.#dbName;
3600
+ const dbName = this.#dbName;
3584
3601
  this.open(function (idbStore) {
3585
3602
  /* 判断返回的数据中是否有error字段 */
3586
3603
  if (idbStore == null) {
@@ -3591,7 +3608,7 @@ define((function () { 'use strict';
3591
3608
  });
3592
3609
  }
3593
3610
  else {
3594
- let request = idbStore.get(key);
3611
+ const request = idbStore.get(key);
3595
3612
  request.onsuccess = function (event) {
3596
3613
  /* result 返回的是 {key: string, value: any} */
3597
3614
  /* 键值对存储 */
@@ -3619,9 +3636,9 @@ define((function () { 'use strict';
3619
3636
  * @param key 数据key
3620
3637
  */
3621
3638
  async get(key) {
3622
- let that = this;
3639
+ const that = this;
3623
3640
  return new Promise((resolve) => {
3624
- let dbName = this.#dbName;
3641
+ const dbName = this.#dbName;
3625
3642
  this.open(function (idbStore) {
3626
3643
  /* 判断返回的数据中是否有error字段 */
3627
3644
  if (idbStore == null) {
@@ -3633,13 +3650,13 @@ define((function () { 'use strict';
3633
3650
  });
3634
3651
  }
3635
3652
  else {
3636
- let request = idbStore.get(key);
3653
+ const request = idbStore.get(key);
3637
3654
  request.onsuccess = function (event) {
3638
- let target = event.target;
3639
- let result = target.result;
3655
+ const target = event.target;
3656
+ const result = target.result;
3640
3657
  /* result 返回的是 {key: string, value: any} */
3641
3658
  /* 键值对存储 */
3642
- let data = result ? result.value : void 0;
3659
+ const data = result ? result.value : void 0;
3643
3660
  if (data == null) {
3644
3661
  resolve({
3645
3662
  success: true,
@@ -3680,10 +3697,10 @@ define((function () { 'use strict';
3680
3697
  */
3681
3698
  async regexpGet(key) {
3682
3699
  let list = [];
3683
- let that = this;
3700
+ const that = this;
3684
3701
  return new Promise((resolve) => {
3685
3702
  /* 正则查询 */
3686
- let dbName = that.#dbName;
3703
+ const dbName = that.#dbName;
3687
3704
  this.open(function (idbStore) {
3688
3705
  /* 判断返回的数据中是否有error字段 */
3689
3706
  if (idbStore == null) {
@@ -3695,16 +3712,16 @@ define((function () { 'use strict';
3695
3712
  });
3696
3713
  }
3697
3714
  else {
3698
- let request = idbStore.getAll();
3715
+ const request = idbStore.getAll();
3699
3716
  request.onsuccess = function (event) {
3700
- let target = event.target;
3701
- let result = target.result;
3717
+ const target = event.target;
3718
+ const result = target.result;
3702
3719
  if (result.length !== 0) {
3703
- result.forEach((dataItem, index) => {
3720
+ result.forEach((dataItem) => {
3704
3721
  // 当前项的key
3705
- let __key = dataItem["key"];
3722
+ const __key = dataItem["key"];
3706
3723
  // 当前项的value
3707
- let __value = dataItem["value"];
3724
+ const __value = dataItem["value"];
3708
3725
  if (__key.match(key)) {
3709
3726
  list = list.concat(__value);
3710
3727
  }
@@ -3736,10 +3753,10 @@ define((function () { 'use strict';
3736
3753
  * @param key 数据key
3737
3754
  */
3738
3755
  async delete(key) {
3739
- let that = this;
3756
+ const that = this;
3740
3757
  return new Promise((resolve) => {
3741
3758
  /* 根据key删除某条数据 */
3742
- let dbName = that.#dbName;
3759
+ const dbName = that.#dbName;
3743
3760
  this.open(function (idbStore) {
3744
3761
  if (idbStore == null) {
3745
3762
  resolve({
@@ -3750,7 +3767,7 @@ define((function () { 'use strict';
3750
3767
  }
3751
3768
  else {
3752
3769
  // 删除键
3753
- let request = idbStore.delete(key);
3770
+ const request = idbStore.delete(key);
3754
3771
  request.onsuccess = function (event) {
3755
3772
  resolve({
3756
3773
  success: true,
@@ -3775,10 +3792,10 @@ define((function () { 'use strict';
3775
3792
  * 删除所有数据
3776
3793
  */
3777
3794
  async deleteAll() {
3778
- let that = this;
3795
+ const that = this;
3779
3796
  return new Promise((resolve) => {
3780
3797
  /* 清空数据库 */
3781
- let dbName = that.#dbName;
3798
+ const dbName = that.#dbName;
3782
3799
  this.open(function (idbStore) {
3783
3800
  if (idbStore == null) {
3784
3801
  resolve({
@@ -3789,7 +3806,7 @@ define((function () { 'use strict';
3789
3806
  }
3790
3807
  else {
3791
3808
  // 清空
3792
- let operateResult = idbStore.clear();
3809
+ const operateResult = idbStore.clear();
3793
3810
  operateResult.onsuccess = function (event) {
3794
3811
  resolve({
3795
3812
  success: true,
@@ -3822,7 +3839,7 @@ define((function () { 'use strict';
3822
3839
  run;
3823
3840
  isLock;
3824
3841
  constructor(callback, context, delayTime) {
3825
- let that = this;
3842
+ const that = this;
3826
3843
  this.#callback = callback;
3827
3844
  if (typeof context === "number") {
3828
3845
  this.#delayTime = context;
@@ -3912,14 +3929,14 @@ define((function () { 'use strict';
3912
3929
  * @param stack
3913
3930
  */
3914
3931
  parseErrorStack(stack) {
3915
- let result = {
3932
+ const result = {
3916
3933
  name: "",
3917
3934
  position: "",
3918
3935
  };
3919
3936
  for (let stackString of stack) {
3920
3937
  stackString = stackString.trim();
3921
- let stackFunctionNameMatch = stackString.match(/^at[\s]+(.+?)[\s]+/i);
3922
- let stackFunctionNamePositionMatch = stackString.match(/^at[\s]+.+[\s]+\((.+?)\)/i);
3938
+ const stackFunctionNameMatch = stackString.match(/^at[\s]+(.+?)[\s]+/i);
3939
+ const stackFunctionNamePositionMatch = stackString.match(/^at[\s]+.+[\s]+\((.+?)\)/i);
3923
3940
  if (stackFunctionNameMatch == null) {
3924
3941
  continue;
3925
3942
  }
@@ -3927,8 +3944,8 @@ define((function () { 'use strict';
3927
3944
  continue;
3928
3945
  }
3929
3946
  /* 获取最后一个,因为第一个是包含了at */
3930
- let stackFunctionName = stackFunctionNameMatch[stackFunctionNameMatch.length - 1];
3931
- let stackFunctionNamePosition = stackFunctionNamePositionMatch[stackFunctionNamePositionMatch.length - 1];
3947
+ const stackFunctionName = stackFunctionNameMatch[stackFunctionNameMatch.length - 1];
3948
+ const stackFunctionNamePosition = stackFunctionNamePositionMatch[stackFunctionNamePositionMatch.length - 1];
3932
3949
  if (stackFunctionName === "" ||
3933
3950
  stackFunctionName.match(/^(Utils\.|)Log(\.|)|.<anonymous>$|^Function.each|^NodeList.forEach|^k.fn.init.each/g)) {
3934
3951
  continue;
@@ -3940,9 +3957,9 @@ define((function () { 'use strict';
3940
3957
  }
3941
3958
  }
3942
3959
  if (result.position === "") {
3943
- let lastStackString = stack[stack.length - 1].trim();
3960
+ const lastStackString = stack[stack.length - 1].trim();
3944
3961
  if (lastStackString.startsWith("at chrome-extension://")) {
3945
- let lastStackMatch = lastStackString.match(/^at[\s]+(.+)/);
3962
+ const lastStackMatch = lastStackString.match(/^at[\s]+(.+)/);
3946
3963
  if (lastStackMatch) {
3947
3964
  result.position = lastStackMatch[lastStackMatch.length - 1];
3948
3965
  }
@@ -3972,16 +3989,18 @@ define((function () { 'use strict';
3972
3989
  printContent(msg, color, otherStyle) {
3973
3990
  this.checkClearConsole();
3974
3991
  otherStyle = otherStyle || "";
3975
- let stackSplit = new Error().stack.split("\n");
3992
+ const stackSplit = new Error().stack.split("\n");
3976
3993
  stackSplit.splice(0, 2);
3977
- let { name: callerName, position: callerPosition } = this.parseErrorStack(stackSplit);
3978
- let tagName = this.tag;
3979
- let that = this;
3994
+ const { name: callerName, position: callerPosition } = this.parseErrorStack(stackSplit);
3995
+ const tagName = this.tag;
3996
+ const that = this;
3980
3997
  /** tag的html输出格式 */
3981
- let tagNameHTML = `%c[${tagName}%c`;
3998
+ const tagNameHTML = `%c[${tagName}%c`;
3982
3999
  /** 调用的函数名的html输出格式 */
3983
4000
  let callerNameHTML = `%c${callerName}%c]%c`;
3984
- callerName.trim() !== "" && (callerNameHTML = "-" + callerNameHTML);
4001
+ if (callerName.trim() === "") {
4002
+ callerNameHTML = `-${callerNameHTML}`;
4003
+ }
3985
4004
  /**
3986
4005
  * 输出消息到控制台
3987
4006
  * @param message
@@ -4067,14 +4086,14 @@ define((function () { 'use strict';
4067
4086
  if (this.#disable)
4068
4087
  return;
4069
4088
  this.checkClearConsole();
4070
- let stack = new Error().stack.split("\n");
4089
+ const stack = new Error().stack.split("\n");
4071
4090
  stack.splice(0, 1);
4072
- let errorStackParse = this.parseErrorStack(stack);
4091
+ const errorStackParse = this.parseErrorStack(stack);
4073
4092
  /** 堆栈函数名 */
4074
- let stackFunctionName = errorStackParse.name;
4093
+ const stackFunctionName = errorStackParse.name;
4075
4094
  /** 堆栈位置 */
4076
- let stackFunctionNamePosition = errorStackParse.position;
4077
- let callerName = stackFunctionName;
4095
+ const stackFunctionNamePosition = errorStackParse.position;
4096
+ const callerName = stackFunctionName;
4078
4097
  this.#console.log(`%c[${this.tag}%c-%c${callerName}%c]%c`, ...this.#msgColorDetails, `color: ${this.#details.infoColor};`);
4079
4098
  this.#console.table(msg);
4080
4099
  if (this.#details.debug) {
@@ -4137,9 +4156,9 @@ define((function () { 'use strict';
4137
4156
  */
4138
4157
  circleRadius: 50,
4139
4158
  };
4140
- #ctx = null;
4141
- #width = null;
4142
- #height = null;
4159
+ #ctx;
4160
+ #width;
4161
+ #height;
4143
4162
  /**
4144
4163
  *
4145
4164
  * @param paramConfig 配置信息
@@ -4149,14 +4168,8 @@ define((function () { 'use strict';
4149
4168
  if (!(this.#config.canvasNode instanceof HTMLCanvasElement)) {
4150
4169
  throw new Error("Utils.Progress 参数 canvasNode 必须是 HTMLCanvasElement");
4151
4170
  }
4152
- this.init();
4153
- }
4154
- /**
4155
- * 初始化
4156
- */
4157
- init() {
4158
4171
  /* 获取画笔 */
4159
- let ctx = this.#config.canvasNode.getContext("2d");
4172
+ const ctx = this.#config.canvasNode.getContext("2d");
4160
4173
  if (ctx == null) {
4161
4174
  throw new Error("Utils.Progress 获取画笔失败");
4162
4175
  }
@@ -4167,8 +4180,8 @@ define((function () { 'use strict';
4167
4180
  this.#height = this.#config.canvasNode.height;
4168
4181
  /* 清除锯齿 */
4169
4182
  if (window.devicePixelRatio) {
4170
- this.#config.canvasNode.style.width = this.#width + "px";
4171
- this.#config.canvasNode.style.height = this.#height + "px";
4183
+ this.#config.canvasNode.style.width = `${this.#width}px`;
4184
+ this.#config.canvasNode.style.height = `${this.#height}px`;
4172
4185
  this.#config.canvasNode.height = this.#height * window.devicePixelRatio;
4173
4186
  this.#config.canvasNode.width = this.#width * window.devicePixelRatio;
4174
4187
  this.#ctx.scale(window.devicePixelRatio, window.devicePixelRatio);
@@ -4180,7 +4193,7 @@ define((function () { 'use strict';
4180
4193
  * 绘制
4181
4194
  */
4182
4195
  draw() {
4183
- let degActive = (this.#config.progress * 360) / 100;
4196
+ const degActive = (this.#config.progress * 360) / 100;
4184
4197
  /* 清除画布 */
4185
4198
  this.#ctx.clearRect(0, 0, this.#width, this.#height);
4186
4199
  /* 开始绘制底圆 */
@@ -4194,11 +4207,11 @@ define((function () { 'use strict';
4194
4207
  this.#ctx.strokeStyle = this.#config.lineColor;
4195
4208
  this.#ctx.stroke();
4196
4209
  /* 获取百分比 */
4197
- let txt = parseInt(this.#config.progress.toString()) + "%";
4198
- this.#ctx.font = this.#config.fontSize + "px SimHei";
4210
+ const txt = `${parseInt(this.#config.progress.toString())}%`;
4211
+ this.#ctx.font = `${this.#config.fontSize}px SimHei`;
4199
4212
  /* 获取文本宽度 */
4200
- let w = this.#ctx.measureText(txt).width;
4201
- let h = this.#config.fontSize / 2;
4213
+ const w = this.#ctx.measureText(txt).width;
4214
+ const h = this.#config.fontSize / 2;
4202
4215
  this.#ctx.fillStyle = this.#config.textColor;
4203
4216
  this.#ctx.fillText(txt, this.#width / 2 - w / 2, this.#height / 2 + h / 2);
4204
4217
  }
@@ -4222,9 +4235,9 @@ define((function () { 'use strict';
4222
4235
  * 迭代器
4223
4236
  */
4224
4237
  get entries() {
4225
- let that = this;
4238
+ const that = this;
4226
4239
  return function* () {
4227
- let itemKeys = Object.keys(that.getItems());
4240
+ const itemKeys = Object.keys(that.getItems());
4228
4241
  for (const keyName of itemKeys) {
4229
4242
  yield [keyName, that.get(keyName)];
4230
4243
  }
@@ -4234,9 +4247,8 @@ define((function () { 'use strict';
4234
4247
  * 是否可遍历
4235
4248
  */
4236
4249
  get [Symbol.iterator]() {
4237
- let that = this;
4238
- return function () {
4239
- return that.entries();
4250
+ return () => {
4251
+ return this.entries();
4240
4252
  };
4241
4253
  }
4242
4254
  /**
@@ -4323,7 +4335,7 @@ define((function () { 'use strict';
4323
4335
  * @param callbackfn 回调函数
4324
4336
  */
4325
4337
  forEach(callbackfn) {
4326
- this.items.forEach((value, key, self) => {
4338
+ this.items.forEach((value, key) => {
4327
4339
  callbackfn(value, key, this);
4328
4340
  });
4329
4341
  }
@@ -4415,6 +4427,7 @@ define((function () { 'use strict';
4415
4427
  }
4416
4428
  }
4417
4429
 
4430
+ // @ts-nocheck
4418
4431
  const VueUtils = {
4419
4432
  /** 标签 */
4420
4433
  ReactiveFlags: {
@@ -4453,10 +4466,10 @@ define((function () { 'use strict';
4453
4466
  deps = [];
4454
4467
  active = true;
4455
4468
  fn;
4456
- // private scheduler;
4469
+ scheduler;
4457
4470
  constructor(fn, scheduler) {
4458
4471
  this.fn = fn;
4459
- // this.scheduler = scheduler;
4472
+ this.scheduler = scheduler;
4460
4473
  }
4461
4474
  run(cb) {
4462
4475
  if (!this.active) {
@@ -4528,7 +4541,7 @@ define((function () { 'use strict';
4528
4541
  if (VueUtils.isReactive(target)) {
4529
4542
  return target;
4530
4543
  }
4531
- let exisProxy = this.reactMap.get(target);
4544
+ const exisProxy = this.reactMap.get(target);
4532
4545
  if (exisProxy) {
4533
4546
  return exisProxy;
4534
4547
  }
@@ -4541,8 +4554,8 @@ define((function () { 'use strict';
4541
4554
  return Reflect.get(target, key, receiver);
4542
4555
  },
4543
4556
  set(target, key, value, receiver) {
4544
- let oldValue = target[key];
4545
- let result = Reflect.set(target, key, value, receiver);
4557
+ const oldValue = target[key];
4558
+ const result = Reflect.set(target, key, value, receiver);
4546
4559
  if (oldValue !== value) {
4547
4560
  that.trigger(target, "set", key, oldValue, value);
4548
4561
  }
@@ -4592,11 +4605,12 @@ define((function () { 'use strict';
4592
4605
  }
4593
4606
  toRefs(object) {
4594
4607
  const result = VueUtils.isArray(object) ? new Array(object.length) : {};
4595
- for (let key in object) {
4608
+ for (const key in object) {
4596
4609
  result[key] = this.toRef(object, key);
4597
4610
  }
4598
4611
  return result;
4599
4612
  }
4613
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
4600
4614
  trigger(target, type, key, oldValue, value) {
4601
4615
  const depsMap = this.targetMap.get(target);
4602
4616
  if (!depsMap)
@@ -4604,8 +4618,9 @@ define((function () { 'use strict';
4604
4618
  const effects = depsMap.get(key);
4605
4619
  this.triggerEffect(effects, "effects");
4606
4620
  }
4621
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
4607
4622
  triggerEffect(effects, name) {
4608
- effects &&
4623
+ if (effects) {
4609
4624
  effects.forEach((effect) => {
4610
4625
  if (effect.scheduler) {
4611
4626
  effect.scheduler();
@@ -4614,6 +4629,7 @@ define((function () { 'use strict';
4614
4629
  effect.run();
4615
4630
  }
4616
4631
  });
4632
+ }
4617
4633
  }
4618
4634
  track(target, type, key) {
4619
4635
  if (!this.activeEffect)
@@ -4630,7 +4646,7 @@ define((function () { 'use strict';
4630
4646
  }
4631
4647
  trackEffect(dep) {
4632
4648
  if (this.activeEffect) {
4633
- let shouldTrack = !dep.has(this.activeEffect);
4649
+ const shouldTrack = !dep.has(this.activeEffect);
4634
4650
  if (shouldTrack) {
4635
4651
  dep.add(this.activeEffect);
4636
4652
  this.activeEffect.deps.push(dep);
@@ -4644,7 +4660,7 @@ define((function () { 'use strict';
4644
4660
  return value;
4645
4661
  }
4646
4662
  set.add(value);
4647
- for (let key in value) {
4663
+ for (const key in value) {
4648
4664
  this.traversal(value[key], set);
4649
4665
  }
4650
4666
  return value;
@@ -4896,6 +4912,7 @@ define((function () { 'use strict';
4896
4912
  const setInterval = (...args) => loadOrReturnBroker().setInterval(...args);
4897
4913
  const setTimeout$1 = (...args) => loadOrReturnBroker().setTimeout(...args);
4898
4914
 
4915
+ /* eslint-disable */
4899
4916
  // ==UserScript==
4900
4917
  // @name ModuleRaid.js
4901
4918
  // @namespace http://tampermonkey.net/
@@ -5313,28 +5330,26 @@ define((function () { 'use strict';
5313
5330
  return $ele?.innerHTML?.trim() === "";
5314
5331
  });
5315
5332
  }
5316
- else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) ||
5317
- selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)) {
5333
+ else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) || selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)) {
5318
5334
  // contains 语法
5319
- let textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
5320
- let text = textMatch[2];
5335
+ const textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
5336
+ const text = textMatch[2];
5321
5337
  selector = selector.replace(/:contains\(("|')(.*)("|')\)$/gi, "");
5322
5338
  return Array.from(parent.querySelectorAll(selector)).filter(($ele) => {
5323
5339
  return ($ele?.textContent || $ele?.innerText)?.includes(text);
5324
5340
  });
5325
5341
  }
5326
- else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) ||
5327
- selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)) {
5342
+ else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) || selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)) {
5328
5343
  // regexp 语法
5329
- let textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
5344
+ const textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
5330
5345
  let pattern = textMatch[2];
5331
- let flagMatch = pattern.match(/("|'),[\s]*("|')([igm]{0,3})$/i);
5346
+ const flagMatch = pattern.match(/("|'),[\s]*("|')([igm]{0,3})$/i);
5332
5347
  let flags = "";
5333
5348
  if (flagMatch) {
5334
5349
  pattern = pattern.replace(/("|'),[\s]*("|')([igm]{0,3})$/gi, "");
5335
5350
  flags = flagMatch[3];
5336
5351
  }
5337
- let regexp = new RegExp(pattern, flags);
5352
+ const regexp = new RegExp(pattern, flags);
5338
5353
  selector = selector.replace(/:regexp\(("|')(.*)("|')\)$/gi, "");
5339
5354
  return Array.from(parent.querySelectorAll(selector)).filter(($ele) => {
5340
5355
  return Boolean(($ele?.textContent || $ele?.innerText)?.match(regexp));
@@ -5376,11 +5391,10 @@ define((function () { 'use strict';
5376
5391
  selector = selector.replace(/:empty$/gi, "");
5377
5392
  return $el.matches(selector) && $el?.innerHTML?.trim() === "";
5378
5393
  }
5379
- else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) ||
5380
- selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)) {
5394
+ else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) || selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)) {
5381
5395
  // contains 语法
5382
- let textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
5383
- let text = textMatch[2];
5396
+ const textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
5397
+ const text = textMatch[2];
5384
5398
  selector = selector.replace(/:contains\(("|')(.*)("|')\)$/gi, "");
5385
5399
  let content = $el?.textContent || $el?.innerText;
5386
5400
  if (typeof content !== "string") {
@@ -5388,18 +5402,17 @@ define((function () { 'use strict';
5388
5402
  }
5389
5403
  return $el.matches(selector) && content?.includes(text);
5390
5404
  }
5391
- else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) ||
5392
- selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)) {
5405
+ else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) || selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)) {
5393
5406
  // regexp 语法
5394
- let textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
5407
+ const textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
5395
5408
  let pattern = textMatch[2];
5396
- let flagMatch = pattern.match(/("|'),[\s]*("|')([igm]{0,3})$/i);
5409
+ const flagMatch = pattern.match(/("|'),[\s]*("|')([igm]{0,3})$/i);
5397
5410
  let flags = "";
5398
5411
  if (flagMatch) {
5399
5412
  pattern = pattern.replace(/("|'),[\s]*("|')([igm]{0,3})$/gi, "");
5400
5413
  flags = flagMatch[3];
5401
5414
  }
5402
- let regexp = new RegExp(pattern, flags);
5415
+ const regexp = new RegExp(pattern, flags);
5403
5416
  selector = selector.replace(/:regexp\(("|')(.*)("|')\)$/gi, "");
5404
5417
  let content = $el?.textContent || $el?.innerText;
5405
5418
  if (typeof content !== "string") {
@@ -5417,43 +5430,41 @@ define((function () { 'use strict';
5417
5430
  if (selector.match(/[^\s]{1}:empty$/gi)) {
5418
5431
  // empty 语法
5419
5432
  selector = selector.replace(/:empty$/gi, "");
5420
- let $closest = $el?.closest(selector);
5433
+ const $closest = $el?.closest(selector);
5421
5434
  if ($closest && $closest?.innerHTML?.trim() === "") {
5422
5435
  return $closest;
5423
5436
  }
5424
5437
  return null;
5425
5438
  }
5426
- else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) ||
5427
- selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)) {
5439
+ else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) || selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)) {
5428
5440
  // contains 语法
5429
- let textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
5430
- let text = textMatch[2];
5441
+ const textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
5442
+ const text = textMatch[2];
5431
5443
  selector = selector.replace(/:contains\(("|')(.*)("|')\)$/gi, "");
5432
- let $closest = $el?.closest(selector);
5444
+ const $closest = $el?.closest(selector);
5433
5445
  if ($closest) {
5434
- let content = $el?.textContent || $el?.innerText;
5446
+ const content = $el?.textContent || $el?.innerText;
5435
5447
  if (typeof content === "string" && content.includes(text)) {
5436
5448
  return $closest;
5437
5449
  }
5438
5450
  }
5439
5451
  return null;
5440
5452
  }
5441
- else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) ||
5442
- selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)) {
5453
+ else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) || selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)) {
5443
5454
  // regexp 语法
5444
- let textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
5455
+ const textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
5445
5456
  let pattern = textMatch[2];
5446
- let flagMatch = pattern.match(/("|'),[\s]*("|')([igm]{0,3})$/i);
5457
+ const flagMatch = pattern.match(/("|'),[\s]*("|')([igm]{0,3})$/i);
5447
5458
  let flags = "";
5448
5459
  if (flagMatch) {
5449
5460
  pattern = pattern.replace(/("|'),[\s]*("|')([igm]{0,3})$/gi, "");
5450
5461
  flags = flagMatch[3];
5451
5462
  }
5452
- let regexp = new RegExp(pattern, flags);
5463
+ const regexp = new RegExp(pattern, flags);
5453
5464
  selector = selector.replace(/:regexp\(("|')(.*)("|')\)$/gi, "");
5454
- let $closest = $el?.closest(selector);
5465
+ const $closest = $el?.closest(selector);
5455
5466
  if ($closest) {
5456
- let content = $el?.textContent || $el?.innerText;
5467
+ const content = $el?.textContent || $el?.innerText;
5457
5468
  if (typeof content === "string" && content.match(regexp)) {
5458
5469
  return $closest;
5459
5470
  }
@@ -5462,12 +5473,12 @@ define((function () { 'use strict';
5462
5473
  }
5463
5474
  else {
5464
5475
  // 普通语法
5465
- let $closest = $el?.closest(selector);
5476
+ const $closest = $el?.closest(selector);
5466
5477
  return $closest;
5467
5478
  }
5468
5479
  }
5469
5480
  }
5470
- let domUtils = new DOMUtils();
5481
+ const domUtils = new DOMUtils();
5471
5482
 
5472
5483
  class Utils {
5473
5484
  windowApi;
@@ -5480,7 +5491,7 @@ define((function () { 'use strict';
5480
5491
  if (typeof cssText !== "string") {
5481
5492
  throw new Error("Utils.addStyle 参数cssText 必须为String类型");
5482
5493
  }
5483
- let cssNode = this.windowApi.document.createElement("style");
5494
+ const cssNode = this.windowApi.document.createElement("style");
5484
5495
  cssNode.setAttribute("type", "text/css");
5485
5496
  cssNode.innerHTML = cssText;
5486
5497
  if (this.windowApi.document.head) {
@@ -5502,23 +5513,23 @@ define((function () { 'use strict';
5502
5513
  return cssNode;
5503
5514
  }
5504
5515
  /**
5505
- * JSON数据从源端替换到目标端中,如果目标端存在该数据则替换,不添加,返回结果为目标端替换完毕的结果
5506
- * @param target 目标数据
5507
- * @param source 源数据
5508
- * @param isAdd 是否可以追加键,默认false
5509
- * @example
5510
- * Utils.assign({"1":1,"2":{"3":3}}, {"2":{"3":4}});
5511
- * >
5512
- * {
5513
- "1": 1,
5514
- "2": {
5515
- "3": 4
5516
- }
5517
- }
5518
- */
5516
+ * JSON数据从源端替换到目标端中,如果目标端存在该数据则替换,不添加,返回结果为目标端替换完毕的结果
5517
+ * @param target 目标数据
5518
+ * @param source 源数据
5519
+ * @param isAdd 是否可以追加键,默认false
5520
+ * @example
5521
+ * Utils.assign({"1":1,"2":{"3":3}}, {"2":{"3":4}});
5522
+ * >
5523
+ * {
5524
+ "1": 1,
5525
+ "2": {
5526
+ "3": 4
5527
+ }
5528
+ }
5529
+ */
5519
5530
  assign = commonUtil.assign.bind(commonUtil);
5520
5531
  async asyncReplaceAll(string, pattern, asyncFn) {
5521
- let UtilsContext = this;
5532
+ const UtilsContext = this;
5522
5533
  if (typeof string !== "string") {
5523
5534
  throw new TypeError("string必须是字符串");
5524
5535
  }
@@ -5590,18 +5601,18 @@ define((function () { 'use strict';
5590
5601
  canvasElement.dispatchEvent(new MouseEvent("mouseup", eventInit));
5591
5602
  }
5592
5603
  checkUserClickInNode(element) {
5593
- let UtilsContext = this;
5604
+ const UtilsContext = this;
5594
5605
  if (!UtilsContext.isDOM(element)) {
5595
5606
  throw new Error("Utils.checkUserClickInNode 参数 targetNode 必须为 Element|Node 类型");
5596
5607
  }
5597
- let clickEvent = UtilsContext.windowApi.window.event;
5598
- let touchEvent = UtilsContext.windowApi.window.event;
5599
- let $click = clickEvent?.composedPath()?.[0];
5608
+ const clickEvent = UtilsContext.windowApi.window.event;
5609
+ const touchEvent = UtilsContext.windowApi.window.event;
5610
+ const $click = clickEvent?.composedPath()?.[0];
5600
5611
  // 点击的x坐标
5601
- let clickPosX = clickEvent?.clientX != null ? clickEvent.clientX : touchEvent.touches[0].clientX;
5612
+ const clickPosX = clickEvent?.clientX != null ? clickEvent.clientX : touchEvent.touches[0].clientX;
5602
5613
  // 点击的y坐标
5603
- let clickPosY = clickEvent?.clientY != null ? clickEvent.clientY : touchEvent.touches[0].clientY;
5604
- let {
5614
+ const clickPosY = clickEvent?.clientY != null ? clickEvent.clientY : touchEvent.touches[0].clientY;
5615
+ const {
5605
5616
  /* 要检测的元素的相对屏幕的横坐标最左边 */
5606
5617
  left: elementPosXLeft,
5607
5618
  /* 要检测的元素的相对屏幕的横坐标最右边 */
@@ -5629,32 +5640,32 @@ define((function () { 'use strict';
5629
5640
  * @param formData 需要clone的数据
5630
5641
  */
5631
5642
  cloneFormData(formData, filterFn) {
5632
- let clonedFormData = new FormData();
5633
- for (let [key, value] of formData.entries()) {
5634
- let isFilter = typeof filterFn === "function" ? filterFn(key, value) : false;
5643
+ const clonedFormData = new FormData();
5644
+ formData.forEach((value, key) => {
5645
+ const isFilter = typeof filterFn === "function" ? filterFn(key, value) : false;
5635
5646
  if (typeof isFilter === "boolean" && isFilter) {
5636
- continue;
5647
+ return;
5637
5648
  }
5638
5649
  clonedFormData.append(key, value);
5639
- }
5650
+ });
5640
5651
  return clonedFormData;
5641
5652
  }
5642
5653
  createOverload() {
5643
- let fnMap = new Map();
5654
+ const fnMap = new Map();
5644
5655
  function overload(...args) {
5645
- let key = args.map((it) => typeof it).join(",");
5646
- let fn = fnMap.get(key);
5656
+ const key = args.map((it) => typeof it).join(",");
5657
+ const fn = fnMap.get(key);
5647
5658
  if (!fn) {
5648
5659
  throw new TypeError("没有找到对应的实现");
5649
5660
  }
5650
5661
  return fn.apply(this, args);
5651
5662
  }
5652
5663
  overload.addImpl = function (...args) {
5653
- let fn = args.pop();
5664
+ const fn = args.pop();
5654
5665
  if (typeof fn !== "function") {
5655
5666
  throw new TypeError("最后一个参数必须是函数");
5656
5667
  }
5657
- let key = args.join(",");
5668
+ const key = args.join(",");
5658
5669
  fnMap.set(key, fn);
5659
5670
  };
5660
5671
  return overload;
@@ -5671,7 +5682,7 @@ define((function () { 'use strict';
5671
5682
  deepClone = commonUtil.deepClone.bind(commonUtil);
5672
5683
  debounce(fn, delay = 0) {
5673
5684
  let timer = null;
5674
- let UtilsContext = this;
5685
+ const UtilsContext = this;
5675
5686
  return function (...args) {
5676
5687
  UtilsContext.workerClearTimeout(timer);
5677
5688
  timer = UtilsContext.workerSetTimeout(function () {
@@ -5680,7 +5691,7 @@ define((function () { 'use strict';
5680
5691
  };
5681
5692
  }
5682
5693
  deleteParentNode(element, targetSelector) {
5683
- let UtilsContext = this;
5694
+ const UtilsContext = this;
5684
5695
  if (element == null) {
5685
5696
  return;
5686
5697
  }
@@ -5691,7 +5702,7 @@ define((function () { 'use strict';
5691
5702
  throw new Error("Utils.deleteParentNode 参数 targetSelector 必须为 string 类型");
5692
5703
  }
5693
5704
  let result = false;
5694
- let needRemoveDOM = domUtils.closest(element, targetSelector);
5705
+ const needRemoveDOM = domUtils.closest(element, targetSelector);
5695
5706
  if (needRemoveDOM) {
5696
5707
  needRemoveDOM.remove();
5697
5708
  result = true;
@@ -5721,7 +5732,7 @@ define((function () { 'use strict';
5721
5732
  eventNameList = [...eventName];
5722
5733
  }
5723
5734
  eventNameList.forEach((_eventName_) => {
5724
- let event = new Event(_eventName_);
5735
+ const event = new Event(_eventName_);
5725
5736
  if (details) {
5726
5737
  Object.assign(event, details);
5727
5738
  }
@@ -5729,7 +5740,7 @@ define((function () { 'use strict';
5729
5740
  });
5730
5741
  }
5731
5742
  downloadBase64(base64Data, fileName, isIFrame = false) {
5732
- let UtilsContext = this;
5743
+ const UtilsContext = this;
5733
5744
  if (typeof base64Data !== "string") {
5734
5745
  throw new Error("Utils.downloadBase64 参数 base64Data 必须为 string 类型");
5735
5746
  }
@@ -5761,7 +5772,7 @@ define((function () { 'use strict';
5761
5772
  let strFound;
5762
5773
  if (this.windowApi.globalThis.find) {
5763
5774
  /* CODE FOR BROWSERS THAT SUPPORT window.find */
5764
- let windowFind = this.windowApi.self.find;
5775
+ const windowFind = this.windowApi.self.find;
5765
5776
  strFound = windowFind(str, caseSensitive, true, true, false);
5766
5777
  if (strFound && this.windowApi.self.getSelection && !this.windowApi.self.getSelection().anchorNode) {
5767
5778
  strFound = windowFind(str, caseSensitive, true, true, false);
@@ -5795,19 +5806,19 @@ define((function () { 'use strict';
5795
5806
  return strFound ? true : false;
5796
5807
  }
5797
5808
  *findElementsWithText(element, text, filter) {
5798
- let that = this;
5809
+ const that = this;
5799
5810
  if (element.outerHTML.includes(text)) {
5800
5811
  if (element.children.length === 0) {
5801
- let filterResult = typeof filter === "function" ? filter(element) : false;
5812
+ const filterResult = typeof filter === "function" ? filter(element) : false;
5802
5813
  if (!filterResult) {
5803
5814
  yield element;
5804
5815
  }
5805
5816
  }
5806
5817
  else {
5807
- let textElement = Array.from(element.childNodes).filter((ele) => ele.nodeType === Node.TEXT_NODE);
5808
- for (let $child of textElement) {
5818
+ const textElement = Array.from(element.childNodes).filter((ele) => ele.nodeType === Node.TEXT_NODE);
5819
+ for (const $child of textElement) {
5809
5820
  if ($child.textContent.includes(text)) {
5810
- let filterResult = typeof filter === "function" ? filter(element) : false;
5821
+ const filterResult = typeof filter === "function" ? filter(element) : false;
5811
5822
  if (!filterResult) {
5812
5823
  yield $child;
5813
5824
  }
@@ -5816,7 +5827,7 @@ define((function () { 'use strict';
5816
5827
  }
5817
5828
  }
5818
5829
  for (let index = 0; index < element.children.length; index++) {
5819
- let $child = element.children[index];
5830
+ const $child = element.children[index];
5820
5831
  yield* that.findElementsWithText($child, text, filter);
5821
5832
  }
5822
5833
  }
@@ -5830,8 +5841,8 @@ define((function () { 'use strict';
5830
5841
  findVisibleElement(element) {
5831
5842
  let currentElement = element;
5832
5843
  while (currentElement) {
5833
- let elementRect = currentElement.getBoundingClientRect();
5834
- if (Boolean(elementRect.length)) {
5844
+ const elementRect = currentElement.getBoundingClientRect();
5845
+ if (elementRect.length) {
5835
5846
  return currentElement;
5836
5847
  }
5837
5848
  currentElement = currentElement.parentElement;
@@ -5845,7 +5856,7 @@ define((function () { 'use strict';
5845
5856
  }
5846
5857
  let result = 0;
5847
5858
  let resultType = "KB";
5848
- let sizeData = {};
5859
+ const sizeData = {};
5849
5860
  sizeData.B = 1;
5850
5861
  sizeData.KB = 1024;
5851
5862
  sizeData.MB = sizeData.KB * sizeData.KB;
@@ -5858,7 +5869,7 @@ define((function () { 'use strict';
5858
5869
  sizeData.BB = sizeData.YB * sizeData.KB;
5859
5870
  sizeData.NB = sizeData.BB * sizeData.KB;
5860
5871
  sizeData.DB = sizeData.NB * sizeData.KB;
5861
- for (let key in sizeData) {
5872
+ for (const key in sizeData) {
5862
5873
  result = byteSize / sizeData[key];
5863
5874
  resultType = key;
5864
5875
  if (sizeData.KB >= result) {
@@ -5871,7 +5882,7 @@ define((function () { 'use strict';
5871
5882
  }
5872
5883
  getNodeListValue(...args) {
5873
5884
  let resultArray = [];
5874
- for (let arg of args) {
5885
+ for (const arg of args) {
5875
5886
  let value = arg;
5876
5887
  if (typeof arg === "function") {
5877
5888
  /* 方法 */
@@ -5886,7 +5897,7 @@ define((function () { 'use strict';
5886
5897
  }
5887
5898
  getNonNullValue(...args) {
5888
5899
  let resultValue = args[args.length - 1];
5889
- let UtilsContext = this;
5900
+ const UtilsContext = this;
5890
5901
  for (const argValue of args) {
5891
5902
  if (UtilsContext.isNotNull(argValue)) {
5892
5903
  resultValue = argValue;
@@ -5896,7 +5907,7 @@ define((function () { 'use strict';
5896
5907
  return resultValue;
5897
5908
  }
5898
5909
  formatTime(text = new Date(), formatType = "yyyy-MM-dd HH:mm:ss") {
5899
- let time = text == null ? new Date() : new Date(text);
5910
+ const time = text == null ? new Date() : new Date(text);
5900
5911
  /**
5901
5912
  * 校验时间补0
5902
5913
  * @param timeNum
@@ -5904,7 +5915,7 @@ define((function () { 'use strict';
5904
5915
  */
5905
5916
  function checkTime(timeNum) {
5906
5917
  if (timeNum < 10)
5907
- return "0" + timeNum;
5918
+ return `0${timeNum}`;
5908
5919
  return timeNum;
5909
5920
  }
5910
5921
  /**
@@ -5915,7 +5926,7 @@ define((function () { 'use strict';
5915
5926
  function timeSystemChange(hourNum) {
5916
5927
  return hourNum > 12 ? hourNum - 12 : hourNum;
5917
5928
  }
5918
- let timeRegexp = {
5929
+ const timeRegexp = {
5919
5930
  yyyy: time.getFullYear(),
5920
5931
  /* 年 */
5921
5932
  MM: checkTime(time.getMonth() + 1),
@@ -5932,7 +5943,7 @@ define((function () { 'use strict';
5932
5943
  /* 秒 */
5933
5944
  };
5934
5945
  Object.keys(timeRegexp).forEach(function (key) {
5935
- let replaecRegexp = new RegExp(key, "g");
5946
+ const replaecRegexp = new RegExp(key, "g");
5936
5947
  formatType = formatType.replace(replaecRegexp, timeRegexp[key]);
5937
5948
  });
5938
5949
  return formatType;
@@ -5944,12 +5955,12 @@ define((function () { 'use strict';
5944
5955
  }
5945
5956
  if (text.length === 8) {
5946
5957
  /* 该字符串只有时分秒 */
5947
- let today = new Date();
5948
- text = today.getFullYear() + "-" + (today.getMonth() + 1) + "-" + today.getDate() + " " + text;
5958
+ const today = new Date();
5959
+ text = `${today.getFullYear()}-${today.getMonth() + 1}-${today.getDate()} ${text}`;
5949
5960
  }
5950
5961
  text = text.substring(0, 19);
5951
5962
  text = text.replace(/-/g, "/");
5952
- let timestamp = new Date(text).getTime();
5963
+ const timestamp = new Date(text).getTime();
5953
5964
  return timestamp;
5954
5965
  }
5955
5966
  /**
@@ -5999,16 +6010,16 @@ define((function () { 'use strict';
5999
6010
  if (timestamp2.toString().length === 10) {
6000
6011
  timestamp2 = timestamp2 * 1000;
6001
6012
  }
6002
- let smallTimeStamp = timestamp1 > timestamp2 ? timestamp2 : timestamp1;
6003
- let bigTimeStamp = timestamp1 > timestamp2 ? timestamp1 : timestamp2;
6004
- let oneSecond = 1000; /* 一秒的毫秒数 */
6005
- let oneMinute = 60 * oneSecond; /* 一分钟的毫秒数 */
6006
- let oneHour = 60 * oneMinute; /* 一小时的毫秒数 */
6007
- let oneDay = 24 * oneHour; /* 一天的毫秒数 */
6008
- let oneMonth = 30 * oneDay; /* 一个月的毫秒数(30天) */
6009
- let oneYear = 12 * oneMonth; /* 一年的毫秒数 */
6010
- let bigDate = new Date(bigTimeStamp);
6011
- let smallDate = new Date(smallTimeStamp);
6013
+ const smallTimeStamp = timestamp1 > timestamp2 ? timestamp2 : timestamp1;
6014
+ const bigTimeStamp = timestamp1 > timestamp2 ? timestamp1 : timestamp2;
6015
+ const oneSecond = 1000; /* 一秒的毫秒数 */
6016
+ const oneMinute = 60 * oneSecond; /* 一分钟的毫秒数 */
6017
+ const oneHour = 60 * oneMinute; /* 一小时的毫秒数 */
6018
+ const oneDay = 24 * oneHour; /* 一天的毫秒数 */
6019
+ const oneMonth = 30 * oneDay; /* 一个月的毫秒数(30天) */
6020
+ const oneYear = 12 * oneMonth; /* 一年的毫秒数 */
6021
+ const bigDate = new Date(bigTimeStamp);
6022
+ const smallDate = new Date(smallTimeStamp);
6012
6023
  let remainderValue = 1;
6013
6024
  if (type === "年") {
6014
6025
  remainderValue = oneYear;
@@ -6030,30 +6041,30 @@ define((function () { 'use strict';
6030
6041
  }
6031
6042
  let diffValue = Math.round(Math.abs((bigDate - smallDate) / remainderValue));
6032
6043
  if (type === "auto") {
6033
- let timeDifference = bigTimeStamp - smallTimeStamp;
6044
+ const timeDifference = bigTimeStamp - smallTimeStamp;
6034
6045
  diffValue = Math.floor(timeDifference / (24 * 3600 * 1000));
6035
6046
  if (diffValue > 0) {
6036
- diffValue = diffValue + "天";
6047
+ diffValue = `${diffValue}天`;
6037
6048
  }
6038
6049
  else {
6039
6050
  /* 计算出小时数 */
6040
- let leave1 = timeDifference % (24 * 3600 * 1000); /* 计算天数后剩余的毫秒数 */
6041
- let hours = Math.floor(leave1 / (3600 * 1000));
6051
+ const leave1 = timeDifference % (24 * 3600 * 1000); /* 计算天数后剩余的毫秒数 */
6052
+ const hours = Math.floor(leave1 / (3600 * 1000));
6042
6053
  if (hours > 0) {
6043
- diffValue = hours + "小时";
6054
+ diffValue = `${hours}小时`;
6044
6055
  }
6045
6056
  else {
6046
6057
  /* 计算相差分钟数 */
6047
- let leave2 = leave1 % (3600 * 1000); /* 计算小时数后剩余的毫秒数 */
6048
- let minutes = Math.floor(leave2 / (60 * 1000));
6058
+ const leave2 = leave1 % (3600 * 1000); /* 计算小时数后剩余的毫秒数 */
6059
+ const minutes = Math.floor(leave2 / (60 * 1000));
6049
6060
  if (minutes > 0) {
6050
- diffValue = minutes + "分钟";
6061
+ diffValue = `${minutes}分钟`;
6051
6062
  }
6052
6063
  else {
6053
6064
  /* 计算相差秒数 */
6054
- let leave3 = leave2 % (60 * 1000); /* 计算分钟数后剩余的毫秒数 */
6055
- let seconds = Math.round(leave3 / 1000);
6056
- diffValue = seconds + "秒";
6065
+ const leave3 = leave2 % (60 * 1000); /* 计算分钟数后剩余的毫秒数 */
6066
+ const seconds = Math.round(leave3 / 1000);
6067
+ diffValue = `${seconds}秒`;
6057
6068
  }
6058
6069
  }
6059
6070
  }
@@ -6061,14 +6072,14 @@ define((function () { 'use strict';
6061
6072
  return diffValue;
6062
6073
  }
6063
6074
  getElementSelector(element) {
6064
- let UtilsContext = this;
6075
+ const UtilsContext = this;
6065
6076
  if (!element)
6066
6077
  return void 0;
6067
6078
  if (!element.parentElement)
6068
6079
  return void 0;
6069
6080
  /* 如果元素有id属性,则直接返回id选择器 */
6070
6081
  if (element.id)
6071
- return "#" + element.id;
6082
+ return `#${element.id}`;
6072
6083
  /* 递归地获取父元素的选择器 */
6073
6084
  let selector = UtilsContext.getElementSelector(element.parentElement);
6074
6085
  if (!selector) {
@@ -6076,11 +6087,11 @@ define((function () { 'use strict';
6076
6087
  }
6077
6088
  /* 如果有多个相同类型的兄弟元素,则需要添加索引 */
6078
6089
  if (element.parentElement.querySelectorAll(element.tagName).length > 1) {
6079
- let index = Array.prototype.indexOf.call(element.parentElement.children, element) + 1;
6080
- selector += " > " + element.tagName.toLowerCase() + ":nth-child(" + index + ")";
6090
+ const index = Array.prototype.indexOf.call(element.parentElement.children, element) + 1;
6091
+ selector += ` > ${element.tagName.toLowerCase()}:nth-child(${index})`;
6081
6092
  }
6082
6093
  else {
6083
- selector += " > " + element.tagName.toLowerCase();
6094
+ selector += ` > ${element.tagName.toLowerCase()}`;
6084
6095
  }
6085
6096
  return selector;
6086
6097
  }
@@ -6091,15 +6102,15 @@ define((function () { 'use strict';
6091
6102
  * > 2
6092
6103
  */
6093
6104
  getMaxValue(...args) {
6094
- let result = [...args];
6105
+ const result = [...args];
6095
6106
  let newResult = [];
6096
6107
  if (result.length === 0) {
6097
6108
  return void 0;
6098
6109
  }
6099
6110
  if (result.length > 1) {
6100
6111
  if (result.length === 2 && typeof result[0] === "object" && typeof result[1] === "function") {
6101
- let data = result[0];
6102
- let handleDataFunc = result[1];
6112
+ const data = result[0];
6113
+ const handleDataFunc = result[1];
6103
6114
  Object.keys(data).forEach((keyName) => {
6104
6115
  newResult = [...newResult, handleDataFunc(keyName, data[keyName])];
6105
6116
  });
@@ -6147,7 +6158,7 @@ define((function () { 'use strict';
6147
6158
  */
6148
6159
  function queryMaxZIndex($ele) {
6149
6160
  if (typeof ignoreCallBack === "function") {
6150
- let ignoreResult = ignoreCallBack($ele);
6161
+ const ignoreResult = ignoreCallBack($ele);
6151
6162
  if (typeof ignoreResult === "boolean" && !ignoreResult) {
6152
6163
  return;
6153
6164
  }
@@ -6156,7 +6167,7 @@ define((function () { 'use strict';
6156
6167
  const nodeStyle = UtilsContext.windowApi.window.getComputedStyle($ele);
6157
6168
  /* 不对position为static和display为none的元素进行获取它们的z-index */
6158
6169
  if (isVisibleNode(nodeStyle)) {
6159
- let nodeZIndex = parseInt(nodeStyle.zIndex);
6170
+ const nodeZIndex = parseInt(nodeStyle.zIndex);
6160
6171
  if (!isNaN(nodeZIndex)) {
6161
6172
  if (nodeZIndex > zIndex) {
6162
6173
  // 赋值到全局
@@ -6172,7 +6183,7 @@ define((function () { 'use strict';
6172
6183
  }
6173
6184
  }
6174
6185
  }
6175
- target.querySelectorAll("*").forEach(($ele, index) => {
6186
+ target.querySelectorAll("*").forEach(($ele) => {
6176
6187
  queryMaxZIndex($ele);
6177
6188
  });
6178
6189
  zIndex += deviation;
@@ -6189,15 +6200,15 @@ define((function () { 'use strict';
6189
6200
  return this.getMaxZIndexNodeInfo(deviation, target, ignoreCallBack).zIndex;
6190
6201
  }
6191
6202
  getMinValue(...args) {
6192
- let result = [...args];
6203
+ const result = [...args];
6193
6204
  let newResult = [];
6194
6205
  if (result.length === 0) {
6195
6206
  return void 0;
6196
6207
  }
6197
6208
  if (result.length > 1) {
6198
6209
  if (result.length === 2 && typeof result[0] === "object" && typeof result[1] === "function") {
6199
- let data = result[0];
6200
- let handleDataFunc = result[1];
6210
+ const data = result[0];
6211
+ const handleDataFunc = result[1];
6201
6212
  Object.keys(data).forEach((keyName) => {
6202
6213
  newResult = [...newResult, handleDataFunc(keyName, data[keyName])];
6203
6214
  });
@@ -6227,8 +6238,8 @@ define((function () { 'use strict';
6227
6238
  * > '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'
6228
6239
  **/
6229
6240
  getRandomAndroidUA() {
6230
- let UtilsContext = this;
6231
- let mobileNameList = [
6241
+ const UtilsContext = this;
6242
+ const mobileNameList = [
6232
6243
  "LDN-LX3",
6233
6244
  "RNE-L03",
6234
6245
  "ASUS_X00ID Build/NMF26F",
@@ -6245,14 +6256,14 @@ define((function () { 'use strict';
6245
6256
  "MI 13 Build/OPR1.170623.027; wv",
6246
6257
  ];
6247
6258
  /* 安卓版本 */
6248
- let androidVersion = UtilsContext.getRandomValue(12, 14);
6259
+ const androidVersion = UtilsContext.getRandomValue(12, 14);
6249
6260
  /* 手机型号 */
6250
- let randomMobile = UtilsContext.getRandomValue(mobileNameList);
6261
+ const randomMobile = UtilsContext.getRandomValue(mobileNameList);
6251
6262
  /* chrome大版本号 */
6252
- let chromeVersion1 = UtilsContext.getRandomValue(120, 132);
6253
- let chromeVersion2 = UtilsContext.getRandomValue(0, 0);
6254
- let chromeVersion3 = UtilsContext.getRandomValue(2272, 6099);
6255
- let chromeVersion4 = UtilsContext.getRandomValue(1, 218);
6263
+ const chromeVersion1 = UtilsContext.getRandomValue(120, 132);
6264
+ const chromeVersion2 = UtilsContext.getRandomValue(0, 0);
6265
+ const chromeVersion3 = UtilsContext.getRandomValue(2272, 6099);
6266
+ const chromeVersion4 = UtilsContext.getRandomValue(1, 218);
6256
6267
  return `Mozilla/5.0 (Linux; Android ${androidVersion}; ${randomMobile}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${chromeVersion1}.${chromeVersion2}.${chromeVersion3}.${chromeVersion4} Mobile Safari/537.36`;
6257
6268
  }
6258
6269
  /**
@@ -6274,20 +6285,20 @@ define((function () { 'use strict';
6274
6285
  * > 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.5068.19 Safari/537.36'
6275
6286
  **/
6276
6287
  getRandomPCUA() {
6277
- let UtilsContext = this;
6288
+ const UtilsContext = this;
6278
6289
  /* chrome大版本号 */
6279
- let chromeVersion1 = UtilsContext.getRandomValue(120, 132);
6280
- let chromeVersion2 = UtilsContext.getRandomValue(0, 0);
6281
- let chromeVersion3 = UtilsContext.getRandomValue(2272, 6099);
6282
- let chromeVersion4 = UtilsContext.getRandomValue(1, 218);
6290
+ const chromeVersion1 = UtilsContext.getRandomValue(120, 132);
6291
+ const chromeVersion2 = UtilsContext.getRandomValue(0, 0);
6292
+ const chromeVersion3 = UtilsContext.getRandomValue(2272, 6099);
6293
+ const chromeVersion4 = UtilsContext.getRandomValue(1, 218);
6283
6294
  return `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${chromeVersion1}.${chromeVersion2}.${chromeVersion3}.${chromeVersion4} Safari/537.36`;
6284
6295
  }
6285
6296
  getRandomValue(...args) {
6286
- let result = [...args];
6297
+ const result = [...args];
6287
6298
  if (result.length > 1) {
6288
6299
  if (result.length === 2 && typeof result[0] === "number" && typeof result[1] === "number") {
6289
- let leftNumber = result[0] > result[1] ? result[1] : result[0];
6290
- let rightNumber = result[0] > result[1] ? result[0] : result[1];
6300
+ const leftNumber = result[0] > result[1] ? result[1] : result[0];
6301
+ const rightNumber = result[0] > result[1] ? result[0] : result[1];
6291
6302
  return Math.round(Math.random() * (rightNumber - leftNumber)) + leftNumber;
6292
6303
  }
6293
6304
  else {
@@ -6295,12 +6306,12 @@ define((function () { 'use strict';
6295
6306
  }
6296
6307
  }
6297
6308
  else if (result.length === 1) {
6298
- let paramData = result[0];
6309
+ const paramData = result[0];
6299
6310
  if (Array.isArray(paramData)) {
6300
6311
  return paramData[Math.floor(Math.random() * paramData.length)];
6301
6312
  }
6302
6313
  else if (typeof paramData === "object" && Object.keys(paramData).length > 0) {
6303
- let paramObjDataKey = Object.keys(paramData)[Math.floor(Math.random() * Object.keys(paramData).length)];
6314
+ const paramObjDataKey = Object.keys(paramData)[Math.floor(Math.random() * Object.keys(paramData).length)];
6304
6315
  return paramData[paramObjDataKey];
6305
6316
  }
6306
6317
  else {
@@ -6316,7 +6327,7 @@ define((function () { 'use strict';
6316
6327
  * Utils.getReactObj(document.querySelector("input"))?.reactProps?.onChange({target:{value:"123"}});
6317
6328
  */
6318
6329
  getReactObj(element) {
6319
- let result = {};
6330
+ const result = {};
6320
6331
  if (element == null) {
6321
6332
  return result;
6322
6333
  }
@@ -6342,9 +6353,9 @@ define((function () { 'use strict';
6342
6353
  if (typeof target !== "object") {
6343
6354
  throw new TypeError("target不是一个对象");
6344
6355
  }
6345
- let objectsSymbols = Object.getOwnPropertySymbols(target);
6356
+ const objectsSymbols = Object.getOwnPropertySymbols(target);
6346
6357
  if (typeof keyName === "string") {
6347
- let findSymbol = objectsSymbols.find((key) => {
6358
+ const findSymbol = objectsSymbols.find((key) => {
6348
6359
  return key.toString() === keyName;
6349
6360
  });
6350
6361
  if (findSymbol) {
@@ -6352,7 +6363,7 @@ define((function () { 'use strict';
6352
6363
  }
6353
6364
  }
6354
6365
  else if (typeof keyName === "symbol") {
6355
- let findSymbol = objectsSymbols.find((key) => {
6366
+ const findSymbol = objectsSymbols.find((key) => {
6356
6367
  return key === keyName;
6357
6368
  });
6358
6369
  if (findSymbol) {
@@ -6360,7 +6371,7 @@ define((function () { 'use strict';
6360
6371
  }
6361
6372
  }
6362
6373
  else {
6363
- let result = {};
6374
+ const result = {};
6364
6375
  objectsSymbols.forEach((item) => {
6365
6376
  result[item] = target[item];
6366
6377
  });
@@ -6375,12 +6386,12 @@ define((function () { 'use strict';
6375
6386
  * > 12
6376
6387
  */
6377
6388
  getTextLength(text) {
6378
- let encoder = new TextEncoder();
6379
- let bytes = encoder.encode(text);
6389
+ const encoder = new TextEncoder();
6390
+ const bytes = encoder.encode(text);
6380
6391
  return bytes.length;
6381
6392
  }
6382
6393
  getTextStorageSize(text, addType = true) {
6383
- let UtilsContext = this;
6394
+ const UtilsContext = this;
6384
6395
  return UtilsContext.formatByteToSize(UtilsContext.getTextLength(text), addType);
6385
6396
  }
6386
6397
  getThunderUrl(url) {
@@ -6393,88 +6404,75 @@ define((function () { 'use strict';
6393
6404
  if (url.trim() === "") {
6394
6405
  throw new TypeError("url不能为空字符串或纯空格");
6395
6406
  }
6396
- return `thunder://${this.windowApi.globalThis.btoa("AA" + url + "ZZ")}`;
6407
+ return `thunder://${this.windowApi.globalThis.btoa(`AA${url}ZZ`)}`;
6397
6408
  }
6398
6409
  /**
6399
- * 对于GM_cookie的兼容写法,当无法使用GM_cookie时可以使用这个,但是并不完全兼容,有些写不出来且限制了httponly是无法访问的
6400
- * @example
6401
- let GM_cookie = new Utils.GM_Cookie();
6402
- GM_cookie.list({name:"xxx_cookie_xxx"},function(cookies,error){
6403
- if (!error) {
6404
- console.log(cookies);
6405
- console.log(cookies.value);
6406
- } else {
6407
- console.error(error);
6408
- }
6409
- });
6410
- GM_cookie.set({name:"xxx_cookie_test_xxx",value:"这是Cookie测试值"},function(error){
6411
- if (error) {
6412
- console.error(error);
6413
- } else {
6414
- console.log('Cookie set successfully.');
6415
- }
6416
- })
6417
- GM_cookie.delete({name:"xxx_cookie_test_xxx"},function(error){
6418
- if (error) {
6419
- console.error(error);
6420
- } else {
6421
- console.log('Cookie set successfully.');
6422
- }
6423
- })
6424
- **/
6410
+ * 对于GM_cookie的兼容写法,当无法使用GM_cookie时可以使用这个,但是并不完全兼容,有些写不出来且限制了httponly是无法访问的
6411
+ * @example
6412
+ let GM_cookie = new Utils.GM_Cookie();
6413
+ GM_cookie.list({name:"xxx_cookie_xxx"},function(cookies,error){
6414
+ if (!error) {
6415
+ console.log(cookies);
6416
+ console.log(cookies.value);
6417
+ } else {
6418
+ console.error(error);
6419
+ }
6420
+ });
6421
+ GM_cookie.set({name:"xxx_cookie_test_xxx",value:"这是Cookie测试值"},function(error){
6422
+ if (error) {
6423
+ console.error(error);
6424
+ } else {
6425
+ console.log('Cookie set successfully.');
6426
+ }
6427
+ })
6428
+ GM_cookie.delete({name:"xxx_cookie_test_xxx"},function(error){
6429
+ if (error) {
6430
+ console.error(error);
6431
+ } else {
6432
+ console.log('Cookie set successfully.');
6433
+ }
6434
+ })
6435
+ **/
6425
6436
  GM_Cookie = UtilsGMCookie;
6426
6437
  /**
6427
- * 注册油猴菜单,要求本地存储的键名不能存在其它键名`GM_Menu_Local_Map`会冲突/覆盖
6428
- * @example
6429
- let GM_Menu = new Utils.GM_Menu({
6430
- data: [
6431
- {
6432
- menu_key: "menu_key",
6433
- text: "测试按钮",
6434
- enable: true,
6435
- accessKey: "a",
6436
- autoClose: false,
6437
- showText(text, enable) {
6438
- return "[" + (enable ? "√" : "×") + "]" + text;
6438
+ * 注册油猴菜单,要求本地存储的键名不能存在其它键名`GM_Menu_Local_Map`会冲突/覆盖
6439
+ * @example
6440
+ let GM_Menu = new Utils.GM_Menu({
6441
+ data: [
6442
+ {
6443
+ menu_key: "menu_key",
6444
+ text: "测试按钮",
6445
+ enable: true,
6446
+ accessKey: "a",
6447
+ autoClose: false,
6448
+ showText(text, enable) {
6449
+ return "[" + (enable ? "√" : "×") + "]" + text;
6450
+ },
6451
+ callback(data) {
6452
+ console.log("点击菜单,值修改为", data.enable);
6453
+ },
6439
6454
  },
6440
- callback(data) {
6441
- console.log("点击菜单,值修改为", data.enable);
6442
- },
6443
- },
6444
- ],
6445
- autoReload: false,
6446
- GM_getValue,
6447
- GM_setValue,
6448
- GM_registerMenuCommand,
6449
- GM_unregisterMenuCommand,
6450
- });
6451
-
6452
-
6453
- // 获取某个菜单项的值
6454
- GM_Menu.get("menu_key");
6455
- > true
6456
-
6457
- // 获取某个菜单项的开启/关闭后显示的文本
6458
- GM_Menu.getShowTextValue("menu_key");
6459
- > √测试按钮
6460
-
6461
- // 添加键为menu_key2的菜单项
6462
- GM_Menu.add({
6463
- key:"menu_key2",
6464
- text: "测试按钮2",
6465
- enable: false,
6466
- showText(text,enable){
6467
- return "[" + (enable ? "√" : "×") + "]" + text;
6468
- },
6469
- callback(data){
6470
- console.log("点击菜单,值修改为",data.enable);
6471
- }
6472
- });
6473
- // 使用数组的方式添加多个菜单,如menu_key3、menu_key4
6474
- GM_Menu.add([
6475
- {
6476
- key:"menu_key3",
6477
- text: "测试按钮3",
6455
+ ],
6456
+ autoReload: false,
6457
+ GM_getValue,
6458
+ GM_setValue,
6459
+ GM_registerMenuCommand,
6460
+ GM_unregisterMenuCommand,
6461
+ });
6462
+
6463
+
6464
+ // 获取某个菜单项的值
6465
+ GM_Menu.get("menu_key");
6466
+ > true
6467
+
6468
+ // 获取某个菜单项的开启/关闭后显示的文本
6469
+ GM_Menu.getShowTextValue("menu_key");
6470
+ > √测试按钮
6471
+
6472
+ // 添加键为menu_key2的菜单项
6473
+ GM_Menu.add({
6474
+ key:"menu_key2",
6475
+ text: "测试按钮2",
6478
6476
  enable: false,
6479
6477
  showText(text,enable){
6480
6478
  return "[" + (enable ? "√" : "×") + "]" + text;
@@ -6482,152 +6480,165 @@ define((function () { 'use strict';
6482
6480
  callback(data){
6483
6481
  console.log("点击菜单,值修改为",data.enable);
6484
6482
  }
6485
- },
6486
- {
6487
- key:"menu_key4",
6488
- text: "测试按钮4",
6489
- enable: false,
6490
- showText(text,enable){
6491
- return "[" + (enable ? "√" : "×") + "]" + text;
6483
+ });
6484
+ // 使用数组的方式添加多个菜单,如menu_key3、menu_key4
6485
+ GM_Menu.add([
6486
+ {
6487
+ key:"menu_key3",
6488
+ text: "测试按钮3",
6489
+ enable: false,
6490
+ showText(text,enable){
6491
+ return "[" + (enable ? "√" : "×") + "]" + text;
6492
+ },
6493
+ callback(data){
6494
+ console.log("点击菜单,值修改为",data.enable);
6495
+ }
6492
6496
  },
6493
- callback(data){
6494
- console.log("点击菜单,值修改为",data.enable);
6497
+ {
6498
+ key:"menu_key4",
6499
+ text: "测试按钮4",
6500
+ enable: false,
6501
+ showText(text,enable){
6502
+ return "[" + (enable ? "√" : "×") + "]" + text;
6503
+ },
6504
+ callback(data){
6505
+ console.log("点击菜单,值修改为",data.enable);
6506
+ }
6495
6507
  }
6496
- }
6497
- ]);
6498
-
6499
- // 更新键为menu_key的显示文字和点击回调
6500
- GM_Menu.update({
6501
- menu_key:{
6502
- text: "更新后的测试按钮",
6503
- enable: true,
6504
- showText(text,enable){
6505
- return "[" + (enable ? "√" : "×") + "]" + text;
6506
- },
6507
- callback(data){
6508
- console.log("点击菜单更新后的测试按钮,新值修改为",data.enable);
6508
+ ]);
6509
+
6510
+ // 更新键为menu_key的显示文字和点击回调
6511
+ GM_Menu.update({
6512
+ menu_key:{
6513
+ text: "更新后的测试按钮",
6514
+ enable: true,
6515
+ showText(text,enable){
6516
+ return "[" + (enable ? "√" : "×") + "]" + text;
6517
+ },
6518
+ callback(data){
6519
+ console.log("点击菜单更新后的测试按钮,新值修改为",data.enable);
6520
+ }
6509
6521
  }
6510
- }
6511
- });
6512
-
6513
- // 删除键为menu_key的菜单
6514
- GM_Menu.delete("menu_key");
6515
- **/
6522
+ });
6523
+
6524
+ // 删除键为menu_key的菜单
6525
+ GM_Menu.delete("menu_key");
6526
+ **/
6516
6527
  GM_Menu = GMMenu;
6517
6528
  /**
6518
- * 基于Function prototype,能够勾住和释放任何函数
6519
- *
6520
- * .hook
6521
- * + realFunc {string} 用于保存原始函数的函数名称,用于unHook
6522
- * + hookFunc {string} 替换的hook函数
6523
- * + context {object} 目标函数所在对象,用于hook非window对象下的函数,如String.protype.slice,carInstance1
6524
- * + methodName {string} 匿名函数需显式传入目标函数名eg:this.Begin = function(){....};}
6525
- *
6526
- * .unhook
6527
- * + realFunc {string} 用于保存原始函数的函数名称,用于unHook
6528
- * + funcName {string} 被Hook的函数名称
6529
- * + context {object} 目标函数所在对象,用于hook非window对象下的函数,如String.protype.slice,carInstance1
6530
- * @example
6531
- let hook = new Utils.Hooks();
6532
- hook.initEnv();
6533
- function myFunction(){
6534
- console.log("我自己需要执行的函数");
6535
- }
6536
- function testFunction(){
6537
- console.log("正常执行的函数");
6538
- }
6539
- testFunction.hook(testFunction,myFunction,window);
6540
- **/
6529
+ * 基于Function prototype,能够勾住和释放任何函数
6530
+ *
6531
+ * .hook
6532
+ * + realFunc {string} 用于保存原始函数的函数名称,用于unHook
6533
+ * + hookFunc {string} 替换的hook函数
6534
+ * + context {object} 目标函数所在对象,用于hook非window对象下的函数,如String.protype.slice,carInstance1
6535
+ * + methodName {string} 匿名函数需显式传入目标函数名eg:this.Begin = function(){....};}
6536
+ *
6537
+ * .unhook
6538
+ * + realFunc {string} 用于保存原始函数的函数名称,用于unHook
6539
+ * + funcName {string} 被Hook的函数名称
6540
+ * + context {object} 目标函数所在对象,用于hook非window对象下的函数,如String.protype.slice,carInstance1
6541
+ * @example
6542
+ let hook = new Utils.Hooks();
6543
+ hook.initEnv();
6544
+ function myFunction(){
6545
+ console.log("我自己需要执行的函数");
6546
+ }
6547
+ function testFunction(){
6548
+ console.log("正常执行的函数");
6549
+ }
6550
+ testFunction.hook(testFunction,myFunction,window);
6551
+ **/
6541
6552
  Hooks = Hooks;
6542
6553
  /**
6543
- * 为减少代码量和回调,把GM_xmlhttpRequest封装
6544
- * 文档地址: https://www.tampermonkey.net/documentation.php?ext=iikm
6545
- * 其中onloadstart、onprogress、onreadystatechange是回调形式,onabort、ontimeout、onerror可以设置全局回调函数
6546
- * @param _GM_xmlHttpRequest_ 油猴中的GM_xmlhttpRequest
6547
- * @example
6548
- let httpx = new Utils.Httpx(GM_xmlhttpRequest);
6549
- let postResp = await httpx.post({
6550
- url:url,
6551
- data:JSON.stringify({
6552
- test:1
6553
- }),
6554
- timeout: 5000
6555
- });
6556
- console.log(postResp);
6557
- > {
6558
- status: true,
6559
- data: {responseText: "...", response: xxx,...},
6560
- msg: "请求完毕",
6561
- type: "onload",
6562
- }
6563
-
6564
- if(postResp === "onload" && postResp.status){
6565
- // onload
6566
- }else if(postResp === "ontimeout"){
6567
- // ontimeout
6568
- }
6569
- * @example
6570
- // 也可以先配置全局参数
6571
- let httpx = new Utils.Httpx(GM_xmlhttpRequest);
6572
- httpx.config({
6573
- timeout: 5000,
6574
- async: false,
6575
- responseType: "html",
6576
- redirect: "follow",
6577
- })
6578
- // 优先级为 默认details < 全局details < 单独的details
6579
- */
6554
+ * 为减少代码量和回调,把GM_xmlhttpRequest封装
6555
+ * 文档地址: https://www.tampermonkey.net/documentation.php?ext=iikm
6556
+ * 其中onloadstart、onprogress、onreadystatechange是回调形式,onabort、ontimeout、onerror可以设置全局回调函数
6557
+ * @param _GM_xmlHttpRequest_ 油猴中的GM_xmlhttpRequest
6558
+ * @example
6559
+ let httpx = new Utils.Httpx(GM_xmlhttpRequest);
6560
+ let postResp = await httpx.post({
6561
+ url:url,
6562
+ data:JSON.stringify({
6563
+ test:1
6564
+ }),
6565
+ timeout: 5000
6566
+ });
6567
+ console.log(postResp);
6568
+ > {
6569
+ status: true,
6570
+ data: {responseText: "...", response: xxx,...},
6571
+ msg: "请求完毕",
6572
+ type: "onload",
6573
+ }
6574
+
6575
+ if(postResp === "onload" && postResp.status){
6576
+ // onload
6577
+ }else if(postResp === "ontimeout"){
6578
+ // ontimeout
6579
+ }
6580
+ * @example
6581
+ // 也可以先配置全局参数
6582
+ let httpx = new Utils.Httpx(GM_xmlhttpRequest);
6583
+ httpx.config({
6584
+ timeout: 5000,
6585
+ async: false,
6586
+ responseType: "html",
6587
+ redirect: "follow",
6588
+ })
6589
+ // 优先级为 默认details < 全局details < 单独的details
6590
+ */
6580
6591
  Httpx = Httpx;
6581
6592
  /**
6582
- * 浏览器端的indexedDB操作封装
6583
- * @example
6584
- let db = new Utils.indexedDB('web_DB', 'nav_text')
6585
- let data = {name:'管理员', roleId: 1, type: 1};
6586
- db.save('list',data).then((resolve)=>{
6587
- console.log(resolve,'存储成功')
6588
- })
6589
-
6590
- db.get('list').then((resolve)=>{
6591
- console.log(resolve,'查询成功')
6592
- })
6593
-
6594
- db.getPaging('list',20,10).then((resolve)=>{
6595
- console.log(resolve,'查询分页偏移第20,一共10行成功');
6596
- })
6597
-
6598
- db.delete('list').then(resolve=>{
6599
- console.log(resolve,'删除成功---->>>>>>name')
6600
- })
6601
-
6602
- db.deleteAll().then(resolve=>{
6603
- console.log(resolve,'清除数据库---->>>>>>name')
6604
- })
6605
- **/
6593
+ * 浏览器端的indexedDB操作封装
6594
+ * @example
6595
+ let db = new Utils.indexedDB('web_DB', 'nav_text')
6596
+ let data = {name:'管理员', roleId: 1, type: 1};
6597
+ db.save('list',data).then((resolve)=>{
6598
+ console.log(resolve,'存储成功')
6599
+ })
6600
+
6601
+ db.get('list').then((resolve)=>{
6602
+ console.log(resolve,'查询成功')
6603
+ })
6604
+
6605
+ db.getPaging('list',20,10).then((resolve)=>{
6606
+ console.log(resolve,'查询分页偏移第20,一共10行成功');
6607
+ })
6608
+
6609
+ db.delete('list').then(resolve=>{
6610
+ console.log(resolve,'删除成功---->>>>>>name')
6611
+ })
6612
+
6613
+ db.deleteAll().then(resolve=>{
6614
+ console.log(resolve,'清除数据库---->>>>>>name')
6615
+ })
6616
+ **/
6606
6617
  indexedDB = indexedDB;
6607
6618
  isNativeFunc(target) {
6608
6619
  return Boolean(target.toString().match(/^function .*\(\) { \[native code\] }$/));
6609
6620
  }
6610
6621
  isNearBottom(...args) {
6611
6622
  let nearBottomHeight = 50;
6612
- let checkWindow = () => {
6623
+ const checkWindow = () => {
6613
6624
  // 已滚动的距离
6614
- let scrollTop = this.windowApi.window.pageYOffset || this.windowApi.document.documentElement.scrollTop;
6625
+ const scrollTop = this.windowApi.window.pageYOffset || this.windowApi.document.documentElement.scrollTop;
6615
6626
  // 视窗高度
6616
- let viewportHeight = this.windowApi.window.innerHeight || this.windowApi.document.documentElement.clientHeight;
6627
+ const viewportHeight = this.windowApi.window.innerHeight || this.windowApi.document.documentElement.clientHeight;
6617
6628
  // 最大滚动距离
6618
- let maxScrollHeight = this.windowApi.document.documentElement.scrollHeight - nearBottomHeight;
6629
+ const maxScrollHeight = this.windowApi.document.documentElement.scrollHeight - nearBottomHeight;
6619
6630
  return scrollTop + viewportHeight >= maxScrollHeight;
6620
6631
  };
6621
- let checkNode = ($ele) => {
6632
+ const checkNode = ($ele) => {
6622
6633
  // 已滚动的距离
6623
- let scrollTop = $ele.scrollTop;
6634
+ const scrollTop = $ele.scrollTop;
6624
6635
  // 视窗高度
6625
- let viewportHeight = $ele.clientHeight;
6636
+ const viewportHeight = $ele.clientHeight;
6626
6637
  // 最大滚动距离
6627
- let maxScrollHeight = $ele.scrollHeight - viewportHeight - nearBottomHeight;
6638
+ const maxScrollHeight = $ele.scrollHeight - viewportHeight - nearBottomHeight;
6628
6639
  return scrollTop >= maxScrollHeight;
6629
6640
  };
6630
- let firstArg = args[0];
6641
+ const firstArg = args[0];
6631
6642
  if (args.length === 0 || typeof args[0] === "number") {
6632
6643
  // nearBottomHeight
6633
6644
  //
@@ -6642,7 +6653,7 @@ define((function () { 'use strict';
6642
6653
  return checkNode(args[0]);
6643
6654
  }
6644
6655
  else {
6645
- throw new TypeError("参数1类型错误" + typeof firstArg);
6656
+ throw new TypeError(`参数1类型错误${typeof firstArg}`);
6646
6657
  }
6647
6658
  }
6648
6659
  /**
@@ -6672,7 +6683,7 @@ define((function () { 'use strict';
6672
6683
  }
6673
6684
  if (typeof target === "object") {
6674
6685
  /* 也有种可能,这个jQuery对象是1.8.3版本的,页面中的jQuery是3.4.1版本的 */
6675
- let jQueryProps = [
6686
+ const jQueryProps = [
6676
6687
  "add",
6677
6688
  "addBack",
6678
6689
  "addClass",
@@ -6856,50 +6867,50 @@ define((function () { 'use strict';
6856
6867
  */
6857
6868
  isNotNull = commonUtil.isNotNull.bind(commonUtil);
6858
6869
  /**
6859
- * 判断对象或数据是否为空
6860
- * + `String`判空的值,如 ""、"null"、"undefined"、" "
6861
- * + `Number`判空的值,如 0
6862
- * + `Object`判空的值,如 {}、null、undefined
6863
- * + `Array`(存在属性Symbol.iterator)判空的值,如 []
6864
- * + `Boolean`判空的值,如false
6865
- * + `Function`判空的值,如()=>{}、(xxx="")=>{}、function(){}、function(xxx=""){}
6866
- * @returns
6867
- * + true 为空
6868
- * + false 不为空
6869
- * @example
6870
- Utils.isNull({});
6871
- > true
6872
- * @example
6873
- Utils.isNull([]);
6874
- > true
6875
- * @example
6876
- Utils.isNull(" ");
6877
- > true
6878
- * @example
6879
- Utils.isNull(function(){});
6880
- > true
6881
- * @example
6882
- Utils.isNull(()=>{}));
6883
- > true
6884
- * @example
6885
- Utils.isNull("undefined");
6886
- > true
6887
- * @example
6888
- Utils.isNull("null");
6889
- > true
6890
- * @example
6891
- Utils.isNull(" ", false);
6892
- > true
6893
- * @example
6894
- Utils.isNull([1],[]);
6895
- > false
6896
- * @example
6897
- Utils.isNull([],[1]);
6898
- > false
6899
- * @example
6900
- Utils.isNull(false,[123]);
6901
- > false
6902
- **/
6870
+ * 判断对象或数据是否为空
6871
+ * + `String`判空的值,如 ""、"null"、"undefined"、" "
6872
+ * + `Number`判空的值,如 0
6873
+ * + `Object`判空的值,如 {}、null、undefined
6874
+ * + `Array`(存在属性Symbol.iterator)判空的值,如 []
6875
+ * + `Boolean`判空的值,如false
6876
+ * + `Function`判空的值,如()=>{}、(xxx="")=>{}、function(){}、function(xxx=""){}
6877
+ * @returns
6878
+ * + true 为空
6879
+ * + false 不为空
6880
+ * @example
6881
+ Utils.isNull({});
6882
+ > true
6883
+ * @example
6884
+ Utils.isNull([]);
6885
+ > true
6886
+ * @example
6887
+ Utils.isNull(" ");
6888
+ > true
6889
+ * @example
6890
+ Utils.isNull(function(){});
6891
+ > true
6892
+ * @example
6893
+ Utils.isNull(()=>{}));
6894
+ > true
6895
+ * @example
6896
+ Utils.isNull("undefined");
6897
+ > true
6898
+ * @example
6899
+ Utils.isNull("null");
6900
+ > true
6901
+ * @example
6902
+ Utils.isNull(" ", false);
6903
+ > true
6904
+ * @example
6905
+ Utils.isNull([1],[]);
6906
+ > false
6907
+ * @example
6908
+ Utils.isNull([],[1]);
6909
+ > false
6910
+ * @example
6911
+ Utils.isNull(false,[123]);
6912
+ > false
6913
+ **/
6903
6914
  isNull = commonUtil.isNull.bind(commonUtil);
6904
6915
  isThemeDark() {
6905
6916
  return this.windowApi.globalThis.matchMedia("(prefers-color-scheme: dark)").matches;
@@ -6928,15 +6939,15 @@ define((function () { 'use strict';
6928
6939
  }
6929
6940
  let result = true;
6930
6941
  for (const domItem of needCheckDomList) {
6931
- let domDisplay = this.windowApi.window.getComputedStyle(domItem);
6942
+ const domDisplay = this.windowApi.window.getComputedStyle(domItem);
6932
6943
  if (domDisplay.display === "none") {
6933
6944
  result = false;
6934
6945
  }
6935
6946
  else {
6936
- let domClientRect = domItem.getBoundingClientRect();
6947
+ const domClientRect = domItem.getBoundingClientRect();
6937
6948
  if (inView) {
6938
- let viewportWidth = this.windowApi.window.innerWidth || this.windowApi.document.documentElement.clientWidth;
6939
- let viewportHeight = this.windowApi.window.innerHeight || this.windowApi.document.documentElement.clientHeight;
6949
+ const viewportWidth = this.windowApi.window.innerWidth || this.windowApi.document.documentElement.clientWidth;
6950
+ const viewportHeight = this.windowApi.window.innerHeight || this.windowApi.document.documentElement.clientHeight;
6940
6951
  result = !(domClientRect.right < 0 ||
6941
6952
  domClientRect.left > viewportWidth ||
6942
6953
  domClientRect.bottom < 0 ||
@@ -6955,11 +6966,11 @@ define((function () { 'use strict';
6955
6966
  }
6956
6967
  isWebView_Via() {
6957
6968
  let result = true;
6958
- let UtilsContext = this;
6969
+ const UtilsContext = this;
6959
6970
  if (typeof this.windowApi.top.window.via === "object") {
6960
6971
  for (const key in Object.values(this.windowApi.top.window.via)) {
6961
6972
  if (Reflect.has(this.windowApi.top.window.via, key)) {
6962
- let objValueFunc = this.windowApi.top.window.via[key];
6973
+ const objValueFunc = this.windowApi.top.window.via[key];
6963
6974
  if (typeof objValueFunc === "function" && UtilsContext.isNativeFunc(objValueFunc)) {
6964
6975
  result = true;
6965
6976
  }
@@ -6977,11 +6988,11 @@ define((function () { 'use strict';
6977
6988
  }
6978
6989
  isWebView_X() {
6979
6990
  let result = true;
6980
- let UtilsContext = this;
6991
+ const UtilsContext = this;
6981
6992
  if (typeof this.windowApi.top.window.mbrowser === "object") {
6982
6993
  for (const key in Object.values(this.windowApi.top.window.mbrowser)) {
6983
6994
  if (Reflect.has(this.windowApi.top.window.mbrowser, key)) {
6984
- let objValueFunc = this.windowApi.top.window.mbrowser[key];
6995
+ const objValueFunc = this.windowApi.top.window.mbrowser[key];
6985
6996
  if (typeof objValueFunc === "function" && UtilsContext.isNativeFunc(objValueFunc)) {
6986
6997
  result = true;
6987
6998
  }
@@ -7008,46 +7019,46 @@ define((function () { 'use strict';
7008
7019
  return result;
7009
7020
  }
7010
7021
  /**
7011
- * 自动锁对象,用于循环判断运行的函数,在循环外new后使用,注意,如果函数内部存在异步操作,需要使用await
7012
- * @example
7013
- let lock = new Utils.LockFunction(()=>{console.log(1)}))
7014
- lock.run();
7015
- > 1
7016
- * @example
7017
- let lock = new Utils.LockFunction(()=>{console.log(1)}),true) -- 异步操作
7018
- await lock.run();
7019
- > 1
7020
- **/
7022
+ * 自动锁对象,用于循环判断运行的函数,在循环外new后使用,注意,如果函数内部存在异步操作,需要使用await
7023
+ * @example
7024
+ let lock = new Utils.LockFunction(()=>{console.log(1)}))
7025
+ lock.run();
7026
+ > 1
7027
+ * @example
7028
+ let lock = new Utils.LockFunction(()=>{console.log(1)}),true) -- 异步操作
7029
+ await lock.run();
7030
+ > 1
7031
+ **/
7021
7032
  LockFunction = LockFunction;
7022
7033
  /**
7023
- * 日志对象
7024
- * @param _GM_info_ 油猴管理器的API GM_info,或者是一个对象,如{"script":{name:"Utils.Log"}}
7025
- * @example
7026
- let log = new Utils.Log(GM_info);
7027
- log.info("普通输出");
7028
- > 普通输出
7029
-
7030
- log.success("成功输出");
7031
- > 成功输出
7032
-
7033
- log.error("错误输出");
7034
- > 错误输出
7035
-
7036
- log.warn("警告输出");
7037
- > 警告输出
7038
-
7039
- log.tag = "自定义tag信息";
7040
- log.info("自定义info的颜色","#e0e0e0");
7041
- > 自定义info的颜色
7042
-
7043
- log.config({
7044
- successColor: "#31dc02",
7045
- errorColor: "#e02d2d",
7046
- infoColor: "black",
7047
- })
7048
- log.success("颜色为#31dc02");
7049
- > 颜色为#31dc02
7050
- */
7034
+ * 日志对象
7035
+ * @param _GM_info_ 油猴管理器的API GM_info,或者是一个对象,如{"script":{name:"Utils.Log"}}
7036
+ * @example
7037
+ let log = new Utils.Log(GM_info);
7038
+ log.info("普通输出");
7039
+ > 普通输出
7040
+
7041
+ log.success("成功输出");
7042
+ > 成功输出
7043
+
7044
+ log.error("错误输出");
7045
+ > 错误输出
7046
+
7047
+ log.warn("警告输出");
7048
+ > 警告输出
7049
+
7050
+ log.tag = "自定义tag信息";
7051
+ log.info("自定义info的颜色","#e0e0e0");
7052
+ > 自定义info的颜色
7053
+
7054
+ log.config({
7055
+ successColor: "#31dc02",
7056
+ errorColor: "#e02d2d",
7057
+ infoColor: "black",
7058
+ })
7059
+ log.success("颜色为#31dc02");
7060
+ > 颜色为#31dc02
7061
+ */
7051
7062
  Log = Log;
7052
7063
  mergeArrayToString(data, handleFunc) {
7053
7064
  if (!(data instanceof Array)) {
@@ -7076,8 +7087,8 @@ define((function () { 'use strict';
7076
7087
  return content;
7077
7088
  }
7078
7089
  mutationObserver(target, observer_config) {
7079
- let UtilsContext = this;
7080
- let default_obverser_config = {
7090
+ const UtilsContext = this;
7091
+ const default_obverser_config = {
7081
7092
  /* 监听到元素有反馈,需执行的函数 */
7082
7093
  callback: () => { },
7083
7094
  config: {
@@ -7119,11 +7130,11 @@ define((function () { 'use strict';
7119
7130
  immediate: false,
7120
7131
  };
7121
7132
  observer_config = UtilsContext.assign(default_obverser_config, observer_config);
7122
- let windowMutationObserver = this.windowApi.window.MutationObserver ||
7133
+ const windowMutationObserver = this.windowApi.window.MutationObserver ||
7123
7134
  this.windowApi.window.webkitMutationObserver ||
7124
7135
  this.windowApi.window.MozMutationObserver;
7125
7136
  // 观察者对象
7126
- let mutationObserver = new windowMutationObserver(function (mutations, observer) {
7137
+ const mutationObserver = new windowMutationObserver(function (mutations, observer) {
7127
7138
  if (typeof observer_config.callback === "function") {
7128
7139
  observer_config.callback(mutations, observer);
7129
7140
  }
@@ -7136,7 +7147,7 @@ define((function () { 'use strict';
7136
7147
  }
7137
7148
  else if (UtilsContext.isJQuery(target)) {
7138
7149
  /* 传入的参数是jQuery对象 */
7139
- target.each((index, item) => {
7150
+ target.each((_, item) => {
7140
7151
  mutationObserver.observe(item, observer_config.config);
7141
7152
  });
7142
7153
  }
@@ -7174,7 +7185,7 @@ define((function () { 'use strict';
7174
7185
  threshold: [0.01, 0.99],
7175
7186
  };
7176
7187
  defaultOptions = this.assign(defaultOptions, options || {});
7177
- let intersectionObserver = new IntersectionObserver((entries, observer) => {
7188
+ const intersectionObserver = new IntersectionObserver((entries, observer) => {
7178
7189
  if (entries[0].isIntersecting) {
7179
7190
  if (typeof callback === "function") {
7180
7191
  callback(entries, observer);
@@ -7204,7 +7215,7 @@ define((function () { 'use strict';
7204
7215
  return utils;
7205
7216
  }
7206
7217
  noConflictFunc(needReleaseObject, needReleaseName, functionNameList = [], release = true) {
7207
- let UtilsContext = this;
7218
+ const UtilsContext = this;
7208
7219
  if (typeof needReleaseObject !== "object") {
7209
7220
  throw new Error("Utils.noConflictFunc 参数 needReleaseObject 必须为 object 类型");
7210
7221
  }
@@ -7214,7 +7225,7 @@ define((function () { 'use strict';
7214
7225
  if (!Array.isArray(functionNameList)) {
7215
7226
  throw new Error("Utils.noConflictFunc 参数 functionNameList 必须为 Array 类型");
7216
7227
  }
7217
- let needReleaseKey = "__" + needReleaseName;
7228
+ const needReleaseKey = `__${needReleaseName}`;
7218
7229
  /**
7219
7230
  * 释放所有
7220
7231
  */
@@ -7302,7 +7313,9 @@ define((function () { 'use strict';
7302
7313
  if (typeof dataUri !== "string") {
7303
7314
  throw new Error("Utils.parseBase64ToBlob 参数 dataUri 必须为 string 类型");
7304
7315
  }
7305
- let dataUriSplit = dataUri.split(","), dataUriMime = dataUriSplit[0].match(/:(.*?);/)[1], dataUriBase64Str = atob(dataUriSplit[1]), dataUriLength = dataUriBase64Str.length, u8arr = new Uint8Array(dataUriLength);
7316
+ const dataUriSplit = dataUri.split(","), dataUriMime = dataUriSplit[0].match(/:(.*?);/)[1], dataUriBase64Str = atob(dataUriSplit[1]);
7317
+ let dataUriLength = dataUriBase64Str.length;
7318
+ const u8arr = new Uint8Array(dataUriLength);
7306
7319
  while (dataUriLength--) {
7307
7320
  u8arr[dataUriLength] = dataUriBase64Str.charCodeAt(dataUriLength);
7308
7321
  }
@@ -7317,7 +7330,9 @@ define((function () { 'use strict';
7317
7330
  if (typeof fileName !== "string") {
7318
7331
  throw new Error("Utils.parseBase64ToFile 参数 fileName 必须为 string 类型");
7319
7332
  }
7320
- let dataUriSplit = dataUri.split(","), dataUriMime = dataUriSplit[0].match(/:(.*?);/)[1], dataUriBase64Str = atob(dataUriSplit[1]), dataUriLength = dataUriBase64Str.length, u8arr = new Uint8Array(dataUriLength);
7333
+ const dataUriSplit = dataUri.split(","), dataUriMime = dataUriSplit[0].match(/:(.*?);/)[1], dataUriBase64Str = atob(dataUriSplit[1]);
7334
+ let dataUriLength = dataUriBase64Str.length;
7335
+ const u8arr = new Uint8Array(dataUriLength);
7321
7336
  while (dataUriLength--) {
7322
7337
  u8arr[dataUriLength] = dataUriBase64Str.charCodeAt(dataUriLength);
7323
7338
  }
@@ -7351,15 +7366,15 @@ define((function () { 'use strict';
7351
7366
  }
7352
7367
  parseCDATA(text = "") {
7353
7368
  let result = "";
7354
- let cdataRegexp = /<\!\[CDATA\[([\s\S]*)\]\]>/;
7355
- let cdataMatch = cdataRegexp.exec(text.trim());
7369
+ const cdataRegexp = /<!\[CDATA\[([\s\S]*)\]\]>/;
7370
+ const cdataMatch = cdataRegexp.exec(text.trim());
7356
7371
  if (cdataMatch && cdataMatch.length > 1) {
7357
7372
  result = cdataMatch[cdataMatch.length - 1];
7358
7373
  }
7359
7374
  return result;
7360
7375
  }
7361
7376
  async parseFileToBase64(fileObj) {
7362
- let reader = new FileReader();
7377
+ const reader = new FileReader();
7363
7378
  reader.readAsDataURL(fileObj);
7364
7379
  return new Promise((resolve) => {
7365
7380
  reader.onload = function (event) {
@@ -7368,14 +7383,14 @@ define((function () { 'use strict';
7368
7383
  });
7369
7384
  }
7370
7385
  parseFromString(text, mimeType = "text/html") {
7371
- let parser = new DOMParser();
7386
+ const parser = new DOMParser();
7372
7387
  return parser.parseFromString(text, mimeType);
7373
7388
  }
7374
7389
  parseStringToRegExpString(text) {
7375
7390
  if (typeof text !== "string") {
7376
7391
  throw new TypeError("string必须是字符串");
7377
7392
  }
7378
- let regString = text.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&");
7393
+ const regString = text.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&");
7379
7394
  return regString;
7380
7395
  }
7381
7396
  preventEvent(element, eventNameList = [], capture) {
@@ -7390,6 +7405,7 @@ define((function () { 'use strict';
7390
7405
  }
7391
7406
  if (arguments.length === 1) {
7392
7407
  /* 直接阻止事件 */
7408
+ // eslint-disable-next-line prefer-rest-params
7393
7409
  return stopEvent(arguments[0]);
7394
7410
  }
7395
7411
  else {
@@ -7405,11 +7421,11 @@ define((function () { 'use strict';
7405
7421
  }
7406
7422
  }
7407
7423
  /**
7408
- * 在canvas元素节点上绘制进度圆圈
7409
- * @example
7410
- let progress = new Utils.Process({canvasNode:document.querySelector("canvas")});
7411
- progress.draw();
7412
- * **/
7424
+ * 在canvas元素节点上绘制进度圆圈
7425
+ * @example
7426
+ let progress = new Utils.Process({canvasNode:document.querySelector("canvas")});
7427
+ progress.draw();
7428
+ * **/
7413
7429
  Progress = Progress;
7414
7430
  registerTrustClickEvent(isTrustValue = true, filter) {
7415
7431
  function trustEvent(event) {
@@ -7431,8 +7447,8 @@ define((function () { 'use strict';
7431
7447
  }
7432
7448
  const originalListener = EventTarget.prototype.addEventListener;
7433
7449
  EventTarget.prototype.addEventListener = function (...args) {
7434
- let type = args[0];
7435
- let callback = args[1];
7450
+ const type = args[0];
7451
+ const callback = args[1];
7436
7452
  // let options = args[2];
7437
7453
  if (filter(type)) {
7438
7454
  if (typeof callback === "function") {
@@ -7441,7 +7457,7 @@ define((function () { 'use strict';
7441
7457
  };
7442
7458
  }
7443
7459
  else if (typeof callback === "object" && "handleEvent" in callback) {
7444
- let oldHandleEvent = callback["handleEvent"];
7460
+ const oldHandleEvent = callback["handleEvent"];
7445
7461
  args[1]["handleEvent"] = function (event) {
7446
7462
  if (event == null) {
7447
7463
  return;
@@ -7452,7 +7468,7 @@ define((function () { 'use strict';
7452
7468
  event instanceof Proxy;
7453
7469
  oldHandleEvent.call(this, trustEvent(event));
7454
7470
  }
7455
- catch (error) {
7471
+ catch {
7456
7472
  Reflect.set(event, "isTrusted", isTrustValue);
7457
7473
  }
7458
7474
  };
@@ -7475,7 +7491,7 @@ define((function () { 'use strict';
7475
7491
  return isNegative ? -reversedNum : reversedNum;
7476
7492
  }
7477
7493
  selectElementText(element, childTextNode, startIndex, endIndex) {
7478
- let range = this.windowApi.document.createRange();
7494
+ const range = this.windowApi.document.createRange();
7479
7495
  range.selectNodeContents(element);
7480
7496
  if (childTextNode) {
7481
7497
  if (childTextNode.nodeType !== Node.TEXT_NODE) {
@@ -7486,7 +7502,7 @@ define((function () { 'use strict';
7486
7502
  range.setEnd(childTextNode, endIndex);
7487
7503
  }
7488
7504
  }
7489
- let selection = this.windowApi.globalThis.getSelection();
7505
+ const selection = this.windowApi.globalThis.getSelection();
7490
7506
  if (selection) {
7491
7507
  selection.removeAllRanges();
7492
7508
  selection.addRange(range);
@@ -7514,7 +7530,7 @@ define((function () { 'use strict';
7514
7530
  else {
7515
7531
  textType = "text/plain";
7516
7532
  }
7517
- let UtilsContext = this;
7533
+ const UtilsContext = this;
7518
7534
  class UtilsClipboard {
7519
7535
  #resolve;
7520
7536
  #copyData;
@@ -7526,7 +7542,7 @@ define((function () { 'use strict';
7526
7542
  }
7527
7543
  async init() {
7528
7544
  let copyStatus = false;
7529
- let requestPermissionStatus = await this.requestClipboardPermission();
7545
+ const requestPermissionStatus = await this.requestClipboardPermission();
7530
7546
  console.log(requestPermissionStatus);
7531
7547
  if (this.hasClipboard() && (this.hasClipboardWrite() || this.hasClipboardWriteText())) {
7532
7548
  try {
@@ -7565,7 +7581,7 @@ define((function () { 'use strict';
7565
7581
  */
7566
7582
  copyTextByTextArea() {
7567
7583
  try {
7568
- let copyElement = UtilsContext.windowApi.document.createElement("textarea");
7584
+ const copyElement = UtilsContext.windowApi.document.createElement("textarea");
7569
7585
  copyElement.value = this.#copyData;
7570
7586
  copyElement.setAttribute("type", "text");
7571
7587
  copyElement.setAttribute("style", "opacity:0;position:absolute;");
@@ -7585,20 +7601,17 @@ define((function () { 'use strict';
7585
7601
  * 申请剪贴板权限
7586
7602
  */
7587
7603
  requestClipboardPermission() {
7588
- return new Promise((resolve, reject) => {
7604
+ return new Promise((resolve) => {
7589
7605
  if (navigator.permissions && navigator.permissions.query) {
7590
7606
  navigator.permissions
7591
7607
  .query({
7592
7608
  name: "clipboard-write",
7593
7609
  })
7594
- .then((permissionStatus) => {
7610
+ .then(() => {
7595
7611
  resolve(true);
7596
7612
  })
7597
7613
  .catch((error) => {
7598
- console.error([
7599
- "申请剪贴板权限失败,尝试直接写入👉",
7600
- error.message ?? error.name ?? error.stack,
7601
- ]);
7614
+ console.error(["申请剪贴板权限失败,尝试直接写入👉", error.message ?? error.name ?? error.stack]);
7602
7615
  resolve(false);
7603
7616
  });
7604
7617
  }
@@ -7625,7 +7638,7 @@ define((function () { 'use strict';
7625
7638
  }
7626
7639
  else {
7627
7640
  /* 可复制对象 */
7628
- let textBlob = new Blob([this.#copyData], {
7641
+ const textBlob = new Blob([this.#copyData], {
7629
7642
  type: this.#copyDataType,
7630
7643
  });
7631
7644
  navigator.clipboard
@@ -7657,7 +7670,7 @@ define((function () { 'use strict';
7657
7670
  });
7658
7671
  }
7659
7672
  setTimeout(callback, delayTime = 0) {
7660
- let UtilsContext = this;
7673
+ const UtilsContext = this;
7661
7674
  if (typeof callback !== "function" && typeof callback !== "string") {
7662
7675
  throw new TypeError("Utils.setTimeout 参数 callback 必须为 function|string 类型");
7663
7676
  }
@@ -7671,7 +7684,7 @@ define((function () { 'use strict';
7671
7684
  });
7672
7685
  }
7673
7686
  sleep(delayTime = 0) {
7674
- let UtilsContext = this;
7687
+ const UtilsContext = this;
7675
7688
  if (typeof delayTime !== "number") {
7676
7689
  throw new Error("Utils.sleep 参数 delayTime 必须为 number 类型");
7677
7690
  }
@@ -7682,18 +7695,18 @@ define((function () { 'use strict';
7682
7695
  });
7683
7696
  }
7684
7697
  dragSlider(selector, offsetX = this.windowApi.window.innerWidth) {
7685
- let UtilsContext = this;
7698
+ const UtilsContext = this;
7686
7699
  function initMouseEvent(eventName, offSetX, offSetY) {
7687
- let win = typeof unsafeWindow === "undefined" ? globalThis : unsafeWindow;
7688
- let mouseEvent = UtilsContext.windowApi.document.createEvent("MouseEvents");
7700
+ const win = typeof unsafeWindow === "undefined" ? globalThis : unsafeWindow;
7701
+ const mouseEvent = UtilsContext.windowApi.document.createEvent("MouseEvents");
7689
7702
  mouseEvent.initMouseEvent(eventName, true, true, win, 0, offSetX, offSetY, offSetX, offSetY, false, false, false, false, 0, null);
7690
7703
  return mouseEvent;
7691
7704
  }
7692
- let sliderElement = typeof selector === "string" ? domUtils.selector(selector) : selector;
7705
+ const sliderElement = typeof selector === "string" ? domUtils.selector(selector) : selector;
7693
7706
  if (!(sliderElement instanceof Node) || !(sliderElement instanceof Element)) {
7694
7707
  throw new Error("Utils.dragSlider 参数selector 必须为Node/Element类型");
7695
7708
  }
7696
- let rect = sliderElement.getBoundingClientRect(), x0 = rect.x || rect.left, y0 = rect.y || rect.top, x1 = x0 + offsetX, y1 = y0;
7709
+ const rect = sliderElement.getBoundingClientRect(), x0 = rect.x || rect.left, y0 = rect.y || rect.top, x1 = x0 + offsetX, y1 = y0;
7697
7710
  sliderElement.dispatchEvent(initMouseEvent("mousedown", x0, y0));
7698
7711
  sliderElement.dispatchEvent(initMouseEvent("mousemove", x1, y1));
7699
7712
  sliderElement.dispatchEvent(initMouseEvent("mouseleave", x1, y1));
@@ -7721,34 +7734,34 @@ define((function () { 'use strict';
7721
7734
  console.error(err);
7722
7735
  }
7723
7736
  }
7724
- exitFullScreen(element = this.windowApi.document.documentElement) {
7725
- if (this.windowApi.document.exitFullscreen) {
7726
- return this.windowApi.document.exitFullscreen();
7737
+ exitFullScreen($el = this.windowApi.document.documentElement) {
7738
+ if ($el.exitFullscreen) {
7739
+ return $el.exitFullscreen();
7727
7740
  }
7728
- else if (this.windowApi.document.msExitFullscreen) {
7729
- return this.windowApi.document.msExitFullscreen();
7741
+ else if ($el.msExitFullscreen) {
7742
+ return $el.msExitFullscreen();
7730
7743
  }
7731
- else if (this.windowApi.document.mozCancelFullScreen) {
7732
- return this.windowApi.document.mozCancelFullScreen();
7744
+ else if ($el.mozCancelFullScreen) {
7745
+ return $el.mozCancelFullScreen();
7733
7746
  }
7734
- else if (this.windowApi.document.webkitCancelFullScreen) {
7735
- return this.windowApi.document.webkitCancelFullScreen();
7747
+ else if ($el.webkitCancelFullScreen) {
7748
+ return $el.webkitCancelFullScreen();
7736
7749
  }
7737
7750
  else {
7738
- return new Promise((resolve, reject) => {
7751
+ return new Promise((_, reject) => {
7739
7752
  reject(new TypeError("该浏览器不支持全屏API"));
7740
7753
  });
7741
7754
  }
7742
7755
  }
7743
7756
  sortListByProperty(data, getPropertyValueFunc, sortByDesc = true) {
7744
- let UtilsContext = this;
7757
+ const UtilsContext = this;
7745
7758
  if (typeof getPropertyValueFunc !== "function" && typeof getPropertyValueFunc !== "string") {
7746
7759
  throw new Error("Utils.sortListByProperty 参数 getPropertyValueFunc 必须为 function|string 类型");
7747
7760
  }
7748
7761
  if (typeof sortByDesc !== "boolean") {
7749
7762
  throw new Error("Utils.sortListByProperty 参数 sortByDesc 必须为 boolean 类型");
7750
7763
  }
7751
- let getObjValue = function (obj) {
7764
+ const getObjValue = function (obj) {
7752
7765
  return typeof getPropertyValueFunc === "string" ? obj[getPropertyValueFunc] : getPropertyValueFunc(obj);
7753
7766
  };
7754
7767
  /**
@@ -7757,9 +7770,9 @@ define((function () { 'use strict';
7757
7770
  * @param {any} before_obj
7758
7771
  * @returns
7759
7772
  */
7760
- let sortFunc = function (after_obj, before_obj) {
7761
- let beforeValue = getObjValue(before_obj); /* 前 */
7762
- let afterValue = getObjValue(after_obj); /* 后 */
7773
+ const sortFunc = function (after_obj, before_obj) {
7774
+ const beforeValue = getObjValue(before_obj); /* 前 */
7775
+ const afterValue = getObjValue(after_obj); /* 后 */
7763
7776
  if (sortByDesc) {
7764
7777
  if (afterValue > beforeValue) {
7765
7778
  return -1;
@@ -7788,19 +7801,18 @@ define((function () { 'use strict';
7788
7801
  * @param nodeList 元素列表
7789
7802
  * @param getNodeListFunc 获取元素列表的函数
7790
7803
  */
7791
- let sortNodeFunc = function (nodeList, getNodeListFunc) {
7792
- let nodeListLength = nodeList.length;
7804
+ const sortNodeFunc = function (nodeList, getNodeListFunc) {
7805
+ const nodeListLength = nodeList.length;
7793
7806
  for (let i = 0; i < nodeListLength - 1; i++) {
7794
7807
  for (let j = 0; j < nodeListLength - 1 - i; j++) {
7795
- let beforeNode = nodeList[j];
7796
- let afterNode = nodeList[j + 1];
7797
- let beforeValue = getObjValue(beforeNode); /* 前 */
7798
- let afterValue = getObjValue(afterNode); /* 后 */
7799
- if ((sortByDesc == true && beforeValue < afterValue) ||
7800
- (sortByDesc == false && beforeValue > afterValue)) {
7808
+ const beforeNode = nodeList[j];
7809
+ const afterNode = nodeList[j + 1];
7810
+ const beforeValue = getObjValue(beforeNode); /* 前 */
7811
+ const afterValue = getObjValue(afterNode); /* 后 */
7812
+ if ((sortByDesc == true && beforeValue < afterValue) || (sortByDesc == false && beforeValue > afterValue)) {
7801
7813
  /* 升序/降序 */
7802
7814
  /* 相邻元素两两对比 */
7803
- let temp = beforeNode.nextElementSibling;
7815
+ const temp = beforeNode.nextElementSibling;
7804
7816
  afterNode.after(beforeNode);
7805
7817
  if (temp == null) {
7806
7818
  /* 如果为空,那么是最后一个元素,使用append */
@@ -7858,7 +7870,7 @@ define((function () { 'use strict';
7858
7870
  return newTargetString;
7859
7871
  }
7860
7872
  startsWith(target, searchString, position = 0) {
7861
- let UtilsContext = this;
7873
+ const UtilsContext = this;
7862
7874
  if (position > target.length) {
7863
7875
  /* 超出目标字符串的长度 */
7864
7876
  return false;
@@ -7902,7 +7914,7 @@ define((function () { 'use strict';
7902
7914
  */
7903
7915
  toJSON = commonUtil.toJSON.bind(commonUtil);
7904
7916
  toSearchParamsStr(obj, addPrefix) {
7905
- let UtilsContext = this;
7917
+ const UtilsContext = this;
7906
7918
  let searhParamsStr = "";
7907
7919
  if (Array.isArray(obj)) {
7908
7920
  obj.forEach((item) => {
@@ -7910,7 +7922,7 @@ define((function () { 'use strict';
7910
7922
  searhParamsStr += UtilsContext.toSearchParamsStr(item);
7911
7923
  }
7912
7924
  else {
7913
- searhParamsStr += "&" + UtilsContext.toSearchParamsStr(item);
7925
+ searhParamsStr += `&${UtilsContext.toSearchParamsStr(item)}`;
7914
7926
  }
7915
7927
  });
7916
7928
  }
@@ -7918,7 +7930,7 @@ define((function () { 'use strict';
7918
7930
  searhParamsStr = new URLSearchParams(Object.entries(obj)).toString();
7919
7931
  }
7920
7932
  if (addPrefix && !searhParamsStr.startsWith("?")) {
7921
- searhParamsStr = "?" + searhParamsStr;
7933
+ searhParamsStr = `?${searhParamsStr}`;
7922
7934
  }
7923
7935
  return searhParamsStr;
7924
7936
  }
@@ -7966,7 +7978,7 @@ define((function () { 'use strict';
7966
7978
  }
7967
7979
  }
7968
7980
  waitArrayLoopToEnd(data, handleFunc) {
7969
- let UtilsContext = this;
7981
+ const UtilsContext = this;
7970
7982
  if (typeof handleFunc !== "function" && typeof handleFunc !== "string") {
7971
7983
  throw new Error("Utils.waitArrayLoopToEnd 参数 handleDataFunction 必须为 function|string 类型");
7972
7984
  }
@@ -7976,17 +7988,17 @@ define((function () { 'use strict';
7976
7988
  }
7977
7989
  wait(checkFn, timeout, parent) {
7978
7990
  const UtilsContext = this;
7979
- let __timeout__ = typeof timeout === "number" ? timeout : 0;
7991
+ const __timeout__ = typeof timeout === "number" ? timeout : 0;
7980
7992
  return new Promise((resolve) => {
7981
- let observer = UtilsContext.mutationObserver(parent || UtilsContext.windowApi.document, {
7993
+ const observer = UtilsContext.mutationObserver(parent || UtilsContext.windowApi.document, {
7982
7994
  config: {
7983
7995
  subtree: true,
7984
7996
  childList: true,
7985
7997
  attributes: true,
7986
7998
  },
7987
7999
  immediate: true,
7988
- callback(mutations, __observer__) {
7989
- let result = checkFn();
8000
+ callback(_, __observer__) {
8001
+ const result = checkFn();
7990
8002
  if (result.success) {
7991
8003
  // 取消观察器
7992
8004
  if (typeof __observer__?.disconnect === "function") {
@@ -8010,9 +8022,9 @@ define((function () { 'use strict';
8010
8022
  waitNode(...args) {
8011
8023
  // 过滤掉undefined
8012
8024
  args = args.filter((arg) => arg !== void 0);
8013
- let UtilsContext = this;
8025
+ const UtilsContext = this;
8014
8026
  // 选择器
8015
- let selector = args[0];
8027
+ const selector = args[0];
8016
8028
  // 父元素(监听的元素)
8017
8029
  let parent = UtilsContext.windowApi.document;
8018
8030
  // 超时时间
@@ -8022,7 +8034,7 @@ define((function () { 'use strict';
8022
8034
  }
8023
8035
  if (args.length === 1) ;
8024
8036
  else if (args.length === 2) {
8025
- let secondParam = args[1];
8037
+ const secondParam = args[1];
8026
8038
  if (typeof secondParam === "number") {
8027
8039
  // "div",10000
8028
8040
  timeout = secondParam;
@@ -8038,9 +8050,9 @@ define((function () { 'use strict';
8038
8050
  else if (args.length === 3) {
8039
8051
  // "div",document,10000
8040
8052
  // 第二个参数,parent
8041
- let secondParam = args[1];
8053
+ const secondParam = args[1];
8042
8054
  // 第三个参数,timeout
8043
- let thirdParam = args[2];
8055
+ const thirdParam = args[2];
8044
8056
  if (typeof secondParam === "object" && secondParam instanceof Node) {
8045
8057
  parent = secondParam;
8046
8058
  if (typeof thirdParam === "number") {
@@ -8059,9 +8071,9 @@ define((function () { 'use strict';
8059
8071
  }
8060
8072
  function getNode() {
8061
8073
  if (Array.isArray(selector)) {
8062
- let result = [];
8074
+ const result = [];
8063
8075
  for (let index = 0; index < selector.length; index++) {
8064
- let node = domUtils.selector(selector[index]);
8076
+ const node = domUtils.selector(selector[index]);
8065
8077
  if (node) {
8066
8078
  result.push(node);
8067
8079
  }
@@ -8078,7 +8090,7 @@ define((function () { 'use strict';
8078
8090
  }
8079
8091
  }
8080
8092
  return UtilsContext.wait(() => {
8081
- let node = getNode();
8093
+ const node = getNode();
8082
8094
  if (node) {
8083
8095
  return {
8084
8096
  success: true,
@@ -8096,9 +8108,9 @@ define((function () { 'use strict';
8096
8108
  waitAnyNode(...args) {
8097
8109
  // 过滤掉undefined
8098
8110
  args = args.filter((arg) => arg !== void 0);
8099
- let UtilsContext = this;
8111
+ const UtilsContext = this;
8100
8112
  // 选择器
8101
- let selectorList = args[0];
8113
+ const selectorList = args[0];
8102
8114
  // 父元素(监听的元素)
8103
8115
  let parent = UtilsContext.windowApi.document;
8104
8116
  // 超时时间
@@ -8108,7 +8120,7 @@ define((function () { 'use strict';
8108
8120
  }
8109
8121
  if (args.length === 1) ;
8110
8122
  else if (args.length === 2) {
8111
- let secondParam = args[1];
8123
+ const secondParam = args[1];
8112
8124
  if (typeof secondParam === "number") {
8113
8125
  // "div",10000
8114
8126
  timeout = secondParam;
@@ -8124,9 +8136,9 @@ define((function () { 'use strict';
8124
8136
  else if (args.length === 3) {
8125
8137
  // "div",document,10000
8126
8138
  // 第二个参数,parent
8127
- let secondParam = args[1];
8139
+ const secondParam = args[1];
8128
8140
  // 第三个参数,timeout
8129
- let thirdParam = args[2];
8141
+ const thirdParam = args[2];
8130
8142
  if (typeof secondParam === "object" && secondParam instanceof Node) {
8131
8143
  parent = secondParam;
8132
8144
  if (typeof thirdParam === "number") {
@@ -8143,7 +8155,7 @@ define((function () { 'use strict';
8143
8155
  else {
8144
8156
  throw new TypeError("Utils.waitAnyNode 参数个数错误");
8145
8157
  }
8146
- let promiseList = selectorList.map((selector) => {
8158
+ const promiseList = selectorList.map((selector) => {
8147
8159
  return UtilsContext.waitNode(selector, parent, timeout);
8148
8160
  });
8149
8161
  return Promise.any(promiseList);
@@ -8151,9 +8163,9 @@ define((function () { 'use strict';
8151
8163
  waitNodeList(...args) {
8152
8164
  // 过滤掉undefined
8153
8165
  args = args.filter((arg) => arg !== void 0);
8154
- let UtilsContext = this;
8166
+ const UtilsContext = this;
8155
8167
  // 选择器数组
8156
- let selector = args[0];
8168
+ const selector = args[0];
8157
8169
  // 父元素(监听的元素)
8158
8170
  let parent = UtilsContext.windowApi.document;
8159
8171
  // 超时时间
@@ -8163,7 +8175,7 @@ define((function () { 'use strict';
8163
8175
  }
8164
8176
  if (args.length === 1) ;
8165
8177
  else if (args.length === 2) {
8166
- let secondParam = args[1];
8178
+ const secondParam = args[1];
8167
8179
  if (typeof secondParam === "number") {
8168
8180
  // "div",10000
8169
8181
  timeout = secondParam;
@@ -8179,9 +8191,9 @@ define((function () { 'use strict';
8179
8191
  else if (args.length === 3) {
8180
8192
  // "div",document,10000
8181
8193
  // 第二个参数,parent
8182
- let secondParam = args[1];
8194
+ const secondParam = args[1];
8183
8195
  // 第三个参数,timeout
8184
- let thirdParam = args[2];
8196
+ const thirdParam = args[2];
8185
8197
  if (typeof secondParam === "object" && secondParam instanceof Node) {
8186
8198
  parent = secondParam;
8187
8199
  if (typeof thirdParam === "number") {
@@ -8200,9 +8212,9 @@ define((function () { 'use strict';
8200
8212
  }
8201
8213
  function getNodeList() {
8202
8214
  if (Array.isArray(selector)) {
8203
- let result = [];
8215
+ const result = [];
8204
8216
  for (let index = 0; index < selector.length; index++) {
8205
- let nodeList = domUtils.selectorAll(selector[index], parent);
8217
+ const nodeList = domUtils.selectorAll(selector[index], parent);
8206
8218
  if (nodeList.length) {
8207
8219
  result.push(nodeList);
8208
8220
  }
@@ -8212,14 +8224,14 @@ define((function () { 'use strict';
8212
8224
  }
8213
8225
  }
8214
8226
  else {
8215
- let nodeList = domUtils.selectorAll(selector, parent);
8227
+ const nodeList = domUtils.selectorAll(selector, parent);
8216
8228
  if (nodeList.length) {
8217
8229
  return nodeList;
8218
8230
  }
8219
8231
  }
8220
8232
  }
8221
8233
  return UtilsContext.wait(() => {
8222
- let node = getNodeList();
8234
+ const node = getNodeList();
8223
8235
  if (node) {
8224
8236
  return {
8225
8237
  success: true,
@@ -8237,9 +8249,9 @@ define((function () { 'use strict';
8237
8249
  waitAnyNodeList(...args) {
8238
8250
  // 过滤掉undefined
8239
8251
  args = args.filter((arg) => arg !== void 0);
8240
- let UtilsContext = this;
8252
+ const UtilsContext = this;
8241
8253
  // 选择器数组
8242
- let selectorList = args[0];
8254
+ const selectorList = args[0];
8243
8255
  // 父元素(监听的元素)
8244
8256
  let parent = UtilsContext.windowApi.document;
8245
8257
  // 超时时间
@@ -8249,7 +8261,7 @@ define((function () { 'use strict';
8249
8261
  }
8250
8262
  if (args.length === 1) ;
8251
8263
  else if (args.length === 2) {
8252
- let secondParam = args[1];
8264
+ const secondParam = args[1];
8253
8265
  if (typeof secondParam === "number") {
8254
8266
  // "div",10000
8255
8267
  timeout = secondParam;
@@ -8265,9 +8277,9 @@ define((function () { 'use strict';
8265
8277
  else if (args.length === 3) {
8266
8278
  // "div",document,10000
8267
8279
  // 第二个参数,parent
8268
- let secondParam = args[1];
8280
+ const secondParam = args[1];
8269
8281
  // 第三个参数,timeout
8270
- let thirdParam = args[2];
8282
+ const thirdParam = args[2];
8271
8283
  if (typeof secondParam === "object" && secondParam instanceof Node) {
8272
8284
  parent = secondParam;
8273
8285
  if (typeof thirdParam === "number") {
@@ -8284,7 +8296,7 @@ define((function () { 'use strict';
8284
8296
  else {
8285
8297
  throw new TypeError("Utils.waitAnyNodeList 参数个数错误");
8286
8298
  }
8287
- let promiseList = selectorList.map((selector) => {
8299
+ const promiseList = selectorList.map((selector) => {
8288
8300
  return UtilsContext.waitNodeList(selector, parent, timeout);
8289
8301
  });
8290
8302
  return Promise.any(promiseList);
@@ -8313,13 +8325,13 @@ define((function () { 'use strict';
8313
8325
  });
8314
8326
  }
8315
8327
  waitPropertyByInterval(checkObj, checkPropertyName, intervalTimer = 250, maxTime = -1) {
8316
- let UtilsContext = this;
8328
+ const UtilsContext = this;
8317
8329
  if (checkObj == null) {
8318
8330
  throw new TypeError("checkObj 不能为空对象 ");
8319
8331
  }
8320
8332
  let isResolve = false;
8321
8333
  return new Promise((resolve, reject) => {
8322
- let interval = UtilsContext.workerSetInterval(() => {
8334
+ const interval = UtilsContext.workerSetInterval(() => {
8323
8335
  let obj = checkObj;
8324
8336
  if (typeof checkObj === "function") {
8325
8337
  obj = checkObj();
@@ -8352,7 +8364,7 @@ define((function () { 'use strict';
8352
8364
  throw new Error("Utils.waitVueByInterval 参数element 不能为空");
8353
8365
  }
8354
8366
  let flag = false;
8355
- let UtilsContext = this;
8367
+ const UtilsContext = this;
8356
8368
  try {
8357
8369
  await UtilsContext.waitPropertyByInterval(element, function (targetElement) {
8358
8370
  if (targetElement == null) {
@@ -8364,7 +8376,7 @@ define((function () { 'use strict';
8364
8376
  if (propertyName == null) {
8365
8377
  return true;
8366
8378
  }
8367
- let vueObject = targetElement[vueName];
8379
+ const vueObject = targetElement[vueName];
8368
8380
  if (typeof propertyName === "string") {
8369
8381
  if (propertyName in vueObject) {
8370
8382
  flag = true;
@@ -8380,6 +8392,7 @@ define((function () { 'use strict';
8380
8392
  }
8381
8393
  return false;
8382
8394
  }, timer, maxTime);
8395
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
8383
8396
  }
8384
8397
  catch (error) {
8385
8398
  return flag;
@@ -8438,7 +8451,7 @@ define((function () { 'use strict';
8438
8451
  if (target == null) {
8439
8452
  return;
8440
8453
  }
8441
- let handleResult = handler(target);
8454
+ const handleResult = handler(target);
8442
8455
  if (handleResult && typeof handleResult.isFind === "boolean" && handleResult.isFind) {
8443
8456
  return handleResult.data;
8444
8457
  }
@@ -8451,10 +8464,10 @@ define((function () { 'use strict';
8451
8464
  */
8452
8465
  async asyncQueryProperty(target, handler) {
8453
8466
  if (target == null) {
8454
- // @ts-ignore
8467
+ // @ts-expect-error 空返回
8455
8468
  return;
8456
8469
  }
8457
- let handleResult = await handler(target);
8470
+ const handleResult = await handler(target);
8458
8471
  if (handleResult && typeof handleResult.isFind === "boolean" && handleResult.isFind) {
8459
8472
  return handleResult.data;
8460
8473
  }
@@ -8562,6 +8575,7 @@ define((function () { 'use strict';
8562
8575
  workerSetTimeout(callback, timeout = 0) {
8563
8576
  try {
8564
8577
  return setTimeout$1(callback, timeout);
8578
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
8565
8579
  }
8566
8580
  catch (error) {
8567
8581
  return this.windowApi.setTimeout(callback, timeout);
@@ -8576,8 +8590,10 @@ define((function () { 'use strict';
8576
8590
  if (timeId != null) {
8577
8591
  clearTimeout$1(timeId);
8578
8592
  }
8593
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
8579
8594
  }
8580
8595
  catch (error) {
8596
+ // console.log(error);
8581
8597
  }
8582
8598
  finally {
8583
8599
  this.windowApi.clearTimeout(timeId);
@@ -8591,6 +8607,7 @@ define((function () { 'use strict';
8591
8607
  workerSetInterval(callback, timeout = 0) {
8592
8608
  try {
8593
8609
  return setInterval(callback, timeout);
8610
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
8594
8611
  }
8595
8612
  catch (error) {
8596
8613
  return this.windowApi.setInterval(callback, timeout);
@@ -8605,8 +8622,10 @@ define((function () { 'use strict';
8605
8622
  if (timeId != null) {
8606
8623
  clearInterval(timeId);
8607
8624
  }
8625
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
8608
8626
  }
8609
8627
  catch (error) {
8628
+ // console.log(error);
8610
8629
  }
8611
8630
  finally {
8612
8631
  this.windowApi.clearInterval(timeId);
@@ -8640,10 +8659,10 @@ define((function () { 'use strict';
8640
8659
  .query({
8641
8660
  name: "clipboard-read",
8642
8661
  })
8643
- .then((permissionStatus) => {
8662
+ .then(() => {
8644
8663
  readClipboardText();
8645
8664
  })
8646
- .catch((error) => {
8665
+ .catch(() => {
8647
8666
  /* 该权限申请Api可能在该环境下不生效,尝试直接读取剪贴板 */
8648
8667
  readClipboardText();
8649
8668
  });
@@ -8680,7 +8699,7 @@ define((function () { 'use strict';
8680
8699
  });
8681
8700
  }
8682
8701
  }
8683
- let utils = new Utils();
8702
+ const utils = new Utils();
8684
8703
 
8685
8704
  return utils;
8686
8705