Guest User

Untitled

a guest
Jan 8th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 206.63 KB | None | 0 0
  1. ;Thanks [@ProAndy] [Trancexx] autoitscript.com
  2. ;Thanks [ozmike - Json Obj] autoitscript.com
  3. #AutoIt3Wrapper_UseX64=n
  4. #AutoIt3Wrapper_Run_AU3Check=n
  5. #Version=13
  6. #include-once
  7. #include <Array.au3>
  8. #include <Crypt.au3>
  9. ;#include <WinHttp.au3>
  10.  
  11. #cs Bao gồm các hàm chính
  12. _HttpRequest ...................................
  13. _HttpRequest_Test ............................Ghi giá trị trả về ra 1 file
  14. _HttpRequest_CreateDataForm ..........Tạo nhanh biểu mẫu Data2Send đơn giản cho việc Upload
  15. _HttpRequest_ErrorNotify ...................Bật tắt thông báo lỗi ở Console
  16. _HttpRequest_SetAuthorization ..........Thực hiện Authorization
  17. _HttpRequest_SetProxy .....................Cài đặt Proxy cho Request
  18. _HttpRequest_SetGlobalCookie ...........Enable/Disable chế độ ghi nhớ Cookies đã thêm bằng tay
  19. _HttpRequest_SetTimeout .................Cài đặt timeout cho request
  20. _HttpRequest_SetHotkeyStopRequest ..Cài đặt HotKey để dừng request (khi download/upload các tập tin)
  21. _HttpRequest_SetUserAgent ..............Thay đổi UserAgent mặc định
  22. _HttpRequest_QueryHeaders ..............Lấy các thông tin từ Response Header
  23. _HttpRequest_SearchHiddenValues .....Tìm các giá trị Hidden trong source HTML
  24. _HttpRequest_FileSplitSize .................Chia kích thước của file cần tải thành nhiều khoảng Bytes (Content-Length phải <> 0)
  25. _HttpRequest_BypassCloudflare ..........Vượt kiểm tra của Cloudflare
  26. _BoundaryGenerator .........................Tạo chuỗi Boundary khi Upload
  27. _Data2SendEncode ...........................Encode nhanh Data2Send
  28. _URIEncode ......................................Mã hoá chuỗi URL hoặc dữ liệu trong DataToSend
  29. _URIDecode ......................................Giải mã chuỗi URL hoặc dữ liệu trong DataToSend
  30. _HTMLEncode ...................................Mã hoá js trong source về dạng như \u2A21, \x2121, &#x1234; ... Mặc định của Escape Character là \u
  31. _HTMLDecode ...................................Giải mã js trong source có những dạng như \u2A21, \x2121, &#x1234; ... Mặc định của Escape Character là \u
  32. _GetCookie .......................................Tách lấy Cookie từ Response Header
  33. _GetLocationRedirect .........................Tách Location từ Response Header
  34. _GetLocationRedirectEx ......................Tách Location từ Response Header
  35. _GetFileInfo ......................................Trả về mảng gồm: [0] Tên file, [1] Kiểu của file (Content-Type), [2] Data của file. Dùng khi Upload.
  36. _GetHttpTime ....................................Lấy giờ chuẩn Http
  37. _GetMD5 ...........................................Mã hoá MD5 nột chuỗi hoặc tập tin
  38. _GetHMAC ........................................Mã hoá HMAC Hash - Thường các Rest API yêu cầu để Authorize
  39. _B64Encode ......................................Mã hoá Base64 đơn giản
  40. _B64Decode ......................................Giải mã Base64 đơn giản
  41. _TimeStampUNIX ..............................Tạo đóng dấu Timetamp theo giờ hệ thống
  42. -------------------------------------------------------------------------------------------------------------
  43. _HttpRequest_SetSession ...................Cài đặt Session cho Request
  44. _HttpRequest_ClearSession ................Xoá tất cả Cookies và Handles mà 1 Session đã sử dụng
  45. _HttpRequest_GetSessionList ..............Lấy danh sách Session đang tồn tại
  46. #ce
  47.  
  48.  
  49. #cs Các hàm đang test Beta
  50. _JSON_Object_Init ............................JSON Object
  51. _JS_Execute .....................................Chạy code Javascript
  52. _JS_ToStringAu3 ..............................Chuyển nhanh code JS sang dạng string để gán biến trong code AutoIt
  53. _JS_Beauty .......................................Làm đẹp lại code JS
  54. _PHP_Execute ...................................Chạy code PHP
  55. #ce
  56.  
  57.  
  58. #cs Note
  59. *** WINHTTP_STATUS_CALLBACK https://msdn.microsoft.com/en-us/library/windows/desktop/aa383917(v=vs.85).aspx
  60. *** WINHTTP_DISABLE_REDIRECTS: Automatic redirection is disabled when sending requests with WinHttpSendRequest. If automatic redirection is disabled, an application must register a callback function in order for Passport authentication to succeed.
  61. *** Authentication in WinHTTP: https://msdn.microsoft.com/en-us/library/windows/desktop/aa383144(v=vs.85).aspx
  62. *** Http Range Header: https://stackoverflow.com/questions/3303029/http-range-header
  63. #ce
  64.  
  65. Global $g___WinHttp = 'winhttp.dll'
  66. Global $g___hOpen[100], $g___hConnect[100], $g___hCookie[100], $g___hRequest, $g___sSN = 0, $g___retData[2]
  67. Global $g___ftpOpen[100], $g___ftpConnect[100], $ftpProxyCheck = '', $ftpUACheck = '', $ftpURLCheck = ''
  68. ;------------------------------------------------------------------------------------
  69. Global $Z_Buffer, $Z_BufferMemory, $Z_BufferPtr, $Z_Alloc_Callback, $Z_Free_Callback
  70. Global $Z_InfInit, $Z_InfInit2, $Z_Inf, $Z_InfEnd, $Z_DefInit, $Z_DefInit2, $Z_Def, $Z_DefEnd, $Z_DefBound
  71. ;------------------------------------------------------------------------------------
  72. Global $g___OO_Json, $g___OO_LoadLibrary = '', $g___OO_JsonInit = 0
  73. ;------------------------------------------------------------------------------------
  74. Global Const $def___sChr64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
  75. Global Const $def___aChr64 = StringSplit($def___sChr64, "", 2)
  76. Global Const $def___sPadding = '='
  77. Global $g___sChr64 = $def___sChr64
  78. Global $g___aChr64 = $def___aChr64
  79. Global $g___sPadding = $def___sPadding
  80. ;------------------------------------------------------------------------------------
  81. Global Const $g___defUserAgentW = 'Mozilla/5.0 (Windows NT 6.1; rv:53.0) Gecko/20100101 Firefox/53.0'
  82. Global Const $g___defUserAgentA = 'Mozilla/5.0 (Linux; Android 6.0.1; SM-G900H Build/MMB29K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.36'
  83. ;-----------------------------------------------------------------------------------------
  84. Global $g___hStatusCallback = DllCallbackRegister("__HttpRequest_StatusCallback", "none", "handle;dword_ptr;dword;ptr;dword")
  85. Global $g___pStatusCallback = DllCallbackGetPtr($g___hStatusCallback)
  86. Global $g___oError = ObjEvent("AutoIt.Error", "___ObjectErrDetect")
  87. ;-----------------------------------------------------------------------------------------
  88. Global $g___Proxy = '', $g___ProxyBypass = '', $g___ProxyUserName, $g___ProxyPassword
  89. Global $g___sUserName = '', $g___sPassword = '', $g___Credential = 0
  90. Global $g___HeadersRedirect = '', $g___LocationRedirect = ''
  91. Global $g___UserAgent = $g___defUserAgentW
  92. Global $g___CancelReadWrite = True
  93. Global $g___BytesPerLoop = 8192
  94. Global $g___GlobalCookie = True
  95. Global $g___ErrorNotify = True
  96. Global $g___HotkeySet = ''
  97. Global $g___Boundary = ''
  98. Global $g___ServerIP = ''
  99. Global $g___URLCheck = ''
  100. Global $g___TimeOut = ''
  101. Global $g___OldFunc = ''
  102. Global $g___aChrEnt = ''
  103. Global $g___oDicEntity
  104. ;-----------------------------------------------------------------------------------------
  105. ;~ If Not @Compiled and @OSVersion = 'WIN_10' Then
  106. ;~ Local $pathWH = StringTrimRight(@AutoItExe, 11) & 'winhttp.dll'
  107. ;~ If Not FileExists($pathWH) Then
  108. ;~ InetGet('http://posttestserver.com/files/2017/09/30/f_12.16.03444506166', $pathWH, 8)
  109. ;~ If Not @error Then $g___WinHttp = $pathWH
  110. ;~ Else
  111. ;~ $g___WinHttp = $pathWH
  112. ;~ EndIf
  113. ;~ EndIf
  114. ;-----------------------------------------------------------------------------------------
  115. Global $dll_WinHttp = DllOpen($g___WinHttp)
  116. DllOpen($g___WinHttp)
  117. Global $dll_User32 = DllOpen('user32.dll')
  118. DllOpen('user32.dll')
  119. Global $dll_WinInet
  120. OnAutoItExitRegister('__HttpRequest_CloseAll')
  121. __HttpRequest_CancelReadWrite()
  122.  
  123.  
  124.  
  125.  
  126. Func _HttpRequest($iReturn, $sURL, $sData2Send = '', $sCookie = '', $sReferer = '', $sAdditional_Headers = '', $sOVerb = '', $CallBackFunc_Progress = '')
  127. If $g___hRequest Then $g___hRequest = _WinHttpCloseHandle2($g___hRequest)
  128. Local $iError = 0, $vContentType = '', $vAcceptType = '', $vUserAgent = ''
  129. $g___HeadersRedirect = ''
  130. $g___LocationRedirect = ''
  131. $g___retData[0] = ''
  132. $g___retData[1] = ''
  133. $g___ServerIP = ''
  134. ;-------------------------------------------------
  135. Local $aURL = __HttpRequest_URLSplit($sURL)
  136. If @error Then Return SetError(1)
  137. ;-------------------------------------------------
  138. Local $aRetMode = __HttpRequest_iReturnSplit($iReturn)
  139. If @error Then Return SetError(2)
  140. ;-------------------------------------------------
  141. If $aURL[0] = 3 Then Return _FtpRequest($aRetMode, $aURL, $sData2Send, $CallBackFunc_Progress)
  142. ;-------------------------------------------------
  143. If $sCookie = -1 Then _HttpRequest_ClearSession($aRetMode[8])
  144. ;-------------------------------------------------
  145. If Not $g___hOpen[$aRetMode[8]] Then
  146. $g___hOpen[$aRetMode[8]] = _WinHttpOpen2()
  147. _WinHttpSetOption2($g___hOpen[$aRetMode[8]], 84, 0xA80) ;OPTION_SECURE_PROTOCOLS = 0xA80 (TSL), 0xA8 (SSL + TSL1.0)
  148. _WinHttpSetOption2($g___hOpen[$aRetMode[8]], 31, 0x3300) ;OPTION_SECURITY_FLAGS = SECURITY_FLAG_IGNORE_ALL
  149. _WinHttpSetOption2($g___hOpen[$aRetMode[8]], 88, 2) ;OPTION_REDIRECT_POLICY = REDIRECT_POLICY_ALWAYS
  150. _WinHttpSetOption2($g___hOpen[$aRetMode[8]], 118, 3) ;OPTION_DECOMPRESSION = DECOMPRESSION_FLAG_ALL
  151. _WinHttpSetOption2($g___hOpen[$aRetMode[8]], 77, 1) ;OPTION_AUTOLOGON_POLICY = SECURITY_LEVEL_LOW
  152. ;_WinHttpSetOption2($g___hOpen[$aRetMode[8]], 79, 0) ;OPTION_ENABLE_FEATURE = _SSL_REVOCATION
  153. ;_WinHttpSetOption2($g___hOpen[$aRetMode[8]], 47, 0, 0) ;OPTION_CLIENT_CERT_CONTEXT= NO_CERT
  154. EndIf
  155. ;-------------------------------------------------
  156. If Not $g___hConnect[$aRetMode[8]] Or ($aURL[2] & $aURL[1] <> $g___URLCheck) Then
  157. $g___URLCheck = $aURL[2] & $aURL[1]
  158. If $g___hConnect[$aRetMode[8]] Then $g___hConnect[$aRetMode[8]] = _WinHttpCloseHandle2($g___hConnect[$aRetMode[8]])
  159. $g___hConnect[$aRetMode[8]] = _WinHttpConnect2($g___hOpen[$aRetMode[8]], $aURL[2], $aURL[1], $aURL[0])
  160. EndIf
  161. ;-------------------------------------------------
  162. If IsArray($sData2Send) Then $sData2Send = _HttpRequest_CreateDataForm($sData2Send)
  163. ;-------------------------------------------------
  164. If $sOVerb == '' Then $sOVerb = ($sData2Send ? 'POST' : 'GET')
  165. ;-------------------------------------------------
  166. $g___hRequest = _WinHttpOpenRequest2($g___hConnect[$aRetMode[8]], $sOVerb, $aURL[3], ($aURL[0] - 1) * 0x800000)
  167. ;-------------------------------------------------
  168. _WinHttpSetStatusCallback2($g___hRequest, $g___pStatusCallback, 0x14002) ;0xFFFFFFFF
  169. ;-------------------------------------------------
  170. If $g___TimeOut Then _WinHttpSetTimeouts2($g___hRequest, $g___TimeOut, $g___TimeOut, $g___TimeOut)
  171. ;------------------------------------------------------------
  172. If $aRetMode[3] Then _WinHttpSetOption2($g___hRequest, 63, 2)
  173. ;-------------------------------------------------
  174. If $aRetMode[5] Then
  175. _WinHttpSetProxy2($g___hRequest, $aRetMode[5])
  176. If $aRetMode[6] Then _WinHttpSetOption2($g___hRequest, 0x1002, $aRetMode[6])
  177. If $aRetMode[7] Then _WinHttpSetOption2($g___hRequest, 0x1003, $aRetMode[7])
  178. ElseIf $g___Proxy Then
  179. _WinHttpSetProxy2($g___hRequest, $g___Proxy, $g___ProxyBypass)
  180. If $g___ProxyUserName Then _WinHttpSetOption2($g___hRequest, 0x1002, $g___ProxyUserName)
  181. If $g___ProxyPassword Then _WinHttpSetOption2($g___hRequest, 0x1003, $g___ProxyPassword)
  182. EndIf
  183. ;------------------------------------------------------------
  184. If $aURL[4] Or $aURL[5] Then
  185. If $aURL[6] Then
  186. _WinHttpSetCredentials2($g___hRequest, $aURL[4], $aURL[5], ($aRetMode[5] Or $g___Proxy) ? 1 : 0, $aURL[6])
  187. Else
  188. _WinHttpSetOption2($g___hRequest, 0x1000, $aURL[4])
  189. _WinHttpSetOption2($g___hRequest, 0x1001, $aURL[5])
  190. EndIf
  191. ElseIf $g___sUserName Or $g___sPassword Then
  192. If $g___Credential Then
  193. _WinHttpSetCredentials2($g___hRequest, $g___sUserName, $g___sPassword, ($aRetMode[5] Or $g___Proxy) ? 1 : 0, $g___Credential)
  194. Else
  195. _WinHttpSetOption2($g___hRequest, 0x1000, $g___sUserName)
  196. _WinHttpSetOption2($g___hRequest, 0x1001, $g___sPassword)
  197. EndIf
  198. EndIf
  199. ;-------------------------------------------------
  200. If $sAdditional_Headers Then
  201. Local $aAddition = StringRegExp($sAdditional_Headers, '(?i)\s*?([\w\-]+)\s*:\s*(.*?)(?:\||$)', 3)
  202. $sAdditional_Headers = ''
  203. For $i = 0 To UBound($aAddition) - 1 Step 2
  204. Switch $aAddition[$i]
  205. Case 'Accept'
  206. $vAcceptType = $aAddition[$i + 1]
  207. Case 'Content-Type'
  208. $vContentType = $aAddition[$i] & ': ' & $aAddition[$i + 1]
  209. Case 'Referer'
  210. If Not $sReferer Then $sReferer = $aAddition[$i + 1]
  211. Case 'Cookie'
  212. If Not $sCookie Then $sCookie = $aAddition[$i + 1]
  213. Case 'User-Agent'
  214. $vUserAgent = $aAddition[$i + 1]
  215. Case Else
  216. $sAdditional_Headers &= $aAddition[$i] & ': ' & $aAddition[$i + 1] & @CRLF
  217. EndSwitch
  218. Next
  219. EndIf
  220. ;-------------------------------------------------
  221. $sAdditional_Headers &= 'User-Agent: ' & ($vUserAgent ? $vUserAgent : $g___UserAgent) & @CRLF
  222. $sAdditional_Headers &= 'Accept: ' & ($vAcceptType ? $vAcceptType : '*/*') & @CRLF
  223. If $sReferer Then $sAdditional_Headers &= 'Referer: ' & $sReferer & @CRLF
  224. If $g___GlobalCookie Then
  225. If $sCookie Then $g___hCookie[$aRetMode[8]] &= $sCookie & '; '
  226. If $g___hCookie[$aRetMode[8]] Then $sAdditional_Headers &= 'Cookie: ' & $g___hCookie[$aRetMode[8]] & @CRLF
  227. Else
  228. If $sCookie Then $sAdditional_Headers &= 'Cookie: ' & $sCookie & @CRLF
  229. EndIf
  230. ;-------------------------------------------------
  231. If $sData2Send Then
  232. If Not $g___Boundary Then
  233. $g___Boundary = StringRegExp($sData2Send, '^(-{3,}\w+)\R', 1)
  234. If Not @error Then $g___Boundary = $g___Boundary[0]
  235. EndIf
  236. If $g___Boundary Then
  237. If Not $vContentType Then $vContentType = 'Content-Type: multipart/form-data'
  238. $vContentType &= '; boundary=' & StringTrimLeft($g___Boundary, 2)
  239. $g___Boundary = ''
  240. Else
  241. If Not $vContentType Then
  242. If StringRegExp($sData2Send, '^[\s\t]*?[\{\[][\s\t]*?[''"]?') Then
  243. $vContentType = 'Content-Type: application/json'
  244. $sData2Send = StringToBinary($sData2Send, 4)
  245. Else
  246. $vContentType = 'Content-Type: application/x-www-form-urlencoded'
  247. EndIf
  248. EndIf
  249. EndIf
  250. EndIf
  251. ;---------------------------------------------------------------------------------------------------
  252. If _WinHttpSendRequest2($g___hRequest, $sAdditional_Headers & $vContentType, $sData2Send, $CallBackFunc_Progress) = 0 Then
  253. Switch @error
  254. Case 999
  255. $iError = 999
  256. Case Else
  257. $iError = 3
  258. __HttpRequest_ErrNotify('_HttpRequest', 'Send Request Failed')
  259. EndSwitch
  260. If $aRetMode[0] = 8 Then $g___retData[0] = $g___ServerIP
  261. Else
  262. If _WinHttpReceiveResponse2($g___hRequest) Then
  263. Switch $aRetMode[0]
  264. Case 1, 4, 5
  265. $g___retData[0] = $g___HeadersRedirect & _WinHttpQueryHeaders2($g___hRequest, 22)
  266. If @error Then $iError = 4
  267. If $iError = 0 And $aRetMode[1] And $aRetMode[0] = 1 Then
  268. $g___retData[0] = _GetCookie()
  269. If @error Then $iError = 5
  270. EndIf
  271. Case 6 ;Status Code
  272. $g___retData[0] = _WinHttpQueryHeaders2($g___hRequest, 19)
  273. Case 7 ;Content-Length
  274. $g___retData[0] = _WinHttpQueryHeaders2($g___hRequest, 5)
  275. Case 8 ;Server IP
  276. $g___retData[0] = $g___ServerIP
  277. Case 9 ;DNS Name
  278. $g___retData[0] = _GetNameDNS()
  279. If Not $g___retData[0] Then ConsoleWrite('!==> Require HTTPS' & @CRLF)
  280. EndSwitch
  281. ;-----------------------------------------------------------------
  282. Switch $aRetMode[0]
  283. Case 2 To 5
  284. $g___retData[1] = _WinHttpReadData_Ex($g___hRequest, $CallBackFunc_Progress)
  285. If @error Then
  286. $iError = @error
  287. Else
  288. If $aRetMode[2] Or StringRegExp(BinaryMid($g___retData[1], 1, 1), '(?i)0x(1F|08|8B)') Then
  289. $g___retData[1] = __ZL_GZUncompress($g___retData[1])
  290. EndIf
  291. If $aRetMode[9] Then
  292. _HttpRequest_Test($g___retData[1], $aRetMode[9], $aRetMode[10], False)
  293. ElseIf Not $aRetMode[1] And($aRetMode[0] = 2 Or $aRetMode[0] = 4) Then
  294. $g___retData[1] = BinaryToString($g___retData[1], 4)
  295. EndIf
  296. EndIf
  297. EndSwitch
  298. Else
  299. __HttpRequest_ErrNotify('_HttpRequest', 'Did Not Receive Response from Server')
  300. If $aRetMode[0] = 8 Then $g___retData[0] = $g___ServerIP
  301. $iError = 6
  302. EndIf
  303. EndIf
  304. ;-------------------------------------------------
  305. Switch $aRetMode[0]
  306. Case 1, 6 To 9
  307. Return SetError($iError, __HttpRequest_ErrNotify('_HttpRequest', $iError), $g___retData[0])
  308. Case 2, 3
  309. Return SetError($iError, __HttpRequest_ErrNotify('_HttpRequest', $iError), $g___retData[1])
  310. Case 4, 5
  311. Return SetError($iError, __HttpRequest_ErrNotify('_HttpRequest', $iError), $g___retData)
  312. EndSwitch
  313. EndFunc
  314.  
  315.  
  316.  
  317. #Region <Quản lý các Session của _HttpRequest>
  318. Func _HttpRequest_SetSession($sSessionNumber)
  319. If $sSessionNumber < 0 Or $sSessionNumber > 99 Then Exit MsgBox(4096, 'Lỗi', '$sSessionNumber chỉ có thể từ số từ 0 đến 99')
  320. $g___sSN = $sSessionNumber
  321. EndFunc
  322.  
  323. Func _HttpRequest_GetSessionList()
  324. Local $aListSession[0], $iCounter = 0
  325. For $i = 0 To 99
  326. If $g___hOpen[$i] Then
  327. ReDim $aListSession[$iCounter + 1]
  328. $aListSession[$iCounter] = $i
  329. $iCounter += 1
  330. EndIf
  331. Next
  332. Return $aListSession
  333. EndFunc
  334.  
  335. Func _HttpRequest_ClearSession($sSessionNumber = 0)
  336. If $sSessionNumber < 0 Or $sSessionNumber > 99 Then Exit MsgBox(4096, 'Lỗi', '$sSessionNumber chỉ có thể từ số từ 0 đến 99')
  337. $g___hCookie[$sSessionNumber] = ''
  338. If $g___hConnect[$sSessionNumber] Then $g___hConnect[$sSessionNumber] = _WinHttpCloseHandle2($g___hConnect[$sSessionNumber])
  339. If $g___hOpen[$sSessionNumber] Then $g___hOpen[$sSessionNumber] = _WinHttpCloseHandle2($g___hOpen[$sSessionNumber])
  340. If $g___ftpOpen[$sSessionNumber] Then $g___ftpOpen[$sSessionNumber] = _FTP_CloseHandle2($g___ftpOpen[$sSessionNumber])
  341. If $g___ftpConnect[$sSessionNumber] Then $g___ftpConnect[$sSessionNumber] = _FTP_CloseHandle2($g___ftpConnect[$sSessionNumber])
  342. EndFunc
  343. #EndRegion
  344.  
  345.  
  346.  
  347.  
  348. Func _HttpRequest_Test($sData, $FilePath = Default, $iEncoding = Default, $iShellExecute = True)
  349. If Not $sData Then SetError(1, __HttpRequest_ErrNotify('_HttpRequest_Test', 'Empty Data'), '')
  350. If Not $FilePath Or IsKeyword($FilePath) Then $FilePath = @TempDir & '\Test.html'
  351. If $iEncoding = Default Or Not StringIsDigit($iEncoding) Then $iEncoding = 0
  352. If $iEncoding = 0 And StringRegExp($sData, '(?i)^0x[[:xdigit:]]+$') Then $iEncoding = 16
  353. Local $l___hOpen = FileOpen($FilePath, 2 + $iEncoding)
  354. FileWrite($l___hOpen, $sData)
  355. FileClose($l___hOpen)
  356. If $iShellExecute Or $iShellExecute = Default Then
  357. ClipPut($sData)
  358. ShellExecute($FilePath)
  359. EndIf
  360. EndFunc
  361.  
  362.  
  363. Func _HttpRequest_CreateDataForm($a_FormItems) ;thêm dấu $ để nhận biết đó là 1 file, thêm dấu ~ để chuyển Unicode sang Ansi
  364. $g___Boundary = _BoundaryGenerator()
  365. Local $sData2Send = $g___Boundary & @CRLF, $vValue, $iUploadFile = 0
  366. ;------------------------------------------------------------------------------------------
  367. If Not IsArray($a_FormItems) Then
  368. MsgBox(4096, 'Lỗi', 'Tham số phải là mảng có dạng như sau: [["key1", "value1"], ["key2", "value2"], ...] hoặc ["key1=value1", "key2=value2"], ...')
  369. Exit
  370. EndIf
  371. If UBound($a_FormItems, 0) = 1 Then
  372. Local $ArrayTemp = $a_FormItems, $uBound = UBound($ArrayTemp), $aRegExp
  373. ReDim $a_FormItems[$uBound][2]
  374. For $i = 0 To $uBound - 1
  375. $ArrayTemp[$i] = StringRegExp($ArrayTemp[$i], '^([^\:\=]+)[\:\=](.*$)', 3)
  376. $a_FormItems[$i][0] = ($ArrayTemp[$i])[0]
  377. $a_FormItems[$i][1] = ($ArrayTemp[$i])[1]
  378. Next
  379. EndIf
  380. ;------------------------------------------------------------------------------------------
  381. If UBound($a_FormItems, 0) = 2 Then
  382. Local $l__uBound = UBound($a_FormItems) - 1
  383. For $i = 0 To $l__uBound
  384. $vValue = $a_FormItems[$i][1]
  385. If StringLeft($a_FormItems[$i][0], 1) == '$' And FileExists($vValue) Then
  386. $a_FormItems[$i][0] = StringTrimLeft($a_FormItems[$i][0], 1)
  387. $vValue = _GetFileInfo($vValue)
  388. If @error Then Return SetError(2, __HttpRequest_ErrNotify('_HttpRequest_CreateDataForm', 'Input File is invalid'), '')
  389. $iUploadFile = 1
  390. ElseIf StringLeft($a_FormItems[$i][0], 1) == '~' Then
  391. $a_FormItems[$i][0] = StringTrimLeft($a_FormItems[$i][0], 1)
  392. $vValue = BinaryToString(StringToBinary($vValue, 4))
  393. EndIf
  394. ;------------------------------------------------------------------------------------------
  395. $sData2Send &= 'Content-Disposition: form-data; name="' & $a_FormItems[$i][0] & '"'
  396. If UBound($vValue) > 2 Then
  397. $sData2Send &= '; filename="' & $vValue[0] & '"' & @CRLF & 'Content-Type: ' & $vValue[1] & @CRLF & @CRLF & $vValue[2]
  398. Else
  399. $sData2Send &= @CRLF & @CRLF & $vValue
  400. EndIf
  401. ;------------------------------------------------------------------------------------------
  402. $sData2Send &= @CRLF & $g___Boundary & @CRLF
  403. Next
  404. Else
  405. Return SetError(2, __HttpRequest_ErrNotify('_HttpRequest_CreateDataForm', '$a_FormItems should be an 1D or 2D Array'), '')
  406. EndIf
  407. ;------------------------------------------------------------------------------------------
  408. ;$sData2Send = StringRegExpReplace($sData2Send, '(?im)^(Content-Disposition: form-data; name=")"(.*?"\s*?;\s*?filename=)', '${1}${2}')
  409. ;$sData2Send = StringRegExpReplace($sData2Send, '(?im)(Content-Type\s*?:\s*?.*)"$', '${1}')
  410. ;------------------------------------------------------------------------------------------
  411. Return $iUploadFile = 0 ? StringToBinary(StringTrimRight($sData2Send, 2) & '--', 4) : StringTrimRight($sData2Send, 2) & '--'
  412. EndFunc
  413.  
  414.  
  415. Func _HttpRequest_SetGlobalCookie($___Enable = True)
  416. If $___Enable = Default Then $___Enable = True
  417. $g___GlobalCookie = $___Enable
  418. EndFunc
  419.  
  420.  
  421. Func _HttpRequest_ErrorNotify($___ErrorNotify = True)
  422. If $___ErrorNotify = Default Then $___ErrorNotify = True
  423. $g___ErrorNotify = $___ErrorNotify
  424. EndFunc
  425.  
  426.  
  427. Func _HttpRequest_SetTimeout($__TimeOut = Default)
  428. If StringIsDigit($__TimeOut) Then $__TimeOut = Number($__TimeOut)
  429. If Not IsNumber($__TimeOut) Or $__TimeOut = Default Or $__TimeOut < 0 Then $__TimeOut = 30000
  430. $g___TimeOut = $__TimeOut
  431. EndFunc
  432.  
  433.  
  434. Func _HttpRequest_SetHotkeyStopRequest($__sHotKeyCancelReadWrite = '')
  435. If Not $__sHotKeyCancelReadWrite Or $__sHotKeyCancelReadWrite = Default Then $__sHotKeyCancelReadWrite = ''
  436. If $__sHotKeyCancelReadWrite Then
  437. If $g___HotkeySet Then HotKeySet($g___HotkeySet)
  438. HotKeySet($__sHotKeyCancelReadWrite, '__HttpRequest_CancelReadWrite')
  439. $g___HotkeySet = $__sHotKeyCancelReadWrite
  440. Else
  441. HotKeySet($__sHotKeyCancelReadWrite)
  442. EndIf
  443. EndFunc
  444.  
  445.  
  446. Func _HttpRequest_SetProxy($__Proxy = '', $___ProxyUserName = '', $___ProxyPassword = '', $___ProxyBypass = '')
  447. $g___ProxyUserName = (($g___ProxyUserName And Not IsKeyword($g___ProxyUserName)) ? $g___ProxyUserName : '')
  448. $g___ProxyPassword = (($g___ProxyPassword And Not IsKeyword($g___ProxyPassword)) ? $g___ProxyPassword : '')
  449. $g___ProxyBypass = (($g___ProxyBypass And Not IsKeyword($g___ProxyBypass)) ? $g___ProxyBypass : '')
  450. $g___Proxy = (($__Proxy And Not IsKeyword($__Proxy)) ? $__Proxy : '')
  451. If Not StringInStr($g___Proxy, 'http', 0, 1, 1, 5) Then
  452. Exit MsgBox(4096, 'Lỗi', 'Chưa set Protocol cho Proxy. Ví dụ mẫu Proxy đúng:' & @CR & @CR & ' http://127.0.0.1:80 hoặc https://127.0.0.1:3212')
  453. ElseIf Not StringRegExp($g___Proxy, ':\d+$') Then
  454. Exit MsgBox(4096, 'Lỗi', 'Chưa set Port cho Proxy. Ví dụ mẫu Proxy đúng:' & @CR & @CR & 'http://127.0.0.1:80 hoặc https://127.0.0.1:3212')
  455. EndIf
  456. EndFunc
  457.  
  458.  
  459. Func _HttpRequest_SetUserAgent($___sUserAgent = Default)
  460. If $___sUserAgent And Not IsKeyword($___sUserAgent) Then
  461. $g___UserAgent = $___sUserAgent
  462. Else
  463. $g___UserAgent = $g___defUserAgentW
  464. EndIf
  465. EndFunc
  466.  
  467.  
  468. Func _HttpRequest_SetAuthorization($___sUserName = '', $___sPassword = '', $___nCredential = 0)
  469. If IsKeyword($___sUserName) Then $___sUserName = ''
  470. If IsKeyword($___sPassword) Then $___sPassword = ''
  471. $g___sUserName = $___sUserName
  472. $g___sPassword = $___sPassword
  473. Switch $___nCredential
  474. Case 0, Default, False
  475. $g___Credential = 0
  476. Case True
  477. $g___Credential = 1
  478. Case 1, 2, 4, 8, 16
  479. $g___Credential = $___nCredential
  480. Case Else
  481. Exit MsgBox(4112, 'Lỗi', StringReplace('Credential Scheme:\n1: BASIC\n2: NTML\n4: PASSPORT\n8: DIGEST\n16: NEGOTIATE', '\n', @CR))
  482. EndSwitch
  483. EndFunc
  484.  
  485.  
  486. Func _HttpRequest_QueryHeaders($iQueryFlag, $iIndex = 0)
  487. If Not $g___hRequest Then Return SetError(1, __HttpRequest_ErrNotify('_HttpRequest_QueryHeaders', 1), '')
  488. Local $vRet = _WinHttpQueryHeaders2($g___hRequest, $iQueryFlag, $iIndex)
  489. If @error Then Return SetError(@error, __HttpRequest_ErrNotify('_HttpRequest_QueryHeaders', 2), '')
  490. Return $vRet
  491. EndFunc
  492.  
  493.  
  494. Func _HttpRequest_FileSplitSize($iSize_or_URL, $iPart = 16)
  495. Local $iSize = $iSize_or_URL
  496. If StringInStr($iSize_or_URL, 'http', 0, 1, 1, 5) Then
  497. $iSize = _HttpRequest(7, $iSize_or_URL)
  498. If @error Or $iSize = 0 Then Return SetError(1, __HttpRequest_ErrNotify('_HttpRequest_FileSplitSize', 1), 0)
  499. EndIf
  500. $iSize = Number($iSize)
  501. $iPart = Number($iPart)
  502. If $iSize < $iPart Then Return SetError(2, __HttpRequest_ErrNotify('_HttpRequest_FileSplitSize', 2), 0)
  503. Local $spPart = Floor($iSize / $iPart)
  504. Local $vChunk = Mod($iSize, $iPart)
  505. Local $aRange[$iPart]
  506. If $vChunk Then
  507. $spPart += Floor($vChunk / $iPart)
  508. $vChunk = Mod($iSize, $iPart)
  509. EndIf
  510. For $i = 0 To $iPart - 1
  511. $aRange[$i] = 'Range: bytes=' & ($spPart * $i) & '-' & ($spPart * ($i + 1) - 1 + ($i = $iPart - 1 ? $vChunk : 0))
  512. Next
  513. Return SetError(0, $spPart, $aRange)
  514. EndFunc
  515.  
  516.  
  517. ;$iReturn = 0: String, 1: Array, 2:Struct, 3:Struct+String
  518. ;$iInputType = 0:hidden, 1:text, 2: cả 2
  519. Func _HttpRequest_SearchHiddenValues($iSourceHtml_or_URL, $iKeySearch = '', $iReturn = 1, $iInputType = 0)
  520. Local $vCookie = ''
  521. If $iReturn = Default Then $iReturn = True
  522. If Not $iKeySearch Or IsKeyword($iKeySearch) Then $iKeySearch = ''
  523. If $iKeySearch Then $iKeySearch = StringSplit($iKeySearch, '|')
  524. If StringRegExp($iSourceHtml_or_URL, '^https?://') And Not StringRegExp($iSourceHtml_or_URL, '[\r\n]') Then
  525. $iSourceHtml_or_URL = _HttpRequest(4, $iSourceHtml_or_URL)
  526. If @error Then Return SetError(-1, __HttpRequest_ErrNotify('_HttpRequest_SearchHiddenValues', 'Get Source Failed'), '')
  527. Local $iErrNoti = $g___ErrorNotify
  528. $g___ErrorNotify = False
  529. $vCookie = _GetCookie($iSourceHtml_or_URL[0])
  530. $g___ErrorNotify = $iErrNoti
  531. If @error Then $vCookie = ''
  532. $iSourceHtml_or_URL = $iSourceHtml_or_URL[1]
  533. EndIf
  534. Local $aInput = StringRegExp($iSourceHtml_or_URL, '(?i)<input (.*?)\/?>', 3)
  535. If @error Then Return SetError(1, __HttpRequest_ErrNotify('_HttpRequest_SearchHiddenValues', 'No Hidden or Text Input #1'), '')
  536. Local $uBound = UBound($aInput), $iCounter = 0, $aRet[0][3], $sRet = '', $tRet = ''
  537. Local $vType, $vName, $vValue
  538. For $i = 0 To $uBound - 1
  539. $vType = StringRegExp($aInput[$i], '(?i)type\s*?=\s*?["''](hidden|text)[''"]', 1)
  540. If @error Or ($iInputType = 0 and $vType[0] <> 'hidden') Or ($iInputType = 1 and $vType <> 'text') Then ContinueLoop
  541. $vName = StringRegExp($aInput[$i], '(?i)name\s*?=\s*?[''"](\w+)[''"]', 1)
  542. If @error Then ContinueLoop
  543. If IsArray($iKeySearch) Then
  544. For $k = 1 To $iKeySearch[0]
  545. If $vName[0] = $iKeySearch[$k] Then ExitLoop
  546. Next
  547. If $k > $iKeySearch[0] Then ContinueLoop
  548. EndIf
  549. $vValue = StringRegExp($aInput[$i], '(?i)value\s*?=\s*?[''"](.*?)[''"]', 1)
  550. If @error Then ContinueLoop
  551. $sRet &= $vName[0] & '=' & $vValue[0] & '&'
  552. If $iReturn > 1 Then $tRet &= 'wchar ' & StringRegExpReplace($vName[0], '[^\w]', '') & '[' & StringLen($vName[0] & $vValue[0]) + 1 & '];'
  553. ReDim $aRet[$iCounter + 1][3]
  554. $aRet[$iCounter][0] = $vName[0]
  555. $aRet[$iCounter][1] = $vValue[0]
  556. $aRet[$iCounter][2] = $vType[0]
  557. $iCounter += 1
  558. Next
  559. If $iReturn = 0 Then
  560. If $sRet = '' Then Return SetError(3, __HttpRequest_ErrNotify('_HttpRequest_SearchHiddenValues', 'No Hidden or Text Input #2'), '')
  561. Return StringTrimRight($sRet, 1)
  562. Else
  563. If UBound($aRet) = 0 Then Return SetError(2, __HttpRequest_ErrNotify('_HttpRequest_SearchHiddenValues', 'No Hidden or Text Input #3'), '')
  564. If $iReturn = 1 Then Return $aRet
  565. If $iReturn > 1 Then
  566. $tRet = DllStructCreate($tRet & 'wchar Cookie[' & StringLen($vCookie) + 1 & ']')
  567. For $i = 0 To UBound($aRet) - 1
  568. DllStructSetData($tRet, $i + 1, $iReturn = 2 ? $aRet[$i][1] : $aRet[$i][0] & '=' & $aRet[$i][1])
  569. Next
  570. DllStructSetData($tRet, 'Cookie', $vCookie)
  571. Return $tRet
  572. EndIf
  573. EndIf
  574. EndFunc
  575.  
  576.  
  577. Func _HttpRequest_BypassCloudflare($URL_Domain, $iTimeout = Default)
  578. If $iTimeout < 10000 Or $iTimeout = Default Or Not $iTimeout Then $iTimeout = 10000
  579. If StringRight($URL_Domain, 1) <> '/' Then $URL_Domain &= '/'
  580. Local $sourceHtml, $number_jschl_find, $jschl_answer, $jschl_name, $number_jschl_math, $char2num, $jschl_vc, $challenge_form, $Bypass_CF, $sTimer, $lenDomain
  581. $sourceHtml = _HttpRequest(2, $URL_Domain)
  582. $number_jschl_find = StringRegExp($sourceHtml, 'var.*?(\w+?)=\{"(\w+?)":(.*?)\};', 3)
  583. If @error Then Return SetError(1, __HttpRequest_ErrNotify('_HttpRequest_BypassCloudflare', 1), False)
  584. $jschl_answer = __Cloudflare_ChangeNumber($number_jschl_find[2])
  585. $jschl_name = $number_jschl_find[0] & '.' & $number_jschl_find[1]
  586. $number_jschl_math = StringRegExp($sourceHtml, $jschl_name & '(.)=(.*?);', 3)
  587. If @error Then Return SetError(2, __HttpRequest_ErrNotify('_HttpRequest_BypassCloudflare', 2), '')
  588. For $i = 0 To UBound($number_jschl_math) - 1 Step 2
  589. $char2num = __Cloudflare_ChangeNumber($number_jschl_math[$i + 1])
  590. Switch StringStripWS($number_jschl_math[$i], 8)
  591. Case '+'
  592. $jschl_answer += $char2num
  593. Case '-'
  594. $jschl_answer -= $char2num
  595. Case '*'
  596. $jschl_answer *= $char2num
  597. Case '/'
  598. $jschl_answer /= $char2num
  599. EndSwitch
  600. Next
  601. $lenDomain = StringLen(StringRegExpReplace($URL_Domain, '^https?://([^\/]+).*$', '${1}'))
  602. $jschl_answer = Int($jschl_answer) + $lenDomain
  603. $jschl_vc = StringRegExp($sourceHtml, '(?s)name="jschl_vc" value="(.*?)".*?name="pass" value="(.*?)"', 3)
  604. If @error Then Return SetError(3, __HttpRequest_ErrNotify('_HttpRequest_BypassCloudflare', 3), False)
  605. $challenge_form = StringRegExp($sourceHtml, '"challenge-form" action\s?=\s?"\/?([^"]+)"', 1)
  606. If @error Then Return SetError(4, __HttpRequest_ErrNotify('_HttpRequest_BypassCloudflare', 4), False)
  607. $URL_Domain_NoPath = StringRegExpReplace($URL_Domain, '^(https?://[^\/]+)(.*)$', '$1')
  608. If StringRight($URL_Domain_NoPath, 1) <> '/' Then $URL_Domain_NoPath &= '/'
  609. $sTimer = TimerInit()
  610. Do
  611. If TimerDiff($sTimer) > $iTimeout Then Return SetError(5, __HttpRequest_ErrNotify('_HttpRequest_BypassCloudflare', 'Timeout'), False)
  612. Sleep(200)
  613. $Bypass_CF = StringRegExp(_HttpRequest(1, $URL_Domain_NoPath & $challenge_form[0] & '?jschl_vc=' & $jschl_vc[0] & '&pass=' & _URIEncode($jschl_vc[1]) & '&jschl_answer=' & $jschl_answer, '', '', $URL_Domain), '(cf_clearance=[^;]+)', 1)
  614. Until Not @error
  615. ConsoleWrite(@CRLF & '> Bypass Cookie: ' & $Bypass_CF[0] & @CRLF)
  616. Return True
  617. EndFunc
  618.  
  619.  
  620. ;===========================================================
  621.  
  622.  
  623. Func _BoundaryGenerator()
  624. Local $sData = ""
  625. For $i = 1 To 12
  626. $sData &= Random(1, 9, 1)
  627. Next
  628. Return ('-----------------------------' & $sData)
  629. EndFunc
  630.  
  631.  
  632. Func _Data2SendEncode($sData2Send)
  633. Local $aData2Send = StringRegExp($sData2Send, '(?:^|&)([^=]+=?=?)(?:=)([^&]*)', 3), $uBound = UBound($aData2Send), $sResult
  634. If Mod($uBound, 2) Then Return $sData2Send
  635. For $i = 0 To $uBound - 1 Step 2
  636. If Not StringRegExp($aData2Send[$i], '\%\w\w?') Then $aData2Send[$i] = _URIEncode($aData2Send[$i])
  637. If Not StringRegExp($aData2Send[$i + 1], '\%\w\w?') Then $aData2Send[$i + 1] = _URIEncode($aData2Send[$i + 1])
  638. $sResult &= $aData2Send[$i] & '=' & $aData2Send[$i + 1] & '&'
  639. Next
  640. Return StringTrimRight($sResult, 1)
  641. EndFunc
  642.  
  643.  
  644. Func _URIEncode($sData, $iOnlyANSI = False) ; [Prog@ndy] autoitscript.com
  645. If $sData == '' Then Return ''
  646. $sData = BinaryToString(StringToBinary($sData, 4), 1)
  647. If $iOnlyANSI Then Return $sData
  648. Local $nChar, $aData = StringSplit($sData, "")
  649. $sData = ""
  650. For $i = 1 To $aData[0]
  651. $nChar = Asc($aData[$i])
  652. Switch $nChar
  653. Case 45, 46, 48 To 57, 65 To 90, 95, 97 To 122, 126
  654. $sData &= $aData[$i]
  655. Case 32
  656. $sData &= "+"
  657. Case Else
  658. $sData &= "%" & Hex($nChar, 2)
  659. EndSwitch
  660. Next
  661. Return $sData
  662. EndFunc
  663.  
  664.  
  665. Func _URIDecode($sData, $iEntities = True) ; [Prog@ndy] autoitscript.com
  666. If $sData == '' Then Return ''
  667. Local $aData = StringSplit(StringReplace($sData, "+", " ", 0, 1), "%")
  668. $sData = ""
  669. For $i = 2 To $aData[0]
  670. $aData[1] &= Chr(Dec(StringLeft($aData[$i], 2))) & StringTrimLeft($aData[$i], 2)
  671. Next
  672. $sData = BinaryToString(StringToBinary($aData[1], 1), 4)
  673. Return $iEntities ? __HTML_Entities_Decode($sData, False) : $sData
  674. EndFunc
  675.  
  676.  
  677. Func _HTMLEncode($sData, $Escape_Character = '\u', $iPassSpace = True)
  678. If $sData == '' Then Return ''
  679. Return StringReplace(Execute('"' & StringRegExpReplace(StringReplace($sData, '"', '¶', 0, 1), '([^\w\-\+\/\¶' & ($iPassSpace ? ' ' : '') & '])', '\' & $Escape_Character & '" & StringLower(Hex(AscW("$1"),4)) & "') & '"'), '¶', $Escape_Character & '22', 0, 1)
  680. EndFunc
  681.  
  682.  
  683. Func _HTMLDecode($sData, $Escape_Character = '\u', $iHexLength = Default)
  684. If $sData == '' Then Return ''
  685. If $iHexLength = Default Or Not $iHexLength Then
  686. $iHexLength = 4
  687. If StringRegExp($sData & ' ', '(?i)\Q' & $Escape_Character & '\E([[:xdigit:]]{2}[^[:xdigit:]]|[[:xdigit:]]{3}[^[:xdigit:]])') Then $iHexLength = 2
  688. EndIf
  689. $sData = __HTML_Entities_Decode($sData, False)
  690. Local $aSRE = StringRegExp($sData, '(?i)\Q' & $Escape_Character & '\E([[:xdigit:]]{' & $iHexLength & '})', 3)
  691. If @error Then Return $sData
  692. $aSRE = __ArrayDuplicate($aSRE)
  693. For $i = 0 To UBound($aSRE) - 1
  694. $sData = StringReplace($sData, $Escape_Character & $aSRE[$i], ChrW('0x' & $aSRE[$i]))
  695. Next
  696. Return $sData
  697. EndFunc
  698.  
  699.  
  700. ;===============================================================
  701.  
  702.  
  703. Func _GetCertificateInfo()
  704. Local $tBuffer = _WinHttpQueryOptionEx2($g___hRequest, 32)
  705. If @error Then Return SetError(1, __HttpRequest_ErrNotify('_HttpRequest_CertificateInfo', 1), '')
  706. Local $tCertInfo = DllStructCreate("dword ExpiryTime[2]; dword StartTime[2]; ptr SubjectInfo; ptr IssuerInfo; ptr ProtocolName; ptr SignatureAlgName; ptr EncryptionAlgName; dword KeySize", DllStructGetPtr($tBuffer))
  707. Return DllStructGetData(DllStructCreate("wchar[256]", DllStructGetData($tCertInfo, "IssuerInfo")), 1)
  708. EndFunc
  709.  
  710.  
  711. Func _GetNameDNS()
  712. Local $tBuffer, $pCert_Context, $tCert_Encoding, $tCert_Info, $tCert_Ext, $aCall
  713. $tBuffer = DllStructCreate("ptr")
  714. DllCall($dll_WinHttp, "bool", 'WinHttpQueryOption', "handle", $g___hRequest, "dword", 78, "struct*", $tBuffer, "dword*", DllStructGetSize($tBuffer))
  715. If @error Then Return SetError(1, __HttpRequest_ErrNotify('_GetNameDNS', 1), '')
  716. $pCert_Context = DllStructGetData($tBuffer, 1)
  717. $tCert_Encoding = DllStructCreate("dword dwCertEncodingType; ptr pbCertEncoded; dword cbCertEncoded; ptr pCertInfo; handle hCertStore", $pCert_Context)
  718. $tCert_Info = '«dw dwVersion; «dw SerialNumber_cbData; p SerialNumber_pbData»; «p SignatureAlgorithm_pszObjId; «dw SignatureAlgorithm_Parameters_cbData; p SignatureAlgorithm_Parameters_pbData»»; «dw Issuer_cbData; p Issuer_pbData»; «dw NotBefore_dwLowDateTime; dw NotBefore_dwHighDateTime»; «dw NotAfter_dwLowDateTime; dw NotAfter_dwHighDateTime»; «dw Subject_cbData; p Subject_pbData»; ««p SubjectPublicKeyInfo_Algorithm_pszObjId; «dw SubjectPublicKeyInfo_Parameters_cbData; p SubjectPublicKeyInfo_Parameters_pbData»»; «dw SubjectPublicKeyInfo_PublicKey_cbData; p ParametersSubjectPublicKeyInfo_pbData; dw SubjectPublicKeyInfo_PublicKey_cUnusedBits»»; «dw IssuerUniqueId_cbData; p IssuerUniqueId_pbData; dw IssuerUniqueId_cUnusedBits»; «dw dwSubjectUniqueId_cbData; p SubjectUniqueId_pbData; dw SubjectUniqueId_cUnusedBits»; dw cExtension; p rgExtension»;'
  719. $tCert_Info = StringReplace(StringReplace(StringReplace(StringReplace($tCert_Info, 'dw ', 'dword '), 'p ', 'ptr '), '«', 'struct;'), '»', ';endstruct')
  720. $tCert_Info = DllStructCreate($tCert_Info, DllStructGetData($tCert_Encoding, 'pCertInfo'))
  721. $aCall = DllCall("Crypt32.dll", "ptr", "CertFindExtension", "str", "2.5.29.17", "dword", DllStructGetData($tCert_Info, 'cExtension'), "ptr", DllStructGetData($tCert_Info, 'rgExtension'))
  722. If @error Then Return SetError(2, __HttpRequest_ErrNotify('_GetNameDNS', 2), '')
  723. $tCert_Ext = DllStructCreate("struct;ptr pszObjId;bool fCritical;struct;dword Value_cbData;ptr Value_pbData;endstruct;endstruct;", $aCall[0])
  724. $aCall = DllCall("Crypt32.dll", "int", "CryptFormatObject", "dword", 1, "dword", 0, "dword", 1, "ptr", 0, "ptr", DllStructGetData($tCert_Ext, 'pszObjId'), "ptr", DllStructGetData($tCert_Ext, 'Value_pbData'), "dword", DllStructGetData($tCert_Ext, 'Value_cbData'), "wstr", "", "dword*", 65536)
  725. If @error Then Return SetError(3, __HttpRequest_ErrNotify('_GetNameDNS', 3), '')
  726. DllCall("Crypt32.dll", "dword", "CertFreeCertificateContext", "ptr", $pCert_Context)
  727. Return StringReplace($aCall[8], 'DNS Name=', '')
  728. EndFunc
  729.  
  730.  
  731. Func _GetCookie($sHeader = '', $iTrimCookie = True, $Excluded_Values = '')
  732. If $sHeader == '' Or $sHeader = Default Or ($sHeader And StringLeft($sHeader, 5) <> 'HTTP/') Then
  733. If $g___retData[0] Then
  734. $sHeader = $g___retData[0]
  735. ElseIf IsPtr($g___hRequest) Then
  736. $sHeader = _WinHttpQueryHeaders2($g___hRequest, 22)
  737. If @error Or $sHeader == '' Then Return SetError(1, __HttpRequest_ErrNotify('_GetCookie', 1), '')
  738. EndIf
  739. EndIf
  740. Local $__aRH = StringRegExp($sHeader, '(?im)^Set-Cookie:\s*?([^=]+)=(?!deleted;)(.*)$', 3)
  741. If @error Or Not IsArray($__aRH) Then Return SetError(4, __HttpRequest_ErrNotify('_GetCookie', 4), '')
  742. ;----------------------------------------------------------------------------------
  743. Local $__sRH = '', $__uBound = UBound($__aRH)
  744. If Mod($__uBound, 2) Then Return SetError(5, __HttpRequest_ErrNotify('_GetCookie', 5), '')
  745. ;----------------------------------------------------------------------------------
  746. For $i = $__uBound - 2 To 0 Step -2
  747. If $__aRH[$i] == '' Or ($Excluded_Values and StringInStr('|' & $Excluded_Values & '|', '|' & StringStripWS($__aRH[$i], 3) & '|')) Then ContinueLoop
  748. $__sRH = $__aRH[$i] & '=' & $__aRH[$i + 1] & '; ' & $__sRH
  749. For $k = 0 To $i Step 2
  750. If $__aRH[$k] == $__aRH[$i] Then $__aRH[$k] = ''
  751. Next
  752. Next
  753. ;----------------------------------------------------------------------------------
  754. If $iTrimCookie Then
  755. Local $aOptionalFilter = 'Expires\s*?=\s*?|Path\s*?=\s*?|Domain\s*?=\s*?|Max-age\s*?=\s*?|SameSite\s*?=\s*?|HttpOnly|Secure'
  756. $__sRH = StringRegExpReplace(StringRegExpReplace($__sRH, '(?i);\s*?(' & $aOptionalFilter & ')([^;]*)', '; '), '(?:;\s?){2,}', '; ')
  757. EndIf
  758. ;----------------------------------------------------------------------------------
  759. Return $__sRH
  760. EndFunc
  761.  
  762.  
  763. Func _GetLocationRedirect($sHeader = '', $iIndex = -1)
  764. If Not $sHeader Or $sHeader = Default Or ($sHeader And StringLeft($sHeader, 5) <> 'HTTP/') Then
  765. If $g___retData[0] Then
  766. $sHeader = $g___retData[0]
  767. ElseIf $g___LocationRedirect Then
  768. Return $g___LocationRedirect
  769. ElseIf IsPtr($g___hRequest) Then
  770. $sHeader = _WinHttpQueryHeaders2($g___hRequest, 22)
  771. If @error Or $sHeader == '' Then Return SetError(1, __HttpRequest_ErrNotify('_GetLocationRedirect', 1), '')
  772. Else
  773. Return SetError(2, __HttpRequest_ErrNotify('_GetLocationRedirect', 3), '')
  774. EndIf
  775. EndIf
  776. Local $__aRH = StringRegExp($sHeader, '(?im)^Location:\s?(.+)$', 3)
  777. If @error Or Not IsArray($__aRH) Then Return SetError(3, __HttpRequest_ErrNotify('_GetLocationRedirect', 3), '')
  778. Local $uBoundRH = UBound($__aRH) - 1
  779. If $iIndex < 0 Or $iIndex > $uBoundRH Or $iIndex = Default Or $iIndex == '' Then $iIndex = $uBoundRH
  780. Return StringStripWS($__aRH[$iIndex], 3)
  781. EndFunc
  782.  
  783.  
  784. Func _GetFileInfo($sFilePath, $vDataTypeReturn = 1) ; 2: Base64, 1: String, 0: Binary
  785. If Not FileExists($sFilePath) Then Return SetError(1, __HttpRequest_ErrNotify('_GetFileInfo', 1), '')
  786. If $vDataTypeReturn = Default Or $vDataTypeReturn == '' Then $vDataTypeReturn = 1
  787. Local $sFileName = StringRegExp($sFilePath, '[\\\/]([^\\\/]+\.\w+)$', 1)
  788. If @error Then Return SetError(2, __HttpRequest_ErrNotify('_GetFileInfo', 2), '')
  789. $sFileName = $sFileName[0]
  790. Local $FileOpen = FileOpen($sFilePath, 16)
  791. If @error Then Return SetError(3, __HttpRequest_ErrNotify('_GetFileInfo', 3), '')
  792. Local $sFileData = FileRead($FileOpen)
  793. FileClose($FileOpen)
  794. Local $sFileType = __HttpRequest_DetectMIME($sFileName)
  795. Switch $vDataTypeReturn
  796. Case 2
  797. $sFileData = _B64Encode($sFileData, 0, True, True)
  798. $sFileType &= ';base64'
  799. Case 1
  800. $sFileData = BinaryToString($sFileData)
  801. EndSwitch
  802. Local $aReturn[3] = [$sFileName, $sFileType, $sFileData]
  803. Return $aReturn
  804. EndFunc
  805.  
  806.  
  807. Func _GetHttpTime($sHttpTime = '')
  808. Local $tSystemTime = DllStructCreate('word Year;word Month;word DayOfWeek;word Day;word Hour;word Minute;word Second;word Milliseconds')
  809. Local $tTime = DllStructCreate("wchar[62]")
  810. If $sHttpTime Then
  811. DllStructSetData($tTime, 1, $sHttpTime)
  812. Local $aCall = DllCall($dll_WinHttp, "bool", 'WinHttpTimeToSystemTime', "struct*", $tTime, "struct*", $tSystemTime)
  813. If @error Or Not $aCall[0] Then Return SetError(3, __HttpRequest_ErrNotify('_GetHttpTime', 3), "")
  814. Local $aRet[6]
  815. For $i = 0 To 5
  816. $aRet[$i] = DllStructGetData($tSystemTime, $i + ($i < 2 ? 1 : 2))
  817. Next
  818. Return SetError(0, ConsoleWrite('+==> Return an array of DateTime' & @CRLF), $aRet)
  819. Else
  820. DllCall("kernel32.dll", "none", "GetSystemTime", "struct*", $tSystemTime)
  821. If @error Then Return SetError(1, __HttpRequest_ErrNotify('_GetHttpTime', 1), "")
  822. Local $aCall = DllCall($dll_WinHttp, "bool", 'WinHttpTimeFromSystemTime', "struct*", $tSystemTime, "struct*", $tTime)
  823. If @error Or Not $aCall[0] Then Return SetError(2, __HttpRequest_ErrNotify('_GetHttpTime', 2), "")
  824. Return DllStructGetData($tTime, 1)
  825. EndIf
  826. EndFunc
  827.  
  828.  
  829. Func _GetMD5($sFilePath_or_Data)
  830. If StringRegExp($sFilePath_or_Data, '(?i)^[A-Z]:\') and FileExists($sFilePath_or_Data) Then
  831. Return StringLower(Hex(_Crypt_HashFile($sFilePath_or_Data, 0x00008003)))
  832. Else
  833. Return StringLower(Hex(_Crypt_HashData($sFilePath_or_Data, 0x00008003)))
  834. EndIf
  835. EndFunc
  836.  
  837.  
  838. Func _GetHMAC($sString, $iKey, $iAlgID = 0x0000800c) ;$CALG_SHA_256
  839. _Crypt_Startup()
  840. Local $iBlockSize = 64
  841. Local $a_oPadding[$iBlockSize], $a_iPadding[$iBlockSize]
  842. Local $oPadding = Binary(''), $iPadding = Binary('')
  843. $iKey = Binary($iKey)
  844. If BinaryLen($iKey) > $iBlockSize Then
  845. $iKey = _Crypt_HashData($iKey, $iAlgID)
  846. If @error Then Return SetError(1, __HttpRequest_ErrNotify('_GetHMAC', 1), -1)
  847. EndIf
  848. For $i = 1 To BinaryLen($iKey)
  849. $a_iPadding[$i - 1] = Number(BinaryMid($iKey, $i, 1))
  850. $a_oPadding[$i - 1] = Number(BinaryMid($iKey, $i, 1))
  851. Next
  852. For $i = 0 To $iBlockSize - 1
  853. $a_oPadding[$i] = BitXOR($a_oPadding[$i], 0x5C)
  854. $a_iPadding[$i] = BitXOR($a_iPadding[$i], 0x36)
  855. Next
  856. For $i = 0 To $iBlockSize - 1
  857. $iPadding &= Binary('0x' & Hex($a_iPadding[$i], 2))
  858. $oPadding &= Binary('0x' & Hex($a_oPadding[$i], 2))
  859. Next
  860. Local $HashS1 = _Crypt_HashData($iPadding & Binary($sString), $iAlgID)
  861. If @error Then Return SetError(2, __HttpRequest_ErrNotify('_GetHMAC', 2), -1)
  862. Local $HashS2 = _Crypt_HashData($oPadding & $HashS1, $iAlgID)
  863. If @error Then Return SetError(3, __HttpRequest_ErrNotify('_GetHMAC', 3), -1)
  864. _Crypt_Shutdown()
  865. Return StringLower(Hex($HashS2))
  866. EndFunc
  867.  
  868.  
  869. Func _TimeStampUNIX($iMSec = @MSEC, $iSec = @SEC, $iMin = @MIN, $iHour = @HOUR, $iDay = @MDAY, $iMonth = @MON, $iYear = @YEAR)
  870. Local $nYear = $iYear - ($iMonth < 3 ? 1 : 0)
  871. Return ((Int(Int($nYear / 100) / 4) - Int($nYear / 100) + $iDay + Int(365.25 * ($nYear + 4716)) + Int(30.6 * (($iMonth < 3 ? $iMonth + 12 : $iMonth) + 1)) - 2442110) * 86400 + ($iHour * 3600 + $iMin * 60 + $iSec)) * ($iMSec ? 1000 : 1) + $iMSec
  872. EndFunc
  873.  
  874.  
  875. Func _B64Encode($binaryData, $iLinebreak = 0, $safeB64 = False, $iRunByMachineCode = False, $iGZCompress = False)
  876. If $binaryData == '' Then Return SetError(1, __HttpRequest_ErrNotify('_B64Encode', 'Empty Data'), '')
  877. $iLinebreak = Number($iLinebreak)
  878. If $iLinebreak = Default Then $iLinebreak = 0
  879. If $safeB64 = Default Then $safeB64 = False
  880. If $iRunByMachineCode = Default Then $iRunByMachineCode = False
  881. ;----------------------------------------------------------------------------------------
  882. If $iGZCompress Then $binaryData = __ZL_GZCompress($binaryData)
  883. If Not $iRunByMachineCode Then
  884. Local $lenData = StringLen($binaryData) - 2, $iOdd = Mod($lenData, 3), $spDec = '', $base64Data = ''
  885. For $i = 3 To $lenData - $iOdd Step 3
  886. $spDec = Dec(StringMid($binaryData, $i, 3))
  887. $base64Data &= $g___aChr64[$spDec / 64] & $g___aChr64[Mod($spDec, 64)]
  888. Next
  889. If $iOdd Then
  890. $spDec = BitShift(Dec(StringMid($binaryData, $i, 3)), -8 / $iOdd)
  891. $base64Data &= $g___aChr64[$spDec / 64] & ($iOdd = 2 ? $g___aChr64[Mod($spDec, 64)] & $g___sPadding & $g___sPadding : $g___sPadding)
  892. EndIf
  893. Else
  894. Local $tStruct = DllStructCreate("byte[" & BinaryLen($binaryData) & "]")
  895. DllStructSetData($tStruct, 1, $binaryData)
  896. Local $tsInt = DllStructCreate("int")
  897. Local $a_Call = DllCall("Crypt32.dll", "int", "CryptBinaryToString", "ptr", DllStructGetPtr($tStruct), "int", DllStructGetSize($tStruct), "int", 1, "ptr", 0, "ptr", DllStructGetPtr($tsInt))
  898. If @error Or Not $a_Call[0] Then Return SetError(2, __HttpRequest_ErrNotify('_B64Encode', 'CryptBinaryToString Failed'), $binaryData)
  899. Local $tsChr = DllStructCreate("char[" & DllStructGetData($tsInt, 1) & "]")
  900. $a_Call = DllCall("Crypt32.dll", "int", "CryptBinaryToString", "ptr", DllStructGetPtr($tStruct), "int", DllStructGetSize($tStruct), "int", 1, "ptr", DllStructGetPtr($tsChr), "ptr", DllStructGetPtr($tsInt))
  901. If @error Or Not $a_Call[0] Then Return SetError(3, __HttpRequest_ErrNotify('_B64Encode', 'CryptBinaryToString Failed'), $binaryData)
  902. Local $base64Data = StringStripWS(DllStructGetData($tsChr, 1), 8)
  903. EndIf
  904. If $iLinebreak Then $base64Data = StringRegExpReplace($base64Data, '(.{' & $iLinebreak & '})', '${1}' & @LF)
  905. If $safeB64 Then $base64Data = StringReplace(StringReplace($base64Data, '+', '-', 0, 1), '/', '_', 0, 1)
  906. Return $base64Data
  907. EndFunc
  908.  
  909.  
  910. Func _B64Decode($base64Data, $iRunByMachineCode = False, $iGZUnCompress = False)
  911. If $base64Data == '' Then Return SetError(1, __HttpRequest_ErrNotify('_B64Decode', 'Empty Data'), '')
  912. If $iRunByMachineCode = Default Then $iRunByMachineCode = False
  913. $base64Data = StringStripWS($base64Data, 8)
  914. ;----------------------------------------------------------------------------------------
  915. If Not $iRunByMachineCode Then
  916. If Mod(StringLen($base64Data), 2) Then Return SetError(2, __HttpRequest_ErrNotify('_B64Decode', 2), $base64Data)
  917. Local $aData = StringSplit($base64Data, ''), $binaryData = '0x', $iOdd = UBound(StringRegExp($base64Data, $g___sPadding, 3))
  918. For $i = 1 To $aData[0] - $iOdd * 2 Step 2
  919. $binaryData &= Hex((StringInStr($g___sChr64, $aData[$i], 1, 1) - 1) * 64 + StringInStr($g___sChr64, $aData[$i + 1], 1, 1) - 1, 3)
  920. Next
  921. If $iOdd Then $binaryData &= Hex(BitShift((StringInStr($g___sChr64, $aData[$i], 1, 1) - 1) * 64 + ($iOdd - 1) * (StringInStr($g___sChr64, $aData[$i + 1], 1, 1) - 1), 8 / $iOdd), $iOdd)
  922. Else
  923. Local $tStruct = DllStructCreate("int")
  924. Local $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $base64Data, "int", 0, "int", 1, "ptr", 0, "ptr", DllStructGetPtr($tStruct, 1), "ptr", 0, "ptr", 0)
  925. If @error Or Not $a_Call[0] Then Return SetError(3, __HttpRequest_ErrNotify('_B64Decode', 'CryptBinaryToString Failed'), $base64Data)
  926. Local $tsByte = DllStructCreate("byte[" & DllStructGetData($tStruct, 1) & "]")
  927. $a_Call = DllCall("Crypt32.dll", "int", "CryptStringToBinary", "str", $base64Data, "int", 0, "int", 1, "ptr", DllStructGetPtr($tsByte), "ptr", DllStructGetPtr($tStruct, 1), "ptr", 0, "ptr", 0)
  928. If @error Or Not $a_Call[0] Then Return SetError(4, __HttpRequest_ErrNotify('_B64Decode', 'CryptBinaryToString Failed'), $base64Data)
  929. Local $binaryData = DllStructGetData($tsByte, 1)
  930. EndIf
  931. If $iGZUnCompress Then $binaryData = __ZL_GZUncompress($binaryData)
  932. Return $binaryData
  933. EndFunc
  934.  
  935.  
  936. Func _B64SetupDatabase($___sChr64, $___sPadding = '=')
  937. If StringInStr($___sChr64, $___sPadding, 1, 1) Then Return SetError(1, __HttpRequest_ErrNotify('_B64SetupDatabase', 1), False)
  938. Local $___aChr64 = StringSplit($___sChr64, "", 2)
  939. Local $___iCounter = 0, $___uBound = UBound($___aChr64) - 1
  940. If $___uBound <> 63 Then Return SetError(2, __HttpRequest_ErrNotify('_B64SetupDatabase', 2), False)
  941. For $i = 0 To $___uBound
  942. For $k = 0 To $___uBound
  943. If $___aChr64[$i] == $___aChr64[$k] Then $___iCounter += 1
  944. Next
  945. If $___iCounter = 2 Then Return SetError(3, __HttpRequest_ErrNotify('_B64SetupDatabase', 3), False)
  946. $___iCounter = 0
  947. Next
  948. $g___sChr64 = $___sChr64
  949. $g___aChr64 = $___aChr64
  950. $g___sPadding = $___sPadding
  951. Return True
  952. EndFunc
  953.  
  954.  
  955.  
  956.  
  957. #Region <FUNC đã đổi tên và sẽ bị loại bỏ ở phiên bản sau>
  958. #cs
  959. «----------- Huân Hoàng ---------»
  960. «----------- Rainy Pham ---------»
  961. #ce
  962.  
  963. Func _HttpRequest_SetOption($iParam1 = '', $iParam2 = '', $iParam3 = '', $iParam4 = '', $iParam5 = '')
  964. Local $sWarning = BinaryToString(_B64Decode('H4sIAAAAAAAAC/M4vCBXId6jpKQgKLWwNLW4JD44tcS/oCQzP0/hyMTDixWSHu7uVsgofbh7O4jZr1B2eIFCckZmokJRokJJxuEFeRkKyYcXJitkgAzKfbh7dqZCcWKpFS+XLoaxAUX5FZXYJEIyc1PzS0swpBxLSzLyizKrEkHOwabRI78kO7UyuCQfJggAgLMVCc8AAAA=', False, True), 4)
  965. Exit MsgBox(4096 + 16, 'Thông báo', $sWarning)
  966. EndFunc
  967.  
  968. Func _URLDecode($sData, $Escape_Character = '\u', $iHexLength = Default)
  969. __ConsoleOldFuncWarning('_URLDecode', '_HTMLDecode')
  970. $sData = _HTMLDecode($sData, $Escape_Character, $iHexLength)
  971. Return $sData
  972. EndFunc
  973.  
  974. Func _WinHttpBoundaryGenerator()
  975. __ConsoleOldFuncWarning('_WinHttpBoundaryGenerator', '_BoundaryGenerator')
  976. Return _BoundaryGenerator()
  977. EndFunc
  978.  
  979. Func _HttpRequest_CreateDataFormSimple($a_FormItems)
  980. __ConsoleOldFuncWarning('_HttpRequest_CreateDataFormSimple', '_HttpRequest_CreateDataForm')
  981. Local $sData = _HttpRequest_CreateDataForm($a_FormItems)
  982. If @error Then Return SetError(@error)
  983. Return $sData
  984. EndFunc
  985.  
  986. Func _HttpRequest_ClearCookies($sSessionNumber = 0)
  987. __ConsoleOldFuncWarning('_HttpRequest_ClearCookies', '_HttpRequest_ClearSession.')
  988. _HttpRequest_ClearSession($sSessionNumber)
  989. EndFunc
  990.  
  991. Func _HttpRequest_NewSession($sSessionNumber = 0)
  992. __ConsoleOldFuncWarning('_HttpRequest_NewSession', '_HttpRequest_ClearSession.')
  993. _HttpRequest_ClearSession($sSessionNumber)
  994. EndFunc
  995.  
  996. Func _GetFileInfos($sFilePath, $vDataTypeReturn = 1)
  997. __ConsoleOldFuncWarning('_GetFileInfos', '_GetFileInfo')
  998. Local $aInfo = _GetFileInfo($sFilePath, $vDataTypeReturn)
  999. If @error Then Return SetError(@error)
  1000. Return $aInfo
  1001. EndFunc
  1002.  
  1003. Func _GetLocation_Redirect($__sHeader = '', $iIndex = -1)
  1004. __ConsoleOldFuncWarning('_GetLocation_Redirect', '_GetLocationRedirect')
  1005. Local $sData = _GetLocationRedirect($__sHeader, $iIndex)
  1006. If @error Then Return SetError(@error)
  1007. Return $sData
  1008. EndFunc
  1009.  
  1010. Func _FileWrite_Test($sData, $FilePath = Default, $iMode = 0)
  1011. __ConsoleOldFuncWarning('_FileWrite_Test', '_HttpRequest_Test')
  1012. _HttpRequest_Test($sData, $FilePath, $iMode)
  1013. EndFunc
  1014.  
  1015. Func _GetHiddenValues($iSourceHtml_or_URL, $iKeySearch = '', $iReturnArray = False, $iInputType = 0)
  1016. __ConsoleOldFuncWarning('_GetHiddenValues', '_HttpRequest_SearchHiddenValues')
  1017. Local $retData = _HttpRequest_SearchHiddenValues($iSourceHtml_or_URL, $iKeySearch, $iReturnArray, $iInputType)
  1018. If @error Then Return SetError(@error)
  1019. Return $retData
  1020. EndFunc
  1021.  
  1022. Func __ConsoleOldFuncWarning($oldName, $newName)
  1023. If @Compiled = 0 And $g___OldFunc == '' Then OnAutoItExitRegister('__ReplaceOldFuncName')
  1024. $g___OldFunc &= $oldName & '=' & $newName & '|'
  1025. ConsoleWrite(@CRLF & '! > Ham ' & $oldName & ' da doi ten thanh ' & $newName & '. Vui long su dung ten ham moi boi ' & $oldName & ' se bi loai bo o cac phien ban sau <' & @CRLF & @CRLF)
  1026. EndFunc
  1027.  
  1028. Func __ReplaceOldFuncName()
  1029. Local $aOldFunc = StringSplit(StringTrimRight($g___OldFunc, 1), '|', 2)
  1030. $aOldFunc = __ArrayDuplicate($aOldFunc)
  1031. Local $fRead = FileRead(@ScriptFullPath), $aNameFunc
  1032. For $i = 0 To UBound($aOldFunc) - 1
  1033. $aNameFunc = StringSplit($aOldFunc[$i], '=', 2)
  1034. $fRead = StringRegExpReplace($fRead, $aNameFunc[0] & '\s{0,2}\(', $aNameFunc[1] & '(')
  1035. Next
  1036. ClipPut($fRead)
  1037. MsgBox(4096 + 16, 'Phát hiện sử dụng tên hàm cũ', 'Tên hàm cũ sẽ được tự động thay thế bằng tên hàm mới')
  1038. WinActivate(@ScriptFullPath)
  1039. Send('^a')
  1040. Send('^v')
  1041. EndFunc
  1042.  
  1043. Func _SciTE_TextSplit($nameVar, $nCharPerLine = 101)
  1044. Local $sStr = StringReplace(ClipGet(), "'", "''", 0, 1), $sRet = ''
  1045. Do
  1046. $sRet &= $nameVar & " &= '" & StringLeft($sStr, $nCharPerLine) & "'" & @CRLF
  1047. $sStr = StringTrimLeft($sStr, $nCharPerLine)
  1048. Until StringLen($sStr) = 0
  1049. ClipPut($sRet)
  1050. EndFunc
  1051. #EndRegion
  1052.  
  1053.  
  1054.  
  1055.  
  1056. #Region -------------------ZLIB UDF by [WARD] autoitscript.com--------------------------------
  1057. Func __MemLocalFree($hMemory)
  1058. DllCall("kernel32.dll", "handle", "LocalFree", "handle", $hMemory)
  1059. EndFunc
  1060.  
  1061. Func __MemVrAlloc($pAddress, $iSize, $iAllocation, $iProtect)
  1062. Local $aResult = DllCall("kernel32.dll", "ptr", "VirtualAlloc", "ptr", $pAddress, "ulong_ptr", $iSize, "dword", $iAllocation, "dword", $iProtect)
  1063. If @error Then Return SetError(@error, @extended, 0)
  1064. Return $aResult[0]
  1065. EndFunc
  1066.  
  1067. Func __MemVrFree($pAddress, $iSize, $iFreeType)
  1068. Local $aResult = DllCall("kernel32.dll", "bool", "VirtualFree", "ptr", $pAddress, "ulong_ptr", $iSize, "dword", $iFreeType)
  1069. If @error Then Return SetError(@error, @extended, False)
  1070. Return $aResult[0]
  1071. EndFunc
  1072.  
  1073. Func __ZL_Alloc($Opaque, $Items, $Size)
  1074. Local $aResult = DllCall("kernel32.dll", "handle", "GlobalAlloc", "uint", 0x40, "ulong_ptr", $Items * $Size)
  1075. If @error Then Return SetError(@error, @extended, 0)
  1076. Return $aResult[0]
  1077. EndFunc
  1078.  
  1079. Func __ZL_Free($Opaque, $Addr)
  1080. Local $aResult = DllCall("kernel32.dll", "ptr", "GlobalFree", "handle", $Addr)
  1081. If @error Then Return SetError(@error, @extended, False)
  1082. EndFunc
  1083.  
  1084. Func __ZL_Exit()
  1085. $Z_Buffer = 0
  1086. __MemVrFree($Z_BufferMemory, 0, 0x8000)
  1087. DllCallbackFree($Z_Alloc_Callback)
  1088. DllCallbackFree($Z_Free_Callback)
  1089. EndFunc
  1090.  
  1091. Func __ZL_Startup()
  1092. If IsDllStruct($Z_Buffer) Then Return
  1093. Local $Code = '', $Var_Opcode = ''
  1094. If @AutoItX64 Then
  1095. $Code &= '1K0AAP8OAejNKRwOTI0DQblYcBAY6Q95Cv8CMOi4K0iD7OZFdosFBMdEJDgfHFiJEjBBGYtADBEoEggmIELg6Ph1oS3EzMP/DAPp'
  1096. $Code &= 'sWyBBO/9V58PBYi9VYUh6GoBTonCQbhRYwOOECLoVYhJiVPAeBEIjTsjmWqPDyT4OqWJYfifKIBWV8x0zwbWdkwBwfzzpF9ew0gQ'
  1097. $Code &= '0IY/ql+5WA3o+f8CwiCWMAd3ACxhDu66UQmZHxnEbUCP9GpwNaUAY+mjlWSeMogB2w6kuNx5HvjV4PbZANKXK0y2Cb18ALF+By24'
  1098. $Code &= '55EdB7+QZBC3YPIgsGoASHG5895BvoQAfdTaGuvk3W08UbWA9MeF04NWmABsE8Coa2R6+QBi/ezJZYpPXAMBFNlsBmOIPQ/6KPUN'
  1099. $Code &= 'vgDIIG47XhBpTADkQWDVcnFnonnRAAM8R9QES/2FAA3Sa7UKpfqo6jUAbJiyQtbJu9sHQPm8rOPQ2DJ1XADfRc8N1txZPQHRq6ww'
  1100. $Code &= '2SY6wN5RcoAA18gWYdC/tfQAtCEjxLNWmZUBus8Ppb24nsgCKAAIiAVfstkMxpAgAAuxh3xvLxFMAGhYqx1hwT0tAGa2kEHcdgZx'
  1101. $Code &= 'ANsBvCDSmCoQB9XviYWx4B+1tgYApeS/nzPUuOgDoskHeDT5gA+OqAAJlhiYDuG7DQBqfy09bQiXbABkkQFcY+b0UXFrPmJhgRzY'
  1102. $Code &= 'MGWFTsPQ8u2VfQYAe6UBG8H0CIIAV8QP9cbZsGUAUOm3Euq4vosAfIi5/N8d3WIHSS3aFfPQ04xlTAHU+1hhsk3OIC06cHQAvKPi'
  1103. $Code &= 'MLvUQaUG30rXldjEAMTRpPv01tNqAOlpQ/zZbjRGAIhnrdC4YNpzAC0EROUdAzNfAEwKqsl8Dd08HnEFUENBAicQiAu+hgAgDMkl'
  1104. $Code &= 'tWhXsz2FbwAJ1Ga5n+RhAM4O+d5emMnZOikigNCwtKjXxxcHPbNZgQ2gLjtcvQC3rWy6wCCDuAHttrO/mgzi2QPU0rEBdDlH1eqv'
  1105. $Code &= 'd+SdFQAm2wSDFtxzEgALY+OEO2SUPgdqbQ2oWld68M8O5J0H/wmTJ64ACrGeBz19RAAP8NKjCIdoAPIBHv7CBmldAFdi98tnZYBx'
  1106. $Code &= 'DzZsGefga252G9QA/uAr04laetoAEMxK3Wdv37lx+Q7vvo5DY7cX1bCwYOg4o9aAfpPRocTC2AA4UvLfT/Fnu/vMV7wApt0GtT9L'
  1107. $Code &= 'NrIASNorDdhMGwoPr/ZKA8BgegRBw3bvOd9VHWeowI5uMXm+aQBGjLNhyxqDZgC8oNJvJTbiaABSlXcMzANHCwC7uRYCIi8mBQNV'
  1108. $Code &= 'vju6xSj4vbKSAFq0KwRqs1ynAP/XwjHP0LWLAJ7ZLB2u3luw/GQAmybyY+yco2oAdQqTbQKpBgn2PwA2DuuFZwdyE7CNAAWCSr+V'
  1109. $Code &= 'FHq4AOKuK7F7OBu2AAybjtKSDb7VAOW379x8Id/bPwvUh9OGQuJg8fiz3QBoboPaH80WvgCBWya59uF3sHNvBEe3GOZawH5wag8A'
  1110. $Code &= '/8o7BmZcCwF5EQCeZY9prmL40/JrTGHFAGwWeOIKoO4A0g3XVIMETsIAswM5YSZnp/cAFmDQTUdpSdsAd24+SmrRrtwAWtbZZgvf'
  1111. $Code &= 'QPAPO9g3U8C8qcWeuwDef8+yR+n/tQ4wHPK9IYrCusrkk7MAU6ajtCQFNtD77AbXuJ0AV95Uv2fZIy4AemazuEphxAIAG2hdlCtv'
  1112. $Code &= 'KjcBvgu0oY4Mw/zfBQVaje8CLcgAQX4xARmCYjYyw1P+QSTFMNlFAPR3fYanWlbHAJZBTwiK2chJHbvC0cPo7/rL2PTjDANPtaxN'
  1113. $Code &= 'fq6oji2DAJ7PHJiHURLCAEoQI9lT03D0AHiSQe9hVdeuBy4U5rU3fmCYHJaEgzsFWYcbghipAJvb+i0PsJrLNk5dIXfmHGzE/98A'
  1114. $Code &= 'P0HUng5azaIAJISV4xWfjCAARrKnYXepvqYD4ejx59DzqCSD3gHDZbLF2qqugGTrn0ZEKMwDa29p/XB2/3AxOe9aACogLAkHC204'
  1115. $Code &= 'ARwS8zZG37LsXcYLcVRw7QCDa/T38xIqu7YA4qJ1kRyJADSgB5D7vJ8XALqNhA553qklBzjvsjz/kPNzvkgD6Gp9G8VB6CreWAAF'
  1116. $Code &= 'T3nwRH5i6TyHLYXCxhxUwAmKFZQAQLsOjYPoI6YBwtk4vw3FoNRM9AG7IY+nlgrOzI0TcAkAzFxIMddFi2IJ+m7KUwDmVF27uhMV'
  1117. $Code &= 'bKAAxj+NiJcOAJaRUJjX3hGpAMzH0vrh7JPLuON/XABich3meWvetQBUQJ+ET1lYEgAOFhkjFQ/acA84JJtBID2na/1lmCTkfAAl'
  1118. $Code &= 'CctXZDjQTi6jrlcA4p+KGCHMAKczYP28Kq/hAiSt7tA/tEBvEp8HbLIJhqvwSMnqFQBT0ClGfvtodwBl4vZ5Py+3SAAkNnQbCR01'
  1119. $Code &= 'KgASBPK8U0uzjQBIUnDeZXkx7wB+YP7z5ue/wnf9AHyR0NU9oMvMA/o2ioO7B+iaeFQAvLE5ZaeoS5j+OzoKqYAiyfq1CYjLAK4Q'
  1120. $Code &= 'T13vXw5sAfRGzT/ZbYzkwnQAQxJa8wIjQeocwXBs3YDAd9hH1zaXAwbmLY7FtYGlhMQbvAAaikFxW7taaAeY6HdD2RdskB5PLRUH'
  1121. $Code &= 'X342DJxwGyfdHOA+cBIAmLlTMYOgkGIerovRQLWSFsX03XNXB+/ElKfCUNWW2fYA6bwHrqiNHLeQIQ4xnCrvRIXtgCvKrEgBcNNv'
  1122. $Code &= 'G134LvxG4eI2JN5mxwHFf2NU6MgiZRzzTeXAsgKkwqkbAGeRhDAmoJ8pB7iuxeT5cN79Oswd89Z7gOjPvGupgPpaB7KZPgmfUH84'
  1123. $Code &= 'hKsAsCQcLPEVBzUBMkYqHnN3MeS04QBwSPXQa1E2gz9GeoKyXWNO12DXD+YO4dLMtUn5jyeg4EoSlq89CyMAtshwoJ2JQQ+7hEZd'
  1124. $Code &= 'oAMHbDgaA8Q/FTGFDogoQpgAT2cDqVR+wPoAeVWBy2JMH8V3OABe9COYnacOswfclhWqGwBU5VoxDk/8mWIg19hTec57FwDhSVZ+'
  1125. $Code &= '+lCVLf57AdQczGITio3oUrsOljSR6KAf0NmgBgDs835ercJlRwdukUhsL/BTdeg2ABI6qQcJI2pUACQIK2U/EeR5mHkApUi8j2Yb'
  1126. $Code &= 'kaQHJyqKveCwy/KhjRTQ62LzAMAj7+bZveEfvBT8wKcNP4OKJh1+spHPuSSgcPgVy2kKO0bmQuEA/Vu1a2XcAPRafsU3CVPuA3Y4'
  1127. $Code &= 'SPexrsi48J8AEqEzzD+Kcv0uJJMAQDdqwgEAbtSEA1m+RgIs3KhZH+vAywayfI0EAIUWTwW4URMOB4870Q/W0JcN4e8GVQxk+RqU'
  1128. $Code &= 'A5PYCAotnpk9R3DScB2jJhzAyeQdHneiOx8pO2CArAsvG5th7QAawt+rGPW1aQAZyPI1Ev+Y9wATpiaxEZFMcwAQFFo8FSMw/u56'
  1129. $Code &= 'B464Fk3kYRfgRtg41x8sjznAksk7ufgLBzo87kQ/YISGPlL0wPZlAFACPVgXXjZvHX2cN0DD2jUBqRgANIS/VzGz1ZUAMOpr0zLd'
  1130. $Code &= 'AREeM5DlRSSnj4Lc/mDtJ8kAWy0mTE1iI3v0oHEiAJnmIBXzJCEoALR4Kh/euitGA2D8KXEKPvn0HNgtwwB2syyayPUurQeiNy/A'
  1131. $Code &= 'jaBw9+dYE3GuWQAfmTPcchwBJZN3K09RduTxFwB0RZvVdXjciX9+ALZLfxYIDX0hAGLPfKR0gHmTAB5CeMqgBHr96sYCe7AuvGyH'
  1132. $Code &= '4EFt3gX6OG/pkMcU1IaAclvsdwBqAlIxaDU48wRpCH+vYsA7bWNmAKsrYVHB6WDUA9emZeO9ZIi6AyIAZo1p4Gcgy9cBSBehFUlO'
  1133. $Code &= 'H2C4ebi1AEr8Y95Pywkc/pIBt1pMpd2YTciaxABGr/AGR/ZOQAdFwSSCRBAyzUFzPlgPgCrmSUIdjIsAQ1Bo8VRnAjMAVT68dVcJ'
  1134. $Code &= '1rcAVozA+FO7qjoAUuIUfFDVfr4eUeg5gFrfUyBbhgHtZlmxh6RYMHnrAF0D+ylcWkVvAF5tL61fgBs1AOG3cffg7s+xAOLZpXPj'
  1135. $Code &= 'XLM8POZrgP7nMme45QUADXrkOEom7w93IADuVp6i7GH0YHrtB+Iv6NOIcOmKNqsA671caerwuBNc/e0A0fyebJf+qQAGVf8sEBr6'
  1136. $Code &= 'GwB62PtCxJ75dQeuXPhI6QDzf4PCAPImPYTwEVdGAPGUQQn0oyvLAPX6lY33zf9PAPZgXXjZVze6ANgOifzaOeM+ANu89XHei5+z'
  1137. $Code &= 'Ht/SIUDd5Us33NgADGvX72ap1rbz2NSBALIt1QSkYtAzAM6g0Wpw5tNdABok0hD+XsUnAJScxH4q2sZJAEAYx8xWV8L7ATyVw6KC'
  1138. $Code &= '08HY6BEAwKivTcufxY+Sqh/JyPHdC0B0B0TMQ20Ahs0a08DPLbkWAs5AAO+Rd/xtkAAuQiuSGSjpkwCcPqaWq1RklwDy6iKVxYDg'
  1139. $Code &= 'lAD4x7yfz61+ngCWEzicoXn6nQ8kb7WYYAV3mUq7ADGbfdHzmjA1AImNB19LjF7hAA2OaYvPj+ydB4CK2/dCoIJJBIkOtSPGiCBk'
  1140. $Code &= 'moO/Dn9YAOawHoDR2tyBAFTMk4RjplGFADoYF4cNctWGAKDQ4qmXuiCoAM4EZqr5bqSrAHx4665LEimv5qwOb60lxn2AGIHxpy/r'
  1141. $Code &= 'ADOmdlV1pEE/ALelxCn4oPNDADqhqv18o52XAL6i0HPEtecZPQa0AKdAtonNgrc6DNuBsjuxD7NizUnYVWUAi7BoIte7X0gAFboG'
  1142. $Code &= '9lO4MZwAkbm0it68g+AAHL3aXlq/7TQumL4AQGVnvLgAi8gJqu6vtRIBV5dijzLw3iB5XxZrJbkFmp3vgEHFik8ACH1k4L1vAYfk'
  1143. $Code &= '1wC4v9ZK3dhq8gAzd9/gVhBjWACfVxlQ+jCl6HkU+9xx+ACsQsjAe9+tpwDHZ0MIcnUmbw/OzXB/wJUVGBEtA/u3pD+e0MiHJ+gA'
  1144. $Code &= 'zxpCj3OirCAAxrDJR3oIPq8AMqBbyI4YtWccOwrQAIeyaThQLwAMX+yX4vBZhf3Y5T110QCGZbTgOt1aTw2Pzz8o7PgQ5Dvq4wBY'
  1145. $Code &= 'Ug3Y7UBoDr9R+KFAK/DEn5cMSCowIkZXAJ7i9m9Jf5MIEvXHfQIQ1RjAQNlO0AGfNSu3I43F9ZbkoH8AKicZR/26fCAAQQKSj/QQ'
  1146. $Code &= '9+guSKhhDhSbbj/gI7aQHTEA0/ehiWrPdhR/DwDKrOEHf76EYADDBtJwoF63FwAc5lm4qfQ83wAVTIXnwtHggAB+aQ4vy3trSEx3'
  1147. $Code &= 'aB4PDUHHaLFzKdQEYQBMoLjZ9ZhvRACQ/9P8flBm7gAbN9pWTSe5DgAoQAW2xu+wpAejiAwcGnDbgX/XAGc5kXjSK/QfAG6TA/cm'
  1148. $Code &= 'O2aQmCQDiD8vke1Y+ClUYABEtDEH+AzfqAFNHrrP8abs5JL+AIm4LkZnF5tUHwJwJ8W7SPCAIS9MyQAwgPnbVedFYw+coD9rQMeD'
  1149. $Code &= '0xdoADbBcg+Kecs3AF3krlDhXED/AFROJZjo9nOIf4scFu83wPhAggSdJ7gmACQf6SFBeFWZAK/X4IvKsFwzADu2We1e0eVV90Cx'
  1150. $Code &= 'R9UZAOz/bCE7YglGAIfa5+kyyIKO4nAA1J7tKLH5UZAfX1bkxzoxWDCDCY+nAOZuMx8IwYYNP22mg7Wk4UC9ABb8BS8pSRdKAE71'
  1151. $Code &= 'r/N2IjKWABGeini+K5gdA9mXIEvJ9NgurkhxwAAB/dKlZkFqHABelvd5OSpPl5CPC13y8SOAZBlrTWAAftf1jtFi5+sPtt5fUiAJ'
  1152. $Code &= 'wjfptRx62UYHaLwhINDqMd8AiI9WYzBh+dYBIgSeapq9psgH2ADBAb82brStUwAJCBWaTnId/wApzqURhnu3dADhxw/N2RCSqAC+'
  1153. $Code &= 'rCpGERk4IwB2pYB1ZsbYEAABemD+rs9ymwDJc8oi8aRXRwCWGO+pOa39zABeEUUG7k12YwCJ8c6NJkTc6ABB+GRReS/5ND0ekwTa'
  1154. $Code &= 'sSZTwOua6+l/xgCzjKFFC2IO8A8ZB2lMQL5RmzzbADYnhDWZkpZQOP4u9wC5VCb83uieEgBxXYx3FuE0zgMuNqmrSYoAsuY/AyCB'
  1155. $Code &= 'g7sAdpHg4xP2XFsA/VnpSZg+VfEDIQaCbERhyNSqzgCLxs+pN344QQB/1l0mw26ziTx2fIfuysRv4B1ZCrEAoeHkHhTzgXkAqEvX'
  1156. $Code &= 'acsTsg4Ad6tcocK5OcYAfgGA/qmc5ZkEFSQLNqCAA1EcjgCnFmaGwnHaPhws3m/ASbnTlPCBAQQJlea4sXv0DaM7Hi6AG0g+0kMt'
  1157. $Code &= 'WQBu+8P22+mmkQBnUR+psMx6zgAMdJRhuWbxBi4F3gBAdwcwlgDuDmEsmQlRuvZtAMQZcGr0j+ljAKU1nmSVow7bAIgyedy4pODV'
  1158. $Code &= 'B+kel9LZ0Am2TCsAfrF8vee4LQcOkL8dkUC3EGRqsAAg8vO5cUiEvgBB3hra1H1t3R3k6/TJtVGAloXHE2wAmFZka6jA/WIA+XqK'
  1159. $Code &= 'ZcnsFAEAXE9jBmzZ+g93PQCNCA31O24gyABMaRBe1WBB5AOiZ3FyPAO40UsEANRH0g2F/aUKHLVrNcCo+kKymGwA27vJ1qy8+UA9'
  1160. $Code &= 'MtiB40XfXHXc+A3PAKvRPVkm2TCsUFHGOjvI1wCAv9BhFiG0APS1VrPEI8+6AJWZuL2lDygC7J4AXwWICMYM2bIAsQvpJC9vfIcA'
  1161. $Code &= 'WGhMEcFhHasAtmYtPXbcQZAAAdtxBpjSILwP79UQKkOxhYnotrUfF5+/5ADVuNQzeAdYyeNwmBMAlgmojuEOmBgAf2oNuwhtPS0A'
  1162. $Code &= 'kWRsl+ZjXAFxax5R9BzAYWKFZTDYdvLgTvYGAJXtGwGle4IIAPTB9Q/EV2WwANnGErfpUIu+ALjq/LmIfGLdXB1GA9otSYzT2PP7'
  1163. $Code &= '1AVMZU2yYYVVAyvOo7yDdPi7MOIASt+lQT3YldcApNHEbdPW9PsAQ2npajRu2fwArWeIRtpguNAARAQtczMDHeUAqgpMX90NfMkB'
  1164. $Code &= 'UAVxPCcCQfy+C3EQ+gwDIIZXaLUlsG+Fs5DeANQJzmHkn17eAPkOKdnJmLDQ5iIAx9eotFmzPRd2LgANgbe9XDvAugBsre24gyCa'
  1165. $Code &= 'vxyztgOT4gcVsdKw6tVHOXedAHevBNsmFXPcABaD42MLEpRkLDuE7QdqPnowWqjkDgHPC5MJ/50KwK4nA30HnrHwD/BEhwgAo9Ie'
  1166. $Code &= 'AfJoaQYAwv73YlddgGUAZ8sZbDZxbmsABuf+1Bt2idMAK+AQ2npaZ90ASsz5ud9vjr537zoXt49DYLBH1dYQo+ih0ViTCADYwsRP'
  1167. $Code &= '3/JS9rtcZ/UdvFdAP7UG3UiyADZL2A0r2q8KPRtMAgNK9kEEwcjfyO/DO6hnB1Uxbo6RRmm+cPBhsJ8AvGaDGiVv0qAAUmjiNswM'
  1168. $Code &= 'd5UAuwtHAyICFrkAVQUmL8W6O74Asr0LKCu0WpIAXLNqBMLX/6cAtdDPMSzZnosAW96uHZtkwrAA7GPyJnVqo5wOAm2TCqAJBqnr'
  1169. $Code &= 'DgE2P3IHZ4UFwFcTAJW/SoLiuHoUAHuxK64Mths4AZLSjpvl1b4getwA77cL298hhtMc0tTxgOJCaN2z+AAf2oNugb4WzQD2uSZb'
  1170. $Code &= 'b7B34R0Yt0dmegBa5v8PanAAZgY7yhEBC1wfj2WewPhirmlha+7TABZsz0WgCuJ4ANcN0u5OBINUADkDs8KnZyZhANBgFvdJaUdN'
  1171. $Code &= 'AD5ud9uu0WpKANnWWtxA3wtmADfYO/CpvK5TAN67nsVHss9/BzC1/+m9EPIcyroHwopTs5PwJLSjpvbQBzYFzdcG0FTeVykSI9ln'
  1172. $Code &= 'ANpmei7EYQBKuF1oGwIqbwArlLQLvjfDDACOoVoF3xstAi7vjQBHGaAxQTI2AmKCKy1Tw2DXxQQAfXf0RVZap4YAT0GWx8jZiggB'
  1173. $Code &= '0cK7Sfrv6OTj9PrLDqy1Twxgrn5NnoMALY6HmBzPSsIAElFT2SMQePQAcNNh70GSLq4A11U3teYUHJjr5AWDD4SWghsnWZsAqRiw'
  1174. $Code &= 'LTv62wE2y5rmd13E/2ziHADUQT/fzVoOngCVhCSijJ8V4wCnskYgvql3YQ7x6OGmYPPQ58PeA4Mk2sWyZQBcrqpERp/rbwBrzCh2'
  1175. $Code &= 'cP1pOXkxAK4gKlrvCwcJACwSHDht30Y2H/PGXUCy7XBUcfRYa4UfuyrA96IxwraJAByRdZAHoDQXAJ+8+w6EjbolAKneeTyy7zhz'
  1176. $Code &= 'd/ML/2roSICqxRt9WA/eKjzw4E8F6WJ+O0TCgC2H21QcxpQAFYoBjQ67QKYBI+iDvzjZwsygxT8NIYD0TAqWp48TdY0czlzMAAlF'
  1177. $Code &= '1zFIbhL6YosJ4lMAe7tdVKMAoGwViI0/1pEAlg6X3teYUMcAzKkR7OH60vXmywCTcmLXXGt55gAdQFS13llPhACfFg4SWA8VIwMZ'
  1178. $Code &= 'JDhw2j24QZtlCf1rp3x4AQBXywklTtA4ZAABka6jGIqf4gAzp8whKrz9YACtJOGvtD/Q7iSfEnEAhgmybMlIPySrAFMV6vt+RikA'
  1179. $Code &= '4mV3aC8/efYANiRItx0JG3QBBBIqNUtTvGFF/I2zAHll3nBgfu8xDufm8/4g/cK/1dAAkXzMy6A9g4oeNvqawAe7sbxUeACop2U5'
  1180. $Code &= 'O4OYS3MiAKkKCbX6yRCuAMuIX+9dT0b0AGwObdk/zXTC7owA81oSQ+pBIwIcwWxwz9h3IICXNtdHB44t5galALXFvBtxhABxQYoa'
  1181. $Code &= 'aFq7Ww5Dd+iY52zZEBUtTx4EDDZ+XyfBXpw+wBzdOLmYABKggzFTi64OYpCSteDR3fTFFjrE77lXzOoAlPbZltWuBwC86bccjaic'
  1182. $Code &= 'MRLea4XwAcqQLQDt03BIrPhdGx9v4UbDLmbeNrl/xSHJKwH/Y03zZWDXsurlABupwqQwhJFnACmfoCbkxa64PP3egPnW88w6z+j0'
  1183. $Code &= 'ewGAqWu8mbJa55ifCT4Aq4Q4fywcJLAANQcV8R4qRjLuMQB3c0hw4bRRax/Q9XrAgzZjXbJ3AMv6107S4eYPS/nDAeDcwCmvlhI7'
  1184. $Code &= 'SrYBIwudoHDI+LtBPYkDg11GGjhsA3YVP8QoDoiFZ08AmEJ+VKkDVXkD+sBMYsuBiDjFHwCYI/Resw6nnQOqFZbc5VSAG/xPDjFa'
  1185. $Code &= '12Igmc55U9g+SeGAF1D6flZ71wktlWLMjvfAjYoTNJYcu1IfwOiRBqDZ0ABefvPsR2XCrT9sSIBudVOgLzoSADboIwkHqQgkAlRq'
  1186. $Code &= 'ET9lK2B3eeQAj7xIpaSRG2YDvYoqJ/LL6ODr0BSNocD1AWLZ5u8jFPzhvQANp9D8JoqDP+KRHrJ+cMAkuWnLFfgAQuZGO1v9d3oS'
  1187. $Code &= '3GVrAKl+WvTuUwEJN/dIOHa43K6xAKESn/CKP8wzC5Mk/XKQAAHCAGo3A4TUbgJGLL5ZVwCo3AbLwusABI18sgVPFoUADhNRuA/R'
  1188. $Code &= 'O489DZeA1gxV7+EJGgD5ZAjYk1MKnnMtuM4ARz0cJqNwHeR5yQ4fonceL2BAKRsvC6wAGu1hmxir38IAGWm19RI18sgAE/eY/xGx'
  1189. $Code &= 'JqYAEHNMkRU8WhTi/gEwIxa4jnoXyORNcjgARuA5jyzXO8kAko46C/i5P0QH7jw+hoSur8DAUj0CUGUANl4XWDecfW8eNdrDwDQY'
  1190. $Code &= 'qQExVwC/hDCV1bMy0w9r6jMR590kcuWQwNyPp0wn6wD+Ji1bySNiD01MIqDBeyDmmdwhJADzFSp4tCgrugPeHyn8YEbIPgpxci0A'
  1191. $Code &= 'HPQss3bDLvUByJovN6KtcNiNwABxWOf3cx5ZrgBy3DOZd5MlHAF2UU8rdBfx/HXVAJtFfonceH9LALZPfQ0IFnzPAGIheYB0pHhC'
  1192. $Code &= 'AB6TegSgynvG5v0FbLwusG3AP4dvOC763hQJkOkAboZsancA7FtoMVICafMAODVir38IY22YPQBhK6tmYOnBUQdlptfUZBO94+gi'
  1193. $Code &= 'A7oHZ+BpjUjwyyBJFSyhF7gFH05KxbOAjt5j/PIcAAnLTFq3kk2YB92lRsSaYEcG8K8ARUBO9kSCJMEdQc0y/YAPWHNCSeYqAEOL'
  1194. $Code &= 'jB1U8WhQAFUzAmdXdbw+AFa31glT+MCMAFI6qrtQfBTiB1G+ftVaYDnoWyAAU99ZZu2GWKQAh7Fd65E0XCkA+wNeb0VaX60AL23h'
  1195. $Code &= 'NRuA4PcAcbfisc/u43NMpVMDPLNc5/68gFa4ZzIA5HoNBe8mSjh57gAgD+yinlbtYAf0Yegv4ufpkIjT66sANorqaVy9/RMAuPD8'
  1196. $Code &= '0dLH/pcAbJ7/VQap+hoBECz72Hob+fjEQgf4XK518wDpSPLCAIN/8IQ9JvFGAFcR9AlBlPXLACuj942V+vZPAP/N2XhdYNi6ADdX'
  1197. $Code &= '2vyJDts+AOM53nH1vN+zHZ+L3cAh0tw3S+UA12sM2NapZu9y1O62ANUtsoHQYqQEANGgzjPT5nBqANIkGl3FXv4QAMSclCfG2ip+'
  1198. $Code &= 'AMcYQEnCV1bMAMOVPPvB04KiHsAR6IDLTa+oyo8JxZ/IyQ6uYAsR8cxEAAd0zYZtQ8/AAdMazgK5LZFg8UB/kAD8d5IrQi6T6T8o'
  1199. $Code &= 'GQCmPpyXZFSrAZUi6vKU4ICAcrzH+J5+rQDPnDgTlp36eQShmLVvJMMlBeibMbsASprz0X2NiTUAMIxLXweODeEAXo/Pi2mKgJ12'
  1200. $Code &= '7ABC99uJBEmCiAPGI7WDmmS/kFgOv4AAHrDmgdza0YQAk8xUhVGmY4cAFxg6htVyDakA4tCgqCC6l6oAZgTOq6Ru+a4A63h8rykS'
  1201. $Code &= 'S606b6zy6sYAJafxgRimM+sAL6R1VXaltz8AQaD4KcShOkMA86N8/aqivpc/nbUAc9C0Bhnntj9ApwO3gs2JspjbDLMcD7E7nUlA'
  1202. $Code &= 'YrCLZVW7ANciaLoVSF+4AFP2BrmRnDG8AN6KtL0c4IO/AVpe2r6YNO1yAAC4vGdlqgnIAIsSta/uj2KXAFc33vAyJWtfAtyd1zi5'
  1203. $Code &= 'xcA/730BCE+Kb73gZP5eAQBK1r+48mo/2N0A33czWGMQVgBQGVef6KUw+uPvuBRCrAD4cd97wMhnxwCnrXVyCEPNzh5vJpWBf3At'
  1204. $Code &= 'ERhgAaQdt/uHwNCeGs/oJwCic49CsMYgrAAIekfJoDKvPgAYjshbCjtntTiyhwDQL1A4aZfsAF8MhVnw4j3l9Ic5ZYaA0d064LTP'
  1205. $Code &= 'jzBPWuQoP+oH5BCGUlig40Dt2AEN+FG/aPAr2KFIAJefxFoiMCriAJ5XT39Jb/bHCfUIk9UEEH2A18AYNQGf0E6NI7cr3ZbsxScA'
  1206. $Code &= 'Kn+guv1HGQIAQSB8EPSPkqgASOj3mxRYPSPyP+oxBx2Qtomh99Pwds9qrADKqA++fwfhBgDDYIReoHDS5gAcF7f0qbhZTAAV3zzR'
  1207. $Code &= 'wueFaVh+MwB7yy8Ow3dId2soDQ/PB7Fox2EEMCnZuKAATERvmPX80/8AkO5mUH5W2jcAGw65J022BUAAKKSw78YcDIgeo4HbQBo5'
  1208. $Code &= 'Z9d/KwDSeJGTbh/0OxMm9wMHJJBm0C8/iCkAk1jttERgVAwA+AcxHk2o36YH8c+6/pJw7EYuuAeJVJsXZ5AncAJxAPBIu8lML97b'
  1209. $Code &= 'APmAMGNF51VrAz+gnNODx/DBNmgAF3mKD3LkXTcAy1zhUK5OVP8HQPbomCWQi4hzFjk3758Egtf4ACInnSHpH5jAAFV4QYvg168z'
  1210. $Code &= 'AVywyu1Ztjv85dEoXkev+v8P7BnVYsAhbNqHRpgOBzLp53COEIIo7Z4H1JBR+bGQ5FZfOpAm5qcAjwmDHzNu5g0PhsEItcCmbb1A'
  1211. $Code &= '4RikBfwaF0kLKS+v9YDDMiJ28wCKnhGWmCu+eA4gl9kdoPTJS8BIB64u0v0BcGpBZqUA95ZeHE8qOXlIXZEAl+Uj8fJNawAZBfXX'
  1212. $Code &= 'fmDnYgDRjl/etuvCCe5SB3q16TdoAUbZ0C8BAYjfMepA6VaPIgDW+WGaap4EB5eAAb8BwdgCrbRuNhUI4O8dcgBOmqXOKf+3ewCG'
  1213. $Code &= 'EQ/H4XSSEADZzSqsvqg4Gf5GAICldiPYxmZ1AGB6ARByz67+AMpzyZtXpPEiAO8Ylkf9rTmpAEURXsx2Te4GAM7xiWPcRCaNAGT4'
  1214. $Code &= 'Qej5L3lR7JMfHjRTwrHa65pg7bP5AMbpC0WhjBnwOw5iAExpBzybUb4AhCc225aSmTVxLgf+UCZUuZCe6N78AIxdcRI04RZ3AKk2'
  1215. $Code &= 'Ls4RikmrAAM/5kW7g4EgAOPgkXZbXPYTAEnpWf3xVT6YB2yCBiHUcGFExosAzqp+N6nP1n8AQThuwyZdfHYHibPEyu7zWR2Yb+Gh'
  1216. $Code &= 'ALEK8xQe5EuoAHmBE8tp16t3AA6yucKhXAF+AMY5nKn+gCQVJZnlwP8LjgAcUW6GZhanPgPaccIsb96YlNO5AEkJBIHwsbjmHpWj'
  1217. $Code &= 'Dc97GyAuHkPSPgBI+25ZLenb9gDDUWeRpsywqQAfdAzOema5YQCU3gUG8ej233H/BcNIiVwkg8xBscpE5+NJ4NNQ6GzgLSrGAFhB'
  1218. $Code &= '99JFhcB0eCTOfAPPHsMPtgsYRNBJYzHB4uhnCB7R8IsUlkH6wgD/y3Xcg/sgDxKCKQK9szd8nEffcMHvBUU2MxNjFDfoEFh9FY5e'
  1219. $Code &= 'hJYNBEcSPsiBEjOEjsPkMxgZGASGycK8KXBBDI58QwSGicFMV8BCeoVucL3qHkIIq3aFVkIQqzYUa4uFQiA6jEaFQkBJg8MgrEbK'
  1220. $Code &= 'FuBJWfhKi6z8rT+RlOLABJQ8FISCFCE/SP/P+IXnTf1dJoskpDIEBHJUwHbZScEm6QIqorVlBAb8CaHQvjSHYnJAncl1E7OF23+t'
  1221. $Code &= 'KOKAkPJNGN5gRV7DMcB5hQd0D/bCAVMCM6BIg8EGBNHqdfFu8uxYKA0s0hCyBsjg38pBN7kgvgZDiCgCTLMo6MjE5UGxwASg4cIM'
  1222. $Code &= 'QPx1517EWChJzQgKMDEQe1cNgewgAWA1Uv3W0c9kRg8zjpmBuXApl+EbIC6WerDkTHqEkBUZwAHJfvjkfPH2jWxUNAqM6qDGTeh6'
  1223. $Code &= 'ycgalGwQTMY06GgljSQRVkydQLoRrBINifroLCncx9EV+3QpPqIqmSwOVg9TRwMAdasx90yNnFIksQGJ+EmLWxCKCHMY5wHcX8Pp'
  1224. $Code &= 'KbpJqCR4oCV1A5ArxiTO+xuhHQh1MFAdRA+3kAIfweoQqMESAXU8D2YCvf98DIH58f+Wcm8HEo4PGFxFAWXKFPoWEwgioLIawowX'
  1225. $Code &= 'buKwGi4JyiJKPRAIbsPCjUIBrA2fEC5zRH1EEpLKA0vHQbFI5Mh1V+5gg7hxgN8pBc7iH4eOa9J+R40EEqDgEEQJUshKBYH4sBUK'
  1226. $Code &= 'eg3egbivqW5eIKEcZCRc4AoLvzE8wFDjGoS5WzspaQWCECbCFjRD8d8yC/IcQ/OI9HH1DiH2xPc4+IcQ+eL6HEP7iPxx/Q4h/sT/'
  1227. $Code &= 'Zg2QfphQ+/5FApXhCFQHaYKQYQHRkhaFD7vMbDLLYggpigEEJJVChBCS+aptIBzHJq9LI2TpBDHLAyrA8CMOv8lIEQ9AFI841Cbq'
  1228. $Code &= 'SJmpMtZI7lktb5psyzrrUxBJJuD9ooPoytd7E1hQBxqfAo2ECPBroUiip4spIySvy2jvxxJPmiYOk3gM20PKUhkRpKQk0WQXCMBI'
  1229. $Code &= 'EMQHcT3i+QGcHAVcHhr+GC0aGAUYiMcImeymmJ9V4OpQxwvCKQoBlLcIyLbkq3KeOZMcf45HcitdOGgBwFNRUujhEFhILS7+KFWF'
  1230. $Code &= 'x8OeDgcB+BTBCuEXd8LKBwE5FMt0CyE1sww2RND44vnAFthaWVvDN+iaO2G4ZQaHDUhj0fWtzM1ATBBxHuIDEikNa4svZWDUaW4D'
  1231. $Code &= 'Y29tcGF0wGJsZTkgdp5yc3+4bnw4dWbvFvsG/97cM0Rzdh94Y//kdCB1beWcJnkbZGKVMx9z138/lG0N205DjAtHGRxuZDn59dfP'
  1232. $Code &= 'fIZ0zbthfzvYEDE5LjI4NU+jHZEBuAGtBJEC8gM+RwTIBfo8AYeH6G/yPF+MT1MGBCMHkQjICeQKcgs5DBwNjo+H6AF/IatFB2hX'
  1233. $Code &= 'ECgREpYABwkGCgULBAwCAw0CDgEPRwVFDEy7jAlMicwSLCSsSGyR7CIcRJxcidwSPCS8SHyR/CICRIJCicISIiSiSGKR4iISRJJS'
  1234. $Code &= 'idISMiSySHKR8iIKRIpKicoSKiSqSGqR6iIaRJpaidoSOiS6SHqR+iIGRIZGicYSJiSmSGaR5iIWRJZWidYSNiS2SHaR9iIORI5O'
  1235. $Code &= 'ic4SLiSuSG6R7iIeRJ5eid4SPiS+SH6R/iIBRIFBicESISShSGGR4SIRRJFRidESMSSxSHGR8SIJRIlJickSKSSpSGmR6SIZRJlZ'
  1236. $Code &= 'idkSOSS5SHmR+SIFRIVFicUSJSSlSGWR5SIVRJVVidUSNSS1SHWR9SINRI1Nic0SLSStSG2R7SIdRJ1did0SPSS9SH2R/SoTwugB'
  1237. $Code &= 'zgiTEWQRU10iRdPSJDNdIkWz0iRzXSJF89IkC10iRYvSJEtdIkXL0iQrXSJFq9Ika10iRevSJBtdIkWb0iRbXSJF29IkO10iRbvS'
  1238. $Code &= 'JHtdIkX70iQHXSJFh9IkR10iRcfSJCddIkWn0iRnXSJF59IkF10iRZfSJFddIkXX0iQ3XSJFt9Ikd10iRffSJA9dIkWP0iRPXSJF'
  1239. $Code &= 'z9IkL10iRa/SJG9dIkXv0iQfXSJFn9IkX10iRd/SJD9dIkW/0iR/XSJF/9IrEThAkQkgImBEEFCJMBJwJAhISJEoImhEGFiJOBJ4'
  1240. $Code &= 'JARIRJEkImREFFSJNBJ0JgOFZIMJQ0jDkSMio0Rj44rlBRwFExA3zY3H83yv2ZcIDBIcJAJIEpEKIhpEBhaJDhIeJAFIEZEJIhmB'
  1241. $Code &= 'AhWRCQ0iHUQDE4kLEhskB04XHyUVjAMBAgMEiwWLBiIDB0cIIwmRCvILPkcM8g0/kQ7/Iw/+4cJYN+IT4hTIAxWRFsgX5Bh8GY+R'
  1242. $Code &= 'Gvwbj+Qcf8gd/6QH0kEFByL5UuVSu5RjohCZAREcEo5HEyMU5BV8Fo+RF/IYP5EZ/V+H8hx5msQB82KLBEcBJzn5Cj3diA6RECIU'
  1243. $Code &= 'RBgcyAkgkSgiMEQ4QIlQEmAkcEiAkaAiwFrge6hCh6IGmX8MTHcYpm9TMGcpYF+UwD3fK0FWCVvo2vbyr3gDKEb1CEtDwILYW8N/'
  1244. $Code &= 'U1TjlXJWK6Qv5jHMAZrDHgl7ZbF6JPsYkIXC+S8wbSqn7RweKT3F4mg167YocfRLNS0THPgGw0iNgbwRUrqHAEUxwJBmRIngSJ0O'
  1245. $Code &= 'S4H/ynXziDuwCU1FHhkRpAohE1G4uI8OTImBCRdav+4IyA9mCrwEDo30FuIvOZY+QZsYi4GcJP5NMWPQHNdK2+CRqAuAR40ADBJB'
  1246. $Code &= 'OcEPj4nBm306SWPtTJA0gZkQhOGsEEIPtzAEhwsUn2YCOdByFXUWVl8GhAuklfI48AigCHcD9P9SwTrZY58LCEx1Elk4SAd28ZRa'
  1247. $Code &= 'wocF0UUByRCqM5GbkImEjneRS0KJWZ5855oKE8HUSsMLU2iFdyTqgwRVVlfonDAYHEIQTOga7HKfjyWYFGNQExgx27HH55tsCnON'
  1248. $Code &= 'uYjZShGZCEgw3dqeFDyzEnjtBKzDuchkQRK9PQIgPkwkQBjzZqvGgKCrlTwOjFBoZkhBTh2LAnmomBWdh11jMEw56A8wjapxSSnF'
  1249. $Code &= 'wZZkJFBN+aRQK0QB65J6Zkh0LAry78buHK1Kpkk2RBuCDDtMg0gwew050X4F1tfRwmZD7kx/MDv1f2SowcMYyQrS/4RAqUU7HrQK'
  1250. $Code &= 'fAzEIo/qKR7PRYvYv4c8G50H5wmDr8e5AYAi+gJNhfZ0E4NbMwIp7sgYEQQJSYPE8KQJzQ+FdipQI5RI6UWioQryKQCqEQSF0g+E'
  1251. $Code &= 'sxIBjY1K/70ywUGyhP2DvEgnCQO5kP/9UJMSIUCNdO8f9OoCxCQBrDY3gauKFiZAQ1CExqh/uUww20UQdFuQkqaI8JRApBkCdEVJ'
  1252. $Code &= 'jbyYRrQSY0f8Ca7voMjLOfB/SCqhS5JNREMXn+HQdBokFSkmwUNFlIvOIMhwiIhmRySJVH0k9jCKdcNBmv1gpnzEGF9eJl1b5FF8'
  1253. $Code &= 'BmQEegKDy/+EQvm7LI2bHUQHSwWF8HUJuIrhBhuiD0H6QfaQ52ZFBYlEkwZITv+I8UvH7dRM+IBlssIKmdeKkzseiY59BIH6dGtF'
  1254. $Code &= '5crlC2B2ASyUkYRC6y+hxRU52tAIZpCjixIUEIHkGUwVH4P6zH8JH+iEZAcT7FGMQYsShAsaoWcD6xiyrh8GmJNI/f9CngeaC9QG'
  1255. $Code &= 'qLFAyHWKTvmK1hjhIFahlXIxOxne3qjc4hTJzjXYbQ/+dbVdfCdOA2jXiC5BBZZmbHTziJcgoNxjAf3Qagam4Gf+lHUK4EcIRPeB'
  1256. $Code &= '/uQEYnYmyscRsDBFNpy5pqq3QOWJFEAXuLEUBUQp2IGWfmeEOYS5pDFRKCQjwA9m0+BJfJ0Q/h0JgXRZ1ORDCIgECn3OUigmZCYR'
  1257. $Code &= 'UCdBF92RRFUTHjBtQo1EPRrwsdGC0+glkBU9Hx1rZzS/ZltSJAQZ9L9oSEAoIERV6VUBuevND8HEMEg2Mt8SpZfB/oy+isgiiZnm'
  1258. $Code &= 'naSUZnVpPxpTH6NbpFrENaKmiwGD+A5+Y02LMBT9pYd2ypDyhfDpO1wCPcPqA42vr68isnkOMkwcD4/SATHRmeryRSBk6Gq3+PZD'
  1259. $Code &= 'Dasj8+IbARbn9QInCiHucewarOyPYQl+YBz1hX5H94TrFIgHC4EHkC3iFQmRWUaCXQ16SvsIAwpQ6xa41sgdBkuEXgg2FfiDSsUI'
  1260. $Code &= 'XcwI+PolpAog8kZ1nAaubIsoXtvDRIMZFMs2k0GJ5UTxx/jWgw/5C35bQY2S//6LhItTkUPCFnpQS+8JUoOVQdreuO3/Q2woRSER'
  1261. $Code &= 'ig0iKdmTRk00hegQ9cvqQdKTdjpioMa62qUaZinQsRpUA/gFicyKbUCAV6B5/8iTa6N89kTog4Z9ERSNQP917Awiflig4UP8r3bx'
  1262. $Code &= '9Auaqhx2RgQBRYXbD46ehGfo1OqQrY0ITRyJ2otTFGJQAUKHYX5dbw9/hDKW6euFl1RH88wVoJSqXGt7MrDiqJMRSWzic1bKoUhG'
  1263. $Code &= 'P21BIAtGtwXGk+XSICzZFOhV+BMhRwiwCWkRWDBtsic4gK0gX+kzoiJCVNqazyyBuQ9J9cpo/T8UUhaI6JRFpRcB/4nBApPAePFP'
  1264. $Code &= 'ChdtiDnreUW85kiIMLzB6PNo8J7aNVakL4J4wICB+pUgSXIJwep7B1DCC1AU6MjuJAsMEFhCxygom0mDdIrwErsxwKjCPTnQaA98'
  1265. $Code &= 'lC/DUxo/cDoXMDHtiSNDd8YqHtekBY1dEDmpRCiEh6ifWyVMtTsyLSc4pWJAgobtwdGCSdP56ebAawJGtuUMKP4n6Ij/xZCvGrYc'
  1266. $Code &= 'Ae+y3vSrFo2QdmPTiTHYRFOXAnDVyIljnxsEck5ScZ9kSiKCO8QsQolSCIKMRkojkjU8FnxIzwpyITrppAJ8m42XtRlWZc7k6YzC'
  1267. $Code &= 'Meil70IqBba2xBODlYStiIeJYcJYdIcCQaMp8FKcXxd6BJsyfOtXEpjQlz0xaDYzKMQgauYFRosEoFj8to6IFBQR/u8QKxxICFRE'
  1268. $Code &= 'KVTAoluunUjDOarIAsTrSJpPO5ny40krAZAkCdGc2mRAQYH5mWoKcw6UCFzsE0JBbQhY6xcuhE2BoQcFRBuIq0FC7Gg0n4V0jgL8'
  1269. $Code &= 'S0kM1F2iRySePrETQ0VfP14Qk+XImNEnDAxCmPeoXUTpSIpZ4RyKjQs7qht06aL8RY/zuDpsIBCab7FVpJKLnwIq90zr5NZESDCi'
  1270. $Code &= 'tHMlM0WPhEZFi/iAjlIQrsCFvE/0pmg2vSG5aC/tMQ++cUTTGmXwSstsvxbKqodlJlbxGV3FoTukshwMK+S1L1vDib1gubh/uIFO'
  1271. $Code &= '85kT9fbwAXQOBmaDOAB1UEj/wpeh40HR6IMO+h9+5CcsuWR8N3U5FehkL0jwZCW7I5xJEIw8AURAE4HBCd5smiV86lBal5MqthKA'
  1272. $Code &= 'h8j/HcrR6cGD4AFECa7kXQx/7M7DT4skTVKWuA4TdT7YtEQSi0EoCU9RGgZwnpy7cUgdtC2m5opB+zivzMOGCCl8Li2QEPQ0PPIH'
  1273. $Code &= 'KoMzV/g0Q4DCCH4fiHk96IBaGEDrDJinK34WXTTRbY0ZUh2VONPTiM5FnWTjuc8Ey+iMsL5BJMeDkidmYpWkq1OC9UskQ7hFNcvk'
  1274. $Code &= 'xK2xIOP6U6ATZsHpCBGIDAKkkQX20V4UYXRm99FLLUvgjRnKUgcgRUtmpiyhn8cvwojnETA4GJO3FzvHUpGQp3tLQMAl6DPsny9k'
  1275. $Code &= 'jVAZO2YeHURY6FJWGiNoCKQKZHAicTGAFVUQD5UOhul9N0lTDSdAQ2QMbEQkIlDLWEneWwJH2UG6ZCJMS7gTUEmgkEQ8A1ymIOEP'
  1276. $Code &= 'AdtJRgFBVB5JMIcPBH7jTGPSgSh4KToSauGJUzIXPRJMBiCNQQHKYUQQ6J/9pbqDzASLE4LBTaDb16ncQC8pnisij3QJWpQcIEFU'
  1277. $Code &= 'nVUWVslkOhmtCDJsx2O8YBSn4QiDzVK9z0GqkT5UDhFOlGrpklC11Z1kHUjRqwrkfjqgADkUjnQi/1CHJUhVYweZOMUGhO52fUGI'
  1278. $Code &= 'lDk+RmbrBlILiVSOAioQeADATDnhfMYog78soZ2+SO59f1J7/eoGA//FienrA0O5UN/VjExOWDc2NIbIqThC/492c2DJdAxBiIEC'
  1279. $Code &= 'JymHamwYWHyuColqCItAgZkp0NH4MXEAqvB8FZiOUNjV8sIG+ehs1CeYyyrzffOUtJdviZ/6ZIDe8IsojJdyG41C/1v6j40WZ+6p'
  1280. $Code &= 'TggKOQqPoDGhGyCngQ5N+cycSsqUnK3RIZo0HMG4+h2OZgMSniebmfiHQjtiEIw5EDjIwxTAcwMdCsH+6oLS3wr7hBqi9RRklgIG'
  1281. $Code &= 'O55lCqdijfJAR8ToW6kRk+/DD4035SiXTKR2gv0PK6KJ6kJOjRboZOvXw8nyAdksiPEy+CVAL6eSksVQ+oZYWAeHQV4nXUNc6ZL9'
  1282. $Code &= 'bKRcIAY7gczey5FmYZi2LRPtoj+BYJIWZA5w6NonGUb5YZJ1QbsSvVuYnd9VidqcciDDFoO8i9fMB3XLWDSBwcuAuPoDfeVDjRhM'
  1283. $Code &= 'WxFG2AFwi5SXZCCklsq+8WwS07xlklzK871tZKSiNcwPHeG8YCUU81q5zcw/CZLRbDot6T/Cn8fBIZ5lu70lQLq/0rKadEKyKUuM'
  1284. $Code &= 'RBA9LJarJNj4Ip+cMT9GRK/rly941qCN266OqiwebfB+RkzsRKVuZPciB5z6mCdB+S3Wmg5ZOQEpyIPACy4Sbg5z8hXsiFZNmjmP'
  1285. $Code &= '+iT5mcnj6vxzDiQa45dOdproSszpXZ4Y6MSnPUZnQCXXXfKySs/bY0QPJVYGnWJPDhFe+D7HIgyVqc1HOa5d2kYogZ3PKN92vruW'
  1286. $Code &= '1VY2HmyYrGt+WgBMixFBg3pIAgZ1Ceh996M+iUJKgapACwzoLFX6SU/qWA9kRiYRIHL8WIsj3ZeTMejBCs3Cz3d48Ol7A3PqAznK'
  1287. $Code &= 'dwjrBPiNUAWjrqtGz/fI8BtIhe0zdBZC+Z3IT+qhRKUQ6VEBy3u7UmQNBA+EsQ+ydhCpKVDYk72lamZUQBIEss//ddKps2XLA49E'
  1288. $Code &= 'UJpwxGC3iLmlswzAwsJW3GHo9e4Fh7HJxG6VGN7pi6epRAI68gI2jJEKUOh835JImgnt2hClEFiRVglO8TCiqeSBhex0BfK4v4kK'
  1289. $Code &= 'W3ERbFxcJkAlUXzt0Dl9J9gkjOAh6EH90CtOt/C4G/iLKbmg4AqxtAYTQQYomaQTEjn3fAHi6wL/y9TjEFoJDaG4Kad/+PY1kZwX'
  1290. $Code &= 'rEB6Jw9NAZJUJMiOZFFQZqmULQ5NjSwqkuAB93PdGIPlA5hELSAGAQwx/ynFbpmgZQ9OBO9LjTQT8HIhvpQKXAuyjnlgeoh4uX47'
  1291. $Code &= 'WjDCzpqCXCHQXD8MBEfI6O6GYnCDgepVLyKHiGTIISkKdHUleUsPIT/EUGwmh5AasHWR61MpJ87/EOPzhCnxheJY6vhH+XoeZtpb'
  1292. $Code &= 'FyX5wEDLAki6+P7/UwFJ8LQ1CNixLLwNoAgPGDIUMgk6h+MEjo4znhZ1w6tE0wh1FvfX4hiEDBAnX5omYVQY2NjraHsRDDovqUij'
  1293. $Code &= 'dRvvR1Z2DSVaBLDwIJgYfcBmBxAQIRkCLAEM0jWfg6xMKcg9/t12fbDqEth/ESVeKVQ/yLxBnoQ5lYGYyTw7SKs5fbJKQhDQwxVc'
  1294. $Code &= 'CP8nxP3+SrtFISqdi6TjxMPC4k7+ckTYItBkXkLgJehJhPDXHBX4w14gz2VmJ2F0XxPoQZ+AQ29weXJpGWdodCA5x/gtMjDvy9BK'
  1295. $Code &= 'ZWF6bg9sb3VwT0cvaR5defMeZNtN2XJr5UHj/PoS2wLjU+hFceUewxYKyMtDeQgqsQsJZBgJKEE46F8PVxHIkVgyaAl4AoOIrjn0'
  1296. $Code &= 'uIJbWMN3vLIjc10ZBAUIigkjXxDJds2UCBCyBlcOXFQQty1BigTiYhBNVPqoIBBxgMOUPCCKQjQyEAoOUZQEEKYcyCEQUtkW2ua/'
  1297. $Code &= 'Zscc1gY8zUW8xM7BKoTzFQZ1WSgaQNvmhL8ktd1Ai0Msg/hkAhjRVq2DPwoJewgqhZ7CXA8BdAuLSUxwJ9CAiUXwg+wDFQ+CpTRI'
  1298. $Code &= 'JwfHdgopRkG+5PgXSAHGTZxQ1mQW8hfow6sjQkP/PpXLSQwUo5QHiISsyh4QTFNwDEAEAdPiMcKwYSP8fFxBXzP9dsopMZA3Tz+T'
  1299. $Code &= 'TLBGRDMQAiRw0SHSKB+LYOBUQTFhwEtoRCPRfLSmNqtHVEBmno1RPPKLGIcFDIlAjEU5GOF2slbrBT64/tzQuSWG+tksCVzDIxx0'
  1300. $Code &= 'Fnoikhh5wAUNg3gsAoQdCcVQj2/KwzunqM4kGDRgeSjh3S1EK/NlJYknduFlkKLqSxikHP/J6EVeIUnoiEp5OkIGPypwKEkoCVgh'
  1301. $Code &= 'sDwkiYmRtBgTgaiLIgyk21we0rgoNWCNQj9EyQgHBV/Tg6sGtggCAwHQRY1UYm+ZzMYTTCijTQ1EuUGBLJS7fIJ0YmIJCEHcuULr'
  1302. $Code &= 'b4OYUTAkGBLuwnRggsR6EAIIRIWuGK4KnBSUCEogRQ2sDkoXuoLghOEb85AtMLmQdDwwH20C6xnJ3IEQ0/fYe0X/jCTgBC0GPusD'
  1303. $Code &= 'sDEbeUgPMnUmD3gFH+E6kAbZB9jB6g4y6RmHxAzzAcKSyonJcP8LGAfDQ4V2EMQaD+QGUvMie4JwrMFSCEWIDMJchiMWv6gUD1vD'
  1304. $Code &= 'y1JrKiX3UZPOztN6tMCHD0f4lro64iZSIFzFt4z7ERcw3PvoXTn7SJwlXmEbRrxcHlggx34cKTUYUg4nEsZ4EXxOkdkIdQimRbot'
  1305. $Code &= 'IGVoi8NTe78pdL9V8icoZBq2JNJtMFeJ9IEUKnQxnQpFUCw9SSAnf1tAImf+HYFx/BiB/pq8aD6mEIjlfKNzIFv2UEgQlIoHs4RA'
  1306. $Code &= '/1PVmZafKEdoIUvkYC9xjzpFFQuxaaLvaDC4/eVMiVuQSXIPSdiGQnhGiEaDVCYYUlbkyNKRAULtPLrCInJA9q3TG+4RQvPBOOjj'
  1307. $Code &= 'p0nKoN4lxDMgFxr0C9cqcRsBdRONR/xEf0mVXOY6KV7DJCVEu1vBiRh0jOhhnI+LV0SUGB9NZ0gCCki0JyYMMitHUNYyKXQWQmCC'
  1308. $Code &= 'l/AWhX8EIhdoOzcOT2z2xSVTEMoo4R8cg39gMhbWMWgSyxKRycIRi0dHhUJWUMNvFZboB5V+pBHO00+ATQHA6PNUphR0iWgXSETf'
  1309. $Code &= 'YhgkEF0N6M4jJVkgnI+kl/Qr9T8MYV8IAVTYiiDmyO0+EoUK9kWqlofysGTYS8ORwX4mlZuVveJAaRx5m4WP6BZIFVjJeZa/Qlj9'
  1310. $Code &= 'lUBSYaT0wU9A/bi8IzsX69wt9B0fbdqkgsUI8dQQzzzAPsbYPy/wwfkSp7a+8Swp8EjNXyX4z+zA4PkBdanuF0LwTPCXGeg6ytsT'
  1311. $Code &= 'hCoCdRE4GIoP8noj2bof6QLz6LOlxIZyHyV3DBaI1jiaWkqdnajQVSZRdI+oYxv/yjGS+1ge92hmCzxQpA50D0mX4LUxSNKCjG6t'
  1312. $Code &= 'TBZjm6yyaRhP+MeNCGRYMtu+QMLZAomDqJfmKXwEyBa0zS72BbhjDAbhu4QWDEScxyeDoHM2MhSIOyRYpJxiu5CCDXtwVDBY6U9L'
  1313. $Code &= '941SWlUQWUQmz95pC5quHsR3WNFIK7dAX42MA0n6lAEp1jnKcm0yoixJj4CNFBnomKSZW0kCwSmfenzIDJRkhExKRkCgq0L+wMDq'
  1314. $Code &= 'AjnYcjoEKTzrShRlAlERQ3TmPGlgMdqODFiRSEEh6eo9NUYOrOds3koPuN9NCPIi44GZnAiHomKQngHC5gNIVz0Q3f17UYcbAouP'
  1315. $Code &= '0bIo1BQDci0om4JkRCyAV6B8BJWAs0dwQdMU4P/ADUsBjEQjR3xRFIH5eaMYcw1gB4NpeOMIU/GxchgXIwoFOfFzZTB4jRwB/Nn8'
  1316. $Code &= 'KeLeW7hSKh+5U8ZQgYhRFCqUg4FAl6MDRDJIHqqfgzzrLuKDgCg5wXMkOSnLKs415sP+84HeCgjY6GKVATBNH8lctsmezclR5npQ'
  1317. $Code &= 'S1q+U+cfEEnA+6B4OfAPQucweYv8nLQNYncWxFwgEP6EE7E0EOWf5KFCAYNG6ooGyT8xNk0WdAVFWXJNvPBBxRcbajtByXgJlJrK'
  1318. $Code &= 'tg5TUOuYEvpBLSnICABfCX3wkQabJm83C2qqXAroDLSsRAAbQTl7GHRSXnApRGsnjX17fBSaPAKRgk6s3b0IpV2hWpAj7LJC+NSo'
  1319. $Code &= 'NBF7xfzz8qSsgzLl5ISb9yG9wmiI6Vif8P2XD2iKwY8UwG8QtO/oQ4cJdQ9Ex95tR0T4iSLriN5RQrkDsBTB6VVzj0+w0/XvSbRp'
  1320. $Code &= '1z7LpLy3Sqo8OL1qh53EPcyDJaSKSl4QChXiCFrJJNQCwcbnEaLc0MpTkKkuQ1261rQuU2AEjUkCyOoByy5wZoq0e2ks7CRMtneF'
  1321. $Code &= 'SSHBt3p0tSYOSTGEQGZEaUg8zKVgOhT1mm9oEJoqBChB4LIi1VLBxCnRjcAg2HdSDrAQn/BeN4RVuxEGnSly2DjKsr5DRm6i8tI9'
  1322. $Code &= 'ZuJW8acgplGTK7IeuEiTKSJD6CeA6uAQAeA6iBQU/4MXYlLCUf4+iArSQQQIWSuFCLzZS6bxAkU56HMOgh/kzxAMCFHru5QaBxIh'
  1323. $Code &= '0ouMCPl/EmMU5vpBOimlZNLwVgqKOWG/U7pJCRLCKTJ0O1F+D3d4tjUQg0xvRlLdeOyUkXNfH1NkXtMkJFHuIGALdZ7pkz6Y18WZ'
  1324. $Code &= 'UzCeiLnHxEN9eE/F614plwSiWu48ikNaWfgW1Ek8a+UtZFEZk7zCFSkTIJpSnPrLRUpmWqqbV9JsvJpTFuhk7DpQFvP0PL8CQv2W'
  1325. $Code &= 'sw3XldysBkzDTL+qI/5C9esdOqH0Wf4LyP5dOjtWSiR30biJ1GLGIb8TviBgRI1vbwIGNmi1JqSVLJT4yvEJehS7RCy7y+ah+cuW'
  1326. $Code &= '+CLOcmnFyt7TfijJRN475mz79DdrG4UogqsN7fmgFILljCv8O4VaO4uIA3NYUvG0wvLBFGU9asIh26rsYvXA+AV3JzlPq9HYdBhR'
  1327. $Code &= 'zXUaJqNN6Ys9XLiKdgdrbTSs1sDl1BFQQXw0h8gZNW0WLmQeFChXCVwB/bq+KcxQnsiojKTGrCrpwlDFQ8kc2LBJXPhAocrNDpIL'
  1328. $Code &= 'GfCwQKTLhUKSyzYuif4/W4qgxSxhiehAMIvGUSnIDL+NHkH+iVagLTlC2JMSwKzad0hO6JThmiiKr+UQSogMJcY2os6U5aHbI9x8'
  1329. $Code &= 'TU8hx1vpGeJKCEG5OdGgCJjS0ctiE4X2NJTx/E7jSG0sYLnUmkCWcceyKHQhQfHiGv0UQlAhWBBghUFf7LzTCrY5eLXipd1jkYX/'
  1330. $Code &= 'ycqQrHVcQHm+EOvn6Hpf8ElXAzIqzNcqOXjSIEj8lXnmIRrKNRGQGuksOTDPdEWvy/qyjs/S7n5X/GjTIqfJYrHv59OhMgtE/YJG'
  1331. $Code &= '6WfQ6C+4AxMCZCgm6MGT6VSnJ21mawnIxI2yuA1Q6KzKq+ggWFlEgJKrC4ECkbApSIfPQvNDGNOIkhqKXZEwLuZboJZBMtrJWcBI'
  1332. $Code &= 'Hhy7IEtMC8hBXN+FtlQCrCR/2QoXBOw5wpCAm+8/1AyQjKAVg8HpQhCAIE+NjArR6Bh2nQzPLnVSUguIR3E8DiExxCY4G4cQEOEF'
  1333. $Code &= 'TNTJclyj4HUvjYES08aRtgMssqc00yRyfuDJzLil+JMsyr6Tj7pL9AogmgNci3GWCyPHk1InyPm3iatJJAWnCY7FDgnrXJx/m0jW'
  1334. $Code &= '0fBqmr1Z2elyaycD/hfY4ozkHQgb7Xm2C0+PuZLP2qIbl3GJquzN2keG+cXVJgZCdP8WnbqFRvmYAFo5IeN1FEFm6fD+mhBeWSy7'
  1335. $Code &= '2rqStXfKXqzFc7qcUaJqiFiFevcolqoQHOPoq0PryTRRB+nxAkt8ExLqPmnEsuI6EEHr4h02j3EiENE7E08tXpNYwaIr1IBPj5gh'
  1336. $Code &= 'qZF5IP9CnD6DpDCBlJELiDiRhh/HQWfGQcOwMDH2sXEcmwYMGr6OH4tHEJp3fHSmMhQsgOZ5BffY3hh+Pk8YuiphuHGb3RZF4KzA'
  1337. $Code &= '5NLJNAjS8EgJVxboL/wBGesHEzMQiUNMl2hkd0D8eEzbKp78GijuESTFMJlVHd86KZo/cmJVbExA1c+mzi1iCOemGFUbg/p5BTyH'
  1338. $Code &= 'TNPMIhBUNgs54HVLCsjYhXUmiUPpPWpQZphmXAQmRRObOhgenpQUBWq7kIFBILj7P2L4X9+L6/K0+QloMCVr+MZ75HZT0kq4GFuB'
  1339. $Code &= '98YCEXss2yIUHYb2iOVBt4lHIMRLTSjPAxDGBAEf/390Dqeo2QgWVvYwZEQnTaHAzlZowBBFiCRSASqKRA53pHERrGgppgAJdQWN'
  1340. $Code &= 'UPkl6xZxCYQCfQjDaOJiLBAFutQNoTSmS6OVZAtJxwop0EPp4vW9syZAeSjsYEEOPBjSgDbiEBYleyB7yVDh98pUSA4QhEMIQAoE'
  1341. $Code &= 'gEU5DiAPlcAKwlQUQWLIU0kkxEuwE0BKBLG0HxUhBdEGGQYSHWkHO1Tf6OndoUiQDOQ1FaEmQI05YBB+dMo/GBwguSkECB20XAoW'
  1342. $Code &= 'GTJTQ1w2YWQ8dA+JFFMQ+NgS6EO1Nv78JGM4Q5BFip+Badh2/sES4QyBvlwQKaZBJYuTScIhjOx8GsIKBn0Hxsg26xEZhEngQFvT'
  1343. $Code &= 'RQM+F8GdBgk11OwggXQDg8kwpYUSEEIIcKX34Slx0RfpAcpAVsHqBP/CBGvSH+jT/xHCMJP46gZXTujBJdATozS4E4qtEKG017DH'
  1344. $Code &= 'RYHLNnwkMARLcbm1YAoIRPqBOUM4c3EHhzs7hZY6LPUdxgzRdkDQ+qEu0u+t4U/IIgMpQFQm20Zz19lvMsqIdXQvbCA41lPi1VJi'
  1345. $Code &= 'TgmaETtnJAY4nGe3Yxg5FUpyj2nJHhJsQFHQdm0VwdvtKe6BcOjWs2tlQlGfNBJ1C3J5SSjVu9zFikDaELXiIASgUNVTwXR0O6HS'
  1346. $Code &= 'OAsZGUHLFBeNxBjU6Clys85kpf8RuDV8UMI4dFUpyyanTA5IpxM0CLyZZzbBKsZgEECINJltLWAwl+tOBeL9R2YoG0WBahIZEmgK'
  1347. $Code &= 'M0JgxMhbzvS/IbHOn4iEnH0Is7JY5uSNbpCqxEuyKAepu2cZ3nmLCnVfO+ZOdZLTxf12CCKTUyktIPQBE3c3RoaEkCuZY8m7oiYv'
  1348. $Code &= 'TbGhFCS3Yt2xGm4AxbZjKBDOUCIDyRxnBhQrNntAnKhJXDmQSIlQTtPDQwh1CgkM7X8F+Er0EJYUURhCGnRaCyFftRFHheu8SDIc'
  1349. $Code &= 'E6PIwRMkhe2FEeJFNpEW11iKIrCXxH6ydqAE6Plk9nMluaBiGOfzKwc6Y+t5gojN3wBMjUAIWEhbAYOiFKZjKnQFKonQmi9hrmoB'
  1350. $Code &= 'BjPIEmFvwXV0OcVGtb8Z6FzYnVRAugV0T560JsloFwix1zYqikg6MSV0Wt/fLNLJ4a0F/FmuI0t6Vg/0DWGf4ooUykoO5nLUQoTB'
  1351. $Code &= '4mbyKLr+UZYlJa2KgCqCNX9gI0X9KOmrGCD5Ak2KiJS1lbO2I0JNok4VEE+oDIVEDSohDlOcOW+VQoXkIQja4XfnPNHPM1/vUBEE'
  1352. $Code &= 'W1ss8ON+HQdB92jt0hgkMvCLxMEY4Onb/VzyhW/PFe3DCyQCRU+zYg3+Hhroxt0acImfxUyJhCRSNp9m3cmaz9wAR0WF9fwxhEcC'
  1353. $Code &= 'A4A4MTCwPhODvCS22JlYHDAWQD3JdUvEuPp0hhNd+JFKgy5gM4JRsDmjMHpAFI0FWYbfVUCKTad0YjgmDUoSY331oehGnjuYr5Vk'
  1354. $Code &= 'wcoe6OEIyXkggxL33+uwqvnofn0JW70gQe8QRL4OE3DQy1hBjUhHvgL4CA+HonXGi8QUhZhbLNQIBxGMZq4JEv0WbMlieFngP7V0'
  1355. $Code &= 'H/03SvDLuEoJosyQ8iXyJmFQ+kr4otcpxviUQSx8uWgMaCwQGPR4koZbRfXg/TDf+/HUwkQCXQgNiBJPofQhnaQQmDueTniSRoDY'
  1356. $Code &= '8NPgGYPBAhZ0ax0EQ3y4q6oHAvfh0erDloCFNX6GHdHyVvFGRaxKRqL1hVZ0MhJgOyC/Bl6ulujaZuYzaENhBCS28BZYS/KJSdnD'
  1357. $Code &= 'rDkCFIYXDY0MhdEwxU4BGEw5blB0Y50NYJFdPmgWV024WSVSWJM00eiqycZ/DJZDhqax9QXGRjzSzIZVHqz8jn7ohJCOLXf0mdxQ'
  1358. $Code &= 'cocgWKrhtPQsx0bxaSJw5bAR2SQ4IBLor9+poMjEbu/C0+gdf6c5L89TIItdxglO+T0vyREc2Hjq8ssmg4KeIQJaB+sRVcmBuVUS'
  1359. $Code &= 'BeaPsPZgFoenNf/sEVifLy4gl40oWDtRtx5h9z/X/ghN6mE/sAbCi0TFofE51c3UdBZ3RTtBDAwQugVBTMX26FhS7gKBwDmfgzF0'
  1360. $Code &= 'ONeKOUTTGOq3TEjV2xOPqMhVRPfD2Ye0TAsEgbgcBoGkwvyaz3V/XrGOe32jChBMnOYqowXMC0zcG7vheEG5DxUe8gz5xxwo4T6m'
  1361. $Code &= 'BTAIEeg5/KsznfnqyQPUmUQGvonVINkK4AvgDaOLgxGCE32HghsHHwcjBysHMwc7B0MHUwdjBHOHLgejB8MH4wICAXVtWbhWAogR'
  1362. $Code &= '5BJyEzkUHBWOzVRJngpHaaoIDpLFB0yODYMZ4CHgMZjE4GHggeDB4AHj22cG9gOHBKcGxwjnDPcQ9xjnIOcw50DlYC+ORYIdfhh2'
  1363. $Code &= 'FsgFF5EYIhlEGhuJHBIdJEBJTClKUDZMVGNgEwhVU1a3M5InJuXWahKA8qE+5CbOJgl9qF8axIC9xE2JzZXywLXoMMB0axdUQRXC'
  1364. $Code &= 'py7U4oUCZv+CsahdST/vILdVEmBBuiadeD5Fxq4aXQvO/3RbByB1DeMB8hlW6AIi+uRz7cwk06ZHYNqU0nUtSSSLTb49KFDh4cPW'
  1365. $Code &= 'DneJPkmD8FEEFQwLx5GKpP0L6YBy4H27tRj7dhbKw6pblwwSYUYfwAIsGNNy7iLbv1MBsjxCnIn6jl2Er9Dywi9MgKApz3gV9MLf'
  1366. $Code &= '/kt27AI1fhJczxQGjZ2dCFPI6xqTuemeeLukGGXKFOG6ZA6LkNG0KapM4gPKEsjivDSJEAzn6ErnkQYbLVJAWKpoqYci9lihUAJp'
  1367. $Code &= 'yLVA+TxJ1BoW2bbHPpZcQO5yb9pU42iJ8VjxwCTJQQno7GCIg8q6FD5FmCcn5FryoD3rMrJHL7rcJUItAuo6Ih96/SgPzEoNbEwN'
  1368. $Code &= 'CZiXWb8ETYt9rhI7iKHTeeYqVYCcv2FFRUTDTMqISpDP7ECEdYzuIM2B/lSo6HMPJ+sapsQVHmJQp3IN+ZQM6RwZi5AwtrAZw3TJ'
  1369. $Code &= 'zCjgH4hFUW3o8jnQLn0GfhxQA+sifhovIwxDA23+TDKZQlAXmEIk64QiYOtJudncEsT6gSnhZpD+UiVQjQ4w97Sg/+qYBalARSFL'
  1370. $Code &= 'gxoEl3X0sY1LROwwueKF15CPMdHqDHX6KoIbDN2AsSH4McnuPBoC6wQOXQqeZRiIhti6vaki1tIEZgFUhtAgxCh1HZT1rsRx/BSU'
  1371. $Code &= 'XkWOzUNJom4W3hrXdgkUApGAQWAUD4afarkB35Ah+2+GKmRrEx3QPaEm2U2AuWAMZYRN3reimyOryUfRBAxGk7YJ0HMZQrE8ykGW'
  1372. $Code &= 'fg2a9MD7w+sUM3LnkxJtjFpbXbl7Qd31Am1GaXwJJIH9akLrDERoag0daUcP1JOJ5wLLWKiUr8QBgAjeRIg1DJgVUHvmj0LHXLDM'
  1373. $Code &= 'HglOTMQQk3LBW4CBrESx2Olk2XlrWCKgVWyo8qGgX01SkqWdQ/GlXcxaFjwE3/gJ8AlACxThg8yCBtuIXVFKgap+kBJIFH5wlHqU'
  1374. $Code &= 'dOgOilI3sI8zxwEkrzBsjPrgAknVVFULYIkYymhqH8EexAluZ51nW2nci0X4uQcn8KR/6OlKPeBnKdj7ViRnXPTIGQdoOERZcyXE'
  1375. $Code &= '3m5T7qLl6RiTClTz1jZAFFaSW8weUBNYnpu5dcIxaPxJXWE0BYUK8XUowIPggPsDIHdOrYjZw8NbmsDfCcLrakBB3xIsW2FJIhIj'
  1376. $Code &= 'hihGDIBJIdBCizhEhQSI4SjjlAvuDcggTz+C/KqVGhQGFxLrpw4rxn6e7p+IkqjgLsWIgOHwdBISKMsSDBsJqKPIanBf9xnGkOhL'
  1377. $Code &= 'b4FDiwSDkIbHIO+EW4RKR5khUFjHSZ1KKIROK7HVR8iBD4KMOCKM8Sj+OUwpgNH5cxLzZqULigaIB9zwKF8TxukCWsYlAgv3/gsP'
  1378. $Code &= 'z/MLfLwGsHx8MHS1b4pH/zKIxG0FrDFSq33pyU2ocC9F0gp8CUQB8BAA6fumHkfMxfhBRsrpMdswicFSJFz3U9mdIa8GAfmD3nBg'
  1379. $Code &= 'J3Ue5KaSsqMPLPTwcgbOdmUaK/OkugzrWW9gDDnBdjVLXDZIA1VRkOByzmHBWznIds6oLEIkFJlgIyhLPTwcK4sxoS8UCh6kGpIU'
  1380. $Code &= 'mQD9AKggdE8KHQhRARTrJgohAhAciANEEiIEEQgJIu5L7MmiIGmqWDkTWdQ/BEySiQi5rvgI8LTgkOhI3p/hLVO+ksj/fBFV9o3J'
  1381. $Code &= 'SqnBR6BppJlWETrCsgiDplXnO0LLP9CnUfJyXPo3zynOTfzxNEXvjEpBEBH3ygjB5zQGwNr/jYpY/vOKAQ0WB6GQmTozDDQDN32o'
  1382. $Code &= 'bzgozQ+q/UCTZyfoJma2Ly1EWBfIEWCTH7ydW1Zwx2rGOxhCbIE/QfbCIIAiukZ9AlrRoUSdLIMpm6bqGsCNCFAiCnXexgFN1+gf'
  1383. $Code &= '/CpEW11LgtDzQrwEtfvuBN/o6ow2QwkgxwcdGWjobl2cXJIgwEMDSA9FwaUelggZTBQLFYbbuLBJWuesGFqoWNP6CeUDCwv0KgaN'
  1384. $Code &= 'BNUh4eXBkvYDwsBNrsmJ92LB1Us0JJJLVBQhklmDUSGlVoblBrZkCB0HpBwFvZBiQxjMHidaW3oQkA7MFC8MRMYaeyCaXNybLVkY'
  1385. $Code &= 'LWluHXZhbGf0oI9zdD8PY2U9nG9+vWY8cj9ifXBrU1gltzdv3rUd5ggZdGVyFC/zsW5n6WhPIxVgB8UZCFAJEMEU4XPAEgdmHxlw'
  1386. $Code &= 'CUAwCXDAGRAHChlgmQkgIaA/pkAzgAlAMiHgQQYkWEgYnJAEEwc7SHiRODjQHBEHokRoKImwtxGDxogJZkgh8IFEBFSK0Abw48iB'
  1387. $Code &= 'K5F0IjREyA2JZBIkJKhQMCKEZkQh6IH7ElwmHCFQmMQHZlMZfAllPCHYSNAXkWwiLGa4EQwJRIxMzCH4gQOJUhISpICjSCORciIy'
  1388. $Code &= 'RMQLiWISIiSkSAKRgiJCReTGJFpIGpGUIkNEejqJ1BITJGpIKpG0IgpEikqJ9BIFJFZOFg9AHCJEM3aJNhLMJA9IZpEmIqxEBoaJ'
  1389. $Code &= 'RhLsLrEiXkQenIljEn4kPkjckRsibkQuvIkOEo4kTk78E2IAUSQRkgCDbgBEcTGJwhxhiSESoiQBSIGRQSPikVkiGUeSInlEOdKO'
  1390. $Code &= 'RGkpibIXWJGJIklH8iJVvHQoXE0BAIh1kTUjypFlIiVEqgWJhRJFJOpyXSQdSJrkfUg9kdrIbZEtIrqBUI0STST63QACNBNJAMM3'
  1391. $Code &= 'ACJzRDPGjkRjI4mmFAgwg5lDIeY3ACJbRBuWjkR7O4nWHGuJKxK2KFARiyJLTfYAyFeQF/J3JDdIzuRnSCeRrkBwh4lHEu5uAERf'
  1392. $Code &= 'H4meHH+JPxLeOW8SLyS+UFAij0RP/uF3AOLBPkehyOH5kR8j0eSxfPGP5Ml8qY+R6fKZPkfZyLn5+R/IxfmlHyPl5JV81Y+RtfL1'
  1393. $Code &= 'P5HN8q0+R+3InfndHyO95P1/I8Pko3zjj5GT8tM+R7PI8/5Hy8ir+esfI5vk23y7j5H7/MePkafy5z5Hl8jX+bcfI/f5zx8jr+Tv'
  1394. $Code &= 'fJ+Pkd/yvz5O/4qZJAXXGhcIj38SDa8bEP+3ypcYGRAEFfkg5x3NEEBAA/cYHxACFCYHGBwQIBL5mu4aEEO15MILQKzCQALfgSJC'
  1395. $Code &= 'GSAYQgcgBkJhIGBCBCADQjEgMEINIAxDwSdZbiCdKxgSZXRnkwb/I0ELhnZwDNv+Yi/GDtqLtSKldGj1Ej5UABNf8F9CcxxlQQcM'
  1396. $Code &= 'uRg9xy9MZBX+AtsuI6MgMwksBjQ/D0CfjYKUBRx3VIAjQmZgCViCecdwFN0lxILYG/vNvZEU3FvVqOt0APnXt+bTGFLOhyd87M3y'
  1397. $Code &= 'c5+SpQ+QwAYx7ffbP+sPANXB/QT/xYMO+jB9A6/j9qCmJPj7uJhvBQqEfhqvZUOrLudnFlf61kMUOeMoqg/1EVhWAcdH0vH0nPGW'
  1398. $Code &= 'bxg8NOj6xIPrvvxx7QSqKKXXgcsrkbyEvhJB3PJFtLo1G6zuOKpGIQ40ki2BL7P0fYt8tltph/JIwmebE+xoWECbupFtgznoQbib'
  1399. $Code &= 'G0oT9OWLYktLQzjceVB1GBWNRvzu2q0ebTlDKK36ZF4KaDjomMW/McdgdA5IQ/K9axezawJE+OvBuPrfng/WdOoOaElp0PGxDekK'
  1400. $Code &= 'N68gcaM73vZSeUk8iiQH2TBIQUDDkIQKEH8sRbMtYZ0U67YcBCB3HonR7DyYbFFEOdPg45j/yMEh2I0UQQFee4rzFujcsTUgTmhF'
  1401. $Code &= 'CYkObAUbgfhY6Mxe/IiBYJkURGwULokgdtJpXvgt6WzOkhp7E7Sy0hR1Ic5F5j7B4tPikj5OSdEwEh+RGQeLKOmgWaMSZBMd4bpv'
  1402. $Code &= 'A/4sdQxvXyIjMNPnq3vwK24Y/60M+qIaOf1y0FUSo15hAvroInF2FwpDLLwAYzTrVit767w0ewDoOe8PR/1IA9lKRMKfUegbcErX'
  1403. $Code &= 'UnQb9RriAzzoTHQ0KuZwPKNbEXYbAXvffZM5rwNJRMSJfxlAMHOwnG/4GDKxPS6L/nxLbOxt36SDyfqG/2o0h/yB9Ltx1KMVBn5J'
  1404. $Code &= 'cY4y9hqWKXT9x4u48XuEIUGLBohDeJWmiHAaJH5EEURo68TkvZYkYLsCbkC5DF+aQl6di1hFVHuSBrj/S8GGSxDccwjMDiMyTZ8D'
  1405. $Code &= 'xVU4uXW8LuIeemO4CH0wDoYeD4dYxek0UBpnVloIg7oMwccGQU/p3yTUg7h0KXMhow1OB0M+CR4k1A8JxwhYdTnOSabEERjFQ3Lf'
  1406. $Code &= 'BPbCAnRH+A8QH4sSdT69pMTwkxMFB1Ww7jTYBZNGGKiGNW0eHuVN6NQ5Aon9DvQYZOUBImUlSe4YYjR+EL/IrQfHSkCyDgJB9kYI'
  1407. $Code &= 'Af7aOFOEMs1s6PVDrJvhdyiXRE969yWJyNxEH+j6YC4Ea8AfdzmQOHCOgz1RJAc8CHQVciUcVt1s0x2ERQTyByhDwe3dDM/8Uuns'
  1408. $Code &= '4XkP+giadVA/kU5NKP+QyJDqQcoQoxToL6uyPl8IlPfVs5maTGAs5VICwXcozQmxVC7O6S2lBFL9UHaGmlYbcIyUM+hWZxXIf6lg'
  1409. $Code &= 'Yu4FN7O4brfCgP389BIyIQ73xWq1YhHX9RoeNS2lC0BO/PJEC5kmL7G/45ZkOEYQMAJnI0SIkIGExqSYyRmxEo2yoMCjkv+RjauX'
  1410. $Code &= 'tKYFFusFCoEgosRMayAgpLaksr2Hq2hKb+U1UIRyQW4VjO8wyohFsdEvhTMYJhAyPbMismYUK8CRgeQDchAwywSTI3oU92UURcXv'
  1411. $Code &= 'ENCRlddf4Wz0SAyRAHyPfxEERTrmJWwsh0SPyRC+bkiRDEUYK3vExpBo60gNTrTBt3gQUooFNGF5c0g58XFIesQgsDhfrC1YLud3'
  1412. $Code &= 'ShBP3SUBUBgpyoIaHI0EE3xWOvwW0esC4cDP3185oOLNAWCaBGhs4JlZE0yJiWLYOeg9u4kFHCneSQEd1oleSIfffkuiiE4DWhDR'
  1413. $Code &= 'Fo5xhREIJHMTRjE7n4h2ikoasZr/x++awJKUX4J3UCBysVIQtT87AShzB4gcEZ9ARiq6eAUKOfdyy4jzKcb4iAi1j8ZEHuYpVf6K'
  1414. $Code &= 'oF6DIssCSTEf95qV5AcpyhQjnAJ5MA8hOH5DIKI2HTe81V24CFxzeIIknQgpAlNIZUqI+gHezTK31geN0HQS6PNZFuex60k2KEjz'
  1415. $Code &= 'pkzB9hDB+Ali63tSPIhcN1jBtcGJZ45FuYq0ZIYLUJy3j/LIBAvnBiAyRbgmKKLN6e3YbZn4CiKQp0RTayAgmmSZ5SCOvVBhOIHh'
  1416. $Code &= 'd89WAVYt33SkJagUyETn+qi2hnEKFJJbDAGEkQ1Oq3JBjQqdRY0etk+hKWs2sRJABrykQpgTKHQWmchFGkPhB9DT7SkKz+kj/8JE'
  1417. $Code &= 'A5hokuEaigPBSK0P0e1Jzyw+3QTZHxQDL8wo/xnIdDsJJAUM6Nkh6E5QUI3aMgKM/lF357bpZBtkAiEQWD3po9InAQnx6Nb2sjcu'
  1418. $Code &= 'E7i1hZKEhEKB430zKGMIRcAznRAOODRkIxIF8XMITdgsUPuuSV24TwxAdRMkPgkaD42pwZk7P8HMhKCtExAb6JXWxZHFjgwW1EUe'
  1419. $Code &= 'K4mEakjUYCcLKVLoT3BPmnj5FVh6KexvGeZjDU6SUPj9gqokRShCqkfl+hpSn00B5OjRq833OHwdEDklgpUHFDxpmKthVEgoWKIO'
  1420. $Code &= 'RcI6JP4dbzENRYt+QnpT8kt/RIfZ/s7v1/kO+rInTtMps4MyBsmG+2FJZ2tSvxIhJynCKfrBitySBtkkS9aXINOSlOnk8elpHfc7'
  1421. $Code &= 'POMRQBmxDqzSI4D+UQ4I6ZIRQAXyyBTqYuEfZBd24n2BcQGCQCAP/0/CIzrAnUzZdAhWQHhGDXCB+R49MU0SJPrJVvh4RIV+fEiD'
  1422. $Code &= 'EaanlHDfdP5zTFuasfj969xrZGF8iVuBNP1R6PzxOpYf4CZZZuRM+gPxheaMRogOV//qfFvCcqVrOvATcyOjPCFqx2iHFLwtpAAj'
  1423. $Code &= 'ct1JjU5kaAiGqfI9TaGOPxiJAQZGWNIrtcYv6JMFKMcBB7K1SuFYMZ6UMpZEO0SCQRPokd9oK0UwuvF8KiT1EfLwnvuA6LWtFZGR'
  1424. $Code &= 'Vw0jEig1dANSdLYFD4MYAhASkE8leAIHjUj/SnH1i58nzVgzBIjnnNa0nMsoKgTJOfl2Rog6vkf8kD5RPlQ7VUNGR0axd7qyHhgQ'
  1425. $Code &= 'Q07XQ3NUFyRVte8xOTnP+SRz9RJe/D6aYSbCOcchPUNWRc4WXMpt2fd8JI6E7QoT6TcmCEXTvL8GJWREUva1l/j6TALUFHMgXHmH'
  1426. $Code &= '7EBy+SK5XxJyDcrHuTLYNSeZCzjoiYSTpc6srvWypc4IwJYitpn9mvMMw98RenXE1FIDKJhG++bMStH8QJvRZMGjBybN6OtvQonQ'
  1427. $Code &= 'olQ/kfmifyQLSgfBGNAk+QGhxothHSPJPAM1dKyApDnRd0tYsmookBZ7ZpvFSOQJdeq2GCyC6CBLBfodDIZKz2bFFr6IpDF1mHTk'
  1428. $Code &= 'D48IKvmI9A7wFfmLJqJ051i+CEIDfpvuJOtOiWi61m4EnXtdE3xc+xAJyEQE6KPcyu4uGWhC6Gi2aSCs+JBmi1cg4XgxTmy/YEGm'
  1429. $Code &= '+UIVBlKTNEfKbHdTlPktuZABQ9yEU8djnFEN4kkhg30o9ltOKBJFwDhosUW4KRJfWftAFBGD/txyYr/QUL2vTSxZ/kuVUBElUxii'
  1430. $Code &= 'YXMI/ZqcUliUY4ToE+OMZQuVqS5RNp4jtEqpV0qNbCo0Ou8MZ/dRx06GnPvpUb8QNHdN6F5ZWLnZqL5EH8t6Zz4ELz2sullDCATx'
  1431. $Code &= 'GvTLtxa9hEwUx1OoUPCSv5WRWMJluDXaIHbqSwi2pT/CWadeX166y7KlYAz/yUUhbekYBpUkQ5RNLxVdtVZtFTwyyiwBYQU5+Hb/'
  1432. $Code &= 'Tw1V1KePXbC2nVXLqA2gslesyayuOLdpwqKvArXGSbtMF9nK6Ac4FMC5jELSgK5kVEVgd2Wlp8vYNolIjiuQ26Zoig8rGxqaWjOC'
  1433. $Code &= '7FaORBkhSfYriAoQk4JFLgkUQMB0mAuPGhwzrBYfFYpU3DKdUMuLpbD2RLLZQiIQe/f5zDt+E1By3rYEGCnXM8hEpNhA7UZlSAiW'
  1434. $Code &= 'M6iLZBe8FoyBhlXgEiH0JApglMP6RwNCAfcVkWy8YI+p+xDA6shha5P930k//ORgfyEBrTrpRwRK12KkCTwnTfSp+Yjr1rIkFykx'
  1435. $Code &= 'KEwlBk/kxJf1a4hMUyXIGF7RUfVj7E+w7cCU2iXB5EvagYQ7TjDhHyiUEdgbRK/QRwiFnvMGNUY0X1QKmSzcZofK6wRpBrLCLQZI'
  1436. $Code &= 'SQNWODUUDusKDlrlQKU8Avk50YewR86bGDVQTAqJejxcFUhCxCgKu0jBzX5yiO51XPCWlFRMIkgJddbKKPTpaC0Zr2Kg9Jv3bMtm'
  1437. $Code &= 'XsqiNNMVoywRAU8QCrNOjVho7aFl9BvW6MFIAh1DHP+6RktJxS9aHqoTGb3CpZ3+ewMH6PiAHYTrBd3+75bLnRQy00WzfQnpdSZR'
  1438. $Code &= 'L6Xop+AQlRI1+THoEEcYiRNmtJFcWAceE0Ly4kGZJBsqMgsIBW5ihWeWzyOW89A7bgIcdDXo3ga0XFvmEjebMkuJpykxwumh85Z8'
  1439. $Code &= 'QhxPycphjwdsuetU2yMKFyt7GPydvDwPUwgBbxx9O7MM8H7FNahCBLx0MvDwXi6lgEhGiUj4QqbG9yRFs0N/NLkPFEVBp7AWg/oT'
  1440. $Code &= 'M3QNCg6qCN0gRonI6wmwneG0/x2QSAT32P05XywZmgzhQEwLneICYHyNBFkI/Q9FA07Y8EtIn2meBJP3BodOj0sMditNKNc3Vfg+'
  1441. $Code &= 'MunESlnU4k9KugrL5zKnVDFwdD2de1WMNEwSOERNK88kUDOqKfQgddCdUbjPZ8dDvY0vxIO/zqeT6yudPsbfpzUXdBTpMZ5EC4N7'
  1442. $Code &= 'k+YfsTsKtAqD78/ImD91JZc4U3Z+gn1mY5he+mnWG/lELQcQ++vBPotXW6RsUOUEQr8NxwNWQFDrpbcLBFoWDDnGdidI8smGwC+i'
  1443. $Code &= 'IAHq6MZZt0aZgdAM+iipPduEBK+JF4pC8Ulqtk7WaZ9PBTswNiZFQlFEzR2RN0AU9kAIWwLAz4lQID3HQvDhO6NR1BKZygl69JHL'
  1444. $Code &= 'y/baE27V6JoWBHP8bTAKEwK4/99hC0LDgkN1BX0Bv+sUhLG0EonZ5Au5UgSWPynsGgb/o7IdBkU5l3KgEwtBRHrzAUUGmxwJI+SO'
  1445. $Code &= 'cl6NtDAz7bXHhZDglrCKdZh5O39El3MQ7GXUa/E/H0isOCd0WVCwqHPHB2IfZYnRVKYF02dA1tIskIcHCHIni0/TTI2UgquQhL9H'
  1446. $Code &= 'wZnC+CjyWJYuAZ9jwIlCOCcHc+JIjcZ8CGNUUMcBcI8S6PT+IWxGCJTkFhsL6OT+/F3LA4IMKWcuNk55CtZuFA6dCHwEdBH95nVf'
  1447. $Code &= 'HIAW6Orj3o02VgjSIPy4SYWQJ6SESWk3XqULgzgNDianeEQOywZduhy5pVNqxV9lOa4IwcxiaAF37HZQXwmLSXpFilINjUIwoZAa'
  1448. $Code &= 'RYWDev9Ltjp2nsqEr9utCUG915hy6BuCVn4mQS9sJEQF61g5I4tA8H7yb5BwSD9SNShF4HfTTuK9Gd/UxSwvJcUghY1F/OiYteop'
  1449. $Code &= 'TT6F4/5MIeFI2p159YXo81YXz7ajS9VWDTLiI4lgX1gFdYf0OkkMOcNyQxnUQxsddzdPKfsFgetPG8FAAkqNhJ6VRjonRlhxqRcp'
  1450. $Code &= 'Cs4tEafY6cVuhIYyHWAFh+wFkCDp3qkcfYWTFVfc5OtBMtPlLOmu4ypSkLEWbjh+ULTLCSjpJiuAFkGG0KS1QhmCEMeAVTqsQhT+'
  1451. $Code &= 'p3MhSUdFPq6AQ/kPdeX/7iROgFLwkYfIw4ooGHWAFoiS0yu0GoQMsFKEDlu4XYSlXRjtWUgJgenrqiVJECDCmIsEboIK+UpacAPg'
  1452. $Code &= '6SrMu7BkkDIk7P4xxglHkwLEIk6UBNxEcZUEDpYIvoghlxFRImMgtpggJZlELJKIEJqAHZuAdp6BfRGQoALuInSiBMdEdqMe4iBu'
  1453. $Code &= 'pETq9Yl5p4hZ72Fjb3LFZdR0IJ3O6eeUGmseqSrpJWk53EbcncdrXo9AO3rx08x+QiPyYgjhUgfPcJVhfSEHdVctHw1t0sc9KGfn'
  1454. $Code &= 'WGTjb2aZYmzWnM2E4VBthnmsSqIbHNjueQ9tYm9stFe9G5jbfDSKZQ5RZyiQvK0QHXR5cJEWaocbYa45+mPypLCBk3QhmRgbdTlu'
  1455. $Code &= 'ax1vd1QgI9P6CltnedqU0oxFp9RGdxLrt4xwsnplvFnGfm1wgKsl7hj1lLBo4XDAAA=='
  1456. $Var_Opcode &= '0x89C04150535657524889CE4889D7FCB28031DBA4B302E87500000073F631C9E86C000000731D31C0E8630000007324B302'
  1457. $Var_Opcode &= 'FFC1B010E85600000010C073F77544AAEBD3E85600000029D97510E84B000000EB2CACD1E8745711C9EB1D91FFC8C1E008AC'
  1458. $Var_Opcode &= 'E8340000003D007D0000730A80FC05730783F87F7704FFC1FFC141904489C0B301564889FE4829C6F3A45EEB8600D275078A'
  1459. $Var_Opcode &= '1648FFC610D2C331C9FFC1E8EBFFFFFF11C9E8E4FFFFFF72F2C35A4829D7975F5E5B4158C389D24883EC08C70100000000C6'
  1460. $Var_Opcode &= '4104004883C408C389F64156415541544D89CC555756534C89C34883EC20410FB64104418800418B3183FE010F84AB000000'
  1461. $Var_Opcode &= '73434863D24D89C54889CE488D3C114839FE0F84A50100000FB62E4883C601E8C601000083ED2B4080FD5077E2480FBEED0F'
  1462. $Var_Opcode &= 'B6042884C00FBED078D3C1E20241885500EB7383FE020F841C01000031C083FE03740F4883C4205B5E5F5D415C415D415EC3'
  1463. $Var_Opcode &= '4863D24D89C54889CE488D3C114839FE0F84CA0000000FB62E4883C601E86401000083ED2B4080FD5077E2480FBEED0FB604'
  1464. $Var_Opcode &= '2884C078D683E03F410845004983C501E964FFFFFF4863D24D89C54889CE488D3C114839FE0F84E00000000FB62E4883C601'
  1465. $Var_Opcode &= 'E81D01000083ED2B4080FD5077E2480FBEED0FB6042884C00FBED078D389D04D8D7501C1E20483E03041885501C1F8044108'
  1466. $Var_Opcode &= '45004839FE747B0FB62E4883C601E8DD00000083ED2B4080FD5077E6480FBEED0FB6042884C00FBED078D789D0C1E2064D8D'
  1467. $Var_Opcode &= '6E0183E03C41885601C1F8024108064839FE0F8536FFFFFF41C7042403000000410FB6450041884424044489E84883C42029'
  1468. $Var_Opcode &= 'D85B5E5F5D415C415D415EC34863D24889CE4D89C6488D3C114839FE758541C7042402000000410FB60641884424044489F0'
  1469. $Var_Opcode &= '4883C42029D85B5E5F5D415C415D415EC341C7042401000000410FB6450041884424044489E829D8E998FEFFFF41C7042400'
  1470. $Var_Opcode &= '000000410FB6450041884424044489E829D8E97CFEFFFF56574889CF4889D64C89C1FCF3A45F5EC3E8500000003EFFFFFF3F'
  1471. $Var_Opcode &= '3435363738393A3B3C3DFFFFFFFEFFFFFF000102030405060708090A0B0C0D0E0F10111213141516171819FFFFFFFFFFFF1A'
  1472. $Var_Opcode &= '1B1C1D1E1F202122232425262728292A2B2C2D2E2F3031323358C3'
  1473. Else
  1474. $Code &= 'RKcAAP8AAYPsDMdEJBxwOMMC6AUqMAqJGhiDxAwM6cdxGP9gAjws6O8ppBZliwg4ZyvAUAyJVP4UyA4IkBAiBH4MoScIEzQiEQR4'
  1475. $Code &= 'MO3w6B5sbl6OIMOoLMIQIKQDbhw1NCLIIEKqZREIAhwRBBkRGpxUCeY5BUo8xClTaCGI6D+qsDIjJLAIJAQrT4giDDkiWvl6QymE'
  1476. $Code &= 'codKI2tWfbCNFCSn8ReeGilhGmILKB4JVleLfCQmdJIxTEA8hcnyLwD8g/kIcif3x1UBhfgCpG5JFLCABWalg+n+iTPKwQrz13fR'
  1477. $Code &= 'w+EDuaTruhYGX17DV3dEEDAwD7bGDGnAbAEDrQjIdANBCqpJSAp1VPY//Cnzq0AAql/DUOgG3zPPxVhbBNn5/7gCRJYAMAd3LGEO'
  1478. $Code &= '7roDUQmZGcRt6I/0agBwNaVj6aOVZACeMojbDqS43D95Hh7V4MDZ0pcrTLYACb18sX4HLbgA55Edv5BkELfs8gAgsGpIcbnz3gBB'
  1479. $Code &= 'voR91Noa6wfk3W1RtZD0x4XTAINWmGwTwKhrAGR6+WL97MllAIpPXAEU2WwGcWMAPQ/69Q0IjcgAIG47XhBpTOQAQWDVcnFnotHy'
  1480. $Code &= 'AwA8R9QES/2FDQHSa7UKpfqo1DVsAJiyQtbJu9tAD/m8rOOg2DJ1XN8ARc8N1txZPdEDq6ww2SY6gN5RgOTXAMgWYdC/tfS0ACEj'
  1481. $Code &= 'xLNWmZW6A88Ppb24npACKAgAiAVfstkMxiQA6Quxh3xvLxEATGhYqx1hwT0ALWa2kEHcdgYAcdsBvCDSmCoDENXviYWx8B+1tgAG'
  1482. $Code &= 'peS/nzPUuAHooskHeDT5wA+OAKgJlhiYDuG7AA1qfy09bQiXAGxkkQFcY+b0OFFrn2JhQBzYMGWFTuHo8u0+lQaAe6UBG8H0CACC'
  1483. $Code &= 'V8QP9cbZsABlUOm3Euq4vpCjAIi5/N8d3WJJDy3aFfOg04xlTNQC+1hhsk3OQC06dOC8AKPiMLvUQaXfDErXldjExADRpPv01tNq'
  1484. $Code &= '6QBpQ/zZbjRGiABnrdC4YNpzLQAEROUdAzNfTJDnAMl8Dd08cQVQ8kEcAicQQAu+hiAMyQEltWhXs4Vv6AnUAGa5n+Rhzg75Ad5e'
  1485. $Code &= 'mMnZKSLU0LAAtKjXxxc9s1k9gQ0ALjtcvbetbCy6wJQAuO22s7+aOwziOgOA0rF0OUfV6jyvd4SdFSbbwLIW3HMAEgtj44Q7ZJQD'
  1486. $Code &= 'PmptDahaq3r4zw7kA53/CZMnroAKsZ4eB31EgA/w0qMIhwBo8gEe/sIGaQBdV2L3y2dlgAdxNmwZ5/BrbnYbANT+4CvTiVp6ANoQ'
  1487. $Code &= 'zErdZ2/fOLn5h+++jkMxtxfV2LBgHOij1kB+k9GhxMIA2DhS8t9P8Wd9u+ZXALym3Qa1P0s2ALJI2isN2EwbBwqv9koD4GB6BEE7'
  1488. $Code &= 'w+8c31WOZ6jgjm4xeb4AaUaMs2HLGoMAZryg0m8lNuIAaFKVdwzMA0cAC7u5FgIiLyYBBVW+O7rFKPy9sgCSWrQrBGqzXACn/9fC'
  1489. $Code &= 'Mc/QtQCLntksHa7eW36wAGSbJvJj7JyjAGp1CpNtAqkGewkAPzYO64VnB3I4E1cABYJKv5UUegC44q4rsXs4GwC2DJuO0pINvgDV'
  1490. $Code &= '5bfv3Hwh3x/bC9TD04ZC4rDx+LMA3Whug9ofzRYAvoFbJrn24Xc5sG+CR7cY5lpgfnBqAA//yjsGZlwLPAERgJ5lj2muYvh50yZr'
  1491. $Code &= 'YcUAbBZ44gqgAO7SDddUgwROAMKzAzlhJmenAPcWYNBNR2lJANt3bj5KatGuANxa1tlmC99AB/A72DdT4LypxZ4Au95/z7JH6f8H'
  1492. $Code &= 'tTAc8r0QisK6yvKTALNTpqO0JAU2fdD2BgDXzSlX3lS/ZwDZIy56ZrO4SgBhxAIbaF2UKwBvKje+C7Shjj8Mw4DfBVqN7wItuQAP'
  1493. $Code &= 'QTHAGYJiNjI/w1PIJCbF2QBF9Hd9hqcAWlbHlkFPCIoD2chJu8LRuOjv+nvLAPTjDE+1rE1+da4Aji2Dns8cmIcAURLCShAj2VMA'
  1494. $Code &= '03D0eJJB72EAVdeuLhTmtTfvzJgcB5aEgwVZcBuCGKngmwHb+i2wmss26V3Ed+Y4HGyA/98/QdSeDgBazaIkhJXjFQCfjCBGsqdh'
  1495. $Code &= 'dwCpvqbh6PHn0HXzACSD3sNlssXaMKquZOufRgBEKMxrb2n9cH927jEAOe9aKiAsCQcAC204HBLzNkY937KBXcZxVHDtYINrAvT3'
  1496. $Code &= '8yq7tkDionUAkRyJNKAHkPsAvJ8Xuo2EDnkA3qklOO+yPP/y8wBzvkjoan0bxX1BACreWAVPefBEB35i6YctkMLGHFS4CQCKFZRA'
  1497. $Code &= 'uw6NgwDoI6bC2Ti/DTrFoIBM9Lshj6eWOQrOjo0TCQDMXEgx1wFFi2L6bspTIOZUAl27uhVsoGDGP40AiJcOlpFQmNcA3hGpzMfS'
  1498. $Code &= '+uEX7JPLD+Nc4GJyHeZ5AGvetVRAn4RPAFlYEg4WGSMVAQ/acDgkm0HkPacTa/1lHCSAfCUJy1dkBTjQTqOuwFfin4oAGCHMpzNg'
  1499. $Code &= '/bwAKq/hJK3u0D9ItG8AEp9ssgmGq/5IAMnqFVPQKUZ+APtod2Xi9nk/AC+3SCQ2dBsJAB01KhIE8rxTAEuzjUhScN5lAHkx735g'
  1500. $Code &= '/vPmDue/wv3gfJHQ1T0AoMvM+jaKg7t9BwCaeFS8sTllpx+oS5jHOwqpUCLJ+rUACYjLrhBPXe8AXw5s9EbNP9k8bYyAwnRDElrz'
  1501. $Code &= 'AgMjQerBcGybgLh32EcA1zaXBuYtjsVwtTilhIAbvBqKQXFbALtaaJjod0PZ4mzyHgBPLRVffjYMnO4bHCfdHA4+EgCYuVMxgwOg'
  1502. $Code &= 'kGKui9HItZIWDsX03Vdg78SUp8Lq1QCW2fbpvAeuqBKNHLcBITGcKu/Ihe2QKwDKrEhw028bXT/4LpxG4UQ23maAx8V/YzlU6AMi'
  1503. $Code &= 'ZfNN5ZiyAqQAwqkbZ5GEMCYAoJ8puK7F5Pnu3gP9Oszz1nuw6M+8H2upgEBaspk+CZ/qfwA4hKuwJBws8QAVBzUyRioeczx3MYC0'
  1504. $Code &= '4XBI9dBrB1E2g0Z68LJdY05M19cBD+bh0sy1yfkxJ/TgSgcSlq8LI6C2yHCgAZ2JQbuERl30AwcAbDgaxD8VMYVxDgAoQphPZwOp'
  1505. $Code &= 'VAB+wPp5VYHLYg5MH8U44F70I5idAKcOs9yWFaob4FQB5VoxT/yZYsTX2A9Tec4XYOFJVn76H1CVLcB71BzMYhM9io0BUruWNJHo'
  1506. $Code &= '1B/QANmgBuzzfl6tAMJlR26RSGwv/lMAdeg2EjqpBwkAI2pUJAgrZT8TEeR5AHmlSLyPZgAbkaQnKoq94PbLAvKhjdDrYoDzwCPv'
  1507. $Code &= '5gPZveG8FPz4pw0/A4OKJn6ykbm5JPRw+AEVy2k7RuZCQOH9W7UAa2Xc9Fp+xTcACVPudjhI97F5rgC48J8SoTPMPwWKcv0kk8gA'
  1508. $Code &= 'NwBqwgFu1IQDWQW+RgLcqINZ6/jLBrIAfI0EhRZPBbgAURMOjzvRD9b6lwAN4e9VDGT5GsCUk9gICi1zni49R9IDcKMmHLjJ5B0H'
  1509. $Code &= 'HneiHylnYHCsCy8bAJth7RrC36sYAPW1aRnI8jUSAP+Y9xOmJrERAJFMcxAUWjwVHSMw/sB6jrgWTeTsFzvgRgM41yyPOfiSyTsA'
  1510. $Code &= 'ufgLOjzuRD/shB6GPlKewMBlUAI9WBcDXjZvfZw3qMPaNQABqRg0hL9XMQCz1ZUw6mvTMgPdAREzkOXIJKePsNxM/u0AJ8lbLSZM'
  1511. $Code &= 'TR5iI3uOoCIgmeYgFfMAJCEotHgqH94AuitGYPwpcQp/Pjv0HAAtw3azLJrIAPUuraI3L8CN9HAC9+dYca5ZYB+ZMwDcchwlk3cr'
  1512. $Code &= 'TzxRdoDxF3RFm9V1D3jciX7gtkt/FggADX0hYs98pHQAgHmTHkJ4yqAdBHr9QMZ7sC68bFyHQQBt3vo4b+mQuBT6hpByAFvsd2oC'
  1513. $Code &= 'UjFoADU482kIf69imDsAbWNmqythUcEA6WDU16Zl471xZAC6AyJmjWngZwAgy9dIF6EVSSxOH7gXeQC1Svxj3k8fywkcwJK3Wkyl'
  1514. $Code &= '3TmYTQCaxEav8AZHAPZOQEXBJIJE4jIHzUFzWA/QKuZJQgAdjItDUGjxVABnAjNVPrx1VwAJ1rdWjMD4UwC7qjpS4hR8UAPVfr5R'
  1515. $Code &= '6DnQWt9TACBbhu1mWbGHJqRYeQDrXQP7KVwAWkVvXm0vrV8AgBs14bdx9+AA7s+x4tmlc+MHXLM85muQ/ucyZwC45QUNeuQ4Sg4m'
  1516. $Code &= '7w8g4O5WnqLsD2H0YO1A4i/o04ju6QCKNqvrvVxp6gvwuBP9gO3R/J5sAJf+qQZV/ywQABr6G3rY+0LEAJ75da5c+Ejp4PMAf4PC'
  1517. $Code &= '8iY9hPAAEVdG8ZRBCfQAoyvL9fqVjfcAzf9P9mBdeNkAVze62A6J/NoAOeM+27z1cd4Di5+z39IhyN3lSwA33NgMa9fvZh6p1rZ7'
  1518. $Code &= 'ANSBsi3VBKQAYtAzzqDRanAA5tNdGiTSEP4AXsUnlJzEfioA2sZJQBjHzFYAV8L7PJXDooI708EA6BHAqK9NyxKfxY9DqsnI8fsL'
  1519. $Code &= 'qHQHRADMQ22GzRrTwALPLbkCzkDA75F3APxtkC5CK5IZACjpk5w+pparAFRkl/LqIpXFAIDglPjHvJ/PAK1+npYTOJyhAXn6nSRv'
  1520. $Code &= 'tZjsBXcAmUq7MZt90fMAmjA1iY0HX0sAjF7hDY5pi88Aj+ydgIrb90L0ggFJBIm1I8aIxGSaD4O/Dljg5rAegNEA2tyBVMyThGMA'
  1521. $Code &= 'plGFOhgXhw0ActWGoNDiqZcAuiCozgRmqvkAbqSrfHjrrkscEimvwaxvrSXGz7AYgfEApy/rM6Z2VXUApEE/t6XEKfgAoPNDOqGq'
  1522. $Code &= '/XwAo52XvqLQc8QHtecZBrSgp0C2iQfNgrcM21CyO7EPObNiu0kAVWWLsGgi1wC7X0gVugb2UwC4MZyRubSK3gC8g+AcvdpeWgW/'
  1523. $Code &= '7TSYvsgAZQBnvLiLyAmq7gCvtRJXl2KPMiTw3nkCX2slucCane+wQQDFik8IfWTgvRxvAYeA17i/1krdANhq8jN33+BWABBjWJ9X'
  1524. $Code &= 'GVD6DzCl6BQ/e4Bx+KxCyMB7AN+tp8dnQwhyAXUmb87NcH/4lRUAGBEt+7ekP5550ACHJ+jPGkKPcwCirCDGsMlHegAIPq8yoFvI'
  1525. $Code &= 'jgMYtWc7CtCAh7JpADhQLwxf7JfiH/BZhbsO5T3RoIZltOA6Ad1aT4/PPyi/7AcQ5OrjYFhSDdgB7UBov1H4ocgr8AHEn5dIKjAi'
  1526. $Code &= 'gEZXnuL2b0kCf5MI9cd9QBDVGEjA2QBO0J81K7cjPo3FvJaAoH8qJxlH/QC6fCBBApKP9AUQ9+hIqMFhFJvNP9wjtgCQHTHT96GJ'
  1527. $Code &= 'ag/PdhQP4Mqs4Qd/AL6EYMMG0nCgAF63FxzmWbipAPQ83xVMhefCANHggH5pDi/LCXtrSHeDaA8NyMdosTpzKYAEYUyguNn1AJhv'
  1528. $Code &= 'RJD/0/x+AFBm7hs32lZNACe5DihABbbGAO+wpKOIDBwa7tsAgX/XZzmReNIAK/QfbpMD9yYTO2aQACSIPy+R7X9YAClUYES0MQf4'
  1529. $Code &= 'AAzfqE0eus/xPKbsgJL+ibguRmcDF5tUAnAn+LtI8LAhAC9MyTCA+dtVAedFY5ygP2vox4MA0xdoNsFyD4oAecs3XeSuUOEAXED/'
  1530. $Code &= 'VE4lmOgP9nOIi+MW7zeY+ECCFwSdJwAmJB/pIUEAeFWZr9fgi8oAsFwzO7ZZ7V4e0eVV6LEAR9UZ7P9sITsAYglGh9rn6TIcyIKO'
  1531. $Code &= 'QHDUnu0osQP5UZBfVuT4OjFY5oMACY+n5m4zHwgHwYYNbabwtaThQGC9FvwFLykASRdKTvWv83YAIjKWEZ6KeL4AK5gd2ZcgS8l7'
  1532. $Code &= '9A4urkjAIAH90qVmAEFqHF6W93k5EipPlwGPXfLxI3BkGQBrTWB+1/WO0QFi5+u23l9S5AnCAzfptXrZRoBovCHk0ADqMd+Ij1Zj'
  1533. $Code &= 'MABh+dYiBJ5qmjm9pgAH2MEBvzZuALStUwkIFZpOAHId/ynOpRGGAHu3dOHHD83ZABCSqL6sKkYRABk4I3algHVmAMbYEAF6YP6u'
  1534. $Code &= 'AM9ym8lzyiLxAKRXR5YY76k5AK39zF4RRQbuAE12Y4nxzo0mAETc6EH4ZFF5By/5NB6ToNqxJlOY6w+a6+nG4LOMoUULAWIO8BkH'
  1535. $Code &= 'aUzovlEAmzzbNieENZkHkpZQ/i4e4LlUJvzeAOieEnFdjHcWAOE0zi42qatJYIqy5j8DIACBg7t2keDjEwD2XFv9WelJmAA+VfEh'
  1536. $Code &= 'BoJsRHlhANSqzovGz6k3AH44QX/WXSbDB26ziXZ8kO7KxG/8HQBZCrGh4eQeFADzgXmoS9dpywATsg53q1yhwgC5OcZ+AYD+qQCc'
  1537. $Code &= '5ZkVJAs2oJADAFEcjqcWZobCA3HaPizeb5hJudMAlPCBBAmV5rg+sXuHDaMeLnAbSD7SAEMtWW77w/bbAOmmkWdRH6mwAMx6zgx0'
  1538. $Code &= 'lGG5BWbxBgXeyAB3AAcwlu4OYSyZHglRusBtxBlwavQAj+ljpTWeZJUAow7biDJ53LgApODV6R6X0tn6CQC2TCt+sXy95wG4LQeQ'
  1539. $Code &= 'vx2RyLcQAGRqsCDy87lxAEiEvkHeGtrUA31t3eTr9Lm1UTCWhQDHE2yYVmRrqADA/WL5eoplyQDsFAFcT2MGbA7Z+g894I0IDfU7'
  1540. $Code &= 'AG4gyExpEF7VAGBB5KJncXI8dwMA0UsE1EfSDYUD/aUKtWs1mKj6QgCymGzbu8nWrAe8+UAy2LDjRd9cP3XcAA3Pq9E9WSYK2TCs'
  1541. $Code &= 'UcYHOsjXYIC/0GEAFiG09LVWs8QAI8+6lZm4vaUdDygCgJ5fBYgIxgAM2bKxC+kkLwBvfIdYaEwRwQBhHau2Zi09dgDcQZAB23EG'
  1542. $Code &= 'mAHSILzv1RAq6LGFfYkCtrUfn7/k4NW41AszeAfJDuMTABOWCaiO4QAOmBh/ag27CABtPS2RZGyX5g5jXAFrI1H0HNhhYoUOZTDY'
  1543. $Code &= '8tweTsAGle0bAaUAe4II9MH1D8QAV2Ww2cYSt+kAUIu+uOr8uYgLfGLdHYBG2i1JjHvTAPP71ExlTbJhsFWgK86jcLx/dAC7MOJK'
  1544. $Code &= '36VBPQDYldek0cRt0wDW9PtDaelqNABu2fytZ4hG2gBguNBEBC1zMwADHeWqCkxf3QANfMlQBXE8Jz8CQY6+CxA/QAwghldotXYl'
  1545. $Code &= 'Em+FswDe1AnOYeQAn17e+Q4p2ckcmLDQwCLH16i0WQ6zPRcuwA2Bt71cADvAumyt7biDAyCav7O2A5LiYBWx0vbqDtVHOZ3gd68E'
  1546. $Code &= '2yYAFXPcFoPjYwsFEpRkO4SA7Wo+euZaAKjkDs8Lkwn/OJ0KAK4nfQeesfB+DwBEhwij0h4B8gBoaQbC/vdiVwBdgGVnyxlsNgBx'
  1547. $Code &= 'bmsG5/7UGwB2idMr4BDaegBaZ91KzPm53w5vjr7v5xe3UUNgsOjV1uKjC+ih0ZMACNjCxE8e3/JSy7tng/W8V6g/tQYA3UiyNkvY'
  1548. $Code &= 'DSsH2q8KG0ygA0r2QVgEyDnfB+/DqGdgVTFujvJGLmm+8BZhAJ+8ZoMaJQBv0qBSaOI2zAAMd5W7C0cDIgACFrlVBSYvxQC6O76y'
  1549. $Code &= 'vQsoKwC0WpJcs2oEwgDX/6e10M8xLADZnotb3q4dmwBkwrDsY/ImdQFqo5wCbZMK1AkGAKnrDjY/cgdnOIUFAFcTlb9KguIAuHoU'
  1550. $Code &= 'e7ErrgwAths4ktKOm+Uk1b56ANzvtwvb3wMhhtPS1PGQ4kJoAN2z+B/ag26BAL4Wzfa5JltvA7B34Ri3R6zAelrm/wAPanBmBjvK'
  1551. $Code &= 'EQMBC1yPZZ74+GKuHWlha8DTFmzPRaAACuJ41w3S7k4ABINUOQOzwqcAZyZh0GAW90kAaUdNPm53264A0WpK2dZa3EAA3wtmN9g7'
  1552. $Code &= '8KkAvK5T3ruexUcAss9/MLX/6b3i8gAcyrrCilOzk/4kHrSjpsDQNgXN1wb6VALeVykj2WdA2mZ6AC7EYUq4XWgbAAIqbyuUtAu+'
  1553. $Code &= 'ADfDDI6hWgXfBRstAu+NyAAZ9DEAQTI2YoIrLVNMw9cAxQR9d/RFVgBap4ZPQZbHyADZigjRwrtJ+jzv6J/j9EHLrLVPDMyufgBN'
  1554. $Code &= 'noMtjoeYHADPSsISUVPZIwAQePRw02HvQQCSLq7XVTe15h0UHJh8gQWDhJaCG+RZm+CpBxiwLfrbYDbLmuY4d12c/2xAHNRBP9/N'
  1555. $Code &= 'AFoOnpWEJKKMAJ8V46eyRiC+Aal3YfHo4abM89AA58PegyTaxbJgZVyuqkRGAJ/rb2vMKHZwD/1pOTEgriAqWu8ACwcJLBIcOG0D'
  1556. $Code &= '30Y288Zd6LLtcAtUcfRrA4W7Kvj3ojEAwraJHJF1kAcAoDQXn7z7DoQAjbolqd55PLIO7zhz8+H/auhIcKrFARt9WN4qPPD8TwUH'
  1557. $Code &= '6WJ+RMJwLYfbVAAcxpQVigGNDgC7QKYj6IO/ODnZwoegxQ0h8PRMCpYOp48TjaPOXMyACUXXAjFIbvpii0HiUyB7uwBdVKOgbBWI'
  1558. $Code &= 'jQA/1pGWDpfe1wCYUMfMqRHs4Rz60vXAy5NyYtdcAGt55h1AVLXeAFlPhJ8WDhJYAA8VIxkkOHDadz0BQZtl/WunfC8AAVfLCSVO'
  1559. $Code &= 'ANA4ZAGRrqMYAIqf4jOnzCEqALz9YK0k4a+0BD/Q7p8SgHGGCbIHbMlIJKvgUxXq+wB+RiniZXdoLwA/efY2JEi3HQAJG3QEEio1'
  1560. $Code &= 'SyxTvEU/gI2zeWXecGABfu8x5+bz/sT9wgC/1dCRfMzLoAM9g4o2+prYB7uxALxUeKinZTk7DoOYSyJgqQoJtfoAyRCuy4hf710A'
  1561. $Code &= 'T0b0bA5t2T8dzXTCwIzzWhJD6gNBIwLBbHCZ2HfkgJcANtdHji3mBqXgtQ7FvBuEIHFBihpoAVq7W0N36JjcbNniFQAtTx4MNn5f'
  1562. $Code &= 'J5heOJw+BxzduZgAEqCDMQFTi65ikJK13NHdB/TFFsTvV1c5gOqU9tmWANWuB7zptxyNAqicMd5rhV4BEsoALe3TcEisA/hdG2/h'
  1563. $Code &= 'RvguZt53NiR/xcklYP9jTSzzZdcdskDlG6nCpDAAhJFnKZ+gJuQHxa64/d6Q+dbzzB46z+iAe4Cpa7yZPLJa8wCfCT6rhDh/LAAc'
  1564. $Code &= 'JLA1BxXxHh0qRjLAMXdzSHDhA7RRa9D1eviDNmMAXbJ3y/rXTtIJ4eYP+XgBe+CYKQevlhJKtmAjC52gP3DIB7tBiQOwXUYaOGBs'
  1565. $Code &= 'dhU/xChxDgCFZ0+YQn5UqQADVXn6wExiy3GBADjFH5gj9F6zAA6nnaoVltzlcFQBG/xPMVrXYsSZzgd5U9hJ4dAXUPp+AVZ71y2V'
  1566. $Code &= 'Yswx99iNigMTNJa7Uh+Y6JEGAKDZ0F5+8+xHB2XCrWxI8G51U6AALzoSNugjCQcAqQgkVGoRP2VMK3cAeeSPvEilpACRG2a9iion'
  1567. $Code &= '8n3LAuDr0I2hwID1Ytnm7z8jFIDhvQ2n0PwmHIqDP0ORsn5w2CS5aQDLFfhC5kY7WwL9d3rcZWtAqX5aAPTuUwk390g4O3a4gK6x'
  1568. $Code &= 'oRKf8IoBP8wzkyT9cnIAAAHCajcDhNQFbgJGvlmAV6jcBgDLwusEjXyyBQBPFoUOE1G4DwfRO48Nl7DWDFXvAOEJGvlkCNiTDlMK'
  1569. $Code &= 'ni13AM5HPRwmow9wHeTJIR+idx7FYOgpGwAvC6wa7WGbGACr38IZabX1EgA18sgT95j/EQCxJqYQc0yRFRw8WhRA/jAjFriOOXoX'
  1570. $Code &= 'DuRNOEBG4DmPLADXO8mSjjoL+AC5P0TuPD6GhPXVwPhSPQACUGU2XhdYNwOcfW812sPYNBipAAExV7+EMJXVAbMy02vqMxH83STu'
  1571. $Code &= '5ViQ3AmPpyeA6/4mLVsBySNiTUwioPh7IDvmmYAhJPMVKni0ACgrut4fKfxgeUYOPgpxLUAc9CyzdgDDLvXImi83ojutcACNwHFY'
  1572. $Code &= '5/dzAB5ZrnLcM5l3AJMlHHZRTyt0PxfxgHXVm0V+idwAeH9Ltk99DQgAFnzPYiF5gHQApHhCHpN6BKAcynvGwP1svC6wbbg/BYdv'
  1573. $Code &= 'OPrewRSQ6SBuhgBsanfsW2gxUgACafM4NWKvfxMIY20APWErq2ZgAOnBUWWm19Rk4r194wAiA7pn4GmNSP7LBSBJFaEXgLgfTkq4'
  1574. $Code &= 's7COHt5j/EAcCctMWrcAkk2Y3aVGxJrsRwAG8K9FQE72RAOCJMFBzTK/sA9Yc0IASeYqQ4uMHVQA8WhQVTMCZ1cAdbw+VrfWCVMA'
  1575. $Code &= '+MCMUjqqu1AAfBTiUb5+1VrsOQDoWyBT31lm7QCGWKSHsV3rkQA0XCn7A15vRQBaX60vbeE1GwCA4Pdxt+Kxzwnu43OlgFM8s1zn'
  1576. $Code &= 'd/6QVgC4ZzLkeg0F7w8mSjjuICAP7KKeAFbtYPRh6C/i/OnyiADT66s2iuppXAC9/RO48PzR0gDH/pdsnv9VBgCp+hoQLPvYej8b'
  1577. $Code &= '+QDEQvhcrnXz4OkASPLCg3/whD0AJvFGVxH0CUEAlPXLK6P3jZUA+vZP/83ZeF0AYNi6N1fa/IkADts+4znecfUDvN+zn4vduCHS'
  1578. $Code &= '3AA3S+XXawzY1g6pZu/UXcC21S2ygdAAYqQE0aDOM9MA5nBq0iQaXcUAXv4QxJyUJ8YA2ip+xxhAScIAV1bMw5U8+8ED04KiwBHo'
  1579. $Code &= '0MtNrwGoyo/Fn8jJIa7MCxEA8cxEB3TNhm0AQ8/A0xrOArksLZHxD0CQ4Px3kitCBy6T6SgZ4KY+nJcAZFSrlSLq8pQw4IByvMf4'
  1580. $Code &= 'AJ5+rc+cOBOWAJ36eaGYtW8kmCV9BQCbMbtKmvPRfQCNiTUwjEtfBwCODeFej8+LaQ6KgJ3swEL324kEAEmCiMYjtYOad2TyWAAO'
  1581. $Code &= 'v4AesOaB3ADa0YSTzFSFUQCmY4cXGDqG1QByDani0KCoIAC6l6pmBM6rpABu+a7reHyvKQcSS61vrF5dQMYlp/GBGACmM+svpHVV'
  1582. $Code &= 'dgCltz9BoPgpxAChOkPzo3z9qgeivpedteBz0LQGBxnntkCn4LeCzYlzsgPbDLMPsTuTSahisIsAZVW71yJouhUASF+4U/YGuZEA'
  1583. $Code &= 'nDG83oq0vRwA4IO/Wl7avpguNO0AQLi8Z2UAqgnIixK1r+4Aj2KXVzfe8DIAJWtf3J3XOLlYxT8A730IT4pvvT/gZMvAAUrWvwe4'
  1584. $Code &= '8mrY3eDfdzNYAGMQVlAZV5/oHKUw+n33ABRCrPhx33vAAMhnx6etdXIIA0PNzm8mldB/cC0sERgBA6S3+4e40J4aAM/oJ6Jzj0Kw'
  1585. $Code &= 'AMYgrAh6R8mgADKvPhiOyFsKBztntbKHANAvUDgAaZfsXwyFWfAe4j3lh4dlhjDR3TrgBrTPj09a5AAoP+rkEIZSWPTjAEDt2A34'
  1586. $Code &= 'Ub9oO/ArAKFIl5/EWiIAMCrinldPf0kBb/bH9QiT1SAQfZDXAMAYNZ/QTo0jO7crvZaAxScqf6C6/QBHGQJBIHwQ9ACPkqhI6Peb'
  1587. $Code &= 'FB5YPSNdP0AxHZC2iaH+0/52AM9qrMqoD75/AAfhBsNghF6gAHDS5hwXt/SpALhZTBXfPNHCC+eFaX4AM3vLLw4Ow3dIa+UNDwDP'
  1588. $Code &= 'sWjHYQTmKQDZuKBMRG+Y9QD80/+Q7mZQfgBW2jcbDrknTQC2BUAopLDvxgMcDIijgdvIGjlnANd/K9J4kZNuAh/0Oyb3A2AkkGb6'
  1589. $Code &= 'LwA/iCmTWO20RABgVAz4BzEeTQCo36bxz7r+ku7sAEYuuIlUmxdn8icAcAJx8Ei7yUwAL97b+YAwY0UA51VrP6Cc04N+xwDBNmgX'
  1590. $Code &= 'eYoPcgDkXTfLXOFQrgBOVP9A9uiYJfKLB4hzFjfvMwSC+vjgIiedEyHpHwDAVXhBi+AA168zXLDK7Vk/tjuF5dFeRx+vQf/sGdVi'
  1591. $Code &= '+CFsE9qHRgAOMunncI7iggAo7Z7UkFH5sfLkElZfOhwmwKePCYMfMwFu5g2GwQi1+KZtA71A4aQF/AEaF0kpL6/1cMMyACJ284qe'
  1592. $Code &= 'EZaYASu+eCCX2R3U9MkAS8BIri7S/QHuagBBZqX3ll4cTwkqOXldAJGX5SPxAPJNaxkF9dd+AGDnYtGOX962HevCCcBSerXpN2jg'
  1593. $Code &= 'RiXZ0OABiN8oMerpAFaPItb5YZpqEp4EB/ABvwABwdittG42FVwI7wAdck6apc4pAP+3e4YRD8fhAHSSENnNKqy+H6g4GcBGgKV2'
  1594. $Code &= 'I9gAxmZ1YHoBEHIAz67+ynPJm1cApPEi7xiWR/0ArTmpRRFezHYATe4GzvGJY9wARCaNZPhB6PkdL3lRg5MeNFP4sdrrTJrtALP5'
  1595. $Code &= 'xukLRaEHjBnwDmJgTGkHPACbUb6EJzbblg6SmTUuIP5QJlS58p4A6N78jF1xEjQA4RZ3qTYuzhEAikmrAz/mRbsAg4Eg4+CRdlsA'
  1596. $Code &= 'XPYTSelZ/fEAVT6YbIIGIdTuYQBExovOqn43qQDP1n9BOG7DJgBdfHaJs8TK7v5Zcx0Ab+GhsQrzFB4A5EuoeYETy2kA16t3DrK5'
  1597. $Code &= 'wqEAXAF+xjmcqf4EgCQVmeW4/wALjhxRboZmABanPtpxwixvc94AlNO5SQkEgfADsbjmlaMN2Xsb5C4eAEPSPkj7blktAOnb9sNR'
  1598. $Code &= 'Z5GmAMywqR90DM56AGa5YZTeBQbxSLiYSuH83N//4sNRVceAD1aJ1vfQhRz2dBvOwQOgFg+2ETESwoHivSd/B+gIM0SVAEFOdeUA'
  1599. $Code &= 'U1eD/iAPgvHAd4n3we8FeTPuwu7qfBB8wwrrCIHjLSEzDIuUYATODjPunQgIIB98GGVUGCUZHCqFwQyDD1EEidAqthAUIIuExWGJ'
  1600. $Code &= '03FIM4RIO9OEQUQJWJUslTwVQQh463WPeRAPQ3KQPdF4vBSPWIPBZyD2+GfubfyguYCNfnH8HrBPD4UmFP4gKPoGBHJLifL+SAL2'
  1601. $Code &= 'QZHz0sdgABCBVOdQvEO9IcPFvDyLfIUQvNDHAARKifh1ul9NW20TF5A7aSbqigFeXcMxwC7C7A5hjwHXcuYBg8IE0el18jCtiZiG'
  1602. $Code &= 'l2FMfTACxgop97sgfw8MN+9V5ejOHKOAiQaDxgRLAnXtX15bXYMqgeyE0qtTiYgA3c6F23/NaPAy9eybNrktgMdFgJdIBYnI5Ex6'
  1603. $Code &= 'hR9AAckf+MZ89I0qdFCjqBuZ6JIL/8oLG1Et+4N0Ez3ECL1VqVIhlXESLARgIKEFD4nxjZVIFUegmwrR+3QnJk2clHlHKqIMLIbo'
  1604. $Code &= 'UyAnFHWvlAozRQiXyLKfixwM303YUA4Q6FI8NRJdwhE1GaIjPHdNkCckdQYtIBChCRCoRAwgKvyOH/5T6fAQV/TPkbAS4fn5A4P7'
  1605. $Code &= 'AXUzUKF7EPLRGIH58SdyBvDpoAgBz/H6mRDvCUCpweAQCl8JyFtOBlaLddZ09gIKjUYBXl+sEpQQJHM8WQx0C5YGMgHBLs9BfPVa'
  1606. $Code &= 'UQe4cYAHIvfnYTYPNIDgOgQpigH4XlNYgfs1sBVKglLOeo4Dr6luXvfjAVYLiVUMgetAGbhbAcU9thYZpwpW70S+CAKORwMjBJEF'
  1607. $Code &= 'yAbkB3IIOQkcCo5HCyMMkQ3IDu9wmghAUhBIsAIgd/+MzEThaXPSktzQPN7kMxLXpIaOWkU/RxaDhM2EiG0Qod+REYnYMOAEr8z2'
  1608. $Code &= 'FIPrEM+idKqiuPoX3kSJm71JXixRjCTGJFwU1yuI5mr3QynWy7fpifO7OLqv4BTXjYQQb/At5UX8eSnk6RAmKdGajgH57NlMDqIT'
  1609. $Code &= 'QbL8ZcAnRyMUJFXxPXAvAcUaBS0fByoZ0RhNQZwEm8tJfOfexDN96Fj/DeRyFUA6dyP2+ikiCPlE7uGJ1hLCJLVKoBxoAQNTUVLo'
  1610. $Code &= 'hENYLTgZJbsECwFwSwqJunJQATkUi3QJib4KPEQJ/OL6AO9aWVvDN+ivM2K4VXcIfZXLCUCIQ0Q1MogBwrjWBQgpyosCDooEE7mY'
  1611. $Code &= 'kx7IKQq8AGluY29tcGF4dAdibGUgdjNyc8/3bg+HdWYdFv9/BvvbhkRucx/PYx/8jnQgbbyzJnmDZHJiph96c+/n8m2bDWhOjAto'
  1612. $Code &= 'GeNuZIc/Prr575mGdLthoX6HYy4ykzWE7zksGwGKAQTZAh8jA+QEfAWPuEUMexA4ERIACAcJBgoFCwQEDAMNAsLRD7WWI37IbvIx'
  1613. $Code &= 'XgZMBAeORwgjCZEKyAvkDHINOpcV6AH8haMVB/HiDKaMjAlETMyJLBKsJGxI7JEcIpxEXNyJPBK8JHxI/JECIoJEQsKJIhKiJGJI'
  1614. $Code &= '4pESIpJEUtKJMhKyJHJI8pEKIopESsqJKhKqJGpI6pEaIppEWtqJOhK6JHpI+pEGIoZERsaJJhKmJGZI5pEWIpZEVtaJNhK2JHZI'
  1615. $Code &= '9pEOIo5ETs6JLhKuJG5I7pEeIp5EXt6JPhK+JH5I/pEBIoFEQcGJIRKhJGFI4ZERIpFEUdGJMRKxJHFI8ZEJIolEScmJKRKpJGlI'
  1616. $Code &= '6ZEZIplEWdmJORK5JHlI+ZEFIoVERcWJJRKlJGVI5ZEVIpVEVdWJNRK1JHVI9ZENIo1ETc2JLRKtJG1I7ZEdIp1EXd2JPRK9JH1I'
  1617. $Code &= '/ZUTwnRnAQiTCLIRUy6RItPpEjMukSKz6RJzLpEi8+kSCy6RIovpEksukSLL6RIrLpEiq+kSay6RIuvpEhsukSKb6RJbLpEi2+kS'
  1618. $Code &= 'Oy6RIrvpEnsukSL76RIHLpEih+kSRy6RIsfpEicukSKn6RJnLpEi5+kSFy6RIpfpElcukSLX6RI3LpEit+kSdy6RIvfpEg8ukSKP'
  1619. $Code &= '6RJPLpEiz+kSLy6RIq/pEm8ukSLv6RIfLpEin+kSXy6RIt/pEj8ukSK/6RJ/LpEi/+kViBFAyAkgkWAiEERQMIlwEggkSEgokWgi'
  1620. $Code &= 'GERYOIl4EgQkREgkkWQiFERUNIl0EwMyhYMJQyTDSCORoyJjReNi3s4FCRCbzcbH+b6vbJcIDIkcEgIkEkgKkRoiBkQWDokeEgEk'
  1621. $Code &= 'EUgJkRlAAhXICQ2RHSIDRBMLiRsSByQXUX+BAQIDBMf/FgYDRAcIjkcJIwrkC3wMj+QNfyMO/kcP/cOEsfnFE8UUkQMVIxaRF8gY'
  1622. $Code &= '+RkfIxr5Gx/IHP+RHf9JB6SCBQdE+aTlpbspY0UQMgERORIcE45HFMgV+RYfIxfkGH8jGfq/h+Qc82uJAeczEwTOyk5ywgp7phEO'
  1623. $Code &= 'IhBkFAkYSByRICIoRDA4iUASUCRgSHCRgCKgRMDgnqNyNX+UBnfKDG9lGDJnMJlfYExXwKY9+VpBsFvo6mP2/IkDuXf1jw9DBEHY'
  1624. $Code &= 'W8NT9eZRkpUrASkqs7OtHjgJD1AuQ0P7Id9RHIqpvyrTxx4KLsI39pYnV+3nFD4rJ4kTOFrDjTKClA+5gGVWMfZmAIkwg8AESXX1'
  1625. $Code &= 'xC6ICSY5hxaIfAqRE+K4k/toHJL3jDHAEKxBFpAMqMiwZKBLXuggUYskkFC5klPgagj2nC2wXIB/jQw2iQFd/DnRD4+hgI99NYu0'
  1626. $Code &= 'iGDbLzy8IA+3FOWACByfZjnacgEZdRiKlAZYtIFISh06DkF3AUFNEdxV/Mhjl7tCDEB1EyWKKJwCJnc6qC12LsEmCIm0kFQvN43R'
  1627. $Code &= 'zgHJ0oiPggl+glCa/IymlpcbsGd9JgjPapReohP4nKUgotJ3gwcoi1EEU0cZZkmuPlXoMxEK3DIjVg7gAwhX2HkQMd+8FOSTO9Fy'
  1628. $Code &= 'PsHisQkOiDyygQxAGUQMSIZDTCFQkFTIWJqLGBLyM4NQmGhMKZMCFCiDSEE6OdiofbQEdfiB+T3QfQ+NTZKM60ksiuz0uhUGKcoB'
  1629. $Code &= '6vjs/k0o8JDNUfShBouF3wt6gEE5+X4GRonrooFXUDvAfw9Hi33kov+ESJOlEsI5+gHxidYp/qAqzkk0iQc8kwHxY6/PqohE3smc'
  1630. $Code &= '3NjAYBAsVJECAWfyLtdSkKwSDpFwAINF9AT/TezyjASF9g+Et5Dajbx4olShY0lmg/KoYKqiCAZ1CoPqAi1wOjZ09gz4RD4CTLqx'
  1631. $Code &= 'n5QBIpQ8YBQPg+4CxJp/vpeVcdJ0Z0P47DP0Pwz06//rThOs8I13A8b87vukVvgHdeA7mtAZL0p8QeqNdI4IOdegGYnTKfvo3/kh'
  1632. $Code &= 'Np0sDKiyCPkBuKig/euoaBrQlrg34JxGvBQG7IPvAkrF+JxIX+ryEHyZPr/P/cB6RwIx0scbRfj/A/989kpzBwlyBIXAgkW5ipDW'
  1633. $Code &= 'cANTuL0EiUSfBugnEIiQj8dpQymr2thuXdBr8A2XCiStGwdCOcp9BE+pdIew8oUKS++HEGLrL8OadBY7dcJJCIxFE7sQqLwaHxWD'
  1634. $Code &= '+ox/CR3AhGQHE8RQjiCJ1NZJRoEGcgPrFqjIHQZDcf31CpkHCkqXEfwK9HWA2NEcB8l40FVe1RTgCNjsaKci2IrlxM3ItwxsIQOE'
  1635. $Code &= 'UP/WLEQFxiQGR2kgzRd96LskBR7e5JSoRn30ZNos5B4meBX84ExcJv4EGvCRQWH4MKOe2FNMvLBVfrghyeEWArpSICwp+oKYXTK0'
  1636. $Code &= 'sKbvOYnyhNPii0iAAAmQuMJHD7aYhQeLgLGIHBE7/0BkIbkiSP0tpicxywFJsRBNh9LA6SjRwH7ujUw68MqSsDmgjz7rFFhGQl1o'
  1637. $Code &= 'tFdpeJahholMhQ8qhWf2KukRp5GzGMuTO3Vl7BKqMq+MGb9NqSACTVb4uU1ANGg4JFXUY2WyCorkXmiuioqACQqIBKE0LF2XnHjx'
  1638. $Code &= 'RYqQSLyIosUytktvQTe8CLTv+4S4jVQKhFIlGhA/wCG4CushvRG8yud9TcoTGgNGYsEeKdou/0+Kvql8QWejqKhXEBp5VrynQqGk'
  1639. $Code &= 'YYuDwjCF+RQOflyI6kaFaFGIfMqe8oTIgeHpUAIm4YeDwfPpOJydETQ7DyePGSpPJhHCUiHiwDVxIBLAT8hKJ3kNC7zzjwgpAfED'
  1640. $Code &= 'MfpYGcaHZMRr4sQXRPUCCX5ZF1n3GxLrE2gWB6Z6JU30C2ILDnCISg48B+sZHjnOJQYPPwwpBw4RBDuD3PZYYS7oWwjj+i5yWVFq'
  1641. $Code &= 'HCfUjlkLUwX/2HpcV7bQ1goLflaGFMLWhE4UCPwQlslWBU+GcdYBXkLQlhl+Q9xOaIpK1kSWJjaO00Do9SOJlhCGouAPkYIFiY4Y'
  1642. $Code &= 'RQysg1ZIeP4jEAaDwPz0QgzqI/R5BBgxB/85fRAPtKKUa3SC0GBo6HZI6oEED7YUOMHlhJYp5EKQ0Y3ZOJ5dlCl6IkZDniBOQ1Yj'
  1643. $Code &= 'liGJpRp/CZiob4vomMDrJOgOqGgEOJaFCIZ+UZZnfUaiCAHfO42MXlLK2HcXSY2WkJuJ8OgoV/gRRAyIQwkiRl9fi1JQFpBMoKbH'
  1644. $Code &= 'DFbSsKRGB4EKmGNgFhBXC1egGI0+vqaeUbAOJco4bg60kJQRN1EoGIJQ6GjxRgwoEFgbLZgEKKEHginxgfn65TFzDUg97wgMAQhY'
  1645. $Code &= '6xLB6QeQIC3FjAgQIDgpiKQmqxGcaW6HNjn6bwBfD5TCXola0ChIi/QIwjZWVzmYuA+EWVE7OutQrPTIcKSnhZ1RZr+yFzQyQgqM'
  1646. $Code &= '/K8m/ctC1GNNrOKSCVSzAmbmZdcq+NKmYQI0s3k3S8JTxxWQmNOJOWKd1iapSrEVbTYnTS7uoNpzPwbpoAIZY4vD0+ZEsBMBGtHp'
  1647. $Code &= 'hSuCATPwEDwwT1gCCrsGBA60l8jTrwJrOdmQmpS6bAQzJPCe1dctCC2dWesfREDrURuaCWFju5cpNQGgGucAixy4SlgNa4mWewwV'
  1648. $Code &= 'fSiG8QErNBZJnC7k35NFUCWm9yiAo0S4aHiJORoqCBP/5/yOPSHZgvCNTAvTdonrDB4wVtmRJ0qCpoH6ZU4I7+xCNBALBADRzFDd'
  1649. $Code &= 'qRK0NlBJ01sFwLECYqi7GPuJJH3wVpRg0GM5PLIk1vpV9tA0tbU9VaUyFo9D8LIZQngKvjgq8kDjmIZI+VOhXeYRPLAEhcewCoRw'
  1650. $Code &= 'g6AVse+AKxSKJSW+MKz+OfG54hDWKeaikbCicCQxj1QmcJ1MJg6TVObqgIbZgKY78NHjqZMWfY/FSiimO7Fugg+CsfxIRbeTTQIU'
  1651. $Code &= 'Ro+J1gV8CEySczaz4RTPLiHw+lnOySmInS6QCK2Uvot6LF/yD4i08uY4UUsJc0IJX8VBrbJ5M6ghWpBgun/A/zrzMReNjiCf9sIB'
  1652. $Code &= 'B3QGZoM5AXVGQCjNHtHqx/gfflwivmy4Oyo0yBW8ZCpIyGMguJYPxH4UAQqQO5AOiT2QVHzvybLDebM7aRJeNw+D5oIJ8ErDzbfR'
  1653. $Code &= 'hdJ/58DoXsOTMgBTg/kQdTeZTsqcpqZ80ie1l+pR7iI7MFvDeAh8J9o/SpZPZApwkCZfKIOAJkn42MpbcVAIfkIi9CRqMnfrXUAg'
  1654. $Code &= 'fhLVOar0K4NLokh9TMt8Euid6U8sfVEJx4AJYdGUinRCvtMkE1fpi4nZDIAkDEkX99g92fZT0RCYQvfRriNdX0kpGkYTSxI/DSMe'
  1655. $Code &= 'mSWekDVGEnXm7aCXEwGjYXZLiie7xBi5zXxLJMnLOjZOKEUwMD8DQe2RGCB7VCYLLIRDQiI4UFjgiobtCMdSgsyDXek5SkkgWCBW'
  1656. $Code &= 'jTV14rAx3Sny8DRCmHUddDXgf7LOBvZjZg8MiUxF0w8I+GF+5DH2QaV4JJwoVJIC8EwWwBJEVeCJwWxARBHoNuX9oBQABLdGOd5+'
  1657. $Code &= '3F6XFCacfDmkUykdONJAT3wMohiDyVWLzInlQJ/Hhp2ISQGyFFQpenfEsH42wXs8hyBtIlT/H4tQlgaJd4SdEJ1F/HrGKDBYNsHw'
  1658. $Code &= '6wcx0oLiVIcCQFzzCXzKiMYpPpN9URgRCgVBH4nI6zTSK0QnusZ4MhSHlAYY/46Xqc5c90jRAoMCKYZ0j6FOinyyqKdI+0oE7VBL'
  1659. $Code &= 'mSnQ+MMl0fvwLBN8EVPBVF7sAktfDHYjfVHv6wbXBoQp+IzvR27UnvmXFUiJFBtqAWTRjmAjrW1xUgELg8roAZadka2OQQaJnN6I'
  1660. $Code &= 'OBN5hA1Elx20HQMSn8TNQb+PipQeCd2MTcYRgzjKMO3SM3MDCtECRf7CiJQOiRnYQ6YlzguftH2KQYhsSOgloev5MiPshw+NQv0D'
  1661. $Code &= 'FHMRmwYoli+yrCmJlM2i8EVAOAEKjZY8xkK8/dNSpXjwzWgcKWZ+fxToAe7hiigSiIgJQu/tD4mGsLfh/aB6DLhLEiEEKeAFC9BY'
  1662. $Code &= 'QSABOwLljn4KJ3VsMBGERMJUeQLIM5bERgX43zAxTAH+pTIQOjjfwsj9cTDp6EDl+AN9ApWNTEARAUbvsLBTSA2ZQgJaDyMDS0wv'
  1663. $Code &= 'W4hy/2nUipMUp22lnXhmiEs6QyDu8SspYCyWSmUGhQMCnuh2+3Uay1AANVUUy6HsKa3JEG5z22RT/Ckaoxy6AieS1XZ4IS2tCMO6'
  1664. $Code &= 'xEqnKcUBcKNA5jKGqFK/TErKCoXrCVKUo2HTEoyjApKgakenavAx/5WXWJIJsk6F6Ju8dUJsdpb0QynKOVwLk/oJDrjlFPXkLYMb'
  1665. $Code &= '7ehZjVn2Au4eQrAX6LnSoV5ZcZEHShAO/+KclR0l+WonWMa3KRiGxYQr4FcUx0X8CDB+MD6DfzAsAjLo5feyFHtHsHtDGBBm+kyT'
  1666. $Code &= 'Sk9MUY1aGTuEvdHYPPwSltagRI6iABvCCvafI+oDq+mcoHY5C9F3B+sDFEsF48qpQwT50PkbLhMK8W4D3H2YV1NQsN0o2fxKDBDp'
  1667. $Code &= 'TgF5vl6IkM4PhLXbD3QlEK1lPTBfjVcEkZ0UUvUl0GJvVDJEhmhGiQEPeoFOFz8ohk0zU0DBCXTqg8AEpYZill6DclQc2lT5MfIo'
  1668. $Code &= 'CxKW5J0AQFBBUUJS6K9c74qEiAlWYq9RSAKY8qTCFRTpjK2xRwIdKmvf2jJWa1nzG9GtxeiZ1fAGoQzcDYmRBw1HnX9EjuUWsLAH'
  1669. $Code &= 'oRX3OiwTVx5WU4MHJItUNzhHTHc8g0J42pqQvTnYzxY0x1p8GQG86wJL0OMQDAnDiRxOglKQ2Q9adDnDfAKJJyRcXL0Pcjg/+7sE'
  1670. $Code &= 'g2psjXw1h76e3yDB+PfYg+BDj0TbFAmILC0GIM0pxX8CNjHtuyuhmMaDYwgPtx9bf4fCUzj/BxMMi3pANxRw6xoh0d8mR0856WWG'
  1671. $Code &= '/S4QgepvgISI1Kx4iUR4SAzYdd2LigTcGswBOxAQ/M9liWyLJoH1NwHON/G6+P4kmrw3OAjzcrQwgAeLBDIz5jpQdZBE8evPTz+9'
  1672. $Code &= 'JwdwHf7pO+txwKm3rzCMBhQCn+DELAHw0tpqVgBOKfg9AsR5fUyNHQOjHBn4fxPXCEmrCbKk8qolyjCoBthOhkpwRCJ9LVIE45Hc'
  1673. $Code &= 'b1uRyCFMmcfQW1poY1vKGypTQX9DOcToW15fTl3nqAAgZGVmbGF06+J3EzTwQ29wA3lyaWdodDggOf8dLTIw+XoPSmVhbkFsb3Vw'
  1674. $Code &= '6UflaePLeb4ee2R7TTxya7xBf53CznkcA1BT6DQxD4mseAidD0N/lKkJCDIUBiAELMIdDIQOOAhEGVAGXAJoAnRbiYbUkfAaWoEE'
  1675. $Code &= 'mAUICVNbogxXr8vUDMkGVGY5Uwx+2DEERl62Kr1VGBgMgOHKOSAVGt8ZKgoTlAQMmxQhGRAtGsjGn3tXF9+F0ggH1UJyHN4olMoL'
  1676. $Code &= 'WEKZFr8ITloYGbYYsxYSXgHA2n4EKv6Fa6Qf2CxcFGFQZTCwGSdF00TiPolBYHeD+wNyYH5wLDnLdg8Gic8pyQGA9lY4V1Cw3Taq'
  1677. $Code &= 'rk0WwTZYiX5slgZcFJucFkZIGG4QSgEeMcgj01THeIfSU8f9cy1MfRI7fm5X3xg4QEQQfgIlXkDByE4wrvjZUzY0k0lmAoJBIdfY'
  1678. $Code &= '2mx7MFZGZ0QUFHJCO4LadsXAiDHAn2TyyRK4rrhfJ9lPRAigGxnuQGAcDxKDeBgnAnXYXeaJLUgcUo6iPC0tEwosMzBKHIdnKtdQ'
  1679. $Code &= 'bnpQ2auxfboBLdOOSqIjVRD7+Cf50aJDh2+RLo0ng+sXWomIN8fGFGpQgAlVeRi/E1D5UHxCQRQU8w3QDI0sQj9DFwawugFK0B/x'
  1680. $Code &= 'nUzaBa2Et02MoqyEgqFWtJGhe0hHrTjoB1Z0X0g2TQYtB7hJyOsgLXdaHCXOqwm+SAm+DivJBkO6ysBQvSQcU8SACIoZQEGEGdt1'
  1681. $Code &= '+CAkTg9nViwHW/YWUhkC6xGybHB/GfVwgQTLHgbIvrkPwKM5TzB1JM4KULcBddbB7g5loHxPLRl6t1wMNX4S8F6NBLcHX4hOA5gV'
  1682. $Code &= '+1AJjUEGqAhWi0pwjKPKIMHq7j7fFufGzHxwtKWNDDoTRbuiuyRGeQpOECwEOc92xy9JQW01IFAQySgMgFJR6FisixhEAX7ieBDF'
  1683. $Code &= 'DBQpG98ftlrsdu01TQfDm6uFh/iJNhCfqlFakJHmEMKbVNrAVRvMQMHa/xkqdCwKRSGpngpJkCJA/R3PCmfoGB9xzxOB6Zrjg+kL'
  1684. $Code &= 'XyOfJ176AIKHkd4NJDdQzpYohv/R5GsI2CV2RDoXIUDxOA7bGCknUhAob4iDD5XsX1HHsmIwJF7HCuD9gkiMclYdS1buSNE4oAGX'
  1685. $Code &= 'pMnbD3l058uJMdBrhh1XuQ6FmPYM86WLQ8ZLCyBoxBbr/lHTbKLWQEI4PX3UGleQgwVzHOjxqoi5LPYepDQpagKZIBGYnI0SEEwj'
  1686. $Code &= 'QGWWqTdkKkRyBBhOOMrUPJS0MAmlyTKMh6pADBS4hkRErooRs6a0EdOEgA2V0nhB8WeqE042IFfO1BgByVEo6FSpE0wCRA5xiEFk'
  1687. $Code &= 'DAgIOdARMIT8EEUrawpzhpUh4okByq4YZ8KNkUHR6vHB3BRXoZcw/JakpLJajpSt44lajbbxji5C3F+JhtKfzkoY0JfVMplqcK3o'
  1688. $Code &= 'Sp2Vc4Jw/DNYJHu3uGJGBMG2xzLFhnUFbpSRDyn4ui5E40xAZnseAXUP1A7tFDBXsgzo9M1062sSKAmgCdECwU4wZO1twSle7/IW'
  1689. $Code &= '5AGI1VupgAE+krWQ+ZDhbPidkiyRCRJWDAbAUDzSwrD+SlH+EvfAV41UewkYUjH/kOho1G8DWkOTjQRAYlQicPlUs2C3TEECo04S'
  1690. $Code &= 'eo6Aov0SV/mjsxS3FLQVlowTK0QslgHwhpCpFDBYJ1QcAga44rnesgZ0BGgJSAVlfAyPeAZgF1/peoEqU4vhLDCrdzk8K650V76+'
  1691. $Code &= 'T4SNlAv6kCopxjkS0HJbSepTA5EYURKufKgktAC9R0QpX3DKBmybswxcMThQ0kH+PuBxOQ7YcgQplyKNSorpPBnplEDd2pA+Wf3M'
  1692. $Code &= '3ossB4PmJFyRxmOydAOdDKbxCjiY+KFvXFCAAUd00i20dfoUA3IdoTtsc2k4qFCxEgaJR8ilToT2VMUdgfqkgHNTDFIThS7RhIfA'
  1693. $Code &= 'MlYBTzw5yHNnj30B1i/wIC0p8YnLJ4H7oZh2BbtGB0KD4PHxanjiEOCnlG8F816JnwQ7W8PEahQiBhJzJw4MgVQMeH7BTc4xdM9t'
  1694. $Code &= 'Vv8hEarKtzMJXlvuS7HbLfpkoC4MvrfkMjbA+/90ZMYidNBadxDoVYXjphtVRJ9JARF7XEfxZsco4TMMPDFzHDnCct0pEokQBuQs'
  1695. $Code &= 'bJoNeAc+MHfKkkNg0vQpyFBS/OgoJfNFZWw+XEz7xKpbRPoP9HmWVRRHT5g8LClbyiafm1SCRUeByBLACQy1huJE8k9UbECJxWbo'
  1696. $Code &= 'GA9DF6h6KEj/E19eUqFKY8sadPOpHkOcHgv+BNB7bVLVzgJPkxIekiHJ+TFUOUHwdQ6iLeI36TACoqg7yx2Nh2EB6R45vUaelebw'
  1697. $Code &= 'oQ09I9sEIuhV/Y0wFIkkEqI3F1YCY5dVSxGCt3Kk70jUJCH4dzQqHjPngaxMEQIzKGEaRCHWdakEm+KpTgqncvicI9o0KdhpbUoa'
  1698. $Code &= 'dmG0pDYrMzY09qw2dB8/JKA/wYFI6kDC0XcNouGw8/lsjkdgzn9hAw+CM5s3ZlWjK6NwupfcHpuKNsq39mdlyfgpiJdvtBwALAOI'
  1699. $Code &= 'BDIBn6ILCZqi7FfWdIbJgNNmAZyXvxEThFEHgcEyODi4UF85+HNhDpvoItR+IOMI6xPAHNHB6gfoVBERhFUQJpeAh+IbdoQsMclt'
  1700. $Code &= 'HjmoaKETYCBnwf0hOyK3dS47h0xAd1eD+ZAuKlJIxlgBylIvdpE4v9pO3AIk0+ORLTHYIjUSXzREMA+3BCHTlShNNVoaIatdLI8c'
  1701. $Code &= 'Sv9JYBiqdbcm6YPH6QalA6PNnMe6oiXokPf1bFa0zLHrTF2bwTiKBALlj0yll3akncb0onuzRiUwmFOhKS5I4UeUCJCPlCdFDSCC'
  1702. $Code &= 'KSrZOUOSh4KNBeXWUtEiG8FqMEWvTOtq4Taof0fvhSH3ijpI9xGG/UoiSMNl8XGiW0kT2PY58d4UTVvy5/m98yDEJoH59OJh+igQ'
  1703. $Code &= '4AqDfQyULxM3IvTJBOBazpHISTL262QcYARwvrI1e3N49mTsd1lgCglKO4+QNnNCoWNPYBLCIYHphMp3MESe8Cz4BAV3HjmfvdQW'
  1704. $Code &= 'dBNGkHURY2IrooH6faOidgNAnat40zMdN6JNOZoWh28yQFct3CiAj3THKdqUn8gPjfYINP2KYAmnyrITaU1TpDQvxZicTRqaGZVm'
  1705. $Code &= 'FYoZYFIF04fR0MY+I7/QUmJQYlRlUhF4EonaCQgBYKHA/qL6gitNCMxJCTnydz45j18ijPTfTZDJ0gLFeHWzK3pSqhFhRmgJNE0C'
  1706. $Code &= 'hCaE3NhEVwjSkE8i0U3J1QjQUFEJFu1NzIhM9HGkM9WWDLlok5KUYE39MIZELAj/dVJlh5dRcrePEoVoCoqHItBCl1VWqQ4dyhvC'
  1707. $Code &= 'dS/NdOJ37DwhrfMi65q4BTlxEOlXlA0jDomzaPHz/AQnqtVG3Sxgmf+7LVyzJ6R6FGiZrHVYDM641EfrhArzOtNnx1LHvlu5kQKE'
  1708. $Code &= 'nPZgXQg9RgIg2+fqMdquESjJmRenJpVAG5y0F0itEsKCOf/ecTEOHDD2VYqZyxqCNTAOdXiuChpugcLCFhpCSspACuQ2LCyFkCKy'
  1709. $Code &= 'GBZCDtPgw3JZrJZIYigFXprmLDnIypJPyf9YfnI0eIosmDss0jTomR8cUb9Yp+SIPbeOFuhmzzJxEF0FyYeZnBAH6EfNohhpc7QY'
  1710. $Code &= 'j4SUuyV54z7CSnVPEq+EzKBoiZj7UVWYKEbJCLm521t8mrlFueXwitZN00l6CQF3bEhdPP6WPvQjrenC4/AcIwH+0fseK2RJZJo0'
  1711. $Code &= 'inAj+8/wrSVvQ4d0hlYs6DbroAuBu6Ri2N2Slz04XyWVHyW5EkYqFyoQjN+WTyWNKTDaTJOJujlRWXWEdoijjpV51s3vCDl6WZAe'
  1712. $Code &= 'W00yU1spWhMkdPMkVxVATrJ2GtNTkPvVI+TbkksQWfMEOd90eeh4d3fee3I+XyAzbQok0mjhZhSQBggkGCMILAKlQ53vOXixdhgn'
  1713. $Code &= 'XhTg5QX36b4eQj3BANkZyYPhuVPp6XHT8U4EpRBACQfoJcC/YRUF3digD50zMFZsKOFp4XsnZoIB8mUFH8JnZ/U+QilRlKdJJDTa'
  1714. $Code &= 'JHf454opCwFNDIP5BfCHHdQZzHyLzQsKP1bAv99F2PkHJ6WkPb37GnUJWAHtheYHQywQBB4Y6J7CkRhAHEeLsV+4+6XhUlqVAeyL'
  1715. $Code &= 'VihCtD5fCBW5PM7zCCf44DGhAr2wCTlWZhgc/jFUagLoKeu+zq1qoIQPxsA1HwFe1hW1ragaHIYNRU4EnE0NHFUo/liyS/M4a1GI'
  1716. $Code &= 'hydzhTlBwr0aJWQH0KOjAAl1BY1DAeteF4wiAiR9CXOJfAQKUXAduKlneQsTx++GcTs+6cRjRVAkmEgs9wLaGNKA4hBDwLvJuuGG'
  1717. $Code &= '78omUhwMIQghGJAEGYM47wg1SsHCLgfOiBS6W8UcgRpJBEFuDBAJ5xchUgWmakImRSM7UcMmsgc2jdoSB+KWQty9sLaJikkMpVoo'
  1718. $Code &= 'bzyDeNBIdB8hikDpKsxOFa2ElE6Hg4N6LIF0ETpTdQlnMHizIg69ot2LKFkxKi9CRSmVm48wgyAIweEMgb/K9EEWlkibfVYguH4U'
  1719. $Code &= '0HwWpD8G2+Ds67B5atIXKgLCjUICxLA+weC6CQyDfmzQA+zJACC4hRBCCPfhOCnRl+mNElavC7ABDkTYrAUp993wJ54T6I+EZEAx'
  1720. $Code &= 'Eg+3TzL+gNkfEzDldxSchYVDvGhMoSRXEMSR+ZMOErAQaFz7JHbFOQXJc2pP9zsCDHU2lPBLGQmhFXAgivfCUzH4FklQzfjpObTL'
  1721. $Code &= 'YxuVfRFtdCxzMUoQDCCK9kEpXiQ+GP+SNLiJDLNOBiBnQeBCrNVyVpZiUpdCZaGxuw0GUVprO2YKnWhxSRRdzuBCoyBOc3mJjyPv'
  1722. $Code &= 'KxTClTMYQ8Ig0M6rKfVgfci7VMjCiHfqxcIkvwyfTgZeyeJbrnLDC0GJ9+v5A69iUF2EJqfEUsXyKT4KuEFbsUi3AdH8VzCdgtz5'
  1723. $Code &= 'uqxbYQq4w1QgrVuM7wKhsT0kUq2NMZBKrvGmugoQyenoJI9xSwsqB6tGZ3f6W6w2WEtlg8ECO7AMdgepgEkYjWBQJFYMdzVpioiy'
  1724. $Code &= 'lGopUfGs6EmCZF8xZHiBixCkIYCL5rk6KEaytSO3dB8lm/yLipFtPp40KPIDW1jLu2cuoq7BB3UmO1f8tCGhnAPA6PK9UZISW4qT'
  1725. $Code &= 'mlDlxxQfOWG86OC8kVlII0/IHwp1GYMlhOYT9Jr2qpEsOhbrimGhiBJRWpFfDML15ylAgOsptk4iESNm9RMY9mMDFEDoEOUH1USQ'
  1726. $Code &= 'CFZ20DTtinV0BS4pTxOaplAQdAGfbWajppUmOdgOEICGRQwWAnULVui13pFZSoVQBXRFmbiILPzdRBCsqmSiMPz90+L40+L0SSR+'
  1727. $Code &= '6Ogoc5QoUwzXWsBQiUZsyQZcImKa5zkXIVtdZEtiSja9tJT2FoSRn0YYQat/C3GTqVQrSLKJhYGxpootw10ekgRtVzGjjdkhMh8j'
  1728. $Code &= 'M+9R8gk+RwrIC9Hr7uTZqH2l5rvbmpwTJ968erfkfvNcThrEbgK/D5RnRS0iQqb9CP9cGOi+un1AEJlNkP7g6AXj1his9cIgMclX'
  1729. $Code &= 'itWvZMiHvOQCA4A4MTWgFxMPOCRwNA0V5H05WM/sBY1B/l8OQiATTnM5fdN1+C4su11vbFgkKIEkskgksxvaWEt4zNUjF/6lxH4T'
  1730. $Code &= 'qwWay32EYIDr99vrtqg5mX4N8wIXz/ShaDqLCRhIAI4ID4ePUAF7EPUHHBWNLEv4GRkHLHkRuAlJp7KgHGujJBwEIRRhAPsIdQWJ'
  1731. $Code &= 'RbgyWMPwOSjQjFa9MRJSMa5vKBIrhML4iXcc4UMYfkS7XjDNHTofuFIY7AgquA1h4DpQjVNCvlb+nAxMSAhUuhcYuKuqAvfhP9Hq'
  1732. $Code &= 'rz5Mvc14LEQ6GfrYT3oLJVPRSWgSa3lJyBJzZtAkRKJTBmsWx4axABABagSJt5rQBb5QUb+3elGOEG4SzAvuOC6BVXYQRggLDHRN'
  1733. $Code &= '0mjsR70vZIlB0GkUPYnKm2hGtwkESGJWwibc/m8jVRxXIqqY7I5RhD0snYDGRiQI6FkZ3xJeW3TI3MHoJpW4KUYYaJAq+JhR5CFv'
  1734. $Code &= 'JAU2JhpD/p8a+hkSC0ZD63EWLtkXKpKH9RxE6lOaO5iz0mALCL/5yhcRuaY4w0XhCeSPuqAtXRC8g5eHtC87Up6mCnUqi7Ro0hNJ'
  1735. $Code &= 'BE2W4EnBAm1EgV3Axn9TyCKFQMNYO0QBiwhbdBGDetr80gBqBVLo1vTQMYgUOb47G3RRW/VGCwHJaPzgt7jfSgLUIAwigDboPCsk'
  1736. $Code &= 'SARVL4ZGGFcsJRkKBEaQCBmGEkQIBgZ8fIu4ogEZoFtjRkqhmebHVDQcOQwqiTgg0k2XevliUBQIUevqr0YPCLeC84D8DEgQlVPo'
  1737. $Code &= 'kgO8K4kGXZJlQd8KwQvBDWHPwRHBE8EXwRvBH8EjwSvBMyEZwUMhS8FjwXMhOMGjwkFA4yvEFbrbs3CtAhERyBLkE3IUORUdmlRJ'
  1738. $Code &= 'nhRH0qoRDZKKB46ZDYMZwSHBMcFBwWHBgcHBIU3HtgbP9gMPBE8Glw+4DO8Q7xjPIM8wz0DKYI5eioI6fjF2FpEFFyIYRBkaiRsS'
  1739. $Code &= 'HCQdSECn0dwocu4QuMqhf8j3kcHh6Qne6kJA3UWkyAaoEKwgsEC0uIG8A8AmUFZ9LSAdDENm/wZETaSNTAhLQMCG7ot1sO1dDnQV'
  1740. $Code &= 'uA+eT/B3fNKCqE9ZaQwBc/Jw9Bc5wXZWOR0W7/ApSCmziRCOy2tAmivBlAogbATxSAfHn4u88Sil8hwlV78QMPh2ZA2jfUcFR9HH'
  1741. $Code &= 'cvPQ+XNfA+FPLyfNhfL4YB5VpMD2Kc54FkI/g/oWdu9TKQUWfhNNqAX/1Apfd14qyP9QlO+LRYbE4vKLH0wFhJkDCqQrhrUs2BtY'
  1742. $Code &= 'HnJM6UuEdRzriJwpyeg8jg3sHcAU7zSsVcJciQRWiA35sxqNaCPT/AHIcteJ0CvCSrlaEbAlc0hMF3sWGf4jI9zCWKcI4HkBGOTr'
  1743. $Code &= 'MPl1LDsaLQL7BRuvKQ1hoc3kP0XT6w3/GbcG3JMfE4nORiY9ZPB62KFQZ8wUMdv5OfidXeyGx41ItvbQyEDUFMz3LAH4BD1UA0wK'
  1744. $Code &= 'GAL4C/hQz7UPahVgPy3o8F7CVIpV+IDa5CjaiPARobjoQsgCQIw58RJ9BsYYh2ojfmwbI8zgFgHAiod/htxKPxBm6BTyPDYSpEdI'
  1745. $Code &= 'YDrfMDT4KdnxhZB97Lozj+Ln63RETDbIL400qKrHIJgwDLlAECnx5UGcOXWwVuyNSv+uvcBU7IXBdAYx0egMdfooUgEJjXj/Ic+v'
  1746. $Code &= 'Zg+rA4NF6LSqjDkBkF6QfMPEdRs7wvTh3MwWcIqwArZFDAmI5u8oAGfKNvzChif+SoJ1zCH+g+PEO8PYNVgWI6F8Ae5d/J3w8KqV'
  1747. $Code &= 'NwyCXpq2aINhjRQLRoavPXMcNnTKnBM+KfiA8AxCQV+Dx0KcM3Jm66LEeEDUCJl7jtPnyfoTZkokpHMIfYGRZJYLidKrGmUcsCLS'
  1748. $Code &= 'yvzcGhaI4GIFh2n8hVSHvuQ2lRkEB8H5gWlF2DRhhvDpTXkPC4jQKFisqVNA66MREi5NEuilNVF6u02bHOwBzfg7plxgJ1rxZE2i'
  1749. $Code &= 'MZfv9vhT7MLxJHjTWOguhAyGjlIChcd0B5BLULxySBvqspnDFEX/YpQIgk9VGNCLWQJZ2hYoQQysklspAlkLAWludmFs1GQgwwh0'
  1750. $Code &= 'ZXI+FC92PW5nP2iPY29k9SPnLydzdJ+FY2V6HXZxb/pm9HLwYv31a8FaK+Z40v5yJg8mHwlEP3+J/wgBiQMSByQPSB+RPyJ/+wgB'
  1751. $Code &= 'iQMSByQPSB+RPyJ//QgBiQMSByQPSB+RPyJ//lcBVlVTnIPsQCAedDokWCR+gRdWFogEgcKD7oClRCQsv3kHHmwdXBBOAF4MKc33'
  1752. $Code &= '3QHkgXTpqpTfAc9cJDzTJDgo2DxnOkdeZk9QZWIIHQy49ilkVIKdSOMw/TIOWBMnQgSRpzDYVzTdGzddvMk4/m/FBl88T4MsWSQU'
  1753. $Code &= 'YJV3CSKDwQuDOrgMd3eYxAt8JBzzBBHBh7pnqs1I89dIAusY98ZEOP8ouAmKBkaBHIPDCITECcXrxiFcXDyAIisLgzgCWAQTkNCj'
  1754. $Code &= 'd3RQnXDdKJyLjjmBNMAg4J34WgwxwnRHeA8dooH75N0cdV47Hfmk7B5sUzMU1b14eElTK7hpPt8DtYPgvLxUBnUZ98IicIDwAn/r'
  1755. $Code &= 'xMDL/Q7HG7eDWPsNIR68kAOTrh0XCel7IFuQgPsPLncNN4etiNmywxCSnncIguGFCCHqAIqRiOEo4w3T7YTAsIXGEKo5HbZs0BNl'
  1756. $Code &= 'oWHqoN53xOla0xfqI42Io6gYNIT0t4Dh8HQBJTjLcxGIzU9Wf1npDMBIKMsh6NSov1RUGKV+bCwEyP8MaFxIhGhiRLJyZRdn6wkp'
  1757. $Code &= 'hgIg+CtAxig5LdAP2eUwuRiJ/gQp1oPpA4GTiAfQRgHuVlwCWH32R/P5V54Sx2TFKeML6RB8ka6wFb31BSh0t08GOIoHbIspmwJ5'
  1758. $Code &= 'BslYBALr6ehIxKhAEg+FEVBYgKb88tCqyGDQBIIp6bogiOUCVkIMNBnRhzbpo2j32SnzOKga4Vl3Yyok8jDJOkxbe2TGPxjoLSBg'
  1759. $Code &= 'gp4QvetWyB1SWUiTQTCBuywDmII0XCnO5fKZMi4JBFdMvzAhHq40URQoDCYIrBaCiTn+ElW2HJqDbsWJ3TgKJPs0b9wOw0cEPxDV'
  1760. $Code &= 'k+/J7IgGCOsDkAL+0wPBg/0gdxIyOPUGPkNFHUDz/o/FIOfrx/Tbw49+FAZv4+M/g5m2zDzJYZgnRoQfAnG66dPcdSLi4SkjzHQX'
  1761. $Code &= 'ZrtuyIzsKQnFUuhxcM4CIwyCWgHKtXQil2QM8Ogc4EbqT638NhD0/4FbqxxXjZAWostnLZDYIqb80ZIWTd4r/YnxCOlq5X1J07sz'
  1762. $Code &= 'Lxq1T3RFLegqk/1yEeCyjhKMCImHCI/65dEcu4rpyCVkr3hqjqu4tcbdUpDzTBc/qRK6oi08Jj8hIAM5ynZYx0kY497rZE4dSixA'
  1763. $Code &= 'mzuQKOZBQipIN7YgVxowKBAkyCUIUgrpBnkhUbfogyw3EboaAOssqCB0DLncFQq6CxAFHOhEchwQhzXoShDuFYktWADPA4lIGLcm'
  1764. $Code &= 'ghAksLIlCvkaIcHPif6OINTkE1Ac7DNBg9XhqAqxOXgMmVo8Ko1qlnQIORR1UJCLsN7MFQEQWJgCPOsLZBmJrdnMS6K5R/gkCFNk'
  1765. $Code &= 'xcDkId2JUWrngU8583YKKdCDwzMLiXTrHBTe974zxhhw5jkDEDn7dg0poYHDLVVoPpsxGt/3y/rHpw948IPEQJ0EW11eX8PmWCdg'
  1766. $Code &= 'IygIUDgJEDwUOHMMEgcfGXDICTAOCcADEAcKMxlgCSAnIaB8/caACWZAIeBBRAZYiRgTkIATBzuJeBI4J9ADEQeUSGiRKDawEYP4'
  1767. $Code &= 'iMwJSCHwyIEEkVReHmIZ44ErEnQkNEjIkQ0iZEQkqIoEMIRMRCHo34FiRFwcyiGYxAwHUxl8zAk8Idip0BcSbCQsTLgRDMgJjJlM'
  1768. $Code &= 'IfiRgQMiUlQSgKOJIxJyJDJIxJELImJEIqSJAhKCJEJI5LjEWokaEpQkQ0h6kToi1EQTaokqErQkCkiKkUoi9EQFVokWwUDjhEgz'
  1769. $Code &= 'kXYiNkTMD4lmEiYkrEgGkYYiRkXs1iReSB6RnCJjRH4+idwSGyRuSC6RvCIORI5OifzCbABEURGSAE2DAMhxkTEjwpFhIiFEogGJ'
  1770. $Code &= 'gRJBJOJyWSQZSJLkeUg5kdLIaZEpIrLrEokkSUjy5FVSodBCXAFsAER1NYnKHGWJJRKqJAVIhZFFI+qRXSIdR5oifUQ92o5EbS2J'
  1771. $Code &= 'uhQIUI2RTSb6AOg0EhNJAMO5AHMSMyTGcmMkI0imoDBEg0PJIea5AFsSGySWcnskO0jW5GtIK5G2QFCLiUsS9m4ARFcXh5F3IjdH'
  1772. $Code &= 'ziJnRCeuigRwh0hHk+5yAF8kH0ie5H9IP5HeyG+RLyK+gVCPEk8n/gu/ABHB8qE+R+HIkfnRHyOx5PF/I8nkqXzpj5GZ8tk+R7nI'
  1773. $Code &= '+f5Hxcil+eUfI5Xk1Xy1j5H1/M2Pka3y7T5Hncjd+b0fI/35wx8jo+TjfJOPkdPysz5H8/LLPkeryOv5mx8j2+S7fPuP5Md8p4+R'
  1774. $Code &= '5/KXPkfXyLf59x/Iz/mvHyPv5J9834+Rv/L/XF/iEAVB1xeoCH/xIK8b3xD7fKGXGY8QBBWSDOcdEEDQQPcxGBACFPJhBxyPECAS'
  1775. $Code &= 'me4apBC1PkwLKkDCzUACgfIkGSIYBAciBgRhImAEBCIDBDEiMAQNIgwEwTQphz4ldIllPknDBvcRLQvDOHYMbf5il8YOuThb9kBL'
  1776. $Code &= 'sMjKPHRknUIc3cjWXfxCczJKFAYIABjHQjCfE8YZGEgEBgwCIAQoCCwQMCA4HjyNiHDnx0AU4IDGT0hsBkBQTH3HJcAb5j/IFMSt'
  1777. $Code &= '5o215ecle80Ji00JreP6j4V5vh321m3p9Z9ABjHb997rAA6J88H7BEODDv4wfQOm5g8wNXQWGIONBXwKFn4MXuaJX4gRR040hFwE'
  1778. $Code &= 'unck+Nt9OUEovEnbyGUIvwahxzi0hpJR7atjQOgPb2l2l6gep6vUH1AQU9bqwUOEmxW8+I6SEIgUmogVKZqHhN5ACV6NQy3+W2m1'
  1779. $Code &= 'iegYOfogJXUKWKYglSnIHigXJPUH1Z+tH9HyASBXaMwbbtyQx4g536Lf15ZU1oiwFFIKiX4cVp0ENOju/Yonw2FlFFE8JFdvjS5v'
  1780. $Code &= 'ZmhsKonYMyu4+j0jti35hwAIUFFqD1Iv6DRTrEl++gXQdFPhUZsPTE/x0X0gvlBlOAY86jLbVlfAQn8pYYsejTQKIFMgE3ceV+ZR'
  1781. $Code &= 'XgD7cDxPI31hEBYBeDhqycJrKdV6mhQFUegH9VW17RdAVLWQ/+r8hA9QBFgFS1n+OEo5AnMcg35ChV+CbXUrr9jkUyD9bcRLKJAb'
  1782. $Code &= 'Uf/SkhokiUbDhXULX0sbXlkKkjkGCHUTZZ87yvswXgaAbigre0kQI1qHZ62EAP1WNFAQKcFREBt3aC9Mlyzg/zDcay/G/zXDK3e8'
  1783. $Code &= 'EC34YeJ9B3o3RwM2MHRE+eFEdk1F/PzPdKGgQ4c6TjRXtfgFmujHChpWVIZ+MF/2UyxQYdEBTjBHoDkI8GlsTCz+wlhzgzLKS1+a'
  1784. $Code &= 'JrGHg+gwV5VoFWMUvWXdGVgXg+5fpaJOCQo4fqIteXqUPw91fwsKBscHDFUmby1gdU3o0BDxJ0B+xQtfOHKh5tD6B7drciUy8Hbf'
  1785. $Code &= 'S1CdT9ijAi8e4TISAOm2GMR5RwiJUQhJ6WptL+QEEHMiw9H8Ne+8H6oLWf/4BUjxiAZCg8YIlTABw0Vy3vbAcgJ0PoH7IB+LJXU2'
  1786. $Code &= '21IIFJpHGOACjU3sWmbB3YtX8kg5/pmLTHI4bjes9tYBhEUCn/ogua8QxAiYmKAjQDCx/jOzATj2pUINw8Hg5ivk0QFMyKcnuehV'
  1787. $Code &= '9/G/DjNoh4OJ2oDi1zD6CHQVkj7Uv4cY9xotSBgKWemgEVwDJMHrBBN6g+G/HnI7fKTnfzpNTyaJaqgosUCJVxToUn+eKE1C3WCB'
  1788. $Code &= '99OD4wLMywmrqppBYQ0fRLQGselXn5WFAcUgJlDoaqBoQRgQWOk4k0VW6DoIEkIwP+kjEZNEZ3j43JjQ6oBQ+8ES2bOILVhW4kAQ'
  1789. $Code &= '90/DveJrNdgKFei8GdjEyBAiIEktCiMWQNwB8UWzTEICWR5IiHBFwlN8VcYWZe1QGPg7EoOYNXsiedtEe0QC65QaFCCfodkQD8gg'
  1790. $Code &= 'IWsSA7HuGGQui1H0eq353uBK6gYEjUXcOU3tmFXuNu+LLE8YDpUPdLIDORAKI2VREAo1Fsq7hgRxgfcIlqog61iUSEEMr+timJc8'
  1791. $Code &= 'RQQHMYiUYX6z55x7UJRArPVSFG6iTRpG1FMqbsXrDmS4lMSNz5D8BebmbJMbQkDnr+dhQcgXTz885WFzUt2D2D66ScnA1JkVNLwg'
  1792. $Code &= '9EoUMStPWlIYgSbkAcE50b9evFX8a9Dd+Bk51AP8q+3ici2YrCl1KRdmGh7EJEX4lYbuRTWIlimiklMpvLE6wtGDEeuDf9roQ+EO'
  1793. $Code &= 'gcejIK0RBsgITjFWKjW9SahbDbYMEHCq2RyCkSS1Ib4RQa6MF9ZAfTuYTG8P0OqKmCfQ4mj/ppRHfcqOGQjvOwFyv0qfZVxNJbFX'
  1794. $Code &= 'rrmdFOmVn6kENlCgnH2KnlJDHEKsnGO5R4gR1kYkiCjdkT24mUYNyCRrax6FYktFZ3yIaw3cl0DDGDlZy/PErhVx1QwEiWI3GEHF'
  1795. $Code &= 'MHb5WAn4hEgs1Cv2dV1+hZaUyspZv4vHy0aB6Zimh/J55/43Jtymaxbg/hyAIpB8mXi7feYlqQ/IprnzvCnYXiZmxApT7EbOSrSJ'
  1796. $Code &= 'siwQVQiiKAihj6OJMf4MBQJoLBUGgV4JL9KXFIiJ0gEH0+spzpFSGhrp5l8FkAMosjWNRAMh0etFp1IRukknT3cgVndY6XyWXCCq'
  1797. $Code &= 'ZAKcDUKD7gNjbEuj4BpzQfcCfMf6H7XjRkBJHtWKJC8QcmYqh2INFDMiNh2GL0VIDbIEsBS0WfGOCx+B99El/2+zS1gDV+cRiRPE'
  1798. $Code &= '7gpkJZ4MN0DgDosipjveGC4/ySnYyCGTBotYyEe2GEfwQiBSbEm+xEXoISlucywuARoku7MG8C4S6DjLIxDpe0Dzog6lxB/K4fkO'
  1799. $Code &= 'CQL0H0AEBYHpPyTWgQdPYLEdLeAfkzIPqluaHp/Q7g6BfyhgHiEwR2REXA+HT99zdNaEFu1oxQcR+E6fWDtEc06R6+JKCjcYi3jo'
  1800. $Code &= 'TEvzsoIpQYwSB6iMH0dw9iyRyPQDOeGdcrK4ItwxOSxzHWsMMldmGYYlDFH8nUVPGDA7cuUvjYeuj8JPbInATEdM/JdZ8Kw/UvoL'
  1801. $Code &= 'VFBRx/nGDGoTGnD7NM2iQt5VMCDNRVnYhCckEK6vEY4mNAks4nIRMOkiUwnoyBJKChwD2GDtD4NrAc3wU7Ta70FMSCHY2ASBJ4nB'
  1802. $Code &= 'CFL4EsnQH/F2P5MMCD4J01JtD1EMCjxVGwo/z3e0Dy8QCrZaIxkPOc6KJ1VNHk5h0lkgLMyNTnLZD1RpyI1moen2ImOG6TntixEY'
  1803. $Code &= 'sXVhS41BTAJ9Ctw5xlnEkG2VVNyukCdtwk6hslako0Ygm+y3y7RuKbqOt2nAdYwZm+Sqv4/FK+l6nc3PEcuMxXVFhgOlZxEpqAOO'
  1804. $Code &= '0MhVIgfSn0sXuPjT5d1DlEIHRaPk5D8jB2R/CAthB7j5Fexnmh5XqeQzvfrBTtrwd2RjsvS1NrY4MbD5PoSNjWsBF3XsMwGFgv9C'
  1805. $Code &= 'j4M/HYSEAlDmFr9wkZJ1NjNUEQQPxOAGUBIRxQ7IzkkQZr8Ojmm8JR3EpPQTYHLHCS/zMMYB6Nxp2/AWw1sVcspEsWBuCFdRbEvZ'
  1806. $Code &= 'UGINyFggz2RgkgbZxaYyQIBSagLoj9uzE8swzdoNjmshYZZnget1siEYFHGsvg5yboHawEsCy2VAb4rog/5uZwwS+Gwd4PZQYxAi'
  1807. $Code &= '/FE8DgT7vskCdzzoIHWIUyoLUAzr4XwogtXqo/Lsn2haPwu+4ssB3Q+FrC9JY4d7SY/pnfZpbwkZBAHSN4lJvUx+EyA7exHDBb8S'
  1808. $Code &= 'hMC6MdCo8EOMsEURHziBQSIh4YkMyAOR59xZSbQajbpLDfQisgHIlJTbUGR+o2botcAuCjnwdlaYxCtknbYSn0KMlSDF2Vi3yTGP'
  1809. $Code &= 'CldN2JFdTGl/Wt7lPZWzgVXWhkasMXeq092LBMiYiUiPHZDPogGoDhi1mo1Q4E9ASoTIKRmEIEQEvYS7FY5sTmJtK4QZQNwSpUcL'
  1810. $Code &= 'NA8tUv2GJ45kSFQVzVDmaTpAYZV3+xBPBOw7IndI0Wzc0JFF1exHQKKbM6N7NKG6yBasQhZ/SljiQ5TjyFBWKUCQcAnfAzzkR1jI'
  1811. $Code &= 'UNSv3HFQHoRPA3uIUPxGAeUsrNxHCRRjAitpkUlF4CWxftVPCV4XHbQImwJ3kESmmlwYDMzwhVmKafYrz+66T0QEyFcpIzvjLNAb'
  1812. $Code &= 'g79uwFsS5h8RFwnNw6uZuDBZDwYSPjQDNyhlscHrC7YbDh54MIKplxMas9w+TxX0LusOaLQ49UVIftzTYto3aTTUXUbcRfromunK'
  1813. $Code &= 'FtSRPONX6wMMF4oMAS+IJQhADdha5HXslRhCQQG51kPpNt0oz4r1FkjvoogwRfAMJBKEIn8IcK+8kNBXAY3NlkcaOC/w9yRBFEEb'
  1814. $Code &= 'HJz8koApUjQnVxhiz9UgyVFSdAf+nF6I4iQ7tN9tAQYghomF4PTYdV4jJMa4OCbhjklyP7bnaXhjhBBmGA47biZ0Dw9ijAcw61e8'
  1815. $Code &= '6GQbMgglkUgKEJWHyeOOhG4CO18cdFdGyCMVBy2ZU4v62hsUhnHtuU+EOf8pZqXQGhtRGCDAlBK3FmliFFAQS14JF1v0+kgraKHE'
  1816. $Code &= 'HFOg4gGJ6/dLE1D3Re0DviiEs1w/dfwJPxp9LihnnI87QcV0Iw8LXWPoautUfGsUyLAep/nb6JuQdQNF0CtGBFBSnl6QTfNr145q'
  1817. $Code &= '4SkfJ2B2dDG1BJ0tiCJTvWEVVqj4VC8p2gKH+IYC6w9dxKHJItl4QycGh8QtnwqwBkETdAxCtgh8oWEOdQdEDIzpBL9KFvUDDuFA'
  1818. $Code &= 'LzALWBGwZQYISoHigFE+AcoSVzwMe9DqVhEsdQQtBtK39BlOi1KUBaCx/qsilPueudQyYLUQbhikvooiEnQ9+ycedDa/jBUv/EC3'
  1819. $Code &= 'JDEKvo6kIE5BVv0kQb//0Gstdj8S++8rmVRHVpVShW/EQ4tzVt9EuUaDfuK1QuKHaxGjPgpLCvir9iMldSdsQyLphRJNDFfuDBPe'
  1820. $Code &= 'FztMRpl9yFn9UItDCRDoxekYpRJfJMcGpmqlIx6gsdN78L05Fsd2JQUoUAGpwBYhYaf6QfjdLEe7ef6h6DIseAf6UQGMSvxbYOIz'
  1821. $Code &= 'BYl+LF9tIi/yVPIgMBn272oNDRPnbgX3x0GtU5L/Klt0780KrS54jhJ2QVO/ABsEczWKFGAwEAIZ/4E05wFRwz3ay8fmeQA5+3UD'
  1822. $Code &= 'QesRhAfSdAQxyYMJurYpAynKidFAOxp4csaRfUDkCl1Jw2bIV0TKInvWN0e/CL3kaHWAYn88CFtzgi37/zoYQO4fViZ0T5IEPInB'
  1823. $Code &= 'uXIGZzgpyMJfx9V98a8gTPgkCHLgA3c4ileft+ixiFQN/MHu7kFoiSIcQXPnjeFoIZDWYSrHaEWF6Cj/zGuLWEsKKjMbMOgWJQFD'
  1824. $Code &= 'CHMpdgRIA/R40DuDPmhIuhBeX6fYDlMUVxMZBWOs5Y2h705OuDwnXpk/X3+dzH7ay1ZsIyECGoM4DVVAtXg8oeAJLGCQJV6KMslR'
  1825. $Code &= 'XSLZU1ZCDuqcQt3dFtFlXorb84Je4UB5jSIVkJW9aXsLQRVOKHpwjlH/0Ia3CwzQdUg6Uy40Yb9wi+o7hPQk1Uu5cploIKVc/LZt'
  1826. $Code &= 'WrFEqnUbZiYjVy3uy5uGoJmX8Y4iZijzpZxQ/KfoJIVeDYdDTI3ry9Faj6CNNvqTabxF3wDcLCnYLaAYwfgKAo2Ehgot2GuBglBw'
  1827. $Code &= 'RoFU6Rj5gJSOhjNWUIxsKcQMMmSMYU5sUsUYkLhDNI6/6veJmxrwyv9B8zRgGHFaHOOyS+zK5hqdcxtEGpiHE78WuabbnXFI2U5I'
  1828. $Code &= 'LUf9MAj5Jw91/vA/+r8S5nRkCQHImJH5GLXhb4hpwSsrHegPSQihEetiWrLh/0ziSFkAEBqkfJk7FgOsIgLIWln/4H+wll2LgLOM'
  1829. $Code &= 'gFKNgcaICTuOEbkQZo8QEpAityBEkUShyIncEZSSscMJBZMCYSTZRMGUBMWXCMuI1pkILJoIipsR1xCmnCLKIImdICqeRDOCihyf'
  1830. $Code &= 'RrmjNjLPRwllJHZLWFRx4WNvcsVl1uJaf7urnhpoa5Qe8v9kPoQcWliiq70/zu31qjstnb146eaIgkDchCNOUb4j2MhGkErPYjTr'
  1831. $Code &= 'tA/ZcCphTvoOf64tPhtt5o4oe2fPWGTHb2YzYmytOdcI622hkHlZSkQlOeLceW0fYm9saVd6NKKPmLZ8indl71RnZCh5JAgddCR5'
  1832. $Code &= 'cCBahpFhrs76Y3ypsCCTSHSjRhsOdW5rR293VSA0I+/Ci2dPPqncSEXK3nRudxK7jHtwJHplVFyMY8aSbXCUqy/uGPWUxGjrcMAA'
  1833. $Var_Opcode &= '0x89C0608B7424248B7C2428FCB28031DBA4B302E86D00000073F631C9E864000000731C31C0E85B0000007323B30241B010'
  1834. $Var_Opcode &= 'E84F00000010C073F7753FAAEBD4E84D00000029D97510E842000000EB28ACD1E8744D11C9EB1C9148C1E008ACE82C000000'
  1835. $Var_Opcode &= '3D007D0000730A80FC05730683F87F770241419589E8B3015689FE29C6F3A45EEB8E00D275058A164610D2C331C941E8EEFF'
  1836. $Var_Opcode &= 'FFFF11C9E8E7FFFFFF72F2C32B7C2428897C241C61C389D28B442404C70000000000C6400400C2100089F65557565383EC1C'
  1837. $Var_Opcode &= '8B6C243C8B5424388B5C24308B7424340FB6450488028B550083FA010F84A1000000733F8B5424388D34338954240C39F30F'
  1838. $Var_Opcode &= '848B0100000FB63B83C301E8CD0100008D57D580FA5077E50FBED20FB6041084C00FBED078D78B44240CC1E2028810EB6B83'
  1839. $Var_Opcode &= 'FA020F841201000031C083FA03740A83C41C5B5E5F5DC210008B4C24388D3433894C240C39F30F84CD0000000FB63B83C301'
  1840. $Var_Opcode &= 'E8740100008D57D580FA5077E50FBED20FB6041084C078DA8B54240C83E03F080283C2018954240CE96CFFFFFF8B4424388D'
  1841. $Var_Opcode &= '34338944240C39F30F84D00000000FB63B83C301E82E0100008D57D580FA5077E50FBED20FB6141084D20FBEC278D78B4C24'
  1842. $Var_Opcode &= '0C89C283E230C1FA04C1E004081189CF83C70188410139F374750FB60383C3018844240CE8EC0000000FB654240C83EA2B80'
  1843. $Var_Opcode &= 'FA5077E00FBED20FB6141084D20FBEC278D289C283E23CC1FA02C1E006081739F38D57018954240C8847010F8533FFFFFFC7'
  1844. $Var_Opcode &= '4500030000008B4C240C0FB60188450489C82B44243883C41C5B5E5F5DC210008D34338B7C243839F3758BC7450002000000'
  1845. $Var_Opcode &= '0FB60788450489F82B44243883C41C5B5E5F5DC210008B54240CC74500010000000FB60288450489D02B442438E9B1FEFFFF'
  1846. $Var_Opcode &= 'C7450000000000EB9956578B7C240C8B7424108B4C241485C9742FFC83F9087227F7C7010000007402A449F7C70200000074'
  1847. $Var_Opcode &= '0566A583E90289CAC1E902F3A589D183E103F3A4EB02F3A45F5EC3E8500000003EFFFFFF3F3435363738393A3B3C3DFFFFFF'
  1848. $Var_Opcode &= 'FEFFFFFF000102030405060708090A0B0C0D0E0F10111213141516171819FFFFFFFFFFFF1A1B1C1D1E1F2021222324252627'
  1849. $Var_Opcode &= '28292A2B2C2D2E2F3031323358C3'
  1850. EndIf
  1851. $Var_Opcode = Binary($Var_Opcode)
  1852. Local $CodeBufferMemory = __MemVrAlloc(0, BinaryLen($Var_Opcode), 0x1000, 0x40)
  1853. Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Var_Opcode) & "]", $CodeBufferMemory)
  1854. DllStructSetData($CodeBuffer, 1, $Var_Opcode)
  1855. Local $CodeBufferPtr = DllStructGetPtr($CodeBuffer)
  1856. Local $B64D_State = DllStructCreate("byte[16]")
  1857. Local $Length = StringLen($Code)
  1858. Local $output = DllStructCreate("byte[" & $Length & "]")
  1859. DllCall($dll_User32, 'int', 'CallWindowProc', "ptr", $CodeBufferPtr + ((StringInStr($Var_Opcode, "89F6") - 3) / 2), "str", $Code, "uint", $Length, "ptr", DllStructGetPtr($output), "ptr", DllStructGetPtr($B64D_State))
  1860. Local $ResultLen = DllStructGetData(DllStructCreate("uint", DllStructGetPtr($output)), 1)
  1861. Local $Result = DllStructCreate("byte[" & ($ResultLen + 16) & "]")
  1862. Local $Ret = DllCall($dll_User32, 'uint', 'CallWindowProc', "ptr", $CodeBufferPtr + ((StringInStr($Var_Opcode, "89C0") - 3) / 2), "ptr", DllStructGetPtr($output) + 4, "ptr", DllStructGetPtr($Result), "int", 0, "int", 0)
  1863. __MemVrFree($CodeBufferMemory, 0, 0x8000)
  1864. $Var_Opcode = 0
  1865. Local $Opcode = String(BinaryMid(DllStructGetData($Result, 1), 1, $Ret[0]))
  1866. $Z_DefInit = (StringInStr($Opcode, "FF01") + 1) / 2
  1867. $Z_DefInit2 = (StringInStr($Opcode, "FF02") + 1) / 2
  1868. $Z_Def = (StringInStr($Opcode, "FF03") + 1) / 2
  1869. $Z_DefEnd = (StringInStr($Opcode, "FF04") + 1) / 2
  1870. $Z_DefBound = (StringInStr($Opcode, "FF05") + 1) / 2
  1871. $Z_InfInit = (StringInStr($Opcode, "FF21") + 1) / 2
  1872. $Z_InfInit2 = (StringInStr($Opcode, "FF22") + 1) / 2
  1873. $Z_Inf = (StringInStr($Opcode, "FF23") + 1) / 2
  1874. $Z_InfEnd = (StringInStr($Opcode, "FF24") + 1) / 2
  1875. $Opcode = Binary($Opcode)
  1876. $Z_BufferMemory = __MemVrAlloc(0, BinaryLen($Opcode), 0x1000, 0x40)
  1877. $Z_Buffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]", $Z_BufferMemory)
  1878. DllStructSetData($Z_Buffer, 1, $Opcode)
  1879. $Z_BufferPtr = DllStructGetPtr($Z_Buffer)
  1880. $Z_DefInit += $Z_BufferPtr
  1881. $Z_DefInit2 += $Z_BufferPtr
  1882. $Z_Def += $Z_BufferPtr
  1883. $Z_DefEnd += $Z_BufferPtr
  1884. $Z_DefBound += $Z_BufferPtr
  1885. $Z_InfInit += $Z_BufferPtr
  1886. $Z_InfInit2 += $Z_BufferPtr
  1887. $Z_Inf += $Z_BufferPtr
  1888. $Z_InfEnd += $Z_BufferPtr
  1889. $Z_Alloc_Callback = DllCallbackRegister("__ZL_Alloc", "ptr:cdecl", "ptr;uint;uint")
  1890. $Z_Free_Callback = DllCallbackRegister("__ZL_Free", "none:cdecl", "ptr;ptr")
  1891. OnAutoItExitRegister("__ZL_Exit")
  1892. EndFunc
  1893.  
  1894. Func __ZL_GZCompress($Data, $iLevel = -1)
  1895. If Not IsDllStruct($Z_Buffer) Then __ZL_Startup()
  1896. If $iLevel > 8 Or $iLevel < -1 Then $Level = 8
  1897. Local $Stream = DllStructCreate('ptr next_in;uint avail_in;uint total_in;ptr next_out;uint avail_out;uint total_out;ptr msg;ptr state;ptr zalloc;ptr zfree;ptr opaque;int data_type;uint adler;uint reserved'), $Error
  1898. Local $Var_DefInit2 = DllStructCreate("int method;int windowBits;int memLevel;int strategy;")
  1899. DllStructSetData($Var_DefInit2, "method", 8)
  1900. DllStructSetData($Var_DefInit2, "windowBits", 16 + 15)
  1901. DllStructSetData($Var_DefInit2, "memLevel", 8)
  1902. DllStructSetData($Var_DefInit2, "strategy", 0)
  1903. DllStructSetData($Stream, "zalloc", DllCallbackGetPtr($Z_Alloc_Callback))
  1904. DllStructSetData($Stream, "zfree", DllCallbackGetPtr($Z_Free_Callback))
  1905. DllCall($dll_User32, 'int', 'CallWindowProc', "ptr", $Z_DefInit2, "ptr", DllStructGetPtr($Stream), "int", $iLevel, "ptr", DllStructGetPtr($Var_DefInit2), "int", 0)
  1906. Local $SourceLen = BinaryLen($Data)
  1907. Local $DestLen = DllCall($dll_User32, 'int', 'CallWindowProc', "ptr", $Z_DefBound, "ptr", DllStructGetPtr($Stream), "uint", $SourceLen, "int", 0, "int", 0)[0]
  1908. Local $Source = DllStructCreate("byte[" & $SourceLen & "]")
  1909. Local $Dest = DllStructCreate("byte[" & $DestLen & "]")
  1910. DllStructSetData($Source, 1, $Data)
  1911. DllStructSetData($Stream, "next_in", DllStructGetPtr($Source))
  1912. DllStructSetData($Stream, "avail_in", $SourceLen)
  1913. DllStructSetData($Stream, "next_out", DllStructGetPtr($Dest))
  1914. DllStructSetData($Stream, "avail_out", $DestLen)
  1915. $Error = DllCall($dll_User32, 'int', 'CallWindowProc', "ptr", $Z_Def, "ptr", DllStructGetPtr($Stream), "int", 4, "int", 0, "int", 0)[0]
  1916. If $Error = 2 Or $Error < 0 Then
  1917. DllCall($dll_User32, 'int', 'CallWindowProc', "ptr", $Z_DefEnd, "ptr", DllStructGetPtr($Stream), "int", 0, "int", 0, "int", 0)
  1918. Return SetError($Error, 0, Binary(""))
  1919. EndIf
  1920. DllCall($dll_User32, 'int', 'CallWindowProc', "ptr", $Z_DefEnd, "ptr", DllStructGetPtr($Stream), "int", 0, "int", 0, "int", 0)
  1921. Return BinaryMid(DllStructGetData($Dest, 1), 1, DllStructGetData($Stream, "total_out"))
  1922. EndFunc
  1923.  
  1924. Func __ZL_GZUncompress($Data)
  1925. If Not IsDllStruct($Z_Buffer) Then __ZL_Startup()
  1926. Local $Stream = DllStructCreate('ptr next_in;uint avail_in;uint total_in;ptr next_out;uint avail_out;uint total_out;ptr msg;ptr state;ptr zalloc;ptr zfree;ptr opaque;int data_type;uint adler;uint reserved')
  1927. DllStructSetData($Stream, "zalloc", DllCallbackGetPtr($Z_Alloc_Callback))
  1928. DllStructSetData($Stream, "zfree", DllCallbackGetPtr($Z_Free_Callback))
  1929. DllCall($dll_User32, 'int', 'CallWindowProc', "ptr", $Z_InfInit2, "ptr", DllStructGetPtr($Stream), "int", 16 + 15, "int", 0, "int", 0)
  1930. Local $SourceLen = BinaryLen($Data)
  1931. Local $DestLen = $SourceLen * 2
  1932. Local $Source = DllStructCreate("byte[" & $SourceLen & "]")
  1933. Local $Dest = DllStructCreate("byte[" & $DestLen & "]")
  1934. Local $DestPtr = DllStructGetPtr($Dest)
  1935. DllStructSetData($Source, 1, $Data)
  1936. DllStructSetData($Stream, "next_in", DllStructGetPtr($Source))
  1937. DllStructSetData($Stream, "avail_in", $SourceLen)
  1938. Local $Ret = Binary(""), $Error
  1939. Do
  1940. DllStructSetData($Stream, "next_out", $DestPtr)
  1941. DllStructSetData($Stream, "avail_out", $DestLen)
  1942. $Error = DllCall($dll_User32, 'int', 'CallWindowProc', "ptr", $Z_Inf, "ptr", DllStructGetPtr($Stream), "int", 0, "int", 0, "int", 0)[0]
  1943. If $Error = 2 Or $Error < 0 Then
  1944. DllCall($dll_User32, 'int', 'CallWindowProc', "ptr", $Z_InfEnd, "ptr", DllStructGetPtr($Stream), "int", 0, "int", 0, "int", 0)
  1945. Return SetError($Error, 0, $Ret)
  1946. EndIf
  1947. Local $AvailOut = DllStructGetData($Stream, "avail_out")
  1948. $Ret &= BinaryMid(DllStructGetData($Dest, 1), 1, $DestLen - $AvailOut)
  1949. Until $AvailOut <> 0
  1950. DllCall($dll_User32, 'int', 'CallWindowProc', "ptr", $Z_InfEnd, "ptr", DllStructGetPtr($Stream), "int", 0, "int", 0, "int", 0)
  1951. Return $Ret
  1952. EndFunc
  1953. #EndRegion
  1954.  
  1955.  
  1956.  
  1957. #Region <UDF WinHttp by Trancexx, ProAndy>
  1958. Func _WinHttpQueryHeaders2($hRequest, $iInfoLevel = 22, $iIndex = 0)
  1959. Switch $iInfoLevel
  1960. Case 79
  1961. Local $vCert = _GetCertificateInfo()
  1962. Return SetError(@error, 0, $vCert)
  1963. Case 80
  1964. Local $vDS = _GetNameDNS()
  1965. Return SetError(@error, 0, $vDS)
  1966. Case Else
  1967. Local $aCall = DllCall($dll_WinHttp, "bool", 'WinHttpQueryHeaders', "handle", $hRequest, "dword", $iInfoLevel, "wstr", '', "wstr", "", "dword*", 65536, "dword*", $iIndex)
  1968. If @error Or Not $aCall[0] Then Return SetError(1, 0, "")
  1969. Return $aCall[4]
  1970. EndSwitch
  1971. EndFunc
  1972.  
  1973. Func _WinHttpAddRequestHeaders2($hRequest, $sHeader, $iModifier = Default)
  1974. DllCall($dll_WinHttp, "bool", 'WinHttpAddRequestHeaders', "handle", $hRequest, "wstr", $sHeader, "dword", -1, "dword", 0x10000000)
  1975. EndFunc
  1976.  
  1977. Func _WinHttpOpen2()
  1978. Local $aCall = DllCall($dll_WinHttp, "handle", 'WinHttpOpen', "wstr", '', "dword", 1, "wstr", '', "wstr", '', "dword", 0)
  1979. If @error Or Not $aCall[0] Then Return SetError(1, 0, 0)
  1980. Return $aCall[0]
  1981. EndFunc
  1982.  
  1983. Func _WinHttpSendRequest2($hRequest, $sHeaders = '', $sData2Send = '', $CallBackFunc_Progress = '', $iContext = 0)
  1984. If IsBinary($sData2Send) Then
  1985. Local $iDataLen = BinaryLen($sData2Send)
  1986. Local $aCall = DllCall($dll_WinHttp, "bool", 'WinHttpSendRequest', "handle", $hRequest, "wstr", $sHeaders, "dword", 0, "ptr", 0, "dword", 0, "dword", $iDataLen, "dword_ptr", $iContext)
  1987. If @error Or Not $aCall[0] Then Return SetError(1, 0, 0)
  1988. If $iDataLen Then
  1989. Local $tBuffer, $iDataMid, $iCheckCallbackFunc = 0, $vNowSizeBytes = 1, $vTotalSizeBytes = -1
  1990. If $CallBackFunc_Progress <> '' Then
  1991. $iCheckCallbackFunc = 1
  1992. $vTotalSizeBytes = $iDataLen
  1993. If $vTotalSizeBytes > 2147483647 Then Return SetError(101, __HttpRequest_ErrNotify('File is too large', 101), 0)
  1994. EndIf
  1995. ;----------------------------------
  1996. For $i = 1 To 2147483647
  1997. If $g___CancelReadWrite Then
  1998. $g___CancelReadWrite = False
  1999. Return SetError(999, __HttpRequest_ErrNotify('Cancel Write Data', 999), 0)
  2000. EndIf
  2001. $iDataMid = BinaryMid($sData2Send, $vNowSizeBytes, $g___BytesPerLoop)
  2002. $iDataMidLen = BinaryLen($iDataMid)
  2003. If Not $iDataMidLen Then ExitLoop
  2004. $tBuffer = DllStructCreate("byte[" & ($iDataMidLen + 1) & "]")
  2005. DllStructSetData($tBuffer, 1, $iDataMid)
  2006. $aCall = DllCall($dll_WinHttp, "bool", 'WinHttpWriteData', "handle", $hRequest, "struct*", $tBuffer, "dword", $iDataMidLen, "dword*", 0)
  2007. If @error Or Not $aCall[0] Then ExitLoop
  2008. $vNowSizeBytes += $iDataMidLen
  2009. If $iCheckCallbackFunc Then $CallBackFunc_Progress($vNowSizeBytes, $vTotalSizeBytes)
  2010. Next
  2011. EndIf
  2012. Else
  2013. Local $iDataLen = StringLen($sData2Send)
  2014. Local $aCall = DllCall($dll_WinHttp, "bool", 'WinHttpSendRequest', "handle", $hRequest, "wstr", $sHeaders, "dword", 0, "ptr", 0, "dword", 0, "dword", $iDataLen, "dword_ptr", $iContext)
  2015. If @error Or Not $aCall[0] Then Return SetError(1, 0, 0)
  2016. If $iDataLen Then
  2017. Local $tBuffer, $iDataMid, $iCheckCallbackFunc = 0, $vNowSizeBytes = 1, $vTotalSizeBytes = -1
  2018. If $CallBackFunc_Progress <> '' Then
  2019. $iCheckCallbackFunc = 1
  2020. $vTotalSizeBytes = $iDataLen
  2021. If $vTotalSizeBytes > 2147483647 Then Return SetError(101, __HttpRequest_ErrNotify('File is too large', 101), 0)
  2022. EndIf
  2023. ;----------------------------------
  2024. For $i = 1 To 2147483647
  2025. If $g___CancelReadWrite Then
  2026. $g___CancelReadWrite = False
  2027. Return SetError(999, __HttpRequest_ErrNotify('Cancel Write Data', 999), 0)
  2028. EndIf
  2029. $iDataMid = StringMid($sData2Send, $vNowSizeBytes, $g___BytesPerLoop)
  2030. $iDataMidLen = StringLen($iDataMid)
  2031. If Not $iDataMidLen Then ExitLoop
  2032. $tBuffer = DllStructCreate("char[" & ($iDataMidLen + 1) & "]")
  2033. DllStructSetData($tBuffer, 1, $iDataMid)
  2034. $aCall = DllCall($dll_WinHttp, "bool", 'WinHttpWriteData', "handle", $hRequest, "struct*", $tBuffer, "dword", $iDataMidLen, "dword*", 0)
  2035. If @error Or Not $aCall[0] Then ExitLoop
  2036. $vNowSizeBytes += $iDataMidLen
  2037. If $iCheckCallbackFunc Then $CallBackFunc_Progress($vNowSizeBytes, $vTotalSizeBytes)
  2038. Next
  2039. EndIf
  2040. EndIf
  2041. Return 1
  2042. EndFunc
  2043.  
  2044. Func _WinHttpReadData_Ex($hRequest, $CallBackFunc_Progress = '')
  2045. Local $vBinaryData = Binary(''), $aCall, $iCheckCallbackFunc = 0, $vNowSizeBytes = 1, $vTotalSizeBytes = -1
  2046. Local $tBuffer = DllStructCreate("byte[" & $g___BytesPerLoop & "]")
  2047. ;----------------------------------
  2048. If $CallBackFunc_Progress <> '' Then
  2049. $iCheckCallbackFunc = 1
  2050. $vTotalSizeBytes = Number(_WinHttpQueryHeaders2($hRequest, 5)) ;QUERY_CONTENT_LENGTH
  2051. If $vTotalSizeBytes > 2147483647 Then Return SetError(102, __HttpRequest_ErrNotify('File is too large', 102), 0)
  2052. EndIf
  2053. ;----------------------------------
  2054. For $i = 1 To 2147483647
  2055. If $g___CancelReadWrite Then
  2056. $g___CancelReadWrite = False
  2057. Return SetError(998, __HttpRequest_ErrNotify('Cancel Read Data', 998), 0)
  2058. EndIf
  2059. $aCall = DllCall($dll_WinHttp, "bool", 'WinHttpReadData', "handle", $hRequest, "struct*", $tBuffer, "dword", $g___BytesPerLoop, 'dword*', 0)
  2060. If @error Or Not $aCall[0] Or Not $aCall[4] Then ExitLoop
  2061. If $aCall[4] < $g___BytesPerLoop Then
  2062. $vBinaryData &= BinaryMid(DllStructGetData($tBuffer, 1), 1, $aCall[4])
  2063. Else
  2064. $vBinaryData &= DllStructGetData($tBuffer, 1)
  2065. EndIf
  2066. $vNowSizeBytes += $aCall[4]
  2067. If $iCheckCallbackFunc Then $CallBackFunc_Progress($vNowSizeBytes, $vTotalSizeBytes)
  2068. Next
  2069. Return $vBinaryData
  2070. EndFunc
  2071.  
  2072. Func _WinHttpConnect2($hSession, $sServerName, $iServerPort, $iServerScheme = 1)
  2073. Local $aCall = DllCall($dll_WinHttp, "handle", 'WinHttpConnect', "handle", $hSession, "wstr", $sServerName, "dword", $iServerPort, "dword", 0)
  2074. If @error Or Not $aCall[0] Then Return SetError(1, 0, 0)
  2075. _WinHttpSetOption2($aCall[0], 45, $iServerScheme)
  2076. Return $aCall[0]
  2077. EndFunc
  2078.  
  2079. Func _WinHttpSetTimeouts2($hInternet, $iConnectTimeout = 30000, $iSendTimeout = 30000, $iReceiveTimeout = 30000)
  2080. DllCall($dll_WinHttp, "bool", 'WinHttpSetTimeouts', "handle", $hInternet, "int", 0, "int", $iConnectTimeout, "int", $iSendTimeout, "int", $iReceiveTimeout)
  2081. EndFunc
  2082.  
  2083. Func _WinHttpCloseHandle2($hInternet)
  2084. DllCall($dll_WinHttp, "bool", 'WinHttpCloseHandle', "handle", $hInternet)
  2085. Return 0
  2086. EndFunc
  2087.  
  2088. Func _WinHttpOpenRequest2($hConnect, $sVerb, $sObjectName = '', $iFlags = 0x40, $sVersion = 'HTTP/1.1')
  2089. Local $aCall = DllCall($dll_WinHttp, "handle", 'WinHttpOpenRequest', "handle", $hConnect, "wstr", StringUpper($sVerb), "wstr", $sObjectName, "wstr", StringUpper($sVersion), "wstr", '', "ptr", 0, "dword", $iFlags)
  2090. If @error Or Not $aCall[0] Then Return SetError(1, 0, 0)
  2091. Return $aCall[0]
  2092. EndFunc
  2093.  
  2094. Func _WinHttpReceiveResponse2($hRequest)
  2095. Local $aCall = DllCall($dll_WinHttp, "bool", 'WinHttpReceiveResponse', "handle", $hRequest, "ptr", 0)
  2096. If Not @error And $aCall[0] Then Return 1
  2097. EndFunc
  2098.  
  2099. Func _WinHttpSetOptionEx2($hInternet, $iOption, $vBuffer = 0)
  2100. Local $tBuffer, $iBuffer
  2101. If IsBinary($vBuffer) Or IsNumber($vBuffer) Then
  2102. $iBuffer = BinaryLen($vBuffer)
  2103. $tBuffer = DllStructCreate("byte[" & $iBuffer & "]")
  2104. DllStructSetData($tBuffer, 1, $vBuffer)
  2105. ElseIf IsDllStruct($vBuffer) Then
  2106. $tBuffer = $vBuffer
  2107. $iBuffer = DllStructGetSize($tBuffer)
  2108. Else
  2109. $tBuffer = DllStructCreate("wchar[" & (StringLen($vBuffer) + 1) & "]")
  2110. $iBuffer = DllStructGetSize($tBuffer)
  2111. DllStructSetData($tBuffer, 1, $vBuffer)
  2112. EndIf
  2113. Local $avResult = DllCall($dll_WinHttp, "bool", 'WinHttpSetOption', "handle", $hInternet, "dword", $iOption, "ptr", DllStructGetPtr($tBuffer), "dword", $iBuffer)
  2114. If @error Or Not $avResult[0] Then Return SetError(1, 0, False)
  2115. Return True
  2116. EndFunc
  2117.  
  2118. Func _WinHttpSetOption2($hInternet, $iOption, $vSetting, $iSize = -1)
  2119. Local $sType
  2120. If IsBinary($vSetting) Then
  2121. $iSize = DllStructCreate("byte[" & BinaryLen($vSetting) & "]")
  2122. DllStructSetData($iSize, 1, $vSetting)
  2123. $vSetting = $iSize
  2124. $iSize = DllStructGetSize($vSetting)
  2125. EndIf
  2126. Switch $iOption
  2127. Case 2 To 7, 12, 13, 31, 36, 58, 63, 68, 73, 74, 77, 79, 80, 83 To 85, 88 To 92, 96, 100, 101, 110, 118
  2128. $sType = "dword*"
  2129. $iSize = 4
  2130. Case 1, 86
  2131. $sType = "ptr*"
  2132. $iSize = 4
  2133. If @AutoItX64 Then $iSize = 8
  2134. If Not IsPtr($vSetting) Then Return SetError(1, 0, 0)
  2135. Case 45
  2136. $sType = "dword_ptr*"
  2137. $iSize = 4
  2138. If @AutoItX64 Then $iSize = 8
  2139. Case 41, 0x1000 To 0x1003
  2140. $sType = "wstr"
  2141. If (IsDllStruct($vSetting) Or IsPtr($vSetting)) Then Return SetError(2, 0, 0)
  2142. If $iSize < 1 Then $iSize = StringLen($vSetting)
  2143. Case 38, 47, 59, 97, 98
  2144. $sType = "ptr"
  2145. If Not (IsDllStruct($vSetting) Or IsPtr($vSetting)) Then Return SetError(3, 0, 0)
  2146. Case Else
  2147. Return SetError(4, 0, 0)
  2148. EndSwitch
  2149. If $iSize < 1 Then
  2150. If IsDllStruct($vSetting) Then
  2151. $iSize = DllStructGetSize($vSetting)
  2152. Else
  2153. Return SetError(5, 0, 0)
  2154. EndIf
  2155. EndIf
  2156. Local $aCall = DllCall($dll_WinHttp, "bool", 'WinHttpSetOption', "handle", $hInternet, "dword", $iOption, $sType, IsDllStruct($vSetting) ? DllStructGetPtr($vSetting) : $vSetting, "dword", $iSize)
  2157. If @error Or Not $aCall[0] Then Return SetError(6, 0, 0)
  2158. Return 1
  2159. EndFunc
  2160.  
  2161. Func _WinHttpQueryOptionEx2($hInternet, $iOption, $iBufferSize = 2048)
  2162. Local $tBufferLength = DllStructCreate("dword")
  2163. DllStructSetData($tBufferLength, 1, $iBufferSize)
  2164. Local $tBuffer = DllStructCreate("byte[" & $iBufferSize & "]")
  2165. Local $avResult = DllCall($dll_WinHttp, "bool", 'WinHttpQueryOption', "handle", $hInternet, "dword", $iOption, "ptr", DllStructGetPtr($tBuffer), "ptr", DllStructGetPtr($tBufferLength))
  2166. If @error Or Not $avResult[0] Then Return SetError(1, 0, "")
  2167. Return $tBuffer
  2168. EndFunc
  2169.  
  2170. Func _WinHttpQueryOption2($hRequest, $iOption)
  2171. Local $aCall = DllCall($dll_WinHttp, "bool", 'WinHttpQueryOption', "handle", $hRequest, "dword", $iOption, "ptr", 0, "dword*", 0)
  2172. If @error Or $aCall[0] Then Return SetError(1, 0, "")
  2173. Local $iSize = $aCall[4], $tBuffer
  2174. Switch $iOption
  2175. Case 34, 41, 81, 82, 93, 0x1000, 0x1001, 0x1003, 0x1002
  2176. $tBuffer = DllStructCreate("wchar[" & $iSize + 1 & "]")
  2177. Case 1, 21, 78
  2178. $tBuffer = DllStructCreate("ptr")
  2179. Case 0 To 7, 9, 24, 31, 36, 73, 74, 83, 89
  2180. $tBuffer = DllStructCreate("int")
  2181. Case 45
  2182. $tBuffer = DllStructCreate("dword_ptr")
  2183. Case Else
  2184. $tBuffer = DllStructCreate("byte[" & $iSize & "]")
  2185. EndSwitch
  2186. $aCall = DllCall($dll_WinHttp, "bool", 'WinHttpQueryOption', "handle", $hRequest, "dword", $iOption, "struct*", $tBuffer, "dword*", $iSize)
  2187. If @error Or Not $aCall[0] Then Return SetError(2, 0, "")
  2188. Return DllStructGetData($tBuffer, 1)
  2189. EndFunc
  2190.  
  2191. Func _WinHttpSetProxy2($hInternet, $sProxy = "", $sProxyBypass = "")
  2192. Local $tProxy = DllStructCreate("wchar sProxy[" & StringLen($sProxy) + 1 & "];wchar sProxyBypass[" & StringLen($sProxyBypass) + 1 & "]")
  2193. $tProxy.sProxy = $sProxy
  2194. $tProxy.sProxyBypass = $sProxyBypass
  2195. ;------------------------------------------------------------
  2196. Local $tProxyInfo = DllStructCreate("dword AccessType;ptr Proxy;ptr ProxyBypass")
  2197. $tProxyInfo.AccessType = ($sProxy ? 3 : 1)
  2198. $tProxyInfo.Proxy = DllStructGetPtr($tProxy, 1)
  2199. $tProxyInfo.ProxyBypass = DllStructGetPtr($tProxy, 2)
  2200. ;------------------------------------------------------------
  2201. _WinHttpSetOptionEx2($hInternet, 38, $tProxyInfo)
  2202. If @error Then Return SetError(1, 0, 0)
  2203. Return 1
  2204. EndFunc
  2205.  
  2206. Func _WinHttpSetStatusCallback2($hInternet, $pCallback, $nStatusRev)
  2207. DllCall($dll_WinHttp, "ptr", 'WinHttpSetStatusCallback', "handle", $hInternet, "ptr", $pCallback, "dword", $nStatusRev, "ptr", 0)
  2208. EndFunc
  2209.  
  2210. Func _WinHttpSetCredentials2($hRequest, $sUserName, $sPassword, $iAuthTargets, $iAuthScheme)
  2211. ;$iAuthTargets: Server = 0x0 ;Proxy = 0x1
  2212. ;$iAuthScheme: BASIC = 0x1 ;NTLM = 0x2 ;PASSPORT = 0x4 ;DIGEST = 0x8 ;NEGOTIATE = 0x10
  2213. Local $aCall = DllCall($dll_WinHttp, "bool", 'WinHttpSetCredentials', "handle", $hRequest, "dword", $iAuthTargets, "dword", $iAuthScheme, "wstr", $sUserName, "wstr", $sPassword, "ptr", 0)
  2214. If @error Or Not $aCall[0] Then Return SetError(1, 0, 0)
  2215. Return 1
  2216. EndFunc
  2217. #EndRegion
  2218.  
  2219.  
  2220.  
  2221. #Region <Chạy code javascript, php>
  2222. Func __JS_Beautify($jsCode)
  2223. $jsCode = _HttpRequest(2, 'https://javascriptbeautifier.com/compress', 'js_code=' & _URIEncode($jsCode) & '&js_code_result=&beautify=true')
  2224. $jsCode = StringRegExp($jsCode, '(?s)"mini":"(.+?)"\}$', 1)
  2225. If @error Or StringInStr($jsCode[0], 'undefined","error"', 0, 1, 1, 30) Then Return SetError(1, '', '')
  2226. $jsCode = StringReplace($jsCode[0], '\n', @CRLF)
  2227. $jsCode = StringRegExpReplace($jsCode, '\\([''"])', '$1')
  2228. Return $jsCode
  2229. EndFunc
  2230.  
  2231. Func __JS_Compress($jsCode)
  2232. $jsCode = _HttpRequest(2, 'https://javascript-minifier.com/raw', 'input=' & _URIEncode($jsCode))
  2233. If @error Or $jsCode = '' Or StringInStr($jsCode, '// Error:', 0, 1, 1, 10) Then Return SetError(1, '', $jsCode)
  2234. Return $jsCode
  2235. EndFunc
  2236.  
  2237. Func _JS_ToStringAu3($jsMode = 0) ;0: Chỉ chuyển sang string, 1: Compress trước khi chuyển, 2: beautify trước khi chuyển
  2238. Local $jsCode = ClipGet()
  2239. If Not $jsCode Then Return SetError(1, MsgBox(4096, 'Lỗi', 'Hãy copy đoạn js cần chuyển thành string Au3 trước khi chạy hàm này'), '')
  2240. ;-----------------------------------------------------------------------------------------------------------
  2241. Switch $jsMode
  2242. Case 1
  2243. $jsCode = __JS_Compress($jsCode)
  2244. Case 2
  2245. $jsCode = __JS_Beautify($jsCode)
  2246. EndSwitch
  2247. If @error Or Not $jsCode Then Return SetError(2, __HttpRequest_ErrNotify('_JS_ToStringAu3', 1), '')
  2248. ;-----------------------------------------------------------------------------------------------------------
  2249. $jsCode = StringStripCR(StringRegExpReplace($jsCode, '(?m)^[\s\t]*$[\r\n]+', ''))
  2250. $jsCode = StringRegExpReplace(StringReplace($jsCode, "'", "''", 0, 1), '(?m)^', "'")
  2251. $jsCode = StringTrimRight(StringRegExpReplace($jsCode, '(?m)($)', "' & @CRLF & _"), 3)
  2252. ClipPut($jsCode)
  2253. MsgBox(4096, 'Thông báo', 'Đã lưu kết quả chuyển đổi vào Clipboard')
  2254. EndFunc
  2255.  
  2256. Func _JS_Execute($LibraryJS, $sCodeJS, $Name_Var_Return_Val, $ModeIE = False, $PathTempLibJS = Default)
  2257. If FileExists($PathTempLibJS) Then
  2258. If StringRight($PathTempLibJS, 1) <> '\' Then $PathTempLibJS &= '\'
  2259. Else
  2260. $PathTempLibJS = @TempDir & '\'
  2261. EndIf
  2262. Local $TempPath, $hOpen, $iError = 0, $sLibraryJS = ''
  2263. If FileExists($sCodeJS) Then $sCodeJS = FileRead($sCodeJS)
  2264. If StringInStr($Name_Var_Return_Val, '.', 1, 1) Then
  2265. Local $Name_Var_Return_Val_tmp = $Name_Var_Return_Val
  2266. $Name_Var_Return_Val = StringReplace($Name_Var_Return_Val, '.', '', 1, 1)
  2267. $sCodeJS = StringReplace($sCodeJS, $Name_Var_Return_Val_tmp, $Name_Var_Return_Val, 1, 1)
  2268. EndIf
  2269. $sCodeJS = StringRegExpReplace($sCodeJS, '(location.href=)(".*?"|''.*?'')', '')
  2270. If $LibraryJS Or IsArray($LibraryJS) Then
  2271. If Not IsArray($LibraryJS) Then $LibraryJS = StringSplit($LibraryJS, '|', 2)
  2272. For $i = 0 To UBound($LibraryJS) - 1
  2273. If StringRegExp($LibraryJS[$i], '^https?://') Then
  2274. $TempPath = $PathTempLibJS & StringRight(StringRegExpReplace($LibraryJS[$i], '(\.js|\W+)', '-'), 200) & '.js'
  2275. If FileExists($TempPath) Then
  2276. $LibraryJS[$i] = FileRead($TempPath)
  2277. Else
  2278. $LibraryJS[$i] = _HttpRequest(2, $LibraryJS[$i])
  2279. If @error Or Not $LibraryJS[$i] Then $iError = 301
  2280. $hOpen = FileOpen($TempPath, 2 + 32 + 8)
  2281. FileWrite($hOpen, $LibraryJS[$i])
  2282. FileClose($hOpen)
  2283. EndIf
  2284. Else
  2285. $LibraryJS[$i] = FileRead($LibraryJS[$i])
  2286. EndIf
  2287. $sLibraryJS &= $LibraryJS[$i] & ';' & @CRLF
  2288. Next
  2289. EndIf
  2290. ;-----------------------------------------------------------------------------------------------------------
  2291. $sCodeJS = '<script>' & @CRLF & $sCodeJS & ';' & @CRLF & '</script>' & @CRLF
  2292. $sCodeJS &= '<script>document.write(' & $Name_Var_Return_Val & ');</script>'
  2293. $sCodeJS = '<script>' & @CRLF & $sLibraryJS & ';' & @CRLF & '</script>' & @CRLF & $sCodeJS
  2294. If $ModeIE Then
  2295. Local $oIE = ObjCreate("InternetExplorer.Application")
  2296. With $oIE
  2297. .Navigate('about:blank')
  2298. .Document.Write($sCodeJS)
  2299. $sCodeJS = .Document.Body.InnerText
  2300. .Close()
  2301. .Quit()
  2302. ProcessClose(.Hwnd)
  2303. EndWith
  2304. Else
  2305. $sCodeJS = __HTML_Execute($sCodeJS)
  2306. If @error Then $iError = 302
  2307. EndIf
  2308. ;-----------------------------------------------------------------------------------------------------------
  2309. Return SetError($iError, '', $sCodeJS)
  2310. EndFunc
  2311.  
  2312. Func _PHP_Execute($phpData, $Name_Var_Return_Val, $phpVersion = Default)
  2313. If Not $phpVersion Or $phpVersion = Default Then $phpVersion = '7.1.0'
  2314. If StringLeft($Name_Var_Return_Val, 1) <> '$' Then $Name_Var_Return_Val = '$' & $Name_Var_Return_Val
  2315. $phpData = StringRegExp(_HttpRequest(2, 'http://sandbox.onlinephpfunctions.com/', 'code=' & _URIEncode($phpData & ';' & @CRLF & 'echo ' & $Name_Var_Return_Val & ';') & '&phpVersion=' & StringReplace($phpVersion, '.', '_', 0, 1) & '&output=Textbox&ajaxResult=1'), '<textarea [^>]+>(.*?)</textarea>', 1)
  2316. Return (@error ? SetError(1, '', '') : _HTMLDecode($phpData[0]))
  2317. EndFunc
  2318. #EndRegion
  2319.  
  2320.  
  2321.  
  2322. #Region <HTML Entities>
  2323. Func __HTML_Entities_Decode($sHTML, $iModeIE = False)
  2324. If $iModeIE = Default Then $iModeIE = False
  2325. If $iModeIE Then
  2326. $sHTML = __HTML_Execute(StringReplace($sHTML, '&#xD;', '<hr>'))
  2327. Else
  2328. If Not IsObj($g___oDicEntity) Then
  2329. $g___oDicEntity = __HTML_Entities_Init()
  2330. If @error Then Return SetError(2, __HttpRequest_ErrNotify('__HTML_Entities_Decode', '$g___oDicEntity Error'), $sHTML)
  2331. EndIf
  2332. ;---------------------------------------------------------------------
  2333. Local $aText = StringRegExp($sHTML, '\&\#(\d+)\;', 3)
  2334. If Not @error Then
  2335. For $i = 0 To UBound($aText) - 1
  2336. $sHTML = StringReplace($sHTML, '&#' & $aText[$i] & ';', ChrW($aText[$i]), 0, 1)
  2337. Next
  2338. EndIf
  2339. ;---------------------------------------------------------------------
  2340. $aText = StringRegExp($sHTML, '\&([a-zA-Z]{2,10})\;', 3)
  2341. If Not @error Then
  2342. For $i = 0 To UBound($aText) - 1
  2343. $sHTML = StringReplace($sHTML, '&' & $aText[$i] & ';', $g___oDicEntity.item($aText[$i]), 0, 1)
  2344. Next
  2345. EndIf
  2346. EndIf
  2347. Return $sHTML
  2348. EndFunc
  2349.  
  2350. Func __HTML_Entities_Init()
  2351. If $g___aChrEnt == '' Then
  2352. Local $sChrEnt = ''
  2353. $sChrEnt &= '0x2271756F747C2761706F737C26616D707C3C6C747C3E67747CA06E6273707CA1696578636C7CA263656E747CA3706F756E64'
  2354. $sChrEnt &= '7CA463757272656E7CA579656E7CA66272766261727CA7736563747CA8756D6C7CA9636F70797CAA6F7264667CAB6C6171756'
  2355. $sChrEnt &= 'F7CAC6E6F747CAE7265677CAF6D6163727CB1706C75736D6E7CB461637574657CB56D6963726F7CB6706172617CB76D696464'
  2356. $sChrEnt &= '6F747CB8636564696C7CB9737570317CB2737570327CB3737570337CBC6672616331347CBD6672616331327CBE6672616333347'
  2357. $sChrEnt &= 'CBF6971756573747CDF737A6C69677CF76469766964657C88636972637C9874696C64657C3F7369676D61667C3F746865746173'
  2358. $sChrEnt &= '796D7C3F75707369687C3F7069767CB06465677CD774696D65737CBA6F72646D7CBB726171756F7CAD7368797CE06167726176'
  2359. $sChrEnt &= '657CE16161637574657CE261636972637CE36174696C64657CE461756D6C7CE56172696E677CE661656C69677CE763636564696C'
  2360. $sChrEnt &= '7CEA65636972637CEB65756D6C7CEC6967726176657CED6961637574657CEE69636972637CEF69756D6C7CF06574687CF16E746'
  2361. $sChrEnt &= '96C64657CF26F67726176657CF36F61637574657CF46F636972637CF56F74696C64657CF66F756D6C7CF86F736C6173687CF975'
  2362. $sChrEnt &= '67726176657CFA7561637574657CFB75636972637CFC75756D6C7C9C6F656C69677C9A736361726F6E7C83666E6F667C61616C'
  2363. $sChrEnt &= '7068617CDF626574617C3F67616D6D617C6464656C74617C65657073696C6F6E7C3F696F74617C3F6B617070617C3F6C616D62'
  2364. $sChrEnt &= '64617CB56D757C3F6E757C3F78697C3F6F6D6963726F6E7C7070697C737369676D617C747461757C3F757073696C6F6E7C66706'
  2365. $sChrEnt &= '8697C3F6368697C3F7073697C3F6F6D6567617CFE74686F726E7C3F72686F7C3F7A6574617C3F6574617C3F74686574617CE865'
  2366. $sChrEnt &= '67726176657CE96561637574657CFD7961637574657CFF79756D6C'
  2367. $g___aChrEnt = StringSplit($sChrEnt, '|', 2)
  2368. EndIf
  2369. $g___oDicEntity = ObjCreate("Scripting.Dictionary")
  2370. If @error Or Not IsObj($g___oDicEntity) Then Return SetError(1)
  2371. Local $aChrEnt
  2372. For $i = 0 To UBound($g___aChrEnt) - 1
  2373. $aChrEnt = StringRegExp($g___aChrEnt[$i], '^(.)(.)(.+)$', 3)
  2374. If $i > 45 Then $g___oDicEntity.add(StringUpper($aChrEnt[1]) & $aChrEnt[2], StringUpper($aChrEnt[0]))
  2375. $g___oDicEntity.add($aChrEnt[1] & $aChrEnt[2], $aChrEnt[0])
  2376. Next
  2377. Return $g___oDicEntity
  2378. EndFunc
  2379.  
  2380. Func __HTML_Execute($sHTML, $iElement = '', $iAttribute = '', $iSpecifiedValue = '', $iReturnHTML = False)
  2381. Local $oHTML = ObjCreate("HTMLFILE"), $sResult = '', $oFind = 0, $l___iError = 0
  2382. If @error Or Not IsObj($oHTML) Then Return SetError(1, ConsoleWrite('!> Cannot create HTMLFile object' & @CRLF), $sHTML)
  2383. If $iElement = Default Then $iElement = ''
  2384. If $iAttribute = Default Then $iAttribute = ''
  2385. If $iReturnHTML = Default Then $iReturnHTML = False
  2386. With $oHTML
  2387. .Open()
  2388. If @error Then Return SetError(2, ConsoleWrite('!> Cannot open HTMLFile objet' & @CRLF), $sHTML)
  2389. .Write($sHTML)
  2390. If @error Then Return SetError(3, ConsoleWrite('!> Cannot write the Data in HTMLFile object' & @CRLF), $sHTML)
  2391. Select
  2392. Case Not $iElement And Not $iAttribute
  2393. $sResult = ($iReturnHTML ? .body.innerHTML : .body.innerText)
  2394. Case $iElement And Not $iAttribute
  2395. ConsoleWrite('!> Please set The attribute' & @CRLF)
  2396. $l___iError = 4
  2397. Case $iAttribute And Not $iSpecifiedValue
  2398. ConsoleWrite('!> Please set The specified value of the attribute' & @CRLF)
  2399. $l___iError = 5
  2400. Case Else
  2401. Local $oElements = ($iElement ? .getElementsByTagName($iElement) : .All)
  2402. If Not @error And IsObj($oElements) Then
  2403. For $oElement In $oElements
  2404. Switch $iAttribute
  2405. Case 'class'
  2406. If $oElement.classname = $iSpecifiedValue Then $oFind = 1
  2407. Case 'id'
  2408. If $oElement.id = $iSpecifiedValue Then $oFind = 1
  2409. Case 'name'
  2410. If $oElement.name = $iSpecifiedValue Then $oFind = 1
  2411. Case 'type'
  2412. If $oElement.type = $iSpecifiedValue Then $oFind = 1
  2413. Case 'href'
  2414. If $oElement.href = $iSpecifiedValue Then $oFind = 1
  2415. EndSwitch
  2416. If $oFind = 1 Then
  2417. $sResult = ($iReturnHTML ? $oElement.innerHTML : $oElement.innerText)
  2418. ExitLoop
  2419. EndIf
  2420. Next
  2421. Else
  2422. $l___iError = 6
  2423. EndIf
  2424. EndSelect
  2425. .Close()
  2426. EndWith
  2427. $oHTML = ''
  2428. If $l___iError Then Return SetError($l___iError, '', $sHTML)
  2429. Return $sResult
  2430. EndFunc
  2431. #EndRegion
  2432.  
  2433.  
  2434.  
  2435. #Region < Certificate UDF by [mLipok] >
  2436. Func _CertUtil_Example()
  2437. Local $sData = _HttpRequest(2, 'https://www.nccert.pl/zaswiadczenia.htm')
  2438. Local $aFiles = StringRegExp($sData, '(?is)href="files/(.{1,20}QCA.{0,20}.c[ert]{2})"', 3)
  2439. Local $sFileToDownload = ''
  2440. Local $sFileFullPath_LocalDest = ''
  2441. Local $sURL_nccert = 'https://www.nccert.pl/files/'
  2442. For $iFile_idx = 0 To UBound($aFiles) - 1
  2443. $sFileToDownload = StringReplace($aFiles[$iFile_idx], '%20', ' ')
  2444. $sFileFullPath_LocalDest = @ScriptDir & '\' & $sFileToDownload
  2445. _HttpRequest('$' & $sFileFullPath_LocalDest, $sURL_nccert & $sFileToDownload)
  2446. _CertUtil_AddStore('-enterprise CA', $sFileFullPath_LocalDest)
  2447. Next
  2448. EndFunc
  2449.  
  2450. Func _CertUtil_VerifyStore($sStore, $sCommonName)
  2451. Local $sResult = __CertUtil_RunWrapper('-verifystore', $sStore, $sCommonName)
  2452. If StringRegExp($sResult, '(?i)CertUtil: -verifystore command FAILED:.*?NTE_NOT_FOUND', 3) Then
  2453. Return SetError(1, 1, 0)
  2454. ElseIf StringRegExp($sResult, '(?i)CertUtil: -verifystore command FAILED:.*?CERT_E_UNTRUSTEDCA', 3) Then
  2455. Return SetError(1, 2, 0)
  2456. Else
  2457. Return SetError(0, 0, 1)
  2458. EndIf
  2459. EndFunc
  2460.  
  2461. Func _CertUtil_DelStore($sStore, $sCommonName)
  2462. Local $sResult = __CertUtil_RunWrapper('-delstore', $sStore, $sCommonName)
  2463. If Not StringInStr($sResult, 'CertUtil: -delstore command completed successfully.') Then Return SetError(1, 0, 0)
  2464. Return SetError(0, 0, 1)
  2465. EndFunc
  2466.  
  2467. Func _CertUtil_AddStore($sStore, $sCert_FileFullPath)
  2468. Local $sResult = __CertUtil_RunWrapper('-addstore', $sStore, $sCert_FileFullPath)
  2469. If Not StringInStr($sResult, 'CertUtil: -addstore command completed successfully.') Then Return SetError(1, 0, 0)
  2470. If StringRegExp($sResult, '(?i)Certificate ".*?" already in store.', 3) Then Return SetError(0, 3, 1)
  2471. Return SetError(0, 0, 1)
  2472. EndFunc
  2473.  
  2474. Func __CertUtil_RunWrapper($sParam0_Command, $sParam1_Store, $sParam2)
  2475. Local $sCommand = "certutil.exe " & $sParam0_Command & " " & $sParam1_Store & " " & $sParam2
  2476. ConsoleWrite(@CRLF & "Command: " & $sCommand & @CRLF)
  2477. Local $iPID = Run(@ComSpec & " /c " & $sCommand, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
  2478. If @error Then Return SetError(1, __HttpRequest_ErrNotify('__CertUtil_RunWrapper', 'Cannot find certutil.exe'), '')
  2479. Local $sOutput = "Stdout Read:" & @CRLF
  2480. Do
  2481. $sOutput &= StdoutRead($iPID)
  2482. Until @error
  2483. Local $sOutputErr = ""
  2484. Do
  2485. $sOutputErr &= StderrRead($iPID)
  2486. Until @error
  2487. If Not $sOutputErr = "" Then $sOutput = $sOutput & @CRLF & "Stderr Read:" & @CRLF & $sOutputErr
  2488. ConsoleWrite(@CRLF & $sOutput & @CRLF)
  2489. Return $sOutput
  2490. EndFunc
  2491. #EndRegion
  2492.  
  2493.  
  2494. #Region <JSON OBJECT>
  2495. Func _JSON_Object_Init($jsonDefault = "{}")
  2496. ; Author: ozmike
  2497. ; Link: https://www.autoitscript.com/forum/topic/156794-oo_jsonudf-jsonpath-oo-using-javascript-in-auto-it
  2498. ; This JSON/JSONPath UDF Uses the windows scripting object (instead of IE's JSON object as previously.)
  2499. ; ALL methods CASE SENSITIVE!
  2500. ; Members: "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply, call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours, getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join, lastIndex, length, parse, prototype, push, replace, slice, stringify, test, toJSON, toString, valueOf
  2501. ; Add methods 'item' to access array items via dot syntax.
  2502. ; Eg: you can't go $jsObj.array[0] in AutoIt, this frameworks lets you go $jsObj.array.item(0)
  2503. If $g___OO_LoadLibrary == '' Then
  2504. $g___OO_LoadLibrary &= 'function buildParamlist(t){var e=" p0";t=t||1;for(var r=1;r<t;r++)e=e+" , p"+r;return e}function myt'
  2505. $g___OO_LoadLibrary &= 'est(){return"mytest."}function jsonPath(obj,expr,arg){var P={resultType:arg&&arg.resultType||"VALUE"'
  2506. $g___OO_LoadLibrary &= ',result:[],normalize:function(t){var e=[];return t.replace(/[\[''](\??\(.*?\))[\]'']/g,function(t,r)'
  2507. $g___OO_LoadLibrary &= '{return"[#"+(e.push(r)-1)+"]"}).replace(/''?\.''?|\[''?/g,";").replace(/;;;|;;/g,";..;").replace(/;$'
  2508. $g___OO_LoadLibrary &= '|''?\]|''$/g,"").replace(/#([0-9]+)/g,function(t,r){return e[r]})},asPath:function(t){for(var e=t.sp'
  2509. $g___OO_LoadLibrary &= 'lit(";"),r="$",n=1,o=e.length;n<o;n++)r+=/^[0-9*]+$/.test(e[n])?"["+e[n]+"]":"[''"+e[n]+"'']";return'
  2510. $g___OO_LoadLibrary &= ' r},store:function(t,e){return t&&(P.result[P.result.length]="PATH"==P.resultType?P.asPath(t):e),!!t'
  2511. $g___OO_LoadLibrary &= '},trace:function(t,e,r){if(t){var n=t.split(";"),o=n.shift();if(n=n.join(";"),e&&e.hasOwnProperty(o)'
  2512. $g___OO_LoadLibrary &= ')P.trace(n,e[o],r+";"+o);else if("*"===o)P.walk(o,n,e,r,function(t,e,r,n,o){P.trace(t+";"+r,n,o)});e'
  2513. $g___OO_LoadLibrary &= 'lse if(".."===o)P.trace(n,e,r),P.walk(o,n,e,r,function(t,e,r,n,o){"object"==typeof n[t]&&P.trace("..'
  2514. $g___OO_LoadLibrary &= ';"+r,n[t],o+";"+t)});else if(/,/.test(o))for(var a=o.split(/''?,''?/),u=0,p=a.length;u<p;u++)P.trace'
  2515. $g___OO_LoadLibrary &= '(a[u]+";"+n,e,r);else/^\(.*?\)$/.test(o)?P.trace(P.eval(o,e,r.substr(r.lastIndexOf(";")+1))+";"+n,e,'
  2516. $g___OO_LoadLibrary &= 'r):/^\?\(.*?\)$/.test(o)?P.walk(o,n,e,r,function(t,e,r,n,o){P.eval(e.replace(/^\?\((.*?)\)$/,"$1"),n'
  2517. $g___OO_LoadLibrary &= '[t],t)&&P.trace(t+";"+r,n,o)}):/^(-?[0-9]*):(-?[0-9]*):?([0-9]*)$/.test(o)&&P.slice(o,n,e,r)}else P.'
  2518. $g___OO_LoadLibrary &= 'store(r,e)},walk:function(t,e,r,n,o){if(r instanceof Array)for(var a=0,u=r.length;a<u;a++)a in r&&o('
  2519. $g___OO_LoadLibrary &= 'a,t,e,r,n);else if("object"==typeof r)for(var p in r)r.hasOwnProperty(p)&&o(p,t,e,r,n)},slice:functi'
  2520. $g___OO_LoadLibrary &= 'on(t,e,r,n){if(r instanceof Array){var o=r.length,a=0,u=o,p=1;t.replace(/^(-?[0-9]*):(-?[0-9]*):?(-?'
  2521. $g___OO_LoadLibrary &= '[0-9]*)$/g,function(t,e,r,n){a=parseInt(e||a),u=parseInt(r||u),p=parseInt(n||p)}),a=a<0?Math.max(0,a'
  2522. $g___OO_LoadLibrary &= '+o):Math.min(o,a),u=u<0?Math.max(0,u+o):Math.min(o,u);for(var c=a;c<u;c+=p)P.trace(c+";"+e,r,n)}},ev'
  2523. $g___OO_LoadLibrary &= 'al:function(x,_v,_vname){try{return $&&_v&&eval(x.replace(/@/g,"_v"))}catch(t){throw new SyntaxError'
  2524. $g___OO_LoadLibrary &= '("jsonPath: "+t.message+": "+x.replace(/@/g,"_v").replace(/\^/g,"_a"))}}},$=obj;if(expr&&obj&&("VALU'
  2525. $g___OO_LoadLibrary &= 'E"==P.resultType||"PATH"==P.resultType))return P.trace(P.normalize(expr).replace(/^\$;/,""),obj,"$")'
  2526. $g___OO_LoadLibrary &= ',!!P.result.length&&P.result}Object.prototype.propAdd=function(prop,val){eval("this."+prop+"="+val)}'
  2527. $g___OO_LoadLibrary &= ',Object.prototype.methAdd=function(meth,def){eval("this."+meth+"= new "+def)},Object.prototype.jsFun'
  2528. $g___OO_LoadLibrary &= 'Add=function(funname,numParams,objectTypeName){var x=buildParamlist(numParams);return objectType'
  2529. $g___OO_LoadLibrary &= 'Name=objectTypeName||"Object",eval(objectTypeName+".prototype."+funname+" = function("+x+") { return'
  2530. $g___OO_LoadLibrary &= ' "+funname+"("+x+"); }")},Object.prototype.protoAdd=function(methName,jsFunction,objectTypeName){obj'
  2531. $g___OO_LoadLibrary &= 'ectTypeName=objectTypeName||"Object",eval(objectTypeName+".prototype."+methName+"="+jsFunction)},'
  2532. $g___OO_LoadLibrary &= 'Object.keys||(Object.keys=function(){"use strict";var t=Object.prototype.hasOwnProperty,e=!{toString:null}.'
  2533. $g___OO_LoadLibrary &= 'propertyIsEnumerable("toString"),r=["toString","toLocaleString","valueOf","hasOwnProperty","isProtot'
  2534. $g___OO_LoadLibrary &= 'ypeOf","propertyIsEnumerable","constructor"],n=r.length;return function(o){if("object"!=typeof o&&("'
  2535. $g___OO_LoadLibrary &= 'function"!=typeof o||null===o))throw new TypeError("Object.keys called on non-object");var a,u,p=[];'
  2536. $g___OO_LoadLibrary &= 'for(a in o)t.call(o,a)&&p.push(a);if(e)for(u=0;u<n;u++)t.call(o,r[u])&&p.push(r[u]);return p}}()),Ob'
  2537. $g___OO_LoadLibrary &= 'ject.prototype.objGet=function(s){return eval(s)},REM="To get an obj $obj.objGet(''JSON'') ",Array.'
  2538. $g___OO_LoadLibrary &= 'prototype.item=function(t){return this[t]},REM=" so that arrays can work in AutoIT obj.item(0)",Obje'
  2539. $g___OO_LoadLibrary &= 'ct.prototype.item=function(t){return this[t]},REM="so that dynamic key values be obtained eg. obj.it'
  2540. $g___OO_LoadLibrary &= 'em(''name'' ) or just obj.surname ",Object.prototype.keys=function(){if("object"==typeof this)return'
  2541. $g___OO_LoadLibrary &= ' Object.keys(this)},REM="To get an obj json properties ",Object.prototype.keys=function(t){if("objec'
  2542. $g___OO_LoadLibrary &= 't"==typeof t)return Object.keys(t)},REM="To get an obj json properties - recommended usage ",Object'
  2543. $g___OO_LoadLibrary &= '.prototype.arrayAdd=function(t,e){this[t]=e},REM="Add item to array ",Object.prototype.arrayDel=fun'
  2544. $g___OO_LoadLibrary &= 'ction(t){this.splice(t,1)},REM="Del item to array ",Object.prototype.isArray=function(){return this'
  2545. $g___OO_LoadLibrary &= '.constructor==Array},REM="Is object an array ",Object.prototype.type=function(){return typeof this}'
  2546. $g___OO_LoadLibrary &= ',REM="To get an obj type - not recommended ",Object.prototype.type=function(t){return typeof t},REM='
  2547. $g___OO_LoadLibrary &= '"To get an obj type - recommended usage ";var JSON=new Object;JSON.jsonPath=function(t,e,r){return j'
  2548. $g___OO_LoadLibrary &= 'sonPath(t,e,r)},"object"!=typeof JSON&&(JSON={}),function(){"use strict";function f(t){return t<10?"'
  2549. $g___OO_LoadLibrary &= '0"+t:t}function quote(t){return escapable.lastIndex=0,escapable.test(t)?''"''+t.replace(escapable,fu'
  2550. $g___OO_LoadLibrary &= 'nction(t){var e=meta[t];return"string"==typeof e?e:"\\u"+("0000"+t.charCodeAt(0).toString(16)).slice'
  2551. $g___OO_LoadLibrary &= '(-4)})+''"'':''"''+t+''"''}function str(t,e){var r,n,o,a,u,p=gap,c=e[t];switch(c&&"object"==typeof c'
  2552. $g___OO_LoadLibrary &= '&&"function"==typeof c.toJSON&&(c=c.toJSON(t)),"function"==typeof rep&&(c=rep.call(e,t,c)),typeof c)'
  2553. $g___OO_LoadLibrary &= '{case"string":return quote(c);case"number":return isFinite(c)?String(c):"null";case"boolean":case"nu'
  2554. $g___OO_LoadLibrary &= 'll":return String(c);case"object":if(!c)return"null";if(gap+=indent,u=[],"[object Array]"===Object.p'
  2555. $g___OO_LoadLibrary &= 'rototype.toString.apply(c)){for(a=c.length,r=0;r<a;r+=1)u[r]=str(r,c)||"null";return o=0===u.length?'
  2556. $g___OO_LoadLibrary &= '"[]":gap?"[\n"+gap+u.join(",\n"+gap)+"\n"+p+"]":"["+u.join(",")+"]",gap=p,o}if(rep&&"object"==typeof'
  2557. $g___OO_LoadLibrary &= ' rep)for(a=rep.length,r=0;r<a;r+=1)"string"==typeof rep[r]&&(o=str(n=rep[r],c))&&u.push(quote(n)+(ga'
  2558. $g___OO_LoadLibrary &= 'p?": ":":")+o);else for(n in c)Object.prototype.hasOwnProperty.call(c,n)&&(o=str(n,c))&&u.push(quote'
  2559. $g___OO_LoadLibrary &= '(n)+(gap?": ":":")+o);return o=0===u.length?"{}":gap?"{\n"+gap+u.join(",\n"+gap)+"\n"+p+"}":"{"+u.jo'
  2560. $g___OO_LoadLibrary &= 'in(",")+"}",gap=p,o}}"function"!=typeof Date.prototype.toJSON&&(Date.prototype.toJSON=function(){ret'
  2561. $g___OO_LoadLibrary &= 'urn isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate'
  2562. $g___OO_LoadLibrary &= '())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null},Stri'
  2563. $g___OO_LoadLibrary &= 'ng.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(){return this.valueOf('
  2564. $g___OO_LoadLibrary &= ')});var cx,escapable,gap,indent,meta,rep;"function"!=typeof JSON.stringify&&(escapable=/[\\\"\x00-\x'
  2565. $g___OO_LoadLibrary &= '1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-'
  2566. $g___OO_LoadLibrary &= '\uffff]/g,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",''"'':''\\"'',"\\":"\\\\"},JS'
  2567. $g___OO_LoadLibrary &= 'ON.stringify=function(t,e,r){var n;if(gap="",indent="","number"==typeof r)for(n=0;n<r;n+=1)indent+="'
  2568. $g___OO_LoadLibrary &= ' ";else"string"==typeof r&&(indent=r);if(rep=e,e&&"function"!=typeof e&&("object"!=typeof e||"number'
  2569. $g___OO_LoadLibrary &= '"!=typeof e.length))throw new Error("JSON.stringify");return str("",{"":t})}),"function"!=typeof JSO'
  2570. $g___OO_LoadLibrary &= 'N.parse&&(cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-'
  2571. $g___OO_LoadLibrary &= '\u206f\ufeff\ufff0-\uffff]/g,JSON.parse=function(text,reviver){function walk(t,e){var r,n,o=t[e];if(o&&"objec'
  2572. $g___OO_LoadLibrary &= 't"==typeof o)for(r in o)Object.prototype.hasOwnProperty.call(o,r)&&(void 0!==(n=walk(o,r))?o[r]=n:de'
  2573. $g___OO_LoadLibrary &= 'lete o[r]);return reviver.call(t,e,o)}var j;if(text=String(text),cx.lastIndex=0,cx.test(text)&&(text'
  2574. $g___OO_LoadLibrary &= '=text.replace(cx,function(t){return"\\u"+("0000"+t.charCodeAt(0).toString(16)).slice(-4)})),/^[\],:{'
  2575. $g___OO_LoadLibrary &= '}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|fal'
  2576. $g___OO_LoadLibrary &= 'se|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return j=eval("'
  2577. $g___OO_LoadLibrary &= '("+text+")"),"function"==typeof reviver?walk({"":j},""):j;throw new SyntaxError("JSON.parse")})}(),O'
  2578. $g___OO_LoadLibrary &= 'bject.prototype.stringify=function(){return JSON.stringify(this)},REM="Print out an object ",Object'
  2579. $g___OO_LoadLibrary &= '.prototype.parse=function(t){return JSON.parse(t)},REM="JSON String to object ",Object.prototype.js'
  2580. $g___OO_LoadLibrary &= 'onPath=function(t,e){return JSON.jsonPath(this,t,e)},REM="Query object ",Object.prototype.objToStri'
  2581. $g___OO_LoadLibrary &= 'ng=function(){return JSON.stringify(this)},REM="Print out an object - depreciated ",Object.prototyp'
  2582. $g___OO_LoadLibrary &= 'e.strToObject=function(t){return JSON.parse(t)},REM="JSON String to object - deprecciated ";'
  2583. EndIf
  2584. Local $iError = 0, $oRet
  2585. $g___OO_Json = ObjCreate('ScriptControl')
  2586. If @error Then
  2587. $iError = 1 + 0 * __HttpRequest_ErrNotify('_JSON_Object_Init', 'CreateObject Failed')
  2588. Else
  2589. With $g___OO_Json
  2590. .language = 'Jscript'
  2591. If @error Then
  2592. $iError = 2 + 0 * __HttpRequest_ErrNotify('_JSON_Object_Init', 'EmbedJscript Failed')
  2593. Else
  2594. .AddCode($g___OO_LoadLibrary)
  2595. If @error Then
  2596. $iError = 3 + 0 * __HttpRequest_ErrNotify('_JSON_Object_Init', 'AddCode Failed')
  2597. Else
  2598. .Eval('var z = ' & $jsonDefault)
  2599. $oRet = .Eval('z').objGet('JSON')
  2600. If @error Then
  2601. $iError = 4 + 0 * __HttpRequest_ErrNotify('_JSON_Object_Init', 'GetObject Failed')
  2602. Else
  2603. $g___OO_JsonInit = 1
  2604. EndIf
  2605. EndIf
  2606. EndIf
  2607. EndWith
  2608. EndIf
  2609. Return SetError($iError, '', $oRet)
  2610. EndFunc
  2611. #EndRegion
  2612.  
  2613.  
  2614. #Region <INTERNAL FUNCTIONS>
  2615. Func __ArrayDuplicate($aData)
  2616. Local $ReData = '', $uBound = UBound($aData) - 1, $spChr = ChrW(0x2000)
  2617. For $m = 0 To $uBound
  2618. If $aData[$m] == '' Then ContinueLoop
  2619. $ReData &= $spChr & $aData[$m] & $spChr
  2620. Next
  2621. For $m = 0 To $uBound
  2622. If $aData[$m] == '' Then ContinueLoop
  2623. $ReData = StringReplace($ReData, $spChr & $aData[$m] & $spChr, '', 0, 1)
  2624. If @extended Then $ReData &= $spChr & $aData[$m] & $spChr
  2625. Next
  2626. $ReData = StringRegExp($ReData, '[^' & $spChr & ']+', 3)
  2627. Return (@error ? SetError(1, '', $aData) : $ReData)
  2628. EndFunc
  2629.  
  2630. Func __Cloudflare_ChangeNumber($sString)
  2631. Local $sText = $sString
  2632. If StringMid($sString, 1, 2) == '+(' Then $sString = StringTrimLeft($sString, 1)
  2633. $sString = StringReplace($sString, '!+[]', '+1')
  2634. $sString = StringReplace($sString, '+!![]', '+1')
  2635. $sString = StringReplace($sString, '+[]', '+0')
  2636. $sString = StringReplace($sString, '+(', '&(')
  2637. $sString = Execute($sString)
  2638. Return $sString
  2639. EndFunc
  2640.  
  2641. Func ___ObjectErrDetect()
  2642. Return
  2643. EndFunc
  2644.  
  2645. Func __HttpRequest_CancelReadWrite()
  2646. $g___CancelReadWrite = Not $g___CancelReadWrite
  2647. EndFunc
  2648.  
  2649. Func __HttpRequest_CloseAll()
  2650. If $g___hRequest Then _WinHttpCloseHandle2($g___hRequest)
  2651. Local $aListSession = _HttpRequest_GetSessionList()
  2652. If Not @error Then
  2653. For $i = 0 To UBound($aListSession) - 1
  2654. _HttpRequest_ClearSession($aListSession[$i])
  2655. Next
  2656. EndIf
  2657. If $dll_WinInet Then DllClose($dll_WinInet)
  2658. $dll_WinHttp = DllClose($dll_WinHttp)
  2659. $dll_User32 = DllClose($dll_User32)
  2660. $g___oDicEntity = ''
  2661. $g___retData = ''
  2662. $g___oError = ''
  2663. EndFunc
  2664.  
  2665. Func __HttpRequest_ErrNotify($__TrueValue = '', $__ErrorNote = 0, $__FalseValue = '')
  2666. If $g___ErrorNotify = True And $__ErrorNote Then
  2667. ConsoleWrite('! ' & $__TrueValue & ' - Warning: ' & $__ErrorNote & @CRLF)
  2668. Else
  2669. Return $__FalseValue
  2670. EndIf
  2671. EndFunc
  2672.  
  2673. Func __HttpRequest_DetectMIME($sFileName)
  2674. Local $__sDataType = ''
  2675. $__sDataType &= ';ai|1/postscript;aif|2/x-aiff;aifc|2/x-aiff;aiff|2/x-aiff;asc|3/plain;atom|1/atom+xml;au|2/basic;avi|5/x-msvideo;bcpio|'
  2676. $__sDataType &= '4/bmp;cdf|1/x-netcdf;cgm|4/cgm;class|1/7/;cpio|1/x-bcpio;bin|1/7/;bmp|5/x-dv;dir|1/x-director;djv|4/vnd.djvu;djvu|'
  2677. $__sDataType &= '1/x-cpio;cpt|1/mac-compactpro;csh|1/x-csh;css|3/css;dcr|1/x-director;dif|4/vnd.djvu;dll|1/7/;dmg||1/msword;dtd|'
  2678. $__sDataType &= '3/x-setext;exe|1/7/;ez|1/andrew-inset;gif|4/gif;gram|2/midi;latex|1/x-latex;lha|1/7/;lzh|1/7/;m3u|2/mp4a-latm;m4b|'
  2679. $__sDataType &= '3/calendar;ief|4/ief;ifb|3/calendar;iges|6/iges;igs|6/iges;jnlp|1/x-java-jnlp-file;jp2|1/x-sv4cpio;sv4crc|1/x-sv4crc;svg|'
  2680. $__sDataType &= '3/vnd.wap.wmlscript;wmlsc|1/vnd.wap.wmlscriptc;wrl|6/vrml;xbm|4/svg+xml;swf|1/x-shockwave-flash;t|1/x-koan;skt|'
  2681. $__sDataType &= '4/pict;pict|4/pict;png|4/png;pnm|4/x-portable-anymap;pnt|4/x-macpaint;pntg|2/x-pn-realaudio;ras|4/x-cmu-raster;rdf|'
  2682. $__sDataType &= '4/x-macpaint;ppm|4/x-portable-pixmap;ppt|1/vnd.ms-powerpoint;ps|1/postscript;qt|1/rdf+xml;rgb|1/x-futuresplash;src|'
  2683. $__sDataType &= '5/quicktime;qti|4/x-quicktime;qtif|4/x-quicktime;ra|2/x-pn-realaudio;ram|1/vnd.rn-realmedia;roff|1/x-troff;rtf|3/rtf;rtx|'
  2684. $__sDataType &= '3/sgml;sh|1/x-sh;shar|1/x-shar;silo|6/mesh;sit|1/x-stuffit;skd|1/x-tcl;tex|1/x-tex;texi|1/x-texinfo;texinfo|1/x-texinfo;tif|'
  2685. $__sDataType &= '4/tiff;tiff|4/tiff;tr|1/x-troff;tsv|3/tab-separated-values;txt|3/plain;ustar|1/smil;snd|2/basic;so|1/x-ustar;vcd|6/vrml;vxml|'
  2686. $__sDataType &= '4/vnd.wap.wbmp;wbmxl|1/vnd.wap.wbxml;wml|3/vnd.wap.wml;wmlc|1/vnd.wap.wmlc;wmls|1/7/;spl|1/x-cdlink;vrml|'
  2687. $__sDataType &= '4/x-xbitmap;xht|1/xhtml+xml;xhtml|1/xhtml+xml;xls|1/vnd.ms-excel;xml|1/voicexml+xml;wav|1/x-koan;skm|1/xml;xpm|'
  2688. $__sDataType &= '1/xml-dtd;dv|5/x-dv;dvi|1/x-dvi;dxr|1/x-director;eps|1/postscript;etx|1/7/;dms|1/7/;doc|1/x-gtar;hdf|1/x-hdf;hqx|'
  2689. $__sDataType &= '1/mac-binhex40;htm|3/html;html|3/html;ice|x-conference/x-cooltalk;ico|4/x-icon;ics|1/srgs;grxml|1/srgs+xml;gtar|'
  2690. $__sDataType &= '4/jp2;jpe|4/jpeg;jpeg|4/jpeg;jpg|4/jpeg;js|1/x-javascript;kar|1/x-wais-source;sv4cpio|3/richtext;sgm|3/sgml;sgml|'
  2691. $__sDataType &= '2/x-mpegurl;m4a|2/mp4a-latm;m4p|2/mp4a-latm;m4u|5/vnd.mpegurl;m4v|1/x-troff;tar|1/x-tar;tcl|2/x-wav;wbmp|'
  2692. $__sDataType &= '5/x-m4v;mac|4/x-macpaint;man|1/x-troff-man;mathml|1/mathml+xml;me|1/xslt+xml;xul|1/vnd.mozilla.xul+xml;xwd|'
  2693. $__sDataType &= '1/x-troff-me;mesh|6/mesh;mid|2/midi;midi|2/midi;mif|1/vnd.mif;mov|4/x-portable-graymap;pgn|1/x-chess-pgn;pic|'
  2694. $__sDataType &= '5/quicktime;movie|5/x-sgi-movie;mp2|2/mpeg;mp3|2/mpeg;mp4|5/mp4;mpe|5/mpeg;mpeg|4/x-xwindowdump;xyz|'
  2695. $__sDataType &= '5/mpeg;mpg|5/mpeg;mpga|2/mpeg;ms|1/x-troff-ms;msh|6/mesh;mxu|5/vnd.mpegurl;nc|1/x-koan;smi|1/smil;smil|'
  2696. $__sDataType &= '1/x-netcdf;oda|1/oda;ogg|1/ogg;pbm|4/x-portable-bitmap;pct|4/pict;pdb|chemical/x-pdb;pdf|1/pdf;pgm|4/x-rgb;rm|'
  2697. $__sDataType &= '1/x-koan;skp|4/x-xpixmap;xsl|1/xml;xslt|chemical/x-xyz;zip|1/zip;'
  2698. ;-----------------------------------------------------------------------------------------------------
  2699. Local $aMshort = ['', 'application', 'audio', 'text', 'image', 'video', 'model', 'octet-stream']
  2700. For $i = 1 To 7
  2701. $__sDataType = StringReplace($__sDataType, $i & '/', $aMshort[$i] & '/', 0, 1)
  2702. Next
  2703. ;-----------------------------------------------------------------------------------------------------
  2704. Local $aArray = StringRegExp($__sDataType, "(?i)\Q;" & StringRegExpReplace($sFileName, ".*\.", "") & "\E\|(.*?);", 3)
  2705. If @error Then Return "application/octet-stream"
  2706. Return $aArray[0]
  2707. EndFunc
  2708.  
  2709. Func __HttpRequest_StatusGetDataFromPointer($pInfo, $lInfo, $iReturnType = 'wchar')
  2710. Return DllStructGetData(DllStructCreate($iReturnType & '[' & $lInfo & ']', $pInfo), 1)
  2711. EndFunc
  2712.  
  2713. Func __HttpRequest_StatusCallback($hInternet, $iContext, $iInternetStatus, $pStatusInfo, $iStatusInfoLen)
  2714. #forceref $hInternet, $iContext, $iInternetStatus, $pStatusInfo, $iStatusInfoLen
  2715. Switch $iInternetStatus
  2716. Case 0x0002
  2717. $g___ServerIP = __HttpRequest_StatusGetDataFromPointer($pStatusInfo, $iStatusInfoLen)
  2718. ;----------------------------------------------------------------------------------------------------
  2719. Case 0x10000
  2720. Local $sStatus = ''
  2721. Local $aSSLError = [ _
  2722. [__HttpRequest_StatusGetDataFromPointer($pStatusInfo, $iStatusInfoLen, 'dword')], _
  2723. [0x00000001, 'CERT_REV_FAILED'], _
  2724. [0x00000002, 'INVALID_CERT'], _
  2725. [0x00000004, 'CERT_REVOKED'], _
  2726. [0x00000008, 'INVALID_CA'], _
  2727. [0x00000010, 'CERT_CN_INVALID'], _
  2728. [0x00000020, 'CERT_DATE_INVALID'], _
  2729. [0x00000040, 'CERT_WRONG_USAGE'], _
  2730. [0x80000000, 'SECURITY_CHANNEL_ERROR < Yeu cau winhttp.dll Win8 tro len >']]
  2731. For $i = 1 To 8
  2732. If BitAND($aSSLError[0][0], $aSSLError[$i][0]) = $aSSLError[$i][0] Then $sStatus &= ' ' & $aSSLError[$i][1]
  2733. Next
  2734. ConsoleWrite(@CRLF & '!==> SLL Certificate Error:' & $sStatus & @CRLF & @CRLF)
  2735. ;----------------------------------------------------------------------------------------------------
  2736. Case 0x4000
  2737. $g___LocationRedirect = DllStructGetData(DllStructCreate("wchar[" & $iStatusInfoLen & "]", $pStatusInfo), 1)
  2738. $g___HeadersRedirect &= _WinHttpQueryHeaders2($g___hRequest, 22) & @CRLF & '*Redirect to: ' & $g___LocationRedirect & @CRLF
  2739. ConsoleWrite(@CRLF & '+==> This request redirect to ' & $g___LocationRedirect & @CRLF)
  2740. EndSwitch
  2741. EndFunc
  2742.  
  2743. Func __HttpRequest_iReturnSplit($iReturn)
  2744. Local $aReturn = StringRegExp('|' & $iReturn, '\|(?:([\+\-\*\.]*?)(\d+)|([\#\~\%\$])([^\|]+))', 3)
  2745. If @error Then Return SetError(1, __HttpRequest_ErrNotify('$iReturn', 'Wrong Pattern'), '')
  2746. Local $aRetMode[11]
  2747. ;-------------------------------------------------
  2748. For $i = 0 To UBound($aReturn) - 1 Step 2
  2749. If $aReturn[$i + 1] == '' Then ContinueLoop
  2750. Switch $aReturn[$i]
  2751. Case ''
  2752. $aRetMode[0] = Number($aReturn[$i + 1])
  2753. ;-------------------------------------------------
  2754. Case '#' ;sesion ; $aRetMode[8]
  2755. $aRetMode[8] = Number($aReturn[$i + 1])
  2756. ;-------------------------------------------------
  2757. Case '%' ;proxy ; $aRetMode[5][6][7]
  2758. Local $__aProxy = StringRegExp($aReturn[$i + 1], '(?i)(https?://)?(?:(\w*):)?(?:(\w*)@)?((?:\d{1,3}\.){3}\d{1,3}:\d+)$', 3)
  2759. If @error Then Return SetError(2, __HttpRequest_ErrNotify('$iReturn', 'Proxy: Wrong Pattern'), '')
  2760. $aRetMode[5] = $__aProxy[0] & $__aProxy[3]
  2761. $aRetMode[6] = $__aProxy[1]
  2762. $aRetMode[7] = $__aProxy[2]
  2763. ;-------------------------------------------------
  2764. Case '$' ;file path ; $aRetMode[9][10]
  2765. Local $__aPath = StringRegExp($aReturn[$i + 1], '(?i)^([A-Z]:\\.*?)(?:\:(\d+))?($)', 3)
  2766. If @error Then Return SetError(3, __HttpRequest_ErrNotify('$iReturn', 'Wrong File Path'), '')
  2767. $aRetMode[9] = $__aPath[0]
  2768. $aRetMode[10] = Number($__aPath[1])
  2769. ;-------------------------------------------------
  2770. Case '~'
  2771. ;Null
  2772. ;-------------------------------------------------
  2773. Case Else
  2774. If StringIsDigit($aReturn[$i + 1]) Then
  2775. $aRetMode[0] = Number($aReturn[$i + 1])
  2776. For $iReturn In StringSplit($aReturn[$i], '', 2)
  2777. Switch $iReturn
  2778. Case '-' ;$iReturn = 1 => Return Cookies, $iReturn > 1 => Return Binary Data
  2779. $aRetMode[1] = 1
  2780. Case '.' ;force GZUncompress
  2781. $aRetMode[2] = 1
  2782. Case '*' ;force Disable Redirect
  2783. $aRetMode[3] = 1
  2784. Case '+'
  2785. ;$aRetMode[4] = 1
  2786. EndSwitch
  2787. Next
  2788. EndIf
  2789. EndSwitch
  2790. Next
  2791. ;-------------------------------------------------
  2792. If $aRetMode[8] == '' Then $aRetMode[8] = $g___sSN
  2793. If $aRetMode[9] Then $aRetMode[0] = 3
  2794. ;-------------------------------------------------
  2795. Return $aRetMode
  2796. EndFunc
  2797.  
  2798. Func __HttpRequest_URLSplit($sURL)
  2799. Local $aResult[7] = [1, 80]
  2800. ;---------------------------------------------------
  2801. Local $aURL1 = StringRegExp(StringStripWS($sURL, 3), '(?i)^(?:(?:http(s)?|(ftp))://)?(www\.)?(.*?)$', 3)
  2802. If @error Or Not $aURL1[3] Then Return SetError(1, __HttpRequest_ErrNotify('$sURL', 'Wrong Pattern #1'), '')
  2803. If $aURL1[1] Then ; Check ftp
  2804. $aResult[0] = 3
  2805. $aResult[1] = 0
  2806. ElseIf $aURL1[0] Then ;Check https
  2807. $aResult[0] = 2
  2808. $aResult[1] = 443
  2809. EndIf
  2810. ;---------------------------------------------------
  2811. Local $aURL2 = StringRegExp($aURL1[3], '^(?:(\w*):)?(?:(\w*)(?:\:(\w*))?@)?(.+)$', 3) ;Tách user, pass, cred, URL
  2812. If @error Then Return SetError(2, __HttpRequest_ErrNotify('$sURL', 'Wrong Pattern #2'), '')
  2813. $aResult[4] = $aURL2[0] ;User
  2814. $aResult[5] = $aURL2[1] ;Pass
  2815. If $aURL2[2] Then ;Check Cred
  2816. $aResult[6] = Number($aURL2[2])
  2817. Switch $aResult[6]
  2818. Case 0x0, 0x1, 0x2, 0x4, 0x8, 0x10
  2819. Case Else
  2820. Return SetError(3, __HttpRequest_ErrNotify('$sURL', 'Wrong Credential Number'), '')
  2821. EndSwitch
  2822. EndIf
  2823. ;---------------------------------------------------
  2824. Local $aURL3 = StringRegExp($aURL2[3], '^([^\/\:]+)(?::(\d+))?(/.*)?($)', 3) ;Tách Host, (Port) và URI
  2825. If @error Then Return SetError(4, __HttpRequest_ErrNotify('$sURL', 'Wrong Pattern #3'), '')
  2826. $aResult[2] = $aURL1[2] & $aURL3[0] ;Host
  2827. $aResult[3] = $aURL3[2] ;URI
  2828. If $aURL3[1] Then $aResult[1] = Number($aURL3[1]) ; Check Port
  2829. ;---------------------------------------------------
  2830. Return $aResult
  2831. EndFunc
  2832. #EndRegion
  2833.  
  2834.  
  2835.  
  2836. #Region < FTP UDF>
  2837. Func __FTP_MakeQWord($iLoDWORD, $iHiDWORD)
  2838. Local $tInt64 = DllStructCreate("uint64")
  2839. Local $tDwords = DllStructCreate("dword;dword", DllStructGetPtr($tInt64))
  2840. DllStructSetData($tDwords, 1, $iLoDWORD)
  2841. DllStructSetData($tDwords, 2, $iHiDWORD)
  2842. Return DllStructGetData($tInt64, 1)
  2843. EndFunc
  2844.  
  2845. Func _FTP_Open2($sAgent, $iAccessType, $sProxyName = '', $sProxyBypass = '', $iFlags = 0) ;$iAccessType = 1: No Proxy; 3: Proxy
  2846. Local $ai_InternetOpen = DllCall($dll_WinInet, 'handle', 'InternetOpenW', 'wstr', $sAgent, 'dword', $iAccessType, 'wstr', $sProxyName, 'wstr', $sProxyBypass, 'dword', $iFlags)
  2847. If @error Or $ai_InternetOpen[0] = 0 Then Return SetError(1)
  2848. Return $ai_InternetOpen[0]
  2849. EndFunc
  2850.  
  2851. Func _FTP_Connect2($hInternetSession, $sServerName, $sUserName, $sPassword, $iServerPort = 0)
  2852. Local $ai_InternetConnect = DllCall($dll_WinInet, 'hwnd', 'InternetConnectW', 'handle', $hInternetSession, 'wstr', $sServerName, 'ushort', $iServerPort, 'wstr', $sUserName, 'wstr', $sPassword, 'dword', 1, 'dword', 2, 'dword_ptr', 0)
  2853. If @error Or $ai_InternetConnect[0] = 0 Then Return SetError(1)
  2854. Return $ai_InternetConnect[0]
  2855. EndFunc
  2856.  
  2857. Func _FTP_CloseHandle2($hSession)
  2858. DllCall($dll_WinInet, 'bool', 'InternetCloseHandle', 'handle', $hSession)
  2859. EndFunc
  2860.  
  2861. Func _FTP_FileReadEx($hFTPConnect, $sRemoteFile, $CallBackFunc_Progress = '')
  2862. Local $ai_FtpOpenfile = DllCall($dll_WinInet, 'handle', 'FtpOpenFileW', 'handle', $hFTPConnect, 'wstr', $sRemoteFile, 'dword', 0x80000000, 'dword', 2, 'dword_ptr', 0) ;2 = Binarry, 1 = ascii
  2863. If @error Or $ai_FtpOpenfile[0] == 0 Then Return SetError(1, '', '')
  2864. Local $tBuffer = DllStructCreate("byte[" & $g___BytesPerLoop & "]")
  2865. Local $vBinaryData = Binary(''), $vNowSizeBytes = 1, $vTotalSizeBytes = -1, $iCheckCallbackFunc = 0, $aCall
  2866. ;----------------------------------
  2867. If $CallBackFunc_Progress <> '' Then
  2868. $iCheckCallbackFunc = 1
  2869. Local $ai_hSize = DllCall($dll_WinInet, 'dword', 'FtpGetFileSize', 'handle', $ai_FtpOpenfile[0], 'dword*', 0)
  2870. If @error Or $ai_hSize[0] = 0 Then Return SetError(103, __HttpRequest_ErrNotify('Cannot get file size', 102), 0)
  2871. $vTotalSizeBytes = __FTP_MakeQWord($ai_hSize[0], $ai_hSize[2])
  2872. If $vTotalSizeBytes > 2147483647 Then Return SetError(102, __HttpRequest_ErrNotify('File is too large', 102), 0)
  2873. EndIf
  2874. ;----------------------------------
  2875. For $i = 1 To 2147483647
  2876. If $g___CancelReadWrite Then
  2877. $g___CancelReadWrite = False
  2878. Return SetError(997, __HttpRequest_ErrNotify('Cancel Read Data', 997), 0)
  2879. EndIf
  2880. $aCall = DllCall($dll_WinInet, 'bool', 'InternetReadFile', 'handle', $ai_FtpOpenfile[0], 'struct*', $tBuffer, 'dword', $g___BytesPerLoop, 'dword*', 0)
  2881. If @error Or $aCall[0] = 0 Or ($aCall[0] = 1 and $aCall[4] = 0) Then ExitLoop
  2882. If $aCall[4] < $g___BytesPerLoop Then
  2883. $vBinaryData &= BinaryMid(DllStructGetData($tBuffer, 1), 1, $aCall[4])
  2884. Else
  2885. $vBinaryData &= DllStructGetData($tBuffer, 1)
  2886. EndIf
  2887. $vNowSizeBytes += $aCall[4]
  2888. If $iCheckCallbackFunc Then $CallBackFunc_Progress($vNowSizeBytes, $vTotalSizeBytes)
  2889. Next
  2890. DllCall($dll_WinInet, 'bool', 'InternetCloseHandle', 'handle', $ai_FtpOpenfile[0])
  2891. Return $vBinaryData
  2892. EndFunc
  2893.  
  2894. Func _FTP_FileWriteEx($hFTPConnect, $sRemoteFile, $iData, $CallBackFunc_Progress = '')
  2895. Local $ai_FtpOpenfile = DllCall($dll_WinInet, 'handle', 'FtpOpenFileW', 'handle', $hFTPConnect, 'wstr', $sRemoteFile, 'dword', 0x40000000, 'dword', 2, 'dword_ptr', 0) ;2 = Binarry, 1 = ascii
  2896. If @error Or $ai_FtpOpenfile[0] = 0 Then Return SetError(1, '', '')
  2897. If Not IsBinary($iData) Then $iData = StringToBinary($iData, 4)
  2898. Local $vNowSizeBytes = 1, $vTotalSizeBytes = -1, $iCheckCallbackFunc = 0
  2899. Local $iDataMid, $iDataMidLen, $tBuffer, $aCall
  2900. ;----------------------------------
  2901. If $CallBackFunc_Progress <> '' Then
  2902. $iCheckCallbackFunc = 1
  2903. $vTotalSizeBytes = BinaryLen($iData)
  2904. If $vTotalSizeBytes > 2147483647 Then Return SetError(101, __HttpRequest_ErrNotify('File is too large', 101), 0)
  2905. EndIf
  2906. ;----------------------------------
  2907. For $i = 1 To 2147483647
  2908. If $g___CancelReadWrite Then
  2909. $g___CancelReadWrite = False
  2910. Return SetError(996, __HttpRequest_ErrNotify('Cancel Write Data', 996), 0)
  2911. EndIf
  2912. $iDataMid = BinaryMid($iData, $vNowSizeBytes, $g___BytesPerLoop)
  2913. $iDataMidLen = BinaryLen($iDataMid)
  2914. If Not $iDataMidLen Then ExitLoop
  2915. $tBuffer = DllStructCreate("byte[" & ($iDataMidLen + 1) & "]")
  2916. DllStructSetData($tBuffer, 1, $iDataMid)
  2917. $aCall = DllCall($dll_WinInet, 'bool', 'InternetWriteFile', 'handle', $ai_FtpOpenfile[0], 'struct*', $tBuffer, 'dword', $iDataMidLen, 'dword*', 0)
  2918. If @error Or $aCall[0] = 0 Then ExitLoop
  2919. $vNowSizeBytes += $iDataMidLen
  2920. If $iCheckCallbackFunc Then $CallBackFunc_Progress($vNowSizeBytes, $vTotalSizeBytes)
  2921. Next
  2922. DllCall($dll_WinInet, 'bool', 'InternetCloseHandle', 'handle', $ai_FtpOpenfile[0])
  2923. Return 1
  2924. EndFunc
  2925.  
  2926. Func _FTP_DirDelete2($hFTPConnect, $sRemoteDirPath)
  2927. Local $ai_FTPDelDir = DllCall($dll_WinInet, 'bool', 'FtpRemoveDirectoryW', 'handle', $hFTPConnect, 'wstr', $sRemoteDirPath)
  2928. If @error Or $ai_FTPDelDir[0] = 0 Then Return SetError(1, 0, 0)
  2929. Return 1
  2930. EndFunc
  2931.  
  2932. Func _FTP_DirCreate2($hFTPConnect, $sRemoteDirPath)
  2933. Local $ai_FTPMakeDir = DllCall($dll_WinInet, 'bool', 'FtpCreateDirectoryW', 'handle', $hFTPConnect, 'wstr', $sRemoteDirPath)
  2934. If @error Or $ai_FTPMakeDir[0] = 0 Then Return SetError(1, 0, 0)
  2935. Return 1
  2936. EndFunc
  2937.  
  2938. Func _FTP_DirSetCurrent2($hFTPConnect, $sRemoteDirPath)
  2939. Local $ai_FTPSetCurrentDir = DllCall($dll_WinInet, 'bool', 'FtpSetCurrentDirectoryW', 'handle', $hFTPConnect, 'wstr', $sRemoteDirPath)
  2940. If @error Or $ai_FTPSetCurrentDir[0] = 0 Then Return SetError(1, 0, 0)
  2941. Return 1
  2942. EndFunc
  2943.  
  2944. Func _FTP_DirGetCurrent2($hFTPConnect)
  2945. Local $ai_FTPGetCurrentDir = DllCall($dll_WinInet, 'bool', 'FtpGetCurrentDirectoryW', 'handle', $hFTPConnect, 'wstr', "", 'dword*', 260)
  2946. If @error Or $ai_FTPGetCurrentDir[0] = 0 Then Return SetError(1, 0, 0)
  2947. Return $ai_FTPGetCurrentDir[2]
  2948. EndFunc
  2949.  
  2950. Func _FTP_ListToArray2($hFTPConnect, $iReturnType = 0)
  2951. Local $asFileArray[1][3], $aDirectoryArray[1][3] = [[0, 'Size', 'Type']]
  2952. If $iReturnType < 0 Or $iReturnType > 2 Then Return SetError(1, 0, $asFileArray)
  2953. Local $tWIN32_FIND_DATA = DllStructCreate("DWORD dwFileAttributes; dword ftCreationTime[2]; dword ftLastAccessTime[2]; dword ftLastWriteTime[2]; DWORD nFileSizeHigh; DWORD nFileSizeLow; dword dwReserved0; dword dwReserved1; WCHAR cFileName[260]; WCHAR cAlternateFileName[14];")
  2954. Local $iLasterror
  2955. Local $aCallFindFirst = DllCall($dll_WinInet, 'handle', 'FtpFindFirstFileW', 'handle', $hFTPConnect, 'wstr', "", 'struct*', $tWIN32_FIND_DATA, 'dword', 0x04000000, 'dword_ptr', 0)
  2956. If @error Or Not $aCallFindFirst[0] Then Return SetError(2, 0, '')
  2957. Local $iDirectoryIndex = 0, $sFileIndex = 0, $bIsDir, $aCallFindNext
  2958. Do
  2959. $bIsDir = BitAND(DllStructGetData($tWIN32_FIND_DATA, "dwFileAttributes"), $FILE_ATTRIBUTE_DIRECTORY) = $FILE_ATTRIBUTE_DIRECTORY
  2960. If $bIsDir And($iReturnType <> 2) Then
  2961. $iDirectoryIndex += 1
  2962. If UBound($aDirectoryArray) < $iDirectoryIndex + 1 Then ReDim $aDirectoryArray[$iDirectoryIndex * 2][3]
  2963. $aDirectoryArray[$iDirectoryIndex][0] = DllStructGetData($tWIN32_FIND_DATA, "cFileName")
  2964. $aDirectoryArray[$iDirectoryIndex][1] = __FTP_MakeQWord(DllStructGetData($tWIN32_FIND_DATA, "nFileSizeLow"), DllStructGetData($tWIN32_FIND_DATA, "nFileSizeHigh"))
  2965. $aDirectoryArray[$iDirectoryIndex][2] = 'Folder'
  2966. ElseIf Not $bIsDir And $iReturnType <> 1 Then
  2967. $sFileIndex += 1
  2968. If UBound($asFileArray) < $sFileIndex + 1 Then ReDim $asFileArray[$sFileIndex * 2][3]
  2969. $asFileArray[$sFileIndex][0] = DllStructGetData($tWIN32_FIND_DATA, "cFileName")
  2970. $asFileArray[$sFileIndex][1] = __FTP_MakeQWord(DllStructGetData($tWIN32_FIND_DATA, "nFileSizeLow"), DllStructGetData($tWIN32_FIND_DATA, "nFileSizeHigh"))
  2971. $asFileArray[$sFileIndex][2] = 'File'
  2972. EndIf
  2973. $aCallFindNext = DllCall($dll_WinInet, 'bool', 'InternetFindNextFileW', 'handle', $aCallFindFirst[0], 'struct*', $tWIN32_FIND_DATA)
  2974. If @error Then Return SetError(3, DllCall($dll_WinInet, 'bool', 'InternetCloseHandle', 'handle', $aCallFindFirst[0]), '')
  2975. Until Not $aCallFindNext[0]
  2976. DllCall($dll_WinInet, 'bool', 'InternetCloseHandle', 'handle', $aCallFindFirst[0])
  2977. $aDirectoryArray[0][0] = $iDirectoryIndex
  2978. $asFileArray[0][0] = $sFileIndex
  2979. Switch $iReturnType
  2980. Case 0
  2981. ReDim $aDirectoryArray[$aDirectoryArray[0][0] + $asFileArray[0][0] + 1][3]
  2982. For $i = 1 To $sFileIndex
  2983. For $j = 0 To 2
  2984. $aDirectoryArray[$aDirectoryArray[0][0] + $i][$j] = $asFileArray[$i][$j]
  2985. Next
  2986. Next
  2987. $aDirectoryArray[0][0] += $asFileArray[0][0]
  2988. Return $aDirectoryArray
  2989. Case 1
  2990. ReDim $aDirectoryArray[$iDirectoryIndex + 1][3]
  2991. Return $aDirectoryArray
  2992. Case 2
  2993. ReDim $asFileArray[$sFileIndex + 1][3]
  2994. Return $asFileArray
  2995. EndSwitch
  2996. EndFunc
  2997.  
  2998. Func _FtpRequest($aRetMode, $aURL, $sData2Send, $CallBackFunc_Progress)
  2999. If Not $dll_WinInet Then
  3000. $dll_WinInet = DllOpen('wininet.dll')
  3001. If @error Then Return SetError(1)
  3002. DllOpen('wininet.dll')
  3003. EndIf
  3004. ;------------------------------------------
  3005. Local $iError = 0, $newFtp = 0, $ReData
  3006. Local $iProxy = '', $iAccessType = 1
  3007. If $aRetMode[5] Then
  3008. $iProxy = $aRetMode[5]
  3009. $iAccessType = 3
  3010. ElseIf $g___Proxy Then
  3011. $iProxy = $g___Proxy
  3012. $iAccessType = 3
  3013. EndIf
  3014. ;------------------------------------------
  3015. If Not $g___ftpOpen[$aRetMode[8]] Or $ftpProxyCheck <> $iProxy Or $ftpUACheck <> $g___UserAgent Then
  3016. If $g___ftpOpen[$aRetMode[8]] Then _FTP_CloseHandle2($g___ftpOpen[$aRetMode[8]])
  3017. $g___ftpOpen[$aRetMode[8]] = _FTP_Open2($g___UserAgent, $iAccessType, $iProxy, $g___ProxyBypass)
  3018. If @error Then
  3019. $g___ftpOpen[$aRetMode[8]] = _FTP_CloseHandle2($g___ftpOpen[$aRetMode[8]])
  3020. Return SetError(2)
  3021. EndIf
  3022. $ftpProxyCheck = $iProxy
  3023. $ftpUACheck = $g___UserAgent
  3024. $newFtp = 1
  3025. EndIf
  3026. If Not $g___ftpConnect[$aRetMode[8]] Or $newFtp = 1 Or ($aURL[2] & $aURL[4] & $aURL[5] & $aURL[1] <> $ftpURLCheck) Then
  3027. If $g___ftpConnect[$aRetMode[8]] Then _FTP_CloseHandle2($g___ftpConnect[$aRetMode[8]])
  3028. $g___ftpConnect[$aRetMode[8]] = _FTP_Connect2($g___ftpOpen[$aRetMode[8]], $aURL[2], $aURL[4], $aURL[5], $aURL[1])
  3029. If @error Then
  3030. $g___ftpConnect[$aRetMode[8]] = _FTP_CloseHandle2($g___ftpConnect[$aRetMode[8]])
  3031. $g___ftpOpen[$aRetMode[8]] = _FTP_CloseHandle2($g___ftpOpen[$aRetMode[8]])
  3032. Return SetError(3, __HttpRequest_ErrNotify('_FtpRequest', 'Cannot connect to your account'), '')
  3033. EndIf
  3034. $ftpURLCheck = $aURL[2] & $aURL[4] & $aURL[5] & $aURL[1]
  3035. EndIf
  3036. ;------------------------------------------
  3037. Local $sFileName = '', $sDirPath = ''
  3038. Switch $aURL[3]
  3039. Case '/', ''
  3040. $aRetMode[0] = 1
  3041. Case Else
  3042. Local $aRemotePath = StringSplit($aURL[3], '/')
  3043. If StringRegExp($aRemotePath[$aRemotePath[0]], '^[^\.]+\.\w+$') Then
  3044. $sFileName = $aRemotePath[$aRemotePath[0]]
  3045. EndIf
  3046. If $aRemotePath[0] > 1 Then
  3047. If _FTP_DirSetCurrent2($g___ftpConnect[$aRetMode[8]], '/') = 1 Then
  3048. For $i = 1 To $aRemotePath[0] - ($sFileName ? 1 : 0)
  3049. If $aRemotePath[$i] == '' Then
  3050. If $i = 1 Then
  3051. ContinueLoop
  3052. Else
  3053. $iError = 4
  3054. ExitLoop
  3055. EndIf
  3056. EndIf
  3057. If _FTP_DirSetCurrent2($g___ftpConnect[$aRetMode[8]], $aRemotePath[$i]) = 0 Then
  3058. If _FTP_DirCreate2($g___ftpConnect[$aRetMode[8]], $aRemotePath[$i]) = 0 Then
  3059. $iError = 5
  3060. ExitLoop
  3061. Else
  3062. If _FTP_DirSetCurrent2($g___ftpConnect[$aRetMode[8]], $aRemotePath[$i]) = 0 Then
  3063. $iError = 6
  3064. ExitLoop
  3065. EndIf
  3066. EndIf
  3067. EndIf
  3068. Next
  3069. Else
  3070. $iError = 7
  3071. EndIf
  3072. EndIf
  3073. EndSwitch
  3074. ;------------------------------------------
  3075. If $iError = 0 Then
  3076. Switch $aRetMode[0]
  3077. Case 0
  3078.  
  3079. Case 1
  3080. $ReData = _FTP_ListToArray2($g___ftpConnect[$aRetMode[8]])
  3081. If @error Then $iError = 8
  3082. Case 2, 3
  3083. If $sFileName Then
  3084. If $sData2Send Then
  3085. If StringRegExp($sData2Send, '(?i)^[A-Z]:\\') and FileExists($sData2Send) Then
  3086. $sData2Send = _GetFileInfo($sData2Send, 0)
  3087. If @error Then
  3088. $iError = 9
  3089. Else
  3090. $sData2Send = $sData2Send[2]
  3091. EndIf
  3092. EndIf
  3093. If $iError = 0 Then
  3094. _FTP_FileWriteEx($g___ftpConnect[$aRetMode[8]], $sFileName, $sData2Send, $CallBackFunc_Progress)
  3095. If @error Then $iError = 10
  3096. EndIf
  3097. Else
  3098. $ReData = _FTP_FileReadEx($g___ftpConnect[$aRetMode[8]], $sFileName, $CallBackFunc_Progress)
  3099. If @error Then $iError = 11
  3100. EndIf
  3101. EndIf
  3102. If $iError = 0 and $aRetMode[0] = 2 Then
  3103. $ReData = BinaryToString($ReData, 4)
  3104. EndIf
  3105. EndSwitch
  3106. EndIf
  3107. Return SetError($iError, '', $ReData)
  3108. EndFunc
  3109. #EndRegion
Add Comment
Please, Sign In to add comment