ntmemoryapi 2.6.0__tar.gz → 2.7.1__tar.gz

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.
@@ -1,8 +1,7 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: ntmemoryapi
3
- Version: 2.6.0
3
+ Version: 2.7.1
4
4
  Summary: Simple library for Windows to manipulate process virtual memory with stelthy syscall wraps
5
- Author: Xenely
6
5
  Requires-Dist: psutil>=7.2.2
7
6
  Requires-Dist: syscallwraps>=1.0.4
8
7
  Requires-Python: >=3.13
@@ -1,12 +1,9 @@
1
1
  [project]
2
2
  name = "ntmemoryapi"
3
- version = "2.6.0"
3
+ version = "2.7.1"
4
4
  description = "Simple library for Windows to manipulate process virtual memory with stelthy syscall wraps"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.13"
7
- authors = [
8
- {name = "Xenely"}
9
- ]
10
7
  dependencies = [
11
8
  "psutil>=7.2.2",
12
9
  "syscallwraps>=1.0.4",
@@ -0,0 +1,14 @@
1
+ [project]
2
+ name = "ntmemoryapi"
3
+ version = "2.7.1"
4
+ description = "Simple library for Windows to manipulate process virtual memory with stelthy syscall wraps"
5
+ readme = "README.md"
6
+ requires-python = ">=3.13"
7
+ dependencies = [
8
+ "psutil>=7.2.2",
9
+ "syscallwraps>=1.0.4",
10
+ ]
11
+
12
+ [build-system]
13
+ requires = ["uv_build>=0.10.4,<0.11.0"]
14
+ build-backend = "uv_build"
@@ -1,11 +1,3 @@
1
- # +-------------------------------------+
2
- # | ~ Author : Xenely ~ |
3
- # +=====================================+
4
- # | GitHub: https://github.com/Xenely14 |
5
- # | Discord: xenely |
6
- # +-------------------------------------+
7
-
8
- import os
9
1
  import typing
10
2
  import ctypes
11
3
  import psutil
@@ -16,6 +8,7 @@ import syscallwraps
16
8
  from . import embed
17
9
  from . import errors
18
10
  from . import structs
11
+ from . import memorydll
19
12
 
20
13
  # ==-------------------------------------------------------------------== #
21
14
  # Static and global variables, constans #
@@ -68,6 +61,13 @@ MEM_RELEASE = 0x8000
68
61
  TH32CS_SNAPPROCESS = 0x00000002
69
62
  TH32CS_SNAPMODULE = 0x00000008
70
63
 
64
+ # Load SIMD-KMP library
65
+ kmp = memorydll.MemoryDLL(embed.simdkmp)
66
+
67
+ # Load library functions
68
+ scan_aob = kmp.get_proc_address("scanAOB")
69
+ free_scan_aob = kmp.get_proc_address("freeScanAOB")
70
+
71
71
 
72
72
  # ==-------------------------------------------------------------------== #
73
73
  # C-structs #
@@ -85,7 +85,7 @@ class PatternScanBuffer(ctypes.Structure):
85
85
 
86
86
  return list((ctypes.c_size_t * self.size).from_address(self.pointer))
87
87
 
88
- def free(self, library: ctypes.WinDLL) -> None:
88
+ def free(self) -> None:
89
89
  """Free memory allocated on `scanAOB` function call."""
90
90
 
91
91
  # If pointer is not defined
@@ -93,7 +93,7 @@ class PatternScanBuffer(ctypes.Structure):
93
93
  return
94
94
 
95
95
  # Free memory
96
- library.freeScanAOB(ctypes.byref(self))
96
+ free_scan_aob(ctypes.byref(self))
97
97
 
98
98
 
99
99
  # ==-------------------------------------------------------------------== #
@@ -520,19 +520,6 @@ class Process:
520
520
  case _:
521
521
  raise errors.OpenProcessError("Invalid `name_or_pid` argument value, have to be `int` or `str` type")
522
522
 
523
- # Try create file at temp directory to load SIMD KMP .dll (Module to blazingly fast pattern scaning)
524
- try:
525
-
526
- # Write library bytes directly from python list
527
- with open("%s\\simdkmp.dll" % (appdata := os.getenv("APPDATA")), "wb") as file:
528
- file.write(bytes(embed.kmp))
529
-
530
- except Exception:
531
- pass
532
-
533
- # Load library
534
- self.__kmp = ctypes.WinDLL(appdata + "\\simdkmp.dll")
535
-
536
523
  def list_modules(self, method: typing.Literal["pebwalk", "snapshot"] = "pebwalk") -> list[structs.MODULEENTRY32]:
537
524
  """List all of the modules loaded to process."""
538
525
 
@@ -862,13 +849,13 @@ class Process:
862
849
  continue
863
850
 
864
851
  # Pattern scan region using SIMD KMP algorithm
865
- self.__kmp.scanAOB(ctypes.c_void_p(ctypes.addressof(read_memory_buffer)), region.size, pattern.strip().encode(), ctypes.c_uint64(region.base_address), ctypes.c_uint64(return_first if return_first is not None else 0), ctypes.byref(scan_result := PatternScanBuffer()))
852
+ scan_aob(ctypes.c_void_p(ctypes.addressof(read_memory_buffer)), region.size, pattern.strip().encode(), ctypes.c_uint64(region.base_address), ctypes.c_uint64(return_first if return_first is not None else 0), ctypes.byref(scan_result := PatternScanBuffer()))
866
853
 
867
854
  # Read result addresses
868
855
  addresses = scan_result.read()
869
856
 
870
857
  # Free scan result memory
871
- scan_result.free(self.__kmp)
858
+ scan_result.free()
872
859
 
873
860
  # If return first is defined
874
861
  if return_first is not None and addresses:
@@ -0,0 +1,379 @@
1
+ import base64
2
+
3
+ # Bytes of SIMD KMP (Module to blazingly fast pattern scaning)
4
+ simdkmp = base64.b64decode(
5
+ b'TVp4AAEAAAAEAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
6
+ b'AAAAAAAAAAAAAAAAeAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5v'
7
+ b'dCBiZSBydW4gaW4gRE9TIG1vZGUuJAAAUEUAAGSGBwDoo9IvAAAAAAAAAADwACIg'
8
+ b'CwIOAAAgAAAAIgAAAAAAAAAQAAAAEAAAAAAAgAEAAAAAEAAAAAIAAAYAAAAAAAAA'
9
+ b'BgAAAAAAAAAAoAAAAAQAAAAAAAACAGABAAAQAAAAAAAAEAAAAAAAAAAAEAAAAAAA'
10
+ b'ABAAAAAAAAAAAAAAEAAAANhDAADsAAAAxEQAACgAAAAAAAAAAAAAAABwAAD8AAAA'
11
+ b'AAAAAAAAAAAAkAAAJAAAAABQAAAcAAAAAAAAAAAAAAAAAAAAAAAAAIBDAAAoAAAA'
12
+ b'AAAAAAAAAAAAAAAAAAAAAAhFAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
13
+ b'LnRleHQAAADmHwAAABAAAAAgAAAABAAAAAAAAAAAAAAAAAAAIAAAYC5yZGF0YQAA'
14
+ b'qBYAAAAwAAAAGAAAACQAAAAAAAAAAAAAAAAAAEAAAEAuYnVpbGRpZBwAAAAAUAAA'
15
+ b'AAIAAAA8AAAAAAAAAAAAAAAAAABAAABALmRhdGEAAAAYAAAAAGAAAAACAAAAPgAA'
16
+ b'AAAAAAAAAAAAAAAAQAAAwC5wZGF0YQAA/AAAAABwAAAAAgAAAEAAAAAAAAAAAAAA'
17
+ b'AAAAAEAAAEAudGxzAAAAABAAAAAAgAAAAAIAAABCAAAAAAAAAAAAAAAAAABAAADA'
18
+ b'LnJlbG9jAAAkAAAAAJAAAAACAAAARAAAAAAAAAAAAAAAAAAAQAAAQgAAAAAAAAAA'
19
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
20
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
21
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
22
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
23
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
24
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
25
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
26
+ b'AAAAAAAAAAAAAAAAAAAAAFVIieVqAVhdw1VBV0FWQVVBVFZXU0iD7FhIjWwkUEyJ'
27
+ b'xkiJz0iLQQhIi1kQSDnDdghMizfplgAAAGr/WUmJ3E2J4EnR6EmDwBBNAcRMD0Lh'
28
+ b'STnEduoPEAJIjU3wDykBTIs/TIn6SYnYTYnh6IwaAABIhcB0CEmJxkmJ1etHTI11'
29
+ b'2EiNVfBMifFNieDoGhsAAEEPt0YQZoXAdUNMi3XYTItt4EiLF0yLRwhJweADTInx'
30
+ b'6PseAABIjU3wTIn6SYnY6OwZAABMiTdMiW8QSItHCEiNSAFIiU8ISYk0xjHASIPE'
31
+ b'WFtfXkFcQV1BXkFfXcNVQVdBVkFVQVRWV1NIgexIAwAASI2sJIAAAABmRA9/vbAC'
32
+ b'AABmRA9/taACAABmRA9/rZACAABmRA9/pYACAABEDymdcAIAAEQPKZVgAgAARA8p'
33
+ b'jVACAABEDymFQAIAAA8pvTACAAAPKbUgAgAATImN+AEAAEyJw0iJldgBAABIiY0A'
34
+ b'AgAAidgl/w8AAD3xDwAAD4O4FgAA8w9vC2YP78BmD3TBZg/XwIXAdGtmD28NXx4A'
35
+ b'AGYPb9BmD9/RZg/bBV8eAABmD+vCZg9w0O5mD9vRZg/a0GYPcMJVZg/bwWYP2sJm'
36
+ b'D2/QZg9y0hBmD9vRZg/a0GYPb8JmD3HQCGYP28FmD9rCZg9+wIiF4AAAAEQPt/Dp'
37
+ b'ngAAAEiNQw9Ig+DwSCnYSIPA8GYP78nzD29EAxBmD2/QZg900WYP18pIg8AQhcl0'
38
+ b'5mYP78lmD3TBZg9vDb8dAABmD2/QZg/bBcMdAABmD9/RZg/rwmYPcNDuZg/b0WYP'
39
+ b'2tBmD3DCVWYP28FmD9rCZg9v0GYPctIQZg/b0WYP2tBmD2/CZg9x0AhmD9vBZg/a'
40
+ b'wmYPfsGIjeAAAABED7fxSQHGSIuFMAMAAEiJhcAAAADzD28FyB0AAEyNZRBmQQ9/'
41
+ b'BCRJg2QkEABBtwEx9moDWmYPbzVIHQAAZg9vPSAdAABmRA9vBScdAABmRA9vDT4d'
42
+ b'AABmRA9vFUUdAABmRA9vHUwdAABFhP8PhNYAAABMOfYPg4kBAABIjU4gSInwTDnx'
43
+ b'czvzD28EA2YPdMZmD9fIhckPhXUBAADzD29EAxBmD3TGZg/XyIXJD4W+AQAASI1I'
44
+ b'IEiDwEBMOfBIichyxUiNSBBMOfEPg4YAAADzD28EA2YPdMZmD9fQhdJqA1p0dWYP'
45
+ b'b8hmD9/PZkEP28BmD+vBZg9wyO5mD9vPZg/ayGYPcMFVZg/bx2YP2sFmD2/IZg9y'
46
+ b'0RBmD9vPZg/ayGYPb8FmD3HQCGYP28dmD9rBZg9+wYiN7QEAAA+3yUgByEiJx+mK'
47
+ b'AQAARTH/RTHtMf/pjgEAAEiJwUiNeQhMOfcPg4gAAADzD34EC2YPb8hmQQ90yWYP'
48
+ b'18GEwHR1ZkEPb8lmQQ9gyWYPYMBmD3TBZg9vyGZBD9/KZkEP28NmD+vBZg9wyO5m'
49
+ b'QQ/bymYP6shmD3DBVWZBD9vCZg/qwWYPb8hmD3LREGZBD9vKZg/qyGYPfsiJwoDi'
50
+ b'B4iV4AAAAGoDWoPgB0gBwUiJz+nlAAAASInPSTn+dA+APDsgD4TTAAAASP/H6+wx'
51
+ b'wEUx/0yJ9+nIAAAAZg9vyGYP389mQQ/bwGYP68FmD3DI7mYP289mD9rIZg9wwVVm'
52
+ b'D9vHZg/awWYPb8hmD3LREGYP289mD9rIZg9vwWYPcdAIZg/bx2YP2sFmD37BiI3v'
53
+ b'AQAAD7f5SAHH62JmD2/IZg/fz2ZBD9vAZg/rwWYPcMjuZg/bz2YP2shmD3DBVWYP'
54
+ b'28dmD9rBZg9vyGYPctEQZg/bz2YP2shmD2/BZg9x0AhmD9vHZg/awWYPfsGIje4B'
55
+ b'AAAPt8lIjTwBSIPHEEiNRwFBtwFMjSwzSCn3SInGTYXtD4QFAQAASIX/D4R0/f//'
56
+ b'SIP/AnUnSI0F+xoAAEk5xXQPQYpFADw/dRdBgH0BP3UQTInhSI0V4BoAAOtRQYpF'
57
+ b'ADwtdF8PtsCD+Ct1Bkn/xUj/z0iNjeAAAABMiepJifjoMxYAAIuF4AAAAGaFwA+F'
58
+ b'wwEAAMHoEIiFDgIAAMaFDwIAAAFMieFIjZUOAgAA6E0SAABqA1pmhcAPhOX8///p'
59
+ b'khEAAInQSIP/AXS/QYB9AV+J0HS2QYB8Pf9fidB0rGoBQVxMOed0MEOKVCUAgPpf'
60
+ b'dCFIjY3gAAAA6G0WAAAPt4XgAAAAZoXAdRaAveIAAAAAdQlJ/8TryzHA6wRmuAIA'
61
+ b'D7fATI1lEOlf////TItlEEyLRRhMi40IAwAASI0VNhoAAEiNteAAAABIifFMiYUY'
62
+ b'AgAA6HgTAABmg34IAA+F8xAAAEiLteAAAABIgyYAagFYMclMi50YAgAATDnYc2tF'
63
+ b'ikREAUWEwEEPlcFBilRMAYTSQQ+VwkUAyUUI0UGA+QN0FEUPtslFhcl0KkWEwHQl'
64
+ b'hNJ1FesfRYTAdBqE0nQWQYoUTEE4FER0DEiFyXQQSItMzvjrpUj/wUiJDMbrB0iD'
65
+ b'JMYAMclI/8DrkEiDpdABAAAA8w9vBUYZAABmD3+FwAEAAIA9n0gAAAB1aMYFlkgA'
66
+ b'AAG4AQAAAA+iQYnRQYnIuAcAAAC5AAAAAA+iQYnaRInAJQAAABBBg+IgQQnCdR9B'
67
+ b'geEAAAAGRInAJQEAGABECch0EWoQ6wlqAun6DwAAaiBBWOsIQcHoBUGD4BBMiQU9'
68
+ b'SAAAMcAxyUk5y3QqQYB8TAEAdB2EwEiLhbgBAABID0TBSImFuAEAALABSImN2AAA'
69
+ b'AEj/wevRhMAPlcGEwA+VwITBSIm1EAIAAHQgSIO92AEAAEEPksFIiwXjRwAASIXA'
70
+ b'D5TCCMoPhMwAAABI/43AAAAATCmd+AEAADHbSI01hhgAAEiNvcABAABFMfYxwEg5'
71
+ b'ncAAAAAPksJMO7XYAQAAD5PBCNFJiceEyQ+FNQ4AAEOAfHwBAHQkSIuFAAIAAEKK'
72
+ b'BDBDOgR8dBNNhf90YEiLhRACAABOi3z4+OvMSf/GSY1HAUw52HWnSIuF+AEAAE6N'
73
+ b'BDBIiflIifLoPPf//2aFwA+FwQ4AAEiLhRACAABKiwT4SP/DSDmdwAAAAEyLnRgC'
74
+ b'AAAPgrwNAADpYf///0n/xjHA6Vf///9Ig/gQTIml0AAAAA+FyQEAAEiLhbgBAABB'
75
+ b'D7YERGYPbsBmD2DA8g9wwABmD3D4REiLhdgAAABBD7YERGYPbsBmD2DA8g9wwABm'
76
+ b'RA9wwERJjUsQSIuFMAMAAEyNeP9J/8Qx20yLrQACAABFMfZIiY3IAAAASo0EMUg7'
77
+ b'hdgBAAAPh0cLAABJOd8PgkwLAABIi4UAAgAATAHwSIuNuAEAAPMPbwQBZg90x0iL'
78
+ b'jdgAAADzD28MAWZBD3TIZg/byGYP1/FmhfYPhP0AAAAPvP5NifBJCfhIi4UAAgAA'
79
+ b'TAHATInhRTHJSY1REEw52ndw80IPbwQIZg/vyUUxyUmD+RB0NUKAPEkAdAdGilRJ'
80
+ b'/+saZg9/TQBFicpBg+IPQsZEFQABRTHSZg9vTQBGiJQN4AAAAEn/wevFZg90heAA'
81
+ b'AABmD+vIZg9x8QdmRA/X0UiDwSBJidFBgfr//wAAdInrW0052XMgSo0EL005y3QX'
82
+ b'Q4A8TAB0C0KKDAhDOkxM/3U7Sf/B6+RMA4X4AQAASI2NwAEAAEiNFTwWAADoaPX/'
83
+ b'/2aFwA+F7QwAAEj/w0k530yLnRgCAAAPgiMKAABmuP7/iflm08Ahxun6/v//SYPG'
84
+ b'EEmDxRBIi43IAAAA6Zn+//9Ii4W4AQAAQQ+2BERmD27AZg9gwPIPcMAAZg9wwERm'
85
+ b'D39FwEiLhdgAAABBD7YERGYPbsBmD2DA8g9wwABmD3DARGYPf0XQSY1TIEiLhTAD'
86
+ b'AABI/8hIiYWoAAAASY18JAFIx4XgAQAAAAAAAEiLhQACAABIiYWwAAAAMcBIiVVQ'
87
+ b'SIl9QEiJhfABAABIAdBIO4XYAQAAD4c5CgAASIuFqAAAAEg7heABAAAPgjMKAABI'
88
+ b'i4UAAgAASIuN8AEAAEgByEiLjbgBAADzD28EAfMPb0wBEGYPb1XAZg90wmYPdMpI'
89
+ b'i43YAAAA8w9vFAHzD29cARBmD29l0GYPdNRmD9vQZg903GYP29lmD9fCZg/Xy8Hh'
90
+ b'EAnBiciFwA+EuQgAAImFvAAAAA+8yEiLlfABAABIiY2gAAAASAnKSIuFAAIAAEiJ'
91
+ b'VUhIAdBIiUU4SIn6McBIjUggTDnZD4frBwAASIlNMEiJlZgAAABIi004DxAEAQ8p'
92
+ b'RbDzD29EARBmD39FoDH2x4UMAQAAAAAAAMeFaAEAAAAAAADHhWQBAAAAAAAAx4Vg'
93
+ b'AQAAAAAAAMeFXAEAAAAAAADHhVgBAAAAAAAAx4VUAQAAAAAAAEjHRVgAAAAAx4VQ'
94
+ b'AQAAAAAAAMeFTAEAAAAAAADHhUgBAAAAAAAAx4VEAQAAAAAAAMeFQAEAAAAAAADH'
95
+ b'hTwBAAAAAAAAx4U4AQAAAAAAAMeFFAEAAAAAAABIx0VgAAAAAMeFEAEAAAAAAABI'
96
+ b'x4WQAAAAAAAAAEjHhYgAAAAAAAAASMeFgAAAAAAAAABIx0V4AAAAAEjHRXAAAAAA'
97
+ b'SMdFaAAAAADHhTQBAAAAAAAAx4UwAQAAAAAAAMeFLAEAAAAAAADHhSgBAAAAAAAA'
98
+ b'x4UkAQAAAAAAAMeFIAEAAAAAAADHhRwBAAAAAAAAx4UYAQAAAAAAAEQPtq0MAQAA'
99
+ b'RA+2tWgBAAAPtp1kAQAAD7aNYAEAAEQPtp1cAQAAD7aVWAEAAEQPtoVUAQAARA+2'
100
+ b'TVgPtoVQAQAARA+2pUwBAABED7aVSAEAAEQPtr1EAQAAD7a9QAEAAIm9tAEAAA+2'
101
+ b'vTwBAACJvbABAAAPtr04AQAAib2sAQAAD7a9FAEAAIm9qAEAAA+2fWCJvaQBAAAP'
102
+ b'tr0QAQAAib2gAQAAD7a9kAAAAIm9nAEAAA+2vYgAAACJvZgBAAAPtr2AAAAAib2U'
103
+ b'AQAAD7Z9eIm9kAEAAA+2fXCJvYwBAAAPtn1oib2IAQAAD7a9NAEAAIm9hAEAAA+2'
104
+ b'vTABAACJvYABAAAPtr0sAQAAib18AQAAD7a9KAEAAIm9eAEAAA+2vSQBAACJvXQB'
105
+ b'AAAPtr0gAQAAib1wAQAAD7a9HAEAAIm9bAEAAA+2vRgBAABIg/4gD4RvAwAAib24'
106
+ b'AAAASIu9mAAAAEiJtcgAAACAPHcAdBBIi7XIAAAAikR3/+k2AwAAZkEPbtVmQQ9u'
107
+ b'3mYPbutmRA9uyWZBD27jZkQPbtJmRQ9u4GZBD275ZkQPbthmQQ9u9GZFD27CZkUP'
108
+ b'bu9mRA9utbQBAABmRA9uvbABAABmD26NrAEAAGYPboWoAQAAZg9g02YPbp2kAQAA'
109
+ b'ZkEPYOlmRA9ujaABAABmD2HVZg9urZwBAABmQQ9g4mZED2DnZkEPYeRmD2LUZkQP'
110
+ b'YN5mRQ9gxWZFD2HYZkUPYPdmD2DIZkQPYfFmRQ9i3mZBD2zTZg9/VeBmQQ9g2WYP'
111
+ b'boWYAQAAZg9g6GYPYd1mD26FlAEAAGYPbo2QAQAAZg9gwWYPbo2MAQAAZg9ulYgB'
112
+ b'AABmD2DKZg9hwWYPYthmD26FhAEAAGYPbo2AAQAAZg9gwWYPbo18AQAAZg9ulXgB'
113
+ b'AABmD2DKZg9hwWYPbo10AQAAZg9ulXABAABmD2DKZg9ulWwBAABmD26luAAAAGYP'
114
+ b'YNRmD2HKZg9iwWYPbNhmD39d8EiLtcgAAACJ8IPgH8ZEBeABZg9vReBmD29N8GYP'
115
+ b'cfEHZg/XyYnIwegPiYUYAQAAicjA6AdIiUVoicgkAUiJRWBmD3HwB2YP18CJwsHq'
116
+ b'D4mVFAEAAInCwOoHSIlVWInKweoOgOIBiZUcAQAAicrB6g2A4gGJlSABAACJysHq'
117
+ b'DIDiAYmVJAEAAInKweoLgOIBiZUoAQAAicrB6gqA4gGJlSwBAACJysHqCYDiAYmV'
118
+ b'MAEAAInKweoIgOIBiZU0AQAAicrA6gaA4gFIiVVwicrA6gWA4gFIiVV4icrA6gSA'
119
+ b'4gFIiZWAAAAAicrA6gOA4gFIiZWIAAAAicrA6gKA4gFIiZWQAAAA0OmA4QGJjRAB'
120
+ b'AACJwcHpDoPhAYmNOAEAAInBwekNg+EBiY08AQAAicHB6QyD4QGJjUABAACJwcHp'
121
+ b'C4PhAYmNRAEAAInBwekKg+EBiY1IAQAAicHB6QmD4QGJjUwBAACJwcHpCIPhAYmN'
122
+ b'UAEAAInBg+FAwekGiY1UAQAAicGD4SDB6QWJjVgBAACJwYPhEMHpBImNXAEAAInB'
123
+ b'g+EIwekDiY1gAQAAicGD4QTB6QKJjWQBAACJhQwBAACD4ALR6ImFaAEAADHAiIQ1'
124
+ b'4AAAAEj/xuk8+///ZkEPbtVmQQ9u/mYPbttmRA9u6WZFD27LZkQPbtpmRQ9u8GZB'
125
+ b'D27BZg9u4GZFD278ZkUPbuJmRQ9ux2YPbq20AQAAZg9utbABAABmD2DXZkQPbpWs'
126
+ b'AQAAZkEPYN1mD269qAEAAGYPYdNmD26dpAEAAGZFD2DLZkQPbq2gAQAAZkQPYPBm'
127
+ b'RA9unZwBAABmRQ9hzmZED261mAEAAGZBD2LRZkQPbo2UAQAAZkEPYOdmD26FkAEA'
128
+ b'AGZFD2DgZkQPboWMAQAAZkEPYeRmRA9upYgBAABmD2DuZg9utYQBAABmRA9g12YP'
129
+ b'br2AAQAAZkEPYepmRA9ulXwBAABmD2LlZg9urXgBAABmD2zUZg9upXQBAABmD29N'
130
+ b'sGYPdI3gAAAAZg/r0WYPbo1wAQAAZkEPYN1mRA9urWwBAABmRQ9g3mZBD2HbZkQP'
131
+ b'YMhmRQ9gxGZFD2HIZkEPYtlmD2D3ZkQPYNVmQQ9h8mYPb22gZg90rfAAAABmD2Dh'
132
+ b'Zg9ux2ZED2DoZkEPYeVmD2L0Zg9s3mYP691mD9vaZg9x8wdmD9fLSIuVmAAAAEiD'
133
+ b'wkBIi0Uwgfn//wAATIudGAIAAEyLpdAAAABIi31AD4QK+P//63tMOdhzKkiLjbAA'
134
+ b'AABIi5WgAAAASAHRSTnDdBSAPEcAdAmKFAE6VEf/dVFI/8Dr50yLRUhMA4X4AQAA'
135
+ b'SI2NwAEAAEiNFWoMAADoluv//2aFwA+FGwMAAEiLjeABAABI/8FIiY3gAQAASDmN'
136
+ b'qAAAAEyLnRgCAAAPgiEBAACLhbwAAABIi42gAAAAD7PI6T/3//9Ii4XwAQAASIPA'
137
+ b'IEiDhbAAAAAgSItVUOmS9v//SIO9MAMAAAAPhEYDAABIO50wAwAASIuN0AAAAA+D'
138
+ b'wAEAAEUx/0wpnfgBAAAxwEiNNdELAABIjb3AAQAASYnETDu12AEAAA+DlgEAAEKA'
139
+ b'fGEBAHQkSIuFAAIAAEKKBDBCOgRhdBNNheR0bkiLhRACAABOi2Tg+OvHSf/GSY1E'
140
+ b'JAFMOdh1t0iLhfgBAABOjQQwSIn5SIny6Jzq//9mhcAPhSECAABIi4UQAgAASosE'
141
+ b'4Ej/w0g7nTADAAAPksFECPlMi50YAgAASIuN0AAAAA+EDwEAAOlk////Sf/GMcDp'
142
+ b'Wv///0iDvTADAAAAD4RzAgAASIuF4AEAAEg7hTADAAAPg94AAAAx/0wpnfgBAAAx'
143
+ b'wEiNNfAKAABIjZ3AAQAASYnGSIuF8AEAAEg7hdgBAAAPg64AAABDgHx0AQB0KkiL'
144
+ b'hQACAABIi43wAQAAigQIQzoEdHQTTYX2dHxIi4UQAgAATot08Pjrukj/hfABAABJ'
145
+ b'jUYBTDnYdadIi4X4AQAASIuN8AEAAEyNBAhIidlIifLopOn//2aFwA+FKQEAAEiL'
146
+ b'hRACAABKiwTwSIuV4AEAAEj/wkiJleABAABIO5UwAwAAD5LBQAj5TIudGAIAAA+F'
147
+ b'S////+sOSP+F8AEAADHA6Tv///9Ii7XAAQAATIu9yAEAAEiLvdABAABIjQ0ICgAA'
148
+ b'SInySYn4TYn56B4EAABIhcB0IEiJw0mJ1vMPbwWvCQAAZg9/hcABAABIg6XQAQAA'
149
+ b'AOtjSI0VzgkAAEiNneAAAABIidlNifjojgQAAGaDexAAdXRMjb3IAQAASIud4AAA'
150
+ b'AEyLtegAAABOjQT1AAAAAEiJ2UiJ8uhlCAAASI0NhgkAAEiJ8kmJ+OhTAwAAZg/v'
151
+ b'wPNBD38HSIuFOAMAAEiJGEyJcAhIjY3AAQAA6B0CAABIi40QAgAASIuVGAIAAOgi'
152
+ b'AgAAMfbrIkiNjcABAADo+gEAAEiLjRACAABIi5UYAgAA6P8BAABqAV5IjU0Q6MMB'
153
+ b'AACJ8A8otSACAAAPKL0wAgAARA8ohUACAABEDyiNUAIAAEQPKJVgAgAARA8onXAC'
154
+ b'AABEDyilgAIAAEQPKK2QAgAARA8otaACAABEDyi9sAIAAEiBxEgDAABbX15BXEFd'
155
+ b'QV5BX13DQbcBSIuN0AAAAOnC/P//QLcB6Zv9//+J2PfYg+APRTH2TDnwD4S/6f//'
156
+ b'QoA8MwAPhEfq//9J/8br51VBV0FWQVVBVFZXU0iD7DhIjWwkMEiJ1kiJz0iLQQhM'
157
+ b'i3EQSTnGdghIix/pyQAAAGr/W02J9UyJ6UjR6UiDwUBJAc1MD0LrSTnFdupMiz9N'
158
+ b'hfZ0RE2F7Q+YRQB4O0uNFDZOjSRtAAAAAEyJ+U2J4OgOBgAASIXAdB9MielID7rx'
159
+ b'P02F5EkPRMxIuqqqqqqqqqqqSA9EwusEMcAxyUiFwHQMSIkHSIlPEEiJw+tMTYXt'
160
+ b'D5hF+HhpTInqTAHqdBBFMcDo/gMAAEiJw0iFwHRRSIsXTItHCE0BwEiJ2ehwBgAA'
161
+ b'SI0NkQcAAEyJ+k2J8OiaAAAASIkfTIlvEEiLRwhIjUgBSIlPCA+3DmaJDEMxwEiD'
162
+ b'xDhbX15BXEFdQV5BX13DZrgBAOvpVUiJ5UiLEUyLQRBIjQ1BBwAAXelPAAAAVUiJ'
163
+ b'5UiLEUyLQRBIjQ0pBwAAXen7AAAAVUiD7DBIjWwkMEiNBNUAAAAASIXAdBlIhdJI'
164
+ b'uKqqqqqqqqqqSA9EyEiJyuiZBQAAkEiDxDBdw1VIg+wwSI1sJDBMicBNAcB0K0iF'
165
+ b'wEiLAUyLUQhIuaqqqqqqqqqqSA9E0UiLTQhIiUwkIEiJwUUxyUH/UhiQSIPEMF3D'
166
+ b'VVZIg+w4SI1sJDBIic5IiwpIi0IITInCSMHqPQ+VRQB0DA8QBW8GAAAPEQbrSEnB'
167
+ b'4ANNhcB0HEyJwkGwA/8QSIXAdRtmg2X8AINl+ABmuQEA6w5mg2X8AINl+ABq+Fgx'
168
+ b'yUiJBmaJTgiLRfiJRgoPt0X8ZolGDkiJ8EiDxDheXcNVSIPsMEiNbCQwTInATo0E'
169
+ b'xQAAAABNhcB0K0iFwEiLAUyLUQhIuaqqqqqqqqqqSA9E0UiLTQhIiUwkIEiJwUGx'
170
+ b'A0H/UhiQSIPEMF3DVVZXU0iD7EhIjWwkQEiJ1g8QAQ8pRfBNhcl0dU2FwHRsTInP'
171
+ b'TInISMHoPQ+VwA+VRQCEwHVXScHgA0iNHP0AAAAASItN8EiLRfhIi1UoSIlUJChI'
172
+ b'iVwkIEiJ8kGxA/9QEEiFwHQnSInGSLj/////////H0ghx0iF20i4qqqqqqqqqqpI'
173
+ b'D0TwSA9E++sSMfbrDEiNTfBIifLoF////zH/SInwSIn6SIPESFtfXl3DVVZXU0iD'
174
+ b'7HhIjWwkcEyJx0iJzg8QAkiNVeAPKQJMi00oSI1d+EiJ2ehZ/v//D7dLCGaFyXUu'
175
+ b'SI1FsGaDYBAASItN+EiJCEiJeAhIi0gQSIlOEA8QAA8RBkiJ8EiDxHhbX15dw0iN'
176
+ b'RchmiUgQ69xVQVdBVkFUVldTSIPsMEiNbCQwSInOTYXAdBNIidOAOl90C0yJx0KA'
177
+ b'fAP/X3UYxwYDAAAASInwSIPEMFtfXkFcQV5BX13DRTH/TI11+kUx5Ew553RIQooU'
178
+ b'I4D6X3Q6TInx6E0AAAAPt0X6ZoXAdT+KRfxFhP90EEGA/xAPk0X/cyZBwOcE6wNF'
179
+ b'Mf9BAMcPksAPkkX+hMB1D0n/xOuzZoMmAESIfgLrjWbHBgIA64ZmiQbrgVVIieVI'
180
+ b'iciNStCA+QpyKUSNQr+xyUGA+BpyDESNQp+xqUGA+BpzCQDKidGA+g92CMcAAwAA'
181
+ b'AOsHZoMgAIhIAl3DVUiJ5UiLEUyLQQhIjQ26AwAAXemM/f//VUFXQVZWV1NIg+x4'
182
+ b'SI1sJHBBgOA/RIhFB0iB+v7v//92BzH/6Z8AAABIidaKTQdqAVtI0+NIjVX4SIMi'
183
+ b'AEyNTfBJiTHHRCQoBAAAAMdEJCAAMAAAav9ZRTHA6E0CAACFwHUnSIt9+EiNQ/9I'
184
+ b'hfh0WEyNRehJgyAAav9ZSI1V+EG5AIAAAOgyAgAATI00HkiNVfhIgyIAScfHAPD/'
185
+ b'/00B/kyNTfBNiTHHRCQoAQAAAMdEJCAAIAQAMf9q/1lFMcDo6AEAAIXAdBBIifhI'
186
+ b'g8R4W19eQV5BX13DSIHG/w8AAEwh/kiLffhIjQQ7SP/ISPfbSCHDSInYSCn4dBxI'
187
+ b'jVXgSIk6TI1F2EmJAGr/WUG5AIQAAOilAQAASI0EM0kB/kkpxnQcSI1V0EiJAkyN'
188
+ b'RchNiTBq/1lBuQCEAADofQEAAEiNVfhIiRpMjU3wSYkxx0QkKAQAAADHRCQgABQA'
189
+ b'AGr/WUUxwOhEAQAAhcB0IUiNVfhIiRpMjUXwSYkwav9ZQbkAgAAA6DQBAADplf7/'
190
+ b'/0iLffjpMv///1VIg+wgSI1sJCBMicBIidFMi0UwSInC6AwAAABIhcAPlcBIg8Qg'
191
+ b'XcNVVkiD7EhIjWwkQEiJzkk50HYjuP8PAABJAcBIx8EA8P//SSHISAHCSCHKMcBJ'
192
+ b'OdBID0fw60VIAfJKjQwGSIHB/w8AAEiB4QDw//9IKcp2K0iJ6EiJCEyNTfhJiRHH'
193
+ b'RCQoAQAAAMdEJCAAAAgAav9ZSInCRTHA6HMAAABIifBIg8RIXl3DVUiJ5UyJwEiJ'
194
+ b'0UyLRTBIicJd6WT///9VSIPsMEiNbCQwSI1F+EiJEEyNRfBJgyAAav9ZSInCQbkA'
195
+ b'gAAA6DgAAACQSIPEMF3DzFVIieVIicgxyUk5yHQNRIoMCkSIDAhI/8Hr7l3DzMzM'
196
+ b'/yUyFQAAzMzMzMzMzMzMzP8lKhUAAMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM'
197
+ b'Dw8PDw8PDw8PDw8PDw8PDwABAgMEBQYHCAkKCwwNDg8gICAgICAgICAgICAgICAg'
198
+ b'ICAgICAgICAAAAAAAAAAAAcABwAHAAcABwAHAAcABwAAAAEAAgADAAQABQAGAAcA'
199
+ b'JC0AgAEAAAC6LgCAAQAAAGcvAIABAAAAfi8AgAEAAACqqqqqqqqqqgAAAAAAAAAA'
200
+ b'AAAAAAAAAAA/PwAAAAAAAKqqqqqqqqqqAAAAAAAAAAAAAAAAAAAAAPj/////////'
201
+ b'AAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAABgMACAAQAAAAAAAAAAAAAA'
202
+ b'AAAAAAAAAAAAAAAAAAAAgP9//3//f/9//3//f/9//38AgACAAIAAgACAAIAAgACA'
203
+ b'AHwAAAAAAAAAAAAAAAAAAP///3////9/////f////38AAACAAAAAgAAAAIAAAACA'
204
+ b'AACAfwAAgH8AAIB/AACAf/////////9//////////38AAAAAAAAAgAAAAAAAAACA'
205
+ b'AAAAAAAA8H8AAAAAAADwfwAAAAAAAAAAAAAAAAAAAID///////////////////9/'
206
+ b'AAAAAAAAAAAAAAAAAAD/fwAAgP8AAIB/AAAAXwAAAF8AAAAAAADgQwAAAF8AfAB8'
207
+ b'AHwAAAAAAAAAAAAAAAAAAAAAMEMAADBFAAAAAAAAAAAAAAAAAAAwQwAAAAAAADBF'
208
+ b'AAAAAAAAgF8AAAAAAAAAAP9//3//f/9//3//f/9//3////9/////f////3////9/'
209
+ b'/////////3//////////f////////////////////3//f/9//3//f/9//3//f/9/'
210
+ b'AAAAgAAAAIAAAACAAAAAgAAAgP8AAID/AACA/wAAgP//////////f/////////9/'
211
+ b'////////////////////f/9//3//f/9//3//f/9//3////9/////f////3////9/'
212
+ b'/////////3//////////f////////////////////3//f/9//3//f/9//3//f/9/'
213
+ b'////f////3////9/////fwAAwH8AAAAAAAAAAAAA+H////////////////////9/'
214
+ b'AAAAAAAAAAAAAAAAAID/fwAAwH8AAAAAAAAAAAAAAAAAgACAAIAAgACAAIAAgACA'
215
+ b'/3//f/9//3//f/9//3//fwAAAIAAAACAAAAAgAAAAID///9/////f////3////9/'
216
+ b'AADAfwAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAD4fwAAAAAAAAAA'
217
+ b'AAAAAAAAAAAAAAAAAAAAgP///////////////////38AAAAAAAAAAAAAAAAAgP9/'
218
+ b'AH4AAAAAwH8AAAAAAAD4fwAAAAAAAAAAAAAAAACA/38AAMB/AAAAAAAAAAAAAPh/'
219
+ b'AADAfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA/38AgACAAIAAgACAAIAAgACA'
220
+ b'AAAAgAAAAIAAAACAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAACA'
221
+ b'ADwAAAAAgD8AAIA/AAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8/'
222
+ b'/3//f/9//3//f/9//3//fwCAAIAAgACAAIAAgACAAIAAfAB8AHwAfAAAAAAAAAAA'
223
+ b'AACAfwAAAAAAAAAAAAAAAP///3////9/////f////38AAIB/AACAfwAAgH8AAIB/'
224
+ b'////f////38AAAAAAAAAAAAAgH8AAIB/AAAAAAAAAAAAAIA/AACAPwAAAAAAAAAA'
225
+ b'AAAAgAAAAIAAAACAAAAAgAAAgD8AAAAAAAAAAAAAAAAAAIB/AACAfwAAAAAAAAAA'
226
+ b'/////////3//////////fwAAAAAAAPB/AAAAAAAA8H8AAAAAAADwPwAAAAAAAPA/'
227
+ b'AAAAAAAAAIAAAAAAAAAAgAAAAAAAAPA/AACAfwAAAAAAAAAAAAAAAAAAAAAAAP8/'
228
+ b'AAAAAAAAAAAAAAAAAAAAgP///////////////////38AAAAAAAAAAAAAAAAAAP9/'
229
+ b'/3//f/9//3//f/9//3//fwCAAIAAgACAAIAAgACAAIAAfAAAAACAfwAAAAAAAAAA'
230
+ b'////f////3////9/////fwAAAIAAAACAAAAAgAAAAIAAAIB/AACAfwAAgH8AAIB/'
231
+ b'////f////38AAAAAAAAAAAAAgH8AAIB/AAAAAAAAAAAAAIA/AACAPwAAAAAAAAAA'
232
+ b'AACAPwAAgH8AAAAAAAAAAP////////9//////////38AAAAAAAAAgAAAAAAAAACA'
233
+ b'AAAAAAAA8H8AAAAAAADwfwAAAAAAAPA/AAAAAAAA8D8AAID/AACAfwAAAAAAAAAA'
234
+ b'////////////////////fwAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAP9/'
235
+ b'AAAAAAAAAAAAAAAAAAD/PwAAgHsAAACAAACAPwAAAAAAAAAAAAAwwwAAAAAAADBD'
236
+ b'AAAAAAAA8D8AAAAAAAAAgAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAG9A'
237
+ b'AAAAAAAAAAAAAAAAAAD/PwAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAP8/'
238
+ b'AAAAgAAAAIAAAACAAAAAgAAAAAAAAACAAAAAAAAAAIDSITN/fNkSwBgtRFT7IRlA'
239
+ b'GC1EVPshGcAYLURU+yH5PxgtRFT7IQlAGC1EVPshCcAAAIB7AACAP2lQ7uBCk/k+'
240
+ b'Jx4P6IfAVr+BXgz9///fvwAAAAAAAPA/QjoF4VNVpT+nRjuMh83GPrL7bokQEYE/'
241
+ b'dOfK4vkAKr93rMtUVVXFvwAAAAAAAACAAAAAAAAAAICDyMltMF/kPwAAAAAAADhD'
242
+ b'AAAAAAAAOMMAAABQ+yH5v2NiGmG0EFG+AAAAYPsh6b8AAABg+yHpPwAAAAAAAPA/'
243
+ b'AAAAAAAA8L8AAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAABwRwAAAAAAAPA/'
244
+ b'kBXLGaAB+j53UcEWbMFWv0xVVVVVVaU/1DiIvun6qL3EsbS9nu4hPq1SnIBPfpK+'
245
+ b'AAAAAAAA4D8AAAAAAADwPwAAAAAAAHBBAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACA'
246
+ b'AABAVPshGcAxY2IaYbTwvQAAQFT7IRlAMWNiGmG08D0AADB/fNkSwMqUk6eRDum9'
247
+ b'AAAwf3zZEkDKlJOnkQ7pPQAAQFT7IQnAMWNiGmG04L0AAEBU+yEJQDFjYhphtOA9'
248
+ b'AABAVPsh+b8xY2IaYbTQvQAAQFT7Ifk/MWNiGmG00D19/rFX4x3HPtVhwRmgASq/'
249
+ b'pvgQERERgT981c9aOtnlPeucK4rm5Vq+AAAAAAAA4D9JVVVVVVXFP0lVVVVVVcW/'
250
+ b'AAAAAAAAcD4AAAAAAABwwQAAAAAAAMA/AAAAAAAAIMAAAAAAAADgPwAAAAAAAPA/'
251
+ b'AAAAAAAAcEEAAAAAAAAAAAAAAAAAAACAAAAAAAAAAICDyMltMF/kPwAAAAAAADhD'
252
+ b'AAAAAAAAOMMAAEBU+yH5vzFjYhphtNA9GC1EVPsh6b8YLURU+yHpPwAAAAAAAPA/'
253
+ b'AAAAAAAA8L8AAGAaYbTQPXNwAy6KGaM7AAAALooZozvBSSAlmoN7OQAAAH8AAIA/'
254
+ b'AQAAgDuquD8AcjG/jr6/NRVSNbuPqio+AAAAQAAAAAAAAAAAAADwPwAAAAAAAPB/'
255
+ b'7zn6/kIuhkDSvHrdKyOGwFEwLdUQSYfA/oIrZUcV9z8AAOD+Qi7mv3Y8eTXvOeo9'
256
+ b'0KS+cmk3Zj7xa9LFQb27vizeJa9qVhE/k72+FmzBZr8+VVVVVVXFPwAAAAAAAABA'
257
+ b'AACAPwEAAIAAAEBJAABAyQAAAAC+v84/AAAAwMmygz8AAAAAQy7mPwAAAIA0a6w/'
258
+ b'AAAAfwAAAAAAAAAAAAD4fwAAAAAAAPA/AAAAAAAA8H8AAAAAAMyQwAAAAAAAADDD'
259
+ b'AAAAAAAAMEMAAAAAAACgtgAAAAAAALhCAAAAAAAAuMJ0XIcDgNhVPwAE94irsoM/'
260
+ b'pqAE1whrrD91xYL/vb/OP+85+v5CLuY/AAAAAAAA8L//f/9//3//f/9//3//f/9/'
261
+ b'////f////3////9/////f/////////9//////////3////////////////////9/'
262
+ b'AACAfwAAgHsAAIC/AAAAAAAAAAAAADDDAAAAAAAAMEMAAAAAAADwvwAAAAAAAAAA'
263
+ b'AAAAAAAAAAAAAAAAAABvQAAAAAAAAAAAAAAAAAAA/z8AAAAAAAAAAAAAAAAAAP+/'
264
+ b'AAAAAAAAAIAAAAAAAAAAgAAAAAAAABAAAAAAAAAAEAAAAAACAACgQQAAAAIAAKBB'
265
+ b'AAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAQAAAAAAAACAAAAAAAAAADhA'
266
+ b'////////////////////fwAAAAAAAAAAAAAAAAAAd0AAAAAAAAAAAAAAAAAAAIc/'
267
+ b'AADAfwAAgP8AAABMAACAvwAAAEAAAAAAAAAAAAAAAADu6ZE+Jp54PgAAAAAAAAAA'
268
+ b'qqoqPxPOzD4AAAAAAAAAAAAAAD/R9xc3gHExPwAAAAAAAAAAAAD4fwAAAAAAAPD/'
269
+ b'AAAAAAAAUEMAAAAAAADwvwAAAAAAAOA/AAAAAAAAAEBEUj7fEvHCP94Dy5ZkRsc/'
270
+ b'n8Z40Amawz8AAAAAAAAAAK94jh3Fccw/WZMilCRJ0j8E+peZmZnZP5NVVVVVVeU/'
271
+ b'djx5Ne856j0AAOD+Qi7mPwAAwH8AAID/AAAATAAAgL8AAABAAAAAAAAAAAAAAAAA'
272
+ b'7umRPiaeeD4AAAAAAAAAAKqqKj8Tzsw+AAAAAAAAAAAAAAA/APD//9snVDXZ6gS4'
273
+ b'AGDePoAgmj4AAAAAAAAAAAAAAAAAAPh/AAAAAAAA8P8AAAAAAABQQwAAAAAAAPC/'
274
+ b'AAAAAAAA4D8AAAAAAAAAQERSPt8S8cI/3gPLlmRGxz+fxnjQCZrDPwAAAAAAAAAA'
275
+ b'r3iOHcVxzD9ZkyKUJEnSPwT6l5mZmdk/k1VVVVVV5T8AAAAA/////wAAIBV7y9s/'
276
+ b'AGCfUBNE0z82K/ER8/5ZPdWtmso4lLs9AAAAAAAAAAAAAMB/AACA/wAAAEwAAIC/'
277
+ b'AAAAQAAAAAAAAAAAAAAAAO7pkT4mnng+AAAAAAAAAACqqio/E87MPgAAAAAAAAAA'
278
+ b'AAAAPwDw///Umji5ALC4PwAAAAAAAPh/AAAAAAAA8P8AAAAAAABQQwAAAAAAAPC/'
279
+ b'AAAAAAAA4D8AAAAAAAAAQERSPt8S8cI/3gPLlmRGxz+fxnjQCZrDPwAAAAAAAAAA'
280
+ b'r3iOHcVxzD9ZkyKUJEnSPwT6l5mZmdk/k1VVVVVV5T8AAAAA/////wAAIGVHFfc/'
281
+ b'AAAgZUcV9z8Aou8u/AXnPf///3////9/////f////38AAABLAAAAywAAAD8AAAC/'
282
+ b'AACAPwAAgL8AAAAAAAAAAAAAAIAAAACAAAAAgAAAAID/////////f/////////9/'
283
+ b'AAAAAAAAMEMAAAAAAAAwwwAAAAAAAOA/AAAAAAAA4L8AAAAAAADwPwAAAAAAAPC/'
284
+ b'AAAAAAAAAIAAAAAAAAAAgP///////////////////38AAAAAAAAAAAAAAAAAAG9A'
285
+ b'AAAAAAAAAAAAAAAAAAD+PwAAAAAAAAAAAAAAAAAA/r8AAAAAAAAAAAAAAAAAAP8/'
286
+ b'AAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAgAAAAAAAAACA'
287
+ b'GC1EVPshGUAYLURU+yEZwNIhM3982RJA0iEzf3zZEsAYLURU+yEJQBgtRFT7IQnA'
288
+ b'GC1EVPsh+T8YLURU+yH5vwAAgHsAAIADAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACA'
289
+ b'AAAAAAAAcEcAAAAAAABwOAAAAIAAAACAAAAAgAAAAIAYLURU+yEZQBgtRFT7IRnA'
290
+ b'0iEzf3zZEkDSITN/fNkSwBgtRFT7IQlAGC1EVPshCcAYLURU+yH5PwAAgHsAAIAD'
291
+ b'AACAPwAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAABwRwAAAAAAAHA4'
292
+ b'AAAAAAAA8D8AAMB/AAAAAAAAAAAAAPh/GC1EVPshGUAYLURU+yEZwNIhM3982RJA'
293
+ b'0iEzf3zZEsAYLURU+yEJQBgtRFT7IQnAGC1EVPsh+T8YLURU+yH5vwAAgHsAAIAD'
294
+ b'zjOMkPMdmT/NG5e/uWKDP/5ahh3JVKs/TvTs/K1daD9yn5k4/RLBP5/JGDRNVdU/'
295
+ b'AAAAAAAA8L8AAAAAAABwRwAAAAAAAHA4AAAAAAAAAAAAAAAAAAAAgAAAAAAAAACA'
296
+ b'/////////3//////////fxgtRFT7Iek/B1wUMyamgTxzU2Dby3XzvqaSN6CIfhQ/'
297
+ b'AWXy8thEQz8oA1bJIm1tPzfWBoT0ZJY/ev4QERERwT/Uer90cCr7Pumn8DIPuBI/'
298
+ b'aBCNGvcmMD8Vg+D+yNtXP5OEbunjJoI//kGzG7qhqz9jVVVVVVXVPwAAAAAAAPC/'
299
+ b'AAAAAP////8AAAAA/////wAAAAAAAPA/AACAewAAAAAAAAAAAABwRwAAAAAAAAAA'
300
+ b'AAAAAAAAAAAAAAAAAAB3QA8PDw8PDw8PDw8PDw8PDw8AAQIDBAUGBwgJCgsMDQ4P'
301
+ b'AIAAgAEAAAAIgACAAQAAAABgAIABAAAAsEMAgAEAAAAAAAAAAABAAAAAAAAAAAAA'
302
+ b'AAAAAAAAAAD//////////wAAAAAAAAAA//////////8AAAAAAAAAAAAAAAAAAAAA'
303
+ b'AAAAAABEAAABAAAACQAAAAkAAAAMRAAAMEQAAFREAABzaW1ka21wLmRsbAAAEAAA'
304
+ b'qEMAALBDAAAIgAAAAGAAAACAAACAQwAADC0AAO4QAABmRAAAeUQAAIBEAACHRAAA'
305
+ b'kEQAAJtEAACmRAAAsEQAALxEAAAAAAEAAgADAAQABQAGAAcACABfRGxsTWFpbkNS'
306
+ b'VFN0YXJ0dXAAX194bF9hAF9feGxfegBfdGxzX2VuZABfdGxzX2luZGV4AF90bHNf'
307
+ b'c3RhcnQAX3Rsc191c2VkAGZyZWVTY2FuQU9CAHNjYW5BT0IA8EQAAAAAAAAAAAAA'
308
+ b'UEUAAAhFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgRQAAAAAAADpFAAAAAAAA'
309
+ b'AAAAAAAAAAAgRQAAAAAAADpFAAAAAAAAAAAAAAAAAAAAAE50QWxsb2NhdGVWaXJ0'
310
+ b'dWFsTWVtb3J5AAAATnRGcmVlVmlydHVhbE1lbW9yeQBudGRsbC5kbGwAAAABBAIF'
311
+ b'BAMBUAEVClUVAxCiDDALcApgCcAH0AXgA/ABUAFtH4VtaCoAZngrAF+ILABXmC0A'
312
+ b'T6guAEe4LwA/yDAANtgxAC3oMgAk+DMAGwMTAWkADDALcApgCcAH0AXgA/ABUAAA'
313
+ b'ARUKNRUDEGIMMAtwCmAJwAfQBeAD8AFQAQQCBQQDAVABBAIFBAMBUAEKAzUKAwVS'
314
+ b'AVAAAAEKAzUKAwVSAVAAAAELBDULAwZiAmABUAEKAzUKAwVSAVAAAAENBkUNAwiC'
315
+ b'BDADcAJgAVABDQZ1DQMI4gQwA3ACYAFQARMJNRMDDlIKMAlwCGAHwAXgA/ABUAAA'
316
+ b'AQQCBQQDAVABBAIFBAMBUAERCHURAwziCDAHcAZgBeAD8AFQAQoDJQoDBTIBUAAA'
317
+ b'AQsERQsDBoICYAFQAQQCBQQDAVABCgM1CgMFUgFQAAABBAIFBAMBUAAAAAAAAAAA'
318
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
319
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
320
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
321
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
322
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
323
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
324
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
325
+ b'AAAAAOij0i8AAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
326
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
327
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
328
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
329
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
330
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
331
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
332
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
333
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
334
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
335
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAA'
336
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
337
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
338
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
339
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
340
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
341
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
342
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
343
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
344
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
345
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
346
+ b'AAAAAAAAAAAAAAAAAAAAAAAQAAAJEAAAXEUAAAkQAADuEAAAZEUAAO4QAABgKAAA'
347
+ b'fEUAAGAoAACFKQAAwEUAAIUpAACdKQAA2EUAAJ0pAAC1KQAA4EUAALUpAADsKQAA'
348
+ b'6EUAAOwpAAAwKgAA9EUAADAqAACwKgAAAEYAALAqAAD8KgAADEYAAPwqAACqKwAA'
349
+ b'GEYAAKorAAAYLAAAKEYAABgsAADLLAAAOEYAAMssAAAMLQAAUEYAAAwtAAAkLQAA'
350
+ b'WEYAACQtAAC6LgAAYEYAALouAADiLgAAdEYAAOIuAABnLwAAgEYAAGcvAAB+LwAA'
351
+ b'jEYAAH4vAACvLwAAlEYAALAvAADNLwAAoEYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
352
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
353
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
354
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
355
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
356
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
357
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
358
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
359
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
360
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
361
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
362
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
363
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
364
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
365
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
366
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
367
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAFAAAAGCgaKBwoHig'
368
+ b'4KAAAABAAAAQAAAAgKOIo5CjmKMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
369
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
370
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
371
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
372
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
373
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
374
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
375
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
376
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
377
+ b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
378
+ b'AAAAAAAAAAAAAAAAAAAAAA=='
379
+ )
@@ -1,10 +1,3 @@
1
- # +-------------------------------------+
2
- # | ~ Author : Xenely ~ |
3
- # +=====================================+
4
- # | GitHub: https://github.com/Xenely14 |
5
- # | Discord: xenely |
6
- # +-------------------------------------+
7
-
8
1
  import typing
9
2
 
10
3