@whitesev/utils 2.8.0 → 2.8.2

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