From dev-return-11900-apmail-openjpa-dev-archive=openjpa.apache.org@openjpa.apache.org Thu May 14 22:03:52 2009 Return-Path: Delivered-To: apmail-openjpa-dev-archive@www.apache.org Received: (qmail 74350 invoked from network); 14 May 2009 22:03:52 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 14 May 2009 22:03:52 -0000 Received: (qmail 6548 invoked by uid 500); 14 May 2009 22:03:51 -0000 Delivered-To: apmail-openjpa-dev-archive@openjpa.apache.org Received: (qmail 6499 invoked by uid 500); 14 May 2009 22:03:51 -0000 Mailing-List: contact dev-help@openjpa.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@openjpa.apache.org Delivered-To: mailing list dev@openjpa.apache.org Received: (qmail 6489 invoked by uid 99); 14 May 2009 22:03:51 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 14 May 2009 22:03:51 +0000 X-ASF-Spam-Status: No, hits=-4.0 required=10.0 tests=RCVD_IN_DNSWL_MED,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: local policy) Received: from [192.18.43.132] (HELO sca-es-mail-1.sun.com) (192.18.43.132) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 14 May 2009 22:03:39 +0000 Received: from fe-sfbay-09.sun.com ([192.18.43.129]) by sca-es-mail-1.sun.com (8.13.7+Sun/8.12.9) with ESMTP id n4EM3Igt004011 for ; Thu, 14 May 2009 15:03:18 -0700 (PDT) MIME-version: 1.0 Received: from conversion-daemon.fe-sfbay-09.sun.com by fe-sfbay-09.sun.com (Sun Java(tm) System Messaging Server 7u2-7.02 64bit (built Apr 16 2009)) id <0KJN00J00M476H00@fe-sfbay-09.sun.com> for dev@openjpa.apache.org; Thu, 14 May 2009 15:03:18 -0700 (PDT) Received: from d-mpk11-30-210.SFBay.Sun.COM ([unknown] [129.146.30.210]) by fe-sfbay-09.sun.com (Sun Java(tm) System Messaging Server 7u2-7.02 64bit (built Apr 16 2009)) with ESMTPSA id <0KJN00JSEMLC7E20@fe-sfbay-09.sun.com> for dev@openjpa.apache.org; Thu, 14 May 2009 15:03:12 -0700 (PDT) Date: Thu, 14 May 2009 15:03:12 -0700 From: Craig L Russell Subject: Re: svn commit: r774580 - in /openjpa/trunk/openjpa-jdbc/src: main/java/org/apache/openjpa/jdbc/meta/ main/java/org/apache/openjpa/jdbc/schema/ test/java/org/apache/openjpa/jdbc/meta/ In-reply-to: <72c1350f0905141435r49a96ed0w8382738e8bfc3f2@mail.gmail.com> Sender: Craig.Russell@Sun.COM To: dev@openjpa.apache.org Message-id: <93712F07-5902-4D2F-B505-D538E44BAB29@SUN.com> X-Mailer: Apple Mail (2.935.3) Content-type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha1; boundary=Apple-Mail-25--109096116 References: <6c4d6799-c28d-4860-b036-03520b11cec2@default> <7122C29E-0DE3-4CD3-A0DA-95911DEA8161@SUN.com> <4A0C7C23.9050209@apache.org> <4A0C829A.3060600@apache.org> <72c1350f0905141435r49a96ed0w8382738e8bfc3f2@mail.gmail.com> X-Virus-Checked: Checked by ClamAV on apache.org --Apple-Mail-25--109096116 Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Hi Mike, On May 14, 2009, at 2:35 PM, Michael Dick wrote: > Thanks for the clarifications Craig and Donald. > > I think we've corrected the commit message now and I did verify that > the > patch had granted the copyright so we should be okay. I saw your corrective action and appreciate it. > > > How far do we want to go regarding @author tags. Should we go ahead > and > remove them from already committed code or just make sure that we > don't add > any more? There are too many in the code to remove IMHO. We should not accept any more. Craig > > > -mike > > On Thu, May 14, 2009 at 3:44 PM, David Ezzio > wrote: > >> Hi Craig, >> >> No questions. We'll be in compliance for this contribution. Give >> us a day >> or two. >> >> Thanks, >> >> David >> >> >> Donald Woods wrote: >> >>> For #1 - Patch contributions via JIRA do not require having an >>> ICLA on >>> file, as long as the author created and submitted the patch with >>> the "Grant >>> license to ASF for inclusion in ASF works" selected when attaching >>> the >>> patch. >>> >>> >>> >>> -Donald >>> >>> >>> Craig L Russell wrote: >>> >>>> We have to be very careful about this. Apache needs to track the >>>> provenance of every contribution. Patches should only be uploaded >>>> to JIRA >>>> issues by the author. >>>> >>>> 1. It is against the rules to commit contributions without the >>>> author of >>>> the contribution signing an ICLA. >>>> >>>> 2. It is against the rules to commit contributions without >>>> acknowledging >>>> the author in the commit message (if the committer is not the >>>> author). >>>> >>>> 3. We don't want @author tags. These tags don't foster community. >>>> If tags >>>> exist in contributions, they should not be committed until the >>>> tags are >>>> removed. >>>> >>>> If there are any questions about the above, please raise them now. >>>> >>>> Craig >>>> >>>> On May 14, 2009, at 8:34 AM, Ravi Palacherla wrote: >>>> >>>> Hi Mike, >>>>> >>>>> Hiroki Tateno is the author of this test class. >>>>> >>>>> Regarding CLA on file with Apache, I am not sure about it and >>>>> will check >>>>> with him and update accordingly. >>>>> >>>>> Regards, >>>>> Ravi. >>>>> >>>>> -----Original Message----- >>>>> From: Michael Dick [mailto:michael.d.dick@gmail.com] >>>>> Sent: Thursday, May 14, 2009 8:54 AM >>>>> To: dev@openjpa.apache.org; Ravi Palacherla >>>>> Subject: Re: svn commit: r774580 - in /openjpa/trunk/openjpa- >>>>> jdbc/src: >>>>> main/java/org/apache/openjpa/jdbc/meta/ >>>>> main/java/org/apache/openjpa/jdbc/schema/ >>>>> test/java/org/apache/openjpa/jdbc/meta/ >>>>> >>>>> Hi David and Ravi >>>>> >>>>> The patch was contributed by Ravi, but the @author tag lists >>>>> Hiroki >>>>> Tateno. >>>>> >>>>> I'm not an expert on proper attribution, Craig can correct me >>>>> where I go >>>>> wrong :-). Here's my understanding. >>>>> >>>>> If Hiroki wrote the code we'll have to add his name to the commit >>>>> message, >>>>> if not we'll remote the @author tag. >>>>> >>>>> We may want to find out whether Hiroki has a CLA on file with >>>>> Apache for >>>>> future patches (same would apply for anyone in an @author tag). >>>>> It isn't >>>>> a >>>>> requirement (AFAIK) but it's always nice to know. >>>>> >>>>> -mike >>>>> >>>>> On Wed, May 13, 2009 at 5:54 PM, wrote: >>>>> >>>>> Author: dezzio >>>>>> Date: Wed May 13 22:54:32 2009 >>>>>> New Revision: 774580 >>>>>> >>>>>> URL: http://svn.apache.org/viewvc?rev=774580&view=rev >>>>>> Log: >>>>>> OpenJPA-1051: Fixed MappingDefaultsImpl to avoid column name >>>>>> duplications >>>>>> when long column names are supplied for a database that accepts >>>>>> only >>>>>> shorter >>>>>> names. Changes submitted for Ravi Palacherla. >>>>>> >>>>>> Added: >>>>>> openjpa/trunk/openjpa-jdbc/src/test/java/org/apache/openjpa/ >>>>>> jdbc/meta/ >>>>>> >>>>>> openjpa/trunk/openjpa-jdbc/src/test/java/org/apache/openjpa/ >>>>>> jdbc/meta/TestMappingDefaultsImpl.java >>>>>> >>>>>> (with props) >>>>>> Modified: >>>>>> >>>>>> openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/ >>>>>> jdbc/meta/MappingDefaultsImpl.java >>>>>> >>>>>> >>>>>> openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/ >>>>>> jdbc/schema/NameSet.java >>>>>> >>>>>> >>>>>> openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/ >>>>>> jdbc/schema/Table.java >>>>>> >>>>>> >>>>>> Modified: >>>>>> openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/ >>>>>> jdbc/meta/MappingDefaultsImpl.java >>>>>> >>>>>> URL: >>>>>> >>>>>> http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingDefaultsImpl.java?rev=774580&r1=774579&r2=774580&view=diff >>>>>> >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> ================================================================= >>>>>> >>>>>> --- >>>>>> openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/ >>>>>> jdbc/meta/MappingDefaultsImpl.java >>>>>> >>>>>> (original) >>>>>> +++ >>>>>> openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/ >>>>>> jdbc/meta/MappingDefaultsImpl.java >>>>>> >>>>>> Wed May 13 22:54:32 2009 >>>>>> @@ -539,7 +539,9 @@ >>>>>> else if (_dsIdName != null) >>>>>> cols[i].setName(_dsIdName + i); >>>>>> correctName(table, cols[i]); >>>>>> + table.addSubColumn(cols[i].getName()); >>>>>> } >>>>>> + table.resetSubColumns(); >>>>>> } >>>>>> >>>>>> /** >>>>>> @@ -582,7 +584,9 @@ >>>>>> } else if (_versName != null) >>>>>> cols[i].setName(_versName + i); >>>>>> correctName(table, cols[i]); >>>>>> + table.addSubColumn(cols[i].getName()); >>>>>> } >>>>>> + table.resetSubColumns(); >>>>>> } >>>>>> >>>>>> public void populateColumns(Discriminator disc, Table table, >>>>>> @@ -593,7 +597,9 @@ >>>>>> else if (_discName != null) >>>>>> cols[i].setName(_discName + i); >>>>>> correctName(table, cols[i]); >>>>>> + table.addSubColumn(cols[i].getName()); >>>>>> } >>>>>> + table.resetSubColumns(); >>>>>> } >>>>>> >>>>>> public void populateJoinColumn(ClassMapping cm, Table local, >>>>>> Table >>>>>> foreign, >>>>>> @@ -618,8 +624,11 @@ >>>>>> >>>>>> public void populateColumns(ValueMapping vm, String name, Table >>>>>> table, >>>>>> Column[] cols) { >>>>>> - for (int i = 0; i < cols.length; i++) >>>>>> + for (int i = 0; i < cols.length; i++) { >>>>>> correctName(table, cols[i]); >>>>>> + table.addSubColumn(cols[i].getName()); >>>>>> + } >>>>>> + table.resetSubColumns(); >>>>>> } >>>>>> >>>>>> public boolean populateOrderColumns(FieldMapping fm, Table >>>>>> table, >>>>>> @@ -630,7 +639,9 @@ >>>>>> else if (_orderName != null) >>>>>> cols[i].setName(_orderName + i); >>>>>> correctName(table, cols[i]); >>>>>> + table.addSubColumn(cols[i].getName()); >>>>>> } >>>>>> + table.resetSubColumns(); >>>>>> return _orderLists && (JavaTypes.ARRAY == fm.getTypeCode() >>>>>> || List.class.isAssignableFrom(fm.getType())); >>>>>> } >>>>>> @@ -643,7 +654,9 @@ >>>>>> else if (_nullIndName != null) >>>>>> cols[i].setName(_nullIndName + i); >>>>>> correctName(table, cols[i]); >>>>>> + table.addSubColumn(cols[i].getName()); >>>>>> } >>>>>> + table.resetSubColumns(); >>>>>> return _addNullInd; >>>>>> } >>>>>> >>>>>> >>>>>> Modified: >>>>>> openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/ >>>>>> jdbc/schema/NameSet.java >>>>>> >>>>>> URL: >>>>>> >>>>>> http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/NameSet.java?rev=774580&r1=774579&r2=774580&view=diff >>>>>> >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> ================================================================= >>>>>> >>>>>> --- >>>>>> openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/ >>>>>> jdbc/schema/NameSet.java >>>>>> >>>>>> (original) >>>>>> +++ >>>>>> openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/ >>>>>> jdbc/schema/NameSet.java >>>>>> >>>>>> Wed May 13 22:54:32 2009 >>>>>> @@ -39,13 +39,17 @@ >>>>>> >>>>>> private Set _names = null; >>>>>> >>>>>> + // an additional names Set for checking name duplication >>>>>> + private Set _subNames = null; >>>>>> + >>>>>> /** >>>>>> * Return true if the given name is in use already. >>>>>> */ >>>>>> public boolean isNameTaken(String name) { >>>>>> if (name == null) >>>>>> return true; >>>>>> - return _names != null && >>>>>> _names.contains(name.toUpperCase()); >>>>>> + return (_names != null && >>>>>> _names.contains(name.toUpperCase())) >>>>>> || >>>>>> + (_subNames != null && >>>>>> _subNames.contains(name.toUpperCase())); >>>>>> } >>>>>> >>>>>> /** >>>>>> @@ -77,4 +81,20 @@ >>>>>> if (name != null && _names != null) >>>>>> _names.remove(name.toUpperCase()); >>>>>> } >>>>>> + >>>>>> + /** >>>>>> + * Attempt to add the given name to the set. >>>>>> + * >>>>>> + * @param name the name to add >>>>>> + */ >>>>>> + protected void addSubName(String name) { >>>>>> + if (_subNames == null) { >>>>>> + _subNames = new HashSet(); >>>>>> + } >>>>>> + _subNames.add(name.toUpperCase()); >>>>>> + } >>>>>> + >>>>>> + protected void resetSubNames() { >>>>>> + _subNames = null; >>>>>> + } >>>>>> } >>>>>> >>>>>> Modified: >>>>>> openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/ >>>>>> jdbc/schema/Table.java >>>>>> >>>>>> URL: >>>>>> >>>>>> http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java?rev=774580&r1=774579&r2=774580&view=diff >>>>>> >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> ================================================================= >>>>>> >>>>>> --- >>>>>> openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/ >>>>>> jdbc/schema/Table.java >>>>>> >>>>>> (original) >>>>>> +++ >>>>>> openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/ >>>>>> jdbc/schema/Table.java >>>>>> >>>>>> Wed May 13 22:54:32 2009 >>>>>> @@ -255,8 +255,8 @@ >>>>>> } >>>>>> >>>>>> public String[] getColumnNames() { >>>>>> - return _colMap == null ? new String[0] : >>>>>> - (String[])_colMap.keySet().toArray(new >>>>>> String[_colMap.size()]); >>>>>> + return _colMap == null ? new String[0] : >>>>>> + (String[])_colMap.keySet().toArray(new >>>>>> String[_colMap.size()]); >>>>>> } >>>>>> >>>>>> /** >>>>>> @@ -275,8 +275,8 @@ >>>>>> * for dynamic table implementation. >>>>>> */ >>>>>> public boolean containsColumn(String name) { >>>>>> - return name != null && _colMap != null >>>>>> - && _colMap.containsKey(name.toUpperCase()); >>>>>> + return name != null && _colMap != null >>>>>> + && _colMap.containsKey(name.toUpperCase()); >>>>>> } >>>>>> >>>>>> /** >>>>>> @@ -756,4 +756,15 @@ >>>>>> public void setColNumber(int colNum) { >>>>>> _colNum = colNum; >>>>>> } >>>>>> + >>>>>> + /** >>>>>> + * Add a column to the subNames set to avoid naming conflict. >>>>>> + */ >>>>>> + public void addSubColumn(String name) { >>>>>> + addSubName(name); >>>>>> + } >>>>>> + >>>>>> + public void resetSubColumns() { >>>>>> + resetSubNames(); >>>>>> + } >>>>>> } >>>>>> >>>>>> Added: >>>>>> openjpa/trunk/openjpa-jdbc/src/test/java/org/apache/openjpa/ >>>>>> jdbc/meta/TestMappingDefaultsImpl.java >>>>>> >>>>>> URL: >>>>>> >>>>>> http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/test/java/org/apache/openjpa/jdbc/meta/TestMappingDefaultsImpl.java?rev=774580&view=auto >>>>>> >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> = >>>>>> ================================================================= >>>>>> >>>>>> --- >>>>>> openjpa/trunk/openjpa-jdbc/src/test/java/org/apache/openjpa/ >>>>>> jdbc/meta/TestMappingDefaultsImpl.java >>>>>> >>>>>> (added) >>>>>> +++ >>>>>> openjpa/trunk/openjpa-jdbc/src/test/java/org/apache/openjpa/ >>>>>> jdbc/meta/TestMappingDefaultsImpl.java >>>>>> >>>>>> Wed May 13 22:54:32 2009 >>>>>> @@ -0,0 +1,63 @@ >>>>>> +/* >>>>>> + * 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.openjpa.jdbc.meta; >>>>>> + >>>>>> +import org.apache.openjpa.jdbc.schema.Table; >>>>>> +import org.apache.openjpa.jdbc.schema.Column; >>>>>> +import org.apache.openjpa.jdbc.conf.JDBCConfiguration; >>>>>> +import org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl; >>>>>> + >>>>>> +import junit.framework.TestCase; >>>>>> + >>>>>> +public class TestMappingDefaultsImpl extends TestCase { >>>>>> + >>>>>> + public void setUp() { >>>>>> + } >>>>>> + >>>>>> + /** >>>>>> + * For databases that accept only short column names, test >>>>>> avoidance >>>>>> of >>>>>> + * duplicate column names when populating the table with >>>>>> long >>>>>> column >>>>>> names. >>>>>> + * >>>>>> + * @author Hiroki Tateno >>>>>> + */ >>>>>> + public void testPopulateWithLongColumnNames() { >>>>>> + MappingDefaultsImpl mapping = new MappingDefaultsImpl(); >>>>>> + JDBCConfiguration conf = new >>>>>> JDBCConfigurationImpl(false, >>>>>> false); >>>>>> + conf.setDBDictionary("oracle"); >>>>>> + mapping.setConfiguration(conf); >>>>>> + Table table = new Table("testtable", null); >>>>>> + Column[] cols = new Column[3]; >>>>>> + cols[0] = new >>>>>> + >>>>>> Column("longnamelongnamelongnamelongnamelongnamelongname1", >>>>>> null); >>>>>> + cols[1] = new >>>>>> + >>>>>> Column("longnamelongnamelongnamelongnamelongnamelongname2", >>>>>> null); >>>>>> + cols[2] = new >>>>>> + >>>>>> Column("longnamelongnamelongnamelongnamelongnamelongname3", >>>>>> null); >>>>>> + MappingRepository mr = new MappingRepository(); >>>>>> + mr.setConfiguration(conf); >>>>>> + Version version = new Version(new >>>>>> ClassMapping(String.class,mr)); >>>>>> + mapping.populateColumns(version, table, cols); >>>>>> + assertFalse("column names are conflicted : " + >>>>>> cols[0].getName(), >>>>>> + cols[0].getName().equals(cols[1].getName())); >>>>>> + assertFalse("column names are conflicted : " + >>>>>> cols[0].getName(), >>>>>> + cols[0].getName().equals(cols[2].getName())); >>>>>> + assertFalse("column names are conflicted : " + >>>>>> cols[1].getName(), >>>>>> + cols[1].getName().equals(cols[2].getName())); >>>>>> + } >>>>>> +} >>>>>> >>>>>> Propchange: >>>>>> openjpa/trunk/openjpa-jdbc/src/test/java/org/apache/openjpa/ >>>>>> jdbc/meta/TestMappingDefaultsImpl.java >>>>>> >>>>>> >>>>>> ------------------------------------------------------------------------------ >>>>>> >>>>>> svn:eol-style = native >>>>>> >>>>>> >>>>>> >>>>>> >>>> Craig L Russell >>>> Architect, Sun Java Enterprise System http://db.apache.org/jdo >>>> 408 276-5638 mailto:Craig.Russell@sun.com >>>> P.S. A good JDO? O, Gasp! >>>> >>>> >>> Craig L Russell Architect, Sun Java Enterprise System http://db.apache.org/jdo 408 276-5638 mailto:Craig.Russell@sun.com P.S. A good JDO? O, Gasp! --Apple-Mail-25--109096116 Content-Disposition: attachment; filename=smime.p7s Content-Type: application/pkcs7-signature; name=smime.p7s Content-Transfer-Encoding: base64 MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIGUDCCAwkw ggJyoAMCAQICEDXZ+Ig/3d9DjJZ8u++ZnC0wDQYJKoZIhvcNAQEFBQAwYjELMAkGA1UEBhMCWkEx JTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQ ZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBMB4XDTA4MTIwOTE4MTYwMloXDTA5MTIwOTE4MTYw MlowbDEQMA4GA1UEBBMHUnVzc2VsbDEUMBIGA1UEKhMLQ3JhaWcgTGFpcmQxHDAaBgNVBAMTE0Ny YWlnIExhaXJkIFJ1c3NlbGwxJDAiBgkqhkiG9w0BCQEWFUNyYWlnLlJ1c3NlbGxAU3VuLkNPTTCC ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOe3oksetTgSiqqWllhIYBT0dWhR4CitzXDf +ETyrtEF2HWRRpfwixLpV1Az8wwFzNKfjvQn3tQh0A/VDDeepDEM9TKLP+D6qShLR/KTf5kCMyT4 mILJYIDo/JMmTIH5jceojvlTDFd0gd+XXNAGGz1Wu2XxfvFDE/lpFnQkKYE+VjjENONy4JlkJnOI rSfMlb+zHPAUmMTtmhxYIDLgov4Jv2Z5pUKZMpNcYr+7jJeUxkxKwWm4im56h7CGP0Yhkq2Je506 mqKCFImxofBjkHZISVS5m7WaGs4lViDtwLQEPtyUt7RcaoYWTvEQtvoy1TE2oZDUaAYFxVu0cHUW bU0CAwEAAaMyMDAwIAYDVR0RBBkwF4EVQ3JhaWcuUnVzc2VsbEBTdW4uQ09NMAwGA1UdEwEB/wQC MAAwDQYJKoZIhvcNAQEFBQADgYEAQaqAADs5GLyk9iO1xfmNFySpOXXofJPEbfbt77BK/WLhLOwS 69WIxSmGMpGGUlLd6FJ1xfLzsvP9/N5tmZQlpGcBoEwrn830JcbNyEG0ANcmdeAy2yBjNjWoIDhV QmQw8OgJDk0xi0Tv/UYm9uPxOhDJOA67a3v6FHvSAbLqBScwggM/MIICqKADAgECAgENMA0GCSqG SIb3DQEBBQUAMIHRMQswCQYDVQQGEwJaQTEVMBMGA1UECBMMV2VzdGVybiBDYXBlMRIwEAYDVQQH EwlDYXBlIFRvd24xGjAYBgNVBAoTEVRoYXd0ZSBDb25zdWx0aW5nMSgwJgYDVQQLEx9DZXJ0aWZp Y2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMSQwIgYDVQQDExtUaGF3dGUgUGVyc29uYWwgRnJlZW1h aWwgQ0ExKzApBgkqhkiG9w0BCQEWHHBlcnNvbmFsLWZyZWVtYWlsQHRoYXd0ZS5jb20wHhcNMDMw NzE3MDAwMDAwWhcNMTMwNzE2MjM1OTU5WjBiMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3Rl IENvbnN1bHRpbmcgKFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNvbmFsIEZyZWVtYWls IElzc3VpbmcgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMSmPFVzVftOucqZWh5owHUE cJ3f6f+jHuy9zfVb8hp2vX8MOmHyv1HOAdTlUAow1wJjWiyJFXCO3cnwK4Vaqj9xVsuvPAsH5/Ef kTYkKhPPK9Xzgnc9A74r/rsYPge/QIACZNenprufZdHFKlSFD0gEf6e20TxhBEAeZBlyYLf7AgMB AAGjgZQwgZEwEgYDVR0TAQH/BAgwBgEB/wIBADBDBgNVHR8EPDA6MDigNqA0hjJodHRwOi8vY3Js LnRoYXd0ZS5jb20vVGhhd3RlUGVyc29uYWxGcmVlbWFpbENBLmNybDALBgNVHQ8EBAMCAQYwKQYD VR0RBCIwIKQeMBwxGjAYBgNVBAMTEVByaXZhdGVMYWJlbDItMTM4MA0GCSqGSIb3DQEBBQUAA4GB AEiM0VCD6gsuzA2jZqxnD3+vrL7CF6FDlpSdf0whuPg2H6otnzYvwPQcUCCTcDz9reFhYsPZOhl+ hLGZGwDFGguCdJ4lUJRix9sncVcljd2pnDmOjCBPZV+V2vf3h9bGCE6u9uo05RAaWzVNd+NWIXiC 3CEZNd4ksdMdRv9dX2VPMYIDEDCCAwwCAQEwdjBiMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhh d3RlIENvbnN1bHRpbmcgKFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNvbmFsIEZyZWVt YWlsIElzc3VpbmcgQ0ECEDXZ+Ig/3d9DjJZ8u++ZnC0wCQYFKw4DAhoFAKCCAW8wGAYJKoZIhvcN AQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMDkwNTE0MjIwMzEyWjAjBgkqhkiG9w0B CQQxFgQUy9woUCRVCwme1D/NhFyPuVosyHowgYUGCSsGAQQBgjcQBDF4MHYwYjELMAkGA1UEBhMC WkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0 ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBAhA12fiIP93fQ4yWfLvvmZwtMIGHBgsqhkiG 9w0BCRACCzF4oHYwYjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQ dHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBAhA1 2fiIP93fQ4yWfLvvmZwtMA0GCSqGSIb3DQEBAQUABIIBAAAaDfU5VN5Crrhz5pA7jDL5wI2lpGWa eCEsLjHBny358uW+cr7QOCqdDKxvycirzCbnheTsV8y8MmWGFQhFH+4VCDVKEIz/VDvaaFSUYP0Q viYGNyPrmFK1eb/zqRM5frc3keXQ4G/WolawItQC7/EyCbfQgBp1km0FUafOZSgd6NlQJljHpEcE 748/7DFADYyaidImGCwb0OrusIyvTR2tKUc0vPjTmQlrx7qSe7OoNSRCIbisx+Ytg89GcY1HkdA7 qKuiw+QUDiej5gv3aT858UW/LU0rYW7RYyy030tWf9vzQ049S3ACPevSHapVduWc5RUh0HqZPgUZ 2znBVssAAAAAAAA= --Apple-Mail-25--109096116--