summaryrefslogtreecommitdiffstats
path: root/data
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-02-24 02:13:59 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-02-24 02:13:59 +0000
commita6d58bb6052ac8cb01805a48c4ad2f129126116f (patch)
treedd867a099fcbb263a8009a9fb22695b87855dad6 /data
downloadkvirc-a6d58bb6052ac8cb01805a48c4ad2f129126116f.tar.gz
kvirc-a6d58bb6052ac8cb01805a48c4ad2f129126116f.zip
Added KDE3 version of kvirc
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/kvirc@1095341 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'data')
-rw-r--r--data/Makefile.am6
-rw-r--r--data/applnk/Makefile.am5
-rw-r--r--data/applnk/kvirc.desktop18
-rw-r--r--data/config/Makefile.am5
-rw-r--r--data/config/serverdb.kvc1611
-rw-r--r--data/config/texticons.kvc39
-rw-r--r--data/defscript/Makefile.am11
-rw-r--r--data/defscript/aliases.kvs706
-rw-r--r--data/defscript/default.kvs37
-rw-r--r--data/defscript/events.kvs105
-rw-r--r--data/defscript/installer.kvs169
-rw-r--r--data/defscript/popups.kvs1381
-rw-r--r--data/defscript/theme-install.kvs30
-rw-r--r--data/defscript/toolbars.kvs43
-rw-r--r--data/deftheme/Makefile.am2
-rw-r--r--data/deftheme/silverirc/Makefile.am5
-rw-r--r--data/deftheme/silverirc/pixmapInputBackground.pngbin0 -> 200 bytes
-rw-r--r--data/deftheme/silverirc/pixmapIrcViewBackground.pngbin0 -> 12760 bytes
-rw-r--r--data/deftheme/silverirc/pixmapUserListViewBackground.pngbin0 -> 237 bytes
-rw-r--r--data/deftheme/silverirc/themedata.kvc273
-rw-r--r--data/deftheme/silverirc/themeinfo.kvc10
-rw-r--r--data/doctemplates/Makefile.am1
-rw-r--r--data/doctemplates/ircintro.template60
-rw-r--r--data/doctemplates/kvircintro.template67
-rw-r--r--data/doctemplates/rfc2812.template3312
-rw-r--r--data/helppics/Makefile.am5
-rw-r--r--data/helppics/helplogoleft.pngbin0 -> 7100 bytes
-rw-r--r--data/helppics/helplogoright.pngbin0 -> 4293 bytes
-rw-r--r--data/icons/128x128/Makefile.am5
-rw-r--r--data/icons/128x128/kva.pngbin0 -> 11983 bytes
-rw-r--r--data/icons/128x128/kvc.pngbin0 -> 12499 bytes
-rw-r--r--data/icons/128x128/kvirc.pngbin0 -> 14195 bytes
-rw-r--r--data/icons/128x128/kvs.pngbin0 -> 13485 bytes
-rw-r--r--data/icons/128x128/kvt.pngbin0 -> 12714 bytes
-rw-r--r--data/icons/16x16/Makefile.am5
-rw-r--r--data/icons/16x16/kva.pngbin0 -> 838 bytes
-rw-r--r--data/icons/16x16/kvc.pngbin0 -> 802 bytes
-rw-r--r--data/icons/16x16/kvirc.pngbin0 -> 966 bytes
-rw-r--r--data/icons/16x16/kvs.pngbin0 -> 837 bytes
-rw-r--r--data/icons/16x16/kvt.pngbin0 -> 859 bytes
-rw-r--r--data/icons/32x32/Makefile.am6
-rw-r--r--data/icons/32x32/kva.pngbin0 -> 2065 bytes
-rw-r--r--data/icons/32x32/kvc.pngbin0 -> 1955 bytes
-rw-r--r--data/icons/32x32/kvirc.pngbin0 -> 2286 bytes
-rw-r--r--data/icons/32x32/kvirc.xpm295
-rw-r--r--data/icons/32x32/kvs.pngbin0 -> 2135 bytes
-rw-r--r--data/icons/32x32/kvt.pngbin0 -> 2137 bytes
-rw-r--r--data/icons/48x48/Makefile.am5
-rw-r--r--data/icons/48x48/kva.pngbin0 -> 3454 bytes
-rw-r--r--data/icons/48x48/kvc.pngbin0 -> 3346 bytes
-rw-r--r--data/icons/48x48/kvirc.pngbin0 -> 3864 bytes
-rw-r--r--data/icons/48x48/kvirc.xpm311
-rw-r--r--data/icons/48x48/kvs.pngbin0 -> 3665 bytes
-rw-r--r--data/icons/48x48/kvt.pngbin0 -> 3647 bytes
-rw-r--r--data/icons/64x64/Makefile.am5
-rw-r--r--data/icons/64x64/kvirc.pngbin0 -> 5612 bytes
-rw-r--r--data/icons/64x64/kvs.pngbin0 -> 5441 bytes
-rw-r--r--data/icons/Makefile.am5
-rw-r--r--data/icons/scalable/Makefile.am5
-rw-r--r--data/icons/scalable/createpng.sh24
-rw-r--r--data/icons/scalable/kva.svgzbin0 -> 5226 bytes
-rw-r--r--data/icons/scalable/kvc.svgzbin0 -> 7557 bytes
-rw-r--r--data/icons/scalable/kvirc.svgzbin0 -> 2759 bytes
-rw-r--r--data/icons/scalable/kvs.svgzbin0 -> 10411 bytes
-rw-r--r--data/icons/scalable/kvt.svgzbin0 -> 10270 bytes
-rw-r--r--data/man/Makefile.am3
-rw-r--r--data/man/kvirc.1133
-rw-r--r--data/mimelnk/Makefile.am5
-rw-r--r--data/mimelnk/x-kva.desktop7
-rw-r--r--data/mimelnk/x-kvc.desktop7
-rw-r--r--data/mimelnk/x-kvs.desktop7
-rw-r--r--data/mimelnk/x-kvt.desktop7
-rw-r--r--data/msgcolors/Makefile.am5
-rw-r--r--data/msgcolors/all-black.msgclr659
-rw-r--r--data/msgcolors/all-gray.msgclr659
-rw-r--r--data/msgcolors/all-green.msgclr659
-rw-r--r--data/msgcolors/all-white.msgclr659
-rw-r--r--data/msgcolors/colored-2.msgclr659
-rw-r--r--data/msgcolors/colored.msgclr659
-rw-r--r--data/msgcolors/default.msgclr659
-rw-r--r--data/msgcolors/heavy-colors.msgclr659
-rw-r--r--data/pics/Makefile.am8
-rw-r--r--data/pics/coresmall/Makefile.am8
-rw-r--r--data/pics/coresmall/kcs_accept.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_action.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_addons.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_afraid.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_alert.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_alias.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_aliashighlighted.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_angry.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_applet.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_autotilewindows.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_avatar.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_away.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_ban.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_banexcept.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_banunexcept.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_biggrin.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_biggrineyes.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_biggringlasses.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_binarytext.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_blacksquare.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_bluesquare.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_bomb.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_bookmarks.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_broadcastnotice.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_broadcastprivmsg.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_bug.pngbin0 -> 862 bytes
-rw-r--r--data/pics/coresmall/kcs_cafe.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_canvas.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_caption.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_cascadewindows.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_chanadmin.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_chanadminaway.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_chanmode.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_chanmodehide.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_channel.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_channelnotice.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_channelnoticecrypted.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_chanowner.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_chanowneraway.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_chanprivmsg.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_chanprivmsgcrypted.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_chanserv.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_chanunadmin.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_chanunowner.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_classictaskbar.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_close.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_colors.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_console.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_copy.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_cry.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_ctcpreply.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_ctcpreplyunknown.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_ctcprequestflood.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_ctcprequestignored.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_ctcprequestreplied.pngbin0 -> 1106 bytes
-rw-r--r--data/pics/coresmall/kcs_ctcprequestunknown.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_cut.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_cyansquare.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_dccchatmsg.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_dccchatmsgcrypted.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_dccerror.pngbin0 -> 1106 bytes
-rw-r--r--data/pics/coresmall/kcs_dccmsg.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_dccrequest.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_dccvoice.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_deadchannel.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_deadquery.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_default.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_deleteitem.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_demoralized.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_deop.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_deuserop.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_devoice.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_discard.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_dkgreensquare.pngbin0 -> 1106 bytes
-rw-r--r--data/pics/coresmall/kcs_dock.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_dockwidget.pngbin0 -> 1106 bytes
-rw-r--r--data/pics/coresmall/kcs_edititem.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_editor.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_epilogue.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_event.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_eventnohandlers.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_eye.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_file.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_files.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_filetransfer.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_finger.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_floppy.pngbin0 -> 1106 bytes
-rw-r--r--data/pics/coresmall/kcs_folder.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_gnutella.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_greensquare.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_gui.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_halfdeop.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_halfop.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_halfopaway.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_handler.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_handlerdisabled.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_heart.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_heartbroken.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_help.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_hidedoubleview.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_hidelistview.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_home.pngbin0 -> 1106 bytes
-rw-r--r--data/pics/coresmall/kcs_homepage.pngbin0 -> 1106 bytes
-rw-r--r--data/pics/coresmall/kcs_iconmanager.pngbin0 -> 1106 bytes
-rw-r--r--data/pics/coresmall/kcs_icq.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_icqblue.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_icqlightgreen.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_icqlightyellow.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_icqred.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_icqyellow.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_idea.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_ident.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_ignore.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_input.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_invisible.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_invite.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_inviteexcept.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_inviteunexcept.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_irc.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_irc0.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_irc1.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_irc2.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_irc3.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_irc4.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_irc5.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_ircview.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_join.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_key.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_kick.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_kiss.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_kvirc.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_limit.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_links.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_linux.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_list.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_locked.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_lockedoff.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_log.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_look.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_maxhorizontal.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_maximize.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_maxvertical.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_mdihelp.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_meban.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_mebanexcept.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_mebanunexcept.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_mechanadmin.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_mechanowner.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_mechanunadmin.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_mechanunowner.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_medehalfop.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_medeop.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_medeuserop.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_medevoice.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_mehalfop.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_meinviteexcept.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_meinviteunexcept.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_mekick.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_meop.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_message.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_messages.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_messagesent.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_meunban.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_meuserop.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_mevoice.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_minimize.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_minus.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_mode.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_motd.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_multimedia.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_namespace.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_newitem.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_newitembywizard.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_nick.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_nicknameproblem.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_nickserv.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_nochannel.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_none.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_notaway.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_notifyoffline.pngbin0 -> 1086 bytes
-rw-r--r--data/pics/coresmall/kcs_notifyonline.pngbin0 -> 1034 bytes
-rw-r--r--data/pics/coresmall/kcs_op.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_opaway.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_options.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_ownprivmsg.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_ownprivmsgcrypted.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_package.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_parsererror.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_parserwarning.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_part.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_paste.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_play.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_plus.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_popup.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_popupmenu.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_prologue.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_proxy.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_query.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_querynotice.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_querynoticecrypted.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_queryprivmsg.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_queryprivmsgcrypted.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_querytrace.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_quit.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_quitapp.pngbin0 -> 1106 bytes
-rw-r--r--data/pics/coresmall/kcs_quitsplit.pngbin0 -> 1106 bytes
-rw-r--r--data/pics/coresmall/kcs_raw.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_rawevent.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_raweventnohandlers.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_record.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_redsquare.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_refresh.pngbin0 -> 1044 bytes
-rw-r--r--data/pics/coresmall/kcs_regusers.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_restore.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_retry.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_rose.pngbin0 -> 1106 bytes
-rw-r--r--data/pics/coresmall/kcs_saycolors.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_sayicon.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_saykvs.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_saysmile.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_screenshot.pngbin0 -> 688 bytes
-rw-r--r--data/pics/coresmall/kcs_scriptaction.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_scriptcenter.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_search.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_server.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_servererror.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_serverinfo.pngbin0 -> 1106 bytes
-rw-r--r--data/pics/coresmall/kcs_servernotice.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_serverping.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_servnotice.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_sharedfiles.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_showdoubleview.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_showlistview.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_shy.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_slurp.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_smile.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_socketerror.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_socketmessage.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_socketwarning.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_sound.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_spam.pngbin0 -> 1106 bytes
-rw-r--r--data/pics/coresmall/kcs_split.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_spy.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_ssl.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_stats.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_statusbar.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_surprised1.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_surprised2.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_systemerror.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_systemmessage.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_systemwarning.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_tearsmile.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_terminal.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_textencoding.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_textexclamative.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_textpoints.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_theme.pngbin0 -> 739 bytes
-rw-r--r--data/pics/coresmall/kcs_themeoptions.pngbin0 -> 928 bytes
-rw-r--r--data/pics/coresmall/kcs_tilewindows.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_time.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_tongue.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_tongue2.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_toolbar.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_topic.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_transfer.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_transparent.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_treetaskbar.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_ugly.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_unban.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_undock.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_unhandled.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_unlocked.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_unlockedoff.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_unrecognized.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_url.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_userlist.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_userop.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_useropaway.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_userwindow.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_violetsquare.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_voice.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_voiceaway.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_wallops.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_who.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_whoischannels.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_whoisidle.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_whoisother.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_whoisserver.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_whoisuser.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_world.pngbin0 -> 1107 bytes
-rw-r--r--data/pics/coresmall/kcs_xy.pngbin0 -> 1106 bytes
-rw-r--r--data/pics/coresmall/kcs_yellowsquare.pngbin0 -> 1106 bytes
-rw-r--r--data/pics/kvi_actiondrawer.pngbin0 -> 181743 bytes
-rw-r--r--data/pics/kvi_activitymeter.pngbin0 -> 6509 bytes
-rw-r--r--data/pics/kvi_bigicon_actioneditor.pngbin0 -> 1693 bytes
-rw-r--r--data/pics/kvi_bigicon_actions.pngbin0 -> 1951 bytes
-rw-r--r--data/pics/kvi_bigicon_addons.pngbin0 -> 2536 bytes
-rw-r--r--data/pics/kvi_bigicon_aliaseditor.pngbin0 -> 1607 bytes
-rw-r--r--data/pics/kvi_bigicon_cascadewindows.pngbin0 -> 998 bytes
-rw-r--r--data/pics/kvi_bigicon_channellist.pngbin0 -> 509 bytes
-rw-r--r--data/pics/kvi_bigicon_channels.pngbin0 -> 1818 bytes
-rw-r--r--data/pics/kvi_bigicon_channelspopup.pngbin0 -> 1818 bytes
-rw-r--r--data/pics/kvi_bigicon_codetester.pngbin0 -> 1660 bytes
-rw-r--r--data/pics/kvi_bigicon_connected.pngbin0 -> 2305 bytes
-rw-r--r--data/pics/kvi_bigicon_connecting.pngbin0 -> 2535 bytes
-rw-r--r--data/pics/kvi_bigicon_disconnected.pngbin0 -> 2271 bytes
-rw-r--r--data/pics/kvi_bigicon_eventeditor.pngbin0 -> 1708 bytes
-rw-r--r--data/pics/kvi_bigicon_folder.pngbin0 -> 2971 bytes
-rw-r--r--data/pics/kvi_bigicon_help.pngbin0 -> 2646 bytes
-rw-r--r--data/pics/kvi_bigicon_helpback.pngbin0 -> 1228 bytes
-rw-r--r--data/pics/kvi_bigicon_helpclose.pngbin0 -> 1376 bytes
-rw-r--r--data/pics/kvi_bigicon_helpforward.pngbin0 -> 1242 bytes
-rw-r--r--data/pics/kvi_bigicon_helpindex.pngbin0 -> 1711 bytes
-rw-r--r--data/pics/kvi_bigicon_helpsearch.pngbin0 -> 975 bytes
-rw-r--r--data/pics/kvi_bigicon_identity.pngbin0 -> 1818 bytes
-rw-r--r--data/pics/kvi_bigicon_irccontextdisplay.pngbin0 -> 857 bytes
-rw-r--r--data/pics/kvi_bigicon_keyboard.pngbin0 -> 1481 bytes
-rw-r--r--data/pics/kvi_bigicon_kvircwww.pngbin0 -> 2287 bytes
-rw-r--r--data/pics/kvi_bigicon_kvs.pngbin0 -> 1870 bytes
-rw-r--r--data/pics/kvi_bigicon_mailinglist.pngbin0 -> 2308 bytes
-rw-r--r--data/pics/kvi_bigicon_minimizeallwindows.pngbin0 -> 1654 bytes
-rw-r--r--data/pics/kvi_bigicon_networklinks.pngbin0 -> 1765 bytes
-rwxr-xr-xdata/pics/kvi_bigicon_newirccontext.pngbin0 -> 2084 bytes
-rwxr-xr-xdata/pics/kvi_bigicon_nickpopup.pngbin0 -> 1639 bytes
-rw-r--r--data/pics/kvi_bigicon_nokeyboard.pngbin0 -> 1797 bytes
-rw-r--r--data/pics/kvi_bigicon_open.pngbin0 -> 2237 bytes
-rw-r--r--data/pics/kvi_bigicon_pack.pngbin0 -> 2203 bytes
-rw-r--r--data/pics/kvi_bigicon_popupeditor.pngbin0 -> 1240 bytes
-rwxr-xr-xdata/pics/kvi_bigicon_quit.pngbin0 -> 2445 bytes
-rw-r--r--data/pics/kvi_bigicon_raweditor.pngbin0 -> 1394 bytes
-rw-r--r--data/pics/kvi_bigicon_regusers.pngbin0 -> 2968 bytes
-rw-r--r--data/pics/kvi_bigicon_remove.pngbin0 -> 2843 bytes
-rw-r--r--data/pics/kvi_bigicon_save.pngbin0 -> 1740 bytes
-rw-r--r--data/pics/kvi_bigicon_screenshot.pngbin0 -> 1973 bytes
-rw-r--r--data/pics/kvi_bigicon_separator.pngbin0 -> 479 bytes
-rw-r--r--data/pics/kvi_bigicon_server.pngbin0 -> 1947 bytes
-rw-r--r--data/pics/kvi_bigicon_servers.pngbin0 -> 2079 bytes
-rw-r--r--data/pics/kvi_bigicon_settings.pngbin0 -> 1906 bytes
-rwxr-xr-xdata/pics/kvi_bigicon_socketspy.pngbin0 -> 2418 bytes
-rw-r--r--data/pics/kvi_bigicon_theme.pngbin0 -> 2407 bytes
-rw-r--r--data/pics/kvi_bigicon_themeoptions.pngbin0 -> 2190 bytes
-rw-r--r--data/pics/kvi_bigicon_tilewindows.pngbin0 -> 644 bytes
-rw-r--r--data/pics/kvi_bigicon_toolbareditor.pngbin0 -> 1440 bytes
-rw-r--r--data/pics/kvi_bigicon_tools.pngbin0 -> 2577 bytes
-rw-r--r--data/pics/kvi_bigicon_trashcan.pngbin0 -> 2235 bytes
-rwxr-xr-xdata/pics/kvi_bigicon_unknown.pngbin0 -> 1977 bytes
-rw-r--r--data/pics/kvi_bigicon_usermode.pngbin0 -> 1749 bytes
-rw-r--r--data/pics/kvi_bigicon_www.pngbin0 -> 2668 bytes
-rw-r--r--data/pics/kvi_checkbox_selected.pngbin0 -> 346 bytes
-rw-r--r--data/pics/kvi_checkbox_unselected.pngbin0 -> 222 bytes
-rwxr-xr-xdata/pics/kvi_horizontal_left.pngbin0 -> 439 bytes
-rwxr-xr-xdata/pics/kvi_horizontal_right.pngbin0 -> 416 bytes
-rw-r--r--data/pics/kvi_icon_bot.pngbin0 -> 539 bytes
-rw-r--r--data/pics/kvi_icon_female.pngbin0 -> 277 bytes
-rw-r--r--data/pics/kvi_icon_male.pngbin0 -> 289 bytes
-rwxr-xr-xdata/pics/kvi_icon_refresh.pngbin0 -> 1146 bytes
-rw-r--r--data/pics/kvi_setup_label.pngbin0 -> 161081 bytes
-rw-r--r--data/pics/kvi_setup_theme_hires.pngbin0 -> 66729 bytes
-rw-r--r--data/pics/kvi_setup_theme_lowres.pngbin0 -> 29162 bytes
-rw-r--r--data/pics/kvi_splash.pngbin0 -> 198483 bytes
-rw-r--r--data/pics/kvi_splash_overlay.pngbin0 -> 7729 bytes
-rwxr-xr-xdata/pics/kvi_toolbutton_menuindicator.pngbin0 -> 79 bytes
-rw-r--r--data/pics/kvi_userchanstate.pngbin0 -> 8021 bytes
-rw-r--r--data/protocols/Makefile.am9
-rw-r--r--data/protocols/irc.protocol11
-rw-r--r--data/protocols/irc6.protocol11
-rw-r--r--data/resources/Makefile.am3
-rw-r--r--data/resources/icon1.icobin0 -> 3774 bytes
-rw-r--r--data/resources/kvirc.rc29
-rw-r--r--data/resources/resource.h20
-rw-r--r--data/resources_mac/Info.plist.in40
-rw-r--r--data/resources_mac/Makefile.am8
-rw-r--r--data/resources_mac/kvirc.icnsbin0 -> 52772 bytes
456 files changed, 14160 insertions, 0 deletions
diff --git a/data/Makefile.am b/data/Makefile.am
new file mode 100644
index 00000000..1d329f15
--- /dev/null
+++ b/data/Makefile.am
@@ -0,0 +1,6 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
+SUBDIRS = applnk config defscript deftheme doctemplates \
+helppics icons man mimelnk msgcolors pics protocols resources resources_mac
diff --git a/data/applnk/Makefile.am b/data/applnk/Makefile.am
new file mode 100644
index 00000000..cf7c6f3d
--- /dev/null
+++ b/data/applnk/Makefile.am
@@ -0,0 +1,5 @@
+tmpdir = $(applnkdir)
+
+tmp_DATA = kvirc.desktop
+
+EXTRA_DIST = $(tmp_DATA)
diff --git a/data/applnk/kvirc.desktop b/data/applnk/kvirc.desktop
new file mode 100644
index 00000000..0b531899
--- /dev/null
+++ b/data/applnk/kvirc.desktop
@@ -0,0 +1,18 @@
+[Desktop Entry]
+BinaryPattern=
+GenericName=IRC Client
+Comment=Connect to Internet Relay Chat
+MimeType=application/x-kva;application/x-kvt
+Exec=kvirc -m %u
+Icon=kvirc
+MapNotify=true
+Name=KVIrc 3
+SwallowExec=
+SwallowTitle=
+Terminal=false
+TerminalOptions=
+Path=
+Type=Application
+X-KDE-SubstituteUID=false
+X-KDE-Username=
+X-KDE-StartupNotify=true
diff --git a/data/config/Makefile.am b/data/config/Makefile.am
new file mode 100644
index 00000000..4b41fbd9
--- /dev/null
+++ b/data/config/Makefile.am
@@ -0,0 +1,5 @@
+tmpdir = $(configdir)
+
+tmp_DATA = serverdb.kvc texticons.kvc
+
+EXTRA_DIST = $(tmp_DATA)
diff --git a/data/config/serverdb.kvc b/data/config/serverdb.kvc
new file mode 100644
index 00000000..f1c6266a
--- /dev/null
+++ b/data/config/serverdb.kvc
@@ -0,0 +1,1611 @@
+# KVIrc configuration file
+
+[Accessirc]
+0_Hostname=irc.accessirc.net
+0_Description=Accessirc:%20Random%20server
+NServers=1
+[Acestar]
+0_Hostname=irc.acestar.org
+0_Description=Acestar:%20Random%20server
+NServers=1
+[Action-IRC]
+0_Hostname=irc.action-irc.net
+0_Description=Action-IRC:%20Random%20server
+NServers=1
+[AlternativeNet]
+0_Hostname=irc.altnet.org
+0_Description=Alternativenet:%20Random%20server
+NServers=1
+[Afternet]
+0_Hostname=irc.afternet.org
+0_Description=Afternet:%20Random%20server
+NServers=1
+[Anothernet]
+0_Hostname=irc.another.net
+0_Description=AnotherNet:%20Random%20server
+NServers=1
+[ArabChat]
+0_Hostname=irc.arabchat.org
+0_Description=ArabChat:%20Random%20server
+NServers=1
+[AsiaTalk]
+0_Hostname=irc.asiatalk.org
+0_Description=AsiaTalk:%20Random%20server
+NServers=1
+[AstroLink]
+0_Hostname=irc.astrolink.org
+0_Description=AstroLink:%20Random%20server
+NServers=1
+[Asylumnet]
+0_Hostname=irc.asylum-net.org
+0_Description=Asylumnet:%20Random%20server
+NServers=1
+[Austnet]
+0_Hostname=au.austnet.org
+0_Description=Austnet:%20Random%20AU%20server
+1_Hostname=nz.austnet.org
+1_Description=Austnet:%20Random%20NZ%20server
+2_Hostname=sg.austnet.org
+2_Description=Austnet:%20Random%20SG%20server
+3_Hostname=us.austnet.org
+3_Description=Austnet:%20Random%20US%20server
+NServers=4
+[AwesomeChat]
+0_Hostname=irc.awesomechat.net
+0_Description=AwesomeChat:%20Random%20server
+NServers=1
+[Axenet]
+0_Hostname=irc.axenet.org
+0_Description=Axenet:%20Random%20server
+NServers=1
+[Azzurra]
+0_Hostname=irc.azzurra.org
+0_Description=Main%20Random%20Server
+1_Hostname=atlantis.azzurra.org
+1_Description=HUB%20Routing%20Server
+2_Hostname=twilight.azzurra.org
+2_Description=HUB%20Routing%20Server
+3_Hostname=vogon.azzurra.org
+3_Description=HUB%20Routing%20Server
+4_Hostname=b-network.azzurra.org
+4_Description=B-Network%20Leaf%20Server
+5_Hostname=caltanet.azzurra.org
+5_Description=Caltanet%20Leaf%20Server
+6_Hostname=cheapnet.azzurra.org
+6_Description=Cheapnet%20Leaf%20Server
+7_Hostname=libero.azzurra.org
+7_Description=Libero%20Leaf%20Server
+8_Hostname=oltrelinux.azzurra.org
+8_Description=Oltrelinux%20Leaf%20Server
+9_Hostname=nexlab.azzurra.org
+9_Description=Nexlab%20Leaf%20Server
+10_Hostname=penguin.azzurra.org
+10_Description=Penguin%20Leaf%20Server
+11_Hostname=radiomarte.azzurra.org
+11_Description=RadioMarte%20Leaf%20Server
+12_Hostname=sashimi.azzurra.org
+12_Description=Sashimi%20Leaf%20Server
+13_Hostname=sbrize.azzurra.org
+13_Description=Sbrize%20Leaf%20Server
+14_Hostname=tin.azzurra.org
+14_Description=Tin%20Leaf%20Server
+15_Hostname=unina.azzurra.org
+15_Description=Unina%20Leaf%20Server
+16_Hostname=wmgitalia.azzurra.org
+16_Description=WMG%20Leaf%20Server
+17_Hostname=fastweb.azzurra.org
+17_Description=Fastweb%20Routing%20Server
+18_Hostname=gamma.azzurra.org
+18_Description=Gamma%20Fastweb%20Server
+19_Hostname=orion.azzurra.org
+19_Description=Orion%20Fastweb%20Server
+20_Hostname=ssitalia.azzurra.org
+20_Description=SSItalia%20Fastweb%20Server
+21_Hostname=stealth.azzurra.org
+21_Description=Stealth%20Fastweb%20Server
+22_Hostname=irc6.azzurra.org
+22_Description=IPv6%20Routing%20Server
+23_Hostname=itgate.azzurra.org
+23_Description=ITgate%20IPv6%20Server
+24_Hostname=ngnet.azzurra.org
+24_Description=Ngnet%20IPv6%20Server
+NServers=25
+Description=Italian%20Main%20Network
+[Beirut]
+0_Hostname=irc.beirut.com
+0_Description=Random%20server
+1_Hostname=us.beirut.com
+1_Description=Random%20US%20server
+2_Hostname=eu.beirut.com
+2_Description=Random%20EU%20server
+3_Hostname=downtown.beirut.com
+3_Description=Fullerton
+4_Hostname=verdun.beirut.com
+4_Description=Chicago
+5_Hostname=hamra.beirut.com
+5_Description=New%20York
+6_Hostname=achrafieh.beirut.com
+6_Description=Hamburg
+7_Hostname=port.beirut.com
+7_Description=London
+8_Hostname=sinelfil.beirut.com
+8_Description=Frankfurt
+9_Hostname=irc.dikt.no
+9_Description=Oslo
+NServers=10
+[Beyondirc]
+0_Hostname=irc.beyondirc.net
+0_Description=BeyondIRC:%20Random%20server
+NServers=1
+[Bitlbee]
+0_Hostname=im.bitlbee.org
+0_Description=InterLAB%20BV,%20Netherlands
+1_Hostname=im.uk.bitlbee.org
+1_Description=SSInternet,%20UK
+2_Hostname=im.starkast.net
+2_Description=TeleFortress,%20Sweden
+3_Hostname=bitlbee.hensema.net
+3_Description=HostingXS,%20Amsterdam
+4_Hostname=im.okkernoot.net
+4_Description=Almere,%20Netherlands
+5_Hostname=im.fr.bitlbee.org
+5_Description=ProXad,%20France
+6_Hostname=im.sixxs.net
+6_Description=SixXS,%20Netherlands
+7_Hostname=bitlbee.extreme-players.de
+7_Description=Global%20Access,%20Germany
+8_Hostname=irc2im.picasa.hu
+8_Description=Hungary,%20Budapest
+9_Hostname=bitlbee.salooo.org
+9_Description=Berlin,%20Germany
+NServers=10
+Description=IRC%20%3C--%3E%20MSN%20gateway
+[Blabbernet]
+0_Hostname=irc.blabber.net
+0_Description=Blabbernet:%20Random%20server
+NServers=1
+[Blitzed]
+0_Hostname=irc.blitzed.org
+0_Description=Blitzed:%20Random%20server
+NServers=1
+[Brasilchat]
+0_Hostname=irc.brasilchat.org
+0_Description=Brasilchat:%20Random%20server
+NServers=1
+[Brasirc]
+0_Hostname=irc.brasirc.net
+0_Description=Brasirc:%20Random%20server
+1_Hostname=irc.libnet.com.br
+1_Description=Brasirc:%20BR,%20PA,%20Belem
+2_Hostname=irc.matrix.net.br
+2_Description=Brasirc:%20BR,%20SC,%20Florianopolis
+NServers=3
+[Brasnet]
+0_Hostname=irc.brasnet.org
+0_Description=Brasnet:%20Random%20server
+1_Hostname=eu.brasnet.org
+1_Description=Brasnet:%20Random%20European%20server
+2_Hostname=us.brasnet.org
+2_Description=Brasnet:%20Random%20US%20server
+NServers=3
+[Bulgaria]
+0_Hostname=irc.bulgaria.org
+0_Description=Bulgaria:%20Random%20server
+NServers=1
+[CCnet]
+0_Hostname=irc.cchat.net
+0_Description=CCnet:%20Random%20server
+1_Hostname=irc2.cchat.net
+1_Description=CCnet:%20US,%20TX,%20Dallas
+NServers=2
+[Chat-Net]
+0_Hostname=irc.chat-net.org
+0_Description=Chat-Net:%20Random%20server
+NServers=1
+[ChatArea]
+0_Hostname=irc.chatarea.net
+0_Description=ChatArea:%20Random%20server
+NServers=1
+[Chatcafe]
+0_Hostname=irc.chatcafe.net
+0_Description=Chatcafe:%20Random%20server
+NServers=1
+[ChatCentral2]
+0_Hostname=irc.cc2.org
+0_Description=ChatCentral2:%20Random%20server
+NServers=1
+[ChatCircuit]
+0_Hostname=irc.chatcircuit.com
+0_Port=6668
+0_Description=ChatCircuit:%20Random%20server
+NServers=1
+[ChatFactory]
+0_Hostname=irc.chatfactory.net
+0_Description=ChatFactory:%20Random%20server
+1_Hostname=power.chatfactory.net
+1_Description=ChatFactory:%20Brussels,%20EU
+NServers=2
+[Chatlink]
+0_Hostname=irc.chatlink.org
+0_Description=Chatlink:%20Random%20server
+NServers=1
+[Chatnet]
+0_Hostname=au.chatnet.org
+0_Description=Chatnet:%20Random%20AU%20server
+1_Hostname=eu.chatnet.org
+1_Description=Chatnet:%20Random%20EU%20server
+2_Hostname=us.chatnet.org
+2_Description=Chatnet:%20Random%20US%20server
+NServers=3
+[ChatPR]
+0_Hostname=irc.chatpr.org
+0_Description=ChatPR:%20Random%20server
+NServers=1
+[Chatpinoy]
+0_Hostname=irc.chatpinoy.com
+0_Description=Chatpinoy:%20Random%20server
+NServers=1
+[Chatroom]
+0_Hostname=irc.chatroom.org
+0_Description=Chatroom:%20Random%20server
+NServers=1
+[Chatsolutions]
+0_Hostname=irc.chatsolutions.org
+0_Description=Chatsolutions:%20Random%20server
+NServers=1
+[Chatster]
+0_Hostname=irc.chatster.org
+0_Description=Chatster:%20Random%20server
+NServers=1
+[ChatX]
+0_Hostname=irc.chatx.net
+0_Description=ChatX:%20Random%20server
+NServers=1
+[CNN]
+0_Hostname=chat.cnn.com
+0_Description=CNN:%20CNN%20News%20discussions
+NServers=1
+[Coolchat]
+0_Hostname=irc.coolchat.net
+0_Description=Coolchat:%20Random%20server
+NServers=1
+[Criten]
+0_Hostname=irc.criten.net
+0_Description=Criten:%20Random%20server
+NServers=1
+[Cyberchat]
+0_Hostname=irc.cyberchat.org
+0_Description=Cyberchat:%20Random%20server
+NServers=1
+[CyGanet]
+0_Hostname=irc.cyga.net
+0_Description=CyGanet:%20Random%20server
+NServers=1
+[DALnet]
+0_Hostname=irc.dal.net
+0_Description=Main%20Random%20Server
+1_Hostname=as.dal.net
+1_Description=Asia%20Random%20Server
+2_Hostname=hotspeed.sg.as.dal.net
+2_Description=Singapore%20Server
+3_Hostname=mesra.kl.my.dal.net
+3_Description=Malaysia%20Server
+4_Hostname=ca.dal.net
+4_Description=Canada%20Random%20Server
+5_Hostname=maple.ix.ca.dal.net
+5_Description=Maple%20Server
+6_Hostname=toronto.on.ca.dal.net
+6_Description=Toronto%20Server
+7_Hostname=eu.dal.net
+7_Description=Europe%20Random%20Server
+8_Hostname=arcor.de.eu.dal.net
+8_Description=Germany%20Server
+9_Hostname=brain.hub.eu.dal.net
+9_Description=HUB%20Server
+10_Hostname=gaston.se.eu.dal.net
+10_Description=Sweden%20Server
+11_Hostname=genesis-r.uk.eu.dal.net
+11_Description=UK%20Server
+12_Hostname=matrix.de.eu.dal.net
+12_Description=Germany%20Server
+13_Hostname=mozilla.se.eu.dal.net
+13_Description=Sweden%20Server
+14_Hostname=powertech.no.eu.dal.net
+14_Description=Norway%20Server
+15_Hostname=waffle.ix.eu.dal.net
+15_Description=Waffle%20Server
+16_Hostname=us.dal.net
+16_Description=USA%20Random%20Server
+17_Hostname=aeon.nj.us.dal.net
+17_Description=USA%20Server
+18_Hostname=broadway.ny.us.dal.net
+18_Description=USA%20Server
+19_Hostname=hollywood.ix.us.dal.net
+19_Description=USA%20Server
+20_Hostname=jade.va.us.dal.net
+20_Description=USA%20Server
+21_Hostname=jingo.ix.us.dal.net
+21_Description=USA%20Server
+22_Hostname=loyalty.ix.us.dal.net
+22_Description=USA%20Server
+23_Hostname=masters.ix.us.dal.net
+23_Description=USA%20Server
+24_Hostname=novel.fl.us.dal.net
+24_Description=USA%20Server
+25_Hostname=punch.va.us.dal.net
+25_Description=USA%20Server
+26_Hostname=rangers.ix.us.dal.net
+26_Description=USA%20Server
+27_Hostname=redemption.ix.us.dal.net
+27_Description=USA%20Server
+28_Hostname=riga-r.ca.us.dal.net
+28_Description=USA%20Server
+29_Hostname=rumble.fl.us.dal.net
+29_Description=USA%20Server
+30_Hostname=serenity.ix.us.dal.net
+30_Description=USA%20Server
+31_Hostname=soho.ix.us.dal.net
+31_Description=USA%20Server
+32_Hostname=swiftco.wa.us.dal.net
+32_Description=USA%20Server
+NServers=33
+[Darkfire]
+0_Hostname=irc.darkfire.net
+0_Description=Darkfire:%20Random%20server
+NServers=1
+[Darkfyre]
+0_Hostname=irc.darkfyre.net
+0_Description=Darkfyre:%20Random%20server
+NServers=1
+[DarkMyst]
+0_Hostname=irc.darkmyst.org
+0_Description=DarkMyst:%20Random%20server
+NServers=1
+[DarkServ]
+0_Hostname=irc.darkserv.net
+0_Description=DarkServ:%20Random%20server
+NServers=1
+[Darktree]
+0_Hostname=irc.darktree.net
+0_Description=Darktree:%20Random%20server
+NServers=1
+[Deepspace]
+0_Hostname=irc.deepspace.org
+0_Description=Deepspace:%20Disability%20network
+NServers=1
+[Different]
+0_Hostname=irc.different.net
+0_Description=Different:%20Random%20server
+NServers=1
+[Digarix]
+0_Hostname=irc.digarix.net
+0_Description=Digarix:%20Random%20server
+NServers=1
+[Digatech]
+0_Hostname=irc.digatech.net
+0_Description=Digatech:%20Random%20server
+NServers=1
+[Digitalirc]
+0_Hostname=irc.digitalirc.net
+0_Description=Digitalirc:%20Random%20server
+NServers=1
+[Discussioni]
+0_Hostname=irc.discussioni.org
+0_Description=Discussioni%20random%20server
+1_Hostname=ipv6.discussioni.org
+1_Description=Experimental%20IPv6%20Server
+1_Port=5776
+2_Hostname=Bolzano1.IT.Discussioni.Org
+2_Description=Blozano1
+3_Hostname=Bolzano2.IT.Discussioni.Org
+3_Description=Bolzano2
+4_Hostname=Chieti.IT.Discussioni.Org
+4_Description=SSL%20ready%20server
+4_Port=9999
+4_SSL=true
+5_Hostname=Milano.IT.Discussioni.Org
+5_Description=Milano
+5_Port=6669
+6_Hostname=Roma.IT.Discussioni.Org
+6_Description=Roma
+6_Port=6669
+7_Hostname=Roma2.IT.Discussioni.Org
+7_Description=Roma2
+7_Port=6668
+8_Hostname=Torino.IT.Discussioni.Org
+8_Description=Torino
+8_Port=6669
+NServers=9
+Description=Italian%20Network
+[Dobbernet]
+0_Hostname=irc.dobber.net
+0_Description=Dobbernet:%20Random%20server
+NServers=1
+[DogmNet]
+0_Hostname=irc.dogm.net
+0_Description=Main%20network%20server
+1_Hostname=irc.rovno.ua
+1_Description=Main%20UA%20server
+2_Hostname=irc.chat.uz
+2_Description=Main%20UZ%20server
+NServers=3
+Description=Russian%20Network
+Encoding=CP-1251
+[DragonLynk]
+0_Hostname=irc.dragonlynk.net
+0_Description=DragonLynk:%20Random%20server
+NServers=1
+[Dreamcast]
+0_Hostname=irc0.dreamcast.com
+0_Description=Dreamcast:%20Random%20server
+NServers=1
+[Dreamnet]
+0_Hostname=irc.dreamnet.org
+0_Description=Dreamnet:%20Random%20server
+NServers=1
+[Dwarfstar]
+0_Hostname=irc.dwarfstar.net
+0_Description=DwarfStar:%20Random%20server
+NServers=1
+[Dynastynet]
+0_Hostname=irc.dynastynet.net
+0_Description=Dynastynet:%20Random%20server
+NServers=1
+[EFnet]
+0_Hostname=irc.efnet.org
+0_Description=Main%20Random%20Server
+1_Hostname=irc.efnet.ca
+1_Description=Canada%20Random%20Server
+2_Hostname=irc.arcti.ca
+2_Description=Calgary%20Server
+3_Hostname=efnet.teleglobe.net
+3_Description=Montreal%20Server
+4_Hostname=irc.dks.ca
+4_Description=Toronto%20Server
+5_Hostname=ircd.arcti.ca
+5_Description=Calgary%20HUB%20Server
+6_Hostname=irc.igs.ca
+6_Description=Toronto%20Server
+7_Hostname=irc.efnet.eu
+7_Description=Europe%20Random%20Server
+8_Hostname=irc.dkom.at
+8_Description=Vienna%20Server
+9_Hostname=irc.efnet.pl
+9_Description=Warsaw%20Server
+10_Hostname=efnet.ipv6.xs4all.nl
+10_Description=Amsterdam%20IPv6%20Server
+11_Hostname=irc.du.se
+11_Description=Borlange%20Server
+12_Hostname=efnet.cs.hut.fi
+12_Description=Helsinki%20Server
+13_Hostname=irc.inter.net.il
+13_Description=Tel%20Aviv%20Server
+14_Hostname=irc.inet.tele.dk
+14_Description=Aarhus%20Server
+15_Hostname=irc.ipv6.inter.net.il
+15_Description=Tel%20Aviv%20IPv6%20Server
+16_Hostname=irc.homelien.no
+16_Description=Oslo%20IPv6%20Server
+17_Hostname=ircd.efnet.no
+17_Description=Oslo%20HUB%20Server
+18_Hostname=efnet.xs4all.nl
+18_Description=Amsterdam%20Server
+19_Hostname=hub.il
+19_Description=EFnet%20Israel%20HUB%20Server
+20_Hostname=irc.efnet.ru
+20_Description=Moscow%20Server
+21_Hostname=irc.efnet.no
+21_Description=Oslo%20Server
+22_Hostname=irc.daxnet.no
+22_Description=Oslo%20Server
+23_Hostname=irc.efnet.fr
+23_Description=Paris%20Server
+24_Hostname=hub.se
+24_Description=EFnet%20Sweden%20HUB%20Server
+25_Hostname=hub.efnet.nl
+25_Description=EFnet%20Netherlands%20HUB%20Server
+26_Hostname=irc.ac.za
+26_Description=South%20Africa%20IPv6%Server
+27_Hostname=efnet.port80.se
+27_Description=Stockholm%20IPv6%20Server
+28_Hostname=irc.dataphone.se
+28_Description=Stockholm%20Server
+29_Hostname=irc.efnet.nl
+29_Description=Ede%20Server
+30_Hostname=efnet.demon.co.uk
+30_Description=London%20Server
+31_Hostname=hub.uk
+31_Description=EFnet%20UK%20HUB%20Server
+32_Hostname=hub.dk
+32_Description=EFnet%20Denmark%20HUB%20Server
+33_Hostname=irc.pte.hu
+33_Description=Pecs%20Server
+34_Hostname=irc.efnet.us
+34_Description=USA%20Random%20Server
+35_Hostname=irc.colosolutions.net
+35_Description=Orlando%20Server
+36_Hostname=irc.umich.edu
+36_Description=Ann%20Arbor%20Server
+37_Hostname=irc.desync.com
+37_Description=Tampa%20Server
+38_Hostname=irc.easynews.com
+38_Description=Phoenix%20Server
+39_Hostname=chat.efnet.org
+39_Description=Chicago%20Server
+40_Hostname=irc.servercentral.net
+40_Description=Chicago%20Server
+41_Hostname=ircd.he.net
+41_Description=Fremont%20HUB%20Server
+42_Hostname=irc.umn.edu
+42_Description=Minneapolis%20Server
+43_Hostname=irc.mzima.net
+43_Description=Los%20Angeles%20Server
+44_Hostname=irc.eversible.com
+44_Description=Miami%20Server
+45_Hostname=ircd.desync.com
+45_Description=Tampa%20HUB%20Server
+46_Hostname=irc.SHOUTcast.com
+46_Description=Dulles%20Server
+47_Hostname=irc.vel.net
+47_Description=Los%20Angeles%20Server
+48_Hostname=irc.ptptech.com
+48_Description=Ashburn%20IPv6%20Server
+49_Hostname=hub.efnet.us
+49_Description=USA%20HUB%20Server
+50_Hostname=irc2.choopa.net
+50_Description=New%20York%20Server
+51_Hostname=ircd.llnw.net
+51_Description=Phoenix%20HUB%20Server
+52_Hostname=irc.blackened.com
+52_Description=Phoenix%20Server
+53_Hostname=irc.choopa.net
+53_Description=New%20York%20IPv6%20Server
+54_Hostname=ircd.nac.net
+54_Description=New%20York%20HUB%20Server
+55_Hostname=irc.nac.net
+55_Description=New%20York%20Server
+56_Hostname=ircd.choopa.net
+56_Description=New%20York%20HUB%20Server
+57_Hostname=irc.blessed.net
+57_Description=Maitland%20Server
+58_Hostname=irc.prison.net
+58_Description=San%20Francisco%20Server
+59_Hostname=irc.wh.verio.net
+59_Description=Reston%20Server
+60_Hostname=irc.mindspring.com
+60_Description=Atlanta%20Server
+61_Hostname=irc.he.net
+61_Description=Fremont%20Server
+NServers=62
+[EgyptianIRC]
+0_Hostname=irc.egyptianirc.net
+0_Description=EgyptianIRC:%20Random%20server
+NServers=1
+[Eleethal]
+0_Hostname=irc.eleethal.com
+0_Description=Eleethal:%20Random%20server
+NServers=1
+[EnterTheGame]
+0_Hostname=irc.enterthegame.com
+0_Description=EntertheGame:%20Random%20server
+NServers=1
+[Escaped]
+0_Hostname=irc.escaped.net
+0_Description=Escaped:%20Random%20server
+NServers=1
+[Esprit]
+0_Hostname=irc.esprit.net
+0_Description=Esprit:%20Random%20server
+NServers=1
+[euIRC]
+0_Hostname=irc.euirc.net
+0_Description=euIRC:%20Random%20server
+NServers=1
+[EuropNet]
+0_Hostname=irc.europnet.org
+0_Description=EuropNet round robin
+1_Hostname=irc.free.fr
+1_Description=Free irc server
+2_Hostname=irc.librenet.net
+2_Description=Librenet network server
+3_Hostname=irc.global-irc.net
+3_Description=Global-irc server
+NServers=4
+Description=French%20Network
+[ExodusIRC]
+0_Hostname=irc.exodusirc.net
+0_Description=ExodusIRC:%20Random%20server
+NServers=1
+[FDFnet]
+0_Hostname=irc.fdf.net
+0_Description=FDFnet:%20Random%20server
+NServers=1
+[FEFnet]
+0_Hostname=irc.fef.net
+0_Description=FEFnet:%20Random%20server
+NServers=1
+[Forestnet]
+0_Hostname=irc.forestnet.org
+0_Description=Forestnet:%20Random%20server
+NServers=1
+[FreedomChat]
+0_Hostname=chat.freedomchat.net
+0_Description=FreedomChat:%20Random%20server
+NServers=1
+[Freenode]
+0_Hostname=irc.freenode.org
+0_Description=Main Freenode router
+1_Hostname=chat.ap.freenode.net
+1_Description=Main%20Asia-Pacific%20router
+2_Hostname=tolkien.freenode.net
+2_Description=Taoyuan,%20Taiwan
+3_Hostname=chat.au.freenode.net
+3_Description=Main%20Australia%20router
+4_Hostname=asimov.freenode.net
+4_Description=Brisbane,%20Australia
+5_Hostname=chat.eu.freenode.net
+5_Description=Main%20Europe%20router
+6_Hostname=kornbluth.freenode.net
+6_Description=Frankfurt,%20Germany
+7_Hostname=orwell.freenode.net
+7_Description=Helsinki,%20Finland
+8_Hostname=sterling.freenode.net
+8_Description=Hoofddorp,%20Netherland
+9_Hostname=calvino.freenode.net
+9_Description=Milano,%20Italy
+10_Hostname=adams.freenode.net
+10_Description=Oslo,%20Norway
+11_Hostname=gibson.freenode.net
+11_Description=Oslo,%20Norway
+12_Hostname=leguin.freenode.net
+12_Description=Umea,%20Sweden
+13_Hostname=lem.freenode.net
+13_Description=Moscow,%20Russia
+14_Hostname=pratchett.freenode.net
+14_Description=London,%20United%20Kingdom
+15_Hostname=ipv6.chat.eu.freenode.net
+15_Description=Main%20Europe%20IPv6%20router
+16_Hostname=goethe.freenode.net
+16_Description=Hoofddorp,%20Netherland
+17_Hostname=calkins.freenode.net
+17_Description=Milano,%20Italy
+18_Hostname=crichton.freenode.net
+18_Description=Oslo,%20Norway
+19_Hostname=chat.us.freenode.net
+19_Description=Main%20USA%20router
+20_Hostname=einstein.freenode.net
+20_Description=Corvallis,%20OR,%20USA
+21_Hostname=niven.freenode.net
+21_Description=Corvallis,%20OR,%20USA
+22_Hostaname=zelazny.freenode.net
+22_Description=Corvallis,%20OR,%20USA
+23_Hostname=zahn.freenode.net
+23_Description=Corvallis,%20OR,%20USA
+24_Hostname=brown.freenode.net
+24_Description=Madison,%20WI,%20USA
+25_Hostname=anthony.freenode.net
+25_Description=Irvine,%20CA,%20USA
+NServers=26
+Description=The%20FOSS%20Network
+[FunNet]
+0_Hostname=irc.funnet.org
+0_Description=FunNet:%20Random%20server
+NServers=1
+[GalaxyNet]
+0_Hostname=irc.galaxynet.org
+0_Description=Galaxynet:%20Random%20server
+1_Hostname=auckland.nz.galaxynet.org
+1_Description=Galaxynet:%20AU,%20NZ,%20Auckland
+2_Hostname=freei.us.galaxynet.org
+2_Description=Galaxynet:%20US,%20WA,%20Seattle
+3_Hostname=gymnet.us.galaxynet.org
+3_Description=Galaxynet:%20US,%20FL,%20Florida
+4_Hostname=online.be.galaxynet.org
+4_Description=Galaxynet:%20EU,%20BE,%20Online
+5_Hostname=vltmedia.se.galaxynet.org
+5_Description=Galaxynet:%20EU,%20SE,%20Vltmedia
+NServers=6
+[Gamesnet]
+0_Hostname=east.gamesnet.net
+0_Description=Gamesnet:%20Random%20east%20US%20server
+1_Hostname=west.gamesnet.net
+1_Description=Gamesnet:%20Random%20west%20US%20server
+NServers=2
+[Gameznet]
+0_Hostname=irc.gameznet.com
+0_Description=Gameznet:%20Random%20server
+NServers=1
+[GizNet]
+0_Hostname=irc.giznet.com
+0_Description=GizNet:%20Random%20server
+NServers=1
+[Globalchat]
+0_Hostname=irc.globalchat.org
+0_Description=Globalchat:%20Random%20server
+NServers=1
+[GRnet]
+0_Hostname=srv.irc.gr
+0_Description=Grnet:%20Random%20server
+1_Hostname=gr.irc.gr
+1_Description=Grnet:%20Random%20EU%20server
+2_Hostname=us.irc.gr
+2_Description=Grnet:%20Random%20US%20server
+NServers=3
+[HabberNet]
+0_Hostname=irc.habber.net
+0_Description=HabberNet:%20Random%20server
+NServers=1
+[HanIRC]
+0_Hostname=irc.hanirc.org
+0_Description=HanIRC:%20Random%20server
+NServers=1
+[Hellenicnet]
+0_Hostname=irc.mirc.gr
+0_Description=Hellenicnet:%20Random%20server
+NServers=1
+[Hybnet]
+0_Hostname=irc.hybnet.net
+0_Description=Hybnet:%20Random%20server
+NServers=1
+[ICQnet]
+0_Hostname=irc.icq.com
+0_Description=ICQnet:%20Random%20server
+NServers=1
+[Infatech]
+0_Hostname=irc.infatech.net
+0_Description=Infatech:%20Random%20server
+NServers=1
+[Infinity]
+0_Hostname=irc.infinity-irc.org
+0_Description=Infinity:%20Random%20server
+NServers=1
+[Infomatrix]
+0_Hostname=irc.infomatrix.net
+0_Description=Infomatrix:%20Random%20server
+NServers=1
+[IRC.by]
+0_Hostname=irc.by
+0_Description=Random%20server
+NServers=1
+Description=The%20Biggest%20Belarus%20Network
+Encoding=CP-1251
+[IRC-Hispano]
+0_Hostname=irc.irc-hispano.org
+0_Description=IRC-Hispano:%20Random%20server
+NServers=1
+Description=Spanish%20Network
+[IRCGnet]
+0_Hostname=irc.ircgnet.net
+0_Description=IRCGNet:%20Main%20service
+1_Hostname=irc.ircgnet.net
+1_Description=IRCGNet:%20SSL%20service
+1_Port=6697
+2_Hostname=ops.ircgnet.net
+2_Description=IRCGnet:%20Alternate%20service
+NServers=3
+[IRChat]
+0_Hostname=irc.irchat.net
+0_Description=IRChat:%20Random%20server
+NServers=1
+[IRChat-br]
+0_Hostname=irc.irchat.com.br
+0_Description=IRChat-br:%20Random%20server
+NServers=1
+[IRCItalia]
+0_Hostname=cagliari.ircitalia.net
+0_Description=IRCItalia%20network
+1_Hostname=campania.italiachat.net
+1_Description=ItaliaChat%20network
+2_Hostname=cosenza.ircitalia.net
+2_Description=IRCItalia%20network
+3_Hostname=lazio.italiachat.net
+3_Description=ItaliaChat%20network%20main%20server
+4_Hostname=pagana.italiachat.net
+4_Description=Pagana%20IPv6%20server%20(SSL%20ready)
+4_Port=7000
+5_Hostname=palermo.ircitalia.net
+5_Description=IRCItalia%20network
+6_Hostname=roma.italiachat.net
+6_Description=ItaliaChat%20network
+7_Hostname=trapani.ircitalia.net
+7_Description=IRCItalia%20network
+NServers=8
+[IRCLand]
+0_Hostname=irc.ircland.org
+0_Description=IRCLand%20random%20server
+1_Hostname=maverick.ircland.org
+1_Description=maverick
+2_Hostname=power.ircland.org
+2_Description=power
+3_Hostname=white.ircland.org
+3_Description=white
+NServers=4
+[IRCLink]
+0_Hostname=alesund.no.eu.irclink.net
+0_Description=IRCLink:%20EU,%20NO,%20Alesund
+1_Hostname=frogn.no.eu.irclink.net
+1_Description=IRCLink:%20EU,%20NO,%20Oslo
+2_Hostname=rockhill.sc.us.irclink.net
+2_Description=IRCLink:%20US,%20SC,%20Rock%20Hill
+NServers=3
+[IRCnet]
+0_Hostname=irc.ircnet.org
+0_Description=Main%20Random%20Server
+1_Hostname=eu.ircnet.org
+1_Description=Europe%20Random%20Server
+2_Hostname=ix.irc.at
+2_Description=IX%20Server
+3_Hostname=linz.irc.at
+3_Description=Linz%20Server
+4_Hostname=vienna.irc.at
+4_Description=Vienna%20Server
+5_Hostname=ircnet.realroot.be
+5_Description=RealROOT%20Server
+6_Hostname=irc.datacomm.ch
+6_Description=Datacomm%20Server
+7_Hostname=irc.osanet.cz
+7_Description=OSANET%20Server
+8_Hostname=irc.i.cz
+8_Description=ICZ%20Server
+9_Hostname=irc.felk.cvut.cz
+9_Description=Prague%20Server
+10_Hostname=irc.leo.org
+10_Description=LEO%20Server
+11_Hostname=irc.belwue.de
+11_Description=BelWue%20Server
+12_Hostname=irc.freenet.de
+12_Description=Freenet%20Server
+13_Hostname=uni-erlangen.de
+13_Description=University%20Of%20Nurnberg%20Server
+14_Hostname=uni-karlsruhe.de
+14_Description=University%20Of%20Karlsruhe%20Server
+15_Hostname=tu-ilmenau.de
+15_Description=University%20Of%20Ilmenau%20Server
+16_Hostname=fu-berlin.de
+16_Description=University%20Of%20Berlin%20Server
+17_Hostname=irc.estpak.ee
+17_Description=Elion%20Server
+18_Hostname=irc.datanet.ee
+18_Description=Linxtelecom%20Server
+19_Hostname=irc.starman.ee
+19_Description=Starman%20Server
+20_Hostname=irc.opoy.fi
+20_Description=Oulu%20Telephone%20Server
+21_Hostname=irc.cs.hut.fi
+21_Description=University%20Of%20Helsinki%20Server
+22_Hostname=irc.elisa.fi
+22_Description=Elisa%20Oyj%20Server
+23_Hostname=irc.utu.fi
+23_Description=University%20Of%20Turku%20Server
+24_Hostname=irc.song.fi
+24_Description=TDC%20Song%20Server
+25_Hostname=irc1.inet.fi
+25_Description=iNET%20Server
+26_Hostname=irc.oulu.fi
+26_Description=University%20Of%20Olutensin%20Server
+27_Hostname=irc.jyu.fi
+27_Description=University%20Of%20Jyvaskyla%20Server
+28_Hostname=hub.cc.tut.fi
+28_Description=Tampere%20Server
+29_Hostname=irc.lut.fi
+29_Description=University%20Of%20Ranta%20Server
+30_Hostname=irc.cc.tut.fi
+30_Description=Tampere%20Server
+31_Hostname=irc.oamk.fi
+31_Description=OuluNet%20Server
+32_Hostname=ircnet.club-internet.fr
+32_Description=T-Online%20France%20Server
+33_Hostname=ircnet.nerim.fr
+33_Description=Nerim%20Server
+34_Hostname=elte.irc.hu
+34_Description=University%20Of%20Budapest
+35_Hostname=atw.irc.hu
+35_Description=ATW%20Server
+36_Hostname=extra.irc.hu
+36_Description=Extra%20Server
+37_Hostname=ssl.atw.irc.hu
+37_Description=ATW%20Server
+38_Hostname=hub.irc.hu
+38_Description=Godollo%20HUB%20Server
+39_Hostname=ircnet.netvision.net.il
+39_Description=NetVision%20Server
+40_Hostname=irc.simnet.is
+40_Description=Iceland%20Telecom%20Server
+41_Hostname=irc.hi.is
+41_Description=University%20Of%20Iceland%20Server
+42_Hostname=ircd.simnet.is
+42_Description=Iceland%20Telecom%20HUB%20Server
+43_Hostname=irc1.tiscali.it
+43_Description=Tiscali%20Server
+44_Hostname=javairc.tiscali.it
+44_Description=Tiscali%20Server
+45_Hostname=javairc2.tiscali.it
+45_Description=Tiscali%20Server
+46_Hostname=irc.flashnet.it
+46_Description=Cybernet%20Italia%20Server
+47_Hostname=irc.eutelia.it
+47_Description=Eutelia%20Server
+48_Hostname=irc.excite.it
+48_Description=Excite%20Italia%20Server
+49_Hostname=irc1.tin.it
+49_Description=Telecom%20Italia%20Server
+50_Hostname=irc2.tin.it
+50_Description=Telecom%20Italia%20Server
+51_Hostname=irc3.tin.it
+51_Description=Telecom%20Italia%20Server
+52_Hostname=ircd.tin.it
+52_Description=Telecom%20Italia%20HUB%20Server
+53_Hostname=irc.huie.hokudai.ac.jp
+53_Description=University%20Of%20Hokkaido
+54_Hostname=irc.nara.wide.ad.jp
+54_Description=WIDE%20Project%20Nara%20NOC%20Server
+55_Hostname=irc.tokyo.wide.ad.jp
+55_Description=WIDE%20Project%20Tokyo%20NOC%20Server
+56_Hostname=irc.fujisawa.wide.ad.jp
+56_Description=WIDE%20Project%20Fujisawa%20NOC%20Server
+57_Hostname=irc.media.kyoto-u.ac.jp
+57_Description=Kyoto%20Server
+58_Hostname=irc-new.media.kyoto-u.ac.jp
+58_Description=Kyoto%20Server
+59_Hostname=irc.apollo.lv
+59_Description=Apollo%20Server
+60_Hostname=ircd.snt.utwente.nl
+60_Description=University%20Of%20Twente%20HUB%20Server
+61_Hostname=irc.snt.utwente.nl
+61_Description=University%20Of%20Twente%20Server
+62_Hostname=irc.sci.kun.nl
+62_Description=University%20Of%20Nijmegen%20Server
+63_Hostname=irc.uunet.nl
+63_Description=UUNET%20NL%20Server
+64_Hostname=irc.xs4all.nl
+64_Description=XS4ALL%20Server
+65_Hostname=irc.ifi.uio.no
+65_Description=University%20Of%20Oslo%20Server
+66_Hostname=irc.pvv.ntnu.no
+66_Description=IRCNO%20Server
+67_Hostname=irc.hitos.no
+67_Description=Tromsoe%20Server
+68_Hostname=irc.powertech.no
+68_Description=PowerTech%20Server
+69_Hostname=irc.uib.no
+69_Description=University%20Of%20Bergen
+70_Hostname=uk.ircnet.org
+70_Description=UK%20Random%20Server
+71_Hostname=ircnet.demon.co.uk
+71_Description=THUS%20Server
+72_Hostname=irc.aau.dotsrc.org
+72_Description=AAU%20DotSrc%20Server
+73_Hostname=irc.dotsrc.org
+73_Description=DotSrc%20Server
+74_Hostname=warszawa.irc.pl
+74_Description=ICM%20Server
+75_Hostname=poznan.irc.pl
+75_Description=UAM%20Server
+76_Hostname=krakow.irc.pl
+76_Description=AGH%20Server
+77_Hostname=lublin.irc.pl
+77_Description=UMCS%20Server
+78_Hostname=irc.swipnet.se
+78_Description=Tele2%20Sweden%20Server
+79_Hostname=irc.desync.se
+79_Description=IRCnet%20Project%20Server
+80_Hostname=irc.okit.se
+80_Description=OK%20IT%20AB%20Server
+81_Hostname=irc.ludd.luth.se
+81_Description=Lulea%20Server
+82_Hostname=irc.arnes.si
+82_Description=ARNES%20Server
+83_Hostname=irc.triera.si
+83_Description=Triera%20Server
+84_Hostname=irc.fei.tuke.sk
+84_Description=TUKE%20Server
+85_Hostname=irc.nextra.sk
+85_Description=Nextra%20Server
+86_Hostname=irc.seed.net.tw
+86_Description=Seednet%20Server
+87_Hostname=irc.freebsd.org.tw
+87_Description=FreeBSD.org%20Server
+88_Hostname=us.ircnet.org
+88_Description=USA%20Random%20Server
+89_Hostname=ircnet.choopa.net
+89_Description=Choopa,%20Inc%20Server
+90_Hostname=temphub.choopa.net
+90_Description=Choopa,%20Inc%20Server
+91_Hostname=au.ircnet.org
+91_Description=Australia%20Random%20Server
+92_Hostname=eu.irc6.net
+92_Description=Europe%20Random%20IPv6%20Server
+93_Hostname=irc.ipv6.cesnet.cz
+93_Description=CESNET2%20IPv6%20Server
+94_Hostname=ircs.ircnet.ee
+94_Description=IPv6%20Server
+95_Hostname=irc.estpak.ee
+95_Description=Elion%20Enterprises%20IPv6%20Server
+96_Hostname=irc.datanet.ee
+96_Description=Linxtelecom%20IPv6%20Server
+97_Hostname=irc.starman.ee
+97_Description=Starman%20IPv6%20Server
+98_Hostname=irc6.ngnet.it
+98_Description=Telecom%20Italia%20IPv6%20Server
+99_Hostname=irc.eutelia.it
+99_Description=Eutelia%20IPv6%20Server
+100_Hostname=irc.powertech.no
+100_Description=PowerTech%20IPv6%20Server
+NServers=101
+[Irctoo]
+0_Hostname=irc.irctoo.net
+0_Description=Irctoo:%20Random%20server
+NServers=1
+[IRCworld]
+0_Hostname=irc.ircworld.org
+0_Description=IRCworld:%20Random%20server
+NServers=1
+[IsraelNet]
+0_Hostname=irc.israel.net
+0_Description=Israelnet:%20Random%20server
+NServers=1
+[K0wNet]
+0_Hostname=irc.k0w.net
+0_Description=K0wNet:%20Random%20server
+NServers=1
+[KewlOrg]
+0_Hostname=irc.kewl.org
+0_Description=Kewl.org:%20Random%20server
+1_Hostname=london.uk.eu.kewl.org
+1_Description=Kewl.org:%20EU,%20UK,%20London
+2_Hostname=nanterre.fr.eu.kewl.org
+2_Description=Kewl.org:%20EU,%20FR,%20Nanterre
+NServers=3
+[Kreynet]
+0_Hostname=irc.krey.net
+0_Description=KreyNet:%20Random%20server
+NServers=1
+[Krushnet]
+0_Hostname=irc.krushnet.org
+0_Description=Krushnet:%20Random%20server
+NServers=1
+[LagNet]
+0_Hostname=irc.lagnet.org.za
+0_Description=LagNet:%20Random%20server
+1_Hostname=mystery.lagnet.org.za
+1_Description=LagNet:%20AF,%20ZA,%20Johannesburg
+2_Hostname=reaper.lagnet.org.za
+2_Description=LagNet:%20AF,%20ZA,%20Cape%20Town
+NServers=3
+[Librenet]
+0_Hostname=irc.librenet.net
+0_Description=Librenet:%20Random%20server
+NServers=1
+[Lunatics]
+0_Hostname=irc.lunatics.net
+0_Description=Lunatics:%20Random%20server
+NServers=1
+[KidsWorld]
+0_Hostname=irc.kidsworld.org
+0_Description=Kidsworld:%20Random%20server
+NServers=1
+[Knightnet]
+0_Hostname=goldengate.ca.us.knightnet.net
+0_Description=Knightnet:%20US,%20CA,%20Goldengate
+1_Hostname=orc.dbn.za.knightnet.net
+1_Description=Knightnet:%20AF,%20ZA,%20Durban
+NServers=2
+[MagicStar]
+0_Hostname=irc.magicstar.net
+0_Description=MagicStar:%20Random%20server
+NServers=1
+[MediaDriven]
+0_Hostname=irc.mediadriven.com
+0_Description=MediaDriven:%20Random%20server
+NServers=1
+[Messique]
+0_Hostname=irc.messique.org
+0_Description=Messique:%20Random%20server
+NServers=1
+[Mysteria]
+0_Hostname=irc.mysteria.net
+0_Description=Mysteria:%20Random%20server
+NServers=1
+[Mystical]
+0_Hostname=irc.mystical.net
+0_Description=Mystical:%20Random%20server
+NServers=1
+[NdrsNet]
+0_Hostname=irc.ndrsnet.com
+0_Description=NdrsNet:%20Random%20server
+NServers=1
+[Net-France]
+0_Hostname=irc.net-france.com
+0_Description=Net-France:%20Random%20server
+NServers=1
+[Nevernet]
+0_Hostname=irc.nevernet.net
+0_Description=Nevernet:%20Random%20server
+NServers=1
+[NewIRC]
+0_Hostname=irc.newirc.org
+0_Description=NewIRC:%20Random%20server
+NServers=1
+[Newnet]
+0_Hostname=irc.chelmsford.com
+0_Description=Newnet:%20US,%20MA,%20Chelmsford
+1_Hostname=irc.fragglerock.org
+1_Description=Newnet:%20US,%20CA,%20Flagglerock
+2_Hostname=irc.newnet.net
+2_Description=Newnet:%20Random%20server
+3_Hostname=irc.oasis-net.net
+3_Description=Newnet:%20EU,%20UK,%20Oasis
+4_Hostname=irc.rma.edu
+4_Description=Newnet:%20US,%20VA,%20Randolph
+5_Hostname=irc.trusted-network.de
+5_Description=Newnet:%20EU,%20DE,%20Trusted
+6_Hostname=irc.uplink.net.nz
+6_Description=Newnet:%20NZ,%20Auckland
+NServers=7
+[Nexusirc]
+0_Hostname=irc.nexusirc.org
+0_Description=Nexusirc:%20Random%20server
+NServers=1
+[NightStar]
+0_Hostname=irc.nightstar.net
+0_Description=Nightstar:%20Random%20server
+NServers=1
+[NitroNet]
+0_Hostname=irc.nitro.net
+0_Description=NitroNet:%20Random%20server
+NServers=1
+[Novernet]
+0_Hostname=irc.novernet.com
+0_Description=Novernet:%20Random%20server
+1_Hostname=chat.novernet.com
+1_Description=Novernet:%20US,%20MN,%20Minneapolis
+2_Hostname=irc.c-plusnet.com
+2_Description=Novernet:%20US,%20GA,%20Augusta
+NServers=3
+[Oddnet]
+0_Hostname=irc.oddnet.org
+0_Description=Oddnet:%20Random%20server
+NServers=1
+[Othernet]
+0_Hostname=irc.othernet.org
+0_Description=Othernet:%20Random%20server
+1_Hostname=miami.fl.us.othernet.org
+1_Description=Othernet:%20US,%20FL,%20Miami
+2_Hostname=stlouis.mo.us.othernet.org
+2_Description=Othernet:%20US,%20MO,%20StLouis
+NServers=3
+[OtherSide]
+0_Hostname=irc.othersideirc.net
+0_Description=Otherside:%20Random%20server
+NServers=1
+[Outsiderz]
+0_Hostname=irc.outsiderz.com
+0_Description=Outsiderz:%20Random%20server
+NServers=1
+[OzOrg]
+0_Hostname=aussie.sydney.oz.org
+0_Description=OzOrg:%20AU,%20Sydney
+1_Hostname=chariot.adelaide.oz.org
+1_Description=OzOrg:%20AU,%20Adelaide
+2_Hostname=iinet.perth.oz.org
+2_Description=OzOrg:%20AU,%20Perth
+NServers=3
+Description=Australian%20Network
+[Philchat]
+0_Hostname=irc.philchat.net
+0_Description=Philchat:%20Random%20server
+NServers=1
+[Pinoycentral]
+0_Hostname=chat.abs-cbn.com
+0_Description=Pinoycentral:%20Random%20server
+NServers=1
+[Planetarion]
+0_Hostname=irc.planetarion.com
+0_Description=Planetarion:%20Random%20server
+NServers=1
+[PortalX]
+0_Hostname=irc.portalx.org
+0_Description=PortalX:%20Random%20server
+1_Hostname=aphrodite.portalx.org
+1_Description=PortalX:%20Aphrodite
+2_Hostname=apollo.portalx.org
+2_Description=PortalX:%20Apollo
+3_Hostname=ares.portalx.org
+3_Description=PortalX:%20Ares
+4_Hostname=athena.portalx.org
+4_Description=PortalX:%20Athena
+5_Hostname=demeter.portalx.org
+5_Description=PortalX:%20Demeter
+6_Hostname=eos.portalx.org
+6_Description=PortalX:%20Eos
+7_Hostname=thor.portalx.org
+7_Description=PortalX:%20Thor
+8_Hostname=zeus.portalx.org
+8_Description=PortalX:%20Zeus
+NServers=9
+[Psionics]
+0_Hostname=chat.psionics.net
+0_Description=Psionics:%20CA,%20PQ,%20Montreal
+NServers=1
+[PTlink]
+0_Hostname=irc.ptlink.net
+0_Description=PTlink:%20Random%20server
+NServers=1
+[PTnet]
+0_Hostname=telepac2.ptnet.org
+0_Description=PTnet:%20EU,%20PT,%20Lisboa
+1_Hostname=ualg.ptnet.org
+1_Description=PTnet:%20EU,%20PT,%20Faro
+NServers=2
+[QChat]
+0_Hostname=irc.qchat.net
+0_Description=QChat:%20Random%20server
+NServers=1
+[QuakeNet]
+0_Hostname=irc.quakenet.org
+0_Description=Main%20Random%20Server
+1_Hostname=irc.quakenet.eu.org
+1_Description=Europe%20Random%20Server
+2_Hostname=jubiigames.dk.quakenet.org
+2_Description=Denmark%20Server
+3_Hostname=mediatraffic.fi.quakenet.org
+3_Description=Finland%20Server
+4_Hostname=euroserv.fr.quakenet.org
+4_Description=France%20Server
+5_Hostname=splatterworld.de.quakenet.org
+5_Description=Germany%20Server
+6_Hostname=ign.ie.quakenet.org
+6_Description=Ireland%20Server
+7_Hostname=ngi.it.quakenet.org
+7_Description=Italy%20Server
+8_Hostname=xs4all.nl.quakenet.org
+8_Description=Netherlands%20Server
+9_Hostname=online.no.quakenet.org
+9_Description=Norway%20Server
+10_Hostname=underworld.no.quakenet.org
+10_Description=Norway%20Server
+11_Hostname=port80.se.quakenet.org
+11_Description=Sweden%20Server
+12_Hostname=stockholm.se.quakenet.org
+12_Description=Sweden%20Server
+13_Hostname=wineasy.se.quakenet.org
+13_Description=Sweden%20Server
+14_Hostname=b0rk.uk.quakenet.org
+14_Description=UK%20Server
+15_Hostname=blueyonder.uk.quakenet.org
+15_Description=UK%20Server
+16_Hostname=demon.uk.quakenet.org
+16_Description=UK%20Server
+17_Hostname=freddyshouse.uk.quakenet.org
+17_Description=UK%20Server
+18_Hostname=multiplay.uk.quakenet.org
+18_Description=UK%20Server
+19_Hostname=gameservers.il.us.quakenet.org
+19_Description=USA%20Server
+20_Hostname=gameservers.nj.us.quakenet.org
+20_Description=USA%20Server
+21_Hostname=netfire.tx.us.quakenet.org
+21_Description=USA%20Server
+22_Hostname=netfire.va.us.quakenet.org
+22_Description=USA%20Server
+23_Hostname=servercentral.il.us.quakenet.org
+23_Description=USA%20Server
+NServers=24
+[Raptornet]
+0_Hostname=irc.raptornet.org
+0_Description=Raptornet:%20Random%20server
+NServers=1
+[Realirc]
+0_Hostname=irc.realirc.org
+0_Description=Realirc:%20Random%20server
+NServers=1
+[Rebelchat]
+0_Hostname=irc.rebelchat.org
+0_Description=Rebelchat:%20Random%20server
+NServers=1
+[RedeSul]
+0_Hostname=irc.braznet.com.br
+0_Description=RedeSul:%20BR,%20SC,%20Blumenau
+1_Description=RedeSul:%20BR,%20PR,%20Maringa
+1_Hostname=irc.wnet.com.br
+NServers=2
+[Red-Latina]
+0_Hostname=irc.red-latina.org
+0_Description=Red-Latina:%20Random%20server
+1_Hostname=irc.dalsom.net
+1_Description=Red-Latina:%20NA,%20MX,%20SanJose
+NServers=2
+[RedLatona]
+0_Hostname=irc.redlatona.net
+0_Description=RedLatona:%20Random%20server
+NServers=1
+[Relicnet]
+0_Hostname=irc.relic.net
+0_Description=Relicnet:%20Random%20server
+NServers=1
+[Rezosup]
+0_Hostname=irc.rezosup.org
+0_Description=Rezosup:%20Random%20server
+NServers=1
+[Risanet]
+0_Hostname=irc.risanet.com
+0_Description=Risanet:%20Random%20server
+NServers=1
+[Rusnet]
+0_Hostname=irc.rinet.ru
+0_Description=Rusnet:%20EU,%20RU,%20Moscow
+1_Hostname=irc.tomsk.net
+1_Description=Rusnet:%20EU,%20RU,%20Tomsk
+2_Hostname=irc.primorye.ru
+2_Description=Rusnet:%20EU,%20RU,%20Vladivostok
+NServers=3
+Description=Russian%20Network
+Encoding=CP-1251
+[Sandnet]
+0_Hostname=irc.sandnet.net
+0_Description=Sandnet:%20Random%20server
+NServers=1
+[Scunc]
+0_Hostname=irc.scunc.net
+0_Description=Scunc:%20Random%20server
+NServers=1
+[SexNet]
+0_Hostname=irc.sexnet.org
+0_Description=SexNet:%20Random%20server
+NServers=1
+[ShadowFire]
+0_Hostname=irc.shadowfire.org
+0_Description=ShadowFire:%20Random%20server
+NServers=1
+[ShadowWorld]
+0_Hostname=irc.shadowworld.net
+0_Description=ShadowWorld:%20Random%20server
+NServers=1
+[Skyyenet]
+0_Hostname=arlington.va.us.skyyenet.org
+0_Description=Skyyenet:%20US,%20VA,%20Arlington
+NServers=1
+[Slashnet]
+0_Hostname=irc.slashnet.org
+0_Description=Slashnet:%20Random%20server
+NServers=1
+[SolarNet]
+0_Hostname=irc.solarnet.ru
+0_Description=Main%20network%20server
+NServers=1
+Description=Russian%20Network
+Encoding=CP-1251
+[SolidIRC]
+0_Hostname=irc.solidirc.com
+0_Description=SolidIRC:%20Random%20server
+NServers=1
+[Sorcery]
+0_Hostname=irc.sorcery.net
+0_Description=Sorcerynet:%20Random%20server
+1_Hostname=kechara.sorcery.net
+1_Description=Sorcerynet:%20US,%20CA,%20Palo%20Alto
+2_Hostname=nexus.sorcery.net
+2_Description=Sorcerynet:%20EU,%20SE,%20Karlskrona
+NServers=3
+[Spamnet]
+0_Hostname=irc.spamnet.org
+0_Description=Spamnet:%20Random%20server
+NServers=1
+[StarChat]
+0_Hostname=irc.starchat.net
+0_Description=StarChat:%20Random%20server
+1_Hostname=boomer.qld.au.starchat.net
+1_Description=StarChat:%20AU,%20QLD,%20SouthernCross
+2_Hostname=reality.no.eu.starchat.net
+2_Description=StarChat:%20EU,%20NO,%20Asker
+3_Hostname=sand.ca.us.starchat.net
+3_Description=StarChat:%20US,%20CA,%20San%20Jose
+NServers=4
+[StarLink]
+0_Hostname=irc.starlink.org
+0_Description=StarLink%20Org:%20Random%20server
+NServers=1
+[StarLink-irc]
+0_Hostname=irc.starlink-irc.org
+0_Description=StarLink-irc:%20Random%20server
+NServers=1
+[StarWars-IRC]
+0_Hostname=irc.starwars-irc.net
+0_Description=StarWars-IRC:%20Random%20server
+NServers=1
+[Stormdancing]
+0_Hostname=irc.stormdancing.net
+0_Description=Stormdancing:%20Random%20server
+NServers=1
+[Sub-city]
+0_Hostname=irc.sub-city.net
+0_Description=Sub-city:%20Random%20server
+NServers=1
+[Superchat]
+0_Hostname=irc.superchat.org
+0_Description=Superchat:%20Random%20server
+NServers=1
+[SyrolNet]
+0_Hostname=irc.syrolnet.org
+0_Description=SyrolNet%20round%20robin
+1_Hostname=ipv6.syrolnet.org
+1_Description=IPv6%20round%20robin
+2_Hostname=moon.syrolnet.org
+2_Description=Moon%20irc%20server
+3_Hostname=phobos.syrolnet.org
+3_Description=IPv6/IPv4%20server
+NServers=4
+Description=Italian%20Network
+[Sysopnet]
+0_Hostname=irc.sysopnet.org
+0_Description=Sysopnet:%20Random%20server
+NServers=1
+[Techdreams]
+0_Hostname=irc.techdreams.net
+0_Description=Techdreams:%20Random%20server
+NServers=1
+[Telstra]
+0_Hostname=irc.telstra.com
+0_Description=Telstra:%20Random%20server
+NServers=1
+[Terra]
+0_Hostname=irc.terra.cl
+0_Description=Terra%20Chile
+1_Hostname=irc.terra.com
+1_Description=Terra%20USA
+2_Hostname=irc.terra.es
+2_Description=Terra%20Spain
+NServers=3
+[TR-net]
+0_Hostname=irc.dominet.com.tr
+0_Description=TR-net:%20EU,%20TR,%20Ankara
+1_Hostname=irc.teklan.com.tr
+1_Description=TR-net:%20EU,%20Tr,%20Istanbul
+NServers=2
+[Tri-net]
+0_Hostname=irc.tri-net.org
+0_Description=Tri-net:%20Random%20server
+NServers=1
+[UltraIRC]
+0_Hostname=irc.ultrairc.net
+0_Description=UltraIRC:%20Random%20server
+NServers=1
+[UnderNet]
+0_Hostname=irc.undernet.org
+0_Description=Main%20Random%20Server
+1_Hostname=eu.undernet.org
+1_Description=Europe%20Random%20Server
+2_Hostname=bucharest.ro.eu.undernet.org
+2_Description=Romania%20Server
+3_Hostname=Carouge.ch.eu.undernet.org
+3_Description=Switzerland%20Server
+4_Hostname=diemen.nl.eu.undernet.org
+4_Description=Netherlands%20Server
+5_Hostname=ede.nl.eu.undernet.org
+5_Description=Netherlands%20Server
+6_Hostname=elsene.be.eu.undernet.org
+6_Description=Belgium%20Server
+7_Hostname=graz.at.eu.undernet.org
+7_Description=Austria%20Server
+8_Hostname=helsinki.fi.eu.undernet.org
+8_Description=Finland%20Server
+9_Hostname=lelystad.nl.eu.undernet.org
+9_Description=Netherlands%20Server
+10_Hostname=london.uk.eu.undernet.org
+10_Description=UK%20Server
+11_Hostname=london2.uk.eu.undernet.org
+11_Description=UK%20Server
+12_Hostname=oslo1.no.eu.undernet.org
+12_Description=Norway%20Server
+13_Hostname=oslo2.no.eu.undernet.org
+13_Description=Norway%20Server
+14_Hostname=zagreb.hr.eu.undernet.org
+14_Description=Croatia%20Server
+15_Hostname=us.undernet.org
+15_Description=USA%20Random%20Server
+16_Hostname=losangeles.ca.us.undernet.org
+16_Description=USA%20Server
+17_Hostname=mesa.az.us.undernet.org
+17_Description=USA%20Server
+18_Hostname=newyork.ny.us.undernet.org
+18_Description=USA%20Server
+NServers=19
+[UnderZ]
+0_Hostname=irc.underz.org
+0_Description=UnderZ:%20Random%20server
+NServers=1
+[UnionLatina]
+0_Hostname=irc.unionlatina.org
+0_Description=UnionLatina:%20Random%20server
+NServers=1
+[Univers]
+0_Hostname=irc.univers.org
+0_Description=Univers:%20Random%20server
+NServers=1
+[Vidgamechat]
+0_Hostname=irc.vidgamechat.com
+0_Description=Vidgamechat:%20Random%20server
+NServers=1
+[Vitamina]
+0_Hostname=irc-rr.vitamina.ca
+0_Description=Vitamina:%20Random%20server
+NServers=1
+[Orange/Voila]
+0_Hostname=chat14.x-echo.com
+0_Description=Chat14 server
+NServers=1
+Description=French%20Orange/Voila%20network%20(old%20name:%20Wanadoo/Voila)
+[Warpednet]
+0_Hostname=irc.warped.net
+0_Description=Warpednet:%20Random%20server
+NServers=1
+[Webnet]
+0_Hostname=irc.webchat.org
+0_Description=Webnet:%20Random%20server
+1_Hostname=greennet.ma.us.webchat.org
+1_Description=Webnet:%20US,%20MA,%20Boston
+2_Hostname=webmaster.ca.us.webchat.org
+2_Description=Webnet:%20US,%20CA,%20Santa%20Clara
+3_Hostname=wiregrass.al.us.webchat.org
+3_Description=Webnet:%20US,%20AL,%20Dothan
+NServers=4
+[WeNet]
+0_Hostname=irc.wenet.ru
+0_Description=Primary%20WeNet%20server
+NServers=1
+Encoding=CP-1251
+Description=Russian%20Network
+[WorldIRC]
+0_Hostname=irc.worldirc.org
+0_Description=WorldIRC:%20Random%20server
+NServers=1
+[Xevion]
+0_Hostname=irc.xevion.net
+0_Description=Xevion:%20Random%20server
+NServers=1
+[XNet]
+0_Hostname=irc.xnet.org
+0_Description=XNet:%20Random%20server
+NServers=1
+[XWorld]
+0_Hostname=irc.xworld.org
+0_Description=XWorld:%20Random%20server
+NServers=1
+[ZAnetNet]
+0_Hostname=lia.zanet.net
+0_Description=ZAnet%20Net:%20AF,%20ZA,%20CI%20(lia)
+1_Hostname=timewiz.zanet.net
+1_Description=ZAnet%20Net:%20AF,%20ZA,%20MWeb%20(timewiz)
+NServers=2
+[ZAnetOrg]
+0_Hostname=ethereal.zanet.org.za
+0_Description=ZAnet%20Org:%20AF,%20ZA,%20Midrand%20(ethereal)
+1_Hostname=gaspode.zanet.org.za
+1_Description=ZAnet%20Org:%20AF,%20ZA,%20Cape%20Town%20(gaspode)
+2_Hostname=is.zanet.org.za
+2_Description=ZAnet%20Org:%20AF,%20ZA,%20Johannesburg%20(is)
+NServers=3
+[ZiRC]
+0_Hostname=irc.zirc.org
+0_Description=ZiRC:%20Random%20server
+NServers=1
+[ZUHnet]
+0_Hostname=irc.zuh.net
+0_Description=ZUHnet:%20Random%20server
+NServers=1
+[Zurna]
+0_Hostname=irc.zurna.net
+0_Description=Zurna:%20Random%20server
+NServers=1
+[PenguinFriends]
+0_Hostname=irc.penguinfriends.org
+0_Description=PenguinFriends:%20Random%20server
+1_Hostname=pf-gaming.penguinfriends.org
+1_Description=pf-gaming.penguinfriends.org
+2_Hostname=onlyfreaks.penguinfriends.org
+2_Description=onlyfreaks.penguinfriends.org
+3_Hostname=irc.penguinfriends.org
+3_Description=PenguinFriends:%20Random%20server SSL
+3_SSL=true
+3_Port=6670
+NServers=4
diff --git a/data/config/texticons.kvc b/data/config/texticons.kvc
new file mode 100644
index 00000000..09d45c82
--- /dev/null
+++ b/data/config/texticons.kvc
@@ -0,0 +1,39 @@
+[Manager]
+# Default configuration of texticons.
+# If you add any entry then please increase this number both here
+# and in kvi_texticonmanager.cpp (they MUST match)
+ConfigUpdate=3
+[TextIcons]
+smile=94
+sad=95
+heart=214
+irc=208
+bomb=82
+spy=109
+home=107
+heartbreak=215
+rose=216
+biggrin=217
+smileglasses=218
+surprise=219
+idea=148
+penguin=111
+linux=111
+flower=124
+love=214
+lol=217
+exclamation=220
+!=220
+dots=221
+...=221
+?=49
+question=49
+kiss=222
+finger=268
+prrr=265
+time=93
+shy=271
+oooh=223
+cafe=273
+hum=282
+slurp=283
diff --git a/data/defscript/Makefile.am b/data/defscript/Makefile.am
new file mode 100644
index 00000000..768c9b8f
--- /dev/null
+++ b/data/defscript/Makefile.am
@@ -0,0 +1,11 @@
+tmpdir = $(defscriptdir)
+
+tmp_DATA = default.kvs \
+ aliases.kvs \
+ events.kvs \
+ popups.kvs \
+ toolbars.kvs \
+ installer.kvs \
+ theme-install.kvs
+
+EXTRA_DIST = $(tmp_DATA)
diff --git a/data/defscript/aliases.kvs b/data/defscript/aliases.kvs
new file mode 100644
index 00000000..5d8d7299
--- /dev/null
+++ b/data/defscript/aliases.kvs
@@ -0,0 +1,706 @@
+# Default aliases file
+
+#
+# TODO:
+# ignore, notify and unignore should go in the core
+#
+# If possible, get rid of $str.* from the default popups
+# avoiding to load the module at every channel popup open action...
+# (Find a core function that retrieves the number of nicknames passed ?)
+# Another solution would be to increase the str.module core lock-time ?
+#
+
+#
+# Backward compatibility stuff
+#
+alias(avatar)
+{
+ # avatar target file
+ if(!$0)
+ {
+ echo "Missing target, no action taken"
+ return
+ }
+ if($1)
+ {
+ avatar.set $1
+ }
+ avatar.notify $0
+}
+
+alias(clear)
+{
+ window.clearOutput
+}
+
+alias(connect)
+{
+ objects.connect $0 $1 $2 $3
+}
+
+alias(disconnect)
+{
+ objects.disconnect $0 $1 $2 $3
+}
+
+alias(killclass)
+{
+ objects.killclass $0
+}
+
+alias(clearobjects)
+{
+ objects.clear $0
+}
+
+alias(nickserv)
+{
+ # Silent
+ raw -q NickServ $0-
+}
+
+alias(chanserv)
+{
+ # Silent
+ raw -q ChanServ $0-
+}
+
+alias(memoserv)
+{
+ # Silent
+ raw -q MemoServ $0-
+}
+
+alias(ns)
+{
+ # Silent
+ raw -q nickserv $0-
+}
+
+alias(cs)
+{
+ # Silent
+ raw -q chanserv $0-
+}
+
+alias(ms)
+{
+ # Silent
+ raw -q memoserv $0-
+}
+
+alias(gnotice)
+{
+ # Global notice
+
+ #Check null notice
+ if(!$0){
+ echo $tr("Usage"): /gnotice [-waohvq] <$tr("message")>
+ echo $tr("-m: send a message instead of a notice")
+ echo $tr("-w: send notice to all channel owners")
+ echo $tr("-a: send notice to all channel admins")
+ echo $tr("-o: send notice to all channel ops")
+ echo $tr("-h: send notice to all channel halfops")
+ echo $tr("-v: send notice to all channel voices")
+ echo $tr("-q: quiet mode")
+ halt
+ }
+
+ # Detect message type
+ if($sw(m)) %cmd="msg"
+ else %cmd="notice"
+
+ # Check for quiet message
+ if($sw(q)) %cmd=$str.append(%cmd," -q")
+
+ # Check null switches
+ if((!$sw(w))&&(!$sw(a))&&(!$sw(o))&&(!$sw(h))&&(!$sw(v))){
+ eval %cmd $chan.name($active) $0-
+ halt
+ }
+
+ # Check switches passed
+ if($sw(w)) eval %cmd \~$chan.name($active) $0-
+ if($sw(a)) eval %cmd \!$chan.name($active) $0-
+ if($sw(o)) eval %cmd \@$chan.name($active) $0-
+ if($sw(h)) eval %cmd \%$chan.name($active) $0-
+ if($sw(v)) eval %cmd \+$chan.name($active) $0-
+}
+
+alias(wallop)
+{
+ if(!$0){
+ echo $tr("Usage"): /wallop <$tr("message")>
+ halt
+ }
+
+ # Due to server flood, timing may be very high
+ echo -w=$active $tr("Sending wallop to") $chan.name($active)
+ timer(wallop,5000,$chan.users(,,o),$0-){
+ if(%:localOps == ""){ %:localOps = $chan.users(,,o); %:curIndex = 0; }
+ if(%:curIndex == %:localOps[]#){ killtimer wallop; return; }
+
+ for(%i=0;%i<1;%i++){
+ if(%:localOps[%:curIndex] != $my.nick){
+ if(%:curIndex == %:localOps[]#){ killtimer wallop; return; }
+ msg -q %:localOps[%:curIndex] $1-
+ %:curIndex++
+ }
+ }
+ }
+}
+
+alias(kill){
+ raw -q kill $0 :$1-
+}
+
+alias(ms)
+{
+ # Silent
+ quote ms $0-
+}
+
+# j: This is a really common one
+alias(j)
+{
+ #first we do a test if a chan is given as parameter
+ if(!$0)
+ {
+ echo $tr("Usage:")
+ echo " /j <chan>"
+ } else {
+ join $0-
+ }
+}
+
+# s: This too
+alias(s)
+{
+ if(!$0)
+ {
+ echo $tr("Usage:")
+ echo " /s <server>"
+ } else {
+ server $0-
+ }
+}
+
+# q: Ok, I am lazy :P
+alias(q)
+{
+ if(!$0)
+ {
+ echo $tr("Usage:")
+ echo " /q <nick>"
+ } else {
+ query $0-
+ }
+}
+
+
+# names: maybe this should be implemented on the core?
+alias(names)
+{
+ if(!$0)
+ {
+ if($window.type($active)!="channel")
+ {
+ echo $tr("Usage:") "/names <channel>"
+ } else {
+ raw names $active
+ }
+ } else {
+ raw names $0-
+ }
+}
+
+# kickban
+alias(kb)
+{
+ if(!$0)
+ {
+ echo $tr("Usage:")
+ echo " /kb <nick_list> [" $tr("reason") "]"
+ halt;
+ }
+
+ if(!$channel)
+ {
+ echo "[KB]: " $tr("This is not a channel window")
+ halt;
+ }
+
+ foreach(%nick,$str.split(",",$0))
+ {
+ if(%nick)
+ {
+ %mask = $mask(%nick,$option(uintDefaultBanType));
+
+ if(!%mask)%mask = %nick; # plain ban
+
+ %reason = $1-
+ #if(!%reason)%reason = "You're not welcome here!"
+
+ # This is tricky : we send everything
+ # as a single raw message just because
+ # we do not want delays between kick and ban
+ # if anti-server-flood is enabled
+
+ %raw = "kick $target %nick :%reason"
+
+ # kick %nick %reason
+
+ if($chan.isOp(%nick))%raw2 = "mode $target -o+b %nick %mask"
+ else %raw2 = "mode $target +b %mask"
+
+ raw -q %raw2$cr$lf%raw
+ }
+ }
+}
+
+# chanowner
+alias(chanowner)
+{
+ if(!$0)
+ {
+ echo $tr("Usage:")
+ echo " /chanowner <nick_list>"
+ halt;
+ }
+ if(!$channel)
+ {
+ echo "[CHANOWNER]: " $tr("This is not a channel window")
+ halt;
+ }
+
+ foreach(%nick,$str.split(",",$0))
+ {
+ if(%nick)
+ {
+ mode $chan.name() +q %nick
+ }
+ }
+}
+
+# chanadmin
+alias(chanadmin)
+{
+ if(!$0)
+ {
+ echo $tr("Usage:")
+ echo " /chanadmin <nick_list>"
+ halt;
+ }
+ if(!$channel)
+ {
+ echo "[CHANADMIN]: " $tr("This is not a channel window")
+ halt;
+ }
+
+ foreach(%nick,$str.split(",",$0))
+ {
+ if(%nick)
+ {
+ mode $chan.name() +a %nick
+ }
+ }
+}
+
+# dechanowner
+alias(dechanowner)
+{
+ if(!$0)
+ {
+ echo $tr("Usage:")
+ echo " /dechanowner <nick_list>"
+ halt;
+ }
+ if(!$channel)
+ {
+ echo "[DECHANOWNER]: " $tr("This is not a channel window")
+ halt;
+ }
+
+ foreach(%nick,$str.split(",",$0))
+ {
+ if(%nick)
+ {
+ mode $chan.name() -q %nick
+ }
+ }
+}
+
+# dechanadmin
+alias(dechanadmin)
+{
+ if(!$0)
+ {
+ echo $tr("Usage:")
+ echo " /dechanadmin <nick_list>"
+ halt;
+ }
+ if(!$channel)
+ {
+ echo "[DECHANADMIN]: " $tr("This is not a channel window")
+ halt;
+ }
+
+ foreach(%nick,$str.split(",",$0))
+ {
+ if(%nick)
+ {
+ mode $chan.name() -a %nick
+ }
+ }
+}
+
+# halfop
+alias(halfop)
+{
+ if(!$0)
+ {
+ echo $tr("Usage:")
+ echo " /halfop <nick_list>"
+ halt;
+ }
+ if(!$channel)
+ {
+ echo "[HALFOP]: " $tr("This is not a channel window")
+ halt;
+ }
+
+ foreach(%nick,$str.split(",",$0))
+ {
+ if(%nick)
+ {
+ mode $chan.name() +h %nick
+ }
+ }
+}
+
+# dehalfop
+alias(dehalfop)
+{
+ if(!$0)
+ {
+ echo $tr("Usage:")
+ echo " /dehalfop <nick_list>"
+ halt;
+ }
+ if(!$channel)
+ {
+ echo "[DEHALFOP]: " $tr("This is not a channel window")
+ halt;
+ }
+
+ foreach(%nick,$str.split(",",$0))
+ {
+ if(%nick)
+ {
+ mode $chan.name() -h %nick
+ }
+ }
+}
+
+# userop
+alias(userop)
+{
+ if(!$0)
+ {
+ echo $tr("Usage:")
+ echo " /userop <nick_list>"
+ halt;
+ }
+ if(!$channel)
+ {
+ echo "[USEROP]: " $tr("This is not a channel window")
+ halt;
+ }
+
+ foreach(%nick,$str.split(",",$0))
+ {
+ if(%nick)
+ {
+ mode $chan.name() +u %nick
+ }
+ }
+}
+
+# deuserop
+alias(deuserop)
+{
+ if(!$0)
+ {
+ echo $tr("Usage:")
+ echo " /deuserop <nick_list>"
+ halt;
+ }
+ if(!$channel)
+ {
+ echo "[DEUSEROP]: " $tr("This is not a channel window")
+ halt;
+ }
+
+ foreach(%nick,$str.split(",",$0))
+ {
+ if(%nick)
+ {
+ mode $chan.name() -u %nick
+ }
+ }
+}
+
+# ame and amsg
+alias(ame)
+{
+ foreach(%i,$window.list(channel))if(%i!="") me -r=%i $0-
+}
+
+alias(amsg)
+{
+ foreach(%i,$window.list(channel))msg $target(%i) $0-
+}
+
+alias(amsgall)
+{
+ foreach(%i,$window.list(channel),$window.list(query))msg $target(%i) $0-
+}
+
+alias(ameall)
+{
+ foreach(%i,$window.list(channel),$window.list(query)){
+ if(%i!="") me -r=%i $0-
+ }
+}
+
+alias(awayall)
+{
+ foreach(%w,$window.list(console,all))away -r=%w $0-;
+}
+
+# notify: this is a bit more complex
+# We want to add an user to the notify list with a single command
+# The notify lists are handled thru the registered users database
+alias(notify)
+{
+ # This one adds a registered users database entry
+ # For the specified nick and uses the specified mask
+ # If no mask is specified , a default one is constructed
+ # Then the "notify" property is set for the user
+
+ if(!$0)
+ {
+ echo $tr("Usage:")
+ echo " /notify <nick> [mask]"
+ halt
+ }
+
+ # Get the mask
+
+ %mask = $1
+
+ # no mask specified ? build it
+
+ if(!%mask)%mask = $0!*@*
+
+ # Now add the user (but do not replace old entries)
+
+ reguser.add -f -q $0 %mask
+
+ # Merge the notify property part with the old one (if any)
+
+ %oldNicks = $reguser.property($0,notify)
+
+ # It would be a good idea to check if the nikckname is already in the %oldNicks list
+ # but this is left as exercise for the reader.
+
+ %oldNicks << $0
+
+ # And finally set the property (use -n so the notify lists will be restarted)
+
+ reguser.setproperty -n $0 notify $0
+
+ # done...the notify list should be restarted now
+}
+
+alias(ignore)
+{
+ # This one adds a registered users database entry
+ # For the specified nick and uses the specified mask
+ # If no mask is specified , a default one is constructed
+ # Then the "ignore" property is set for the user to 1
+
+ if(!$0)
+ {
+ echo $tr("Usage:")
+ echo " /ignore [-r] <nick>"
+ halt
+ }
+
+ # Now add the user (but do not replace old entries)
+
+ reguser.add $0 $mask($0,15);
+
+ # And finally set the property (use -n so the notify lists will be restarted)
+ # Check if ignore or unignore the user
+
+ if(!$sw(r,remove))
+ {
+ reguser.setIgnoreEnabled $0 1
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0
+ } else reguser.setIgnoreEnabled $0 0
+}
+
+# Dcc...people commonly use "dcc send" instead of "dcc.send"
+alias(dcc)
+{
+ switch($0)
+ {
+ case(send):
+ {
+ dcc.send $1-
+ break
+ }
+ case(chat):
+ {
+ dcc.chat $1-
+ break
+ }
+ case(voice):
+ {
+ dcc.voice $1-
+ break
+ }
+ case(allow):
+ {
+ quote dccallow $1-
+ break
+ }
+ default:
+ {
+ echo "[DCC]: " $tr("Unsupported type: $0")
+ }
+ }
+}
+
+#
+# return a string with the name of the curerent usermode
+#
+alias(usermodename)
+{
+ if(!$0)
+ {
+ echo $tr("Usage:")
+ echo " /usermodename <nick>"
+ halt;
+ }
+ if(!$channel)
+ {
+ echo "[USERMODENAME]: " $tr("This is not a channel window")
+ halt;
+ }
+
+ if($chan.isOwner($0,$channel)){
+ return $tr("Channel Owner")
+ } elseif($chan.isAdmin($0,$channel)){
+ return $tr("Channel Administrator")
+ } elseif($chan.isOp($0,$channel)){
+ return $tr("Channel Operator")
+ } elseif($chan.isHalfOp($0,$channel)){
+ return $tr("Half Operator")
+ } elseif($chan.isVoice($0,$channel)){
+ return $tr("Voice")
+ } elseif($chan.isUserOp($0,$channel)){
+ return $tr("User Operator")
+ } else {
+ return $tr("Normal User")
+ }
+}
+
+alias(dccallow)
+{
+ quote dccallow \+$0
+}
+
+#shortcut for commonly called algorithm
+alias(md5)
+{
+ return $str.digest($0-,md5)
+}
+
+alias(sha1)
+{
+ return $str.digest($0-,sha1)
+}
+
+# DNS : people like it
+alias(dns)
+{
+ if(!$context)
+ {
+ echo "[DNS]: " $tr("You must use DNS in an IRC context")
+ halt
+ }
+
+ if(!$server)
+ {
+ echo "[DNS]: " $tr("You must be connected to a server")
+ halt
+ }
+
+ if(!$0)
+ {
+ echo $tr("Usage:")
+ echo echo " /dns <nickname>"
+ halt
+ }
+
+ if($isWellKnown($0))host -a $hostname($0)
+ else {
+ awhois($0)
+ {
+ if(!$2)
+ {
+ echo "[DNS]: " $tr("No such user: $0")
+ } else {
+ host -a $2
+ }
+ }
+ }
+}
+
+alias(ss)
+{
+ # Silent
+ quote ss $0-
+}
+
+alias(seenserv)
+{
+ # Silent
+ msg -q SeenServ $0-
+}
+
+alias(hs)
+{
+ #Silent
+ quote hs $0-
+}
+
+alias(hop)
+{
+ // Retrieve channel
+ %chan=$0
+ if(!%chan) %chan=$chan.name($active)
+
+ // Retrieve channel key
+ %key=$chan.key($channel(%chan))
+
+ // Exit channel
+ if($window.type($channel(%chan))=="channel")
+ part --keep %chan $option(stringPartMessage)
+
+ // Rejoin channel
+ if(!%key) join %chan
+ else join %chan %key
+}
diff --git a/data/defscript/default.kvs b/data/defscript/default.kvs
new file mode 100644
index 00000000..fb270da6
--- /dev/null
+++ b/data/defscript/default.kvs
@@ -0,0 +1,37 @@
+#################################################################################################
+#
+# This is the default script for KVIrc
+# Feel free to use it as base for writing your own scripts
+# It is a good starting point; I have tried to add as many comments as possible.
+#
+# Have fun :)
+# Szymon Stefanek
+#
+#################################################################################################
+
+%mypath = "$file.extractpath($0)$file.ps"
+
+# Fetch default scripts data
+include "aliases.kvs" %mypath
+include "events.kvs" %mypath
+include "popups.kvs" %mypath
+include "toolbars.kvs" %mypath
+
+#
+# Set the default spam words...(for the anti-spam) detector
+#
+
+# FIXME: these should be MERGED!!!!
+
+#%tmp = $option(stringlistSpamWords)
+#%tmp[] = $array() ???
+
+option stringlistSpamWords "http:","#","www.","auto","query","ftp:","sex","free","msg","chat","dynamirc","script"
+
+options.save
+
+echo $tr("The default script has been successfully installed.")
+echo $tr("To connect to a server, type /server <server name>")
+echo "---"
+echo $tr("Happy ircing :)")
+echo "- Szymon Stefanek $tr("and the KVIrc Development Team")"
diff --git a/data/defscript/events.kvs b/data/defscript/events.kvs
new file mode 100644
index 00000000..575cfc39
--- /dev/null
+++ b/data/defscript/events.kvs
@@ -0,0 +1,105 @@
+# Default events file
+
+event(OnDccChatPopupRequest,default)
+{
+ popup dccchat $0;
+}
+
+event(OnChannelPopupRequest,default)
+{
+ popup channeltextview $target;
+}
+
+event(OnConsolePopupRequest,default)
+{
+ popup consoletextview;
+}
+
+event(OnChannelLinkPopupRequest,default)
+{
+ if($0 != "") popup channelpopup $0;
+}
+
+event(OnQueryPopupRequest,default)
+{
+ if($target) popup querytextview $target;
+}
+
+event(OnQueryNickPopupRequest,default)
+{
+ if($0 != "") popup querytextview $0;
+}
+
+event(OnQueryFileDropped,default)
+{
+ if($0 != "") dcc.send $target $0;
+}
+
+event(OnNickLinkDefaultActionRequest,default)
+{
+ if($0 != "") whois $0;
+}
+
+event(OnNickLinkPopupRequest,default)
+{
+ if($0 != "") popup defaulttextview $0;
+}
+
+event(OnNotifyListDefaultActionRequest,default)
+{
+ if($0 != "")
+ {
+ query $0; whois $0 $0;
+ }
+}
+
+event(OnNotifyListPopupRequest,default)
+{
+ if($0 != "") popup defaulttextview $0;
+};
+
+event(OnWindowPopupRequest,default)
+{
+ popup windowpopup;
+}
+
+event(OnChannelWindowCreated,default)
+{
+ button(w,Logging,119,Logging)
+ {
+ popup -p=$0,$1 logging;
+ }
+}
+
+event(OnQueryWindowCreated,default)
+{
+ button(w,Logging,119,Logging)
+ {
+ popup -p=$0,$1 logging;
+ }
+}
+
+event(OnChannelNickLinkClick,default)
+{
+ if($0 != "") window.insertInInputText $window $0$option(stringNickCompletionPostfix);
+}
+
+event(OnChannelNickPopupRequest,default)
+{
+ if($0 != "") popup channel $0;
+}
+
+event(OnChannelNickDefaultActionRequest,default)
+{
+ if(!$isEmpty($0)) query $0;
+}
+
+event(OnURLLinkPopupRequest,URL popup)
+{
+ popup urlpopup $0
+}
+
+event(OnHostLinkPopupRequest,default)
+{
+ popup hostpopup $0;
+}
diff --git a/data/defscript/installer.kvs b/data/defscript/installer.kvs
new file mode 100644
index 00000000..f974b7ed
--- /dev/null
+++ b/data/defscript/installer.kvs
@@ -0,0 +1,169 @@
+/*
+ A helper class for installing and parsing files,
+ and generating an uninstallation alias on the fly.
+
+ Example :
+ include "utils/installer.kvs"
+ %installer = $new(installer,0,myinstaller)
+ %installer->$copyFiles(pics,*.png,$file.localdir(pics))
+ %installer->$includeFiles(src,*.kvs)
+ %installer->generateUninstallAlias("foo::uninstall")
+ delete %installer
+ Here, "foo::uninstall" must be called in you uninstall
+ callback script.
+
+ Warnings:
+ 1) Declaration of aliases, popups, etc, in source files
+ (.kvs) must be in a similar format
+ as when you export them directly from kvirc.
+ Example:
+ alias(myalias)
+ defpopup(mypopup)
+ 2) If you use a "defpopup -m" to add an item to an
+ existing popup,this item won't be registered
+ automatically for uninstallation by this installer script.
+ You should typically identify the item you added using
+ the "id" parameter. See this example where the id is
+ "myaddon::myitem":
+ defpopup -m (channeltextview)
+ {
+ item(MyItem)(myaddon::myitem)
+ {
+ ...
+ }
+ }
+ Then, you add this line to you uninstall callback
+ script:
+ delpopupitem channeltextview myaddon::myitem
+*/
+class(installer,object)
+{
+ constructor()
+ {
+ }
+
+ copyFiles($0 = source dir,$1 = file regexp,$2 = target dir)
+ {
+ if(!$file.exists($0))return
+ if($isempty($0))
+ {
+ echo $tr("[Installer] The first argument to \%installer->\$copyfiles must be a source directory")
+ halt
+ }
+
+ if($isempty($1))
+ {
+ echo $tr("[Installer] The second argument to \%installer->\$copyfiles must be a file name or file regexp")
+ halt
+ }
+
+ if($isempty($2))
+ {
+ echo $tr("[Installer] The third argument to \%installer->\$copyfiles must be a destination directory")
+ halt
+ }
+
+ if($file.exists($0))
+ {
+ %files = $file.ls($file.fixpath($0),f,$1)
+ if($length(%files))
+ {
+ @$mkdir($2)
+ foreach(%file,%files)
+ {
+ $this->%lFiles <+ $str.replace($file.fixpath("$2/%file"),"\\\\","\\")
+ file.copy -o $file.fixpath($0/%file) $file.fixpath($2/%file)
+ }
+ }
+ }
+ }
+
+ // Recursive creation of directory
+ mkdir($0 = directory)
+ {
+ if($isempty($0) || $file.exists($0)) return
+ foreach -a (%subdir,$str.split("/",$file.fixpath($0)))
+ {
+ %p <+ %subdir
+ %path = $str.join("/",%p)
+ if(!$file.exists(%path))
+ file.mkdir -q %path
+ }
+ if(!$file.exists($0))
+ {
+ echo $tr("[Installer] Failed to create directory") \"$0\"
+ return
+ }
+ }
+
+ // Parse source files and get what will need to be uninstalled
+ includeFiles($0 = dir, $1 = file regexp)
+ {
+ if($isempty($0))
+ {
+ echo $tr("[Installer] The first argument to \%installer->\$includefiles must be a source directory")
+ halt
+ }
+
+ @$mkdir($0)
+
+ if($1 == "")
+ %szRe = "*.kvs"
+ else
+ %szRe = $1
+
+ %files = $file.ls($file.fixpath($0),f,$1)
+ if($length(%files))
+ {
+ foreach(%file,%files)
+ {
+ $this->%lSources <+ $str.replace($file.fixpath("$0/%file"),"\\\\","\\")
+ include $file.fixpath("$0/%file")
+ }
+ }
+ }
+
+
+ generateUninstallAlias($0 = alias name)
+ {
+ %c = "alias($0)$lf"
+ %c .= "{$lf"
+ if($isset($this->%lFiles))
+ {
+ foreach(%file,$this->%lFiles)
+ {
+ %file =~ s/"^$file.localdir()/(.*)$"/"\$file.localdir(\\1)"/
+ %c .= " file.remove -q \"%file\"$lf";
+ }
+ }
+ if($isset($this->%lSources))
+ {
+ foreach(%file,$this->%lSources){
+ foreach(%line,$file.readlines(%file))
+ if(!$str.isempty(%line)){
+ if($str.match("event(*)",%line,e))
+ %c .= " event -q ("$str.token(1,"()",%line)"){}$lf"
+ else if($str.match("alias(*)",%line,e))
+ %aliases<+$str.token(1,"()",%line)
+ else if($str.match("defpopup(*)",%line,e))
+ %c .= " defpopup("$str.token(1,"()",%line)"){}$lf"
+ else if($str.match("toolbar.create * *",%line,e))
+ %c .= " toolbar.destroy -q "$str.word(1,%line)"$lf"
+ else if($str.match("action.create* (*)",%line,e))
+ %c .= " action.destroy -q "$str.replace($str.token(1,"(,)",%line),,\")"$lf"
+ else if($str.match("class(*)*",%line,e))
+ %c .= " objects.killclass -q "$str.token(1,"(,)",%line)"$lf"
+ }
+ }
+ if($isset(%aliases))
+ foreach(%alias,%aliases)
+ %c .= " alias -q (%alias){}$lf"
+ %c .= " alias -q ($0){}$lf"
+ }
+ %c .= "}"
+ eval %c
+ }
+}
+
+
+
diff --git a/data/defscript/popups.kvs b/data/defscript/popups.kvs
new file mode 100644
index 00000000..7197c923
--- /dev/null
+++ b/data/defscript/popups.kvs
@@ -0,0 +1,1381 @@
+# Default popups file
+
+#
+# Here comes a nice part...
+# The popups. KVIrc has a lot of events that merely ask for a popup to be shown :)
+#
+defpopup(highlight)
+{
+ prologue
+ {
+ if($0!=""){
+ %:regName = $reguser.match($mask($0))
+ %:beingHl = $reguser.property(%:regName,highlight)
+ %:beingHlTmp = $tmphighlight.ishighlighted($0)
+ }
+ }
+
+ item($tr("Stop Highlighting (Local)")) (%:beingHlTmp && !%:beingHl)
+ {
+ tmphighlight.remove $0
+ }
+
+ item($tr("Start Highlighting (Local)")) (!%:beingHlTmp && !%:beingHl)
+ {
+ tmphighlight.add $0
+ }
+
+ popup($tr("Always Highlight")) (!%:beingHl && !%:regName)
+ {
+ item($tr("Highlight as") $0 "("$mask($0,11)")") ("$reguser.exactMatch($mask($0,11))" == "")
+ {
+ reguser.add $0 $mask($0,11); reguser.setproperty $0 highlight 1;
+ }
+
+ item($tr("Highlight as") $0 "("$mask($0,12)")") ("$reguser.exactMatch($mask($0,12))" == "")
+ {
+ reguser.add $0 $mask($0,12); reguser.setproperty $0 highlight 1;
+ }
+
+ item($tr("Highlight as") $0 "("$mask($0,13)")") ("$reguser.exactMatch($mask($0,13))" == "")
+ {
+ reguser.add $0 $mask($0,13); reguser.setproperty $0 highlight 1;
+ }
+
+ item($tr("Highlight as") $0 "("$mask($0,3)")") ("$reguser.exactMatch($mask($0,3))" == "")
+ {
+ reguser.add $0 $mask($0,3); reguser.setproperty $0 highlight 1;
+ }
+
+ item($tr("Highlight as") $0 "("$mask($0,4)")") ("$reguser.exactMatch($mask($0,4))" == "")
+ {
+ reguser.add $0 $mask($0,4); reguser.setproperty $0 highlight 1;
+ }
+
+ item($tr("Highlight as") $0 "("$mask($0,5)")") ("$reguser.exactMatch($mask($0,5))" == "")
+ {
+ reguser.add $0 $mask($0,5); reguser.setproperty $0 highlight 1;
+ }
+ }
+
+ item($tr("Always Highlight")) (!%:beingHl && %:regName)
+ {
+ reguser.setproperty $0 highlight 1
+ }
+
+ item($tr("Stop Highlighting")) (%:beingHl)
+ {
+ reguser.setproperty $0 highlight 0
+ }
+}
+
+defpopup(ignore)
+{
+ prologue
+ {
+ %:inIgnoreList = 0
+ %:regName = $reguser.match($mask($0))
+ %:ignLabelText = "<p><b>$0</b> "
+ if(%:regName)
+ {
+ %:inIgnoreList = $reguser.isIgnoreEnabled(%:regName);
+ if(%:inIgnoreList) %:ignLabelText << $tr("is being ignored")
+ else %:ignLabelText << $tr("is not being ignored")
+
+ %:ignLabelText << "</p>"
+ } else {
+ %:ignLabelText << $tr("is not being ignored")"</p>"
+ }
+ }
+
+ label(%:ignLabelText)
+
+ item($tr("Enable Ignore"),168) (!%:inIgnoreList && %:regName)
+ {
+ reguser.setIgnoreEnabled %:regName 1;
+ }
+
+ popup($tr("Ignore as..."),44) (!%:inIgnoreList)
+ {
+ item($tr("Ignore as") $0 "("$mask($0,0)")") ("$reguser.exactMatch($mask($0,0))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,0);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,1)")") ("$reguser.exactMatch($mask($0,1))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,1);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,2)")") ("$reguser.exactMatch($mask($0,2))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,2);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,3)")") ("$reguser.exactMatch($mask($0,3))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,3);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,4)")") ("$reguser.exactMatch($mask($0,4))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,4);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,5)")") ("$reguser.exactMatch($mask($0,5))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,5);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,6)")") ("$reguser.exactMatch($mask($0,6))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,6);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,7)")") ("$reguser.exactMatch($mask($0,7))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,7);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,8)")") ("$reguser.exactMatch($mask($0,8))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,8);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,9)")") ("$reguser.exactMatch($mask($0,9))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,9);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,10)")") ("$reguser.exactMatch($mask($0,10))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,10);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,11)")") ("$reguser.exactMatch($mask($0,11))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,11);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,12)")") ("$reguser.exactMatch($mask($0,12))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,12);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,13)")") ("$reguser.exactMatch($mask($0,13))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,13);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,14)")") ("$reguser.exactMatch($mask($0,14))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,14);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,15)")") ("$reguser.exactMatch($mask($0,15))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,15);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,16)")") ("$reguser.exactMatch($mask($0,16))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,16);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,17)")") ("$reguser.exactMatch($mask($0,17))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,17);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,18)")") ("$reguser.exactMatch($mask($0,18))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,18);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,19)")") ("$reguser.exactMatch($mask($0,19))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,19);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,20)")") ("$reguser.exactMatch($mask($0,20))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,20);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,21)")") ("$reguser.exactMatch($mask($0,21))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,21);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,22)")") ("$reguser.exactMatch($mask($0,22))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,22);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,23)")") ("$reguser.exactMatch($mask($0,23))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,23);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,24)")") ("$reguser.exactMatch($mask($0,24))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,24);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,25)")") ("$reguser.exactMatch($mask($0,25))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,25);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+
+ item($tr("Ignore as") $0 "("$mask($0,26)")") ("$reguser.exactMatch($mask($0,26))" == "")
+ {
+ if(!%:regName) reguser.add $0 $mask($0,26);
+ reguser.setIgnoreEnabled $0 1;
+ reguser.setIgnoreFlags -p -c -n -t -i -d $0;
+ }
+ }
+
+ item($tr("Unignore"),217) (%:inIgnoreList)
+ {
+ reguser.setIgnoreEnabled %:regName 0;
+ }
+}
+
+defpopup(registration)
+{
+ prologue
+ {
+
+ # This is really smart...we are loading
+ # the reguser module only if this popup is being requested (the user effectively
+ # puts the mouse on the "Registration" item and the sub-popup is being shown)
+ %:regName = $reguser.match($mask($0))
+ %:labelText = "<p><b>$0</b>";
+ if(%:regName)
+ {
+ %:labelText << $tr("is registered as") ": <b>"%:regName"</b>"
+ # We want to display masks here!!!
+ %:inNotifyList = $reguser.property(%:regName,notify);
+ if(%:inNotifyList)%:labelText << "<br><b>$0</b>" $tr("is in the notify list")
+ %:curAvatar = $avatar.name($0);
+ %:defAvatar = $reguser.property(%:regName,avatar);
+ if(%:defAvatar)%:labelText << "<br><b>$0</b>" $tr("has a default avatar")
+ %:labelText << "</p>"
+ } else {
+ %:labelText << $tr("is not registered")"</p>"
+ }
+ }
+
+ label(%:labelText)
+
+ item($tr("Register")"...") (!%:regName)
+ {
+ reguser.wizard $mask($0)
+ }
+
+ popup($tr("Quick Registration")) (!%:regName)
+ {
+ item($tr("Register as") $0 "("$mask($0,11)")") ("$reguser.exactMatch($mask($0,11))" == "")
+ {
+ reguser.add $0 $mask($0,11)
+ }
+
+ item($tr("Register as") $0 "("$mask($0,12)")") ("$reguser.exactMatch($mask($0,12))" == "")
+ {
+ reguser.add $0 $mask($0,12)
+ }
+
+ item($tr("Register as") $0 "("$mask($0,13)")") ("$reguser.exactMatch($mask($0,13))" == "")
+ {
+ reguser.add $0 $mask($0,13)
+ }
+
+ item($tr("Register as") $0 "("$mask($0,3)")") ("$reguser.exactMatch($mask($0,3))" == "")
+ {
+ reguser.add $0 $mask($0,3)
+ }
+
+ item($tr("Register as") $0 "("$mask($0,4)")") ("$reguser.exactMatch($mask($0,4))" == "")
+ {
+ reguser.add $0 $mask($0,4)
+ }
+
+ item($tr("Register as") $0 "("$mask($0,5)")") ("$reguser.exactMatch($mask($0,5))" == "")
+ {
+ reguser.add $0 $mask($0,5)
+ }
+ }
+
+ item($tr("Edit Registration")"...",113) (%:regName)
+ {
+ reguser.edit "%:regName"
+ }
+
+ item($tr("Unregister") %:regName) (%:regName)
+ {
+ reguser.remove "%:regName"
+ }
+
+ separator
+
+ item($tr("Add to Notify")) (%:regName && !%:inNotifyList)
+ {
+ reguser.setproperty -n "%:regName" notify $0
+ }
+
+ item($tr("Remove from Notify")) (%:regName && %:inNotifyList)
+ {
+ reguser.setproperty -n "%:regName" notify
+ }
+
+ popup($tr("Avatar")) (%:regName)
+ {
+ item($tr("Choose")"...") (%:regName)
+ {
+ dialog.image(f,$tr("Choose Avatar Image File"),"","",$0,"%:regName")
+ {
+ if($0)
+ {
+ reguser.setproperty -a $2 avatar $0;
+ }
+ }
+ }
+
+ item($tr("Set as Default")) (%:curAvatar && ("%:curAvatar" != "%:defAvatar"))
+ {
+ reguser.setproperty "%:regName" avatar %:curAvatar
+ }
+
+ item($tr("Clear Default")) (%:defAvatar)
+ {
+ reguser.setproperty %:regName avatar
+ # Force the avatar to update
+ # if("%:curAvatar" == "")who $0
+ }
+ }
+}
+
+defpopup("urlpopup")
+{
+ item($tr("Copy To Clipboard"),259)
+ {
+ str.toClipboard $0
+ }
+}
+
+# This code adds a channel popup that accepts
+# a comma separated list of nicknames as parameter (to the /popup command)
+
+defpopup(channel)
+{
+ prologue
+ {
+ # we use the extended scope variables: they are visible in the entire defpopup scope
+ # %:visible is the string that we will "show to the user" in the popup widget
+ # for multiple users the string might become long so we are going to change it in "multiple users"
+ %:visible = $0
+ # %:multiple is an internal flag: set to 1 if the parameter passed to the popup contains a list
+ # of multiple nicknames rather than a single nick
+ %:multiple = 0
+ # finally , set these variables
+ %:itemBanName = $tr("Ban")
+ if($str.findfirst(%:visible,",") != -1)
+ {
+ # found a comma in the $0 parameter...we have multiple nicknames
+ %:visible = "("$tr("Multiple Users")")"
+ %:multiple = 1
+ %:itemBanMask = "*!user@*.host.tld"
+ %:itemBanNick = "nick"
+ } else {
+ %:itemBanMask = $mask(%:visible,$option(uintDefaultBanType))
+ if("%:itemBanMask" == "*!*@*")%:itemBanName = $tr("&Ban")
+ %:itemBanNick = %:visible
+ }
+ # speed it up
+
+ %:isMeHalfOp = $chan.isMeHalfOp()
+ %:isMeOp = $chan.isMeOp()
+ %:isMeOwner = $chan.isMeOwner()
+ %:isMeAdmin = $chan.isMeAdmin()
+ %:bCanKB = 0;
+
+ if(%:isMeHalfOp)
+ {
+ foreach(%nick,$str.split(",",$0))
+ {
+ if($chan.usermodelevel(%nick) <= $chan.usermodelevel($me))
+ {
+ %:bCanKB = 1;
+ break;
+ }
+ }
+ }
+ }
+
+ item("/WHOIS" %:visible "("$tr("idle time")")",75,whois_item)
+ {
+ foreach(%i,$str.split(",",$0))
+ whois %i %i
+ }
+
+ separator
+
+ popup($tr("&Information"),49,"information_popup")
+ {
+ item("/WHOIS" %:visible,75,"whois_item")
+ {
+ whois $0
+ }
+
+ item(/WHOWAS %:visible,92)
+ {
+ whowas $0
+ }
+
+ item(/WHO %:visible,75)
+ {
+ who $0
+ }
+
+ separator
+
+ item($tr("DNS for") %:visible,75)
+ {
+ foreach(%i,$str.split(",",$0))dns %i
+ }
+
+ item($tr("Mask for") %:visible,75) (!%:multiple)
+ {
+ echo $mask($0,11)
+ }
+ }
+
+ popup($tr("&Control"),9,"control_popup") (%:isMeHalfOp)
+ {
+ label($usermodename($me()))
+
+ item($tr("O&wner") %:visible,260) (%:isMeOwner)
+ {
+ chanowner $0
+ }
+
+ item($tr("&Deowner") %:visible,261) (%:isMeOwner)
+ {
+ dechanowner $0
+ }
+
+ item($tr("&Administrator") %:visible,242) (%:isMeAdmin)
+ {
+ chanadmin $0
+ }
+
+ item($tr("&Deadministrator") %:visible,243) (%:isMeAdmin)
+ {
+ dechanadmin $0
+ }
+
+ item($tr("&Op") %:visible,34) (%:isMeOp)
+ {
+ op $0
+ }
+
+ item($tr("&Deop") %:visible,62) (%:isMeOp)
+ {
+ deop $0
+ }
+
+ item($tr("&Halfop") %:visible,174) (%:isMeOp)
+ {
+ halfop $0
+ }
+
+ item($tr("&Dehalfop") %:visible,175) (%:isMeOp)
+ {
+ dehalfop $0
+ }
+
+ item($tr("&Voice") %:visible,35) (%:isMeHalfOp)
+ {
+ voice $0
+ }
+
+ item($tr("D&evoice") %:visible,63) (%:isMeHalfOp)
+ {
+ devoice $0
+ }
+
+ separator
+
+ item($tr("&Kick") %:visible,110) (%:bCanKB)
+ {
+ foreach(%i,$str.split(",",$0))kick %i
+ }
+
+ item($tr("K&ick") %:visible $tr("With..."),110) (%:bCanKB)
+ {
+ dialog.textinput -d="$me" -i=110 ($tr("Kick Reason"),$tr("Enter a kick reason"),$tr("&Kick"),$tr("Cancel"),,$0)
+ {
+ if($0 == 0)
+ {
+ foreach(%i,$str.split(",",$2))kick %i $1
+ }
+ }
+ }
+
+ item($tr("&Ban") %:visible "("%:itemBanMask")",67) (("%:itemBanMask" != "*!*@*") && %:bCanKB)
+ {
+ ban $mask($0,$option(uintDefaultBanType))
+ }
+
+ item(%:itemBanName %:visible "("%:itemBanNick!*@*")",67) (%:bCanKB)
+ {
+ ban $0
+ }
+
+ item($tr("Kick/Ban") %:visible,110) (%:bCanKB)
+ {
+ kb $0
+ }
+
+ item($tr("Kick/Ban") %:visible $tr("With..."),110) (%:bCanKB)
+ {
+ dialog.textinput -d="$me" -i=110 ($tr("Kick/Ban Reason"),$tr("Enter a kick/ban reason"),$tr("&Kick/Ban"),$tr("Cancel"),,$0)
+ {
+ if($0 == 0)
+ {
+ kb $2 $1
+ }
+ }
+ }
+ separator
+
+ item($tr("Configure ban mask..."),20)
+ {
+ options.edit KviChannelAdvancedOptionsWidget
+ }
+ }
+
+ separator
+
+ item($tr("&Query") %:visible,47)
+ {
+ query $0
+ }
+
+ separator
+
+ extpopup(C&TCP,ctcp,51)
+
+ extpopup(&DCC,dcc,77) (!%:multiple)
+
+ separator
+
+ extpopup($tr("&Registration"),registration,111) (!%:multiple)
+
+ extpopup($tr("&Highlight"),highlight,181) (!%:multiple)
+
+ extpopup($tr("Ig&nore"),ignore,203) (!%:multiple)
+
+ item($tr("Notify Avatar"),57)
+ {
+ avatar.notify $0
+ }
+}
+
+# Popup to show on right-clicking channel links
+#
+defpopup(channelpopup)
+{
+ item($tr("&Join") $0,145)
+ {
+ hop $0
+ }
+
+ item($tr("&Part") $0,40)
+ {
+ if($channel($0)) part $0 $option(stringPartMessage);
+ }
+
+ separator
+
+ item(/NAMES $0,75)
+ {
+ names $0;
+ }
+
+ item(/WHO $0,75)
+ {
+ who $0;
+ }
+ separator
+
+ item($tr("Copy Channel Address"),259)
+ {
+ str.toClipboard $chan.getUrl($0)
+ }
+
+}
+
+defpopup(channels)
+{
+ item(#KVirc,46)
+ {
+ j #KVirc
+ }
+
+ item(#MDE,46)
+ {
+ j #MDE
+ }
+
+ item(#kde,46)
+ {
+ j #kde
+ }
+}
+
+defpopup(channeltextview)
+{
+ extpopup($tr("Channels"),channels,46)
+
+ item($tr("&Join Channels..."),46) ($server)
+ {
+ if($option(boolShowChannelsJoinDialogAsToplevel))channelsjoin.open -t;else channelsjoin.open
+ }
+
+ separator
+
+ item($tr("&Hop") $0,145)
+ {
+ hop $0
+ }
+
+ item($tr("&Part") $0,40)
+ {
+ if($channel($0)) part $0 $option(stringPartMessage);
+ }
+
+ separator
+
+ extpopup(C&TCP,ctcp,51)
+
+ separator
+
+ item(/NAMES $0,75)
+ {
+ names $0;
+ }
+
+ item(/WHO $0,75)
+ {
+ who $0;
+ }
+
+ item($tr("Notify Avatar"),57)
+ {
+ avatar.notify $0
+ }
+
+ separator
+
+ item($tr("Copy Channel URL to Clipboard"),259)
+ {
+ str.toClipboard $chan.getUrl
+ }
+
+ item($tr("Clear Buffer"),121)
+ {
+ clear;
+ }
+
+}
+
+defpopup(consoletextview)
+{
+ label($tr("You're not connected to a server")) (!$server)
+
+ extpopup($tr("Channels"),channels,46)
+
+ separator
+
+ item($tr("&Join Channels..."),46) ($server)
+ {
+ if($option(boolShowChannelsJoinDialogAsToplevel))channelsjoin.open -t;else channelsjoin.open
+ }
+
+ popup($tr("&Information"),13) ($server)
+ {
+ item(/MOTD,30)
+ {
+ motd
+ }
+
+ item(/INFO,29)
+ {
+ info
+ }
+
+ item(/LUSERS,57)
+ {
+ lusers
+ }
+
+ popup(/STATS,22)
+ {
+ item(d "(Debug/DNS?)")
+ {
+ stats d
+ }
+
+ item($tr("l (Connections)"))
+ {
+ stats l
+ }
+
+ item($tr("m (Command Usage)"))
+ {
+ stats m
+ }
+
+ item($tr("o (Operators)"))
+ {
+ stats o
+ }
+
+ item($tr("t (Connection stats ?)"),23)
+ {
+ stats t
+ }
+
+ item($tr("u (Uptime)"),93)
+ {
+ stats u
+ }
+
+ item($tr("y (y-Lines)"))
+ {
+ stats y
+ }
+
+ item($tr("z (Debug Stats?)"),11)
+ {
+ stats z
+ }
+ }
+
+ item(/TIME,93)
+ {
+ time
+ }
+
+ item(/ADMIN,29)
+ {
+ admin
+ }
+
+ item(/VERSION,16)
+ {
+ version
+ }
+
+ item(/HELP,49)
+ {
+ raw help
+ }
+ }
+
+ separator
+
+ item($tr("Clear Buffer"),121)
+ {
+ clear;
+ }
+}
+
+# This is a common popup , accepts a list of nicknames as parameter
+defpopup(ctcp)
+{
+ item(PING,36)
+ {
+ ctcp $0 PING
+ }
+
+ item(FINGER,53)
+ {
+ ctcp $0 FINGER
+ }
+
+ item(VERSION,16)
+ {
+ ctcp $0 VERSION
+ }
+
+ item(USERINFO,57)
+ {
+ ctcp $0 USERINFO
+ }
+
+ item(CLIENTINFO,52)
+ {
+ ctcp $0 CLIENTINFO
+ }
+
+ item(SOURCE,14)
+ {
+ ctcp $0 SOURCE
+ }
+
+ item(TIME,93)
+ {
+ ctcp $0 TIME
+ }
+
+ item(PAGE...,223)
+ {
+ #dialog.textinput -d="Wakeup!" ($tr("CTCP Page to") $0,$tr("Enter the message text"),$tr("Ok"),$tr("Cancel"))
+ dialog.textinput(CTCP Page $0,Enter the message text,&Page,Cancel,"",$0)
+ {
+ if($0 == 0)ctcp $2 PAGE $1
+ }
+ }
+
+ item(AVATAR,57)
+ {
+ ctcp $0 AVATAR
+ }
+}
+
+defpopup(dcc)
+{
+ prologue
+ {
+
+ if($features("SSL"))%:bHaveSSL=1
+ else %:bHaveSSL=0
+ }
+
+ item($tr("Chat with") $0,78)
+ {
+ dcc.chat $0
+ }
+
+ item($tr("Reverse Chat with") $0,78)
+ {
+ dcc.chat -z $0
+ }
+
+ item($tr("Secure Chat with") $0,78) (%:bHaveSSL)
+ {
+ dcc.chat -s $0
+ }
+
+ separator
+
+ item($tr("Send to") $0,79)
+ {
+ dcc.send $0
+ }
+
+ item($tr("Secure send to") $0,79)
+ {
+ dcc.send -s $0
+ }
+
+ item($tr("Reverse Send to") $0,79)
+ {
+ dcc.rsend -z $0
+ }
+
+ item($tr("Secure Reverse Send to") $0,79)
+ {
+ dcc.rsend -z -s $0
+ }
+
+ separator
+
+ item($tr("TDCC Send to") $0,77)
+ {
+ dcc.send -t $0
+ }
+
+ item($tr("TDCC Reverse Send to") $0,77)
+ {
+ dcc.rsend -t $0
+ }
+
+ separator
+
+ popup($tr("Voice Chat"),166)
+ {
+ item($tr("Default")": ADPCM 8 KHz (32 kbps)")
+ {
+ dcc.voice $0
+ }
+
+ separator
+
+ item("ADPCM 11.025 KHz (44.1 kbps)")
+ {
+ dcc.voice -h=11025 $0
+ }
+
+ item("ADPCM 16 KHz (64 kbps)")
+ {
+ dcc.voice -h=16000 $0
+ }
+
+ item("ADPCM 22.05 KHz (88.2 kbps)")
+ {
+ dcc.voice -h=22050 $0
+ }
+
+ item("GSM 8 KHz (13.2 kbps)")
+ {
+ dcc.voice -g=gsm $0
+ }
+
+ item("GSM 11.025 KHz (18.1 kbps)")
+ {
+ dcc.voice -g=gsm -h=11025 $0
+ }
+
+ item("GSM 16 KHz (26.4 kbps)")
+ {
+ dcc.voice -g=gsm -h=16000 $0
+ }
+
+ item("GSM 22.05 KHz (36.2 kbps)")
+ {
+ dcc.voice -g=gsm -h=22050 $0
+ }
+
+ item("GSM 44.1 KHz (72.4 kbps)")
+ {
+ dcc.voice -g=gsm -h=44100 $0
+ }
+
+ item("NULL 8 KHz (128 kbps)")
+ {
+ dcc.voice -g=null $0
+ }
+
+ item("NULL 11.025 KHz (176.4 kbps)")
+ {
+ dcc.voice -g=null -h=11025 $0
+ }
+ }
+}
+
+defpopup(dccchat)
+{
+ prologue
+ {
+
+ # we use the extended scope variables: they are visible in the entire defpopup scope
+ # %:visible is the string that we will "show to the user" in the popup widget
+ # for multiple users the string might become long so we are going to change it in "multiple users"
+ %:visible = $0
+ # %:multiple is an internal flag: set to 1 if the parameter passed to the popup contains a list
+ # of multiple nicknames rather than a single nick
+ %:multiple = 0
+ # finally , set these variables
+ if($str.findfirst(%:visible,",") != -1)
+ {
+ # found a comma in the $0 parameter...we have multiple nicknames
+ %:visible = "("$tr("Multiple Users")")"
+ %:multiple = 1
+ }
+ }
+
+ separator
+
+ extpopup(C&TCP,ctcp,51)
+
+ extpopup(&DCC,dcc,77)
+
+ separator
+
+ item($tr("Notify Avatar"),57)
+ {
+ avatar.notify $0
+ }
+
+ separator
+
+ item($tr("Clear Buffer"),121)
+ {
+ clear
+ }
+}
+
+#
+# Some minimal work on the query
+# A text view popup (right click on a query view)
+#
+
+defpopup(querytextview)
+{
+ prologue
+ {
+
+ # we use the extended scope variables: they are visible in the entire defpopup scope
+ # %:visible is the string that we will "show to the user" in the popup widget
+ # for multiple users the string might become long so we are going to change it in "multiple users"
+ %:visible = $0
+ # %:multiple is an internal flag: set to 1 if the parameter passed to the popup contains a list
+ # of multiple nicknames rather than a single nick
+ %:multiple = 0
+ # finally , set these variables
+ if($str.findfirst(%:visible,",") != -1)
+ {
+ # found a comma in the $0 parameter...we have multiple nicknames
+ %:visible = "("$tr("Multiple Users")")"
+ %:multiple = 1
+ }
+ }
+
+ item(/WHOIS $0 "("$tr("idle time")")",75) (!%:multiple)
+ {
+ whois $0 $0
+ }
+
+ separator
+
+ popup($tr("&Information"),49)
+ {
+ item(/WHOIS $0,75)
+ {
+ whois $0
+ }
+
+ item(/WHOWAS $0,92)
+ {
+ whowas $0
+ }
+
+ item(/WHO $0,75)
+ {
+ who $0
+ }
+
+ separator
+
+ item($tr("DNS for") $0,75)
+ {
+ foreach(%i,$str.split(",",$0))dns %i
+ }
+
+ item($tr("Mask for") $0,75) (!%:multiple)
+ {
+ echo $mask($0,11)
+ }
+ }
+
+ separator
+
+ extpopup(C&TCP,ctcp,51)
+
+ extpopup(&DCC,dcc,77)
+
+ separator
+
+ extpopup($tr("&Ignore"),ignore,203) (!%:multiple)
+
+ extpopup($tr("&Registration"),registration,111) (!%:multiple)
+
+ item($tr("Notify Avatar"),57)
+ {
+ avatar.notify $0
+ }
+
+ separator
+
+ item($tr("Clear Buffer"),121)
+ {
+ clear
+ }
+}
+
+
+#
+# Logging popup for the windows
+#
+defpopup(logging)
+{
+ prologue
+ {
+
+ # If this window is being logged actually , $log.file will be non empty
+ # and pointing to the log file actually open.
+ %:logfile = $str.replace($log.file,,$file.localdir)
+ }
+
+ label($tr("Logging to"):<br><b>%:logfile</b>) ("%:logfile" != "")
+
+ item($tr("Flush Log File"),19) (%:logfile)
+ {
+ log.flush
+ }
+
+ separator
+
+ item($tr("Stop Logging"),58) (%:logfile)
+ {
+ log.stop
+ }
+
+ label($tr("Not Logging")) (!%:logfile)
+
+ item($tr("Log To Default File"),119) (!%:logfile)
+ {
+ log.start
+ }
+
+ item($tr("Log To Default File") "("$tr("Include Existing Buffer")")",119) (!%:logfile)
+ {
+ log.start -p
+ }
+
+ item($tr("Log To..."),119) (!%:logfile)
+ {
+ dialog.file(save,$tr("Choose Log Filename"))
+ {
+ if($0)log.start $0
+ }
+ }
+
+ item($tr("Log To...") "("$tr("Include Existing Buffer"),119) (!%:logfile)
+ {
+ dialog.file(save,$tr("Choose Log Filename"))
+ {
+ if($0)log.start -p $0
+ }
+ }
+}
+
+defpopup(defaulttextview)
+{
+ prologue
+ {
+
+ # we use the extended scope variables: they are visible in the entire defpopup scope
+ # %:visible is the string that we will "show to the user" in the popup widget
+ # for multiple users the string might become long so we are going to change it in "multiple users"
+ %:visible = $0
+ # %:multiple is an internal flag: set to 1 if the parameter passed to the popup contains a list
+ # of multiple nicknames rather than a single nick
+ %:multiple = 0
+ # finally , set these variables
+ if($str.findfirst(%:visible,",") != -1)
+ {
+ # found a comma in the $0 parameter...we have multiple nicknames
+ %:visible = "("$tr("Multiple Users")")"
+ %:multiple = 1
+ }
+ }
+
+ item(/WHOIS $0 "("$tr("idle time")")",75) (!%:multiple)
+ {
+ whois $0 $0
+ }
+
+ separator
+
+ popup($tr("&Information"),49)
+ {
+ item(/WHOIS $0,75)
+ {
+ whois $0
+ }
+
+ item(/WHOWAS $0,92)
+ {
+ whowas $0
+ }
+
+ item(/WHO $0,75)
+ {
+ who $0
+ }
+
+ separator
+
+ item(DNS $0,75)
+ {
+ foreach(%i,$str.split(",",$0))dns %i
+ }
+ }
+
+ separator
+
+ item($tr("&Query") %:visible,47)
+ {
+ query $0
+ }
+
+ separator
+
+ extpopup(C&TCP,ctcp,51)
+
+ extpopup(&DCC,dcc,77)
+
+ separator
+
+ extpopup($tr("&Registration"),registration,111) (!%:multiple)
+
+ extpopup($tr("&Highlight"),highlight,181) (!%:multiple)
+
+ extpopup($tr("Ig&nore"),ignore,203) (!%:multiple)
+
+ item($tr("Notify avatar"),57)
+ {
+ avatar.notify $0
+ }
+
+ separator
+
+ item($tr("Clear Buffer"),121)
+ {
+ clear
+ }
+}
+
+file.addimagepath %mypath/pics/
+
+#
+# FIXME: Add uninstall part:
+# file.delimagepath
+#
+
+
+#
+# A default popup for the middle click in a text view
+# This should manage logging , buffer saving and other
+# stuff common to ALL windows
+#
+
+defpopup(windowpopup)
+{
+ extpopup(Logging,logging,119)
+
+# popup(Buffer)
+# {
+# item("Save to file...")window.savebuffer
+# item("Clear")window.clear
+# item("Find...")window.findtext
+# }
+# popup(View)
+# {
+# item("Show images")($window.images == 0)window.images 1
+# item("Enable timestamps")($window.timestamp == 0)window.timestamp 1
+# item("Disable timestamps")($window.timestam == 1)window.timestamp 0
+# item("Set font...")$window.setfont
+# item("Set background...")$window.setbackground
+# }
+# popup(Mdi)
+# {
+# item("Minimize")window.minimize
+# item("Maximize")window.maximize
+# }
+}
+
+# Host link popup
+
+defpopup(hostpopup)
+{
+ item(Look Up $0,13)
+ {
+ host -a $0
+ }
+
+ separator
+
+ item(Open ftp://$0/,145) ("$system.ostype" == "unix")
+ {
+ openurl ftp://$0/
+ }
+
+ item(Telnet to $0,25)
+ {
+ if("$system.ostype" == "unix")run xterm -e telnet $0
+ else run telnet $0
+ }
+
+ separator
+
+ item(Traceroute $0,42)
+ {
+ if("$system.ostype" == "unix")run xterm -e /bin/sh -c "echo \"Traceroute to $0...\" && traceroute $0 && cat"
+ else run tracert $0
+ }
+
+ item(Traceroute6 $0,42)
+ {
+ if("$system.ostype" == "unix")run xterm -e /bin/sh -c "echo \"Traceroute (inet6) to $0...\" && traceroute6 $0 && cat"
+ else run tracert6 $0
+ }
+
+ item(Ping $0,147)
+ {
+ if("$system.ostype" == "unix")run xterm -e /bin/sh -c "echo \"Ping $0...\" && ping $0 && cat"
+ else run ping $0
+ }
+
+ item(Ping6 $0,147)
+ {
+ if("$system.ostype" == "unix")run xterm -e /bin/sh -c "echo \"Ping (inet6) $0...\" && ping6 $0 && cat"
+ else run ping6 $0
+ }
+} \ No newline at end of file
diff --git a/data/defscript/theme-install.kvs b/data/defscript/theme-install.kvs
new file mode 100644
index 00000000..febbbbc0
--- /dev/null
+++ b/data/defscript/theme-install.kvs
@@ -0,0 +1,30 @@
+addon.register("Theme: @THEMENAME@","@THEMEVERSION@",$tr("@THEMENAME@"),$tr("@THEMEDESCRIPTION@"),"3.2.0.99")
+{
+ # This is our uninstall callback: it will be called by KVIrc when addon.uninstall is invoked
+
+ # This is an automatically generated alias that will erase the installed files
+ @ALIASNAME@_uninstallfiles
+ file.rmdir $file.localdir("themes/@SUBDIR@")
+ alias(@ALIASNAME@_uninstallfiles) {}
+ # Done
+}
+
+# Ok, addon.register succeeded. We can go on with the installation.
+
+# Get the path that this script was launched from
+%mypath = $file.extractPath($0)
+
+# get the installer helper class (this is pretty standard and included in the distro)
+parse %mypath/utils/installer.kvs
+
+# The installer will copy our files and generate automatically
+# an uninstallation alias for them
+%installer = $new(installer,0,myinstaller)
+
+# copy files in each subdirectory
+# the pics
+
+%installer->$copyFiles("%mypath/files/","*",$file.localdir("themes/@SUBDIR@"))
+%installer->$generateUninstallAlias("@ALIASNAME@_uninstallfiles")
+# finally kill the installer helper
+delete %installer
diff --git a/data/defscript/toolbars.kvs b/data/defscript/toolbars.kvs
new file mode 100644
index 00000000..84e7b93a
--- /dev/null
+++ b/data/defscript/toolbars.kvs
@@ -0,0 +1,43 @@
+# Default toolbars file
+
+toolbar.create irccontext $tr("IRC Context") $icon("irc4")
+# toolbar.additem irccontext kvirc.irccontextdisplay - info dublicated with te status line
+toolbar.additem irccontext kvirc.connect
+toolbar.additem irccontext kvirc.servermenu
+toolbar.additem irccontext kvirc.newirccontext
+toolbar.additem irccontext kvirc.separator
+toolbar.additem irccontext kvirc.nicknamemenu
+toolbar.additem irccontext kvirc.irctools
+toolbar.additem irccontext kvirc.ircactions
+toolbar.additem irccontext kvirc.usermodemenu
+toolbar.show irccontext
+
+toolbar.create options $tr("Options") $icon("options")
+toolbar.additem irccontext kvirc.serveroptions
+toolbar.additem options kvirc.identityoptions
+toolbar.additem options kvirc.generaloptions
+toolbar.additem options kvirc.themeoptions
+toolbar.show options
+
+toolbar.create help $tr("Help") 49
+toolbar.additem help kvirc.helpindex
+if($lang(short)==ru)
+ toolbar.additem help kvirc.kvircruhomepage
+else
+ toolbar.additem help kvirc.kvirchomepage
+toolbar.show help
+
+toolbar.create scripting $tr("Scripting") $icon("binarytext")
+toolbar.additem scripting kvirc.actioneditor
+toolbar.additem scripting kvirc.aliaseditor
+toolbar.additem scripting kvirc.eventeditor
+toolbar.additem scripting kvirc.popupeditor
+toolbar.additem scripting kvirc.raweditor
+toolbar.additem scripting kvirc.codetester
+toolbar.additem scripting kvirc.separator
+toolbar.additem scripting kvirc.executekvs
+
+toolbar.create winops $tr("Window operations") $icon("cascadewindows")
+toolbar.additem winops kvirc.cascadewindows
+toolbar.additem winops kvirc.tilewindows
+toolbar.additem winops kvirc.minimizeallwindows \ No newline at end of file
diff --git a/data/deftheme/Makefile.am b/data/deftheme/Makefile.am
new file mode 100644
index 00000000..c6ce91e6
--- /dev/null
+++ b/data/deftheme/Makefile.am
@@ -0,0 +1,2 @@
+SUBDIRS = silverirc
+
diff --git a/data/deftheme/silverirc/Makefile.am b/data/deftheme/silverirc/Makefile.am
new file mode 100644
index 00000000..e4f01a62
--- /dev/null
+++ b/data/deftheme/silverirc/Makefile.am
@@ -0,0 +1,5 @@
+tmpdir = $(themedir)/silverirc
+
+tmp_DATA = themeinfo.kvc themedata.kvc pixmapIrcViewBackground.png pixmapInputBackground.png pixmapUserListViewBackground.png
+
+EXTRA_DIST = $(tmp_DATA) \ No newline at end of file
diff --git a/data/deftheme/silverirc/pixmapInputBackground.png b/data/deftheme/silverirc/pixmapInputBackground.png
new file mode 100644
index 00000000..8e903351
--- /dev/null
+++ b/data/deftheme/silverirc/pixmapInputBackground.png
Binary files differ
diff --git a/data/deftheme/silverirc/pixmapIrcViewBackground.png b/data/deftheme/silverirc/pixmapIrcViewBackground.png
new file mode 100644
index 00000000..f02f9166
--- /dev/null
+++ b/data/deftheme/silverirc/pixmapIrcViewBackground.png
Binary files differ
diff --git a/data/deftheme/silverirc/pixmapUserListViewBackground.png b/data/deftheme/silverirc/pixmapUserListViewBackground.png
new file mode 100644
index 00000000..90560c82
--- /dev/null
+++ b/data/deftheme/silverirc/pixmapUserListViewBackground.png
Binary files differ
diff --git a/data/deftheme/silverirc/themedata.kvc b/data/deftheme/silverirc/themedata.kvc
new file mode 100644
index 00000000..a83296b8
--- /dev/null
+++ b/data/deftheme/silverirc/themedata.kvc
@@ -0,0 +1,273 @@
+# KVIrc configuration file
+[ThemeData]
+pixmapUserListViewBackground=pixmapUserListViewBackground.png
+msgtypeSearch=206,14,100,1,1
+msgtypeMeBanExcept=197,3,100,1,5
+msgtypeNickServ=164,5,100,1,2
+msgtypeChanPrivmsgCrypted=101,1,100,1,3
+msgtypeNotifyOffLine=95,2,100,1,1
+msgtypeSocketMessage=21,14,100,1,1
+boolDisablePopupIcons=false
+boolUseExtendedPrivmsgView=false
+msgtypeMeChanAdmin=244,3,100,1,1
+msgtypeMeBanUnExcept=198,3,100,1,5
+msgtypeMeBan=195,5,100,1,5
+msgtypeMeOp=189,3,100,1,5
+msgtypeWallops=139,5,100,1,3
+msgtypeQueryTrace=181,15,100,1,1
+msgtypeHalfDeOp=175,3,100,1,2
+msgtypeIcq=122,5,100,1,1
+msgtypeOwnPrivmsgCrypted=100,1,100,1,3
+uintUserListPixmapAlign=1
+colorInputSelectionForeground=0,0,0
+colorCaptionTextInactive=0,0,0
+stringExtendedPrivmsgPrefix=[
+boolShowTreeTaskbarHeader=false
+boolShowUserChannelIcons=true
+boolUseGlobalPseudoTransparency=false
+msgtypeMeDeVoice=192,3,100,1,5
+msgtypeBroadcastPrivmsg=183,1,100,1,3
+msgtypeChanServ=165,5,100,1,2
+msgtypeWhoisOther=92,2,100,1,1
+msgtypeWhoisChannels=89,2,100,1,1
+msgtypeWhoisUser=88,2,100,1,1
+msgtypeOp=34,3,100,1,2
+msgtypeParserError=11,4,100,1,1
+colorIrcViewMarkLine=40,40,40
+colorUserListViewNormalForeground=0,0,0
+boolUseDifferentColorForOwnNick=true
+boolScaleAvatars=true
+msgtypeServerError=272,14,100,1,1
+msgtypeMeInviteExcept=199,3,100,1,5
+msgtypeChannelNoticeCrypted=154,5,100,1,3
+msgtypeIrc=105,3,100,1,0
+msgtypeCtcpRequestUnknown=55,5,100,1,2
+msgtypeCtcpRequestReplied=52,5,100,1,2
+colorUserListViewChanOwnerForeground=81,87,111
+colorUserListViewUserOpForeground=0,127,178
+colorUserListViewVoiceForeground=0,0,200
+colorInputForeground=0,0,0
+colorCaptionTextActive2=0,0,0
+colorMdiCaptionActive=113,125,190
+colorTaskBarNormalText=0,0,0
+boolIrcViewUrlHighlighting=true
+stringIconThemeSubdir=silverirc
+msgtypeAway=170,3,100,1,4
+msgtypeIcqMessage=128,5,100,1,1
+msgtypeLinks=112,2,100,1,1
+msgtypeBan=67,5,100,1,1
+msgtypeVoice=35,3,100,1,1
+msgtypeQuit=58,14,100,1,2
+msgtypeQueryPrivateMessage=48,1,100,1,4
+msgtypeTopic=42,3,100,1,1
+msgtypeHostLookup=13,2,100,1,1
+fontIrcToolBarApplet=Verdana,10,5,50,i
+uintToolBarAppletPixmapAlign=0
+uintUserListViewGridType=3
+colorTreeTaskBarProgress=150,150,150
+colorGlobalTransparencyFade=255,255,255
+colorTaskBarHighlight2Text=32,0,255
+boolUseTreeWindowListTaskBar=true
+pixmapInputBackground=pixmapInputBackground.png
+mirccolor0=255,255,255
+msgtypeMeChanOwner=262,3,100,1,2
+msgtypeChanOwner=260,3,100,1,2
+msgtypeUserDeOp=175,3,100,1,1
+msgtypeGenericError=135,4,100,1,1
+msgtypeStats=205,1,100,1,1
+msgtypeIcqMessageSent=129,5,100,1,1
+msgtypeQueryPrivmsgCrypted=102,1,100,1,3
+msgtypeAvatarChange=57,15,100,1,2
+msgtypeUnrecognized=41,5,100,1,1
+msgtypeSocketWarning=22,5,100,1,3
+msgtypeSelection=0,0,15,1,1
+uintIrcViewPixmapAlign=34
+colorTreeTaskBarHighlight2Foreground=167,222,163
+colorTreeTaskBarActiveForeground=0,0,0
+colorIrcToolBarAppletForegroundMidContrast=110,110,110
+colorUserListViewBackground=255,255,255
+colorTaskBarHighlight1Text=0,16,144
+colorTaskBarMinimizedText=60,60,60
+boolStripMircColorsInUserMessages=false
+boolIrcViewShowImages=true
+mirccolor1=0,0,0
+msgtypeIgnore=203,15,100,1,1
+msgtypeMeInviteUnexcept=200,3,100,1,5
+msgtypeMultimedia=177,5,100,1,2
+msgtypeServerNotice=141,5,100,1,1
+msgtypeDccChatMsg=103,1,100,1,3
+msgtypeCreationTime=93,15,100,1,1
+msgtypeWhoisServer=91,2,100,1,1
+msgtypeInviteUnexcept=72,15,100,1,1
+msgtypeSplit=59,15,100,1,2
+msgtypeCtcpRequestIgnored=53,5,100,1,1
+msgtypeSystemError=24,4,100,1,4
+msgtypeHighlight=0,7,100,1,5
+fontTaskbar=Sans%20Serif,10,5,50
+uintTreeTaskBarPixmapAlign=0
+uintGlobalTransparencyParentFadeFactor=10
+colorTreeTaskBarHighlight3Foreground=128,0,255
+colorTaskBarHighlight4Text=220,0,255
+colorTaskBarProgressBar=180,180,180
+colorMdiBackground=0,0,0
+boolUseTaskBarActivityMeter=false
+boolColorNicks=false
+mirccolor2=0,0,140
+msgtypeMeChanUnAdmin=245,3,100,1,1
+msgtypeWho=75,2,100,1,1
+msgtypeDeop=62,3,100,1,1
+msgtypeRaw=25,2,100,1,1
+uintTimeStampBackground=100
+colorUserListViewChanAdminForeground=83,54,5
+colorTreeTaskBarHighlight4Foreground=220,0,255
+colorTaskBarHighlight3Text=128,20,255
+colorTreeTaskBarActiveBackground=200,200,200
+colorLabelForeground=0,0,0
+colorUserListViewSelectionForeground=0,0,0
+colorInputBackgroundColor=255,255,255
+boolDisableUserListLabel=false
+mirccolor10=0,150,180
+mirccolor3=0,100,0
+msgtypeGenericSuccess=136,14,100,1,3
+msgtypeDccChatMsgCrypted=104,1,100,1,3
+msgtypeAction=56,13,100,1,3
+msgtypeSystemWarning=26,4,100,1,3
+uintTimeStampForeground=14
+colorTreeTaskBarHighlight5Foreground=255,0,0
+colorTreeTaskBarForeground=0,0,0
+colorIrcViewBackground=255,255,255
+boolUseFlatClassicTaskbarButtons=true
+boolDisableAvatars=false
+boolUserListViewDrawGrid=false
+boolUseGlobalApplicationFont=false
+iccolor0=250,250,0
+mirccolor11=170,170,255
+mirccolor4=230,0,0
+msgtypeChanUnOwner=261,3,100,1,2
+msgtypeVerbose=259,15,100,1,0
+msgtypeMeDeHalfOp=194,3,100,1,5
+msgtypeBroadcastNotice=184,5,100,1,3
+msgtypeBanExcept=69,15,100,1,1
+msgtypeNick=61,2,100,1,1
+msgtypeOwnPrivateMessage=45,1,100,1,3
+msgtypeLink=0,2,100,1,0
+uintGlobalTransparencyChildFadeFactor=50
+colorTaskBarHighlight5Text=255,0,0
+colorTreeTaskBarBackground=255,255,255
+colorIrcToolBarAppletForegroundHighContrastInactive1=40,40,40
+colorLabelBackground=255,255,255
+colorInputSelectionBackground=198,198,198
+boolObtainGlobalBackgroundFromKde=false
+pixmapLabelBackground=
+iccolor1=0,0,0
+mirccolor12=15,15,255
+mirccolor5=150,0,0
+msgtypeChanAdmin=242,3,100,1,1
+msgtypeGenericStatus=133,14,100,1,1
+msgtypeHalfOp=174,3,100,1,1
+msgtypeDevoice=63,3,100,1,1
+msgtypeJoin=39,14,100,1,2
+msgtypeMotd=30,1,100,1,0
+fontIrcView=Trebuchet%20MS,10,5,50
+colorIrcToolBarAppletForegroundHighContrastInactive2=40,40,40
+colorIrcToolBarAppletForegroundLowContrast=180,180,180
+pixmapGlobalTransparencyBackground=
+pixmapTreeTaskBarBackground=
+iccolor2=0,0,200
+mirccolor13=200,0,200
+mirccolor6=80,0,80
+msgtypeMeChanUnOwner=263,3,100,1,2
+msgtypeMeUserOp=193,3,100,1,1
+msgtypeWhoisIdle=90,2,100,1,1
+msgtypeNicknameProblem=87,3,100,1,1
+msgtypeDccError=79,5,100,1,1
+msgtypeInviteExcept=71,15,100,1,1
+msgtypeConnection=14,5,100,1,1
+msgtypeParserWarning=12,5,100,1,0
+colorUserListViewOwnForeground=126,74,131
+colorUserListViewHalfOpForeground=119,0,178
+colorIrcToolBarAppletForegroundHighContrastActive1=0,0,0
+colorMdiCaptionInactive=180,180,180
+stringExtendedPrivmsgPostfix=]%20
+boolDrawEmoticons=false
+boolIrcViewWrapMargin=true
+iccolor3=200,0,0
+mirccolor14=80,80,80
+mirccolor7=255,90,0
+msgtypeUserOp=174,3,100,1,1
+msgtypeGenericVerbose=137,14,100,1,1
+msgtypeMeUnban=196,5,100,1,5
+msgtypeMeHalfOp=193,3,100,1,5
+msgtypeInvite=176,7,100,1,4
+msgtypeIdent=171,2,100,1,3
+msgtypeChanMode=73,15,100,1,1
+msgtypeBanUnexcept=70,15,100,1,1
+msgtypeKey=65,15,100,1,2
+msgtypeServerInfo=29,1,100,1,1
+fontInput=Trebuchet%20MS,10,5,50
+colorUserListViewAwayForeground=143,143,143
+colorIrcToolBarAppletForegroundHighContrastActive2=0,60,0
+colorInputCursor=72,216,72
+boolUseSpecialColorForTimestamp=true
+pixmapIrcToolBarAppletBackground=
+iccolor4=255,255,255
+mirccolor15=170,170,170
+mirccolor8=255,255,0
+msgtypeSSL=229,2,100,1,0
+msgtypeMeVoice=190,3,100,1,5
+msgtypeChannelNotice=153,5,100,1,3
+msgtypeNotifyOnLine=94,2,100,1,1
+msgtypeCtcpReply=51,5,100,1,2
+msgtypeUnhandledReply=28,2,100,1,1
+msgtypeSystemMessage=27,2,100,1,1
+fontApplication=Sans%20Serif,10,5,50
+colorUserListViewGrid=216,216,216
+colorTreeTaskBarHighlight1Foreground=165,165,165
+colorCaptionTextActive=255,255,255
+pixmapIrcViewBackground=pixmapIrcViewBackground.png
+iccolor5=0,150,190
+mirccolor9=0,255,0
+msgtypeTextEncoding=236,1,100,1,0
+msgtypeMeDeOp=191,3,100,1,5
+msgtypeJoinError=182,5,100,1,4
+msgtypeQueryNotice=155,5,100,1,3
+msgtypeSpam=120,14,100,1,3
+msgtypeKick=110,4,100,1,2
+msgtypeDccRequest=77,5,100,1,3
+msgtypeUnban=68,5,100,1,1
+msgtypeLimit=66,15,100,1,1
+msgtypeMode=64,15,100,1,1
+msgtypePart=40,14,100,1,2
+msgtypeServerPing=36,15,100,1,0
+colorUserListViewOpForeground=200,0,0
+colorInputControl=200,100,0
+colorCaptionTextInactive2=30,30,30
+pixmapMdiBackground=
+iccolor6=0,130,0
+msgtypeHelp=49,3,100,1,1
+msgtypeMeDeUserOp=194,3,100,1,1
+msgtypeChanUnAdmin=243,3,100,1,1
+msgtypeMeKick=188,4,100,1,5
+msgtypeList=173,1,100,1,1
+msgtypeQueryNoticeCrypted=156,5,100,1,3
+msgtypeChannelPrivateMessage=46,1,100,1,3
+msgtypeSocketError=23,4,100,1,4
+msgtypeEcho=0,1,100,1,1
+uintInputPixmapAlign=32
+colorIrcToolBarAppletBackground=255,255,255
+boolShowUserChannelState=false
+boolBoldedNicks=false
+boolShowUserAndHostInPrivmsgView=false
+iccolor7=150,0,170
+msgtypeGenericCritical=134,4,100,1,4
+msgtypeGenericWarning=132,5,100,1,0
+msgtypeCtcpReplyUnknown=162,5,100,1,1
+msgtypeDccMsg=78,5,100,1,2
+msgtypeQuitSplit=60,14,100,1,2
+msgtypeCtcpRequestFlood=54,5,100,1,1
+msgtypeUrl=0,2,100,1,1
+fontLabel=Sans%20Serif,10,5,50
+fontUserListView=Sans%20Serif,10,5,50,i
+uintClassicTaskBarMaximumButtonWidth=100
+colorUserListViewSelectionBackground=194,194,194
+boolClassicTaskBarSetMaximumButtonWidth=true
diff --git a/data/deftheme/silverirc/themeinfo.kvc b/data/deftheme/silverirc/themeinfo.kvc
new file mode 100644
index 00000000..14fbdcc8
--- /dev/null
+++ b/data/deftheme/silverirc/themeinfo.kvc
@@ -0,0 +1,10 @@
+# KVIrc configuration file
+[ThemeInfo]
+Author=Alexey
+Version=0.7
+Name=SilverIRC
+MinimumKvircVersion=3.2.4
+Date=08.01.2007
+Description=Default KVIrc Theme
+ThemeInfoFileVersion=1.0.0
+Application=KVIrc 3.2.4
diff --git a/data/doctemplates/Makefile.am b/data/doctemplates/Makefile.am
new file mode 100644
index 00000000..edd47224
--- /dev/null
+++ b/data/doctemplates/Makefile.am
@@ -0,0 +1 @@
+EXTRA_DIST = rfc2812.template kvircintro.template ircintro.template
diff --git a/data/doctemplates/ircintro.template b/data/doctemplates/ircintro.template
new file mode 100644
index 00000000..9b514856
--- /dev/null
+++ b/data/doctemplates/ircintro.template
@@ -0,0 +1,60 @@
+/*
+ @doc: ircintro
+ @title:
+ Introduction to IRC
+ @short:
+ Introduction to IRC
+ @keyterms:
+ irc,channel,channels,channel operator,irc server,server,irc network,irc user,irc users,irc client,internet relay chat,nickname,nicknames,irc etiquette
+ @body:
+ [big]What is IRC ?[/big][br]
+ Internet Relay Chat (IRC) is one of the most popular and most interactive services on the Internet.
+ When you've been wondering 'where the others are?', then IRC is what you're looking for.
+ IRC allows real-time conversations with people from the whole planet, 24-hours a day, worldwide.
+ [br]
+ [big]How does it work ?[/big][br]
+ IRC consists of various separate networks (or "nets") of IRC servers: machines that allow users to connect to IRC.
+ The largest nets are EFnet (the original IRC net, often having more than 32,000 people at once), Undernet, IRCnet, DALnet, and NewNet.
+ Generally, the user (such as you) runs a program (called "irc client") to connect to a server on one of the IRC nets.
+ The server will relay the informations between you and the "rest" of the network (obviously including the other irc users).
+ Each user is known on IRC by a nickname (or "nick"), such as smartgal or FunGuy.
+ To avoid conflicts with other users, it is best to use a nick that is not too common, e.g., "john" is a poor choice.
+ Some networks allow the registration of nicknames: once you have registered a nickname noone else will be able to use it.
+ Once connected to an IRC server on an IRC network, you will usually join one or more [b]channels[/b] and converse with other irc users.
+ On EFnet, there often are more than 12,000 channels, each one devoted to a different topic.
+ [br]
+ [big]Channels[/big][br]
+ Channel names usually begin with a #, as in #irchelp.
+ The same channels are shared among all IRC servers on the same net, so you do not have to be on the same IRC server as your friends.
+ Each channel can be joined by a "virtually" unlimited number of users and every word spoken "to the channel" is
+ seen by all the users that have joined it.
+ Each channel has a topic that usually describes the ideas being exchanged between users in that moment.
+ It is a good idea to take a look at the topic before starting to talk "randomly" :).
+ Channels are run by channel operators, or just "ops" for short, who can control the channel by choosing who may join (by "banning" some users),
+ who must leave (by "kicking" them out), and even who may speak (by making the channel "moderated")!
+ Channel ops have complete control over their channel, and their decisions are final.
+ If you are banned from a channel, send a /msg to a channel op and ask nicely to be let in
+ (see the /who command in the next section to learn how to find ops).
+ If they ignore you or /who gives no response because the channel is in secret mode (+s),
+ just go somewhere else where you are more welcome.
+ Some IRC networks have a richer hierarchy of channel users and you may find half-operators, channel administrators or
+ channel owners.
+ [br]
+ [big]Just a bit of IRC Etiquette...[/big][br]
+ You'll find all kinds of people on IRC. Some nice, and some not so nice.
+ Simply behave as you would in the real world. Most people will be friendly and considerate, if you are as well.
+ When you join a channel, say hello. Don't expect to get hello's back from everyone,
+ especially when there are lots of people on the channel.
+ If you've never visited the channel before and have no idea what to expect,
+ just sit back and watch for awhile to get a feel for the flow of the channel (thats called "lurking").
+ [br]
+ [big]Finding more info[/big][br]
+ The web is full of informations about IRC: it's just a matter of typing "IRC" in a search engine.
+ An user-friendly site to start from might be www.irchelp.org: you will find a huge list of
+ documents and links that will hopefully answer to all your questions.
+ You may also give a short read to the [doc:kvircintro]Introduction to KVIrc[/doc] which will
+ give you an idea of what an IRC client is.
+ [br]
+ [big]Well...[/big][br]
+ Have fun :)
+*/
diff --git a/data/doctemplates/kvircintro.template b/data/doctemplates/kvircintro.template
new file mode 100644
index 00000000..149590af
--- /dev/null
+++ b/data/doctemplates/kvircintro.template
@@ -0,0 +1,67 @@
+/*
+ @doc: kvircintro
+ @title:
+ Introduction to KVIrc
+ @short:
+ Introduction to KVIrc
+ @keyterms:
+ KVIrc
+ @body:
+ [big]Introduction[/big]
+
+ In really simple words KVIrc is a Chat client: you use it to talk to other
+ people over the internet. More specifically KVIrc is an IRC client
+ and if you haven't readed it yet please take a look at the [doc:ircintro]IRC introduction[/doc]
+ then come back here. Now that you know what IRC is then you already know
+ that an IRC client acts as a relay for the informations that you
+ exchange with your IRC server. KVIrc also acts as a filter and provides
+ an user-friendly interface for the communication protocol that is a bit complex
+ and rude when seen in its original form (by using telnet for example).
+ KVIrc also contains a sophisticated scripting language that allows you to
+ implement automated reactions to the network events. This is something similar
+ to creating a robot that acts spontaneously after you have told him what to do.
+ The scripting language allows you to enchance the KVIrc's interface and
+ to handle special IRC network features that KVIrc itself isn't aware of.
+
+ [big]History[/big]
+
+ The original meaning of the name "KVIrc" was, more or less, "K Visual IRC Client".
+ The initial K is a common prefix for the applications written for the KDE
+ desktop environment: this was the case of the initial versions of KVIrc.
+ Starting from version 2.0.0 the absolute KDE dependancy has been dropped (for several
+ valid reasons) and the support became optional.[br]
+ "Visual" was (and is) one of the client goals: having an user-friendly interface to the IRC world.
+ Many extreme-unix users have misinterpreted the "user-friendly" interface and have tagged
+ KVIrc as a client for "newbies". Well... that is partially true: KVIrc is ALSO a client for newbies:
+ A total IRC novice should be able to "chat" in few minutes after installing the program,
+ preferably without bothering to read any manual. Yes ,I know that it is not in "unix"-style.
+ On the other side, KVIrc contains a whole bunch of compex features that can be discovered
+ only by reading the documentation and experimenting. I bet that you can also
+ find a lot of undocumented tricks :)
+
+ [big]A bit of "philosophy"[/big]
+
+ At the time of writing (Feb 2005) KVIrc approaches release 3.2.0. The small
+ [b]one-man-project[/b] has grown to the level of a small [b]community[/b].
+ People from around the world have joined our development efforts and are
+ constantly donating their time, eyes and bandwidth in order to make KVIrc
+ a really good IRC client. Besides of simply giving you a free (as in freedom!) and nice
+ program for chatting, they are giving you the great opportunity to see what's behind
+ the scenes: you have the source code for the whole application.
+ In practical terms this means more or less 300.000 lines of tested, debugged and
+ commented C++ code, several perl scripts, dozens of makefiles and all the means
+ that you need to produce a working KVIrc executable on all the supported platforms.
+ There is a lot of knowledge (some people call it "technology" because it sells better)
+ inside, ready to be acquired by an attentive reader. Don't forget that the freedom of
+ building your own executable from the sources gives you the opportunity
+ of verifying the source itself: for example you might be interested in verifying
+ that KVIrc will not run any malware code on your machine nor will collect
+ your private data and sell it to someone while you're happily chatting with a friend.
+ [b]We call it freedom, please respect it.[/b]
+
+ [big]Well...[/big]
+
+ Have fun :)[br]
+ [br]
+ Szymon Stefanek and The KVIrc Development Team
+*/
diff --git a/data/doctemplates/rfc2812.template b/data/doctemplates/rfc2812.template
new file mode 100644
index 00000000..9d81a1c8
--- /dev/null
+++ b/data/doctemplates/rfc2812.template
@@ -0,0 +1,3312 @@
+/*
+ @doc: rfc2812
+ @title:
+ RFC2812
+ @short:
+ The IRC protocol specification (revised)
+ @keyterms:
+ irc, protocol, bnf, irc user, irc channel, server protocol,
+ server messages, server replies, numeric messages
+ @body:
+
+[table]
+
+[tr][td][pre]
+Network Working Group, C.Kalt, April 2000
+Request for Comments: 2812
+Updates: 1459
+Category: Informational
+[/pre][/td][/tr]
+
+[tr][td]
+[center][big]Internet Relay Chat: Client Protocol[/big][/center]
+[/td][/tr]
+
+[tr][td]
+[b]Status of this Memo[/b]
+[/td][/tr]
+
+[tr][td]
+This memo provides information for the Internet community. It does
+not specify an Internet standard of any kind. Distribution of this
+memo is unlimited.
+[/td][/tr]
+
+[tr][td]
+[b]Copyright Notice[/b]
+[/td][/tr]
+
+[tr][td]
+Copyright (C) The Internet Society (2000). All Rights Reserved.
+[/td][/tr]
+
+[tr][td]
+[b]IESG NOTE:[/b]
+[/td][/tr]
+
+[tr][td]
+The IRC protocol itself enables several possibilities of transferring
+data between clients, and just like with other transfer mechanisms
+like email, the receiver of the data has to be careful about how the
+data is handled. For more information on security issues with the IRC
+protocol, see for example http://www.irchelp.org/irchelp/security/.
+[/td][/tr]
+
+[tr][td]
+[b]Abstract[/b]
+[/td][/tr]
+
+[tr][td]
+The IRC (Internet Relay Chat) protocol is for use with text based
+conferencing; the simplest client being any socket program capable of
+connecting to the server.
+[p]
+This document defines the Client Protocol, and assumes that the
+reader is familiar with the IRC Architecture [IRC-ARCH].
+[/td][/tr]
+
+[tr][td]
+[b]Table of Contents[/b]
+[/td][/tr]
+
+[tr][td]
+[ul]
+[li]1. Labels[/li]
+[ul]
+[li]1.1 Servers[/li]
+[li]1.2 Clients[/li]
+[ul]
+[li]1.2.1 Users[/li]
+[ul]
+[li]1.2.1.1 Operators[/li]
+[/ul]
+[li]1.2.2 Services[/li]
+[/ul]
+[li]1.3 Channels[/li]
+[/ul]
+[li]2. The IRC Client Specification[/li]
+[ul]
+[li]2.1 Overview[/li]
+[li]2.2 Character codes[/li]
+[li]2.3 Messages[/li]
+[ul]
+[li]2.3.1 Message format in Augmented BNF[/li]
+[/ul]
+[li]2.4 Numeric replies[/li]
+[li]2.5 Wildcard expressions[/li]
+[/ul]
+[li]3. Message Details[/li]
+[ul]
+[li]3.1 Connection Registration[/li]
+[ul]
+[li]3.1.1 Password message[/li]
+[li]3.1.2 Nick message[/li]
+[li]3.1.3 User message[/li]
+[li]3.1.4 Oper message[/li]
+[li]3.1.5 User mode message[/li]
+[li]3.1.6 Service message[/li]
+[li]3.1.7 Quit[/li]
+[li]3.1.8 Squit[/li]
+[/ul]
+[li]3.2 Channel operations[/li]
+[ul]
+[li]3.2.1 Join message[/li]
+[li]3.2.2 Part message[/li]
+[li]3.2.3 Channel mode message[/li]
+[li]3.2.4 Topic message[/li]
+[li]3.2.5 Names message[/li]
+[li]3.2.6 List message[/li]
+[li]3.2.7 Invite message[/li]
+[li]3.2.8 Kick command[/li]
+[/ul]
+[li]3.3 Sending messages[/li]
+[ul]
+[li]3.3.1 Private messages[/li]
+[li]3.3.2 Notice[/li]
+[/ul]
+[li]3.4 Server queries and commands[/li]
+[ul]
+[li]3.4.1 Motd message[/li]
+[li]3.4.2 Lusers message[/li]
+[li]3.4.3 Version message[/li]
+[li]3.4.4 Stats message[/li]
+[li]3.4.5 Links message[/li]
+[li]3.4.6 Time message[/li]
+[li]3.4.7 Connect message[/li]
+[li]3.4.8 Trace message[/li]
+[li]3.4.9 Admin command[/li]
+[li]3.4.10 Info command[/li]
+[/ul]
+[li]3.5 Service Query and Commands[/li]
+[ul]
+[li]3.5.1 Servlist message[/li]
+[li]3.5.2 Squery[/li]
+[/ul]
+[li]3.6 User based queries[/li]
+[ul]
+[li]3.6.1 Who query[/li]
+[li]3.6.2 Whois query[/li]
+[li]3.6.3 Whowas[/li]
+[/ul]
+[li]3.7 Miscellaneous messages[/li]
+[ul]
+[li]3.7.1 Kill message[/li]
+[li]3.7.2 Ping message[/li]
+[li]3.7.3 Pong message[/li]
+[li]3.7.4 Error[/li]
+[/ul]
+[/ul]
+[li]4. Optional features[/li]
+[ul]
+[li]4.1 Away[/li]
+[li]4.2 Rehash message[/li]
+[li]4.3 Die message[/li]
+[li]4.4 Restart message[/li]
+[li]4.5 Summon message[/li]
+[li]4.6 Users[/li]
+[li]4.7 Operwall message[/li]
+[li]4.8 Userhost message[/li]
+[li]4.9 Ison message[/li]
+[/ul]
+[li]5. Replies[/li]
+[ul]
+[li]5.1 Command responses[/li]
+[li]5.2 Error Replies[/li]
+[li]5.3 Reserved numerics[/li]
+[/ul]
+[li]6. Current implementations[/li]
+[li]7. Current problems[/li]
+[ul]
+[li]7.1 Nicknames[/li]
+[li]7.2 Limitation of wildcards[/li]
+[li]7.3 Security considerations[/li]
+[/ul]
+[li]8. Current support and availability[/li]
+[li]9. Acknowledgements[/li]
+[li]10. References[/li]
+[li]11. Author's Address[/li]
+[li]12. Full Copyright Statement[/li]
+[/ul]
+[/td][/tr]
+
+[tr][td]
+[b]1. Labels[/b]
+[/td][/tr]
+
+[tr][td]
+This section defines the identifiers used for the various components
+of the IRC protocol.
+[/td][/tr]
+
+[tr][td]
+[b]1.1 Servers[/b]
+[/td][/tr]
+
+[tr][td]
+Servers are uniquely identified by their name, which has a maximum
+length of sixty three (63) characters. See the protocol grammar
+rules (section 2.3.1) for what may and may not be used in a server
+name.
+[/td][/tr]
+
+[tr][td]
+[b]1.2 Clients[/b]
+[/td][/tr]
+
+[tr][td]
+For each client all servers MUST have the following information: a
+netwide unique identifier (whose format depends on the type of
+client) and the server which introduced the client.
+[/td][/tr]
+
+[tr][td]
+[b]1.2.1 Users[/b]
+[/td][/tr]
+
+[tr][td]
+Each user is distinguished from other users by a unique nickname
+having a maximum length of nine (9) characters. See the protocol
+grammar rules (section 2.3.1) for what may and may not be used in a
+nickname.
+[p]
+While the maximum length is limited to nine characters, clients
+SHOULD accept longer strings as they may become used in future
+evolutions of the protocol.
+[/td][/tr]
+
+[tr][td]
+[b]1.2.1.1 Operators[/b]
+[/td][/tr]
+
+[tr][td]
+To allow a reasonable amount of order to be kept within the IRC
+network, a special class of users (operators) is allowed to perform
+general maintenance functions on the network. Although the powers
+granted to an operator can be considered as 'dangerous', they are
+nonetheless often necessary. Operators SHOULD be able to perform
+basic network tasks such as disconnecting and reconnecting servers as
+needed. In recognition of this need, the protocol discussed herein
+provides for operators only to be able to perform such functions.
+See sections 3.1.8 (SQUIT) and 3.4.7 (CONNECT).[br]
+[p]
+A more controversial power of operators is the ability to remove a
+user from the connected network by 'force', i.e., operators are able
+to close the connection between any client and server. The
+justification for this is very delicate since its abuse is both
+destructive and annoying, and its benefits close to inexistent. For
+further details on this type of action, see section 3.7.1 (KILL).
+[/td][/tr]
+
+[tr][td]
+[b]1.2.2 Services[/b]
+[/td][/tr]
+
+[tr][td]
+Each service is distinguished from other services by a service name
+composed of a nickname and a server name. As for users, the nickname
+has a maximum length of nine (9) characters. See the protocol
+grammar rules (section 2.3.1) for what may and may not be used in a
+nickname.
+[/td][/tr]
+
+[tr][td]
+[b]1.3 Channels[/b]
+[/td][/tr]
+
+[tr][td]
+Channels names are strings (beginning with a '&', '#', '+' or '!'
+character) of length up to fifty (50) characters. Apart from the
+requirement that the first character is either '&', '#', '+' or '!',
+the only restriction on a channel name is that it SHALL NOT contain
+any spaces (' '), a control G (^G or ASCII 7), a comma (','). Space
+is used as parameter separator and command is used as a list item
+separator by the protocol). A colon (':') can also be used as a
+delimiter for the channel mask. Channel names are case insensitive.
+See the protocol grammar rules (section 2.3.1) for the exact syntax
+of a channel name.[br]
+[p]
+Each prefix characterizes a different channel type. The definition
+of the channel types is not relevant to the client-server protocol
+and thus it is beyond the scope of this document. More details can
+be found in "Internet Relay Chat: Channel Management" [IRC-CHAN].
+[/td][/tr]
+
+[tr][td]
+[b]2. The IRC Client Specification[/b]
+[/td][/tr]
+
+[tr][td]
+[b]2.1 Overview[/b]
+[/td][/tr]
+
+[tr][td]
+The protocol as described herein is for use only with client to
+server connections when the client registers as a user.
+[/td][/tr]
+
+[tr][td]
+[b]2.2 Character codes[/b]
+[/td][/tr]
+
+[tr][td]
+No specific character set is specified. The protocol is based on a
+set of codes which are composed of eight (8) bits, making up an
+octet. Each message may be composed of any number of these octets;
+however, some octet values are used for control codes, which act as
+message delimiters.[br]
+[p]
+Regardless of being an 8-bit protocol, the delimiters and keywords
+are such that protocol is mostly usable from US-ASCII terminal and a
+telnet connection.
+[p]
+Because of IRC's Scandinavian origin, the characters {}|^ are
+considered to be the lower case equivalents of the characters []\~,
+respectively. This is a critical issue when determining the
+equivalence of two nicknames or channel names.
+[/td][/tr]
+
+[tr][td]
+[b]2.3 Messages[/b]
+[/td][/tr]
+
+[tr][td]
+Servers and clients send each other messages, which may or may not
+generate a reply. If the message contains a valid command, as
+described in later sections, the client should expect a reply as
+specified but it is not advised to wait forever for the reply; client
+to server and server to server communication is essentially
+asynchronous by nature.
+[p]
+Each IRC message may consist of up to three main parts: the prefix
+(OPTIONAL), the command, and the command parameters (maximum of
+fifteen (15)). The prefix, command, and all parameters are separated
+by one ASCII space character (0x20) each.
+[p]
+The presence of a prefix is indicated with a single leading ASCII
+colon character (':', 0x3b), which MUST be the first character of the
+message itself. There MUST be NO gap (whitespace) between the colon
+and the prefix. The prefix is used by servers to indicate the true
+origin of the message. If the prefix is missing from the message, it
+is assumed to have originated from the connection from which it was
+received from. Clients SHOULD NOT use a prefix when sending a
+message; if they use one, the only valid prefix is the registered
+nickname associated with the client.
+[p]
+The command MUST either be a valid IRC command or a three (3) digit
+number represented in ASCII text.
+[p]
+IRC messages are always lines of characters terminated with a CR-LF
+(Carriage Return - Line Feed) pair, and these messages SHALL NOT
+exceed 512 characters in length, counting all characters including
+the trailing CR-LF. Thus, there are 510 characters maximum allowed
+for the command and its parameters. There is no provision for
+continuation of message lines. See section 6 for more details about
+current implementations.
+[/td][/tr]
+
+[tr][td]
+[b]2.3.1 Message format in Augmented BNF[/b]
+[/td][/tr]
+
+[tr][td]
+The protocol messages must be extracted from the contiguous stream of
+octets. The current solution is to designate two characters, CR and
+LF, as message separators. Empty messages are silently ignored,
+which permits use of the sequence CR-LF between messages without
+extra problems.
+[p]
+The extracted message is parsed into the components <prefix>,
+<command> and list of parameters (<params>).
+[p]
+[pre]
+ The Augmented BNF representation for this is:
+
+ message = [ ":" prefix SPACE ] command [ params ] crlf
+ prefix = servername / ( nickname [ [ "!" user ] "@" host ] )
+ command = 1*letter / 3digit
+ params = *14( SPACE middle ) [ SPACE ":" trailing ]
+ =/ 14( SPACE middle ) [ SPACE [ ":" ] trailing ]
+
+ nospcrlfcl = %x01-09 / %x0B-0C / %x0E-1F / %x21-39 / %x3B-FF
+ ; any octet except NUL, CR, LF, " " and ":"
+ middle = nospcrlfcl *( ":" / nospcrlfcl )
+ trailing = *( ":" / " " / nospcrlfcl )
+
+ SPACE = %x20 ; space character
+ crlf = %x0D %x0A ; "carriage return" "linefeed"
+
+ NOTES:
+ 1) After extracting the parameter list, all parameters are equal
+ whether matched by <middle> or <trailing>. <trailing> is just a
+ syntactic trick to allow SPACE within the parameter.
+
+ 2) The NUL (%x00) character is not special in message framing, and
+ basically could end up inside a parameter, but it would cause
+ extra complexities in normal C string handling. Therefore, NUL
+ is not allowed within messages.
+
+ Most protocol messages specify additional semantics and syntax for
+ the extracted parameter strings dictated by their position in the
+ list. For example, many server commands will assume that the first
+ parameter after the command is the list of targets, which can be
+ described with:
+
+ target = nickname / server
+ msgtarget = msgto *( "," msgto )
+ msgto = channel / ( user [ "%" host ] "@" servername )
+ msgto =/ ( user "%" host ) / targetmask
+ msgto =/ nickname / ( nickname "!" user "@" host )
+ channel = ( "#" / "+" / ( "!" channelid ) / "&" ) chanstring
+ [ ":" chanstring ]
+ servername = hostname
+ host = hostname / hostaddr
+ hostname = shortname *( "." shortname )
+ shortname = ( letter / digit ) *( letter / digit / "-" )
+ *( letter / digit )
+ ; as specified in RFC 1123 [HNAME]
+ hostaddr = ip4addr / ip6addr
+ ip4addr = 1*3digit "." 1*3digit "." 1*3digit "." 1*3digit
+ ip6addr = 1*hexdigit 7( ":" 1*hexdigit )
+ ip6addr =/ "0:0:0:0:0:" ( "0" / "FFFF" ) ":" ip4addr
+ nickname = ( letter / special ) *8( letter / digit / special / "-" )
+ targetmask = ( "$" / "#" ) mask
+ ; see details on allowed masks in section 3.3.1
+ chanstring = %x01-07 / %x08-09 / %x0B-0C / %x0E-1F / %x21-2B
+ chanstring =/ %x2D-39 / %x3B-FF
+ ; any octet except NUL, BELL, CR, LF, " ", "," and ":"
+ channelid = 5( %x41-5A / digit ) ; 5( A-Z / 0-9 )
+
+ Other parameter syntaxes are:
+
+ user = 1*( %x01-09 / %x0B-0C / %x0E-1F / %x21-3F / %x41-FF )
+ ; any octet except NUL, CR, LF, " " and "@"
+ key = 1*23( %x01-05 / %x07-08 / %x0C / %x0E-1F / %x21-7F )
+ ; any 7-bit US_ASCII character,
+ ; except NUL, CR, LF, FF, h/v TABs, and " "
+ letter = %x41-5A / %x61-7A ; A-Z / a-z
+ digit = %x30-39 ; 0-9
+ hexdigit = digit / "A" / "B" / "C" / "D" / "E" / "F"
+ special = %x5B-60 / %x7B-7D
+ ; "[", "]", "\", "`", "_", "^", "{", "|", "}"
+
+ NOTES:
+ 1) The <hostaddr> syntax is given here for the sole purpose of
+ indicating the format to follow for IP addresses. This
+ reflects the fact that the only available implementations of
+ this protocol uses TCP/IP as underlying network protocol but is
+ not meant to prevent other protocols to be used.
+
+ 2) <hostname> has a maximum length of 63 characters. This is a
+ limitation of the protocol as internet hostnames (in
+ particular) can be longer. Such restriction is necessary
+ because IRC messages are limited to 512 characters in length.
+ Clients connecting from a host which name is longer than 63
+ characters are registered using the host (numeric) address
+ instead of the host name.
+
+ 3) Some parameters used in the following sections of this
+ documents are not defined here as there is nothing specific
+ about them besides the name that is used for convenience.
+ These parameters follow the general syntax defined for
+ <params>.
+[/pre]
+[/td][/tr]
+
+[tr][td]
+[b]2.4 Numeric replies[/b]
+[/td][/tr]
+
+[tr][td]
+Most of the messages sent to the server generate a reply of some
+sort. The most common reply is the numeric reply, used for both
+errors and normal replies. The numeric reply MUST be sent as one
+message consisting of the sender prefix, the three-digit numeric, and
+the target of the reply. A numeric reply is not allowed to originate
+from a client. In all other respects, a numeric reply is just like a
+normal message, except that the keyword is made up of 3 numeric
+digits rather than a string of letters. A list of different replies
+is supplied in section 5 (Replies).
+[/td][/tr]
+
+[tr][td]
+[b]2.5 Wildcard expressions[/b]
+[/td][/tr]
+
+[tr][td]
+When wildcards are allowed in a string, it is referred as a "mask".
+[p]
+For string matching purposes, the protocol allows the use of two
+special characters: '?' (%x3F) to match one and only one character,
+and '*' (%x2A) to match any number of any characters. These two
+characters can be escaped using the character '\' (%x5C).
+[p]
+[pre]
+ The Augmented BNF syntax for this is:
+
+ mask = *( nowild / noesc wildone / noesc wildmany )
+ wildone = %x3F
+ wildmany = %x2A
+ nowild = %x01-29 / %x2B-3E / %x40-FF
+ ; any octet except NUL, "*", "?"
+ noesc = %x01-5B / %x5D-FF
+ ; any octet except NUL and "\"
+ matchone = %x01-FF
+ ; matches wildone
+ matchmany = *matchone
+ ; matches wildmany
+
+ Examples:
+
+ a?c ; Matches any string of 3 characters in length starting
+ with "a" and ending with "c"
+
+ a*c ; Matches any string of at least 2 characters in length
+ starting with "a" and ending with "c"
+[/pre]
+[/td][/tr]
+
+[tr][td]
+[b]3. Message Details[/b]
+[/td][/tr]
+
+[tr][td]
+On the following pages there are descriptions of each message
+recognized by the IRC server and client. All commands described in
+this section MUST be implemented by any server for this protocol.
+[p]
+Where the reply ERR_NOSUCHSERVER is returned, it means that the
+target of the message could not be found. The server MUST NOT send
+any other replies after this error for that command.
+[p]
+The server to which a client is connected is required to parse the
+complete message, and return any appropriate errors.
+[p]
+If multiple parameters is presented, then each MUST be checked for
+validity and appropriate responses MUST be sent back to the client.
+In the case of incorrect messages which use parameter lists with
+comma as an item separator, a reply MUST be sent for each item.
+[/td][/tr]
+
+[tr][td]
+[b]3.1 Connection Registration[/b]
+[/td][/tr]
+
+[tr][td]
+The commands described here are used to register a connection with an
+IRC server as a user as well as to correctly disconnect.
+[p]
+A "PASS" command is not required for a client connection to be
+registered, but it MUST precede the latter of the NICK/USER
+combination (for a user connection) or the SERVICE command (for a
+service connection). The RECOMMENDED order for a client to register
+is as follows:
+[p]
+[pre]
+ 1. Pass message
+ 2. Nick message 2. Service message
+ 3. User message
+[/pre]
+[p]
+Upon success, the client will receive an RPL_WELCOME (for users) or
+RPL_YOURESERVICE (for services) message indicating that the
+connection is now registered and known the to the entire IRC network.
+The reply message MUST contain the full client identifier upon which
+it was registered.
+[/td][/tr]
+
+[tr][td]
+[b]3.1.1 Password message[/b]
+[/td][/tr]
+
+[tr][td][pre]
+Command: PASS
+Parameters: <password>
+
+The PASS command is used to set a 'connection password'. The
+optional password can and MUST be set before any attempt to register
+the connection is made. Currently this requires that user send a
+PASS command before sending the NICK/USER combination.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_ALREADYREGISTRED
+
+ Example:
+
+ PASS secretpasswordhere
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.1.2 Nick message[/b]
+[/pre][/td][/tr]
+
+
+[tr][td][pre]
+Command: NICK
+Parameters: <nickname>
+
+NICK command is used to give user a nickname or change the existing
+one.
+
+ Numeric Replies:
+
+ ERR_NONICKNAMEGIVEN ERR_ERRONEUSNICKNAME
+ ERR_NICKNAMEINUSE ERR_NICKCOLLISION
+ ERR_UNAVAILRESOURCE ERR_RESTRICTED
+
+ Examples:
+
+ NICK Wiz ; Introducing new nick "Wiz" if session is
+ still unregistered, or user changing his
+ nickname to "Wiz"
+
+ :[email protected] NICK Kilroy
+ ; Server telling that WiZ changed his
+ nickname to Kilroy.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.1.3 User message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: USER
+Parameters: <user> <mode> <unused> <realname>
+
+The USER command is used at the beginning of connection to specify
+the username, hostname and realname of a new user.
+
+The <mode> parameter should be a numeric, and can be used to
+automatically set user modes when registering with the server. This
+parameter is a bitmask, with only 2 bits having any signification: if
+the bit 2 is set, the user mode 'w' will be set and if the bit 3 is
+set, the user mode 'i' will be set. (See Section 3.1.5 "User
+Modes").
+
+The <realname> may contain space characters.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_ALREADYREGISTRED
+
+ Example:
+
+ USER guest 0 * :Ronnie Reagan ; User registering themselves with a
+ username of "guest" and real name
+ "Ronnie Reagan".
+
+ USER guest 8 * :Ronnie Reagan ; User registering themselves with a
+ username of "guest" and real name
+ "Ronnie Reagan", and asking to be set
+ invisible.
+[/pre][/td][/tr]
+
+
+[tr][td][pre]
+[b]3.1.4 Oper message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: OPER
+Parameters: <name> <password>
+
+A normal user uses the OPER command to obtain operator privileges.
+The combination of <name> and <password> are REQUIRED to gain
+Operator privileges. Upon success, the user will receive a MODE
+message (see section 3.1.5) indicating the new user modes.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS RPL_YOUREOPER
+ ERR_NOOPERHOST ERR_PASSWDMISMATCH
+
+ Example:
+
+ OPER foo bar ; Attempt to register as an operator
+ using a username of "foo" and "bar"
+ as the password.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.1.5 User mode message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: MODE
+Parameters: <nickname>
+*( ( "+" / "-" ) *( "i" / "w" / "o" / "O" / "r" ) )
+
+The user MODE's are typically changes which affect either how the
+client is seen by others or what 'extra' messages the client is sent.
+
+A user MODE command MUST only be accepted if both the sender of the
+message and the nickname given as a parameter are both the same. If
+no other parameter is given, then the server will return the current
+settings for the nick.
+
+ The available modes are as follows:
+
+ a - user is flagged as away;
+ i - marks a users as invisible;
+ w - user receives wallops;
+ r - restricted user connection;
+ o - operator flag;
+ O - local operator flag;
+ s - marks a user for receipt of server notices.
+
+Additional modes may be available later on.
+The flag 'a' SHALL NOT be toggled by the user using the MODE command,
+instead use of the AWAY command is REQUIRED.
+
+If a user attempts to make themselves an operator using the "+o" or
+"+O" flag, the attempt SHOULD be ignored as users could bypass the
+authentication mechanisms of the OPER command. There is no
+restriction, however, on anyone `deopping' themselves (using "-o" or
+"-O").
+
+On the other hand, if a user attempts to make themselves unrestricted
+using the "-r" flag, the attempt SHOULD be ignored. There is no
+restriction, however, on anyone `deopping' themselves (using "+r").
+This flag is typically set by the server upon connection for
+administrative reasons. While the restrictions imposed are left up
+to the implementation, it is typical that a restricted user not be
+allowed to change nicknames, nor make use of the channel operator
+status on channels.
+
+The flag 's' is obsolete but MAY still be used.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_USERSDONTMATCH
+ ERR_UMODEUNKNOWNFLAG RPL_UMODEIS
+
+ Examples:
+
+ MODE WiZ -w ; Command by WiZ to turn off
+ reception of WALLOPS messages.
+
+ MODE Angel +i ; Command from Angel to make herself
+ invisible.
+
+ MODE WiZ -o ; WiZ 'deopping' (removing operator
+ status).
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.1.6 Service message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: SERVICE
+Parameters: <nickname> <reserved> <distribution> <type>
+<reserved> <info>
+
+The SERVICE command to register a new service. Command parameters
+specify the service nickname, distribution, type and info of a new
+service.
+The <distribution> parameter is used to specify the visibility of a
+service. The service may only be known to servers which have a name
+matching the distribution. For a matching server to have knowledge
+of the service, the network path between that server and the server
+on which the service is connected MUST be composed of servers which
+names all match the mask.
+
+The <type> parameter is currently reserved for future usage.
+
+ Numeric Replies:
+
+ ERR_ALREADYREGISTRED ERR_NEEDMOREPARAMS
+ ERR_ERRONEUSNICKNAME
+ RPL_YOURESERVICE RPL_YOURHOST
+ RPL_MYINFO
+
+ Example:
+
+ SERVICE dict * *.fr 0 0 :French Dictionary ; Service registering
+ itself with a name of "dict". This
+ service will only be available on
+ servers which name matches "*.fr".
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.1.7 Quit[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: QUIT
+Parameters: [ <Quit Message> ]
+
+A client session is terminated with a quit message. The server
+acknowledges this by sending an ERROR message to the client.
+
+ Numeric Replies:
+
+ None.
+
+ Example:
+
+ QUIT :Gone to have lunch ; Preferred message format.
+
+ :[email protected] QUIT :Gone to have lunch ; User
+ syrk has quit IRC to have lunch.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.1.8 Squit[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: SQUIT
+Parameters: <server> <comment>
+
+The SQUIT command is available only to operators. It is used to
+disconnect server links. Also servers can generate SQUIT messages on
+error conditions. A SQUIT message may also target a remote server
+connection. In this case, the SQUIT message will simply be sent to
+the remote server without affecting the servers in between the
+operator and the remote server.
+
+The <comment> SHOULD be supplied by all operators who execute a SQUIT
+for a remote server. The server ordered to disconnect its peer
+generates a WALLOPS message with <comment> included, so that other
+users may be aware of the reason of this action.
+
+ Numeric replies:
+
+ ERR_NOPRIVILEGES ERR_NOSUCHSERVER
+ ERR_NEEDMOREPARAMS
+
+ Examples:
+
+ SQUIT tolsun.oulu.fi :Bad Link ? ; Command to uplink of the server
+ tolson.oulu.fi to terminate its
+ connection with comment "Bad Link".
+
+ :Trillian SQUIT cm22.eng.umd.edu :Server out of control ; Command
+ from Trillian from to disconnect
+ "cm22.eng.umd.edu" from the net with
+ comment "Server out of control".
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.2 Channel operations[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+This group of messages is concerned with manipulating channels, their
+properties (channel modes), and their contents (typically users).
+For this reason, these messages SHALL NOT be made available to
+services.
+
+All of these messages are requests which will or will not be granted
+by the server. The server MUST send a reply informing the user
+whether the request was granted, denied or generated an error. When
+the server grants the request, the message is typically sent back
+(eventually reformatted) to the user with the prefix set to the user
+itself.
+
+The rules governing how channels are managed are enforced by the
+servers. These rules are beyond the scope of this document. More
+details are found in "Internet Relay Chat: Channel Management" [IRC-
+CHAN].
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.2.1 Join message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: JOIN
+Parameters: ( <channel> *( "," <channel> ) [ <key> *( "," <key> ) ] )
+/ "0"
+
+The JOIN command is used by a user to request to start listening to
+the specific channel. Servers MUST be able to parse arguments in the
+form of a list of target, but SHOULD NOT use lists when sending JOIN
+messages to clients.
+
+Once a user has joined a channel, he receives information about
+all commands his server receives affecting the channel. This
+includes JOIN, MODE, KICK, PART, QUIT and of course PRIVMSG/NOTICE.
+This allows channel members to keep track of the other channel
+members, as well as channel modes.
+
+If a JOIN is successful, the user receives a JOIN message as
+confirmation and is then sent the channel's topic (using RPL_TOPIC) and
+the list of users who are on the channel (using RPL_NAMREPLY), which
+MUST include the user joining.
+
+Note that this message accepts a special argument ("0"), which is
+a special request to leave all channels the user is currently a member
+of. The server will process this message as if the user had sent
+a PART command (See Section 3.2.2) for each channel he is a member
+of.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_BANNEDFROMCHAN
+ ERR_INVITEONLYCHAN ERR_BADCHANNELKEY
+ ERR_CHANNELISFULL ERR_BADCHANMASK
+ ERR_NOSUCHCHANNEL ERR_TOOMANYCHANNELS
+ ERR_TOOMANYTARGETS ERR_UNAVAILRESOURCE
+ RPL_TOPIC
+
+ Examples:
+
+ JOIN #foobar ; Command to join channel #foobar.
+
+ JOIN &foo fubar ; Command to join channel &foo using
+ key "fubar".
+
+ JOIN #foo,&bar fubar ; Command to join channel #foo using
+ key "fubar" and &bar using no key.
+
+ JOIN #foo,#bar fubar,foobar ; Command to join channel #foo using
+ key "fubar", and channel #bar using
+ key "foobar".
+
+ JOIN #foo,#bar ; Command to join channels #foo and
+ #bar.
+
+ JOIN 0 ; Leave all currently joined
+ channels.
+
+ :[email protected] JOIN #Twilight_zone ; JOIN message from WiZ
+ on channel #Twilight_zone
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.2.2 Part message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: PART
+Parameters: <channel> *( "," <channel> ) [ <Part Message> ]
+
+The PART command causes the user sending the message to be removed
+from the list of active members for all given channels listed in the
+parameter string. If a "Part Message" is given, this will be sent
+instead of the default message, the nickname. This request is always
+granted by the server.
+
+Servers MUST be able to parse arguments in the form of a list of
+target, but SHOULD NOT use lists when sending PART messages to
+clients.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_NOSUCHCHANNEL
+ ERR_NOTONCHANNEL
+
+ Examples:
+
+ PART #twilight_zone ; Command to leave channel
+ "#twilight_zone"
+
+ PART #oz-ops,&group5 ; Command to leave both channels
+ "&group5" and "#oz-ops".
+
+ :[email protected] PART #playzone :I lost
+ ; User WiZ leaving channel
+ "#playzone" with the message "I
+ lost".
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.2.3 Channel mode message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: MODE
+Parameters: <channel> *( ( "-" / "+" ) *<modes> *<modeparams> )
+
+The MODE command is provided so that users may query and change the
+characteristics of a channel. For more details on available modes
+and their uses, see "Internet Relay Chat: Channel Management" [IRC-
+CHAN]. Note that there is a maximum limit of three (3) changes per
+command for modes that take a parameter.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_KEYSET
+ ERR_NOCHANMODES ERR_CHANOPRIVSNEEDED
+ ERR_USERNOTINCHANNEL ERR_UNKNOWNMODE
+ RPL_CHANNELMODEIS
+ RPL_BANLIST RPL_ENDOFBANLIST
+ RPL_EXCEPTLIST RPL_ENDOFEXCEPTLIST
+ RPL_INVITELIST RPL_ENDOFINVITELIST
+ RPL_UNIQOPIS
+
+ The following examples are given to help understanding the syntax of
+ the MODE command, but refer to modes defined in "Internet Relay Chat:
+ Channel Management" [IRC-CHAN].
+
+ Examples:
+
+ MODE #Finnish +imI *!*@*.fi ; Command to make #Finnish channel
+ moderated and 'invite-only' with user
+ with a hostname matching *.fi
+ automatically invited.
+
+ MODE #Finnish +o Kilroy ; Command to give 'chanop' privileges
+ to Kilroy on channel #Finnish.
+
+ MODE #Finnish +v Wiz ; Command to allow WiZ to speak on
+ #Finnish.
+
+ MODE #Fins -s ; Command to remove 'secret' flag
+ from channel #Fins.
+
+ MODE #42 +k oulu ; Command to set the channel key to
+ "oulu".
+
+ MODE #42 -k oulu ; Command to remove the "oulu"
+ channel key on channel "#42".
+
+ MODE #eu-opers +l 10 ; Command to set the limit for the
+ number of users on channel
+ "#eu-opers" to 10.
+
+ :[email protected] MODE #eu-opers -l
+ ; User "WiZ" removing the limit for
+ the number of users on channel "#eu-
+ opers".
+
+ MODE &oulu +b ; Command to list ban masks set for
+ the channel "&oulu".
+
+ MODE &oulu +b *!*@* ; Command to prevent all users from
+ joining.
+
+ MODE &oulu +b *!*@*.edu +e *!*@*.bu.edu
+ ; Command to prevent any user from a
+ hostname matching *.edu from joining,
+ except if matching *.bu.edu
+
+ MODE #bu +be *!*@*.edu *!*@*.bu.edu
+ ; Comment to prevent any user from a
+ hostname matching *.edu from joining,
+ except if matching *.bu.edu
+
+ MODE #meditation e ; Command to list exception masks set
+ for the channel "#meditation".
+
+ MODE #meditation I ; Command to list invitations masks
+ set for the channel "#meditation".
+
+ MODE !12345ircd O ; Command to ask who the channel
+ creator for "!12345ircd" is
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.2.4 Topic message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: TOPIC
+Parameters: <channel> [ <topic> ]
+
+The TOPIC command is used to change or view the topic of a channel.
+The topic for channel <channel> is returned if there is no <topic>
+given. If the <topic> parameter is present, the topic for that
+channel will be changed, if this action is allowed for the user
+requesting it. If the <topic> parameter is an empty string, the
+topic for that channel will be removed.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_NOTONCHANNEL
+ RPL_NOTOPIC RPL_TOPIC
+ ERR_CHANOPRIVSNEEDED ERR_NOCHANMODES
+
+ Examples:
+
+ :[email protected] TOPIC #test :New topic ; User Wiz setting the
+ topic.
+
+ TOPIC #test :another topic ; Command to set the topic on #test
+ to "another topic".
+
+ TOPIC #test : ; Command to clear the topic on
+ #test.
+
+ TOPIC #test ; Command to check the topic for
+ #test.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.2.5 Names message[/b]
+
+Command: NAMES
+Parameters: [ <channel> *( "," <channel> ) [ <target> ] ]
+
+By using the NAMES command, a user can list all nicknames that are
+visible to him. For more details on what is visible and what is not,
+see "Internet Relay Chat: Channel Management" [IRC-CHAN]. The
+<channel> parameter specifies which channel(s) to return information
+about. There is no error reply for bad channel names.
+
+If no <channel> parameter is given, a list of all channels and their
+occupants is returned. At the end of this list, a list of users who
+are visible but either not on any channel or not on a visible channel
+are listed as being on `channel' "*".
+
+If the <target> parameter is specified, the request is forwarded to
+that server which will generate the reply.
+
+Wildcards are allowed in the <target> parameter.
+
+ Numerics:
+
+ ERR_TOOMANYMATCHES ERR_NOSUCHSERVER
+ RPL_NAMREPLY RPL_ENDOFNAMES
+
+ Examples:
+
+ NAMES #twilight_zone,#42 ; Command to list visible users on
+ #twilight_zone and #42
+
+ NAMES ; Command to list all visible
+ channels and users
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.2.6 List message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: LIST
+Parameters: [ <channel> *( "," <channel> ) [ <target> ] ]
+
+The list command is used to list channels and their topics. If the
+<channel> parameter is used, only the status of that channel is
+displayed.
+
+If the <target> parameter is specified, the request is forwarded to
+that server which will generate the reply.
+
+Wildcards are allowed in the <target> parameter.
+
+ Numeric Replies:
+
+ ERR_TOOMANYMATCHES ERR_NOSUCHSERVER
+ RPL_LIST RPL_LISTEND
+
+ Examples:
+
+ LIST ; Command to list all channels.
+
+ LIST #twilight_zone,#42 ; Command to list channels
+ #twilight_zone and #42
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.2.7 Invite message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: INVITE
+Parameters: <nickname> <channel>
+
+The INVITE command is used to invite a user to a channel. The
+parameter <nickname> is the nickname of the person to be invited to
+the target channel <channel>. There is no requirement that the
+channel the target user is being invited to must exist or be a valid
+channel. However, if the channel exists, only members of the channel
+are allowed to invite other users. When the channel has invite-only
+flag set, only channel operators may issue INVITE command.
+Only the user inviting and the user being invited will receive
+notification of the invitation. Other channel members are not
+notified. (This is unlike the MODE changes, and is occasionally the
+source of trouble for users.)
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_NOSUCHNICK
+ ERR_NOTONCHANNEL ERR_USERONCHANNEL
+ ERR_CHANOPRIVSNEEDED
+ RPL_INVITING RPL_AWAY
+
+ Examples:
+
+ :[email protected] INVITE Wiz #Dust
+
+ ; Message to WiZ when he has been
+ invited by user Angel to channel
+ #Dust
+
+ INVITE Wiz #Twilight_Zone ; Command to invite WiZ to
+ #Twilight_zone
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.2.8 Kick command[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: KICK
+Parameters: <channel> *( "," <channel> ) <user> *( "," <user> )
+[<comment>]
+
+The KICK command can be used to request the forced removal of a user
+from a channel. It causes the <user> to PART from the <channel> by
+force. For the message to be syntactically correct, there MUST be
+either one channel parameter and multiple user parameter, or as many
+channel parameters as there are user parameters. If a "comment" is
+given, this will be sent instead of the default message, the nickname
+of the user issuing the KICK.
+
+The server MUST NOT send KICK messages with multiple channels or
+users to clients. This is necessarily to maintain backward
+compatibility with old client software.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS ERR_NOSUCHCHANNEL
+ ERR_BADCHANMASK ERR_CHANOPRIVSNEEDED
+ ERR_USERNOTINCHANNEL ERR_NOTONCHANNEL
+
+ Examples:
+
+ KICK &Melbourne Matthew ; Command to kick Matthew from
+ &Melbourne
+
+ KICK #Finnish John :Speaking English
+ ; Command to kick John from #Finnish
+ using "Speaking English" as the
+ reason (comment).
+
+ :[email protected] KICK #Finnish John
+ ; KICK message on channel #Finnish
+ from WiZ to remove John from channel
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.3 Sending messages[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+The main purpose of the IRC protocol is to provide a base for clients
+to communicate with each other. PRIVMSG, NOTICE and SQUERY
+(described in Section 3.5 on Service Query and Commands) are the only
+messages available which actually perform delivery of a text message
+from one client to another - the rest just make it possible and try
+to ensure it happens in a reliable and structured manner.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.3.1 Private messages[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: PRIVMSG
+Parameters: <msgtarget> <text to be sent>
+
+PRIVMSG is used to send private messages between users, as well as to
+send messages to channels. <msgtarget> is usually the nickname of
+the recipient of the message, or a channel name.
+
+The <msgtarget> parameter may also be a host mask (#<mask>) or server
+mask ($<mask>). In both cases the server will only send the PRIVMSG
+to those who have a server or host matching the mask. The mask MUST
+have at least 1 (one) "." in it and no wildcards following the last
+".". This requirement exists to prevent people sending messages to
+"#*" or "$*", which would broadcast to all users. Wildcards are the
+'*' and '?' characters. This extension to the PRIVMSG command is
+only available to operators.
+
+ Numeric Replies:
+
+ ERR_NORECIPIENT ERR_NOTEXTTOSEND
+ ERR_CANNOTSENDTOCHAN ERR_NOTOPLEVEL
+ ERR_WILDTOPLEVEL ERR_TOOMANYTARGETS
+ ERR_NOSUCHNICK
+ RPL_AWAY
+
+ Examples:
+
+ :[email protected] PRIVMSG Wiz :Are you receiving this message ?
+ ; Message from Angel to Wiz.
+
+ PRIVMSG Angel :yes I'm receiving it !
+ ; Command to send a message to Angel.
+
+ PRIVMSG [email protected] :Hello !
+ ; Command to send a message to a user
+ on server tolsun.oulu.fi with
+ username of "jto".
+
+ PRIVMSG kalt%[email protected] :Are you a frog?
+ ; Message to a user on server
+ irc.stealth.net with username of
+ "kalt", and connected from the host
+ millennium.stealth.net.
+
+ PRIVMSG kalt%millennium.stealth.net :Do you like cheese?
+ ; Message to a user on the local
+ server with username of "kalt", and
+ connected from the host
+ millennium.stealth.net.
+
+ PRIVMSG [email protected] :Hello !
+ ; Message to the user with nickname
+ Wiz who is connected from the host
+ tolsun.oulu.fi and has the username
+ "jto".
+
+ PRIVMSG $*.fi :Server tolsun.oulu.fi rebooting.
+ ; Message to everyone on a server
+ which has a name matching *.fi.
+
+ PRIVMSG #*.edu :NSFNet is undergoing work, expect interruptions
+ ; Message to all users who come from
+ a host which has a name matching
+ *.edu.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.3.2 Notice[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: NOTICE
+Parameters: <msgtarget> <text>
+
+The NOTICE command is used similarly to PRIVMSG. The difference
+between NOTICE and PRIVMSG is that automatic replies MUST NEVER be
+sent in response to a NOTICE message. This rule applies to servers
+too - they MUST NOT send any error reply back to the client on
+receipt of a notice. The object of this rule is to avoid loops
+between clients automatically sending something in response to
+something it received.
+
+This command is available to services as well as users.
+
+This is typically used by services, and automatons (clients with
+either an AI or other interactive program controlling their actions).
+
+See PRIVMSG for more details on replies and examples.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4 Server queries and commands[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+The server query group of commands has been designed to return
+information about any server which is connected to the network.
+
+In these queries, where a parameter appears as <target>, wildcard
+masks are usually valid. For each parameter, however, only one query
+and set of replies is to be generated. In most cases, if a nickname
+is given, it will mean the server to which the user is connected.
+
+These messages typically have little value for services, it is
+therefore RECOMMENDED to forbid services from using them.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4.1 Motd message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: MOTD
+Parameters: [ <target> ]
+
+The MOTD command is used to get the "Message Of The Day" of the given
+server, or current server if <target> is omitted.
+
+Wildcards are allowed in the <target> parameter.
+
+ Numeric Replies:
+ RPL_MOTDSTART RPL_MOTD
+ RPL_ENDOFMOTD ERR_NOMOTD
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4.2 Lusers message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: LUSERS
+Parameters: [ <mask> [ <target> ] ]
+
+The LUSERS command is used to get statistics about the size of the
+IRC network. If no parameter is given, the reply will be about the
+whole net. If a <mask> is specified, then the reply will only
+concern the part of the network formed by the servers matching the
+mask. Finally, if the <target> parameter is specified, the request
+is forwarded to that server which will generate the reply.
+
+Wildcards are allowed in the <target> parameter.
+
+ Numeric Replies:
+
+ RPL_LUSERCLIENT RPL_LUSEROP
+ RPL_LUSERUNKOWN RPL_LUSERCHANNELS
+ RPL_LUSERME ERR_NOSUCHSERVER
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4.3 Version message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: VERSION
+Parameters: [ <target> ]
+
+The VERSION command is used to query the version of the server
+program. An optional parameter <target> is used to query the version
+of the server program which a client is not directly connected to.
+
+Wildcards are allowed in the <target> parameter.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER RPL_VERSION
+
+ Examples:
+
+ VERSION tolsun.oulu.fi ; Command to check the version of
+ server "tolsun.oulu.fi".
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4.4 Stats message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: STATS
+Parameters: [ <query> [ <target> ] ]
+
+The stats command is used to query statistics of certain server. If
+<query> parameter is omitted, only the end of stats reply is sent
+back.
+
+A query may be given for any single letter which is only checked by
+the destination server and is otherwise passed on by intermediate
+servers, ignored and unaltered.
+
+Wildcards are allowed in the <target> parameter.
+Except for the ones below, the list of valid queries is
+implementation dependent. The standard queries below SHOULD be
+supported by the server:
+
+ l - returns a list of the server's connections, showing how
+ long each connection has been established and the
+ traffic over that connection in Kbytes and messages for
+ each direction;
+ m - returns the usage count for each of commands supported
+ by the server; commands for which the usage count is
+ zero MAY be omitted;
+ o - returns a list of configured privileged users,
+ operators;
+ u - returns a string showing how long the server has been
+ up.
+
+It is also RECOMMENDED that client and server access configuration be
+published this way.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER
+ RPL_STATSLINKINFO RPL_STATSUPTIME
+ RPL_STATSCOMMANDS RPL_STATSOLINE
+ RPL_ENDOFSTATS
+
+ Examples:
+
+ STATS m ; Command to check the command usage
+ for the server you are connected to
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4.5 Links message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: LINKS
+Parameters: [ [ <remote server> ] <server mask> ]
+
+With LINKS, a user can list all servernames, which are known by the
+server answering the query. The returned list of servers MUST match
+the mask, or if no mask is given, the full list is returned.
+
+If <remote server> is given in addition to <server mask>, the LINKS
+command is forwarded to the first server found that matches that name
+(if any), and that server is then required to answer the query.
+
+Numeric Replies:
+
+ ERR_NOSUCHSERVER
+ RPL_LINKSRPL_ENDOFLINKS
+
+Examples:
+
+LINKS *.au ; Command to list all servers which
+ have a name that matches *.au;
+
+LINKS *.edu *.bu.edu; Command to list servers matching
+ *.bu.edu as seen by the first server
+ matching *.edu.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4.6 Time message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: TIME
+Parameters: [ <target> ]
+
+The time command is used to query local time from the specified
+server. If the <target> parameter is not given, the server receiving
+the command must reply to the query.
+
+Wildcards are allowed in the <target> parameter.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER RPL_TIME
+
+ Examples:
+ TIME tolsun.oulu.fi ; check the time on the server
+ "tolson.oulu.fi"
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4.7 Connect message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: CONNECT
+Parameters: <target server> <port> [ <remote server> ]
+
+The CONNECT command can be used to request a server to try to
+establish a new connection to another server immediately. CONNECT is
+a privileged command and SHOULD be available only to IRC Operators.
+If a <remote server> is given and its mask doesn't match name of the
+parsing server, the CONNECT attempt is sent to the first match of
+remote server. Otherwise the CONNECT attempt is made by the server
+processing the request.
+
+The server receiving a remote CONNECT command SHOULD generate a
+WALLOPS message describing the source and target of the request.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER ERR_NOPRIVILEGES
+ ERR_NEEDMOREPARAMS
+
+ Examples:
+
+ CONNECT tolsun.oulu.fi 6667 ; Command to attempt to connect local
+ server to tolsun.oulu.fi on port 6667
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4.8 Trace message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: TRACE
+Parameters: [ <target> ]
+
+TRACE command is used to find the route to specific server and
+information about its peers. Each server that processes this command
+MUST report to the sender about it. The replies from pass-through
+links form a chain, which shows route to destination. After sending
+this reply back, the query MUST be sent to the next server until
+given <target> server is reached.
+
+TRACE command is used to find the route to specific server. Each
+server that processes this message MUST tell the sender about it by
+sending a reply indicating it is a pass-through link, forming a chain
+of replies. After sending this reply back, it MUST then send the
+TRACE message to the next server until given server is reached. If
+the <target> parameter is omitted, it is RECOMMENDED that TRACE
+command sends a message to the sender telling which servers the local
+server has direct connection to.
+
+If the destination given by <target> is an actual server, the
+destination server is REQUIRED to report all servers, services and
+operators which are connected to it; if the command was issued by an
+operator, the server MAY also report all users which are connected to
+it. If the destination given by <target> is a nickname, then only a
+reply for that nickname is given. If the <target> parameter is
+omitted, it is RECOMMENDED that the TRACE command is parsed as
+targeted to the processing server.
+
+Wildcards are allowed in the <target> parameter.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER
+
+ If the TRACE message is destined for another server, all
+ intermediate servers must return a RPL_TRACELINK reply to indicate
+ that the TRACE passed through it and where it is going next.
+
+ RPL_TRACELINK
+
+ A TRACE reply may be composed of any number of the following
+ numeric replies.
+
+ RPL_TRACECONNECTING RPL_TRACEHANDSHAKE
+ RPL_TRACEUNKNOWN RPL_TRACEOPERATOR
+ RPL_TRACEUSER RPL_TRACESERVER
+ RPL_TRACESERVICE RPL_TRACENEWTYPE
+ RPL_TRACECLASS RPL_TRACELOG
+ RPL_TRACEEND
+
+ Examples:
+
+ TRACE *.oulu.fi ; TRACE to a server matching
+ *.oulu.fi
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4.9 Admin command[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: ADMIN
+Parameters: [ <target> ]
+
+The admin command is used to find information about the administrator
+of the given server, or current server if <target> parameter is
+omitted. Each server MUST have the ability to forward ADMIN messages
+to other servers.
+
+Wildcards are allowed in the <target> parameter.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER
+ RPL_ADMINME RPL_ADMINLOC1
+ RPL_ADMINLOC2 RPL_ADMINEMAIL
+
+ Examples:
+
+ ADMIN tolsun.oulu.fi ; request an ADMIN reply from
+ tolsun.oulu.fi
+
+ ADMIN syrk ; ADMIN request for the server to
+ which the user syrk is connected
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.4.10 Info command[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: INFO
+Parameters: [ <target> ]
+
+The INFO command is REQUIRED to return information describing the
+server: its version, when it was compiled, the patchlevel, when it
+was started, and any other miscellaneous information which may be
+considered to be relevant.
+
+Wildcards are allowed in the <target> parameter.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER
+ RPL_INFO RPL_ENDOFINFO
+
+ Examples:
+
+ INFO csd.bu.edu ; request an INFO reply from
+ csd.bu.edu
+
+ INFO Angel ; request info from the server that
+ Angel is connected to.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.5 Service Query and Commands[/b]
+[/pre][/td][/tr]
+[tr][td][pre]
+The service query group of commands has been designed to return
+information about any service which is connected to the network.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.5.1 Servlist message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: SERVLIST
+Parameters: [ <mask> [ <type> ] ]
+
+The SERVLIST command is used to list services currently connected to
+the network and visible to the user issuing the command. The
+optional parameters may be used to restrict the result of the query
+(to matching services names, and services type).
+
+ Numeric Replies:
+
+ RPL_SERVLIST RPL_SERVLISTEND
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.5.2 Squery[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: SQUERY
+Parameters: <servicename> <text>
+
+The SQUERY command is used similarly to PRIVMSG. The only difference
+is that the recipient MUST be a service. This is the only way for a
+text message to be delivered to a service.
+
+See PRIVMSG for more details on replies and example.
+
+ Examples:
+
+ SQUERY irchelp :HELP privmsg
+ ; Message to the service with
+ nickname irchelp.
+
+ SQUERY [email protected] :fr2en blaireau
+ ; Message to the service with name
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.6 User based queries[/b]
+[/pre][/td][/tr]
+[tr][td][pre]
+User queries are a group of commands which are primarily concerned
+with finding details on a particular user or group users. When using
+wildcards with any of these commands, if they match, they will only
+return information on users who are 'visible' to you. The visibility
+of a user is determined as a combination of the user's mode and the
+common set of channels you are both on.
+
+Although services SHOULD NOT be using this class of message, they are
+allowed to.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.6.1 Who query[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: WHO
+Parameters: [ <mask> [ "o" ] ]
+
+The WHO command is used by a client to generate a query which returns
+a list of information which 'matches' the <mask> parameter given by
+the client. In the absence of the <mask> parameter, all visible
+(users who aren't invisible (user mode +i) and who don't have a
+common channel with the requesting client) are listed. The same
+result can be achieved by using a <mask> of "0" or any wildcard which
+will end up matching every visible user.
+
+The <mask> passed to WHO is matched against users' host, server, real
+name and nickname if the channel <mask> cannot be found.
+If the "o" parameter is passed only operators are returned according
+to the <mask> supplied.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER
+ RPL_WHOREPLY RPL_ENDOFWHO
+
+ Examples:
+
+ WHO *.fi ; Command to list all users who match
+ against "*.fi".
+
+ WHO jto* o ; Command to list all users with a
+ match against "jto*" if they are an
+ operator.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.6.2 Whois query[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: WHOIS
+Parameters: [ <target> ] <mask> *( "," <mask> )
+
+This command is used to query information about particular user.
+The server will answer this command with several numeric messages
+indicating different statuses of each user which matches the mask (if
+you are entitled to see them). If no wildcard is present in the
+<mask>, any information about that nick which you are allowed to see
+is presented.
+
+If the <target> parameter is specified, it sends the query to a
+specific server. It is useful if you want to know how long the user
+in question has been idle as only local server (i.e., the server the
+user is directly connected to) knows that information, while
+everything else is globally known.
+
+Wildcards are allowed in the <target> parameter.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER ERR_NONICKNAMEGIVEN
+ RPL_WHOISUSER RPL_WHOISCHANNELS
+ RPL_WHOISCHANNELS RPL_WHOISSERVER
+ RPL_AWAY RPL_WHOISOPERATOR
+ RPL_WHOISIDLE ERR_NOSUCHNICK
+ RPL_ENDOFWHOIS
+
+ Examples:
+
+ WHOIS wiz ; return available user information
+ about nick WiZ
+
+ WHOIS eff.org trillian ; ask server eff.org for user
+ information about trillian
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.6.3 Whowas[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: WHOWAS
+Parameters: <nickname> *( "," <nickname> ) [ <count> [ <target> ] ]
+
+Whowas asks for information about a nickname which no longer exists.
+This may either be due to a nickname change or the user leaving IRC.
+In response to this query, the server searches through its nickname
+history, looking for any nicks which are lexically the same (no wild
+card matching here). The history is searched backward, returning the
+most recent entry first. If there are multiple entries, up to
+<count> replies will be returned (or all of them if no <count>
+parameter is given). If a non-positive number is passed as being
+<count>, then a full search is done.
+
+Wildcards are allowed in the <target> parameter.
+
+ Numeric Replies:
+
+ ERR_NONICKNAMEGIVEN ERR_WASNOSUCHNICK
+ RPL_WHOWASUSER RPL_WHOISSERVER
+ RPL_ENDOFWHOWAS
+
+ Examples:
+
+ WHOWAS Wiz ; return all information in the nick
+ history about nick "WiZ";
+
+ WHOWAS Mermaid 9 ; return at most, the 9 most recent
+ entries in the nick history for
+ "Mermaid";
+
+ WHOWAS Trillian 1 *.edu ; return the most recent history for
+ "Trillian" from the first server
+ found to match "*.edu".
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.7 Miscellaneous messages[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Messages in this category do not fit into any of the above categories
+but are nonetheless still a part of and REQUIRED by the protocol.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.7.1 Kill message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: KILL
+Parameters: <nickname> <comment>
+
+The KILL command is used to cause a client-server connection to be
+closed by the server which has the actual connection. Servers
+generate KILL messages on nickname collisions. It MAY also be
+available available to users who have the operator status.
+
+Clients which have automatic reconnect algorithms effectively make
+this command useless since the disconnection is only brief. It does
+however break the flow of data and can be used to stop large amounts
+of 'flooding' from abusive users or accidents. Abusive users usually
+don't care as they will reconnect promptly and resume their abusive
+behaviour. To prevent this command from being abused, any user may
+elect to receive KILL messages generated for others to keep an 'eye'
+on would be trouble spots.
+
+In an arena where nicknames are REQUIRED to be globally unique at all
+times, KILL messages are sent whenever 'duplicates' are detected
+(that is an attempt to register two users with the same nickname) in
+the hope that both of them will disappear and only 1 reappear.
+
+When a client is removed as the result of a KILL message, the server
+SHOULD add the nickname to the list of unavailable nicknames in an
+attempt to avoid clients to reuse this name immediately which is
+usually the pattern of abusive behaviour often leading to useless
+"KILL loops". See the "IRC Server Protocol" document [IRC-SERVER]
+for more information on this procedure.
+
+The comment given MUST reflect the actual reason for the KILL. For
+server-generated KILLs it usually is made up of details concerning
+the origins of the two conflicting nicknames. For users it is left
+up to them to provide an adequate reason to satisfy others who see
+it. To prevent/discourage fake KILLs from being generated to hide
+the identify of the KILLer, the comment also shows a 'kill-path'
+which is updated by each server it passes through, each prepending
+its name to the path.
+
+ Numeric Replies:
+
+ ERR_NOPRIVILEGES ERR_NEEDMOREPARAMS
+ ERR_NOSUCHNICK ERR_CANTKILLSERVER
+
+NOTE:
+It is RECOMMENDED that only Operators be allowed to kill other users
+with KILL command. This command has been the subject of many
+controversies over the years, and along with the above
+recommendation, it is also widely recognized that not even operators
+should be allowed to kill users on remote servers.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.7.2 Ping message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: PING
+Parameters: <server1> [ <server2> ]
+
+The PING command is used to test the presence of an active client or
+server at the other end of the connection. Servers send a PING
+message at regular intervals if no other activity detected coming
+from a connection. If a connection fails to respond to a PING
+message within a set amount of time, that connection is closed. A
+PING message MAY be sent even if the connection is active.
+
+When a PING message is received, the appropriate PONG message MUST be
+sent as reply to <server1> (server which sent the PING message out)
+as soon as possible. If the <server2> parameter is specified, it
+represents the target of the ping, and the message gets forwarded
+there.
+
+ Numeric Replies:
+
+ ERR_NOORIGIN ERR_NOSUCHSERVER
+
+ Examples:
+
+ PING tolsun.oulu.fi ; Command to send a PING message to
+ server
+
+ PING WiZ tolsun.oulu.fi ; Command from WiZ to send a PING
+ message to server "tolsun.oulu.fi"
+
+ PING :irc.funet.fi ; Ping message sent by server
+ "irc.funet.fi"
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.7.3 Pong message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: PONG
+Parameters: <server> [ <server2> ]
+
+PONG message is a reply to ping message. If parameter <server2> is
+given, this message MUST be forwarded to given target. The <server>
+parameter is the name of the entity who has responded to PING message
+and generated this message.
+
+ Numeric Replies:
+
+ ERR_NOORIGIN ERR_NOSUCHSERVER
+
+ Example:
+
+ PONG csd.bu.edu tolsun.oulu.fi ; PONG message from csd.bu.edu to
+ tolsun.oulu.fi
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]3.7.4 Error[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: ERROR
+Parameters: <error message>
+
+The ERROR command is for use by servers when reporting a serious or
+fatal error to its peers. It may also be sent from one server to
+another but MUST NOT be accepted from any normal unknown clients.
+
+Only an ERROR message SHOULD be used for reporting errors which occur
+with a server-to-server link. An ERROR message is sent to the server
+at the other end (which reports it to appropriate local users and
+logs) and to appropriate local users and logs. It is not to be
+passed onto any other servers by a server if it is received from a
+server.
+
+The ERROR message is also used before terminating a client
+connection.
+
+When a server sends a received ERROR message to its operators, the
+message SHOULD be encapsulated inside a NOTICE message, indicating
+that the client was not responsible for the error.
+
+ Numerics:
+
+ None.
+
+ Examples:
+
+ ERROR :Server *.fi already exists ; ERROR message to the other server
+ which caused this error.
+
+ NOTICE WiZ :ERROR from csd.bu.edu -- Server *.fi already exists
+ ; Same ERROR message as above but
+ sent to user WiZ on the other server.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]4. Optional features[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+This section describes OPTIONAL messages. They are not required in a
+working server implementation of the protocol described herein. In
+the absence of the feature, an error reply message MUST be generated
+or an unknown command error. If the message is destined for another
+server to answer then it MUST be passed on (elementary parsing
+REQUIRED) The allocated numerics for this are listed with the
+messages below.
+
+From this section, only the USERHOST and ISON messages are available
+to services.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]4.1 Away[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: AWAY
+Parameters: [ <text> ]
+
+With the AWAY command, clients can set an automatic reply string for
+any PRIVMSG commands directed at them (not to a channel they are on).
+The server sends an automatic reply to the client sending the PRIVMSG
+command. The only replying server is the one to which the sending
+client is connected to.
+
+The AWAY command is used either with one parameter, to set an AWAY
+message, or with no parameters, to remove the AWAY message.
+
+Because of its high cost (memory and bandwidth wise), the AWAY
+message SHOULD only be used for client-server communication. A
+server MAY choose to silently ignore AWAY messages received from
+other servers. To update the away status of a client across servers,
+the user mode 'a' SHOULD be used instead. (See Section 3.1.5)
+
+ Numeric Replies:
+
+ RPL_UNAWAY RPL_NOWAWAY
+
+ Example:
+
+ AWAY :Gone to lunch. Back in 5 ; Command to set away message to
+ "Gone to lunch. Back in 5".
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]4.2 Rehash message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: REHASH
+Parameters: None
+
+The rehash command is an administrative command which can be used by
+an operator to force the server to re-read and process its
+configuration file.
+
+ Numeric Replies:
+
+ RPL_REHASHING ERR_NOPRIVILEGES
+
+
+ Example:
+
+ REHASH ; message from user with operator
+ status to server asking it to reread
+ its configuration file.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]4.3 Die message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: DIE
+Parameters: None
+
+An operator can use the DIE command to shutdown the server. This
+message is optional since it may be viewed as a risk to allow
+arbitrary people to connect to a server as an operator and execute
+this command.
+
+The DIE command MUST always be fully processed by the server to which
+the sending client is connected and MUST NOT be passed onto other
+connected servers.
+
+ Numeric Replies:
+
+ ERR_NOPRIVILEGES
+
+ Example:
+
+ DIE ; no parameters required.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]4.4 Restart message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: RESTART
+Parameters: None
+
+An operator can use the restart command to force the server to
+restart itself. This message is optional since it may be viewed as a
+risk to allow arbitrary people to connect to a server as an operator
+and execute this command, causing (at least) a disruption to service.
+
+The RESTART command MUST always be fully processed by the server to
+which the sending client is connected and MUST NOT be passed onto
+other connected servers.
+
+ Numeric Replies:
+
+ ERR_NOPRIVILEGES
+
+ Example:
+
+ RESTART ; no parameters required.
+[/pre][/td][/tr]
+
+[tr][td][pre]
+[b]4.5 Summon message[/b]
+[/pre][/td][/tr]
+
+[tr][td][pre]
+Command: SUMMON
+Parameters: <user> [ <target> [ <channel> ] ]
+
+The SUMMON command can be used to give users who are on a host
+running an IRC server a message asking them to please join IRC. This
+message is only sent if the target server (a) has SUMMON enabled, (b)
+the user is logged in and (c) the server process can write to the
+user's tty (or similar).
+
+If no <server> parameter is given it tries to summon <user> from the
+server the client is connected to is assumed as the target.
+
+If summon is not enabled in a server, it MUST return the
+ERR_SUMMONDISABLED numeric.
+
+ Numeric Replies:
+
+ ERR_NORECIPIENT ERR_FILEERROR
+ ERR_NOLOGIN ERR_NOSUCHSERVER
+ ERR_SUMMONDISABLED RPL_SUMMONING
+
+ Examples:
+
+ SUMMON jto ; summon user jto on the server's
+ host
+
+ SUMMON jto tolsun.oulu.fi ; summon user jto on the host which a
+ server named "tolsun.oulu.fi" is
+ running.
+[/pre][/td][/tr]
+
+[tr][td]
+[b]4.6 Users[/b]
+[/td][/tr]
+
+[tr][td][pre]
+Command: USERS
+Parameters: [ <target> ]
+
+The USERS command returns a list of users logged into the server in a
+format similar to the UNIX commands who(1), rusers(1) and finger(1).
+If disabled, the correct numeric MUST be returned to indicate this.
+
+Because of the security implications of such a command, it SHOULD be
+disabled by default in server implementations. Enabling it SHOULD
+require recompiling the server or some equivalent change rather than
+simply toggling an option and restarting the server. The procedure
+to enable this command SHOULD also include suitable large comments.
+
+ Numeric Replies:
+
+ ERR_NOSUCHSERVER ERR_FILEERROR
+ RPL_USERSSTART RPL_USERS
+ RPL_NOUSERS RPL_ENDOFUSERS
+ ERR_USERSDISABLED
+
+ Disabled Reply:
+
+ ERR_USERSDISABLED
+
+ Example:
+
+ USERS eff.org ; request a list of users logged in
+ on server eff.org
+[/pre][/td][/tr]
+
+[tr][td]
+[b]4.7 Operwall message[/b]
+[/td][/tr]
+
+[tr][td][pre]
+Command: WALLOPS
+Parameters: <Text to be sent>
+
+The WALLOPS command is used to send a message to all currently
+connected users who have set the 'w' user mode for themselves. (See
+Section 3.1.5 "User modes").
+After implementing WALLOPS as a user command it was found that it was
+often and commonly abused as a means of sending a message to a lot of
+people. Due to this, it is RECOMMENDED that the implementation of
+WALLOPS allows and recognizes only servers as the originators of
+WALLOPS.
+
+ Numeric Replies:
+
+ ERR_NEEDMOREPARAMS
+
+ Example:
+
+ :csd.bu.edu WALLOPS :Connect '*.uiuc.edu 6667' from Joshua ; WALLOPS
+ message from csd.bu.edu announcing a
+ CONNECT message it received from
+ Joshua and acted upon.
+[/pre][/td][/tr]
+
+[tr][td]
+[b]4.8 Userhost message[/b]
+[/td][/tr]
+
+[tr][td][pre]
+Command: USERHOST
+Parameters: <nickname> *( SPACE <nickname> )
+
+The USERHOST command takes a list of up to 5 nicknames, each
+separated by a space character and returns a list of information
+about each nickname that it found. The returned list has each reply
+separated by a space.
+
+ Numeric Replies:
+
+ RPL_USERHOST ERR_NEEDMOREPARAMS
+
+ Example:
+
+ USERHOST Wiz Michael syrk ; USERHOST request for information on
+ nicks "Wiz", "Michael", and "syrk"
+
+ :ircd.stealth.net 302 yournick :[email protected]
+ ; Reply for user syrk
+[/pre][/td][/tr]
+
+[tr][td]
+[b]4.9 Ison message[/b]
+[/td][/tr]
+
+[tr][td][pre]
+Command: ISON
+Parameters: <nickname> *( SPACE <nickname> )
+
+The ISON command was implemented to provide a quick and efficient
+means to get a response about whether a given nickname was currently
+on IRC. ISON only takes one (1) type of parameter: a space-separated
+list of nicks. For each nickname in the list that is present, the
+server adds that to its reply string. Thus the reply string may
+return empty (none of the given nicks are present), an exact copy of
+the parameter string (all of them present) or any other subset of the
+set of nicks given in the parameter. The only limit on the number of
+nicks that may be checked is that the combined length MUST NOT be too
+large as to cause the server to chop it off so it fits in 512
+characters.
+
+ISON is only processed by the server local to the client sending the
+command and thus not passed onto other servers for further
+processing.
+
+ Numeric Replies:
+
+ RPL_ISON ERR_NEEDMOREPARAMS
+
+ Example:
+
+ ISON phone trillian WiZ jarlek Avalon Angel Monstah syrk
+ ; Sample ISON request for 7 nicks.
+[/pre][/td][/tr]
+
+[tr][td]
+[b]5. Replies[/b]
+[/td][/tr]
+
+[tr][td]
+The following is a list of numeric replies which are generated in
+response to the commands given above. Each numeric is given with its
+number, name and reply string.
+[/td][/tr]
+
+[tr][td]
+[b]5.1 Command responses[/b]
+[/td][/tr]
+
+[tr][td]
+Numerics in the range from 001 to 099 are used for client-server
+connections only and should never travel between servers. Replies
+generated in the response to commands are found in the range from 200
+to 399.
+[p]
+[pre]
+ 001 RPL_WELCOME
+ "Welcome to the Internet Relay Network
+ <nick>!<user>@<host>"
+ 002 RPL_YOURHOST
+ "Your host is <servername>, running version <ver>"
+ 003 RPL_CREATED
+ "This server was created <date>"
+ 004 RPL_MYINFO
+ "<servername> <version> <available user modes>
+ <available channel modes>"
+
+ - The server sends Replies 001 to 004 to a user upon
+ successful registration.
+
+ 005 RPL_BOUNCE
+ "Try server <server name>, port <port number>"
+
+ - Sent by the server to a user to suggest an alternative
+ server. This is often used when the connection is
+ refused because the server is already full.
+
+ 302 RPL_USERHOST
+ ":*1<reply> *( " " <reply> )"
+
+ - Reply format used by USERHOST to list replies to
+ the query list. The reply string is composed as
+ follows:
+
+ reply = nickname [ "*" ] "=" ( "+" / "-" ) hostname
+
+ The '*' indicates whether the client has registered
+ as an Operator. The '-' or '+' characters represent
+ whether the client has set an AWAY message or not
+ respectively.
+
+ 303 RPL_ISON
+ ":*1<nick> *( " " <nick> )"
+
+ - Reply format used by ISON to list replies to the
+ query list.
+
+ 301 RPL_AWAY
+ "<nick> :<away message>"
+ 305 RPL_UNAWAY
+ ":You are no longer marked as being away"
+ 306 RPL_NOWAWAY
+ ":You have been marked as being away"
+
+ - These replies are used with the AWAY command (if
+ allowed). RPL_AWAY is sent to any client sending a
+ PRIVMSG to a client which is away. RPL_AWAY is only
+ sent by the server to which the client is connected.
+ Replies RPL_UNAWAY and RPL_NOWAWAY are sent when the
+ client removes and sets an AWAY message.
+
+ 311 RPL_WHOISUSER
+ "<nick> <user> <host> * :<real name>"
+ 312 RPL_WHOISSERVER
+ "<nick> <server> :<server info>"
+ 313 RPL_WHOISOPERATOR
+ "<nick> :is an IRC operator
+ 317 RPL_WHOISIDLE
+ "<nick> <integer> :seconds idle"
+ 318 RPL_ENDOFWHOIS
+ "<nick> :End of WHOIS list"
+ 319 RPL_WHOISCHANNELS
+ "<nick> :*( ( "@" / "+" ) <channel> " " )"
+
+ - Replies 311 - 313, 317 - 319 are all replies
+ generated in response to a WHOIS message. Given that
+ there are enough parameters present, the answering
+ server MUST either formulate a reply out of the above
+ numerics (if the query nick is found) or return an
+ error reply. The '*' in RPL_WHOISUSER is there as
+ the literal character and not as a wild card. For
+ each reply set, only RPL_WHOISCHANNELS may appear
+ more than once (for long lists of channel names).
+ The '@' and '+' characters next to the channel name
+ indicate whether a client is a channel operator or
+ has been granted permission to speak on a moderated
+ channel. The RPL_ENDOFWHOIS reply is used to mark
+ the end of processing a WHOIS message.
+
+ 314 RPL_WHOWASUSER
+ "<nick> <user> <host> * :<real name>"
+ 369 RPL_ENDOFWHOWAS
+ "<nick> :End of WHOWAS"
+
+ - When replying to a WHOWAS message, a server MUST use
+ the replies RPL_WHOWASUSER, RPL_WHOISSERVER or
+ ERR_WASNOSUCHNICK for each nickname in the presented
+ list. At the end of all reply batches, there MUST
+ be RPL_ENDOFWHOWAS (even if there was only one reply
+ and it was an error).
+
+ 321 RPL_LISTSTART
+ Obsolete. Not used.
+
+ 322 RPL_LIST
+ "<channel> <# visible> :<topic>"
+ 323 RPL_LISTEND
+ ":End of LIST"
+
+ - Replies RPL_LIST, RPL_LISTEND mark the actual replies
+ with data and end of the server's response to a LIST
+ command. If there are no channels available to return,
+ only the end reply MUST be sent.
+
+ 325 RPL_UNIQOPIS
+ "<channel> <nickname>"
+
+ 324 RPL_CHANNELMODEIS
+ "<channel> <mode> <mode params>"
+
+ 331 RPL_NOTOPIC
+ "<channel> :No topic is set"
+ 332 RPL_TOPIC
+ "<channel> :<topic>"
+
+ - When sending a TOPIC message to determine the
+ channel topic, one of two replies is sent. If
+ the topic is set, RPL_TOPIC is sent back else
+ RPL_NOTOPIC.
+
+ 341 RPL_INVITING
+ "<channel> <nick>"
+
+ - Returned by the server to indicate that the
+ attempted INVITE message was successful and is
+ being passed onto the end client.
+
+ 342 RPL_SUMMONING
+ "<user> :Summoning user to IRC"
+
+ - Returned by a server answering a SUMMON message to
+ indicate that it is summoning that user.
+
+ 346 RPL_INVITELIST
+ "<channel> <invitemask>"
+ 347 RPL_ENDOFINVITELIST
+ "<channel> :End of channel invite list"
+
+ - When listing the 'invitations masks' for a given channel,
+ a server is required to send the list back using the
+ RPL_INVITELIST and RPL_ENDOFINVITELIST messages. A
+ separate RPL_INVITELIST is sent for each active mask.
+ After the masks have been listed (or if none present) a
+ RPL_ENDOFINVITELIST MUST be sent.
+
+ 348 RPL_EXCEPTLIST
+ "<channel> <exceptionmask>"
+ 349 RPL_ENDOFEXCEPTLIST
+ "<channel> :End of channel exception list"
+
+ - When listing the 'exception masks' for a given channel,
+ a server is required to send the list back using the
+ RPL_EXCEPTLIST and RPL_ENDOFEXCEPTLIST messages. A
+ separate RPL_EXCEPTLIST is sent for each active mask.
+ After the masks have been listed (or if none present)
+ a RPL_ENDOFEXCEPTLIST MUST be sent.
+
+ 351 RPL_VERSION
+ "<version>.<debuglevel> <server> :<comments>"
+
+ - Reply by the server showing its version details.
+ The <version> is the version of the software being
+ used (including any patchlevel revisions) and the
+ <debuglevel> is used to indicate if the server is
+ running in "debug mode".
+
+ The "comments" field may contain any comments about
+ the version or further version details.
+
+ 352 RPL_WHOREPLY
+ "<channel> <user> <host> <server> <nick>
+ ( "H" / "G" > ["*"] [ ( "@" / "+" ) ]
+ :<hopcount> <real name>"
+
+ 315 RPL_ENDOFWHO
+ "<name> :End of WHO list"
+
+ - The RPL_WHOREPLY and RPL_ENDOFWHO pair are used
+ to answer a WHO message. The RPL_WHOREPLY is only
+ sent if there is an appropriate match to the WHO
+ query. If there is a list of parameters supplied
+ with a WHO message, a RPL_ENDOFWHO MUST be sent
+ after processing each list item with <name> being
+ the item.
+
+ 353 RPL_NAMREPLY
+ "( "=" / "*" / "@" ) <channel>
+ :[ "@" / "+" ] <nick> *( " " [ "@" / "+" ] <nick> )
+ - "@" is used for secret channels, "*" for private
+ channels, and "=" for others (public channels).
+
+ 366 RPL_ENDOFNAMES
+ "<channel> :End of NAMES list"
+
+ - To reply to a NAMES message, a reply pair consisting
+ of RPL_NAMREPLY and RPL_ENDOFNAMES is sent by the
+ server back to the client. If there is no channel
+ found as in the query, then only RPL_ENDOFNAMES is
+ returned. The exception to this is when a NAMES
+ message is sent with no parameters and all visible
+ channels and contents are sent back in a series of
+ RPL_NAMEREPLY messages with a RPL_ENDOFNAMES to mark
+ the end.
+
+ 364 RPL_LINKS
+ "<mask> <server> :<hopcount> <server info>"
+ 365 RPL_ENDOFLINKS
+ "<mask> :End of LINKS list"
+
+ - In replying to the LINKS message, a server MUST send
+ replies back using the RPL_LINKS numeric and mark the
+ end of the list using an RPL_ENDOFLINKS reply.
+
+ 367 RPL_BANLIST
+ "<channel> <banmask>"
+ 368 RPL_ENDOFBANLIST
+ "<channel> :End of channel ban list"
+
+ - When listing the active 'bans' for a given channel,
+ a server is required to send the list back using the
+ RPL_BANLIST and RPL_ENDOFBANLIST messages. A separate
+ RPL_BANLIST is sent for each active banmask. After the
+ banmasks have been listed (or if none present) a
+ RPL_ENDOFBANLIST MUST be sent.
+
+ 371 RPL_INFO
+ ":<string>"
+ 374 RPL_ENDOFINFO
+ ":End of INFO list"
+
+ - A server responding to an INFO message is required to
+ send all its 'info' in a series of RPL_INFO messages
+ with a RPL_ENDOFINFO reply to indicate the end of the
+ replies.
+
+ 375 RPL_MOTDSTART
+ ":- <server> Message of the day - "
+ 372 RPL_MOTD
+ ":- <text>"
+ 376 RPL_ENDOFMOTD
+ ":End of MOTD command"
+
+ - When responding to the MOTD message and the MOTD file
+ is found, the file is displayed line by line, with
+ each line no longer than 80 characters, using
+ RPL_MOTD format replies. These MUST be surrounded
+ by a RPL_MOTDSTART (before the RPL_MOTDs) and an
+ RPL_ENDOFMOTD (after).
+
+ 381 RPL_YOUREOPER
+ ":You are now an IRC operator"
+
+ - RPL_YOUREOPER is sent back to a client which has
+ just successfully issued an OPER message and gained
+ operator status.
+
+ 382 RPL_REHASHING
+ "<config file> :Rehashing"
+
+ - If the REHASH option is used and an operator sends
+ a REHASH message, an RPL_REHASHING is sent back to
+ the operator.
+
+ 383 RPL_YOURESERVICE
+ "You are service <servicename>"
+
+ - Sent by the server to a service upon successful
+ registration.
+
+ 391 RPL_TIME
+ "<server> :<string showing server's local time>"
+
+ - When replying to the TIME message, a server MUST send
+ the reply using the RPL_TIME format above. The string
+ showing the time need only contain the correct day and
+ time there. There is no further requirement for the
+ time string.
+
+ 392 RPL_USERSSTART
+ ":UserID Terminal Host"
+ 393 RPL_USERS
+ ":<username> <ttyline> <hostname>"
+ 394 RPL_ENDOFUSERS
+ ":End of users"
+ 395 RPL_NOUSERS
+ ":Nobody logged in"
+
+ - If the USERS message is handled by a server, the
+ replies RPL_USERSTART, RPL_USERS, RPL_ENDOFUSERS and
+ RPL_NOUSERS are used. RPL_USERSSTART MUST be sent
+ first, following by either a sequence of RPL_USERS
+ or a single RPL_NOUSER. Following this is
+ RPL_ENDOFUSERS.
+
+ 200 RPL_TRACELINK
+ "Link <version & debug level> <destination>
+ <next server> V<protocol version>
+ <link uptime in seconds> <backstream sendq>
+ <upstream sendq>"
+ 201 RPL_TRACECONNECTING
+ "Try. <class> <server>"
+ 202 RPL_TRACEHANDSHAKE
+ "H.S. <class> <server>"
+ 203 RPL_TRACEUNKNOWN
+ "???? <class> [<client IP address in dot form>]"
+ 204 RPL_TRACEOPERATOR
+ "Oper <class> <nick>"
+ 205 RPL_TRACEUSER
+ "User <class> <nick>"
+ 206 RPL_TRACESERVER
+ "Serv <class> <int>S <int>C <server>
+ <nick!user|*!*>@<host|server> V<protocol version>"
+ 207 RPL_TRACESERVICE
+ "Service <class> <name> <type> <active type>"
+ 208 RPL_TRACENEWTYPE
+ "<newtype> 0 <client name>"
+ 209 RPL_TRACECLASS
+ "Class <class> <count>"
+ 210 RPL_TRACERECONNECT
+ Unused.
+ 261 RPL_TRACELOG
+ "File <logfile> <debug level>"
+ 262 RPL_TRACEEND
+ "<server name> <version & debug level> :End of TRACE"
+
+ - The RPL_TRACE* are all returned by the server in
+ response to the TRACE message. How many are
+ returned is dependent on the TRACE message and
+ whether it was sent by an operator or not. There
+ is no predefined order for which occurs first.
+ Replies RPL_TRACEUNKNOWN, RPL_TRACECONNECTING and
+ RPL_TRACEHANDSHAKE are all used for connections
+ which have not been fully established and are either
+ unknown, still attempting to connect or in the
+ process of completing the 'server handshake'.
+ RPL_TRACELINK is sent by any server which handles
+ a TRACE message and has to pass it on to another
+ server. The list of RPL_TRACELINKs sent in
+ response to a TRACE command traversing the IRC
+ network should reflect the actual connectivity of
+ the servers themselves along that path.
+ RPL_TRACENEWTYPE is to be used for any connection
+ which does not fit in the other categories but is
+ being displayed anyway.
+ RPL_TRACEEND is sent to indicate the end of the list.
+
+ 211 RPL_STATSLINKINFO
+ "<linkname> <sendq> <sent messages>
+ <sent Kbytes> <received messages>
+ <received Kbytes> <time open>"
+
+ - reports statistics on a connection. <linkname>
+ identifies the particular connection, <sendq> is
+ the amount of data that is queued and waiting to be
+ sent <sent messages> the number of messages sent,
+ and <sent Kbytes> the amount of data sent, in
+ Kbytes. <received messages> and <received Kbytes>
+ are the equivalent of <sent messages> and <sent
+ Kbytes> for received data, respectively. <time
+ open> indicates how long ago the connection was
+ opened, in seconds.
+
+ 212 RPL_STATSCOMMANDS
+ "<command> <count> <byte count> <remote count>"
+
+ - reports statistics on commands usage.
+
+ 219 RPL_ENDOFSTATS
+ "<stats letter> :End of STATS report"
+
+ 242 RPL_STATSUPTIME
+ ":Server Up %d days %d:%02d:%02d"
+
+ - reports the server uptime.
+
+ 243 RPL_STATSOLINE
+ "O <hostmask> * <name>"
+
+ - reports the allowed hosts from where user may become IRC
+ operators.
+
+ 221 RPL_UMODEIS
+ "<user mode string>"
+
+ - To answer a query about a client's own mode,
+ RPL_UMODEIS is sent back.
+
+ 234 RPL_SERVLIST
+ "<name> <server> <mask> <type> <hopcount> <info>"
+
+ 235 RPL_SERVLISTEND
+ "<mask> <type> :End of service listing"
+
+ - When listing services in reply to a SERVLIST message,
+ a server is required to send the list back using the
+ RPL_SERVLIST and RPL_SERVLISTEND messages. A separate
+ RPL_SERVLIST is sent for each service. After the
+ services have been listed (or if none present) a
+ RPL_SERVLISTEND MUST be sent.
+
+ 251 RPL_LUSERCLIENT
+ ":There are <integer> users and <integer>
+ services on <integer> servers"
+ 252 RPL_LUSEROP
+ "<integer> :operator(s) online"
+ 253 RPL_LUSERUNKNOWN
+ "<integer> :unknown connection(s)"
+ 254 RPL_LUSERCHANNELS
+ "<integer> :channels formed"
+ 255 RPL_LUSERME
+ ":I have <integer> clients and <integer>
+ servers"
+
+ - In processing an LUSERS message, the server
+ sends a set of replies from RPL_LUSERCLIENT,
+ RPL_LUSEROP, RPL_USERUNKNOWN,
+ RPL_LUSERCHANNELS and RPL_LUSERME. When
+ replying, a server MUST send back
+ RPL_LUSERCLIENT and RPL_LUSERME. The other
+ replies are only sent back if a non-zero count
+ is found for them.
+
+ 256 RPL_ADMINME
+ "<server> :Administrative info"
+ 257 RPL_ADMINLOC1
+ ":<admin info>"
+ 258 RPL_ADMINLOC2
+ ":<admin info>"
+ 259 RPL_ADMINEMAIL
+ ":<admin info>"
+
+ - When replying to an ADMIN message, a server
+ is expected to use replies RPL_ADMINME
+ through to RPL_ADMINEMAIL and provide a text
+ message with each. For RPL_ADMINLOC1 a
+ description of what city, state and country
+ the server is in is expected, followed by
+ details of the institution (RPL_ADMINLOC2)
+ and finally the administrative contact for the
+ server (an email address here is REQUIRED)
+ in RPL_ADMINEMAIL.
+
+ 263 RPL_TRYAGAIN
+ "<command> :Please wait a while and try again."
+
+ - When a server drops a command without processing it,
+ it MUST use the reply RPL_TRYAGAIN to inform the
+ originating client.
+[/pre][/td][/tr]
+
+[tr][td]
+[b]5.2 Error Replies[/b]
+[/td][/tr]
+
+[tr][td][pre]
+ Error replies are found in the range from 400 to 599.
+
+ 401 ERR_NOSUCHNICK
+ "<nickname> :No such nick/channel"
+
+ - Used to indicate the nickname parameter supplied to a
+ command is currently unused.
+
+ 402 ERR_NOSUCHSERVER
+ "<server name> :No such server"
+
+ - Used to indicate the server name given currently
+ does not exist.
+
+ 403 ERR_NOSUCHCHANNEL
+ "<channel name> :No such channel"
+
+ - Used to indicate the given channel name is invalid.
+
+ 404 ERR_CANNOTSENDTOCHAN
+ "<channel name> :Cannot send to channel"
+
+ - Sent to a user who is either (a) not on a channel
+ which is mode +n or (b) not a chanop (or mode +v) on
+ a channel which has mode +m set or where the user is
+ banned and is trying to send a PRIVMSG message to
+ that channel.
+
+ 405 ERR_TOOMANYCHANNELS
+ "<channel name> :You have joined too many channels"
+
+ - Sent to a user when they have joined the maximum
+ number of allowed channels and they try to join
+ another channel.
+
+ 406 ERR_WASNOSUCHNICK
+ "<nickname> :There was no such nickname"
+
+ - Returned by WHOWAS to indicate there is no history
+ information for that nickname.
+
+ 407 ERR_TOOMANYTARGETS
+ "<target> :<error code> recipients. <abort message>"
+
+ - Returned to a client which is attempting to send a
+ PRIVMSG/NOTICE using the user@host destination format
+ and for a user@host which has several occurrences.
+
+ - Returned to a client which trying to send a
+ PRIVMSG/NOTICE to too many recipients.
+
+ - Returned to a client which is attempting to JOIN a safe
+ channel using the shortname when there are more than one
+ such channel.
+
+ 408 ERR_NOSUCHSERVICE
+ "<service name> :No such service"
+
+ - Returned to a client which is attempting to send a SQUERY
+ to a service which does not exist.
+
+ 409 ERR_NOORIGIN
+ ":No origin specified"
+
+ - PING or PONG message missing the originator parameter.
+
+ 411 ERR_NORECIPIENT
+ ":No recipient given (<command>)"
+ 412 ERR_NOTEXTTOSEND
+ ":No text to send"
+ 413 ERR_NOTOPLEVEL
+ "<mask> :No toplevel domain specified"
+ 414 ERR_WILDTOPLEVEL
+ "<mask> :Wildcard in toplevel domain"
+ 415 ERR_BADMASK
+ "<mask> :Bad Server/host mask"
+
+ - 412 - 415 are returned by PRIVMSG to indicate that
+ the message wasn't delivered for some reason.
+ ERR_NOTOPLEVEL and ERR_WILDTOPLEVEL are errors that
+ are returned when an invalid use of
+ "PRIVMSG $<server>" or "PRIVMSG #<host>" is attempted.
+
+ 421 ERR_UNKNOWNCOMMAND
+ "<command> :Unknown command"
+
+ - Returned to a registered client to indicate that the
+ command sent is unknown by the server.
+
+ 422 ERR_NOMOTD
+ ":MOTD File is missing"
+
+ - Server's MOTD file could not be opened by the server.
+
+ 423 ERR_NOADMININFO
+ "<server> :No administrative info available"
+
+ - Returned by a server in response to an ADMIN message
+ when there is an error in finding the appropriate
+ information.
+
+ 424 ERR_FILEERROR
+ ":File error doing <file op> on <file>"
+
+ - Generic error message used to report a failed file
+ operation during the processing of a message.
+
+ 431 ERR_NONICKNAMEGIVEN
+ ":No nickname given"
+
+ - Returned when a nickname parameter expected for a
+ command and isn't found.
+
+ 432 ERR_ERRONEUSNICKNAME
+ "<nick> :Erroneous nickname"
+
+ - Returned after receiving a NICK message which contains
+ characters which do not fall in the defined set. See
+ section 2.3.1 for details on valid nicknames.
+
+ 433 ERR_NICKNAMEINUSE
+ "<nick> :Nickname is already in use"
+
+ - Returned when a NICK message is processed that results
+ in an attempt to change to a currently existing
+ nickname.
+
+ 436 ERR_NICKCOLLISION
+ "<nick> :Nickname collision KILL from <user>@<host>"
+
+ - Returned by a server to a client when it detects a
+ nickname collision (registered of a NICK that
+ already exists by another server).
+
+ 437 ERR_UNAVAILRESOURCE
+ "<nick/channel> :Nick/channel is temporarily unavailable"
+
+ - Returned by a server to a user trying to join a channel
+ currently blocked by the channel delay mechanism.
+
+ - Returned by a server to a user trying to change nickname
+ when the desired nickname is blocked by the nick delay
+ mechanism.
+
+ 441 ERR_USERNOTINCHANNEL
+ "<nick> <channel> :They aren't on that channel"
+
+ - Returned by the server to indicate that the target
+ user of the command is not on the given channel.
+
+ 442 ERR_NOTONCHANNEL
+ "<channel> :You're not on that channel"
+
+ - Returned by the server whenever a client tries to
+ perform a channel affecting command for which the
+ client isn't a member.
+
+ 443 ERR_USERONCHANNEL
+ "<user> <channel> :is already on channel"
+
+ - Returned when a client tries to invite a user to a
+ channel they are already on.
+
+ 444 ERR_NOLOGIN
+ "<user> :User not logged in"
+
+ - Returned by the summon after a SUMMON command for a
+ user was unable to be performed since they were not
+ logged in.
+
+ 445 ERR_SUMMONDISABLED
+ ":SUMMON has been disabled"
+
+ - Returned as a response to the SUMMON command. MUST be
+ returned by any server which doesn't implement it.
+
+ 446 ERR_USERSDISABLED
+ ":USERS has been disabled"
+
+ - Returned as a response to the USERS command. MUST be
+ returned by any server which does not implement it.
+
+ 451 ERR_NOTREGISTERED
+ ":You have not registered"
+
+ - Returned by the server to indicate that the client
+ MUST be registered before the server will allow it
+ to be parsed in detail.
+
+ 461 ERR_NEEDMOREPARAMS
+ "<command> :Not enough parameters"
+
+ - Returned by the server by numerous commands to
+ indicate to the client that it didn't supply enough
+ parameters.
+
+ 462 ERR_ALREADYREGISTRED
+ ":Unauthorized command (already registered)"
+
+ - Returned by the server to any link which tries to
+ change part of the registered details (such as
+ password or user details from second USER message).
+
+ 463 ERR_NOPERMFORHOST
+ ":Your host isn't among the privileged"
+
+ - Returned to a client which attempts to register with
+ a server which does not been setup to allow
+ connections from the host the attempted connection
+ is tried.
+
+ 464 ERR_PASSWDMISMATCH
+ ":Password incorrect"
+
+ - Returned to indicate a failed attempt at registering
+ a connection for which a password was required and
+ was either not given or incorrect.
+
+ 465 ERR_YOUREBANNEDCREEP
+ ":You are banned from this server"
+
+ - Returned after an attempt to connect and register
+ yourself with a server which has been setup to
+ explicitly deny connections to you.
+
+ 466 ERR_YOUWILLBEBANNED
+
+ - Sent by a server to a user to inform that access to the
+ server will soon be denied.
+
+ 467 ERR_KEYSET
+ "<channel> :Channel key already set"
+ 471 ERR_CHANNELISFULL
+ "<channel> :Cannot join channel (+l)"
+ 472 ERR_UNKNOWNMODE
+ "<char> :is unknown mode char to me for <channel>"
+ 473 ERR_INVITEONLYCHAN
+ "<channel> :Cannot join channel (+i)"
+ 474 ERR_BANNEDFROMCHAN
+ "<channel> :Cannot join channel (+b)"
+ 475 ERR_BADCHANNELKEY
+ "<channel> :Cannot join channel (+k)"
+ 476 ERR_BADCHANMASK
+ "<channel> :Bad Channel Mask"
+ 477 ERR_NOCHANMODES
+ "<channel> :Channel doesn't support modes"
+ 478 ERR_BANLISTFULL
+ "<channel> <char> :Channel list is full"
+
+ 481 ERR_NOPRIVILEGES
+ ":Permission Denied- You're not an IRC operator"
+
+ - Any command requiring operator privileges to operate
+ MUST return this error to indicate the attempt was
+ unsuccessful.
+
+ 482 ERR_CHANOPRIVSNEEDED
+ "<channel> :You're not channel operator"
+
+ - Any command requiring 'chanop' privileges (such as
+ MODE messages) MUST return this error if the client
+ making the attempt is not a chanop on the specified
+ channel.
+
+ 483 ERR_CANTKILLSERVER
+ ":You can't kill a server!"
+
+ - Any attempts to use the KILL command on a server
+ are to be refused and this error returned directly
+ to the client.
+
+ 484 ERR_RESTRICTED
+ ":Your connection is restricted!"
+
+ - Sent by the server to a user upon connection to indicate
+ the restricted nature of the connection (user mode "+r").
+
+ 485 ERR_UNIQOPPRIVSNEEDED
+ ":You're not the original channel operator"
+
+ - Any MODE requiring "channel creator" privileges MUST
+ return this error if the client making the attempt is not
+ a chanop on the specified channel.
+
+ 491 ERR_NOOPERHOST
+ ":No O-lines for your host"
+
+ - If a client sends an OPER message and the server has
+ not been configured to allow connections from the
+ client's host as an operator, this error MUST be
+ returned.
+
+ 501 ERR_UMODEUNKNOWNFLAG
+ ":Unknown MODE flag"
+
+ - Returned by the server to indicate that a MODE
+ message was sent with a nickname parameter and that
+ the a mode flag sent was not recognized.
+
+ 502 ERR_USERSDONTMATCH
+ ":Cannot change mode for other users"
+
+ - Error sent to any user trying to view or change the
+ user mode for a user other than themselves.
+[/pre][/td][/tr]
+
+[tr][td]
+[b]5.3 Reserved numerics[/b]
+[/td][/tr]
+
+[tr][td][pre]
+ These numerics are not described above since they fall into one of
+ the following categories:
+
+ 1. no longer in use;
+
+ 2. reserved for future planned use;
+
+ 3. in current use but are part of a non-generic 'feature' of
+ the current IRC server.
+
+ 231 RPL_SERVICEINFO 232 RPL_ENDOFSERVICES
+ 233 RPL_SERVICE
+ 300 RPL_NONE 316 RPL_WHOISCHANOP
+ 361 RPL_KILLDONE 362 RPL_CLOSING
+ 363 RPL_CLOSEEND 373 RPL_INFOSTART
+ 384 RPL_MYPORTIS
+
+ 213 RPL_STATSCLINE 214 RPL_STATSNLINE
+ 215 RPL_STATSILINE 216 RPL_STATSKLINE
+ 217 RPL_STATSQLINE 218 RPL_STATSYLINE
+ 240 RPL_STATSVLINE 241 RPL_STATSLLINE
+ 244 RPL_STATSHLINE 244 RPL_STATSSLINE
+ 246 RPL_STATSPING 247 RPL_STATSBLINE
+ 250 RPL_STATSDLINE
+
+ 492 ERR_NOSERVICEHOST
+[/pre][/td][/tr]
+
+[tr][td]
+[b]6. Current implementations[/b]
+[/td][/tr]
+
+[tr][td]
+The IRC software, version 2.10 is the only complete implementation of
+the IRC protocol (client and server). Because of the small amount of
+changes in the client protocol since the publication of RFC 1459
+[IRC], implementations that follow it are likely to be compliant with
+this protocol or to require a small amount of changes to reach
+compliance.
+[/td][/tr]
+
+[tr][td]
+[b]7. Current problems[/b]
+[/td][/tr]
+
+[tr][td]
+There are a number of recognized problems with the IRC Client
+Protocol, and more generally with the IRC Server Protocol. In order
+to preserve backward compatibility with old clients, this protocol
+has almost not evolved since the publication of RFC 1459 [IRC].
+[/td][/tr]
+
+[tr][td]
+[b]7.1 Nicknames[/b]
+[/td][/tr]
+
+[tr][td]
+The idea of the nickname on IRC is very convenient for users to use
+when talking to each other outside of a channel, but there is only a
+finite nickname space and being what they are, it's not uncommon for
+several people to want to use the same nick. If a nickname is chosen
+by two people using this protocol, either one will not succeed or
+both will removed by use of a server KILL (See Section 3.7.1).
+[/td][/tr]
+
+[tr][td]
+[b]7.2 Limitation of wildcards[/b]
+[/td][/tr]
+
+[tr][td]
+There is no way to escape the escape character "\" (%x5C). While
+this isn't usually a problem, it makes it impossible to form a mask
+with a backslash character ("\") preceding a wildcard.
+[/td][/tr]
+
+[tr][td]
+[b]7.3 Security considerations[/b]
+[/td][/tr]
+
+[tr][td]
+Security issues related to this protocol are discussed in the "IRC
+Server Protocol" [IRC-SERVER] as they are mostly an issue for the
+server side of the connection.
+[/td][/tr]
+
+[tr][td]
+[b]8. Current support and availability[/b]
+[/td][/tr]
+
+[tr][td]
+Mailing lists for IRC related discussion:[br]
+General discussion: [email protected][br]
+Protocol development: [email protected][br]
+[p]
+Software implementations:[br]
+ftp://ftp.irc.org/irc/server[br]
+ftp://ftp.funet.fi/pub/unix/irc[br]
+ftp://ftp.irc.org/irc/clients[br]
+[p]
+Newsgroup: alt.irc
+[/td][/tr]
+
+[tr][td]
+[b]9. Acknowledgements[/b]
+[/td][/tr]
+
+[tr][td]
+Parts of this document were copied from the RFC 1459 [IRC] which
+first formally documented the IRC Protocol. It has also benefited
+from many rounds of review and comments. In particular, the
+following people have made significant contributions to this
+document:
+[p]
+Matthew Green, Michael Neumayer, Volker Paulsen, Kurt Roeckx, Vesa
+Ruokonen, Magnus Tjernstrom, Stefan Zehl.
+[/td][/tr]
+
+[tr][td]
+[b]10. References[/b]
+[/td][/tr]
+
+[tr][td][pre]
+ [KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+ [ABNF] Crocker, D. and P. Overell, "Augmented BNF for Syntax
+ Specifications: ABNF", RFC 2234, November 1997.
+
+ [HNAME] Braden, R., "Requirements for Internet Hosts --
+ Application and Support", STD 3, RFC 1123, October 1989.
+
+ [IRC] Oikarinen, J. & D. Reed, "Internet Relay Chat Protocol",
+ RFC 1459, May 1993.
+
+ [IRC-ARCH] Kalt, C., "Internet Relay Chat: Architecture", RFC 2810,
+ April 2000.
+
+ [IRC-CHAN] Kalt, C., "Internet Relay Chat: Channel Management", RFC
+ 2811, April 2000.
+
+ [IRC-SERVER] Kalt, C., "Internet Relay Chat: Server Protocol", RFC
+ 2813, April 2000.
+[/pre][/td][/tr]
+
+[tr][td]
+[b]11. Author's Address[/b]
+[/td][/tr]
+
+[tr][td][pre]
+Christophe Kalt
+99 Teaneck Rd, Apt #117
+Ridgefield Park, NJ 07660
+USA
+
+[/pre][/td][/tr]
+
+[tr][td]
+[b]12. Full Copyright Statement[/b]
+[/td][/tr]
+
+[tr][td]
+Copyright (C) The Internet Society (2000). All Rights Reserved.
+[p]
+This document and translations of it may be copied and furnished to
+others, and derivative works that comment on or otherwise explain it
+or assist in its implementation may be prepared, copied, published
+and distributed, in whole or in part, without restriction of any
+kind, provided that the above copyright notice and this paragraph are
+included on all such copies and derivative works. However, this
+document itself may not be modified in any way, such as by removing
+the copyright notice or references to the Internet Society or other
+Internet organizations, except as needed for the purpose of
+developing Internet standards in which case the procedures for
+copyrights defined in the Internet Standards process must be
+followed, or as required to translate it into languages other than
+English.
+[p]
+The limited permissions granted above are perpetual and will not be
+revoked by the Internet Society or its successors or assigns.
+[p]
+This document and the information contained herein is provided on an
+"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+[/td][/tr]
+
+[tr][td]
+[b]Acknowledgement[/b]
+[/td][/tr]
+
+[tr][td]
+Funding for the RFC Editor function is currently provided by the
+Internet Society.
+[/td][/tr]
+
+[/table]
+
+*/
diff --git a/data/helppics/Makefile.am b/data/helppics/Makefile.am
new file mode 100644
index 00000000..8b657db3
--- /dev/null
+++ b/data/helppics/Makefile.am
@@ -0,0 +1,5 @@
+tmpdir = $(helpdir)
+
+tmp_DATA = helplogoleft.png helplogoright.png
+
+EXTRA_DIST = $(tmp_DATA)
diff --git a/data/helppics/helplogoleft.png b/data/helppics/helplogoleft.png
new file mode 100644
index 00000000..bfcb7ff5
--- /dev/null
+++ b/data/helppics/helplogoleft.png
Binary files differ
diff --git a/data/helppics/helplogoright.png b/data/helppics/helplogoright.png
new file mode 100644
index 00000000..364c2aa0
--- /dev/null
+++ b/data/helppics/helplogoright.png
Binary files differ
diff --git a/data/icons/128x128/Makefile.am b/data/icons/128x128/Makefile.am
new file mode 100644
index 00000000..1a3be16a
--- /dev/null
+++ b/data/icons/128x128/Makefile.am
@@ -0,0 +1,5 @@
+iconapps64data_DATA = kvirc.png
+
+iconmime64data_DATA = kvs.png kvc.png kvt.png kva.png
+
+EXTRA_DIST = $(iconapps64data_DATA) $(iconmime64data_DATA)
diff --git a/data/icons/128x128/kva.png b/data/icons/128x128/kva.png
new file mode 100644
index 00000000..14b9f8a3
--- /dev/null
+++ b/data/icons/128x128/kva.png
Binary files differ
diff --git a/data/icons/128x128/kvc.png b/data/icons/128x128/kvc.png
new file mode 100644
index 00000000..89d2f7d4
--- /dev/null
+++ b/data/icons/128x128/kvc.png
Binary files differ
diff --git a/data/icons/128x128/kvirc.png b/data/icons/128x128/kvirc.png
new file mode 100644
index 00000000..3536d91e
--- /dev/null
+++ b/data/icons/128x128/kvirc.png
Binary files differ
diff --git a/data/icons/128x128/kvs.png b/data/icons/128x128/kvs.png
new file mode 100644
index 00000000..35635158
--- /dev/null
+++ b/data/icons/128x128/kvs.png
Binary files differ
diff --git a/data/icons/128x128/kvt.png b/data/icons/128x128/kvt.png
new file mode 100644
index 00000000..6c0bb0fc
--- /dev/null
+++ b/data/icons/128x128/kvt.png
Binary files differ
diff --git a/data/icons/16x16/Makefile.am b/data/icons/16x16/Makefile.am
new file mode 100644
index 00000000..929471ed
--- /dev/null
+++ b/data/icons/16x16/Makefile.am
@@ -0,0 +1,5 @@
+iconapps16data_DATA = kvirc.png
+
+iconmime16data_DATA = kvs.png kvc.png kvt.png kva.png
+
+EXTRA_DIST = $(iconapps16data_DATA) $(iconmime16data_DATA)
diff --git a/data/icons/16x16/kva.png b/data/icons/16x16/kva.png
new file mode 100644
index 00000000..10e0b239
--- /dev/null
+++ b/data/icons/16x16/kva.png
Binary files differ
diff --git a/data/icons/16x16/kvc.png b/data/icons/16x16/kvc.png
new file mode 100644
index 00000000..7d8ba200
--- /dev/null
+++ b/data/icons/16x16/kvc.png
Binary files differ
diff --git a/data/icons/16x16/kvirc.png b/data/icons/16x16/kvirc.png
new file mode 100644
index 00000000..3885d347
--- /dev/null
+++ b/data/icons/16x16/kvirc.png
Binary files differ
diff --git a/data/icons/16x16/kvs.png b/data/icons/16x16/kvs.png
new file mode 100644
index 00000000..2920d9ab
--- /dev/null
+++ b/data/icons/16x16/kvs.png
Binary files differ
diff --git a/data/icons/16x16/kvt.png b/data/icons/16x16/kvt.png
new file mode 100644
index 00000000..a18bd04e
--- /dev/null
+++ b/data/icons/16x16/kvt.png
Binary files differ
diff --git a/data/icons/32x32/Makefile.am b/data/icons/32x32/Makefile.am
new file mode 100644
index 00000000..aa871e35
--- /dev/null
+++ b/data/icons/32x32/Makefile.am
@@ -0,0 +1,6 @@
+iconapps32data_DATA = kvirc.png \
+ kvirc.xpm
+
+iconmime32data_DATA = kvs.png kvc.png kvt.png kva.png
+
+EXTRA_DIST = $(iconapps32data_DATA) $(iconmime32data_DATA)
diff --git a/data/icons/32x32/kva.png b/data/icons/32x32/kva.png
new file mode 100644
index 00000000..68349e52
--- /dev/null
+++ b/data/icons/32x32/kva.png
Binary files differ
diff --git a/data/icons/32x32/kvc.png b/data/icons/32x32/kvc.png
new file mode 100644
index 00000000..c615d71f
--- /dev/null
+++ b/data/icons/32x32/kvc.png
Binary files differ
diff --git a/data/icons/32x32/kvirc.png b/data/icons/32x32/kvirc.png
new file mode 100644
index 00000000..75edc454
--- /dev/null
+++ b/data/icons/32x32/kvirc.png
Binary files differ
diff --git a/data/icons/32x32/kvirc.xpm b/data/icons/32x32/kvirc.xpm
new file mode 100644
index 00000000..e724d455
--- /dev/null
+++ b/data/icons/32x32/kvirc.xpm
@@ -0,0 +1,295 @@
+/* XPM */
+static char *kvirc3[] = {
+/* columns rows colors chars-per-pixel */
+"32 32 257 2",
+" c #000000",
+". c #09050A",
+"X c #0C0A0C",
+"o c #070408",
+"O c #0F0810",
+"+ c #130A14",
+"@ c #171218",
+"# c #1F1420",
+"$ c #201E21",
+"% c #2A1A2B",
+"& c #251526",
+"* c #331C35",
+"= c #361E38",
+"- c #242024",
+"; c #2D282D",
+": c #2A242A",
+"> c #2F2930",
+", c #372538",
+"< c #3E2E40",
+"1 c #6D3B08",
+"2 c #4A294C",
+"3 c #47274A",
+"4 c #4E2B50",
+"5 c #4F275E",
+"6 c #483C49",
+"7 c #532E55",
+"8 c #542C5B",
+"9 c #592F57",
+"0 c #56315A",
+"q c #59315B",
+"w c #4F2661",
+"e c #552C62",
+"r c #572B67",
+"t c #5D3361",
+"y c #5E3268",
+"u c #613664",
+"i c #653669",
+"p c #653868",
+"a c #6A3A6D",
+"s c #643F66",
+"d c #623372",
+"f c #6D3C71",
+"g c #6A367A",
+"h c #713E74",
+"j c #753D7C",
+"k c #79440A",
+"l c #69586A",
+"z c #744077",
+"x c #754078",
+"c c #79427C",
+"v c #794F7B",
+"b c #6F626F",
+"n c #7A607B",
+"m c #6E3C83",
+"M c #763681",
+"N c #7C4582",
+"B c #79418A",
+"V c #7D4F84",
+"C c #7E7080",
+"Z c #8D3E00",
+"A c #993F00",
+"S c #8D4000",
+"D c #894808",
+"F c #944400",
+"G c #984100",
+"H c #885615",
+"J c #9E5422",
+"K c #905031",
+"L c #92611C",
+"P c #9C6B21",
+"I c #967533",
+"U c #A54800",
+"Y c #AB4B00",
+"T c #A65409",
+"R c #B24F00",
+"E c #B35400",
+"W c #B95700",
+"Q c #BD5A01",
+"! c #B9610B",
+"~ c #B9621D",
+"^ c #A96A21",
+"/ c #A77825",
+"( c #BA7B37",
+") c #835343",
+"_ c #915B48",
+"` c #975A5A",
+"' c #8A4972",
+"] c #885E66",
+"[ c #94665C",
+"{ c #8F6F67",
+"} c #836266",
+"| c #97656A",
+" . c #AA704E",
+".. c #B37351",
+"X. c #A96358",
+"o. c #A07D6A",
+"O. c #C25A00",
+"+. c #CD5800",
+"@. c #C45700",
+"#. c #CF6100",
+"$. c #D36200",
+"%. c #DF6900",
+"&. c #D5680C",
+"*. c #E56400",
+"=. c #E06A00",
+"-. c #E86700",
+";. c #EA6900",
+":. c #EE7000",
+">. c #F27100",
+",. c #FD7600",
+"<. c #FE7A02",
+"1. c #FF7D0A",
+"2. c #823A8B",
+"3. c #804684",
+"4. c #85448B",
+"5. c #854A8A",
+"6. c #8A4D8E",
+"7. c #8D4D93",
+"8. c #88568F",
+"9. c #924C9B",
+"0. c #945699",
+"q. c #98568C",
+"w. c #975CA1",
+"e. c #9E56A1",
+"r. c #9850AE",
+"t. c #9E58A3",
+"y. c #9551A4",
+"u. c #9650B0",
+"i. c #9B54B3",
+"p. c #866787",
+"a. c #8F6894",
+"s. c #976993",
+"d. c #9861A1",
+"f. c #A057A5",
+"g. c #A159A6",
+"h. c #A55BAA",
+"j. c #AA5EAF",
+"k. c #A25ABB",
+"l. c #AB5EB0",
+"z. c #A658BA",
+"x. c #A967AD",
+"c. c #AE61B3",
+"v. c #AF6BB5",
+"b. c #A872AA",
+"n. c #AD7AB3",
+"m. c #B063B5",
+"M. c #B564BB",
+"N. c #B869BE",
+"B. c #B469B9",
+"V. c #B574B9",
+"C. c #BD6BC2",
+"Z. c #B769C7",
+"A. c #BE74C3",
+"S. c #BD79C1",
+"D. c #BA75C9",
+"F. c #C16FC7",
+"G. c #C06ED4",
+"H. c #C171C6",
+"J. c #C272C9",
+"K. c #C57ACA",
+"L. c #C27AC6",
+"P. c #9F833F",
+"I. c #AE8224",
+"U. c #BA8532",
+"Y. c #BB9657",
+"T. c #B2837C",
+"R. c #BEA262",
+"E. c #D98B32",
+"W. c #DBAD33",
+"Q. c #E1961E",
+"!. c #FF830B",
+"~. c #FF8519",
+"^. c #FF881C",
+"/. c #FF8816",
+"(. c #FF8C24",
+"). c #FF8E28",
+"_. c #FF9120",
+"`. c #FF912F",
+"'. c #FF963A",
+"]. c #FF993D",
+"[. c #FE9833",
+"{. c #F6A908",
+"}. c #F7A927",
+"|. c #FFBA2A",
+" X c #C78441",
+".X c #CA8D53",
+"XX c #CA827B",
+"oX c #CBA157",
+"OX c #D5BD58",
+"+X c #CBB656",
+"@X c #CABF6B",
+"#X c #D4AA6F",
+"$X c #C9A967",
+"%X c #EA9D43",
+"&X c #FF9C44",
+"*X c #E1BF4F",
+"=X c #E7BF5A",
+"-X c #FFA241",
+";X c #FEA556",
+":X c #FFA759",
+">X c #E0B662",
+",X c #EEB374",
+"<X c #FEB36D",
+"1X c #FFB565",
+"2X c #FFB672",
+"3X c #D6C46B",
+"4X c #EDC74B",
+"5X c #FFCF41",
+"6X c #FFDB41",
+"7X c #FFD15A",
+"8X c #E8C957",
+"9X c #E6C261",
+"0X c #FFD862",
+"qX c #FFDD72",
+"wX c #FFDC79",
+"eX c #F3C66B",
+"rX c #FFE046",
+"tX c #FFE476",
+"yX c #FFF36A",
+"uX c #FFFB79",
+"iX c #B19587",
+"pX c #B988BC",
+"aX c #B3A189",
+"sX c #BD8EC0",
+"dX c #CE8781",
+"fX c #D4B892",
+"gX c #FEBD83",
+"hX c #CC92D0",
+"jX c #D094D5",
+"kX c #FFC387",
+"lX c #FDCC96",
+"zX c #FEDD83",
+"xX c #FFD29C",
+"cX c #E5D89C",
+"vX c #E9D0A8",
+"bX c #FFCCA0",
+"nX c #FDD3AB",
+"mX c #FFE787",
+"MX c #FFE490",
+"NX c #FFED97",
+"BX c #FFEA9A",
+"VX c #FFF087",
+"CX c #FFF28E",
+"ZX c #FFEFA6",
+"AX c #F6E5C8",
+"SX c #FFE2C5",
+"DX c #FEE4CA",
+"FX c #FCEBCC",
+"GX c #F5E2C4",
+"HX c #FCEBD2",
+"JX c #F7EDD4",
+"KX c #FFF0CE",
+"LX c #FAF1DB",
+"PX c #FFF3E1",
+"IX c #FFFAF2",
+"UX c #FFFFF9",
+"YX c None",
+/* pixels */
+"YXYXYXYXYXYXYXYXYXYXYXYX X - $ $ $ O YXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYX C jXhXhXjXb YXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYX YXYXYX p.V.V.V.v.n YXYXYX YXYXYXYXYXYX",
+"YXYXYXYX ; X X b n.V.hXL.V.b.l o + : YXYXYXYX",
+"YXYXYX > sXpX< > a.pXS.L.L.K.K.H.M.m.V.p.; 6 b.b.- YXYXYX",
+"YXYXYX X a.d.0.d.d.d.v.K.K.K.K.J.J.F.M.9.M 4.4.M M V @ YXYX",
+"YXYX : s.vXJXGXGXAXAXiXJ.J.J.J.F.C.C.l.iXJXLXLXHXLXfX8.@ YXYX",
+"YXYX X n.T.LXIXIXIXIXnX9.Z.k.k.z.z.z.M KXUXUXPXHXKX} 0.o YXYX",
+"YXYXYX , s.lXDXDXSXSXxX| dX%X}.}.].XX| SXSXnXnXlX,Xj > YXYX",
+"YXYXYX % D...xXbXbXgX<X X7XwXwX0X5X{..XkXgXgX<X1X_ y.@ YXYXYX",
+"YXYXYX v J.q.-X2X<X;X&X].R.MXzXzX7XI.;X;X;X&X].[.y 5.s YXYX",
+"YXYX o v.J.G.~ -X&X'.).(.( ZXMXmXtX^ ].'.(.(._.J B 3.6. YXYX",
+" 0 A.C.Z.' /.`.).^.^.&.cXBXMX3X&.).^.~.~.!.9 N c N 3 ",
+". q a t.N.C.M.k.Q /.(.!.1.<.Y.NXVXP.<.1.<.1.<.T m c x x h q 7 o ",
+"@ C.j.M.M.N.l.z.K <.!.<.,.,.! NXCXT >.<.,.,.,.) m x h h a a c + ",
+"+ l.j.c.c.m.h.i.Q.Q <.>.>.>.*.3X3X+.:.:.:.>.E >Xg h a a a p x O ",
+"+ j.g.j.h.h.g.u.}./ ;.=.=.=.*.U.I =.=.%.=.=./ eXd a a i i t h O ",
+"+ j.g.h.h.f.f.r.E.4XY $.$.$.$.T k $.#.#.#.U 8X#Xd i i u t q a O ",
+"o , 7 N h.f.f.y.X.6XL @.O.O.O.O.E [email protected] yX| y u t t q , = o ",
+" o * f.e.0.7.B |.8XG E E E E E E E E A OXtXr t q q t % ",
+"YXYX N 7.6.4.B ` 6XL E E E E E E E E H uX] e q q q q YXYX",
+"YXYXYX 3 6.3.3.c j .W.U E E E E E W Y +Xo.5 0 q q q * YXYX",
+"YXYXYX X N N c x j g [ k F Z Z Z S F 1 } 5 8 q q q q . YXYXYX",
+"YXYXYX @ c c x z z f g d [ oX=X9X$X{ e 0 0 q q q q q + YXYXYX",
+"YXYX o u c x h h a f a i y r e w 8 8 q q q q q q q t 4 YXYX",
+"YXYX X u x h h a a p i t t t q 9 q q q 8 q q q q q q 4 . YXYX",
+"YXYXYX . q h f p u p u q q q q q q q q q q q q q t 2 o YXYX",
+"YXYXYX . q 7 + . * 7 t q q q 0 q q q 7 * . + 4 4 o YXYXYX",
+"YXYXYXYX o & 7 q q q q 2 # o YXYXYXYX",
+"YXYXYXYXYXYX YXYXYX = q q q t * YXYX YXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYX % t t t u & YXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYX o o o o YXYXYXYXYXYXYXYXYXYXYXYX"
+};
diff --git a/data/icons/32x32/kvs.png b/data/icons/32x32/kvs.png
new file mode 100644
index 00000000..ae07b669
--- /dev/null
+++ b/data/icons/32x32/kvs.png
Binary files differ
diff --git a/data/icons/32x32/kvt.png b/data/icons/32x32/kvt.png
new file mode 100644
index 00000000..68fbdd01
--- /dev/null
+++ b/data/icons/32x32/kvt.png
Binary files differ
diff --git a/data/icons/48x48/Makefile.am b/data/icons/48x48/Makefile.am
new file mode 100644
index 00000000..72b5a3c5
--- /dev/null
+++ b/data/icons/48x48/Makefile.am
@@ -0,0 +1,5 @@
+iconapps48data_DATA = kvirc.png kvirc.xpm
+
+iconmime48data_DATA = kvs.png kvc.png kvt.png kva.png
+
+EXTRA_DIST = $(iconapps48data_DATA) $(iconmime48data_DATA)
diff --git a/data/icons/48x48/kva.png b/data/icons/48x48/kva.png
new file mode 100644
index 00000000..29733e9d
--- /dev/null
+++ b/data/icons/48x48/kva.png
Binary files differ
diff --git a/data/icons/48x48/kvc.png b/data/icons/48x48/kvc.png
new file mode 100644
index 00000000..a96d35c3
--- /dev/null
+++ b/data/icons/48x48/kvc.png
Binary files differ
diff --git a/data/icons/48x48/kvirc.png b/data/icons/48x48/kvirc.png
new file mode 100644
index 00000000..378e50f5
--- /dev/null
+++ b/data/icons/48x48/kvirc.png
Binary files differ
diff --git a/data/icons/48x48/kvirc.xpm b/data/icons/48x48/kvirc.xpm
new file mode 100644
index 00000000..3ffc456b
--- /dev/null
+++ b/data/icons/48x48/kvirc.xpm
@@ -0,0 +1,311 @@
+/* XPM */
+static char *kvirc3[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 257 2",
+" c #000000",
+". c #09060B",
+"X c #150B17",
+"o c #181019",
+"O c #1E1122",
+"+ c #251528",
+"@ c #2D1932",
+"# c #331C35",
+"$ c #351D38",
+"% c #38273B",
+"& c #2D2931",
+"* c #3E2242",
+"= c #5A2C33",
+"- c #633201",
+"; c #68301A",
+": c #442549",
+"> c #4E2B52",
+", c #423B45",
+"< c #522C55",
+"1 c #542E59",
+"2 c #54345A",
+"3 c #542E62",
+"4 c #562E65",
+"5 c #573062",
+"6 c #5B3162",
+"7 c #5B326B",
+"8 c #5A3467",
+"9 c #5D3271",
+"0 c #613565",
+"q c #62356B",
+"w c #65396D",
+"e c #693A6C",
+"r c #623572",
+"t c #663873",
+"y c #6B3B73",
+"u c #6B3A7B",
+"i c #653679",
+"p c #713E7A",
+"a c #703C76",
+"s c #7A5616",
+"d c #75480C",
+"f c #6E4B21",
+"g c #6D5529",
+"h c #78713E",
+"j c #504D52",
+"k c #454345",
+"l c #704259",
+"z c #654365",
+"x c #67546C",
+"c c #6C5A73",
+"v c #75407B",
+"b c #77447C",
+"n c #6E6072",
+"m c #6C3A82",
+"M c #733D82",
+"N c #773D89",
+"B c #7B4383",
+"V c #7C428B",
+"C c #764087",
+"Z c #7F4592",
+"A c #795680",
+"S c #843D00",
+"D c #863E16",
+"F c #8B4400",
+"G c #954600",
+"H c #955204",
+"J c #845A11",
+"K c #884332",
+"L c #98631E",
+"P c #8D6512",
+"I c #967823",
+"U c #856A22",
+"Y c #A44800",
+"T c #B45100",
+"R c #BA5400",
+"E c #B65D0B",
+"W c #A45407",
+"Q c #A97F1E",
+"! c #BD600C",
+"~ c #A56E13",
+"^ c #A17936",
+"/ c #AA6C24",
+"( c #914B45",
+") c #895965",
+"_ c #8A5878",
+"` c #955C6C",
+"' c #986A54",
+"] c #896A7A",
+"[ c #977262",
+"{ c #BA7353",
+"} c #A67F6A",
+"| c #C35600",
+" . c #C55800",
+".. c #CB5A00",
+"X. c #D25D00",
+"o. c #D46100",
+"O. c #DC6200",
+"+. c #D46E09",
+"@. c #CA792B",
+"#. c #E46500",
+"$. c #E86700",
+"%. c #EA6800",
+"&. c #E36900",
+"*. c #F36C00",
+"=. c #FE7300",
+"-. c #FF7B00",
+";. c #F47403",
+":. c #82468A",
+">. c #83498A",
+",. c #854991",
+"<. c #874895",
+"1. c #915B9D",
+"2. c #8C5098",
+"3. c #9753A5",
+"4. c #9B54B3",
+"5. c #924FA6",
+"6. c #86658D",
+"7. c #8D6A94",
+"8. c #807182",
+"9. c #8C7792",
+"0. c #96799A",
+"q. c #986483",
+"w. c #9963A3",
+"e. c #9C77A4",
+"r. c #A459AC",
+"t. c #A355BB",
+"y. c #A459B3",
+"u. c #A45ABA",
+"i. c #AA5CB4",
+"p. c #A75AB7",
+"a. c #AF63BB",
+"s. c #B162BA",
+"d. c #B26BBC",
+"f. c #AF73A7",
+"g. c #AC5DC2",
+"h. c #B35DC8",
+"j. c #B363C2",
+"k. c #BC69CB",
+"l. c #B765C8",
+"z. c #BC66D1",
+"x. c #BA76C5",
+"c. c #C06CCF",
+"v. c #C26BD5",
+"b. c #C46CD7",
+"n. c #C07BC9",
+"m. c #C473D4",
+"M. c #C97CD4",
+"N. c #CC7ADB",
+"B. c #C773D8",
+"V. c #9C803F",
+"C. c #AA8729",
+"Z. c #A98B32",
+"A. c #8C8240",
+"S. c #BE9D63",
+"D. c #AA8C6F",
+"F. c #BEAE4F",
+"G. c #B7AA59",
+"H. c #B9A56B",
+"J. c #D38837",
+"K. c #C88C37",
+"L. c #EF821D",
+"P. c #FF8102",
+"I. c #FF850C",
+"U. c #FF890B",
+"Y. c #FF8C14",
+"T. c #FF8C1A",
+"R. c #FF901A",
+"E. c #EE8321",
+"W. c #E69426",
+"Q. c #FF8F21",
+"!. c #FF9324",
+"~. c #FF9928",
+"^. c #FF9A33",
+"/. c #FF9F3E",
+"(. c #FFB607",
+"). c #FFBC16",
+"_. c #EFAC2D",
+"`. c #EDB033",
+"'. c #FFA03C",
+"]. c #F6A533",
+"[. c #D6AA2E",
+"{. c #C49140",
+"}. c #C89155",
+"|. c #C69774",
+" X c #D68E72",
+".X c #D3AC5C",
+"XX c #D1BD53",
+"oX c #CCA777",
+"OX c #EB9D47",
+"+X c #EBA250",
+"@X c #FFA542",
+"#X c #FFAB47",
+"$X c #FFAC53",
+"%X c #FFB25C",
+"&X c #FFBB63",
+"*X c #FFBD70",
+"=X c #E4B070",
+"-X c #FFC517",
+";X c #FFC82A",
+":X c #F9C535",
+">X c #FFD227",
+",X c #FFD333",
+"<X c #D0C876",
+"1X c #F2CF4C",
+"2X c #FED546",
+"3X c #FBDB54",
+"4X c #E6C952",
+"5X c #ECD279",
+"6X c #FFC37B",
+"7X c #FFC373",
+"8X c #E1C66E",
+"9X c #FFE448",
+"0X c #FFE656",
+"qX c #FFE56A",
+"wX c #FFE67B",
+"eX c #FAE97F",
+"rX c #FFF56B",
+"tX c #FFF264",
+"yX c #FFFC75",
+"uX c #98829A",
+"iX c #BB9D80",
+"pX c #A585AA",
+"aX c #A981B3",
+"sX c #B48DBC",
+"dX c #BA86C4",
+"fX c #D5BC9E",
+"gX c #C281C9",
+"hX c #CB82D4",
+"jX c #C789D2",
+"kX c #C494CD",
+"lX c #D193DA",
+"zX c #D086D7",
+"xX c #D8A2E1",
+"cX c #FFC680",
+"vX c #FFCC84",
+"bX c #FFD79B",
+"nX c #FFD9A1",
+"mX c #FFDCA8",
+"MX c #FFDAB3",
+"NX c #FEEC87",
+"BX c #FFF38B",
+"VX c #FFF49C",
+"CX c #FFF794",
+"ZX c #FFE4AC",
+"AX c #FFE5B7",
+"SX c #FFF8A9",
+"DX c #EEE5A4",
+"FX c #F4DFC1",
+"GX c #FFECC2",
+"HX c #FBE5C7",
+"JX c #FBECD6",
+"KX c #FFF5CF",
+"LX c #FFF6DA",
+"PX c #FFFDE3",
+"IX c #FFFFEA",
+"UX c #FFFFFE",
+"YX c None",
+/* pixels */
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX j uXuXuX0.uXuXk YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX uXgXgXgXdXn.x.] YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX pXgXn.zXhXx.d.pX YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYX YXYXYXYXYX kXx.zXhXhXhXd.dX YXYXYXYXYX YXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYX , . n dXgXhXhXM.M.M.gXd.aXn . , YXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYX pXxXuXX % 9.kXx.x.hXhXM.N.N.M.m.k.a.a.dXA & X e.n.0. YXYXYXYXYXYXYX",
+"YXYXYXYXYXYX pXlXjXlXdXn e.jXx.x.M.M.N.N.N.N.N.B.B.k.l.j.a.a.x.e.c x.i.i.s.7. YXYXYXYXYXYX",
+"YXYXYXYXYX x w.w.w.w.1.1.1.1.4.x.N.zXN.N.N.B.b.B.b.v.h.h.r.V N N N :.N V V >.x YXYXYXYXYX",
+"YXYXYXYX 0.D.JXJXHXGXHXHXHXFXHX6.N.x.b.B.b.z.v.v.v.v.h.h.] FXJXJXJXJXJXJXLXHX) 7. YXYXYXYX",
+"YXYXYXYX % lXq.LXUXUXUXUXUXUXUXIXiXj.k.z.z.h.l.h.h.h.h.g.<.fXUXUXUXUXUXUXUXUXMXy d.+ YXYXYXYX",
+"YXYXYXYX 7.x.|.PXUXUXUXUXUXUXIXAXC h.g.t.t.g.t.t.t.t.t.e KXUXUXUXUXIXPXPXKX[ 3.A YXYXYXYX",
+"YXYXYXYXYX . dX` ZXPXIXPXPXPXLXGXnX) 4.f. X$X].].OX Xf.4.' HXPXPXKXGXAXAXZXvX0 w.. YXYXYXYXYX",
+"YXYXYXYXYX z j.}.ZXGXGXGXGXAXbX6X}.K.).`.,X2X,X;X(.(./ =XnXAXmXbXnXbX6X6X' ,.2 YXYXYXYXYX",
+"YXYXYXYXYX w.x.) 6XbXnXbXbXcX*X%X%XZ.NXwXwXwXqX2X2X(.P *X*XcXcXvX7X7X7X%X< 2.,. YXYXYXYXYX",
+"YXYXYXYXYX @ x.B.l.@.&X6X6X7X%X%X/.@X/ NXBXNXNXNXqX0X`.L %X%X&X%X#X].'.]./ C Z 3.O YXYXYXYXYX",
+"YXYXYXYXYX b c.B.B.( ].$X%X@X'.^.!.!.;.H.VXVXCXNXNXqXZ.L././.'.~.~.!.R.~.= Z Z Z 9 YXYXYXYX",
+"YXYXYXYX . d.m.B.B.r.+.~.@X^.~.!.T.Q.!.^ SXSXVXCXBXrXP !.^.^.R.Y.Y.R.R.! i V V V 2. YXYXYXYX",
+"YXYXYXYX 2 c.c.b.b.z.K U.R.R.~.Q.I.L.I.! DXSXSXVXNX8XH Q.~.Y.I.U.U.U.U.= N N C C B > YXYXYX",
+" 3.c.c.b.v.l.,.&.U.Y.Y.Y.I.-.-.P.D.SXSXVXBXV.&.-.-.P.-.P.P.P.o.5 C C C C C B ",
+" % w >.i.k.k.c.v.h.g.g.D -.U.U.-.-.-.-.-.L SXVXBXNXs =.;.-.-.-.-.-.-.; m M M M M p p >.y 6 # ",
+" v d.s.d.k.k.c.z.h.g.4.l $.-.P.P.=.=.=.=.X.<XCXCX<XY =.=.-.=.=.-.-.&.z m m m m u p p u a p 6 ",
+" a s.s.k.j.l.z.l.g.g.4.J.H -.-.-.=.=.=.=.=.' BXBXh *.=.=.=.=.=.=.=.H |.m m u u u u y y a y 1 ",
+" e s.s.k.j.j.h.g.g.4.4.W.~ $.-.=.*.*.*.*.*.H BXNXd *.%.*.*.*.*.*.O.Z.=Xm m u u u y y y e e < ",
+" e i.i.d.s.s.s.u.u.y.4.W.;XG *.*.%.$.$.$.%.X.G.G.G $.#.$.$.$.$.%.F qX=Xi i r r r r w w w e > ",
+" 0 i.r.s.s.s.i.y.y.4.4.J.,XI X.O.O.O.O.O.O.O.L g O.O.O.O.O.O.&.o.I tXoXi i r r w w w w 6 6 > ",
+" 0 r.r.r.i.i.p.r.t.t.4.{ ;X2XS X.X.X.X.X.X.X.S - ......X.X.X.o.S 3XyXD.r r r w 7 q 8 8 6 0 > ",
+" + : e :.r.i.p.i.4.4.3._ -X9XI ..... . . .| | Y | . .| .....U rXrXb 9 9 7 7 7 6 7 4 > = o ",
+" a i.r.y.4.4.5.Z W.9X1XS | R R R R R T R T R R R R R S 4XyX8X9 7 7 7 6 6 6 < ",
+"YXYXYX # 3.r.r.3.3.2.,.` >X9XU T T T T T T T T T T T T T R s yXyX_ 9 7 4 6 5 4 6 + YXYXYX",
+"YXYXYXYX B 5.3.1.2.Z Z C J.9X4XS T T T T T T T T T T T R F XXyXoX4 4 4 4 5 6 6 5 YXYXYXYX",
+"YXYXYXYXYX : 2.2.,.,.Z Z V v _.3XJ T T T T T T T T T R R R s yX5X7 4 3 3 3 6 1 6 # YXYXYXYX",
+"YXYXYXYXYX . :.<.,.:.V N N M v `.[.F T T R R R R R R R R G .X5X8 3 3 3 3 1 6 6 6 . YXYXYXYXYX",
+"YXYXYXYXYX 1 ,.>.:.B :.M M M v {.J R R R | R R R R R R d H.2 3 3 3 1 3 6 6 6 * YXYXYXYXYX",
+"YXYXYXYXYXYX + >.>.:.N B C p M u i < f Q C.C.C.C.Z.Z.Z.g * 3 3 3 3 3 3 6 6 6 6 O YXYXYXYXYX",
+"YXYXYXYXYX e >.>._ N C p v u u u t r z [ }..X.XS.} z 3 3 3 1 3 3 3 5 6 0 6 0 < YXYXYXYXYX",
+"YXYXYXYX : >.:.:.B B p p p u y r r 9 r 9 7 7 8 4 3 3 3 3 3 3 5 5 6 6 6 0 0 0 e $ YXYXYXYX",
+"YXYXYXYX X p :._ :.b p v p u y t r r w 7 7 4 4 3 3 3 3 3 3 3 3 5 6 6 6 6 0 0 0 0 0 . YXYXYXYX",
+"YXYXYXYX : :.M M b b v y y y w w q 7 4 6 5 3 3 3 5 3 3 3 6 6 6 6 6 6 0 0 0 0 0 $ YXYXYXYX",
+"YXYXYXYXYX % _ p v v y y y w q q 6 7 6 5 5 5 5 5 5 5 6 6 6 6 0 6 0 0 0 0 0 0 $ YXYXYXYXYX",
+"YXYXYXYXYXYX * a p y 1 + : 6 q 6 6 6 6 6 6 6 1 6 6 6 6 6 6 6 1 : + 1 0 0 0 $ YXYXYXYXYX",
+"YXYXYXYXYXYXYX * e $ . @ 1 6 6 6 1 2 6 6 6 6 6 6 6 < @ . % 0 $ YXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYX . O : 6 6 6 0 6 6 6 6 : o . YXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYX YXYXYXYX 1 6 0 2 0 6 6 < YXYXYXYX YXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX : 2 0 6 0 0 2 : YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX # 0 0 0 6 0 0 + YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX X # # # # # # X YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX"
+};
diff --git a/data/icons/48x48/kvs.png b/data/icons/48x48/kvs.png
new file mode 100644
index 00000000..b739ebe1
--- /dev/null
+++ b/data/icons/48x48/kvs.png
Binary files differ
diff --git a/data/icons/48x48/kvt.png b/data/icons/48x48/kvt.png
new file mode 100644
index 00000000..3127bb0d
--- /dev/null
+++ b/data/icons/48x48/kvt.png
Binary files differ
diff --git a/data/icons/64x64/Makefile.am b/data/icons/64x64/Makefile.am
new file mode 100644
index 00000000..cac3ad65
--- /dev/null
+++ b/data/icons/64x64/Makefile.am
@@ -0,0 +1,5 @@
+iconapps64data_DATA = kvirc.png
+
+iconmime64data_DATA = kvs.png
+
+EXTRA_DIST = $(iconapps64data_DATA) $(iconmime64data_DATA)
diff --git a/data/icons/64x64/kvirc.png b/data/icons/64x64/kvirc.png
new file mode 100644
index 00000000..bdd42a54
--- /dev/null
+++ b/data/icons/64x64/kvirc.png
Binary files differ
diff --git a/data/icons/64x64/kvs.png b/data/icons/64x64/kvs.png
new file mode 100644
index 00000000..7ddf563b
--- /dev/null
+++ b/data/icons/64x64/kvs.png
Binary files differ
diff --git a/data/icons/Makefile.am b/data/icons/Makefile.am
new file mode 100644
index 00000000..1b20afaa
--- /dev/null
+++ b/data/icons/Makefile.am
@@ -0,0 +1,5 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
+SUBDIRS = 16x16 32x32 48x48 64x64 128x128 scalable
diff --git a/data/icons/scalable/Makefile.am b/data/icons/scalable/Makefile.am
new file mode 100644
index 00000000..93e27bf1
--- /dev/null
+++ b/data/icons/scalable/Makefile.am
@@ -0,0 +1,5 @@
+iconappsscalabledata_DATA = kvirc.svgz
+
+iconmimescalabledata_DATA = kvs.svgz kvc.svgz kvt.svgz kva.svgz
+
+EXTRA_DIST = $(iconappsscalabledata_DATA) $(iconmimescalabledata_DATA) createpng.sh
diff --git a/data/icons/scalable/createpng.sh b/data/icons/scalable/createpng.sh
new file mode 100644
index 00000000..74fec260
--- /dev/null
+++ b/data/icons/scalable/createpng.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+HERE=$(pwd)
+
+for size in 16 32 48 64 128; do
+ echo "Creating icons with size" $size "x" $size
+ for file in *.svgz; do
+ PNGFNAME=$(echo $file | sed -e 's/svgz/png/g')
+ echo "Creating icon" $PNGFNAME
+ set -x
+ # Ksvgtopng exports broken pngs..
+ #ksvgtopng $size $size $HERE/$file $HERE/../$size"x"$size/$PNGFNAME
+ inkscape \
+ -z \
+ --export-png=$HERE/../$size"x"$size/$PNGFNAME \
+ --export-area-drawing \
+ --export-width=$size \
+ --export-height=$size \
+ $HERE/$file
+ set +x
+ done
+done
+
+echo "Done :)"
diff --git a/data/icons/scalable/kva.svgz b/data/icons/scalable/kva.svgz
new file mode 100644
index 00000000..4e2822d1
--- /dev/null
+++ b/data/icons/scalable/kva.svgz
Binary files differ
diff --git a/data/icons/scalable/kvc.svgz b/data/icons/scalable/kvc.svgz
new file mode 100644
index 00000000..68fc3a7c
--- /dev/null
+++ b/data/icons/scalable/kvc.svgz
Binary files differ
diff --git a/data/icons/scalable/kvirc.svgz b/data/icons/scalable/kvirc.svgz
new file mode 100644
index 00000000..78c084d6
--- /dev/null
+++ b/data/icons/scalable/kvirc.svgz
Binary files differ
diff --git a/data/icons/scalable/kvs.svgz b/data/icons/scalable/kvs.svgz
new file mode 100644
index 00000000..e98e639a
--- /dev/null
+++ b/data/icons/scalable/kvs.svgz
Binary files differ
diff --git a/data/icons/scalable/kvt.svgz b/data/icons/scalable/kvt.svgz
new file mode 100644
index 00000000..d1af8a07
--- /dev/null
+++ b/data/icons/scalable/kvt.svgz
Binary files differ
diff --git a/data/man/Makefile.am b/data/man/Makefile.am
new file mode 100644
index 00000000..b58f2f44
--- /dev/null
+++ b/data/man/Makefile.am
@@ -0,0 +1,3 @@
+tmpdir = $(mandir)/man1
+tmp_DATA=kvirc.1
+EXTRA_DIST=$(tmp_DATA)
diff --git a/data/man/kvirc.1 b/data/man/kvirc.1
new file mode 100644
index 00000000..f2bd16ad
--- /dev/null
+++ b/data/man/kvirc.1
@@ -0,0 +1,133 @@
+.TH KVIRC 1 "26/02/2005" Version 3.2.0
+.SH NAME
+KVIrc - an Internet Relay Chat client.
+.SH SYNOPSIS
+.B kvirc [options] [server [port]] [ircurl [ircurl [...]]]
+
+.SH DESCRIPTION
+.PP
+KVIrc is a Visual Internet Relay Chat client based on the Qt library.
+.PP
+It is intended to be an "user friendly" interface to the IRC protocol (see \fIRFC1459\fP)
+and its extensions.
+.SH OPTIONS
+.I
+\fIKVIrc\fP accepts the following options:
+.TP 8
+.B \-h, \-\-help
+Display a list of all commandline options.
+.TP 8
+.B \-v, \-\-version
+Output the version info.
+.TP 8
+.B \-c \fI<configfile>\fP
+Use \fI<configfile>\fP as configuration file instead of ~/.kvircrc .
+.TP 8
+.B \-n \fI<configfile>\fP
+Use \fI<configfile>\fP as configuration file instead of ~/.kvircrc .
+Create if it doesn't exist.
+.TP 8
+.B \-f
+Force a new KVIrc session, even if there is already a running one.
+.TP 8
+.B \-e \fI<commands>\fP
+If a KVirc session is already running on the same X display,
+execute the \fI<commands>\fP in that session,
+otherwise startup normally and execute \fI<commands>\fP.
+\fI<commands>\fP must be a single shell token.
+You can eventually use this switch more than once.
+.B \-x \fI<commands>\fP
+If a KVirc session is already running on the same X display,
+execute the \fI<commands>\fP in that session,
+otherwise do nothing and exit.
+\fI<commands>\fP must be a single shell token.
+You can eventually use this switch more than once.
+.TP 8
+.B \-r \fI<commands>\fP
+If a KVirc session is already running on the same X display,
+execute the \fI<commands>\fP in that session,
+otherwise startup normally (and do NOT execute).
+\fI<commands>\fP must be a single shell token.
+You can eventually use this switch more than once.
+.TP 8
+.B \-m
+If a KVIrc session is already running, show an informational popup dialog
+instead of writing to the console.
+This is useful when starting KVIrc from a graphical taskbar button.
+.TP 8
+.B [server]
+Connect to this server upon startup.
+.TP 8
+.B [port]
+Use this port to connect to the server.
+This option requires also a server name.
+.TP 8
+.B [ircurl]
+An url in the following form:
+
+ irc[6]://<server>[:<port>][/<channel>[?<pass>]]
+
+For each url on the commandline create a new irc-context
+and attempt to connect to <server> on the specified <port>.
+The optional <channel> is joined just after the connection
+has been estabilished.
+
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B LANG
+Language setting.
+If not set (or set to 'EN','POSIX' or 'C') KVIrc will use the default language (english).
+.TP 8
+
+.SH FILES
+
+\fB$PREFIX\fP/share/kvirc/\fBVERSION\fP/*
+Directory with the global KVIrc settings , modules etc...
+
+\fB$HOME\fP/.kvircrc This is the first file that KVIrc looks for.
+If the \-c commandline option is specified , the file passed
+as the option parameter is used instead of this one.
+If the file is found , KVIrc reads the first non-empty line
+and treats it as the path to the \fIKVIrc Local directory\fP.
+If the file can not be found or the \fIKVIrc Local directory\fP
+is not existing , KVIrc enters the setup mode and allows
+selecting a new \fIKVIrc Local directory\fP.
+
+\fBKVIrc Local directory\fP/*
+Directory with the local (per user) KVIrc settings.
+Similar to the global one.
+
+.SH SEE ALSO
+.BR X (1)
+.BR talk (1)
+.SH COPYRIGHT
+Copyright \(co 1999-2004 Szymon Stefanek and The KVIrc Development Team
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation.
+
+.SH SUGGESTIONS AND BUG REPORTS
+Any bugs found should be reported to the following e-mail address:
+\fI<pragma at kvirc dot net>\fP
+
+.SH OFFICIAL WWW SITE
+
+http://www.kvirc.net
+In Russian - http://www.kvirc.net.ru
+
+.SH AUTHORS
+Szymon 'Pragma' Stefanek \fI<pragma at kvirc dot net>\fP
+
+With patches, fixes, extensions, and more from
+[Anodine]@efnet, Till 'BuTi@ircnet' Busch, Fritz 'KNFritz@ircnet' Elfert, RAD Kade 1
+
+With bug-hunting, hard-thinking, eyes-consuming,
+nights spent on IRC, great suggestions and more from lots
+of people all over the net, including but not limited to
+Paul 'infected@ircnet' Boehm, Olle 'Crocodile@ircnet' H\[:a]lln\[:a]s, Diablo@ircnet,
+Andrew 'Drosha@ircnet' Frolov, MalboroLi@ircnet, munehiro@ircnet
+
diff --git a/data/mimelnk/Makefile.am b/data/mimelnk/Makefile.am
new file mode 100644
index 00000000..9abef9cf
--- /dev/null
+++ b/data/mimelnk/Makefile.am
@@ -0,0 +1,5 @@
+tmpdir = $(mimelnkdir)
+
+tmp_DATA = x-kvs.desktop x-kvt.desktop x-kva.desktop x-kvc.desktop
+
+EXTRA_DIST = $(tmp_DATA)
diff --git a/data/mimelnk/x-kva.desktop b/data/mimelnk/x-kva.desktop
new file mode 100644
index 00000000..789e8dee
--- /dev/null
+++ b/data/mimelnk/x-kva.desktop
@@ -0,0 +1,7 @@
+[Desktop Entry]
+Comment=KVIrc Addon Package
+Encoding=UTF-8
+Icon=kva
+MimeType=application/x-kva
+Patterns=*.kva;
+Type=MimeType
diff --git a/data/mimelnk/x-kvc.desktop b/data/mimelnk/x-kvc.desktop
new file mode 100644
index 00000000..a6df980b
--- /dev/null
+++ b/data/mimelnk/x-kvc.desktop
@@ -0,0 +1,7 @@
+[Desktop Entry]
+Comment=KVIrc Configuration File
+Encoding=UTF-8
+Icon=kvc
+MimeType=text/x-kvc
+Patterns=*.kvc;
+Type=MimeType
diff --git a/data/mimelnk/x-kvs.desktop b/data/mimelnk/x-kvs.desktop
new file mode 100644
index 00000000..ef77e67c
--- /dev/null
+++ b/data/mimelnk/x-kvs.desktop
@@ -0,0 +1,7 @@
+[Desktop Entry]
+Comment=KVIrc Script File
+Encoding=UTF-8
+Icon=kvs
+MimeType=text/x-kvs
+Patterns=*.kvs;
+Type=MimeType
diff --git a/data/mimelnk/x-kvt.desktop b/data/mimelnk/x-kvt.desktop
new file mode 100644
index 00000000..b136a058
--- /dev/null
+++ b/data/mimelnk/x-kvt.desktop
@@ -0,0 +1,7 @@
+[Desktop Entry]
+Comment=KVIrc Theme Package
+Encoding=UTF-8
+Icon=kvt
+MimeType=application/x-kvt
+Patterns=*.kvt;
+Type=MimeType
diff --git a/data/msgcolors/Makefile.am b/data/msgcolors/Makefile.am
new file mode 100644
index 00000000..078addb5
--- /dev/null
+++ b/data/msgcolors/Makefile.am
@@ -0,0 +1,5 @@
+tmpdir = $(msgcolorsdir)
+
+tmp_DATA = *.msgclr
+
+EXTRA_DIST = $(tmp_DATA)
diff --git a/data/msgcolors/all-black.msgclr b/data/msgcolors/all-black.msgclr
new file mode 100644
index 00000000..3beb2140
--- /dev/null
+++ b/data/msgcolors/all-black.msgclr
@@ -0,0 +1,659 @@
+# KVIrc configuration file
+[Messages]
+Icon126=193
+Back123=100
+Log122=true
+Fore118=1
+Level117=3
+Icon115=133
+Back112=100
+Log111=true
+Icon108=199
+Back105=100
+Level102=5
+Log100=true
+Level95=3
+Back92=100
+Level86=4
+Back81=100
+Log79=true
+Level77=3
+Back70=100
+Level68=3
+Log68=true
+Level59=4
+Fore59=1
+Log57=true
+Fore48=1
+Log46=true
+Fore37=1
+Log35=true
+Icon29=53
+Fore26=1
+Log24=true
+Icon18=30
+Fore15=1
+Log13=true
+Log1=true
+Back124=100
+Log123=true
+Fore119=1
+Level118=5
+Icon116=137
+Back113=100
+Log112=true
+Icon109=200
+Back106=100
+Level103=5
+Log101=true
+Level96=3
+Back93=100
+Icon90=176
+Level87=3
+Back82=100
+Level78=3
+Back71=100
+Level69=3
+Log69=true
+Back60=100
+Log58=true
+Fore49=1
+Log47=true
+Fore38=1
+Log36=true
+Fore27=1
+Log25=true
+Icon19=36
+Fore16=1
+Log14=true
+Log2=true
+Level0=1
+Fore0=1
+Icon127=194
+Back125=100
+Log124=true
+Level119=5
+Icon117=132
+Back114=100
+Log113=true
+Back107=100
+Level104=5
+Log102=true
+Level97=5
+Back94=100
+Icon91=177
+Level88=1
+Back83=100
+Icon80=156
+Level79=3
+Back72=100
+Back61=100
+Log59=true
+Back50=100
+Log48=true
+Fore39=1
+Log37=true
+Fore28=1
+Log26=true
+Fore17=1
+Log15=true
+Log3=true
+Level1=1
+Fore1=0
+Back126=100
+Log125=true
+Icon118=135
+Back115=100
+Log114=true
+Back108=100
+Level105=5
+Log103=true
+Level98=5
+Back95=100
+Icon92=181
+Level89=2
+Back84=100
+Icon81=141
+Back73=100
+Icon70=105
+Back62=100
+Back51=100
+Log49=true
+Back40=100
+Log38=true
+Fore29=1
+Log27=true
+Fore18=1
+Log16=true
+Level10=4
+Log4=true
+Level2=5
+Fore2=0
+Log126=true
+Icon119=134
+Back116=100
+Log115=true
+Back109=100
+Level106=5
+Log104=true
+Level99=5
+Back96=100
+Icon93=139
+Fore90=1
+Back85=100
+Icon82=174
+Back74=100
+Icon71=110
+Back63=100
+Icon60=91
+Back52=100
+Back41=100
+Log39=true
+Back30=100
+Log28=true
+Level20=1
+Fore19=1
+Log17=true
+Level11=4
+Log5=true
+Level3=1
+Fore3=1
+Icon0=0
+Back127=100
+Back117=100
+Log116=true
+Level107=5
+Log105=true
+Back97=100
+Icon94=182
+Fore91=1
+Back86=100
+Icon83=162
+Fore80=1
+Back75=100
+Icon72=112
+Back64=100
+Icon61=92
+Back53=100
+Icon50=72
+Back42=100
+Back31=100
+Level30=4
+Log29=true
+Level21=1
+Back20=100
+Log18=true
+Level12=1
+Log6=true
+Level4=1
+Fore4=1
+Icon1=0
+Log127=true
+Back118=100
+Log117=true
+Level108=5
+Log106=true
+Fore100=1
+Back98=100
+Icon95=183
+Fore92=1
+Log90=true
+Back87=100
+Icon84=164
+Fore81=1
+Back76=100
+Icon73=120
+Fore70=1
+Back65=100
+Icon62=93
+Back54=100
+Icon51=73
+Back43=100
+Level40=2
+Icon40=35
+Back32=100
+Level31=4
+Level22=2
+Back21=100
+Log19=true
+Level13=1
+Back10=100
+Log7=true
+Level5=2
+Fore5=1
+Icon2=0
+Back119=100
+Log118=true
+Level109=5
+Log107=true
+Fore101=1
+Back99=100
+Icon96=184
+Fore93=1
+Log91=true
+Back88=100
+Icon85=165
+Fore82=1
+Log80=true
+Back77=100
+Icon74=122
+Fore71=1
+Back66=100
+Icon63=94
+Fore60=1
+Back55=100
+Icon52=75
+Back44=100
+Level41=2
+Icon41=63
+Back33=100
+Level32=3
+Icon30=54
+Level23=3
+Back22=100
+Level14=3
+Back11=100
+Log8=true
+Level6=2
+Fore6=1
+Icon3=0
+Back0=100
+Fore120=1
+Log119=true
+Log108=true
+Fore102=1
+Icon97=188
+Fore94=1
+Log92=true
+Back89=100
+Icon86=170
+Fore83=1
+Log81=true
+Back78=100
+Icon75=128
+Fore72=1
+Log70=true
+Back67=100
+Icon64=95
+Fore61=1
+Back56=100
+Icon53=77
+Level50=2
+Fore50=1
+Back45=100
+Level42=2
+Icon42=64
+Back34=100
+Level33=3
+Icon31=55
+Level24=1
+Back23=100
+Icon20=39
+Level15=1
+Back12=100
+Log9=true
+Level7=4
+Fore7=1
+Icon4=0
+Back1=1
+Fore121=1
+Level120=5
+Fore110=1
+Log109=true
+Fore103=1
+Icon100=191
+Icon98=189
+Fore95=1
+Log93=true
+Icon87=171
+Fore84=1
+Log82=true
+Back79=100
+Icon76=129
+Fore73=1
+Log71=true
+Back68=100
+Icon65=100
+Fore62=1
+Level60=4
+Log60=true
+Back57=100
+Icon54=78
+Level51=2
+Fore51=1
+Back46=100
+Level43=2
+Icon43=65
+Fore40=1
+Back35=100
+Level34=1
+Icon32=56
+Level25=3
+Back24=100
+Icon21=40
+Level16=1
+Back13=100
+Icon10=23
+Level8=1
+Fore8=1
+Icon5=11
+Back2=1
+Fore122=1
+Level121=5
+Fore111=1
+Level110=3
+Fore104=1
+Icon101=192
+Icon99=190
+Fore96=1
+Log94=true
+Icon88=173
+Fore85=1
+Log83=true
+Icon77=153
+Fore74=1
+Log72=true
+Level70=1
+Back69=100
+Icon66=101
+Fore63=1
+Level61=4
+Log61=true
+Back58=100
+Icon55=79
+Level52=4
+Fore52=1
+Log50=true
+Back47=100
+Level44=2
+Icon44=66
+Fore41=1
+Back36=100
+Level35=2
+Icon33=57
+Fore30=1
+Level26=3
+Back25=100
+Icon22=41
+Level17=1
+Back14=100
+Icon11=24
+Level9=3
+Fore9=1
+Icon6=12
+Back3=100
+Fore123=1
+Level122=5
+Icon120=242
+Fore112=1
+Level111=1
+Fore105=1
+Icon102=193
+Fore97=1
+Log95=true
+Icon89=175
+Fore86=1
+Log84=true
+Level80=3
+Icon78=154
+Fore75=1
+Log73=true
+Level71=2
+Icon67=102
+Fore64=1
+Level62=1
+Log62=true
+Back59=100
+Icon56=87
+Level53=3
+Fore53=1
+Log51=true
+Back48=100
+Level45=2
+Icon45=67
+Fore42=1
+Log40=true
+Back37=100
+Level36=2
+Icon34=58
+Fore31=1
+Level27=4
+Back26=100
+Icon23=42
+Fore20=1
+Level18=1
+Back15=100
+Icon12=25
+Icon7=13
+Back4=100
+Fore124=1
+Level123=5
+Icon121=243
+Fore113=1
+Level112=1
+Icon110=203
+Fore106=1
+Icon103=194
+Back100=100
+Fore98=1
+Log96=true
+Level90=4
+Fore87=1
+Log85=true
+Level81=3
+Icon79=155
+Fore76=1
+Log74=true
+Level72=1
+Icon68=103
+Fore65=1
+Level63=4
+Log63=true
+Icon57=88
+Level54=2
+Fore54=1
+Log52=true
+Back49=100
+Level46=2
+Icon46=68
+Fore43=1
+Log41=true
+Back38=100
+Level37=2
+Icon35=59
+Fore32=1
+Log30=true
+Level28=3
+Back27=100
+Icon24=45
+Fore21=1
+Level19=1
+Back16=100
+Icon13=14
+Fore10=1
+Icon8=21
+Back5=100
+Fore125=1
+Level124=2
+Icon122=244
+Fore114=1
+Level113=1
+Icon111=205
+Fore107=1
+Icon104=195
+Back101=100
+Fore99=1
+Log97=true
+Level91=2
+Fore88=1
+Log86=true
+Level82=2
+Fore77=1
+Log75=true
+Level73=3
+Icon69=104
+Fore66=1
+Level64=4
+Log64=true
+Icon58=89
+Level55=4
+Fore55=1
+Log53=true
+Level47=2
+Icon47=69
+Fore44=1
+Log42=true
+Back39=100
+Level38=2
+Icon36=60
+Fore33=1
+Log31=true
+Level29=3
+Back28=100
+Icon25=46
+Fore22=1
+Log20=true
+Back17=100
+Icon14=26
+Fore11=1
+Icon9=22
+Back6=100
+Fore126=1
+Level125=2
+Icon123=245
+Back120=100
+Fore115=1
+Level114=3
+Icon112=229
+Fore108=1
+Icon105=196
+Back102=100
+Log98=true
+Level92=1
+Fore89=1
+Log87=true
+Level83=4
+Fore78=1
+Log76=true
+Level74=1
+Fore67=1
+Level65=1
+Log65=true
+Icon59=90
+Level56=3
+Fore56=1
+Log54=true
+Level48=2
+Icon48=70
+Fore45=1
+Log43=true
+Level39=2
+Icon37=61
+Fore34=1
+Log32=true
+Back29=100
+Icon26=48
+Fore23=1
+Log21=true
+Back18=100
+Icon15=27
+Fore12=1
+Log10=true
+Back7=100
+Level126=5
+Icon124=174
+Back121=100
+Log120=true
+Fore116=1
+Level115=2
+Icon113=206
+Back110=100
+Fore109=1
+Icon106=197
+Back103=100
+Level100=5
+Log99=true
+Level93=3
+Back90=100
+Log88=true
+Level84=4
+Fore79=1
+Log77=true
+Level75=1
+Fore68=1
+Level66=3
+Log66=true
+Level57=4
+Fore57=1
+Log55=true
+Level49=2
+Icon49=71
+Fore46=1
+Log44=true
+Icon38=34
+Fore35=1
+Log33=true
+Icon27=51
+Fore24=1
+Log22=true
+Back19=100
+Icon16=28
+Fore13=1
+Log11=true
+Back8=100
+Fore127=1
+Icon125=175
+Back122=100
+Log121=true
+Fore117=1
+Level116=1
+Icon114=136
+Back111=100
+Log110=true
+Icon107=198
+Back104=100
+Level101=5
+Level94=4
+Back91=100
+Log89=true
+Level85=1
+Back80=100
+Log78=true
+Level76=1
+Fore69=1
+Level67=3
+Log67=true
+Level58=4
+Fore58=1
+Log56=true
+Fore47=1
+Log45=true
+Icon39=62
+Fore36=1
+Log34=true
+Icon28=52
+Fore25=1
+Log23=true
+Icon17=29
+Fore14=1
+Log12=true
+Back9=100
+Log0=true
+Level127=5
+[Colors]
+Color0=255,255,255
+Color1=0,0,0
+Color2=0,0,140
+Color3=0,100,0
+Color10=0,150,180
+Color4=230,0,0
+Color11=170,170,255
+Color5=150,0,0
+Color12=15,15,255
+Color6=80,0,80
+Color13=200,0,200
+Color7=255,90,0
+Color14=80,80,80
+Color8=255,255,0
+Color15=170,170,170
+Color9=0,255,0
diff --git a/data/msgcolors/all-gray.msgclr b/data/msgcolors/all-gray.msgclr
new file mode 100644
index 00000000..565f87e5
--- /dev/null
+++ b/data/msgcolors/all-gray.msgclr
@@ -0,0 +1,659 @@
+# KVIrc configuration file
+[Messages]
+Icon126=193
+Back123=100
+Log122=true
+Fore118=15
+Level117=3
+Icon115=133
+Back112=100
+Log111=true
+Icon108=199
+Back105=100
+Level102=5
+Log100=true
+Level95=3
+Back92=100
+Level86=4
+Back81=100
+Log79=true
+Level77=3
+Back70=100
+Level68=3
+Log68=true
+Level59=4
+Fore59=15
+Log57=true
+Fore48=15
+Log46=true
+Fore37=15
+Log35=true
+Icon29=53
+Fore26=15
+Log24=true
+Icon18=30
+Fore15=15
+Log13=true
+Log1=true
+Back124=100
+Log123=true
+Fore119=15
+Level118=5
+Icon116=137
+Back113=100
+Log112=true
+Icon109=200
+Back106=100
+Level103=5
+Log101=true
+Level96=3
+Back93=100
+Icon90=176
+Level87=3
+Back82=100
+Level78=3
+Back71=100
+Level69=3
+Log69=true
+Back60=100
+Log58=true
+Fore49=15
+Log47=true
+Fore38=15
+Log36=true
+Fore27=15
+Log25=true
+Icon19=36
+Fore16=15
+Log14=true
+Log2=true
+Level0=1
+Fore0=15
+Icon127=194
+Back125=100
+Log124=true
+Level119=5
+Icon117=132
+Back114=100
+Log113=true
+Back107=100
+Level104=5
+Log102=true
+Level97=5
+Back94=100
+Icon91=177
+Level88=1
+Back83=100
+Icon80=156
+Level79=3
+Back72=100
+Back61=100
+Log59=true
+Back50=100
+Log48=true
+Fore39=15
+Log37=true
+Fore28=15
+Log26=true
+Fore17=15
+Log15=true
+Log3=true
+Level1=1
+Fore1=0
+Back126=100
+Log125=true
+Icon118=135
+Back115=100
+Log114=true
+Back108=100
+Level105=5
+Log103=true
+Level98=5
+Back95=100
+Icon92=181
+Level89=2
+Back84=100
+Icon81=141
+Back73=100
+Icon70=105
+Back62=100
+Back51=100
+Log49=true
+Back40=100
+Log38=true
+Fore29=15
+Log27=true
+Fore18=15
+Log16=true
+Level10=4
+Log4=true
+Level2=5
+Fore2=0
+Log126=true
+Icon119=134
+Back116=100
+Log115=true
+Back109=100
+Level106=5
+Log104=true
+Level99=5
+Back96=100
+Icon93=139
+Fore90=15
+Back85=100
+Icon82=174
+Back74=100
+Icon71=110
+Back63=100
+Icon60=91
+Back52=100
+Back41=100
+Log39=true
+Back30=100
+Log28=true
+Level20=1
+Fore19=15
+Log17=true
+Level11=4
+Log5=true
+Level3=1
+Fore3=15
+Icon0=0
+Back127=100
+Back117=100
+Log116=true
+Level107=5
+Log105=true
+Back97=100
+Icon94=182
+Fore91=15
+Back86=100
+Icon83=162
+Fore80=15
+Back75=100
+Icon72=112
+Back64=100
+Icon61=92
+Back53=100
+Icon50=72
+Back42=100
+Back31=100
+Level30=4
+Log29=true
+Level21=1
+Back20=100
+Log18=true
+Level12=1
+Log6=true
+Level4=1
+Fore4=15
+Icon1=0
+Log127=true
+Back118=100
+Log117=true
+Level108=5
+Log106=true
+Fore100=15
+Back98=100
+Icon95=183
+Fore92=15
+Log90=true
+Back87=100
+Icon84=164
+Fore81=15
+Back76=100
+Icon73=120
+Fore70=15
+Back65=100
+Icon62=93
+Back54=100
+Icon51=73
+Back43=100
+Level40=2
+Icon40=35
+Back32=100
+Level31=4
+Level22=2
+Back21=100
+Log19=true
+Level13=1
+Back10=100
+Log7=true
+Level5=2
+Fore5=15
+Icon2=0
+Back119=100
+Log118=true
+Level109=5
+Log107=true
+Fore101=15
+Back99=100
+Icon96=184
+Fore93=15
+Log91=true
+Back88=100
+Icon85=165
+Fore82=15
+Log80=true
+Back77=100
+Icon74=122
+Fore71=15
+Back66=100
+Icon63=94
+Fore60=15
+Back55=100
+Icon52=75
+Back44=100
+Level41=2
+Icon41=63
+Back33=100
+Level32=3
+Icon30=54
+Level23=3
+Back22=100
+Level14=3
+Back11=100
+Log8=true
+Level6=2
+Fore6=15
+Icon3=0
+Back0=100
+Fore120=15
+Log119=true
+Log108=true
+Fore102=15
+Icon97=188
+Fore94=15
+Log92=true
+Back89=100
+Icon86=170
+Fore83=15
+Log81=true
+Back78=100
+Icon75=128
+Fore72=15
+Log70=true
+Back67=100
+Icon64=95
+Fore61=15
+Back56=100
+Icon53=77
+Level50=2
+Fore50=15
+Back45=100
+Level42=2
+Icon42=64
+Back34=100
+Level33=3
+Icon31=55
+Level24=1
+Back23=100
+Icon20=39
+Level15=1
+Back12=100
+Log9=true
+Level7=4
+Fore7=15
+Icon4=0
+Back1=1
+Fore121=15
+Level120=5
+Fore110=15
+Log109=true
+Fore103=15
+Icon100=191
+Icon98=189
+Fore95=15
+Log93=true
+Icon87=171
+Fore84=15
+Log82=true
+Back79=100
+Icon76=129
+Fore73=15
+Log71=true
+Back68=100
+Icon65=100
+Fore62=15
+Level60=4
+Log60=true
+Back57=100
+Icon54=78
+Level51=2
+Fore51=15
+Back46=100
+Level43=2
+Icon43=65
+Fore40=15
+Back35=100
+Level34=1
+Icon32=56
+Level25=3
+Back24=100
+Icon21=40
+Level16=1
+Back13=100
+Icon10=23
+Level8=1
+Fore8=15
+Icon5=11
+Back2=1
+Fore122=15
+Level121=5
+Fore111=15
+Level110=3
+Fore104=15
+Icon101=192
+Icon99=190
+Fore96=15
+Log94=true
+Icon88=173
+Fore85=15
+Log83=true
+Icon77=153
+Fore74=15
+Log72=true
+Level70=1
+Back69=100
+Icon66=101
+Fore63=15
+Level61=4
+Log61=true
+Back58=100
+Icon55=79
+Level52=4
+Fore52=15
+Log50=true
+Back47=100
+Level44=2
+Icon44=66
+Fore41=15
+Back36=100
+Level35=2
+Icon33=57
+Fore30=15
+Level26=3
+Back25=100
+Icon22=41
+Level17=1
+Back14=100
+Icon11=24
+Level9=3
+Fore9=15
+Icon6=12
+Back3=100
+Fore123=15
+Level122=5
+Icon120=242
+Fore112=15
+Level111=1
+Fore105=15
+Icon102=193
+Fore97=15
+Log95=true
+Icon89=175
+Fore86=15
+Log84=true
+Level80=3
+Icon78=154
+Fore75=15
+Log73=true
+Level71=2
+Icon67=102
+Fore64=15
+Level62=1
+Log62=true
+Back59=100
+Icon56=87
+Level53=3
+Fore53=15
+Log51=true
+Back48=100
+Level45=2
+Icon45=67
+Fore42=15
+Log40=true
+Back37=100
+Level36=2
+Icon34=58
+Fore31=15
+Level27=4
+Back26=100
+Icon23=42
+Fore20=15
+Level18=1
+Back15=100
+Icon12=25
+Icon7=13
+Back4=100
+Fore124=15
+Level123=5
+Icon121=243
+Fore113=15
+Level112=1
+Icon110=203
+Fore106=15
+Icon103=194
+Back100=100
+Fore98=15
+Log96=true
+Level90=4
+Fore87=15
+Log85=true
+Level81=3
+Icon79=155
+Fore76=15
+Log74=true
+Level72=1
+Icon68=103
+Fore65=15
+Level63=4
+Log63=true
+Icon57=88
+Level54=2
+Fore54=15
+Log52=true
+Back49=100
+Level46=2
+Icon46=68
+Fore43=15
+Log41=true
+Back38=100
+Level37=2
+Icon35=59
+Fore32=15
+Log30=true
+Level28=3
+Back27=100
+Icon24=45
+Fore21=15
+Level19=1
+Back16=100
+Icon13=14
+Fore10=15
+Icon8=21
+Back5=100
+Fore125=15
+Level124=2
+Icon122=244
+Fore114=15
+Level113=1
+Icon111=205
+Fore107=15
+Icon104=195
+Back101=100
+Fore99=15
+Log97=true
+Level91=2
+Fore88=15
+Log86=true
+Level82=2
+Fore77=15
+Log75=true
+Level73=3
+Icon69=104
+Fore66=15
+Level64=4
+Log64=true
+Icon58=89
+Level55=4
+Fore55=15
+Log53=true
+Level47=2
+Icon47=69
+Fore44=15
+Log42=true
+Back39=100
+Level38=2
+Icon36=60
+Fore33=15
+Log31=true
+Level29=3
+Back28=100
+Icon25=46
+Fore22=15
+Log20=true
+Back17=100
+Icon14=26
+Fore11=15
+Icon9=22
+Back6=100
+Fore126=15
+Level125=2
+Icon123=245
+Back120=100
+Fore115=15
+Level114=3
+Icon112=229
+Fore108=15
+Icon105=196
+Back102=100
+Log98=true
+Level92=1
+Fore89=15
+Log87=true
+Level83=4
+Fore78=15
+Log76=true
+Level74=1
+Fore67=15
+Level65=1
+Log65=true
+Icon59=90
+Level56=3
+Fore56=15
+Log54=true
+Level48=2
+Icon48=70
+Fore45=15
+Log43=true
+Level39=2
+Icon37=61
+Fore34=15
+Log32=true
+Back29=100
+Icon26=48
+Fore23=15
+Log21=true
+Back18=100
+Icon15=27
+Fore12=15
+Log10=true
+Back7=100
+Level126=5
+Icon124=174
+Back121=100
+Log120=true
+Fore116=15
+Level115=2
+Icon113=206
+Back110=100
+Fore109=15
+Icon106=197
+Back103=100
+Level100=5
+Log99=true
+Level93=3
+Back90=100
+Log88=true
+Level84=4
+Fore79=15
+Log77=true
+Level75=1
+Fore68=15
+Level66=3
+Log66=true
+Level57=4
+Fore57=15
+Log55=true
+Level49=2
+Icon49=71
+Fore46=15
+Log44=true
+Icon38=34
+Fore35=15
+Log33=true
+Icon27=51
+Fore24=15
+Log22=true
+Back19=100
+Icon16=28
+Fore13=15
+Log11=true
+Back8=100
+Fore127=15
+Icon125=175
+Back122=100
+Log121=true
+Fore117=15
+Level116=1
+Icon114=136
+Back111=100
+Log110=true
+Icon107=198
+Back104=100
+Level101=5
+Level94=4
+Back91=100
+Log89=true
+Level85=1
+Back80=100
+Log78=true
+Level76=1
+Fore69=15
+Level67=3
+Log67=true
+Level58=4
+Fore58=15
+Log56=true
+Fore47=15
+Log45=true
+Icon39=62
+Fore36=15
+Log34=true
+Icon28=52
+Fore25=15
+Log23=true
+Icon17=29
+Fore14=15
+Log12=true
+Back9=100
+Log0=true
+Level127=5
+[Colors]
+Color0=255,255,255
+Color1=0,0,0
+Color2=0,0,140
+Color3=0,100,0
+Color10=0,150,180
+Color4=230,0,0
+Color11=170,170,255
+Color5=150,0,0
+Color12=15,15,255
+Color6=80,0,80
+Color13=200,0,200
+Color7=255,90,0
+Color14=80,80,80
+Color8=255,255,0
+Color15=170,170,170
+Color9=0,255,0
diff --git a/data/msgcolors/all-green.msgclr b/data/msgcolors/all-green.msgclr
new file mode 100644
index 00000000..99cee8ce
--- /dev/null
+++ b/data/msgcolors/all-green.msgclr
@@ -0,0 +1,659 @@
+# KVIrc configuration file
+[Messages]
+Icon126=193
+Back123=100
+Log122=true
+Fore118=9
+Level117=3
+Icon115=133
+Back112=100
+Log111=true
+Icon108=199
+Back105=100
+Level102=5
+Log100=true
+Level95=3
+Back92=100
+Level86=4
+Back81=100
+Log79=true
+Level77=3
+Back70=100
+Level68=3
+Log68=true
+Level59=4
+Fore59=9
+Log57=true
+Fore48=9
+Log46=true
+Fore37=9
+Log35=true
+Icon29=53
+Fore26=9
+Log24=true
+Icon18=30
+Fore15=9
+Log13=true
+Log1=true
+Back124=100
+Log123=true
+Fore119=9
+Level118=5
+Icon116=137
+Back113=100
+Log112=true
+Icon109=200
+Back106=100
+Level103=5
+Log101=true
+Level96=3
+Back93=100
+Icon90=176
+Level87=3
+Back82=100
+Level78=3
+Back71=100
+Level69=3
+Log69=true
+Back60=100
+Log58=true
+Fore49=9
+Log47=true
+Fore38=9
+Log36=true
+Fore27=9
+Log25=true
+Icon19=36
+Fore16=9
+Log14=true
+Log2=true
+Level0=1
+Fore0=9
+Icon127=194
+Back125=100
+Log124=true
+Level119=5
+Icon117=132
+Back114=100
+Log113=true
+Back107=100
+Level104=5
+Log102=true
+Level97=5
+Back94=100
+Icon91=177
+Level88=1
+Back83=100
+Icon80=156
+Level79=3
+Back72=100
+Back61=100
+Log59=true
+Back50=100
+Log48=true
+Fore39=9
+Log37=true
+Fore28=9
+Log26=true
+Fore17=9
+Log15=true
+Log3=true
+Level1=1
+Fore1=1
+Back126=100
+Log125=true
+Icon118=135
+Back115=100
+Log114=true
+Back108=100
+Level105=5
+Log103=true
+Level98=5
+Back95=100
+Icon92=181
+Level89=2
+Back84=100
+Icon81=141
+Back73=100
+Icon70=105
+Back62=100
+Back51=100
+Log49=true
+Back40=100
+Log38=true
+Fore29=9
+Log27=true
+Fore18=9
+Log16=true
+Level10=4
+Log4=true
+Level2=5
+Fore2=1
+Log126=true
+Icon119=134
+Back116=100
+Log115=true
+Back109=100
+Level106=5
+Log104=true
+Level99=5
+Back96=100
+Icon93=139
+Fore90=9
+Back85=100
+Icon82=174
+Back74=100
+Icon71=110
+Back63=100
+Icon60=91
+Back52=100
+Back41=100
+Log39=true
+Back30=100
+Log28=true
+Level20=1
+Fore19=9
+Log17=true
+Level11=4
+Log5=true
+Level3=1
+Fore3=9
+Icon0=0
+Back127=100
+Back117=100
+Log116=true
+Level107=5
+Log105=true
+Back97=100
+Icon94=182
+Fore91=9
+Back86=100
+Icon83=162
+Fore80=9
+Back75=100
+Icon72=112
+Back64=100
+Icon61=92
+Back53=100
+Icon50=72
+Back42=100
+Back31=100
+Level30=4
+Log29=true
+Level21=1
+Back20=100
+Log18=true
+Level12=1
+Log6=true
+Level4=1
+Fore4=9
+Icon1=0
+Log127=true
+Back118=100
+Log117=true
+Level108=5
+Log106=true
+Fore100=9
+Back98=100
+Icon95=183
+Fore92=9
+Log90=true
+Back87=100
+Icon84=164
+Fore81=9
+Back76=100
+Icon73=120
+Fore70=9
+Back65=100
+Icon62=93
+Back54=100
+Icon51=73
+Back43=100
+Level40=2
+Icon40=35
+Back32=100
+Level31=4
+Level22=2
+Back21=100
+Log19=true
+Level13=1
+Back10=100
+Log7=true
+Level5=2
+Fore5=9
+Icon2=0
+Back119=100
+Log118=true
+Level109=5
+Log107=true
+Fore101=9
+Back99=100
+Icon96=184
+Fore93=9
+Log91=true
+Back88=100
+Icon85=165
+Fore82=9
+Log80=true
+Back77=100
+Icon74=122
+Fore71=9
+Back66=100
+Icon63=94
+Fore60=9
+Back55=100
+Icon52=75
+Back44=100
+Level41=2
+Icon41=63
+Back33=100
+Level32=3
+Icon30=54
+Level23=3
+Back22=100
+Level14=3
+Back11=100
+Log8=true
+Level6=2
+Fore6=9
+Icon3=0
+Back0=100
+Fore120=9
+Log119=true
+Log108=true
+Fore102=9
+Icon97=188
+Fore94=9
+Log92=true
+Back89=100
+Icon86=170
+Fore83=9
+Log81=true
+Back78=100
+Icon75=128
+Fore72=9
+Log70=true
+Back67=100
+Icon64=95
+Fore61=9
+Back56=100
+Icon53=77
+Level50=2
+Fore50=9
+Back45=100
+Level42=2
+Icon42=64
+Back34=100
+Level33=3
+Icon31=55
+Level24=1
+Back23=100
+Icon20=39
+Level15=1
+Back12=100
+Log9=true
+Level7=4
+Fore7=9
+Icon4=0
+Back1=9
+Fore121=9
+Level120=5
+Fore110=9
+Log109=true
+Fore103=9
+Icon100=191
+Icon98=189
+Fore95=9
+Log93=true
+Icon87=171
+Fore84=9
+Log82=true
+Back79=100
+Icon76=129
+Fore73=9
+Log71=true
+Back68=100
+Icon65=100
+Fore62=9
+Level60=4
+Log60=true
+Back57=100
+Icon54=78
+Level51=2
+Fore51=9
+Back46=100
+Level43=2
+Icon43=65
+Fore40=9
+Back35=100
+Level34=1
+Icon32=56
+Level25=3
+Back24=100
+Icon21=40
+Level16=1
+Back13=100
+Icon10=23
+Level8=1
+Fore8=9
+Icon5=11
+Back2=9
+Fore122=9
+Level121=5
+Fore111=9
+Level110=3
+Fore104=9
+Icon101=192
+Icon99=190
+Fore96=9
+Log94=true
+Icon88=173
+Fore85=9
+Log83=true
+Icon77=153
+Fore74=9
+Log72=true
+Level70=1
+Back69=100
+Icon66=101
+Fore63=9
+Level61=4
+Log61=true
+Back58=100
+Icon55=79
+Level52=4
+Fore52=9
+Log50=true
+Back47=100
+Level44=2
+Icon44=66
+Fore41=9
+Back36=100
+Level35=2
+Icon33=57
+Fore30=9
+Level26=3
+Back25=100
+Icon22=41
+Level17=1
+Back14=100
+Icon11=24
+Level9=3
+Fore9=9
+Icon6=12
+Back3=100
+Fore123=9
+Level122=5
+Icon120=242
+Fore112=9
+Level111=1
+Fore105=9
+Icon102=193
+Fore97=9
+Log95=true
+Icon89=175
+Fore86=9
+Log84=true
+Level80=3
+Icon78=154
+Fore75=9
+Log73=true
+Level71=2
+Icon67=102
+Fore64=9
+Level62=1
+Log62=true
+Back59=100
+Icon56=87
+Level53=3
+Fore53=9
+Log51=true
+Back48=100
+Level45=2
+Icon45=67
+Fore42=9
+Log40=true
+Back37=100
+Level36=2
+Icon34=58
+Fore31=9
+Level27=4
+Back26=100
+Icon23=42
+Fore20=9
+Level18=1
+Back15=100
+Icon12=25
+Icon7=13
+Back4=100
+Fore124=9
+Level123=5
+Icon121=243
+Fore113=9
+Level112=1
+Icon110=203
+Fore106=9
+Icon103=194
+Back100=100
+Fore98=9
+Log96=true
+Level90=4
+Fore87=9
+Log85=true
+Level81=3
+Icon79=155
+Fore76=9
+Log74=true
+Level72=1
+Icon68=103
+Fore65=9
+Level63=4
+Log63=true
+Icon57=88
+Level54=2
+Fore54=9
+Log52=true
+Back49=100
+Level46=2
+Icon46=68
+Fore43=9
+Log41=true
+Back38=100
+Level37=2
+Icon35=59
+Fore32=9
+Log30=true
+Level28=3
+Back27=100
+Icon24=45
+Fore21=9
+Level19=1
+Back16=100
+Icon13=14
+Fore10=9
+Icon8=21
+Back5=100
+Fore125=9
+Level124=2
+Icon122=244
+Fore114=9
+Level113=1
+Icon111=205
+Fore107=9
+Icon104=195
+Back101=100
+Fore99=9
+Log97=true
+Level91=2
+Fore88=9
+Log86=true
+Level82=2
+Fore77=9
+Log75=true
+Level73=3
+Icon69=104
+Fore66=9
+Level64=4
+Log64=true
+Icon58=89
+Level55=4
+Fore55=9
+Log53=true
+Level47=2
+Icon47=69
+Fore44=9
+Log42=true
+Back39=100
+Level38=2
+Icon36=60
+Fore33=9
+Log31=true
+Level29=3
+Back28=100
+Icon25=46
+Fore22=9
+Log20=true
+Back17=100
+Icon14=26
+Fore11=9
+Icon9=22
+Back6=100
+Fore126=9
+Level125=2
+Icon123=245
+Back120=100
+Fore115=9
+Level114=3
+Icon112=229
+Fore108=9
+Icon105=196
+Back102=100
+Log98=true
+Level92=1
+Fore89=9
+Log87=true
+Level83=4
+Fore78=9
+Log76=true
+Level74=1
+Fore67=9
+Level65=1
+Log65=true
+Icon59=90
+Level56=3
+Fore56=9
+Log54=true
+Level48=2
+Icon48=70
+Fore45=9
+Log43=true
+Level39=2
+Icon37=61
+Fore34=9
+Log32=true
+Back29=100
+Icon26=48
+Fore23=9
+Log21=true
+Back18=100
+Icon15=27
+Fore12=9
+Log10=true
+Back7=100
+Level126=5
+Icon124=174
+Back121=100
+Log120=true
+Fore116=9
+Level115=2
+Icon113=206
+Back110=100
+Fore109=9
+Icon106=197
+Back103=100
+Level100=5
+Log99=true
+Level93=3
+Back90=100
+Log88=true
+Level84=4
+Fore79=9
+Log77=true
+Level75=1
+Fore68=9
+Level66=3
+Log66=true
+Level57=4
+Fore57=9
+Log55=true
+Level49=2
+Icon49=71
+Fore46=9
+Log44=true
+Icon38=34
+Fore35=9
+Log33=true
+Icon27=51
+Fore24=9
+Log22=true
+Back19=100
+Icon16=28
+Fore13=9
+Log11=true
+Back8=100
+Fore127=9
+Icon125=175
+Back122=100
+Log121=true
+Fore117=9
+Level116=1
+Icon114=136
+Back111=100
+Log110=true
+Icon107=198
+Back104=100
+Level101=5
+Level94=4
+Back91=100
+Log89=true
+Level85=1
+Back80=100
+Log78=true
+Level76=1
+Fore69=9
+Level67=3
+Log67=true
+Level58=4
+Fore58=9
+Log56=true
+Fore47=9
+Log45=true
+Icon39=62
+Fore36=9
+Log34=true
+Icon28=52
+Fore25=9
+Log23=true
+Icon17=29
+Fore14=9
+Log12=true
+Back9=100
+Log0=true
+Level127=5
+[Colors]
+Color0=255,255,255
+Color1=0,0,0
+Color2=0,0,140
+Color3=0,100,0
+Color10=0,150,180
+Color4=230,0,0
+Color11=170,170,255
+Color5=150,0,0
+Color12=15,15,255
+Color6=80,0,80
+Color13=200,0,200
+Color7=255,90,0
+Color14=80,80,80
+Color8=255,255,0
+Color15=170,170,170
+Color9=0,255,0
diff --git a/data/msgcolors/all-white.msgclr b/data/msgcolors/all-white.msgclr
new file mode 100644
index 00000000..26dd83d6
--- /dev/null
+++ b/data/msgcolors/all-white.msgclr
@@ -0,0 +1,659 @@
+# KVIrc configuration file
+[Messages]
+Icon126=193
+Back123=100
+Log122=true
+Fore118=0
+Level117=3
+Icon115=133
+Back112=100
+Log111=true
+Icon108=199
+Back105=100
+Level102=5
+Log100=true
+Level95=3
+Back92=100
+Level86=4
+Back81=100
+Log79=true
+Level77=3
+Back70=100
+Level68=3
+Log68=true
+Level59=4
+Fore59=0
+Log57=true
+Fore48=0
+Log46=true
+Fore37=0
+Log35=true
+Icon29=53
+Fore26=0
+Log24=true
+Icon18=30
+Fore15=0
+Log13=true
+Log1=true
+Back124=100
+Log123=true
+Fore119=0
+Level118=5
+Icon116=137
+Back113=100
+Log112=true
+Icon109=200
+Back106=100
+Level103=5
+Log101=true
+Level96=3
+Back93=100
+Icon90=176
+Level87=3
+Back82=100
+Level78=3
+Back71=100
+Level69=3
+Log69=true
+Back60=100
+Log58=true
+Fore49=0
+Log47=true
+Fore38=0
+Log36=true
+Fore27=0
+Log25=true
+Icon19=36
+Fore16=0
+Log14=true
+Log2=true
+Level0=1
+Fore0=0
+Icon127=194
+Back125=100
+Log124=true
+Level119=5
+Icon117=132
+Back114=100
+Log113=true
+Back107=100
+Level104=5
+Log102=true
+Level97=5
+Back94=100
+Icon91=177
+Level88=1
+Back83=100
+Icon80=156
+Level79=3
+Back72=100
+Back61=100
+Log59=true
+Back50=100
+Log48=true
+Fore39=0
+Log37=true
+Fore28=0
+Log26=true
+Fore17=0
+Log15=true
+Log3=true
+Level1=1
+Fore1=1
+Back126=100
+Log125=true
+Icon118=135
+Back115=100
+Log114=true
+Back108=100
+Level105=5
+Log103=true
+Level98=5
+Back95=100
+Icon92=181
+Level89=2
+Back84=100
+Icon81=141
+Back73=100
+Icon70=105
+Back62=100
+Back51=100
+Log49=true
+Back40=100
+Log38=true
+Fore29=0
+Log27=true
+Fore18=0
+Log16=true
+Level10=4
+Log4=true
+Level2=5
+Fore2=1
+Log126=true
+Icon119=134
+Back116=100
+Log115=true
+Back109=100
+Level106=5
+Log104=true
+Level99=5
+Back96=100
+Icon93=139
+Fore90=0
+Back85=100
+Icon82=174
+Back74=100
+Icon71=110
+Back63=100
+Icon60=91
+Back52=100
+Back41=100
+Log39=true
+Back30=100
+Log28=true
+Level20=1
+Fore19=0
+Log17=true
+Level11=4
+Log5=true
+Level3=1
+Fore3=0
+Icon0=0
+Back127=100
+Back117=100
+Log116=true
+Level107=5
+Log105=true
+Back97=100
+Icon94=182
+Fore91=0
+Back86=100
+Icon83=162
+Fore80=0
+Back75=100
+Icon72=112
+Back64=100
+Icon61=92
+Back53=100
+Icon50=72
+Back42=100
+Back31=100
+Level30=4
+Log29=true
+Level21=1
+Back20=100
+Log18=true
+Level12=1
+Log6=true
+Level4=1
+Fore4=0
+Icon1=0
+Log127=true
+Back118=100
+Log117=true
+Level108=5
+Log106=true
+Fore100=0
+Back98=100
+Icon95=183
+Fore92=0
+Log90=true
+Back87=100
+Icon84=164
+Fore81=0
+Back76=100
+Icon73=120
+Fore70=0
+Back65=100
+Icon62=93
+Back54=100
+Icon51=73
+Back43=100
+Level40=2
+Icon40=35
+Back32=100
+Level31=4
+Level22=2
+Back21=100
+Log19=true
+Level13=1
+Back10=100
+Log7=true
+Level5=2
+Fore5=0
+Icon2=0
+Back119=100
+Log118=true
+Level109=5
+Log107=true
+Fore101=0
+Back99=100
+Icon96=184
+Fore93=0
+Log91=true
+Back88=100
+Icon85=165
+Fore82=0
+Log80=true
+Back77=100
+Icon74=122
+Fore71=0
+Back66=100
+Icon63=94
+Fore60=0
+Back55=100
+Icon52=75
+Back44=100
+Level41=2
+Icon41=63
+Back33=100
+Level32=3
+Icon30=54
+Level23=3
+Back22=100
+Level14=3
+Back11=100
+Log8=true
+Level6=2
+Fore6=0
+Icon3=0
+Back0=100
+Fore120=0
+Log119=true
+Log108=true
+Fore102=0
+Icon97=188
+Fore94=0
+Log92=true
+Back89=100
+Icon86=170
+Fore83=0
+Log81=true
+Back78=100
+Icon75=128
+Fore72=0
+Log70=true
+Back67=100
+Icon64=95
+Fore61=0
+Back56=100
+Icon53=77
+Level50=2
+Fore50=0
+Back45=100
+Level42=2
+Icon42=64
+Back34=100
+Level33=3
+Icon31=55
+Level24=1
+Back23=100
+Icon20=39
+Level15=1
+Back12=100
+Log9=true
+Level7=4
+Fore7=0
+Icon4=0
+Back1=0
+Fore121=0
+Level120=5
+Fore110=0
+Log109=true
+Fore103=0
+Icon100=191
+Icon98=189
+Fore95=0
+Log93=true
+Icon87=171
+Fore84=0
+Log82=true
+Back79=100
+Icon76=129
+Fore73=0
+Log71=true
+Back68=100
+Icon65=100
+Fore62=0
+Level60=4
+Log60=true
+Back57=100
+Icon54=78
+Level51=2
+Fore51=0
+Back46=100
+Level43=2
+Icon43=65
+Fore40=0
+Back35=100
+Level34=1
+Icon32=56
+Level25=3
+Back24=100
+Icon21=40
+Level16=1
+Back13=100
+Icon10=23
+Level8=1
+Fore8=0
+Icon5=11
+Back2=0
+Fore122=0
+Level121=5
+Fore111=0
+Level110=3
+Fore104=0
+Icon101=192
+Icon99=190
+Fore96=0
+Log94=true
+Icon88=173
+Fore85=0
+Log83=true
+Icon77=153
+Fore74=0
+Log72=true
+Level70=1
+Back69=100
+Icon66=101
+Fore63=0
+Level61=4
+Log61=true
+Back58=100
+Icon55=79
+Level52=4
+Fore52=0
+Log50=true
+Back47=100
+Level44=2
+Icon44=66
+Fore41=0
+Back36=100
+Level35=2
+Icon33=57
+Fore30=0
+Level26=3
+Back25=100
+Icon22=41
+Level17=1
+Back14=100
+Icon11=24
+Level9=3
+Fore9=0
+Icon6=12
+Back3=100
+Fore123=0
+Level122=5
+Icon120=242
+Fore112=0
+Level111=1
+Fore105=0
+Icon102=193
+Fore97=0
+Log95=true
+Icon89=175
+Fore86=0
+Log84=true
+Level80=3
+Icon78=154
+Fore75=0
+Log73=true
+Level71=2
+Icon67=102
+Fore64=0
+Level62=1
+Log62=true
+Back59=100
+Icon56=87
+Level53=3
+Fore53=0
+Log51=true
+Back48=100
+Level45=2
+Icon45=67
+Fore42=0
+Log40=true
+Back37=100
+Level36=2
+Icon34=58
+Fore31=0
+Level27=4
+Back26=100
+Icon23=42
+Fore20=0
+Level18=1
+Back15=100
+Icon12=25
+Icon7=13
+Back4=100
+Fore124=0
+Level123=5
+Icon121=243
+Fore113=0
+Level112=1
+Icon110=203
+Fore106=0
+Icon103=194
+Back100=100
+Fore98=0
+Log96=true
+Level90=4
+Fore87=0
+Log85=true
+Level81=3
+Icon79=155
+Fore76=0
+Log74=true
+Level72=1
+Icon68=103
+Fore65=0
+Level63=4
+Log63=true
+Icon57=88
+Level54=2
+Fore54=0
+Log52=true
+Back49=100
+Level46=2
+Icon46=68
+Fore43=0
+Log41=true
+Back38=100
+Level37=2
+Icon35=59
+Fore32=0
+Log30=true
+Level28=3
+Back27=100
+Icon24=45
+Fore21=0
+Level19=1
+Back16=100
+Icon13=14
+Fore10=0
+Icon8=21
+Back5=100
+Fore125=0
+Level124=2
+Icon122=244
+Fore114=0
+Level113=1
+Icon111=205
+Fore107=0
+Icon104=195
+Back101=100
+Fore99=0
+Log97=true
+Level91=2
+Fore88=0
+Log86=true
+Level82=2
+Fore77=0
+Log75=true
+Level73=3
+Icon69=104
+Fore66=0
+Level64=4
+Log64=true
+Icon58=89
+Level55=4
+Fore55=0
+Log53=true
+Level47=2
+Icon47=69
+Fore44=0
+Log42=true
+Back39=100
+Level38=2
+Icon36=60
+Fore33=0
+Log31=true
+Level29=3
+Back28=100
+Icon25=46
+Fore22=0
+Log20=true
+Back17=100
+Icon14=26
+Fore11=0
+Icon9=22
+Back6=100
+Fore126=0
+Level125=2
+Icon123=245
+Back120=100
+Fore115=0
+Level114=3
+Icon112=229
+Fore108=0
+Icon105=196
+Back102=100
+Log98=true
+Level92=1
+Fore89=0
+Log87=true
+Level83=4
+Fore78=0
+Log76=true
+Level74=1
+Fore67=0
+Level65=1
+Log65=true
+Icon59=90
+Level56=3
+Fore56=0
+Log54=true
+Level48=2
+Icon48=70
+Fore45=0
+Log43=true
+Level39=2
+Icon37=61
+Fore34=0
+Log32=true
+Back29=100
+Icon26=48
+Fore23=0
+Log21=true
+Back18=100
+Icon15=27
+Fore12=0
+Log10=true
+Back7=100
+Level126=5
+Icon124=174
+Back121=100
+Log120=true
+Fore116=0
+Level115=2
+Icon113=206
+Back110=100
+Fore109=0
+Icon106=197
+Back103=100
+Level100=5
+Log99=true
+Level93=3
+Back90=100
+Log88=true
+Level84=4
+Fore79=0
+Log77=true
+Level75=1
+Fore68=0
+Level66=3
+Log66=true
+Level57=4
+Fore57=0
+Log55=true
+Level49=2
+Icon49=71
+Fore46=0
+Log44=true
+Icon38=34
+Fore35=0
+Log33=true
+Icon27=51
+Fore24=0
+Log22=true
+Back19=100
+Icon16=28
+Fore13=0
+Log11=true
+Back8=100
+Fore127=0
+Icon125=175
+Back122=100
+Log121=true
+Fore117=0
+Level116=1
+Icon114=136
+Back111=100
+Log110=true
+Icon107=198
+Back104=100
+Level101=5
+Level94=4
+Back91=100
+Log89=true
+Level85=1
+Back80=100
+Log78=true
+Level76=1
+Fore69=0
+Level67=3
+Log67=true
+Level58=4
+Fore58=0
+Log56=true
+Fore47=0
+Log45=true
+Icon39=62
+Fore36=0
+Log34=true
+Icon28=52
+Fore25=0
+Log23=true
+Icon17=29
+Fore14=0
+Log12=true
+Back9=100
+Log0=true
+Level127=5
+[Colors]
+Color0=255,255,255
+Color1=0,0,0
+Color2=0,0,140
+Color3=0,100,0
+Color10=0,150,180
+Color4=230,0,0
+Color11=170,170,255
+Color5=150,0,0
+Color12=15,15,255
+Color6=80,0,80
+Color13=200,0,200
+Color7=255,90,0
+Color14=80,80,80
+Color8=255,255,0
+Color15=170,170,170
+Color9=0,255,0
diff --git a/data/msgcolors/colored-2.msgclr b/data/msgcolors/colored-2.msgclr
new file mode 100644
index 00000000..d2310a91
--- /dev/null
+++ b/data/msgcolors/colored-2.msgclr
@@ -0,0 +1,659 @@
+# KVIrc configuration file
+[Messages]
+Icon126=193
+Back123=100
+Log122=true
+Fore118=4
+Level117=3
+Icon115=133
+Back112=100
+Log111=true
+Icon108=199
+Back105=100
+Level102=5
+Log100=true
+Level95=3
+Back92=100
+Level86=4
+Back81=100
+Log79=true
+Level77=3
+Back70=100
+Level68=3
+Log68=true
+Level59=4
+Fore59=2
+Log57=true
+Fore48=3
+Log46=true
+Fore37=3
+Log35=true
+Icon29=53
+Fore26=1
+Log24=true
+Icon18=30
+Fore15=5
+Log13=true
+Log1=true
+Back124=100
+Log123=true
+Fore119=4
+Level118=5
+Icon116=137
+Back113=100
+Log112=true
+Icon109=200
+Back106=100
+Level103=5
+Log101=true
+Level96=3
+Back93=100
+Icon90=176
+Level87=3
+Back82=100
+Level78=3
+Back71=100
+Level69=3
+Log69=true
+Back60=100
+Log58=true
+Fore49=3
+Log47=true
+Fore38=3
+Log36=true
+Fore27=4
+Log25=true
+Icon19=36
+Fore16=1
+Log14=true
+Log2=true
+Level0=1
+Fore0=1
+Icon127=194
+Back125=100
+Log124=true
+Level119=5
+Icon117=132
+Back114=100
+Log113=true
+Back107=100
+Level104=5
+Log102=true
+Level97=5
+Back94=100
+Icon91=177
+Level88=1
+Back83=100
+Icon80=156
+Level79=3
+Back72=100
+Back61=100
+Log59=true
+Back50=100
+Log48=true
+Fore39=3
+Log37=true
+Fore28=4
+Log26=true
+Fore17=2
+Log15=true
+Log3=true
+Level1=1
+Fore1=0
+Back126=100
+Log125=true
+Icon118=135
+Back115=100
+Log114=true
+Back108=100
+Level105=5
+Log103=true
+Level98=5
+Back95=100
+Icon92=181
+Level89=2
+Back84=100
+Icon81=141
+Back73=100
+Icon70=105
+Back62=100
+Back51=100
+Log49=true
+Back40=100
+Log38=true
+Fore29=4
+Log27=true
+Fore18=1
+Log16=true
+Level10=4
+Log4=true
+Level2=5
+Fore2=10
+Log126=true
+Icon119=134
+Back116=100
+Log115=true
+Back109=100
+Level106=5
+Log104=true
+Level99=5
+Back96=100
+Icon93=139
+Fore90=3
+Back85=100
+Icon82=174
+Back74=100
+Icon71=110
+Back63=100
+Icon60=91
+Back52=100
+Back41=100
+Log39=true
+Back30=100
+Log28=true
+Level20=1
+Fore19=4
+Log17=true
+Level11=4
+Log5=true
+Level3=1
+Fore3=12
+Icon0=0
+Back127=100
+Back117=100
+Log116=true
+Level107=5
+Log105=true
+Back97=100
+Icon94=182
+Fore91=7
+Back86=100
+Icon83=162
+Fore80=1
+Back75=100
+Icon72=112
+Back64=100
+Icon61=92
+Back53=100
+Icon50=72
+Back42=100
+Back31=100
+Level30=4
+Log29=true
+Level21=1
+Back20=100
+Log18=true
+Level12=1
+Log6=true
+Level4=1
+Fore4=12
+Icon1=0
+Log127=true
+Back118=100
+Log117=true
+Level108=5
+Log106=true
+Fore100=3
+Back98=100
+Icon95=183
+Fore92=1
+Log90=true
+Back87=100
+Icon84=164
+Fore81=1
+Back76=100
+Icon73=120
+Fore70=1
+Back65=100
+Icon62=93
+Back54=100
+Icon51=73
+Back43=100
+Level40=2
+Icon40=35
+Back32=100
+Level31=4
+Level22=2
+Back21=100
+Log19=true
+Level13=1
+Back10=100
+Log7=true
+Level5=2
+Fore5=4
+Icon2=0
+Back119=100
+Log118=true
+Level109=5
+Log107=true
+Fore101=3
+Back99=100
+Icon96=184
+Fore93=1
+Log91=true
+Back88=100
+Icon85=165
+Fore82=1
+Log80=true
+Back77=100
+Icon74=122
+Fore71=3
+Back66=100
+Icon63=94
+Fore60=2
+Back55=100
+Icon52=75
+Back44=100
+Level41=2
+Icon41=63
+Back33=100
+Level32=3
+Icon30=54
+Level23=3
+Back22=100
+Level14=3
+Back11=100
+Log8=true
+Level6=2
+Fore6=4
+Icon3=0
+Back0=100
+Fore120=1
+Log119=true
+Log108=true
+Fore102=3
+Icon97=188
+Fore94=4
+Log92=true
+Back89=100
+Icon86=170
+Fore83=1
+Log81=true
+Back78=100
+Icon75=128
+Fore72=1
+Log70=true
+Back67=100
+Icon64=95
+Fore61=2
+Back56=100
+Icon53=77
+Level50=2
+Fore50=3
+Back45=100
+Level42=2
+Icon42=64
+Back34=100
+Level33=3
+Icon31=55
+Level24=1
+Back23=100
+Icon20=39
+Level15=1
+Back12=100
+Log9=true
+Level7=4
+Fore7=6
+Icon4=0
+Back1=1
+Fore121=1
+Level120=5
+Fore110=1
+Log109=true
+Fore103=3
+Icon100=191
+Icon98=189
+Fore95=1
+Log93=true
+Icon87=171
+Fore84=1
+Log82=true
+Back79=100
+Icon76=129
+Fore73=1
+Log71=true
+Back68=100
+Icon65=100
+Fore62=2
+Level60=4
+Log60=true
+Back57=100
+Icon54=78
+Level51=2
+Fore51=3
+Back46=100
+Level43=2
+Icon43=65
+Fore40=3
+Back35=100
+Level34=1
+Icon32=56
+Level25=3
+Back24=100
+Icon21=40
+Level16=1
+Back13=100
+Icon10=23
+Level8=1
+Fore8=1
+Icon5=11
+Back2=100
+Fore122=1
+Level121=5
+Fore111=3
+Level110=3
+Fore104=3
+Icon101=192
+Icon99=190
+Fore96=1
+Log94=true
+Icon88=173
+Fore85=1
+Log83=true
+Icon77=153
+Fore74=1
+Log72=true
+Level70=1
+Back69=100
+Icon66=101
+Fore63=2
+Level61=4
+Log61=true
+Back58=100
+Icon55=79
+Level52=4
+Fore52=2
+Log50=true
+Back47=100
+Level44=2
+Icon44=66
+Fore41=3
+Back36=100
+Level35=2
+Icon33=57
+Fore30=4
+Level26=3
+Back25=100
+Icon22=41
+Level17=1
+Back14=100
+Icon11=24
+Level9=3
+Fore9=1
+Icon6=12
+Back3=100
+Fore123=1
+Level122=5
+Icon120=242
+Fore112=1
+Level111=1
+Fore105=3
+Icon102=193
+Fore97=3
+Log95=true
+Icon89=175
+Fore86=14
+Log84=true
+Level80=3
+Icon78=154
+Fore75=1
+Log73=true
+Level71=2
+Icon67=102
+Fore64=2
+Level62=1
+Log62=true
+Back59=100
+Icon56=87
+Level53=3
+Fore53=5
+Log51=true
+Back48=100
+Level45=2
+Icon45=67
+Fore42=3
+Log40=true
+Back37=100
+Level36=2
+Icon34=58
+Fore31=4
+Level27=4
+Back26=100
+Icon23=42
+Fore20=3
+Level18=1
+Back15=100
+Icon12=25
+Icon7=13
+Back4=100
+Fore124=1
+Level123=5
+Icon121=243
+Fore113=1
+Level112=1
+Icon110=203
+Fore106=3
+Icon103=194
+Back100=100
+Fore98=3
+Log96=true
+Level90=4
+Fore87=2
+Log85=true
+Level81=3
+Icon79=155
+Fore76=1
+Log74=true
+Level72=1
+Icon68=103
+Fore65=10
+Level63=4
+Log63=true
+Icon57=88
+Level54=2
+Fore54=4
+Log52=true
+Back49=100
+Level46=2
+Icon46=68
+Fore43=3
+Log41=true
+Back38=100
+Level37=2
+Icon35=59
+Fore32=13
+Log30=true
+Level28=3
+Back27=100
+Icon24=45
+Fore21=3
+Level19=1
+Back16=100
+Icon13=14
+Fore10=4
+Icon8=21
+Back5=100
+Fore125=1
+Level124=2
+Icon122=244
+Fore114=1
+Level113=1
+Icon111=205
+Fore107=3
+Icon104=195
+Back101=100
+Fore99=3
+Log97=true
+Level91=2
+Fore88=3
+Log86=true
+Level82=2
+Fore77=1
+Log75=true
+Level73=3
+Icon69=104
+Fore66=1
+Level64=4
+Log64=true
+Icon58=89
+Level55=4
+Fore55=4
+Log53=true
+Level47=2
+Icon47=69
+Fore44=3
+Log42=true
+Back39=100
+Level38=2
+Icon36=60
+Fore33=1
+Log31=true
+Level29=3
+Back28=100
+Icon25=46
+Fore22=5
+Log20=true
+Back17=100
+Icon14=26
+Fore11=4
+Icon9=22
+Back6=100
+Fore126=1
+Level125=2
+Icon123=245
+Back120=100
+Fore115=1
+Level114=3
+Icon112=229
+Fore108=3
+Icon105=196
+Back102=100
+Log98=true
+Level92=1
+Fore89=3
+Log87=true
+Level83=4
+Fore78=1
+Log76=true
+Level74=1
+Fore67=1
+Level65=1
+Log65=true
+Icon59=90
+Level56=3
+Fore56=7
+Log54=true
+Level48=2
+Icon48=70
+Fore45=3
+Log43=true
+Level39=2
+Icon37=61
+Fore34=2
+Log32=true
+Back29=100
+Icon26=48
+Fore23=4
+Log21=true
+Back18=100
+Icon15=27
+Fore12=1
+Log10=true
+Back7=100
+Level126=5
+Icon124=174
+Back121=100
+Log120=true
+Fore116=1
+Level115=2
+Icon113=206
+Back110=100
+Fore109=3
+Icon106=197
+Back103=100
+Level100=5
+Log99=true
+Level93=3
+Back90=100
+Log88=true
+Level84=4
+Fore79=1
+Log77=true
+Level75=1
+Fore68=1
+Level66=3
+Log66=true
+Level57=4
+Fore57=2
+Log55=true
+Level49=2
+Icon49=71
+Fore46=3
+Log44=true
+Icon38=34
+Fore35=2
+Log33=true
+Icon27=51
+Fore24=10
+Log22=true
+Back19=100
+Icon16=28
+Fore13=2
+Log11=true
+Back8=100
+Fore127=1
+Icon125=175
+Back122=100
+Log121=true
+Fore117=1
+Level116=1
+Icon114=136
+Back111=100
+Log110=true
+Icon107=198
+Back104=100
+Level101=5
+Level94=4
+Back91=100
+Log89=true
+Level85=1
+Back80=100
+Log78=true
+Level76=1
+Fore69=1
+Level67=3
+Log67=true
+Level58=4
+Fore58=2
+Log56=true
+Fore47=3
+Log45=true
+Icon39=62
+Fore36=2
+Log34=true
+Icon28=52
+Fore25=1
+Log23=true
+Icon17=29
+Fore14=5
+Log12=true
+Back9=100
+Log0=true
+Level127=5
+[Colors]
+Color0=255,255,255
+Color1=0,0,0
+Color2=0,0,140
+Color3=0,100,0
+Color10=0,150,180
+Color4=230,0,0
+Color11=170,170,255
+Color5=150,0,0
+Color12=15,15,255
+Color6=80,0,80
+Color13=200,0,200
+Color7=255,90,0
+Color14=80,80,80
+Color8=255,255,0
+Color15=170,170,170
+Color9=0,255,0
diff --git a/data/msgcolors/colored.msgclr b/data/msgcolors/colored.msgclr
new file mode 100644
index 00000000..c470e3b7
--- /dev/null
+++ b/data/msgcolors/colored.msgclr
@@ -0,0 +1,659 @@
+# KVIrc configuration file
+[Messages]
+Icon126=193
+Back123=100
+Log122=true
+Fore118=5
+Level117=3
+Icon115=133
+Back112=100
+Log111=true
+Icon108=199
+Back105=100
+Level102=5
+Log100=true
+Level95=3
+Back92=100
+Level86=4
+Back81=100
+Log79=true
+Level77=3
+Back70=100
+Level68=3
+Log68=true
+Level59=4
+Fore59=1
+Log57=true
+Fore48=2
+Log46=true
+Fore37=6
+Log35=true
+Icon29=53
+Fore26=1
+Log24=true
+Icon18=30
+Fore15=1
+Log13=true
+Log1=true
+Back124=100
+Log123=true
+Fore119=5
+Level118=5
+Icon116=137
+Back113=100
+Log112=true
+Icon109=200
+Back106=100
+Level103=5
+Log101=true
+Level96=3
+Back93=100
+Icon90=176
+Level87=3
+Back82=100
+Level78=3
+Back71=100
+Level69=3
+Log69=true
+Back60=100
+Log58=true
+Fore49=2
+Log47=true
+Fore38=5
+Log36=true
+Fore27=2
+Log25=true
+Icon19=36
+Fore16=14
+Log14=true
+Log2=true
+Level0=1
+Fore0=1
+Icon127=194
+Back125=100
+Log124=true
+Level119=5
+Icon117=132
+Back114=100
+Log113=true
+Back107=100
+Level104=5
+Log102=true
+Level97=5
+Back94=100
+Icon91=177
+Level88=1
+Back83=100
+Icon80=156
+Level79=3
+Back72=100
+Back61=100
+Log59=true
+Back50=100
+Log48=true
+Fore39=5
+Log37=true
+Fore28=2
+Log26=true
+Fore17=2
+Log15=true
+Log3=true
+Level1=1
+Fore1=0
+Back126=100
+Log125=true
+Icon118=135
+Back115=100
+Log114=true
+Back108=100
+Level105=5
+Log103=true
+Level98=5
+Back95=100
+Icon92=181
+Level89=2
+Back84=100
+Icon81=141
+Back73=100
+Icon70=105
+Back62=100
+Back51=100
+Log49=true
+Back40=100
+Log38=true
+Fore29=2
+Log27=true
+Fore18=2
+Log16=true
+Level10=4
+Log4=true
+Level2=5
+Fore2=0
+Log126=true
+Icon119=134
+Back116=100
+Log115=true
+Back109=100
+Level106=5
+Log104=true
+Level99=5
+Back96=100
+Icon93=139
+Fore90=1
+Back85=100
+Icon82=174
+Back74=100
+Icon71=110
+Back63=100
+Icon60=91
+Back52=100
+Back41=100
+Log39=true
+Back30=100
+Log28=true
+Level20=1
+Fore19=14
+Log17=true
+Level11=4
+Log5=true
+Level3=1
+Fore3=1
+Icon0=0
+Back127=100
+Back117=100
+Log116=true
+Level107=5
+Log105=true
+Back97=100
+Icon94=182
+Fore91=1
+Back86=100
+Icon83=162
+Fore80=1
+Back75=100
+Icon72=112
+Back64=100
+Icon61=92
+Back53=100
+Icon50=72
+Back42=100
+Back31=100
+Level30=4
+Log29=true
+Level21=1
+Back20=100
+Log18=true
+Level12=1
+Log6=true
+Level4=1
+Fore4=1
+Icon1=0
+Log127=true
+Back118=100
+Log117=true
+Level108=5
+Log106=true
+Fore100=5
+Back98=100
+Icon95=183
+Fore92=14
+Log90=true
+Back87=100
+Icon84=164
+Fore81=2
+Back76=100
+Icon73=120
+Fore70=1
+Back65=100
+Icon62=93
+Back54=100
+Icon51=73
+Back43=100
+Level40=2
+Icon40=35
+Back32=100
+Level31=4
+Level22=2
+Back21=100
+Log19=true
+Level13=1
+Back10=100
+Log7=true
+Level5=2
+Fore5=5
+Icon2=0
+Back119=100
+Log118=true
+Level109=5
+Log107=true
+Fore101=5
+Back99=100
+Icon96=184
+Fore93=5
+Log91=true
+Back88=100
+Icon85=165
+Fore82=5
+Log80=true
+Back77=100
+Icon74=122
+Fore71=5
+Back66=100
+Icon63=94
+Fore60=1
+Back55=100
+Icon52=75
+Back44=100
+Level41=2
+Icon41=63
+Back33=100
+Level32=3
+Icon30=54
+Level23=3
+Back22=100
+Level14=3
+Back11=100
+Log8=true
+Level6=2
+Fore6=4
+Icon3=0
+Back0=100
+Fore120=5
+Log119=true
+Log108=true
+Fore102=5
+Icon97=188
+Fore94=5
+Log92=true
+Back89=100
+Icon86=170
+Fore83=5
+Log81=true
+Back78=100
+Icon75=128
+Fore72=1
+Log70=true
+Back67=100
+Icon64=95
+Fore61=1
+Back56=100
+Icon53=77
+Level50=2
+Fore50=2
+Back45=100
+Level42=2
+Icon42=64
+Back34=100
+Level33=3
+Icon31=55
+Level24=1
+Back23=100
+Icon20=39
+Level15=1
+Back12=100
+Log9=true
+Level7=4
+Fore7=1
+Icon4=0
+Back1=1
+Fore121=5
+Level120=5
+Fore110=5
+Log109=true
+Fore103=5
+Icon100=191
+Icon98=189
+Fore95=2
+Log93=true
+Icon87=171
+Fore84=2
+Log82=true
+Back79=100
+Icon76=129
+Fore73=5
+Log71=true
+Back68=100
+Icon65=100
+Fore62=2
+Level60=4
+Log60=true
+Back57=100
+Icon54=78
+Level51=2
+Fore51=2
+Back46=100
+Level43=2
+Icon43=65
+Fore40=2
+Back35=100
+Level34=1
+Icon32=56
+Level25=3
+Back24=100
+Icon21=40
+Level16=1
+Back13=100
+Icon10=23
+Level8=1
+Fore8=1
+Icon5=11
+Back2=1
+Fore122=5
+Level121=5
+Fore111=2
+Level110=3
+Fore104=5
+Icon101=192
+Icon99=190
+Fore96=2
+Log94=true
+Icon88=173
+Fore85=2
+Log83=true
+Icon77=153
+Fore74=1
+Log72=true
+Level70=1
+Back69=100
+Icon66=101
+Fore63=3
+Level61=4
+Log61=true
+Back58=100
+Icon55=79
+Level52=4
+Fore52=1
+Log50=true
+Back47=100
+Level44=2
+Icon44=66
+Fore41=2
+Back36=100
+Level35=2
+Icon33=57
+Fore30=5
+Level26=3
+Back25=100
+Icon22=41
+Level17=1
+Back14=100
+Icon11=24
+Level9=3
+Fore9=6
+Icon6=12
+Back3=100
+Fore123=5
+Level122=5
+Icon120=242
+Fore112=2
+Level111=1
+Fore105=5
+Icon102=193
+Fore97=5
+Log95=true
+Icon89=175
+Fore86=1
+Log84=true
+Level80=3
+Icon78=154
+Fore75=1
+Log73=true
+Level71=2
+Icon67=102
+Fore64=3
+Level62=1
+Log62=true
+Back59=100
+Icon56=87
+Level53=3
+Fore53=6
+Log51=true
+Back48=100
+Level45=2
+Icon45=67
+Fore42=2
+Log40=true
+Back37=100
+Level36=2
+Icon34=58
+Fore31=5
+Level27=4
+Back26=100
+Icon23=42
+Fore20=3
+Level18=1
+Back15=100
+Icon12=25
+Icon7=13
+Back4=100
+Fore124=5
+Level123=5
+Icon121=243
+Fore113=2
+Level112=1
+Icon110=203
+Fore106=5
+Icon103=194
+Back100=100
+Fore98=5
+Log96=true
+Level90=4
+Fore87=14
+Log85=true
+Level81=3
+Icon79=155
+Fore76=1
+Log74=true
+Level72=1
+Icon68=103
+Fore65=1
+Level63=4
+Log63=true
+Icon57=88
+Level54=2
+Fore54=6
+Log52=true
+Back49=100
+Level46=2
+Icon46=68
+Fore43=2
+Log41=true
+Back38=100
+Level37=2
+Icon35=59
+Fore32=6
+Log30=true
+Level28=3
+Back27=100
+Icon24=45
+Fore21=2
+Level19=1
+Back16=100
+Icon13=14
+Fore10=5
+Icon8=21
+Back5=100
+Fore125=5
+Level124=2
+Icon122=244
+Fore114=3
+Level113=1
+Icon111=205
+Fore107=5
+Icon104=195
+Back101=100
+Fore99=5
+Log97=true
+Level91=2
+Fore88=1
+Log86=true
+Level82=2
+Fore77=1
+Log75=true
+Level73=3
+Icon69=104
+Fore66=1
+Level64=4
+Log64=true
+Icon58=89
+Level55=4
+Fore55=5
+Log53=true
+Level47=2
+Icon47=69
+Fore44=2
+Log42=true
+Back39=100
+Level38=2
+Icon36=60
+Fore33=6
+Log31=true
+Level29=3
+Back28=100
+Icon25=46
+Fore22=5
+Log20=true
+Back17=100
+Icon14=26
+Fore11=5
+Icon9=22
+Back6=100
+Fore126=5
+Level125=2
+Icon123=245
+Back120=100
+Fore115=14
+Level114=3
+Icon112=229
+Fore108=5
+Icon105=196
+Back102=100
+Log98=true
+Level92=1
+Fore89=5
+Log87=true
+Level83=4
+Fore78=1
+Log76=true
+Level74=1
+Fore67=1
+Level65=1
+Log65=true
+Icon59=90
+Level56=3
+Fore56=5
+Log54=true
+Level48=2
+Icon48=70
+Fore45=5
+Log43=true
+Level39=2
+Icon37=61
+Fore34=5
+Log32=true
+Back29=100
+Icon26=48
+Fore23=6
+Log21=true
+Back18=100
+Icon15=27
+Fore12=14
+Log10=true
+Back7=100
+Level126=5
+Icon124=174
+Back121=100
+Log120=true
+Fore116=14
+Level115=2
+Icon113=206
+Back110=100
+Fore109=5
+Icon106=197
+Back103=100
+Level100=5
+Log99=true
+Level93=3
+Back90=100
+Log88=true
+Level84=4
+Fore79=1
+Log77=true
+Level75=1
+Fore68=1
+Level66=3
+Log66=true
+Level57=4
+Fore57=1
+Log55=true
+Level49=2
+Icon49=71
+Fore46=5
+Log44=true
+Icon38=34
+Fore35=5
+Log33=true
+Icon27=51
+Fore24=1
+Log22=true
+Back19=100
+Icon16=28
+Fore13=1
+Log11=true
+Back8=100
+Fore127=5
+Icon125=175
+Back122=100
+Log121=true
+Fore117=2
+Level116=1
+Icon114=136
+Back111=100
+Log110=true
+Icon107=198
+Back104=100
+Level101=5
+Level94=4
+Back91=100
+Log89=true
+Level85=1
+Back80=100
+Log78=true
+Level76=1
+Fore69=1
+Level67=3
+Log67=true
+Level58=4
+Fore58=1
+Log56=true
+Fore47=2
+Log45=true
+Icon39=62
+Fore36=5
+Log34=true
+Icon28=52
+Fore25=1
+Log23=true
+Icon17=29
+Fore14=6
+Log12=true
+Back9=100
+Log0=true
+Level127=5
+[Colors]
+Color0=255,255,255
+Color1=0,0,0
+Color2=0,0,140
+Color3=0,100,0
+Color10=0,150,180
+Color4=230,0,0
+Color11=170,170,255
+Color5=150,0,0
+Color12=15,15,255
+Color6=80,0,80
+Color13=200,0,200
+Color7=255,90,0
+Color14=80,80,80
+Color8=255,255,0
+Color15=170,170,170
+Color9=0,255,0
diff --git a/data/msgcolors/default.msgclr b/data/msgcolors/default.msgclr
new file mode 100644
index 00000000..eb68a9e2
--- /dev/null
+++ b/data/msgcolors/default.msgclr
@@ -0,0 +1,659 @@
+# KVIrc configuration file
+[Messages]
+Icon126=193
+Back123=100
+Log122=true
+Fore118=4
+Level117=3
+Icon115=133
+Back112=100
+Log111=true
+Icon108=199
+Back105=100
+Level102=5
+Log100=true
+Level95=3
+Back92=100
+Level86=4
+Back81=100
+Log79=true
+Level77=3
+Back70=100
+Level68=3
+Log68=true
+Level59=4
+Fore59=1
+Log57=true
+Fore48=1
+Log46=true
+Fore37=6
+Log35=true
+Icon29=53
+Fore26=1
+Log24=true
+Icon18=30
+Fore15=1
+Log13=true
+Log1=true
+Back124=100
+Log123=true
+Fore119=4
+Level118=5
+Icon116=137
+Back113=100
+Log112=true
+Icon109=200
+Back106=100
+Level103=5
+Log101=true
+Level96=3
+Back93=100
+Icon90=176
+Level87=3
+Back82=100
+Level78=3
+Back71=100
+Level69=3
+Log69=true
+Back60=100
+Log58=true
+Fore49=1
+Log47=true
+Fore38=4
+Log36=true
+Fore27=1
+Log25=true
+Icon19=36
+Fore16=1
+Log14=true
+Log2=true
+Level0=1
+Fore0=1
+Icon127=194
+Back125=100
+Log124=true
+Level119=5
+Icon117=132
+Back114=100
+Log113=true
+Back107=100
+Level104=5
+Log102=true
+Level97=5
+Back94=100
+Icon91=177
+Level88=1
+Back83=100
+Icon80=156
+Level79=3
+Back72=100
+Back61=100
+Log59=true
+Back50=100
+Log48=true
+Fore39=4
+Log37=true
+Fore28=1
+Log26=true
+Fore17=1
+Log15=true
+Log3=true
+Level1=1
+Fore1=0
+Back126=100
+Log125=true
+Icon118=135
+Back115=100
+Log114=true
+Back108=100
+Level105=5
+Log103=true
+Level98=5
+Back95=100
+Icon92=181
+Level89=2
+Back84=100
+Icon81=141
+Back73=100
+Icon70=105
+Back62=100
+Back51=100
+Log49=true
+Back40=100
+Log38=true
+Fore29=1
+Log27=true
+Fore18=1
+Log16=true
+Level10=4
+Log4=true
+Level2=5
+Fore2=0
+Log126=true
+Icon119=134
+Back116=100
+Log115=true
+Back109=100
+Level106=5
+Log104=true
+Level99=5
+Back96=100
+Icon93=139
+Fore90=1
+Back85=100
+Icon82=174
+Back74=100
+Icon71=110
+Back63=100
+Icon60=91
+Back52=100
+Back41=100
+Log39=true
+Back30=100
+Log28=true
+Level20=1
+Fore19=1
+Log17=true
+Level11=4
+Log5=true
+Level3=1
+Fore3=12
+Icon0=0
+Back127=100
+Back117=100
+Log116=true
+Level107=5
+Log105=true
+Back97=100
+Icon94=182
+Fore91=1
+Back86=100
+Icon83=162
+Fore80=1
+Back75=100
+Icon72=112
+Back64=100
+Icon61=92
+Back53=100
+Icon50=72
+Back42=100
+Back31=100
+Level30=4
+Log29=true
+Level21=1
+Back20=100
+Log18=true
+Level12=1
+Log6=true
+Level4=1
+Fore4=12
+Icon1=0
+Log127=true
+Back118=100
+Log117=true
+Level108=5
+Log106=true
+Fore100=1
+Back98=100
+Icon95=183
+Fore92=1
+Log90=true
+Back87=100
+Icon84=164
+Fore81=1
+Back76=100
+Icon73=120
+Fore70=1
+Back65=100
+Icon62=93
+Back54=100
+Icon51=73
+Back43=100
+Level40=2
+Icon40=35
+Back32=100
+Level31=4
+Level22=2
+Back21=100
+Log19=true
+Level13=1
+Back10=100
+Log7=true
+Level5=2
+Fore5=4
+Icon2=0
+Back119=100
+Log118=true
+Level109=5
+Log107=true
+Fore101=1
+Back99=100
+Icon96=184
+Fore93=1
+Log91=true
+Back88=100
+Icon85=165
+Fore82=1
+Log80=true
+Back77=100
+Icon74=122
+Fore71=1
+Back66=100
+Icon63=94
+Fore60=1
+Back55=100
+Icon52=75
+Back44=100
+Level41=2
+Icon41=63
+Back33=100
+Level32=3
+Icon30=54
+Level23=3
+Back22=100
+Level14=3
+Back11=100
+Log8=true
+Level6=2
+Fore6=4
+Icon3=0
+Back0=100
+Fore120=1
+Log119=true
+Log108=true
+Fore102=1
+Icon97=188
+Fore94=1
+Log92=true
+Back89=100
+Icon86=170
+Fore83=1
+Log81=true
+Back78=100
+Icon75=128
+Fore72=1
+Log70=true
+Back67=100
+Icon64=95
+Fore61=1
+Back56=100
+Icon53=77
+Level50=2
+Fore50=1
+Back45=100
+Level42=2
+Icon42=64
+Back34=100
+Level33=3
+Icon31=55
+Level24=1
+Back23=100
+Icon20=39
+Level15=1
+Back12=100
+Log9=true
+Level7=4
+Fore7=1
+Icon4=0
+Back1=1
+Fore121=1
+Level120=5
+Fore110=1
+Log109=true
+Fore103=1
+Icon100=191
+Icon98=189
+Fore95=1
+Log93=true
+Icon87=171
+Fore84=1
+Log82=true
+Back79=100
+Icon76=129
+Fore73=1
+Log71=true
+Back68=100
+Icon65=100
+Fore62=1
+Level60=4
+Log60=true
+Back57=100
+Icon54=78
+Level51=2
+Fore51=1
+Back46=100
+Level43=2
+Icon43=65
+Fore40=2
+Back35=100
+Level34=1
+Icon32=56
+Level25=3
+Back24=100
+Icon21=40
+Level16=1
+Back13=100
+Icon10=23
+Level8=1
+Fore8=1
+Icon5=11
+Back2=1
+Fore122=1
+Level121=5
+Fore111=1
+Level110=3
+Fore104=1
+Icon101=192
+Icon99=190
+Fore96=1
+Log94=true
+Icon88=173
+Fore85=1
+Log83=true
+Icon77=153
+Fore74=1
+Log72=true
+Level70=1
+Back69=100
+Icon66=101
+Fore63=1
+Level61=4
+Log61=true
+Back58=100
+Icon55=79
+Level52=4
+Fore52=1
+Log50=true
+Back47=100
+Level44=2
+Icon44=66
+Fore41=2
+Back36=100
+Level35=2
+Icon33=57
+Fore30=1
+Level26=3
+Back25=100
+Icon22=41
+Level17=1
+Back14=100
+Icon11=24
+Level9=3
+Fore9=1
+Icon6=12
+Back3=100
+Fore123=1
+Level122=5
+Icon120=242
+Fore112=1
+Level111=1
+Fore105=1
+Icon102=193
+Fore97=1
+Log95=true
+Icon89=175
+Fore86=1
+Log84=true
+Level80=3
+Icon78=154
+Fore75=1
+Log73=true
+Level71=2
+Icon67=102
+Fore64=1
+Level62=1
+Log62=true
+Back59=100
+Icon56=87
+Level53=3
+Fore53=1
+Log51=true
+Back48=100
+Level45=2
+Icon45=67
+Fore42=1
+Log40=true
+Back37=100
+Level36=2
+Icon34=58
+Fore31=1
+Level27=4
+Back26=100
+Icon23=42
+Fore20=3
+Level18=1
+Back15=100
+Icon12=25
+Icon7=13
+Back4=100
+Fore124=1
+Level123=5
+Icon121=243
+Fore113=1
+Level112=1
+Icon110=203
+Fore106=1
+Icon103=194
+Back100=100
+Fore98=1
+Log96=true
+Level90=4
+Fore87=1
+Log85=true
+Level81=3
+Icon79=155
+Fore76=1
+Log74=true
+Level72=1
+Icon68=103
+Fore65=1
+Level63=4
+Log63=true
+Icon57=88
+Level54=2
+Fore54=1
+Log52=true
+Back49=100
+Level46=2
+Icon46=68
+Fore43=1
+Log41=true
+Back38=100
+Level37=2
+Icon35=59
+Fore32=1
+Log30=true
+Level28=3
+Back27=100
+Icon24=45
+Fore21=2
+Level19=1
+Back16=100
+Icon13=14
+Fore10=4
+Icon8=21
+Back5=100
+Fore125=1
+Level124=2
+Icon122=244
+Fore114=1
+Level113=1
+Icon111=205
+Fore107=1
+Icon104=195
+Back101=100
+Fore99=1
+Log97=true
+Level91=2
+Fore88=1
+Log86=true
+Level82=2
+Fore77=1
+Log75=true
+Level73=3
+Icon69=104
+Fore66=1
+Level64=4
+Log64=true
+Icon58=89
+Level55=4
+Fore55=1
+Log53=true
+Level47=2
+Icon47=69
+Fore44=1
+Log42=true
+Back39=100
+Level38=2
+Icon36=60
+Fore33=1
+Log31=true
+Level29=3
+Back28=100
+Icon25=46
+Fore22=1
+Log20=true
+Back17=100
+Icon14=26
+Fore11=4
+Icon9=22
+Back6=100
+Fore126=1
+Level125=2
+Icon123=245
+Back120=100
+Fore115=1
+Level114=3
+Icon112=229
+Fore108=1
+Icon105=196
+Back102=100
+Log98=true
+Level92=1
+Fore89=1
+Log87=true
+Level83=4
+Fore78=1
+Log76=true
+Level74=1
+Fore67=1
+Level65=1
+Log65=true
+Icon59=90
+Level56=3
+Fore56=1
+Log54=true
+Level48=2
+Icon48=70
+Fore45=1
+Log43=true
+Level39=2
+Icon37=61
+Fore34=5
+Log32=true
+Back29=100
+Icon26=48
+Fore23=1
+Log21=true
+Back18=100
+Icon15=27
+Fore12=1
+Log10=true
+Back7=100
+Level126=5
+Icon124=174
+Back121=100
+Log120=true
+Fore116=1
+Level115=2
+Icon113=206
+Back110=100
+Fore109=1
+Icon106=197
+Back103=100
+Level100=5
+Log99=true
+Level93=3
+Back90=100
+Log88=true
+Level84=4
+Fore79=1
+Log77=true
+Level75=1
+Fore68=1
+Level66=3
+Log66=true
+Level57=4
+Fore57=1
+Log55=true
+Level49=2
+Icon49=71
+Fore46=1
+Log44=true
+Icon38=34
+Fore35=1
+Log33=true
+Icon27=51
+Fore24=1
+Log22=true
+Back19=100
+Icon16=28
+Fore13=1
+Log11=true
+Back8=100
+Fore127=1
+Icon125=175
+Back122=100
+Log121=true
+Fore117=1
+Level116=1
+Icon114=136
+Back111=100
+Log110=true
+Icon107=198
+Back104=100
+Level101=5
+Level94=4
+Back91=100
+Log89=true
+Level85=1
+Back80=100
+Log78=true
+Level76=1
+Fore69=1
+Level67=3
+Log67=true
+Level58=4
+Fore58=1
+Log56=true
+Fore47=1
+Log45=true
+Icon39=62
+Fore36=1
+Log34=true
+Icon28=52
+Fore25=1
+Log23=true
+Icon17=29
+Fore14=1
+Log12=true
+Back9=100
+Log0=true
+Level127=5
+[Colors]
+Color0=255,255,255
+Color1=0,0,0
+Color2=0,0,140
+Color3=0,100,0
+Color10=0,150,180
+Color4=230,0,0
+Color11=170,170,255
+Color5=150,0,0
+Color12=15,15,255
+Color6=80,0,80
+Color13=200,0,200
+Color7=255,90,0
+Color14=80,80,80
+Color8=255,255,0
+Color15=170,170,170
+Color9=0,255,0
diff --git a/data/msgcolors/heavy-colors.msgclr b/data/msgcolors/heavy-colors.msgclr
new file mode 100644
index 00000000..e254a828
--- /dev/null
+++ b/data/msgcolors/heavy-colors.msgclr
@@ -0,0 +1,659 @@
+# KVIrc configuration file
+[Messages]
+Icon126=193
+Back123=5
+Log122=true
+Fore118=5
+Level117=3
+Icon115=133
+Back112=100
+Log111=true
+Icon108=199
+Back105=4
+Level102=5
+Log100=true
+Level95=3
+Back92=100
+Level86=4
+Back81=100
+Log79=true
+Level77=3
+Back70=100
+Level68=3
+Log68=true
+Level59=4
+Fore59=1
+Log57=true
+Fore48=2
+Log46=true
+Fore37=6
+Log35=true
+Icon29=53
+Fore26=1
+Log24=true
+Icon18=30
+Fore15=1
+Log13=true
+Log1=true
+Back124=100
+Log123=true
+Fore119=5
+Level118=5
+Icon116=137
+Back113=100
+Log112=true
+Icon109=200
+Back106=5
+Level103=5
+Log101=true
+Level96=3
+Back93=100
+Icon90=176
+Level87=3
+Back82=100
+Level78=3
+Back71=100
+Level69=3
+Log69=true
+Back60=100
+Log58=true
+Fore49=2
+Log47=true
+Fore38=5
+Log36=true
+Fore27=2
+Log25=true
+Icon19=36
+Fore16=14
+Log14=true
+Log2=true
+Level0=1
+Fore0=1
+Icon127=194
+Back125=100
+Log124=true
+Level119=5
+Icon117=132
+Back114=100
+Log113=true
+Back107=5
+Level104=5
+Log102=true
+Level97=5
+Back94=100
+Icon91=177
+Level88=1
+Back83=100
+Icon80=156
+Level79=3
+Back72=100
+Back61=100
+Log59=true
+Back50=100
+Log48=true
+Fore39=5
+Log37=true
+Fore28=2
+Log26=true
+Fore17=2
+Log15=true
+Log3=true
+Level1=1
+Fore1=0
+Back126=100
+Log125=true
+Icon118=135
+Back115=100
+Log114=true
+Back108=5
+Level105=5
+Log103=true
+Level98=5
+Back95=100
+Icon92=181
+Level89=2
+Back84=100
+Icon81=141
+Back73=100
+Icon70=105
+Back62=100
+Back51=100
+Log49=true
+Back40=100
+Log38=true
+Fore29=2
+Log27=true
+Fore18=2
+Log16=true
+Level10=4
+Log4=true
+Level2=5
+Fore2=0
+Log126=true
+Icon119=134
+Back116=100
+Log115=true
+Back109=5
+Level106=5
+Log104=true
+Level99=5
+Back96=100
+Icon93=139
+Fore90=1
+Back85=100
+Icon82=174
+Back74=100
+Icon71=110
+Back63=3
+Icon60=91
+Back52=100
+Back41=100
+Log39=true
+Back30=100
+Log28=true
+Level20=1
+Fore19=14
+Log17=true
+Level11=4
+Log5=true
+Level3=1
+Fore3=1
+Icon0=0
+Back127=100
+Back117=100
+Log116=true
+Level107=5
+Log105=true
+Back97=4
+Icon94=182
+Fore91=1
+Back86=100
+Icon83=162
+Fore80=1
+Back75=100
+Icon72=112
+Back64=3
+Icon61=92
+Back53=100
+Icon50=72
+Back42=100
+Back31=100
+Level30=4
+Log29=true
+Level21=1
+Back20=100
+Log18=true
+Level12=1
+Log6=true
+Level4=1
+Fore4=1
+Icon1=0
+Log127=true
+Back118=100
+Log117=true
+Level108=5
+Log106=true
+Fore100=8
+Back98=4
+Icon95=183
+Fore92=14
+Log90=true
+Back87=100
+Icon84=164
+Fore81=2
+Back76=100
+Icon73=120
+Fore70=1
+Back65=100
+Icon62=93
+Back54=100
+Icon51=73
+Back43=100
+Level40=2
+Icon40=35
+Back32=100
+Level31=4
+Level22=2
+Back21=100
+Log19=true
+Level13=1
+Back10=100
+Log7=true
+Level5=2
+Fore5=5
+Icon2=0
+Back119=100
+Log118=true
+Level109=5
+Log107=true
+Fore101=0
+Back99=5
+Icon96=184
+Fore93=5
+Log91=true
+Back88=100
+Icon85=165
+Fore82=5
+Log80=true
+Back77=100
+Icon74=122
+Fore71=5
+Back66=100
+Icon63=94
+Fore60=1
+Back55=100
+Icon52=75
+Back44=100
+Level41=2
+Icon41=63
+Back33=100
+Level32=3
+Icon30=54
+Level23=3
+Back22=100
+Level14=3
+Back11=100
+Log8=true
+Level6=2
+Fore6=4
+Icon3=0
+Back0=100
+Fore120=5
+Log119=true
+Log108=true
+Fore102=0
+Icon97=188
+Fore94=5
+Log92=true
+Back89=100
+Icon86=170
+Fore83=5
+Log81=true
+Back78=100
+Icon75=128
+Fore72=1
+Log70=true
+Back67=100
+Icon64=95
+Fore61=1
+Back56=100
+Icon53=77
+Level50=2
+Fore50=2
+Back45=100
+Level42=2
+Icon42=64
+Back34=100
+Level33=3
+Icon31=55
+Level24=1
+Back23=100
+Icon20=39
+Level15=1
+Back12=100
+Log9=true
+Level7=4
+Fore7=1
+Icon4=0
+Back1=1
+Fore121=5
+Level120=5
+Fore110=5
+Log109=true
+Fore103=0
+Icon100=191
+Icon98=189
+Fore95=2
+Log93=true
+Icon87=171
+Fore84=2
+Log82=true
+Back79=100
+Icon76=129
+Fore73=5
+Log71=true
+Back68=100
+Icon65=100
+Fore62=2
+Level60=4
+Log60=true
+Back57=100
+Icon54=78
+Level51=2
+Fore51=2
+Back46=100
+Level43=2
+Icon43=65
+Fore40=2
+Back35=100
+Level34=1
+Icon32=56
+Level25=3
+Back24=100
+Icon21=40
+Level16=1
+Back13=100
+Icon10=23
+Level8=1
+Fore8=1
+Icon5=11
+Back2=1
+Fore122=8
+Level121=5
+Fore111=2
+Level110=3
+Fore104=1
+Icon101=192
+Icon99=190
+Fore96=2
+Log94=true
+Icon88=173
+Fore85=2
+Log83=true
+Icon77=153
+Fore74=1
+Log72=true
+Level70=1
+Back69=100
+Icon66=101
+Fore63=0
+Level61=4
+Log61=true
+Back58=100
+Icon55=79
+Level52=4
+Fore52=1
+Log50=true
+Back47=100
+Level44=2
+Icon44=66
+Fore41=2
+Back36=100
+Level35=2
+Icon33=57
+Fore30=5
+Level26=3
+Back25=100
+Icon22=41
+Level17=1
+Back14=100
+Icon11=24
+Level9=3
+Fore9=6
+Icon6=12
+Back3=100
+Fore123=8
+Level122=5
+Icon120=242
+Fore112=2
+Level111=1
+Fore105=1
+Icon102=193
+Fore97=0
+Log95=true
+Icon89=175
+Fore86=1
+Log84=true
+Level80=3
+Icon78=154
+Fore75=1
+Log73=true
+Level71=2
+Icon67=102
+Fore64=0
+Level62=1
+Log62=true
+Back59=100
+Icon56=87
+Level53=3
+Fore53=6
+Log51=true
+Back48=100
+Level45=2
+Icon45=67
+Fore42=2
+Log40=true
+Back37=100
+Level36=2
+Icon34=58
+Fore31=5
+Level27=4
+Back26=100
+Icon23=42
+Fore20=3
+Level18=1
+Back15=100
+Icon12=25
+Icon7=13
+Back4=100
+Fore124=5
+Level123=5
+Icon121=243
+Fore113=2
+Level112=1
+Icon110=203
+Fore106=9
+Icon103=194
+Back100=4
+Fore98=8
+Log96=true
+Level90=4
+Fore87=14
+Log85=true
+Level81=3
+Icon79=155
+Fore76=1
+Log74=true
+Level72=1
+Icon68=103
+Fore65=1
+Level63=4
+Log63=true
+Icon57=88
+Level54=2
+Fore54=6
+Log52=true
+Back49=100
+Level46=2
+Icon46=68
+Fore43=2
+Log41=true
+Back38=100
+Level37=2
+Icon35=59
+Fore32=6
+Log30=true
+Level28=3
+Back27=100
+Icon24=45
+Fore21=2
+Level19=1
+Back16=100
+Icon13=14
+Fore10=5
+Icon8=21
+Back5=100
+Fore125=5
+Level124=2
+Icon122=244
+Fore114=3
+Level113=1
+Icon111=205
+Fore107=9
+Icon104=195
+Back101=5
+Fore99=0
+Log97=true
+Level91=2
+Fore88=1
+Log86=true
+Level82=2
+Fore77=1
+Log75=true
+Level73=3
+Icon69=104
+Fore66=1
+Level64=4
+Log64=true
+Icon58=89
+Level55=4
+Fore55=5
+Log53=true
+Level47=2
+Icon47=69
+Fore44=2
+Log42=true
+Back39=100
+Level38=2
+Icon36=60
+Fore33=6
+Log31=true
+Level29=3
+Back28=100
+Icon25=46
+Fore22=5
+Log20=true
+Back17=100
+Icon14=26
+Fore11=5
+Icon9=22
+Back6=100
+Fore126=5
+Level125=2
+Icon123=245
+Back120=100
+Fore115=14
+Level114=3
+Icon112=229
+Fore108=7
+Icon105=196
+Back102=5
+Log98=true
+Level92=1
+Fore89=5
+Log87=true
+Level83=4
+Fore78=1
+Log76=true
+Level74=1
+Fore67=1
+Level65=1
+Log65=true
+Icon59=90
+Level56=3
+Fore56=5
+Log54=true
+Level48=2
+Icon48=70
+Fore45=5
+Log43=true
+Level39=2
+Icon37=61
+Fore34=5
+Log32=true
+Back29=100
+Icon26=48
+Fore23=6
+Log21=true
+Back18=100
+Icon15=27
+Fore12=14
+Log10=true
+Back7=100
+Level126=5
+Icon124=174
+Back121=100
+Log120=true
+Fore116=14
+Level115=2
+Icon113=206
+Back110=100
+Fore109=7
+Icon106=197
+Back103=5
+Level100=5
+Log99=true
+Level93=3
+Back90=100
+Log88=true
+Level84=4
+Fore79=1
+Log77=true
+Level75=1
+Fore68=1
+Level66=3
+Log66=true
+Level57=4
+Fore57=1
+Log55=true
+Level49=2
+Icon49=71
+Fore46=5
+Log44=true
+Icon38=34
+Fore35=5
+Log33=true
+Icon27=51
+Fore24=1
+Log22=true
+Back19=100
+Icon16=28
+Fore13=1
+Log11=true
+Back8=100
+Fore127=5
+Icon125=175
+Back122=5
+Log121=true
+Fore117=2
+Level116=1
+Icon114=136
+Back111=100
+Log110=true
+Icon107=198
+Back104=4
+Level101=5
+Level94=4
+Back91=100
+Log89=true
+Level85=1
+Back80=100
+Log78=true
+Level76=1
+Fore69=1
+Level67=3
+Log67=true
+Level58=4
+Fore58=1
+Log56=true
+Fore47=2
+Log45=true
+Icon39=62
+Fore36=5
+Log34=true
+Icon28=52
+Fore25=1
+Log23=true
+Icon17=29
+Fore14=6
+Log12=true
+Back9=100
+Log0=true
+Level127=5
+[Colors]
+Color0=255,255,255
+Color1=0,0,0
+Color2=0,0,140
+Color3=0,100,0
+Color10=0,150,180
+Color4=230,0,0
+Color11=170,170,255
+Color5=150,0,0
+Color12=15,15,255
+Color6=80,0,80
+Color13=200,0,200
+Color7=255,90,0
+Color14=80,80,80
+Color8=255,255,0
+Color15=170,170,170
+Color9=0,255,0
diff --git a/data/pics/Makefile.am b/data/pics/Makefile.am
new file mode 100644
index 00000000..5927c12c
--- /dev/null
+++ b/data/pics/Makefile.am
@@ -0,0 +1,8 @@
+tmpdir = $(picsdir)
+
+tmp_DATA = *.png
+
+EXTRA_DIST = $(tmp_DATA)
+
+SUBDIRS = coresmall
+
diff --git a/data/pics/coresmall/Makefile.am b/data/pics/coresmall/Makefile.am
new file mode 100644
index 00000000..747abac3
--- /dev/null
+++ b/data/pics/coresmall/Makefile.am
@@ -0,0 +1,8 @@
+tmpdir = $(picsdir)/coresmall
+
+tmp_DATA = *.png
+
+
+EXTRA_DIST = $(tmp_DATA)
+
+
diff --git a/data/pics/coresmall/kcs_accept.png b/data/pics/coresmall/kcs_accept.png
new file mode 100644
index 00000000..f158dd44
--- /dev/null
+++ b/data/pics/coresmall/kcs_accept.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_action.png b/data/pics/coresmall/kcs_action.png
new file mode 100644
index 00000000..4ef5b1ce
--- /dev/null
+++ b/data/pics/coresmall/kcs_action.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_addons.png b/data/pics/coresmall/kcs_addons.png
new file mode 100644
index 00000000..a766782d
--- /dev/null
+++ b/data/pics/coresmall/kcs_addons.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_afraid.png b/data/pics/coresmall/kcs_afraid.png
new file mode 100644
index 00000000..cd13058a
--- /dev/null
+++ b/data/pics/coresmall/kcs_afraid.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_alert.png b/data/pics/coresmall/kcs_alert.png
new file mode 100644
index 00000000..373fa126
--- /dev/null
+++ b/data/pics/coresmall/kcs_alert.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_alias.png b/data/pics/coresmall/kcs_alias.png
new file mode 100644
index 00000000..e8490da9
--- /dev/null
+++ b/data/pics/coresmall/kcs_alias.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_aliashighlighted.png b/data/pics/coresmall/kcs_aliashighlighted.png
new file mode 100644
index 00000000..4dedc076
--- /dev/null
+++ b/data/pics/coresmall/kcs_aliashighlighted.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_angry.png b/data/pics/coresmall/kcs_angry.png
new file mode 100644
index 00000000..8ae89330
--- /dev/null
+++ b/data/pics/coresmall/kcs_angry.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_applet.png b/data/pics/coresmall/kcs_applet.png
new file mode 100644
index 00000000..9a1d7c48
--- /dev/null
+++ b/data/pics/coresmall/kcs_applet.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_autotilewindows.png b/data/pics/coresmall/kcs_autotilewindows.png
new file mode 100644
index 00000000..3a04bd0d
--- /dev/null
+++ b/data/pics/coresmall/kcs_autotilewindows.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_avatar.png b/data/pics/coresmall/kcs_avatar.png
new file mode 100644
index 00000000..9730b3bb
--- /dev/null
+++ b/data/pics/coresmall/kcs_avatar.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_away.png b/data/pics/coresmall/kcs_away.png
new file mode 100644
index 00000000..c626d654
--- /dev/null
+++ b/data/pics/coresmall/kcs_away.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_ban.png b/data/pics/coresmall/kcs_ban.png
new file mode 100644
index 00000000..b605f0fa
--- /dev/null
+++ b/data/pics/coresmall/kcs_ban.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_banexcept.png b/data/pics/coresmall/kcs_banexcept.png
new file mode 100644
index 00000000..031767d8
--- /dev/null
+++ b/data/pics/coresmall/kcs_banexcept.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_banunexcept.png b/data/pics/coresmall/kcs_banunexcept.png
new file mode 100644
index 00000000..8171619a
--- /dev/null
+++ b/data/pics/coresmall/kcs_banunexcept.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_biggrin.png b/data/pics/coresmall/kcs_biggrin.png
new file mode 100644
index 00000000..3a391d9c
--- /dev/null
+++ b/data/pics/coresmall/kcs_biggrin.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_biggrineyes.png b/data/pics/coresmall/kcs_biggrineyes.png
new file mode 100644
index 00000000..740a5841
--- /dev/null
+++ b/data/pics/coresmall/kcs_biggrineyes.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_biggringlasses.png b/data/pics/coresmall/kcs_biggringlasses.png
new file mode 100644
index 00000000..864c1229
--- /dev/null
+++ b/data/pics/coresmall/kcs_biggringlasses.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_binarytext.png b/data/pics/coresmall/kcs_binarytext.png
new file mode 100644
index 00000000..1764b390
--- /dev/null
+++ b/data/pics/coresmall/kcs_binarytext.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_blacksquare.png b/data/pics/coresmall/kcs_blacksquare.png
new file mode 100644
index 00000000..60100e53
--- /dev/null
+++ b/data/pics/coresmall/kcs_blacksquare.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_bluesquare.png b/data/pics/coresmall/kcs_bluesquare.png
new file mode 100644
index 00000000..cf889741
--- /dev/null
+++ b/data/pics/coresmall/kcs_bluesquare.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_bomb.png b/data/pics/coresmall/kcs_bomb.png
new file mode 100644
index 00000000..f1271fff
--- /dev/null
+++ b/data/pics/coresmall/kcs_bomb.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_bookmarks.png b/data/pics/coresmall/kcs_bookmarks.png
new file mode 100644
index 00000000..65a97c91
--- /dev/null
+++ b/data/pics/coresmall/kcs_bookmarks.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_broadcastnotice.png b/data/pics/coresmall/kcs_broadcastnotice.png
new file mode 100644
index 00000000..27f624c9
--- /dev/null
+++ b/data/pics/coresmall/kcs_broadcastnotice.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_broadcastprivmsg.png b/data/pics/coresmall/kcs_broadcastprivmsg.png
new file mode 100644
index 00000000..83df7a85
--- /dev/null
+++ b/data/pics/coresmall/kcs_broadcastprivmsg.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_bug.png b/data/pics/coresmall/kcs_bug.png
new file mode 100644
index 00000000..fa10e757
--- /dev/null
+++ b/data/pics/coresmall/kcs_bug.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_cafe.png b/data/pics/coresmall/kcs_cafe.png
new file mode 100644
index 00000000..32b9cda5
--- /dev/null
+++ b/data/pics/coresmall/kcs_cafe.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_canvas.png b/data/pics/coresmall/kcs_canvas.png
new file mode 100644
index 00000000..af230e23
--- /dev/null
+++ b/data/pics/coresmall/kcs_canvas.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_caption.png b/data/pics/coresmall/kcs_caption.png
new file mode 100644
index 00000000..8480ab52
--- /dev/null
+++ b/data/pics/coresmall/kcs_caption.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_cascadewindows.png b/data/pics/coresmall/kcs_cascadewindows.png
new file mode 100644
index 00000000..278c9ec8
--- /dev/null
+++ b/data/pics/coresmall/kcs_cascadewindows.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_chanadmin.png b/data/pics/coresmall/kcs_chanadmin.png
new file mode 100644
index 00000000..4d5d0dfb
--- /dev/null
+++ b/data/pics/coresmall/kcs_chanadmin.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_chanadminaway.png b/data/pics/coresmall/kcs_chanadminaway.png
new file mode 100644
index 00000000..5df27a09
--- /dev/null
+++ b/data/pics/coresmall/kcs_chanadminaway.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_chanmode.png b/data/pics/coresmall/kcs_chanmode.png
new file mode 100644
index 00000000..f40ad9a1
--- /dev/null
+++ b/data/pics/coresmall/kcs_chanmode.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_chanmodehide.png b/data/pics/coresmall/kcs_chanmodehide.png
new file mode 100644
index 00000000..70cd9fd3
--- /dev/null
+++ b/data/pics/coresmall/kcs_chanmodehide.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_channel.png b/data/pics/coresmall/kcs_channel.png
new file mode 100644
index 00000000..0830fefa
--- /dev/null
+++ b/data/pics/coresmall/kcs_channel.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_channelnotice.png b/data/pics/coresmall/kcs_channelnotice.png
new file mode 100644
index 00000000..9babfb84
--- /dev/null
+++ b/data/pics/coresmall/kcs_channelnotice.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_channelnoticecrypted.png b/data/pics/coresmall/kcs_channelnoticecrypted.png
new file mode 100644
index 00000000..70428182
--- /dev/null
+++ b/data/pics/coresmall/kcs_channelnoticecrypted.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_chanowner.png b/data/pics/coresmall/kcs_chanowner.png
new file mode 100644
index 00000000..cfa3d8f8
--- /dev/null
+++ b/data/pics/coresmall/kcs_chanowner.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_chanowneraway.png b/data/pics/coresmall/kcs_chanowneraway.png
new file mode 100644
index 00000000..3a3dec5d
--- /dev/null
+++ b/data/pics/coresmall/kcs_chanowneraway.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_chanprivmsg.png b/data/pics/coresmall/kcs_chanprivmsg.png
new file mode 100644
index 00000000..9babfb84
--- /dev/null
+++ b/data/pics/coresmall/kcs_chanprivmsg.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_chanprivmsgcrypted.png b/data/pics/coresmall/kcs_chanprivmsgcrypted.png
new file mode 100644
index 00000000..c1be8564
--- /dev/null
+++ b/data/pics/coresmall/kcs_chanprivmsgcrypted.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_chanserv.png b/data/pics/coresmall/kcs_chanserv.png
new file mode 100644
index 00000000..0127b531
--- /dev/null
+++ b/data/pics/coresmall/kcs_chanserv.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_chanunadmin.png b/data/pics/coresmall/kcs_chanunadmin.png
new file mode 100644
index 00000000..dd96fc90
--- /dev/null
+++ b/data/pics/coresmall/kcs_chanunadmin.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_chanunowner.png b/data/pics/coresmall/kcs_chanunowner.png
new file mode 100644
index 00000000..a951d337
--- /dev/null
+++ b/data/pics/coresmall/kcs_chanunowner.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_classictaskbar.png b/data/pics/coresmall/kcs_classictaskbar.png
new file mode 100644
index 00000000..6febd1f3
--- /dev/null
+++ b/data/pics/coresmall/kcs_classictaskbar.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_close.png b/data/pics/coresmall/kcs_close.png
new file mode 100644
index 00000000..08c1ba90
--- /dev/null
+++ b/data/pics/coresmall/kcs_close.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_colors.png b/data/pics/coresmall/kcs_colors.png
new file mode 100644
index 00000000..38ae30f4
--- /dev/null
+++ b/data/pics/coresmall/kcs_colors.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_console.png b/data/pics/coresmall/kcs_console.png
new file mode 100644
index 00000000..a73336dc
--- /dev/null
+++ b/data/pics/coresmall/kcs_console.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_copy.png b/data/pics/coresmall/kcs_copy.png
new file mode 100644
index 00000000..9fcf0ead
--- /dev/null
+++ b/data/pics/coresmall/kcs_copy.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_cry.png b/data/pics/coresmall/kcs_cry.png
new file mode 100644
index 00000000..058a8b84
--- /dev/null
+++ b/data/pics/coresmall/kcs_cry.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_ctcpreply.png b/data/pics/coresmall/kcs_ctcpreply.png
new file mode 100644
index 00000000..b1744ae9
--- /dev/null
+++ b/data/pics/coresmall/kcs_ctcpreply.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_ctcpreplyunknown.png b/data/pics/coresmall/kcs_ctcpreplyunknown.png
new file mode 100644
index 00000000..d9c4ef42
--- /dev/null
+++ b/data/pics/coresmall/kcs_ctcpreplyunknown.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_ctcprequestflood.png b/data/pics/coresmall/kcs_ctcprequestflood.png
new file mode 100644
index 00000000..5bb5fb83
--- /dev/null
+++ b/data/pics/coresmall/kcs_ctcprequestflood.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_ctcprequestignored.png b/data/pics/coresmall/kcs_ctcprequestignored.png
new file mode 100644
index 00000000..d9c4ef42
--- /dev/null
+++ b/data/pics/coresmall/kcs_ctcprequestignored.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_ctcprequestreplied.png b/data/pics/coresmall/kcs_ctcprequestreplied.png
new file mode 100644
index 00000000..bf663922
--- /dev/null
+++ b/data/pics/coresmall/kcs_ctcprequestreplied.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_ctcprequestunknown.png b/data/pics/coresmall/kcs_ctcprequestunknown.png
new file mode 100644
index 00000000..3834ca1e
--- /dev/null
+++ b/data/pics/coresmall/kcs_ctcprequestunknown.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_cut.png b/data/pics/coresmall/kcs_cut.png
new file mode 100644
index 00000000..cef0c8ff
--- /dev/null
+++ b/data/pics/coresmall/kcs_cut.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_cyansquare.png b/data/pics/coresmall/kcs_cyansquare.png
new file mode 100644
index 00000000..d712a010
--- /dev/null
+++ b/data/pics/coresmall/kcs_cyansquare.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_dccchatmsg.png b/data/pics/coresmall/kcs_dccchatmsg.png
new file mode 100644
index 00000000..f1603ca6
--- /dev/null
+++ b/data/pics/coresmall/kcs_dccchatmsg.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_dccchatmsgcrypted.png b/data/pics/coresmall/kcs_dccchatmsgcrypted.png
new file mode 100644
index 00000000..a2ec7e8e
--- /dev/null
+++ b/data/pics/coresmall/kcs_dccchatmsgcrypted.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_dccerror.png b/data/pics/coresmall/kcs_dccerror.png
new file mode 100644
index 00000000..84f35cc9
--- /dev/null
+++ b/data/pics/coresmall/kcs_dccerror.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_dccmsg.png b/data/pics/coresmall/kcs_dccmsg.png
new file mode 100644
index 00000000..98366859
--- /dev/null
+++ b/data/pics/coresmall/kcs_dccmsg.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_dccrequest.png b/data/pics/coresmall/kcs_dccrequest.png
new file mode 100644
index 00000000..0b6a19e4
--- /dev/null
+++ b/data/pics/coresmall/kcs_dccrequest.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_dccvoice.png b/data/pics/coresmall/kcs_dccvoice.png
new file mode 100644
index 00000000..0b035986
--- /dev/null
+++ b/data/pics/coresmall/kcs_dccvoice.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_deadchannel.png b/data/pics/coresmall/kcs_deadchannel.png
new file mode 100644
index 00000000..9fc60374
--- /dev/null
+++ b/data/pics/coresmall/kcs_deadchannel.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_deadquery.png b/data/pics/coresmall/kcs_deadquery.png
new file mode 100644
index 00000000..a4d6986b
--- /dev/null
+++ b/data/pics/coresmall/kcs_deadquery.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_default.png b/data/pics/coresmall/kcs_default.png
new file mode 100644
index 00000000..c5bc0499
--- /dev/null
+++ b/data/pics/coresmall/kcs_default.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_deleteitem.png b/data/pics/coresmall/kcs_deleteitem.png
new file mode 100644
index 00000000..e57deba6
--- /dev/null
+++ b/data/pics/coresmall/kcs_deleteitem.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_demoralized.png b/data/pics/coresmall/kcs_demoralized.png
new file mode 100644
index 00000000..c919e68b
--- /dev/null
+++ b/data/pics/coresmall/kcs_demoralized.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_deop.png b/data/pics/coresmall/kcs_deop.png
new file mode 100644
index 00000000..c947c6ae
--- /dev/null
+++ b/data/pics/coresmall/kcs_deop.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_deuserop.png b/data/pics/coresmall/kcs_deuserop.png
new file mode 100644
index 00000000..76f45939
--- /dev/null
+++ b/data/pics/coresmall/kcs_deuserop.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_devoice.png b/data/pics/coresmall/kcs_devoice.png
new file mode 100644
index 00000000..1b49a51d
--- /dev/null
+++ b/data/pics/coresmall/kcs_devoice.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_discard.png b/data/pics/coresmall/kcs_discard.png
new file mode 100644
index 00000000..464a2cc7
--- /dev/null
+++ b/data/pics/coresmall/kcs_discard.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_dkgreensquare.png b/data/pics/coresmall/kcs_dkgreensquare.png
new file mode 100644
index 00000000..4d4171a0
--- /dev/null
+++ b/data/pics/coresmall/kcs_dkgreensquare.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_dock.png b/data/pics/coresmall/kcs_dock.png
new file mode 100644
index 00000000..d099b179
--- /dev/null
+++ b/data/pics/coresmall/kcs_dock.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_dockwidget.png b/data/pics/coresmall/kcs_dockwidget.png
new file mode 100644
index 00000000..f21d5c1a
--- /dev/null
+++ b/data/pics/coresmall/kcs_dockwidget.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_edititem.png b/data/pics/coresmall/kcs_edititem.png
new file mode 100644
index 00000000..cfe763f4
--- /dev/null
+++ b/data/pics/coresmall/kcs_edititem.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_editor.png b/data/pics/coresmall/kcs_editor.png
new file mode 100644
index 00000000..0be654d2
--- /dev/null
+++ b/data/pics/coresmall/kcs_editor.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_epilogue.png b/data/pics/coresmall/kcs_epilogue.png
new file mode 100644
index 00000000..91dd5f62
--- /dev/null
+++ b/data/pics/coresmall/kcs_epilogue.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_event.png b/data/pics/coresmall/kcs_event.png
new file mode 100644
index 00000000..37bd65d5
--- /dev/null
+++ b/data/pics/coresmall/kcs_event.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_eventnohandlers.png b/data/pics/coresmall/kcs_eventnohandlers.png
new file mode 100644
index 00000000..aa0414e1
--- /dev/null
+++ b/data/pics/coresmall/kcs_eventnohandlers.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_eye.png b/data/pics/coresmall/kcs_eye.png
new file mode 100644
index 00000000..ecc23ccc
--- /dev/null
+++ b/data/pics/coresmall/kcs_eye.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_file.png b/data/pics/coresmall/kcs_file.png
new file mode 100644
index 00000000..77762e4e
--- /dev/null
+++ b/data/pics/coresmall/kcs_file.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_files.png b/data/pics/coresmall/kcs_files.png
new file mode 100644
index 00000000..949ce75f
--- /dev/null
+++ b/data/pics/coresmall/kcs_files.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_filetransfer.png b/data/pics/coresmall/kcs_filetransfer.png
new file mode 100644
index 00000000..6ee4273b
--- /dev/null
+++ b/data/pics/coresmall/kcs_filetransfer.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_finger.png b/data/pics/coresmall/kcs_finger.png
new file mode 100644
index 00000000..e5ad147b
--- /dev/null
+++ b/data/pics/coresmall/kcs_finger.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_floppy.png b/data/pics/coresmall/kcs_floppy.png
new file mode 100644
index 00000000..2a7b2a16
--- /dev/null
+++ b/data/pics/coresmall/kcs_floppy.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_folder.png b/data/pics/coresmall/kcs_folder.png
new file mode 100644
index 00000000..fd3969ed
--- /dev/null
+++ b/data/pics/coresmall/kcs_folder.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_gnutella.png b/data/pics/coresmall/kcs_gnutella.png
new file mode 100644
index 00000000..f17f7ae7
--- /dev/null
+++ b/data/pics/coresmall/kcs_gnutella.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_greensquare.png b/data/pics/coresmall/kcs_greensquare.png
new file mode 100644
index 00000000..cae9322a
--- /dev/null
+++ b/data/pics/coresmall/kcs_greensquare.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_gui.png b/data/pics/coresmall/kcs_gui.png
new file mode 100644
index 00000000..7e55a948
--- /dev/null
+++ b/data/pics/coresmall/kcs_gui.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_halfdeop.png b/data/pics/coresmall/kcs_halfdeop.png
new file mode 100644
index 00000000..8fd505a2
--- /dev/null
+++ b/data/pics/coresmall/kcs_halfdeop.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_halfop.png b/data/pics/coresmall/kcs_halfop.png
new file mode 100644
index 00000000..f9edc08e
--- /dev/null
+++ b/data/pics/coresmall/kcs_halfop.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_halfopaway.png b/data/pics/coresmall/kcs_halfopaway.png
new file mode 100644
index 00000000..b81bc7d2
--- /dev/null
+++ b/data/pics/coresmall/kcs_halfopaway.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_handler.png b/data/pics/coresmall/kcs_handler.png
new file mode 100644
index 00000000..98c8aa8c
--- /dev/null
+++ b/data/pics/coresmall/kcs_handler.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_handlerdisabled.png b/data/pics/coresmall/kcs_handlerdisabled.png
new file mode 100644
index 00000000..04312aff
--- /dev/null
+++ b/data/pics/coresmall/kcs_handlerdisabled.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_heart.png b/data/pics/coresmall/kcs_heart.png
new file mode 100644
index 00000000..372cf45c
--- /dev/null
+++ b/data/pics/coresmall/kcs_heart.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_heartbroken.png b/data/pics/coresmall/kcs_heartbroken.png
new file mode 100644
index 00000000..77df9367
--- /dev/null
+++ b/data/pics/coresmall/kcs_heartbroken.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_help.png b/data/pics/coresmall/kcs_help.png
new file mode 100644
index 00000000..4066ad82
--- /dev/null
+++ b/data/pics/coresmall/kcs_help.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_hidedoubleview.png b/data/pics/coresmall/kcs_hidedoubleview.png
new file mode 100644
index 00000000..91b67d63
--- /dev/null
+++ b/data/pics/coresmall/kcs_hidedoubleview.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_hidelistview.png b/data/pics/coresmall/kcs_hidelistview.png
new file mode 100644
index 00000000..870b65a3
--- /dev/null
+++ b/data/pics/coresmall/kcs_hidelistview.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_home.png b/data/pics/coresmall/kcs_home.png
new file mode 100644
index 00000000..0d508958
--- /dev/null
+++ b/data/pics/coresmall/kcs_home.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_homepage.png b/data/pics/coresmall/kcs_homepage.png
new file mode 100644
index 00000000..e1a3aa1b
--- /dev/null
+++ b/data/pics/coresmall/kcs_homepage.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_iconmanager.png b/data/pics/coresmall/kcs_iconmanager.png
new file mode 100644
index 00000000..d0ad4d08
--- /dev/null
+++ b/data/pics/coresmall/kcs_iconmanager.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_icq.png b/data/pics/coresmall/kcs_icq.png
new file mode 100644
index 00000000..b8f1be4f
--- /dev/null
+++ b/data/pics/coresmall/kcs_icq.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_icqblue.png b/data/pics/coresmall/kcs_icqblue.png
new file mode 100644
index 00000000..192f7943
--- /dev/null
+++ b/data/pics/coresmall/kcs_icqblue.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_icqlightgreen.png b/data/pics/coresmall/kcs_icqlightgreen.png
new file mode 100644
index 00000000..3ebb39ef
--- /dev/null
+++ b/data/pics/coresmall/kcs_icqlightgreen.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_icqlightyellow.png b/data/pics/coresmall/kcs_icqlightyellow.png
new file mode 100644
index 00000000..f920c21d
--- /dev/null
+++ b/data/pics/coresmall/kcs_icqlightyellow.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_icqred.png b/data/pics/coresmall/kcs_icqred.png
new file mode 100644
index 00000000..0953fb9b
--- /dev/null
+++ b/data/pics/coresmall/kcs_icqred.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_icqyellow.png b/data/pics/coresmall/kcs_icqyellow.png
new file mode 100644
index 00000000..27e57432
--- /dev/null
+++ b/data/pics/coresmall/kcs_icqyellow.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_idea.png b/data/pics/coresmall/kcs_idea.png
new file mode 100644
index 00000000..7fe9a331
--- /dev/null
+++ b/data/pics/coresmall/kcs_idea.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_ident.png b/data/pics/coresmall/kcs_ident.png
new file mode 100644
index 00000000..996d8afc
--- /dev/null
+++ b/data/pics/coresmall/kcs_ident.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_ignore.png b/data/pics/coresmall/kcs_ignore.png
new file mode 100644
index 00000000..5a0343cd
--- /dev/null
+++ b/data/pics/coresmall/kcs_ignore.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_input.png b/data/pics/coresmall/kcs_input.png
new file mode 100644
index 00000000..1a239d52
--- /dev/null
+++ b/data/pics/coresmall/kcs_input.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_invisible.png b/data/pics/coresmall/kcs_invisible.png
new file mode 100644
index 00000000..4bd9df75
--- /dev/null
+++ b/data/pics/coresmall/kcs_invisible.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_invite.png b/data/pics/coresmall/kcs_invite.png
new file mode 100644
index 00000000..4854e619
--- /dev/null
+++ b/data/pics/coresmall/kcs_invite.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_inviteexcept.png b/data/pics/coresmall/kcs_inviteexcept.png
new file mode 100644
index 00000000..49ac916e
--- /dev/null
+++ b/data/pics/coresmall/kcs_inviteexcept.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_inviteunexcept.png b/data/pics/coresmall/kcs_inviteunexcept.png
new file mode 100644
index 00000000..81698109
--- /dev/null
+++ b/data/pics/coresmall/kcs_inviteunexcept.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_irc.png b/data/pics/coresmall/kcs_irc.png
new file mode 100644
index 00000000..4ae8a9f6
--- /dev/null
+++ b/data/pics/coresmall/kcs_irc.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_irc0.png b/data/pics/coresmall/kcs_irc0.png
new file mode 100644
index 00000000..6bf0808a
--- /dev/null
+++ b/data/pics/coresmall/kcs_irc0.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_irc1.png b/data/pics/coresmall/kcs_irc1.png
new file mode 100644
index 00000000..6b2f3947
--- /dev/null
+++ b/data/pics/coresmall/kcs_irc1.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_irc2.png b/data/pics/coresmall/kcs_irc2.png
new file mode 100644
index 00000000..10d2eaba
--- /dev/null
+++ b/data/pics/coresmall/kcs_irc2.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_irc3.png b/data/pics/coresmall/kcs_irc3.png
new file mode 100644
index 00000000..e9516711
--- /dev/null
+++ b/data/pics/coresmall/kcs_irc3.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_irc4.png b/data/pics/coresmall/kcs_irc4.png
new file mode 100644
index 00000000..3901aca9
--- /dev/null
+++ b/data/pics/coresmall/kcs_irc4.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_irc5.png b/data/pics/coresmall/kcs_irc5.png
new file mode 100644
index 00000000..c58b02b1
--- /dev/null
+++ b/data/pics/coresmall/kcs_irc5.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_ircview.png b/data/pics/coresmall/kcs_ircview.png
new file mode 100644
index 00000000..f904e274
--- /dev/null
+++ b/data/pics/coresmall/kcs_ircview.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_join.png b/data/pics/coresmall/kcs_join.png
new file mode 100644
index 00000000..8a47b82c
--- /dev/null
+++ b/data/pics/coresmall/kcs_join.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_key.png b/data/pics/coresmall/kcs_key.png
new file mode 100644
index 00000000..1c51f6c4
--- /dev/null
+++ b/data/pics/coresmall/kcs_key.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_kick.png b/data/pics/coresmall/kcs_kick.png
new file mode 100644
index 00000000..873e13e7
--- /dev/null
+++ b/data/pics/coresmall/kcs_kick.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_kiss.png b/data/pics/coresmall/kcs_kiss.png
new file mode 100644
index 00000000..74041bbb
--- /dev/null
+++ b/data/pics/coresmall/kcs_kiss.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_kvirc.png b/data/pics/coresmall/kcs_kvirc.png
new file mode 100644
index 00000000..b1d043c4
--- /dev/null
+++ b/data/pics/coresmall/kcs_kvirc.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_limit.png b/data/pics/coresmall/kcs_limit.png
new file mode 100644
index 00000000..76fe309e
--- /dev/null
+++ b/data/pics/coresmall/kcs_limit.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_links.png b/data/pics/coresmall/kcs_links.png
new file mode 100644
index 00000000..bbc1d0b8
--- /dev/null
+++ b/data/pics/coresmall/kcs_links.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_linux.png b/data/pics/coresmall/kcs_linux.png
new file mode 100644
index 00000000..b98d943f
--- /dev/null
+++ b/data/pics/coresmall/kcs_linux.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_list.png b/data/pics/coresmall/kcs_list.png
new file mode 100644
index 00000000..0b30f4e4
--- /dev/null
+++ b/data/pics/coresmall/kcs_list.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_locked.png b/data/pics/coresmall/kcs_locked.png
new file mode 100644
index 00000000..db36f070
--- /dev/null
+++ b/data/pics/coresmall/kcs_locked.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_lockedoff.png b/data/pics/coresmall/kcs_lockedoff.png
new file mode 100644
index 00000000..80763365
--- /dev/null
+++ b/data/pics/coresmall/kcs_lockedoff.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_log.png b/data/pics/coresmall/kcs_log.png
new file mode 100644
index 00000000..93e9a407
--- /dev/null
+++ b/data/pics/coresmall/kcs_log.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_look.png b/data/pics/coresmall/kcs_look.png
new file mode 100644
index 00000000..047efa2b
--- /dev/null
+++ b/data/pics/coresmall/kcs_look.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_maxhorizontal.png b/data/pics/coresmall/kcs_maxhorizontal.png
new file mode 100644
index 00000000..de435242
--- /dev/null
+++ b/data/pics/coresmall/kcs_maxhorizontal.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_maximize.png b/data/pics/coresmall/kcs_maximize.png
new file mode 100644
index 00000000..7e0ccee7
--- /dev/null
+++ b/data/pics/coresmall/kcs_maximize.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_maxvertical.png b/data/pics/coresmall/kcs_maxvertical.png
new file mode 100644
index 00000000..ecbc9f52
--- /dev/null
+++ b/data/pics/coresmall/kcs_maxvertical.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_mdihelp.png b/data/pics/coresmall/kcs_mdihelp.png
new file mode 100644
index 00000000..4066ad82
--- /dev/null
+++ b/data/pics/coresmall/kcs_mdihelp.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_meban.png b/data/pics/coresmall/kcs_meban.png
new file mode 100644
index 00000000..79bada7a
--- /dev/null
+++ b/data/pics/coresmall/kcs_meban.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_mebanexcept.png b/data/pics/coresmall/kcs_mebanexcept.png
new file mode 100644
index 00000000..957337f1
--- /dev/null
+++ b/data/pics/coresmall/kcs_mebanexcept.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_mebanunexcept.png b/data/pics/coresmall/kcs_mebanunexcept.png
new file mode 100644
index 00000000..61c0d2f0
--- /dev/null
+++ b/data/pics/coresmall/kcs_mebanunexcept.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_mechanadmin.png b/data/pics/coresmall/kcs_mechanadmin.png
new file mode 100644
index 00000000..d749238d
--- /dev/null
+++ b/data/pics/coresmall/kcs_mechanadmin.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_mechanowner.png b/data/pics/coresmall/kcs_mechanowner.png
new file mode 100644
index 00000000..169fda11
--- /dev/null
+++ b/data/pics/coresmall/kcs_mechanowner.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_mechanunadmin.png b/data/pics/coresmall/kcs_mechanunadmin.png
new file mode 100644
index 00000000..36622d17
--- /dev/null
+++ b/data/pics/coresmall/kcs_mechanunadmin.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_mechanunowner.png b/data/pics/coresmall/kcs_mechanunowner.png
new file mode 100644
index 00000000..c60532c3
--- /dev/null
+++ b/data/pics/coresmall/kcs_mechanunowner.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_medehalfop.png b/data/pics/coresmall/kcs_medehalfop.png
new file mode 100644
index 00000000..748e93cf
--- /dev/null
+++ b/data/pics/coresmall/kcs_medehalfop.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_medeop.png b/data/pics/coresmall/kcs_medeop.png
new file mode 100644
index 00000000..e9fa8021
--- /dev/null
+++ b/data/pics/coresmall/kcs_medeop.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_medeuserop.png b/data/pics/coresmall/kcs_medeuserop.png
new file mode 100644
index 00000000..1e08099e
--- /dev/null
+++ b/data/pics/coresmall/kcs_medeuserop.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_medevoice.png b/data/pics/coresmall/kcs_medevoice.png
new file mode 100644
index 00000000..4870f68e
--- /dev/null
+++ b/data/pics/coresmall/kcs_medevoice.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_mehalfop.png b/data/pics/coresmall/kcs_mehalfop.png
new file mode 100644
index 00000000..7a786433
--- /dev/null
+++ b/data/pics/coresmall/kcs_mehalfop.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_meinviteexcept.png b/data/pics/coresmall/kcs_meinviteexcept.png
new file mode 100644
index 00000000..0893250c
--- /dev/null
+++ b/data/pics/coresmall/kcs_meinviteexcept.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_meinviteunexcept.png b/data/pics/coresmall/kcs_meinviteunexcept.png
new file mode 100644
index 00000000..230d4c50
--- /dev/null
+++ b/data/pics/coresmall/kcs_meinviteunexcept.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_mekick.png b/data/pics/coresmall/kcs_mekick.png
new file mode 100644
index 00000000..9e4217c2
--- /dev/null
+++ b/data/pics/coresmall/kcs_mekick.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_meop.png b/data/pics/coresmall/kcs_meop.png
new file mode 100644
index 00000000..fa509bee
--- /dev/null
+++ b/data/pics/coresmall/kcs_meop.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_message.png b/data/pics/coresmall/kcs_message.png
new file mode 100644
index 00000000..c5dc4338
--- /dev/null
+++ b/data/pics/coresmall/kcs_message.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_messages.png b/data/pics/coresmall/kcs_messages.png
new file mode 100644
index 00000000..45162bfd
--- /dev/null
+++ b/data/pics/coresmall/kcs_messages.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_messagesent.png b/data/pics/coresmall/kcs_messagesent.png
new file mode 100644
index 00000000..e89af850
--- /dev/null
+++ b/data/pics/coresmall/kcs_messagesent.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_meunban.png b/data/pics/coresmall/kcs_meunban.png
new file mode 100644
index 00000000..15653f0d
--- /dev/null
+++ b/data/pics/coresmall/kcs_meunban.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_meuserop.png b/data/pics/coresmall/kcs_meuserop.png
new file mode 100644
index 00000000..0148cd81
--- /dev/null
+++ b/data/pics/coresmall/kcs_meuserop.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_mevoice.png b/data/pics/coresmall/kcs_mevoice.png
new file mode 100644
index 00000000..311c6842
--- /dev/null
+++ b/data/pics/coresmall/kcs_mevoice.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_minimize.png b/data/pics/coresmall/kcs_minimize.png
new file mode 100644
index 00000000..ff56b093
--- /dev/null
+++ b/data/pics/coresmall/kcs_minimize.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_minus.png b/data/pics/coresmall/kcs_minus.png
new file mode 100644
index 00000000..14066c0f
--- /dev/null
+++ b/data/pics/coresmall/kcs_minus.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_mode.png b/data/pics/coresmall/kcs_mode.png
new file mode 100644
index 00000000..bf1fa288
--- /dev/null
+++ b/data/pics/coresmall/kcs_mode.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_motd.png b/data/pics/coresmall/kcs_motd.png
new file mode 100644
index 00000000..0b171137
--- /dev/null
+++ b/data/pics/coresmall/kcs_motd.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_multimedia.png b/data/pics/coresmall/kcs_multimedia.png
new file mode 100644
index 00000000..790a7368
--- /dev/null
+++ b/data/pics/coresmall/kcs_multimedia.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_namespace.png b/data/pics/coresmall/kcs_namespace.png
new file mode 100644
index 00000000..78eaf922
--- /dev/null
+++ b/data/pics/coresmall/kcs_namespace.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_newitem.png b/data/pics/coresmall/kcs_newitem.png
new file mode 100644
index 00000000..7d04de4c
--- /dev/null
+++ b/data/pics/coresmall/kcs_newitem.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_newitembywizard.png b/data/pics/coresmall/kcs_newitembywizard.png
new file mode 100644
index 00000000..9f047487
--- /dev/null
+++ b/data/pics/coresmall/kcs_newitembywizard.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_nick.png b/data/pics/coresmall/kcs_nick.png
new file mode 100644
index 00000000..2fd25e8c
--- /dev/null
+++ b/data/pics/coresmall/kcs_nick.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_nicknameproblem.png b/data/pics/coresmall/kcs_nicknameproblem.png
new file mode 100644
index 00000000..e7c51656
--- /dev/null
+++ b/data/pics/coresmall/kcs_nicknameproblem.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_nickserv.png b/data/pics/coresmall/kcs_nickserv.png
new file mode 100644
index 00000000..c70e4c6f
--- /dev/null
+++ b/data/pics/coresmall/kcs_nickserv.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_nochannel.png b/data/pics/coresmall/kcs_nochannel.png
new file mode 100644
index 00000000..b074bc1d
--- /dev/null
+++ b/data/pics/coresmall/kcs_nochannel.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_none.png b/data/pics/coresmall/kcs_none.png
new file mode 100644
index 00000000..6699105b
--- /dev/null
+++ b/data/pics/coresmall/kcs_none.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_notaway.png b/data/pics/coresmall/kcs_notaway.png
new file mode 100644
index 00000000..c626d654
--- /dev/null
+++ b/data/pics/coresmall/kcs_notaway.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_notifyoffline.png b/data/pics/coresmall/kcs_notifyoffline.png
new file mode 100644
index 00000000..afebce96
--- /dev/null
+++ b/data/pics/coresmall/kcs_notifyoffline.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_notifyonline.png b/data/pics/coresmall/kcs_notifyonline.png
new file mode 100644
index 00000000..49fdf03b
--- /dev/null
+++ b/data/pics/coresmall/kcs_notifyonline.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_op.png b/data/pics/coresmall/kcs_op.png
new file mode 100644
index 00000000..63c1c28a
--- /dev/null
+++ b/data/pics/coresmall/kcs_op.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_opaway.png b/data/pics/coresmall/kcs_opaway.png
new file mode 100644
index 00000000..db833d2f
--- /dev/null
+++ b/data/pics/coresmall/kcs_opaway.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_options.png b/data/pics/coresmall/kcs_options.png
new file mode 100644
index 00000000..79d60109
--- /dev/null
+++ b/data/pics/coresmall/kcs_options.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_ownprivmsg.png b/data/pics/coresmall/kcs_ownprivmsg.png
new file mode 100644
index 00000000..c50c921e
--- /dev/null
+++ b/data/pics/coresmall/kcs_ownprivmsg.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_ownprivmsgcrypted.png b/data/pics/coresmall/kcs_ownprivmsgcrypted.png
new file mode 100644
index 00000000..088acbca
--- /dev/null
+++ b/data/pics/coresmall/kcs_ownprivmsgcrypted.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_package.png b/data/pics/coresmall/kcs_package.png
new file mode 100644
index 00000000..29b3ceed
--- /dev/null
+++ b/data/pics/coresmall/kcs_package.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_parsererror.png b/data/pics/coresmall/kcs_parsererror.png
new file mode 100644
index 00000000..5a8b2be1
--- /dev/null
+++ b/data/pics/coresmall/kcs_parsererror.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_parserwarning.png b/data/pics/coresmall/kcs_parserwarning.png
new file mode 100644
index 00000000..2d2958ca
--- /dev/null
+++ b/data/pics/coresmall/kcs_parserwarning.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_part.png b/data/pics/coresmall/kcs_part.png
new file mode 100644
index 00000000..dbe71415
--- /dev/null
+++ b/data/pics/coresmall/kcs_part.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_paste.png b/data/pics/coresmall/kcs_paste.png
new file mode 100644
index 00000000..05b15573
--- /dev/null
+++ b/data/pics/coresmall/kcs_paste.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_play.png b/data/pics/coresmall/kcs_play.png
new file mode 100644
index 00000000..a9d4b0c3
--- /dev/null
+++ b/data/pics/coresmall/kcs_play.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_plus.png b/data/pics/coresmall/kcs_plus.png
new file mode 100644
index 00000000..abe38a57
--- /dev/null
+++ b/data/pics/coresmall/kcs_plus.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_popup.png b/data/pics/coresmall/kcs_popup.png
new file mode 100644
index 00000000..7636df82
--- /dev/null
+++ b/data/pics/coresmall/kcs_popup.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_popupmenu.png b/data/pics/coresmall/kcs_popupmenu.png
new file mode 100644
index 00000000..89ddac62
--- /dev/null
+++ b/data/pics/coresmall/kcs_popupmenu.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_prologue.png b/data/pics/coresmall/kcs_prologue.png
new file mode 100644
index 00000000..b3203d23
--- /dev/null
+++ b/data/pics/coresmall/kcs_prologue.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_proxy.png b/data/pics/coresmall/kcs_proxy.png
new file mode 100644
index 00000000..afd0528b
--- /dev/null
+++ b/data/pics/coresmall/kcs_proxy.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_query.png b/data/pics/coresmall/kcs_query.png
new file mode 100644
index 00000000..d22fbdc7
--- /dev/null
+++ b/data/pics/coresmall/kcs_query.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_querynotice.png b/data/pics/coresmall/kcs_querynotice.png
new file mode 100644
index 00000000..d22fbdc7
--- /dev/null
+++ b/data/pics/coresmall/kcs_querynotice.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_querynoticecrypted.png b/data/pics/coresmall/kcs_querynoticecrypted.png
new file mode 100644
index 00000000..0bb884e6
--- /dev/null
+++ b/data/pics/coresmall/kcs_querynoticecrypted.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_queryprivmsg.png b/data/pics/coresmall/kcs_queryprivmsg.png
new file mode 100644
index 00000000..760d3b57
--- /dev/null
+++ b/data/pics/coresmall/kcs_queryprivmsg.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_queryprivmsgcrypted.png b/data/pics/coresmall/kcs_queryprivmsgcrypted.png
new file mode 100644
index 00000000..68cd6d8a
--- /dev/null
+++ b/data/pics/coresmall/kcs_queryprivmsgcrypted.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_querytrace.png b/data/pics/coresmall/kcs_querytrace.png
new file mode 100644
index 00000000..b2abdbd2
--- /dev/null
+++ b/data/pics/coresmall/kcs_querytrace.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_quit.png b/data/pics/coresmall/kcs_quit.png
new file mode 100644
index 00000000..1eb0fdfd
--- /dev/null
+++ b/data/pics/coresmall/kcs_quit.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_quitapp.png b/data/pics/coresmall/kcs_quitapp.png
new file mode 100644
index 00000000..f8ab698a
--- /dev/null
+++ b/data/pics/coresmall/kcs_quitapp.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_quitsplit.png b/data/pics/coresmall/kcs_quitsplit.png
new file mode 100644
index 00000000..29e0f218
--- /dev/null
+++ b/data/pics/coresmall/kcs_quitsplit.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_raw.png b/data/pics/coresmall/kcs_raw.png
new file mode 100644
index 00000000..52efa2d8
--- /dev/null
+++ b/data/pics/coresmall/kcs_raw.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_rawevent.png b/data/pics/coresmall/kcs_rawevent.png
new file mode 100644
index 00000000..22bb9648
--- /dev/null
+++ b/data/pics/coresmall/kcs_rawevent.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_raweventnohandlers.png b/data/pics/coresmall/kcs_raweventnohandlers.png
new file mode 100644
index 00000000..e136bee8
--- /dev/null
+++ b/data/pics/coresmall/kcs_raweventnohandlers.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_record.png b/data/pics/coresmall/kcs_record.png
new file mode 100644
index 00000000..4489eddf
--- /dev/null
+++ b/data/pics/coresmall/kcs_record.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_redsquare.png b/data/pics/coresmall/kcs_redsquare.png
new file mode 100644
index 00000000..bd0e73f2
--- /dev/null
+++ b/data/pics/coresmall/kcs_redsquare.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_refresh.png b/data/pics/coresmall/kcs_refresh.png
new file mode 100644
index 00000000..6d6fbe40
--- /dev/null
+++ b/data/pics/coresmall/kcs_refresh.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_regusers.png b/data/pics/coresmall/kcs_regusers.png
new file mode 100644
index 00000000..7b0bb45b
--- /dev/null
+++ b/data/pics/coresmall/kcs_regusers.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_restore.png b/data/pics/coresmall/kcs_restore.png
new file mode 100644
index 00000000..55a25b62
--- /dev/null
+++ b/data/pics/coresmall/kcs_restore.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_retry.png b/data/pics/coresmall/kcs_retry.png
new file mode 100644
index 00000000..1441ecdc
--- /dev/null
+++ b/data/pics/coresmall/kcs_retry.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_rose.png b/data/pics/coresmall/kcs_rose.png
new file mode 100644
index 00000000..666a9c36
--- /dev/null
+++ b/data/pics/coresmall/kcs_rose.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_saycolors.png b/data/pics/coresmall/kcs_saycolors.png
new file mode 100644
index 00000000..6a6e4fb2
--- /dev/null
+++ b/data/pics/coresmall/kcs_saycolors.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_sayicon.png b/data/pics/coresmall/kcs_sayicon.png
new file mode 100644
index 00000000..54ce5685
--- /dev/null
+++ b/data/pics/coresmall/kcs_sayicon.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_saykvs.png b/data/pics/coresmall/kcs_saykvs.png
new file mode 100644
index 00000000..2e0bf2b6
--- /dev/null
+++ b/data/pics/coresmall/kcs_saykvs.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_saysmile.png b/data/pics/coresmall/kcs_saysmile.png
new file mode 100644
index 00000000..f068b658
--- /dev/null
+++ b/data/pics/coresmall/kcs_saysmile.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_screenshot.png b/data/pics/coresmall/kcs_screenshot.png
new file mode 100644
index 00000000..fe631b2c
--- /dev/null
+++ b/data/pics/coresmall/kcs_screenshot.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_scriptaction.png b/data/pics/coresmall/kcs_scriptaction.png
new file mode 100644
index 00000000..4ef5b1ce
--- /dev/null
+++ b/data/pics/coresmall/kcs_scriptaction.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_scriptcenter.png b/data/pics/coresmall/kcs_scriptcenter.png
new file mode 100644
index 00000000..18f43c75
--- /dev/null
+++ b/data/pics/coresmall/kcs_scriptcenter.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_search.png b/data/pics/coresmall/kcs_search.png
new file mode 100644
index 00000000..16a2e0d8
--- /dev/null
+++ b/data/pics/coresmall/kcs_search.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_server.png b/data/pics/coresmall/kcs_server.png
new file mode 100644
index 00000000..ac72d1a2
--- /dev/null
+++ b/data/pics/coresmall/kcs_server.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_servererror.png b/data/pics/coresmall/kcs_servererror.png
new file mode 100644
index 00000000..caefdf67
--- /dev/null
+++ b/data/pics/coresmall/kcs_servererror.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_serverinfo.png b/data/pics/coresmall/kcs_serverinfo.png
new file mode 100644
index 00000000..e7ccdd05
--- /dev/null
+++ b/data/pics/coresmall/kcs_serverinfo.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_servernotice.png b/data/pics/coresmall/kcs_servernotice.png
new file mode 100644
index 00000000..80fb6b00
--- /dev/null
+++ b/data/pics/coresmall/kcs_servernotice.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_serverping.png b/data/pics/coresmall/kcs_serverping.png
new file mode 100644
index 00000000..6ee4273b
--- /dev/null
+++ b/data/pics/coresmall/kcs_serverping.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_servnotice.png b/data/pics/coresmall/kcs_servnotice.png
new file mode 100644
index 00000000..8ead24f1
--- /dev/null
+++ b/data/pics/coresmall/kcs_servnotice.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_sharedfiles.png b/data/pics/coresmall/kcs_sharedfiles.png
new file mode 100644
index 00000000..e58badd6
--- /dev/null
+++ b/data/pics/coresmall/kcs_sharedfiles.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_showdoubleview.png b/data/pics/coresmall/kcs_showdoubleview.png
new file mode 100644
index 00000000..8d1c7192
--- /dev/null
+++ b/data/pics/coresmall/kcs_showdoubleview.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_showlistview.png b/data/pics/coresmall/kcs_showlistview.png
new file mode 100644
index 00000000..8337da36
--- /dev/null
+++ b/data/pics/coresmall/kcs_showlistview.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_shy.png b/data/pics/coresmall/kcs_shy.png
new file mode 100644
index 00000000..ec5147f4
--- /dev/null
+++ b/data/pics/coresmall/kcs_shy.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_slurp.png b/data/pics/coresmall/kcs_slurp.png
new file mode 100644
index 00000000..27988b69
--- /dev/null
+++ b/data/pics/coresmall/kcs_slurp.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_smile.png b/data/pics/coresmall/kcs_smile.png
new file mode 100644
index 00000000..cb82bc39
--- /dev/null
+++ b/data/pics/coresmall/kcs_smile.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_socketerror.png b/data/pics/coresmall/kcs_socketerror.png
new file mode 100644
index 00000000..9911058d
--- /dev/null
+++ b/data/pics/coresmall/kcs_socketerror.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_socketmessage.png b/data/pics/coresmall/kcs_socketmessage.png
new file mode 100644
index 00000000..97f797d5
--- /dev/null
+++ b/data/pics/coresmall/kcs_socketmessage.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_socketwarning.png b/data/pics/coresmall/kcs_socketwarning.png
new file mode 100644
index 00000000..350dd440
--- /dev/null
+++ b/data/pics/coresmall/kcs_socketwarning.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_sound.png b/data/pics/coresmall/kcs_sound.png
new file mode 100644
index 00000000..e182154e
--- /dev/null
+++ b/data/pics/coresmall/kcs_sound.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_spam.png b/data/pics/coresmall/kcs_spam.png
new file mode 100644
index 00000000..7ee7c5c5
--- /dev/null
+++ b/data/pics/coresmall/kcs_spam.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_split.png b/data/pics/coresmall/kcs_split.png
new file mode 100644
index 00000000..aab6bdb0
--- /dev/null
+++ b/data/pics/coresmall/kcs_split.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_spy.png b/data/pics/coresmall/kcs_spy.png
new file mode 100644
index 00000000..37f6248c
--- /dev/null
+++ b/data/pics/coresmall/kcs_spy.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_ssl.png b/data/pics/coresmall/kcs_ssl.png
new file mode 100644
index 00000000..cda0467a
--- /dev/null
+++ b/data/pics/coresmall/kcs_ssl.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_stats.png b/data/pics/coresmall/kcs_stats.png
new file mode 100644
index 00000000..fdad61ff
--- /dev/null
+++ b/data/pics/coresmall/kcs_stats.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_statusbar.png b/data/pics/coresmall/kcs_statusbar.png
new file mode 100644
index 00000000..59c65c25
--- /dev/null
+++ b/data/pics/coresmall/kcs_statusbar.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_surprised1.png b/data/pics/coresmall/kcs_surprised1.png
new file mode 100644
index 00000000..c45b644d
--- /dev/null
+++ b/data/pics/coresmall/kcs_surprised1.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_surprised2.png b/data/pics/coresmall/kcs_surprised2.png
new file mode 100644
index 00000000..cd13058a
--- /dev/null
+++ b/data/pics/coresmall/kcs_surprised2.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_systemerror.png b/data/pics/coresmall/kcs_systemerror.png
new file mode 100644
index 00000000..3ad9611a
--- /dev/null
+++ b/data/pics/coresmall/kcs_systemerror.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_systemmessage.png b/data/pics/coresmall/kcs_systemmessage.png
new file mode 100644
index 00000000..a6307d41
--- /dev/null
+++ b/data/pics/coresmall/kcs_systemmessage.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_systemwarning.png b/data/pics/coresmall/kcs_systemwarning.png
new file mode 100644
index 00000000..0c3f0dcf
--- /dev/null
+++ b/data/pics/coresmall/kcs_systemwarning.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_tearsmile.png b/data/pics/coresmall/kcs_tearsmile.png
new file mode 100644
index 00000000..249943c1
--- /dev/null
+++ b/data/pics/coresmall/kcs_tearsmile.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_terminal.png b/data/pics/coresmall/kcs_terminal.png
new file mode 100644
index 00000000..f904e274
--- /dev/null
+++ b/data/pics/coresmall/kcs_terminal.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_textencoding.png b/data/pics/coresmall/kcs_textencoding.png
new file mode 100644
index 00000000..15204759
--- /dev/null
+++ b/data/pics/coresmall/kcs_textencoding.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_textexclamative.png b/data/pics/coresmall/kcs_textexclamative.png
new file mode 100644
index 00000000..adb2a55b
--- /dev/null
+++ b/data/pics/coresmall/kcs_textexclamative.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_textpoints.png b/data/pics/coresmall/kcs_textpoints.png
new file mode 100644
index 00000000..a9bf5f25
--- /dev/null
+++ b/data/pics/coresmall/kcs_textpoints.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_theme.png b/data/pics/coresmall/kcs_theme.png
new file mode 100644
index 00000000..1f0c5dd7
--- /dev/null
+++ b/data/pics/coresmall/kcs_theme.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_themeoptions.png b/data/pics/coresmall/kcs_themeoptions.png
new file mode 100644
index 00000000..3c1f58f8
--- /dev/null
+++ b/data/pics/coresmall/kcs_themeoptions.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_tilewindows.png b/data/pics/coresmall/kcs_tilewindows.png
new file mode 100644
index 00000000..1f945471
--- /dev/null
+++ b/data/pics/coresmall/kcs_tilewindows.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_time.png b/data/pics/coresmall/kcs_time.png
new file mode 100644
index 00000000..b799ca96
--- /dev/null
+++ b/data/pics/coresmall/kcs_time.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_tongue.png b/data/pics/coresmall/kcs_tongue.png
new file mode 100644
index 00000000..94da7ce6
--- /dev/null
+++ b/data/pics/coresmall/kcs_tongue.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_tongue2.png b/data/pics/coresmall/kcs_tongue2.png
new file mode 100644
index 00000000..c16f1196
--- /dev/null
+++ b/data/pics/coresmall/kcs_tongue2.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_toolbar.png b/data/pics/coresmall/kcs_toolbar.png
new file mode 100644
index 00000000..c849d251
--- /dev/null
+++ b/data/pics/coresmall/kcs_toolbar.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_topic.png b/data/pics/coresmall/kcs_topic.png
new file mode 100644
index 00000000..a2223488
--- /dev/null
+++ b/data/pics/coresmall/kcs_topic.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_transfer.png b/data/pics/coresmall/kcs_transfer.png
new file mode 100644
index 00000000..17d62f96
--- /dev/null
+++ b/data/pics/coresmall/kcs_transfer.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_transparent.png b/data/pics/coresmall/kcs_transparent.png
new file mode 100644
index 00000000..4cf0bb00
--- /dev/null
+++ b/data/pics/coresmall/kcs_transparent.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_treetaskbar.png b/data/pics/coresmall/kcs_treetaskbar.png
new file mode 100644
index 00000000..f6cd1dd3
--- /dev/null
+++ b/data/pics/coresmall/kcs_treetaskbar.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_ugly.png b/data/pics/coresmall/kcs_ugly.png
new file mode 100644
index 00000000..91d03f03
--- /dev/null
+++ b/data/pics/coresmall/kcs_ugly.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_unban.png b/data/pics/coresmall/kcs_unban.png
new file mode 100644
index 00000000..05a7abff
--- /dev/null
+++ b/data/pics/coresmall/kcs_unban.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_undock.png b/data/pics/coresmall/kcs_undock.png
new file mode 100644
index 00000000..531a64fe
--- /dev/null
+++ b/data/pics/coresmall/kcs_undock.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_unhandled.png b/data/pics/coresmall/kcs_unhandled.png
new file mode 100644
index 00000000..e9d618e0
--- /dev/null
+++ b/data/pics/coresmall/kcs_unhandled.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_unlocked.png b/data/pics/coresmall/kcs_unlocked.png
new file mode 100644
index 00000000..f4af5e72
--- /dev/null
+++ b/data/pics/coresmall/kcs_unlocked.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_unlockedoff.png b/data/pics/coresmall/kcs_unlockedoff.png
new file mode 100644
index 00000000..b5aa0652
--- /dev/null
+++ b/data/pics/coresmall/kcs_unlockedoff.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_unrecognized.png b/data/pics/coresmall/kcs_unrecognized.png
new file mode 100644
index 00000000..caefdf67
--- /dev/null
+++ b/data/pics/coresmall/kcs_unrecognized.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_url.png b/data/pics/coresmall/kcs_url.png
new file mode 100644
index 00000000..3ed9089a
--- /dev/null
+++ b/data/pics/coresmall/kcs_url.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_userlist.png b/data/pics/coresmall/kcs_userlist.png
new file mode 100644
index 00000000..359a2984
--- /dev/null
+++ b/data/pics/coresmall/kcs_userlist.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_userop.png b/data/pics/coresmall/kcs_userop.png
new file mode 100644
index 00000000..8c00289a
--- /dev/null
+++ b/data/pics/coresmall/kcs_userop.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_useropaway.png b/data/pics/coresmall/kcs_useropaway.png
new file mode 100644
index 00000000..4a4128f2
--- /dev/null
+++ b/data/pics/coresmall/kcs_useropaway.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_userwindow.png b/data/pics/coresmall/kcs_userwindow.png
new file mode 100644
index 00000000..b83a1086
--- /dev/null
+++ b/data/pics/coresmall/kcs_userwindow.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_violetsquare.png b/data/pics/coresmall/kcs_violetsquare.png
new file mode 100644
index 00000000..c46e4005
--- /dev/null
+++ b/data/pics/coresmall/kcs_violetsquare.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_voice.png b/data/pics/coresmall/kcs_voice.png
new file mode 100644
index 00000000..aad61227
--- /dev/null
+++ b/data/pics/coresmall/kcs_voice.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_voiceaway.png b/data/pics/coresmall/kcs_voiceaway.png
new file mode 100644
index 00000000..a9bc7ae3
--- /dev/null
+++ b/data/pics/coresmall/kcs_voiceaway.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_wallops.png b/data/pics/coresmall/kcs_wallops.png
new file mode 100644
index 00000000..49840ab8
--- /dev/null
+++ b/data/pics/coresmall/kcs_wallops.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_who.png b/data/pics/coresmall/kcs_who.png
new file mode 100644
index 00000000..e2012322
--- /dev/null
+++ b/data/pics/coresmall/kcs_who.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_whoischannels.png b/data/pics/coresmall/kcs_whoischannels.png
new file mode 100644
index 00000000..4a3183fe
--- /dev/null
+++ b/data/pics/coresmall/kcs_whoischannels.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_whoisidle.png b/data/pics/coresmall/kcs_whoisidle.png
new file mode 100644
index 00000000..21d03a1d
--- /dev/null
+++ b/data/pics/coresmall/kcs_whoisidle.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_whoisother.png b/data/pics/coresmall/kcs_whoisother.png
new file mode 100644
index 00000000..93694a7a
--- /dev/null
+++ b/data/pics/coresmall/kcs_whoisother.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_whoisserver.png b/data/pics/coresmall/kcs_whoisserver.png
new file mode 100644
index 00000000..ac72d1a2
--- /dev/null
+++ b/data/pics/coresmall/kcs_whoisserver.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_whoisuser.png b/data/pics/coresmall/kcs_whoisuser.png
new file mode 100644
index 00000000..d2de8d74
--- /dev/null
+++ b/data/pics/coresmall/kcs_whoisuser.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_world.png b/data/pics/coresmall/kcs_world.png
new file mode 100644
index 00000000..d17fe499
--- /dev/null
+++ b/data/pics/coresmall/kcs_world.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_xy.png b/data/pics/coresmall/kcs_xy.png
new file mode 100644
index 00000000..2a7b2a16
--- /dev/null
+++ b/data/pics/coresmall/kcs_xy.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_yellowsquare.png b/data/pics/coresmall/kcs_yellowsquare.png
new file mode 100644
index 00000000..cdc86c81
--- /dev/null
+++ b/data/pics/coresmall/kcs_yellowsquare.png
Binary files differ
diff --git a/data/pics/kvi_actiondrawer.png b/data/pics/kvi_actiondrawer.png
new file mode 100644
index 00000000..2fcbe261
--- /dev/null
+++ b/data/pics/kvi_actiondrawer.png
Binary files differ
diff --git a/data/pics/kvi_activitymeter.png b/data/pics/kvi_activitymeter.png
new file mode 100644
index 00000000..7c9ea177
--- /dev/null
+++ b/data/pics/kvi_activitymeter.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_actioneditor.png b/data/pics/kvi_bigicon_actioneditor.png
new file mode 100644
index 00000000..41ca0691
--- /dev/null
+++ b/data/pics/kvi_bigicon_actioneditor.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_actions.png b/data/pics/kvi_bigicon_actions.png
new file mode 100644
index 00000000..30c33097
--- /dev/null
+++ b/data/pics/kvi_bigicon_actions.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_addons.png b/data/pics/kvi_bigicon_addons.png
new file mode 100644
index 00000000..bbf54cd7
--- /dev/null
+++ b/data/pics/kvi_bigicon_addons.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_aliaseditor.png b/data/pics/kvi_bigicon_aliaseditor.png
new file mode 100644
index 00000000..2f50eb3d
--- /dev/null
+++ b/data/pics/kvi_bigicon_aliaseditor.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_cascadewindows.png b/data/pics/kvi_bigicon_cascadewindows.png
new file mode 100644
index 00000000..4965736e
--- /dev/null
+++ b/data/pics/kvi_bigicon_cascadewindows.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_channellist.png b/data/pics/kvi_bigicon_channellist.png
new file mode 100644
index 00000000..7d157f7f
--- /dev/null
+++ b/data/pics/kvi_bigicon_channellist.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_channels.png b/data/pics/kvi_bigicon_channels.png
new file mode 100644
index 00000000..9b3a6120
--- /dev/null
+++ b/data/pics/kvi_bigicon_channels.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_channelspopup.png b/data/pics/kvi_bigicon_channelspopup.png
new file mode 100644
index 00000000..9b3a6120
--- /dev/null
+++ b/data/pics/kvi_bigicon_channelspopup.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_codetester.png b/data/pics/kvi_bigicon_codetester.png
new file mode 100644
index 00000000..60038991
--- /dev/null
+++ b/data/pics/kvi_bigicon_codetester.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_connected.png b/data/pics/kvi_bigicon_connected.png
new file mode 100644
index 00000000..658908c1
--- /dev/null
+++ b/data/pics/kvi_bigicon_connected.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_connecting.png b/data/pics/kvi_bigicon_connecting.png
new file mode 100644
index 00000000..9493c2a1
--- /dev/null
+++ b/data/pics/kvi_bigicon_connecting.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_disconnected.png b/data/pics/kvi_bigicon_disconnected.png
new file mode 100644
index 00000000..e1b143ba
--- /dev/null
+++ b/data/pics/kvi_bigicon_disconnected.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_eventeditor.png b/data/pics/kvi_bigicon_eventeditor.png
new file mode 100644
index 00000000..8e615d4b
--- /dev/null
+++ b/data/pics/kvi_bigicon_eventeditor.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_folder.png b/data/pics/kvi_bigicon_folder.png
new file mode 100644
index 00000000..ff8acbce
--- /dev/null
+++ b/data/pics/kvi_bigicon_folder.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_help.png b/data/pics/kvi_bigicon_help.png
new file mode 100644
index 00000000..0107eed5
--- /dev/null
+++ b/data/pics/kvi_bigicon_help.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_helpback.png b/data/pics/kvi_bigicon_helpback.png
new file mode 100644
index 00000000..b7b4c838
--- /dev/null
+++ b/data/pics/kvi_bigicon_helpback.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_helpclose.png b/data/pics/kvi_bigicon_helpclose.png
new file mode 100644
index 00000000..69f4b59d
--- /dev/null
+++ b/data/pics/kvi_bigicon_helpclose.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_helpforward.png b/data/pics/kvi_bigicon_helpforward.png
new file mode 100644
index 00000000..65a9a581
--- /dev/null
+++ b/data/pics/kvi_bigicon_helpforward.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_helpindex.png b/data/pics/kvi_bigicon_helpindex.png
new file mode 100644
index 00000000..3fc4b579
--- /dev/null
+++ b/data/pics/kvi_bigicon_helpindex.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_helpsearch.png b/data/pics/kvi_bigicon_helpsearch.png
new file mode 100644
index 00000000..00b6f69f
--- /dev/null
+++ b/data/pics/kvi_bigicon_helpsearch.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_identity.png b/data/pics/kvi_bigicon_identity.png
new file mode 100644
index 00000000..c975459f
--- /dev/null
+++ b/data/pics/kvi_bigicon_identity.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_irccontextdisplay.png b/data/pics/kvi_bigicon_irccontextdisplay.png
new file mode 100644
index 00000000..2a288d55
--- /dev/null
+++ b/data/pics/kvi_bigicon_irccontextdisplay.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_keyboard.png b/data/pics/kvi_bigicon_keyboard.png
new file mode 100644
index 00000000..2ea9069d
--- /dev/null
+++ b/data/pics/kvi_bigicon_keyboard.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_kvircwww.png b/data/pics/kvi_bigicon_kvircwww.png
new file mode 100644
index 00000000..a16b141c
--- /dev/null
+++ b/data/pics/kvi_bigicon_kvircwww.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_kvs.png b/data/pics/kvi_bigicon_kvs.png
new file mode 100644
index 00000000..f3d37fc3
--- /dev/null
+++ b/data/pics/kvi_bigicon_kvs.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_mailinglist.png b/data/pics/kvi_bigicon_mailinglist.png
new file mode 100644
index 00000000..16ef3378
--- /dev/null
+++ b/data/pics/kvi_bigicon_mailinglist.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_minimizeallwindows.png b/data/pics/kvi_bigicon_minimizeallwindows.png
new file mode 100644
index 00000000..04e90e73
--- /dev/null
+++ b/data/pics/kvi_bigicon_minimizeallwindows.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_networklinks.png b/data/pics/kvi_bigicon_networklinks.png
new file mode 100644
index 00000000..f813af76
--- /dev/null
+++ b/data/pics/kvi_bigicon_networklinks.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_newirccontext.png b/data/pics/kvi_bigicon_newirccontext.png
new file mode 100755
index 00000000..9ec1a5c8
--- /dev/null
+++ b/data/pics/kvi_bigicon_newirccontext.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_nickpopup.png b/data/pics/kvi_bigicon_nickpopup.png
new file mode 100755
index 00000000..71209976
--- /dev/null
+++ b/data/pics/kvi_bigicon_nickpopup.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_nokeyboard.png b/data/pics/kvi_bigicon_nokeyboard.png
new file mode 100644
index 00000000..315973b6
--- /dev/null
+++ b/data/pics/kvi_bigicon_nokeyboard.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_open.png b/data/pics/kvi_bigicon_open.png
new file mode 100644
index 00000000..26ad2527
--- /dev/null
+++ b/data/pics/kvi_bigicon_open.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_pack.png b/data/pics/kvi_bigicon_pack.png
new file mode 100644
index 00000000..9d59eda4
--- /dev/null
+++ b/data/pics/kvi_bigicon_pack.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_popupeditor.png b/data/pics/kvi_bigicon_popupeditor.png
new file mode 100644
index 00000000..e2422686
--- /dev/null
+++ b/data/pics/kvi_bigicon_popupeditor.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_quit.png b/data/pics/kvi_bigicon_quit.png
new file mode 100755
index 00000000..1a9155c9
--- /dev/null
+++ b/data/pics/kvi_bigicon_quit.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_raweditor.png b/data/pics/kvi_bigicon_raweditor.png
new file mode 100644
index 00000000..24573556
--- /dev/null
+++ b/data/pics/kvi_bigicon_raweditor.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_regusers.png b/data/pics/kvi_bigicon_regusers.png
new file mode 100644
index 00000000..78d0682b
--- /dev/null
+++ b/data/pics/kvi_bigicon_regusers.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_remove.png b/data/pics/kvi_bigicon_remove.png
new file mode 100644
index 00000000..15226afe
--- /dev/null
+++ b/data/pics/kvi_bigicon_remove.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_save.png b/data/pics/kvi_bigicon_save.png
new file mode 100644
index 00000000..d7890076
--- /dev/null
+++ b/data/pics/kvi_bigicon_save.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_screenshot.png b/data/pics/kvi_bigicon_screenshot.png
new file mode 100644
index 00000000..0b36405b
--- /dev/null
+++ b/data/pics/kvi_bigicon_screenshot.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_separator.png b/data/pics/kvi_bigicon_separator.png
new file mode 100644
index 00000000..248f806f
--- /dev/null
+++ b/data/pics/kvi_bigicon_separator.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_server.png b/data/pics/kvi_bigicon_server.png
new file mode 100644
index 00000000..64002580
--- /dev/null
+++ b/data/pics/kvi_bigicon_server.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_servers.png b/data/pics/kvi_bigicon_servers.png
new file mode 100644
index 00000000..ac9120d6
--- /dev/null
+++ b/data/pics/kvi_bigicon_servers.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_settings.png b/data/pics/kvi_bigicon_settings.png
new file mode 100644
index 00000000..f33c13a3
--- /dev/null
+++ b/data/pics/kvi_bigicon_settings.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_socketspy.png b/data/pics/kvi_bigicon_socketspy.png
new file mode 100755
index 00000000..930dafe2
--- /dev/null
+++ b/data/pics/kvi_bigicon_socketspy.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_theme.png b/data/pics/kvi_bigicon_theme.png
new file mode 100644
index 00000000..53f926e2
--- /dev/null
+++ b/data/pics/kvi_bigicon_theme.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_themeoptions.png b/data/pics/kvi_bigicon_themeoptions.png
new file mode 100644
index 00000000..935c9f77
--- /dev/null
+++ b/data/pics/kvi_bigicon_themeoptions.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_tilewindows.png b/data/pics/kvi_bigicon_tilewindows.png
new file mode 100644
index 00000000..9d24cda8
--- /dev/null
+++ b/data/pics/kvi_bigicon_tilewindows.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_toolbareditor.png b/data/pics/kvi_bigicon_toolbareditor.png
new file mode 100644
index 00000000..552bfc69
--- /dev/null
+++ b/data/pics/kvi_bigicon_toolbareditor.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_tools.png b/data/pics/kvi_bigicon_tools.png
new file mode 100644
index 00000000..9823389c
--- /dev/null
+++ b/data/pics/kvi_bigicon_tools.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_trashcan.png b/data/pics/kvi_bigicon_trashcan.png
new file mode 100644
index 00000000..aa82e6f1
--- /dev/null
+++ b/data/pics/kvi_bigicon_trashcan.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_unknown.png b/data/pics/kvi_bigicon_unknown.png
new file mode 100755
index 00000000..1f31fd63
--- /dev/null
+++ b/data/pics/kvi_bigicon_unknown.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_usermode.png b/data/pics/kvi_bigicon_usermode.png
new file mode 100644
index 00000000..66b15030
--- /dev/null
+++ b/data/pics/kvi_bigicon_usermode.png
Binary files differ
diff --git a/data/pics/kvi_bigicon_www.png b/data/pics/kvi_bigicon_www.png
new file mode 100644
index 00000000..d324f360
--- /dev/null
+++ b/data/pics/kvi_bigicon_www.png
Binary files differ
diff --git a/data/pics/kvi_checkbox_selected.png b/data/pics/kvi_checkbox_selected.png
new file mode 100644
index 00000000..0769dc07
--- /dev/null
+++ b/data/pics/kvi_checkbox_selected.png
Binary files differ
diff --git a/data/pics/kvi_checkbox_unselected.png b/data/pics/kvi_checkbox_unselected.png
new file mode 100644
index 00000000..3a9ff54c
--- /dev/null
+++ b/data/pics/kvi_checkbox_unselected.png
Binary files differ
diff --git a/data/pics/kvi_horizontal_left.png b/data/pics/kvi_horizontal_left.png
new file mode 100755
index 00000000..2e3ba925
--- /dev/null
+++ b/data/pics/kvi_horizontal_left.png
Binary files differ
diff --git a/data/pics/kvi_horizontal_right.png b/data/pics/kvi_horizontal_right.png
new file mode 100755
index 00000000..5b4e0986
--- /dev/null
+++ b/data/pics/kvi_horizontal_right.png
Binary files differ
diff --git a/data/pics/kvi_icon_bot.png b/data/pics/kvi_icon_bot.png
new file mode 100644
index 00000000..48ed5ca6
--- /dev/null
+++ b/data/pics/kvi_icon_bot.png
Binary files differ
diff --git a/data/pics/kvi_icon_female.png b/data/pics/kvi_icon_female.png
new file mode 100644
index 00000000..22d11d11
--- /dev/null
+++ b/data/pics/kvi_icon_female.png
Binary files differ
diff --git a/data/pics/kvi_icon_male.png b/data/pics/kvi_icon_male.png
new file mode 100644
index 00000000..e66e862b
--- /dev/null
+++ b/data/pics/kvi_icon_male.png
Binary files differ
diff --git a/data/pics/kvi_icon_refresh.png b/data/pics/kvi_icon_refresh.png
new file mode 100755
index 00000000..3dc4ed53
--- /dev/null
+++ b/data/pics/kvi_icon_refresh.png
Binary files differ
diff --git a/data/pics/kvi_setup_label.png b/data/pics/kvi_setup_label.png
new file mode 100644
index 00000000..4c987aa4
--- /dev/null
+++ b/data/pics/kvi_setup_label.png
Binary files differ
diff --git a/data/pics/kvi_setup_theme_hires.png b/data/pics/kvi_setup_theme_hires.png
new file mode 100644
index 00000000..ed3e43b3
--- /dev/null
+++ b/data/pics/kvi_setup_theme_hires.png
Binary files differ
diff --git a/data/pics/kvi_setup_theme_lowres.png b/data/pics/kvi_setup_theme_lowres.png
new file mode 100644
index 00000000..0de93f97
--- /dev/null
+++ b/data/pics/kvi_setup_theme_lowres.png
Binary files differ
diff --git a/data/pics/kvi_splash.png b/data/pics/kvi_splash.png
new file mode 100644
index 00000000..836bb86b
--- /dev/null
+++ b/data/pics/kvi_splash.png
Binary files differ
diff --git a/data/pics/kvi_splash_overlay.png b/data/pics/kvi_splash_overlay.png
new file mode 100644
index 00000000..7e64b6f6
--- /dev/null
+++ b/data/pics/kvi_splash_overlay.png
Binary files differ
diff --git a/data/pics/kvi_toolbutton_menuindicator.png b/data/pics/kvi_toolbutton_menuindicator.png
new file mode 100755
index 00000000..69401ee9
--- /dev/null
+++ b/data/pics/kvi_toolbutton_menuindicator.png
Binary files differ
diff --git a/data/pics/kvi_userchanstate.png b/data/pics/kvi_userchanstate.png
new file mode 100644
index 00000000..380ee106
--- /dev/null
+++ b/data/pics/kvi_userchanstate.png
Binary files differ
diff --git a/data/protocols/Makefile.am b/data/protocols/Makefile.am
new file mode 100644
index 00000000..720388f0
--- /dev/null
+++ b/data/protocols/Makefile.am
@@ -0,0 +1,9 @@
+###############################################################################
+# KVirc IRC client Makefile - 16.12.98 Szymon Stefanek <[email protected]>
+###############################################################################
+
+tmpdir = $(kdeservicesdir)
+
+tmp_DATA = irc.protocol irc6.protocol
+
+EXTRA_DIST = $(tmp_DATA)
diff --git a/data/protocols/irc.protocol b/data/protocols/irc.protocol
new file mode 100644
index 00000000..057903e8
--- /dev/null
+++ b/data/protocols/irc.protocol
@@ -0,0 +1,11 @@
+[Protocol]
+exec=kvirc %u
+protocol=irc
+input=none
+output=none
+helper=true
+listing=false
+reading=false
+writing=false
+makedir=false
+deleting=false
diff --git a/data/protocols/irc6.protocol b/data/protocols/irc6.protocol
new file mode 100644
index 00000000..f57a4c00
--- /dev/null
+++ b/data/protocols/irc6.protocol
@@ -0,0 +1,11 @@
+[Protocol]
+exec=kvirc %u
+protocol=irc6
+input=none
+output=none
+helper=true
+listing=false
+reading=false
+writing=false
+makedir=false
+deleting=false
diff --git a/data/resources/Makefile.am b/data/resources/Makefile.am
new file mode 100644
index 00000000..71b9c6bf
--- /dev/null
+++ b/data/resources/Makefile.am
@@ -0,0 +1,3 @@
+EXTRA_DIST = icon1.ico kvirc.rc resource.h
+
+
diff --git a/data/resources/icon1.ico b/data/resources/icon1.ico
new file mode 100644
index 00000000..23f11473
--- /dev/null
+++ b/data/resources/icon1.ico
Binary files differ
diff --git a/data/resources/kvirc.rc b/data/resources/kvirc.rc
new file mode 100644
index 00000000..e25ef3b5
--- /dev/null
+++ b/data/resources/kvirc.rc
@@ -0,0 +1,29 @@
+//Microsoft Developer Studio generated resource script.
+//
+#include "resource.h"
+
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDI_ICON1 ICON DISCARDABLE "icon1.ico"
+IDD_ICON2 ICON DISCARDABLE "kvs.ico"
+IDD_ICON3 ICON DISCARDABLE "kvc.ico"
+IDD_ICON4 ICON DISCARDABLE "kvt.ico"
+IDD_ICON5 ICON DISCARDABLE "kva.ico"
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "\r\n"
+ "\0"
+END \ No newline at end of file
diff --git a/data/resources/resource.h b/data/resources/resource.h
new file mode 100644
index 00000000..87135009
--- /dev/null
+++ b/data/resources/resource.h
@@ -0,0 +1,20 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by kvirc.rc
+//
+#define IDD_ICON1 100
+#define IDD_ICON2 101
+#define IDD_ICON3 102
+#define IDD_ICON4 103
+#define IDD_ICON5 104
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE 101
+#define _APS_NEXT_COMMAND_VALUE 40001
+#define _APS_NEXT_CONTROL_VALUE 1000
+#define _APS_NEXT_SYMED_VALUE 101
+#endif
+#endif
diff --git a/data/resources_mac/Info.plist.in b/data/resources_mac/Info.plist.in
new file mode 100644
index 00000000..c1054aa4
--- /dev/null
+++ b/data/resources_mac/Info.plist.in
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleExecutable</key>
+ <string>kvirc</string>
+ <key>CFBundleIconFile</key>
+ <string>kvirc.icns</string>
+ <key>CFBundleIdentifier</key>
+ <string>com.kvirc.kvirc</string>
+ <key>CFBundleLocalizations</key>
+ <array>
+ <string>en</string>
+ <string>bg</string>
+ <string>ca</string>
+ <string>cs</string>
+ <string>de</string>
+ <string>es</string>
+ <string>fr</string>
+ <string>hu</string>
+ <string>it</string>
+ <string>nl</string>
+ <string>pl</string>
+ <string>pt</string>
+ <string>pt_BR</string>
+ <string>ru</string>
+ <string>sr</string>
+ </array>
+ <key>CFBundleName</key>
+ <string>KVirc</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>@kvircversion@</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>NSAppleScriptEnabled</key>
+ <false/>
+</dict>
+</plist>
diff --git a/data/resources_mac/Makefile.am b/data/resources_mac/Makefile.am
new file mode 100644
index 00000000..4063b321
--- /dev/null
+++ b/data/resources_mac/Makefile.am
@@ -0,0 +1,8 @@
+EXTRA_DIST = Info.plist.in kvirc.icns
+
+CLEANFILES = Info.plist
+
+all: Info.plist
+
+Info.plist: Makefile
+ sed -e 's,[@]kvircversion[@],$(VERSION),g' < Info.plist.in > Info.plist
diff --git a/data/resources_mac/kvirc.icns b/data/resources_mac/kvirc.icns
new file mode 100644
index 00000000..87fcdac4
--- /dev/null
+++ b/data/resources_mac/kvirc.icns
Binary files differ