# HG changeset patch # User Yoshiki Yazawa # Date 1290118384 -32400 # Node ID 29b4f2c525339e3b56d07546ebfbce1cde7420c2 # Parent ccd6a1da0d59c87b56cc9626ad30c0033691f082# Parent 02c0a2640fc2e148773fc157200c5bd3603d85bb merged from im.pidgin.pidgin diff -r ccd6a1da0d59 -r 29b4f2c52533 ChangeLog --- a/ChangeLog Thu Nov 18 23:07:34 2010 +0900 +++ b/ChangeLog Fri Nov 19 07:13:04 2010 +0900 @@ -10,6 +10,10 @@ (http://developer.pidgin.im/wiki/SlpArchitecture) * Lots of little changes. + XMPP: + * Avoid a double-free in the Google Relay (V/V) code. + * Avoid double error message when failing a file transfer. (#12757) + version 2.7.5 (10/31/2010): General: * Added Verisign Class 3 Public CA - G2 root CA. diff -r ccd6a1da0d59 -r 29b4f2c52533 libpurple/protocols/jabber/google/google_session.c --- a/libpurple/protocols/jabber/google/google_session.c Thu Nov 18 23:07:34 2010 +0900 +++ b/libpurple/protocols/jabber/google/google_session.c Fri Nov 19 07:13:04 2010 +0900 @@ -372,7 +372,7 @@ params = jabber_google_session_get_params(js, relay_ip, relay_udp, relay_tcp, relay_ssltcp, relay_username, relay_password, &num_params); - + if (purple_media_add_stream(session_data->media, "google-voice", session->remote_jid, PURPLE_MEDIA_AUDIO, TRUE, "nice", num_params, params) == FALSE || @@ -382,12 +382,11 @@ TRUE, "nice", num_params, params) == FALSE)) { purple_media_error(session_data->media, "Error adding stream."); purple_media_end(session_data->media, NULL, NULL); - g_free(params); } else { session_data->added_streams = TRUE; } - g_free(params); + g_free(params); } diff -r ccd6a1da0d59 -r 29b4f2c52533 libpurple/protocols/jabber/si.c --- a/libpurple/protocols/jabber/si.c Thu Nov 18 23:07:34 2010 +0900 +++ b/libpurple/protocols/jabber/si.c Fri Nov 19 07:13:04 2010 +0900 @@ -985,14 +985,8 @@ jabber_si_xfer_ibb_error_cb(JabberIBBSession *sess) { PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess); - JabberStream *js = jabber_ibb_session_get_js(sess); - PurpleConnection *gc = js->gc; - PurpleAccount *account = purple_connection_get_account(gc); purple_debug_error("jabber", "an error occurred during IBB file transfer\n"); - purple_xfer_error(purple_xfer_get_type(xfer), account, - jabber_ibb_session_get_who(sess), - _("An error occurred on the in-band bytestream transfer\n")); purple_xfer_cancel_remote(xfer); } @@ -1000,14 +994,9 @@ jabber_si_xfer_ibb_closed_cb(JabberIBBSession *sess) { PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess); - JabberStream *js = jabber_ibb_session_get_js(sess); - PurpleConnection *gc = js->gc; - PurpleAccount *account = purple_connection_get_account(gc); purple_debug_info("jabber", "the remote user closed the transfer\n"); if (purple_xfer_get_bytes_remaining(xfer) > 0) { - purple_xfer_error(purple_xfer_get_type(xfer), account, - jabber_ibb_session_get_who(sess), _("Transfer was closed.")); purple_xfer_cancel_remote(xfer); } else { purple_xfer_set_completed(xfer, TRUE); @@ -1139,18 +1128,12 @@ jabber_si_xfer_ibb_opened_cb(JabberIBBSession *sess) { PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess); - JabberStream *js = jabber_ibb_session_get_js(sess); - PurpleConnection *gc = js->gc; - PurpleAccount *account = purple_connection_get_account(gc); if (jabber_ibb_session_get_state(sess) == JABBER_IBB_SESSION_OPENED) { purple_xfer_start(xfer, -1, NULL, 0); purple_xfer_prpl_ready(xfer); } else { /* error */ - purple_xfer_error(purple_xfer_get_type(xfer), account, - jabber_ibb_session_get_who(sess), - _("Failed to open in-band bytestream")); purple_xfer_end(xfer); } } diff -r ccd6a1da0d59 -r 29b4f2c52533 libpurple/protocols/msn/user.c --- a/libpurple/protocols/msn/user.c Thu Nov 18 23:07:34 2010 +0900 +++ b/libpurple/protocols/msn/user.c Fri Nov 19 07:13:04 2010 +0900 @@ -742,7 +742,18 @@ str = purple_normalize_nocase(NULL, msn_user_get_passport(user)); pass = g_strdup(str); +#if GLIB_CHECK_VERSION(2,16,0) result = g_strcmp0(pass, purple_normalize_nocase(NULL, passport)); +#else + str = purple_normalize_nocase(NULL, passport); + if (!pass) + result = -(pass != str); + else if (!str) + result = pass != str; + else + result = strcmp(pass, str); +#endif /* GLIB < 2.16.0 */ + g_free(pass); return result; diff -r ccd6a1da0d59 -r 29b4f2c52533 libpurple/protocols/oscar/oscar.c --- a/libpurple/protocols/oscar/oscar.c Thu Nov 18 23:07:34 2010 +0900 +++ b/libpurple/protocols/oscar/oscar.c Fri Nov 19 07:13:04 2010 +0900 @@ -637,6 +637,15 @@ return subtype1 - subtype2; } +#if !GLIB_CHECK_VERSION(2,14,0) +static void hash_table_get_list_of_keys(gpointer key, gpointer value, gpointer user_data) +{ + GList **handlers = (GList **)user_data; + + *handlers = g_list_prepend(*handlers, key); +} +#endif /* GLIB < 2.14.0 */ + void oscar_login(PurpleAccount *account) { @@ -706,7 +715,12 @@ oscar_data_addhandler(od, SNAC_FAMILY_USERLOOKUP, 0x0003, purple_parse_searchreply, 0); g_string_append(msg, "Registered handlers: "); +#if GLIB_CHECK_VERSION(2,14,0) handlers = g_hash_table_get_keys(od->handlerlist); +#else + handlers = NULL; + g_hash_table_foreach(od->handlerlist, hash_table_get_list_of_keys, &handlers); +#endif /* GLIB < 2.14.0 */ sorted_handlers = g_list_sort(g_list_copy(handlers), compare_handlers); for (cur = sorted_handlers; cur; cur = cur->next) { guint x = GPOINTER_TO_UINT(cur->data); @@ -5722,7 +5736,7 @@ for (i = 0; encryption_keys[i]; i++) { PurpleKeyValuePair *kvp = g_new0(PurpleKeyValuePair, 1); - kvp->key = g_strdup(encryption_keys[i]); + kvp->key = g_strdup(_(encryption_keys[i])); kvp->value = g_strdup(encryption_values[i]); encryption_options = g_list_append(encryption_options, kvp); } diff -r ccd6a1da0d59 -r 29b4f2c52533 libpurple/util.c --- a/libpurple/util.c Thu Nov 18 23:07:34 2010 +0900 +++ b/libpurple/util.c Fri Nov 19 07:13:04 2010 +0900 @@ -3826,12 +3826,13 @@ gfud->webdata[gfud->len] = '\0'; if(!gfud->got_headers) { - char *tmp; + char *end_of_headers; /* See if we've reached the end of the headers yet */ - if((tmp = strstr(gfud->webdata, "\r\n\r\n"))) { - char * new_data; - guint header_len = (tmp + 4 - gfud->webdata); + end_of_headers = strstr(gfud->webdata, "\r\n\r\n"); + if (end_of_headers) { + char *new_data; + guint header_len = (end_of_headers + 4 - gfud->webdata); size_t content_len; purple_debug_misc("util", "Response headers: '%.*s'\n", @@ -3847,7 +3848,7 @@ content_len = parse_content_len(gfud->webdata, header_len); gfud->chunked = content_is_chunked(gfud->webdata, header_len); - if(content_len == 0) { + if (content_len == 0) { /* We'll stick with an initial 8192 */ content_len = 8192; } else { @@ -3856,19 +3857,16 @@ /* If we're returning the headers too, we don't need to clean them out */ - if(gfud->include_headers) { + if (gfud->include_headers) { gfud->data_len = content_len + header_len; gfud->webdata = g_realloc(gfud->webdata, gfud->data_len); } else { - size_t body_len = 0; - - if(gfud->len > (header_len + 1)) - body_len = (gfud->len - header_len); + size_t body_len = gfud->len - header_len; content_len = MAX(content_len, body_len); new_data = g_try_malloc(content_len); - if(new_data == NULL) { + if (new_data == NULL) { purple_debug_error("util", "Failed to allocate %" G_GSIZE_FORMAT " bytes: %s\n", content_len, g_strerror(errno)); @@ -3882,9 +3880,8 @@ } /* We may have read part of the body when reading the headers, don't lose it */ - if(body_len > 0) { - tmp += 4; - memcpy(new_data, tmp, body_len); + if (body_len > 0) { + memcpy(new_data, end_of_headers + 4, body_len); } /* Out with the old... */ diff -r ccd6a1da0d59 -r 29b4f2c52533 pidgin/win32/nsis/pidgin-installer.nsi --- a/pidgin/win32/nsis/pidgin-installer.nsi Thu Nov 18 23:07:34 2010 +0900 +++ b/pidgin/win32/nsis/pidgin-installer.nsi Fri Nov 19 07:13:04 2010 +0900 @@ -541,7 +541,9 @@ Delete "$INSTDIR\ca-certs\Go_Daddy_Class_2_CA.pem" Delete "$INSTDIR\ca-certs\GTE_CyberTrust_Global_Root.pem" Delete "$INSTDIR\ca-certs\Microsoft_Internet_Authority.pem" + Delete "$INSTDIR\ca-certs\Microsoft_Internet_Authority_2010.pem" Delete "$INSTDIR\ca-certs\Microsoft_Secure_Server_Authority.pem" + Delete "$INSTDIR\ca-certs\Microsoft_Secure_Server_Authority_2010.pem" Delete "$INSTDIR\ca-certs\StartCom_Certification_Authority.pem" Delete "$INSTDIR\ca-certs\StartCom_Free_SSL_CA.pem" Delete "$INSTDIR\ca-certs\Thawte_Premium_Server_CA.pem" diff -r ccd6a1da0d59 -r 29b4f2c52533 pidgin/win32/untar.c --- a/pidgin/win32/untar.c Thu Nov 18 23:07:34 2010 +0900 +++ b/pidgin/win32/untar.c Fri Nov 19 07:13:04 2010 +0900 @@ -578,7 +578,8 @@ */ int untar(const char *filename, const char* destdir, untar_opt options) { int ret=1; - char curdir[_MAX_PATH]; + wchar_t curdir[_MAX_PATH]; + wchar_t *w_destdir; untarops = options; /* open the archive */ inname = filename; @@ -589,13 +590,15 @@ return 0; } + w_destdir = g_utf8_to_utf16(destdir, -1, NULL, NULL, NULL); + /* Set current directory */ - if(!GetCurrentDirectory(_MAX_PATH, curdir)) { + if(!GetCurrentDirectoryW(_MAX_PATH, curdir)) { untar_error("Could not get current directory (error %lu).\n", GetLastError()); fclose(infp); return 0; } - if(!SetCurrentDirectory(destdir)) { + if(!SetCurrentDirectoryW(w_destdir)) { untar_error("Could not set current directory to (error %lu): %s\n", GetLastError(), destdir); fclose(infp); return 0; @@ -614,12 +617,14 @@ fclose(outfp); outfp = NULL; } - if(!SetCurrentDirectory(curdir)) { + if(!SetCurrentDirectoryW(curdir)) { untar_error("Could not set current dir back to original (error %lu).\n", GetLastError()); ret=0; } } + g_free(w_destdir); + /* close the archive file. */ fclose(infp); diff -r ccd6a1da0d59 -r 29b4f2c52533 po/POTFILES.in --- a/po/POTFILES.in Thu Nov 18 23:07:34 2010 +0900 +++ b/po/POTFILES.in Fri Nov 19 07:13:04 2010 +0900 @@ -116,6 +116,7 @@ libpurple/protocols/msn/servconn.c libpurple/protocols/msn/session.c libpurple/protocols/msn/slp.c +libpurple/protocols/msn/slpcall.c libpurple/protocols/msn/state.c libpurple/protocols/msn/switchboard.c libpurple/protocols/msn/userlist.c diff -r ccd6a1da0d59 -r 29b4f2c52533 po/de.po --- a/po/de.po Thu Nov 18 23:07:34 2010 +0900 +++ b/po/de.po Fri Nov 19 07:13:04 2010 +0900 @@ -11,8 +11,8 @@ msgstr "" "Project-Id-Version: de\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-10-28 19:57+0200\n" -"PO-Revision-Date: 2010-10-28 19:50+0200\n" +"POT-Creation-Date: 2010-11-17 09:26+0100\n" +"PO-Revision-Date: 2010-11-17 09:19+0100\n" "Last-Translator: Björn Voigt \n" "Language-Team: German \n" "Language: de\n" @@ -4891,15 +4891,6 @@ msgid "Unknown Error in presence" msgstr "Unbekannter Fehlercode" -msgid "An error occurred on the in-band bytestream transfer\n" -msgstr "Bei der In-Band-Bytestrom-Übertragung trat ein Fehler auf\n" - -msgid "Transfer was closed." -msgstr "Übertragung wurde geschlossen." - -msgid "Failed to open in-band bytestream" -msgstr "Öffnen des In-Band-Bytestroms fehlgeschlagen" - #, c-format msgid "Unable to send file to %s, user does not support file transfers" msgstr "" @@ -5219,26 +5210,6 @@ msgid "The username specified does not exist." msgstr "Der angegebene Benutzername existiert nicht." -#, c-format -msgid "Buddy list synchronization issue in %s (%s)" -msgstr "Fehler bei der Buddy-Listen-Synchronisation bei %s (%s)" - -#, c-format -msgid "" -"%s on the local list is inside the group \"%s\" but not on the server list. " -"Do you want this buddy to be added?" -msgstr "" -"%s auf der lokalen Liste ist in der Gruppe „%s“, aber nicht auf der " -"Serverliste. Möchten Sie, dass der Buddy hinzugefügt wird?" - -#, c-format -msgid "" -"%s is on the local list but not on the server list. Do you want this buddy " -"to be added?" -msgstr "" -"%s ist auf der lokalen Liste, aber nicht auf der Serverliste. Möchten Sie, " -"dass der Buddy hinzugefügt wird?" - msgid "Unable to parse message" msgstr "Kann die Nachricht nicht parsen" @@ -5410,6 +5381,26 @@ msgid "MSN Error: %s\n" msgstr "MSN-Fehler: %s\n" +#, c-format +msgid "Buddy list synchronization issue in %s (%s)" +msgstr "Fehler bei der Buddy-Listen-Synchronisation bei %s (%s)" + +#, c-format +msgid "" +"%s on the local list is inside the group \"%s\" but not on the server list. " +"Do you want this buddy to be added?" +msgstr "" +"%s auf der lokalen Liste ist in der Gruppe „%s“, aber nicht auf der " +"Serverliste. Möchten Sie, dass der Buddy hinzugefügt wird?" + +#, c-format +msgid "" +"%s is on the local list but not on the server list. Do you want this buddy " +"to be added?" +msgstr "" +"%s ist auf der lokalen Liste, aber nicht auf der Serverliste. Möchten Sie, " +"dass der Buddy hinzugefügt wird?" + msgid "Other Contacts" msgstr "Andere Kontakte" @@ -5464,12 +5455,24 @@ msgid "Set friendly name for %s." msgstr "Setze Spitznamen für %s." -msgid "Set your friendly name." -msgstr "Setze Ihren Spitznamen." +msgid "Set Friendly Name" +msgstr "Setze Spitznamen" msgid "This is the name that other MSN buddies will see you as." msgstr "Das ist der Name, den andere MSN-Buddys von Ihren sehen." +msgid "This Location" +msgstr "Dieser Ort" + +msgid "This is the name that identifies this location" +msgstr "Das ist der Name, der diesen Ort identifiziert" + +msgid "Other Locations" +msgstr "Andere Orte" + +msgid "You can sign out from other locations here" +msgstr "Sie können andere Orte von hier abmelden" + msgid "Set your home phone number." msgstr "Setze Ihre private Telefonnummer." @@ -5556,6 +5559,9 @@ msgid "Set Friendly Name..." msgstr "Setze Spitzname..." +msgid "View Locations..." +msgstr "Orte betrachten..." + msgid "Set Home Phone Number..." msgstr "Setze private Telefonnummer..." @@ -6999,6 +7005,13 @@ "versuchen Sie es noch einmal. Wenn Sie es weiter versuchen, müssen Sie sogar " "noch länger warten." +msgid "" +"You required encryption in your account settings, but one of the servers " +"doesn't support it." +msgstr "" +"Sie haben Verschlüsselung in Ihren Kontoeinstellungen gefordert, aber einer " +"der Server unterstützt keine Verschlüsselung." + #. Note to translators: The first %s is a URL, the second is an #. error message. #, c-format @@ -7314,6 +7327,13 @@ "Buchstaben beginnen und nur Buchstaben, Ziffern und Leerzeichen enthalten " "oder nur aus Ziffern bestehen." +msgid "" +"You required encryption in your account settings, but encryption is not " +"supported by your system." +msgstr "" +"Sie haben Verschlüsselung in Ihren Kontoeinstellungen gefordert, aber Ihr " +"System unterstützt keine Verschlüsselung." + #, c-format msgid "You may be disconnected shortly. If so, check %s for updates." msgstr "" @@ -7864,6 +7884,9 @@ msgid "Search for Buddy by Email Address..." msgstr "Suche Buddys nach E-Mail-Adresse..." +msgid "Don't use encryption" +msgstr "Keine Verschlüsselung benutzen" + msgid "Use clientLogin" msgstr "clientLogin benutzen" @@ -8062,7 +8085,7 @@ msgstr "Persönliche Webseite" #. aim_userinfo_t -#. strip_html_tags +#. use_html_status msgid "Additional Information" msgstr "Zusätzliche Informationen" @@ -15600,3 +15623,12 @@ msgid "You do not have permission to uninstall this application." msgstr "Sie haben keine Berechtigung, diese Anwendung zu deinstallieren." + +#~ msgid "An error occurred on the in-band bytestream transfer\n" +#~ msgstr "Bei der In-Band-Bytestrom-Übertragung trat ein Fehler auf\n" + +#~ msgid "Transfer was closed." +#~ msgstr "Übertragung wurde geschlossen." + +#~ msgid "Failed to open in-band bytestream" +#~ msgstr "Öffnen des In-Band-Bytestroms fehlgeschlagen" diff -r ccd6a1da0d59 -r 29b4f2c52533 share/ca-certs/Makefile.am --- a/share/ca-certs/Makefile.am Thu Nov 18 23:07:34 2010 +0900 +++ b/share/ca-certs/Makefile.am Fri Nov 19 07:13:04 2010 +0900 @@ -22,7 +22,9 @@ EXTRA_CERTS = \ AOL_Member_CA.pem \ Microsoft_Internet_Authority.pem \ + Microsoft_Internet_Authority_2010.pem \ Microsoft_Secure_Server_Authority.pem \ + Microsoft_Secure_Server_Authority_2010.pem \ VeriSign_Class3_Extended_Validation_CA.pem \ VeriSign_International_Server_Class_3_CA.pem diff -r ccd6a1da0d59 -r 29b4f2c52533 share/ca-certs/Microsoft_Internet_Authority_2010.pem --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/ca-certs/Microsoft_Internet_Authority_2010.pem Fri Nov 19 07:13:04 2010 +0900 @@ -0,0 +1,30 @@ +-----BEGIN CERTIFICATE----- +MIIFEjCCBHugAwIBAgIEBydiAjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJV +UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU +cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds +b2JhbCBSb290MB4XDTEwMDQxNDE4MTIyNloXDTE4MDQxNDE4MTIxNFowJzElMCMG +A1UEAxMcTWljcm9zb2Z0IEludGVybmV0IEF1dGhvcml0eTCCAiIwDQYJKoZIhvcN +AQEBBQADggIPADCCAgoCggIBAL30zSelStiQGduyCntgpE6PDpijnHxQduuzSoyf +GLDnmsUrgoYJKKwREjIm9Rnq8LhnaMUG/fQZrtkToNCBJwimeZwE9UgyLjYfq2sm +7KFDtJ2AsEkD6oJJXwUTxaCDX+Eq9AQZS37I2oi8tV0DvHhWoel/xWrvtv8dAVm3 +H1NaX8b4kW3FfUOTGHRF7RW6snzIOjQUHqpj9+XUS8gjK4dplROZCRTvegEgTrfG +SEGuyYcBKdnChzh/tkKk8LLOLf20TFfwqNbLTvpfXf25+wncFoVk5XGc1fEzlzhn +Lpu8FzYFfhA2f37rmFpbHK2l5wkQfflKL7OPNxXWb7lbN9y3n3+OZn8jXO0Sf4wH +8P4Z+bg0Q3uy6oX7jKmq3/2RDSz1+6+XifEGiq9J9jwuI/ZEFiWREeIjw8qFVUkq +yCGvfREmhrAoRbqH7jYTgdVLRxqO2wnx0ZcpUBQymQnj8sDnU49r9PoTXDyN7lSZ +DydHTjwS848SF0bwiWpFs7U8DHdFBC+9vrWemDwFO7tBOYQgvHkE1kLNPonp53o3 +SRC0zJ8kXCOmSG7749TuISmT5P2AGhs6bMH369nUTb7xEfaijkIkoU9ptdJoFInZ +n5DYH54b5m1kJSm2NEOkW/UN63QGfp/xY9xFp3w6mlxrc9jDWASOiG8T0ObQ383E +Cg4HAgMBAAGjggF3MIIBczASBgNVHRMBAf8ECDAGAQH/AgEBMFsGA1UdIARUMFIw +SAYJKwYBBAGxPgEAMDswOQYIKwYBBQUHAgEWLWh0dHA6Ly9jeWJlcnRydXN0Lm9t +bmlyb290LmNvbS9yZXBvc2l0b3J5LmNmbTAGBgRVHSAAMA4GA1UdDwEB/wQEAwIB +hjCBiQYDVR0jBIGBMH+heaR3MHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg +Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywg +SW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3SCAgGlMEUG +A1UdHwQ+MDwwOqA4oDaGNGh0dHA6Ly93d3cucHVibGljLXRydXN0LmNvbS9jZ2kt +YmluL0NSTC8yMDE4L2NkcC5jcmwwHQYDVR0OBBYEFDMh8Mv+oqBEkt72OzPYXwFL +l3hdMA0GCSqGSIb3DQEBBQUAA4GBACtI85T7RMWTatZN/rQTThImF8qyWqsJuVak +b39XnmSy9eTTNe9jZcvlLBWc7874KsWSZCtJPjw2bL0Ym2Rnlz/taNAWwRM88lGg +V94kzjWraZBOKww6+bTxgPptAHmmOpaZTjpuVNCjWW6LHZVJu5XYdbjhEjOsXCe7 +y1Vx1frt +-----END CERTIFICATE----- diff -r ccd6a1da0d59 -r 29b4f2c52533 share/ca-certs/Microsoft_Secure_Server_Authority_2010.pem --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/ca-certs/Microsoft_Secure_Server_Authority_2010.pem Fri Nov 19 07:13:04 2010 +0900 @@ -0,0 +1,35 @@ +-----BEGIN CERTIFICATE----- +MIIGEzCCA/ugAwIBAgIKYQMzNgAFAAAAMDANBgkqhkiG9w0BAQUFADAnMSUwIwYD +VQQDExxNaWNyb3NvZnQgSW50ZXJuZXQgQXV0aG9yaXR5MB4XDTEwMDUxOTIyMTMz +MFoXDTE0MDUxOTIyMjMzMFowgYsxEzARBgoJkiaJk/IsZAEZFgNjb20xGTAXBgoJ +kiaJk/IsZAEZFgltaWNyb3NvZnQxFDASBgoJkiaJk/IsZAEZFgRjb3JwMRcwFQYK +CZImiZPyLGQBGRYHcmVkbW9uZDEqMCgGA1UEAxMhTWljcm9zb2Z0IFNlY3VyZSBT +ZXJ2ZXIgQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA +6p9fkQvNGYJfkeqr9Yso2Iv1HOCRybzNAhBQIrc4ClzPcQxYLYhsqLg8M2P5c508 +6cN57fL+ycvDbiTiPEJw2F+3W/ebX/Unb3gA65Zdt2/P5EEE8LtDvW9fJg+3jjdB +E1RnG5AAJzi4GsOWbRwxNTVJxUYe53OkygMReUGBr9OORqLFvgBTBbk4nLdgKbPK +UpqSxVMntkENQPgvm+eBSRpaaqhPccfobYG+J+/J1saSKxDkNjVACNBNcP1wmyAc +s7nfdZ0rd9DEzWpx71pYC/lwhYgFiW1mkjCrr4g519QtC5aceCSvAKvPCT4TrmvD +4OHPYH+LU9wC0POwhhHevQIDAQABo4IB2jCCAdYwEgYDVR0TAQH/BAgwBgEB/wIB +ADAdBgNVHQ4EFgQUCELj204RZvO1CMVA21V8M0YRgzgwCwYDVR0PBAQDAgGGMBIG +CSsGAQQBgjcVAQQFAgMIAAgwIwYJKwYBBAGCNxUCBBYEFH6KwpxaMozCcaLZT3Vw +96kb9pQFMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMB8GA1UdIwQYMBaAFDMh +8Mv+oqBEkt72OzPYXwFLl3hdMIGjBgNVHR8EgZswgZgwgZWggZKggY+GNmh0dHA6 +Ly9tc2NybC5taWNyb3NvZnQuY29tL3BraS9tc2NvcnAvY3JsL21zd3d3KDUpLmNy +bIY0aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9tc2NvcnAvY3JsL21zd3d3 +KDUpLmNybIYfaHR0cDovL2NvcnBwa2kvY3JsL21zd3d3KDUpLmNybDB5BggrBgEF +BQcBAQRtMGswPAYIKwYBBQUHMAKGMGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9w +a2kvbXNjb3JwL21zd3d3KDUpLmNydDArBggrBgEFBQcwAoYfaHR0cDovL2NvcnBw +a2kvYWlhL21zd3d3KDUpLmNydDANBgkqhkiG9w0BAQUFAAOCAgEAj8LRXO8UEXcX +Ywc8THxo2v6GSuIgzD+wJz3R4qzIi0im5Fn3OgatfVLx9mVhliEirmi+L3reswz1 +6cXd+GWCXctsPgw3EXQVCXhVvSYSu9aVdNO89XYJKmrfNsSOVtUfIN9/gjDXQ6to +IotqWsWb0J2NCwxQhX7MWoAHiwNOv71fbFYPBaniVMOl01JcX00L3QX4URIDIW+c +bJeYKsHBEby9G67741dfTx8AnuKkUdP3rAk3WKUJIdFy0LLBi9tN3BPRVFhNK8Ct ++lMZNbEVqEJkt+3HH6V5qA041FC/9Fr/L+m/P3045fsgDNRO4C8dRXr7KC8xSG/M +blxoQvrqyAsBMOwQJkI4I6nDGbjZcBpoLJLLn3PmzP8zI+7bXrV/BVg/UMUcCBj0 +6y9iqlP3oc3e4+uCHBpna6FMp2hxQNFlO0EYnEnjcfvrTYOT00fmZELLtjUc+zQO +oSj7jKGnHwEoUeVxlDec3EFbfH7pLCNnlJ1z319AeaONlTDMUxcIvFCG8/wQGYH8 +9Fpu89yimnV7w6ygUe0ytljfT46RU2rSqhtd5lO4iaOeiaHjKeCzbOsazG9aqsLi +9h5FKe/WwkOxO60+JvyBl1xI/WJZNJLJ+7mh10IF+xn2fjL7KTTVh2blBB3IPhD6 +pnj1Hn3eGjp4fNwqcQajLW8FVSOLkO8= +-----END CERTIFICATE-----