You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by da...@apache.org on 2006/11/30 21:08:27 UTC

svn commit: r481054 - in /incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment: ./ AttachmentDeserializerTest.java AttachmentSerializerTest.java mimedata mimedata2 my.wav

Author: dandiep
Date: Thu Nov 30 12:08:23 2006
New Revision: 481054

URL: http://svn.apache.org/viewvc?view=rev&rev=481054
Log:
Add attachment serialization unit tests which I missed in my last commit.

Added:
    incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/
    incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/AttachmentDeserializerTest.java   (with props)
    incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/AttachmentSerializerTest.java   (with props)
    incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/mimedata   (with props)
    incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/mimedata2   (with props)
    incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/my.wav   (with props)

Added: incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/AttachmentDeserializerTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/AttachmentDeserializerTest.java?view=auto&rev=481054
==============================================================================
--- incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/AttachmentDeserializerTest.java (added)
+++ incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/AttachmentDeserializerTest.java Thu Nov 30 12:08:23 2006
@@ -0,0 +1,81 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.attachment;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.util.Collection;
+import java.util.Iterator;
+
+import junit.framework.TestCase;
+
+import org.apache.cxf.helpers.IOUtils;
+import org.apache.cxf.message.Attachment;
+import org.apache.cxf.message.Message;
+import org.apache.cxf.message.MessageImpl;
+
+public class AttachmentDeserializerTest extends TestCase {
+    public void testDeserializer() throws Exception {
+        InputStream is = getClass().getResourceAsStream("mimedata");
+        String ct = "multipart/related; type=\"application/xop+xml\"; "
+                    + "start=\"<so...@xfire.codehaus.org>\"; "
+                    + "start-info=\"text/xml; charset=utf-8\"; "
+                    + "boundary=\"----=_Part_4_701508.1145579811786\"";
+        
+        MessageImpl msg = new MessageImpl();
+        msg.put(Message.CONTENT_TYPE, ct);
+        msg.setContent(InputStream.class, is);
+        
+        AttachmentDeserializer deserializer = new AttachmentDeserializer(msg);
+        deserializer.initializeAttachments();
+        
+        InputStream attBody = msg.getContent(InputStream.class);
+        assertTrue(attBody != is);
+        assertTrue(attBody instanceof DelegatingInputStream);
+        
+        Collection<Attachment> atts = msg.getAttachments();
+        assertNotNull(atts);
+        
+        Iterator<Attachment> itr = atts.iterator();
+        assertTrue(itr.hasNext());
+        
+        Attachment a = itr.next();
+        assertNotNull(a);
+        
+        InputStream attIs = a.getDataHandler().getInputStream();
+        
+        assertTrue(((DelegatingInputStream) attIs).getInputStream() instanceof MimeBodyPartInputStream);
+        assertTrue(((DelegatingInputStream) attBody).getInputStream() instanceof ByteArrayInputStream);
+        
+        // check the cached output stream
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        IOUtils.copy(attBody, out);
+        assertTrue(out.toString().startsWith("<env:Envelope"));
+        
+        // try streaming a character off the wire
+        assertTrue(attIs.read() == '/');
+        assertTrue(attIs.read() == '9');
+        
+//        Attachment invalid = atts.get("INVALID");
+//        assertNull(invalid.getDataHandler().getInputStream());
+//        
+//        assertTrue(attIs instanceof ByteArrayInputStream);
+    }
+}
\ No newline at end of file

Propchange: incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/AttachmentDeserializerTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/AttachmentDeserializerTest.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/AttachmentDeserializerTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/AttachmentSerializerTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/AttachmentSerializerTest.java?view=auto&rev=481054
==============================================================================
--- incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/AttachmentSerializerTest.java (added)
+++ incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/AttachmentSerializerTest.java Thu Nov 30 12:08:23 2006
@@ -0,0 +1,87 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.attachment;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+
+import javax.activation.DataHandler;
+import javax.mail.util.ByteArrayDataSource;
+
+import junit.framework.TestCase;
+
+import org.apache.cxf.message.Attachment;
+import org.apache.cxf.message.Message;
+import org.apache.cxf.message.MessageImpl;
+
+public class AttachmentSerializerTest extends TestCase {
+    public void testMessageWrite() throws Exception {
+        MessageImpl msg = new MessageImpl();
+        
+        Collection<Attachment> atts = new ArrayList<Attachment>();
+        AttachmentImpl a = new AttachmentImpl("test.xml");
+        
+        InputStream is = getClass().getResourceAsStream("my.wav");
+        ByteArrayDataSource ds = new ByteArrayDataSource(is, "application/octet-stream");
+        a.setDataHandler(new DataHandler(ds));
+        
+        atts.add(a);
+        
+        msg.setAttachments(atts);
+        
+        // Set the SOAP content type
+        msg.put(Message.CONTENT_TYPE, "application/soap+xml");
+        
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        msg.setContent(OutputStream.class, out);
+        
+        AttachmentSerializer serializer = new AttachmentSerializer(msg);
+        
+        serializer.writeProlog();
+        
+        String ct = (String) msg.get(Message.CONTENT_TYPE);
+        assertTrue(ct.indexOf("multipart/related; boundary=") == 0);
+        assertTrue(ct.indexOf("start=\"<ro...@cxf.apache.org>\"") > -1);
+        assertTrue(ct.indexOf("start-info=\"application/soap+xml\"") > -1);
+        
+        out.write("<soap:Body/>".getBytes());
+        
+        serializer.writeAttachments();
+        
+        out.flush();
+        
+        MessageImpl in = new MessageImpl();
+        in.put(Message.CONTENT_TYPE, ct);
+        in.setContent(InputStream.class, new ByteArrayInputStream(out.toByteArray()));
+        
+        AttachmentDeserializer deserializer = new AttachmentDeserializer(in);
+        deserializer.initializeAttachments();
+        
+        Collection<Attachment> inAtts = in.getAttachments();
+        assertNotNull(inAtts);
+        assertEquals(1, inAtts.size());
+        
+        Attachment inAtt = inAtts.iterator().next();
+        assertEquals("test.xml", inAtt.getId());
+    }
+}

Propchange: incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/AttachmentSerializerTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/AttachmentSerializerTest.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/AttachmentSerializerTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/mimedata
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/mimedata?view=auto&rev=481054
==============================================================================
--- incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/mimedata (added)
+++ incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/mimedata Thu Nov 30 12:08:23 2006
@@ -0,0 +1,501 @@
+
+------=_Part_4_701508.1145579811786
+Content-Type: text/xml
+Content-Transfer-Encoding: binary
+Content-ID: <echo.xml>
+
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
+ <env:Header/>
+ <env:Body>
+  <m:echo xmlns:m="urn:Echo">
+   <m:in0>Yo Yo</m:in0>
+  </m:echo>
+ </env:Body>
+</env:Envelope>
+------=_Part_4_701508.1145579811786
+Content-Type: image/jpeg
+Content-Transfer-Encoding: base64
+Content-ID: <xfire_logo.jpg>
+
+/9j/4AAQSkZJRgABAgEBLAEsAAD/4Q1dRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUA
+AAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAUAAAAcgEyAAIAAAAUAAAAhodp
+AAQAAAABAAAAnAAAAMgAAAEsAAAAAQAAASwAAAABQWRvYmUgUGhvdG9zaG9wIDcuMAAyMDA0OjA5
+OjE2IDExOjQyOjQwAAAAAAOgAQADAAAAAf//AACgAgAEAAAAAQAAAL6gAwAEAAAAAQAAAEkAAAAA
+AAAABgEDAAMAAAABAAYAAAEaAAUAAAABAAABFgEbAAUAAAABAAABHgEoAAMAAAABAAIAAAIBAAQA
+AAABAAABJgICAAQAAAABAAAMLwAAAAAAAABIAAAAAQAAAEgAAAAB/9j/4AAQSkZJRgABAgEASABI
+AAD/7QAMQWRvYmVfQ00AAv/uAA5BZG9iZQBkgAAAAAH/2wCEAAwICAgJCAwJCQwRCwoLERUPDAwP
+FRgTExUTExgRDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBDQsLDQ4NEA4OEBQO
+Dg4UFA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDP/AABEI
+ADEAgAMBIgACEQEDEQH/3QAEAAj/xAE/AAABBQEBAQEBAQAAAAAAAAADAAECBAUGBwgJCgsBAAEF
+AQEBAQEBAAAAAAAAAAEAAgMEBQYHCAkKCxAAAQQBAwIEAgUHBggFAwwzAQACEQMEIRIxBUFRYRMi
+cYEyBhSRobFCIyQVUsFiMzRygtFDByWSU/Dh8WNzNRaisoMmRJNUZEXCo3Q2F9JV4mXys4TD03Xj
+80YnlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3EQACAgECBAQDBAUGBwcG
+BTUBAAIRAyExEgRBUWFxIhMFMoGRFKGxQiPBUtHwMyRi4XKCkkNTFWNzNPElBhaisoMHJjXC0kST
+VKMXZEVVNnRl4vKzhMPTdePzRpSkhbSVxNTk9KW1xdXl9VZmdoaWprbG1ub2JzdHV2d3h5ent8f/
+2gAMAwEAAhEDEQA/AK316zfrbgdevrys7Jrxbi5+D6NjqqnUT7WBtBqa+3H3+lker+m+hZ/NW0rr
+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
+ZCI+CjxwbGlzdCB2ZXJzaW9uPSIxLjAiPgo8ZGljdD4KCTxrZXk+Y29tLmFwcGxlLnByaW50LlBh
+Z2VGb3JtYXQuUE1Ib3Jpem9udGFsUmVzPC9rZXk+Cgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5w
+cmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50aW5nbWFu
+YWdlcjwvc3RyaW5nPgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tl
+eT4KCQk8YXJyYXk+CgkJCTxkaWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1h
+dC5QTUhvcml6b250YWxSZXM8L2tleT4KCQkJCTxyZWFsPjcyPC9yZWFsPgoJCQkJPGtleT5jb20u
+YXBwbGUucHJpbnQudGlja2V0LmNsaWVudDwva2V5PgoJCQkJPHN0cmluZz5jb20uYXBwbGUucHJp
+bnRpbmdtYW5hZ2VyPC9zdHJpbmc+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQubW9k
+RGF0ZTwva2V5PgoJCQkJPGRhdGU+MjAwNC0wOS0xNlQxNzoxODowOVo8L2RhdGU+CgkJCQk8a2V5
+PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQk8aW50ZWdlcj4wPC9p
+bnRlZ2VyPgoJCQk8L2RpY3Q+CgkJPC9hcnJheT4KCTwvZGljdD4KCTxrZXk+Y29tLmFwcGxlLnBy
+aW50LlBhZ2VGb3JtYXQuUE1PcmllbnRhdGlvbjwva2V5PgoJPGRpY3Q+CgkJPGtleT5jb20uYXBw
+bGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5wcmludGlu
+Z21hbmFnZXI8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5
+PC9rZXk+CgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhZ2VG
+b3JtYXQuUE1PcmllbnRhdGlvbjwva2V5PgoJCQkJPGludGVnZXI+MTwvaW50ZWdlcj4KCQkJCTxr
+ZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jbGllbnQ8L2tleT4KCQkJCTxzdHJpbmc+Y29tLmFw
+cGxlLnByaW50aW5nbWFuYWdlcjwvc3RyaW5nPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlj
+a2V0Lm1vZERhdGU8L2tleT4KCQkJCTxkYXRlPjIwMDQtMDktMTZUMTc6MTg6MDlaPC9kYXRlPgoJ
+CQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVn
+ZXI+MDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk+Cgk8L2RpY3Q+Cgk8a2V5PmNvbS5h
+cHBsZS5wcmludC5QYWdlRm9ybWF0LlBNU2NhbGluZzwva2V5PgoJPGRpY3Q+CgkJPGtleT5jb20u
+YXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5wcmlu
+dGluZ21hbmFnZXI8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFy
+cmF5PC9rZXk+CgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBh
+Z2VGb3JtYXQuUE1TY2FsaW5nPC9rZXk+CgkJCQk8cmVhbD4xPC9yZWFsPgoJCQkJPGtleT5jb20u
+YXBwbGUucHJpbnQudGlja2V0LmNsaWVudDwva2V5PgoJCQkJPHN0cmluZz5jb20uYXBwbGUucHJp
+bnRpbmdtYW5hZ2VyPC9zdHJpbmc+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQubW9k
+RGF0ZTwva2V5PgoJCQkJPGRhdGU+MjAwNC0wOS0xNlQxNzoxODowOVo8L2RhdGU+CgkJCQk8a2V5
+PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQk8aW50ZWdlcj4wPC9p
+bnRlZ2VyPgoJCQk8L2RpY3Q+CgkJPC9hcnJheT4KCTwvZGljdD4KCTxrZXk+Y29tLmFwcGxlLnBy
+aW50LlBhZ2VGb3JtYXQuUE1WZXJ0aWNhbFJlczwva2V5PgoJPGRpY3Q+CgkJPGtleT5jb20uYXBw
+bGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5wcmludGlu
+Z21hbmFnZXI8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5
+PC9rZXk+CgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhZ2VG
+b3JtYXQuUE1WZXJ0aWNhbFJlczwva2V5PgoJCQkJPHJlYWw+NzI8L3JlYWw+CgkJCQk8a2V5PmNv
+bS5hcHBsZS5wcmludC50aWNrZXQuY2xpZW50PC9rZXk+CgkJCQk8c3RyaW5nPmNvbS5hcHBsZS5w
+cmludGluZ21hbmFnZXI8L3N0cmluZz4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5t
+b2REYXRlPC9rZXk+CgkJCQk8ZGF0ZT4yMDA0LTA5LTE2VDE3OjE4OjA5WjwvZGF0ZT4KCQkJCTxr
+ZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8
+L2ludGVnZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUu
+cHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2FsU2NhbGluZzwva2V5PgoJPGRpY3Q+CgkJPGtleT5j
+b20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5w
+cmludGluZ21hbmFnZXI8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRl
+bUFycmF5PC9rZXk+CgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50
+LlBhZ2VGb3JtYXQuUE1WZXJ0aWNhbFNjYWxpbmc8L2tleT4KCQkJCTxyZWFsPjE8L3JlYWw+CgkJ
+CQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY2xpZW50PC9rZXk+CgkJCQk8c3RyaW5nPmNv
+bS5hcHBsZS5wcmludGluZ21hbmFnZXI8L3N0cmluZz4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50
+LnRpY2tldC5tb2REYXRlPC9rZXk+CgkJCQk8ZGF0ZT4yMDA0LTA5LTE2VDE3OjE4OjA5WjwvZGF0
+ZT4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxp
+bnRlZ2VyPjA8L2ludGVnZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5j
+b20uYXBwbGUucHJpbnQuc3ViVGlja2V0LnBhcGVyX2luZm9fdGlja2V0PC9rZXk+Cgk8ZGljdD4K
+CQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRqdXN0ZWRQYWdlUmVjdDwva2V5
+PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJ
+CQk8c3RyaW5nPmNvbS5hcHBsZS5wcmludGluZ21hbmFnZXI8L3N0cmluZz4KCQkJPGtleT5jb20u
+YXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk+CgkJCQk8ZGljdD4K
+CQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRqdXN0ZWRQYWdlUmVjdDwv
+a2V5PgoJCQkJCTxhcnJheT4KCQkJCQkJPHJlYWw+MC4wPC9yZWFsPgoJCQkJCQk8cmVhbD4wLjA8
+L3JlYWw+CgkJCQkJCTxyZWFsPjczNDwvcmVhbD4KCQkJCQkJPHJlYWw+NTc2PC9yZWFsPgoJCQkJ
+CTwvYXJyYXk+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNsaWVudDwva2V5PgoJ
+CQkJCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50aW5nbWFuYWdlcjwvc3RyaW5nPgoJCQkJCTxrZXk+
+Y29tLmFwcGxlLnByaW50LnRpY2tldC5tb2REYXRlPC9rZXk+CgkJCQkJPGRhdGU+MjAwNC0wOS0x
+NlQxODo0MTowN1o8L2RhdGU+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRl
+RmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCQk8L2RpY3Q+CgkJCTwvYXJy
+YXk+CgkJPC9kaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1BZGp1c3Rl
+ZFBhcGVyUmVjdDwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQu
+Y3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5wcmludGluZ21hbmFnZXI8L3N0cmlu
+Zz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJy
+YXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRq
+dXN0ZWRQYXBlclJlY3Q8L2tleT4KCQkJCQk8YXJyYXk+CgkJCQkJCTxyZWFsPi0xODwvcmVhbD4K
+CQkJCQkJPHJlYWw+LTE4PC9yZWFsPgoJCQkJCQk8cmVhbD43NzQ8L3JlYWw+CgkJCQkJCTxyZWFs
+PjU5NDwvcmVhbD4KCQkJCQk8L2FycmF5PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tl
+dC5jbGllbnQ8L2tleT4KCQkJCQk8c3RyaW5nPmNvbS5hcHBsZS5wcmludGluZ21hbmFnZXI8L3N0
+cmluZz4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQubW9kRGF0ZTwva2V5PgoJCQkJ
+CTxkYXRlPjIwMDQtMDktMTZUMTg6NDE6MDdaPC9kYXRlPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnBy
+aW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJ
+PC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBl
+ckluZm8uUE1QYXBlck5hbWU8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQu
+dGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUucHJpbnQucG0uUG9zdFNj
+cmlwdDwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9r
+ZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVy
+SW5mby5QTVBhcGVyTmFtZTwva2V5PgoJCQkJCTxzdHJpbmc+bmEtbGV0dGVyPC9zdHJpbmc+CgkJ
+CQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNsaWVudDwva2V5PgoJCQkJCTxzdHJpbmc+
+Y29tLmFwcGxlLnByaW50LnBtLlBvc3RTY3JpcHQ8L3N0cmluZz4KCQkJCQk8a2V5PmNvbS5hcHBs
+ZS5wcmludC50aWNrZXQubW9kRGF0ZTwva2V5PgoJCQkJCTxkYXRlPjIwMDAtMDctMjhUMjI6NTc6
+MDRaPC9kYXRlPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tl
+eT4KCQkJCQk8aW50ZWdlcj4xPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwv
+ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8uUE1VbmFkanVzdGVkUGFnZVJl
+Y3Q8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8
+L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUucHJpbnQucG0uUG9zdFNjcmlwdDwvc3RyaW5nPgoJ
+CQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJCTxhcnJheT4K
+CQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVVuYWRqdXN0
+ZWRQYWdlUmVjdDwva2V5PgoJCQkJCTxhcnJheT4KCQkJCQkJPHJlYWw+MC4wPC9yZWFsPgoJCQkJ
+CQk8cmVhbD4wLjA8L3JlYWw+CgkJCQkJCTxyZWFsPjczNDwvcmVhbD4KCQkJCQkJPHJlYWw+NTc2
+PC9yZWFsPgoJCQkJCTwvYXJyYXk+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNs
+aWVudDwva2V5PgoJCQkJCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50aW5nbWFuYWdlcjwvc3RyaW5n
+PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5tb2REYXRlPC9rZXk+CgkJCQkJPGRh
+dGU+MjAwNC0wOS0xNlQxNzoxODowOVo8L2RhdGU+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQu
+dGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCQk8L2Rp
+Y3Q+CgkJCTwvYXJyYXk+CgkJPC9kaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5m
+by5QTVVuYWRqdXN0ZWRQYXBlclJlY3Q8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUu
+cHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUucHJpbnQucG0u
+UG9zdFNjcmlwdDwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFy
+cmF5PC9rZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50
+LlBhcGVySW5mby5QTVVuYWRqdXN0ZWRQYXBlclJlY3Q8L2tleT4KCQkJCQk8YXJyYXk+CgkJCQkJ
+CTxyZWFsPi0xODwvcmVhbD4KCQkJCQkJPHJlYWw+LTE4PC9yZWFsPgoJCQkJCQk8cmVhbD43NzQ8
+L3JlYWw+CgkJCQkJCTxyZWFsPjU5NDwvcmVhbD4KCQkJCQk8L2FycmF5PgoJCQkJCTxrZXk+Y29t
+LmFwcGxlLnByaW50LnRpY2tldC5jbGllbnQ8L2tleT4KCQkJCQk8c3RyaW5nPmNvbS5hcHBsZS5w
+cmludGluZ21hbmFnZXI8L3N0cmluZz4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQu
+bW9kRGF0ZTwva2V5PgoJCQkJCTxkYXRlPjIwMDQtMDktMTZUMTc6MTg6MDlaPC9kYXRlPgoJCQkJ
+CTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdl
+cj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNv
+bS5hcHBsZS5wcmludC5QYXBlckluZm8ucHBkLlBNUGFwZXJOYW1lPC9rZXk+CgkJPGRpY3Q+CgkJ
+CTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJCTxzdHJpbmc+Y29t
+LmFwcGxlLnByaW50LnBtLlBvc3RTY3JpcHQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJp
+bnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5
+PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8ucHBkLlBNUGFwZXJOYW1lPC9rZXk+CgkJCQkJPHN0
+cmluZz5MZXR0ZXI8L3N0cmluZz4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY2xp
+ZW50PC9rZXk+CgkJCQkJPHN0cmluZz5jb20uYXBwbGUucHJpbnQucG0uUG9zdFNjcmlwdDwvc3Ry
+aW5nPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5tb2REYXRlPC9rZXk+CgkJCQkJ
+PGRhdGU+MjAwMC0wNy0yOFQyMjo1NzowNFo8L2RhdGU+CgkJCQkJPGtleT5jb20uYXBwbGUucHJp
+bnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjE8L2ludGVnZXI+CgkJCQk8
+L2RpY3Q+CgkJCTwvYXJyYXk+CgkJPC9kaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tl
+dC5BUElWZXJzaW9uPC9rZXk+CgkJPHN0cmluZz4wMC4yMDwvc3RyaW5nPgoJCTxrZXk+Y29tLmFw
+cGxlLnByaW50LnRpY2tldC5wcml2YXRlTG9jazwva2V5PgoJCTxmYWxzZS8+CgkJPGtleT5jb20u
+YXBwbGUucHJpbnQudGlja2V0LnR5cGU8L2tleT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5wcmludC5Q
+YXBlckluZm9UaWNrZXQ8L3N0cmluZz4KCTwvZGljdD4KCTxrZXk+Y29tLmFwcGxlLnByaW50LnRp
+Y2tldC5BUElWZXJzaW9uPC9rZXk+Cgk8c3RyaW5nPjAwLjIwPC9zdHJpbmc+Cgk8a2V5PmNvbS5h
+cHBsZS5wcmludC50aWNrZXQucHJpdmF0ZUxvY2s8L2tleT4KCTxmYWxzZS8+Cgk8a2V5PmNvbS5h
+cHBsZS5wcmludC50aWNrZXQudHlwZTwva2V5PgoJPHN0cmluZz5jb20uYXBwbGUucHJpbnQuUGFn
+ZUZvcm1hdFRpY2tldDwvc3RyaW5nPgo8L2RpY3Q+CjwvcGxpc3Q+CgA4QklNA+kAAAAAAHgAAwAA
+AEgASAAAAAAC3gJA/+7/7gMGAlIDZwUoA/wAAgAAAEgASAAAAAAC2AIoAAEAAABkAAAAAQADAwMA
+AAABf/8AAQABAAAAAAAAAAAAAAAAaAgAGQGQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAA4QklNA+0AAAAAABABLAAAAAEAAQEsAAAAAQABOEJJTQQmAAAAAAAOAAAAAAAAAAAAAD+AAAA4
+QklNBA0AAAAAAAQAAAB4OEJJTQQZAAAAAAAEAAAAHjhCSU0D8wAAAAAACQAAAAAAAAAAAQA4QklN
+BAoAAAAAAAEAADhCSU0nEAAAAAAACgABAAAAAAAAAAE4QklNA/UAAAAAAEgAL2ZmAAEAbGZmAAYA
+AAAAAAEAL2ZmAAEAoZmaAAYAAAAAAAEAMgAAAAEAWgAAAAYAAAAAAAEANQAAAAEALQAAAAYAAAAA
+AAE4QklNA/gAAAAAAHAAAP////////////////////////////8D6AAAAAD/////////////////
+////////////A+gAAAAA/////////////////////////////wPoAAAAAP//////////////////
+//////////8D6AAAOEJJTQQAAAAAAAACAAA4QklNBAIAAAAAAAQAAAAAOEJJTQQIAAAAAAAQAAAA
+AQAAAkAAAAJAAAAAADhCSU0EHgAAAAAABAAAAAA4QklNBBoAAAAAAz8AAAAGAAAAAAAAAAAAAABJ
+AAAAvgAAAAUAeABmAGkAcgBlAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAC+AAAA
+SQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABAAAAABAAAAAAAAbnVsbAAAAAIA
+AAAGYm91bmRzT2JqYwAAAAEAAAAAAABSY3QxAAAABAAAAABUb3AgbG9uZwAAAAAAAAAATGVmdGxv
+bmcAAAAAAAAAAEJ0b21sb25nAAAASQAAAABSZ2h0bG9uZwAAAL4AAAAGc2xpY2VzVmxMcwAAAAFP
+YmpjAAAAAQAAAAAABXNsaWNlAAAAEgAAAAdzbGljZUlEbG9uZwAAAAAAAAAHZ3JvdXBJRGxvbmcA
+AAAAAAAABm9yaWdpbmVudW0AAAAMRVNsaWNlT3JpZ2luAAAADWF1dG9HZW5lcmF0ZWQAAAAAVHlw
+ZWVudW0AAAAKRVNsaWNlVHlwZQAAAABJbWcgAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAA
+AAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAAEkAAAAAUmdo
+dGxvbmcAAAC+AAAAA3VybFRFWFQAAAABAAAAAAAAbnVsbFRFWFQAAAABAAAAAAAATXNnZVRFWFQA
+AAABAAAAAAAGYWx0VGFnVEVYVAAAAAEAAAAAAA5jZWxsVGV4dElzSFRNTGJvb2wBAAAACGNlbGxU
+ZXh0VEVYVAAAAAEAAAAAAAlob3J6QWxpZ25lbnVtAAAAD0VTbGljZUhvcnpBbGlnbgAAAAdkZWZh
+dWx0AAAACXZlcnRBbGlnbmVudW0AAAAPRVNsaWNlVmVydEFsaWduAAAAB2RlZmF1bHQAAAALYmdD
+b2xvclR5cGVlbnVtAAAAEUVTbGljZUJHQ29sb3JUeXBlAAAAAE5vbmUAAAAJdG9wT3V0c2V0bG9u
+ZwAAAAAAAAAKbGVmdE91dHNldGxvbmcAAAAAAAAADGJvdHRvbU91dHNldGxvbmcAAAAAAAAAC3Jp
+Z2h0T3V0c2V0bG9uZwAAAAAAOEJJTQQRAAAAAAABAQA4QklNBBQAAAAAAAQAAAAEOEJJTQQMAAAA
+AAxLAAAAAQAAAIAAAAAxAAABgAAASYAAAAwvABgAAf/Y/+AAEEpGSUYAAQIBAEgASAAA/+0ADEFk
+b2JlX0NNAAL/7gAOQWRvYmUAZIAAAAAB/9sAhAAMCAgICQgMCQkMEQsKCxEVDwwMDxUYExMVExMY
+EQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQ0LCw0ODRAODhAUDg4OFBQODg4O
+FBEMDAwMDBERDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAAxAIADASIA
+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
+FWPJPHIThIxkOocM/VWjI6a3D6hlX5dzXmxuWXRYwnYDXQbPW20/omfo7XX/AKT9N/P+nYj4PS+q
+4t9Zt6tblYtYj0LKqtzht2M9TJa31nbfp7/pvWqkmjDAEEAgitQZa8P737/+GvPM5ZAxkRISs1KM
+JcPH83t3H9X/ANTf/9L1VJfKqSSn6qSXyqkkp+qkl8qpJKfqpJfKqSSn6qSXyqkkp+qkl8qpJKfq
+pJfKqSSn6qSXyqkkp//ZADhCSU0EIQAAAAAAVQAAAAEBAAAADwBBAGQAbwBiAGUAIABQAGgAbwB0
+AG8AcwBoAG8AcAAAABMAQQBkAG8AYgBlACAAUABoAG8AdABvAHMAaABvAHAAIAA3AC4AMAAAAAEA
+OEJJTQQGAAAAAAAHAAUAAAABAQD/4RJIaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hw
+YWNrZXQgYmVnaW49J++7vycgaWQ9J1c1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCc/Pgo8P2Fkb2Jl
+LXhhcC1maWx0ZXJzIGVzYz0iQ1IiPz4KPHg6eGFwbWV0YSB4bWxuczp4PSdhZG9iZTpuczptZXRh
+LycgeDp4YXB0az0nWE1QIHRvb2xraXQgMi44LjItMzMsIGZyYW1ld29yayAxLjUnPgo8cmRmOlJE
+RiB4bWxuczpyZGY9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMn
+IHhtbG5zOmlYPSdodHRwOi8vbnMuYWRvYmUuY29tL2lYLzEuMC8nPgoKIDxyZGY6RGVzY3JpcHRp
+b24gYWJvdXQ9J3V1aWQ6OTg0ZjA4YjQtMDk2Ny0xMWQ5LWIyNTItYmUzNTU5MTY0ZGVjJwogIHht
+bG5zOnhhcE1NPSdodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vJz4KICA8eGFwTU06RG9j
+dW1lbnRJRD5hZG9iZTpkb2NpZDpwaG90b3Nob3A6OTg0ZjA4YjItMDk2Ny0xMWQ5LWIyNTItYmUz
+NTU5MTY0ZGVjPC94YXBNTTpEb2N1bWVudElEPgogPC9yZGY6RGVzY3JpcHRpb24+Cgo8L3JkZjpS
+REY+CjwveDp4YXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICAgICAKPD94cGFja2V0IGVuZD0ndyc/Pv/uAA5BZG9iZQBkQAAAAAH/2wCEAAQDAwMDAwQD
+AwQGBAMEBgcFBAQFBwgGBgcGBggKCAkJCQkICgoMDAwMDAoMDAwMDAwMDAwMDAwMDAwMDAwMDAwB
+BAUFCAcIDwoKDxQODg4UFA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwM
+DAwMDAwMDP/AABEIAEkAvgMBEQACEQEDEQH/3QAEABj/xAGiAAAABwEBAQEBAAAAAAAAAAAEBQMC
+BgEABwgJCgsBAAICAwEBAQEBAAAAAAAAAAEAAgMEBQYHCAkKCxAAAgEDAwIEAgYHAwQCBgJzAQID
+EQQABSESMUFRBhNhInGBFDKRoQcVsUIjwVLR4TMWYvAkcoLxJUM0U5KismNzwjVEJ5OjszYXVGR0
+w9LiCCaDCQoYGYSURUaktFbTVSga8uPzxNTk9GV1hZWltcXV5fVmdoaWprbG1ub2N0dXZ3eHl6e3
+x9fn9zhIWGh4iJiouMjY6PgpOUlZaXmJmam5ydnp+So6SlpqeoqaqrrK2ur6EQACAgECAwUFBAUG
+BAgDA20BAAIRAwQhEjFBBVETYSIGcYGRMqGx8BTB0eEjQhVSYnLxMyQ0Q4IWklMlomOywgdz0jXi
+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
+FX//2Q==
+------=_Part_4_701508.1145579811786--

Propchange: incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/mimedata
------------------------------------------------------------------------------
    svn:executable = *

Added: incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/mimedata2
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/mimedata2?view=auto&rev=481054
==============================================================================
--- incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/mimedata2 (added)
+++ incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/mimedata2 Thu Nov 30 12:08:23 2006
@@ -0,0 +1,21 @@
+
+------=_Part_0_1696092.1145592699395
+Content-Type: application/xop+xml; charset=UTF-8; type="text/xml; charset=UTF-8"
+Content-Transfer-Encoding: binary
+Content-ID: <so...@xfire.codehaus.org>
+
+<?xml version='1.0' encoding='UTF-8'?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Body><hi /></soap:Body></soap:Envelope>
+------=_Part_0_1696092.1145592699395
+Content-Type: application/octet-stream
+Content-Transfer-Encoding: 7bit
+Content-ID: <test.jpg>
+
+<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
+ <env:Header/>
+ <env:Body>
+  <m:echo xmlns:m="urn:Echo">
+   <m:in0>Yo Yo</m:in0>
+  </m:echo>
+ </env:Body>
+</env:Envelope>
+------=_Part_0_1696092.1145592699395--
\ No newline at end of file

Propchange: incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/mimedata2
------------------------------------------------------------------------------
    svn:executable = *

Added: incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/my.wav
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/my.wav?view=auto&rev=481054
==============================================================================
Binary file - no diff available.

Propchange: incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/my.wav
------------------------------------------------------------------------------
    svn:executable = *

Propchange: incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/attachment/my.wav
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream