changeset 355:5f1494fab517

merged.
author Raimund Renkert <rrenkert@intevation.de>
date Thu, 10 Apr 2014 16:03:23 +0200
parents c9315b24b055 (current diff) ee59ab0eb7ff (diff)
children 67b471c4d1fc
files ui/certificate.cpp ui/certificate.h
diffstat 9 files changed, 766 insertions(+), 51 deletions(-) [+]
line wrap: on
line diff
--- a/ui/certificate.cpp	Thu Apr 10 15:57:26 2014 +0200
+++ b/ui/certificate.cpp	Thu Apr 10 16:03:23 2014 +0200
@@ -1,9 +1,11 @@
 #include "certificate.h"
 #include <QDebug>
+#include <QFile>
 #include <QStringList>
 #include <QObject>
 
 #include "certhelp.h"
+#include "listutil.h"
 
 /* Qt wrapper around certhelp functions. */
 QString getX509Value(x509_name *namebuf, unsigned char *oid) {
@@ -62,6 +64,20 @@
             .arg(QLocale::system().toString(mValidTo));
 }
 
+Certificate::Certificate(const QByteArray& derData) :
+    mValid(false)
+{
+    if (derData.isEmpty()) {
+        return;
+    }
+
+    parseDetails(derData);
+
+    mValid = !mSubjectCN.isEmpty();
+
+    mBaseLine = derData.toBase64();
+}
+
 Certificate::Certificate(const QString& b64Line) :
     mValid(false)
 {
@@ -70,10 +86,10 @@
     }
 
     /* Cut of the first two chars (e.g. I: and decode) */
-    QByteArray asn1data = QByteArray::fromBase64(
+    QByteArray derData = QByteArray::fromBase64(
             b64Line.right(b64Line.size() - 2).toLatin1());
 
-    parseDetails(asn1data);
+    parseDetails(derData);
 
     /* If the subject CN is set then at least one x509parse
      * in polarssl was successfull. And a root certificate
@@ -98,6 +114,57 @@
     return ret;
 }
 
+QList<Certificate> Certificate::fromFileName(const QString& file_name) {
+    /* We read the file using Qt to avoid filename encoding problems
+     * on Windows */
+
+    /* TODO change qDebug errors into messageboxes */
+    QFile certificateFile(file_name);
+    QByteArray fileContent;
+    QList<Certificate> retval;
+    x509_crt chain;
+    int ret = 0;
+    if (!certificateFile.open(QIODevice::ReadOnly)) {
+        qDebug() << "Failed to read file.";
+        return retval;
+    }
+
+    if (certificateFile.size() > MAX_LINE_LENGTH * MAX_LINES) {
+        qDebug() << "File too large";
+        return retval;
+    }
+
+    fileContent = certificateFile.readAll();
+
+    x509_crt_init(&chain);
+
+    ret = x509_crt_parse(&chain,
+            reinterpret_cast<const unsigned char*>(fileContent.constData()),
+            fileContent.size());
+
+    if (ret < 0) {
+        qDebug() << "Failed to parse certificates.";
+        return retval;
+    }
+
+    if (ret > 0) {
+        qDebug() << "Some certificates could not be parsed.";
+        /* Maybe return here? */
+    }
+
+    x509_crt *iter = &chain;
+
+    while (iter) {
+        QByteArray derData(reinterpret_cast<const char*>(iter->raw.p),
+                static_cast<int>(iter->raw.len));
+        retval << Certificate(derData);
+        iter = iter->next;
+    }
+    x509_crt_free(&chain);
+
+    return retval;
+}
+
 void Certificate::setInstallCert(bool install)
 {
     if (install && mBaseLine.startsWith("R:")) {
--- a/ui/certificate.h	Thu Apr 10 15:57:26 2014 +0200
+++ b/ui/certificate.h	Thu Apr 10 16:03:23 2014 +0200
@@ -36,6 +36,12 @@
      **/
     Certificate(const QString& b64Line = QString());
 
+    /** @brief construct a certificate from a byte array of DER data
+     *
+     *  @param[in] derData a der encoded certificate.
+     **/
+    Certificate(const QByteArray& derData);
+
     /** @brief check if this certificate could be parsed */
     bool isValid() const {return mValid;}
 
@@ -94,6 +100,18 @@
     /** @brief get the date the certificate expires */
     QDateTime validTo() const {return mValidTo;}
 
+    /** @brief construct certificate objects from a file
+     *
+     *  Constructs a new Certificate Object from a file containing either
+     *  one DER encoded certificate or one or many PEM certificates.
+     *  If no certificate could be parsed from that file an empty list is
+     *  returned.
+     *
+     *  The size restrictions for the certificate list file also apply
+     *  for this file.
+     **/
+    static QList<Certificate> fromFileName (const QString& file_name);
+
 private:
     /** @brief Helper function to parse the details of a certificate **/
     void parseDetails(const QByteArray& cert);
--- a/ui/tests/certlistparsertest.cpp	Thu Apr 10 15:57:26 2014 +0200
+++ b/ui/tests/certlistparsertest.cpp	Thu Apr 10 16:03:23 2014 +0200
@@ -143,6 +143,47 @@
     return new CertificateList(fileName.toLocal8Bit().data());
 }
 
+void CertListTest::testCertificateFromFile()
+{
+    QList<Certificate> result;
+
+    /* Real certificates in the wild */
+    result = Certificate::fromFileName(":/Intevation-Root-CA-2010.crt");
+    QVERIFY(result.size() == 1);
+    QVERIFY(result[0].isValid());
+    result = Certificate::fromFileName(":/Intevation-Root-CA-2010.der");
+    QVERIFY(result.size() == 1);
+    QVERIFY(result[0].isValid());
+
+    /* We can handle ECC keys */
+    result = Certificate::fromFileName(":/valid_ssl_bp.pem");
+    QVERIFY(result.size() == 1);
+    QVERIFY(result[0].isValid());
+
+    /* Basic stuff */
+    result = Certificate::fromFileName(":/valid_ssl_rsa.pem");
+    QVERIFY(result.size() == 1);
+    QVERIFY(result[0].isValid());
+
+    /* Multiple certs */
+    result = Certificate::fromFileName(":/import_test.pem");
+    QVERIFY(result.size() == 15);
+
+    QString lastCertB64;
+    foreach (const Certificate& cert, result) {
+        QVERIFY(cert.isValid());
+        /* Just to verify that it's not all the same */
+        QVERIFY(cert.base64Line() != lastCertB64);
+        lastCertB64 = cert.base64Line();
+    }
+
+    /* Some robustness */
+    QString fname = getRandomDataFile(MAX_LINE_LENGTH * MAX_LINES - 100);
+    result = Certificate::fromFileName(fname);
+    QVERIFY(QFile::remove(fname));
+    QVERIFY(result.isEmpty());
+}
+
 int main( int argc, char **argv )
 {
   CertListTest tc;
--- a/ui/tests/certlistparsertest.h	Thu Apr 10 15:57:26 2014 +0200
+++ b/ui/tests/certlistparsertest.h	Thu Apr 10 16:03:23 2014 +0200
@@ -19,6 +19,7 @@
     void testGarbage();
     void testTooLarge();
     void testEmptyFile();
+    void testCertificateFromFile();
     void benchmarkValid();
 };
 #endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/tests/data/Intevation-Root-CA-2010.crt	Thu Apr 10 16:03:23 2014 +0200
@@ -0,0 +1,118 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number: 0 (0x0)
+        Signature Algorithm: sha1WithRSAEncryption
+        Issuer: C=DE, O=Intevation GmbH, CN=Root CA 2010
+        Validity
+            Not Before: Mar 12 19:54:02 2010 GMT
+            Not After : Mar 12 19:54:02 2020 GMT
+        Subject: C=DE, O=Intevation GmbH, CN=Root CA 2010
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+            RSA Public Key: (4096 bit)
+                Modulus (4096 bit):
+                    00:99:ec:42:54:07:a4:de:9f:e8:d9:04:c3:6e:34:
+                    76:ea:16:9f:ed:0e:e2:c3:61:8c:a8:09:83:ba:5e:
+                    c7:a9:88:c7:58:66:ef:f4:0a:ea:b1:94:68:09:7e:
+                    fc:b8:f1:72:6a:fb:d1:6c:40:de:91:8b:45:b3:7f:
+                    a0:76:c2:b7:8a:35:18:f7:57:6e:3f:24:19:d7:00:
+                    a8:90:05:a4:ba:b3:54:96:12:8d:d2:55:43:99:6c:
+                    47:0e:4c:f1:be:02:99:4e:64:48:80:00:f7:4f:6e:
+                    4e:a5:73:af:d0:47:8b:4e:68:43:29:f1:08:1c:c1:
+                    76:45:f9:b2:06:70:01:23:82:a9:fb:4b:92:b1:a0:
+                    3c:87:ae:56:74:8e:79:b9:91:d7:01:45:e9:55:90:
+                    aa:da:52:a8:8d:a8:ac:f8:48:2d:97:7a:70:48:26:
+                    7d:5d:da:96:57:ac:e5:3f:ca:29:fb:11:5c:f4:36:
+                    a2:ad:8e:5a:24:40:80:af:68:f5:45:c0:bb:5f:47:
+                    ac:b2:04:5a:5f:7b:05:4b:63:2d:9a:ab:59:0c:0f:
+                    41:fe:dd:c0:17:2c:ca:26:39:f3:ee:67:12:36:71:
+                    d3:f7:8e:2f:82:b4:f3:b3:d7:2a:63:e6:20:33:7a:
+                    c5:5f:77:0b:4d:f5:dd:06:a1:ff:d9:65:8f:d1:cc:
+                    82:1f:68:86:9c:54:90:d1:1f:d4:1c:c8:34:00:5d:
+                    ff:fc:08:9e:0c:8a:79:b0:dc:6b:49:0e:79:bf:43:
+                    4d:86:3a:63:42:19:40:8c:e3:ac:42:d2:0e:38:a4:
+                    7d:e8:31:e4:7a:25:73:0d:f3:ba:6a:d7:53:77:86:
+                    44:55:0c:b6:d2:ea:49:08:59:ca:08:3f:f9:28:8f:
+                    29:c9:31:bd:ac:ef:c6:f0:38:8d:bd:1a:76:2e:f9:
+                    f2:5d:4c:8f:8e:5a:8a:7a:36:c9:27:3a:e8:f6:f4:
+                    a5:b2:5e:d3:ce:7a:68:49:59:01:33:29:15:5e:35:
+                    6b:66:93:3d:fa:2b:df:d2:1a:d8:5f:2b:cb:04:18:
+                    ce:e2:93:17:b3:bb:59:76:cc:9e:e7:4a:f6:f0:ee:
+                    ab:24:9e:67:92:77:13:6d:ef:93:da:1e:dc:4c:eb:
+                    b6:8b:18:fa:a6:48:dd:39:cd:a1:8d:be:ca:62:fa:
+                    1a:4a:fc:d5:b8:bf:2d:e3:5e:d2:16:39:2c:af:fa:
+                    8f:9d:07:ad:2f:da:e8:22:16:87:0f:d7:a2:8c:6c:
+                    25:a8:e4:33:70:9a:47:bb:41:55:02:4a:09:4b:71:
+                    22:7d:2c:29:54:e7:91:5a:ff:4f:41:68:8c:f8:07:
+                    76:75:95:46:3a:f8:4d:c4:ed:3c:0e:ae:a2:30:42:
+                    a3:7e:bf
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Subject Key Identifier: 
+                9A:65:7A:C0:A5:4C:2A:3D:52:95:50:85:7F:01:A9:5A:58:7D:13:95
+            X509v3 Basic Constraints: critical
+                CA:TRUE
+            X509v3 Subject Alternative Name: 
+                email:ca@intevation.de, URI:http://ca.intevation.org
+    Signature Algorithm: sha1WithRSAEncryption
+        1f:60:e4:4c:30:dc:91:af:23:c6:90:c4:98:09:85:43:95:46:
+        01:c5:5a:16:75:47:f2:a3:f8:7f:c8:29:9e:c3:66:ad:73:b9:
+        d9:59:b9:ab:6b:f0:2b:e7:26:a3:30:5e:44:6a:43:97:a5:1a:
+        30:c9:a3:87:d3:0b:8b:0b:9d:f8:04:c0:47:6c:02:3c:c1:72:
+        df:66:c5:12:fc:60:39:db:09:0a:75:12:51:6b:3e:3e:e0:a8:
+        fe:0d:eb:36:8f:45:b3:0d:e2:fb:8f:e6:91:da:b2:eb:0c:fd:
+        e2:e8:00:79:a2:42:1a:ff:9d:59:42:21:73:1f:02:48:eb:3c:
+        29:05:21:ea:2d:b9:d3:15:05:bf:2c:53:ab:dc:e3:e7:58:ed:
+        db:19:91:3b:d5:9f:af:ae:d7:4d:85:18:fe:ac:21:65:d6:67:
+        b5:c4:c8:bb:b3:74:02:df:c3:33:75:37:83:2d:24:65:2e:80:
+        26:4f:c2:61:d8:0d:47:be:3c:ec:41:7b:a6:be:c3:bb:86:46:
+        43:9d:26:05:23:7e:cc:bd:f9:32:67:6d:c7:d2:c3:5e:27:13:
+        7f:b7:4c:d3:40:34:5c:af:5a:ab:99:86:02:87:14:26:9e:54:
+        88:c6:8f:b5:8a:ec:c1:1d:66:33:a8:a2:32:5b:f0:5d:b9:51:
+        5f:45:a8:78:9e:00:e4:06:0a:ea:67:31:bc:e3:75:76:ee:b6:
+        d5:c0:1a:56:c5:a1:1d:37:1e:67:21:8e:54:2d:b8:ef:48:04:
+        95:7c:79:a4:67:ec:41:99:78:90:a4:5a:58:c8:74:58:14:4e:
+        02:1b:15:22:b0:1d:2e:97:32:63:c1:71:ff:c7:a9:11:41:b9:
+        bf:02:da:4b:92:bc:f3:5f:93:ed:39:5f:41:1a:25:69:fd:fc:
+        42:f0:99:c0:b5:71:b0:d0:52:3b:65:f8:2a:d1:90:f8:18:e3:
+        b2:fd:db:71:1c:54:2b:b5:3d:a2:d9:9c:1a:43:03:c3:eb:c1:
+        5c:be:c7:d5:ed:d0:20:b3:63:53:ae:5d:23:68:21:7a:58:01:
+        c6:fb:48:7b:0e:7c:5b:35:80:34:57:2f:95:e7:08:cf:e8:30:
+        9d:14:27:41:ea:7c:08:81:b1:2e:b8:95:97:5c:11:a7:48:6b:
+        88:2a:10:15:16:2c:3c:0a:36:8a:28:ae:2f:bd:c2:13:be:67:
+        8c:0c:4e:fa:00:10:63:8a:26:ca:98:1d:b8:95:89:e3:1c:a8:
+        fe:d8:01:26:d0:b5:3e:35:23:e7:94:96:ad:7b:9c:5d:09:dc:
+        1d:79:9f:d6:8e:27:d2:db:fb:df:ea:81:2c:87:a9:7d:1c:56:
+        7b:1b:1c:93:7f:22:86:af
+-----BEGIN CERTIFICATE-----
+MIIFYDCCA0igAwIBAgIBADANBgkqhkiG9w0BAQUFADA+MQswCQYDVQQGEwJERTEY
+MBYGA1UECgwPSW50ZXZhdGlvbiBHbWJIMRUwEwYDVQQDDAxSb290IENBIDIwMTAw
+HhcNMTAwMzEyMTk1NDAyWhcNMjAwMzEyMTk1NDAyWjA+MQswCQYDVQQGEwJERTEY
+MBYGA1UECgwPSW50ZXZhdGlvbiBHbWJIMRUwEwYDVQQDDAxSb290IENBIDIwMTAw
+ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCZ7EJUB6Ten+jZBMNuNHbq
+Fp/tDuLDYYyoCYO6XsepiMdYZu/0CuqxlGgJfvy48XJq+9FsQN6Ri0Wzf6B2wreK
+NRj3V24/JBnXAKiQBaS6s1SWEo3SVUOZbEcOTPG+AplOZEiAAPdPbk6lc6/QR4tO
+aEMp8QgcwXZF+bIGcAEjgqn7S5KxoDyHrlZ0jnm5kdcBRelVkKraUqiNqKz4SC2X
+enBIJn1d2pZXrOU/yin7EVz0NqKtjlokQICvaPVFwLtfR6yyBFpfewVLYy2aq1kM
+D0H+3cAXLMomOfPuZxI2cdP3ji+CtPOz1ypj5iAzesVfdwtN9d0Gof/ZZY/RzIIf
+aIacVJDRH9QcyDQAXf/8CJ4Minmw3GtJDnm/Q02GOmNCGUCM46xC0g44pH3oMeR6
+JXMN87pq11N3hkRVDLbS6kkIWcoIP/kojynJMb2s78bwOI29GnYu+fJdTI+OWop6
+NsknOuj29KWyXtPOemhJWQEzKRVeNWtmkz36K9/SGthfK8sEGM7ikxezu1l2zJ7n
+Svbw7qsknmeSdxNt75PaHtxM67aLGPqmSN05zaGNvspi+hpK/NW4vy3jXtIWOSyv
++o+dB60v2ugiFocP16KMbCWo5DNwmke7QVUCSglLcSJ9LClU55Fa/09BaIz4B3Z1
+lUY6+E3E7TwOrqIwQqN+vwIDAQABo2kwZzAdBgNVHQ4EFgQUmmV6wKVMKj1SlVCF
+fwGpWlh9E5UwDwYDVR0TAQH/BAUwAwEB/zA1BgNVHREELjAsgRBjYUBpbnRldmF0
+aW9uLmRlhhhodHRwOi8vY2EuaW50ZXZhdGlvbi5vcmcwDQYJKoZIhvcNAQEFBQAD
+ggIBAB9g5Eww3JGvI8aQxJgJhUOVRgHFWhZ1R/Kj+H/IKZ7DZq1zudlZuatr8Cvn
+JqMwXkRqQ5elGjDJo4fTC4sLnfgEwEdsAjzBct9mxRL8YDnbCQp1ElFrPj7gqP4N
+6zaPRbMN4vuP5pHasusM/eLoAHmiQhr/nVlCIXMfAkjrPCkFIeotudMVBb8sU6vc
+4+dY7dsZkTvVn6+u102FGP6sIWXWZ7XEyLuzdALfwzN1N4MtJGUugCZPwmHYDUe+
+POxBe6a+w7uGRkOdJgUjfsy9+TJnbcfSw14nE3+3TNNANFyvWquZhgKHFCaeVIjG
+j7WK7MEdZjOoojJb8F25UV9FqHieAOQGCupnMbzjdXbuttXAGlbFoR03HmchjlQt
+uO9IBJV8eaRn7EGZeJCkWljIdFgUTgIbFSKwHS6XMmPBcf/HqRFBub8C2kuSvPNf
+k+05X0EaJWn9/ELwmcC1cbDQUjtl+CrRkPgY47L923EcVCu1PaLZnBpDA8PrwVy+
+x9Xt0CCzY1OuXSNoIXpYAcb7SHsOfFs1gDRXL5XnCM/oMJ0UJ0HqfAiBsS64lZdc
+EadIa4gqEBUWLDwKNooori+9whO+Z4wMTvoAEGOKJsqYHbiVieMcqP7YASbQtT41
+I+eUlq17nF0J3B15n9aOJ9Lb+9/qgSyHqX0cVnsbHJN/Ioav
+-----END CERTIFICATE-----
Binary file ui/tests/data/Intevation-Root-CA-2010.der has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/tests/data/import_test.pem	Thu Apr 10 16:03:23 2014 +0200
@@ -0,0 +1,465 @@
+R:-----BEGIN CERTIFICATE-----
+MIIFWDCCA0CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMRowGAYDVQQDExFUZXN0
+Um9vdENBSW1wb3J0MTEaMBgGA1UEChMRRG9fTm90X1RydXN0X1Rlc3QxCzAJBgNV
+BAYTAkRFMB4XDTEzMDEwMTAwMDAwMFoXDTE1MTIzMTIzNTk1OVowRTEaMBgGA1UE
+AxMRVGVzdFJvb3RDQUltcG9ydDExGjAYBgNVBAoTEURvX05vdF9UcnVzdF9UZXN0
+MQswCQYDVQQGEwJERTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAIAo
+DGdggfyK/7eQQQAggCBwWwpa0zpw1mOR1cfHS7OCaLYfmH37LFe7rPRUIkhh7ETR
+DwIxwWJPLmDAr0qcZrbUm533UeHVC7PnZwl5YQqJuMlB7TyX+x9ZCplePf/lyBxD
+g9nGqSrTwh+Vlh9k+v+FjXhtUq+zyOEGj7TShXEFm2/9i6QXR9nA93jkTtyOXw83
+rajY23esozzHeP01JqqlGbXoLB9DFb4BzEKbBAbzEXR9myc4G8yXrSA1FcH10jDW
+zHDzC9/Yfxw1enZQXeOr16wsPIzGLWrlCEvnc6ayUR08oIeR3u/a6gAsJK7obYV7
+wapwB3ILPc92sOKTY7C17U/JkQESSc/yXqoSfUr9+1TYVZMRlbY78H/WV34WKxMQ
+MkVc33ypq8z7+SqBzNmNehlKwe6BQzOeaffHQC8sf/eIRuZCytB55SmXoGYxJyzx
+vOJUReuVprjQ59g7eWxaaUof7d4zy46CKZVH0p2spJG5MEy0grQH9XWkXJdyaXXQ
+EOAFq09wOMDuS1KjNX7K6at4Hh6bmU+ZaP30X+jP1zXufAutsBeDwsLiiaPqaVo1
+Zd9sYFQWrXEJoiQFk3xlJ2rHhFi74AO9IrEOdBMy7G7Nf+oVFHa7QV73qLwKtrE5
+sr65azDqyyo/5FWFoN4cnxfXfLWOShxzN8Ft5cxfAgMBAAGjUzBRMA8GA1UdEwQI
+MAYBAQECAQAwHQYDVR0OBBYEFOcK9e/IHDiOuxccjXbpUWsItntVMB8GA1UdIwQY
+MBaAFOcK9e/IHDiOuxccjXbpUWsItntVMA0GCSqGSIb3DQEBBQUAA4ICAQAm3IxM
+mWv9mJMsi54XiloGDF56fjVcvbOeR9h6ybp71XK2xKICe6VWrQ0HBSBLQdJ6p9e4
+GUHxjdiSzrUHn1QmicwRnrt7Vl6/DYRLNaqwsPP3P2Spb9orJO5u3pMqFcBct3Uq
+/KuJzcBKcNLlf2wJIw4IyWy8lBwc34nFFkgaGXXD2ZzxrhwaEjQyzLHqGuyfFdHn
+JrLj28PVvO54CyoplRiAaIcS4beR+ei3BLPQfsabkURo/ohZ6tyIpYJkrP0jT072
+yOZZrv9kegL/C13UCMWirSVEYMIjZow1MsxWWvi8QIWCfmvc5wmx9KEkMAzzE+LG
+kISwLdN+VKqSMuQT185qfo/Ge810P9FSR/OI9Gvkd4S7gUnBVIqD9KVEEGWfjir/
+qeyFyntYavE7eh8e1QuEv9RxKKzDwk6nerJtTh5pk0jRx1K912YB5+8cfh7OVix2
+6uqymBja3JGiA8HtnAoyTjzs91xsSxTI5DfxlH/cFj+q7E3VLj3u8X3OzAdzg4sj
+m+Z90vaOlxc8MCPySg94ShmQ1osy0gSnWmrQJsjb2OfuzdmixbNkVb0VWlIEqcHO
+WXhwBvTg3cinB3Rd+qXmSEuMH5SSu9GSo1KbsQai7L8tQxLL31AUzVZOBv7APNtT
+mzFcT6Vtxx93Fl5SAiXtubh5v6aGPtFmaniEKg==
+-----END CERTIFICATE-----
+R:-----BEGIN CERTIFICATE-----
+MIIFWDCCA0CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMRowGAYDVQQDExFUZXN0
+Um9vdENBSW1wb3J0MjEaMBgGA1UEChMRRG9fTm90X1RydXN0X1Rlc3QxCzAJBgNV
+BAYTAkRFMB4XDTEzMDEwMTAwMDAwMFoXDTE1MTIzMTIzNTk1OVowRTEaMBgGA1UE
+AxMRVGVzdFJvb3RDQUltcG9ydDIxGjAYBgNVBAoTEURvX05vdF9UcnVzdF9UZXN0
+MQswCQYDVQQGEwJERTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAIYh
+5ygg9rIEngytGlxv1SDpBjECRjiT0ol3KPCyvxFXw/cHvSV8xmy7qz6zZ5mU70Ty
+yeh9mYamba1PGF2fNSWohdTiXLxD3X+cO0X6raSHZRkojvwsfnRKqMVN+P+R5/pg
+IYvSkAzY1idhucYQFwQyoRpjpvxPCG6psOrsmXRwwTdGSiEszOyo3+K8bMG8rytG
+ZC39qt12LTi0+SmreefQHpUStM5k15LpSy4b48iT93UElMsTxTnoxJysjqexH1fj
+ZEdpvN0JNiyfMstnU4cM5V2ZuqFRkIDHfcFvwla3ilZlf7JiBOifKi5OKD1wDXnx
+W6QQlLfjTt8BzTAgRgPARbLmRgydl6kcoWAJ8HJlIKt86t48s40dzNzXNnkbogmy
+MXaoNQCVWeA0n12Psv3NJYCH0pTsrBXqM9ryJz807moTNakPMUFsgkdNRYlEs1/A
+mOMQaTNZFXeN5pAvONAL63PfZx39OjgDeCF1lT1h1rG0fcztvZbt6ZwckmvWFUaw
+rUMFdJPcf2Ycob7Y/Bw5Jj7kx5htwMlA9mGQzY7jvs4SmP6OQObZmdFdaUaFv+66
+hOA/9wccwMhdJxPM4//xmIS0Pl4WbOoOPPopIv4zbZ9soNspqot57h4XFQCInDTU
+6KPJ/2Lm5kUboJHk5m57sENwyM0QLY0++mYQBdoJAgMBAAGjUzBRMA8GA1UdEwQI
+MAYBAQECAQAwHQYDVR0OBBYEFHF1Zp5M4FaUQvddUG8dMVfA41l+MB8GA1UdIwQY
+MBaAFHF1Zp5M4FaUQvddUG8dMVfA41l+MA0GCSqGSIb3DQEBBQUAA4ICAQB4uWUI
+37Bogm4B61C/0lCcBTheG2nHftfrbDNW6IZHhOUSlhVxEDsa6BAUlk4BLQ0W8+G3
+knarqpzjWn70m1LtZpNZu0SNPdec12GneyaIb4DI/ootMYNYKURKumK4ZaVy8AbD
+1yQlX6J6bSBpbFI8TpWCEoyv3kvnrIi0LaAMMMeFBwRkxjtO/hSxoh+Tkg+kJjuV
+tdXIGSbwn2zFFJuVGtCxiLsA2iCfio2SGK6Il1S83hIwYBc5Bhh98GxdGvjY8gQU
+yR1Jd+kCqCpyG/q6OCALR/hQP7PR0PCgZahtBR1kzAlbpjO/nsWSd5HhJzxVmSU2
+VSSYKMFPnoUG12Zz+IRXi/+KhP/BmXv9EBwt9Up3O3eEhvU2YBAWRsmKPxvcUo42
+qRg5wzjoYYoo1mHNT2MYA6Mne91VspQzXUUo8i2hPtppa8r2Oe+1Vp5s+ov0cBE9
+ktBY0yrOFJbUfgMprdPMEUamSJAwpXQnKo2F0O1zkj87w44LluTbYdo8Afsu231c
+7kuv/VbpGLs9BgkJSv6hodxJnq9Ia3TRu63heLe4G3NbviLpnZuJZ8gw9RvrI0eK
+J5LZXGJn/Bkdk5FoH+CrmUinJ58g+gfwc9vlbq0TlthSdC7FKKP0MMEa0VjgWIZF
+G+P1vANAHdx9TpojVR4SeNmuj2JPeBjODbxEgw==
+-----END CERTIFICATE-----
+R:-----BEGIN CERTIFICATE-----
+MIIFWDCCA0CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMRowGAYDVQQDExFUZXN0
+Um9vdENBSW1wb3J0MzEaMBgGA1UEChMRRG9fTm90X1RydXN0X1Rlc3QxCzAJBgNV
+BAYTAkRFMB4XDTEzMDEwMTAwMDAwMFoXDTE1MTIzMTIzNTk1OVowRTEaMBgGA1UE
+AxMRVGVzdFJvb3RDQUltcG9ydDMxGjAYBgNVBAoTEURvX05vdF9UcnVzdF9UZXN0
+MQswCQYDVQQGEwJERTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMId
+XzsYLlV5EmvF+81YGiskQrbf5y4WvW0AFuaH6htyL26xnA1iaIz6GybgsUBvJlPQ
+gv1BCnmd3JEt7KLeWuWnMVw0elNKyI0WHv/leORmF/jCZvt2hjzR4CacNH50KjbT
+0xtQZSCIxlyMkGlis5EydZCWLJAHxRHfQoIIIJtTyi+hunCODFmJ/CBJirY4BSuZ
+BXIslMylcR4PlU+2yOb9H7VYnIwhYZe2U9ctxpP32R9A4KiLrk41WbmvS5UE1WIt
+FC2o7rKKIz+wzsi3YtvNdEb7juorXZP9awc8DzG1UL9MFRJllaXVPRN7s1xLjlUo
+mVMAy/TqePISOnNgPiLXHnCHw+j6F3VVaTOyBaTkZ6yMKXZdoAsasN5DHDOzGwxy
+vja8EGEwyt+O0hz2cVwn4sBvf4i62UrS490sWRAkU6ZupbCP5oU9GcK76KUMKv0R
+bskGEuQtgmDdxOTjDe4wtTfoAJrjX2hBb2Uw9Z+h0j9dr79eFfGJIzKJIfIqeFAh
+ZempUi16ervJqkJGUW/3KIsLgCGiMtuoMYwav1y24pp47vUUQUQaV+eWeE7pUQpx
+aI+p1WaQaZwmBZjofJne/6WEdG+CQ/X+eni/IEOt5tCGYQuGnDt82CQBKpO9BMLm
+B0+V1PCw9fSZZrugmhoIYKNK/+ptvcbTU2fk2/ZBAgMBAAGjUzBRMA8GA1UdEwQI
+MAYBAQECAQAwHQYDVR0OBBYEFJ61FOi7+8OiFUaxJPuCh0/uKGGtMB8GA1UdIwQY
+MBaAFJ61FOi7+8OiFUaxJPuCh0/uKGGtMA0GCSqGSIb3DQEBBQUAA4ICAQB6p+n6
+b0pXgbyKQHfB/Y+GqwRxnYp6pfHIDsOpyiYKg57NgxzgjP+UFHK4x2x5WaJewM94
+oxywtow5YFWqC57N/Hss3V4hztk5h1wnOfDFwg/2nhnD1cTS5JnqU7nYLT1jEFU/
+pH/Lx5Zw7sWxrIUB+UFcZcYSH8bU0MKNAnD0R6OD6ceKQ7v+uvwJR61K98Go/XLq
+5E75uezXWTO/4+co4u1HoF7D+ivsz2yI2CxIGqROiw8/G9LWSO5sEzZZGVEQ8cdr
+kphwoM42NfHL4uEsfQ0ggK6DtLAmRK02HwoMUSB9vNkrzM8M3zY5VcVP8hTTzc5Y
+d0SsTdB1DdfGLsm1vU0HzIlZaLFoKEw1X3eKg9soxpTOc9QwkJpDJcGV4gApEs5V
+W8KsnuYS0Lkz3hLsSwNExpD6B0MLhwflzE7ydMdCf2KKgr/HbwE0nOjtmpq/kBq1
+p1FE4aVpcrMW0aJFvGMiWbppJT+pK9Ryz2TPEQVnQUyEAgBNzARbyjE7Sfyqp7+k
+lbfYfN2zOeemm21Es0OD/eR+oUD2/9jUTZ13vPNbpJSh4xR23HBo7pibP7tqWGVR
+szfaL0zpeD0lAmlnB/6iiLu4QvlriRhBjP/8hL/agoMVH95LjnGdoX7sd/ylNQph
+NiCkZYoA6KZ3oAaDD61Dl3THQVvMm5iqXxWY6g==
+-----END CERTIFICATE-----
+R:-----BEGIN CERTIFICATE-----
+MIIFWDCCA0CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMRowGAYDVQQDExFUZXN0
+Um9vdENBSW1wb3J0NDEaMBgGA1UEChMRRG9fTm90X1RydXN0X1Rlc3QxCzAJBgNV
+BAYTAkRFMB4XDTEzMDEwMTAwMDAwMFoXDTE1MTIzMTIzNTk1OVowRTEaMBgGA1UE
+AxMRVGVzdFJvb3RDQUltcG9ydDQxGjAYBgNVBAoTEURvX05vdF9UcnVzdF9UZXN0
+MQswCQYDVQQGEwJERTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJEM
+TzMtFDNOq+2PuPYAyL6tpx8dfn8ybRlYtIHLcWXckXlTSfpY4qVBkMj/yz3NlRJi
+341kO2gxZw8N+BWzYunbakeX+aQRLfHCKwzNEz1swj3kKRy4NT1dsmr3oEUCKVu9
+mD3XyzfYLfCzh0+TsEjIvLcLEf+1BDSYizMxjkCDYX7xsgAQB+UfSsQw8FrBpOR3
+CUYmZMMleM7t1hIOiBE9PS9RNrwHXZ+hqq1S+A7t/yQ+opGR8pMT1F4LiTuiuNJP
+GgHrPL3cPwNzFSmLy7InHGcyg3GbS82PLyDteF7LQMfKZAHyDW+0KW1HizKYUY1W
+THG0mTZ2uk+QjbS67CTEKSFMFYX9MRRh+Yv1SPRowDLJfbzzC79QqNWDn8e3h+Lg
+HNt3TcpvNOlin/LVXEc1EQOQuneI+1J0aQYq5xzcSOXkRhGyhSXBYnwlmjCeEF4z
+sqvyWY9pZwOIJSJIi92AUuN2dAymXeTplsgkUFyMMbp0OJV2UB9keqLubeiN165B
+HUG00jHJxM0UBMSZE6ZOeQyljHN2CZKibTnvl68KzS3zWHTBAtQZQzgA8ZYNaRyS
+Br28EvpknC1c5Hz2CNy9s7Zb5YsMBz+D+k365UMfywmeNEMNLZQA2WGRo8++IT08
+0CJ73kW4ahlYeRncmllPi5OJXcooQxN8LuiAIxQ5AgMBAAGjUzBRMA8GA1UdEwQI
+MAYBAQECAQAwHQYDVR0OBBYEFJ4zjCZVsIklZaO9+kfbgIMbIyckMB8GA1UdIwQY
+MBaAFJ4zjCZVsIklZaO9+kfbgIMbIyckMA0GCSqGSIb3DQEBBQUAA4ICAQBPxmwa
+13UwUje0YTIL+MZsdS2fIdQxuvvlXUILV1QTT7pidCkBXWqkW3gdGz1oftEzS2B0
+mtfVI0dT1WIHSBV2ChQzF2AUWN2pHW4mSKkkMlfb3WlViylPTrf7nDWf8vdfWg31
+XXNPVpEYHCV01LhaFG9v75pWJCTn/ua/BU2f/co03IlvRijxF9pOQpEvVP5t3ahI
+vsrwRA9m8/ntAkszZSLA8jcCOtshYQxLb1BehHJbBr3iLbvLIiKiNehAVgErFChu
+UH1vTvbPl2bktqEQXbOQm/i1Mfd59MyIjEP6afkNflX76hoIbOWaGKV8yZ5aSQID
+th+D3iDn93hfTzinTOQ9prt/yRgKehX8bTPfli3C046USUF6Rtd4ojoLxW9ymoo5
+sgmTTtT6D/tNMm74u0PrQCAJMcpkf4xGNjKAL3zWvduF58AoL4kusUnMgwHk5vNJ
+x6Oq1Ri2WGqHiPF6Vb5JwGqoi4PN/ErznREYFlVMhefuk4EMVt3vVtkZFj7gvS7m
+EyUEE2fSr0LTChqXoroyDK+o7GlNF8ZYS0Ko5Bz3lBJ5hWmHTu+A7TXW9xKkGZn+
+rAsx7f1N7BDGVSO/uRveuZHUkFOSOjo3gF+/gUUm6vEbyKx9/pAyjq9X7MTGFPuD
+Gcf7j2nJtQnj173ccf2sgbjpTi3RZ9DkJuoWXQ==
+-----END CERTIFICATE-----
+R:-----BEGIN CERTIFICATE-----
+MIIFWDCCA0CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMRowGAYDVQQDExFUZXN0
+Um9vdENBSW1wb3J0NTEaMBgGA1UEChMRRG9fTm90X1RydXN0X1Rlc3QxCzAJBgNV
+BAYTAkRFMB4XDTEzMDEwMTAwMDAwMFoXDTE1MTIzMTIzNTk1OVowRTEaMBgGA1UE
+AxMRVGVzdFJvb3RDQUltcG9ydDUxGjAYBgNVBAoTEURvX05vdF9UcnVzdF9UZXN0
+MQswCQYDVQQGEwJERTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKYd
+fOSfCagOjEkEteJr5Odix8EcIEaXxiEnj0F2qx9n2UGYwnM9oC9RFYM68YkloBHj
+qIbxxp0HANQYO4coB4Pay72AwETqFT9apZw1C2KkxFBgH4Vt8ytBwdd8Zj2W9zJA
+GXa0WQQZkV2+nNdatClhJjAJD6CLMb+ifokRAcIs8Vz8ZNQSfIaFpzspgJtUk6c4
+vt6rN2m8pTH2InjT1NYWtoZaL7g62p27mssUA7mDU651+ua5eoC0b8C7oWfdoZoz
+41Okk4S/0SZrCdBlrSvEBULCsPTfllUHzBSTAvYQ8B7RNeCFHsNYxpGmNDfMYm67
+n6mDpNj8HsPcNSuKnvOzrKG1LlimT0lxmRdiUTTaVeGwfHWDBlVrPBoYcbpkXb00
+o+Zgg1N5s/8iRaMmnTLD6f/7YWz9vbWRMwLp/3Ovoo1mxyttuBcLTyDjWInzP/7j
+biD/Cy3PnfHJSFt1XkcPJt19WtbBI4wvyDqMR+3ouS8ZnTlzsYjI80pYF8TrUsrK
+HPAEN/qeYJ4sAASMCIJBQ7X0Ov5mKwcLr6al+BNkaUq9LgGeS2kTVeUqQFcM2tlA
+UfaBcDnNp1JlQJnPDYb7tCbYxopmDWyZAhsNBVa2QyS741bqJBiouJD5jmGIaJaE
+gcb4q4S8z3mD6unGnmCy4+X40bAc4t/apa6begtjAgMBAAGjUzBRMA8GA1UdEwQI
+MAYBAQECAQAwHQYDVR0OBBYEFFk6Z1kBZYdKHZGCXiJYp+xBdCBvMB8GA1UdIwQY
+MBaAFFk6Z1kBZYdKHZGCXiJYp+xBdCBvMA0GCSqGSIb3DQEBBQUAA4ICAQCfpFKu
+XjqL8iTtqGdxw6GjB8SOLa5/NmXxAEtCItGo5S6s7m30ieJ60/mYTidgt1vPHXUV
+YDV0YtuSFh53I1tfo5AhcIv8dG7O7caluUIdR/Bd/UbxmDNk26WliPqo9Ht7DzTi
+CHjwJOBTChBnZ3PcF6wMJTAOA1MyMs5LWZ/N30x2xfrQjwjhUxRns4Sl+hgm5pGL
+Fa8hwzFAUPUdjJqwlmkFsdJNAvbrphkiwD3Qf5ftFPHovkFBmChslAMTJ5mDNgW8
+rLJQyufet2h0K8DSByOw344ALuiI3dKuzmeXcrrf1r3EC4vp+DUwzDHjSly5nrB8
+V6BSm7IvEyCWxBBBjMv7GMJmCB9f7AAk7O8xAvGKi21yNI98UkqfHuZSlasgJmnX
+LDcznpt9O78BVxSd/7L2fsvzFQyK1qiBtnjQn1Yu+kzVwaeLiYOd5jVNXRjXuj86
+c5yw0rMgoNUTt3RUtwR5PC9XhxDHaokZ6HG1dTYE4/gvcuomYI0d5t9njcGJzVfE
+LFht7WjmsuoIyjQIWbN29RvtT5RkvOFlPARs1+Qi/Pqyykl03QCKjflF1GJc01oF
+BMAM/iY+d3wQI41IX3nC8/dZSFqprgb4nz2pnEfkAFZDzDYHry7O56MVNs/LKC03
+P3WIDlMIBQj4179X+APTUe2pnI+H0kX61Oz+sQ==
+-----END CERTIFICATE-----
+R:-----BEGIN CERTIFICATE-----
+MIIFWDCCA0CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMRowGAYDVQQDExFUZXN0
+Um9vdENBSW1wb3J0NjEaMBgGA1UEChMRRG9fTm90X1RydXN0X1Rlc3QxCzAJBgNV
+BAYTAkRFMB4XDTEzMDEwMTAwMDAwMFoXDTE1MTIzMTIzNTk1OVowRTEaMBgGA1UE
+AxMRVGVzdFJvb3RDQUltcG9ydDYxGjAYBgNVBAoTEURvX05vdF9UcnVzdF9UZXN0
+MQswCQYDVQQGEwJERTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJXg
+y6QC0cho9vd3hJG4GiDvdq6pT09UIpyzihxilHq5KFgtyf6FiArUU8dHH2f1I+d9
+UZgphKC5AaANZ9/xVnMdmAEQO4LiXs3Z81HDBkv0rm8uQe1ArBC/Dr2vn1grYrBb
+HGbfXqjPlpigVBjcL/fMiE+HFMdSH026aXUGvI32w2dTJ3eLhJTbbP0CbevlNqK5
+UPG0AR4NGQkPGBEo2Cp3SbUmrrth6EAYb8D4ybJGdDpcRFeIPIGxLHqwKFHaCajw
+Yx6Sq8u3i7leCUGpmPEHhVc9lZWqH+gBTh0a56gCfb6e+ZLr0M0C0Im1Zy1fnDBC
+kkRicROCoaXzIyVQdyvIcpPtvm290LzDLBu+lqb+cxPNaJB+TRlXIZWIw2EmNONt
+UMDCxH3EsMW8s6tgQQxRqS8tQyEpif6+ab+f4IaoHSe6I1dv+ngRazFpZyUJVPr3
+9ZEgnxhqkZUEu1fWusdq6E07C+fMipUtTF3d2h1bpCReIi2p/xs6w9DCh9pWnDBc
+uQYvFDvs17QmIDUHhdSuDK85TZsXimyHohFTofcTRSzxjJRndceUF79uZVOSKyC5
+Wg9M/7oeIc/Uu3OGcqVwYSBuNS/6YbDw/Y/HSslqHizCnn72yR3ek6sC/+MzTkP2
+HZrhComoXaS9SLIe21ppPoAtBnru4WZRRgujc+0fAgMBAAGjUzBRMA8GA1UdEwQI
+MAYBAQECAQAwHQYDVR0OBBYEFIF6Wkbfxx0PVlGzp6Ix2LvJL3i1MB8GA1UdIwQY
+MBaAFIF6Wkbfxx0PVlGzp6Ix2LvJL3i1MA0GCSqGSIb3DQEBBQUAA4ICAQAHHvFw
+B2p4S2/P/QYixuo38m98EKzCBT53hwdJss0QQDXrf3LdaY9NAgPpwRR75rl71SDX
+z9nRLUczFlQq32p+uQXL/pcfKFc/dnPkodNxhmCzJRL0QqcKjqRLhX5RGJsMbhJD
+vOdhl15y/S8Xco0rCkWb1Y0zRqugtxoQL5J6RAhy+sgSdOKs8AfTqtMEtavm/IyG
+OJXf6uZm3AfyhA5iAO+/1pCMVrnDWrNT0OJ9ZZo24WmjJbwfOd0YOUraRktD+n6O
+iJtcyONxIQcdspR//sERv3byaEM5IGo3fxEzuIa6s/XSczl2xvBt105Rz6cuYKTE
++OnjUOxhJyrpbmDTay0eDh71B87E8NBr3+cDfTtfYuw3hooxEhVQ8pYIERNYmxYq
+j3av/VemLZVy2NUXCGEr9odXqkCWJZnXYx9YKKdnvpqeBMj1OUbPzK/Sf2vGxT15
+9i2JPx5nngoomEVNuR4axPSPlogRaYLK9lqf6zCFp0tTN8DIGGUcmEDrnfCtrT8h
+8eYbGrN6P1BWjVYCiHHEZ1a/294lvDyHFObhNk5gr1dFGos4BUIw80VhVEUQypL+
+rlkNcOzrOnv8ewfi3KfXPoHrB3g8d7Gb9/a9UHcsMcNej0645rNgFAUfKvNFGlHy
+8MxA3O+V5j8ovMxm9K0kaqFNEyJb8yhzR+Bg2g==
+-----END CERTIFICATE-----
+R:-----BEGIN CERTIFICATE-----
+MIIFWDCCA0CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMRowGAYDVQQDExFUZXN0
+Um9vdENBSW1wb3J0NzEaMBgGA1UEChMRRG9fTm90X1RydXN0X1Rlc3QxCzAJBgNV
+BAYTAkRFMB4XDTEzMDEwMTAwMDAwMFoXDTE1MTIzMTIzNTk1OVowRTEaMBgGA1UE
+AxMRVGVzdFJvb3RDQUltcG9ydDcxGjAYBgNVBAoTEURvX05vdF9UcnVzdF9UZXN0
+MQswCQYDVQQGEwJERTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAItK
+ewWsAkCc5tR7thbKHuiFa1zUOm3sYZRBhLoYdIlzkdsp3xs+10znYnCULkjPVw4p
+wiiPQzFVK6sz7yKOesMbpDK5opf2r4hpbl0jDjPwTE+PVnJK8HiK7TcXg2fOSs78
+GcM8Due3E88PGqIa+GVm7j/4N+nz3olsBLsxHIEChOJAAOXKP9Tu546VnWwERBWY
+HfEPTkWrXzXgZ6+49YhCjxiTxSkyKzoEoWsj3oNK9Y96jT1WXB2Iug5DCt+Lc7yD
+q584vKphjknHRLI2B6qva1E/cv4Kqkxsr2UWt/jxCcdjFY4ctnNj8eFHhtlkEpkD
+mxuT1Bg/8Q9TiGHm13+eTn0mzxS89yF6l8aF5WVLUWcZN/rcDQCqQB9mB/ssEKAT
+WIvR6J8UoILCVrd+kMUSQyz5QmExNYKq518yalst87F98DFIKmS+/QNUPE0vldCG
+crT7u/ix6a9NI7oo+ZQK1A7GrAeita/YGde5EsD0t++coINSZlpkcBsI1KUmJyca
+sjfNybjIzuE/GxEjRJ60dE8BiN8ZoducVVLc4KjHDyYuymCzfCDBEEvOnfkM4DLs
+OkEa8Df7La5AeFXm1Zn6J/hnknLZ6bkdJOlSPZ2aZ/nu7OL7sN/+O+8olD8Nds7B
+laJYRmFgSOpFZEnyktoQoEhozlechPn8ae21uGRfAgMBAAGjUzBRMA8GA1UdEwQI
+MAYBAQECAQAwHQYDVR0OBBYEFD5DyaUYi8j0B0ELhxJdkecxhcyeMB8GA1UdIwQY
+MBaAFD5DyaUYi8j0B0ELhxJdkecxhcyeMA0GCSqGSIb3DQEBBQUAA4ICAQBun+ep
+u42otPKrUVX3W7jOxGR+3AReHZtjTgznJyTxzpeOg4V69hEoFRGMO5SD0RyxiyNQ
+OTm6gpigivwK4fNuXX2/5LedkPmokOkMwZ9lcyx5rJ9FFRDHPXVjtKOCZBoJIqox
+igO7T5xbdEQfC68h2YX2udMzV1qNbYyPbS1rgxv8AzuzrpiVhJ5VxMC4mSophlNX
+04K9JWrgcWKaIIZGDJGrJCAkyNm1z37+5g4+YoPW/VbEipNf64lXFhgLwbA0OSBP
+hTt8imQRPtGcezw6z5g7ak7nxhS/PwtFwNFHJwem7MgixcCeZN0ySlQuUyVPiwE+
+aREYkPv3QTF7AfL0bucO6mvq78OU/UsTtcV8pCWGONoWLAOh8ysnny3R7fzmYixS
+yC0baR/tDJWjONtg4/kTrCcfokETEM/NBN3cvIjLxg7o+ryhJOLjYk1HLMO5mf3R
+IPRGVZiukm7iTLofy6PrAgIjQcYVDWPGft3v8hChuk23ofWoC6UytjvH/UcpoTjA
+YZmd9j7a8yl92Il16AbwFIZSKAWQNZo+c9UoxiNxoNV3InYGt8nbZWD/H/ALAACl
+YLIvAE0SxpDDlVFIyzNJ9oEgF862DtJhTdMLWKOVZMyM4BMypqSc5SNhcntAnSkA
+n5jHUwcg7nvYvG4i3qZhG0gB62NWREckCyc2Qg==
+-----END CERTIFICATE-----
+R:-----BEGIN CERTIFICATE-----
+MIIFWDCCA0CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMRowGAYDVQQDExFUZXN0
+Um9vdENBSW1wb3J0ODEaMBgGA1UEChMRRG9fTm90X1RydXN0X1Rlc3QxCzAJBgNV
+BAYTAkRFMB4XDTEzMDEwMTAwMDAwMFoXDTE1MTIzMTIzNTk1OVowRTEaMBgGA1UE
+AxMRVGVzdFJvb3RDQUltcG9ydDgxGjAYBgNVBAoTEURvX05vdF9UcnVzdF9UZXN0
+MQswCQYDVQQGEwJERTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAIdW
+yXaDQGHV5NctURzR++l70R4Yk9jk3BbXHfIS6voJWQRhUNTbdCC3OBRUWWzXmP5n
+VJmtrja3Y1WWb+7smtlFRI9uzV+Z1ZJ8CKUxvxosqssue+tRzEpvbF63556er6/T
+rG6KR58U5NrESb2/vbeFELC7GB4h4+TZGsyxgr+XFPLCkwWHPpCg/hyBwD3AgtG4
+Y7qgLMrf+6c/DDWN3ka7qrIiwX98tEfLwzDZT+nE+xSb18A0doBLQcEAxQ+q+N6+
+5r1bIlURgUp9xH1LWG4uNzFc9KPFxMWGOYWduzQVuYXW9CadRRoAbVmhTDflGgIw
+G+7PE+X0B0bL1MqcVXtMg3npoET8cZJdCltrthDlEkpfQkQQXsSTpLfZUnJ6XLFq
+mIpieNXCSv3L0qKLJDd4PziD0l39fhTSZ+1V9ELjD28olhVS9kymup2aEMnE0Z33
+UAWsE2/5fW7Jg+D9YfEYlnLNofLOtPlbBDyH+PNW4bmnu2D/4h8hm/hLD1TetcfN
+Wm14odm+cYMO6Zn3uQ89ik3ogWOi/YI2aDH+zZwCuzLBAt4duWNDWBCpbB848uyp
+jiyjgAplMMIRyDlOTAYhIuBFeIY3O27iMEMNO+rjgG7H9Spr7JPHezw6V7wpuuyC
+blT8KXboloqtnW6S+xWe0PXaCkLp1QJ6qqkYQecLAgMBAAGjUzBRMA8GA1UdEwQI
+MAYBAQECAQAwHQYDVR0OBBYEFCIjcwIG+s2p9QgHvOQSx1ER6MdCMB8GA1UdIwQY
+MBaAFCIjcwIG+s2p9QgHvOQSx1ER6MdCMA0GCSqGSIb3DQEBBQUAA4ICAQAocikf
+qBXBsOmtFkYi7sPVZKu9/epat8GhfK2wfI6cW8L3hSgPUfqn/CLLYghysqv6Wobs
+7QMEVrEHc2caLerVM9FFD7c/k9xUecnvDk99ZjlZu8jH0Ix14eVQ+OEtnzL8FOMc
+Y75tiJP+Tntohoe8dREHMc+kVl59v8P9zjSlcZxQV3qoB7Ka5zIFsShUU0kX9R4g
+P56v23WLT3PPRtysT9aBMD4nXUMVuSI7B7pSyVcEaRFL70POf2a+h1EjfFXcwiWy
+a8QtlKfBtYsMSd7q050ezFiCvHqpZriQsjYmpA5j0Sk9XDc9ds/eGqum2I6Gogpz
+ZzLIdTK+xTBhD4PZJC/+tRiitQqGxgSFJCxjU77Q34tNgMFB2eTOZjMfXAEnJoYm
+sUSLyIsLEjviysN2jtiLLYxyJ6TYvUlcah23cQqzpznfaXhLnB0cCaChwEbXdobG
+aVaz+h8hvXTNs+5BGK0cv/xI62rwASM10tZsnPWEQcrZxpKbymF35BWYMD0+4Kkq
+qK5v8SedwQ2k64lqho6su2yYm5H67JpWPtFOCH9W29pmOhQtxzdXRvMDnQvhwutO
+i4AOreB+HufK/enbw02UsHw2X+O5TAops3RKQgz0tNfILULMo98mkWu+q9jY6pYp
+zJGumKQvEkuv/4y0PkKE/6HF8TkTpPY9oOHvUQ==
+-----END CERTIFICATE-----
+R:-----BEGIN CERTIFICATE-----
+MIIFWDCCA0CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMRowGAYDVQQDExFUZXN0
+Um9vdENBSW1wb3J0OTEaMBgGA1UEChMRRG9fTm90X1RydXN0X1Rlc3QxCzAJBgNV
+BAYTAkRFMB4XDTEzMDEwMTAwMDAwMFoXDTE1MTIzMTIzNTk1OVowRTEaMBgGA1UE
+AxMRVGVzdFJvb3RDQUltcG9ydDkxGjAYBgNVBAoTEURvX05vdF9UcnVzdF9UZXN0
+MQswCQYDVQQGEwJERTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJ0b
+CPJgxOJ17zNoY2zMbUQmOjOletFEs8PdN6mg470pb8oYQH3m5+wWpBu77BR1JEj3
+oD3gmHIaylmGM+8/dPwO8VUth8G0Xw4FoHouBi3M8d+xdiof64epVExuwS4154E7
+tg1kulUSjOwtsXe/3kWXhAjAVBPr5wEp70Vj0JDvaWt9rgED3LtYTefyD4MVrcEF
+qaptQU666ZlE25uH/4nYa1tnwoq4zWigdBDY+iId8HoQ17qZ70Qr1l8B7m9BYkdy
+QCubw2YnGGZ9a7/e5plBwSiADUhofPly9NHDLXRcuowciE+voXTrCSFcPbqUZiFh
+YwLYXQCZ9MCUhkY1hA+MKQI4KjvBTHOpbqZwBYXJxoWqAhi+eOaEoDvdaet3uXWG
+HRjTeCgYd1fAA+ZjmPucniw/Nzc127l9JaRTDTlkgNydeeyg4vF+rQGb2fegMunF
+FK7wh34uLbagGlm8eX1ukqQlDruUM6LcuODaNz32bGVDmeU/ENZrp68EuNx+5grL
+lehZRggiJWPLYBURkbWCqWF7ISAp+3Ae7ff4mDWFtwULobbtm+nfZVu6N9vLg7Lh
+yHmg2rKBmUtro/IHhS6inUbW/6laf1UvEJjlvSLjUKtQZjJhY5FkBNA+boflGV3Y
+1kt2t0iZbgIWqvexaymQfjyWQV4yZzJpaYgxtpibAgMBAAGjUzBRMA8GA1UdEwQI
+MAYBAQECAQAwHQYDVR0OBBYEFAj00Uzn/WLI52VaLs4NxVrMKjyyMB8GA1UdIwQY
+MBaAFAj00Uzn/WLI52VaLs4NxVrMKjyyMA0GCSqGSIb3DQEBBQUAA4ICAQBeIHy6
+8L6oC7p6PYocsnzhLbtGfWTzR16oHxPWhg7MMxEe/i2LA+2OJJWdQU3TUJMtmZFn
+Us8MIWW+wm4LWxPPBFy94S4z+SDffQKgQjsDj+c3eXS9t2z8AQWSQb0AkFNi/aW+
+SJyS/0gPiBj+eMMNVKIVFw+agNrh2zT2KdbLp/oyMX/QjNoWMcNaJMOp4PEmwG/D
+eGQsUsEAFSlGqdYJWpklPyfVAoWVD+RHuP8zOuD2+fihRyWMATWj84UcdLw+q1Lh
+GnxROMOx5uZN0kKm3Z5pMXVd7tvJYcXPWdyTdpYCm1rMT+Jp7aErHLbXVtYpRt0W
+rVHkVqphN4EUSTPN+rGvdHN3axQq5bwMmVcsO44rPMlBoVU0Ofgfwi1AU86FgWa+
+U9cgD8VuHlCr6NkjO42OCzrqpe+Fi8/cn+J46R8Onk9y+09OkiPc5NCq3kDAubfS
+zN5tdPu+hcRX4MmRQVhIijL9QMrWQGnWJZBMhWl9NbaR9A/S1EIcLPPzFY5i5QPs
+bBdP1xJoZ11cX1AGGK2g/0l/XclFhk1KgD3BZycr1+Gopxnyhi/TGuV3F+aHbfn1
+D09JglRYbMz0njlDWr2X6be32sNwhsPfYHKSN0CnlSE9LAQNzeX1wJiqVo110b22
++N7OUol91HqrTfd8v8nx7l3utnV9Qr8ewP9Ulw==
+-----END CERTIFICATE-----
+R:-----BEGIN CERTIFICATE-----
+MIIFWjCCA0KgAwIBAgIBATANBgkqhkiG9w0BAQUFADBGMRswGQYDVQQDExJUZXN0
+Um9vdENBSW1wb3J0MTAxGjAYBgNVBAoTEURvX05vdF9UcnVzdF9UZXN0MQswCQYD
+VQQGEwJERTAeFw0xMzAxMDEwMDAwMDBaFw0xNTEyMzEyMzU5NTlaMEYxGzAZBgNV
+BAMTElRlc3RSb290Q0FJbXBvcnQxMDEaMBgGA1UEChMRRG9fTm90X1RydXN0X1Rl
+c3QxCzAJBgNVBAYTAkRFMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
+lESjnWYAc62jUH5p+i+8UF7hvzB/zi8s4eQHY5lUqz94zd9FQV6zKMBlX3NtY7B2
+jUwncB7pxpl9XK9sGMQpRP4jrLm0Q/6/9qSY+BZubaYJOxVcm5a/rNslyU8meIRx
+scK8bzJy9ayUpxJwRlbRFP5jf/LDTJgR8l82paleNhAv5xtgc2ynbdrNMdYhlixy
+qRMA2GNiwFLXCz1pv5UI0587oSwmhqqPQYWC+63/ENpokize37UZf6VaMJko6mcK
+3VURK0MA4pRFaAz/nkN92GsspdKmYBAmbWXQQHX5qCowqrdorbthIOcYNJpz/0rF
+GCNz1KzC1f2bsiDIgEhjd8PxE40Xcb9+fc6VXre4ndwQh9F6V8suAw1duDj49oUw
+sRsOraGsS4Wbs8hhcJ6BSBPhPzQCBwqzLusOl+Hhi+juuCiT7hJhcqaxkd0Y90nd
+jvis4TzcnDIgcYJiQFg+/a1TRBQofn2iHmXuu70AbHhiJWeeQc/sHY65HOTPM0Aq
+ez9IQvFfjjZOoYpMytsXt/X9zySwI8EvV1+DO9meN3kzgtgkKtDGcyENjM//QQoL
+PnQDRguKrrYDRg4yIyj6+HnUtG6OknjVoXkVp8Rrk9f5REKMCtXffl7eBzeHqNT8
+0XfLxaj6q/6tYRzmLTjJmfOfQG+Wd+I0INscG5jlEBECAwEAAaNTMFEwDwYDVR0T
+BAgwBgEBAQIBADAdBgNVHQ4EFgQUq55anfrfgcQd6KWBGS2IqmpscqEwHwYDVR0j
+BBgwFoAUq55anfrfgcQd6KWBGS2IqmpscqEwDQYJKoZIhvcNAQEFBQADggIBAGBL
+rSWXtIkjz2SiMJTc6mW7ws3RAElfL478NOS3W06XCrgwMUkOWJWt/g+wMn42F/IR
+ha7ukucZfo9qYvB3VIGQINj8GA5B9nznoN8P6mX8mos0TwA2l6xCiJ1PZHNdnB8n
+Q1FFVAeN4Qd7F9VXE/bKgeoDn8GeeFyuK+a9tlQf/LJlW3Z268CA5XT2SaCWvrTm
+3nYgj7wr6qMCsTMsctxPbkYPczDuinlXMsGfWrlFNO/BQ5iVHb5+AUlJH0sXdLb0
+2pTkoDrQJKi9vmKpsnldcelT/m3sisAdWCYcmoRjvkTeiAYqDyWGZIwUmUBcRBBb
+TE+IFlvs1OnIIK+JhxzsVjwYGAWrd7PCMqs9ExPPD2W64+IKXB8Yg/eFcSy7YMir
+nawUE0iaKhZQDcIEdFzzyG2b7s6+fPOGqSTavwQUpmcIlPWC6F+S/rOZiZyTe3Wi
+2yN1jKGnJyZZcJ5UWT4Hc65un69thzSvbMsMFMr2BF1mv4qPfmCnqzP1BifZuDNV
+3OX2tqH2YdMzKiNDVo4PCP3/MeJi6oJgdhc4LlJCR5ZRrFXx6cQ4sIIgQfhGQj/3
+LfO2ZXIs517Dz2ZgSTtqkwGfPrlcDNqa9/7H/cIBOaxISElBJi9fiN3pmyO64xJU
+2+g4lFcfYlzwphv1hcj/6f6eF4LrCYN3enc2Oz05
+-----END CERTIFICATE-----
+R:-----BEGIN CERTIFICATE-----
+MIIFWjCCA0KgAwIBAgIBATANBgkqhkiG9w0BAQUFADBGMRswGQYDVQQDExJUZXN0
+Um9vdENBSW1wb3J0MTExGjAYBgNVBAoTEURvX05vdF9UcnVzdF9UZXN0MQswCQYD
+VQQGEwJERTAeFw0xMzAxMDEwMDAwMDBaFw0xNTEyMzEyMzU5NTlaMEYxGzAZBgNV
+BAMTElRlc3RSb290Q0FJbXBvcnQxMTEaMBgGA1UEChMRRG9fTm90X1RydXN0X1Rl
+c3QxCzAJBgNVBAYTAkRFMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
+l5LHIobEhW6fuDyr9dTWS9A/WZxKDMgN9mpJMrvMrNAJMx45syRSPzVBPmtHPcdp
+SwZn4cOO5xYsphAVi+jY477+0YnVFFP3373wIgDaMmddnStOJVR2t2jyyxXzUyPO
+BHh8jg5pzI3szCpvvLJnhuBDQwvaDsuNwglABzCBafhlWq91gyneKeSXXQDwppyH
+KSG8WH/RX33UV64jrF0ynNWqRJYg6OewCS8zB0JHduqw1Mtw4DzhX8OKVSSkUK+B
+gH33le3Cxl9c3dbnYWyTL3dux/4YXXRViz1F197PaJMhY62qfODxPybRgq7Wx0wi
+w/ml+s9vz8nsVfZlyMOjHTtJcuvPZwHHb5cNmPAX/qd1BV8pfQPdlDxceLCiky3S
+LijueFAmlUPOfN3ooU5znm1rCKkFGDNsOBLz/QWkBxLgXoE+RAMO0pP2LtfGju41
+n9g2XYiJ9e5y1fO66Rs3DZYK1cTM8lvciknj5GEq5aIiTjRSzkt2B06DquRzQpLX
+Voo+zHDdlAQN/28RvXLcprotv8FvjOCUzzjMtAWb1nSzvw9FmzWqwCzrgOFLM8kB
+HK/rBnu5uA9E7261eCS7hJIoZdw5ZmqTrVzfzeRuL8VAppmmxiSN1Amrh1KjsRwQ
+zCQBc0Rrz9GXJJ6mmNv012e/ayFO3QSA0q8+0jC/WEkCAwEAAaNTMFEwDwYDVR0T
+BAgwBgEBAQIBADAdBgNVHQ4EFgQUmi/GbE++zoGKDwqz8dQMWxH7tUYwHwYDVR0j
+BBgwFoAUmi/GbE++zoGKDwqz8dQMWxH7tUYwDQYJKoZIhvcNAQEFBQADggIBAFmu
+bN0wXzgOuDoa2repwPIP74WaiEaMLFCdHYBxOh+wBawqnrrTIhVtfbKnj3cBJXFu
+eSWWcH1Re0fFvj6YvUo+NUJQ+2XJ9jYEM01pje4jW5VVdptzss4zeP+XXBPowIC4
+mX1ogOM/gZGN5fO9JhrRtKM/HUzns2+jlSSpian8BaIE2E3x89oNLjQJkj4sB2T8
+g0Z/e/L+3C+AKQhpSeKZEvphdGUfBMkrJrf2CioQJdH3JoCFT+JH4HXD2D1R9fwY
+TuQGPrmP9rksHXfM7fXS6Kw9wjc9YijWHuaRdvAlcyinIVwLlvjX61T4EeefeQAq
+yHq73mRX6RNIYlDo5/3zYAUxUhMV0ZU9wLfnRecAHGIZ2HMJn/gZFZqnBkWfrvcc
+MxymaGv/vmRSb7NhuJpSqwLPWpM8EconNZu4ZoTQOMQUX8F2mtFOZ3r1x1GMqjjX
+RAxiFz4sRjKKlAJs9H0ZgZUt63V6CEv0OGuTwzdTg1QH/JPPxeNBtBkb8kKXYP8u
+uxvORzZOWWKHeHgvE3Dg0FzxaN2q03UG4UTX0wP5SMg2+urjZWZHkYpbz1FFum9B
+P/w4k2qcEm9lMWEcqfzLpg3IGzHG1jPRjl+hYSCgioejBuFM1HWhREoRa9rVeLbi
+IFSwpQprZ2/zfqd0FM9cJ55Elv2wNyYTj7Sv4+DA
+-----END CERTIFICATE-----
+R:-----BEGIN CERTIFICATE-----
+MIIFWjCCA0KgAwIBAgIBATANBgkqhkiG9w0BAQUFADBGMRswGQYDVQQDExJUZXN0
+Um9vdENBSW1wb3J0MTIxGjAYBgNVBAoTEURvX05vdF9UcnVzdF9UZXN0MQswCQYD
+VQQGEwJERTAeFw0xMzAxMDEwMDAwMDBaFw0xNTEyMzEyMzU5NTlaMEYxGzAZBgNV
+BAMTElRlc3RSb290Q0FJbXBvcnQxMjEaMBgGA1UEChMRRG9fTm90X1RydXN0X1Rl
+c3QxCzAJBgNVBAYTAkRFMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
+lHZ4Ptyckn6UeeIgOfpiH7hUebo8KbUIYzt8D32ySeNzw+m3GiQMsA3/P2LQGXjr
+TKdz2kVE3uIZ27QXYcfz/wIazU0rz8/dG4eAtz1HZ78Xqy3xXWbzjVu8rmpXJzDv
+45+zhoX552UUym0mVD5tabF00nQkZEaV3ivicj1yk7w9wcmz1BPRnmXQYy03sOYY
+GShX6UH53Vm+iVxV7G2AKgBhDv8gWreaPAvfkdetLihn/0qrDuEPbGQo9o0Oavhc
+k9wKGkSShdokx7yblJqZn9hly5V1rryQLpklBxwDrA0jl3P3NGKH8yVN7C+u5fyS
+CPEHV3FGHXJr1ndzI3gKYw768nJ/ZwzyDu48Rwc7IK6hBU1kh2Eo2uKSQZgqJCME
+ukY42xPxgh7SWH05RgPBRVm1n4sgQDdU/oHnD8GRCP7VVu5kiFgAQlP2v8Nhwmgf
+m+RvDHT+HgUcjOdVRGfdKB8K7jie7s/0Zat2Zr/jcgGa904xSWNS6f6HUceebAH8
+kIkAwp7Sd9WWFfdBqRzXHexdUwDON1eeRgZwpuGwz2XM1BVtM9+vX5RBSGrUE3H6
+rZ7WXf/uWT0F7tvfGElddXAYWHQKs4PyzCcEErLjpvYoznTbgX3fSKzoK/s4VS1i
+0ghp8j+31M/SDlAQmnAwKj6ZQBbp+8vPVHaTQnPu0aECAwEAAaNTMFEwDwYDVR0T
+BAgwBgEBAQIBADAdBgNVHQ4EFgQU61AgJYUdfG7VIWjPjf3LZx7HvEUwHwYDVR0j
+BBgwFoAU61AgJYUdfG7VIWjPjf3LZx7HvEUwDQYJKoZIhvcNAQEFBQADggIBAGaQ
+wF6CAjS+XgyKmZAyw/38BWNcSkFHNpqrZJLGFymapMrxo0u4/r94MrywG4Waa4RP
+QCUUeSO6iWGm2WIwIJ3RqMR0EmKAbSmp6hrodcYOHL6Hi7ha7f1AqV4o1mh5RV1b
+9NaHV145RNUkwtVIRqMpK/X7m7Hx/5xu5yPt3zDX8OYK9Xvi+fLguI2auDx36QLU
+Iku2ytnf8ybJmYuwJQW7ZTtXlAyjIpDEazhnQ9/iQiQHCidKZXemcmgpE6iKSEPm
+iz6fCntbNbAbeXjk7hVzfQ2Oy0w0VV+hlLZOMa+2PDP+uB1MQKqq9SNq5B9ubALt
+g/LHZnR+9Nxq6ZUStZZjamaas15Y7/WdKzwn/5y4xtE2T80PcxUCg4Cl6HC2T8hS
+xatQ8S4WdXM/w28g69TxCNFA1bvO3LTQCRsoEKOBNxxGb1SsPuz2wldCsbi/yVLr
+d2LLR6MTwqkpobM3vPBfd7TTF08wBOugt2JmLbttzUr7nWanm9N+zAm66t/pdRUD
+rG7fbCfo0JL4K2L3Tquzk9OIoDrjlKLCyBCzuD6QlgGVHkhI2uoo2V3DW4h22j1u
+z40a+WpYHZtql2vSfG54QTV5kE3fyWuXcWwu7MnHTqlokT6ptVP2KXZbPtj7702i
+F0bdUbs6EaH59xaeLpO4zcp5XMuLYgPWn4LcqC+A
+-----END CERTIFICATE-----
+R:-----BEGIN CERTIFICATE-----
+MIIFWjCCA0KgAwIBAgIBATANBgkqhkiG9w0BAQUFADBGMRswGQYDVQQDExJUZXN0
+Um9vdENBSW1wb3J0MTMxGjAYBgNVBAoTEURvX05vdF9UcnVzdF9UZXN0MQswCQYD
+VQQGEwJERTAeFw0xMzAxMDEwMDAwMDBaFw0xNTEyMzEyMzU5NTlaMEYxGzAZBgNV
+BAMTElRlc3RSb290Q0FJbXBvcnQxMzEaMBgGA1UEChMRRG9fTm90X1RydXN0X1Rl
+c3QxCzAJBgNVBAYTAkRFMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
+gMuPsx4qLNZ6HXOm2DqWnm5a6SJ3Cvm4sunGFKeLkyQFFn5SgSDkjVIEyXMDHj8J
+vtRWzKnoOVcOCN/687xHmE7hpj8VLws/itqaughkdNxAsX5sWmtKvjRcrbnEpE8j
++UbxleKoaValyT3LAuLBkMfzc5nN06RVng1v+ZIODWA4CIsDyQQZIKRwrGc4nRjr
+zbSCj+z1YXRo37+qn9BlahdNJEaoipx4lNTe96U8gdqsVbB6u7VnDPUewLpLLwmd
+1z2R1frPYmYGtzT8QvGJhTjZ/m9RXzgMIWFEehev3nuOPSlSROyVGWvzXQFFjseA
+PYxQHCJ1HVhdX/IwazGjLP2inQK/Iz8vr7Jg4eIRguM3tDXWb3phxu7yaTUl9LVi
+kBBbwHqaLJw6+BYKttYSm9qtFbOpRvMZsrgV59s8+jl13W8t+AhrZGQnleuJv5/N
+H3UzmwdAt+58JxYQLFwkDYK/jOpkpQofgwCFT2a4XsoMAhr7Z5qFZOGQV0LGyy4P
+ca3y6VfoR+FZI7hKBka7pHb+LmSk3PIK5cAXFFsXEfE/yMAbvcbDmp5Sz3r9IDz+
+8FDuGIvCDkYgcx19CrFkX6vtnkT/VtlXAFcNM25r3A8FK0xn9gLBFpVxyGxFNttE
+lBPps+SPJrhmptcihAGJeD1CMgkMMfb3qkFrfgwAY7cCAwEAAaNTMFEwDwYDVR0T
+BAgwBgEBAQIBADAdBgNVHQ4EFgQUsk1FfmId9B/AUyVmlzxhG/JDxoowHwYDVR0j
+BBgwFoAUsk1FfmId9B/AUyVmlzxhG/JDxoowDQYJKoZIhvcNAQEFBQADggIBAAqw
+W19S0YLk01nTOpIrByjV24NfIup1KAZD3HhTTigln0s5qDyCCO+0+7z2woBOHchu
+c1mVht8E7eI9cPkTRrWu7y4D7yekvArfx08ulW3xyc2k03h4/2bRNeCO7tBeZsc4
+tOUT8em4z+CkDajYlv02MuW2ADpezvdYFtDjH/qQjHDQeXwlHW015KUlafowPyfG
+qwlCZEopoBVDH1jgfYXK9HhXdGgpxqUazX3eCxjynXDUK00RLd8NSVeHV1kgrzR9
+0wUH2QFbnPb/cVNp9DHECWSYKyQ8hoEJiiSPJCbIUy6kZ7R1YMvjt/0OTzYjkRb0
+JZ4u/Om90XxPcUyPoBl00z+rdPr/h+GRyJP1jQ4EkZL7VNe9BqeQvj1SsKiivwZs
+UswfC90oxtb3KU4+7VrVCvsn/V3l9LCDzEEGOsasRhGDL7a58UyUCk2eul8+mVaH
+cyO5RtGn9QzFzwSNwIFf/kPdyxOBDSn4+DKDgU+ijOC+zKuIrZrK61krEMsy+oEz
+RIfmthGteck4UIOkDKF5iydWL6kl8J7AISKCW5rHZQC0WV9HylQKn/FZbHVfbkfX
+669cRLxMb+QWYRCftzeNCPhKolW16SbArXWu6Fk88I3uru3un0DUbqXgwBQ6JEqn
+PGvajyustxo/lN2i1rxN4/seVwqt0UmbmZ7z3aHG
+-----END CERTIFICATE-----
+R:-----BEGIN CERTIFICATE-----
+MIIFWjCCA0KgAwIBAgIBATANBgkqhkiG9w0BAQUFADBGMRswGQYDVQQDExJUZXN0
+Um9vdENBSW1wb3J0MTQxGjAYBgNVBAoTEURvX05vdF9UcnVzdF9UZXN0MQswCQYD
+VQQGEwJERTAeFw0xMzAxMDEwMDAwMDBaFw0xNTEyMzEyMzU5NTlaMEYxGzAZBgNV
+BAMTElRlc3RSb290Q0FJbXBvcnQxNDEaMBgGA1UEChMRRG9fTm90X1RydXN0X1Rl
+c3QxCzAJBgNVBAYTAkRFMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
+lTTuLbVdnvA6Jp8bnuATf5m8QicS53HrZxg6Sx9nQxLs/Y/UbPOJPnOw9mk88g74
+v2/zWZUIIZv4sy3hhQ1rEtqbrGOvrhJqqfbUX9KtTIh6U4yjec5GWcsx7arrcvl+
+M+7Pve9NP3MT4u4mcecGwTwnLBJnIvpjDXMlUuMnq1Oqibh44apEfNUCss+BqFsG
+V24vCZElMSn306pwC+x+Pp0DL9cpDropurTOF7CMpHBZhXYQzkE4RfUmmauy02yb
+cF9K+PImZwwjf793yqdz7VjyTEJ2U2I6g1yBdcL/29qLL192EnqCTpvheVJw6Y9G
+UQYPVjoE5NkM2xLcXWQ0WZXU5fwSAx1OkIdtaU+LnPp8+8A8dRt8DdJS6cMbChKt
+yS8D0GjnpqfHSrlbcKWC+pmu1gceHNhVsYsud6fOPOc+UK+NqjvxbNNkP8ArbGjO
+Dcb52FfHOgB7obvOBFq1hhIEfjCHQd+CxXB+RFSMBZHJaELoWxzvEzdJ+pc2i7yG
+o3IJqmd+OFSP6LMYmYtmj9t0t+F2Ip+wutZlQSAHJLL1HOqUxIwXFN2g123fk9Gt
+Em0COX4fiLOmc0bf9LQnlMdFwE6pf5fLel7dJMyyDld3jSIlYNvZ6Cy4UITdmvG1
+/BuQtBpnJM4GJsKEh80w93dQmkRZfLcIc13vpiTRQ/0CAwEAAaNTMFEwDwYDVR0T
+BAgwBgEBAQIBADAdBgNVHQ4EFgQUo66mZOP9ApJW5QBx8jygx/wIBEAwHwYDVR0j
+BBgwFoAUo66mZOP9ApJW5QBx8jygx/wIBEAwDQYJKoZIhvcNAQEFBQADggIBAF8K
+yIUQvAqEVr66E3bEOVuYuGVmf9HVkehYb0Dd1I0/HtyIpAYyiDTOBNiaMNtwXmM+
+WEsiAzv9VbZH5DQs9+NviN/kbA0pM/iIocVGUs6+LcTtTJfX/1mbnxL5BOuI8yHZ
+nqpHZ22aAC9zH/zSOacqvWrh/wcgJIW2J49H6p+8aY/4f/4GPRKaU/TOjryEW8uO
+3RMyaoOdnTXHGI68WuIBBiFPKbPoZGyGu2t7xQSS821FDbZ9cmdA0tg1jFtBvzvp
+GS75sAdfcSo4yTud5EoU/j4iw4q/vQFlSJDj/1a4kN9Z7vdJDeGSpKc70w61yXa0
+UBqmA6R1waDZlUqTT2lu02rmluHSNSDoHsRGUmI9l5XaSWNPPiPHU1ZGYuqJ6O/1
+TaGLHKqAt391CYoomhUsflTMwVnbzmNNhpU/t2nHY7TDAHakpJjOGLSiaC7cMpLl
+Tnv33fISJhNMVi3KynTnb5D9Z5br7Jszi/zRc8y4Uj3XLhrJA+7VodxY+KpvUk2l
+t3aSOMCWse1BW7Q9bcRQE9y5netPHVk4/Z2hTaeElcWziNPuTJ6dsYZ/1WZ+w4ZE
+yhkBGM1M1JkpYVixMbfCb1f+XYITby0M0K/s6KQE5LUkCHCKD8DfS05bcSvcuu8L
+KK0BvplTmeVpslHPcSKuw8N9tbonp847iil3IQRS
+-----END CERTIFICATE-----
+R:-----BEGIN CERTIFICATE-----
+MIIFWjCCA0KgAwIBAgIBATANBgkqhkiG9w0BAQUFADBGMRswGQYDVQQDExJUZXN0
+Um9vdENBSW1wb3J0MTUxGjAYBgNVBAoTEURvX05vdF9UcnVzdF9UZXN0MQswCQYD
+VQQGEwJERTAeFw0xMzAxMDEwMDAwMDBaFw0xNTEyMzEyMzU5NTlaMEYxGzAZBgNV
+BAMTElRlc3RSb290Q0FJbXBvcnQxNTEaMBgGA1UEChMRRG9fTm90X1RydXN0X1Rl
+c3QxCzAJBgNVBAYTAkRFMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
+3Bd8EWYfyQDzZuw+5KhPxvdf07BreSVyYFvfuO7OswkAgTLJJ+SULWcWV5x6Xlx/
+jHQ6bqSWfWuNqOD9XFVzlcTAwTKKv18GOaiVtiUc4ezSOcey9xsSjHowg1NVVIIh
+tDYu+kX2Xf/AVnNZweMwJpVjVdjWBG2o0jjWbjO9m2b53UleT/5+EtWWnF1ynqZ2
+B/4SsnXKnSNA402PWn3t04s+6egLzNdKHJRwwWDWN89dGPvNYVRLY3cPO3hg3fB2
+7SehY96+xD02PqV4gCIrXg5M0h81Qi5uB728LprctkBxF10Pt58b9M4A26eR0jgQ
+4jWYupgMzX9/EEpdeiSaFwiKFAbkSk/bgnEYMr/YNYVzk0I9+/9M+Z41fCCfTmLR
+Sls/FN6NxCzjPiptOj6igybvxmJ5Cxu3pH2dC66rW0zygJyRf4Ja1yM5qgj9FaDO
+CJC1gECWdSYSm037Z/zRFFHeSXZaMo3uHWZn17j8ZToW1HIzMpIKBcWszVqilbXN
+KcGHE/efRUyEixPtJgxcoC7wSF/8yyuLbZvCTBeEOE7GdgLGwPHKv96qh+Jg1Nt8
+zRA0p62JcIaaO5+Da3hXgLm9TxOpSAkRApO5vGVXajbUr683Ih6X9MEEi9Xlvr98
+jwLcBVMuQOsWZMMBPzfDeXdzFC6wdvtKZ87oVx5KZpUCAwEAAaNTMFEwDwYDVR0T
+BAgwBgEBAQIBADAdBgNVHQ4EFgQUohPgto1f8oeel0AJy3YZIO5Fw48wHwYDVR0j
+BBgwFoAUohPgto1f8oeel0AJy3YZIO5Fw48wDQYJKoZIhvcNAQEFBQADggIBADge
+rASVX9zZ6y9YjjOK4tS/tHMmjvH8cuINSAMipcnaD2+FU4yzmZAut/F9f5Jplh6a
+5bChhIZdJ9lD9fMlmSNnpQ0/u8sZSTsMihXabMpEksyX70XFHbCgo5dvq9GqUUQN
+ox6S+bt5SBFfJd+vRan1zEjuVhN5nh4Wfvnh/SZFtOZQ0GeFRlsMQeSclKo98Hdx
+dzxRfra2ZHPqy5fdmVfExuCKK6axE4ngPtfah9o2QjslswodyNSJyG5HWAUAmUMa
+wKVrJPyjookq+Or5ow5rEJ63flIJZs147ydVbuB2F20pbQrAZmE6ohLKvyKca1Nh
+EcfqDh+QYo+HK7gBWQzkf1SZrW/mYR4ZzkGvbHoXG3Wdau6KfAXKPXTrXAwh1HxX
+SLwsPl6RYeDIFE0bA3oZSaExN/evLIfnnF7FIcVaHLNaKJLwQPt72lcbgnsFdD1j
+cQl0HKmDkNWHqvGLdsve4IdqqKNCIA0eGWHijSmTGdAFkbDbYnLuZvKHJmXv+Zj7
+GWuRXVsCaA0xkhmmH3+ozCh/et4QbZJmxCVlxwajN6JnQTu5Xz0y5baiIzYHX1yv
+K2onKeZjntbBWSRU+lFhuVNAzZQcwlYjpHhLWwWYVGB++PblVv/O/XgkvRmT4G5K
+bxAiqo+wym2S75CyWiINXPbWzMjiO8AnrWXl23+m
+-----END CERTIFICATE-----
--- a/ui/tests/data/testdata.qrc	Thu Apr 10 15:57:26 2014 +0200
+++ b/ui/tests/data/testdata.qrc	Thu Apr 10 16:03:23 2014 +0200
@@ -6,6 +6,11 @@
     <file>nss/cert8.db</file>
     <file>nss/key3.db</file>
     <file>nss/secmod.db</file>
+    <file>import_test.pem</file>
+    <file>valid_ssl_rsa.pem</file>
+    <file>valid_ssl_bp.pem</file>
+    <file>Intevation-Root-CA-2010.crt</file>
+    <file>Intevation-Root-CA-2010.der</file>
 </qresource>
 </RCC>
 
--- a/ui/tests/data/valid_ssl_rsa.key	Thu Apr 10 15:57:26 2014 +0200
+++ b/ui/tests/data/valid_ssl_rsa.key	Thu Apr 10 16:03:23 2014 +0200
@@ -1,51 +1,51 @@
 -----BEGIN RSA PRIVATE KEY-----
-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
+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
 -----END RSA PRIVATE KEY-----

http://wald.intevation.org/projects/trustbridge/