qulogic/pidgin

merge of '4b55b4cb203e06ad703553293b45057162e67bee'

2007-09-19, Sadrul Habib Chowdhury
6be715c1da03
merge of '4b55b4cb203e06ad703553293b45057162e67bee'
and '2ae860d0239a01156afd40837acaddc7f493dd48'
  • +28 -10
    ChangeLog
  • +25 -17
    libpurple/account.c
  • +60 -35
    libpurple/cmds.h
  • +2 -0
    libpurple/plugins/tcl/tcl.c
  • +153 -100
    libpurple/plugins/tcl/tcl_cmds.c
  • +1 -0
    libpurple/plugins/tcl/tcl_purple.h
  • +8 -6
    libpurple/protocols/jabber/auth.c
  • +3 -0
    libpurple/protocols/jabber/message.c
  • +1 -1
    libpurple/protocols/msn/slp.c
  • +6 -0
    libpurple/protocols/myspace/markup.c
  • +27 -27
    libpurple/protocols/myspace/markup.h
  • +3 -2
    libpurple/protocols/myspace/myspace.h
  • +95 -95
    libpurple/protocols/myspace/session.c
  • +57 -57
    libpurple/protocols/myspace/session.h
  • +437 -437
    libpurple/protocols/myspace/user.c
  • +55 -55
    libpurple/protocols/myspace/user.h
  • +208 -208
    libpurple/protocols/myspace/zap.c
  • +28 -28
    libpurple/protocols/myspace/zap.h
  • +34 -23
    libpurple/sslconn.h
  • +12 -2
    libpurple/status.c
  • +11 -3
    pidgin.spec.in
  • +2 -0
    pidgin/gtkaccount.c
  • +42 -12
    pidgin/gtkblist.c
  • +3 -5
    pidgin/gtkconv.c
  • +1 -1
    pidgin/gtkdocklet.c
  • +1 -1
    pidgin/gtkimhtmltoolbar.c
  • +2 -2
    pidgin/gtkmain.c
  • +2 -2
    pidgin/pidgin.h
  • +0 -0
    pidgin/pixmaps/dialogs/64/cool.png
  • +0 -0
    pidgin/pixmaps/dialogs/64/error.png
  • +0 -0
    pidgin/pixmaps/dialogs/64/info.png
  • +0 -0
    pidgin/pixmaps/dialogs/64/mail.png
  • +0 -0
    pidgin/pixmaps/dialogs/64/question.png
  • +539 -131
    pidgin/pixmaps/dialogs/64/scalable/cool.svg
  • +517 -182
    pidgin/pixmaps/dialogs/64/scalable/error.svg
  • +340 -296
    pidgin/pixmaps/dialogs/64/scalable/info.svg
  • +350 -127
    pidgin/pixmaps/dialogs/64/scalable/question.svg
  • +367 -119
    pidgin/pixmaps/dialogs/64/scalable/warning.svg
  • +0 -0
    pidgin/pixmaps/dialogs/64/warning.png
  • +1 -0
    pidgin/pixmaps/emblems/16/Makefile.am
  • +0 -0
    pidgin/pixmaps/emblems/16/birthday.png
  • +1 -1
    pidgin/pixmaps/emotes/default/24/default.theme.in
  • +0 -0
    pidgin/pixmaps/protocols/16/myspace.png
  • +0 -0
    pidgin/pixmaps/protocols/48/myspace.png
  • +0 -0
    pidgin/pixmaps/toolbar/16/emote-select.png
  • +0 -0
    pidgin/pixmaps/toolbar/16/insert.png
  • +0 -0
    pidgin/pixmaps/toolbar/16/send-file.png
  • +4 -1
    pidgin/plugins/gtkbuddynote.c
  • --- a/ChangeLog Wed Sep 19 03:28:52 2007 +0000
    +++ b/ChangeLog Wed Sep 19 03:30:40 2007 +0000
    @@ -3,18 +3,36 @@
    Version 2.2.1:
    http://developer.pidgin.im/query?status=closed&milestone=2.2.1
    + libpurple:
    + * A few build issues on Solaris were fixed.
    + * Cancelling the password prompt for an account will no longer leave
    + it in an ambiguous state. (It will be disabled.)
    + * Fixed an erroneous size display for MSN file transfers. (galt)
    + * Real usernames are now shown in the system log.
    +
    Pidgin:
    - * When aliasing someone to an alias that already exists in the
    - same group, offer to merge the buddies into the same contact
    - * It's possible to keep a conversation (chat/IM) open even after closing
    - the conversation window/tab.
    - * A music emblem is displayed in the buddy list for a buddy if we know she
    - is listening to some soothing music.
    - * 'Move to' menu in buddy list context menu for moving buddies to
    - other groups
    - * Move "Smiley" to the top-level of the toolbar
    - * Save Pidgin's display in the command line for session
    + * If you alias a buddy to an alias that is already present within
    + a particular group, we now offer to merge the buddies into the
    + same contact.
    + * A music emblem is now displayed in the buddy list for a buddy if we
    + know she is listening to some soothing music.
    + * Added a 'Move to' menu in buddy list context menu for moving buddies
    + to other groups as an alternative to dragging.
    + * Group headings are now marked via an underline instead of a
    + different color background.
    + * It is now possible to mark a chat on your buddy list as "Persistent"
    + so you do not leave the chat when the window or tab is closed.
    + * The auto-join option for chats is now listed in the "Add Chat"
    + dialog along with the new persistence option.
    + * Closing an IM no longer immediately closes your conversation. It
    + will now remain active for a short time so that if the conversation
    + resumes, the history will be retained. A preference has been added
    + to toggle this behavior.
    + * The "Smiley" menu has been moved to the top-level of the toolbar.
    + * Fixed keyboard tab reordering to move tabs one step instead of two.
    + * Pidgin's display is now saved with the command line for session
    restoration. (David Mohr)
    + * You should no longer lose proxy settings when Pidgin is restarted.
    Version 2.2.0 (09/13/2007):
    http://developer.pidgin.im/query?status=closed&milestone=2.2.0
    --- a/libpurple/account.c Wed Sep 19 03:28:52 2007 +0000
    +++ b/libpurple/account.c Wed Sep 19 03:30:40 2007 +0000
    @@ -917,7 +917,7 @@
    purple_account_set_register_callback(PurpleAccount *account, PurpleAccountRegistrationCb cb, void *user_data)
    {
    g_return_if_fail(account != NULL);
    -
    +
    account->registration_cb = cb;
    account->registration_cb_user_data = user_data;
    }
    @@ -937,10 +937,10 @@
    purple_account_unregister(PurpleAccount *account, PurpleAccountUnregistrationCb cb, void *user_data)
    {
    g_return_if_fail(account != NULL);
    -
    +
    purple_debug_info("account", "Unregistering account %s\n",
    purple_account_get_username(account));
    -
    +
    purple_connection_new_unregister(account, purple_account_get_password(account), cb, user_data);
    }
    @@ -960,13 +960,21 @@
    }
    if(remember)
    - purple_account_set_remember_password(account, TRUE);
    + purple_account_set_remember_password(account, TRUE);
    purple_account_set_password(account, entry);
    purple_connection_new(account, FALSE, entry);
    }
    +static void
    +request_password_cancel_cb(PurpleAccount *account, PurpleRequestFields *fields)
    +{
    + /* Disable the account as the user has canceled connecting */
    + purple_account_set_enabled(account, purple_core_get_ui(), FALSE);
    +}
    +
    +
    void
    purple_account_request_password(PurpleAccount *account, GCallback ok_cb,
    GCallback cancel_cb, void *user_data)
    @@ -1040,7 +1048,7 @@
    if ((password == NULL) &&
    !(prpl_info->options & OPT_PROTO_NO_PASSWORD) &&
    !(prpl_info->options & OPT_PROTO_PASSWORD_OPTIONAL))
    - purple_account_request_password(account, G_CALLBACK(request_password_ok_cb), NULL, account);
    + purple_account_request_password(account, G_CALLBACK(request_password_ok_cb), G_CALLBACK(request_password_cancel_cb), account);
    else
    purple_connection_new(account, FALSE, password);
    }
    @@ -1111,18 +1119,18 @@
    g_free(info);
    }
    -void
    +void
    purple_account_request_close_with_account(PurpleAccount *account)
    {
    GList *l, *l_next;
    -
    +
    g_return_if_fail(account != NULL);
    -
    +
    for (l = handles; l != NULL; l = l_next) {
    PurpleAccountRequestInfo *info = l->data;
    -
    +
    l_next = l->next;
    -
    +
    if (info->account == account) {
    handles = g_list_remove(handles, info);
    purple_account_request_close_info(info);
    @@ -1130,18 +1138,18 @@
    }
    }
    -void
    +void
    purple_account_request_close(void *ui_handle)
    {
    GList *l, *l_next;
    -
    +
    g_return_if_fail(ui_handle != NULL);
    -
    +
    for (l = handles; l != NULL; l = l_next) {
    PurpleAccountRequestInfo *info = l->data;
    -
    +
    l_next = l->next;
    -
    +
    if (info->ui_handle == ui_handle) {
    handles = g_list_remove(handles, info);
    purple_account_request_close_info(info);
    @@ -1172,7 +1180,7 @@
    handles = g_list_append(handles, info);
    return info->ui_handle;
    }
    -
    +
    return NULL;
    }
    @@ -2443,7 +2451,7 @@
    purple_value_new(PURPLE_TYPE_SUBTYPE,
    PURPLE_SUBTYPE_ACCOUNT),
    purple_value_new(PURPLE_TYPE_STRING));
    -
    +
    load_accounts();
    }
    --- a/libpurple/cmds.h Wed Sep 19 03:28:52 2007 +0000
    +++ b/libpurple/cmds.h Wed Sep 19 03:30:40 2007 +0000
    @@ -67,10 +67,20 @@
    PURPLE_CMD_P_VERY_HIGH = 6000,
    };
    +/** Flags used to set various properties of commands. Every command should
    + * have at least one of #PURPLE_CMD_FLAG_IM and #PURPLE_CMD_FLAG_CHAT set in
    + * order to be even slighly useful.
    + *
    + * @see purple_cmd_register
    + */
    enum _PurpleCmdFlag {
    + /** Command is usable in IMs. */
    PURPLE_CMD_FLAG_IM = 0x01,
    + /** Command is usable in multi-user chats. */
    PURPLE_CMD_FLAG_CHAT = 0x02,
    + /** Command is usable only for a particular prpl. */
    PURPLE_CMD_FLAG_PRPL_ONLY = 0x04,
    + /** Incorrect arguments to this command should be accepted anyway. */
    PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS = 0x08,
    };
    @@ -92,36 +102,49 @@
    * The command will only happen if commands are enabled,
    * which is a UI pref. UIs don't have to support commands at all.
    *
    - * @param cmd The command. This should be a UTF8 (or ASCII) string, with no spaces
    + * @param cmd The command. This should be a UTF-8 (or ASCII) string, with no spaces
    * or other white space.
    - * @param args This tells Purple how to parse the arguments to the command for you.
    - * If what the user types doesn't match, Purple will keep looking for another
    - * command, unless the flag @c PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS is passed in f.
    - * This string contains no whitespace, and uses a single character for each argument.
    - * The recognized characters are:
    - * 'w' Matches a single word.
    - * 'W' Matches a single word, with formatting.
    - * 's' Matches the rest of the arguments after this point, as a single string.
    - * 'S' Same as 's' but with formatting.
    + * @param args A string of characters describing to libpurple how to parse this
    + * command's arguments. If what the user types doesn't match this
    + * pattern, libpurple will keep looking for another command, unless
    + * the flag #PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS is passed in @a f.
    + * This string should contain no whitespace, and use a single
    + * character for each argument. The recognized characters are:
    + * <ul>
    + * <li><tt>'w'</tt>: Matches a single word.</li>
    + * <li><tt>'W'</tt>: Matches a single word, with formatting.</li>
    + * <li><tt>'s'</tt>: Matches the rest of the arguments after this
    + * point, as a single string.</li>
    + * <li><tt>'S'</tt>: Same as <tt>'s'</tt> but with formatting.</li>
    + * </ul>
    * If args is the empty string, then the command accepts no arguments.
    - * The args passed to callback func will be a @c NULL terminated array of null
    - * terminated strings, and will always match the number of arguments asked for,
    - * unless PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS is passed.
    - * @param p This is the priority. Higher priority commands will be run first, and usually the
    - * first command will stop any others from being called.
    - * @param f These are the flags. You need to at least pass one of PURPLE_CMD_FLAG_IM or
    - * PURPLE_CMD_FLAG_CHAT (can may pass both) in order for the command to ever actually
    - * be called.
    - * @param prpl_id This is the prpl's id string. This is only meaningful if the proper flag is set.
    + * The args passed to the callback @a func will be a @c NULL
    + * terminated array of @c NULL terminated strings, and will always
    + * match the number of arguments asked for, unless
    + * #PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS is passed.
    + * @param p This is the priority. Higher priority commands will be run first,
    + * and usually the first command will stop any others from being
    + * called.
    + * @param f Flags specifying various options about this command, combined with
    + * <tt>|</tt> (bitwise OR). You need to at least pass one of
    + * #PURPLE_CMD_FLAG_IM or #PURPLE_CMD_FLAG_CHAT (you may pass both) in
    + * order for the command to ever actually be called.
    + * @param prpl_id If the #PURPLE_CMD_FLAG_PRPL_ONLY flag is set, this is the id
    + * of the prpl to which the command applies (such as
    + * <tt>"prpl-msn"</tt>). If the flag is not set, this parameter
    + * is ignored; pass @c NULL (or a humourous string of your
    + * choice!).
    * @param func This is the function to call when someone enters this command.
    - * @param helpstr This is a whitespace sensitive, UTF-8, HTML string describing how to use the command.
    - * The preferred format of this string shall be the commands name, followed by a space
    - * and any arguments it accepts (if it takes any arguments, otherwise no space), followed
    - * by a colon, two spaces, and a description of the command in sentence form. No slash
    - * before the command name.
    - * @param data User defined data to pass to the PurpleCmdFunc
    - * @return A PurpleCmdId. This is only used for calling purple_cmd_unregister.
    - * Returns 0 on failure.
    + * @param helpstr a whitespace sensitive, UTF-8, HTML string describing how to
    + * use the command. The preferred format of this string is the
    + * command's name, followed by a space and any arguments it
    + * accepts (if it takes any arguments, otherwise no space),
    + * followed by a colon, two spaces, and a description of the
    + * command in sentence form. Do not include a slash before the
    + * command name.
    + * @param data User defined data to pass to the #PurpleCmdFunc @a f.
    + * @return A #PurpleCmdId, which is only used for calling
    + * #purple_cmd_unregister, or @a 0 on failure.
    */
    PurpleCmdId purple_cmd_register(const gchar *cmd, const gchar *args, PurpleCmdPriority p, PurpleCmdFlag f,
    const gchar *prpl_id, PurpleCmdFunc func, const gchar *helpstr, void *data);
    @@ -133,7 +156,7 @@
    * or something else that might go away. Normally this is called when the plugin
    * unloads itself.
    *
    - * @param id The PurpleCmdId to unregister.
    + * @param id The #PurpleCmdId to unregister, as returned by #purple_cmd_register.
    */
    void purple_cmd_unregister(PurpleCmdId id);
    @@ -153,7 +176,7 @@
    * include both the default formatting and any extra manual formatting.
    * @param errormsg If the command failed errormsg is filled in with the appropriate error
    * message. It must be freed by the caller with g_free().
    - * @return A PurpleCmdStatus indicated if the command succeeded or failed.
    + * @return A #PurpleCmdStatus indicated if the command succeeded or failed.
    */
    PurpleCmdStatus purple_cmd_do_command(PurpleConversation *conv, const gchar *cmdline,
    const gchar *markup, gchar **errormsg);
    @@ -161,13 +184,15 @@
    /**
    * List registered commands.
    *
    - * Returns a GList (which must be freed by the caller) of all commands
    - * that are valid in the context of conv, or all commands, if conv is
    - * @c NULL. Don't keep this list around past the main loop, or anything else
    - * that might unregister a command, as the char*'s used get freed then.
    + * Returns a <tt>GList</tt> (which must be freed by the caller) of all commands
    + * that are valid in the context of @a conv, or all commands, if @a conv is @c
    + * NULL. Don't keep this list around past the main loop, or anything else that
    + * might unregister a command, as the <tt>const char *</tt>'s used get freed
    + * then.
    *
    * @param conv The conversation, or @c NULL.
    - * @return A GList of const char*, which must be freed with g_list_free().
    + * @return A @c GList of <tt>const char *</tt>, which must be freed with
    + * <tt>g_list_free()</tt>.
    */
    GList *purple_cmd_list(PurpleConversation *conv);
    @@ -180,7 +205,7 @@
    * @param conv The conversation, or @c NULL for no context.
    * @param cmd The command. No wildcards accepted, but returns help for all
    * commands if @c NULL.
    - * @return A GList of const char*s, which is the help string
    + * @return A <tt>GList</tt> of <tt>const char *</tt>s, which is the help string
    * for that command.
    */
    GList *purple_cmd_help(PurpleConversation *conv, const gchar *cmd);
    --- a/libpurple/plugins/tcl/tcl.c Wed Sep 19 03:28:52 2007 +0000
    +++ b/libpurple/plugins/tcl/tcl.c Wed Sep 19 03:30:40 2007 +0000
    @@ -60,6 +60,7 @@
    PurpleStringref *PurpleTclRefStatusAttr;
    PurpleStringref *PurpleTclRefStatusType;
    PurpleStringref *PurpleTclRefXfer;
    +PurpleStringref *PurpleTclRefHandle;
    static GHashTable *tcl_plugins = NULL;
    @@ -363,6 +364,7 @@
    PurpleTclRefStatusAttr = purple_stringref_new("StatusAttr");
    PurpleTclRefStatusType = purple_stringref_new("StatusType");
    PurpleTclRefXfer = purple_stringref_new("Xfer");
    + PurpleTclRefHandle = purple_stringref_new("Handle");
    tcl_plugins = g_hash_table_new(g_direct_hash, g_direct_equal);
    --- a/libpurple/plugins/tcl/tcl_cmds.c Wed Sep 19 03:28:52 2007 +0000
    +++ b/libpurple/plugins/tcl/tcl_cmds.c Wed Sep 19 03:30:40 2007 +0000
    @@ -55,7 +55,7 @@
    return account;
    }
    if (interp != NULL)
    - Tcl_SetStringObj(Tcl_GetObjResult(interp), "invalid account", -1);
    + Tcl_SetObjResult(interp, Tcl_NewStringObj("invalid account", -1));
    return NULL;
    }
    @@ -74,7 +74,7 @@
    return convo;
    }
    if (interp != NULL)
    - Tcl_SetStringObj(Tcl_GetObjResult(interp), "invalid conversation", -1);
    + Tcl_SetObjResult(interp, Tcl_NewStringObj("invalid conversation", -1));
    return NULL;
    }
    @@ -97,7 +97,7 @@
    int tcl_cmd_account(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
    {
    - Tcl_Obj *result = Tcl_GetObjResult(interp), *list, *elem;
    + Tcl_Obj *result, *list, *elem;
    const char *cmds[] = { "alias", "connect", "connection", "disconnect",
    "enabled", "find", "handle", "isconnected",
    "list", "presence", "protocol", "status",
    @@ -139,7 +139,7 @@
    if ((account = tcl_validate_account(objv[2], interp)) == NULL)
    return TCL_ERROR;
    alias = purple_account_get_alias(account);
    - Tcl_SetStringObj(result, alias ? (char *)alias : "", -1);
    + Tcl_SetObjResult(interp, Tcl_NewStringObj(alias ? (char *)alias : "", -1));
    break;
    case CMD_ACCOUNT_CONNECT:
    if (objc != 3) {
    @@ -164,7 +164,7 @@
    return TCL_ERROR;
    Tcl_SetObjResult(interp,
    purple_tcl_ref_new(PurpleTclRefConnection,
    - purple_account_get_connection(account)));
    + purple_account_get_connection(account)));
    break;
    case CMD_ACCOUNT_DISCONNECT:
    if (objc != 3) {
    @@ -183,9 +183,10 @@
    if ((account = tcl_validate_account(objv[2], interp)) == NULL)
    return TCL_ERROR;
    if (objc == 3) {
    - Tcl_SetBooleanObj(result,
    - purple_account_get_enabled(account,
    - purple_core_get_ui()));
    + Tcl_SetObjResult(interp,
    + Tcl_NewBooleanObj(
    + purple_account_get_enabled(account,
    + purple_core_get_ui())));
    } else {
    if ((error = Tcl_GetBooleanFromObj(interp, objv[3], &b)) != TCL_OK)
    return TCL_ERROR;
    @@ -207,7 +208,9 @@
    Tcl_WrongNumArgs(interp, 2, objv, "");
    return TCL_ERROR;
    }
    - Tcl_SetIntObj(result, (int)purple_accounts_get_handle());
    + Tcl_SetObjResult(interp,
    + purple_tcl_ref_new(PurpleTclRefHandle,
    + purple_accounts_get_handle()));
    break;
    case CMD_ACCOUNT_ISCONNECTED:
    if (objc != 3) {
    @@ -216,7 +219,9 @@
    }
    if ((account = tcl_validate_account(objv[2], interp)) == NULL)
    return TCL_ERROR;
    - Tcl_SetBooleanObj(result, purple_account_is_connected(account));
    + Tcl_SetObjResult(interp,
    + Tcl_NewBooleanObj(
    + purple_account_is_connected(account)));
    break;
    case CMD_ACCOUNT_LIST:
    listopt = CMD_ACCOUNTLIST_ALL;
    @@ -255,7 +260,7 @@
    }
    if ((account = tcl_validate_account(objv[2], interp)) == NULL)
    return TCL_ERROR;
    - Tcl_SetStringObj(result, (char *)purple_account_get_protocol_id(account), -1);
    + Tcl_SetObjResult(interp, Tcl_NewStringObj((char *)purple_account_get_protocol_id(account), -1));
    break;
    case CMD_ACCOUNT_STATUS:
    if (objc < 3) {
    @@ -271,19 +276,19 @@
    } else {
    GList *l = NULL;
    if (objc % 2) {
    - Tcl_SetStringObj(result, "name without value setting status", -1);
    + Tcl_SetObjResult(interp, Tcl_NewStringObj("name without value setting status", -1));
    return TCL_ERROR;
    }
    status = purple_account_get_status(account, Tcl_GetString(objv[3]));
    if (status == NULL) {
    - Tcl_SetStringObj(result, "invalid status for account", -1);
    + Tcl_SetObjResult(interp, Tcl_NewStringObj("invalid status for account", -1));
    return TCL_ERROR;
    }
    for (i = 4; i < objc; i += 2) {
    attr_id = Tcl_GetString(objv[i]);
    value = purple_status_get_attr_value(status, attr_id);
    if (value == NULL) {
    - Tcl_SetStringObj(result, "invalid attribute for account", -1);
    + Tcl_SetObjResult(interp, Tcl_NewStringObj("invalid attribute for account", -1));
    return TCL_ERROR;
    }
    switch (purple_value_get_type(value)) {
    @@ -306,7 +311,7 @@
    l = g_list_append(l, Tcl_GetString(objv[i + 1]));
    break;
    default:
    - Tcl_SetStringObj(result, "unknown PurpleValue type", -1);
    + Tcl_SetObjResult(interp, Tcl_NewStringObj("unknown PurpleValue type", -1));
    return TCL_ERROR;
    }
    }
    @@ -327,10 +332,10 @@
    } else {
    PurpleStatusPrimitive primitive;
    if (strcmp(Tcl_GetString(objv[3]), "-primitive")) {
    - Tcl_SetStringObj(result, "bad option \"", -1);
    + result = Tcl_NewStringObj("bad option \"", -1);
    Tcl_AppendObjToObj(result, objv[3]);
    - Tcl_AppendToObj(result,
    - "\": should be -primitive", -1);
    + Tcl_AppendToObj(result, "\": should be -primitive", -1);
    + Tcl_SetObjResult(interp,result);
    return TCL_ERROR;
    }
    primitive = purple_primitive_get_type_from_id(Tcl_GetString(objv[4]));
    @@ -338,7 +343,7 @@
    primitive);
    }
    if (status_type == NULL) {
    - Tcl_SetStringObj(result, "status type not found", -1);
    + Tcl_SetObjResult(interp, Tcl_NewStringObj("status type not found", -1));
    return TCL_ERROR;
    }
    Tcl_SetObjResult(interp,
    @@ -368,7 +373,8 @@
    }
    if ((account = tcl_validate_account(objv[2], interp)) == NULL)
    return TCL_ERROR;
    - Tcl_SetStringObj(result, (char *)purple_account_get_username(account), -1);
    + Tcl_SetObjResult(interp,
    + Tcl_NewStringObj((char *)purple_account_get_username(account), -1));
    break;
    }
    @@ -383,7 +389,8 @@
    char *type;
    if (count < 3) {
    - Tcl_SetStringObj(Tcl_GetObjResult(interp), "list too short", -1);
    + Tcl_SetObjResult(interp,
    + Tcl_NewStringObj("list too short", -1));
    return NULL;
    }
    @@ -420,8 +427,6 @@
    if ((error = Tcl_GetIndexFromObj(interp, objv[1], cmds, "subcommand", 0, (int *)&cmd)) != TCL_OK)
    return error;
    - result = Tcl_GetObjResult(interp);
    -
    switch (cmd) {
    case CMD_BUDDY_ALIAS:
    if (objc != 3) {
    @@ -433,9 +438,11 @@
    if ((node = tcl_list_to_buddy(interp, count, elems)) == NULL)
    return TCL_ERROR;
    if (node->type == PURPLE_BLIST_CHAT_NODE)
    - Tcl_SetStringObj(result, ((PurpleChat *)node)->alias, -1);
    + Tcl_SetObjResult(interp,
    + Tcl_NewStringObj(((PurpleChat *)node)->alias, -1));
    else if (node->type == PURPLE_BLIST_BUDDY_NODE)
    - Tcl_SetStringObj(result, (char *)purple_buddy_get_alias((PurpleBuddy *)node), -1);
    + Tcl_SetObjResult(interp,
    + Tcl_NewStringObj((char *)purple_buddy_get_alias((PurpleBuddy *)node), -1));
    return TCL_OK;
    break;
    case CMD_BUDDY_HANDLE:
    @@ -443,7 +450,9 @@
    Tcl_WrongNumArgs(interp, 2, objv, "");
    return TCL_ERROR;
    }
    - Tcl_SetIntObj(result, (int)purple_blist_get_handle());
    + Tcl_SetObjResult(interp,
    + purple_tcl_ref_new(PurpleTclRefHandle,
    + purple_blist_get_handle()));
    break;
    case CMD_BUDDY_INFO:
    if (objc != 3 && objc != 4) {
    @@ -454,11 +463,13 @@
    if ((error = Tcl_ListObjGetElements(interp, objv[2], &count, &elems)) != TCL_OK)
    return error;
    if (count < 3) {
    - Tcl_SetStringObj(result, "buddy too short", -1);
    + Tcl_SetObjResult(interp,
    + Tcl_NewStringObj("buddy too short", -1));
    return TCL_ERROR;
    }
    if (strcmp("buddy", Tcl_GetString(elems[0]))) {
    - Tcl_SetStringObj(result, "invalid buddy", -1);
    + Tcl_SetObjResult(interp,
    + Tcl_NewStringObj("invalid buddy", -1));
    return TCL_ERROR;
    }
    if ((account = tcl_validate_account(elems[2], interp)) == NULL)
    @@ -475,8 +486,9 @@
    if (!strcmp("-all", Tcl_GetString(objv[2]))) {
    all = 1;
    } else {
    - Tcl_SetStringObj(result, "", -1);
    + result = Tcl_NewStringObj("",-1);
    Tcl_AppendStringsToObj(result, "unknown option: ", Tcl_GetString(objv[2]), NULL);
    + Tcl_SetObjResult(interp,result);
    return TCL_ERROR;
    }
    }
    @@ -547,7 +559,7 @@
    const char *cmds[] = { "do", "help", "list", "register", "unregister", NULL };
    enum { CMD_CMD_DO, CMD_CMD_HELP, CMD_CMD_LIST, CMD_CMD_REGISTER, CMD_CMD_UNREGISTER } cmd;
    struct tcl_cmd_handler *handler;
    - Tcl_Obj *list, *elem, *result = Tcl_GetObjResult(interp);
    + Tcl_Obj *list, *elem;
    PurpleConversation *convo;
    PurpleCmdId id;
    PurpleCmdStatus status;
    @@ -575,7 +587,8 @@
    status = purple_cmd_do_command(convo, Tcl_GetString(objv[3]),
    escaped, &errstr);
    g_free(escaped);
    - Tcl_SetStringObj(result, errstr ? (char *)errstr : "", -1);
    + Tcl_SetObjResult(interp,
    + Tcl_NewStringObj(errstr ? (char *)errstr : "", -1));
    g_free(errstr);
    if (status != PURPLE_CMD_STATUS_OK) {
    return TCL_ERROR;
    @@ -640,10 +653,10 @@
    handler->interp = interp;
    if ((id = tcl_cmd_register(handler)) == 0) {
    tcl_cmd_handler_free(handler);
    - Tcl_SetIntObj(result, 0);
    + Tcl_SetObjResult(interp, Tcl_NewIntObj(0));
    } else {
    handler->id = id;
    - Tcl_SetIntObj(result, id);
    + Tcl_SetObjResult(interp, Tcl_NewIntObj(id));
    }
    break;
    case CMD_CMD_UNREGISTER:
    @@ -663,7 +676,7 @@
    int tcl_cmd_connection(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
    {
    - Tcl_Obj *result = Tcl_GetObjResult(interp), *list, *elem;
    + Tcl_Obj *list, *elem;
    const char *cmds[] = { "account", "displayname", "handle", "list", NULL };
    enum { CMD_CONN_ACCOUNT, CMD_CONN_DISPLAYNAME, CMD_CONN_HANDLE, CMD_CONN_LIST } cmd;
    int error;
    @@ -697,14 +710,16 @@
    }
    if ((gc = tcl_validate_gc(objv[2], interp)) == NULL)
    return TCL_ERROR;
    - Tcl_SetStringObj(result, (char *)purple_connection_get_display_name(gc), -1);
    + Tcl_SetObjResult(interp,
    + Tcl_NewStringObj(purple_connection_get_display_name(gc), -1));
    break;
    case CMD_CONN_HANDLE:
    if (objc != 2) {
    Tcl_WrongNumArgs(interp, 2, objv, "");
    return TCL_ERROR;
    }
    - Tcl_SetIntObj(result, (int)purple_connections_get_handle());
    + Tcl_SetObjResult(interp, purple_tcl_ref_new(PurpleTclRefHandle,
    + purple_connections_get_handle()));
    break;
    case CMD_CONN_LIST:
    if (objc != 2) {
    @@ -725,7 +740,7 @@
    int tcl_cmd_conversation(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
    {
    - Tcl_Obj *list, *elem, *result = Tcl_GetObjResult(interp);
    + Tcl_Obj *list, *elem;
    const char *cmds[] = { "find", "handle", "list", "new", "write", "name", "title", "send", NULL };
    enum { CMD_CONV_FIND, CMD_CONV_HANDLE, CMD_CONV_LIST, CMD_CONV_NEW, CMD_CONV_WRITE , CMD_CONV_NAME, CMD_CONV_TITLE, CMD_CONV_SEND } cmd;
    const char *styles[] = { "send", "recv", "system", NULL };
    @@ -766,7 +781,9 @@
    Tcl_WrongNumArgs(interp, 2, objv, "");
    return TCL_ERROR;
    }
    - Tcl_SetIntObj(result, (int)purple_conversations_get_handle());
    + Tcl_SetObjResult(interp,
    + purple_tcl_ref_new(PurpleTclRefHandle,
    + purple_conversations_get_handle()));
    break;
    case CMD_CONV_LIST:
    list = Tcl_NewListObj(0, NULL);
    @@ -847,7 +864,8 @@
    if ((convo = tcl_validate_conversation(objv[2], interp)) == NULL)
    return TCL_ERROR;
    - Tcl_SetStringObj(result, (char *)purple_conversation_get_name(convo), -1);
    + Tcl_SetObjResult(interp,
    + Tcl_NewStringObj((char *)purple_conversation_get_name(convo), -1));
    break;
    case CMD_CONV_TITLE:
    if (objc != 3) {
    @@ -857,7 +875,8 @@
    if ((convo = tcl_validate_conversation(objv[2], interp)) == NULL)
    return TCL_ERROR;
    - Tcl_SetStringObj(result, (char *)purple_conversation_get_title(convo), -1);
    + Tcl_SetObjResult(interp,
    + Tcl_NewStringObj((char *)purple_conversation_get_title(convo), -1));
    break;
    case CMD_CONV_SEND:
    if (objc != 4) {
    @@ -879,7 +898,6 @@
    int tcl_cmd_core(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
    {
    - Tcl_Obj *result = Tcl_GetObjResult(interp);
    const char *cmds[] = { "handle", "quit", NULL };
    enum { CMD_CORE_HANDLE, CMD_CORE_QUIT } cmd;
    int error;
    @@ -898,7 +916,9 @@
    Tcl_WrongNumArgs(interp, 2, objv, "");
    return TCL_ERROR;
    }
    - Tcl_SetIntObj(result, (int)purple_get_core());
    + Tcl_SetObjResult(interp,
    + purple_tcl_ref_new(PurpleTclRefHandle,
    + purple_get_core()));
    break;
    case CMD_CORE_QUIT:
    if (objc != 2) {
    @@ -970,7 +990,6 @@
    int tcl_cmd_plugins(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
    {
    - Tcl_Obj *result = Tcl_GetObjResult(interp);
    const char *cmds[] = { "handle", NULL };
    enum { CMD_PLUGINS_HANDLE } cmd;
    int error;
    @@ -989,7 +1008,9 @@
    Tcl_WrongNumArgs(interp, 2, objv, "");
    return TCL_ERROR;
    }
    - Tcl_SetIntObj(result, (int)purple_plugins_get_handle());
    + Tcl_SetObjResult(interp,
    + purple_tcl_ref_new(PurpleTclRefHandle,
    + purple_plugins_get_handle()));
    break;
    }
    @@ -998,7 +1019,7 @@
    int tcl_cmd_prefs(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
    {
    - Tcl_Obj *result, *list, *elem, **elems;
    + Tcl_Obj *list, *elem, **elems;
    const char *cmds[] = { "get", "set", "type", NULL };
    enum { CMD_PREFS_GET, CMD_PREFS_SET, CMD_PREFS_TYPE } cmd;
    /* char *types[] = { "none", "boolean", "int", "string", "stringlist", NULL }; */
    @@ -1015,7 +1036,6 @@
    if ((error = Tcl_GetIndexFromObj(interp, objv[1], cmds, "subcommand", 0, (int *)&cmd)) != TCL_OK)
    return error;
    - result = Tcl_GetObjResult(interp);
    switch (cmd) {
    case CMD_PREFS_GET:
    if (objc != 3) {
    @@ -1025,17 +1045,21 @@
    preftype = purple_prefs_get_type(Tcl_GetString(objv[2]));
    switch (preftype) {
    case PURPLE_PREF_NONE:
    - Tcl_SetStringObj(result, "pref type none", -1);
    + Tcl_SetObjResult(interp,
    + Tcl_NewStringObj("pref type none", -1));
    return TCL_ERROR;
    break;
    case PURPLE_PREF_BOOLEAN:
    - Tcl_SetBooleanObj(result, purple_prefs_get_bool(Tcl_GetString(objv[2])));
    + Tcl_SetObjResult(interp,
    + Tcl_NewBooleanObj(
    + purple_prefs_get_bool(Tcl_GetString(objv[2]))));
    break;
    case PURPLE_PREF_INT:
    - Tcl_SetIntObj(result, purple_prefs_get_int(Tcl_GetString(objv[2])));
    + Tcl_SetObjResult(interp, Tcl_NewIntObj(purple_prefs_get_int(Tcl_GetString(objv[2]))));
    break;
    case PURPLE_PREF_STRING:
    - Tcl_SetStringObj(result, (char *)purple_prefs_get_string(Tcl_GetString(objv[2])), -1);
    + Tcl_SetObjResult(interp,
    + Tcl_NewStringObj((char *)purple_prefs_get_string(Tcl_GetString(objv[2])), -1));
    break;
    case PURPLE_PREF_STRING_LIST:
    cur = purple_prefs_get_string_list(Tcl_GetString(objv[2]));
    @@ -1049,7 +1073,8 @@
    break;
    default:
    purple_debug(PURPLE_DEBUG_ERROR, "tcl", "tcl does not know about pref type %d\n", preftype);
    - Tcl_SetStringObj(result, "unknown pref type", -1);
    + Tcl_SetObjResult(interp,
    + Tcl_NewStringObj("unknown pref type", -1));
    return TCL_ERROR;
    }
    break;
    @@ -1061,7 +1086,8 @@
    preftype = purple_prefs_get_type(Tcl_GetString(objv[2]));
    switch (preftype) {
    case PURPLE_PREF_NONE:
    - Tcl_SetStringObj(result, "bad path or pref type none", -1);
    + Tcl_SetObjResult(interp,
    + Tcl_NewStringObj("bad path or pref type none", -1));
    return TCL_ERROR;
    break;
    case PURPLE_PREF_BOOLEAN:
    @@ -1100,23 +1126,23 @@
    preftype = purple_prefs_get_type(Tcl_GetString(objv[2]));
    switch (preftype) {
    case PURPLE_PREF_NONE:
    - Tcl_SetStringObj(result, "none", -1);
    + Tcl_SetObjResult(interp, Tcl_NewStringObj("none", -1));
    break;
    case PURPLE_PREF_BOOLEAN:
    - Tcl_SetStringObj(result, "boolean", -1);
    + Tcl_SetObjResult(interp, Tcl_NewStringObj("boolean", -1));
    break;
    case PURPLE_PREF_INT:
    - Tcl_SetStringObj(result, "int", -1);
    + Tcl_SetObjResult(interp, Tcl_NewStringObj("int", -1));
    break;
    case PURPLE_PREF_STRING:
    - Tcl_SetStringObj(result, "string", -1);
    + Tcl_SetObjResult(interp, Tcl_NewStringObj("string", -1));
    break;
    case PURPLE_PREF_STRING_LIST:
    - Tcl_SetStringObj(result, "stringlist", -1);
    + Tcl_SetObjResult(interp, Tcl_NewStringObj("stringlist", -1));
    break;
    default:
    purple_debug(PURPLE_DEBUG_ERROR, "tcl", "tcl does not know about pref type %d\n", preftype);
    - Tcl_SetStringObj(result, "unknown", -1);
    + Tcl_SetObjResult(interp, Tcl_NewStringObj("unknown", -1));
    }
    break;
    }
    @@ -1134,7 +1160,7 @@
    CMD_PRESENCE_CONTEXT, CMD_PRESENCE_CONVERSATION,
    CMD_PRESENCE_IDLE, CMD_PRESENCE_LOGIN, CMD_PRESENCE_ONLINE,
    CMD_PRESENCE_STATUS, CMD_PRESENCE_STATUSES } cmd;
    - Tcl_Obj *result = Tcl_GetObjResult(interp);
    + Tcl_Obj *result;
    Tcl_Obj *list, *elem;
    PurplePresence *presence;
    GList *cur;
    @@ -1171,25 +1197,30 @@
    purple_tcl_ref_new(PurpleTclRefStatus,
    purple_presence_get_active_status(presence)));
    } else if (objc == 4) {
    - Tcl_SetBooleanObj(result,
    - purple_presence_is_status_active(presence,
    - Tcl_GetString(objv[3])));
    + Tcl_SetObjResult(interp,
    + Tcl_NewBooleanObj(
    + purple_presence_is_status_active(presence,
    + Tcl_GetString(objv[3]))));
    } else {
    PurpleStatusPrimitive primitive;
    if (strcmp(Tcl_GetString(objv[3]), "-primitive")) {
    - Tcl_SetStringObj(result, "bad option \"", -1);
    + result = Tcl_NewStringObj("bad option \"", -1);
    Tcl_AppendObjToObj(result, objv[3]);
    Tcl_AppendToObj(result,
    "\": should be -primitive", -1);
    + Tcl_SetObjResult(interp,result);
    return TCL_ERROR;
    }
    primitive = purple_primitive_get_type_from_id(Tcl_GetString(objv[4]));
    if (primitive == PURPLE_STATUS_UNSET) {
    - Tcl_SetStringObj(result, "invalid primitive ", -1);
    + result = Tcl_NewStringObj("invalid primitive ", -1);
    Tcl_AppendObjToObj(result, objv[4]);
    + Tcl_SetObjResult(interp,result);
    return TCL_ERROR;
    }
    - Tcl_SetBooleanObj(result, purple_presence_is_status_primitive_active(presence, primitive));
    + Tcl_SetObjResult(interp,
    + Tcl_NewBooleanObj(
    + purple_presence_is_status_primitive_active(presence, primitive)));
    break;
    }
    break;
    @@ -1200,7 +1231,8 @@
    }
    if ((presence = purple_tcl_ref_get(interp, objv[2], PurpleTclRefPresence)) == NULL)
    return TCL_ERROR;
    - Tcl_SetBooleanObj(result, purple_presence_is_available(presence));
    + Tcl_SetObjResult(interp,
    + Tcl_NewBooleanObj(purple_presence_is_available(presence)));
    break;
    case CMD_PRESENCE_CHAT_USER:
    if (objc != 3) {
    @@ -1209,7 +1241,8 @@
    }
    if ((presence = purple_tcl_ref_get(interp, objv[2], PurpleTclRefPresence)) == NULL)
    return TCL_ERROR;
    - Tcl_SetStringObj(result, purple_presence_get_chat_user(presence), -1);
    + Tcl_SetObjResult(interp,
    + Tcl_NewStringObj(purple_presence_get_chat_user(presence), -1));
    break;
    case CMD_PRESENCE_CONTEXT:
    if (objc != 3) {
    @@ -1220,16 +1253,16 @@
    return TCL_ERROR;
    switch (purple_presence_get_context(presence)) {
    case PURPLE_PRESENCE_CONTEXT_UNSET:
    - Tcl_SetStringObj(result, "unset", -1);
    + Tcl_SetObjResult(interp, Tcl_NewStringObj("unset", -1));
    break;
    case PURPLE_PRESENCE_CONTEXT_ACCOUNT:
    - Tcl_SetStringObj(result, "account", -1);
    + Tcl_SetObjResult(interp, Tcl_NewStringObj("account", -1));
    break;
    case PURPLE_PRESENCE_CONTEXT_CONV:
    - Tcl_SetStringObj(result, "conversation", -1);
    + Tcl_SetObjResult(interp, Tcl_NewStringObj("conversation", -1));
    break;
    case PURPLE_PRESENCE_CONTEXT_BUDDY:
    - Tcl_SetStringObj(result, "buddy", -1);
    + Tcl_SetObjResult(interp, Tcl_NewStringObj("buddy", -1));
    break;
    }
    break;
    @@ -1253,7 +1286,7 @@
    if (objc == 3) {
    if (purple_presence_is_idle(presence)) {
    idle_time = purple_presence_get_idle_time (presence);
    - Tcl_SetIntObj(result, idle_time);
    + Tcl_SetObjResult(interp, Tcl_NewIntObj(idle_time));
    } else {
    result = Tcl_NewListObj(0, NULL);
    Tcl_SetObjResult(interp, result);
    @@ -1280,7 +1313,7 @@
    if ((presence = purple_tcl_ref_get(interp, objv[2], PurpleTclRefPresence)) == NULL)
    return TCL_ERROR;
    if (objc == 3) {
    - Tcl_SetIntObj(result, purple_presence_get_login_time(presence));
    + Tcl_SetObjResult(interp, Tcl_NewIntObj(purple_presence_get_login_time(presence)));
    } else {
    if ((error == Tcl_GetIntFromObj(interp,
    objv[3],
    @@ -1296,7 +1329,9 @@
    }
    if ((presence = purple_tcl_ref_get(interp, objv[2], PurpleTclRefPresence)) == NULL)
    return TCL_ERROR;
    - Tcl_SetBooleanObj(result, purple_presence_is_online(presence));
    + Tcl_SetObjResult(interp,
    + Tcl_NewBooleanObj(
    + purple_presence_is_online(presence)));
    break;
    case CMD_PRESENCE_STATUS:
    if (objc != 4) {
    @@ -1332,7 +1367,7 @@
    int tcl_cmd_savedstatus(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
    {
    - Tcl_Obj *result = Tcl_GetObjResult(interp);
    + Tcl_Obj *result;
    const char *cmds[] = { "current", "handle", NULL };
    enum { CMD_SAVEDSTATUS_CURRENT, CMD_SAVEDSTATUS_HANDLE } cmd;
    int error;
    @@ -1354,16 +1389,20 @@
    }
    if ((saved_status = purple_savedstatus_get_current()) == NULL)
    return TCL_ERROR;
    + result = Tcl_NewListObj(0, NULL);
    Tcl_ListObjAppendElement(interp, result, Tcl_NewStringObj(purple_savedstatus_get_title(saved_status), -1));
    Tcl_ListObjAppendElement(interp, result, Tcl_NewIntObj(purple_savedstatus_get_type(saved_status)));
    Tcl_ListObjAppendElement(interp, result, Tcl_NewStringObj(purple_savedstatus_get_message(saved_status), -1));
    + Tcl_SetObjResult(interp,result);
    break;
    case CMD_SAVEDSTATUS_HANDLE:
    if (objc != 2) {
    Tcl_WrongNumArgs(interp, 2, objv, "");
    return TCL_ERROR;
    }
    - Tcl_SetIntObj(result, (int)purple_savedstatuses_get_handle());
    + Tcl_SetObjResult(interp,
    + purple_tcl_ref_new(PurpleTclRefHandle,
    + purple_savedstatuses_get_handle()));
    break;
    }
    @@ -1396,7 +1435,6 @@
    const char *cmds[] = { "connect", "disconnect", NULL };
    enum { CMD_SIGNAL_CONNECT, CMD_SIGNAL_DISCONNECT } cmd;
    struct tcl_signal_handler *handler;
    - Tcl_Obj *result = Tcl_GetObjResult(interp);
    void *instance;
    int error;
    @@ -1415,7 +1453,7 @@
    return TCL_ERROR;
    }
    handler = g_new0(struct tcl_signal_handler, 1);
    - if ((error = Tcl_GetIntFromObj(interp, objv[2], (int *)&handler->instance)) != TCL_OK) {
    + if ((handler->instance = purple_tcl_ref_get(interp, objv[2],PurpleTclRefHandle)) == NULL) {
    g_free(handler);
    return error;
    }
    @@ -1426,9 +1464,9 @@
    handler->interp = interp;
    if (!tcl_signal_connect(handler)) {
    tcl_signal_handler_free(handler);
    - Tcl_SetIntObj(result, 1);
    + Tcl_SetObjResult(interp, Tcl_NewIntObj(1));
    } else {
    - Tcl_SetIntObj(result, 0);
    + Tcl_SetObjResult(interp, Tcl_NewIntObj(0));
    }
    break;
    case CMD_SIGNAL_DISCONNECT:
    @@ -1436,7 +1474,7 @@
    Tcl_WrongNumArgs(interp, 2, objv, "instance signal");
    return TCL_ERROR;
    }
    - if ((error = Tcl_GetIntFromObj(interp, objv[2], (int *)&instance)) != TCL_OK)
    + if ((instance = purple_tcl_ref_get(interp, objv[2],PurpleTclRefHandle)) == NULL)
    return error;
    tcl_signal_disconnect(instance, Tcl_GetString(objv[3]), interp);
    break;
    @@ -1449,7 +1487,6 @@
    {
    const char *cmds[] = { "attr", "type", NULL };
    enum { CMD_STATUS_ATTR, CMD_STATUS_TYPE } cmd;
    - Tcl_Obj *result = Tcl_GetObjResult(interp);
    PurpleStatus *status;
    PurpleStatusType *status_type;
    PurpleValue *value;
    @@ -1475,13 +1512,15 @@
    attr = Tcl_GetString(objv[3]);
    value = purple_status_get_attr_value(status, attr);
    if (value == NULL) {
    - Tcl_SetStringObj(result, "no such attribute", -1);
    + Tcl_SetObjResult(interp,
    + Tcl_NewStringObj("no such attribute", -1));
    return TCL_ERROR;
    }
    switch (purple_value_get_type(value)) {
    case PURPLE_TYPE_BOOLEAN:
    if (objc == 4) {
    - Tcl_SetBooleanObj(result, purple_value_get_boolean(value));
    + Tcl_SetObjResult(interp,
    + Tcl_NewBooleanObj(purple_value_get_boolean(value)));
    } else {
    if ((error = Tcl_GetBooleanFromObj(interp, objv[4], &v)) != TCL_OK)
    return error;
    @@ -1490,7 +1529,7 @@
    break;
    case PURPLE_TYPE_INT:
    if (objc == 4) {
    - Tcl_SetIntObj(result, purple_value_get_int(value));
    + Tcl_SetObjResult(interp, Tcl_NewIntObj(purple_value_get_int(value)));
    } else {
    if ((error = Tcl_GetIntFromObj(interp, objv[4], &v)) != TCL_OK)
    return error;
    @@ -1499,12 +1538,14 @@
    break;
    case PURPLE_TYPE_STRING:
    if (objc == 4)
    - Tcl_SetStringObj(result, purple_value_get_string(value), -1);
    + Tcl_SetObjResult(interp,
    + Tcl_NewStringObj(purple_value_get_string(value), -1));
    else
    purple_status_set_attr_string(status, attr, Tcl_GetString(objv[4]));
    break;
    default:
    - Tcl_SetStringObj(result, "attribute has unknown type", -1);
    + Tcl_SetObjResult(interp,
    + Tcl_NewStringObj("attribute has unknown type", -1));
    return TCL_ERROR;
    }
    break;
    @@ -1528,7 +1569,6 @@
    {
    const char *cmds[] = { "id", "name", NULL };
    enum { CMD_STATUS_ATTR_ID, CMD_STATUS_ATTR_NAME } cmd;
    - Tcl_Obj *result = Tcl_GetObjResult(interp);
    PurpleStatusAttr *attr;
    int error;
    @@ -1548,7 +1588,8 @@
    }
    if ((attr = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusAttr)) == NULL)
    return TCL_ERROR;
    - Tcl_SetStringObj(result, purple_status_attr_get_id(attr), -1);
    + Tcl_SetObjResult(interp,
    + Tcl_NewStringObj(purple_status_attr_get_id(attr), -1));
    break;
    case CMD_STATUS_ATTR_NAME:
    if (objc != 3) {
    @@ -1557,7 +1598,8 @@
    }
    if ((attr = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusAttr)) == NULL)
    return TCL_ERROR;
    - Tcl_SetStringObj(result, purple_status_attr_get_name(attr), -1);
    + Tcl_SetObjResult(interp,
    + Tcl_NewStringObj(purple_status_attr_get_name(attr), -1));
    break;
    }
    @@ -1576,7 +1618,6 @@
    CMD_STATUS_TYPE_NAME, CMD_STATUS_TYPE_PRIMARY_ATTR,
    CMD_STATUS_TYPE_PRIMITIVE, CMD_STATUS_TYPE_SAVEABLE,
    CMD_STATUS_TYPE_USER_SETTABLE } cmd;
    - Tcl_Obj *result = Tcl_GetObjResult(interp);
    PurpleStatusType *status_type;
    Tcl_Obj *list, *elem;
    GList *cur;
    @@ -1598,7 +1639,8 @@
    }
    if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL)
    return TCL_ERROR;
    - Tcl_SetBooleanObj(result, purple_status_type_is_available(status_type));
    + Tcl_SetObjResult(interp,
    + Tcl_NewBooleanObj(purple_status_type_is_available(status_type)));
    break;
    case CMD_STATUS_TYPE_ATTR:
    if (objc != 4) {
    @@ -1634,7 +1676,8 @@
    }
    if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL)
    return TCL_ERROR;
    - Tcl_SetBooleanObj(result, purple_status_type_is_exclusive(status_type));
    + Tcl_SetObjResult(interp,
    + Tcl_NewBooleanObj(purple_status_type_is_exclusive(status_type)));
    break;
    case CMD_STATUS_TYPE_ID:
    if (objc != 3) {
    @@ -1643,7 +1686,8 @@
    }
    if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL)
    return TCL_ERROR;
    - Tcl_SetStringObj(result, purple_status_type_get_id(status_type), -1);
    + Tcl_SetObjResult(interp,
    + Tcl_NewStringObj(purple_status_type_get_id(status_type), -1));
    break;
    case CMD_STATUS_TYPE_INDEPENDENT:
    if (objc != 3) {
    @@ -1652,7 +1696,8 @@
    }
    if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL)
    return TCL_ERROR;
    - Tcl_SetBooleanObj(result, purple_status_type_is_independent(status_type));
    + Tcl_SetObjResult(interp,
    + Tcl_NewBooleanObj(purple_status_type_is_independent(status_type)));
    break;
    case CMD_STATUS_TYPE_NAME:
    if (objc != 3) {
    @@ -1661,7 +1706,8 @@
    }
    if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL)
    return TCL_ERROR;
    - Tcl_SetStringObj(result, purple_status_type_get_name(status_type), -1);
    + Tcl_SetObjResult(interp,
    + Tcl_NewStringObj(purple_status_type_get_name(status_type), -1));
    break;
    case CMD_STATUS_TYPE_PRIMITIVE:
    if (objc != 3) {
    @@ -1670,7 +1716,9 @@
    }
    if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL)
    return TCL_ERROR;
    - Tcl_SetStringObj(result, purple_primitive_get_id_from_type(purple_status_type_get_primitive(status_type)), -1);
    + Tcl_SetObjResult(interp,
    + Tcl_NewStringObj(purple_primitive_get_id_from_type
    + (purple_status_type_get_primitive(status_type)), -1));
    break;
    case CMD_STATUS_TYPE_PRIMARY_ATTR:
    if (objc != 3) {
    @@ -1679,7 +1727,8 @@
    }
    if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL)
    return TCL_ERROR;
    - Tcl_SetStringObj(result, purple_status_type_get_primary_attr(status_type), -1);
    + Tcl_SetObjResult(interp,
    + Tcl_NewStringObj(purple_status_type_get_primary_attr(status_type), -1));
    break;
    case CMD_STATUS_TYPE_SAVEABLE:
    if (objc != 3) {
    @@ -1688,7 +1737,9 @@
    }
    if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL)
    return TCL_ERROR;
    - Tcl_SetBooleanObj(result, purple_status_type_is_saveable(status_type));
    + Tcl_SetObjResult(interp,
    + Tcl_NewBooleanObj(
    + purple_status_type_is_saveable(status_type)));
    break;
    case CMD_STATUS_TYPE_USER_SETTABLE:
    if (objc != 3) {
    @@ -1697,7 +1748,9 @@
    }
    if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL)
    return TCL_ERROR;
    - Tcl_SetBooleanObj(result, purple_status_type_is_user_settable(status_type));
    + Tcl_SetObjResult(interp,
    + Tcl_NewBooleanObj(
    + purple_status_type_is_user_settable(status_type)));
    break;
    }
    --- a/libpurple/plugins/tcl/tcl_purple.h Wed Sep 19 03:28:52 2007 +0000
    +++ b/libpurple/plugins/tcl/tcl_purple.h Wed Sep 19 03:30:40 2007 +0000
    @@ -76,6 +76,7 @@
    extern PurpleStringref *PurpleTclRefStatusAttr;
    extern PurpleStringref *PurpleTclRefStatusType;
    extern PurpleStringref *PurpleTclRefXfer;
    +extern PurpleStringref *PurpleTclRefHandle;
    PurplePlugin *tcl_interp_get_plugin(Tcl_Interp *interp);
    --- a/libpurple/protocols/jabber/auth.c Wed Sep 19 03:28:52 2007 +0000
    +++ b/libpurple/protocols/jabber/auth.c Wed Sep 19 03:30:40 2007 +0000
    @@ -23,6 +23,7 @@
    #include "account.h"
    #include "debug.h"
    #include "cipher.h"
    +#include "core.h"
    #include "conversation.h"
    #include "request.h"
    #include "sslconn.h"
    @@ -66,10 +67,10 @@
    auth = xmlnode_new("auth");
    xmlnode_set_namespace(auth, "urn:ietf:params:xml:ns:xmpp-sasl");
    -
    +
    xmlnode_set_attrib(auth, "xmlns:ga", "http://www.google.com/talk/protocol/auth");
    xmlnode_set_attrib(auth, "ga:client-uses-full-bind-result", "true");
    -
    +
    response = g_string_new("");
    response = g_string_append_len(response, "\0", 1);
    response = g_string_append(response, js->user->node);
    @@ -202,7 +203,7 @@
    return TRUE;
    }
    -
    +
    static void auth_pass_cb(PurpleConnection *conn, PurpleRequestFields *fields)
    {
    JabberStream *js;
    @@ -236,7 +237,7 @@
    if (!auth_pass_generic(js, fields))
    return;
    -
    +
    /* Restart our connection */
    jabber_auth_start_old(js);
    }
    @@ -253,7 +254,8 @@
    js = conn->proto_data;
    - purple_connection_error(conn, _("Password is required to sign on."));
    + /* Disable the account as the user has canceled connecting */
    + purple_account_set_enabled(conn->account, purple_core_get_ui(), FALSE);
    }
    static void jabber_auth_start_cyrus(JabberStream *js)
    @@ -621,7 +623,7 @@
    * to OPTIONAL for this protocol. So, we need to do our own
    * password prompting here
    */
    -
    +
    if (!purple_account_get_password(js->gc->account)) {
    purple_account_request_password(js->gc->account, G_CALLBACK(auth_old_pass_cb), G_CALLBACK(auth_no_pass_cb), js->gc);
    return;
    --- a/libpurple/protocols/jabber/message.c Wed Sep 19 03:28:52 2007 +0000
    +++ b/libpurple/protocols/jabber/message.c Wed Sep 19 03:30:40 2007 +0000
    @@ -41,7 +41,10 @@
    g_free(jm->body);
    g_free(jm->xhtml);
    g_free(jm->password);
    + g_free(jm->error);
    + g_free(jm->thread_id);
    g_list_free(jm->etc);
    + g_list_free(jm->eventitems);
    g_free(jm);
    }
    --- a/libpurple/protocols/msn/slp.c Wed Sep 19 03:28:52 2007 +0000
    +++ b/libpurple/protocols/msn/slp.c Wed Sep 19 03:30:40 2007 +0000
    @@ -343,7 +343,7 @@
    if (xfer)
    {
    bin = (char *)purple_base64_decode(context, &bin_len);
    - file_size = GUINT32_FROM_LE(*(gsize *)(bin + 2));
    + file_size = GUINT32_FROM_LE(*(gsize *)(bin + 8));
    uni_name = (gunichar2 *)(bin + 20);
    while(*uni_name != 0 && ((char *)uni_name - (bin + 20)) < MAX_FILE_NAME_LEN) {
    --- a/libpurple/protocols/myspace/markup.c Wed Sep 19 03:28:52 2007 +0000
    +++ b/libpurple/protocols/myspace/markup.c Wed Sep 19 03:30:40 2007 +0000
    @@ -504,6 +504,7 @@
    /* TODO: color (bg uses <body>), emoticons */
    } else {
    + gchar *err;
    #ifdef MSIM_MARKUP_SHOW_UNKNOWN_TAGS
    *begin = g_strdup_printf("[%s]", root->name);
    @@ -512,6 +513,11 @@
    *begin = g_strdup("");
    *end = g_strdup("");
    #endif
    +
    + err = g_strdup_printf("html_tag_to_msim_markup: unrecognized "
    + "HTML tag %s was sent by the IM client; ignoring");
    + msim_unrecognized(NULL, NULL, err);
    + g_free(err);
    }
    }
    --- a/libpurple/protocols/myspace/markup.h Wed Sep 19 03:28:52 2007 +0000
    +++ b/libpurple/protocols/myspace/markup.h Wed Sep 19 03:30:40 2007 +0000
    @@ -1,27 +1,27 @@
    -/* MySpaceIM Protocol Plugin - markup
    - *
    - * Copyright (C) 2007, Jeff Connelly <jeff2@soc.pidgin.im>
    - *
    - * This program is free software; you can redistribute it and/or modify
    - * it under the terms of the GNU General Public License as published by
    - * the Free Software Foundation; either version 2 of the License, or
    - * (at your option) any later version.
    - *
    - * This program is distributed in the hope that it will be useful,
    - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    - * GNU General Public License for more details.
    - *
    - * You should have received a copy of the GNU General Public License
    - * along with this program; if not, write to the Free Software
    - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
    - */
    -
    -#ifndef _MYSPACE_MARKUP_H
    -#define _MYSPACE_MARKUP_H
    -
    -/* High-level msim markup <=> Purple html conversion functions. */
    -gchar *msim_markup_to_html(MsimSession *, const gchar *raw);
    -gchar *html_to_msim_markup(MsimSession *, const gchar *raw);
    -
    -#endif /* !_MYSPACE_MARKUP_H */
    +/* MySpaceIM Protocol Plugin - markup
    + *
    + * Copyright (C) 2007, Jeff Connelly <jeff2@soc.pidgin.im>
    + *
    + * This program is free software; you can redistribute it and/or modify
    + * it under the terms of the GNU General Public License as published by
    + * the Free Software Foundation; either version 2 of the License, or
    + * (at your option) any later version.
    + *
    + * This program is distributed in the hope that it will be useful,
    + * but WITHOUT ANY WARRANTY; without even the implied warranty of
    + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    + * GNU General Public License for more details.
    + *
    + * You should have received a copy of the GNU General Public License
    + * along with this program; if not, write to the Free Software
    + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
    + */
    +
    +#ifndef _MYSPACE_MARKUP_H
    +#define _MYSPACE_MARKUP_H
    +
    +/* High-level msim markup <=> Purple html conversion functions. */
    +gchar *msim_markup_to_html(MsimSession *, const gchar *raw);
    +gchar *html_to_msim_markup(MsimSession *, const gchar *raw);
    +
    +#endif /* !_MYSPACE_MARKUP_H */
    --- a/libpurple/protocols/myspace/myspace.h Wed Sep 19 03:28:52 2007 +0000
    +++ b/libpurple/protocols/myspace/myspace.h Wed Sep 19 03:30:40 2007 +0000
    @@ -67,8 +67,9 @@
    /*#define MSIM_DEBUG_LOGIN_CHALLENGE*/
    /*#define MSIM_DEBUG_RXBUF */
    -/* Encode unknown HTML tags in messages in [], instead of ignoring */
    -#define MSIM_MARKUP_SHOW_UNKNOWN_TAGS
    +/* Encode unknown HTML tags from IM clients in messages as [tag], instead of
    + * ignoring. Useful for debugging */
    +/*#define MSIM_MARKUP_SHOW_UNKNOWN_TAGS */
    /* Define to cause init_plugin() to run some tests and print
    * the results to the Purple debug log, then exit. Useful to
    --- a/libpurple/protocols/myspace/session.c Wed Sep 19 03:28:52 2007 +0000
    +++ b/libpurple/protocols/myspace/session.c Wed Sep 19 03:30:40 2007 +0000
    @@ -1,95 +1,95 @@
    -/* MySpaceIM Protocol Plugin, session
    - *
    - * Copyright (C) 2007, Jeff Connelly <jeff2@soc.pidgin.im>
    - *
    - * This program is free software; you can redistribute it and/or modify
    - * it under the terms of the GNU General Public License as published by
    - * the Free Software Foundation; either version 2 of the License, or
    - * (at your option) any later version.
    - *
    - * This program is distributed in the hope that it will be useful,
    - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    - * GNU General Public License for more details.
    - *
    - * You should have received a copy of the GNU General Public License
    - * along with this program; if not, write to the Free Software
    - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
    - */
    -
    -
    -#include "myspace.h"
    -
    -/* Session methods */
    -
    -/**
    - * Create a new MSIM session.
    - *
    - * @param acct The account to create the session from.
    - *
    - * @return Pointer to a new session. Free with msim_session_destroy.
    - */
    -MsimSession *
    -msim_session_new(PurpleAccount *acct)
    -{
    - MsimSession *session;
    -
    - g_return_val_if_fail(acct != NULL, NULL);
    -
    - session = g_new0(MsimSession, 1);
    -
    - session->magic = MSIM_SESSION_STRUCT_MAGIC;
    - session->account = acct;
    - session->gc = purple_account_get_connection(acct);
    - session->sesskey = 0;
    - session->userid = 0;
    - session->username = NULL;
    - session->fd = -1;
    -
    - /* TODO: Remove. */
    - session->user_lookup_cb = g_hash_table_new_full(g_direct_hash,
    - g_direct_equal, NULL, NULL); /* do NOT free function pointers! (values) */
    - session->user_lookup_cb_data = g_hash_table_new_full(g_direct_hash,
    - g_direct_equal, NULL, NULL);/* TODO: we don't know what the values are,
    - they could be integers inside gpointers
    - or strings, so I don't freed them.
    - Figure this out, once free cache. */
    -
    - /* Created in msim_process_server_info() */
    - session->server_info = NULL;
    -
    - session->rxoff = 0;
    - session->rxbuf = g_new0(gchar, MSIM_READ_BUF_SIZE);
    - session->next_rid = 1;
    - session->last_comm = time(NULL);
    - session->inbox_status = 0;
    -
    - return session;
    -}
    -
    -/**
    - * Free a session.
    - *
    - * @param session The session to destroy.
    - */
    -void
    -msim_session_destroy(MsimSession *session)
    -{
    - g_return_if_fail(MSIM_SESSION_VALID(session));
    -
    - session->magic = -1;
    -
    - g_free(session->rxbuf);
    - g_free(session->username);
    -
    - /* TODO: Remove. */
    - g_hash_table_destroy(session->user_lookup_cb);
    - g_hash_table_destroy(session->user_lookup_cb_data);
    -
    - if (session->server_info) {
    - msim_msg_free(session->server_info);
    - }
    -
    - g_free(session);
    -}
    -
    +/* MySpaceIM Protocol Plugin, session
    + *
    + * Copyright (C) 2007, Jeff Connelly <jeff2@soc.pidgin.im>
    + *
    + * This program is free software; you can redistribute it and/or modify
    + * it under the terms of the GNU General Public License as published by
    + * the Free Software Foundation; either version 2 of the License, or
    + * (at your option) any later version.
    + *
    + * This program is distributed in the hope that it will be useful,
    + * but WITHOUT ANY WARRANTY; without even the implied warranty of
    + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    + * GNU General Public License for more details.
    + *
    + * You should have received a copy of the GNU General Public License
    + * along with this program; if not, write to the Free Software
    + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
    + */
    +
    +
    +#include "myspace.h"
    +
    +/* Session methods */
    +
    +/**
    + * Create a new MSIM session.
    + *
    + * @param acct The account to create the session from.
    + *
    + * @return Pointer to a new session. Free with msim_session_destroy.
    + */
    +MsimSession *
    +msim_session_new(PurpleAccount *acct)
    +{
    + MsimSession *session;
    +
    + g_return_val_if_fail(acct != NULL, NULL);
    +
    + session = g_new0(MsimSession, 1);
    +
    + session->magic = MSIM_SESSION_STRUCT_MAGIC;
    + session->account = acct;
    + session->gc = purple_account_get_connection(acct);
    + session->sesskey = 0;
    + session->userid = 0;
    + session->username = NULL;
    + session->fd = -1;
    +
    + /* TODO: Remove. */
    + session->user_lookup_cb = g_hash_table_new_full(g_direct_hash,
    + g_direct_equal, NULL, NULL); /* do NOT free function pointers! (values) */
    + session->user_lookup_cb_data = g_hash_table_new_full(g_direct_hash,
    + g_direct_equal, NULL, NULL);/* TODO: we don't know what the values are,
    + they could be integers inside gpointers
    + or strings, so I don't freed them.
    + Figure this out, once free cache. */
    +
    + /* Created in msim_process_server_info() */
    + session->server_info = NULL;
    +
    + session->rxoff = 0;
    + session->rxbuf = g_new0(gchar, MSIM_READ_BUF_SIZE);
    + session->next_rid = 1;
    + session->last_comm = time(NULL);
    + session->inbox_status = 0;
    +
    + return session;
    +}
    +
    +/**
    + * Free a session.
    + *
    + * @param session The session to destroy.
    + */
    +void
    +msim_session_destroy(MsimSession *session)
    +{
    + g_return_if_fail(MSIM_SESSION_VALID(session));
    +
    + session->magic = -1;
    +
    + g_free(session->rxbuf);
    + g_free(session->username);
    +
    + /* TODO: Remove. */
    + g_hash_table_destroy(session->user_lookup_cb);
    + g_hash_table_destroy(session->user_lookup_cb_data);
    +
    + if (session->server_info) {
    + msim_msg_free(session->server_info);
    + }
    +
    + g_free(session);
    +}
    +
    --- a/libpurple/protocols/myspace/session.h Wed Sep 19 03:28:52 2007 +0000
    +++ b/libpurple/protocols/myspace/session.h Wed Sep 19 03:30:40 2007 +0000
    @@ -1,57 +1,57 @@
    -/* MySpaceIM Protocol Plugin, session
    - *
    - * Copyright (C) 2007, Jeff Connelly <jeff2@soc.pidgin.im>
    - *
    - * This program is free software; you can redistribute it and/or modify
    - * it under the terms of the GNU General Public License as published by
    - * the Free Software Foundation; either version 2 of the License, or
    - * (at your option) any later version.
    - *
    - * This program is distributed in the hope that it will be useful,
    - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    - * GNU General Public License for more details.
    - *
    - * You should have received a copy of the GNU General Public License
    - * along with this program; if not, write to the Free Software
    - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
    - */
    -
    -#ifndef _MYSPACE_SESSION_H
    -#define _MYSPACE_SESSION_H
    -
    -/* Random number in every MsimSession, to ensure it is valid. */
    -#define MSIM_SESSION_STRUCT_MAGIC 0xe4a6752b
    -
    -/* Everything needed to keep track of a session (proto_data field in PurpleConnection) */
    -typedef struct _MsimSession
    -{
    - guint magic; /**< MSIM_SESSION_STRUCT_MAGIC */
    - PurpleAccount *account;
    - PurpleConnection *gc;
    - guint sesskey; /**< Session key from server */
    - guint userid; /**< This user's numeric user ID */
    - gchar *username; /**< This user's unique username */
    - gint fd; /**< File descriptor to/from server */
    -
    - /* TODO: Remove. */
    - GHashTable *user_lookup_cb; /**< Username -> userid lookup callback */
    - GHashTable *user_lookup_cb_data; /**< Username -> userid lookup callback data */
    -
    - MsimMessage *server_info; /**< Parameters from server */
    -
    - gchar *rxbuf; /**< Receive buffer */
    - guint rxoff; /**< Receive buffer offset */
    - guint next_rid; /**< Next request/response ID */
    - time_t last_comm; /**< Time received last communication */
    - guint inbox_status; /**< Bit field of inbox notifications */
    -} MsimSession;
    -
    -/* Check if an MsimSession is valid */
    -#define MSIM_SESSION_VALID(s) (session != NULL && session->magic == MSIM_SESSION_STRUCT_MAGIC)
    -
    -
    -MsimSession *msim_session_new(PurpleAccount *acct);
    -void msim_session_destroy(MsimSession *session);
    -
    -#endif /* !_MYSPACE_SESSION_H */
    +/* MySpaceIM Protocol Plugin, session
    + *
    + * Copyright (C) 2007, Jeff Connelly <jeff2@soc.pidgin.im>
    + *
    + * This program is free software; you can redistribute it and/or modify
    + * it under the terms of the GNU General Public License as published by
    + * the Free Software Foundation; either version 2 of the License, or
    + * (at your option) any later version.
    + *
    + * This program is distributed in the hope that it will be useful,
    + * but WITHOUT ANY WARRANTY; without even the implied warranty of
    + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    + * GNU General Public License for more details.
    + *
    + * You should have received a copy of the GNU General Public License
    + * along with this program; if not, write to the Free Software
    + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
    + */
    +
    +#ifndef _MYSPACE_SESSION_H
    +#define _MYSPACE_SESSION_H
    +
    +/* Random number in every MsimSession, to ensure it is valid. */
    +#define MSIM_SESSION_STRUCT_MAGIC 0xe4a6752b
    +
    +/* Everything needed to keep track of a session (proto_data field in PurpleConnection) */
    +typedef struct _MsimSession
    +{
    + guint magic; /**< MSIM_SESSION_STRUCT_MAGIC */
    + PurpleAccount *account;
    + PurpleConnection *gc;
    + guint sesskey; /**< Session key from server */
    + guint userid; /**< This user's numeric user ID */
    + gchar *username; /**< This user's unique username */
    + gint fd; /**< File descriptor to/from server */
    +
    + /* TODO: Remove. */
    + GHashTable *user_lookup_cb; /**< Username -> userid lookup callback */
    + GHashTable *user_lookup_cb_data; /**< Username -> userid lookup callback data */
    +
    + MsimMessage *server_info; /**< Parameters from server */
    +
    + gchar *rxbuf; /**< Receive buffer */
    + guint rxoff; /**< Receive buffer offset */
    + guint next_rid; /**< Next request/response ID */
    + time_t last_comm; /**< Time received last communication */
    + guint inbox_status; /**< Bit field of inbox notifications */
    +} MsimSession;
    +
    +/* Check if an MsimSession is valid */
    +#define MSIM_SESSION_VALID(s) (session != NULL && session->magic == MSIM_SESSION_STRUCT_MAGIC)
    +
    +
    +MsimSession *msim_session_new(PurpleAccount *acct);
    +void msim_session_destroy(MsimSession *session);
    +
    +#endif /* !_MYSPACE_SESSION_H */
    --- a/libpurple/protocols/myspace/user.c Wed Sep 19 03:28:52 2007 +0000
    +++ b/libpurple/protocols/myspace/user.c Wed Sep 19 03:30:40 2007 +0000
    @@ -1,437 +1,437 @@
    -/* MySpaceIM Protocol Plugin, header file
    - *
    - * Copyright (C) 2007, Jeff Connelly <jeff2@soc.pidgin.im>
    - *
    - * This program is free software; you can redistribute it and/or modify
    - * it under the terms of the GNU General Public License as published by
    - * the Free Software Foundation; either version 2 of the License, or
    - * (at your option) any later version.
    - *
    - * This program is distributed in the hope that it will be useful,
    - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    - * GNU General Public License for more details.
    - *
    - * You should have received a copy of the GNU General Public License
    - * along with this program; if not, write to the Free Software
    - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
    - */
    -
    -#include "myspace.h"
    -
    -static void msim_store_user_info_each(const gchar *key_str, gchar *value_str, MsimUser *user);
    -static gchar *msim_format_now_playing(gchar *band, gchar *song);
    -static void msim_downloaded_buddy_icon(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text,
    - gsize len, const gchar *error_message);
    -
    -/** Format the "now playing" indicator, showing the artist and song.
    - * @return Return a new string (must be g_free()'d), or NULL.
    - */
    -static gchar *
    -msim_format_now_playing(gchar *band, gchar *song)
    -{
    - if ((band && strlen(band)) || (song && strlen(song))) {
    - return g_strdup_printf("%s - %s",
    - (band && strlen(band)) ? band : "Unknown Artist",
    - (song && strlen(song)) ? song : "Unknown Song");
    - } else {
    - return NULL;
    - }
    -}
    -/** Get the MsimUser from a PurpleBuddy, creating it if needed. */
    -MsimUser *
    -msim_get_user_from_buddy(PurpleBuddy *buddy)
    -{
    - MsimUser *user;
    -
    - if (!buddy) {
    - return NULL;
    - }
    -
    - if (!buddy->proto_data) {
    - /* No MsimUser for this buddy; make one. */
    -
    - /* TODO: where is this freed? */
    - user = g_new0(MsimUser, 1);
    - user->buddy = buddy;
    - buddy->proto_data = (gpointer)user;
    - }
    -
    - user = (MsimUser *)(buddy->proto_data);
    -
    - return user;
    -}
    -
    -/** Find and return an MsimUser * representing a user on the buddy list, or NULL. */
    -MsimUser *
    -msim_find_user(MsimSession *session, const gchar *username)
    -{
    - PurpleBuddy *buddy;
    - MsimUser *user;
    -
    - buddy = purple_find_buddy(session->account, username);
    - if (!buddy) {
    - return NULL;
    - }
    -
    - user = msim_get_user_from_buddy(buddy);
    -
    - return user;
    -}
    -
    -/** Append user information to a PurpleNotifyUserInfo, given an MsimUser.
    - * Used by msim_tooltip_text() and msim_get_info_cb() to show a user's profile.
    - */
    -void
    -msim_append_user_info(MsimSession *session, PurpleNotifyUserInfo *user_info, MsimUser *user, gboolean full)
    -{
    - gchar *str;
    - guint uid;
    - guint cv;
    -
    - /* Useful to identify the account the tooltip refers to.
    - * Other prpls show this. */
    - if (user->username) {
    - purple_notify_user_info_add_pair(user_info, _("User"), user->username);
    - }
    -
    - uid = purple_blist_node_get_int(&user->buddy->node, "UserID");
    -
    - if (full) {
    - /* TODO: link to username, if available */
    - purple_notify_user_info_add_pair(user_info, _("Profile"),
    - g_strdup_printf("<a href=\"http://myspace.com/%d\">http://myspace.com/%d</a>",
    - uid, uid));
    - }
    -
    -
    - /* a/s/l...the vitals */
    - if (user->age) {
    - purple_notify_user_info_add_pair(user_info, _("Age"),
    - g_strdup_printf("%d", user->age));
    - }
    -
    - if (user->gender && strlen(user->gender)) {
    - purple_notify_user_info_add_pair(user_info, _("Gender"), user->gender);
    - }
    -
    - if (user->location && strlen(user->location)) {
    - purple_notify_user_info_add_pair(user_info, _("Location"), user->location);
    - }
    -
    - /* Other information */
    - if (user->headline && strlen(user->headline)) {
    - purple_notify_user_info_add_pair(user_info, _("Headline"), user->headline);
    - }
    -
    - str = msim_format_now_playing(user->band_name, user->song_name);
    - if (str && strlen(str)) {
    - purple_notify_user_info_add_pair(user_info, _("Song"), str);
    - }
    -
    - /* Note: total friends only available if looked up by uid, not username. */
    - if (user->total_friends) {
    - purple_notify_user_info_add_pair(user_info, _("Total Friends"),
    - g_strdup_printf("%d", user->total_friends));
    - }
    -
    - if (full) {
    - /* Client information */
    -
    - str = user->client_info;
    - cv = user->client_cv;
    -
    - if (str && cv != 0) {
    - purple_notify_user_info_add_pair(user_info, _("Client Version"),
    - g_strdup_printf("%s (build %d)", str, cv));
    - } else if (str) {
    - purple_notify_user_info_add_pair(user_info, _("Client Version"),
    - g_strdup(str));
    - } else if (cv) {
    - purple_notify_user_info_add_pair(user_info, _("Client Version"),
    - g_strdup_printf("Build %d", cv));
    - }
    - }
    -}
    -
    -/** Store a field of information about a buddy. */
    -void
    -msim_store_user_info_each(const gchar *key_str, gchar *value_str, MsimUser *user)
    -{
    - if (g_str_equal(key_str, "UserID") || g_str_equal(key_str, "ContactID")) {
    - /* Save to buddy list, if it exists, for quick cached uid lookup with msim_uid2username_from_blist(). */
    - if (user->buddy)
    - {
    - purple_debug_info("msim", "associating uid %s with username %s\n", key_str, user->buddy->name);
    - purple_blist_node_set_int(&user->buddy->node, "UserID", atol(value_str));
    - }
    - /* Need to store in MsimUser, too? What if not on blist? */
    - } else if (g_str_equal(key_str, "Age")) {
    - user->age = atol(value_str);
    - } else if (g_str_equal(key_str, "Gender")) {
    - user->gender = g_strdup(value_str);
    - } else if (g_str_equal(key_str, "Location")) {
    - user->location = g_strdup(value_str);
    - } else if (g_str_equal(key_str, "TotalFriends")) {
    - user->total_friends = atol(value_str);
    - } else if (g_str_equal(key_str, "DisplayName")) {
    - user->display_name = g_strdup(value_str);
    - } else if (g_str_equal(key_str, "BandName")) {
    - user->band_name = g_strdup(value_str);
    - } else if (g_str_equal(key_str, "SongName")) {
    - user->song_name = g_strdup(value_str);
    - } else if (g_str_equal(key_str, "UserName") || g_str_equal(key_str, "IMName") || g_str_equal(key_str, "NickName")) {
    - /* Ignore because PurpleBuddy knows this already */
    - ;
    - } else if (g_str_equal(key_str, "ImageURL") || g_str_equal(key_str, "AvatarURL")) {
    - const gchar *previous_url;
    -
    - user->image_url = g_strdup(value_str);
    -
    - /* Instead of showing 'no photo' picture, show nothing. */
    - if (g_str_equal(user->image_url, "http://x.myspace.com/images/no_pic.gif"))
    - {
    - purple_buddy_icons_set_for_user(user->buddy->account,
    - user->buddy->name,
    - NULL, 0, NULL);
    - return;
    - }
    -
    - /* TODO: use ETag for checksum */
    - previous_url = purple_buddy_icons_get_checksum_for_user(user->buddy);
    -
    - /* Only download if URL changed */
    - if (!previous_url || !g_str_equal(previous_url, user->image_url)) {
    - purple_util_fetch_url(user->image_url, TRUE, NULL, TRUE, msim_downloaded_buddy_icon, (gpointer)user);
    - }
    - } else if (g_str_equal(key_str, "LastImageUpdated")) {
    - /* TODO: use somewhere */
    - user->last_image_updated = atol(value_str);
    - } else if (g_str_equal(key_str, "Headline")) {
    - user->headline = g_strdup(value_str);
    - } else {
    - /* TODO: other fields in MsimUser */
    - gchar *msg;
    -
    - msg = g_strdup_printf("msim_store_user_info_each: unknown field %s=%s",
    - key_str, value_str);
    -
    - msim_unrecognized(NULL, NULL, msg);
    -
    - g_free(msg);
    - }
    -}
    -
    -/** Save buddy information to the buddy list from a user info reply message.
    - *
    - * @param session
    - * @param msg The user information reply, with any amount of information.
    - * @param user The structure to save to, or NULL to save in PurpleBuddy->proto_data.
    - *
    - * Variable information is saved to the passed MsimUser structure. Permanent
    - * information (UserID) is stored in the blist node of the buddy list (and
    - * ends up in blist.xml, persisted to disk) if it exists.
    - *
    - * If the function has no buddy information, this function
    - * is a no-op (and returns FALSE).
    - *
    - */
    -gboolean
    -msim_store_user_info(MsimSession *session, MsimMessage *msg, MsimUser *user)
    -{
    - gchar *username;
    - MsimMessage *body, *body_node;
    -
    - g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
    - g_return_val_if_fail(msg != NULL, FALSE);
    -
    - body = msim_msg_get_dictionary(msg, "body");
    - if (!body) {
    - return FALSE;
    - }
    -
    - username = msim_msg_get_string(body, "UserName");
    -
    - if (!username) {
    - purple_debug_info("msim",
    - "msim_process_reply: not caching body, no UserName\n");
    - msim_msg_free(body);
    - g_free(username);
    - return FALSE;
    - }
    -
    - /* Null user = find and store in PurpleBuddy's proto_data */
    - if (!user) {
    - user = msim_find_user(session, username);
    - if (!user) {
    - msim_msg_free(body);
    - g_free(username);
    - return FALSE;
    - }
    - }
    -
    - /* TODO: make looping over MsimMessage's easier. */
    - for (body_node = body;
    - body_node != NULL;
    - body_node = msim_msg_get_next_element_node(body_node))
    - {
    - const gchar *key_str;
    - gchar *value_str;
    - MsimMessageElement *elem;
    -
    - elem = (MsimMessageElement *)body_node->data;
    - key_str = elem->name;
    -
    - value_str = msim_msg_get_string_from_element(elem);
    - msim_store_user_info_each(key_str, value_str, user);
    - g_free(value_str);
    - }
    -
    - if (msim_msg_get_integer(msg, "dsn") == MG_OWN_IM_INFO_DSN &&
    - msim_msg_get_integer(msg, "lid") == MG_OWN_IM_INFO_LID) {
    - /* TODO: do something with our own IM info, if we need it for some
    - * specific purpose. Otherwise it is available on the buddy list,
    - * if the user has themselves as their own buddy.
    - *
    - * However, much of the info is already available in MsimSession,
    - * stored in msim_we_are_logged_on(). */
    - } else if (msim_msg_get_integer(msg, "dsn") == MG_OWN_MYSPACE_INFO_DSN &&
    - msim_msg_get_integer(msg, "lid") == MG_OWN_MYSPACE_INFO_LID) {
    - /* TODO: same as above, but for MySpace info. */
    - }
    -
    - msim_msg_free(body);
    -
    - return TRUE;
    -}
    -
    -/**
    - * Asynchronously lookup user information, calling callback when receive result.
    - *
    - * @param session
    - * @param user The user id, email address, or username. Not freed.
    - * @param cb Callback, called with user information when available.
    - * @param data An arbitray data pointer passed to the callback.
    - */
    -/* TODO: change to not use callbacks */
    -void
    -msim_lookup_user(MsimSession *session, const gchar *user, MSIM_USER_LOOKUP_CB cb, gpointer data)
    -{
    - MsimMessage *body;
    - gchar *field_name;
    - guint rid, cmd, dsn, lid;
    -
    - g_return_if_fail(MSIM_SESSION_VALID(session));
    - g_return_if_fail(user != NULL);
    - /* Callback can be null to not call anything, just lookup & store information. */
    - /*g_return_if_fail(cb != NULL);*/
    -
    - purple_debug_info("msim", "msim_lookup_userid: "
    - "asynchronously looking up <%s>\n", user);
    -
    - msim_msg_dump("msim_lookup_user: data=%s\n", (MsimMessage *)data);
    -
    - /* Setup callback. Response will be associated with request using 'rid'. */
    - rid = msim_new_reply_callback(session, cb, data);
    -
    - /* Send request */
    -
    - cmd = MSIM_CMD_GET;
    -
    - if (msim_is_userid(user)) {
    - field_name = "UserID";
    - dsn = MG_MYSPACE_INFO_BY_ID_DSN;
    - lid = MG_MYSPACE_INFO_BY_ID_LID;
    - } else if (msim_is_email(user)) {
    - field_name = "Email";
    - dsn = MG_MYSPACE_INFO_BY_STRING_DSN;
    - lid = MG_MYSPACE_INFO_BY_STRING_LID;
    - } else {
    - field_name = "UserName";
    - dsn = MG_MYSPACE_INFO_BY_STRING_DSN;
    - lid = MG_MYSPACE_INFO_BY_STRING_LID;
    - }
    -
    - body = msim_msg_new(
    - field_name, MSIM_TYPE_STRING, g_strdup(user),
    - NULL);
    -
    - g_return_if_fail(msim_send(session,
    - "persist", MSIM_TYPE_INTEGER, 1,
    - "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
    - "cmd", MSIM_TYPE_INTEGER, 1,
    - "dsn", MSIM_TYPE_INTEGER, dsn,
    - "uid", MSIM_TYPE_INTEGER, session->userid,
    - "lid", MSIM_TYPE_INTEGER, lid,
    - "rid", MSIM_TYPE_INTEGER, rid,
    - "body", MSIM_TYPE_DICTIONARY, body,
    - NULL));
    -}
    -
    -
    -/**
    - * Check if a string is a userid (all numeric).
    - *
    - * @param user The user id, email, or name.
    - *
    - * @return TRUE if is userid, FALSE if not.
    - */
    -gboolean
    -msim_is_userid(const gchar *user)
    -{
    - g_return_val_if_fail(user != NULL, FALSE);
    -
    - return strspn(user, "0123456789") == strlen(user);
    -}
    -
    -/**
    - * Check if a string is an email address (contains an @).
    - *
    - * @param user The user id, email, or name.
    - *
    - * @return TRUE if is an email, FALSE if not.
    - *
    - * This function is not intended to be used as a generic
    - * means of validating email addresses, but to distinguish
    - * between a user represented by an email address from
    - * other forms of identification.
    - */
    -gboolean
    -msim_is_email(const gchar *user)
    -{
    - g_return_val_if_fail(user != NULL, FALSE);
    -
    - return strchr(user, '@') != NULL;
    -}
    -
    -
    -/** Callback for when a buddy icon finished being downloaded. */
    -static void
    -msim_downloaded_buddy_icon(PurpleUtilFetchUrlData *url_data,
    - gpointer user_data,
    - const gchar *url_text,
    - gsize len,
    - const gchar *error_message)
    -{
    - MsimUser *user;
    -
    - user = (MsimUser *)user_data;
    -
    - purple_debug_info("msim_downloaded_buddy_icon",
    - "Downloaded %d bytes\n", len);
    -
    - if (!url_text) {
    - purple_debug_info("msim_downloaded_buddy_icon",
    - "failed to download icon for %s",
    - user->buddy->name);
    - return;
    - }
    -
    - purple_buddy_icons_set_for_user(user->buddy->account,
    - user->buddy->name,
    - g_memdup((gchar *)url_text, len), len,
    - /* Use URL itself as buddy icon "checksum" (TODO: ETag) */
    - user->image_url); /* checksum */
    -}
    -
    -
    +/* MySpaceIM Protocol Plugin, header file
    + *
    + * Copyright (C) 2007, Jeff Connelly <jeff2@soc.pidgin.im>
    + *
    + * This program is free software; you can redistribute it and/or modify
    + * it under the terms of the GNU General Public License as published by
    + * the Free Software Foundation; either version 2 of the License, or
    + * (at your option) any later version.
    + *
    + * This program is distributed in the hope that it will be useful,
    + * but WITHOUT ANY WARRANTY; without even the implied warranty of
    + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    + * GNU General Public License for more details.
    + *
    + * You should have received a copy of the GNU General Public License
    + * along with this program; if not, write to the Free Software
    + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
    + */
    +
    +#include "myspace.h"
    +
    +static void msim_store_user_info_each(const gchar *key_str, gchar *value_str, MsimUser *user);
    +static gchar *msim_format_now_playing(gchar *band, gchar *song);
    +static void msim_downloaded_buddy_icon(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text,
    + gsize len, const gchar *error_message);
    +
    +/** Format the "now playing" indicator, showing the artist and song.
    + * @return Return a new string (must be g_free()'d), or NULL.
    + */
    +static gchar *
    +msim_format_now_playing(gchar *band, gchar *song)
    +{
    + if ((band && strlen(band)) || (song && strlen(song))) {
    + return g_strdup_printf("%s - %s",
    + (band && strlen(band)) ? band : "Unknown Artist",
    + (song && strlen(song)) ? song : "Unknown Song");
    + } else {
    + return NULL;
    + }
    +}
    +/** Get the MsimUser from a PurpleBuddy, creating it if needed. */
    +MsimUser *
    +msim_get_user_from_buddy(PurpleBuddy *buddy)
    +{
    + MsimUser *user;
    +
    + if (!buddy) {
    + return NULL;
    + }
    +
    + if (!buddy->proto_data) {
    + /* No MsimUser for this buddy; make one. */
    +
    + /* TODO: where is this freed? */
    + user = g_new0(MsimUser, 1);
    + user->buddy = buddy;
    + buddy->proto_data = (gpointer)user;
    + }
    +
    + user = (MsimUser *)(buddy->proto_data);
    +
    + return user;
    +}
    +
    +/** Find and return an MsimUser * representing a user on the buddy list, or NULL. */
    +MsimUser *
    +msim_find_user(MsimSession *session, const gchar *username)
    +{
    + PurpleBuddy *buddy;
    + MsimUser *user;
    +
    + buddy = purple_find_buddy(session->account, username);
    + if (!buddy) {
    + return NULL;
    + }
    +
    + user = msim_get_user_from_buddy(buddy);
    +
    + return user;
    +}
    +
    +/** Append user information to a PurpleNotifyUserInfo, given an MsimUser.
    + * Used by msim_tooltip_text() and msim_get_info_cb() to show a user's profile.
    + */
    +void
    +msim_append_user_info(MsimSession *session, PurpleNotifyUserInfo *user_info, MsimUser *user, gboolean full)
    +{
    + gchar *str;
    + guint uid;
    + guint cv;
    +
    + /* Useful to identify the account the tooltip refers to.
    + * Other prpls show this. */
    + if (user->username) {
    + purple_notify_user_info_add_pair(user_info, _("User"), user->username);
    + }
    +
    + uid = purple_blist_node_get_int(&user->buddy->node, "UserID");
    +
    + if (full) {
    + /* TODO: link to username, if available */
    + purple_notify_user_info_add_pair(user_info, _("Profile"),
    + g_strdup_printf("<a href=\"http://myspace.com/%d\">http://myspace.com/%d</a>",
    + uid, uid));
    + }
    +
    +
    + /* a/s/l...the vitals */
    + if (user->age) {
    + purple_notify_user_info_add_pair(user_info, _("Age"),
    + g_strdup_printf("%d", user->age));
    + }
    +
    + if (user->gender && strlen(user->gender)) {
    + purple_notify_user_info_add_pair(user_info, _("Gender"), user->gender);
    + }
    +
    + if (user->location && strlen(user->location)) {
    + purple_notify_user_info_add_pair(user_info, _("Location"), user->location);
    + }
    +
    + /* Other information */
    + if (user->headline && strlen(user->headline)) {
    + purple_notify_user_info_add_pair(user_info, _("Headline"), user->headline);
    + }
    +
    + str = msim_format_now_playing(user->band_name, user->song_name);
    + if (str && strlen(str)) {
    + purple_notify_user_info_add_pair(user_info, _("Song"), str);
    + }
    +
    + /* Note: total friends only available if looked up by uid, not username. */
    + if (user->total_friends) {
    + purple_notify_user_info_add_pair(user_info, _("Total Friends"),
    + g_strdup_printf("%d", user->total_friends));
    + }
    +
    + if (full) {
    + /* Client information */
    +
    + str = user->client_info;
    + cv = user->client_cv;
    +
    + if (str && cv != 0) {
    + purple_notify_user_info_add_pair(user_info, _("Client Version"),
    + g_strdup_printf("%s (build %d)", str, cv));
    + } else if (str) {
    + purple_notify_user_info_add_pair(user_info, _("Client Version"),
    + g_strdup(str));
    + } else if (cv) {
    + purple_notify_user_info_add_pair(user_info, _("Client Version"),
    + g_strdup_printf("Build %d", cv));
    + }
    + }
    +}
    +
    +/** Store a field of information about a buddy. */
    +void
    +msim_store_user_info_each(const gchar *key_str, gchar *value_str, MsimUser *user)
    +{
    + if (g_str_equal(key_str, "UserID") || g_str_equal(key_str, "ContactID")) {
    + /* Save to buddy list, if it exists, for quick cached uid lookup with msim_uid2username_from_blist(). */
    + if (user->buddy)
    + {
    + purple_debug_info("msim", "associating uid %s with username %s\n", key_str, user->buddy->name);
    + purple_blist_node_set_int(&user->buddy->node, "UserID", atol(value_str));
    + }
    + /* Need to store in MsimUser, too? What if not on blist? */
    + } else if (g_str_equal(key_str, "Age")) {
    + user->age = atol(value_str);
    + } else if (g_str_equal(key_str, "Gender")) {
    + user->gender = g_strdup(value_str);
    + } else if (g_str_equal(key_str, "Location")) {
    + user->location = g_strdup(value_str);
    + } else if (g_str_equal(key_str, "TotalFriends")) {
    + user->total_friends = atol(value_str);
    + } else if (g_str_equal(key_str, "DisplayName")) {
    + user->display_name = g_strdup(value_str);
    + } else if (g_str_equal(key_str, "BandName")) {
    + user->band_name = g_strdup(value_str);
    + } else if (g_str_equal(key_str, "SongName")) {
    + user->song_name = g_strdup(value_str);
    + } else if (g_str_equal(key_str, "UserName") || g_str_equal(key_str, "IMName") || g_str_equal(key_str, "NickName")) {
    + /* Ignore because PurpleBuddy knows this already */
    + ;
    + } else if (g_str_equal(key_str, "ImageURL") || g_str_equal(key_str, "AvatarURL")) {
    + const gchar *previous_url;
    +
    + user->image_url = g_strdup(value_str);
    +
    + /* Instead of showing 'no photo' picture, show nothing. */
    + if (g_str_equal(user->image_url, "http://x.myspace.com/images/no_pic.gif"))
    + {
    + purple_buddy_icons_set_for_user(user->buddy->account,
    + user->buddy->name,
    + NULL, 0, NULL);
    + return;
    + }
    +
    + /* TODO: use ETag for checksum */
    + previous_url = purple_buddy_icons_get_checksum_for_user(user->buddy);
    +
    + /* Only download if URL changed */
    + if (!previous_url || !g_str_equal(previous_url, user->image_url)) {
    + purple_util_fetch_url(user->image_url, TRUE, NULL, TRUE, msim_downloaded_buddy_icon, (gpointer)user);
    + }
    + } else if (g_str_equal(key_str, "LastImageUpdated")) {
    + /* TODO: use somewhere */
    + user->last_image_updated = atol(value_str);
    + } else if (g_str_equal(key_str, "Headline")) {
    + user->headline = g_strdup(value_str);
    + } else {
    + /* TODO: other fields in MsimUser */
    + gchar *msg;
    +
    + msg = g_strdup_printf("msim_store_user_info_each: unknown field %s=%s",
    + key_str, value_str);
    +
    + msim_unrecognized(NULL, NULL, msg);
    +
    + g_free(msg);
    + }
    +}
    +
    +/** Save buddy information to the buddy list from a user info reply message.
    + *
    + * @param session
    + * @param msg The user information reply, with any amount of information.
    + * @param user The structure to save to, or NULL to save in PurpleBuddy->proto_data.
    + *
    + * Variable information is saved to the passed MsimUser structure. Permanent
    + * information (UserID) is stored in the blist node of the buddy list (and
    + * ends up in blist.xml, persisted to disk) if it exists.
    + *
    + * If the function has no buddy information, this function
    + * is a no-op (and returns FALSE).
    + *
    + */
    +gboolean
    +msim_store_user_info(MsimSession *session, MsimMessage *msg, MsimUser *user)
    +{
    + gchar *username;
    + MsimMessage *body, *body_node;
    +
    + g_return_val_if_fail(MSIM_SESSION_VALID(session), FALSE);
    + g_return_val_if_fail(msg != NULL, FALSE);
    +
    + body = msim_msg_get_dictionary(msg, "body");
    + if (!body) {
    + return FALSE;
    + }
    +
    + username = msim_msg_get_string(body, "UserName");
    +
    + if (!username) {
    + purple_debug_info("msim",
    + "msim_process_reply: not caching body, no UserName\n");
    + msim_msg_free(body);
    + g_free(username);
    + return FALSE;
    + }
    +
    + /* Null user = find and store in PurpleBuddy's proto_data */
    + if (!user) {
    + user = msim_find_user(session, username);
    + if (!user) {
    + msim_msg_free(body);
    + g_free(username);
    + return FALSE;
    + }
    + }
    +
    + /* TODO: make looping over MsimMessage's easier. */
    + for (body_node = body;
    + body_node != NULL;
    + body_node = msim_msg_get_next_element_node(body_node))
    + {
    + const gchar *key_str;
    + gchar *value_str;
    + MsimMessageElement *elem;
    +
    + elem = (MsimMessageElement *)body_node->data;
    + key_str = elem->name;
    +
    + value_str = msim_msg_get_string_from_element(elem);
    + msim_store_user_info_each(key_str, value_str, user);
    + g_free(value_str);
    + }
    +
    + if (msim_msg_get_integer(msg, "dsn") == MG_OWN_IM_INFO_DSN &&
    + msim_msg_get_integer(msg, "lid") == MG_OWN_IM_INFO_LID) {
    + /* TODO: do something with our own IM info, if we need it for some
    + * specific purpose. Otherwise it is available on the buddy list,
    + * if the user has themselves as their own buddy.
    + *
    + * However, much of the info is already available in MsimSession,
    + * stored in msim_we_are_logged_on(). */
    + } else if (msim_msg_get_integer(msg, "dsn") == MG_OWN_MYSPACE_INFO_DSN &&
    + msim_msg_get_integer(msg, "lid") == MG_OWN_MYSPACE_INFO_LID) {
    + /* TODO: same as above, but for MySpace info. */
    + }
    +
    + msim_msg_free(body);
    +
    + return TRUE;
    +}
    +
    +/**
    + * Asynchronously lookup user information, calling callback when receive result.
    + *
    + * @param session
    + * @param user The user id, email address, or username. Not freed.
    + * @param cb Callback, called with user information when available.
    + * @param data An arbitray data pointer passed to the callback.
    + */
    +/* TODO: change to not use callbacks */
    +void
    +msim_lookup_user(MsimSession *session, const gchar *user, MSIM_USER_LOOKUP_CB cb, gpointer data)
    +{
    + MsimMessage *body;
    + gchar *field_name;
    + guint rid, cmd, dsn, lid;
    +
    + g_return_if_fail(MSIM_SESSION_VALID(session));
    + g_return_if_fail(user != NULL);
    + /* Callback can be null to not call anything, just lookup & store information. */
    + /*g_return_if_fail(cb != NULL);*/
    +
    + purple_debug_info("msim", "msim_lookup_userid: "
    + "asynchronously looking up <%s>\n", user);
    +
    + msim_msg_dump("msim_lookup_user: data=%s\n", (MsimMessage *)data);
    +
    + /* Setup callback. Response will be associated with request using 'rid'. */
    + rid = msim_new_reply_callback(session, cb, data);
    +
    + /* Send request */
    +
    + cmd = MSIM_CMD_GET;
    +
    + if (msim_is_userid(user)) {
    + field_name = "UserID";
    + dsn = MG_MYSPACE_INFO_BY_ID_DSN;
    + lid = MG_MYSPACE_INFO_BY_ID_LID;
    + } else if (msim_is_email(user)) {
    + field_name = "Email";
    + dsn = MG_MYSPACE_INFO_BY_STRING_DSN;
    + lid = MG_MYSPACE_INFO_BY_STRING_LID;
    + } else {
    + field_name = "UserName";
    + dsn = MG_MYSPACE_INFO_BY_STRING_DSN;
    + lid = MG_MYSPACE_INFO_BY_STRING_LID;
    + }
    +
    + body = msim_msg_new(
    + field_name, MSIM_TYPE_STRING, g_strdup(user),
    + NULL);
    +
    + g_return_if_fail(msim_send(session,
    + "persist", MSIM_TYPE_INTEGER, 1,
    + "sesskey", MSIM_TYPE_INTEGER, session->sesskey,
    + "cmd", MSIM_TYPE_INTEGER, 1,
    + "dsn", MSIM_TYPE_INTEGER, dsn,
    + "uid", MSIM_TYPE_INTEGER, session->userid,
    + "lid", MSIM_TYPE_INTEGER, lid,
    + "rid", MSIM_TYPE_INTEGER, rid,
    + "body", MSIM_TYPE_DICTIONARY, body,
    + NULL));
    +}
    +
    +
    +/**
    + * Check if a string is a userid (all numeric).
    + *
    + * @param user The user id, email, or name.
    + *
    + * @return TRUE if is userid, FALSE if not.
    + */
    +gboolean
    +msim_is_userid(const gchar *user)
    +{
    + g_return_val_if_fail(user != NULL, FALSE);
    +
    + return strspn(user, "0123456789") == strlen(user);
    +}
    +
    +/**
    + * Check if a string is an email address (contains an @).
    + *
    + * @param user The user id, email, or name.
    + *
    + * @return TRUE if is an email, FALSE if not.
    + *
    + * This function is not intended to be used as a generic
    + * means of validating email addresses, but to distinguish
    + * between a user represented by an email address from
    + * other forms of identification.
    + */
    +gboolean
    +msim_is_email(const gchar *user)
    +{
    + g_return_val_if_fail(user != NULL, FALSE);
    +
    + return strchr(user, '@') != NULL;
    +}
    +
    +
    +/** Callback for when a buddy icon finished being downloaded. */
    +static void
    +msim_downloaded_buddy_icon(PurpleUtilFetchUrlData *url_data,
    + gpointer user_data,
    + const gchar *url_text,
    + gsize len,
    + const gchar *error_message)
    +{
    + MsimUser *user;
    +
    + user = (MsimUser *)user_data;
    +
    + purple_debug_info("msim_downloaded_buddy_icon",
    + "Downloaded %d bytes\n", len);
    +
    + if (!url_text) {
    + purple_debug_info("msim_downloaded_buddy_icon",
    + "failed to download icon for %s",
    + user->buddy->name);
    + return;
    + }
    +
    + purple_buddy_icons_set_for_user(user->buddy->account,
    + user->buddy->name,
    + g_memdup((gchar *)url_text, len), len,
    + /* Use URL itself as buddy icon "checksum" (TODO: ETag) */
    + user->image_url); /* checksum */
    +}
    +
    +
    --- a/libpurple/protocols/myspace/user.h Wed Sep 19 03:28:52 2007 +0000
    +++ b/libpurple/protocols/myspace/user.h Wed Sep 19 03:30:40 2007 +0000
    @@ -1,55 +1,55 @@
    -/* MySpaceIM Protocol Plugin, header file
    - *
    - * Copyright (C) 2007, Jeff Connelly <jeff2@soc.pidgin.im>
    - *
    - * This program is free software; you can redistribute it and/or modify
    - * it under the terms of the GNU General Public License as published by
    - * the Free Software Foundation; either version 2 of the License, or
    - * (at your option) any later version.
    - *
    - * This program is distributed in the hope that it will be useful,
    - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    - * GNU General Public License for more details.
    - *
    - * You should have received a copy of the GNU General Public License
    - * along with this program; if not, write to the Free Software
    - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
    - */
    -
    -#ifndef _MYSPACE_USER_H
    -#define _MYSPACE_USER_H
    -
    -/* Hold ephemeral information about buddies, for proto_data of PurpleBuddy. */
    -/* GHashTable? */
    -typedef struct _MsimUser
    -{
    - PurpleBuddy *buddy;
    - guint client_cv;
    - gchar *client_info;
    - guint age;
    - gchar *gender;
    - gchar *location;
    - guint total_friends;
    - gchar *headline;
    - gchar *display_name;
    - /* Note: uid is in &buddy->node (set_blist_node_int), since it never changes */
    - gchar *username;
    - gchar *band_name, *song_name;
    - gchar *image_url;
    - guint last_image_updated;
    -} MsimUser;
    -
    -/* Callback function pointer type for when a user's information is received,
    - * initiated from a user lookup. */
    -typedef void (*MSIM_USER_LOOKUP_CB)(MsimSession *session, MsimMessage *userinfo, gpointer data);
    -
    -MsimUser *msim_get_user_from_buddy(PurpleBuddy *buddy);
    -MsimUser *msim_find_user(MsimSession *session, const gchar *username);
    -void msim_append_user_info(MsimSession *session, PurpleNotifyUserInfo *user_info, MsimUser *user, gboolean full);
    -gboolean msim_store_user_info(MsimSession *session, MsimMessage *msg, MsimUser *user);
    -gboolean msim_is_userid(const gchar *user);
    -gboolean msim_is_email(const gchar *user);
    -void msim_lookup_user(MsimSession *session, const gchar *user, MSIM_USER_LOOKUP_CB cb, gpointer data);
    -
    -#endif /* !_MYSPACE_USER_H */
    +/* MySpaceIM Protocol Plugin, header file
    + *
    + * Copyright (C) 2007, Jeff Connelly <jeff2@soc.pidgin.im>
    + *
    + * This program is free software; you can redistribute it and/or modify
    + * it under the terms of the GNU General Public License as published by
    + * the Free Software Foundation; either version 2 of the License, or
    + * (at your option) any later version.
    + *
    + * This program is distributed in the hope that it will be useful,
    + * but WITHOUT ANY WARRANTY; without even the implied warranty of
    + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    + * GNU General Public License for more details.
    + *
    + * You should have received a copy of the GNU General Public License
    + * along with this program; if not, write to the Free Software
    + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
    + */
    +
    +#ifndef _MYSPACE_USER_H
    +#define _MYSPACE_USER_H
    +
    +/* Hold ephemeral information about buddies, for proto_data of PurpleBuddy. */
    +/* GHashTable? */
    +typedef struct _MsimUser
    +{
    + PurpleBuddy *buddy;
    + guint client_cv;
    + gchar *client_info;
    + guint age;
    + gchar *gender;
    + gchar *location;
    + guint total_friends;
    + gchar *headline;
    + gchar *display_name;
    + /* Note: uid is in &buddy->node (set_blist_node_int), since it never changes */
    + gchar *username;
    + gchar *band_name, *song_name;
    + gchar *image_url;
    + guint last_image_updated;
    +} MsimUser;
    +
    +/* Callback function pointer type for when a user's information is received,
    + * initiated from a user lookup. */
    +typedef void (*MSIM_USER_LOOKUP_CB)(MsimSession *session, MsimMessage *userinfo, gpointer data);
    +
    +MsimUser *msim_get_user_from_buddy(PurpleBuddy *buddy);
    +MsimUser *msim_find_user(MsimSession *session, const gchar *username);
    +void msim_append_user_info(MsimSession *session, PurpleNotifyUserInfo *user_info, MsimUser *user, gboolean full);
    +gboolean msim_store_user_info(MsimSession *session, MsimMessage *msg, MsimUser *user);
    +gboolean msim_is_userid(const gchar *user);
    +gboolean msim_is_email(const gchar *user);
    +void msim_lookup_user(MsimSession *session, const gchar *user, MSIM_USER_LOOKUP_CB cb, gpointer data);
    +
    +#endif /* !_MYSPACE_USER_H */
    --- a/libpurple/protocols/myspace/zap.c Wed Sep 19 03:28:52 2007 +0000
    +++ b/libpurple/protocols/myspace/zap.c Wed Sep 19 03:30:40 2007 +0000
    @@ -1,208 +1,208 @@
    -/* MySpaceIM Protocol Plugin - zap support
    - *
    - * Copyright (C) 2007, Jeff Connelly <jeff2@soc.pidgin.im>
    - *
    - * This program is free software; you can redistribute it and/or modify
    - * it under the terms of the GNU General Public License as published by
    - * the Free Software Foundation; either version 2 of the License, or
    - * (at your option) any later version.
    - *
    - * This program is distributed in the hope that it will be useful,
    - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    - * GNU General Public License for more details.
    - *
    - * You should have received a copy of the GNU General Public License
    - * along with this program; if not, write to the Free Software
    - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
    - */
    -
    -#include "myspace.h"
    -#include "zap.h"
    -
    -static gboolean msim_send_zap(MsimSession *session, const gchar *username, guint code);
    -static void msim_send_zap_from_menu(PurpleBlistNode *node, gpointer zap_num_ptr);
    -
    -
    -/** Get zap types. */
    -GList *
    -msim_attention_types(PurpleAccount *acct)
    -{
    - static GList *types = NULL;
    - MsimAttentionType* attn;
    -
    - if (!types) {
    -#define _MSIM_ADD_NEW_ATTENTION(icn, nme, incoming, outgoing) \
    - attn = g_new0(MsimAttentionType, 1); \
    - attn->icon_name = icn; \
    - attn->name = nme; \
    - attn->incoming_description = incoming; \
    - attn->outgoing_description = outgoing; \
    - types = g_list_append(types, attn);
    -
    - /* TODO: icons for each zap */
    - _MSIM_ADD_NEW_ATTENTION(NULL, _("Zap"), _("%s has zapped you!"), _("Zapping %s..."));
    - _MSIM_ADD_NEW_ATTENTION(NULL, _("Whack"), _("%s has whacked you!"), _("Whacking %s..."));
    - _MSIM_ADD_NEW_ATTENTION(NULL, _("Torch"), _("%s has torched you!"), _("Torching %s..."));
    - _MSIM_ADD_NEW_ATTENTION(NULL, _("Smooch"), _("%s has smooched you!"), _("Smooching %s..."));
    - _MSIM_ADD_NEW_ATTENTION(NULL, _("Hug"), _("%s has hugged you!"), _("Hugging %s..."));
    - _MSIM_ADD_NEW_ATTENTION(NULL, _("Slap"), _("%s has slapped you!"), _("Slapping %s..."));
    - _MSIM_ADD_NEW_ATTENTION(NULL, _("Goose"), _("%s has goosed you!"), _("Goosing %s..."));
    - _MSIM_ADD_NEW_ATTENTION(NULL, _("High-five"), _("%s has high-fived you!"), _("High-fiving %s..."));
    - _MSIM_ADD_NEW_ATTENTION(NULL, _("Punk"), _("%s has punk'd you!"), _("Punking %s..."));
    - _MSIM_ADD_NEW_ATTENTION(NULL, _("Raspberry"), _("%s has raspberried you!"), _("Raspberrying %s..."));
    - }
    -
    - return types;
    -}
    -
    -/** Send a zap */
    -gboolean
    -msim_send_attention(PurpleConnection *gc, const gchar *username, guint code)
    -{
    - GList *types;
    - MsimSession *session;
    - MsimAttentionType *attn;
    - PurpleBuddy *buddy;
    -
    - session = (MsimSession *)gc->proto_data;
    -
    - /* Look for this attention type, by the code index given. */
    - types = msim_attention_types(gc->account);
    - attn = (MsimAttentionType *)g_list_nth_data(types, code);
    -
    - if (!attn) {
    - purple_debug_info("msim_send_attention", "got invalid zap code %d\n", code);
    - return FALSE;
    - }
    -
    - buddy = purple_find_buddy(session->account, username);
    - if (!buddy) {
    - return FALSE;
    - }
    -
    - msim_send_zap(session, username, code);
    -
    - return TRUE;
    -}
    -
    -/** Send a zap to a user. */
    -static gboolean
    -msim_send_zap(MsimSession *session, const gchar *username, guint code)
    -{
    - gchar *zap_string;
    - gboolean rc;
    -
    - g_return_val_if_fail(session != NULL, FALSE);
    - g_return_val_if_fail(username != NULL, FALSE);
    -
    - /* Construct and send the actual zap command. */
    - zap_string = g_strdup_printf("!!!ZAP_SEND!!!=RTE_BTN_ZAPS_%d", code);
    -
    - if (!msim_send_bm(session, username, zap_string, MSIM_BM_ACTION)) {
    - purple_debug_info("msim_send_zap_from_menu", "msim_send_bm failed: zapping %s with %s\n",
    - username, zap_string);
    - rc = FALSE;
    - } else {
    - rc = TRUE;
    - }
    -
    - g_free(zap_string);
    -
    - return rc;
    -
    -}
    -
    -/** Zap someone. Callback from msim_blist_node_menu zap menu. */
    -static void
    -msim_send_zap_from_menu(PurpleBlistNode *node, gpointer zap_num_ptr)
    -{
    - PurpleBuddy *buddy;
    - PurpleAccount *account;
    - PurpleConnection *gc;
    - MsimSession *session;
    - guint zap;
    -
    - if (!PURPLE_BLIST_NODE_IS_BUDDY(node)) {
    - /* Only know about buddies for now. */
    - return;
    - }
    -
    - g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
    -
    - buddy = (PurpleBuddy *)node;
    -
    - /* Find the session */
    - account = buddy->account;
    - gc = purple_account_get_connection(account);
    - session = (MsimSession *)gc->proto_data;
    -
    - zap = GPOINTER_TO_INT(zap_num_ptr);
    -
    - serv_send_attention(session->gc, buddy->name, zap);
    -}
    -
    -/** Return menu, if any, for a buddy list node. */
    -GList *
    -msim_blist_node_menu(PurpleBlistNode *node)
    -{
    - GList *menu, *zap_menu;
    - GList *types;
    - PurpleMenuAction *act;
    - guint i;
    -
    - if (!PURPLE_BLIST_NODE_IS_BUDDY(node)) {
    - /* Only know about buddies for now. */
    - return NULL;
    - }
    -
    - zap_menu = NULL;
    -
    - /* TODO: get rid of once is accessible directly in GUI */
    - types = msim_attention_types(NULL);
    - i = 0;
    - do
    - {
    - MsimAttentionType *attn;
    -
    - attn = (MsimAttentionType *)types->data;
    -
    - act = purple_menu_action_new(attn->name, PURPLE_CALLBACK(msim_send_zap_from_menu),
    - GUINT_TO_POINTER(i), NULL);
    - zap_menu = g_list_append(zap_menu, act);
    -
    - ++i;
    - } while ((types = g_list_next(types)));
    -
    - act = purple_menu_action_new(_("Zap"), NULL, NULL, zap_menu);
    - menu = g_list_append(NULL, act);
    -
    - return menu;
    -}
    -
    -/** Process an incoming zap. */
    -gboolean
    -msim_incoming_zap(MsimSession *session, MsimMessage *msg)
    -{
    - gchar *msg_text, *username;
    - gint zap;
    -
    - msg_text = msim_msg_get_string(msg, "msg");
    - username = msim_msg_get_string(msg, "_username");
    -
    - g_return_val_if_fail(msg_text != NULL, FALSE);
    - g_return_val_if_fail(username != NULL, FALSE);
    -
    - g_return_val_if_fail(sscanf(msg_text, "!!!ZAP_SEND!!!=RTE_BTN_ZAPS_%d", &zap) == 1, FALSE);
    -
    - zap = CLAMP(zap, 0, 9);
    -
    - serv_got_attention(session->gc, username, zap);
    -
    - g_free(msg_text);
    - g_free(username);
    -
    - return TRUE;
    -}
    -
    -
    +/* MySpaceIM Protocol Plugin - zap support
    + *
    + * Copyright (C) 2007, Jeff Connelly <jeff2@soc.pidgin.im>
    + *
    + * This program is free software; you can redistribute it and/or modify
    + * it under the terms of the GNU General Public License as published by
    + * the Free Software Foundation; either version 2 of the License, or
    + * (at your option) any later version.
    + *
    + * This program is distributed in the hope that it will be useful,
    + * but WITHOUT ANY WARRANTY; without even the implied warranty of
    + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    + * GNU General Public License for more details.
    + *
    + * You should have received a copy of the GNU General Public License
    + * along with this program; if not, write to the Free Software
    + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
    + */
    +
    +#include "myspace.h"
    +#include "zap.h"
    +
    +static gboolean msim_send_zap(MsimSession *session, const gchar *username, guint code);
    +static void msim_send_zap_from_menu(PurpleBlistNode *node, gpointer zap_num_ptr);
    +
    +
    +/** Get zap types. */
    +GList *
    +msim_attention_types(PurpleAccount *acct)
    +{
    + static GList *types = NULL;
    + MsimAttentionType* attn;
    +
    + if (!types) {
    +#define _MSIM_ADD_NEW_ATTENTION(icn, nme, incoming, outgoing) \
    + attn = g_new0(MsimAttentionType, 1); \
    + attn->icon_name = icn; \
    + attn->name = nme; \
    + attn->incoming_description = incoming; \
    + attn->outgoing_description = outgoing; \
    + types = g_list_append(types, attn);
    +
    + /* TODO: icons for each zap */
    + _MSIM_ADD_NEW_ATTENTION(NULL, _("Zap"), _("%s has zapped you!"), _("Zapping %s..."));
    + _MSIM_ADD_NEW_ATTENTION(NULL, _("Whack"), _("%s has whacked you!"), _("Whacking %s..."));
    + _MSIM_ADD_NEW_ATTENTION(NULL, _("Torch"), _("%s has torched you!"), _("Torching %s..."));
    + _MSIM_ADD_NEW_ATTENTION(NULL, _("Smooch"), _("%s has smooched you!"), _("Smooching %s..."));
    + _MSIM_ADD_NEW_ATTENTION(NULL, _("Hug"), _("%s has hugged you!"), _("Hugging %s..."));
    + _MSIM_ADD_NEW_ATTENTION(NULL, _("Slap"), _("%s has slapped you!"), _("Slapping %s..."));
    + _MSIM_ADD_NEW_ATTENTION(NULL, _("Goose"), _("%s has goosed you!"), _("Goosing %s..."));
    + _MSIM_ADD_NEW_ATTENTION(NULL, _("High-five"), _("%s has high-fived you!"), _("High-fiving %s..."));
    + _MSIM_ADD_NEW_ATTENTION(NULL, _("Punk"), _("%s has punk'd you!"), _("Punking %s..."));
    + _MSIM_ADD_NEW_ATTENTION(NULL, _("Raspberry"), _("%s has raspberried you!"), _("Raspberrying %s..."));
    + }
    +
    + return types;
    +}
    +
    +/** Send a zap */
    +gboolean
    +msim_send_attention(PurpleConnection *gc, const gchar *username, guint code)
    +{
    + GList *types;
    + MsimSession *session;
    + MsimAttentionType *attn;
    + PurpleBuddy *buddy;
    +
    + session = (MsimSession *)gc->proto_data;
    +
    + /* Look for this attention type, by the code index given. */
    + types = msim_attention_types(gc->account);
    + attn = (MsimAttentionType *)g_list_nth_data(types, code);
    +
    + if (!attn) {
    + purple_debug_info("msim_send_attention", "got invalid zap code %d\n", code);
    + return FALSE;
    + }
    +
    + buddy = purple_find_buddy(session->account, username);
    + if (!buddy) {
    + return FALSE;
    + }
    +
    + msim_send_zap(session, username, code);
    +
    + return TRUE;
    +}
    +
    +/** Send a zap to a user. */
    +static gboolean
    +msim_send_zap(MsimSession *session, const gchar *username, guint code)
    +{
    + gchar *zap_string;
    + gboolean rc;
    +
    + g_return_val_if_fail(session != NULL, FALSE);
    + g_return_val_if_fail(username != NULL, FALSE);
    +
    + /* Construct and send the actual zap command. */
    + zap_string = g_strdup_printf("!!!ZAP_SEND!!!=RTE_BTN_ZAPS_%d", code);
    +
    + if (!msim_send_bm(session, username, zap_string, MSIM_BM_ACTION)) {
    + purple_debug_info("msim_send_zap_from_menu", "msim_send_bm failed: zapping %s with %s\n",
    + username, zap_string);
    + rc = FALSE;
    + } else {
    + rc = TRUE;
    + }
    +
    + g_free(zap_string);
    +
    + return rc;
    +
    +}
    +
    +/** Zap someone. Callback from msim_blist_node_menu zap menu. */
    +static void
    +msim_send_zap_from_menu(PurpleBlistNode *node, gpointer zap_num_ptr)
    +{
    + PurpleBuddy *buddy;
    + PurpleAccount *account;
    + PurpleConnection *gc;
    + MsimSession *session;
    + guint zap;
    +
    + if (!PURPLE_BLIST_NODE_IS_BUDDY(node)) {
    + /* Only know about buddies for now. */
    + return;
    + }
    +
    + g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
    +
    + buddy = (PurpleBuddy *)node;
    +
    + /* Find the session */
    + account = buddy->account;
    + gc = purple_account_get_connection(account);
    + session = (MsimSession *)gc->proto_data;
    +
    + zap = GPOINTER_TO_INT(zap_num_ptr);
    +
    + serv_send_attention(session->gc, buddy->name, zap);
    +}
    +
    +/** Return menu, if any, for a buddy list node. */
    +GList *
    +msim_blist_node_menu(PurpleBlistNode *node)
    +{
    + GList *menu, *zap_menu;
    + GList *types;
    + PurpleMenuAction *act;
    + guint i;
    +
    + if (!PURPLE_BLIST_NODE_IS_BUDDY(node)) {
    + /* Only know about buddies for now. */
    + return NULL;
    + }
    +
    + zap_menu = NULL;
    +
    + /* TODO: get rid of once is accessible directly in GUI */
    + types = msim_attention_types(NULL);
    + i = 0;
    + do
    + {
    + MsimAttentionType *attn;
    +
    + attn = (MsimAttentionType *)types->data;
    +
    + act = purple_menu_action_new(attn->name, PURPLE_CALLBACK(msim_send_zap_from_menu),
    + GUINT_TO_POINTER(i), NULL);
    + zap_menu = g_list_append(zap_menu, act);
    +
    + ++i;
    + } while ((types = g_list_next(types)));
    +
    + act = purple_menu_action_new(_("Zap"), NULL, NULL, zap_menu);
    + menu = g_list_append(NULL, act);
    +
    + return menu;
    +}
    +
    +/** Process an incoming zap. */
    +gboolean
    +msim_incoming_zap(MsimSession *session, MsimMessage *msg)
    +{
    + gchar *msg_text, *username;
    + gint zap;
    +
    + msg_text = msim_msg_get_string(msg, "msg");
    + username = msim_msg_get_string(msg, "_username");
    +
    + g_return_val_if_fail(msg_text != NULL, FALSE);
    + g_return_val_if_fail(username != NULL, FALSE);
    +
    + g_return_val_if_fail(sscanf(msg_text, "!!!ZAP_SEND!!!=RTE_BTN_ZAPS_%d", &zap) == 1, FALSE);
    +
    + zap = CLAMP(zap, 0, 9);
    +
    + serv_got_attention(session->gc, username, zap);
    +
    + g_free(msg_text);
    + g_free(username);
    +
    + return TRUE;
    +}
    +
    +
    --- a/libpurple/protocols/myspace/zap.h Wed Sep 19 03:28:52 2007 +0000
    +++ b/libpurple/protocols/myspace/zap.h Wed Sep 19 03:30:40 2007 +0000
    @@ -1,28 +1,28 @@
    -/* MySpaceIM Protocol Plugin - zap support
    - *
    - * Copyright (C) 2007, Jeff Connelly <jeff2@soc.pidgin.im>
    - *
    - * This program is free software; you can redistribute it and/or modify
    - * it under the terms of the GNU General Public License as published by
    - * the Free Software Foundation; either version 2 of the License, or
    - * (at your option) any later version.
    - *
    - * This program is distributed in the hope that it will be useful,
    - * but WITHOUT ANY WARRANTY; without even the implied warranty of
    - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    - * GNU General Public License for more details.
    - *
    - * You should have received a copy of the GNU General Public License
    - * along with this program; if not, write to the Free Software
    - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
    - */
    -
    -#ifndef _MYSPACE_ZAP_H
    -#define _MYSPACE_ZAP_H
    -
    -GList *msim_attention_types(PurpleAccount *acct);
    -gboolean msim_send_attention(PurpleConnection *gc, const gchar *username, guint code);
    -GList *msim_blist_node_menu(PurpleBlistNode *node);
    -gboolean msim_incoming_zap(MsimSession *session, MsimMessage *msg);
    -
    -#endif /* !_MYSPACE_ZAP_H */
    +/* MySpaceIM Protocol Plugin - zap support
    + *
    + * Copyright (C) 2007, Jeff Connelly <jeff2@soc.pidgin.im>
    + *
    + * This program is free software; you can redistribute it and/or modify
    + * it under the terms of the GNU General Public License as published by
    + * the Free Software Foundation; either version 2 of the License, or
    + * (at your option) any later version.
    + *
    + * This program is distributed in the hope that it will be useful,
    + * but WITHOUT ANY WARRANTY; without even the implied warranty of
    + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    + * GNU General Public License for more details.
    + *
    + * You should have received a copy of the GNU General Public License
    + * along with this program; if not, write to the Free Software
    + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
    + */
    +
    +#ifndef _MYSPACE_ZAP_H
    +#define _MYSPACE_ZAP_H
    +
    +GList *msim_attention_types(PurpleAccount *acct);
    +gboolean msim_send_attention(PurpleConnection *gc, const gchar *username, guint code);
    +GList *msim_blist_node_menu(PurpleBlistNode *node);
    +gboolean msim_incoming_zap(MsimSession *session, MsimMessage *msg);
    +
    +#endif /* !_MYSPACE_ZAP_H */
    --- a/libpurple/sslconn.h Wed Sep 19 03:28:52 2007 +0000
    +++ b/libpurple/sslconn.h Wed Sep 19 03:30:40 2007 +0000
    @@ -31,6 +31,7 @@
    #define PURPLE_SSL_DEFAULT_PORT 443
    +/** Possible SSL errors. */
    typedef enum
    {
    PURPLE_SSL_HANDSHAKE_FAILED = 1,
    @@ -86,39 +87,48 @@
    typedef struct
    {
    /** Initializes the SSL system provided.
    - * @return TRUE if initialization succeeded
    - */
    + * @return @a TRUE if initialization succeeded
    + * @see purple_ssl_init
    + */
    gboolean (*init)(void);
    - /** Unloads the SSL system. Inverse of init. */
    + /** Unloads the SSL system. Inverse of PurpleSslOps::init.
    + * @see purple_ssl_uninit
    + */
    void (*uninit)(void);
    - /** Sets up the SSL connection for a PurpleSslConnection once
    - * the TCP connection has been established */
    + /** Sets up the SSL connection for a #PurpleSslConnection once
    + * the TCP connection has been established
    + * @see purple_ssl_connect
    + */
    void (*connectfunc)(PurpleSslConnection *gsc);
    /** Destroys the internal data of the SSL connection provided.
    * Freeing gsc itself is left to purple_ssl_close()
    - *
    + * @see purple_ssl_close
    */
    void (*close)(PurpleSslConnection *gsc);
    /** Reads data from a connection (like POSIX read())
    - * @param gsc Connection context
    - * @param data Pointer to buffer to drop data into
    - * @param len Maximum number of bytes to read
    - * @return Number of bytes actually written into the buffer, or <0 on error
    + * @param gsc Connection context
    + * @param data Pointer to buffer to drop data into
    + * @param len Maximum number of bytes to read
    + * @return Number of bytes actually written into @a data (which may be
    + * less than @a len), or <0 on error
    + * @see purple_ssl_read
    */
    size_t (*read)(PurpleSslConnection *gsc, void *data, size_t len);
    /** Writes data to a connection (like POSIX send())
    - * @param gsc Connection context
    - * @param data Data buffer to send data from
    - * @param len Number of bytes to send from buffer
    - * @return The number of bytes written (may be less than len) or <0 on error
    + * @param gsc Connection context
    + * @param data Data buffer to send data from
    + * @param len Number of bytes to send from buffer
    + * @return The number of bytes written to @a data (may be less than
    + * @a len) or <0 on error
    + * @see purple_ssl_write
    */
    size_t (*write)(PurpleSslConnection *gsc, const void *data, size_t len);
    /** Obtains the certificate chain provided by the peer
    *
    * @param gsc Connection context
    - * @return A newly allocated list containing the certificates
    - * the peer provided.
    - * @see PurpleCertificate
    + * @return A newly allocated list of #PurpleCertificate containing the
    + * certificates the peer provided.
    + * @see purple_ssl_get_peer_certificates
    * @todo Decide whether the ordering of certificates in this
    * list can be guaranteed.
    */
    @@ -141,12 +151,12 @@
    /**
    * Returns whether or not SSL is currently supported.
    *
    - * @return TRUE if SSL is supported, or FALSE otherwise.
    + * @return @a TRUE if SSL is supported, or @a FALSE otherwise.
    */
    gboolean purple_ssl_is_supported(void);
    /**
    - * Returns a human-readable string for an SSL error
    + * Returns a human-readable string for an SSL error.
    *
    * @param error Error code
    * @return Human-readable error explanation
    @@ -163,8 +173,8 @@
    * @param port The destination port.
    * @param func The SSL input handler function.
    * @param error_func The SSL error handler function. This function
    - * should NOT call purple_ssl_close(). In the event
    - * of an error the PurpleSslConnection will be
    + * should <strong>NOT</strong> call purple_ssl_close(). In
    + * the event of an error the #PurpleSslConnection will be
    * destroyed for you.
    * @param data User-defined data.
    *
    @@ -177,7 +187,8 @@
    /**
    * Makes a SSL connection using an already open file descriptor.
    - * DEPRECATED. Use purple_ssl_connect_with_host_fd instead.
    + *
    + * @deprecated Use purple_ssl_connect_with_host_fd() instead.
    *
    * @param account The account making the connection.
    * @param fd The file descriptor.
    @@ -256,7 +267,7 @@
    * @param gsc The SSL connection handle
    *
    * @return The peer certificate chain, in the order of certificate, issuer,
    - * issuer's issuer, etc. NULL if no certificates have been provided,
    + * issuer's issuer, etc. @a NULL if no certificates have been provided,
    */
    GList * purple_ssl_get_peer_certificates(PurpleSslConnection *gsc);
    --- a/libpurple/status.c Wed Sep 19 03:28:52 2007 +0000
    +++ b/libpurple/status.c Wed Sep 19 03:30:40 2007 +0000
    @@ -601,7 +601,7 @@
    {
    time_t current_time = time(NULL);
    const char *buddy_alias = purple_buddy_get_alias(buddy);
    - char *tmp;
    + char *tmp, *logtmp;
    PurpleLog *log;
    if (old_status != NULL)
    @@ -609,6 +609,10 @@
    tmp = g_strdup_printf(_("%s changed status from %s to %s"), buddy_alias,
    purple_status_get_name(old_status),
    purple_status_get_name(new_status));
    + logtmp = g_strdup_printf(_("%s (%s) changed status from %s to %s"), buddy_alias, buddy->name,
    + purple_status_get_name(old_status),
    + purple_status_get_name(new_status));
    +
    }
    else
    {
    @@ -618,11 +622,16 @@
    {
    tmp = g_strdup_printf(_("%s is now %s"), buddy_alias,
    purple_status_get_name(new_status));
    + logtmp = g_strdup_printf(_("%s (%s) is now %s"), buddy_alias, buddy->name,
    + purple_status_get_name(new_status));
    +
    }
    else
    {
    tmp = g_strdup_printf(_("%s is no longer %s"), buddy_alias,
    purple_status_get_name(new_status));
    + logtmp = g_strdup_printf(_("%s (%s) is no longer %s"), buddy_alias, buddy->name,
    + purple_status_get_name(new_status));
    }
    }
    @@ -630,10 +639,11 @@
    if (log != NULL)
    {
    purple_log_write(log, PURPLE_MESSAGE_SYSTEM, buddy_alias,
    - current_time, tmp);
    + current_time, logtmp);
    }
    g_free(tmp);
    + g_free(logtmp);
    }
    }
    --- a/pidgin.spec.in Wed Sep 19 03:28:52 2007 +0000
    +++ b/pidgin.spec.in Wed Sep 19 03:30:40 2007 +0000
    @@ -44,9 +44,15 @@
    BuildRequires: gnutls-devel
    %{?_with_dbus:BuildRequires: dbus-1-devel >= 0.35}
    %{!?_without_gstreamer:BuildRequires: gstreamer010-devel >= 0.10}
    +Requires(pre): gconf2
    +Requires(post): gconf2
    +Requires(preun): gconf2
    %else
    %{?_with_dbus:BuildRequires: dbus-devel >= 0.35}
    %{!?_without_gstreamer:BuildRequires: gstreamer-devel >= 0.10}
    +Requires(pre): GConf2
    +Requires(post): GConf2
    +Requires(preun): GConf2
    %endif
    # Mandrake 10.1 and lower || Mandrake 10.2 (and higher?)
    @@ -72,9 +78,7 @@
    # For some reason perl isn't always automatically detected as a requirement :(
    Requires: perl
    -Requires(pre): GConf2
    -Requires(post): GConf2
    -Requires(preun): GConf2
    +Requires: libpurple = %{version}
    Obsoletes: gaim
    Provides: gaim
    @@ -457,6 +461,10 @@
    %endif
    %changelog
    +* Mon Sep 17 2007 Stu Tomlinson <stu@nosnilmot.com>
    +- Add version dependency on libpurple for pidgin
    +- Support for OpenSuse lowercase package name for GConf2
    +
    * Fri Sep 14 2007 Stu Tomlinson <stu@nosnilmot.com>
    - Fix spec file for moved sounds & new CA certificates
    --- a/pidgin/gtkaccount.c Wed Sep 19 03:28:52 2007 +0000
    +++ b/pidgin/gtkaccount.c Wed Sep 19 03:30:40 2007 +0000
    @@ -270,6 +270,8 @@
    add_user_options(dialog, dialog->top_vbox);
    add_protocol_options(dialog, dialog->bottom_vbox);
    + gtk_widget_grab_focus(dialog->protocol_menu);
    +
    if (!dialog->prpl_info || !dialog->prpl_info->register_user ||
    g_object_get_data(G_OBJECT(item), "fake")) {
    gtk_widget_hide(dialog->register_button);
    --- a/pidgin/gtkblist.c Wed Sep 19 03:28:52 2007 +0000
    +++ b/pidgin/gtkblist.c Wed Sep 19 03:30:40 2007 +0000
    @@ -521,7 +521,7 @@
    if (i > 1)
    {
    - char *msg = g_strdup_printf(ngettext("You currently have %d contact named %s. Would you like to merge them?", "You currently have %d contacts named %s. Would you like to merge them?", i), i, alias);
    + char *msg = g_strdup_printf(ngettext("You have %d contact named %s. Would you like to merge them?", "You currently have %d contacts named %s. Would you like to merge them?", i), i, alias);
    purple_request_action(NULL, NULL, msg, _("Merging these contacts will cause them to share a single entry on the buddy list and use a single conversation window. "
    "You can separate them again by choosing 'Expand' from the contact's context menu"), 0, NULL, NULL, NULL,
    merges, 2, _("_Merge"), PURPLE_CALLBACK(gtk_blist_do_personize), _("_Cancel"), PURPLE_CALLBACK(g_list_free));
    @@ -662,6 +662,26 @@
    }
    }
    +static void gtk_blist_menu_showoffline_cb(GtkWidget *w, PurpleBlistNode *node)
    +{
    + if (PURPLE_BLIST_NODE_IS_BUDDY(node))
    + {
    + purple_blist_node_set_bool(node, "show_offline",
    + !purple_blist_node_get_bool(node, "show_offline"));
    + }
    + else if (PURPLE_BLIST_NODE_IS_CONTACT(node))
    + {
    + PurpleBlistNode *bnode;
    + gboolean setting = !purple_blist_node_get_bool(node, "show_offline");
    +
    + purple_blist_node_set_bool(node, "show_offline", setting);
    + for (bnode = node->child; bnode != NULL; bnode = bnode->next) {
    + purple_blist_node_set_bool(bnode, "show_offline", setting);
    + }
    + }
    + pidgin_blist_update(purple_get_blist(), node);
    +}
    +
    static void gtk_blist_show_systemlog_cb()
    {
    pidgin_syslog_show();
    @@ -1288,13 +1308,17 @@
    pidgin_blist_make_buddy_menu(GtkWidget *menu, PurpleBuddy *buddy, gboolean sub) {
    PurplePluginProtocolInfo *prpl_info;
    PurpleContact *contact;
    + PurpleBlistNode *node;
    gboolean contact_expanded = FALSE;
    + gboolean show_offline = FALSE;
    g_return_if_fail(menu);
    g_return_if_fail(buddy);
    prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(buddy->account->gc->prpl);
    + node = (PurpleBlistNode*)buddy;
    +
    contact = purple_buddy_get_contact(buddy);
    if (contact) {
    contact_expanded = ((struct _pidgin_blist_node *)(((PurpleBlistNode*)contact)->ui_data))->contact_expanded;
    @@ -1320,7 +1344,7 @@
    pidgin_new_item_from_stock(menu, _("Add Buddy _Pounce"), NULL,
    G_CALLBACK(gtk_blist_menu_bp_cb), buddy, 0, 0, NULL);
    - if (((PurpleBlistNode*)buddy)->parent && ((PurpleBlistNode*)buddy)->parent->child->next &&
    + if (node->parent && node->parent->child->next &&
    !sub && !contact_expanded) {
    pidgin_new_item_from_stock(menu, _("View _Log"), NULL,
    G_CALLBACK(gtk_blist_menu_showlog_cb),
    @@ -1330,18 +1354,22 @@
    G_CALLBACK(gtk_blist_menu_showlog_cb), buddy, 0, 0, NULL);
    }
    -
    - pidgin_append_blist_node_proto_menu(menu, buddy->account->gc,
    - (PurpleBlistNode *)buddy);
    - pidgin_append_blist_node_extended_menu(menu, (PurpleBlistNode *)buddy);
    + if (!(purple_blist_node_get_flags(node) & PURPLE_BLIST_NODE_FLAG_NO_SAVE)) {
    + show_offline = purple_blist_node_get_bool(node, "show_offline");
    + pidgin_new_item_from_stock(menu, show_offline ? _("Hide when offline") : _("Show when offline"),
    + NULL, G_CALLBACK(gtk_blist_menu_showoffline_cb), node, 0, 0, NULL);
    + }
    +
    + pidgin_append_blist_node_proto_menu(menu, buddy->account->gc, node);
    + pidgin_append_blist_node_extended_menu(menu, node);
    if (!contact_expanded)
    pidgin_append_blist_node_move_to_menu(menu, (PurpleBlistNode *)contact);
    - if (((PurpleBlistNode*)buddy)->parent && ((PurpleBlistNode*)buddy)->parent->child->next &&
    + if (node->parent && node->parent->child->next &&
    !sub && !contact_expanded) {
    pidgin_separator(menu);
    - pidgin_append_blist_node_privacy_menu(menu, (PurpleBlistNode *)buddy);
    + pidgin_append_blist_node_privacy_menu(menu, node);
    pidgin_new_item_from_stock(menu, _("_Alias..."), PIDGIN_STOCK_ALIAS,
    G_CALLBACK(gtk_blist_menu_alias_cb),
    contact, 0, 0, NULL);
    @@ -1350,7 +1378,7 @@
    contact, 0, 0, NULL);
    } else if (!sub || contact_expanded) {
    pidgin_separator(menu);
    - pidgin_append_blist_node_privacy_menu(menu, (PurpleBlistNode *)buddy);
    + pidgin_append_blist_node_privacy_menu(menu, node);
    pidgin_new_item_from_stock(menu, _("_Alias..."), PIDGIN_STOCK_ALIAS,
    G_CALLBACK(gtk_blist_menu_alias_cb), buddy, 0, 0, NULL);
    pidgin_new_item_from_stock(menu, _("_Remove"), GTK_STOCK_REMOVE,
    @@ -3451,7 +3479,7 @@
    }
    p = purple_buddy_get_presence(buddy);
    - trans = (purple_presence_is_idle(p) && size == PIDGIN_STATUS_ICON_SMALL);
    + trans = purple_presence_is_idle(p);
    if (PURPLE_BUDDY_IS_ONLINE(buddy) && gtkbuddynode && gtkbuddynode->recent_signonoff)
    icon = PIDGIN_STOCK_STATUS_LOGIN;
    @@ -5682,7 +5710,8 @@
    if (*whoalias == '\0')
    whoalias = NULL;
    - if ((g = purple_find_group(grp)) == NULL)
    + g = NULL;
    + if ((grp != NULL) && (*grp != '\0') && ((g = purple_find_group(grp)) == NULL))
    {
    g = purple_group_new(grp);
    purple_blist_add_group(g, NULL);
    @@ -5892,7 +5921,8 @@
    group_name = pidgin_text_combo_box_entry_get_text(data->group_combo);
    - if ((group = purple_find_group(group_name)) == NULL)
    + group = NULL;
    + if ((group_name != NULL) && (*group_name != '\0') && ((group = purple_find_group(group_name)) == NULL))
    {
    group = purple_group_new(group_name);
    purple_blist_add_group(group, NULL);
    --- a/pidgin/gtkconv.c Wed Sep 19 03:28:52 2007 +0000
    +++ b/pidgin/gtkconv.c Wed Sep 19 03:30:40 2007 +0000
    @@ -4489,7 +4489,7 @@
    g_signal_connect(G_OBJECT(list), "motion-notify-event",
    G_CALLBACK(pidgin_userlist_motion_cb), gtkconv);
    g_signal_connect(G_OBJECT(list), "leave-notify-event",
    - G_CALLBACK(pidgin_userlist_motion_cb), gtkconv);
    + G_CALLBACK(pidgin_conv_leave_cb), gtkconv);
    g_signal_connect(G_OBJECT(list), "popup-menu",
    G_CALLBACK(gtkconv_chat_popup_menu_cb), gtkconv);
    g_signal_connect(G_OBJECT(lbox), "size-allocate", G_CALLBACK(lbox_size_allocate_cb), gtkconv);
    @@ -4617,10 +4617,8 @@
    model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
    - gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(gtkchat->list),
    - tooltip.userlistx, tooltip.userlisty, &path, &column, &x, &y);
    -
    - if (path == NULL)
    + if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(gtkchat->list),
    + tooltip.userlistx, tooltip.userlisty, &path, &column, &x, &y))
    return FALSE;
    gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, path);
    --- a/pidgin/gtkdocklet.c Wed Sep 19 03:28:52 2007 +0000
    +++ b/pidgin/gtkdocklet.c Wed Sep 19 03:30:40 2007 +0000
    @@ -532,7 +532,7 @@
    g_signal_connect(G_OBJECT(menuitem), "toggled", G_CALLBACK(docklet_toggle_mute), NULL);
    gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
    - menuitem = gtk_check_menu_item_new_with_label(_("Blink on new message"));
    + menuitem = gtk_check_menu_item_new_with_label(_("Blink on New Message"));
    gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/docklet/blink"));
    g_signal_connect(G_OBJECT(menuitem), "toggled", G_CALLBACK(docklet_toggle_blink), NULL);
    gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
    --- a/pidgin/gtkimhtmltoolbar.c Wed Sep 19 03:28:52 2007 +0000
    +++ b/pidgin/gtkimhtmltoolbar.c Wed Sep 19 03:30:40 2007 +0000
    @@ -1299,7 +1299,7 @@
    gtk_container_add(GTK_CONTAINER(smiley_button), bbox);
    image = gtk_image_new_from_stock(PIDGIN_STOCK_TOOLBAR_SMILEY, gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL));
    gtk_box_pack_start(GTK_BOX(bbox), image, FALSE, FALSE, 0);
    - label = gtk_label_new_with_mnemonic(_("_Smiley"));
    + label = gtk_label_new_with_mnemonic(_("_Smile!"));
    gtk_box_pack_start(GTK_BOX(bbox), label, FALSE, FALSE, 0);
    gtk_box_pack_start(GTK_BOX(box), smiley_button, FALSE, FALSE, 0);
    g_signal_connect_swapped(G_OBJECT(smiley_button), "clicked", G_CALLBACK(gtk_button_clicked), toolbar->smiley);
    --- a/pidgin/gtkmain.c Wed Sep 19 03:28:52 2007 +0000
    +++ b/pidgin/gtkmain.c Wed Sep 19 03:30:40 2007 +0000
    @@ -513,7 +513,7 @@
    #ifndef DEBUG
    /* We translate this here in case the crash breaks gettext. */
    segfault_message_tmp = g_strdup_printf(_(
    - "%s has segfaulted and attempted to dump a core file.\n"
    + "%s %s has segfaulted and attempted to dump a core file.\n"
    "This is a bug in the software and has happened through\n"
    "no fault of your own.\n\n"
    "If you can reproduce the crash, please notify the developers\n"
    @@ -527,7 +527,7 @@
    "LSchiere (via AIM). Contact information for Sean and Luke \n"
    "on other protocols is at\n"
    "%swiki/DeveloperPages\n"),
    - PIDGIN_NAME, PURPLE_DEVEL_WEBSITE, PURPLE_DEVEL_WEBSITE, PURPLE_DEVEL_WEBSITE
    + PIDGIN_NAME, VERSION, PURPLE_DEVEL_WEBSITE, PURPLE_DEVEL_WEBSITE, PURPLE_DEVEL_WEBSITE
    );
    /* we have to convert the message (UTF-8 to console
    --- a/pidgin/pidgin.h Wed Sep 19 03:28:52 2007 +0000
    +++ b/pidgin/pidgin.h Wed Sep 19 03:30:40 2007 +0000
    @@ -27,12 +27,12 @@
    #ifndef _PIDGIN_H_
    #define _PIDGIN_H_
    +#include <gtk/gtk.h>
    +
    #ifdef GDK_WINDOWING_X11
    # include <gdk/gdkx.h>
    #endif
    -#include <gtk/gtk.h>
    -
    #ifdef _WIN32
    # include "gtkwin32dep.h"
    #endif
    Binary file pidgin/pixmaps/dialogs/64/cool.png has changed
    Binary file pidgin/pixmaps/dialogs/64/error.png has changed
    Binary file pidgin/pixmaps/dialogs/64/info.png has changed
    Binary file pidgin/pixmaps/dialogs/64/mail.png has changed
    Binary file pidgin/pixmaps/dialogs/64/question.png has changed
    --- a/pidgin/pixmaps/dialogs/64/scalable/cool.svg Wed Sep 19 03:28:52 2007 +0000
    +++ b/pidgin/pixmaps/dialogs/64/scalable/cool.svg Wed Sep 19 03:30:40 2007 +0000
    @@ -7,101 +7,25 @@
    xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
    xmlns:xlink="http://www.w3.org/1999/xlink"
    - xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/s odipodi-0.dtd"
    + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
    - width="64"
    - height="64"
    + width="48"
    + height="48"
    id="svg2"
    sodipodi:version="0.32"
    - inkscape:version="0.43"
    + inkscape:version="0.45"
    version="1.0"
    - sodipodi:docbase="/home/hbons/Desktop/Gaim Refresh/dialogs"
    + sodipodi:docbase="/home/hbons/Desktop/2.1.1/dialogs"
    sodipodi:docname="dialog-cool.svg"
    - inkscape:export-filename="/home/hbons/Desktop/Gaim Refresh/dialogs/dialog-cool.png"
    + inkscape:export-filename="/home/hbons/Desktop/newstyle.png"
    inkscape:export-xdpi="90"
    - inkscape:export-ydpi="90">
    + inkscape:export-ydpi="90"
    + inkscape:output_extension="org.inkscape.output.svg.inkscape"
    + sodipodi:modified="true">
    <defs
    id="defs4">
    <linearGradient
    inkscape:collect="always"
    - id="linearGradient2351">
    - <stop
    - style="stop-color:#eeeeec;stop-opacity:1;"
    - offset="0"
    - id="stop2353" />
    - <stop
    - style="stop-color:#eeeeec;stop-opacity:0;"
    - offset="1"
    - id="stop2355" />
    - </linearGradient>
    - <linearGradient
    - inkscape:collect="always"
    - xlink:href="#linearGradient2351"
    - id="linearGradient2357"
    - x1="12.488563"
    - y1="5.8544211"
    - x2="12.488563"
    - y2="19.066195"
    - gradientUnits="userSpaceOnUse"
    - gradientTransform="translate(60.97357,13.05831)" />
    - <linearGradient
    - inkscape:collect="always"
    - id="linearGradient2343">
    - <stop
    - style="stop-color:#babdb6;stop-opacity:1;"
    - offset="0"
    - id="stop2345" />
    - <stop
    - style="stop-color:#babdb6;stop-opacity:0;"
    - offset="1"
    - id="stop2347" />
    - </linearGradient>
    - <linearGradient
    - inkscape:collect="always"
    - xlink:href="#linearGradient2343"
    - id="linearGradient2349"
    - x1="12.515625"
    - y1="8.7261219"
    - x2="12.515625"
    - y2="0.68458056"
    - gradientUnits="userSpaceOnUse"
    - gradientTransform="matrix(0.99284,0,0,1,61.04756,13.09375)" />
    - <linearGradient
    - inkscape:collect="always"
    - id="linearGradient3121">
    - <stop
    - style="stop-color:#d3d7cf;stop-opacity:1;"
    - offset="0"
    - id="stop3123" />
    - <stop
    - style="stop-color:#d3d7cf;stop-opacity:0;"
    - offset="1"
    - id="stop3125" />
    - </linearGradient>
    - <linearGradient
    - inkscape:collect="always"
    - id="linearGradient3816">
    - <stop
    - style="stop-color:#000000;stop-opacity:1;"
    - offset="0"
    - id="stop3818" />
    - <stop
    - style="stop-color:#000000;stop-opacity:0;"
    - offset="1"
    - id="stop3820" />
    - </linearGradient>
    - <radialGradient
    - inkscape:collect="always"
    - xlink:href="#linearGradient3816"
    - id="radialGradient3822"
    - cx="31.112698"
    - cy="19.008621"
    - fx="31.112698"
    - fy="19.008621"
    - r="8.6620579"
    - gradientUnits="userSpaceOnUse" />
    - <linearGradient
    - inkscape:collect="always"
    id="linearGradient3104">
    <stop
    style="stop-color:#eeeeec;stop-opacity:1;"
    @@ -123,15 +47,380 @@
    r="9.975256"
    gradientUnits="userSpaceOnUse"
    gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
    + <filter
    + inkscape:collect="always"
    + x="-0.27879593"
    + width="1.5575919"
    + y="-0.78248727"
    + height="2.5649745"
    + id="filter3405">
    + <feGaussianBlur
    + inkscape:collect="always"
    + stdDeviation="1.5438116"
    + id="feGaussianBlur3407" />
    + </filter>
    + <radialGradient
    + r="9.975256"
    + fy="18.005522"
    + fx="8.7359829"
    + cy="18.005522"
    + cx="8.7359829"
    + gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
    + gradientUnits="userSpaceOnUse"
    + id="radialGradient2247"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    + <linearGradient
    + inkscape:collect="always"
    + id="linearGradient3263">
    + <stop
    + style="stop-color:#555753;stop-opacity:1;"
    + offset="0"
    + id="stop3265" />
    + <stop
    + style="stop-color:#555753;stop-opacity:0;"
    + offset="1"
    + id="stop3267" />
    + </linearGradient>
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient2216"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
    + <linearGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3263"
    + id="linearGradient3269"
    + x1="12.845698"
    + y1="16.037401"
    + x2="10.698112"
    + y2="15.449714"
    + gradientUnits="userSpaceOnUse" />
    + <radialGradient
    + r="9.975256"
    + fy="18.005522"
    + fx="8.7359829"
    + cy="18.005522"
    + cx="8.7359829"
    + gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
    + gradientUnits="userSpaceOnUse"
    + id="radialGradient3191"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    + <linearGradient
    + inkscape:collect="always"
    + id="linearGradient3150">
    + <stop
    + style="stop-color:#2e3436;stop-opacity:1;"
    + offset="0"
    + id="stop3152" />
    + <stop
    + style="stop-color:#2e3436;stop-opacity:0;"
    + offset="1"
    + id="stop3154" />
    + </linearGradient>
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient3175"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3150"
    + id="radialGradient3156"
    + cx="10.748654"
    + cy="10.457643"
    + fx="10.748654"
    + fy="10.457643"
    + r="6.6449099"
    + gradientTransform="matrix(-0.842757,0,0,-0.35721,19.80716,14.19321)"
    + gradientUnits="userSpaceOnUse" />
    + <radialGradient
    + gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
    + gradientUnits="userSpaceOnUse"
    + r="9.975256"
    + fy="18.005522"
    + fx="8.7359829"
    + cy="18.005522"
    + cx="8.7359829"
    + id="radialGradient2214"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient2255"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256" />
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient3313"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
    + <radialGradient
    + r="2.5781252"
    + fy="11.083743"
    + fx="17.911736"
    + cy="11.083743"
    + cx="17.911736"
    + gradientTransform="matrix(-1.591138,1.574803,-1.783257,-1.76495,68.854751,-2.8442229)"
    + gradientUnits="userSpaceOnUse"
    + id="radialGradient2259"
    + xlink:href="#linearGradient2382"
    + inkscape:collect="always" />
    + <linearGradient
    + inkscape:collect="always"
    + id="linearGradient2867">
    + <stop
    + style="stop-color:#d3d7cf;stop-opacity:1;"
    + offset="0"
    + id="stop2869" />
    + <stop
    + style="stop-color:#d3d7cf;stop-opacity:0;"
    + offset="1"
    + id="stop2871" />
    + </linearGradient>
    + <linearGradient
    + inkscape:collect="always"
    + id="linearGradient2847">
    + <stop
    + style="stop-color:#888a85;stop-opacity:1;"
    + offset="0"
    + id="stop2849" />
    + <stop
    + style="stop-color:#888a85;stop-opacity:0;"
    + offset="1"
    + id="stop2851" />
    + </linearGradient>
    + <linearGradient
    + inkscape:collect="always"
    + id="linearGradient2382">
    + <stop
    + style="stop-color:#d3d7cf;stop-opacity:1;"
    + offset="0"
    + id="stop2384" />
    + <stop
    + style="stop-color:#d3d7cf;stop-opacity:0;"
    + offset="1"
    + id="stop2386" />
    + </linearGradient>
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient2230"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
    + <linearGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient2847"
    + id="linearGradient2853"
    + x1="12.5"
    + y1="18.202251"
    + x2="12.746171"
    + y2="20.761486"
    + gradientUnits="userSpaceOnUse" />
    + <linearGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient2867"
    + id="linearGradient2873"
    + x1="12.720216"
    + y1="20.952612"
    + x2="12.720216"
    + y2="17.682426"
    + gradientUnits="userSpaceOnUse" />
    + <radialGradient
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + gradientUnits="userSpaceOnUse"
    + r="9.975256"
    + fy="14.186539"
    + fx="8.3343515"
    + cy="14.186539"
    + cx="8.3343515"
    + id="radialGradient2303"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient2349"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256" />
    + <radialGradient
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + gradientUnits="userSpaceOnUse"
    + r="9.975256"
    + fy="14.186539"
    + fx="8.3343515"
    + cy="14.186539"
    + cx="8.3343515"
    + id="radialGradient2233"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient2264"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256" />
    + <radialGradient
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + gradientUnits="userSpaceOnUse"
    + r="9.975256"
    + fy="14.186539"
    + fx="8.3343515"
    + cy="14.186539"
    + cx="8.3343515"
    + id="radialGradient3771"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    + <radialGradient
    + gradientUnits="userSpaceOnUse"
    + r="8.6620579"
    + fy="19.008621"
    + fx="31.112698"
    + cy="19.008621"
    + cx="31.112698"
    + id="radialGradient3822"
    + xlink:href="#linearGradient3816"
    + inkscape:collect="always" />
    + <linearGradient
    + id="linearGradient3816"
    + inkscape:collect="always">
    + <stop
    + id="stop3818"
    + offset="0"
    + style="stop-color:#000000;stop-opacity:1;" />
    + <stop
    + id="stop3820"
    + offset="1"
    + style="stop-color:#000000;stop-opacity:0;" />
    + </linearGradient>
    + <linearGradient
    + id="linearGradient3121"
    + inkscape:collect="always">
    + <stop
    + id="stop3123"
    + offset="0"
    + style="stop-color:#d3d7cf;stop-opacity:1;" />
    + <stop
    + id="stop3125"
    + offset="1"
    + style="stop-color:#d3d7cf;stop-opacity:0;" />
    + </linearGradient>
    + <linearGradient
    + gradientTransform="matrix(0.99284,0,0,1,61.04756,13.09375)"
    + gradientUnits="userSpaceOnUse"
    + y2="0.68458056"
    + x2="12.515625"
    + y1="8.7261219"
    + x1="12.515625"
    + id="linearGradient2349"
    + xlink:href="#linearGradient2343"
    + inkscape:collect="always" />
    + <linearGradient
    + id="linearGradient2343"
    + inkscape:collect="always">
    + <stop
    + id="stop2345"
    + offset="0"
    + style="stop-color:#babdb6;stop-opacity:1;" />
    + <stop
    + id="stop2347"
    + offset="1"
    + style="stop-color:#babdb6;stop-opacity:0;" />
    + </linearGradient>
    + <linearGradient
    + gradientTransform="translate(60.97357,13.05831)"
    + gradientUnits="userSpaceOnUse"
    + y2="19.066195"
    + x2="12.488563"
    + y1="5.8544211"
    + x1="12.488563"
    + id="linearGradient2357"
    + xlink:href="#linearGradient2351"
    + inkscape:collect="always" />
    + <linearGradient
    + id="linearGradient2351"
    + inkscape:collect="always">
    + <stop
    + id="stop2353"
    + offset="0"
    + style="stop-color:#eeeeec;stop-opacity:1;" />
    + <stop
    + id="stop2355"
    + offset="1"
    + style="stop-color:#eeeeec;stop-opacity:0;" />
    + </linearGradient>
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient3794"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256" />
    <linearGradient
    inkscape:collect="always"
    xlink:href="#linearGradient3121"
    - id="linearGradient1551"
    + id="linearGradient3802"
    gradientUnits="userSpaceOnUse"
    x1="42.925175"
    y1="40.136646"
    x2="42.925175"
    y2="15.474488" />
    + <filter
    + inkscape:collect="always"
    + x="-0.47282609"
    + width="1.9456522"
    + y="-0.47282609"
    + height="1.9456522"
    + id="filter4019">
    + <feGaussianBlur
    + inkscape:collect="always"
    + stdDeviation="1.552286"
    + id="feGaussianBlur4021" />
    + </filter>
    </defs>
    <sodipodi:namedview
    id="base"
    @@ -140,17 +429,19 @@
    borderopacity="1.0"
    inkscape:pageopacity="0.0"
    inkscape:pageshadow="2"
    - inkscape:zoom="12.003863"
    - inkscape:cx="43.074856"
    - inkscape:cy="35.626159"
    + inkscape:zoom="15.839192"
    + inkscape:cx="40.272536"
    + inkscape:cy="20.18158"
    inkscape:document-units="px"
    inkscape:current-layer="layer1"
    showgrid="true"
    - fill="#555753"
    - inkscape:window-width="1267"
    - inkscape:window-height="971"
    - inkscape:window-x="6"
    - inkscape:window-y="21" />
    + fill="#fce94f"
    + inkscape:window-width="1440"
    + inkscape:window-height="847"
    + inkscape:window-x="3"
    + inkscape:window-y="25"
    + width="48px"
    + height="48px" />
    <metadata
    id="metadata7">
    <rdf:RDF>
    @@ -167,25 +458,25 @@
    inkscape:groupmode="layer"
    id="layer1">
    <path
    - d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.45064,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z"
    - sodipodi:ry="8.6620579"
    - sodipodi:rx="8.6620579"
    - sodipodi:cy="19.008621"
    - sodipodi:cx="31.112698"
    - id="path4318"
    - style="opacity:0.5;color:#000000;fill:url(#radialGradient3822);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
    sodipodi:type="arc"
    - transform="matrix(2.383972,0,0,1.117487,-53.5217,33.04541)" />
    + style="opacity:0.64044949;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter3405)"
    + id="path3140"
    + sodipodi:cx="10.748654"
    + sodipodi:cy="10.457643"
    + sodipodi:rx="6.6449099"
    + sodipodi:ry="2.3675451"
    + d="M 17.393564 10.457643 A 6.6449099 2.3675451 0 1 1 4.1037445,10.457643 A 6.6449099 2.3675451 0 1 1 17.393564 10.457643 z"
    + transform="matrix(2.2723916,0,0,1.6905173,-0.1758194,23.510748)" />
    <path
    sodipodi:type="arc"
    - style="opacity:1;fill:#edd400;fill-opacity:1;stroke:#f57900;stroke-width:0.53913006;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + style="opacity:1;fill:#edd400;fill-opacity:1;stroke:#cc6400;stroke-width:0.55559433;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    id="path1307"
    sodipodi:cx="11.806158"
    sodipodi:cy="10.983024"
    sodipodi:rx="9.975256"
    sodipodi:ry="9.975256"
    d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1 1.8309021,10.983024 A 9.975256 9.975256 0 1 1 21.781414 10.983024 z"
    - transform="matrix(1.854646,0,0,1.855034,-0.899768,22.62707)" />
    + transform="matrix(1.8043406,0,0,1.8043406,3.1976696,7.6828846)" />
    <path
    sodipodi:type="arc"
    style="opacity:0.79545456;fill:url(#radialGradient3114);fill-opacity:1;stroke:none;stroke-width:1.05274069;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    @@ -195,98 +486,215 @@
    sodipodi:rx="9.975256"
    sodipodi:ry="9.975256"
    d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1 1.8309021,10.983024 A 9.975256 9.975256 0 1 1 21.781414 10.983024 z"
    - transform="matrix(1.704217,0,0,1.704217,0.879746,24.28255)" />
    + transform="matrix(1.6958412,0,0,1.6958412,4.3182736,9.0348912)" />
    <path
    sodipodi:type="arc"
    - style="opacity:0.5;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.57006598;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.58677971;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    id="path2184"
    sodipodi:cx="11.806158"
    sodipodi:cy="10.983024"
    sodipodi:rx="9.975256"
    sodipodi:ry="9.975256"
    d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1 1.8309021,10.983024 A 9.975256 9.975256 0 1 1 21.781414 10.983024 z"
    - transform="matrix(1.75441,0,0,1.753957,0.28417,23.73792)" />
    + transform="matrix(1.7042169,0,0,1.7042169,4.3797455,8.7825453)" />
    + <path
    + style="fill:#eeeeec;fill-opacity:1;stroke:#fea523;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1"
    + d="M 23.500001,23.5 C 23.500001,26.26 21.260002,28.500001 18.500001,28.500001 C 15.740001,28.500001 13.5,26.26 13.5,23.5 C 13.5,20.74 15.740001,18.5 18.500001,18.5 C 21.260002,18.5 23.500001,20.74 23.500001,23.5 z "
    + id="path3154" />
    + <path
    + sodipodi:type="arc"
    + style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:0.98640186;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + id="path2172"
    + sodipodi:cx="9.7069349"
    + sodipodi:cy="9.6526775"
    + sodipodi:rx="1.0259361"
    + sodipodi:ry="1.9413869"
    + d="M 10.732871 9.6526775 A 1.0259361 1.9413869 0 1 1 8.6809988,9.6526775 A 1.0259361 1.9413869 0 1 1 10.732871 9.6526775 z"
    + transform="matrix(1.9494387,0,0,1.2877392,1.0769258,12.069869)" />
    + <path
    + sodipodi:type="arc"
    + style="opacity:1;fill:#eeeeec;fill-opacity:1;stroke:#fea523;stroke-width:0.282258;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + id="path3152"
    + sodipodi:cx="9.7069349"
    + sodipodi:cy="9.6526775"
    + sodipodi:rx="1.0259361"
    + sodipodi:ry="1.9413869"
    + d="M 10.732871 9.6526775 A 1.0259361 1.9413869 0 1 1 8.6809988,9.6526775 A 1.0259361 1.9413869 0 1 1 10.732871 9.6526775 z"
    + transform="matrix(4.8735976,0,0,2.5754783,-16.807694,-1.3602618)" />
    + <path
    + sodipodi:type="arc"
    + style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:0.98640186;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + id="path3148"
    + sodipodi:cx="9.7069349"
    + sodipodi:cy="9.6526775"
    + sodipodi:rx="1.0259361"
    + sodipodi:ry="1.9413869"
    + d="M 10.732871 9.6526775 A 1.0259361 1.9413869 0 1 1 8.6809988,9.6526775 A 1.0259361 1.9413869 0 1 1 10.732871 9.6526775 z"
    + transform="matrix(1.9494393,0,0,1.2877392,10.076919,12.069869)" />
    + <path
    + style="opacity:1;fill:#ce5c00;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + d="M 36,31 C 35.958854,34.901861 33.103799,38.559709 28.776926,39.671439 C 24.450054,40.78317 20.070187,38.984235 18,35.624852 C 24.906148,40.499205 32.307884,37.963138 36,31 z "
    + id="path2186"
    + sodipodi:nodetypes="cscc" />
    + <path
    + sodipodi:type="arc"
    + style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#f57900;stroke-width:0.3774938;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + id="path2259"
    + sodipodi:cx="8.3258924"
    + sodipodi:cy="9.2232141"
    + sodipodi:rx="1.2276785"
    + sodipodi:ry="1.7410715"
    + d="M 7.2133909,8.4869402 A 1.2276785,1.7410715 0 0 1 9.288462,8.1425499"
    + transform="matrix(3.5277688,0.705265,-0.6665314,1.855957,7.1597185,-7.1449202)"
    + sodipodi:start="3.5782199"
    + sodipodi:end="5.6135639"
    + sodipodi:open="true" />
    <path
    - style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    - d="M 32,46 C 30.709742,51.13847 26.288403,55 21.000001,55 C 15.7116,55 11.290259,51.13847 10,46 C 12.318243,49.327326 16.389775,52.419284 21.000001,52.419284 C 25.610224,52.419285 29.681757,49.327326 32,46 z "
    - id="path2186"
    + sodipodi:type="arc"
    + style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#f57900;stroke-width:0.3774938;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + id="path2261"
    + sodipodi:cx="8.3258924"
    + sodipodi:cy="9.2232141"
    + sodipodi:rx="1.2276785"
    + sodipodi:ry="1.7410715"
    + d="M 7.2133909,8.4869402 A 1.2276785,1.7410715 0 0 1 9.288462,8.1425499"
    + transform="matrix(-3.5277688,0.705265,0.6665314,1.855957,41.208475,-4.1630498)"
    + sodipodi:start="3.5782199"
    + sodipodi:end="5.6135639"
    + sodipodi:open="true" />
    + <path
    + d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.45064,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z"
    + sodipodi:ry="8.6620579"
    + sodipodi:rx="8.6620579"
    + sodipodi:cy="19.008621"
    + sodipodi:cx="31.112698"
    + id="path4318"
    + style="opacity:0.5;color:#000000;fill:url(#radialGradient3822);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
    + sodipodi:type="arc"
    + transform="matrix(2.383972,0,0,1.117487,-126.51617,-6.51091)" />
    + <path
    + sodipodi:type="arc"
    + style="fill:#edd400;fill-opacity:1;stroke:#f57900;stroke-width:0.53913003;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + id="path3777"
    + sodipodi:cx="11.806158"
    + sodipodi:cy="10.983024"
    + sodipodi:rx="9.975256"
    + sodipodi:ry="9.975256"
    + d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1 1.8309021,10.983024 A 9.975256 9.975256 0 1 1 21.781414 10.983024 z"
    + transform="matrix(1.854646,0,0,1.855034,-73.894233,-16.92925)" />
    + <path
    + sodipodi:type="arc"
    + style="opacity:0.79545456;fill:url(#radialGradient3794);fill-opacity:1;stroke:none;stroke-width:1.05274069;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + id="path3779"
    + sodipodi:cx="11.806158"
    + sodipodi:cy="10.983024"
    + sodipodi:rx="9.975256"
    + sodipodi:ry="9.975256"
    + d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1 1.8309021,10.983024 A 9.975256 9.975256 0 1 1 21.781414 10.983024 z"
    + transform="matrix(1.704217,0,0,1.704217,-72.114719,-15.27377)" />
    + <path
    + sodipodi:type="arc"
    + style="opacity:0.5;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.57006598;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + id="path3781"
    + sodipodi:cx="11.806158"
    + sodipodi:cy="10.983024"
    + sodipodi:rx="9.975256"
    + sodipodi:ry="9.975256"
    + d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1 1.8309021,10.983024 A 9.975256 9.975256 0 1 1 21.781414 10.983024 z"
    + transform="matrix(1.75441,0,0,1.753957,-72.710295,-15.8184)" />
    + <path
    + style="fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + d="M -40.994465,6.44368 C -42.284723,11.58215 -46.706062,15.44368 -51.994464,15.44368 C -57.282865,15.44368 -61.704206,11.58215 -62.994465,6.44368 C -60.676222,9.771006 -56.60469,12.862964 -51.994464,12.862964 C -47.384241,12.862965 -43.312708,9.771006 -40.994465,6.44368 z "
    + id="path3783"
    sodipodi:nodetypes="cscsc" />
    <path
    sodipodi:type="arc"
    - style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + style="fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    id="path2191"
    sodipodi:cx="9.0598059"
    sodipodi:cy="8.7845774"
    sodipodi:rx="1.1679889"
    sodipodi:ry="1.4520943"
    d="M 10.227795 8.7845774 A 1.1679889 1.4520943 0 1 1 7.891817,8.7845774 A 1.1679889 1.4520943 0 1 1 10.227795 8.7845774 z"
    - transform="matrix(1.712345,0,0,2.754643,1.486487,14.80163)" />
    + transform="matrix(1.712345,0,0,2.754643,-71.507978,-24.75469)" />
    <path
    sodipodi:type="arc"
    - style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + style="fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    id="path2193"
    sodipodi:cx="9.0598059"
    sodipodi:cy="8.7845774"
    sodipodi:rx="1.1679889"
    sodipodi:ry="1.4520943"
    d="M 10.227795 8.7845774 A 1.1679889 1.4520943 0 1 1 7.891817,8.7845774 A 1.1679889 1.4520943 0 1 1 10.227795 8.7845774 z"
    - transform="matrix(1.712345,0,0,2.754643,9.486483,14.80163)" />
    + transform="matrix(1.712345,0,0,2.754643,-63.507982,-24.75469)" />
    <path
    - style="opacity:0.78977272;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1.66300178;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    - d="M 6,37 C 6,41.951923 9.359998,46 13.499999,46 C 17.413598,46 20.659892,42.352213 21,37.773438 C 21.340107,42.352213 24.586402,46 28.499999,46 C 32.640004,46 36,41.951923 36,37 L 21,37 L 6,37 z "
    - id="path2264" />
    - <path
    - style="color:#000000;fill:#eeeeec;fill-opacity:1;fill-rule:evenodd;stroke:#787878;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;stroke-dasharray:none"
    - d="M 44.078659,9.5112136 C 34.84342,9.8834971 27.500059,15.977362 27.500059,23.405814 C 27.500059,27.671183 29.253586,32.180745 33.0662,34.729626 C 33.874807,38.292011 31.54507,41.058776 31.141507,41.494102 C 31.871844,41.290557 37.643487,39.670532 39.808221,37.260561 C 41.990193,37.168054 43.23089,37.300418 44.997262,37.300418 C 54.649949,37.300418 62.494467,31.073895 62.494465,23.405814 C 62.494465,15.737733 54.649949,9.5112136 44.997262,9.5112136 C 44.695616,9.5112136 44.37657,9.4992035 44.078659,9.5112136 z "
    + style="color:#000000;fill:#eeeeec;fill-opacity:1;fill-rule:evenodd;stroke:#787878;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
    + d="M -28.915806,-30.045106 C -38.151045,-29.672823 -45.494406,-23.578958 -45.494406,-16.150506 C -45.494406,-11.885137 -43.740879,-7.375575 -39.928265,-4.826694 C -39.119658,-1.264309 -41.449395,1.502456 -41.852958,1.937782 C -41.122621,1.734237 -35.350978,0.114212 -33.186244,-2.295759 C -31.004272,-2.388266 -29.763575,-2.255902 -27.997203,-2.255902 C -18.344516,-2.255902 -10.499998,-8.482425 -10.5,-16.150506 C -10.5,-23.818587 -18.344516,-30.045106 -27.997203,-30.045106 C -28.298849,-30.045106 -28.617895,-30.057116 -28.915806,-30.045106 z "
    id="path13316"
    sodipodi:nodetypes="cscccsssc" />
    <path
    sodipodi:type="inkscape:offset"
    inkscape:radius="-1.0020103"
    - inkscape:original="M 44.09375 9.5 C 34.858511 9.8722838 27.5 15.977798 27.5 23.40625 C 27.5 27.67162 29.249886 32.169869 33.0625 34.71875 C 33.871107 38.281135 31.559813 41.064674 31.15625 41.5 C 31.886588 41.296455 37.647766 39.659971 39.8125 37.25 C 41.994473 37.157491 43.233628 37.3125 45 37.3125 C 54.652688 37.312499 62.500002 31.074331 62.5 23.40625 C 62.5 15.73817 54.652687 9.5 45 9.5 C 44.698355 9.5000003 44.391661 9.4879899 44.09375 9.5 z "
    + inkscape:original="M -28.90625 -30.03125 C -38.141489 -29.658966 -45.5 -23.584702 -45.5 -16.15625 C -45.499998 -11.890882 -43.750114 -7.361381 -39.9375 -4.8125 C -39.128893 -1.250115 -41.440187 1.502174 -41.84375 1.9375 C -41.113412 1.733955 -35.352234 0.128721 -33.1875 -2.28125 C -31.005527 -2.373757 -29.766372 -2.25 -28 -2.25 C -18.347312 -2.2499999 -10.499998 -8.488169 -10.5 -16.15625 C -10.5 -23.824332 -18.347313 -30.03125 -28 -30.03125 C -28.301645 -30.031249 -28.608339 -30.04326 -28.90625 -30.03125 z "
    xlink:href="#path13316"
    style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
    id="path13323"
    inkscape:href="#path13316"
    - d="M 43.9375,10.5 C 35.082559,10.856667 28.28125,16.643774 28.28125,23.4375 C 28.28125,27.441186 29.946384,31.636673 33.4375,33.96875 C 33.648247,34.117093 33.793739,34.340928 33.84375,34.59375 C 34.305353,36.625753 33.873291,38.418899 33.28125,39.75 C 33.741286,39.588469 33.859625,39.584381 34.375,39.375 C 36.123726,38.664548 38.008731,37.651133 38.875,36.6875 C 39.056781,36.478508 39.316956,36.354077 39.59375,36.34375 C 41.847992,36.248256 43.128683,36.40625 44.84375,36.40625 C 54.103198,36.406251 61.406252,30.447219 61.40625,23.4375 C 61.406249,16.427779 54.105354,10.5 44.84375,10.5 C 44.5143,10.499999 44.179676,10.490245 43.9375,10.5 z " />
    + d="M 44.125,10.5 C 35.308909,10.855387 28.5,16.639515 28.5,23.40625 C 28.5,27.397567 30.147439,31.550115 33.625,33.875 C 33.835747,34.023343 33.981239,34.247178 34.03125,34.5 C 34.490803,36.524599 34.051533,38.324325 33.46875,39.65625 C 33.930328,39.493414 34.045022,39.492531 34.5625,39.28125 C 36.305088,38.56977 38.200088,37.553862 39.0625,36.59375 C 39.244281,36.384758 39.504456,36.260327 39.78125,36.25 C 42.026592,36.154804 43.292249,36.3125 45,36.3125 C 54.22098,36.312499 61.500002,30.39071 61.5,23.40625 C 61.5,16.421791 54.220979,10.5 45,10.5 C 44.671757,10.5 44.368389,10.490188 44.125,10.5 z "
    + transform="translate(-72.994465,-39.55632)" />
    <path
    sodipodi:type="inkscape:offset"
    inkscape:radius="-1.0109046"
    - inkscape:original="M 44.09375 9.5 C 34.858511 9.8722838 27.5 15.977798 27.5 23.40625 C 27.5 27.67162 29.249886 32.169869 33.0625 34.71875 C 33.871107 38.281135 31.559813 41.064674 31.15625 41.5 C 31.886588 41.296455 37.647766 39.659971 39.8125 37.25 C 41.994473 37.157491 43.233628 37.3125 45 37.3125 C 54.652688 37.312499 62.500002 31.074331 62.5 23.40625 C 62.5 15.73817 54.652687 9.5 45 9.5 C 44.698355 9.5000003 44.391661 9.4879899 44.09375 9.5 z "
    + inkscape:original="M -28.90625 -30.03125 C -38.141489 -29.658966 -45.5 -23.584702 -45.5 -16.15625 C -45.499998 -11.890882 -43.750114 -7.361381 -39.9375 -4.8125 C -39.128893 -1.250115 -41.440187 1.502174 -41.84375 1.9375 C -41.113412 1.733955 -35.352234 0.128721 -33.1875 -2.28125 C -31.005527 -2.373757 -29.766372 -2.25 -28 -2.25 C -18.347312 -2.2499999 -10.499998 -8.488169 -10.5 -16.15625 C -10.5 -23.824332 -18.347313 -30.03125 -28 -30.03125 C -28.301645 -30.031249 -28.608339 -30.04326 -28.90625 -30.03125 z "
    xlink:href="#path13316"
    - style="opacity:1;color:#000000;fill:url(#linearGradient1551);fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;stroke-dasharray:none"
    + style="color:#000000;fill:url(#linearGradient3802);fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
    id="path1336"
    inkscape:href="#path13316"
    - d="M 43.9375,10.5 C 35.086269,10.856517 28.28125,16.649624 28.28125,23.4375 C 28.28125,27.43874 29.949375,31.638672 33.4375,33.96875 C 33.659358,34.111954 33.816384,34.336276 33.875,34.59375 C 34.337119,36.628026 33.873842,38.417659 33.28125,39.75 C 33.741161,39.588512 33.859781,39.584317 34.375,39.375 C 36.123195,38.664763 38.010688,37.617706 38.875,36.65625 C 39.06282,36.459679 39.321894,36.347038 39.59375,36.34375 C 41.848554,36.248232 43.129202,36.40625 44.84375,36.40625 C 54.099359,36.406251 61.406252,30.441153 61.40625,23.4375 C 61.406249,16.433845 54.101534,10.5 44.84375,10.5 C 44.514064,10.499999 44.17917,10.490265 43.9375,10.5 z " />
    + d="M 44.125,10.5 C 35.31263,10.855237 28.5,16.645389 28.5,23.40625 C 28.5,27.395135 30.150413,31.552103 33.625,33.875 C 33.846858,34.018204 34.003884,34.242526 34.0625,34.5 C 34.519684,36.514161 34.077673,38.294264 33.5,39.625 C 33.948389,39.466107 34.062909,39.485228 34.5625,39.28125 C 36.304559,38.569986 38.202041,37.520438 39.0625,36.5625 C 39.25032,36.365929 39.509394,36.253288 39.78125,36.25 C 42.027154,36.154781 43.29277,36.3125 45,36.3125 C 54.217148,36.312499 61.500002,30.384642 61.5,23.40625 C 61.5,16.427859 54.217147,10.5 45,10.5 C 44.671521,10.5 44.367905,10.490207 44.125,10.5 z "
    + transform="translate(-72.994465,-39.55632)" />
    <path
    sodipodi:type="arc"
    - style="opacity:1;fill:#555753;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + style="fill:#555753;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    id="path1397"
    sodipodi:cx="9.0598059"
    sodipodi:cy="8.7845774"
    sodipodi:rx="1.1679889"
    sodipodi:ry="1.4520943"
    d="M 10.227795 8.7845774 A 1.1679889 1.4520943 0 1 1 7.891817,8.7845774 A 1.1679889 1.4520943 0 1 1 10.227795 8.7845774 z"
    - transform="matrix(0.856174,0,0,0.688661,33.24323,22.95041)" />
    + transform="matrix(0.856174,0,0,0.688661,-39.751235,-16.60591)" />
    <path
    sodipodi:type="arc"
    - style="opacity:1;fill:#555753;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + style="fill:#555753;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    id="path1403"
    sodipodi:cx="9.0598059"
    sodipodi:cy="8.7845774"
    sodipodi:rx="1.1679889"
    sodipodi:ry="1.4520943"
    d="M 10.227795 8.7845774 A 1.1679889 1.4520943 0 1 1 7.891817,8.7845774 A 1.1679889 1.4520943 0 1 1 10.227795 8.7845774 z"
    - transform="matrix(0.856172,0,0,0.688662,37.24325,22.9504)" />
    + transform="matrix(0.856172,0,0,0.688662,-35.751215,-16.60592)" />
    <path
    sodipodi:type="arc"
    - style="opacity:1;fill:#555753;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + style="fill:#555753;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    id="path1405"
    sodipodi:cx="9.0598059"
    sodipodi:cy="8.7845774"
    sodipodi:rx="1.1679889"
    sodipodi:ry="1.4520943"
    d="M 10.227795 8.7845774 A 1.1679889 1.4520943 0 1 1 7.891817,8.7845774 A 1.1679889 1.4520943 0 1 1 10.227795 8.7845774 z"
    - transform="matrix(0.856173,0,0,0.688662,41.24324,22.95039)" />
    + transform="matrix(0.856173,0,0,0.688662,-31.751225,-16.60593)" />
    + <path
    + style="opacity:0.78977272;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1.66300178;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + d="M 6.9375 23 C 6.6605 23 6.4375 23.223 6.4375 23.5 C 6.4375 23.777 6.6605 24 6.9375 24 L 11.0625 24 C 11.531404 27.382552 14.351819 30 17.75 30 C 21.272241 30 24.193903 27.155019 24.5 23.59375 C 24.806096 27.15502 27.727762 30 31.25 30 C 34.648185 30 37.468596 27.382552 37.9375 24 L 42.0625 24 C 42.3395 24 42.5625 23.777 42.5625 23.5 C 42.5625 23.223 42.3395 23 42.0625 23 L 38 23 L 24.5 23 L 11.5 23 L 11 23 L 6.9375 23 z "
    + id="path2264" />
    + <path
    + sodipodi:type="arc"
    + style="opacity:1;fill:#eeeeec;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter4019)"
    + id="path3813"
    + sodipodi:cx="13.826463"
    + sodipodi:cy="24.19828"
    + sodipodi:rx="3.2829957"
    + sodipodi:ry="3.2829957"
    + d="M 17.109458 24.19828 A 3.2829957 3.2829957 0 1 1 10.543467,24.19828 A 3.2829957 3.2829957 0 1 1 17.109458 24.19828 z"
    + transform="matrix(0.9137996,0,0,0.9137994,-1.6346163,0.8876255)" />
    </g>
    </svg>
    --- a/pidgin/pixmaps/dialogs/64/scalable/error.svg Wed Sep 19 03:28:52 2007 +0000
    +++ b/pidgin/pixmaps/dialogs/64/scalable/error.svg Wed Sep 19 03:30:40 2007 +0000
    @@ -7,101 +7,25 @@
    xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
    xmlns:xlink="http://www.w3.org/1999/xlink"
    - xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/s odipodi-0.dtd"
    + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
    - width="64"
    - height="64"
    + width="48"
    + height="48"
    id="svg2"
    sodipodi:version="0.32"
    - inkscape:version="0.43"
    + inkscape:version="0.45"
    version="1.0"
    - sodipodi:docbase="/home/hbons/Desktop"
    - sodipodi:docname="dialog-error.svg"
    - inkscape:export-filename="/home/hbons/Desktop/dialog-warning.png"
    + sodipodi:docbase="/home/hbons/Desktop/2.1.1/dialogs"
    + sodipodi:docname="dialog--error.svg"
    + inkscape:export-filename="/home/hbons/Desktop/newstyle.png"
    inkscape:export-xdpi="90"
    - inkscape:export-ydpi="90">
    + inkscape:export-ydpi="90"
    + inkscape:output_extension="org.inkscape.output.svg.inkscape"
    + sodipodi:modified="true">
    <defs
    id="defs4">
    <linearGradient
    inkscape:collect="always"
    - id="linearGradient2239">
    - <stop
    - style="stop-color:#ffffff;stop-opacity:1;"
    - offset="0"
    - id="stop2241" />
    - <stop
    - style="stop-color:#ffffff;stop-opacity:0;"
    - offset="1"
    - id="stop2243" />
    - </linearGradient>
    - <linearGradient
    - inkscape:collect="always"
    - xlink:href="#linearGradient2239"
    - id="linearGradient2245"
    - x1="15.535398"
    - y1="1.8014067"
    - x2="15.535398"
    - y2="48.674999"
    - gradientUnits="userSpaceOnUse"
    - gradientTransform="matrix(0.667328,0,0,0.667328,34.82201,12.82201)" />
    - <linearGradient
    - inkscape:collect="always"
    - id="linearGradient2186">
    - <stop
    - style="stop-color:#ffffff;stop-opacity:1;"
    - offset="0"
    - id="stop2188" />
    - <stop
    - style="stop-color:#ffffff;stop-opacity:0;"
    - offset="1"
    - id="stop2190" />
    - </linearGradient>
    - <linearGradient
    - inkscape:collect="always"
    - xlink:href="#linearGradient2186"
    - id="linearGradient2194"
    - x1="11.226587"
    - y1="-5.4832759"
    - x2="11.226587"
    - y2="17.697369"
    - gradientUnits="userSpaceOnUse"
    - gradientTransform="matrix(0.946132,0,0,0.946123,34.14115,12.15018)" />
    - <linearGradient
    - inkscape:collect="always"
    - id="linearGradient3121">
    - <stop
    - style="stop-color:#d3d7cf;stop-opacity:1;"
    - offset="0"
    - id="stop3123" />
    - <stop
    - style="stop-color:#d3d7cf;stop-opacity:0;"
    - offset="1"
    - id="stop3125" />
    - </linearGradient>
    - <linearGradient
    - inkscape:collect="always"
    - id="linearGradient3816">
    - <stop
    - style="stop-color:#000000;stop-opacity:1;"
    - offset="0"
    - id="stop3818" />
    - <stop
    - style="stop-color:#000000;stop-opacity:0;"
    - offset="1"
    - id="stop3820" />
    - </linearGradient>
    - <radialGradient
    - inkscape:collect="always"
    - xlink:href="#linearGradient3816"
    - id="radialGradient3822"
    - cx="31.112698"
    - cy="19.008621"
    - fx="31.112698"
    - fy="19.008621"
    - r="8.6620579"
    - gradientUnits="userSpaceOnUse" />
    - <linearGradient
    - inkscape:collect="always"
    id="linearGradient3104">
    <stop
    style="stop-color:#eeeeec;stop-opacity:1;"
    @@ -123,15 +47,462 @@
    r="9.975256"
    gradientUnits="userSpaceOnUse"
    gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
    + <filter
    + inkscape:collect="always"
    + x="-0.27879593"
    + width="1.5575919"
    + y="-0.78248727"
    + height="2.5649745"
    + id="filter3405">
    + <feGaussianBlur
    + inkscape:collect="always"
    + stdDeviation="1.5438116"
    + id="feGaussianBlur3407" />
    + </filter>
    + <radialGradient
    + r="9.975256"
    + fy="18.005522"
    + fx="8.7359829"
    + cy="18.005522"
    + cx="8.7359829"
    + gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
    + gradientUnits="userSpaceOnUse"
    + id="radialGradient2247"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    + <linearGradient
    + inkscape:collect="always"
    + id="linearGradient3263">
    + <stop
    + style="stop-color:#555753;stop-opacity:1;"
    + offset="0"
    + id="stop3265" />
    + <stop
    + style="stop-color:#555753;stop-opacity:0;"
    + offset="1"
    + id="stop3267" />
    + </linearGradient>
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient2216"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
    + <linearGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3263"
    + id="linearGradient3269"
    + x1="12.845698"
    + y1="16.037401"
    + x2="10.698112"
    + y2="15.449714"
    + gradientUnits="userSpaceOnUse" />
    + <radialGradient
    + r="9.975256"
    + fy="18.005522"
    + fx="8.7359829"
    + cy="18.005522"
    + cx="8.7359829"
    + gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
    + gradientUnits="userSpaceOnUse"
    + id="radialGradient3191"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    + <linearGradient
    + inkscape:collect="always"
    + id="linearGradient3150">
    + <stop
    + style="stop-color:#2e3436;stop-opacity:1;"
    + offset="0"
    + id="stop3152" />
    + <stop
    + style="stop-color:#2e3436;stop-opacity:0;"
    + offset="1"
    + id="stop3154" />
    + </linearGradient>
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient3175"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3150"
    + id="radialGradient3156"
    + cx="10.748654"
    + cy="10.457643"
    + fx="10.748654"
    + fy="10.457643"
    + r="6.6449099"
    + gradientTransform="matrix(-0.842757,0,0,-0.35721,19.80716,14.19321)"
    + gradientUnits="userSpaceOnUse" />
    + <radialGradient
    + gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
    + gradientUnits="userSpaceOnUse"
    + r="9.975256"
    + fy="18.005522"
    + fx="8.7359829"
    + cy="18.005522"
    + cx="8.7359829"
    + id="radialGradient2214"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient2255"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256" />
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient3313"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
    + <radialGradient
    + r="2.5781252"
    + fy="11.083743"
    + fx="17.911736"
    + cy="11.083743"
    + cx="17.911736"
    + gradientTransform="matrix(-1.591138,1.574803,-1.783257,-1.76495,68.854751,-2.8442229)"
    + gradientUnits="userSpaceOnUse"
    + id="radialGradient2259"
    + xlink:href="#linearGradient2382"
    + inkscape:collect="always" />
    + <linearGradient
    + inkscape:collect="always"
    + id="linearGradient2867">
    + <stop
    + style="stop-color:#d3d7cf;stop-opacity:1;"
    + offset="0"
    + id="stop2869" />
    + <stop
    + style="stop-color:#d3d7cf;stop-opacity:0;"
    + offset="1"
    + id="stop2871" />
    + </linearGradient>
    + <linearGradient
    + inkscape:collect="always"
    + id="linearGradient2847">
    + <stop
    + style="stop-color:#888a85;stop-opacity:1;"
    + offset="0"
    + id="stop2849" />
    + <stop
    + style="stop-color:#888a85;stop-opacity:0;"
    + offset="1"
    + id="stop2851" />
    + </linearGradient>
    + <linearGradient
    + inkscape:collect="always"
    + id="linearGradient2382">
    + <stop
    + style="stop-color:#d3d7cf;stop-opacity:1;"
    + offset="0"
    + id="stop2384" />
    + <stop
    + style="stop-color:#d3d7cf;stop-opacity:0;"
    + offset="1"
    + id="stop2386" />
    + </linearGradient>
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient2230"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
    + <linearGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient2847"
    + id="linearGradient2853"
    + x1="12.5"
    + y1="18.202251"
    + x2="12.746171"
    + y2="20.761486"
    + gradientUnits="userSpaceOnUse" />
    <linearGradient
    inkscape:collect="always"
    - xlink:href="#linearGradient3121"
    - id="linearGradient1551"
    + xlink:href="#linearGradient2867"
    + id="linearGradient2873"
    + x1="12.720216"
    + y1="20.952612"
    + x2="12.720216"
    + y2="17.682426"
    + gradientUnits="userSpaceOnUse" />
    + <radialGradient
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + gradientUnits="userSpaceOnUse"
    + r="9.975256"
    + fy="14.186539"
    + fx="8.3343515"
    + cy="14.186539"
    + cx="8.3343515"
    + id="radialGradient2303"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient2349"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256" />
    + <radialGradient
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + gradientUnits="userSpaceOnUse"
    + r="9.975256"
    + fy="14.186539"
    + fx="8.3343515"
    + cy="14.186539"
    + cx="8.3343515"
    + id="radialGradient2233"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient2264"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256" />
    + <radialGradient
    + r="9.975256"
    + fy="14.186539"
    + fx="8.3343515"
    + cy="14.186539"
    + cx="8.3343515"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + gradientUnits="userSpaceOnUse"
    + id="radialGradient3456"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient3454"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
    + <radialGradient
    + r="9.975256"
    + fy="14.186539"
    + fx="8.3343515"
    + cy="14.186539"
    + cx="8.3343515"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + gradientUnits="userSpaceOnUse"
    + id="radialGradient3452"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient3450"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
    + <linearGradient
    + gradientUnits="userSpaceOnUse"
    + y2="17.682426"
    + x2="12.720216"
    + y1="20.952612"
    + x1="12.720216"
    + id="linearGradient3448"
    + xlink:href="#linearGradient2867"
    + inkscape:collect="always" />
    + <linearGradient
    + gradientUnits="userSpaceOnUse"
    + y2="20.761486"
    + x2="12.746171"
    + y1="18.202251"
    + x1="12.5"
    + id="linearGradient3446"
    + xlink:href="#linearGradient2847"
    + inkscape:collect="always" />
    + <radialGradient
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    gradientUnits="userSpaceOnUse"
    - x1="42.925175"
    - y1="40.136646"
    - x2="42.925175"
    - y2="15.474488" />
    + r="9.975256"
    + fy="14.186539"
    + fx="8.3343515"
    + cy="14.186539"
    + cx="8.3343515"
    + id="radialGradient3444"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient2382"
    + id="radialGradient3424"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-1.591138,1.574803,-1.783257,-1.76495,68.854751,-2.8442229)"
    + cx="17.911736"
    + cy="11.083743"
    + fx="17.911736"
    + fy="11.083743"
    + r="2.5781252" />
    + <radialGradient
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + gradientUnits="userSpaceOnUse"
    + r="9.975256"
    + fy="14.186539"
    + fx="8.3343515"
    + cy="14.186539"
    + cx="8.3343515"
    + id="radialGradient3422"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    + <radialGradient
    + r="9.975256"
    + fy="14.186539"
    + fx="8.3343515"
    + cy="14.186539"
    + cx="8.3343515"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + gradientUnits="userSpaceOnUse"
    + id="radialGradient3420"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient3418"
    + cx="8.7359829"
    + cy="18.005522"
    + fx="8.7359829"
    + fy="18.005522"
    + r="9.975256"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)" />
    + <radialGradient
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.842757,0,0,-0.35721,19.80716,14.19321)"
    + r="6.6449099"
    + fy="10.457643"
    + fx="10.748654"
    + cy="10.457643"
    + cx="10.748654"
    + id="radialGradient3416"
    + xlink:href="#linearGradient3150"
    + inkscape:collect="always" />
    + <radialGradient
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + gradientUnits="userSpaceOnUse"
    + r="9.975256"
    + fy="14.186539"
    + fx="8.3343515"
    + cy="14.186539"
    + cx="8.3343515"
    + id="radialGradient3414"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient3406"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
    + cx="8.7359829"
    + cy="18.005522"
    + fx="8.7359829"
    + fy="18.005522"
    + r="9.975256" />
    + <linearGradient
    + gradientUnits="userSpaceOnUse"
    + y2="15.449714"
    + x2="10.698112"
    + y1="16.037401"
    + x1="12.845698"
    + id="linearGradient3404"
    + xlink:href="#linearGradient3263"
    + inkscape:collect="always" />
    + <radialGradient
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + gradientUnits="userSpaceOnUse"
    + r="9.975256"
    + fy="14.186539"
    + fx="8.3343515"
    + cy="14.186539"
    + cx="8.3343515"
    + id="radialGradient3402"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient3394"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
    + cx="8.7359829"
    + cy="18.005522"
    + fx="8.7359829"
    + fy="18.005522"
    + r="9.975256" />
    + <radialGradient
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + gradientUnits="userSpaceOnUse"
    + r="9.975256"
    + fy="14.186539"
    + fx="8.3343515"
    + cy="14.186539"
    + cx="8.3343515"
    + id="radialGradient3388"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient3479"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256" />
    </defs>
    <sodipodi:namedview
    id="base"
    @@ -140,17 +511,19 @@
    borderopacity="1.0"
    inkscape:pageopacity="0.0"
    inkscape:pageshadow="2"
    - inkscape:zoom="29.556978"
    - inkscape:cx="52.766638"
    - inkscape:cy="42.047904"
    + inkscape:zoom="11.2"
    + inkscape:cx="49.816631"
    + inkscape:cy="24.376627"
    inkscape:document-units="px"
    inkscape:current-layer="layer1"
    showgrid="true"
    - fill="#cc0000"
    - inkscape:window-width="1267"
    - inkscape:window-height="971"
    - inkscape:window-x="6"
    - inkscape:window-y="21" />
    + fill="#fce94f"
    + inkscape:window-width="1440"
    + inkscape:window-height="847"
    + inkscape:window-x="3"
    + inkscape:window-y="25"
    + width="48px"
    + height="48px" />
    <metadata
    id="metadata7">
    <rdf:RDF>
    @@ -167,25 +540,25 @@
    inkscape:groupmode="layer"
    id="layer1">
    <path
    - d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.45064,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z"
    - sodipodi:ry="8.6620579"
    - sodipodi:rx="8.6620579"
    - sodipodi:cy="19.008621"
    - sodipodi:cx="31.112698"
    - id="path4318"
    - style="opacity:0.5;color:#000000;fill:url(#radialGradient3822);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
    sodipodi:type="arc"
    - transform="matrix(2.383972,0,0,1.117487,-53.5217,33.04541)" />
    + style="opacity:0.64044949;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter3405)"
    + id="path3140"
    + sodipodi:cx="10.748654"
    + sodipodi:cy="10.457643"
    + sodipodi:rx="6.6449099"
    + sodipodi:ry="2.3675451"
    + d="M 17.393564 10.457643 A 6.6449099 2.3675451 0 1 1 4.1037445,10.457643 A 6.6449099 2.3675451 0 1 1 17.393564 10.457643 z"
    + transform="matrix(2.2723916,0,0,1.6905173,-0.1758194,23.510748)" />
    <path
    sodipodi:type="arc"
    - style="opacity:1;fill:#edd400;fill-opacity:1;stroke:#f57900;stroke-width:0.53913006;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + style="opacity:1;fill:#edd400;fill-opacity:1;stroke:#cc6400;stroke-width:0.55559433;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    id="path1307"
    sodipodi:cx="11.806158"
    sodipodi:cy="10.983024"
    sodipodi:rx="9.975256"
    sodipodi:ry="9.975256"
    d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1 1.8309021,10.983024 A 9.975256 9.975256 0 1 1 21.781414 10.983024 z"
    - transform="matrix(1.854646,0,0,1.855034,-0.899768,22.62707)" />
    + transform="matrix(1.8043406,0,0,1.8043406,3.1976696,7.6828846)" />
    <path
    sodipodi:type="arc"
    style="opacity:0.79545456;fill:url(#radialGradient3114);fill-opacity:1;stroke:none;stroke-width:1.05274069;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    @@ -195,93 +568,55 @@
    sodipodi:rx="9.975256"
    sodipodi:ry="9.975256"
    d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1 1.8309021,10.983024 A 9.975256 9.975256 0 1 1 21.781414 10.983024 z"
    - transform="matrix(1.704217,0,0,1.704217,0.879746,24.28255)" />
    + transform="matrix(1.6958412,0,0,1.6958412,4.3182736,9.0348912)" />
    <path
    sodipodi:type="arc"
    - style="opacity:0.5;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.57006598;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.58677971;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    id="path2184"
    sodipodi:cx="11.806158"
    sodipodi:cy="10.983024"
    sodipodi:rx="9.975256"
    sodipodi:ry="9.975256"
    d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1 1.8309021,10.983024 A 9.975256 9.975256 0 1 1 21.781414 10.983024 z"
    - transform="matrix(1.75441,0,0,1.753957,0.28417,23.73792)" />
    - <path
    - style="color:#000000;fill:#eeeeec;fill-opacity:1;fill-rule:evenodd;stroke:#787878;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;stroke-dasharray:none"
    - d="M 44.078659,9.5112136 C 34.84342,9.8834971 27.500059,15.977362 27.500059,23.405814 C 27.500059,27.671183 29.253586,32.180745 33.0662,34.729626 C 33.874807,38.292011 31.54507,41.058776 31.141507,41.494102 C 31.871844,41.290557 37.643487,39.670532 39.808221,37.260561 C 41.990193,37.168054 43.23089,37.300418 44.997262,37.300418 C 54.649949,37.300418 62.494467,31.073895 62.494465,23.405814 C 62.494465,15.737733 54.649949,9.5112136 44.997262,9.5112136 C 44.695616,9.5112136 44.37657,9.4992035 44.078659,9.5112136 z "
    - id="path13316"
    - sodipodi:nodetypes="cscccsssc" />
    - <path
    - sodipodi:type="inkscape:offset"
    - inkscape:radius="-1.0020103"
    - inkscape:original="M 44.09375 9.5 C 34.858511 9.8722838 27.5 15.977798 27.5 23.40625 C 27.5 27.67162 29.249886 32.169869 33.0625 34.71875 C 33.871107 38.281135 31.559813 41.064674 31.15625 41.5 C 31.886588 41.296455 37.647766 39.659971 39.8125 37.25 C 41.994473 37.157491 43.233628 37.3125 45 37.3125 C 54.652688 37.312499 62.500002 31.074331 62.5 23.40625 C 62.5 15.73817 54.652687 9.5 45 9.5 C 44.698355 9.5000003 44.391661 9.4879899 44.09375 9.5 z "
    - xlink:href="#path13316"
    - style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
    - id="path13323"
    - inkscape:href="#path13316"
    - d="M 43.9375,10.5 C 35.082559,10.856667 28.28125,16.643774 28.28125,23.4375 C 28.28125,27.441186 29.946384,31.636673 33.4375,33.96875 C 33.648247,34.117093 33.793739,34.340928 33.84375,34.59375 C 34.305353,36.625753 33.873291,38.418899 33.28125,39.75 C 33.741286,39.588469 33.859625,39.584381 34.375,39.375 C 36.123726,38.664548 38.008731,37.651133 38.875,36.6875 C 39.056781,36.478508 39.316956,36.354077 39.59375,36.34375 C 41.847992,36.248256 43.128683,36.40625 44.84375,36.40625 C 54.103198,36.406251 61.406252,30.447219 61.40625,23.4375 C 61.406249,16.427779 54.105354,10.5 44.84375,10.5 C 44.5143,10.499999 44.179676,10.490245 43.9375,10.5 z " />
    - <path
    - sodipodi:type="inkscape:offset"
    - inkscape:radius="-1.0109046"
    - inkscape:original="M 44.09375 9.5 C 34.858511 9.8722838 27.5 15.977798 27.5 23.40625 C 27.5 27.67162 29.249886 32.169869 33.0625 34.71875 C 33.871107 38.281135 31.559813 41.064674 31.15625 41.5 C 31.886588 41.296455 37.647766 39.659971 39.8125 37.25 C 41.994473 37.157491 43.233628 37.3125 45 37.3125 C 54.652688 37.312499 62.500002 31.074331 62.5 23.40625 C 62.5 15.73817 54.652687 9.5 45 9.5 C 44.698355 9.5000003 44.391661 9.4879899 44.09375 9.5 z "
    - xlink:href="#path13316"
    - style="opacity:1;color:#000000;fill:url(#linearGradient1551);fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;stroke-dasharray:none"
    - id="path1336"
    - inkscape:href="#path13316"
    - d="M 43.9375,10.5 C 35.086269,10.856517 28.28125,16.649624 28.28125,23.4375 C 28.28125,27.43874 29.949375,31.638672 33.4375,33.96875 C 33.659358,34.111954 33.816384,34.336276 33.875,34.59375 C 34.337119,36.628026 33.873842,38.417659 33.28125,39.75 C 33.741161,39.588512 33.859781,39.584317 34.375,39.375 C 36.123195,38.664763 38.010688,37.617706 38.875,36.65625 C 39.06282,36.459679 39.321894,36.347038 39.59375,36.34375 C 41.848554,36.248232 43.129202,36.40625 44.84375,36.40625 C 54.099359,36.406251 61.406252,30.441153 61.40625,23.4375 C 61.406249,16.433845 54.101534,10.5 44.84375,10.5 C 44.514064,10.499999 44.17917,10.490265 43.9375,10.5 z " />
    + transform="matrix(1.7042169,0,0,1.7042169,4.3797455,8.7825453)" />
    <path
    sodipodi:type="arc"
    - style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    - id="path2193"
    - sodipodi:cx="9.0598059"
    - sodipodi:cy="8.7845774"
    - sodipodi:rx="1.1679889"
    - sodipodi:ry="1.4520943"
    - d="M 10.227795 8.7845774 A 1.1679889 1.4520943 0 1 1 7.891817,8.7845774 A 1.1679889 1.4520943 0 1 1 10.227795 8.7845774 z"
    - transform="matrix(1.712345,0,0,2.754643,9.486483,14.80163)" />
    + style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#f57900;stroke-width:0.3774938;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + id="path2259"
    + sodipodi:cx="8.3258924"
    + sodipodi:cy="9.2232141"
    + sodipodi:rx="1.2276785"
    + sodipodi:ry="1.7410715"
    + d="M 7.2133909,8.4869402 A 1.2276785,1.7410715 0 0 1 9.288462,8.1425499"
    + transform="matrix(3.5277688,0.705265,-0.6665314,1.855957,7.2901885,-4.1630498)"
    + sodipodi:start="3.5782199"
    + sodipodi:end="5.6135639"
    + sodipodi:open="true" />
    <path
    sodipodi:type="arc"
    - style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    - id="path2191"
    - sodipodi:cx="9.0598059"
    - sodipodi:cy="8.7845774"
    - sodipodi:rx="1.1679889"
    - sodipodi:ry="1.4520943"
    - d="M 10.227795 8.7845774 A 1.1679889 1.4520943 0 1 1 7.891817,8.7845774 A 1.1679889 1.4520943 0 1 1 10.227795 8.7845774 z"
    - transform="matrix(1.712345,0,0,2.754643,1.486487,14.80163)" />
    + style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#f57900;stroke-width:0.3774938;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + id="path2261"
    + sodipodi:cx="8.3258924"
    + sodipodi:cy="9.2232141"
    + sodipodi:rx="1.2276785"
    + sodipodi:ry="1.7410715"
    + d="M 7.2133909,8.4869402 A 1.2276785,1.7410715 0 0 1 9.288462,8.1425499"
    + transform="matrix(-3.5277688,0.705265,0.6665314,1.855957,41.208475,-4.1630498)"
    + sodipodi:start="3.5782199"
    + sodipodi:end="5.6135639"
    + sodipodi:open="true" />
    <path
    style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    - d="M 32,55 C 30.709742,49.86153 26.288403,46 21.000001,46 C 15.7116,46 11.290259,49.86153 10,55 C 12.318243,51.672674 16.389775,48.580716 21.000001,48.580716 C 25.610224,48.580715 29.681757,51.672674 32,55 z "
    - id="path2186"
    - sodipodi:nodetypes="cscsc" />
    - <path
    - sodipodi:type="arc"
    - style="opacity:1;color:#000000;fill:#ef2929;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.36561811px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
    - id="path1311"
    - sodipodi:cx="15.590227"
    - sodipodi:cy="16.57217"
    - sodipodi:rx="14.345175"
    - sodipodi:ry="14.345175"
    - d="M 29.935402 16.57217 A 14.345175 14.345175 0 1 1 1.2450523,16.57217 A 14.345175 14.345175 0 1 1 29.935402 16.57217 z"
    - transform="matrix(0.732268,0,0,0.732268,34.07926,11.36022)" />
    + d="M 17,21 L 17,22 L 18,22 L 18,21 L 17,21 z M 18,22 L 18,23 L 19,23 L 19,22 L 18,22 z M 19,23 L 19,24 L 20,24 L 20,23 L 19,23 z M 20,23 L 21,23 L 21,22 L 20,22 L 20,23 z M 21,22 L 22,22 L 22,21 L 21,21 L 21,22 z M 20,24 L 20,25 L 21,25 L 21,24 L 20,24 z M 21,25 L 21,26 L 22,26 L 22,25 L 21,25 z M 19,24 L 18,24 L 18,25 L 19,25 L 19,24 z M 18,25 L 17,25 L 17,26 L 18,26 L 18,25 z "
    + id="rect3307" />
    <path
    - sodipodi:type="arc"
    - style="opacity:1;color:#000000;fill:#ef2929;fill-opacity:1;fill-rule:evenodd;stroke:#a40000;stroke-width:1.4342562px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
    - id="path1339"
    - sodipodi:cx="15.590227"
    - sodipodi:cy="16.57217"
    - sodipodi:rx="14.345175"
    - sodipodi:ry="14.345175"
    - d="M 29.935402 16.57217 A 14.345175 14.345175 0 1 1 1.2450523,16.57217 A 14.345175 14.345175 0 1 1 29.935402 16.57217 z"
    - transform="matrix(0.697225,0,0,0.697224,34.63061,11.94498)" />
    + style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + d="M 27,21 L 27,22 L 28,22 L 28,21 L 27,21 z M 28,22 L 28,23 L 29,23 L 29,22 L 28,22 z M 29,23 L 29,24 L 30,24 L 30,23 L 29,23 z M 30,23 L 31,23 L 31,22 L 30,22 L 30,23 z M 31,22 L 32,22 L 32,21 L 31,21 L 31,22 z M 30,24 L 30,25 L 31,25 L 31,24 L 30,24 z M 31,25 L 31,26 L 32,26 L 32,25 L 31,25 z M 29,24 L 28,24 L 28,25 L 29,25 L 29,24 z M 28,25 L 27,25 L 27,26 L 28,26 L 28,25 z "
    + id="path3326" />
    <path
    - style="opacity:0.6;color:#000000;fill:url(#linearGradient2194);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2245);stroke-width:1.00000024px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
    - d="M 54.501284,23.499216 C 54.501284,28.468337 50.46837,32.501247 45.499243,32.501247 C 40.530116,32.501247 36.497202,28.468337 36.497202,23.499216 C 36.497202,18.530098 40.530116,14.497189 45.499243,14.497189 C 50.46837,14.497189 54.501284,18.530098 54.501284,23.499216 z "
    - id="path2220" />
    - <path
    - style="color:#000000;fill:#eeeeec;fill-opacity:1;fill-rule:evenodd;stroke:#a40000;stroke-width:0.99999881px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
    - d="M 53.472399,23.373021 C 53.472399,25.828104 51.776345,25.485533 45.279112,25.485533 C 38.811218,25.485533 37.51405,25.897351 37.51405,23.485931 C 37.51405,21.235525 38.820793,21.494116 45.34652,21.494116 C 51.901652,21.494116 53.472399,20.942767 53.472399,23.373021 z "
    - id="path1341"
    - sodipodi:nodetypes="czczz" />
    + style="fill:#ce5c00;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + d="M 34,39 C 32.885686,35.003412 29.067255,32 24.5,32 C 19.932746,32 16.114315,35.003412 15,39 C 17.00212,36.412082 20.518441,33.850868 24.5,33.850868 C 28.481556,33.850866 31.99788,36.412082 34,39 z "
    + id="path3492"
    + sodipodi:nodetypes="cscsc" />
    </g>
    </svg>
    --- a/pidgin/pixmaps/dialogs/64/scalable/info.svg Wed Sep 19 03:28:52 2007 +0000
    +++ b/pidgin/pixmaps/dialogs/64/scalable/info.svg Wed Sep 19 03:30:40 2007 +0000
    @@ -7,147 +7,25 @@
    xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
    xmlns:xlink="http://www.w3.org/1999/xlink"
    - xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/s odipodi-0.dtd"
    + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
    - width="64"
    - height="64"
    + width="48"
    + height="48"
    id="svg2"
    sodipodi:version="0.32"
    - inkscape:version="0.43"
    + inkscape:version="0.45"
    version="1.0"
    sodipodi:docbase="/home/hbons/Desktop"
    - sodipodi:docname="dialog-info.svg"
    - inkscape:export-filename="/home/hbons/Desktop/dialog-info.png"
    + sodipodi:docname="dialog.svg"
    + inkscape:export-filename="/home/hbons/Desktop/newstyle.png"
    inkscape:export-xdpi="90"
    - inkscape:export-ydpi="90">
    + inkscape:export-ydpi="90"
    + inkscape:output_extension="org.inkscape.output.svg.inkscape"
    + sodipodi:modified="true">
    <defs
    id="defs4">
    <linearGradient
    inkscape:collect="always"
    - id="linearGradient2226">
    - <stop
    - style="stop-color:#729fcf;stop-opacity:1;"
    - offset="0"
    - id="stop2228" />
    - <stop
    - style="stop-color:#729fcf;stop-opacity:0;"
    - offset="1"
    - id="stop2230" />
    - </linearGradient>
    - <radialGradient
    - inkscape:collect="always"
    - xlink:href="#linearGradient2226"
    - id="radialGradient2232"
    - cx="6.8598728"
    - cy="12.836589"
    - fx="6.8598728"
    - fy="12.836589"
    - r="6"
    - gradientTransform="matrix(-1.535401,1.457479,-1.350253,-1.281728,72.86699,21.2066)"
    - gradientUnits="userSpaceOnUse" />
    - <linearGradient
    - inkscape:collect="always"
    - id="linearGradient3150">
    - <stop
    - style="stop-color:#2e3436;stop-opacity:1;"
    - offset="0"
    - id="stop3152" />
    - <stop
    - style="stop-color:#2e3436;stop-opacity:0;"
    - offset="1"
    - id="stop3154" />
    - </linearGradient>
    - <radialGradient
    - inkscape:collect="always"
    - xlink:href="#linearGradient3150"
    - id="radialGradient3156"
    - cx="10.748654"
    - cy="10.457643"
    - fx="10.748654"
    - fy="10.457643"
    - r="6.6449099"
    - gradientTransform="matrix(-0.842757,5.698892e-16,-4.565819e-9,-0.35721,19.80716,14.19321)"
    - gradientUnits="userSpaceOnUse" />
    - <linearGradient
    - inkscape:collect="always"
    - id="linearGradient2351">
    - <stop
    - style="stop-color:#eeeeec;stop-opacity:1;"
    - offset="0"
    - id="stop2353" />
    - <stop
    - style="stop-color:#eeeeec;stop-opacity:0;"
    - offset="1"
    - id="stop2355" />
    - </linearGradient>
    - <linearGradient
    - inkscape:collect="always"
    - xlink:href="#linearGradient2351"
    - id="linearGradient2357"
    - x1="12.488563"
    - y1="5.8544211"
    - x2="12.488563"
    - y2="19.066195"
    - gradientUnits="userSpaceOnUse"
    - gradientTransform="matrix(1,0,0,1.005826,31.99641,10.9359)" />
    - <linearGradient
    - inkscape:collect="always"
    - id="linearGradient2343">
    - <stop
    - style="stop-color:#babdb6;stop-opacity:1;"
    - offset="0"
    - id="stop2345" />
    - <stop
    - style="stop-color:#babdb6;stop-opacity:0;"
    - offset="1"
    - id="stop2347" />
    - </linearGradient>
    - <linearGradient
    - inkscape:collect="always"
    - xlink:href="#linearGradient2343"
    - id="linearGradient2349"
    - x1="12.515625"
    - y1="8.7261219"
    - x2="12.515625"
    - y2="0.68458056"
    - gradientUnits="userSpaceOnUse"
    - gradientTransform="matrix(0.993429,0,0,1.004681,32.05868,11.024)" />
    - <linearGradient
    - inkscape:collect="always"
    - id="linearGradient3121">
    - <stop
    - style="stop-color:#d3d7cf;stop-opacity:1;"
    - offset="0"
    - id="stop3123" />
    - <stop
    - style="stop-color:#d3d7cf;stop-opacity:0;"
    - offset="1"
    - id="stop3125" />
    - </linearGradient>
    - <linearGradient
    - inkscape:collect="always"
    - id="linearGradient3816">
    - <stop
    - style="stop-color:#000000;stop-opacity:1;"
    - offset="0"
    - id="stop3818" />
    - <stop
    - style="stop-color:#000000;stop-opacity:0;"
    - offset="1"
    - id="stop3820" />
    - </linearGradient>
    - <radialGradient
    - inkscape:collect="always"
    - xlink:href="#linearGradient3816"
    - id="radialGradient3822"
    - cx="31.112698"
    - cy="19.008621"
    - fx="31.112698"
    - fy="19.008621"
    - r="8.6620579"
    - gradientUnits="userSpaceOnUse" />
    - <linearGradient
    - inkscape:collect="always"
    id="linearGradient3104">
    <stop
    style="stop-color:#eeeeec;stop-opacity:1;"
    @@ -169,15 +47,259 @@
    r="9.975256"
    gradientUnits="userSpaceOnUse"
    gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
    + <filter
    + inkscape:collect="always"
    + x="-0.27879593"
    + width="1.5575919"
    + y="-0.78248727"
    + height="2.5649745"
    + id="filter3405">
    + <feGaussianBlur
    + inkscape:collect="always"
    + stdDeviation="1.5438116"
    + id="feGaussianBlur3407" />
    + </filter>
    + <radialGradient
    + r="9.975256"
    + fy="18.005522"
    + fx="8.7359829"
    + cy="18.005522"
    + cx="8.7359829"
    + gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
    + gradientUnits="userSpaceOnUse"
    + id="radialGradient2247"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    + <linearGradient
    + inkscape:collect="always"
    + id="linearGradient3263">
    + <stop
    + style="stop-color:#555753;stop-opacity:1;"
    + offset="0"
    + id="stop3265" />
    + <stop
    + style="stop-color:#555753;stop-opacity:0;"
    + offset="1"
    + id="stop3267" />
    + </linearGradient>
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient2216"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
    + <linearGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3263"
    + id="linearGradient3269"
    + x1="12.845698"
    + y1="16.037401"
    + x2="10.698112"
    + y2="15.449714"
    + gradientUnits="userSpaceOnUse" />
    + <radialGradient
    + r="9.975256"
    + fy="18.005522"
    + fx="8.7359829"
    + cy="18.005522"
    + cx="8.7359829"
    + gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
    + gradientUnits="userSpaceOnUse"
    + id="radialGradient3191"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    <linearGradient
    inkscape:collect="always"
    - xlink:href="#linearGradient3121"
    - id="linearGradient1551"
    + id="linearGradient3150">
    + <stop
    + style="stop-color:#2e3436;stop-opacity:1;"
    + offset="0"
    + id="stop3152" />
    + <stop
    + style="stop-color:#2e3436;stop-opacity:0;"
    + offset="1"
    + id="stop3154" />
    + </linearGradient>
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient3175"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3150"
    + id="radialGradient3156"
    + cx="10.748654"
    + cy="10.457643"
    + fx="10.748654"
    + fy="10.457643"
    + r="6.6449099"
    + gradientTransform="matrix(-0.842757,0,0,-0.35721,19.80716,14.19321)"
    + gradientUnits="userSpaceOnUse" />
    + <radialGradient
    + gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
    + gradientUnits="userSpaceOnUse"
    + r="9.975256"
    + fy="18.005522"
    + fx="8.7359829"
    + cy="18.005522"
    + cx="8.7359829"
    + id="radialGradient2214"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient2255"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256" />
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient3313"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
    + <radialGradient
    + r="2.5781252"
    + fy="11.083743"
    + fx="17.911736"
    + cy="11.083743"
    + cx="17.911736"
    + gradientTransform="matrix(-1.591138,1.574803,-1.783257,-1.76495,68.854751,-2.8442229)"
    gradientUnits="userSpaceOnUse"
    - x1="42.925175"
    - y1="40.136646"
    - x2="42.925175"
    - y2="15.474488" />
    + id="radialGradient2259"
    + xlink:href="#linearGradient2382"
    + inkscape:collect="always" />
    + <linearGradient
    + inkscape:collect="always"
    + id="linearGradient2867">
    + <stop
    + style="stop-color:#d3d7cf;stop-opacity:1;"
    + offset="0"
    + id="stop2869" />
    + <stop
    + style="stop-color:#d3d7cf;stop-opacity:0;"
    + offset="1"
    + id="stop2871" />
    + </linearGradient>
    + <linearGradient
    + inkscape:collect="always"
    + id="linearGradient2847">
    + <stop
    + style="stop-color:#888a85;stop-opacity:1;"
    + offset="0"
    + id="stop2849" />
    + <stop
    + style="stop-color:#888a85;stop-opacity:0;"
    + offset="1"
    + id="stop2851" />
    + </linearGradient>
    + <linearGradient
    + inkscape:collect="always"
    + id="linearGradient2382">
    + <stop
    + style="stop-color:#d3d7cf;stop-opacity:1;"
    + offset="0"
    + id="stop2384" />
    + <stop
    + style="stop-color:#d3d7cf;stop-opacity:0;"
    + offset="1"
    + id="stop2386" />
    + </linearGradient>
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient2230"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
    + <linearGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient2847"
    + id="linearGradient2853"
    + x1="12.5"
    + y1="18.202251"
    + x2="12.746171"
    + y2="20.761486"
    + gradientUnits="userSpaceOnUse" />
    + <linearGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient2867"
    + id="linearGradient2873"
    + x1="12.720216"
    + y1="20.952612"
    + x2="12.720216"
    + y2="17.682426"
    + gradientUnits="userSpaceOnUse" />
    + <radialGradient
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + gradientUnits="userSpaceOnUse"
    + r="9.975256"
    + fy="14.186539"
    + fx="8.3343515"
    + cy="14.186539"
    + cx="8.3343515"
    + id="radialGradient2303"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient2349"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256" />
    + <radialGradient
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + gradientUnits="userSpaceOnUse"
    + r="9.975256"
    + fy="14.186539"
    + fx="8.3343515"
    + cy="14.186539"
    + cx="8.3343515"
    + id="radialGradient2233"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient2264"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256" />
    </defs>
    <sodipodi:namedview
    id="base"
    @@ -186,17 +308,19 @@
    borderopacity="1.0"
    inkscape:pageopacity="0.0"
    inkscape:pageshadow="2"
    - inkscape:zoom="6.0019314"
    - inkscape:cx="46.66506"
    - inkscape:cy="27.955978"
    + inkscape:zoom="11.2"
    + inkscape:cx="49.304407"
    + inkscape:cy="24.325832"
    inkscape:document-units="px"
    inkscape:current-layer="layer1"
    showgrid="true"
    - fill="#2e3436"
    - inkscape:window-width="1267"
    - inkscape:window-height="971"
    - inkscape:window-x="6"
    - inkscape:window-y="21" />
    + fill="#fce94f"
    + inkscape:window-width="1440"
    + inkscape:window-height="845"
    + inkscape:window-x="3"
    + inkscape:window-y="25"
    + width="48px"
    + height="48px" />
    <metadata
    id="metadata7">
    <rdf:RDF>
    @@ -213,25 +337,25 @@
    inkscape:groupmode="layer"
    id="layer1">
    <path
    - d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.45064,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z"
    - sodipodi:ry="8.6620579"
    - sodipodi:rx="8.6620579"
    - sodipodi:cy="19.008621"
    - sodipodi:cx="31.112698"
    - id="path4318"
    - style="opacity:0.5;color:#000000;fill:url(#radialGradient3822);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
    sodipodi:type="arc"
    - transform="matrix(2.383972,0,0,1.117487,-53.5217,33.04541)" />
    + style="opacity:0.64044949;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter3405)"
    + id="path3140"
    + sodipodi:cx="10.748654"
    + sodipodi:cy="10.457643"
    + sodipodi:rx="6.6449099"
    + sodipodi:ry="2.3675451"
    + d="M 17.393564 10.457643 A 6.6449099 2.3675451 0 1 1 4.1037445,10.457643 A 6.6449099 2.3675451 0 1 1 17.393564 10.457643 z"
    + transform="matrix(2.2723916,0,0,1.6905173,-0.1758194,23.510748)" />
    <path
    sodipodi:type="arc"
    - style="opacity:1;fill:#edd400;fill-opacity:1;stroke:#f57900;stroke-width:0.53913006;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + style="opacity:1;fill:#edd400;fill-opacity:1;stroke:#cc6400;stroke-width:0.55559433;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    id="path1307"
    sodipodi:cx="11.806158"
    sodipodi:cy="10.983024"
    sodipodi:rx="9.975256"
    sodipodi:ry="9.975256"
    d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1 1.8309021,10.983024 A 9.975256 9.975256 0 1 1 21.781414 10.983024 z"
    - transform="matrix(1.854646,0,0,1.855034,-0.899768,22.62707)" />
    + transform="matrix(1.8043406,0,0,1.8043406,3.1976696,7.6828846)" />
    <path
    sodipodi:type="arc"
    style="opacity:0.79545456;fill:url(#radialGradient3114);fill-opacity:1;stroke:none;stroke-width:1.05274069;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    @@ -241,161 +365,81 @@
    sodipodi:rx="9.975256"
    sodipodi:ry="9.975256"
    d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1 1.8309021,10.983024 A 9.975256 9.975256 0 1 1 21.781414 10.983024 z"
    - transform="matrix(1.704217,0,0,1.704217,0.879746,24.28255)" />
    + transform="matrix(1.6958412,0,0,1.6958412,4.3182736,9.0348912)" />
    <path
    sodipodi:type="arc"
    - style="opacity:0.5;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.57006598;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.58677971;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    id="path2184"
    sodipodi:cx="11.806158"
    sodipodi:cy="10.983024"
    sodipodi:rx="9.975256"
    sodipodi:ry="9.975256"
    d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1 1.8309021,10.983024 A 9.975256 9.975256 0 1 1 21.781414 10.983024 z"
    - transform="matrix(1.75441,0,0,1.753957,0.28417,23.73792)" />
    + transform="matrix(1.7042169,0,0,1.7042169,4.3797455,8.7825453)" />
    + <path
    + style="fill:#eeeeec;fill-opacity:1;stroke:#fea523;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1"
    + d="M 23.500001,23.5 C 23.500001,26.26 21.260002,28.500001 18.500001,28.500001 C 15.740001,28.500001 13.5,26.26 13.5,23.5 C 13.5,20.74 15.740001,18.5 18.500001,18.5 C 21.260002,18.5 23.500001,20.74 23.500001,23.5 z "
    + id="path3154" />
    + <path
    + sodipodi:type="arc"
    + style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:0.98640186;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + id="path2172"
    + sodipodi:cx="9.7069349"
    + sodipodi:cy="9.6526775"
    + sodipodi:rx="1.0259361"
    + sodipodi:ry="1.9413869"
    + d="M 10.732871 9.6526775 A 1.0259361 1.9413869 0 1 1 8.6809988,9.6526775 A 1.0259361 1.9413869 0 1 1 10.732871 9.6526775 z"
    + transform="matrix(1.9494387,0,0,1.2877392,1.0769249,12.069869)" />
    <path
    - style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    - d="M 32,46 C 30.709742,51.13847 26.288403,55 21.000001,55 C 15.7116,55 11.290259,51.13847 10,46 C 12.318243,49.327326 16.389775,52.419284 21.000001,52.419284 C 25.610224,52.419285 29.681757,49.327326 32,46 z "
    + sodipodi:type="arc"
    + style="opacity:1;fill:#eeeeec;fill-opacity:1;stroke:#fea523;stroke-width:0.282258;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + id="path3152"
    + sodipodi:cx="9.7069349"
    + sodipodi:cy="9.6526775"
    + sodipodi:rx="1.0259361"
    + sodipodi:ry="1.9413869"
    + d="M 10.732871 9.6526775 A 1.0259361 1.9413869 0 1 1 8.6809988,9.6526775 A 1.0259361 1.9413869 0 1 1 10.732871 9.6526775 z"
    + transform="matrix(4.8735976,0,0,2.5754783,-16.807694,-1.3602618)" />
    + <path
    + sodipodi:type="arc"
    + style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:0.98640186;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + id="path3148"
    + sodipodi:cx="9.7069349"
    + sodipodi:cy="9.6526775"
    + sodipodi:rx="1.0259361"
    + sodipodi:ry="1.9413869"
    + d="M 10.732871 9.6526775 A 1.0259361 1.9413869 0 1 1 8.6809988,9.6526775 A 1.0259361 1.9413869 0 1 1 10.732871 9.6526775 z"
    + transform="matrix(1.9494393,0,0,1.2877392,10.07692,12.069869)" />
    + <path
    + style="opacity:1;fill:#ce5c00;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + d="M 34,32 C 32.885686,35.996588 29.067255,39 24.5,39 C 19.932746,39 16.114315,35.996588 15,32 C 17.00212,34.587918 20.518441,37.149132 24.5,37.149132 C 28.481556,37.149134 31.99788,34.587918 34,32 z "
    id="path2186"
    sodipodi:nodetypes="cscsc" />
    <path
    sodipodi:type="arc"
    - style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    - id="path2191"
    - sodipodi:cx="9.0598059"
    - sodipodi:cy="8.7845774"
    - sodipodi:rx="1.1679889"
    - sodipodi:ry="1.4520943"
    - d="M 10.227795 8.7845774 A 1.1679889 1.4520943 0 1 1 7.891817,8.7845774 A 1.1679889 1.4520943 0 1 1 10.227795 8.7845774 z"
    - transform="matrix(1.712345,0,0,2.754643,1.486487,14.80163)" />
    + style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#f57900;stroke-width:0.3774938;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + id="path2259"
    + sodipodi:cx="8.3258924"
    + sodipodi:cy="9.2232141"
    + sodipodi:rx="1.2276785"
    + sodipodi:ry="1.7410715"
    + d="M 7.2133909,8.4869402 A 1.2276785,1.7410715 0 0 1 9.288462,8.1425499"
    + transform="matrix(3.5277688,0.705265,-0.6665314,1.855957,7.2901885,-4.1630498)"
    + sodipodi:start="3.5782199"
    + sodipodi:end="5.6135639"
    + sodipodi:open="true" />
    <path
    sodipodi:type="arc"
    - style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    - id="path2193"
    - sodipodi:cx="9.0598059"
    - sodipodi:cy="8.7845774"
    - sodipodi:rx="1.1679889"
    - sodipodi:ry="1.4520943"
    - d="M 10.227795 8.7845774 A 1.1679889 1.4520943 0 1 1 7.891817,8.7845774 A 1.1679889 1.4520943 0 1 1 10.227795 8.7845774 z"
    - transform="matrix(1.712345,0,0,2.754643,9.486483,14.80163)" />
    - <path
    - style="color:#000000;fill:#eeeeec;fill-opacity:1;fill-rule:evenodd;stroke:#787878;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;stroke-dasharray:none"
    - d="M 44.078659,9.5112136 C 34.84342,9.8834971 27.500059,15.977362 27.500059,23.405814 C 27.500059,27.671183 29.253586,32.180745 33.0662,34.729626 C 33.874807,38.292011 31.54507,41.058776 31.141507,41.494102 C 31.871844,41.290557 37.643487,39.670532 39.808221,37.260561 C 41.990193,37.168054 43.23089,37.300418 44.997262,37.300418 C 54.649949,37.300418 62.494467,31.073895 62.494465,23.405814 C 62.494465,15.737733 54.649949,9.5112136 44.997262,9.5112136 C 44.695616,9.5112136 44.37657,9.4992035 44.078659,9.5112136 z "
    - id="path13316"
    - sodipodi:nodetypes="cscccsssc" />
    - <path
    - sodipodi:type="inkscape:offset"
    - inkscape:radius="-1.0020103"
    - inkscape:original="M 44.09375 9.5 C 34.858511 9.8722838 27.5 15.977798 27.5 23.40625 C 27.5 27.67162 29.249886 32.169869 33.0625 34.71875 C 33.871107 38.281135 31.559813 41.064674 31.15625 41.5 C 31.886588 41.296455 37.647766 39.659971 39.8125 37.25 C 41.994473 37.157491 43.233628 37.3125 45 37.3125 C 54.652688 37.312499 62.500002 31.074331 62.5 23.40625 C 62.5 15.73817 54.652687 9.5 45 9.5 C 44.698355 9.5000003 44.391661 9.4879899 44.09375 9.5 z "
    - xlink:href="#path13316"
    - style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
    - id="path13323"
    - inkscape:href="#path13316"
    - d="M 43.9375,10.5 C 35.082559,10.856667 28.28125,16.643774 28.28125,23.4375 C 28.28125,27.441186 29.946384,31.636673 33.4375,33.96875 C 33.648247,34.117093 33.793739,34.340928 33.84375,34.59375 C 34.305353,36.625753 33.873291,38.418899 33.28125,39.75 C 33.741286,39.588469 33.859625,39.584381 34.375,39.375 C 36.123726,38.664548 38.008731,37.651133 38.875,36.6875 C 39.056781,36.478508 39.316956,36.354077 39.59375,36.34375 C 41.847992,36.248256 43.128683,36.40625 44.84375,36.40625 C 54.103198,36.406251 61.406252,30.447219 61.40625,23.4375 C 61.406249,16.427779 54.105354,10.5 44.84375,10.5 C 44.5143,10.499999 44.179676,10.490245 43.9375,10.5 z " />
    - <path
    - sodipodi:type="inkscape:offset"
    - inkscape:radius="-1.0109046"
    - inkscape:original="M 44.09375 9.5 C 34.858511 9.8722838 27.5 15.977798 27.5 23.40625 C 27.5 27.67162 29.249886 32.169869 33.0625 34.71875 C 33.871107 38.281135 31.559813 41.064674 31.15625 41.5 C 31.886588 41.296455 37.647766 39.659971 39.8125 37.25 C 41.994473 37.157491 43.233628 37.3125 45 37.3125 C 54.652688 37.312499 62.500002 31.074331 62.5 23.40625 C 62.5 15.73817 54.652687 9.5 45 9.5 C 44.698355 9.5000003 44.391661 9.4879899 44.09375 9.5 z "
    - xlink:href="#path13316"
    - style="opacity:1;color:#000000;fill:url(#linearGradient1551);fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;stroke-dasharray:none"
    - id="path1336"
    - inkscape:href="#path13316"
    - d="M 43.9375,10.5 C 35.086269,10.856517 28.28125,16.649624 28.28125,23.4375 C 28.28125,27.43874 29.949375,31.638672 33.4375,33.96875 C 33.659358,34.111954 33.816384,34.336276 33.875,34.59375 C 34.337119,36.628026 33.873842,38.417659 33.28125,39.75 C 33.741161,39.588512 33.859781,39.584317 34.375,39.375 C 36.123195,38.664763 38.010688,37.617706 38.875,36.65625 C 39.06282,36.459679 39.321894,36.347038 39.59375,36.34375 C 41.848554,36.248232 43.129202,36.40625 44.84375,36.40625 C 54.099359,36.406251 61.406252,30.441153 61.40625,23.4375 C 61.406249,16.433845 54.101534,10.5 44.84375,10.5 C 44.514064,10.499999 44.17917,10.490265 43.9375,10.5 z " />
    - <path
    - style="opacity:1;fill:url(#radialGradient2232);fill-opacity:1;stroke:#729fcf;stroke-width:1.00000012;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    - d="M 44.703431,14.533668 C 40.70252,14.678436 37.503421,17.811488 37.503421,21.651365 C 37.503421,24.907582 40.201737,27.911617 43.341119,28.760108 L 43.389173,30.850471 C 43.389173,30.872875 43.386855,30.909548 43.389173,30.931354 C 43.394328,30.963552 43.421848,31.022249 43.431776,31.052677 C 43.443213,31.082437 43.458677,31.146493 43.474381,31.174002 C 43.480062,31.182896 43.510872,31.20584 43.516985,31.214444 C 43.569231,31.280841 43.655052,31.37351 43.730003,31.41665 C 43.749323,31.426587 43.794808,31.448926 43.815208,31.457092 C 43.857011,31.471566 43.940397,31.49101 43.985625,31.497533 C 44.008596,31.499735 44.047229,31.497533 44.07083,31.497533 L 46.028589,31.404055 C 46.052192,31.404055 46.090827,31.406257 46.113796,31.404055 C 46.159024,31.397531 46.242411,31.378087 46.284211,31.363613 C 46.304612,31.355448 46.350096,31.333109 46.369418,31.323172 C 46.444367,31.280031 46.53019,31.187363 46.582436,31.120966 C 46.588549,31.112362 46.619359,31.089417 46.62504,31.080523 C 46.640742,31.053014 46.656207,30.988959 46.667645,30.959199 C 46.677573,30.928771 46.705092,30.870073 46.710248,30.837876 C 46.712565,30.816069 46.710248,30.779396 46.710248,30.756993 L 46.758302,28.760108 C 49.897683,27.911617 52.499887,24.907584 52.499889,21.651365 C 52.499889,17.719331 49.13652,14.533668 45.001656,14.533668 C 44.904746,14.533668 44.799454,14.530194 44.703431,14.533668 z "
    - id="path1311"
    - sodipodi:nodetypes="csccsssssssccsssssssccssc" />
    - <path
    - sodipodi:type="inkscape:offset"
    - inkscape:radius="-0.98906523"
    - inkscape:original="M 44.71875 14.53125 C 40.71784 14.676018 37.5 17.816373 37.5 21.65625 C 37.499999 24.912467 40.204368 27.901509 43.34375 28.75 L 43.375 30.84375 C 43.375001 30.866154 43.372682 30.915694 43.375 30.9375 C 43.380156 30.969697 43.427572 31.032072 43.4375 31.0625 C 43.448939 31.09226 43.453046 31.159991 43.46875 31.1875 C 43.474432 31.196394 43.525137 31.210146 43.53125 31.21875 C 43.583494 31.285148 43.643799 31.36311 43.71875 31.40625 C 43.73807 31.416186 43.7921 31.460584 43.8125 31.46875 C 43.854303 31.483224 43.954772 31.493477 44 31.5 C 44.02297 31.502201 44.038899 31.5 44.0625 31.5 L 46.03125 31.40625 C 46.054855 31.40625 46.102031 31.408452 46.125 31.40625 C 46.170228 31.399726 46.23945 31.389474 46.28125 31.375 C 46.301652 31.366835 46.355678 31.322437 46.375 31.3125 C 46.449948 31.269359 46.541504 31.191397 46.59375 31.125 C 46.599863 31.116396 46.619319 31.102644 46.625 31.09375 C 46.640704 31.066241 46.644812 30.99851 46.65625 30.96875 C 46.666178 30.938321 46.713594 30.875947 46.71875 30.84375 C 46.721068 30.821944 46.71875 30.772403 46.71875 30.75 L 46.75 28.75 C 49.889382 27.901508 52.499998 24.912469 52.5 21.65625 C 52.5 17.724216 49.134864 14.53125 45 14.53125 C 44.90309 14.53125 44.814773 14.527776 44.71875 14.53125 z "
    - xlink:href="#path1311"
    - style="opacity:0.7;fill:#ffffff;fill-opacity:0.41960784;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    - id="path2204"
    - inkscape:href="#path1311"
    - d="M 33.46875,7.46875 C 29.99276,7.595007 27.28125,10.282227 27.28125,13.5625 C 27.281251,16.268084 29.627654,18.959072 32.3125,19.6875 C 32.745246,19.795209 33.052411,20.179165 33.0625,20.625 L 33.125,22.34375 L 34.40625,22.28125 L 34.46875,20.625 C 34.478839,20.179165 34.786004,19.795209 35.21875,19.6875 C 37.89876,18.960384 40.156248,16.287128 40.15625,13.5625 C 40.15625,10.202426 37.315969,7.4687499 33.71875,7.46875 C 33.598771,7.4687498 33.517755,7.46697 33.46875,7.46875 z "
    - transform="translate(3.330669e-15,4.169556e-4)" />
    - <rect
    - style="opacity:1;fill:#edd400;fill-opacity:1;stroke:#c4a000;stroke-width:1.00000107;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    - id="rect2188"
    - width="5.0002198"
    - height="3.994288"
    - x="42.497272"
    - y="29.502851"
    - rx="0.50000107"
    - ry="0.50000083" />
    - <path
    - sodipodi:type="inkscape:offset"
    - inkscape:radius="-1.0076578"
    - inkscape:original="M 43 29.5 C 42.722999 29.5 42.5 29.723 42.5 30 L 42.5 33 C 42.5 33.277 42.723 33.5 43 33.5 L 47 33.5 C 47.277001 33.5 47.499999 33.277 47.5 33 L 47.5 30 C 47.5 29.723 47.277002 29.5 47 29.5 L 43 29.5 z "
    - xlink:href="#rect2188"
    - style="opacity:0.5;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:1.00000083;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    - id="path1324"
    - inkscape:href="#rect2188"
    - d="M 32.21875,22.4375 L 32.21875,24.40625 L 35.1875,24.40625 L 35.1875,22.4375 L 32.21875,22.4375 z " />
    - <rect
    - style="opacity:0.7;fill:#729fcf;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    - id="rect2238"
    - width="1"
    - height="2"
    - x="43"
    - y="24" />
    - <rect
    - style="opacity:0.70454544;fill:#729fcf;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    - id="rect2240"
    - width="1.0217247"
    - height="2"
    - x="45.978275"
    - y="24" />
    - <rect
    - style="opacity:0.7;fill:#729fcf;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    - id="rect2242"
    - width="1"
    - height="2.0132751"
    - x="-25"
    - y="43.986725"
    - transform="matrix(0,-1,1,0,0,0)" />
    - <rect
    - style="opacity:0.7;fill:#729fcf;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    - id="rect2244"
    - width="1.0000002"
    - height="1"
    - x="-24"
    - y="43"
    - transform="matrix(0,-1,1,0,0,0)" />
    - <rect
    - style="opacity:0.7;fill:#729fcf;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    - id="rect2246"
    - width="1.0000002"
    - height="1"
    - x="-24"
    - y="45"
    - transform="matrix(0,-1,1,0,0,0)" />
    - <rect
    - style="opacity:0.5;fill:#729fcf;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    - id="rect2250"
    - width="1.0000002"
    - height="1.0066376"
    - x="-23"
    - y="45.993362"
    - transform="matrix(0,-1,1,0,0,0)" />
    - <rect
    - style="opacity:0.5;fill:#729fcf;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    - id="rect2252"
    - width="1.0000002"
    - height="1.0066376"
    - x="-23"
    - y="43.993362"
    - transform="matrix(0,-1,1,0,0,0)" />
    - <path
    - sodipodi:type="arc"
    - style="opacity:0.9;fill:#ffffff;fill-opacity:0.41960784;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    - id="path2254"
    - sodipodi:cx="8.9137974"
    - sodipodi:cy="6.046802"
    - sodipodi:rx="1.3745575"
    - sodipodi:ry="1.3329042"
    - d="M 10.288355 6.046802 A 1.3745575 1.3329042 0 1 1 7.5392399,6.046802 A 1.3745575 1.3329042 0 1 1 10.288355 6.046802 z"
    - transform="matrix(1.455014,0,0,1.500481,30.0303,10.92689)" />
    + style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#f57900;stroke-width:0.3774938;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + id="path2261"
    + sodipodi:cx="8.3258924"
    + sodipodi:cy="9.2232141"
    + sodipodi:rx="1.2276785"
    + sodipodi:ry="1.7410715"
    + d="M 7.2133909,8.4869402 A 1.2276785,1.7410715 0 0 1 9.288462,8.1425499"
    + transform="matrix(-3.5277688,0.705265,0.6665314,1.855957,41.208475,-4.1630498)"
    + sodipodi:start="3.5782199"
    + sodipodi:end="5.6135639"
    + sodipodi:open="true" />
    </g>
    </svg>
    --- a/pidgin/pixmaps/dialogs/64/scalable/question.svg Wed Sep 19 03:28:52 2007 +0000
    +++ b/pidgin/pixmaps/dialogs/64/scalable/question.svg Wed Sep 19 03:30:40 2007 +0000
    @@ -7,57 +7,25 @@
    xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
    xmlns:xlink="http://www.w3.org/1999/xlink"
    - xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/s odipodi-0.dtd"
    + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
    - width="64"
    - height="64"
    + width="48"
    + height="48"
    id="svg2"
    sodipodi:version="0.32"
    - inkscape:version="0.43"
    + inkscape:version="0.45"
    version="1.0"
    - sodipodi:docbase="/home/hbons/Desktop"
    + sodipodi:docbase="/home/hbons/Desktop/2.1.1/dialogs/scalable"
    sodipodi:docname="dialog-question.svg"
    - inkscape:export-filename="/home/hbons/Desktop/dialog-question.png"
    + inkscape:export-filename="/home/hbons/Desktop/newstyle.png"
    inkscape:export-xdpi="90"
    - inkscape:export-ydpi="90">
    + inkscape:export-ydpi="90"
    + inkscape:output_extension="org.inkscape.output.svg.inkscape"
    + sodipodi:modified="true">
    <defs
    id="defs4">
    <linearGradient
    inkscape:collect="always"
    - id="linearGradient3121">
    - <stop
    - style="stop-color:#d3d7cf;stop-opacity:1;"
    - offset="0"
    - id="stop3123" />
    - <stop
    - style="stop-color:#d3d7cf;stop-opacity:0;"
    - offset="1"
    - id="stop3125" />
    - </linearGradient>
    - <linearGradient
    - inkscape:collect="always"
    - id="linearGradient3816">
    - <stop
    - style="stop-color:#000000;stop-opacity:1;"
    - offset="0"
    - id="stop3818" />
    - <stop
    - style="stop-color:#000000;stop-opacity:0;"
    - offset="1"
    - id="stop3820" />
    - </linearGradient>
    - <radialGradient
    - inkscape:collect="always"
    - xlink:href="#linearGradient3816"
    - id="radialGradient3822"
    - cx="31.112698"
    - cy="19.008621"
    - fx="31.112698"
    - fy="19.008621"
    - r="8.6620579"
    - gradientUnits="userSpaceOnUse" />
    - <linearGradient
    - inkscape:collect="always"
    id="linearGradient3104">
    <stop
    style="stop-color:#eeeeec;stop-opacity:1;"
    @@ -79,15 +47,259 @@
    r="9.975256"
    gradientUnits="userSpaceOnUse"
    gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
    + <filter
    + inkscape:collect="always"
    + x="-0.27879593"
    + width="1.5575919"
    + y="-0.78248727"
    + height="2.5649745"
    + id="filter3405">
    + <feGaussianBlur
    + inkscape:collect="always"
    + stdDeviation="1.5438116"
    + id="feGaussianBlur3407" />
    + </filter>
    + <radialGradient
    + r="9.975256"
    + fy="18.005522"
    + fx="8.7359829"
    + cy="18.005522"
    + cx="8.7359829"
    + gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
    + gradientUnits="userSpaceOnUse"
    + id="radialGradient2247"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    + <linearGradient
    + inkscape:collect="always"
    + id="linearGradient3263">
    + <stop
    + style="stop-color:#555753;stop-opacity:1;"
    + offset="0"
    + id="stop3265" />
    + <stop
    + style="stop-color:#555753;stop-opacity:0;"
    + offset="1"
    + id="stop3267" />
    + </linearGradient>
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient2216"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
    + <linearGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3263"
    + id="linearGradient3269"
    + x1="12.845698"
    + y1="16.037401"
    + x2="10.698112"
    + y2="15.449714"
    + gradientUnits="userSpaceOnUse" />
    + <radialGradient
    + r="9.975256"
    + fy="18.005522"
    + fx="8.7359829"
    + cy="18.005522"
    + cx="8.7359829"
    + gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
    + gradientUnits="userSpaceOnUse"
    + id="radialGradient3191"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    <linearGradient
    inkscape:collect="always"
    - xlink:href="#linearGradient3121"
    - id="linearGradient1551"
    + id="linearGradient3150">
    + <stop
    + style="stop-color:#2e3436;stop-opacity:1;"
    + offset="0"
    + id="stop3152" />
    + <stop
    + style="stop-color:#2e3436;stop-opacity:0;"
    + offset="1"
    + id="stop3154" />
    + </linearGradient>
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient3175"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3150"
    + id="radialGradient3156"
    + cx="10.748654"
    + cy="10.457643"
    + fx="10.748654"
    + fy="10.457643"
    + r="6.6449099"
    + gradientTransform="matrix(-0.842757,0,0,-0.35721,19.80716,14.19321)"
    + gradientUnits="userSpaceOnUse" />
    + <radialGradient
    + gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
    + gradientUnits="userSpaceOnUse"
    + r="9.975256"
    + fy="18.005522"
    + fx="8.7359829"
    + cy="18.005522"
    + cx="8.7359829"
    + id="radialGradient2214"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient2255"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256" />
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient3313"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
    + <radialGradient
    + r="2.5781252"
    + fy="11.083743"
    + fx="17.911736"
    + cy="11.083743"
    + cx="17.911736"
    + gradientTransform="matrix(-1.591138,1.574803,-1.783257,-1.76495,68.854751,-2.8442229)"
    gradientUnits="userSpaceOnUse"
    - x1="42.925175"
    - y1="40.136646"
    - x2="42.925175"
    - y2="15.474488" />
    + id="radialGradient2259"
    + xlink:href="#linearGradient2382"
    + inkscape:collect="always" />
    + <linearGradient
    + inkscape:collect="always"
    + id="linearGradient2867">
    + <stop
    + style="stop-color:#d3d7cf;stop-opacity:1;"
    + offset="0"
    + id="stop2869" />
    + <stop
    + style="stop-color:#d3d7cf;stop-opacity:0;"
    + offset="1"
    + id="stop2871" />
    + </linearGradient>
    + <linearGradient
    + inkscape:collect="always"
    + id="linearGradient2847">
    + <stop
    + style="stop-color:#888a85;stop-opacity:1;"
    + offset="0"
    + id="stop2849" />
    + <stop
    + style="stop-color:#888a85;stop-opacity:0;"
    + offset="1"
    + id="stop2851" />
    + </linearGradient>
    + <linearGradient
    + inkscape:collect="always"
    + id="linearGradient2382">
    + <stop
    + style="stop-color:#d3d7cf;stop-opacity:1;"
    + offset="0"
    + id="stop2384" />
    + <stop
    + style="stop-color:#d3d7cf;stop-opacity:0;"
    + offset="1"
    + id="stop2386" />
    + </linearGradient>
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient2230"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
    + <linearGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient2847"
    + id="linearGradient2853"
    + x1="12.5"
    + y1="18.202251"
    + x2="12.746171"
    + y2="20.761486"
    + gradientUnits="userSpaceOnUse" />
    + <linearGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient2867"
    + id="linearGradient2873"
    + x1="12.720216"
    + y1="20.952612"
    + x2="12.720216"
    + y2="17.682426"
    + gradientUnits="userSpaceOnUse" />
    + <radialGradient
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + gradientUnits="userSpaceOnUse"
    + r="9.975256"
    + fy="14.186539"
    + fx="8.3343515"
    + cy="14.186539"
    + cx="8.3343515"
    + id="radialGradient2303"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient2349"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256" />
    + <radialGradient
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + gradientUnits="userSpaceOnUse"
    + r="9.975256"
    + fy="14.186539"
    + fx="8.3343515"
    + cy="14.186539"
    + cx="8.3343515"
    + id="radialGradient2233"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient2264"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256" />
    </defs>
    <sodipodi:namedview
    id="base"
    @@ -96,17 +308,19 @@
    borderopacity="1.0"
    inkscape:pageopacity="0.0"
    inkscape:pageshadow="2"
    - inkscape:zoom="16.976026"
    - inkscape:cx="39.201403"
    - inkscape:cy="23.251521"
    + inkscape:zoom="22.4"
    + inkscape:cx="41.793957"
    + inkscape:cy="31.031721"
    inkscape:document-units="px"
    inkscape:current-layer="layer1"
    showgrid="true"
    - fill="#204a87"
    - inkscape:window-width="1267"
    - inkscape:window-height="971"
    - inkscape:window-x="6"
    - inkscape:window-y="21" />
    + fill="#fce94f"
    + inkscape:window-width="1440"
    + inkscape:window-height="847"
    + inkscape:window-x="3"
    + inkscape:window-y="25"
    + width="48px"
    + height="48px" />
    <metadata
    id="metadata7">
    <rdf:RDF>
    @@ -123,25 +337,25 @@
    inkscape:groupmode="layer"
    id="layer1">
    <path
    - d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.45064,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z"
    - sodipodi:ry="8.6620579"
    - sodipodi:rx="8.6620579"
    - sodipodi:cy="19.008621"
    - sodipodi:cx="31.112698"
    - id="path4318"
    - style="opacity:0.5;color:#000000;fill:url(#radialGradient3822);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
    sodipodi:type="arc"
    - transform="matrix(2.383972,0,0,1.117487,-53.5217,33.04541)" />
    + style="opacity:0.64044949;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter3405)"
    + id="path3140"
    + sodipodi:cx="10.748654"
    + sodipodi:cy="10.457643"
    + sodipodi:rx="6.6449099"
    + sodipodi:ry="2.3675451"
    + d="M 17.393564 10.457643 A 6.6449099 2.3675451 0 1 1 4.1037445,10.457643 A 6.6449099 2.3675451 0 1 1 17.393564 10.457643 z"
    + transform="matrix(2.2723916,0,0,1.6905173,-4.1758193,23.510748)" />
    <path
    sodipodi:type="arc"
    - style="opacity:1;fill:#edd400;fill-opacity:1;stroke:#f57900;stroke-width:0.53913006;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + style="opacity:1;fill:#edd400;fill-opacity:1;stroke:#cc6400;stroke-width:0.55559433;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    id="path1307"
    sodipodi:cx="11.806158"
    sodipodi:cy="10.983024"
    sodipodi:rx="9.975256"
    sodipodi:ry="9.975256"
    d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1 1.8309021,10.983024 A 9.975256 9.975256 0 1 1 21.781414 10.983024 z"
    - transform="matrix(1.854646,0,0,1.855034,-0.899768,22.62707)" />
    + transform="matrix(1.8043406,0,0,1.8043406,-0.8023303,7.6828845)" />
    <path
    sodipodi:type="arc"
    style="opacity:0.79545456;fill:url(#radialGradient3114);fill-opacity:1;stroke:none;stroke-width:1.05274069;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    @@ -151,81 +365,90 @@
    sodipodi:rx="9.975256"
    sodipodi:ry="9.975256"
    d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1 1.8309021,10.983024 A 9.975256 9.975256 0 1 1 21.781414 10.983024 z"
    - transform="matrix(1.704217,0,0,1.704217,0.879746,24.28255)" />
    + transform="matrix(1.6958412,0,0,1.6958412,0.3182737,9.0348911)" />
    <path
    sodipodi:type="arc"
    - style="opacity:0.5;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.57006598;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.58677971;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    id="path2184"
    sodipodi:cx="11.806158"
    sodipodi:cy="10.983024"
    sodipodi:rx="9.975256"
    sodipodi:ry="9.975256"
    d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1 1.8309021,10.983024 A 9.975256 9.975256 0 1 1 21.781414 10.983024 z"
    - transform="matrix(1.75441,0,0,1.753957,0.28417,23.73792)" />
    + transform="matrix(1.7042169,0,0,1.7042169,0.3797456,8.7825452)" />
    + <path
    + style="fill:#eeeeec;fill-opacity:1;stroke:#fea523;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1"
    + d="M 19.500001,23.5 C 19.500001,26.26 17.260002,28.500001 14.500001,28.500001 C 11.740001,28.500001 9.5000001,26.26 9.5000001,23.5 C 9.5000001,20.74 11.740001,18.5 14.500001,18.5 C 17.260002,18.5 19.500001,20.74 19.500001,23.5 z "
    + id="path3154" />
    <path
    sodipodi:type="arc"
    - style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    - id="path2191"
    - sodipodi:cx="9.0598059"
    - sodipodi:cy="8.7845774"
    - sodipodi:rx="1.1679889"
    - sodipodi:ry="1.4520943"
    - d="M 10.227795 8.7845774 A 1.1679889 1.4520943 0 1 1 7.891817,8.7845774 A 1.1679889 1.4520943 0 1 1 10.227795 8.7845774 z"
    - transform="matrix(1.712345,0,0,2.754643,1.486487,11.80163)" />
    + style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:0.98640186;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + id="path2172"
    + sodipodi:cx="9.7069349"
    + sodipodi:cy="9.6526775"
    + sodipodi:rx="1.0259361"
    + sodipodi:ry="1.9413869"
    + d="M 10.732871 9.6526775 A 1.0259361 1.9413869 0 1 1 8.6809988,9.6526775 A 1.0259361 1.9413869 0 1 1 10.732871 9.6526775 z"
    + transform="matrix(1.9494387,0,0,1.2877392,-1.9230749,13.069869)" />
    + <path
    + sodipodi:type="arc"
    + style="opacity:1;fill:#eeeeec;fill-opacity:1;stroke:#fea523;stroke-width:0.282258;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + id="path3152"
    + sodipodi:cx="9.7069349"
    + sodipodi:cy="9.6526775"
    + sodipodi:rx="1.0259361"
    + sodipodi:ry="1.9413869"
    + d="M 10.732871 9.6526775 A 1.0259361 1.9413869 0 1 1 8.6809988,9.6526775 A 1.0259361 1.9413869 0 1 1 10.732871 9.6526775 z"
    + transform="matrix(4.8735976,0,0,2.5754783,-20.807694,-1.3602619)" />
    <path
    sodipodi:type="arc"
    - style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    - id="path2193"
    - sodipodi:cx="9.0598059"
    - sodipodi:cy="8.7845774"
    - sodipodi:rx="1.1679889"
    - sodipodi:ry="1.4520943"
    - d="M 10.227795 8.7845774 A 1.1679889 1.4520943 0 1 1 7.891817,8.7845774 A 1.1679889 1.4520943 0 1 1 10.227795 8.7845774 z"
    - transform="matrix(1.712345,0,0,2.754643,9.486483,11.80163)" />
    + style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:0.98640186;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + id="path3148"
    + sodipodi:cx="9.7069349"
    + sodipodi:cy="9.6526775"
    + sodipodi:rx="1.0259361"
    + sodipodi:ry="1.9413869"
    + d="M 10.732871 9.6526775 A 1.0259361 1.9413869 0 1 1 8.6809988,9.6526775 A 1.0259361 1.9413869 0 1 1 10.732871 9.6526775 z"
    + transform="matrix(1.9494393,0,0,1.2877392,9.0769201,13.069869)" />
    <path
    - style="color:#000000;fill:#eeeeec;fill-opacity:1;fill-rule:evenodd;stroke:#787878;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;stroke-dasharray:none"
    - d="M 44.078659,9.5112136 C 34.84342,9.8834971 27.500059,15.977362 27.500059,23.405814 C 27.500059,27.671183 29.253586,32.180745 33.0662,34.729626 C 33.874807,38.292011 31.54507,41.058776 31.141507,41.494102 C 31.871844,41.290557 37.643487,39.670532 39.808221,37.260561 C 41.990193,37.168054 43.23089,37.300418 44.997262,37.300418 C 54.649949,37.300418 62.494467,31.073895 62.494465,23.405814 C 62.494465,15.737733 54.649949,9.5112136 44.997262,9.5112136 C 44.695616,9.5112136 44.37657,9.4992035 44.078659,9.5112136 z "
    - id="path13316"
    - sodipodi:nodetypes="cscccsssc" />
    - <path
    - sodipodi:type="inkscape:offset"
    - inkscape:radius="-1.0020103"
    - inkscape:original="M 44.09375 9.5 C 34.858511 9.8722838 27.5 15.977798 27.5 23.40625 C 27.5 27.67162 29.249886 32.169869 33.0625 34.71875 C 33.871107 38.281135 31.559813 41.064674 31.15625 41.5 C 31.886588 41.296455 37.647766 39.659971 39.8125 37.25 C 41.994473 37.157491 43.233628 37.3125 45 37.3125 C 54.652688 37.312499 62.500002 31.074331 62.5 23.40625 C 62.5 15.73817 54.652687 9.5 45 9.5 C 44.698355 9.5000003 44.391661 9.4879899 44.09375 9.5 z "
    - xlink:href="#path13316"
    - style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
    - id="path13323"
    - inkscape:href="#path13316"
    - d="M 43.9375,10.5 C 35.082559,10.856667 28.28125,16.643774 28.28125,23.4375 C 28.28125,27.441186 29.946384,31.636673 33.4375,33.96875 C 33.648247,34.117093 33.793739,34.340928 33.84375,34.59375 C 34.305353,36.625753 33.873291,38.418899 33.28125,39.75 C 33.741286,39.588469 33.859625,39.584381 34.375,39.375 C 36.123726,38.664548 38.008731,37.651133 38.875,36.6875 C 39.056781,36.478508 39.316956,36.354077 39.59375,36.34375 C 41.847992,36.248256 43.128683,36.40625 44.84375,36.40625 C 54.103198,36.406251 61.406252,30.447219 61.40625,23.4375 C 61.406249,16.427779 54.105354,10.5 44.84375,10.5 C 44.5143,10.499999 44.179676,10.490245 43.9375,10.5 z " />
    + style="opacity:1;fill:#ce5c00;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + d="M 30,32 C 28.885686,35.996588 25.067255,39 20.5,39 C 15.932746,39 12.114315,35.996588 11,32 C 16.460075,38.82871 24.447577,38.177252 30,32 z "
    + id="path2186"
    + sodipodi:nodetypes="cscc" />
    <path
    - sodipodi:type="inkscape:offset"
    - inkscape:radius="-1.0109046"
    - inkscape:original="M 44.09375 9.5 C 34.858511 9.8722838 27.5 15.977798 27.5 23.40625 C 27.5 27.67162 29.249886 32.169869 33.0625 34.71875 C 33.871107 38.281135 31.559813 41.064674 31.15625 41.5 C 31.886588 41.296455 37.647766 39.659971 39.8125 37.25 C 41.994473 37.157491 43.233628 37.3125 45 37.3125 C 54.652688 37.312499 62.500002 31.074331 62.5 23.40625 C 62.5 15.73817 54.652687 9.5 45 9.5 C 44.698355 9.5000003 44.391661 9.4879899 44.09375 9.5 z "
    - xlink:href="#path13316"
    - style="opacity:1;color:#000000;fill:url(#linearGradient1551);fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;stroke-dasharray:none"
    - id="path1336"
    - inkscape:href="#path13316"
    - d="M 43.9375,10.5 C 35.086269,10.856517 28.28125,16.649624 28.28125,23.4375 C 28.28125,27.43874 29.949375,31.638672 33.4375,33.96875 C 33.659358,34.111954 33.816384,34.336276 33.875,34.59375 C 34.337119,36.628026 33.873842,38.417659 33.28125,39.75 C 33.741161,39.588512 33.859781,39.584317 34.375,39.375 C 36.123195,38.664763 38.010688,37.617706 38.875,36.65625 C 39.06282,36.459679 39.321894,36.347038 39.59375,36.34375 C 41.848554,36.248232 43.129202,36.40625 44.84375,36.40625 C 54.099359,36.406251 61.406252,30.441153 61.40625,23.4375 C 61.406249,16.433845 54.101534,10.5 44.84375,10.5 C 44.514064,10.499999 44.17917,10.490265 43.9375,10.5 z " />
    - <flowRoot
    - xml:space="preserve"
    - id="flowRoot2649"
    - style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#204a87;font-family:Bitstream Charter"
    - transform="matrix(1.282232,0,0,1.31579,-8.49345,-11.44883)"><flowRegion
    - id="flowRegion2651"><rect
    - id="rect2653"
    - width="44.011906"
    - height="42.819229"
    - x="36.988094"
    - y="20.180773"
    - style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#204a87;font-family:Bitstream Charter" /></flowRegion><flowPara
    - id="flowPara2655">?</flowPara></flowRoot> <rect
    - style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    - id="rect2278"
    - width="16.246384"
    - height="1.4764884"
    - x="-2.760174"
    - y="54.321537"
    - ry="0.49634099"
    - rx="0.49687836"
    - transform="matrix(0.972407,-0.233292,0.286699,0.958021,0,0)" />
    + sodipodi:type="arc"
    + style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#f57900;stroke-width:0.3774938;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + id="path2259"
    + sodipodi:cx="8.3258924"
    + sodipodi:cy="9.2232141"
    + sodipodi:rx="1.2276785"
    + sodipodi:ry="1.7410715"
    + d="M 7.2133909,8.4869402 A 1.2276785,1.7410715 0 0 1 9.288462,8.1425499"
    + transform="matrix(3.5277688,0.705265,-0.6665314,1.855957,3.2901886,-4.1630499)"
    + sodipodi:start="3.5782199"
    + sodipodi:end="5.6135639"
    + sodipodi:open="true" />
    + <path
    + sodipodi:type="arc"
    + style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#f57900;stroke-width:0.3774938;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + id="path2261"
    + sodipodi:cx="8.3258924"
    + sodipodi:cy="9.2232141"
    + sodipodi:rx="1.2276785"
    + sodipodi:ry="1.7410715"
    + d="M 7.2133909,8.4869402 A 1.2276785,1.7410715 0 0 1 9.288462,8.1425499"
    + transform="matrix(-3.5277688,0.705265,0.6665314,1.855957,37.208475,-4.1630499)"
    + sodipodi:start="3.5782199"
    + sodipodi:end="5.6135639"
    + sodipodi:open="true" />
    + <path
    + transform="translate(-2.96875,2.96875)"
    + style="font-size:19.03945923px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#204a87;fill-opacity:1;stroke:none;stroke-width:1.55613649px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Century Schoolbook L"
    + d="M 41.5625,0.03125 C 39.882592,0.03125 38.340312,0.45633843 37.125,1.3125 C 35.909688,2.1686616 35.03125,3.5773827 35.03125,5.15625 C 35.031248,6.9581536 36.509895,8.65625 38.375,8.65625 C 39.965182,8.6562496 41.5,7.3378655 41.5,5.65625 C 41.5,5.3071726 41.34266,4.9823536 41.21875,4.65625 C 41.387991,4.6997757 41.631962,4.7250666 41.6875,4.78125 C 41.780384,4.8752143 41.90625,5.0515022 41.90625,5.59375 C 41.90625,6.1652988 41.718827,6.6932831 41.46875,7.03125 C 40.561362,8.1855326 40.145637,8.7242892 39.8125,9.21875 C 39.479363,9.7132108 39.280996,10.139806 39.125,10.53125 C 39.124907,10.541666 39.124907,10.552084 39.125,10.5625 C 39.043286,10.775751 38.25,11.848298 38.25,13.46875 L 38.25,14.21875 C 38.248868,14.683225 38.432878,15.129003 38.761313,15.457437 C 39.089747,15.785872 39.535525,15.969882 40,15.96875 L 40.59375,15.96875 C 39.296693,16.363109 38.1875,17.335329 38.1875,18.78125 C 38.187498,20.599164 39.742417,21.96875 41.46875,21.96875 C 43.193995,21.968752 44.75,20.563489 44.75,18.78125 C 44.749996,17.191313 43.501537,16.129612 42.0625,15.84375 C 42.760608,15.593328 43.224284,14.929144 43.21875,14.1875 C 43.207309,13.142551 43.280625,12.715648 43.375,12.5 C 43.469375,12.284352 43.666112,12.036543 44.375,11.46875 C 44.385548,11.458466 44.395966,11.448048 44.40625,11.4375 C 45.640264,10.416457 46.472134,9.663013 47.09375,8.75 C 47.715366,7.836987 47.96875,6.7448903 47.96875,5.75 C 47.968751,4.1061365 47.251058,2.5766205 46.0625,1.5625 C 44.873942,0.5483795 43.29027,0.03125 41.5625,0.03125 z "
    + id="path3346" />
    + <path
    + id="text2395"
    + d="M 38.506782,17.184869 C 38.482313,14.953817 38.751472,14.339138 40.317489,13.087017 C 42.715448,11.106389 43.253768,10.332347 43.253768,8.7387398 C 43.253768,6.3710938 41.369653,4.7774818 38.580188,4.7774818 C 35.815195,4.7774818 33.808732,6.1889664 33.808732,8.1468275 C 33.808732,9.1485242 34.493866,9.8997976 35.399218,9.8997976 C 36.182227,9.8997976 36.793951,9.3534166 36.793951,8.6476754 C 36.793951,8.1923596 36.549258,7.8053395 36.08435,7.4410862 C 35.717315,7.1678961 35.692845,7.122364 35.692845,6.9402374 C 35.692845,6.3483259 36.769483,5.8019451 37.943996,5.8019451 C 39.681291,5.8019451 40.684521,6.8491761 40.684521,8.6021443 C 40.684521,9.5355437 40.390894,10.400647 39.901517,11.060855 C 38.09081,13.360205 38.090807,13.360208 37.772712,14.157012 C 37.528022,14.794454 37.034866,15.386368 37.034866,16.456362 L 37.034866,17.184869 L 38.506782,17.184869 M 38.512445,20.345536 C 37.65603,20.345536 36.970897,20.982982 36.970897,21.75702 C 36.970897,22.553823 37.65603,23.191268 38.487976,23.191268 C 39.344388,23.191268 40.029523,22.553823 40.029523,21.75702 C 40.029523,20.982982 39.344388,20.345536 38.512445,20.345536"
    + style="font-size:19.03945923px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#eeeeec;fill-opacity:1;stroke:#ffffff;stroke-width:1.55496371px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Century Schoolbook L" />
    </g>
    </svg>
    --- a/pidgin/pixmaps/dialogs/64/scalable/warning.svg Wed Sep 19 03:28:52 2007 +0000
    +++ b/pidgin/pixmaps/dialogs/64/scalable/warning.svg Wed Sep 19 03:30:40 2007 +0000
    @@ -7,55 +7,35 @@
    xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
    xmlns:xlink="http://www.w3.org/1999/xlink"
    - xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/s odipodi-0.dtd"
    + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
    - width="64"
    - height="64"
    + width="48"
    + height="48"
    id="svg2"
    sodipodi:version="0.32"
    - inkscape:version="0.43"
    + inkscape:version="0.45"
    version="1.0"
    - sodipodi:docbase="/home/hbons/Desktop/Gaim Refresh/dialogs"
    + sodipodi:docbase="/home/hbons/Desktop/2.1.1/dialogs"
    sodipodi:docname="dialog-warning.svg"
    - inkscape:export-filename="/home/hbons/Desktop/Gaim Refresh/dialogs/dialog-warning.png"
    + inkscape:export-filename="/home/hbons/Desktop/newstyle.png"
    inkscape:export-xdpi="90"
    - inkscape:export-ydpi="90">
    + inkscape:export-ydpi="90"
    + inkscape:output_extension="org.inkscape.output.svg.inkscape"
    + sodipodi:modified="true">
    <defs
    id="defs4">
    <linearGradient
    inkscape:collect="always"
    - id="linearGradient3121">
    - <stop
    - style="stop-color:#d3d7cf;stop-opacity:1;"
    - offset="0"
    - id="stop3123" />
    + id="linearGradient3179">
    <stop
    - style="stop-color:#d3d7cf;stop-opacity:0;"
    - offset="1"
    - id="stop3125" />
    - </linearGradient>
    - <linearGradient
    - inkscape:collect="always"
    - id="linearGradient3816">
    - <stop
    - style="stop-color:#000000;stop-opacity:1;"
    + style="stop-color:#555753;stop-opacity:1;"
    offset="0"
    - id="stop3818" />
    + id="stop3181" />
    <stop
    - style="stop-color:#000000;stop-opacity:0;"
    + style="stop-color:#555753;stop-opacity:0;"
    offset="1"
    - id="stop3820" />
    + id="stop3183" />
    </linearGradient>
    - <radialGradient
    - inkscape:collect="always"
    - xlink:href="#linearGradient3816"
    - id="radialGradient3822"
    - cx="31.112698"
    - cy="19.008621"
    - fx="31.112698"
    - fy="19.008621"
    - r="8.6620579"
    - gradientUnits="userSpaceOnUse" />
    <linearGradient
    inkscape:collect="always"
    id="linearGradient3104">
    @@ -79,15 +59,268 @@
    r="9.975256"
    gradientUnits="userSpaceOnUse"
    gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
    + <filter
    + inkscape:collect="always"
    + x="-0.27879593"
    + width="1.5575919"
    + y="-0.78248727"
    + height="2.5649745"
    + id="filter3405">
    + <feGaussianBlur
    + inkscape:collect="always"
    + stdDeviation="1.5438116"
    + id="feGaussianBlur3407" />
    + </filter>
    + <radialGradient
    + r="9.975256"
    + fy="18.005522"
    + fx="8.7359829"
    + cy="18.005522"
    + cx="8.7359829"
    + gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
    + gradientUnits="userSpaceOnUse"
    + id="radialGradient2247"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    + <linearGradient
    + inkscape:collect="always"
    + id="linearGradient3263">
    + <stop
    + style="stop-color:#555753;stop-opacity:1;"
    + offset="0"
    + id="stop3265" />
    + <stop
    + style="stop-color:#555753;stop-opacity:0;"
    + offset="1"
    + id="stop3267" />
    + </linearGradient>
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient2216"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
    + <linearGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3263"
    + id="linearGradient3269"
    + x1="12.845698"
    + y1="16.037401"
    + x2="10.698112"
    + y2="15.449714"
    + gradientUnits="userSpaceOnUse" />
    + <radialGradient
    + r="9.975256"
    + fy="18.005522"
    + fx="8.7359829"
    + cy="18.005522"
    + cx="8.7359829"
    + gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
    + gradientUnits="userSpaceOnUse"
    + id="radialGradient3191"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    <linearGradient
    inkscape:collect="always"
    - xlink:href="#linearGradient3121"
    - id="linearGradient1551"
    + id="linearGradient3150">
    + <stop
    + style="stop-color:#2e3436;stop-opacity:1;"
    + offset="0"
    + id="stop3152" />
    + <stop
    + style="stop-color:#2e3436;stop-opacity:0;"
    + offset="1"
    + id="stop3154" />
    + </linearGradient>
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient3175"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3150"
    + id="radialGradient3156"
    + cx="10.748654"
    + cy="10.457643"
    + fx="10.748654"
    + fy="10.457643"
    + r="6.6449099"
    + gradientTransform="matrix(-0.842757,0,0,-0.35721,19.80716,14.19321)"
    + gradientUnits="userSpaceOnUse" />
    + <radialGradient
    + gradientTransform="matrix(-1.3308754,1.3308124,-1.4391023,-1.4390341,45.391773,16.51952)"
    + gradientUnits="userSpaceOnUse"
    + r="9.975256"
    + fy="18.005522"
    + fx="8.7359829"
    + cy="18.005522"
    + cx="8.7359829"
    + id="radialGradient2214"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient2255"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256" />
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient3313"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
    + <radialGradient
    + r="2.5781252"
    + fy="11.083743"
    + fx="17.911736"
    + cy="11.083743"
    + cx="17.911736"
    + gradientTransform="matrix(-1.591138,1.574803,-1.783257,-1.76495,68.854751,-2.8442229)"
    gradientUnits="userSpaceOnUse"
    - x1="42.925175"
    - y1="40.136646"
    - x2="42.925175"
    - y2="15.474488" />
    + id="radialGradient2259"
    + xlink:href="#linearGradient2382"
    + inkscape:collect="always" />
    + <linearGradient
    + inkscape:collect="always"
    + id="linearGradient2867">
    + <stop
    + style="stop-color:#d3d7cf;stop-opacity:1;"
    + offset="0"
    + id="stop2869" />
    + <stop
    + style="stop-color:#d3d7cf;stop-opacity:0;"
    + offset="1"
    + id="stop2871" />
    + </linearGradient>
    + <linearGradient
    + inkscape:collect="always"
    + id="linearGradient2847">
    + <stop
    + style="stop-color:#888a85;stop-opacity:1;"
    + offset="0"
    + id="stop2849" />
    + <stop
    + style="stop-color:#888a85;stop-opacity:0;"
    + offset="1"
    + id="stop2851" />
    + </linearGradient>
    + <linearGradient
    + inkscape:collect="always"
    + id="linearGradient2382">
    + <stop
    + style="stop-color:#d3d7cf;stop-opacity:1;"
    + offset="0"
    + id="stop2384" />
    + <stop
    + style="stop-color:#d3d7cf;stop-opacity:0;"
    + offset="1"
    + id="stop2386" />
    + </linearGradient>
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient2230"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)" />
    + <linearGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient2847"
    + id="linearGradient2853"
    + x1="12.5"
    + y1="18.202251"
    + x2="12.746171"
    + y2="20.761486"
    + gradientUnits="userSpaceOnUse" />
    + <linearGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient2867"
    + id="linearGradient2873"
    + x1="12.720216"
    + y1="20.952612"
    + x2="12.720216"
    + y2="17.682426"
    + gradientUnits="userSpaceOnUse" />
    + <radialGradient
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + gradientUnits="userSpaceOnUse"
    + r="9.975256"
    + fy="14.186539"
    + fx="8.3343515"
    + cy="14.186539"
    + cx="8.3343515"
    + id="radialGradient2303"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient2349"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256" />
    + <radialGradient
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + gradientUnits="userSpaceOnUse"
    + r="9.975256"
    + fy="14.186539"
    + fx="8.3343515"
    + cy="14.186539"
    + cx="8.3343515"
    + id="radialGradient2233"
    + xlink:href="#linearGradient3104"
    + inkscape:collect="always" />
    + <radialGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3104"
    + id="radialGradient2264"
    + gradientUnits="userSpaceOnUse"
    + gradientTransform="matrix(-0.9327,0.932656,-0.947494,-0.947449,33.02126,11.96667)"
    + cx="8.3343515"
    + cy="14.186539"
    + fx="8.3343515"
    + fy="14.186539"
    + r="9.975256" />
    + <linearGradient
    + inkscape:collect="always"
    + xlink:href="#linearGradient3179"
    + id="linearGradient3185"
    + x1="19.107143"
    + y1="33.892857"
    + x2="24.017857"
    + y2="33.892857"
    + gradientUnits="userSpaceOnUse" />
    </defs>
    <sodipodi:namedview
    id="base"
    @@ -96,17 +329,19 @@
    borderopacity="1.0"
    inkscape:pageopacity="0.0"
    inkscape:pageshadow="2"
    - inkscape:zoom="12.003863"
    - inkscape:cx="39.201403"
    - inkscape:cy="23.251521"
    + inkscape:zoom="11.2"
    + inkscape:cx="48.857979"
    + inkscape:cy="24.415118"
    inkscape:document-units="px"
    inkscape:current-layer="layer1"
    showgrid="true"
    - fill="#cc0000"
    - inkscape:window-width="1267"
    - inkscape:window-height="971"
    - inkscape:window-x="6"
    - inkscape:window-y="21" />
    + fill="#fce94f"
    + inkscape:window-width="1440"
    + inkscape:window-height="845"
    + inkscape:window-x="3"
    + inkscape:window-y="25"
    + width="48px"
    + height="48px" />
    <metadata
    id="metadata7">
    <rdf:RDF>
    @@ -123,25 +358,25 @@
    inkscape:groupmode="layer"
    id="layer1">
    <path
    - d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.45064,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z"
    - sodipodi:ry="8.6620579"
    - sodipodi:rx="8.6620579"
    - sodipodi:cy="19.008621"
    - sodipodi:cx="31.112698"
    - id="path4318"
    - style="opacity:0.5;color:#000000;fill:url(#radialGradient3822);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
    sodipodi:type="arc"
    - transform="matrix(2.383972,0,0,1.117487,-53.5217,33.04541)" />
    + style="opacity:0.64044949;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter3405)"
    + id="path3140"
    + sodipodi:cx="10.748654"
    + sodipodi:cy="10.457643"
    + sodipodi:rx="6.6449099"
    + sodipodi:ry="2.3675451"
    + d="M 17.393564 10.457643 A 6.6449099 2.3675451 0 1 1 4.1037445,10.457643 A 6.6449099 2.3675451 0 1 1 17.393564 10.457643 z"
    + transform="matrix(2.2723916,0,0,1.6905173,-0.1758194,23.510748)" />
    <path
    sodipodi:type="arc"
    - style="opacity:1;fill:#edd400;fill-opacity:1;stroke:#f57900;stroke-width:0.53913006;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + style="opacity:1;fill:#edd400;fill-opacity:1;stroke:#cc6400;stroke-width:0.55559433;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    id="path1307"
    sodipodi:cx="11.806158"
    sodipodi:cy="10.983024"
    sodipodi:rx="9.975256"
    sodipodi:ry="9.975256"
    d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1 1.8309021,10.983024 A 9.975256 9.975256 0 1 1 21.781414 10.983024 z"
    - transform="matrix(1.854646,0,0,1.855034,-0.899768,22.62707)" />
    + transform="matrix(1.8043406,0,0,1.8043406,3.1976696,7.6828846)" />
    <path
    sodipodi:type="arc"
    style="opacity:0.79545456;fill:url(#radialGradient3114);fill-opacity:1;stroke:none;stroke-width:1.05274069;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    @@ -151,83 +386,96 @@
    sodipodi:rx="9.975256"
    sodipodi:ry="9.975256"
    d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1 1.8309021,10.983024 A 9.975256 9.975256 0 1 1 21.781414 10.983024 z"
    - transform="matrix(1.704217,0,0,1.704217,0.879746,24.28255)" />
    + transform="matrix(1.6958412,0,0,1.6958412,4.3182736,9.0348912)" />
    <path
    sodipodi:type="arc"
    - style="opacity:0.5;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.57006598;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.58677971;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    id="path2184"
    sodipodi:cx="11.806158"
    sodipodi:cy="10.983024"
    sodipodi:rx="9.975256"
    sodipodi:ry="9.975256"
    d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1 1.8309021,10.983024 A 9.975256 9.975256 0 1 1 21.781414 10.983024 z"
    - transform="matrix(1.75441,0,0,1.753957,0.28417,23.73792)" />
    + transform="matrix(1.7042169,0,0,1.7042169,4.3797455,8.7825453)" />
    <path
    - style="color:#000000;fill:#eeeeec;fill-opacity:1;fill-rule:evenodd;stroke:#787878;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;stroke-dasharray:none"
    - d="M 44.078659,9.5112136 C 34.84342,9.8834971 27.500059,15.977362 27.500059,23.405814 C 27.500059,27.671183 29.253586,32.180745 33.0662,34.729626 C 33.874807,38.292011 31.54507,41.058776 31.141507,41.494102 C 31.871844,41.290557 37.643487,39.670532 39.808221,37.260561 C 41.990193,37.168054 43.23089,37.300418 44.997262,37.300418 C 54.649949,37.300418 62.494467,31.073895 62.494465,23.405814 C 62.494465,15.737733 54.649949,9.5112136 44.997262,9.5112136 C 44.695616,9.5112136 44.37657,9.4992035 44.078659,9.5112136 z "
    - id="path13316"
    - sodipodi:nodetypes="cscccsssc" />
    + style="fill:#eeeeec;fill-opacity:1;stroke:#fea523;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1"
    + d="M 23.500001,23.5 C 23.500001,26.26 21.260002,28.500001 18.500001,28.500001 C 15.740001,28.500001 13.5,26.26 13.5,23.5 C 13.5,20.74 15.740001,18.5 18.500001,18.5 C 21.260002,18.5 23.500001,20.74 23.500001,23.5 z "
    + id="path3154" />
    <path
    - sodipodi:type="inkscape:offset"
    - inkscape:radius="-1.0020103"
    - inkscape:original="M 44.09375 9.5 C 34.858511 9.8722838 27.5 15.977798 27.5 23.40625 C 27.5 27.67162 29.249886 32.169869 33.0625 34.71875 C 33.871107 38.281135 31.559813 41.064674 31.15625 41.5 C 31.886588 41.296455 37.647766 39.659971 39.8125 37.25 C 41.994473 37.157491 43.233628 37.3125 45 37.3125 C 54.652688 37.312499 62.500002 31.074331 62.5 23.40625 C 62.5 15.73817 54.652687 9.5 45 9.5 C 44.698355 9.5000003 44.391661 9.4879899 44.09375 9.5 z "
    - xlink:href="#path13316"
    - style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
    - id="path13323"
    - inkscape:href="#path13316"
    - d="M 43.9375,10.5 C 35.082559,10.856667 28.28125,16.643774 28.28125,23.4375 C 28.28125,27.441186 29.946384,31.636673 33.4375,33.96875 C 33.648247,34.117093 33.793739,34.340928 33.84375,34.59375 C 34.305353,36.625753 33.873291,38.418899 33.28125,39.75 C 33.741286,39.588469 33.859625,39.584381 34.375,39.375 C 36.123726,38.664548 38.008731,37.651133 38.875,36.6875 C 39.056781,36.478508 39.316956,36.354077 39.59375,36.34375 C 41.847992,36.248256 43.128683,36.40625 44.84375,36.40625 C 54.103198,36.406251 61.406252,30.447219 61.40625,23.4375 C 61.406249,16.427779 54.105354,10.5 44.84375,10.5 C 44.5143,10.499999 44.179676,10.490245 43.9375,10.5 z " />
    + sodipodi:type="arc"
    + style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:0.98640186;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + id="path2172"
    + sodipodi:cx="9.7069349"
    + sodipodi:cy="9.6526775"
    + sodipodi:rx="1.0259361"
    + sodipodi:ry="1.9413869"
    + d="M 10.732871 9.6526775 A 1.0259361 1.9413869 0 1 1 8.6809988,9.6526775 A 1.0259361 1.9413869 0 1 1 10.732871 9.6526775 z"
    + transform="matrix(1.9494387,0,0,1.2877392,1.0769249,12.069869)" />
    + <path
    + sodipodi:type="arc"
    + style="opacity:1;fill:#eeeeec;fill-opacity:1;stroke:#fea523;stroke-width:0.282258;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + id="path3152"
    + sodipodi:cx="9.7069349"
    + sodipodi:cy="9.6526775"
    + sodipodi:rx="1.0259361"
    + sodipodi:ry="1.9413869"
    + d="M 10.732871 9.6526775 A 1.0259361 1.9413869 0 1 1 8.6809988,9.6526775 A 1.0259361 1.9413869 0 1 1 10.732871 9.6526775 z"
    + transform="matrix(4.8735976,0,0,2.5754783,-16.807694,-1.3602618)" />
    <path
    - sodipodi:type="inkscape:offset"
    - inkscape:radius="-1.0109046"
    - inkscape:original="M 44.09375 9.5 C 34.858511 9.8722838 27.5 15.977798 27.5 23.40625 C 27.5 27.67162 29.249886 32.169869 33.0625 34.71875 C 33.871107 38.281135 31.559813 41.064674 31.15625 41.5 C 31.886588 41.296455 37.647766 39.659971 39.8125 37.25 C 41.994473 37.157491 43.233628 37.3125 45 37.3125 C 54.652688 37.312499 62.500002 31.074331 62.5 23.40625 C 62.5 15.73817 54.652687 9.5 45 9.5 C 44.698355 9.5000003 44.391661 9.4879899 44.09375 9.5 z "
    - xlink:href="#path13316"
    - style="opacity:1;color:#000000;fill:url(#linearGradient1551);fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;stroke-dasharray:none"
    - id="path1336"
    - inkscape:href="#path13316"
    - d="M 43.9375,10.5 C 35.086269,10.856517 28.28125,16.649624 28.28125,23.4375 C 28.28125,27.43874 29.949375,31.638672 33.4375,33.96875 C 33.659358,34.111954 33.816384,34.336276 33.875,34.59375 C 34.337119,36.628026 33.873842,38.417659 33.28125,39.75 C 33.741161,39.588512 33.859781,39.584317 34.375,39.375 C 36.123195,38.664763 38.010688,37.617706 38.875,36.65625 C 39.06282,36.459679 39.321894,36.347038 39.59375,36.34375 C 41.848554,36.248232 43.129202,36.40625 44.84375,36.40625 C 54.099359,36.406251 61.406252,30.441153 61.40625,23.4375 C 61.406249,16.433845 54.101534,10.5 44.84375,10.5 C 44.514064,10.499999 44.17917,10.490265 43.9375,10.5 z " />
    - <flowRoot
    - xml:space="preserve"
    - id="flowRoot2649"
    - style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#cc0000;font-family:Bitstream Charter"
    - transform="matrix(1.41844,0,0,1.343101,-12.30498,-12.66081)"><flowRegion
    - id="flowRegion2651"><rect
    - id="rect2653"
    - width="44.011906"
    - height="42.819229"
    - x="36.988094"
    - y="20.180773"
    - style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#cc0000;font-family:Bitstream Charter" /></flowRegion><flowPara
    - id="flowPara2655">!</flowPara></flowRoot> <path
    + sodipodi:type="arc"
    + style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:0.98640186;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + id="path3148"
    + sodipodi:cx="9.7069349"
    + sodipodi:cy="9.6526775"
    + sodipodi:rx="1.0259361"
    + sodipodi:ry="1.9413869"
    + d="M 10.732871 9.6526775 A 1.0259361 1.9413869 0 1 1 8.6809988,9.6526775 A 1.0259361 1.9413869 0 1 1 10.732871 9.6526775 z"
    + transform="matrix(1.9494393,0,0,1.2877392,10.07692,12.069869)" />
    + <path
    sodipodi:type="arc"
    - style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    - id="path2193"
    - sodipodi:cx="9.0598059"
    - sodipodi:cy="8.7845774"
    - sodipodi:rx="1.1679889"
    - sodipodi:ry="1.4520943"
    - d="M 10.227795 8.7845774 A 1.1679889 1.4520943 0 1 1 7.891817,8.7845774 A 1.1679889 1.4520943 0 1 1 10.227795 8.7845774 z"
    - transform="matrix(1.712345,0,0,2.754643,9.486483,14.80163)" />
    + style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#f57900;stroke-width:0.3774938;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + id="path2259"
    + sodipodi:cx="8.3258924"
    + sodipodi:cy="9.2232141"
    + sodipodi:rx="1.2276785"
    + sodipodi:ry="1.7410715"
    + d="M 7.2133909,8.4869402 A 1.2276785,1.7410715 0 0 1 9.288462,8.1425499"
    + transform="matrix(3.5277688,0.705265,-0.6665314,1.855957,7.2901885,-4.1630498)"
    + sodipodi:start="3.5782199"
    + sodipodi:end="5.6135639"
    + sodipodi:open="true" />
    + <path
    + sodipodi:type="arc"
    + style="opacity:0.64044949;fill:none;fill-opacity:1;stroke:#f57900;stroke-width:0.3774938;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + id="path2261"
    + sodipodi:cx="8.3258924"
    + sodipodi:cy="9.2232141"
    + sodipodi:rx="1.2276785"
    + sodipodi:ry="1.7410715"
    + d="M 7.2133909,8.4869402 A 1.2276785,1.7410715 0 0 1 9.288462,8.1425499"
    + transform="matrix(-3.5277688,0.705265,0.6665314,1.855957,41.208475,-4.1630498)"
    + sodipodi:start="3.5782199"
    + sodipodi:end="5.6135639"
    + sodipodi:open="true" />
    <path
    sodipodi:type="arc"
    style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    - id="path2191"
    - sodipodi:cx="9.0598059"
    - sodipodi:cy="8.7845774"
    - sodipodi:rx="1.1679889"
    - sodipodi:ry="1.4520943"
    - d="M 10.227795 8.7845774 A 1.1679889 1.4520943 0 1 1 7.891817,8.7845774 A 1.1679889 1.4520943 0 1 1 10.227795 8.7845774 z"
    - transform="matrix(1.712345,0,0,2.754643,1.486487,14.80163)" />
    + id="path3228"
    + sodipodi:cx="21.5625"
    + sodipodi:cy="33.892857"
    + sodipodi:rx="2.4553571"
    + sodipodi:ry="1.9642857"
    + d="M 24.017857 33.892857 A 2.4553571 1.9642857 0 1 1 19.107143,33.892857 A 2.4553571 1.9642857 0 1 1 24.017857 33.892857 z"
    + transform="matrix(3.0545454,0,0,2.2909093,-41.363636,-42.145461)" />
    <path
    sodipodi:type="arc"
    - style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    - id="path2251"
    - sodipodi:cx="9.3754778"
    - sodipodi:cy="13.4881"
    - sodipodi:rx="6.1556172"
    - sodipodi:ry="6.1556172"
    - d="M 15.531095 13.4881 A 6.1556172 6.1556172 0 1 1 3.2198606,13.4881 A 6.1556172 6.1556172 0 1 1 15.531095 13.4881 z"
    - transform="matrix(0.97472,0,0,0.812266,11.86154,41.04407)"
    - inkscape:export-xdpi="90"
    - inkscape:export-ydpi="90" />
    + style="opacity:1;fill:url(#linearGradient3185);fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
    + id="path2206"
    + sodipodi:cx="21.5625"
    + sodipodi:cy="33.892857"
    + sodipodi:rx="2.4553571"
    + sodipodi:ry="1.9642857"
    + d="M 24.017857 33.892857 A 2.4553571 1.9642857 0 1 1 19.107143,33.892857 A 2.4553571 1.9642857 0 1 1 24.017857 33.892857 z"
    + transform="matrix(-3.0545454,0,0,2.2909093,90.363634,-42.145461)" />
    </g>
    </svg>
    Binary file pidgin/pixmaps/dialogs/64/warning.png has changed
    --- a/pidgin/pixmaps/emblems/16/Makefile.am Wed Sep 19 03:28:52 2007 +0000
    +++ b/pidgin/pixmaps/emblems/16/Makefile.am Wed Sep 19 03:30:40 2007 +0000
    @@ -1,6 +1,7 @@
    SUBDIRS = scalable
    EXTRA_DIST = aol-client.png \
    + birthday.png \
    blocked.png \
    bot.png \
    external.png \
    Binary file pidgin/pixmaps/emblems/16/birthday.png has changed
    --- a/pidgin/pixmaps/emotes/default/24/default.theme.in Wed Sep 19 03:28:52 2007 +0000
    +++ b/pidgin/pixmaps/emotes/default/24/default.theme.in Wed Sep 19 03:30:40 2007 +0000
    @@ -23,7 +23,7 @@
    foot-in-mouth.png :-!
    shout.png >:o >:O
    ! skywalker.png C:-) c:-) C:) c:)
    -! monkey.png :-(|) :(|)
    +! monkey.png :-(|) :(|) 8-|)
    ! cyclops.png O-) o-)
    # Following AIM 6.1
    Binary file pidgin/pixmaps/protocols/16/myspace.png has changed
    Binary file pidgin/pixmaps/protocols/48/myspace.png has changed
    Binary file pidgin/pixmaps/toolbar/16/emote-select.png has changed
    Binary file pidgin/pixmaps/toolbar/16/insert.png has changed
    Binary file pidgin/pixmaps/toolbar/16/send-file.png has changed
    --- a/pidgin/plugins/gtkbuddynote.c Wed Sep 19 03:28:52 2007 +0000
    +++ b/pidgin/plugins/gtkbuddynote.c Wed Sep 19 03:30:40 2007 +0000
    @@ -31,8 +31,11 @@
    const gchar *note = purple_blist_node_get_string(node, "notes");
    if ((note != NULL) && (*note != '\0')) {
    + char *tmp;
    + purple_markup_html_to_xhtml(note, NULL, &tmp);
    g_string_append_printf(text, _("\n<b>Buddy Note</b>: %s"),
    - note);
    + tmp);
    + g_free(tmp);
    }
    }
    }