Return-Path: Delivered-To: apmail-cxf-users-archive@www.apache.org Received: (qmail 73219 invoked from network); 5 Feb 2010 15:38:18 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 5 Feb 2010 15:38:18 -0000 Received: (qmail 97748 invoked by uid 500); 5 Feb 2010 15:38:17 -0000 Delivered-To: apmail-cxf-users-archive@cxf.apache.org Received: (qmail 97662 invoked by uid 500); 5 Feb 2010 15:38:17 -0000 Mailing-List: contact users-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: users@cxf.apache.org Delivered-To: mailing list users@cxf.apache.org Received: (qmail 97652 invoked by uid 99); 5 Feb 2010 15:38:17 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 05 Feb 2010 15:38:17 +0000 X-ASF-Spam-Status: No, hits=1.5 required=10.0 tests=SPF_PASS,WEIRD_PORT X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: local policy) Received: from [141.83.68.100] (HELO itm01.itm.uni-luebeck.de) (141.83.68.100) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 05 Feb 2010 15:38:06 +0000 Received: from opium.itm.uni-luebeck.de (opium.itm.uni-luebeck.de [141.83.68.179]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by itm01.itm.uni-luebeck.de (Postfix) with ESMTPSA id F292883F8E2 for ; Fri, 5 Feb 2010 16:37:45 +0100 (CET) Subject: Re: DOSGi and JSON responses Mime-Version: 1.0 (Apple Message framework v1077) Content-Type: multipart/signed; boundary=Apple-Mail-30--685743144; protocol="application/pkcs7-signature"; micalg=sha1 From: Daniel Bimschas X-Priority: 3 In-Reply-To: <00e501caa676$639f81b0$1f02050a@emea.progress.com> Date: Fri, 5 Feb 2010 16:37:45 +0100 Message-Id: <8852E52A-D8FD-4058-9B08-A59F52AFEEEA@itm.uni-luebeck.de> References: <006701ca9f35$c0f364a0$1f02050a@emea.progress.com> <007201ca9f5f$e5f15b70$1f02050a@emea.progress.com> <42D8CE95-7748-4D83-BC6E-D166B6701AB3@itm.uni-luebeck.de> <03e401ca9f79$afb67530$1f02050a@emea.progress.com> <1CEE5A56-ECD4-480C-B04A-972736E760A1@itm.uni-luebeck.de> <004701caa65e$db620050$1f02050a@emea.progress.com> <0848732E-42AE-422E-BC46-158D7CF14849@itm.uni-luebeck.de> <008c01caa669$8078ae90$1f02050a@emea.progress.com> <9C0F29AC-F889-4706-B73A-0B30C46B1C34@itm.uni-luebeck.de> <00ce01caa673$7215ed90$1f02050a@emea.progress.com> <84AA7C3C-B9EA-4BCE-81FC-5950C9ADF592@itm.uni-luebeck.de> <00e501caa676$639f81b0$1f02050a@emea.progress.com> To: users@cxf.apache.org X-Mailer: Apple Mail (2.1077) X-Virus-Checked: Checked by ClamAV on apache.org --Apple-Mail-30--685743144 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=iso-8859-1 I'll open the issue! Am 05.02.2010 um 16:17 schrieb Sergey Beryozkin: > I see....Perhaps it could recognize that a conflict will occur and = print a more meaningful exception message advising users to use a = context property. If DOSGI will try to silently attach the endpoint to a = paxweb-enabled HttpService then it might become complicated (paxweb may = not be installed in case of multibindle distro) or a user might've used = the explicit address exactly because a standalone jetty were expected to = start, etc... >=20 > Can you please open a JIRA in a DOSGI subproject so that we can track = this issue and discuss how to fix it ? >=20 > thanks, Sergey >=20 > ----- Original Message ----- From: "Daniel Bimschas" = > To: > Sent: Friday, February 05, 2010 3:07 PM > Subject: Re: DOSGi and JSON responses >=20 >=20 > Oh, I know of the org.osgi.service.http.port value that lets Pax Web = start it's Jetty instance on 8080 per default. I tried to say that users = of DOSGI (especially newbies) would certainly expect that using = "org.apache.cxf.rs.address" would work nevertheless by simply using the = same port (i.e. if there's no web context conflict). >=20 > I guess that some DOSGI (or CXF) bundle which is responsible for = registering the JAX-RS servlet to some Jetty instance could surely check = if there's a servlet container instance running on the desired port and = reusing that instance... >=20 > Daniel >=20 > Am 05.02.2010 um 15:56 schrieb Sergey Beryozkin: >=20 >> Hi >>=20 >> This can be easily fixed AFAIK, I can't recall the name of the paxweb = property but you can ensure its Httpservice occupies some other = port...Just checked in ServiceMix, it is >>=20 >> org.osgi.service.http.port=3D8181, >>=20 >> add it to felix/etc/config.properties. etc >>=20 >> cheers, Sergey >>=20 >> Sergey, >>=20 >> I just stumbled over another issue that may annoy DOSGI users. If you = start the single bundle distribution (no idea if it's the same with = multi bundle) it starts a Jetty on localhost:8080 which should be usable = like a OSGi compendium HTTP service (that's what I understood at least). = Now if one uses the JAX-RS stuff and registers it's instance with the = "org.apache.cxf.rs.address" property he will have to choose a port other = than 8080 or he'll get the following exception: >>=20 >> WARNUNG: WARNING : Problem creating a remote endpoint for = de.uniluebeck.itm.soapraktikum.ws0910.persons.vz.rest.PersonResource = from CXF PublishHook, reason is null >> org.apache.cxf.service.factory.ServiceConstructionException >> at = org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.= java:114) >> at = org.apache.cxf.dosgi.dsw.handlers.JaxRSPojoConfigurationTypeHandler.create= Server(JaxRSPojoConfigurationTypeHandler.java:129) >> at = org.apache.cxf.dosgi.dsw.hooks.ServiceHookUtils.createServer(ServiceHookUt= ils.java:86) >> at = org.apache.cxf.dosgi.dsw.hooks.CxfPublishHook.createServer(CxfPublishHook.= java:106) >> at = org.apache.cxf.dosgi.dsw.hooks.CxfPublishHook.publishEndpoint(CxfPublishHo= ok.java:80) >> at org.apache.cxf.dosgi.dsw.Activator$1.run(Activator.java:164) >> at = java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.= java:886) >> at = java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java= :908) >> at java.lang.Thread.run(Thread.java:637) >> Caused by: org.apache.cxf.interceptor.Fault: Could not start Jetty = server: Address already in use >> at = org.apache.cxf.transport.http_jetty.JettyHTTPServerEngine.addServant(Jetty= HTTPServerEngine.java:339) >> at = org.apache.cxf.transport.http_jetty.JettyHTTPDestination.activate(JettyHTT= PDestination.java:157) >> at = org.apache.cxf.transport.AbstractObservable.setMessageObserver(AbstractObs= ervable.java:48) >> at = org.apache.cxf.binding.AbstractBindingFactory.addListener(AbstractBindingF= actory.java:164) >> at org.apache.cxf.endpoint.ServerImpl.start(ServerImpl.java:122) >> at = org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.= java:105) >> ... 8 more >> Caused by: java.net.BindException: Address already in use >> at sun.nio.ch.Net.bind(Native Method) >> at = sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:119) >> at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:59) >> at = org.mortbay.jetty.nio.SelectChannelConnector.open(SelectChannelConnector.j= ava:205) >> at = org.mortbay.jetty.nio.SelectChannelConnector.doStart(SelectChannelConnecto= r.java:304) >> at = org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) >> at org.mortbay.jetty.Server.doStart(Server.java:233) >> at = org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) >> at = org.apache.cxf.transport.http_jetty.JettyHTTPServerEngine.addServant(Jetty= HTTPServerEngine.java:306) >> ... 13 more >>=20 >> I guess it should be possible to reuse the running Jetty instance and = deploy the instance to the standard OSGi HTTP service. At least that's = what a user would expect. What do you think about it? >>=20 >> Kind regards, >> Daniel >>=20 >> Am 05.02.2010 um 14:45 schrieb Sergey Beryozkin: >>=20 >>> I'm wondering, is the problem here to do with the fact that DOSGI is = trying to use the BundelContext/Bundle of the application bundle to load = the providers ? It should work if the providers's code is indeed inside = a given app bundle but looks like it causes issues if the provider's = code is actually located elsewhere. >>>=20 >>> That said, if you own bundle imports the = org.apache.cxf.jaxrs.provider.* then surely the OSGI loader has to be = capable to find the classes available elsewhere in the container, = especially given that CXF minimal bundle is exporting = org.apache.cxf.jaxrs.provider ? >>>=20 >>> Can you please check that your own bundle Import-Packag(es) the = org.apache.cxf.jaxrs.provider.* ? >>>=20 >>> thanks, Sergey >>>=20 >>> ----- Original Message ----- From: "Daniel Bimschas" = >>> To: >>> Sent: Friday, February 05, 2010 1:34 PM >>> Subject: Re: DOSGi and JSON responses >>>=20 >>>=20 >>> Maybe the full debugging output including stack trace can help more: >>>=20 >>> INFO: Creating a = de.uniluebeck.itm.soapraktikum.ws0910.persons.vz.rest.PersonResource = endpoint from CXF PublishHook, address is = http://localhost:8081/verzeichnis/ >>> java.lang.ClassNotFoundException: = org.apache.cxf.jaxrs.provider.JAXBElementProvider >>> at = org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(Modu= leImpl.java:744) >>> at = org.apache.felix.framework.ModuleImpl.access$100(ModuleImpl.java:61) >>> at = org.apache.felix.framework.ModuleImpl$ModuleClassLoader.loadClass(ModuleIm= pl.java:1656) >>> at java.lang.ClassLoader.loadClass(ClassLoader.java:250) >>> at = org.apache.felix.framework.ModuleImpl.getClassByDelegation(ModuleImpl.java= :604) >>> at org.apache.felix.framework.Felix.loadBundleClass(Felix.java:1487) >>> at = org.apache.felix.framework.BundleImpl.loadClass(BundleImpl.java:897) >>> at = org.apache.cxf.dosgi.dsw.handlers.JaxRSUtils.loadProviders(JaxRSUtils.java= :112) >>> at = org.apache.cxf.dosgi.dsw.handlers.JaxRSUtils.getProviders(JaxRSUtils.java:= 67) >>> at = org.apache.cxf.dosgi.dsw.handlers.JaxRSPojoConfigurationTypeHandler.create= Server(JaxRSPojoConfigurationTypeHandler.java:119) >>> at = org.apache.cxf.dosgi.dsw.hooks.ServiceHookUtils.createServer(ServiceHookUt= ils.java:86) >>> at = org.apache.cxf.dosgi.dsw.hooks.CxfPublishHook.createServer(CxfPublishHook.= java:106) >>> at = org.apache.cxf.dosgi.dsw.hooks.CxfPublishHook.publishEndpoint(CxfPublishHo= ok.java:80) >>> at org.apache.cxf.dosgi.dsw.Activator$1.run(Activator.java:164) >>> at = java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.= java:886) >>> at = java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java= :908) >>> at java.lang.Thread.run(Thread.java:637) >>> 05.02.2010 14:32:16 org.apache.cxf.dosgi.dsw.handlers.JaxRSUtils = loadProviders >>> WARNUNG: JAXRS Provider = org.apache.cxf.jaxrs.provider.JAXBElementProvider can not be loaded or = created >>> java.lang.ClassNotFoundException: = org.apache.cxf.jaxrs.provider.JSONProvider >>> at = org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(Modu= leImpl.java:744) >>> at = org.apache.felix.framework.ModuleImpl.access$100(ModuleImpl.java:61) >>> at = org.apache.felix.framework.ModuleImpl$ModuleClassLoader.loadClass(ModuleIm= pl.java:1656) >>> at java.lang.ClassLoader.loadClass(ClassLoader.java:250) >>> at = org.apache.felix.framework.ModuleImpl.getClassByDelegation(ModuleImpl.java= :604) >>> at org.apache.felix.framework.Felix.loadBundleClass(Felix.java:1487) >>> at = org.apache.felix.framework.BundleImpl.loadClass(BundleImpl.java:897) >>> at = org.apache.cxf.dosgi.dsw.handlers.JaxRSUtils.loadProviders(JaxRSUtils.java= :112) >>> at = org.apache.cxf.dosgi.dsw.handlers.JaxRSUtils.getProviders(JaxRSUtils.java:= 67) >>> at = org.apache.cxf.dosgi.dsw.handlers.JaxRSPojoConfigurationTypeHandler.create= Server(JaxRSPojoConfigurationTypeHandler.java:119) >>> at = org.apache.cxf.dosgi.dsw.hooks.ServiceHookUtils.createServer(ServiceHookUt= ils.java:86) >>> at = org.apache.cxf.dosgi.dsw.hooks.CxfPublishHook.createServer(CxfPublishHook.= java:106) >>> at = org.apache.cxf.dosgi.dsw.hooks.CxfPublishHook.publishEndpoint(CxfPublishHo= ok.java:80) >>> at org.apache.cxf.dosgi.dsw.Activator$1.run(Activator.java:164) >>> at = java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.= java:886) >>> at = java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java= :908) >>> at java.lang.Thread.run(Thread.java:637) >>> 05.02.2010 14:32:16 org.apache.cxf.dosgi.dsw.handlers.JaxRSUtils = loadProviders >>>=20 >>>=20 >>> Am 05.02.2010 um 14:22 schrieb Daniel Bimschas: >>>=20 >>>> It's Felix over Pax Runner in my case. If I take the = "sun.*,com.sun.*,javax.xml.bind,javax.xml.bind.*" packages out of the = bootdelegation classpath the following errors will occur: >>>>=20 >>>> java.lang.ClassNotFoundException: = org.apache.cxf.jaxrs.provider.JAXBElementProvider >>>> java.lang.ClassNotFoundException: = org.apache.cxf.jaxrs.provider.JSONProvider >>>>=20 >>>> For me, currently that doesn't make sense since the DOSGI bundle is = fully resolved and all classes should be loadable. I'll further = investigate this... >>>>=20 >>>> Am 05.02.2010 um 13:29 schrieb Sergey Beryozkin: >>>>=20 >>>>>> S.B : Is it a single bundle distro ? Yes, it ships the stax api = bundle I think...Hmm...Will it work if you try the multibundle distro = and omit the stax-api bundle ? Or perhaps updating the Equinox config to = block the stax api from the system ? >>>>=20 >>>> --=20 >>>> M.Sc. Daniel Bimschas >>>> Institute of Telematics, University of L=FCbeck >>>> http://www.itm.uni-luebeck.de/users/bimschas >>>> Ratzeburger Allee 160, 23538 L=FCbeck, Germany >>>> Phone: +49 451 500 5389 >>>>=20 >>>=20 >>> --=20 >>> M.Sc. Daniel Bimschas >>> Institute of Telematics, University of L=FCbeck >>> http://www.itm.uni-luebeck.de/users/bimschas >>> Ratzeburger Allee 160, 23538 L=FCbeck, Germany >>> Phone: +49 451 500 5389 >>>=20 >>>=20 >>=20 >> --=20 >> M.Sc. Daniel Bimschas >> Institute of Telematics, University of L=FCbeck >> http://www.itm.uni-luebeck.de/users/bimschas >> Ratzeburger Allee 160, 23538 L=FCbeck, Germany >> Phone: +49 451 500 5389 >>=20 >>=20 >=20 > --=20 > M.Sc. Daniel Bimschas > Institute of Telematics, University of L=FCbeck > http://www.itm.uni-luebeck.de/users/bimschas > Ratzeburger Allee 160, 23538 L=FCbeck, Germany > Phone: +49 451 500 5389 >=20 >=20 --=20 M.Sc. Daniel Bimschas Institute of Telematics, University of L=FCbeck http://www.itm.uni-luebeck.de/users/bimschas Ratzeburger Allee 160, 23538 L=FCbeck, Germany Phone: +49 451 500 5389 --Apple-Mail-30--685743144 Content-Disposition: attachment; filename=smime.p7s Content-Type: application/pkcs7-signature; name=smime.p7s Content-Transfer-Encoding: base64 MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIOpDCCBCEw ggMJoAMCAQICAgDHMA0GCSqGSIb3DQEBBQUAMHExCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNEZXV0 c2NoZSBUZWxla29tIEFHMR8wHQYDVQQLExZULVRlbGVTZWMgVHJ1c3QgQ2VudGVyMSMwIQYDVQQD ExpEZXV0c2NoZSBUZWxla29tIFJvb3QgQ0EgMjAeFw0wNjEyMTkxMDI5MDBaFw0xOTA2MzAyMzU5 MDBaMFoxCzAJBgNVBAYTAkRFMRMwEQYDVQQKEwpERk4tVmVyZWluMRAwDgYDVQQLEwdERk4tUEtJ MSQwIgYDVQQDExtERk4tVmVyZWluIFBDQSBHbG9iYWwgLSBHMDEwggEiMA0GCSqGSIb3DQEBAQUA A4IBDwAwggEKAoIBAQDpm8NnhfkNrvWNVMOWUDU9YuluTO2U1wBblSJ01CDrNI/W7MAxBAuZgeKm FNJSoCgjhIt0iQReW+DieMF4yxbLKDU5ey2QRdDtoAB6fL9KDhsAw4bpXCsxEXsM84IkQ4wcOItq aACa7txPeKvSxhObdq3u3ibo7wGvdA/BCaL2a869080UME/15eOkyGKbghoDJzANAmVgTe3RCSMq ljVYJ9N2xnG2kB3E7f81hn1vM7PbD8URwoqDoZRdQWvY0hD1TP3KUazZve+Sg7va64sWVlZDz+HV Ez2mHycwzUlU28kTNJpxdcVs6qcLmPkhnSevPqM5OUhqjK3JmfvDEvK9AgMBAAGjgdkwgdYwcAYD VR0fBGkwZzBloGOgYYZfaHR0cDovL3BraS50ZWxlc2VjLmRlL2NnaS1iaW4vc2VydmljZS9hZl9E b3dubG9hZEFSTC5jcmw/LWNybF9mb3JtYXQ9WF81MDkmLWlzc3Vlcj1EVF9ST09UX0NBXzIwHQYD VR0OBBYEFEm3xs/oPR9/6kR7Eyn38QpwPt5kMB8GA1UdIwQYMBaAFDHDeRu69VPXF+CJei0XbAqz K50zMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgECMA0GCSqGSIb3DQEBBQUAA4IB AQA74Vp3wEgX3KkY7IGvWonwvSiSpspZGBJw7Cjy565/lizn8l0ZMfYTK3S9vYCyufdnyTmieTvh ERHua3iRM347XyYndVNljjNj7s9zw7CSI0khUHUjoR8Y4pSFPT8z6XcgjaK95qGFKUD2P3MyWA0J a6bahWzAP7uNZmRWJE6uDT8yNQFb6YyC2XJZT7GGhfF0hVblw/hc843uR7NTBXDn5U2KaYMo4RMJ hp5eyOpYHgwf+aTUWgRo/Sg+iwK2WLX2oSw3VwBnqyNojWOl75lrXP1LVvarQIc01BGSbOyHxQoL BzNytG8MHVQs2FHHzL8w00Ny8TK/jM5JY6gA9/IcMIIFNzCCBB+gAwIBAgIEChiHZjANBgkqhkiG 9w0BAQUFADBaMQswCQYDVQQGEwJERTETMBEGA1UEChMKREZOLVZlcmVpbjEQMA4GA1UECxMHREZO LVBLSTEkMCIGA1UEAxMbREZOLVZlcmVpbiBQQ0EgR2xvYmFsIC0gRzAxMB4XDTA3MDMxNTA4NTQ0 N1oXDTE5MDMxNDAwMDAwMFowgasxCzAJBgNVBAYTAkRFMSAwHgYDVQQKExdVbml2ZXJzaXRhZXQg enUgTHVlYmVjazEuMCwGA1UECxMlSW5zdGl0dXQgZnVlciBNZWRpemluaXNjaGUgSW5mb3JtYXRp azEnMCUGA1UEAxMeQ0EgZGVyIFVuaXZlcnNpdGFldCB6dSBMdWViZWNrMSEwHwYJKoZIhvcNAQkB FhJwa2lAdW5pLWx1ZWJlY2suZGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCWZS7m r7XjjwizbKXx3HQYxk369Bw40r31jGlnN0lJl2e+VCzKa2KOSGndQ2dfPEFfGTS16BEhpf8SPPYD PEsMz8WR/FnZdFGK4qpV0b7+pzN7L4xgnKoG2LXWaJR2hygCb6fG2EiPWT7eovN4PK/sNXj/5ekP fXdyKrD9fbMPhll+mTTR9DsCypH5oDGOFAsNAn3h0iE4dYPTl67T3LGhYl7Wd7Z9zSZRfD6a+lOm J86jguBL1rfq5wvefwIvsGZYYwOTf+uZyMosFYZlGMJCY0m9JO/ZNoRGdDGdv1iFVSxeL0im28gZ zoREaPbc7qFaTKw0w2kCoROEYhXmrqFDAgMBAAGjggGxMIIBrTAPBgNVHRMBAf8EBTADAQH/MAsG A1UdDwQEAwIBBjAdBgNVHQ4EFgQUtytvwMcYEDE2F1IQdaHQQMM5NB8wHwYDVR0jBBgwFoAUSbfG z+g9H3/qRHsTKffxCnA+3mQwHQYDVR0RBBYwFIEScGtpQHVuaS1sdWViZWNrLmRlMIGIBgNVHR8E gYAwfjA9oDugOYY3aHR0cDovL2NkcDEucGNhLmRmbi5kZS9nbG9iYWwtcm9vdC1jYS9wdWIvY3Js L2NhY3JsLmNybDA9oDugOYY3aHR0cDovL2NkcDIucGNhLmRmbi5kZS9nbG9iYWwtcm9vdC1jYS9w dWIvY3JsL2NhY3JsLmNybDCBogYIKwYBBQUHAQEEgZUwgZIwRwYIKwYBBQUHMAKGO2h0dHA6Ly9j ZHAxLnBjYS5kZm4uZGUvZ2xvYmFsLXJvb3QtY2EvcHViL2NhY2VydC9jYWNlcnQuY3J0MEcGCCsG AQUFBzAChjtodHRwOi8vY2RwMi5wY2EuZGZuLmRlL2dsb2JhbC1yb290LWNhL3B1Yi9jYWNlcnQv Y2FjZXJ0LmNydDANBgkqhkiG9w0BAQUFAAOCAQEAopseiKAnns0Q+mVXqJfb7JdQkuFnNNfMUPnU DA2upi+bxj5ZJFLBckRlrqq4X1QNLUfFzJTMn+2eGhwX+o/WdUKhXxPceLEDFzlmLBjvV+hDEktE MBMeUIsPtBhl0HjiZQXN6OTBjmHeSqUf5hhr7BuGLg85tV8XqO4ZEssPibF+2W8Qrbja+0RNaQ3M z454MW4blXziGaz0ySFRL1kVXtYF+FM4bldtgIApXJvZmDYVCzQ6Lif0jphvBUG7R8UEF/h1ZFdm KNwe0juUX0jmf+8OYZans8ObDGENRyyWSUe/KClmRO5phFK95LACNSpl7ueJeWwqo6jK1Rb8PN0d tzCCBUAwggQooAMCAQICBA8jnP0wDQYJKoZIhvcNAQEFBQAwgasxCzAJBgNVBAYTAkRFMSAwHgYD VQQKExdVbml2ZXJzaXRhZXQgenUgTHVlYmVjazEuMCwGA1UECxMlSW5zdGl0dXQgZnVlciBNZWRp emluaXNjaGUgSW5mb3JtYXRpazEnMCUGA1UEAxMeQ0EgZGVyIFVuaXZlcnNpdGFldCB6dSBMdWVi ZWNrMSEwHwYJKoZIhvcNAQkBFhJwa2lAdW5pLWx1ZWJlY2suZGUwHhcNMDkxMTE4MTYyMzA5WhcN MTIxMTE3MTYyMzA5WjBXMQswCQYDVQQGEwJERTEgMB4GA1UEChMXVW5pdmVyc2l0YWV0IHp1IEx1 ZWJlY2sxDDAKBgNVBAsTA0lUTTEYMBYGA1UEAxMPRGFuaWVsIEJpbXNjaGFzMIIBIjANBgkqhkiG 9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoyuuPmJVmcAgGqD88Buo28xWB9M2K4xRSDFyxAq6my795dac 24WNuheq6MTDzl8VlQt51euYjBLGTXVWvsVMEDbC3EPqd8BME2Dxl9YLXstTUoAP95IHkZ5QraiN 2bEeSmdGz+XvHjST0xCuCZKpn2+fShyVU6SqlRQx5eLVTS1OvD/Wox++OdNAvaVxxVmvmM3W596f aUfd2l5a4dvMwR5fog6dWYQ27TlWK7oawb7afAFNsYqy51Y9zniErXUo48dvWDvlyy8HZyVqrD4C DLqBdMt8oQ2yZrDQDeZ9Ea+Pd3/x0pGNfTOmBc5B2uYYZl3VLX9giYEGrZ/dFl+aiQIDAQABo4IB vTCCAbkwCQYDVR0TBAIwADALBgNVHQ8EBAMCBeAwKQYDVR0lBCIwIAYIKwYBBQUHAwIGCCsGAQUF BwMEBgorBgEEAYI3FAICMB0GA1UdDgQWBBTSsiROJNYBKUR2iL6pBxt8ICDbWjAfBgNVHSMEGDAW gBS3K2/AxxgQMTYXUhB1odBAwzk0HzAmBgNVHREEHzAdgRtiaW1zY2hhc0BpdG0udW5pLWx1ZWJl Y2suZGUwdwYDVR0fBHAwbjA1oDOgMYYvaHR0cDovL2NkcDEucGNhLmRmbi5kZS91emwtY2EvcHVi L2NybC9jYWNybC5jcmwwNaAzoDGGL2h0dHA6Ly9jZHAyLnBjYS5kZm4uZGUvdXpsLWNhL3B1Yi9j cmwvY2FjcmwuY3JsMIGSBggrBgEFBQcBAQSBhTCBgjA/BggrBgEFBQcwAoYzaHR0cDovL2NkcDEu cGNhLmRmbi5kZS91emwtY2EvcHViL2NhY2VydC9jYWNlcnQuY3J0MD8GCCsGAQUFBzAChjNodHRw Oi8vY2RwMi5wY2EuZGZuLmRlL3V6bC1jYS9wdWIvY2FjZXJ0L2NhY2VydC5jcnQwDQYJKoZIhvcN AQEFBQADggEBAG6RWU3TV0viAr5G142hIWIq68nll/Vq7eZFi8BPLkn+AZJ7I2uUPWAQVWXo05hY GwoJn11jUHzX7WdsEQHsjFqzYaf/0kTvOqgabUJa7WDyCpaArRh2+EINtDdqo+8KbcHC79h5Xw/I uCII3uo2mLV7m1SwU1Ps22skpGKMxnoBEnOuW4p2tiOQxwT5rsYrgjllp+u6T+Vyr2P2vcIDY2sg 9L+J/76oQJkRgj6Ey6yJ2bt8AMMJBrkN42PXXAzFTinyCptyOUcDWe5f2uVAElj90U0zvQkz0612 +Z4ZmptsRPkH5uluKddzd0a1CAa+2s4TVSMAoAX+vQOq4JY1nyMxggPPMIIDywIBATCBtDCBqzEL MAkGA1UEBhMCREUxIDAeBgNVBAoTF1VuaXZlcnNpdGFldCB6dSBMdWViZWNrMS4wLAYDVQQLEyVJ bnN0aXR1dCBmdWVyIE1lZGl6aW5pc2NoZSBJbmZvcm1hdGlrMScwJQYDVQQDEx5DQSBkZXIgVW5p dmVyc2l0YWV0IHp1IEx1ZWJlY2sxITAfBgkqhkiG9w0BCQEWEnBraUB1bmktbHVlYmVjay5kZQIE DyOc/TAJBgUrDgMCGgUAoIIB7zAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJ BTEPFw0xMDAyMDUxNTM3NDZaMCMGCSqGSIb3DQEJBDEWBBT22NTy5eAWTQyKVxSY1sR/Cxe3lDCB xQYJKwYBBAGCNxAEMYG3MIG0MIGrMQswCQYDVQQGEwJERTEgMB4GA1UEChMXVW5pdmVyc2l0YWV0 IHp1IEx1ZWJlY2sxLjAsBgNVBAsTJUluc3RpdHV0IGZ1ZXIgTWVkaXppbmlzY2hlIEluZm9ybWF0 aWsxJzAlBgNVBAMTHkNBIGRlciBVbml2ZXJzaXRhZXQgenUgTHVlYmVjazEhMB8GCSqGSIb3DQEJ ARYScGtpQHVuaS1sdWViZWNrLmRlAgQPI5z9MIHHBgsqhkiG9w0BCRACCzGBt6CBtDCBqzELMAkG A1UEBhMCREUxIDAeBgNVBAoTF1VuaXZlcnNpdGFldCB6dSBMdWViZWNrMS4wLAYDVQQLEyVJbnN0 aXR1dCBmdWVyIE1lZGl6aW5pc2NoZSBJbmZvcm1hdGlrMScwJQYDVQQDEx5DQSBkZXIgVW5pdmVy c2l0YWV0IHp1IEx1ZWJlY2sxITAfBgkqhkiG9w0BCQEWEnBraUB1bmktbHVlYmVjay5kZQIEDyOc /TANBgkqhkiG9w0BAQEFAASCAQBYl3w1X4YBCcc9V8rr1kxz0Oh3iZVkzzysr0xyw4E2rWFJ5O50 l2sNlDje5oIQH3ex0KJeXHXr54uI07pj9VxTdaYfbxyaQ+8172UoepEYieRJAE3Gt2cRvqbOPZKj Ynmpwd6e++3mdEZdAok/n+LLRfDVxmgpF78/5hnX6wxaB1HJeZ+GKs0xby0f/Oue2+V+xEypOz1r j9z31wGFYliAwrhARfaklzI6omOEgNdNlQpz09s6KJl9UKj31LkMevQDsNQPtAaed7tnrz8w1r7T esRfuzkK9W2wQv4C4vvmBx0AlVL6YeBDbZ+vGiVRTpHe0DdbvTLyrXSGSVEJhwRKAAAAAAAA --Apple-Mail-30--685743144--