<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4664324677113140555</id><updated>2026-09-29T12:11:13.847+05:00</updated><category term="regular"/><category term="Programming"/><category term="java"/><category term="MySQL"/><category term="wso2"/><category term="Ant target"/><category term="configuration"/><category term="linux"/><category term="Android"/><category term="Apache ant"/><category term="C++"/><category term="HSPA"/><category term="Java 6"/><category term="Java 7"/><category term="connector"/><category term="hibernate"/><category term="jboss"/><category term="php"/><category term="python"/><category term="tomcat 7.0.14"/><category term="wso2esb RESTful"/><category term="Apache Web Server"/><category term="Apache axis2"/><category term="ApacheDS"/><category term="Auto Complete"/><category term="AutoCompleteTextView"/><category term="CursorAdapter"/><category term="Custom cursor adapter"/><category term="Dialog"/><category term="Eclipse"/><category term="Hutch"/><category term="Hutch Srilanka"/><category term="IdentityServer"/><category term="MMS"/><category term="MySQLdb"/><category term="Octave"/><category term="RDF"/><category term="SQL"/><category term="SSO"/><category term="StartupFinalizerServiceComponent"/><category term="Tools"/><category term="WstxParsingException"/><category term="XML"/><category term="auto commit"/><category term="axis2client"/><category term="block"/><category term="cache"/><category term="ceylon"/><category term="classloader"/><category term="compile error"/><category term="configuration error"/><category term="dependency"/><category term="esb"/><category term="facebook"/><category term="first"/><category term="flash"/><category term="flv"/><category term="google chrome"/><category term="governanceRegistry"/><category term="gzip"/><category term="hbm2hbmxml"/><category term="hibernate tools"/><category term="httpd"/><category term="httpurlconnection"/><category term="introduction"/><category term="jQuery"/><category term="jar"/><category term="jax-ws"/><category term="jaxws"/><category term="jboss-eap"/><category term="jboss-eap-5.1.2"/><category term="jersey"/><category term="ldap"/><category term="list comprehension"/><category term="log4j"/><category term="manual"/><category term="migration"/><category term="mobile broadband"/><category term="opeanSaml"/><category term="openSAML"/><category term="optimization"/><category term="reverse engineering"/><category term="ruby on rails"/><category term="semantic web"/><category term="servlet"/><category term="smook"/><category term="string"/><category term="struts2"/><category term="sun-metro"/><category term="tcp"/><category term="web categories"/><category term="web classification"/><category term="windows"/><category term="windows 7"/><category term="wos2esb"/><category term="wso2esb wso2 esb tcp tcpserver esbclient"/><category term="wso2governanceRegistry"/><category term="wso2is"/><category term="www.dmoz.org"/><category term="xPath"/><category term="xQuery"/><category term="xml conversion"/><category term="xmltask"/><title type='text'>Sahan&#39;s Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sahanlm.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://sahanlm.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17507492010731314081</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>52</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4664324677113140555.post-9146774867863622928</id><published>2015-06-04T12:00:00.001+05:00</published><updated>2015-06-04T12:00:55.636+05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="gzip"/><category scheme="http://www.blogger.com/atom/ns#" term="httpurlconnection"/><category scheme="http://www.blogger.com/atom/ns#" term="wso2esb RESTful"/><title type='text'>Android HttpUrlConnection Disable default content encoding in gzip</title><content type='html'>&lt;p&gt;At present i have came across a scenario that our ESB is not responding to gzip format content encoded requests. Though ESB successfully call back end service after decoding these gzip requests originated from android apps which use HttpUrlConnection, ESB is not capable of respond the request after backend service successfully hand the response to ESB&lt;/p&gt;
&lt;p&gt;Neither web nor Google helped me to understand how the default gzip encoding stops.&lt;/p&gt;
&lt;p&gt;And then it came to my mind. Just set “Content-Encoding” to “identity” and you are done.&lt;/p&gt;
&lt;p&gt;HttpURLConnection con = (HttpURLConnection) url.openConnection();&lt;/p&gt;
&lt;p&gt;con.setRequestProperty(“Content-Encoding”, “identity”);&lt;/p&gt;
&lt;p&gt;con.setRequestProperty(“Accept-Encoding”, “identity”);&lt;/p&gt;
http://ift.tt/eA8V8J June 04, 2015 at 12:18PM
</content><link rel='replies' type='application/atom+xml' href='http://sahanlm.blogspot.com/feeds/9146774867863622928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sahanlm.blogspot.com/2015/06/android-httpurlconnection-disable.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/9146774867863622928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/9146774867863622928'/><link rel='alternate' type='text/html' href='http://sahanlm.blogspot.com/2015/06/android-httpurlconnection-disable.html' title='Android HttpUrlConnection Disable default content encoding in gzip'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17507492010731314081</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4664324677113140555.post-4148378784675969421</id><published>2014-09-26T06:19:00.000+05:00</published><updated>2014-10-15T08:29:32.893+05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="axis2client"/><category scheme="http://www.blogger.com/atom/ns#" term="dependency"/><category scheme="http://www.blogger.com/atom/ns#" term="hibernate"/><category scheme="http://www.blogger.com/atom/ns#" term="jar"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="jaxws"/><category scheme="http://www.blogger.com/atom/ns#" term="jersey"/><category scheme="http://www.blogger.com/atom/ns#" term="log4j"/><category scheme="http://www.blogger.com/atom/ns#" term="opeanSaml"/><category scheme="http://www.blogger.com/atom/ns#" term="regular"/><category scheme="http://www.blogger.com/atom/ns#" term="struts2"/><title type='text'>Still not using Maven ? Then here is some dependancy tips</title><content type='html'>&lt;p&gt;AXIS2 CLIENT&lt;br/&gt;&lt;br/&gt;    axis2-xmlbeans-1.6.2&lt;br/&gt;    axis2-transport-http-1.6.2&lt;br/&gt;    axis2-transport-local-1.6.2&lt;br/&gt;    axis2-adb-1.6.2&lt;br/&gt;    axis2-kernel-1.6.2&lt;br/&gt;    axiom-api-1.2.13&lt;br/&gt;    axiom-impl-1.2.13&lt;br/&gt;    neethi-3.0.2&lt;br/&gt;    XmlSchema-1.4.7&lt;br/&gt;    httpcore-4.0&lt;br/&gt;    mail-1.4&lt;br/&gt;    commons-httpclient-3.1&lt;br/&gt;    commons-codec-1.3&lt;br/&gt;    commons-logging-1.1.1&lt;br/&gt;    wsdl4j-1.6.2&lt;br/&gt;&lt;br/&gt;JAX-WS&lt;br/&gt;    jaxb-impl.jar&lt;br/&gt;    jaxws-api.jar&lt;br/&gt;    jaxws-rt.jar&lt;br/&gt;    gmbal-api-only.jar&lt;br/&gt;    management-api.jar&lt;br/&gt;    stax-ex.jar&lt;br/&gt;    streambuffer.jar&lt;br/&gt;    policy.jar&lt;br/&gt;    ha-api.jar&lt;br/&gt;    jaxb-core.jar&lt;br/&gt;    &lt;br/&gt;JERSEY&lt;br/&gt;    asm-3.1.jar&lt;br/&gt;    jackson-core-asl-1.9.2.jar&lt;br/&gt;    jackson-jaxrs-1.9.2.jar&lt;br/&gt;    jackson-mapper-asl-1.9.2.jar&lt;br/&gt;    jackson-xc-1.9.2.jar&lt;br/&gt;    jersey-client-1.17.1.jar&lt;br/&gt;    jersey-core-1.17.1.jar&lt;br/&gt;    jersey-json-1.17.1.jar&lt;br/&gt;    jersey-server-1.17.1.jar&lt;br/&gt;    jersey-servlet-1.17.1.jar&lt;br/&gt;    jettison-1.1.jar&lt;br/&gt;    jsr311-api-1.1.1.jar&lt;br/&gt;    &lt;br/&gt;LOG4J&lt;br/&gt;    log4j-1.2.17.jar&lt;br/&gt;    &lt;br/&gt;STRUTS 2&lt;br/&gt;    commons-fileupload-x.y.z.jar&lt;br/&gt;    commons-io-x.y.z.jar&lt;br/&gt;    commons-lang-x.y.jar&lt;br/&gt;    commons-logging-x.y.z.jar&lt;br/&gt;    commons-logging-api-x.y.jar&lt;br/&gt;    freemarker-x.y.z.jar&lt;br/&gt;    javassist-.xy.z.GA&lt;br/&gt;    ognl-x.y.z.jar&lt;br/&gt;    struts2-core-x.y.z.jar&lt;br/&gt;    xwork-core.x.y.z.jar&lt;br/&gt;    commons-lang3-3.1.jar&lt;br/&gt;    &lt;br/&gt;OPEN SAML 2.6&lt;br/&gt;    serializer-2.10.0&lt;br/&gt;    xalan-2.7.1&lt;br/&gt;    xercesImpl-2.10.0&lt;br/&gt;    xml-apis-2.10.0&lt;br/&gt;    xmltooling-1.4.1&lt;br/&gt;    xmlsec-1.5.6&lt;br/&gt;    slf4j-api-1.7.5&lt;br/&gt;    openws-1.5.1&lt;br/&gt;    opensaml-2.6.1&lt;br/&gt;    joda-time-2.2&lt;br/&gt;    esapi-2.0.1&lt;br/&gt;    commons-lang-2.6&lt;br/&gt;    &lt;br/&gt;HIBERNATE 4.1&lt;br/&gt;    commons-collections-3.2.1.jar&lt;br/&gt;    antlr-2.7.7.jar&lt;br/&gt;    commons-lang3-3.1.jar&lt;br/&gt;    commons-logging-1.1.3.jar&lt;br/&gt;    dom4j-1.6.1.jar&lt;br/&gt;    hibernate-commons-annotations-4.0.1.Final.jar&lt;br/&gt;    hibernate-core-4.2.0.Final.jar&lt;br/&gt;    hibernate-jpa-2.0-api-1.0.1.Final.jar&lt;br/&gt;    javassist-3.15.0-GA.jar&lt;br/&gt;    jboss-logging-3.1.0.GA.jar&lt;br/&gt;    jboss-transaction-api_1.1_spec-1.0.0.Final.jar&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://sahanlm.blogspot.com/feeds/4148378784675969421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sahanlm.blogspot.com/2014/09/still-not-using-maven-then-here-is-some.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/4148378784675969421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/4148378784675969421'/><link rel='alternate' type='text/html' href='http://sahanlm.blogspot.com/2014/09/still-not-using-maven-then-here-is-some.html' title='Still not using Maven ? Then here is some dependancy tips'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17507492010731314081</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4664324677113140555.post-2611391549893240100</id><published>2014-09-23T07:13:00.000+05:00</published><updated>2014-10-15T08:29:32.924+05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="regular"/><title type='text'>JBOSS - java.lang.NoSuchMethodError:&#xa;org.jboss.logmanager.LogContext.getAttachment</title><content type='html'>&lt;p&gt;I came through below error while i was trying to use newer version of hibernate with jboss 5.1.2 EAP. The reason for this is with the classloader. Even though we created a jboss-classloading.xml file and instruct jboss to give priority to our classloader, it still try to pick jboss logging from server class loader than the jar inside war file.&lt;/p&gt;&lt;br/&gt;&lt;pre&gt;&lt;code&gt;Caused by: java.lang.NoSuchMethodError: org.jboss.logmanager.LogContext.getAttachment(Ljava/lang/String;Lorg/jboss/logmanager/Logger$AttachmentKey;)Ljava/lang/Object;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;pre&gt;&lt;code&gt;  at org.jboss.logging.JBossLogManagerProvider.doGetLogger(JBossLogManagerProvider.java:52)&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;pre&gt;&lt;code&gt;  at org.jboss.logging.JBossLogManagerProvider.getLogger(JBossLogManagerProvider.java:47)&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;pre&gt;&lt;code&gt;  at org.jboss.logging.Logger.getLogger(Logger.java:2164)&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;pre&gt;&lt;code&gt;  at org.jboss.logging.Logger.getMessageLogger(Logger.java:2263)&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;pre&gt;&lt;code&gt;  at org.jboss.logging.Logger.getMessageLogger(Logger.java:2215)&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;p&gt;So how to over come this is as follow.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;1. Download the zip from &lt;a href=&quot;https://drive.google.com/file/d/0Bwpe0sPSTPCyYmoyMy0tQ3RvVDQ/edit?usp=sharing&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;2. Unzip it and run &lt;code&gt;ant&lt;/code&gt; in the project&amp;#8217;s root folder.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;3. Copy the resulting .jar in the &lt;code&gt;dist&lt;/code&gt; directory to &lt;code&gt;$JBOSS_HOME/server/$PROFILE/deployers&lt;/code&gt;.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;4. Create a file named &lt;code&gt;jboss-classloading.xml&lt;/code&gt; and place it in your deployment&amp;#8217;s &lt;code&gt;WEB-INF&lt;/code&gt; or &lt;code&gt;META-INF&lt;/code&gt; folders with the following contents:&lt;/p&gt;&lt;br/&gt;&lt;pre&gt; &lt;/pre&gt;&lt;br/&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;classloading xmlns=&quot;urn:jboss:classloading:1.0&quot;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;pre&gt;&lt;code&gt;              domain=&quot;MyDeploymentDomain&quot;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;pre&gt;&lt;code&gt;              parent-domain=&quot;NoHibernateNoJBLoggingDomain&quot;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;pre&gt;&lt;code&gt;              parent-first=&quot;false&quot;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;pre&gt;&lt;code&gt;              export-all=&quot;NON_EMPTY&quot;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;pre&gt;&lt;code&gt;              import-all=&quot;true&quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;/classloading&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;p&gt;5.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;The set of packages filtered from your deployment is defined in &lt;code&gt;NoHibernateNoJBLoggingDomain.jar&lt;/code&gt; at &lt;code&gt;META-INF/jboss-beans.xml&lt;/code&gt;. See below for the default contents of this file:&lt;/p&gt;&lt;br/&gt;&lt;pre&gt; &lt;/pre&gt;&lt;br/&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;deployment xmlns=&quot;urn:jboss:bean-deployer:2.0&quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;pre&gt;&lt;code&gt;   &amp;lt;bean name=&quot;NoHibernateNoJBLoggingDomain&quot; class=&quot;com.jboss.examples.classloader.FilteredDefaultDomain&quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;pre&gt;&lt;code&gt;       &amp;lt;property name=&quot;domainName&quot;&amp;gt;NoHibernateNoJBLoggingDomain&amp;lt;/property&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;pre&gt;&lt;code&gt;       &amp;lt;property name=&quot;filterPackages&quot;&amp;gt;org.hibernate,org.jboss.logmanager&amp;lt;/property&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;pre&gt;&lt;code&gt;   &amp;lt;/bean&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;pre&gt;&lt;code&gt;&amp;lt;/deployment&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;p&gt;Now You are good to go!!!&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://sahanlm.blogspot.com/feeds/2611391549893240100/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sahanlm.blogspot.com/2014/09/jboss-javalangnosuchmethoderror.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/2611391549893240100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/2611391549893240100'/><link rel='alternate' type='text/html' href='http://sahanlm.blogspot.com/2014/09/jboss-javalangnosuchmethoderror.html' title='JBOSS - java.lang.NoSuchMethodError:&#xa;org.jboss.logmanager.LogContext.getAttachment'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17507492010731314081</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4664324677113140555.post-2857700221390345061</id><published>2014-08-28T02:27:00.000+05:00</published><updated>2014-10-15T08:29:32.941+05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="regular"/><title type='text'>iOS - short note, how to change view of tabs in UiTabBarController</title><content type='html'>&lt;p class=&quot;p1&quot;&gt;&lt;span class=&quot;s1&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; (&lt;/span&gt;UINavigationController&lt;span class=&quot;s2&quot;&gt; * nav &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;in&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;.&lt;/span&gt;tabBarController&lt;span class=&quot;s2&quot;&gt;.&lt;/span&gt;viewControllers&lt;span class=&quot;s2&quot;&gt;) {&lt;/span&gt;&lt;/p&gt;&lt;br/&gt;&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;s2&quot;&gt;        [nav.&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;tabBarItem&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; &lt;/span&gt;setTitleTextAttributes&lt;span class=&quot;s2&quot;&gt;:[&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;NSDictionary&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; &lt;/span&gt;dictionaryWithObjectsAndKeys&lt;span class=&quot;s2&quot;&gt;:&lt;/span&gt;&lt;/p&gt;&lt;br/&gt;&lt;p class=&quot;p3&quot;&gt;                                                [&lt;span class=&quot;s3&quot;&gt;UIColor&lt;/span&gt; &lt;span class=&quot;s4&quot;&gt;grayColor&lt;/span&gt;],&lt;/p&gt;&lt;br/&gt;&lt;p class=&quot;p3&quot;&gt;                                                &lt;span class=&quot;s3&quot;&gt;NSForegroundColorAttributeName&lt;/span&gt;,&lt;/p&gt;&lt;br/&gt;&lt;p class=&quot;p3&quot;&gt;                                                [&lt;span class=&quot;s3&quot;&gt;UIFont&lt;/span&gt; &lt;span class=&quot;s4&quot;&gt;systemFontOfSize&lt;/span&gt;:&lt;span class=&quot;s5&quot;&gt;12&lt;/span&gt;], &lt;span class=&quot;s3&quot;&gt;NSFontAttributeName&lt;/span&gt;,&lt;/p&gt;&lt;br/&gt;&lt;p class=&quot;p3&quot;&gt;                                                &lt;span class=&quot;s1&quot;&gt;nil&lt;/span&gt;]&lt;/p&gt;&lt;br/&gt;&lt;p class=&quot;p3&quot;&gt;                                      &lt;span class=&quot;s4&quot;&gt;forState&lt;/span&gt;:&lt;span class=&quot;s4&quot;&gt;UIControlStateNormal&lt;/span&gt;];&lt;/p&gt;&lt;br/&gt;&lt;p class=&quot;p2&quot;&gt;&lt;span class=&quot;s2&quot;&gt;        [nav.&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;tabBarItem&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; &lt;/span&gt;setTitleTextAttributes&lt;span class=&quot;s2&quot;&gt;:[&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;NSDictionary&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; &lt;/span&gt;dictionaryWithObjectsAndKeys&lt;span class=&quot;s2&quot;&gt;:&lt;/span&gt;&lt;/p&gt;&lt;br/&gt;&lt;p class=&quot;p3&quot;&gt;                                                [&lt;span class=&quot;s3&quot;&gt;UIColor&lt;/span&gt; &lt;span class=&quot;s4&quot;&gt;colorWithRed&lt;/span&gt;:&lt;span class=&quot;s5&quot;&gt;0.0&lt;/span&gt; &lt;span class=&quot;s4&quot;&gt;green&lt;/span&gt;:&lt;span class=&quot;s5&quot;&gt;122&lt;/span&gt;/&lt;span class=&quot;s5&quot;&gt;255.0&lt;/span&gt; &lt;span class=&quot;s4&quot;&gt;blue&lt;/span&gt;:&lt;span class=&quot;s5&quot;&gt;1.0&lt;/span&gt; &lt;span class=&quot;s4&quot;&gt;alpha&lt;/span&gt;:&lt;span class=&quot;s5&quot;&gt;1&lt;/span&gt;], &lt;span class=&quot;s3&quot;&gt;NSForegroundColorAttributeName&lt;/span&gt;,&lt;/p&gt;&lt;br/&gt;&lt;p class=&quot;p3&quot;&gt;                                                [&lt;span class=&quot;s3&quot;&gt;UIFont&lt;/span&gt; &lt;span class=&quot;s4&quot;&gt;systemFontOfSize&lt;/span&gt;:&lt;span class=&quot;s5&quot;&gt;14&lt;/span&gt;], &lt;span class=&quot;s3&quot;&gt;NSFontAttributeName&lt;/span&gt;,&lt;/p&gt;&lt;br/&gt;&lt;p class=&quot;p3&quot;&gt;                                                &lt;span class=&quot;s1&quot;&gt;nil&lt;/span&gt;]&lt;/p&gt;&lt;br/&gt;&lt;p class=&quot;p3&quot;&gt;                                      &lt;span class=&quot;s4&quot;&gt;forState&lt;/span&gt;:&lt;span class=&quot;s4&quot;&gt;UIControlStateSelected&lt;/span&gt;];&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;&lt;p class=&quot;p3&quot;&gt;    }&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://sahanlm.blogspot.com/feeds/2857700221390345061/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sahanlm.blogspot.com/2014/08/ios-short-note-how-to-change-view-of.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/2857700221390345061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/2857700221390345061'/><link rel='alternate' type='text/html' href='http://sahanlm.blogspot.com/2014/08/ios-short-note-how-to-change-view-of.html' title='iOS - short note, how to change view of tabs in UiTabBarController'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17507492010731314081</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4664324677113140555.post-8910883839162090669</id><published>2014-08-04T10:54:00.000+05:00</published><updated>2014-10-15T08:29:33.005+05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="classloader"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="jboss"/><category scheme="http://www.blogger.com/atom/ns#" term="jboss-eap"/><category scheme="http://www.blogger.com/atom/ns#" term="regular"/><title type='text'>How to force change jboss class loader method 2</title><content type='html'>&lt;p&gt;In my previous post there is the first method where you can force jboss to isolate class loader of your web app from server class loader. Here what happen is before adding jars in server classpath, jboss will search jars in your web app classpath. If matching jars or duplicating jars found jboss will give priority to the jars found in your web app&amp;#8217;s classpath.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;So to achieve this the first method is create an entry in jboss-web.xml which is the jboss specific deployment descriptor. The second method is creating a separate xml file &amp;#8220;jboss-classloading.xml&amp;#8221; in your app&amp;#8217;s &amp;#8220;WEB-INF&amp;#8221; folder and add the class loading instructions in that file. An example is given below.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&amp;lt;classloading xmlns=&amp;#8221;urn:jboss:classloading:1.0&amp;#8221; &lt;br/&gt;            name=&amp;#8221;MyAPP.war&amp;#8221; &lt;br/&gt;            domain=&amp;#8221;MyAPP_domain&amp;#8221;&lt;br/&gt;            parent-domain=&amp;#8221;this is optional&amp;#8221;&lt;br/&gt;            parent-first=&amp;#8221;false&amp;#8221;&lt;br/&gt;            export-all=&amp;#8221;NON_EMPTY&amp;#8221;&lt;br/&gt;            import-all=&amp;#8221;true&amp;#8221;&amp;gt;&lt;br/&gt;&amp;lt;/classloading&amp;gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;***** parent daomain is optional.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://sahanlm.blogspot.com/feeds/8910883839162090669/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sahanlm.blogspot.com/2014/08/how-to-force-change-jboss-class-loader.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/8910883839162090669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/8910883839162090669'/><link rel='alternate' type='text/html' href='http://sahanlm.blogspot.com/2014/08/how-to-force-change-jboss-class-loader.html' title='How to force change jboss class loader method 2'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17507492010731314081</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4664324677113140555.post-6985926923436963816</id><published>2014-08-04T04:48:00.000+05:00</published><updated>2014-10-15T08:29:33.016+05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="jax-ws"/><category scheme="http://www.blogger.com/atom/ns#" term="jboss"/><category scheme="http://www.blogger.com/atom/ns#" term="jboss-eap-5.1.2"/><category scheme="http://www.blogger.com/atom/ns#" term="regular"/><category scheme="http://www.blogger.com/atom/ns#" term="sun-metro"/><title type='text'>JBOSS EAP 5.1.2 &amp;amp; Sun Metro JAX-WS</title><content type='html'>&lt;p&gt;Jboss does have their own web service implementation which is &lt;span&gt;JBossWS-CXF, based out of Apache CXF. But if you are into JAX-WS metro stack you can simply use it with jboss.&lt;/span&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;span&gt;1. Overide the class loader to load SUN Metro stack instead jboss supplied jax-ws version.&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;span&gt;create &amp;#8220;jboss-web.xml&amp;#8221; file in &amp;#8220;WEB-INF&amp;#8221; folder with following content.&lt;/span&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;span&gt;&amp;lt;?xml version=&amp;#8221;1.0&amp;#8221; encoding=&amp;#8221;UTF-8&amp;#8221;?&amp;gt;&lt;br/&gt;&amp;lt;jboss-web&amp;gt;&lt;br/&gt;    &amp;lt;context-root&amp;gt;/MyApp&amp;lt;/context-root&amp;gt;&lt;br/&gt;    &amp;lt;class-loading java2ClassLoadingCompliance=&amp;#8221;false&amp;#8221;&amp;gt;&lt;br/&gt;        &amp;lt;loader-repository&amp;gt;&lt;br/&gt;            org.myapp:loader=&lt;span&gt;MyApp&lt;/span&gt;.war&lt;br/&gt;            &amp;lt;loader-repository-config&amp;gt;&lt;br/&gt;                java2ParentDelegation=false&lt;br/&gt;            &amp;lt;/loader-repository-config&amp;gt;&lt;br/&gt;        &amp;lt;/loader-repository&amp;gt;&lt;br/&gt;    &amp;lt;/class-loading&amp;gt;&lt;br/&gt;&amp;lt;/jboss-web&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;span&gt;2. Add WSServletContextListener listner to web.xml file&lt;/span&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;span&gt;&amp;lt;listener&amp;gt;&lt;br/&gt;       &amp;lt;listener-class&amp;gt;com.sun.xml.ws.transport.http.servlet.WSServletContextListener&amp;lt;/listener-class&amp;gt;&lt;br/&gt;  &amp;lt;/listener&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;span&gt;3. Add servlet and servlet mapping for &lt;span&gt;WSServlet&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;span&gt;&amp;lt;servlet&amp;gt;&lt;br/&gt;    &amp;lt;servlet-name&amp;gt;WSServlet&amp;lt;/servlet-name&amp;gt;&lt;br/&gt;    &amp;lt;servlet-class&amp;gt;&lt;br/&gt;            com.sun.xml.ws.transport.http.servlet.WSServlet&lt;br/&gt;        &amp;lt;/servlet-class&amp;gt;&lt;br/&gt;    &amp;lt;load-on-startup&amp;gt;1&amp;lt;/load-on-startup&amp;gt;&lt;br/&gt;  &amp;lt;/servlet&amp;gt;&lt;br/&gt;  &amp;lt;servlet-mapping&amp;gt;&lt;br/&gt;    &amp;lt;servlet-name&amp;gt;WSServlet&amp;lt;/servlet-name&amp;gt;&lt;br/&gt;    &amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;&lt;br/&gt;   &amp;lt;!&amp;#8212;  &amp;lt;url-pattern&amp;gt;/services/*&amp;lt;/url-pattern&amp;gt; &amp;#8212;&amp;gt;&lt;br/&gt;  &amp;lt;/servlet-mapping&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;span&gt;You may now get your web service not only work but dynamic WSDL creation also working.&lt;/span&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://sahanlm.blogspot.com/feeds/6985926923436963816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sahanlm.blogspot.com/2014/08/jboss-eap-512-sun-metro-jax-ws.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/6985926923436963816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/6985926923436963816'/><link rel='alternate' type='text/html' href='http://sahanlm.blogspot.com/2014/08/jboss-eap-512-sun-metro-jax-ws.html' title='JBOSS EAP 5.1.2 &amp;amp; Sun Metro JAX-WS'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17507492010731314081</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4664324677113140555.post-544398505802846742</id><published>2014-07-23T03:28:00.000+05:00</published><updated>2014-10-15T08:29:33.062+05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="openSAML"/><category scheme="http://www.blogger.com/atom/ns#" term="regular"/><category scheme="http://www.blogger.com/atom/ns#" term="SSO"/><category scheme="http://www.blogger.com/atom/ns#" term="wso2"/><category scheme="http://www.blogger.com/atom/ns#" term="wso2is"/><title type='text'>WSO2 IS SAML SSO using openSAML java library</title><content type='html'>&lt;p&gt;In this blog post i will explain how to write a sample SSO service provider code using wso2is as the identity provider and openSAML as the supporting library to create SAML request.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;First download the wso2IS from [&lt;a href=&quot;http://wso2.com/products/identity-server/&quot;&gt;1&lt;/a&gt;] and openSAML release from [&lt;a href=&quot;https://wiki.shibboleth.net/confluence/display/OpenSAML/Home&quot;&gt;2&lt;/a&gt;]. Then startup the wso2is. Create a new java web application project and import below jars from opensaml lib and lib/endorsed folders.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;    serializer-2.10.0&lt;br/&gt;    xalan-2.7.1&lt;br/&gt;    xercesImpl-2.10.0&lt;br/&gt;    xml-apis-2.10.0&lt;br/&gt;    xmltooling-1.4.1&lt;br/&gt;    xmlsec-1.5.6&lt;br/&gt;    slf4j-api-1.7.5&lt;br/&gt;    openws-1.5.1&lt;br/&gt;    opensaml-2.6.1&lt;br/&gt;    joda-time-2.2&lt;br/&gt;    esapi-2.0.1&lt;br/&gt;    commons-lang-2.6&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Also include &amp;#8220;axiom-api.jar&amp;#8221; from apache axis project which has the UIDGenerator.java class.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Lets take our service provider name is &amp;#8220;test.com&amp;#8221; &amp;amp; our consumer landing page is &amp;#8220;http://localhost:8080/test.com/home.jsp&amp;#8221;. (You have to register a new service provider with above fields in wso2 identity server. To do so please refer [&lt;a href=&quot;http://pavithramadurangi.blogspot.com/2013/09/saml-20-sso-with-wso2-is-450.html&quot;&gt;3&lt;/a&gt;] )&lt;/p&gt;&lt;br/&gt;&lt;p&gt;You can use below code to sent login &amp;amp; logout saml requests.&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;import java.io.ByteArrayInputStream;&lt;br/&gt;import java.io.ByteArrayOutputStream;&lt;br/&gt;import java.io.IOException;&lt;br/&gt;import java.io.StringWriter;&lt;br/&gt;import java.net.URLEncoder;&lt;br/&gt;import java.util.HashMap;&lt;br/&gt;import java.util.Iterator;&lt;br/&gt;import java.util.List;&lt;br/&gt;import java.util.Map;&lt;br/&gt;import java.util.Random;&lt;br/&gt;import java.util.zip.Deflater;&lt;br/&gt;import java.util.zip.DeflaterOutputStream;&lt;br/&gt;&lt;br/&gt;import javax.xml.namespace.QName;&lt;br/&gt;import javax.xml.parsers.DocumentBuilder;&lt;br/&gt;import javax.xml.parsers.DocumentBuilderFactory;&lt;br/&gt;import javax.xml.parsers.ParserConfigurationException;&lt;br/&gt;&lt;br/&gt;import org.joda.time.DateTime;&lt;br/&gt;import org.opensaml.Configuration;&lt;br/&gt;import org.opensaml.DefaultBootstrap;&lt;br/&gt;import org.opensaml.common.SAMLVersion;&lt;br/&gt;import org.opensaml.saml2.core.Assertion;&lt;br/&gt;import org.opensaml.saml2.core.Attribute;&lt;br/&gt;import org.opensaml.saml2.core.AttributeStatement;&lt;br/&gt;import org.opensaml.saml2.core.AuthnContextClassRef;&lt;br/&gt;import org.opensaml.saml2.core.AuthnContextComparisonTypeEnumeration;&lt;br/&gt;import org.opensaml.saml2.core.AuthnRequest;&lt;br/&gt;import org.opensaml.saml2.core.Issuer;&lt;br/&gt;import org.opensaml.saml2.core.LogoutRequest;&lt;br/&gt;import org.opensaml.saml2.core.NameID;&lt;br/&gt;import org.opensaml.saml2.core.NameIDPolicy;&lt;br/&gt;import org.opensaml.saml2.core.RequestAbstractType;&lt;br/&gt;import org.opensaml.saml2.core.RequestedAuthnContext;&lt;br/&gt;import org.opensaml.saml2.core.Response;&lt;br/&gt;import org.opensaml.saml2.core.SessionIndex;&lt;br/&gt;import org.opensaml.saml2.core.impl.AuthnContextClassRefBuilder;&lt;br/&gt;import org.opensaml.saml2.core.impl.AuthnRequestBuilder;&lt;br/&gt;import org.opensaml.saml2.core.impl.IssuerBuilder;&lt;br/&gt;import org.opensaml.saml2.core.impl.LogoutRequestBuilder;&lt;br/&gt;import org.opensaml.saml2.core.impl.NameIDBuilder;&lt;br/&gt;import org.opensaml.saml2.core.impl.NameIDPolicyBuilder;&lt;br/&gt;import org.opensaml.saml2.core.impl.RequestedAuthnContextBuilder;&lt;br/&gt;import org.opensaml.saml2.core.impl.SessionIndexBuilder;&lt;br/&gt;import org.opensaml.xml.ConfigurationException;&lt;br/&gt;import org.opensaml.xml.XMLObject;&lt;br/&gt;import org.opensaml.xml.XMLObjectBuilder;&lt;br/&gt;import org.opensaml.xml.XMLObjectBuilderFactory;&lt;br/&gt;import org.opensaml.xml.io.Marshaller;&lt;br/&gt;import org.opensaml.xml.io.MarshallingException;&lt;br/&gt;import org.opensaml.xml.io.Unmarshaller;&lt;br/&gt;import org.opensaml.xml.io.UnmarshallerFactory;&lt;br/&gt;import org.opensaml.xml.io.UnmarshallingException;&lt;br/&gt;import org.opensaml.xml.util.Base64;&lt;br/&gt;import org.opensaml.xml.util.XMLHelper;&lt;br/&gt;import org.w3c.dom.Document;&lt;br/&gt;import org.w3c.dom.Element;&lt;br/&gt;import org.xml.sax.SAXException;&lt;br/&gt;&lt;br/&gt;import com.opensymphony.xwork2.util.logging.Logger;&lt;br/&gt;import com.opensymphony.xwork2.util.logging.LoggerFactory;&lt;br/&gt;&lt;br/&gt;public class SAMLConsumer {&lt;br/&gt;    &lt;br/&gt;    private static final Logger logger = LoggerFactory.getLogger(SAMLConsumer.class);&lt;br/&gt;    private static boolean isBootstraped = false;&lt;br/&gt;&lt;br/&gt;    private static final String ISSUER_URL = &amp;#8220;test.com&amp;#8221;;&lt;br/&gt;    private static final String CONSUMER_URL = &amp;#8220;http://localhost:8080/test.com/home.jsp&amp;#8221;;&lt;br/&gt;&lt;br/&gt;    private static final String NAME_SPACE_URI_ISSUER = &amp;#8220;urn:oasis:names:tc:SAML:2.0:assertion&amp;#8221;;&lt;br/&gt;    private static final String NAME_SPACE_URI_AUTH = &amp;#8220;urn:oasis:names:tc:SAML:2.0:protocol&amp;#8221;;&lt;br/&gt;    private static final String SAML_TRANSPORT_TYPE_PWD_PROTECTED = &amp;#8220;urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport&amp;#8221;;&lt;br/&gt;    private static final String SAML_TRANSPORT_PROTOCOL_BINDING = &amp;#8220;urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST&amp;#8221;;&lt;br/&gt;    &lt;br/&gt;    private static final String LOCAL_NAME_ISSUER = &amp;#8220;Issuer&amp;#8221;;&lt;br/&gt;    private static final String LOCAL_NAME_AUTHRQ = &amp;#8220;AuthnRequest&amp;#8221;;&lt;br/&gt;    private static final String NAME_SPACE_PREFIX = &amp;#8220;samlp&amp;#8221;;&lt;br/&gt;    private static final String AUTH_CNTXT_REF = &amp;#8220;AuthnContextClassRef&amp;#8221;;&lt;br/&gt;    private static final String SAML = &amp;#8220;saml&amp;#8221;;&lt;br/&gt;    &lt;br/&gt;    public static String buildLoginRequest() throws IllegalArgumentException, SecurityException, IllegalAccessException, NoSuchFieldException, MarshallingException, IOException  {&lt;br/&gt;        logger.info(&amp;#8220;started&amp;#8221;);&lt;br/&gt;&lt;br/&gt;        IssuerBuilder issuerBuilder = new IssuerBuilder();&lt;br/&gt;        Issuer issuer = issuerBuilder.buildObject(NAME_SPACE_URI_ISSUER, LOCAL_NAME_ISSUER, &amp;#8220;samlp&amp;#8221;);&lt;br/&gt;        issuer.setValue(ISSUER_URL);&lt;br/&gt;        &lt;br/&gt;        NameIDPolicyBuilder nameIdPolicyBuilder = new NameIDPolicyBuilder();&lt;br/&gt;        NameIDPolicy nameIdPolicy = nameIdPolicyBuilder.buildObject();&lt;br/&gt;        nameIdPolicy.setFormat(&amp;#8220;urn:oasis:names:tc:SAML:2.0:nameid-format:persistent&amp;#8221;);&lt;br/&gt;        nameIdPolicy.setSPNameQualifier(&amp;#8220;Isser&amp;#8221;);&lt;br/&gt;        nameIdPolicy.setAllowCreate(new Boolean(true));&lt;br/&gt;        &lt;br/&gt;        AuthnContextClassRefBuilder authnContextClassRefBuilder = new AuthnContextClassRefBuilder();&lt;br/&gt;        AuthnContextClassRef authnContextClassRef =&lt;br/&gt;                                                    authnContextClassRefBuilder.buildObject(NAME_SPACE_URI_ISSUER,&lt;br/&gt;                                                            AUTH_CNTXT_REF, SAML);&lt;br/&gt;        authnContextClassRef.setAuthnContextClassRef(SAML_TRANSPORT_TYPE_PWD_PROTECTED);&lt;br/&gt;        &lt;br/&gt;        RequestedAuthnContextBuilder requestedAuthnContextBuilder =&lt;br/&gt;                                                        new RequestedAuthnContextBuilder();&lt;br/&gt;        RequestedAuthnContext requestedAuthnContext = requestedAuthnContextBuilder.buildObject();&lt;br/&gt;        requestedAuthnContext.setComparison(AuthnContextComparisonTypeEnumeration.EXACT);&lt;br/&gt;        requestedAuthnContext.getAuthnContextClassRefs().add(authnContextClassRef);&lt;br/&gt;        &lt;br/&gt;        DateTime issueInstant = new DateTime();&lt;br/&gt;        AuthnRequestBuilder authnRequestBuilder = new AuthnRequestBuilder();&lt;br/&gt;        AuthnRequest authnRequest = authnRequestBuilder.buildObject(NAME_SPACE_URI_AUTH, LOCAL_NAME_AUTHRQ, NAME_SPACE_PREFIX);&lt;br/&gt;        authnRequest.setForceAuthn(new Boolean(false));&lt;br/&gt;        authnRequest.setIsPassive(new Boolean(false));&lt;br/&gt;        authnRequest.setIssueInstant(issueInstant);&lt;br/&gt;        authnRequest.setProtocolBinding(SAML_TRANSPORT_PROTOCOL_BINDING);&lt;br/&gt;        authnRequest.setAssertionConsumerServiceURL(CONSUMER_URL);&lt;br/&gt;        authnRequest.setIssuer(issuer);&lt;br/&gt;        authnRequest.setNameIDPolicy(nameIdPolicy);&lt;br/&gt;        authnRequest.setRequestedAuthnContext(requestedAuthnContext);&lt;br/&gt;        &lt;br/&gt;        String authReqRandomId = Integer.toHexString(new Double(Math.random()).intValue());&lt;br/&gt;        &lt;br/&gt;        authnRequest.setID(authReqRandomId);&lt;br/&gt;        authnRequest.setVersion(SAMLVersion.VERSION_20);&lt;br/&gt;                &lt;br/&gt;        return marshall(authnRequest);&lt;br/&gt;        &lt;br/&gt;    }&lt;br/&gt;    &lt;br/&gt;    public static String buildLogoutRequest(String user) throws MarshallingException, IOException {&lt;br/&gt;&lt;br/&gt;        LogoutRequest logoutReq = new LogoutRequestBuilder().buildObject();&lt;br/&gt;&lt;br/&gt;        logoutReq.setID(createID());&lt;br/&gt;&lt;br/&gt;        DateTime issueInstant = new DateTime();&lt;br/&gt;        logoutReq.setIssueInstant(issueInstant);&lt;br/&gt;        logoutReq.setNotOnOrAfter(new DateTime(issueInstant.getMillis() + 5 * 60 * 1000));&lt;br/&gt;&lt;br/&gt;        IssuerBuilder issuerBuilder = new IssuerBuilder();&lt;br/&gt;        Issuer issuer = issuerBuilder.buildObject();&lt;br/&gt;        issuer.setValue(ISSUER_URL);&lt;br/&gt;        logoutReq.setIssuer(issuer);&lt;br/&gt;&lt;br/&gt;        NameID nameId = new NameIDBuilder().buildObject();&lt;br/&gt;        nameId.setFormat(&amp;#8220;urn:oasis:names:tc:SAML:2.0:nameid-format:entity&amp;#8221;);&lt;br/&gt;        nameId.setValue(user);&lt;br/&gt;        logoutReq.setNameID(nameId);&lt;br/&gt;&lt;br/&gt;        SessionIndex sessionIndex = new SessionIndexBuilder().buildObject();&lt;br/&gt;        sessionIndex.setSessionIndex(UIDGenerator.generateUID());&lt;br/&gt;        logoutReq.getSessionIndexes().add(sessionIndex);&lt;br/&gt;&lt;br/&gt;        logoutReq.setReason(&amp;#8220;Single Logout&amp;#8221;);&lt;br/&gt;&lt;br/&gt;        return marshall(logoutReq);&lt;br/&gt;    }&lt;br/&gt;    &lt;br/&gt;    private static String marshall(RequestAbstractType authnRequest) throws MarshallingException, IOException {&lt;br/&gt;        doBootstrap();&lt;br/&gt;        Marshaller marshaller = Configuration.getMarshallerFactory().getMarshaller(authnRequest);&lt;br/&gt;        Element authDOM = marshaller.marshall(authnRequest);&lt;br/&gt;         &lt;br/&gt;         &lt;br/&gt;        StringWriter rspWrt = new StringWriter();&lt;br/&gt;        XMLHelper.writeNode(authDOM, rspWrt);&lt;br/&gt;        String requestMessage = rspWrt.toString();&lt;br/&gt;        &lt;br/&gt;        System.out.println(requestMessage);&lt;br/&gt;                 &lt;br/&gt;        Deflater deflater = new Deflater(Deflater.DEFLATED, true);&lt;br/&gt;        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();&lt;br/&gt;        DeflaterOutputStream deflaterOutputStream = new DeflaterOutputStream(byteArrayOutputStream, deflater);&lt;br/&gt;        deflaterOutputStream.write(requestMessage.getBytes());&lt;br/&gt;        deflaterOutputStream.close();&lt;br/&gt;                 &lt;br/&gt;        /* Encoding the compressed message */&lt;br/&gt;        String encodedRequestMessage = Base64.encodeBytes(byteArrayOutputStream.toByteArray(), Base64.DONT_BREAK_LINES);&lt;br/&gt;        String encodedAuthnRequest = URLEncoder.encode(encodedRequestMessage,&amp;#8221;UTF-8&amp;#8221;).trim();;&lt;br/&gt;        &lt;br/&gt;        return encodedAuthnRequest;&lt;br/&gt;    }&lt;br/&gt;    &lt;br/&gt;    &lt;br/&gt;    public static &amp;lt;T&amp;gt; T createSAMLObject(final Class&amp;lt;T&amp;gt; clazz) throws IllegalArgumentException, SecurityException, IllegalAccessException, NoSuchFieldException {&lt;br/&gt;         XMLObjectBuilderFactory builderFactory = Configuration.getBuilderFactory();&lt;br/&gt;         &lt;br/&gt;         QName defaultElementName = (QName)clazz.getDeclaredField(&amp;#8220;DEFAULT_ELEMENT_NAME&amp;#8221;).get(null);&lt;br/&gt;         Map&amp;lt;QName, XMLObjectBuilder&amp;gt; builderMap= builderFactory.getBuilders();&lt;br/&gt;         System.out.println(&amp;#8220;is nul &amp;#8220;  + builderMap.get(defaultElementName));&lt;br/&gt;         &lt;br/&gt;        return null;&lt;br/&gt;    }&lt;br/&gt;    &lt;br/&gt;    private static void doBootstrap() {&lt;br/&gt;        if(!isBootstraped) {&lt;br/&gt;            try {&lt;br/&gt;                DefaultBootstrap.bootstrap();&lt;br/&gt;                isBootstraped = true;&lt;br/&gt;            } catch (ConfigurationException e) {&lt;br/&gt;                logger.error(&amp;#8220;Error calling bootstrap&amp;#8221;, e);&lt;br/&gt;            }&lt;br/&gt;        }&lt;br/&gt;    }&lt;br/&gt;    &lt;br/&gt;    public static Map&amp;lt;String, String&amp;gt; processResponse(String response) {&lt;br/&gt;&lt;br/&gt;        XMLObject resp = null;&lt;br/&gt;        &lt;br/&gt;        try {&lt;br/&gt;            resp = unmarshall(response);&lt;br/&gt;        } catch (ConfigurationException e) {&lt;br/&gt;            // TODO Auto-generated catch block&lt;br/&gt;            e.printStackTrace();&lt;br/&gt;        } catch (ParserConfigurationException e) {&lt;br/&gt;            // TODO Auto-generated catch block&lt;br/&gt;            e.printStackTrace();&lt;br/&gt;        } catch (SAXException e) {&lt;br/&gt;            // TODO Auto-generated catch block&lt;br/&gt;            e.printStackTrace();&lt;br/&gt;        } catch (IOException e) {&lt;br/&gt;            // TODO Auto-generated catch block&lt;br/&gt;            e.printStackTrace();&lt;br/&gt;        } catch (UnmarshallingException e) {&lt;br/&gt;            // TODO Auto-generated catch block&lt;br/&gt;            e.printStackTrace();&lt;br/&gt;        }&lt;br/&gt;        &lt;br/&gt;        return getResult(resp);&lt;br/&gt;        &lt;br/&gt;    }&lt;br/&gt;    &lt;br/&gt;    private static XMLObject unmarshall(String responseMessage) throws ConfigurationException,&lt;br/&gt;                            ParserConfigurationException, SAXException, IOException, UnmarshallingException {&lt;br/&gt;        &lt;br/&gt;        doBootstrap();&lt;br/&gt;        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();&lt;br/&gt;        documentBuilderFactory.setNamespaceAware(true);&lt;br/&gt;        DocumentBuilder docBuilder = documentBuilderFactory.newDocumentBuilder();&lt;br/&gt;        &lt;br/&gt;        byte[] base64DecodedResponse = Base64.decode(responseMessage.trim());&lt;br/&gt;        &lt;br/&gt;        System.out.println(new String(base64DecodedResponse));&lt;br/&gt;        &lt;br/&gt;        ByteArrayInputStream is = new ByteArrayInputStream(base64DecodedResponse);&lt;br/&gt;        &lt;br/&gt;        Document document = docBuilder.parse(is);&lt;br/&gt;        Element element = document.getDocumentElement();&lt;br/&gt;        UnmarshallerFactory unmarshallerFactory = Configuration.getUnmarshallerFactory();&lt;br/&gt;        Unmarshaller unmarshaller = unmarshallerFactory.getUnmarshaller(element);&lt;br/&gt;        return unmarshaller.unmarshall(element);&lt;br/&gt;        &lt;br/&gt;    }&lt;br/&gt;    &lt;br/&gt;    private static Map&amp;lt;String, String&amp;gt; getResult(XMLObject responseXmlObj) {&lt;br/&gt;&lt;br/&gt;        if (responseXmlObj.getDOM().getNodeName().equals(&amp;#8220;saml2p:LogoutResponse&amp;#8221;)) {&lt;br/&gt;            logger.error(&amp;#8220;user logout&amp;#8221;);&lt;br/&gt;            return null;&lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;        Response response = (Response) responseXmlObj;&lt;br/&gt;        logger.info(&amp;#8220;SAML resp&amp;#8221; + response);&lt;br/&gt;&lt;br/&gt;        Assertion assertion = response.getAssertions().get(0);&lt;br/&gt;        Map&amp;lt;String, String&amp;gt; resutls = new HashMap&amp;lt;String, String&amp;gt;();&lt;br/&gt;&lt;br/&gt;        /*&lt;br/&gt;         * If the request has failed, the IDP shouldn&amp;#8217;t send an assertion.&lt;br/&gt;         * SSO profile spec 4.1.4.2 &amp;lt;Response&amp;gt; Usage&lt;br/&gt;         */&lt;br/&gt;        if (assertion&amp;#160;!= null) {&lt;br/&gt;&lt;br/&gt;            String subject = assertion.getSubject().getNameID().getValue();&lt;br/&gt;            resutls.put(&amp;#8220;Subject&amp;#8221;, subject); // get the subject&lt;br/&gt;&lt;br/&gt;            List&amp;lt;AttributeStatement&amp;gt; attributeStatementList = assertion.getAttributeStatements();&lt;br/&gt;&lt;br/&gt;            if (attributeStatementList&amp;#160;!= null) {&lt;br/&gt;                // we have received attributes of user&lt;br/&gt;                Iterator&amp;lt;AttributeStatement&amp;gt; attribStatIter = attributeStatementList.iterator();&lt;br/&gt;                while (attribStatIter.hasNext()) {&lt;br/&gt;                    AttributeStatement statment = attribStatIter.next();&lt;br/&gt;                    List&amp;lt;Attribute&amp;gt; attributesList = statment.getAttributes();&lt;br/&gt;                    Iterator&amp;lt;Attribute&amp;gt; attributesIter = attributesList.iterator();&lt;br/&gt;                    while (attributesIter.hasNext()) {&lt;br/&gt;                        Attribute attrib = attributesIter.next();&lt;br/&gt;                        Element value = attrib.getAttributeValues().get(0).getDOM();&lt;br/&gt;                        String attribValue = value.getTextContent();&lt;br/&gt;                        resutls.put(attrib.getName(), attribValue);&lt;br/&gt;                    }&lt;br/&gt;                }&lt;br/&gt;            }&lt;br/&gt;        }&lt;br/&gt;        return resutls;&lt;br/&gt;    }&lt;br/&gt;    &lt;br/&gt;    public static String createID() {&lt;br/&gt;&lt;br/&gt;        byte[] bytes = new byte[20]; // 160 bit&lt;br/&gt;        &lt;br/&gt;        new Random().nextBytes(bytes);&lt;br/&gt;        &lt;br/&gt;        char[] charMapping = {&amp;#8216;a&amp;#8217;, &amp;#8216;b&amp;#8217;, &amp;#8216;c&amp;#8217;, &amp;#8216;d&amp;#8217;, &amp;#8216;e&amp;#8217;, &amp;#8216;f&amp;#8217;, &amp;#8216;g&amp;#8217;, &amp;#8216;h&amp;#8217;, &amp;#8216;i&amp;#8217;, &amp;#8216;j&amp;#8217;, &amp;#8216;k&amp;#8217;, &amp;#8216;l&amp;#8217;, &amp;#8216;m&amp;#8217;, &amp;#8216;n&amp;#8217;, &amp;#8216;o&amp;#8217;, &amp;#8216;p&amp;#8217;};&lt;br/&gt;&lt;br/&gt;        char[] chars = new char[40];&lt;br/&gt;&lt;br/&gt;        for (int i = 0; i &amp;lt; bytes.length; i++) {&lt;br/&gt;            int left = (bytes[i]&amp;#160;&amp;#187; 4) &amp;amp; 0x0f;&lt;br/&gt;            int right = bytes[i] &amp;amp; 0x0f;&lt;br/&gt;            chars[i * 2] = charMapping[left];&lt;br/&gt;            chars[i * 2 + 1] = charMapping[right];&lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;        return String.valueOf(chars);&lt;br/&gt;    }&lt;br/&gt;    &lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;[1] &lt;a href=&quot;http://wso2.com/products/identity-server/&quot;&gt;http://wso2.com/products/identity-server/&lt;/a&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;[2] &lt;a href=&quot;https://wiki.shibboleth.net/confluence/display/OpenSAML/Home&quot;&gt;https://wiki.shibboleth.net/confluence/display/OpenSAML/Home&lt;/a&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;[3] &lt;a href=&quot;http://pavithramadurangi.blogspot.com/2013/09/saml-20-sso-with-wso2-is-450.html&quot;&gt;http://pavithramadurangi.blogspot.com/2013/09/saml-20-sso-with-wso2-is-450.html&lt;/a&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://sahanlm.blogspot.com/feeds/544398505802846742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sahanlm.blogspot.com/2014/07/wso2-is-saml-sso-using-opensaml-java.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/544398505802846742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/544398505802846742'/><link rel='alternate' type='text/html' href='http://sahanlm.blogspot.com/2014/07/wso2-is-saml-sso-using-opensaml-java.html' title='WSO2 IS SAML SSO using openSAML java library'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17507492010731314081</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4664324677113140555.post-6571701204161642604</id><published>2014-03-19T02:28:00.000+05:00</published><updated>2014-10-15T08:29:33.075+05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="regular"/><title type='text'>WSO2 esb JSON proxy REST API SAMPLE</title><content type='html'>&lt;p&gt;&amp;lt;?xml version=&amp;#8221;1.0&amp;#8221; encoding=&amp;#8221;UTF-8&amp;#8221;?&amp;gt;&lt;br/&gt;&amp;lt;api xmlns=&amp;#8221;http://ws.apache.org/ns/synapse&amp;#8221;&lt;br/&gt;     name=&amp;#8221;SelfcareMobile&amp;#8221;&lt;br/&gt;     context=&amp;#8221;/a/b&amp;#8221;&amp;gt;&lt;br/&gt;   &amp;lt;resource methods=&amp;#8221;POST&amp;#8221; url-mapping=&amp;#8221;/c/*&amp;#8221;&amp;gt;&lt;br/&gt;      &amp;lt;inSequence&amp;gt;&lt;br/&gt;         &amp;lt;property name=&amp;#8221;messageType&amp;#8221;&lt;br/&gt;                   value=&amp;#8221;application/json&amp;#8221;&lt;br/&gt;                   scope=&amp;#8221;axis2&amp;#8221;&lt;br/&gt;                   type=&amp;#8221;STRING&amp;#8221;/&amp;gt;&lt;br/&gt;         &amp;lt;property name=&amp;#8221;contentType&amp;#8221;&lt;br/&gt;                   value=&amp;#8221;application/json&amp;#8221;&lt;br/&gt;                   scope=&amp;#8221;axis2&amp;#8221;&lt;br/&gt;                   type=&amp;#8221;STRING&amp;#8221;/&amp;gt;&lt;br/&gt;         &amp;lt;log level=&amp;#8221;full&amp;#8221;/&amp;gt;&lt;br/&gt;         &amp;lt;send&amp;gt;&lt;br/&gt;            &amp;lt;endpoint&amp;gt;&lt;br/&gt;               &amp;lt;http format=&amp;#8221;rest&amp;#8221;&lt;br/&gt;                     method=&amp;#8221;post&amp;#8221;&lt;br/&gt;                     uri-template=&amp;#8221;YOUR_BACK_END_URL&amp;#8221;/&amp;gt;&lt;br/&gt;            &amp;lt;/endpoint&amp;gt;&lt;br/&gt;         &amp;lt;/send&amp;gt;&lt;br/&gt;      &amp;lt;/inSequence&amp;gt;&lt;br/&gt;      &amp;lt;outSequence&amp;gt;&lt;br/&gt;         &amp;lt;send/&amp;gt;&lt;br/&gt;      &amp;lt;/outSequence&amp;gt;&lt;br/&gt;   &amp;lt;/resource&amp;gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&amp;lt;/api&amp;gt;&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;*** URL-mapping&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Lets say our external url (which we give to outside )will be &amp;#8220;http://www.mysite.com/a/b/c/someservice&amp;#8221; and back end service will be &amp;#8220;http://yourip:port/something/&lt;strong&gt;c/someservice&lt;/strong&gt;&quot; .&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Then our url context for the api will be &amp;#8220;/a/b&amp;#8221;. Which means what has the url pattern of &amp;#8220;/a/b&amp;#8221; should go into this API.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;url-mapping will be &amp;#8220;/c/*&amp;#8221; which meas what ever has &amp;#8220;/c&amp;#8221; and after what ever string should use the given resource.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Last not least, our endpoint address should be like below. (note &amp;#8220;uri-template&amp;#8221; which is the back end address of the real REST service.&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&amp;lt;http format=&amp;#8221;rest&amp;#8221;&lt;br/&gt;                     method=&amp;#8221;post&amp;#8221;&lt;br/&gt;                     uri-template=&amp;#8221;http://yourip:port/something&amp;#8221;/&amp;gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Yeah you see it right, we ommit the &amp;#8220;/&lt;strong&gt;c/someservice&lt;/strong&gt;&quot; part from real back end url because when we tell to url-mapping in the resource tag it will put that part and append it to the uri-template to determine the final destination.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://sahanlm.blogspot.com/feeds/6571701204161642604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sahanlm.blogspot.com/2014/03/wso2-esb-json-proxy-rest-api-sample.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/6571701204161642604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/6571701204161642604'/><link rel='alternate' type='text/html' href='http://sahanlm.blogspot.com/2014/03/wso2-esb-json-proxy-rest-api-sample.html' title='WSO2 esb JSON proxy REST API SAMPLE'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17507492010731314081</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4664324677113140555.post-2934943250894277094</id><published>2013-12-17T03:41:00.000+05:00</published><updated>2014-10-15T08:29:33.147+05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="regular"/><category scheme="http://www.blogger.com/atom/ns#" term="wso2"/><category scheme="http://www.blogger.com/atom/ns#" term="wso2esb RESTful"/><title type='text'>WSO2 ESB - sample REST to REST API configuration</title><content type='html'>&lt;p&gt;&lt;em&gt;&lt;strong&gt;&amp;lt;api xmlns=&amp;#8221;http://ws.apache.org/ns/synapse&amp;#8221; name=&amp;#8221;TestApi&amp;#8221; context=&amp;#8221;/helloWorld&amp;#8221;&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;   &amp;lt;resource methods=&amp;#8221;GET&amp;#8221; url-mapping=&amp;#8221;/hello&amp;#8221;&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;      &amp;lt;inSequence&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;         &amp;lt;property name=&amp;#8221;ContentType&amp;#8221; value=&amp;#8221;text/xml&amp;#8221; scope=&amp;#8221;axis2&amp;#8221; type=&amp;#8221;STRING&amp;#8221;/&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;         &amp;lt;switch source=&amp;#8221;$axis2:HTTP_METHOD&amp;#8221;&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;            &amp;lt;case regex=&amp;#8221;GET&amp;#8221;&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;               &amp;lt;property name=&amp;#8221;HTTP_METHOD&amp;#8221; value=&amp;#8221;GET&amp;#8221; scope=&amp;#8221;axis2&amp;#8221; type=&amp;#8221;STRING&amp;#8221;/&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;            &amp;lt;/case&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;            &amp;lt;case regex=&amp;#8221;POST&amp;#8221;&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;               &amp;lt;property name=&amp;#8221;HTTP_METHOD&amp;#8221; value=&amp;#8221;POST&amp;#8221; scope=&amp;#8221;axis2&amp;#8221; type=&amp;#8221;STRING&amp;#8221;/&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;            &amp;lt;/case&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;            &amp;lt;default/&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;         &amp;lt;/switch&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;         &amp;lt;log/&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;         &amp;lt;send&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;            &amp;lt;endpoint&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;               &amp;lt;address uri=&amp;#8221;http://localhost:8080/HelloRestFul&amp;#8221; format=&amp;#8221;pox&amp;#8221;/&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;            &amp;lt;/endpoint&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;         &amp;lt;/send&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;      &amp;lt;/inSequence&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;      &amp;lt;outSequence&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;         &amp;lt;log/&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;         &amp;lt;send/&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;      &amp;lt;/outSequence&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;   &amp;lt;/resource&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;&amp;lt;/api&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;                       &lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://sahanlm.blogspot.com/feeds/2934943250894277094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sahanlm.blogspot.com/2013/12/wso2-esb-sample-rest-to-rest-api.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/2934943250894277094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/2934943250894277094'/><link rel='alternate' type='text/html' href='http://sahanlm.blogspot.com/2013/12/wso2-esb-sample-rest-to-rest-api.html' title='WSO2 ESB - sample REST to REST API configuration'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17507492010731314081</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4664324677113140555.post-7875487358906848126</id><published>2013-12-05T01:24:00.000+05:00</published><updated>2014-10-15T08:29:33.162+05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="regular"/><category scheme="http://www.blogger.com/atom/ns#" term="wso2esb wso2 esb tcp tcpserver esbclient"/><title type='text'>WSO2 ESB exposing Web Service Proxy to a TCP client PART 2 : Sending&#xa;batch responses from ESB to TCP server</title><content type='html'>&lt;p&gt;In my &lt;a href=&quot;http://sahanlm.tumblr.com/post/68869152703/wso2-esb-exposing-web-service-proxy-to-a-tcp-client&quot;&gt;last post&lt;/a&gt; regarding how to expose a web service for a TCP client we have discussed about retrieving a request in plain text format from a TCP client, convert it to SOAP message and send to the back end webservice.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;In that post I have mentioned that according to our implementation we did not need to send the response back to the TCP client immediately due to that our responses are not synchronous.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;So what we did to achieve this asynchronous status is converting the ESB it self to a TCP client and send the responses as batches to a TCP server.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;So in this article I am going to explain how to use the WSO2 ESB as a TCP client where we needed to convert the XML responses to delimited string sequences before sending to TCP server. &lt;/p&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;To convert the XML file to delimited string sequence we have used the smooks mediator. (Refer the smooks configuration below)&lt;/p&gt;&lt;br/&gt;&lt;p&gt;In above example we are converting a xml file that has an entity called &amp;#8220;Login&amp;#8221;. Each login element has three child elements.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Freemarker tool has been used to convert the XML elements to text fields and delimit two values.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;&amp;lt;smooks-resource-list xmlns=&amp;#8221;http://www.milyn.org/xsd/smooks-1.1.xsd&amp;#8221; xmlns:ftl=&amp;#8221;http://www.milyn.org/xsd/smooks/freemarker-1.1.xsd&amp;#8221; xmlns:core=&amp;#8221;http://www.milyn.org/xsd/smooks/smooks-core-1.3.xsd&amp;#8221; xmlns:file=&amp;#8221;http://www.milyn.org/xsd/smooks/file-routing-1.1.xsd&amp;#8221;&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;      &amp;lt;core:filterSettings type=&amp;#8221;SAX&amp;#8221; defaultSerialization=&amp;#8221;false&amp;#8221;/&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;      &amp;lt;resource-config selector=&amp;#8221;//batchTransfer/returnVal/login&amp;#8221;&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;         &amp;lt;resource&amp;gt;org.milyn.delivery.DomModelCreator&amp;lt;/resource&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;      &amp;lt;/resource-config&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;      &amp;lt;ftl:freemarker applyOnElement=&amp;#8221;login&amp;#8221;&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;         &amp;lt;ftl:template&amp;gt;${.vars[&amp;#8220;login&amp;#8221;].id},${.vars[&amp;#8220;login&amp;#8221;].password},${.vars[&amp;#8220;login&amp;#8221;].userName}&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;           &amp;lt;/ftl:template&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;      &amp;lt;/ftl:freemarker&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;   &amp;lt;/smooks-resource-list&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Save above smooks configuration as a Local XML entry.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Then to send a batch of responses to ESB from our back end, we have created a dummy web service proxy inside ESB. This dummy web service connect to the TCP server, thus the TCP server now acts as the back end. Also we have hand written a WSDL and expose that hand written WSDL through the ESB. This way we can configure what kind or SOAP structure accept by this dummy proxy web service and then convert the XML resides within that proxy and then send those converted text to the back end TCP server.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Below is the WSDL which we hand written for the above &amp;#8220;Login batch response&amp;#8221; example.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;&amp;lt;wsdl:definitions xmlns:wsdl=&amp;#8221;http://schemas.xmlsoap.org/wsdl/&amp;#8221; xmlns:xsd=&amp;#8221;http://www.w3.org/2001/XMLSchema&amp;#8221; xmlns:soap=&amp;#8221;http://schemas.xmlsoap.org/wsdl/soap/&amp;#8221; xmlns:tns=&amp;#8221;com.mobitel.test&amp;#8221; name=&amp;#8221;test&amp;#8221; targetNamespace=&amp;#8221;com.mobitel.test&amp;#8221;&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;      &amp;lt;wsdl:types&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;         &amp;lt;xsd:schema targetNamespace=&amp;#8221;com.mobitel.test&amp;#8221;&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;            &amp;lt;xsd:element name=&amp;#8221;batchTransfer&amp;#8221; type=&amp;#8221;tns:batchTransfer&amp;#8221;/&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;            &amp;lt;xsd:element name=&amp;#8221;batchTransferResponse&amp;#8221; type=&amp;#8221;tns:batchTransferResponse&amp;#8221;/&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;            &amp;lt;xsd:complexType name=&amp;#8221;batchTransfer&amp;#8221;&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;               &amp;lt;xsd:sequence&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;                  &amp;lt;xsd:element name=&amp;#8221;returnVal&amp;#8221; type=&amp;#8221;tns:logins&amp;#8221;/&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;               &amp;lt;/xsd:sequence&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;            &amp;lt;/xsd:complexType&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;            &amp;lt;xsd:complexType name=&amp;#8221;logins&amp;#8221;&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;               &amp;lt;xsd:sequence&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;                  &amp;lt;xsd:element name=&amp;#8221;login&amp;#8221; type=&amp;#8221;tns:login&amp;#8221; nillable=&amp;#8221;true&amp;#8221; minOccurs=&amp;#8221;0&amp;#8221; maxOccurs=&amp;#8221;unbounded&amp;#8221;/&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;               &amp;lt;/xsd:sequence&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;            &amp;lt;/xsd:complexType&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;            &amp;lt;xsd:complexType name=&amp;#8221;login&amp;#8221;&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;               &amp;lt;xsd:sequence&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;                  &amp;lt;xsd:element name=&amp;#8221;id&amp;#8221; type=&amp;#8221;xsd:int&amp;#8221;/&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;                  &amp;lt;xsd:element name=&amp;#8221;password&amp;#8221; type=&amp;#8221;xsd:string&amp;#8221;/&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;                  &amp;lt;xsd:element name=&amp;#8221;userName&amp;#8221; type=&amp;#8221;xsd:string&amp;#8221;/&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;               &amp;lt;/xsd:sequence&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;            &amp;lt;/xsd:complexType&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;            &amp;lt;xsd:complexType name=&amp;#8221;batchTransferResponse&amp;#8221;/&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;         &amp;lt;/xsd:schema&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;      &amp;lt;/wsdl:types&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;      &amp;lt;wsdl:message name=&amp;#8221;batchTransferRequest&amp;#8221;&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;         &amp;lt;wsdl:part element=&amp;#8221;tns:batchTransfer&amp;#8221; name=&amp;#8221;parameters&amp;#8221;/&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;      &amp;lt;/wsdl:message&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;      &amp;lt;wsdl:message name=&amp;#8221;batchTransferResponse&amp;#8221;&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;         &amp;lt;wsdl:part element=&amp;#8221;tns:batchTransferResponse&amp;#8221; name=&amp;#8221;parameters&amp;#8221;/&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;      &amp;lt;/wsdl:message&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;      &amp;lt;wsdl:portType name=&amp;#8221;test&amp;#8221;&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;         &amp;lt;wsdl:operation name=&amp;#8221;batchTransfer&amp;#8221;&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;            &amp;lt;wsdl:input message=&amp;#8221;tns:batchTransferRequest&amp;#8221;/&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;            &amp;lt;wsdl:output message=&amp;#8221;tns:batchTransferResponse&amp;#8221;/&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;         &amp;lt;/wsdl:operation&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;      &amp;lt;/wsdl:portType&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;      &amp;lt;wsdl:binding name=&amp;#8221;testSOAP&amp;#8221; type=&amp;#8221;tns:test&amp;#8221;&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;         &amp;lt;soap:binding style=&amp;#8221;document&amp;#8221; transport=&amp;#8221;http://schemas.xmlsoap.org/soap/http&amp;#8221;/&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;         &amp;lt;wsdl:operation name=&amp;#8221;batchTransfer&amp;#8221;&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;            &amp;lt;soap:operation soapAction=&amp;#8221;com.mobitel.test/NewOperation&amp;#8221;/&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;            &amp;lt;wsdl:input&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;               &amp;lt;soap:body use=&amp;#8221;literal&amp;#8221;/&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;            &amp;lt;/wsdl:input&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;            &amp;lt;wsdl:output&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;               &amp;lt;soap:body use=&amp;#8221;literal&amp;#8221;/&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;            &amp;lt;/wsdl:output&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;         &amp;lt;/wsdl:operation&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;      &amp;lt;/wsdl:binding&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;      &amp;lt;wsdl:service name=&amp;#8221;test&amp;#8221;&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;         &amp;lt;wsdl:port binding=&amp;#8221;tns:testSOAP&amp;#8221; name=&amp;#8221;testSOAP&amp;#8221;&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;            &amp;lt;soap:address location=&amp;#8221;http://localhost:8282/services/TcpOutput&amp;#8221;/&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;         &amp;lt;/wsdl:port&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;      &amp;lt;/wsdl:service&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;   &amp;lt;/wsdl:definitions&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;This way the user of this dummy web service can create a web service client by using the above WSDl expose from WSO2 ESB&amp;#8217;s dummy proxy service. Also the details such as back end is TCP can be hidden from the user.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Below is the dummy proxy for the &amp;#8220;Login batch response&amp;#8221; example.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;&amp;lt;?xml version=&amp;#8221;1.0&amp;#8221; encoding=&amp;#8221;UTF-8&amp;#8221;?&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;&amp;lt;proxy xmlns=&amp;#8221;http://ws.apache.org/ns/synapse&amp;#8221;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;       name=&amp;#8221;TcpOutput&amp;#8221;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;       transports=&amp;#8221;https,http,tcp&amp;#8221;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;       statistics=&amp;#8221;disable&amp;#8221;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;       trace=&amp;#8221;disable&amp;#8221;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;       startOnLoad=&amp;#8221;true&amp;#8221;&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;   &amp;lt;target&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;      &amp;lt;inSequence&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;         &amp;lt;log level=&amp;#8221;full&amp;#8221;/&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;         &amp;lt;smooks config-key=&amp;#8221;smooksXMLToText&amp;#8221;&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;            &amp;lt;input type=&amp;#8221;xml&amp;#8221;/&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;            &amp;lt;output type=&amp;#8221;text&amp;#8221;/&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;         &amp;lt;/smooks&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;         &amp;lt;log level=&amp;#8221;full&amp;#8221;/&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;         &amp;lt;property name=&amp;#8221;CONTENT_TYPE&amp;#8221;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;                   value=&amp;#8221;text/plain&amp;#8221;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;                   scope=&amp;#8221;axis2&amp;#8221;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;                   type=&amp;#8221;STRING&amp;#8221;/&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;         &amp;lt;property name=&amp;#8221;OUT_ONLY&amp;#8221; value=&amp;#8221;true&amp;#8221; scope=&amp;#8221;default&amp;#8221; type=&amp;#8221;STRING&amp;#8221;/&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;         &amp;lt;send&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;            &amp;lt;endpoint&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;               &amp;lt;address uri=&amp;#8221;tcp://localhost:9448&amp;#8221;/&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;            &amp;lt;/endpoint&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;         &amp;lt;/send&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;         &amp;lt;property name=&amp;#8221;FORCE_SC_ACCEPTED&amp;#8221;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;                   value=&amp;#8221;true&amp;#8221;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;                   scope=&amp;#8221;axis2&amp;#8221;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;                   type=&amp;#8221;STRING&amp;#8221;/&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;      &amp;lt;/inSequence&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;      &amp;lt;outSequence&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;         &amp;lt;send&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;            &amp;lt;endpoint&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;               &amp;lt;default/&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;            &amp;lt;/endpoint&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;         &amp;lt;/send&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;      &amp;lt;/outSequence&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;   &amp;lt;/target&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;   &amp;lt;publishWSDL key=&amp;#8221;testOutPutWsdl&amp;#8221;/&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;   &amp;lt;description/&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;&lt;strong&gt;&amp;lt;/proxy&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;br/&gt;                               &lt;/p&gt;&lt;br/&gt;&lt;p&gt;Here we have used 3 properties ( please refer the proxy xml above)&lt;/p&gt;&lt;br/&gt;&lt;p&gt;1. &lt;em&gt;&lt;strong&gt;&amp;lt;property name=&amp;#8221;CONTENT_TYPE&amp;#8221;&lt;/strong&gt;&lt;/em&gt;&lt;em&gt;&lt;strong&gt; value=&amp;#8221;text/plain&amp;#8221;&lt;/strong&gt;&lt;/em&gt;&lt;em&gt;&lt;strong&gt;               scope=&amp;#8221;axis2&amp;#8221;&lt;/strong&gt;&lt;/em&gt;&lt;em&gt;&lt;strong&gt; type=&amp;#8221;STRING&amp;#8221;/&amp;gt;&lt;/strong&gt;&lt;/em&gt;   &lt;/p&gt;&lt;br/&gt;&lt;p&gt;This will tell ESB that the output to back end will be &amp;#8220;text/plain&amp;#8221;. We needed this because our TCP server accept only text formate.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;2. &lt;em&gt;&lt;strong&gt;&amp;lt;property name=&amp;#8221;OUT_ONLY&amp;#8221; value=&amp;#8221;true&amp;#8221; scope=&amp;#8221;default&amp;#8221; type=&amp;#8221;STRING&amp;#8221;/&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;This will tell ESB that this proxy does not send a response or simply do not need a out sequence. Though we defined empty outsequance tag we does not expect web service client to wait for a response from back end TCP server.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;3. &lt;em&gt;&lt;strong&gt;&amp;lt;property name=&amp;#8221;FORCE_SC_ACCEPTED&amp;#8221; value=&amp;#8221;true&amp;#8221;                 scope=&amp;#8221;axis2&amp;#8221; type=&amp;#8221;STRING&amp;#8221;/&amp;gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;strong&gt;Add this property just after the SEND mediator. &lt;/strong&gt;We use this property to send a HTTP 202 ( no content ) response to the web service client to avoid it wait for response.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Also please note that in our dummy proxy web service we have enabled all the http,https,tcp transport types because in our proxy we retrieve the &amp;#8220;batch response&amp;#8221; request via HTTP or HTTPS and we use TCP to transport that &amp;#8220;batch response&amp;#8221; request to TCP server.&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;(Special thanks goes to Lalaji Sureshika from WSO2)&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://sahanlm.blogspot.com/feeds/7875487358906848126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sahanlm.blogspot.com/2013/12/wso2-esb-exposing-web-service-proxy-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/7875487358906848126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/7875487358906848126'/><link rel='alternate' type='text/html' href='http://sahanlm.blogspot.com/2013/12/wso2-esb-exposing-web-service-proxy-to.html' title='WSO2 ESB exposing Web Service Proxy to a TCP client PART 2 : Sending&#xa;batch responses from ESB to TCP server'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17507492010731314081</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4664324677113140555.post-6379099700284650087</id><published>2013-12-03T07:17:00.000+05:00</published><updated>2014-10-15T08:29:33.211+05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="esb"/><category scheme="http://www.blogger.com/atom/ns#" term="regular"/><category scheme="http://www.blogger.com/atom/ns#" term="smook"/><category scheme="http://www.blogger.com/atom/ns#" term="tcp"/><category scheme="http://www.blogger.com/atom/ns#" term="wso2"/><category scheme="http://www.blogger.com/atom/ns#" term="xml conversion"/><title type='text'>WSO2 ESB exposing Web Service Proxy to a TCP client. ( A.K.A TCP proxy)</title><content type='html'>&lt;p&gt;In this article I am going to explain how to create a proxy to a back end web service which accept TCP messages.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;In our case our TCP client was sending a delimited string to the ESB and we need ESB to convert the delimited string into a SOAP/XML file and call the web service.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;In our case we does not intend to send the response immediately back to the client rather than sending response as batches of several requests. Since I will explain how the batch response in another article.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;To accept the TCP requests you need to change your axis2.xml file inside &amp;lt;ESB_LOCATION&amp;gt;/repository/conf/axis2.xml file and add below two transport handler.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;1. Configure TCPTransportListener to listen to in coming TCP requests.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;em&gt;&amp;lt;transportReceiver name=&amp;#8221;tcp&amp;#8221; class=&amp;#8221;org.apache.axis2.transport.tcp.TCPTransportListener&amp;#8221;&amp;gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;      &amp;lt;parameter name=&amp;#8221;transport.tcp.port&amp;#8221;&amp;gt;6060&amp;lt;/parameter&amp;gt;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;    &amp;lt;/transportReceiver&amp;gt;&lt;/em&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;2. Configure TCPTransportSender to send responses over TCP (this handler will not want for this article but this will be used in next article for batch response sending )&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;em&gt;&amp;lt;transportSender name=&amp;#8221;tcp&amp;#8221; class=&amp;#8221;org.apache.axis2.transport.tcp.TCPTransportSender&amp;#8221;/&amp;gt;&lt;/em&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Then we use inbuilt &lt;a href=&quot;http://www.smooks.org/mediawiki/index.php?title=Main_Page&quot; title=&quot;smooks&quot;&gt;smooks &lt;/a&gt;handler to transform the delimited values into a XML entries.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;To do this we first need to add smooks configuration which act as a template to smooks handler. We need to add the smooks configuration as a local XML entry to ESB. To do this go to Main - &amp;gt; Service Bus -&amp;gt; Local Entries. And add a in-lined XML entry.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;(This is an example of smooks configuration which use to trans form delimited text to XML)&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;&amp;lt;smooks-resource-list xmlns=&amp;#8221;http://www.milyn.org/xsd/smooks-1.1.xsd&amp;#8221; xmlns:csv=&amp;#8221;http://www.milyn.org/xsd/smooks/csv-1.2.xsd&amp;#8221;&amp;gt;&lt;br/&gt;      &amp;lt;resource-config selector=&amp;#8221;org.xml.sax.driver&amp;#8221;&amp;gt;&lt;br/&gt;         &amp;lt;resource&amp;gt;org.milyn.csv.CSVReader&amp;lt;/resource&amp;gt;&lt;br/&gt;         &amp;lt;param name=&amp;#8221;fields&amp;#8221;&amp;gt;id,password,userName&amp;lt;/param&amp;gt;&lt;br/&gt;         &amp;lt;param name=&amp;#8221;rootElementName&amp;#8221;&amp;gt;addLogin&amp;lt;/param&amp;gt;&lt;br/&gt;         &amp;lt;param name=&amp;#8221;recordElementName&amp;#8221;&amp;gt;login&amp;lt;/param&amp;gt;&lt;br/&gt;      &amp;lt;/resource-config&amp;gt;&lt;br/&gt;   &amp;lt;/smooks-resource-list&amp;gt;&lt;br/&gt;                                    &lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Then add a new proxy which use the smooks mediator in &amp;#8220;Advance -&amp;gt; smooks&amp;#8221;, with TCP transport type allowed, and finally with port and content type properties as below.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Below is a sample&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;&amp;lt;?xml version=&amp;#8221;1.0&amp;#8221; encoding=&amp;#8221;UTF-8&amp;#8221;?&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;&amp;lt;proxy xmlns=&amp;#8221;http://ws.apache.org/ns/synapse&amp;#8221;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;       name=&amp;#8221;LoginProxy&amp;#8221;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;       transports=&amp;#8221;tcp&amp;#8221;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;       statistics=&amp;#8221;disable&amp;#8221;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;       trace=&amp;#8221;disable&amp;#8221;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;       startOnLoad=&amp;#8221;true&amp;#8221;&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;   &amp;lt;target&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;      &amp;lt;inSequence&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;         &amp;lt;smooks config-key=&amp;#8221;LoginDetails&amp;#8221;&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;            &amp;lt;input type=&amp;#8221;text&amp;#8221;/&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;            &amp;lt;output type=&amp;#8221;xml&amp;#8221;/&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;         &amp;lt;/smooks&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;         &amp;lt;send&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;            &amp;lt;endpoint&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;               &amp;lt;wsdl service=&amp;#8221;HelloServiceImplService&amp;#8221;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;                     port=&amp;#8221;HelloServiceImpl&amp;#8221;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;                     uri=&amp;#8221;http://localhost:8080//HelloWebService/services/HelloServiceImpl?wsdl&amp;#8221;/&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;            &amp;lt;/endpoint&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;         &amp;lt;/send&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;         &amp;lt;log level=&amp;#8221;full&amp;#8221;/&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;      &amp;lt;/inSequence&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;      &amp;lt;outSequence&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;         &amp;lt;log/&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;      &amp;lt;/outSequence&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;   &amp;lt;/target&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;   &amp;lt;parameter name=&amp;#8221;transport.tcp.port&amp;#8221;&amp;gt;9446&amp;lt;/parameter&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;   &amp;lt;parameter name=&amp;#8221;transport.tcp.contentType&amp;#8221;&amp;gt;text/plain&amp;lt;/parameter&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;   &amp;lt;description/&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;&lt;em&gt;&amp;lt;/proxy&amp;gt;&lt;/em&gt;&lt;/strong&gt;&lt;br/&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://sahanlm.blogspot.com/feeds/6379099700284650087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sahanlm.blogspot.com/2013/12/wso2-esb-exposing-web-service-proxy-to_3.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/6379099700284650087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/6379099700284650087'/><link rel='alternate' type='text/html' href='http://sahanlm.blogspot.com/2013/12/wso2-esb-exposing-web-service-proxy-to_3.html' title='WSO2 ESB exposing Web Service Proxy to a TCP client. ( A.K.A TCP proxy)'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17507492010731314081</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4664324677113140555.post-1307296018680404483</id><published>2013-11-07T03:39:00.000+05:00</published><updated>2014-10-15T08:29:33.225+05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="regular"/><title type='text'>How to move your blogs around.</title><content type='html'>&lt;p&gt;In this post I am going to describe how to move your blog from one platform to another. Since there are many famous platforms that offer various kind of user experience, it is more tend to keep several blogs in different platforms that has the same content. To synchronize these blogs we have to have some kind of automation.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Blogspot powered by google has functionality that support Wordpress but not Tumblr. In the other hand Tumblr support both Wordpress and Blogspot. Also Wordpress support backs both Tumblr and Wordpress.&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;1. Moving from Blogspot to Tumblr.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;a href=&quot;http://www.bloggertotumblr.com/&quot; title=&quot;Blogger to Tumblr&quot;&gt;This tool&lt;/a&gt;  gives an api to move your Blog in Google&amp;#8217;s Blogspot platfrom to Tumblr.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;2. Moving from Tumblr to Wordpress&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;a href=&quot;http://tumblr2wordpress.benapps.net/&quot; title=&quot;Tumbler to Wordpress&quot;&gt;This tool&lt;/a&gt; is giving you the ability to move your Tumblr blog posts to Wordpress platform. Its source code also available in &lt;a href=&quot;https://github.com/benward/tumblr2wordpress&quot; title=&quot;Tumbler to Wordpress GIt&quot;&gt;Git&lt;/a&gt; repository to download and host in your own server.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;3. Moving from Wordpress to Blogspot.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;a href=&quot;http://wordpress2blogger.appspot.com/&quot; title=&quot;Wordpress to Blogspot&quot;&gt;This tool&lt;/a&gt; gives the ability to move your blogs from Wordpress platform to Blogspot platform.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;4. Moving from Tumblr to Blogspot.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;This is a bit tricky task since google&amp;#8217;s Blogspot does not expose an Api to directly support Tumbler platform. Hence we have to be bit tricky. First convert your Tumblr into Wordpress format by using the tool given in section 2. This will download a XML file into your computer which is in Wordpress format. Now using the tool given in section 3 convert the downloaded xml file into Blogspot fomrat and save the XML file. Go to settings&amp;gt;import and import the downloaded XML file.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://sahanlm.blogspot.com/feeds/1307296018680404483/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sahanlm.blogspot.com/2013/11/how-to-move-your-blogs-around.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/1307296018680404483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/1307296018680404483'/><link rel='alternate' type='text/html' href='http://sahanlm.blogspot.com/2013/11/how-to-move-your-blogs-around.html' title='How to move your blogs around.'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17507492010731314081</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4664324677113140555.post-336284472949968134</id><published>2013-11-05T02:53:00.000+05:00</published><updated>2013-11-05T13:54:17.083+05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="regular"/><title type='text'>Google App Engine DataNucles Enhancer error</title><content type='html'>&lt;p&gt;When you update your GAE version to the latest, you might have been struck in the following error.&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;span&gt;java.lang.UnsupportedClassVersionError: com/google/appengine/tools/enhancer/Enhance&amp;#160;: Unsupported major.minor version 51.0&lt;/span&gt;&lt;/p&gt;&lt;br/&gt;&lt;pre class=&quot;lang-java prettyprint prettyprinted&quot;&gt;&lt;code&gt;&lt;span class=&quot;pln&quot;&gt;at java&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;lang&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;ClassLoader&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;defineClass1&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Native&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Method&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br/&gt;at java&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;lang&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;ClassLoader&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;defineClassCond&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Unknown&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Source&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br/&gt;at java&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;lang&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;ClassLoader&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;defineClass&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Unknown&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Source&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br/&gt;at java&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;security&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;SecureClassLoader&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;defineClass&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Unknown&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Source&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br/&gt;at java&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;net&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;URLClassLoader&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;defineClass&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Unknown&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Source&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br/&gt;at java&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;net&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;URLClassLoader&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;access$000&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Unknown&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Source&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br/&gt;at java&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;net&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;URLClassLoader$1&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Unknown&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Source&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br/&gt;at java&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;security&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;AccessController&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;doPrivileged&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Native&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Method&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br/&gt;at java&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;net&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;URLClassLoader&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;findClass&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Unknown&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Source&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br/&gt;at java&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;lang&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;ClassLoader&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;loadClass&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Unknown&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Source&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br/&gt;at sun&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;misc&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Launcher$AppClassLoader&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;loadClass&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Unknown&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Source&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br/&gt;at java&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;lang&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;ClassLoader&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;loadClass&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Unknown&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Source&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br/&gt;&lt;p&gt;Reason for this is that the JDK versions and JRE versions you use are conflict with either each other or the version compatible with the latest GAE SDK version.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;First thing I did is check for Java versions installed in my machine. I found out that I have java 1.6 and 1.7 both installed. So I change the default JDK to 1.7 (since newer GAE tends to be more support for java 7).&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Change your JDK_HOME, JRE_HOME and PATH variables to reflect the location of newest JDK in your machine.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Though this solve the above error, it might introduce a new error which is eclipse is not able to recognize the appengine-sdk at all.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&amp;#8220;&lt;span class=&quot;question-hyperlink&quot;&gt;Failed to initialize App Engine SDK at [path]&lt;/span&gt;&amp;#8221;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;The reason might be that when eclipse launch it do not use the default Java runtime. To force eclipse to use the default runtime, add the &amp;#8220;-vm&amp;#8221; argument to &amp;lt;eclipse-folder&amp;gt;\eclipse.ini file.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;-startup&lt;br/&gt;plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar&lt;br/&gt;&amp;#8212;launcher.library&lt;br/&gt;plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20130807-1835&lt;br/&gt;&lt;strong&gt;-vm&lt;/strong&gt;&lt;br/&gt;&lt;strong&gt;C:\Program Files\Java\jdk1.7.0_45\bin\javaw.exe&lt;/strong&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://sahanlm.blogspot.com/feeds/336284472949968134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sahanlm.blogspot.com/2013/11/google-app-engine-datanucles-enhancer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/336284472949968134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/336284472949968134'/><link rel='alternate' type='text/html' href='http://sahanlm.blogspot.com/2013/11/google-app-engine-datanucles-enhancer.html' title='Google App Engine DataNucles Enhancer error'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17507492010731314081</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4664324677113140555.post-4486972975348926531</id><published>2013-10-28T02:53:00.000+05:00</published><updated>2013-11-05T13:54:17.092+05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="regular"/><title type='text'>WSO2 ESB exposing a secure backend through a proxy.</title><content type='html'>&lt;p&gt;(Special thanks goes to Sumedha Kodithuwakku @ wso2 support team)&lt;/p&gt;&lt;br/&gt;&lt;p&gt;In this post i will describe how to generate a custom certificate using keytool and use that certificate to secure a your web service and finally how to expose the secured web service using a proxy in wso2 ESB.&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;1. Generate a custom certificate.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Open a command prompt and use the keytool to generate a certificate. Here I use the CN as localhost since we use locally host web service(keep this in mind for later use). The rule of thumb is that CN should be matches to the hostname of the wsdl endpoint to resolve it by the ESB.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;(Also using IP address as a CN would be a problematic so always stick to a host name rather than using an IP address.)&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Use the following command to generate a certificate&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;strong&gt;keytool -genkey -alias localhost -keyalg RSA -keystore localhost.jks&lt;/strong&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;strong&gt;***&lt;/strong&gt; When asked for the first and last name give the hostname which is localhost in our case.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Here you can use what ever name for -alias and - localhost.jks which is the alias of our certificate and name of the keystore if it newly create.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;then export that certificate to a &amp;#8220;.crt&amp;#8221; file using command below.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;strong&gt;keytool -export -alias localhost -file localhost.crt -keystore localhost.jks&lt;/strong&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;2 Adding a keystore to web server (tomcat in our example)&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Open the server.xml file in &amp;lt;tomcat-location&amp;gt;/conf/ folder and edit the &lt;em&gt;&lt;strong&gt;&amp;lt;Connector port=&amp;#8221;8443&amp;#8221;&lt;/strong&gt;&lt;/em&gt;tag as below.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;em&gt;&amp;lt;Connector port=&amp;#8221;8443&amp;#8221; protocol=&amp;#8221;HTTP/1.1&amp;#8221; SSLEnabled=&amp;#8221;true&amp;#8221;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;               maxThreads=&amp;#8221;150&amp;#8221; scheme=&amp;#8221;https&amp;#8221; secure=&amp;#8221;true&amp;#8221;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;               clientAuth=&amp;#8221;false&amp;#8221; sslProtocol=&amp;#8221;TLS&amp;#8221;&lt;/em&gt;&lt;br/&gt;&lt;em&gt;               keystoreFile=&amp;#8221;C:\keyStores\localhost.jks&amp;#8221; keystorePass=&amp;#8221;123456&amp;#8221; /&amp;gt;&lt;/em&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Here we have added the keystore and the password we newly created.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;3. Adding imported certificate to wso2 keystore and truststore.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Browse to &amp;lt;wso2-esb&amp;gt;\repository\resources\security folder. There is two keystore files namely &amp;#8220;client-truststore.jks&amp;#8221; and &amp;#8220;wso2carbon.jks&amp;#8221;. Use the below command to add the newly created and stored certificate (&lt;strong&gt;localhost.crt&lt;/strong&gt; as our example in part 1 ) to these two keystore. Provide alias as the host name used as CN.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;br/&gt;&lt;strong&gt;keytool -importcert -v -trustcacerts -file &amp;#8220;localhost.crt&amp;#8221; -alias localhost -keystore &amp;#8220;wso2carbon.jks&amp;#8221;&lt;/strong&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;strong&gt;keytool -importcert -v -trustcacerts -file &amp;#8220;localhost.crt&amp;#8221; -alias localhost -keystore &amp;#8220;client-truststore.jks&lt;/strong&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Since we are using localhost as our host we have update &amp;#8220;&lt;strong&gt;HostnameVerifier&lt;/strong&gt;&quot; parameter in &amp;lt;wso2-esb&amp;gt;repository/conf/axis2.xml file to allow all hosts.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;strong&gt;&amp;lt;parameter name=&amp;#8221;HostnameVerifier&amp;#8221;&amp;gt;AllowAll&amp;lt;/parameter&amp;gt;&lt;/strong&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;(This parameter can be found in &lt;strong&gt;&amp;lt;transportSender name=&amp;#8221;https&amp;#8221;&lt;/strong&gt; tags.)&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;4. Create a proxy as normal and add the https://localhost:8443/&amp;lt;your-service&amp;gt;?wsdl file as normally do.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Resources&amp;#160;:&lt;/p&gt;&lt;br/&gt;&lt;p&gt;[1] &lt;a href=&quot;http://blog.facilelogin.com/2011/02/wso2-esb-invoking-web-service-via-https.html&quot;&gt;http://blog.facilelogin.com/2011/02/wso2-esb-invoking-web-service-via-https.html&lt;/a&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;[2] &lt;a href=&quot;http://stackoverflow.com/questions/8443081/how-are-ssl-certificate-server-names-resolved-can-i-add-alternative-names-using/8444863#8444863&quot;&gt;&lt;a href=&quot;http://stackoverflow.com/questions/8443081/how-are-ssl-certificate-server-names-resolved-can-i-add-alternative-names-using/8444863#8444863&quot;&gt;http://stackoverflow.com/questions/8443081/how-are-ssl-certificate-server-names-resolved-can-i-add-alternative-names-using/8444863#8444863&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;[3] &lt;a href=&quot;http://stackoverflow.com/questions/19540289/how-to-fix-the-java-security-cert-certificateexception-no-subject-alternative?rq=1&quot;&gt;&lt;a href=&quot;http://stackoverflow.com/questions/19540289/how-to-fix-the-java-security-cert-certificateexception-no-subject-alternative?rq=1&quot;&gt;http://stackoverflow.com/questions/19540289/how-to-fix-the-java-security-cert-certificateexception-no-subject-alternative?rq=1&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://sahanlm.blogspot.com/feeds/4486972975348926531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sahanlm.blogspot.com/2013/10/wso2-esb-exposing-secure-backend.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/4486972975348926531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/4486972975348926531'/><link rel='alternate' type='text/html' href='http://sahanlm.blogspot.com/2013/10/wso2-esb-exposing-secure-backend.html' title='WSO2 ESB exposing a secure backend through a proxy.'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17507492010731314081</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4664324677113140555.post-3417498084289647714</id><published>2013-10-02T03:59:00.000+05:00</published><updated>2013-11-05T13:54:17.098+05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="governanceRegistry"/><category scheme="http://www.blogger.com/atom/ns#" term="regular"/><category scheme="http://www.blogger.com/atom/ns#" term="StartupFinalizerServiceComponent"/><category scheme="http://www.blogger.com/atom/ns#" term="wos2esb"/><category scheme="http://www.blogger.com/atom/ns#" term="wso2"/><category scheme="http://www.blogger.com/atom/ns#" term="wso2governanceRegistry"/><category scheme="http://www.blogger.com/atom/ns#" term="WstxParsingException"/><title type='text'>I WSO2ESB start up failed and hangout due to typo of wsdl saved in&#xa;governance registry</title><content type='html'>&lt;p&gt;Ok first of all i will tell what happened before the start up fail.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;1. We have added a wsdl file belong to one of our services into the governance registry.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;2. While manually editing the wsdl file which have been added to governance registry, some miss typing has occurred which changed a letter of one of the XML tags into upper case&lt;/p&gt;&lt;br/&gt;&lt;p&gt;3. Without knowing about the typo we saved the wsdl, (and here is the funny part&amp;#8230; ) ESB let that wsdl to be save in it&amp;#8217;s governance registry without parsing it or neither complaining us about the typo we did .. ( really&amp;#160;??? an enterprise level ESB does not check the documents edited&amp;#160;??? )&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;br/&gt;4. After some time for some reason we have restarted the ESB. ( and here the fun began. ) ESB hangout printing an exception complaining XML parsing error when it try to load that wsdl file where the error happened. And the admin console is not loading because OSGI module that correspond to esb (Synapsys) is waiting until all the wsdl loads. &lt;strong&gt;(This is the biggest fault - not letting other services, and esb to start because a wsdl typo occurred where it should parse the wsdl before save it to registry )&lt;/strong&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;At the end of the console we can see the following message printed time to time without starting the ESB and the services due to what happened that has been described above.&lt;/p&gt;&lt;br/&gt;&lt;p&gt; &lt;em&gt;StartupFinalizerServiceComponent Waiting for required OSGi services: org.wso2.carbon.mediation.initializer.services.SynapseEnvironmentService&lt;/em&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;And this is the exception which complains about that our wsdl could not be parsed at startup.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;em&gt;&lt;span class=&quot;st&quot;&gt;WstxParsingException: Illegal processing instruction target (&amp;#8220;xml&amp;#8221;); xml (case insensitive) is reserved by the specs. at [row,col&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;There were 0 documentation and no entry about how to handle such a situation.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;According to this exception we guessed the work around for this problem is just to remove the erroneous wsdl file from the governance registry. But wso2esb it self should not let that wsdl added to the registry at the first place. Even it did add, there should be some way to remove the erroneous wsdl related proxy and start up the esb and other proxy services. But it does not have that feature yet.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;So how the hell we edit the governance registry without esb up.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Well, there is no proper way wso2 has exposed to do that. ( i could not find any thing on the web that&amp;#8217;s why i write this blog entry apart from that to complement wso2 esb team about this s:D )&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;br/&gt;What we did is this,&lt;/p&gt;&lt;br/&gt;&lt;p&gt;1. Shut down the esb , copy and back up the databases folder in &amp;lt;wso2esb_home&amp;gt;/repository/database&lt;/p&gt;&lt;br/&gt;&lt;p&gt;2. Download any sql viewer tool that support h2 database management system. (yes wso2 default database is java h2 DBMS - in our case we used the default DBMS ). I used &lt;a href=&quot;http://www.google.lk/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;ved=0CC0QFjAA&amp;amp;url=http%3A%2F%2Fsquirrel-sql.sourceforge.net%2F&amp;amp;ei=x65LUtHyDszarAfotYGAAQ&amp;amp;usg=AFQjCNFQ6-GzD2BfvWUd9WRxBGWQor8zOA&amp;amp;sig2=qejAy4C18zTJnWXv1CCmDw&amp;amp;bvm=bv.53371865,d.bmk&quot;&gt;SQL Squirrel&lt;/a&gt; with &lt;a href=&quot;http://www.h2database.com/html/main.html&quot;&gt;h2 database jdbc driver&lt;/a&gt;.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;3. open/connect to the h2 database in above folder using the sql tool.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;4. find the &amp;#8220;REG_RESOURCE&amp;#8221; and &amp;#8220;REG_CONTENT&amp;#8221; tables in &amp;#8220;WSO2CARBON_DB/PUBLIC/TABLE/&amp;#8221; location.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;5. search for erroneous wsdl file name inside &amp;#8220;REG_RESOURCE&amp;#8221; (hint: use sql select). File name for a resource in &amp;#8220;REG_RESOURCE&amp;#8221; saved in &amp;#8220;REG_NAME&amp;#8221; column. &lt;/p&gt;&lt;br/&gt;&lt;p&gt;6. From the resulted row note down the value of &amp;#8220;REG_CONTENT_ID&amp;#8221; and search for that REG_CONTENT_ID in &amp;#8220;REG_CONTENT&amp;#8221; table. The resulting row is where the actual wsdl file saved as sql BLOB file type.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;em&gt;select rc.REG_CONTENT_ID from REG_RESOURCE rr, REG_CONTENT rc where rr.REG_NAME like &amp;#8216;%mywsdl.wsdl&amp;#8217; and rc.REG_CONTENT_ID=rr.REG_CONTENT_ID&lt;/em&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;7. To recover the wso2 esb from hanging out due to this erroneous wsdl remove the two entries related to &lt;em&gt;REG_CONTENT_ID&lt;/em&gt; of REG_NAME of the wsdl from two tables.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;8. Re start the wso2esb and you may find that exceptions are no more there and server does not hanging out any more.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;br/&gt;Yeah i know this is bit fishy and fundamental, but if we cant access the admin console due to that ESB not finishing up loading its OSGI module (because esb let it save error-nous wsdl inside the governance registry at the first place.) we cant do much rather than cracking the database and remove the wsdl manually right&amp;#160;??&lt;/p&gt;&lt;br/&gt;&lt;p&gt;PS&amp;#160;: there may be other artifacts such as proxies, sequences, endpoints using the removed wsdl, that may affected by the removal. so i instruct to remove those of which use the removed wsdl.&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://sahanlm.blogspot.com/feeds/3417498084289647714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sahanlm.blogspot.com/2013/10/i-wso2esb-start-up-failed-and-hangout.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/3417498084289647714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/3417498084289647714'/><link rel='alternate' type='text/html' href='http://sahanlm.blogspot.com/2013/10/i-wso2esb-start-up-failed-and-hangout.html' title='I WSO2ESB start up failed and hangout due to typo of wsdl saved in&#xa;governance registry'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17507492010731314081</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4664324677113140555.post-3822727238420741541</id><published>2013-09-09T04:20:00.000+05:00</published><updated>2013-11-05T13:54:17.105+05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="regular"/><title type='text'>When WSO2 ESB does not read groups from external LDAP</title><content type='html'>&lt;p&gt;Once I configured external LDAP (In my case using Apache DS) to use by both WSO2 Identity Server and WSO2 ESB, I came across a situation where WSO2 ESB does not show any of the user roles that has been created through Identity Server. Neither Identity server show any roles created in ESB.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;After going through lot of configurations I found it was due to this small line. So thought to blog about this for future use of other.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;br/&gt;Within &amp;#8220;&amp;lt;UserStoreManager&amp;gt;&amp;#8221; tags in your external LDAP configuration (in {wso2-esb-root}/repository/conf/user-mgt.xml folder), just add following line.&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&amp;lt;Property name=&amp;#8221;ReadLDAPGroups&amp;#8221;&amp;gt;true&amp;lt;/Property&amp;gt;&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;&lt;img alt=&quot;&quot; src=&quot;data:image/png;base64,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&quot; alt=&quot;&quot;/&gt;</content><link rel='replies' type='application/atom+xml' href='http://sahanlm.blogspot.com/feeds/3822727238420741541/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sahanlm.blogspot.com/2013/09/when-wso2-esb-does-not-read-groups-from.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/3822727238420741541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/3822727238420741541'/><link rel='alternate' type='text/html' href='http://sahanlm.blogspot.com/2013/09/when-wso2-esb-does-not-read-groups-from.html' title='When WSO2 ESB does not read groups from external LDAP'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17507492010731314081</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4664324677113140555.post-2896691775610035051</id><published>2013-09-04T04:45:00.000+05:00</published><updated>2013-11-05T13:54:17.118+05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ApacheDS"/><category scheme="http://www.blogger.com/atom/ns#" term="IdentityServer"/><category scheme="http://www.blogger.com/atom/ns#" term="ldap"/><category scheme="http://www.blogger.com/atom/ns#" term="regular"/><category scheme="http://www.blogger.com/atom/ns#" term="wso2"/><title type='text'>Configure WSO2 Identity server to use Apache DS LDAP</title><content type='html'>&lt;p&gt;&lt;strong&gt;1. Configure a LDAP from Apache DS.&lt;/strong&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;To configure Apache DS first download the latest version of apache directory studio from &lt;a href=&quot;http://directory.apache.org/studio/downloads.html&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Then install the setup (for windows users) and start the Apache Directory Studio.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Then go to &amp;#8220;Window - &amp;gt; show view -&amp;gt; other &amp;#8221; and select &amp;#8220;LDAP servers&amp;#8221;.&lt;/p&gt;&lt;br/&gt;&lt;img alt=&quot;&quot; src=&quot;data:image/png;base64,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&quot; alt=&quot;&quot;/&gt;&lt;br/&gt;&lt;p&gt;In the server view click on &amp;#8220;new server&amp;#8221; and create a new server instance. Start the server by right clicking on the server instance and click on &amp;#8220;start&amp;#8221;.&lt;/p&gt;&lt;br/&gt;&lt;img alt=&quot;&quot; src=&quot;data:image/png;base64,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&quot; alt=&quot;&quot;/&gt;&lt;br/&gt;&lt;p&gt;Then go to connections tab next to the LDAP servers tab and create a new connection. &lt;/p&gt;&lt;br/&gt;&lt;img alt=&quot;&quot; src=&quot;data:image/png;base64,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&quot; alt=&quot;&quot;/&gt;&lt;br/&gt;&lt;p&gt;This will open &amp;#8220;&lt;span class=&quot;guilabel&quot;&gt;New LDAP Connection&lt;/span&gt;&quot; wizard.&lt;/p&gt;&lt;br/&gt;&lt;img alt=&quot;&quot; src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAnsAAAH7CAIAAAA7Ds6FAAAgAElEQVR4nOy9d3QcVbroW/7vvfXeu+udWffddc/hzswZ7hyYwZcMwyCGc2eMbcIwlo3BYA8wjAcExgxgsA3YJFuSldVq5SxZwVIrWznnnDtU6uqcU7WyLcmS/f7YXdXV0S1Zlg3sb/1Wr63q6qruUqt++r69qzaytn4dAoFAIBDI7Qa5srwGgUAgEAjkdoPML61CIBAIBAK53SAz8ysQCAQCgUBuN4jJdgUCgUAgEMjtBtFbliAQCAQCgdxuEAlFQyAQCAQCud0gEsoOgUAgEAjkdoNg8pntBJXZXaEhEAgE8tPGxQvbbKXtBMEVs7cV/96VULSEskEgEAjkpwrt37W3W1LbCUIqZ28ThGKGCy63YzIagFI2gERqFZMWCAQCgfw0kUitrBFYR+Byu5tBbp+qthNEqprbcty8i8vtrG5RyoZKrRLSIibNYtIsIkwAIW6cxgwQCAQC+SkgxI3s+R/oQEJaUKmV9S4Qh5trb4ewthNEplnYWij1PIBVL6GYIeR2XE5jMhtKWSVSi8OymEGIGaZQ/RSqn5LoJiEQCATy02BKogMnfyACIAWJ1IJSVkxmw+U0wdGtVDXHmmXLnbWdIArtwhYi18wDZOo5SjVLKWekSjupoHGZFaOsKGmWECYRbhBi+imJdlKsmRCqJoSq8Wnl2LRibFoxOiWHQCAQyI8bcMIfn1YCBUyKNVMSrRDTi3CDhDChpBmjrLjMSipoqdJOKWco1axMPcf6ZWu1tZ0gSt3iVsH1rkw9J1PPSpV2UmHHZTZMapGQJhFuEKK6SbF6QqQem1aOTsqHJ6ihcenQuHRglHAwgjvbEAgEAvmRAk7+wxPU6KR8bFo5IVJPitVCVCfCDRLShEktuMxGKuxSpV2mdhiXtcwWmms7QVT6pS3BxbuaeblmjlLNkgo7IbdhlEVMGEFeOyFUjU7JRyaooTFyYATvG8Z6ByU9A+LuflFXn7CrT9jZNw0aEAgEAvmx0t0v6hkQ9w5K+oaxgRF8aIwcmaBGp+QTQhXId8WEEaMshNxGKuyUalaumVNo5rmu3Sp5bSeI2nBlS+B4d0GhnZep56TKGaBbCWGaRnWTIvXYlGJ4ghoYJfqG0J4BcVefsL1nsq1rorVzrKVjtLl9pLl9pKltGDQgEAgE8mOlpWO0tXOsrWuivWeyq0/YMyDuG0IHRonhCWpsSjEpUk+jOglhAtKVKmdk6jmFdl6pW2Bdu1Xy2k6QxvbxLaBtrKFtrKFtrL51tK5lpLZ5+HLTYHVDf2Vtb3lNV2lVe3F5S2FpY15xXVZ+VXpOeUpmSWJaUULKxbjE3Fh+TkxCdgwvKzo+MwoCgUAgP3ai4zNjeFmx/Jz4pLyElItJ6cUpmSXpOWWZeZU5BTX5xXWFpY3F5S2lVe3lNV2Vtb3VDf2XmwZrm4frWkbqW0eBbhrbxrbGX9sIMrsVMTMzMzMzY7fbaZq2Wq1ms9loNOp0OrVaLZfLSZKUSCSTk5PDw8Pd3d0tLS21tbWVlZUCgaC4uLiwsLCwsPDixYv5+fl5MGDAgAHjxx75+fkFBQXFxcWlpaWVlZV1dXUtLS2dnZ19fX3Dw8Pj4+PT09MSiYQkSblcrlardTqd0Wg0m81Wq5WmabvdDqSzJf7azthK49I0bbPZLBaL0WjU6/WsbsVi8fj4eF9fX3Nzc1VVVVFRUWZmZlJSUnx8fHR0dGRkZERERHh4eHh4eBgMGDBgwPixR3h4eERERExMDI/HS0tLy8vLEwgEly9fbmlp6erq6u/vHx0dnZyc5EpXr9cbjUaLxWKz2WiahsZ1GtdkMrEJLkEQYrF4bGystbVVIBCkp6dfuHDhxIkT/7ZzJwQCgUB+yoSEhHz55Zfx8fHZ2dmlpaV1dXWtra09PT1DQ0MTExMikYggCG6aC407O8sxrtVqNZlMBoNBo9EoFAqpVCqRSMbHx3t6ekpLS5OSkkJDQ+/ZufNXDz6YmJc3t7o6t7o665+V1ZmVFS8su2D3xowH9hVXvL5w5W6BZllmWPFg2Y1lgC0wrH6xsFzlchVgvhmmwDBeYbmyEa4yj1eNV71junrVdHXZDddnvb0f79vZKO77vcsxL98hri6bl5cty8vmq8uWq8vgm2O5ehW0LVuKdePYXFi2MX9f9PIyzZwrltfW3nn33bWtjsSUlK3dYNrH723tBm8l/vr8cytra4l5eb968MF7du786KOPIiIi0tPTL126BDLd7u5uIF2xWEySpEKh0Gg0BoPBZDKBwvJP3bh2u50tKet0OpVKRVEUiqJTU1MDAwNNTU1paWmhoaE/u+ee5PyL6qWlAZpuMpmaTKYmo6mRQ4PR2GAw1usN9XpDnV5fp9PX6nSXNdoajaZGralRqatVqiqVqkqlrvZBjUpdo1LVqFSXOdQ4UAeK2tvG1RoGtVeqVN5Qa6rUmiq1GlDJolJXqjUsFWpNhVoNKFc5KXNHVaZSCxhKVepSlbpEpeJyiaFYpSpSOihUqgqVqgKlEnBR4SRfociTO8iVK3Llimy5PFsmy6JkmZQswwGVJqXSpFQKKU0mpckkmUSQiQSZSJB8gkxwQPBwB/E4EQfA8FiGGAyPwfBoDI/GsGgUi2KIRLFIFIuQoBES9IIEvSCWXBBLwjmEgYYEDRNLwjg/XkCxCxgeAcDxSJyIJEhAFEFGkdJoUhotpaKlVBQpdSPaG56r+VrTPzGkNEbqB8qN2FsjLgDiA4NHybyS4A0+hwRKxpcB5IBEmRw8lSiTJ1IyN5IoWaKUSpRSSVIqidNIkkqTSGkSKU12PpLJBJlMkMlMI4Ugk3EihSCScSIFJ1JxIpUgUkEDw1NxPA0nUjE8jSEdwzMwPN3ZwDIwPBPDMzE8C8OzcEcjG8OzcTwbx7MxPBvDc3A8F8dzcSKPIPIIIp8kL0qlBVKqkJIVyeSXFIpSpUqgUqsXF3cf+athcRGj7ZjdAX5TaADtFd3CQigvgb56FbPRDDbmkcHKxYpZrajVioKGBWBhGlbt3FzysXd0mIioERA1AuqyQFYrkNUKlLUCVa1AVVuqqy3V1ZYaagXmOoG5rsRaV2KrK6HrSux1pfZ6n8ww2OtL6XqBtV5grS+31Jeb68uN9eWG+nJtfbm2vkJdX6Gsr1DWVyjqKqjaCv30+OE9fzRcuTpA0+qlpeT8iz+75x4g3czMzJKSEla6w8PDk5OTKIpSFKVUKrlpLujK3RJ/bWdsjXHBmCmbzWY2m9kElyAIkUg0MjLS0dFRXl4OstuU/Hzx3JzDtd5oNBobjcYGo7HBYKg3GOr0+jq9vk6nq9NqL2s0l8GjWl2rVl9Wq2s1GkAdQ71WW6/RuOF8FqzgQZ0bGg33x1qttha0dTrP5bfCZZ3OiVZb40o1QxVAo3Gg1VZptZUAjaaCoZyhDKBWC9TqUoYStdqrkouVyiKlskipLFQqC4GPFYp8hSJfochTKHIVimyZLFsmy5TJMmSydIpKo6g0qTRFKk2WSpNIMpEkE0mSTxAJBJFAEDyC4BFEPADH43A8DsdjGWIwDBDNEMUQiWGRKBopkVxwJZwhTCIJk0jCxWLwI3jqAopGYBggEscjCSKKJAHRJBkN9EZR0VKpV1gF+lrB68qBEOsfinIjbiuIDwzezUiQyfzA9yBRJkv0+DFRLk+Uy8GPSXI5WJjEkEhRbDuJohxIpUkUlQxgvmDJJJkslSZJpcmgTRDJJJlCkikEkUIQqcxjKkGk4ngqQaQRRCqOp+HAu3g685iOA9FiGUwjE8MycRyQheNZOKNbHM/G8RyGXBzPxfE8gsgniIskWSCVFlJUkUx2SS4vUSpLVSr14uLuI0cMi4sYTQeoW8JFvb6My6OvXmWXuLjWE6vVF6jFglmt2rm5pJC/6STTREURQFpRJKssklUWKCsLVJUFmsoCXVWBrqrAVF1ori40VxdaGWw1RW7Q3rDWFFkvF1svF1suFxsvFxsuF+trirU1xeqaYmVNsaK6RF5dQlWXUNUl2omRQ8/90XD1arPZ3Gw2i+fmUvLzQaYbFxeXk5MjEAhqa2vb2tp6e3tHR0dFIhGO43K5XKPR6PV6s9nMFpa3xF/bGVtgXO4oZdCDyya4k5OTAwMDDQ0NeXl577333r0PPqheWvKjW1a6DYx0G/T6er2+Xqer1+kcwtNo6oApNZoGrRbQqNM16XRNOl2zVtus1bbodCzNrrR40OyXJg6+lnvS6EGDtyUNOl2DXt+g09W7UueDWle4wq5hqNbpqnU6p5I93Oy0slot4FiZVTKQcZFKVahQAPvmyeU5cnm2XJ5FURkUlUZRqVJpilSaJJUmkSSfIPh+XRsD8O9aFI1E0QgUjfBwrUO3YjEgXCx22JeR7gUgXRyPIIhIgnB6lyBY9d46GzLuHZFugMYNRLr+1espXa84vMvVMOPdRIoCOOxLUUngR/ClkkoTgWWZ71gySTrsC6TLkMIFx1lSGdIAGOawL4b59C6GuUk3G8NY74I0N89VusVyeYlS6WJcmsZo+uYJ7s2kq1tY+D4uzsW4m5UuarGgFot2bo5/9IhGNCm5lCu5lItfyiUu5UpLc6nSXFlprrI0VyXI0QhydIIcnSDHVJ5rLs81l+dYGWwVuW5YK3JtFbk0g7Ui11qRZ6nIM1fkGyvyDRX52op8bUW+pvyisvyiovyiXHCRElyUCi7igovakYHX/vQH1rjNZrN6aeneBx/ct2/f+fPnk5OTL168WFFRUV9f39HRMTg4ODExIZFIpFKpSqXSarU/6MLylhmXLSlrtVowYEokEo2NjXV1dVVWVqakpDzyyCOJeXkDNM0eZTeauDgKzsZGo7HBYGg0GBoNhgadrlGvb3T1X4tO16rXt+n1bXp9u17frtd36PWdAINho3S4YTQ68bqQQ7snBgOgjcVo5NJqMLQaDK1GoyctBgNLM4cmg6FJr28CDYOhCRwcvZ6lQa93/JsCygN6fZ1eX8vBU8/cTLpSq63QaoGSBWp1iVpdrFIVqVQFSmU+SHnl8iy5PJ2iUikqhTk58qXSBJJkjRvHIZYguN6N5hCF407pcohA0QsoegFFwwGema5EAp4Cur0AdIvjLrp1y3RZKIolmqKiOT9uDk93bsCjMhmX+O2FFxgJcrlX+N5I9CDJtQ3wmu8mM/luMuNgl3wXpLmMgFNIMoVtcLybShDAuGmcfNeZ5uJ4Oo5nuMFI12FcgsgmCJdMlyBymcKyo7ZMUYUyWbFcfkmhUC0s7D5yRDs/L7RYRFYrQGyzuSFh4LYlVqvEahVbrWJOQ2y1qufmvomNNS8uii0WNyKTsg4eCvFDRFKWyGQSmUxCDqqZmYS3X1VNjk7np4ryUyX5qZKLqfjFVOJiqrQgVVaQKitIVRWkqgpStQWp+sJUY2GqqTDVXJhqLkzln/6K3Tj/i68sRWmJXziXJH5xxlqcbi1ONxenG4vTjcUZ+uIMbXGGpjhDWZyhLM6QF2dQRRlkUQZelIEXZqCFGcqBnoP/+TTXuAM0nZiX98gjj3zxxRcxMTFZWVmXLl2qrq5uaWnp6ekZHR0VCoVgCJVGowGFZWhcm9ls1uv1Go1GJpNhGDY1NTU8PNzW1lZSUhIfH3/Pzp26K1dafOjWU7rNJlOT0djMqLfJYGg2Gpv1+haDoUWvB5ZtNxg6jMZOg6HLaOwyGruNxh6jsdcNk2nzmM29ZrPP5Rx6PDGZAN1czGYnHk91MXSaTCwdbrCON5naTSYXf3OFzdBsNDYbjU0A1tAGQwOAcXM9U71nU+dqnQ7YFyTBxSpVoUp1UanMUyiy5fJMmSxdJkulqBSKSpRK+SQJjMvz4VqvovXiWgZfrnUxLmgD6eJ4BAvHu16My5aat8W4N5HuHTVu4NL1412v6vXiXabOzFWvM+XleDeRo1tQZ05i812S5MLmuykkCfLdZBx38S4oNQOYNDedU2QGaW46jmeAfJfxbqY37+YSRB5J5pFkvlSaL5UWMGmuamHhuSNHlDMzYwbDuMEwbjROAEymyZtiNHpFOTNzJirKtLg4aTAAJhgOHgq54TcOHgoZ1+td0OnkNM17I1g5OjCZET+VET+dET+dES/JjJdkxuOZ8URmPJUZL8uMV2TGqzLjtFnxuqx4fVYcgLvHg4dCEj4/5bbEmMMz5vCMOQn6nARtToImJ0GZw1fm8OU5fCqHT+bw8Rw+ls0XZ/PF2XxRNl/R077/6Se4xm0xm3VXrtyzc+cnn3wSGhoK0tyysrL6+vrOzs6hoaGpqSkMw2QyGbhMCBSWf4hduVtmXFBS1uv1oKQskUgmJibAmKmCgoLIyMh7du6cu3bNq2gvqc18Mc2btkaPGSOG9ed71d90yL9skn5eI/6odPy9/MG/pXe/wWs+cKH2/cy2dkY5QLHdJlOvydRnMvWZTAMm06DZPGg2D3GxWG7K4CawWv1hsQxaLAMe9FssA1Zrv8XiBau132rts1hYej1h7N7tSpcrXlXdbjK1cfFwM5tMAx/X6/W1Ol2NTlel1VZoNAKN5pJaXaRUcqWbJpOlgjSXJBNIMp4k4z2S2pgNuhbkrBc4ug3zBYqGMXnwBQwL5+S7bskutyzsqBJzjHvr3r2lNPcu8O6t57s39y63zsxZyPYBs3VmZ8GZohKZ8nIiSSZKpYmuxnXAKTK7eNe1yJyCYakYlsopMqcxReZ035277j27INklyXyplM10VQsLzx0+TFqtPUplr1LZq1T2qVQs/Wq1GwOcxoBa3a9SDahU/a4QFsvJ8HDNzEy/StWvVHIJxLi9cnmfXN4nl/cyYCZTzP69soHuodjzw7HnR+POj8Wdn4g/PxV/bjr+nDj+HMo7h/POkbxzFO97Be97Je97Je87Ne87Ne+7+I8/dVMstx3/yada/jkN/5yaf17FPy/nn5fzz1P8UJIfivND0YRQcUKYMCFsmhc2wQsb54WNxYeRrfV/efwhrnGbzea5a9fu2bnz2LFj3377LY/Hy87OvnTpUk1NTWtra39///j4OFtY1uv1oLAMjWvSarVKpZIkSVBS7u3tra+vz83NDQsL82XcYpU5k5jVLlxTza1KZ1bElivDclO7RFMr1BaPqNO7ZdH14rMlox9ldL8Z3fjahcudTEbYazb3mUz9ZvOAxQLMOmKxjFosY1br7WCUw5jVOmazjdlso54w64wExrAPhji46XzAlX4OXGGzzu5h6GZw0bPZ3Gk2c93cZjK1GI1AvfV6fa1eX63TVWg0ZRpNiVpdpFJdVCrBiKoMmSyVopKl0kSpFBgXdN8G7lpP0bL4cm0oAzBumEQSyqj3ArOdCLdRVIxxo2+Pcbe2tnyXS3ej3uW7Spfvql5uFy/fQ7qJjHT5YIyeVMp6N5EgEgkCjN1LIogkgkjCcWDfJBxP5uDSuctINxXD0jAsDcPYZBd4l5vsZuJ4FoZlYZh36TLlZeXCwq7DhzGzuV0q7aCoDorqlMk65fIuV7o3AmoyfRYaqrLbu2WyLpmsSyZjG6zwPOvJ7PJOqdQNscEQ/Zdd0t72/gtf91/4evDC18MXvh6N/Ho88sx45JnpyDOiqDOSqDNY9Bki+gwVfUYWfUYec1bJEPfRx56mP3goJP6fH6tjv1bHfq2M+0YZ940i7hsq7hsq7hs87hs89hs09htxzDdTMd9MxnwzEfXdWNR3I1HfDUV9hzdd/vMjD3g17nvvvffVV1/FxMSkp6cXFBRUVFQ0NTVxC8tKpZLtyv2JGhcMm+J24uI4LhQKwT0dL1++nJWVde7cOV/GjRfZNAvXLFfWjEtrctsCpjYMiMjeKax9RFjUOZXSIgyrnjxzaeRYeveRyPrXLlzutlh6zeY+s7nfYhkAorVaR6zWMat13GabsNkmrNZJm80XExzcftwwNO0O89R4YIxx8CJvm23ElWEOQzabQ8k225DN5tXK3Bzap4k9kuZOxrutRmOT0dig19fq9TU6XaVWC6RbqFTmKxQ5TJoLCssJTEk51odrb5rUXvDovvUqWqdx2bZrsuuQrkeaG+U5Hmq70twfn3Q3512HbtmGW1sm41MU8C5fKk1kG8xYAeBdPjNCPpHrXYJIIohEHE/iwJVuMoal4HgKhgEc9mW8yya7zlIzhmVwvetbusr5+V1vvCE2GptwvIkgWgiihSRbpdJWqbQNQFEs7V6RSt0QGQyfnj+voOk2qbQdbIQk20myjSQPHgoBJ96Dh0LaCIKFu7wVx90Q6nSRLz5Ldrf2nDvde+5037nTg+dOD4eeHg09ORp6cjL05HTYSVHYSUn4SSz8pDT8JBV+kgo/KXdwSh5+KvbD4+wuwF5ij3+kjDgNkEeclkeclkWcJiNOkxGn0YjT6IXT4gunp8O/mAj/Yiz8i9HQr4ZDvxoM/ao/9Cu0rvKlh37j1bhHjx49ffp0REREcnJybm6uQCBoaGgAheXp6WkMw+RyuVarZbty7Xb7rStsO2NrjMsOmwL3mQKduENDQ52dndXV1RkZGd9++61P405ZVfOrxivrKts8qtJPU6phXDksJmv7JrKaR3mVPbySlveSWt9M6Nj3fdWfv63oBbVZi2XIah22WkesaEIwgiDBiajDqVO2npM7kJM9tmmbC1M07YLnEoY2wX4kWNDmXIIlBSOcCE7CXF/SE4YgyMkex4+TNN0q4LwgWNDi6WYaS2RW+ayHHqdph4ZpGjDG4uFjh4DZRNlmu2lyPGC1civb/RbL5Uv7ECQ4RsIpXzN90qBM3WE2txmNLUZjk8FQr9df1umqdLpyjQb06RYwteV0mQyMn0pgSsoxt+5aDl5dGyqRnJdIznsI2PEq19pyJEFEkmQkSUZ5SncbM90fRG35tue7jFzdhjS7tCmKT1F8oFg3SNIBQfBdpesAxwGOlBeAYck4noxhLE7vMvjyboaPK4i45WXl/Pyf3nijFUVjWlpiW1vj29p4bW0JHR38zk5+Z2dseXnMpUtcYl2Jr6hI7upK7uzk0iQWHz5xYlylSu7sTOrsTO7sTOroSOroSO7oOHgoxGQymUymg4dCktraWLjLE1tbE1tb+RwapqfP3Puz8cLswud/f+n535e88PuyF35f+cLvq194qu6lpxpf+l3LS092/PmJzpef6H35icGXnxx++clRhrGXnxx7+cnwgwfYXYC9hB88ML7vd+P7ngKM7XtqZN9TQ/ueGtj3VM++pzr+8lTby081v/x0w8tBl18KqnrpmYqXnil76RnBi8/0J0QG/df/y6tx//a3v508eTI8PJzP52dnZ5eUlNTW1oIRy+DCXHD/Ke5VubeusO2MrTcuGDYFrgvq6OioqqpKT0/3Y9zoMaPUvqxeXEcNdpHaNESoJ0lVt5CqHRRnN43waoZPp18+lVJzJKru2ZOCP31R0m+19lssg0C3NtuoDeMDdYX2TNlsUzbbtK3n1A7kZA8tpJ1Mb4R2wX4kWNDuXIIlByN7BBjzbDDw6zRNT9vt03Z7WRiCIAgS1sNxdjDj7J6TzFOTTno+RxAkWNDKtsN6Jr1YmR73ADjYXzbspzotKdmFBMeh7vZ1y4B7zOYuk6nTZGpn01yDoVanqwYdumr1JZWqUKnMUyqz5XJQWOYa15drI9xc61e0Dt2iqFfRsoSKxaHgUSwOZTp3nZkujl8AA6k4xvUv3Ts5iuouk+7tS3nBJUZsdsuXyRIoyqVNUXyKSuB4N4EkwWMCV7oEwTY8vZvE2DcRw5IwDHg3ydW7ySjq9C6KpvlWL7h8yHkFEUHkMAOpFPPzf3zjjSaxOKKhIbKpKaq5Oaa5Gdg3rq0tsqioDcfbfRNVVJTQ0ZHQ3g7gtbcntLfXi0SHPv10VKFIaGvjcWltPXgoRKvVarVaz6oyuzy+uRkQ19QU19QU19hYOzn55S/+n9GLmfl/eqzwT48V7XqsZNdjZbseq9j1aM3uR+t2P9K0+6G2PQ+1732oe+9D/XsfGtz70PDeh4b3PjTy/MMjzz8ctn8fu302Dh4KCTsQPPrCI2MvPDL2wiOjLzwy9MIjAy8+2vfio10vPtr2wqMtzz/a+Pzjdc8/Ub3nifI9Twr2PFmy58lLu5/siwv//b/8H16N+/bbb584ceL8+fMJCQmZmZngFlTt7e39/f0TExMoioLBU9C4jntfuA2bamtrq6ioSE1N/frrr30ZN2JIL7Zcwa2LwzJ9L64dwhSNU4qmKXmHWN08Rr6XUB1Z1JJQVPdmaPGD/0gP+qxowGYbtFqHrNZhm23UZhuzYYnByO6wsD0I8nmPbZqmhXTv6R3IqR5aRDsQbpAOwX4kWNDhXIKlBCN7BRhnhWCgZCFNC+meU0hwSo9gDxJW5nR2MOvsdqd9HQjCELclrj6mJ30Z92a1aPcStJt3GeNyO4M9K8+9TG253WRqNZmaDYYGvb5Wp6vW6Sq0WjCEChSWwfgpd+NuqLPWh2hd8HStWMzF4V2OccMxDMA1biSoMN/ONPdHZtzb5F3HRb1yudulvax3EygKwKeoBMa4Dt1yvJtAEOytVxwCxnE+jjsbGJaIYQ77YlgShjnsi6JJKJqMYckoCkjBsBQUTUFRp31R1M27mQxsz24OQeQQhGJu7o+vv94oFl+ob4hsaHRIt6UltqU1rrUtsrCoDce9SrcDxztwPLqoiN/Rwe/o4Le3s9SLRIdOnBhVKPlt7fy29gSW1raDh0IUfsOLcZuaaienvvzlfxm7mFmw68miXU8W736idPcT5XueqNjzeM2ex+v3Ptb0/KPtLzza8cKjPS8+2v/io4MvPjr84iOAsAPB3J26tcNe2T/658dG//zY6J8fH/rz4wN/frzvpce7Xnq87cXHW154vPGFJ+peeLL6+Scrnv9d2d7fle793aXdT/XHh//+Z/+nV+O+9dZbn3766blz5+Lj4zMyMoqKiqqrq7mDpyiKUqlUBoMBGtcMBiqz91Lu7+9vbW0tLy9PSUk5e/asL+Oe7yKnDVYAACAASURBVFWPaOeG5eZeiWIAUzVNSJunFY2jeGH7eE5tz5mshglM9mVa3aunU//9MP+Zz4oGbLYhm23YZhux2UZpetyGJe5H9giwVkaTIrr39A7kdA8tpmlRb/gOprh7qgf8GFZO0yIaS92PIGE9IpoWYYLnkbByu13E0Fm2H9lf1gl+BCsHI3sFmIimwQpCvGwvsj8FtwvtdlFvOLK/rMOOp+xHTvXahXa70G7vKNuP7C/r4LQ9M+YpkCLT9DRr3J4wZy06rGeCpifons8Q5LOwMHbhOE2PY4LdSPCJMEdVencpOmqzjdlsxeyrd4QVAe+ipc8xiz4tKdnlfL57sDsU2RF20WodsFovhrJ73fFxl6XXYunpPI/sOH/snGNhSLsBdOWCi4UuMZfncnNcPjAujkfh+KbzWnfXgjQXRX251sW4jHcd3bqMcS+wd8bgSDfqDqW5G60t/zi9C7TqcUsNp2g5bZ5UmgBgpMvC4+gWNBJwPAHH+TiegGGsdIF3+YxuE1HU8ejh3WQgXeBdFGW9m8ZNdrneJYgcgpDPzf3v119vFEki6hsjG5qiGpujm1tjm1vjWtriW9sji4rbcaIdJzockJ2uxBRdSmzvTOzoctDemdjeWS8Sv/HZ52MqNfgxsb0zsa0DNA4eCpH6jYOHQhKaW1l4za285ta6qekv7v3ZWHFu0Z+fKXo5qOTloNKXgyr+ElS9L6h2X1D9vqDmfUHt+4I69wV17w/q3//04IGnhw/8HsDd48FDIWGvveK2ZPRg0OjBoJGDzwwdfGbglT/0vfKHrgPPdhx4tvXAs00Hnq078OzlA89W73+2PPjZsuBnS4KfHUyO+v1//b/9GPf777+Pi4tLT08vLCysqqpqaWnp6+sbGxvjDldmLxC6dYVtZ9xe47a0tJSVlSUnJ/sx7tcd8nbC1CeWNU8r6kbxsgGspFc8gKn7psnipoGY0q6E4qaXT2U+8S7/t28lBX18ERh3hKZHaXqMpidoLGk/skeAT9O9p3YgewWYyN57egdyutcuxgTPI8GpGC2maXFv+A4krILuPb0jOBWjxZjgeQRBkLBymu4U7EfCesR2O8DFuI4smWNcmha6GBdP2Y/sLcMdZg3v9TAunrzfWZGepulpuuck0+k7zU1zMcEeBDnZ4yw77xFgk3TPZwiCIGElND3eE4YgwXwMGBdBgkubbbbm0mAECSu22ZpKg5Hg0iabbdRmKw5FdoT1jKClzyE7Pu2xDbNjrDg5Lmvc2pJ9yI6wfJDmdp0HnbvdnecRBNlxrqPNZEo9hyB/Kbqo13Orymw/rptxQSdu1K3ntSgaysGXa53GZX9kpeua5rpkune0tvzD6tC9Fe/6U6/Xu1kxlnWIltMG3uVxXAvaPMa7PBxPwHGudxMwDHg3AcP4riSiKEsSq16OdFNY9QLpsvkuinK9C0ZUAeO2iLGoxtaoxtaYpraYlo741s741k5ee3dsRXV0UUkMoJjhUmksA6+yJqWrL7mzN6Wrz9Ho7G2SYIc/OzmuVKd09iZ39KR09CQzfHwu2v8dMD7+PjqxtdONhmnRF//x38bLC0te21v6+vNlrz9fcWhv9aG9NYf21B/a03R4d/ORXe1HdnUd2dX35q7+N3cNvrlrmCH08CF242GHXx9567mww687lxx5ffTt3aNv7x55e/fg27uH3t7d9+bunrf2dL61p+3NPS1/fb7x8At1h1+4fPjF6sMvVh5+sfzwi0MZ/KD/9v/6Mu4nn3zy3XffxcXFpaWlFRQUVFZWNjc3Q+M6w9O4YHq+vr6+mxvXZPqikaic1FweFAsGsNJeUdsYdqZkcFxukSrUgsaurzMuv/lt1qPvxP3hvbj7D0U//VHuIE0P2WzDND1qt4/R9IQdZ4xLC3vDdyDBqbjDuF2C/YhLBKdidEX4jr0CrFOwHwkLO7UjOAXDUvc7bCp2y3Fp2s24jqqy3S7sDUeQ8HKuemmam/h2lHF2HdbD7SSe4hjXdbhWMNOzy4y9Cha0gBwXDK1ytG3jaOluJJiP2sZstjG09DkkOAEFw8e4n7W0qDQYCS6t99aPO2i1DjiMK4nZh+wqkTCFZXHMPuRPl8TdneeRHeczjcZWk6mp/Ryy43s+04/LjpzKVSiyZLIMikplrw4iiBgcj8LxW0xqXXTLduL6Nu45sfgco1t2OFUYK10cv0AQXOne7tryj2kI1e3Kd9lnPeC5ihaol23zGO+C263w2AZB8HCcCytdHoY57IthCSjKxzA+ivI50k2USBIlEod6JRKndyUS1rup3GQXRTM43pXPze1+++2WaTGvtTuupSu+tTuhrYff0ZfY0ZfU2Z/cNZDSNZDSNZDaPZjaPZjeM+Sgd9iFnqH0nqEMptGCkkdOfjGp1qV3DzrpGkjvGnA23OjsB6SBx44+Ls1i/Oxv/8fkZUH50Vcqjr5S9Y+DNUdfqX/3lfr3Xml+75XWkAPtIQe6Qg70HjvQf2z/8LF9wx/uG/1w3ziHCcDxYC6TH+0HTHy0f/Sj/aMf7R86/srQ8Vf6jr/ac+zVrmOvth17tfWD15o+eK3x/ddq33vt8nuvXT52eKQo6z//+//n1bhvvvkmMG5sbCzXuL29vWNjY2KxGBo3IOOeOXPG3bgmE+DTKtHFIXV+t+RiD3q+aiy9pudvsZW9uFGq0u06FvUlr/C98MKg95P/+G7Ufa9F/f5Y1qDNNkzTIzQ9arePg0G/+x1FWiFNV4TvQMLDT+9ATvXaOwX7kWABR5y0CGS0wYLU8B2neoB9Bad2BKdgNFsxFtk9X+hqXJouD0dACutiVgRBEE6+6zL2itWtsx+31bXjllGsowe3xcO4Y3TPCQQ50cNa1jZqs42ipc8hwTwU5QUjz5Wiw1Yre/lQQ8k+1riOEcvsyCmrtb87FNkRmm8RA+MyVw2Jo/chf7ok7uo8j+w4nw7GKrd/D4xbpdWCscqOS3Ll8iyZLJ2iUhjjgmFTkTh+KwXkUK+6ZUdOeXPtOa/SBdt0rS1vKNOF3r3d+a7jKdeU13ljZ45l40nS0ZBKeSC1ZVwbj+PxrtKNx3EehvHAI6NbRwNFgXQTUJSPogkSCZ/jXSDdRImE9W6yROKe8mJYGoqy0s3AMNnc3L7jx1vGp7L6RpI7B1K6BlO7h9J6htN7RzJ6RzL7x7L6x7IHxnMGJ3IGJ3KHJnOHJvP8kj802Ukq3v7irEhnyhuccDIw7oBt9495kts/lsu2+0YBHRh19qH/KWq6XHviH3WfHq0/cbT+xNHmz/7e+tnf2z/7e+fJd3pPv9N/+p2h028Pf/n22Fdvj3/19viZt6c8mD77N8AU0xB+/Y7w63emv35n8ut3Js++M3rmndEz74x8eXToy6MDX/2j54t/dJ16t+3Uu22n3m06+V7TyfdavzkxVCnYd/+v/Bj322+/jY2NTU1Nhcb1EsC47A2n3IwrEAiSkpLcjcvottlkOl4yltQuTeygTmU3Hw4r/HtE4YnkmqtXr4rl+uyqzgOfxPz7G7y9/0z+9atR//PVuKfezxyw2YZoesRuH6XpMbt9nMlxQZF22lEuRk710CJMsBdxMaWQpoWYYC+CIEhYmSMnRlwHSXkfOcUdq1wWhiBIcDLmMoZ5in0qWNDuMlbZ28AotHQP6KkFF++ipbvDeibQ0t0IsrsUHbfZxm09nyHI7lJ0zOaw7KjNNsq0RxyWtY1YrcNoyXNIcDxqrS8JRpDgeJRzXZCkZBeC7CpFncOjxJf+hATHSix9Fktf13lkR2iexVJ9aR+CBEeLzT1mc0/neQTZFyU2d3acQ3acSzcYmg2GhvbvkR3f83S6SjBsCgxUZq/HpahkNsElCJDg3qprfVwR5Gbcc76Nex706Xrt0L07jPsDHUV1i9L14l3uU57S5Xg3niSd3iVJHknGM/fxZr0bD3SL4/EYFo9hPOaRh2E8FOWhaAKG8VA0AUV5EolDuijKZ7zLl0gSGYB0kySSZIkkmUl2uaVmtsI8brV+npLyyZdftRHywtHp7MGJrMGJ7KHJ7KHJvOGpvJHp/FFhwbi4kKFoQgIoZplEiyfRYs6SfoXmH2e+kxitxePimzAmcmFUWDwqLBoVFoHGyHTRyHThyHSfTPXd734r6Whq/uZE8zeftn7zcfu3H3d++3H39x/3ff9x/7mPh89/PHr+n+Nh/5wM/+f0hY+mL3wkvvChxAP0wodoxHEuWORHAFHkR6LIj6cjPp6M+GQy7JOxsE/Gwk8MhZ0YDD3Rd+5E17kTXWGnemO+myzNL8xI/+7N1wMx7sWLF6Fx3WPDxuXottlkei9v8MJl4dHsoac+ywuJyHvmVMHTn2ZbZ+YXZmwn40sefTft1dPp//PVqPtfi/n3/dFPvZc2CIwLqsp2+7gdTwTGtduB9joE+4FxHdf5OAutIOnEkvcjSGjPtM02jQn2Ii6drFO0x6uQ4CTM7XrcMIGz5zU4CXN4lLuk1bVE7O0uGaCD1rELPmobt9nGuCOnQrtHrdZRa/enCPJpN7j01tFmLTtktQ6h7AU/kth9zlc7CsVd59khUf/ssvRZLLnnEQRBdpzvBGOjcs3mHrM5h10L2XG809xpMrW3n0N2nEszGhsNhvq275Ed38czCa77xbgUlSiV8kCCi2FRzDwEm+is9e9atrbsKVp36XI6dMNcpbvNae4W3nL5rpXurauX/dH5LMe48SCv5UjXBXbyDBwHugWNOAyLdwNF41GUxzzyUJQnkQDvJkgkCRIJn3lMdPVuEuPdFIkkmZPvpjHerVQoBihq15Ej73/2Wfvk1KTBPKY3jetN43rThME8abRMGi1TJuuUyTptsk6bbQChKyILLbLQIrON5fj5cPPiFe4SJyaryGQVmqxswx9Gi9BomTZaIp99WENiksYqrLEKb6wkGiuIxgppYwXVWCFrrpA1V6hay1StZZrWMm1rmba1TOcDfWuZvq2ci6G9AqBvr9C1V2gAbRXK1iplS7WipZoCdDQMNVTnJiW8/OBvpjWaEbsdGnczsTHjuuq22WT6e2b38ey+P31f99SXFY8ez9x7KvtnByJbhXqNzvgvz5999ljKH96J/PmB2F++wvvlXyKf/HvyAE07Cst2+6jdPm63T9jtk3b7FMCthGuzBQ5zAw33Jb5uWeUf/3eYcr+pBXMvC/bWFv7uaMHc23nA9c7MfRZLH7j5pdnMvaOF212lnLd45MyXwL0VM7jlcjN77wtmzFQZcyUuuOEU90rcODBmCnTfblEB2c+VuDeXrtcOXQ/pBtKheydryz8o6W5OvW5pLku8q3EdeBqXJOPY6arAHJEYFufq3TgUjUNRVrpxKBovkTjsK5HwGBIY+Ix3+VzvcpJdh3QlkjTGu6UkOabTfZmbe+DTT//z0KH//frrf3z99T++8caf3nhj1+HDuw4f3nXkyHNHjuw+cmT3X/8K2PPmmyx7vfHSX/1y5K/+eZHL4SMvHj7yzv33BP/awf7/uGf/ff/jlft+/sr9vzj4m1+8+ttfvrrzV6/tvPfQ/7r30IO/fv2hXx9+6D8OP3zf4YfvO/zw/Ucevv8wyyOOxhvchQ/f//rD97/+8P2HHr7vtYfue/XB/zj4v379ys57D+y8d/9vfxX8m3//y/2/fPm+n79838//8fhv4v/+OmGz9XkMoYXGDTRuJcdtMplejWt+JaLhP7+qfPpU2UP/LLo/JA/ZG7Ny/YbWaEWeOvvLQ/x/O8D71cG4X+6L/PlL4Y++ze+z2QZoepCmgXTHHJmufcJun6TpSbt9kq3ieorQanXHmx0DvFOjp0H93LLR5S5Rbjep8D2twoBXrbJ3auRMVeRnbgO32yZ3mEzsfIJe5x1qZqYYqtPrL+t01VptpUYjYG6qnK9U5igUmXJ5KkUlUZTbRUGext10AdnXXS8CNS6b6XKM63aFrhfj3lVDlz2M+4OQ7ma8y7Y5mS53Kl9WunEkGcd1LUk6p4ZkpmT29G4chsWhaCzQLfCuRMJmvTyJJJ7rXbGY9S5fLHZ4VyxmvZvEJrsSCevdKoViymqVzc7K5ubkgPl5xfy8cn5eubCgWlhQLS6qFhfVS0vqpSWNB1rAlStatr0hFhe9onFjYWELYfeiW1pi0V+5wmK4csVw9aono67ZLTTuxmJzxmXnn3/u6/I9Z8qfPVnyxEcFD76f95ujWf/6Gj+rqi8mr+FfXoj41au8f98f88u/RP78pQu/evnC2aLOHputz2brt9kGbTaHd5krhcY4t4lwMSKYXcBi8YLrFAW+8DkDgcXiOQMBWOiSmHpI1G1CIbe7PvVxpglycyqbnna55qbtHIBB20ymVpPJy/x93Kl2XefZbWBnDWJcCyYw4BaTHdmtTJYslfJJkkcQsZwrgtju21vprPXjWu6FuYFnundzbflHMIRqC7wL5OpqXDfvco0bxxjXAUnGMTNWObyLYbFAtDgeh2GxGAZ0y8JNduMlkjiJJF4sBtKNF4t5YjHwboJYDKTLF4sTxWLWu0lsviuRpEgk3CIzGMOcRRA5JJkrleZT1EW5vFChKFapLqlUpRqNQKst02rLdbpyna5Cr6/kUAUwGKr0+mq9vppZAtpgNusqZlrrKmZO6yqttkqjcUetrlKrK1lUqkqVqkKpdKNcoXBBLveHQlHBUKlQVCqVVSpVtVpdo9Fc1mprdbo6na4enEaMxkaTqZE9z4MJWP0CjRtobGLkVBPHuEfTW18+V/nCtxXPfSX44xclf/i86D8/Kww6nv70sdSgj7J/937G795Le/JoypNHk84Ud3ZYLF1Wa4/V2st4d8BmG6TpIZoettmGadoxWJdbjwWqM5u9MhAA/X7p49DLFnV9TKDrOTmuS2nXaHQY1GOK+zZm4voWzmT1zW7z0hsM7Iz03uel1+lqOTPgAlympmemxa10nZG+QKnMB5cDyeXpzAx9bHYLdBvJzGt766K9iWs3ZFzuFbqe0iWIQO6Jcbddofvj9C5FxTN4GjceHAcgXY53YzkzMccxE2m4eTcWRYF9Y5k0N1YicQgYuJZ9FIuBd+NZ70okwL4u3mWky/bvgmTXMaKKuStkNitdmayAkW6JWu2QLmNcgLt0GdG6tFnXMo8u0mW8Wwke1epKrnRVKq/SBaKt8OHdMg/jukgXGNdNunp9vcHQYDQC6TYFLF1o3EBjo8Z1zDnP/WV4A6TCLWZzi9ncaja3ms1tFku7xQKk2221dlutPVZrn9XaZ7P1Wa197KR1nE7NPrO5D8whbzT2uNK9Kbpc6eTQ4Rtu/bbNaGwzGNoMhlaDoZV1p17PpUmvb9LrG/X6Rr2+Qadjqdfp6nS6OkactVxrarXVDOBvrxKg1QKDVmg0FRpNuUZTrtGUuSLQaAQaTalGU6pWl6rVJSpVsUpVpFIVMrPhgjJyOkU55uYjSR6TVbjpNvz2JbWbqC1z74kRQIfu7bstxq3e/fGHnOluQL1sOsvxbjzHxHFAt67JbiwwLutaTtthXAyLQdFYFI3xkG6sRBIrkcRJJLFiseNRLAbeBfAYEjiw3k3k9u8C6UokQLrpXOlSlB/plnuTrpt6nXB060W6TIJbyTxuUroc43pKt8KvdOt0ujq93pHmGo2NRqObdH15Fxo30NiQcdmDHoh3nT2+ZjOr3jaLxaFeq7XTau1iBWyxdINZYNm6q9HYaTB0MLQD9Pp2vb7NKwaDA68LGUe26vWAFgavvuTSyMHNnXU6XZ1WW6fV1mq1tVrtZY2mRqOp0WprtNoa0NZoqjl/SBXe3ClQq0tZVKoSlapEpbrEUMwY1IFSWaRUFiqVhUplgVJZoFReVCovKhSAfIUiT6EAls2WyzPl8nSZLI2iUpiJwXmcOYJY117w0O1tyWs3kelyZxlyvUI3At4W426TLkeu3Hw3npvpMtJlM13WuDGsaDnEMMYFxLKPEgnQLfBujEQSKxYDgHTjRCKnekUip3dFIla6fE6+y012udLNIohsrnSVSjfplnmTrj/vAtGyuKa5lQFkujevLSsUXNG6S9etvMypLdcwteU6trbMlS7nzA+Nu/kI0Lj/tnPn3Oqqm1MbPWF+SY5fFYdmk6kFJL4mU6vZ3MYAEl9HFybTkdlmMLTq9S06XbNO16zTNel0TVptoysNG6ceoNEA6jSaOo2mFsAoE1DDoZoD6F9h/wYqVKoKlapcpSpXqcpUqjKVSqBUClQqgUolUCpLlcpSpbJEqbykUFxSKIoVimKlskihKORQwJgyX6HIk8vz5PJcuTxXLs+Ry3NkMgdyebZcni2TZctkWTJZlkyWKZNlymQZMlkGRWVQVDqHNIpKpahUqTSZsSy4eV4ccwqLYq4CimAty8xW62nEm+JfmTdBJPreL2CdcyLROddLhsI9kl3PIrMnXsZY+SBmU8T6YROS9oun27YTHieXdcORxbrKNZYk2QZLDLAsQcQQRAyOO8CwGAyLxrBoDHO0UTQaRWNQNFoiiZZIosVi0IgBbbE4WiyOEYtjxOJokSiGIZZDnEgUJxTGiUTxIhEPPAL1ikR8kSiR7eIVi5PE4mSxOEUsZivMrHRzOOXlIqXyEiNdAZAuQwWDQ706HaBKr6/U6apApw+QK9MBBKhi2+DcwjaAZQFcy3pzbRmT13rip2fXV6bL9um6d+t6Y2519d+gcQOJzRn3pq716l323yXugOcWUHw2mZqBmNlxQHp9g05Xr9XWabV1rB3VasBl39SwqFQ1KhX7YzVApapWqaoYKjlUMJSzKJVljEodNmU8WqpUligUTpUqFEVyeZFcXiiXFzBclMsvyuX5Mlkeh1zGo6xBHfpk3JlGUWlSaapUmiqVpoBHikqRSlmASpOk0iSSTOLM783OP8ojSR7nAkdwCnPMCMSINpwRLWBbRbsh6QLvcovMTCLuMK6Pbt1blO4mvLudxr0bvOv1DXg1LutaN+8C6cZwpMuK1uFaxrjRKBoFjMuRbhRj3GiRyPHIkW6MSBQjFMYKhbEiUaxQGCsUst6NF4nihUIeI10+yHdFokRGusliMejZBTPbs5luHkUVyOUFYCCVWl2i0ZRqtc4Ks6t3K/X6Csa4TvUy0nWB7UXSaCrYjFajAf/Tu52dWON6le5Gvcsmuy7S1elqXaXrXmGGxt10BG7c2dVVL6I1mRpNJvB/0E1hHexou9oajLOt1+vrdbo6tkjLmLJKrXY6UqkEeCmwcBrl7NdRqSxXKssYBEqlQKEAlDKUKBSsQVmJFsvlxXJ5sQ+nXpTJLspk+TJZvkyWR1F5FJVLUbkUlUNR2VJpFkVlU1SWVJollWZIpRlSaTpJppOkw6YkmUKSKSSZTJJJJJnETA7KTlWWwMBjHrkSdY7hBGU39iSFYdEoGsUQgaIREkmERHJBIrkgkYSDXJaZPCDU053AcH7xL8jNIBR+LxR+55vvhUKnfUUiX/fHYO0byRnJ7ElUwERvkBjAlhg6MOLuND7fBieXdcjVza8M0TgezYwniGaIYhQLiGQbYnGkWBwlFkeKRFEiEduIFAqjACJRlFAYLRRGTU+DRvT0dPT0NFBvzPR07PR0nFAYJxTGC4Vx09PxQiFPKOQJhUC9CUIhXyRKFImSRCKQ7KYwReZMHM8iyRypNI+iLspkBUym60x2gXrBSGaATlcBBKzVsgDFsu0KTmcT0K0LTALgaHg7uZVxkcvL5HKBTMYqViCTCWSyMr+4J7ueA6k8kl0u0Lgbiw0Zt4E9+gZDg8FAzs8rFhZuETlgfl4xPy9nkM3NAajZWWp2VgqYmQGQ/rHbXWAWEt7AXcF8gzJIGMQesPd2ds6a4OPmzNw7R/q//8bYRrFaRy2WEVeGvTF0N+FrODpgyGzmrsxe1uW84ouZV9hxCTVN+2HsNuA+FzLEE9dvtfevt9XqFXCZ35jHVYJj3B/N5jGzGTx6ZdwbEwyTFsuE2TxpNk9aLFMAq3XKap22WqetVqHVKrLZxDQtttsl4FQwM4PPzuKzs8TcHAvpivRWYM973iBveiZkToDgROd+VvQ4SYJTKzjfUszplz0hc8/YyoUFcn6+kb3CwmBoNBhmoXEDjECN+8ADs6ur9QYDCzE/n1hSsufYMQgEAoH8dEgqKSHn57nZ1+zq6r898MCWGHcu4JgPLBYCi8UAYtuNy1wkWq/XKxYW9nzwwQ0YMGDAgPGjjuvXb6xeu75wZY2eu2ayr+754APFwgJXB1to3Ls5tt24Oh2LYn5+z/vv3+lvAgwYMGDAuC2xvn59ZXV9fskhWpY977+vmJ/n6uCnYtz8W468vLycnJysrKyMjIyUlBQ+nx8XFxcREXH+/PmzZ8+eOHHi6NGjBw4c+FeOccF1qPL5+d3QuDBgwIDx44rr12+srK5fWV6fXVyzzq5yXQvY/f778vl5IALWuP/6wAPPPvvsSy+99Oqrr7711lvvvvvu8ePHP//887Nnz547dy4iIiI2NpbP56ekpGRkZGRlZeXk5OTl5d26wrYzYI4LAwYMGDC2Jq6trV9dWV+6ug4KyGb7qtlDtyDHlf80c9xb3wTsx4UBAwaMn3Jcv37j2tr6leX1pavrS1fXZxfXLDOr5plVn8b94ANHjgv7cTcamx6rrFhY2HPs2J3+qsCAAQMGjM3H6rXrrGtBamuZWb2JcY8dkzMjp7Z8rPLdHHfmelzWuHuhcWHAgAHjhxlra+tXVtavLDuyW9Bra51dvalx9x47pvA0LrweN5DYmHE5N5BSLC7u/fDDO/2dgQEDBowfUqwt6lbNjYsob3YgxNz0Jt0cZC77lbH01wDDpftYtAUPaAseMDe9aW56c24qdFGas2wc25L3sL5+/SrjWgCr24CM++GHioUFkHoBHUDjBhobuq8y9+ZeSmhcGDBgwAgs1hZ1c1OhdHOQteoX1qpfWOsfoJuD5kb3AxZEhxdEh0F7dmD37MDu2cE/zPQ+aa1/wFr/gKH8flUJ8wAAIABJREFUt6yAVbkPW7s/WZBe3tzbYMchsyxdXZ9ZuGabu7YJ47L37oV3eQw0Nn1fZZjjwoABA8bNY21+ceIEEO3swO4r8qMrhrDV2UQHttgVS+iy4aur2hNX5EeXqDeX8FcWxS/NTzw9P/bY3NDO2b57Z3t/MdP132d7fzHbd6+13uFdXdmLG015wVBkV91es89fs81t2LhymONuLjY6P24jg3Jp6fnjx2/TVxQGDBgwfgyxNj87sNta/8CC6PCqLdYpWg9WLKFAuovilxamd82PPQZcC0Q7N7RzfvSB+bHHADO9T+orn1HlPhxgsnv9+o3l1etXvOmWntukces4Oe7s6iqcHzeggMaFAQMGjNsUc6P76eagVXPj6lxGIKxYQhemd80N7XQqduLpJfEzXK4Qu68Qu1cMYdbuTxRZj60t6vy/B0dqu7LONe7S1XWg200ad37eMbMQNO6GYkPGbQzIuI0hCIIgSFACxSyhEoJcF2xD3HyfjvfJxva+PxgwYPz4w1r1i0VpzvqacG2hyBXB2oJgbbFqbbFq7UrD2pWGtdWB9dXhZd0X86MPcM3qyVXq5avUyyuGsLX5MUXWY7axdF97v37jxsrq+tUVd+MC3d6KcWXz82A6P7aqDI0bUARu3Fk34y4u+jcuR2E3tx9YI6TxFr/eHlvciHG3+A1sJLb+48OAAeMuCGvVL1ZMhTfW6evXdOtXepx+vdKwtti2tty5tjqwfm1yfU24tti2Ygm9Sr3sqCf33esrx12i3lwxpa4vidaXRH6Mu75+fZnRLde4YKjUrRv3slbLprnQuIHGZozLjFW+mXFZhwRqvzthXMc+HW/6Dklv6z8+DBgw7oKwVv3iquqb6yuyG+s04PqKbH1NuH5t0sGacH11eG1BsGqLvao9cZV6eUn8jGcn7hL+ylXlP1f0MWuLbcC1a/Njq7ZYX8YFlWQuwLhc3d6Scefmajiz1kPjBhobNi7n6iC/xg0JcVrEzX5uSgbPOmu7CSHsytwXNjoXu6SnjKeYdRNCEAQJaeS81LPMzX2f3H8KPN+P2/8Mjo37XYfi7o95pxyb3uTju39A8Er3NwADBowfQADjXpvLWb/Sc/2a7sbavBvXr+mur8iAQa/N5ayYUlf0MSumQpa1+TFPVkypy7ovViyhnsa9fuPGyjV33V7l6HZLjEvNzdVoNJe12lq9vk6vh8YNNDZmXNfrcf0bl+M8D3G6KKbRTTmNzhIrx11UQpCbxNyU5yZBd/95WspXjuu2/aAEytPCvtcJCnKuyW07dnTzj0957WD2pngYMGDc5cEad22haG2xam25c31N6FQvyHqv6YB3gXpZPCxbuCQ7u0S9uSh+aYl686r2hKdxwZhkbjHZadxlh263zLhqNUhza6FxA48NGNfjDhg3Ma6ze9LdvW55G+Ut32TUExQU5HScM7t05IKeqSmTyTo2HhIS5MtRnub2nQW7bfym67is77GK34/vfR3fbwAGDBh3bZjLfrUkO+s07pWGteXO9dVhZ2F5dXj92uT6lZ71Kz1ri21ri1XXZstXTIUg2b2q/OeC6PDc0E5wPe7c0M75iad9GXdt/fry6jrAM8GdXVzbSuPOzlar1Y40V6eDxg00NnEHjAaTqcHfHTC4+gBtkOt5pGoczbl2ZDoKyI0JQY46qiMTdErLy6Asr0/4Swq95anuL3RVpfeNe13H8yB4VpC9f3zv69yJ4d4wYMC4xfBv3LXVgbXlzrUrDdeWytcWilbnMrgX5i7hr7AX5t7UuNfW1lndehp3fmlty41bqVJVqdU1Gk2NVgvvgBFobNS4DRszLtcfHjmur9cwyg0KYl0TFBTkmj366n51V7Ejx/WmKu/DlThLfW48gHX8Gtfvx/e+DjQuDBg/wNge415bWwfFZK/GXbiyNru4xcaVzsxUKpWsdGdWVqBxA4rbMJOBm8lY53p2iLpLyXMtbmLo6juPbfhKfn3WY70b1zPF9DRuAOt4N25AHz+QJBsGDBg/hNge4y6vXvdlXDAp0JYbl5yZKVcoKpTKSqWySq2Gxg00NmRct/lxfczW52Eyt7HCrkZxz4W5g5RdfeR9uK/HWGXPa4C9jBf2+j7dNh7S6J6cOoV303V8GHdjHx8aFwaMH3YYS399B40LJgXaKuMabCs6y4rOsrL32DHSbi+Tycrk8nKFolKphMYNNDY0I32dXs8ihzPSw4ABA4bfuIPGvcJ0327SuIxi1aZlpXFZYXCy59gxwm4vpSgBRZXJZOVyuX15Gc5IH1BsyLi1Oh2LfH5+zwcf3OnvMwwYMGDcvXEHjbtwZW0TxjXRq3rbisa8rDS6i9Zp3A8+IOz2UqmUlS40bqCxAeOurNRqtSzy+fk9779/p7/PMGDAgHH3huHSfXfEuEtX1+eXAjWudXbVZF/V21bU5mW1aVllWlYZb2Zcmi4hiFKSLCVJgVT6UzFu/i1HXl5eTk5OVlZWRkZGSkoKn8+Pi4uLiIg4f/782bNnT5w4cfTo0QMHDvwrY9zLDLL5+d3QuDBgwIDhO+6Ica8sO3Tr37j03DXzjKN0rLGsaMzLARp39/vvEzR9iSBKCAJ41768/K8PPPDss8++9NJLr7766ltvvfXuu+8eP378888/P3v27Llz5yIiImJjY/l8fkpKSkZGRlZWVk5OTl5e3q0rbDsD5rgwYMCAcffG9huXrSf7MS6b1IKRUBs1Lpvjco37k8hxb30TsB8XBgwYMG5T3G7jytKfdDMuV7eexrXOrhrpVb1tBbB549rtl0iyhCRLpNKSn05V+dY3sSHj1sOxyjBgwIARcGgLHthO415Z9m5c1rVGetXA6HbzxgVjlaVSFmjcQGNj1+Pq9Sy+r8eFAQMGDBg3bmyvcUE92c24bA3ZZN8y4+5ljCtgsC8vw+txA4pN3HOq3mis93fPKRgwYMCAcePGthp3femqi3FnF9ess44bWWyxcT/8kLTbBRQloCiBTCYAVwdB4wYSt+EujzBgwIAB48aNbTQuqCcDZhfXwPW17K2jtt64MzNlMhkLNG6gAY0LAwYMGLcpfBl3Rphj7YvbfoxE/1YZVyCXlzFA4wYaG50flzt3kI/5cWHAgAEDxo0bfo1rJPpnjIolm2pDzBgVXIwaiotaQbLIpDiAxFGAavDilhj3+ePHyZmZMoUCUK5Q2JeX4fy4AcWGjNsAjQsDBgwYAYcv49rG0o0aamZ+edveiUhu22LjyuWsdKFxA42N5rgsSmhcGDBgwPAbqtyHvRpXO5Zp1Gz3TGCS7otyUc+WGFc6M1MOSsrQuBuKDRj32rVGs5lFubS0QeNyp9hjp51rDIFT0G0oqISgH9sRu+PfgTv+BmD8aOPHalxHjstIFxo30Nhe4zrOaxxr3NmT3Q/lVPtDeZ+bi01/uq06LHfh4b0L3xKMzYQv46J9aWoFuc1vZsuNK+CMnILGDSg2bVzFLRiX04bGDSR+KO9zcwGN6xl34VuCsZm4q4w72JqOTXZvfY4LjRt4bMK4DWZzw+0wLpUQ5Kg5hzQyK7ku8FjDY4Ez3J9qDEGCEhJCOEVtTpUbrOLtJSEhQR4b9/M22FU9d+droddPwV3k9j69HjH/+3X9FXg863GcG0OQoIRGx8ZDGp378fueb/jbmu9PHZSQ4GGXQA6Uy2FpDHE9Auzxcf/NuqzG/HK530a3D+RyKPwfMfarcsvHc0PfTD9/AzDufNxtxp0e69zCflwANO4GInDjzl271sStKm945JT/qjLnRNkY4noCZp7inFbdNujzJc6nOCfTxhAXDXv2KHNe4iEtz35U5+Y4T/rand/34Niv1114/WclwP26vFW/z3I24tH0+549w5vGXA8Fxyaexg3kQLksYdcKCgoCS6mEIPb36PVAufwnRFEJQZ7S4nx+Lz3oLp/R+/83mzyeAX8z3f8oYNxd4cu4g63pFLXdxm2p2zrjzs6WKxSsdKFxA40NGdeh202OVeaOnGJPEszZhJOFuPwrj3CSAbdzs9eX+Hwq8Azb60u4W3Y9w7kuYU6ANy2h+/7gXs78vl4Y4H79bsfzOPvciN9fFncnN90aI8MNvE//vyCnXYMSGkGbWRTYgQryPiDN5b057ebvM27J8Qz4m+ntHxYYd08osh67qXH/Zc+3/7LnW8/XguVc/KwTyAu33Lhl0LgbjY1dHcTodrPG9TwzePfHjRvcJS6nZ3D+CWn09hIvr/W6d1/G9fMS31veAuP626DPN79VxvVynAMxxE2PvN+tbdK4fg4L2CLIAamEoJBGdhcBHSgkKMjrZ3LbhdsXz9tn3JrjubFvpvOPAsZdFrduXF8/chd6Na7nCi116QMD7VtVVa5gdFsBjRt4bOP1uH6N61mXY5/xqOZxq4W+S5oBFmZdT7s+X8Lduf+qsp96ta+FbhvcXFXZb53cz3a8HOebGcLPkQ90a403qyoHslOXD0glBHHrySEhbLk70APl7ffN2Sn7Wv+fcWuO54a/mZw/Cpjx3kXhy7gtdekYQYB1AjSu5xJfGbCvH2uqUrbMuLOzFQpFhUJRDu85taHYhHGbbotxXatnTCqBIAgSFBLiNKxrHdP9JZxwf8r7Wc+xSY/xNT6rypwXIS7ncW4V8YbvE6u3Fbx8CvddcN6n1xf636/XX4GLGVyO880N4efIB7w15iP6HDkVwE49fn3cNTnbDPRAedq/McQxRsnb1877Z9ya4xnoN9PLNwUa9y6KbTCun+VuPxaXpG2NcT90VJWhcTcc8J5TMGD4DigwGLcUsvQnvRq3piple4zLzYCLS9Jau1q2yrgVSiVIcyugcQOPTc5kYDRC48L4CQQ0LoxbCl/GvVQWL8RwsM7mjPv/t3evv22cCYLu609q5YDCwMD5tNhjnO+7rXgwcAjswmi0PqywgMZYuzNJbJlUnDiWd9GTSWADPWcucA436Y7tOHHsOJ10O4lthbZ1l6i7qCtJidTdkhzth2JVvXXl+5YokVQ9PxS66WJV8a2SxEdVZESZyjouOFeruP/Pb3+bKRb/93i5uJ9SXHmc4wL+KC4O5LCL61lWvw1++M8ffP3tven5dXOanFszp/HshjmNzqyXp+lV/Ub5LqO4I8Xip+MTnxqnuRRXltpnB83P6+e4d/nsIACoZPSfYotf/l1Viiv/z4DifnL71tjUSvA0MuGc9O6Kxc0Ui5+OT3w2PvHZxMRnExMrFFeScnGN6FJcAAg299VvRv8pNvfVbxzF/fCfP+gesL2O63eqKvNuZMdMv+K+//E/fnL71shYTm0yiytcVR4pFj8dH/90YuJTiqtErbhzc2Z0uaoMABXsrWb///935Pd/M/7//cfSs4ticR/3DhzxWPTiZjJzQ8OVJ1txhdxaxZ2YMKeVly8prhSl4t6Zm7tjRJdzXACobG81//SfRn7/NyO//5vR6/9h7qvfrI/cqElx3/n9tev/dnOgbyp4soo7sTI6vWpeTLa9c6pU+mxi8rOJyc8mJz+bnKS4stTOcWdnzdNcznEBQNLeenbpL9dGr/8HPb0XLvyXWhW39/mY5yQWV8+tu7XO4k5SXEUhznH101zOcQFA3i+/7P/yy/7q2HdLf7n2D5f+26Pn/Uc8gHP/s+v6v9180T3kmMziDg3PZTJz5VPbucD/OqhU+uPk1GeTk3+cnPwjxZWnUNyXL+/Mzt4xTnMpLgBI0nOrT3t7r975/bWjL+5/v3LlyvV/Tv/UZ05mcc1TW721Ff8CRqZU+uPk5B+nytGluLLUipvN6tG9MzdHcQFAkpXbV7/s7r069z+7vkv3rqxu6/e+3Nnzm8SNbG7vhh5Az1heL273oxfdj17ouRVbOza1Mjm3Jvk3p0ZLpT9OTv6Jc1xVSsW9PTNzO5u9PTt7Z3Z2fG2N4gJARY7cbm/v/vcrVz65fevR8/7HvQPdA0Py0+Pegce9A4+e9z963v9dutec7j95YU5fPEqb05++6zan//rWRb24em7Ny8hma+U/yWC0VPrT1NSfpqY+n5r609QUxZUlX9yVly9vzczczmbvZLN3slmKCwAVibnd2X21vr6VzxWvXP/n33Qkf9OR/K9vXTzKSX8dVz+1FVur+tlBo6XSn6anzehSXFlKxf18evrzmZlb2ewtigsAEszc7r365eXOq/X1rdzKZj5XzE4tBk9T4/OOaXx0zm/KZDwmz//QNpOxriFPL26H+7S+8jnu9DTFVaNc3Olp/UyX4gJAMD23r179ohd3d++VOe3s/qJPL3dfvdx5tW1MWy9fbb18tbldnja2Xm1s7a5t7q1t7q1ulKfienlaWdtdWdtdXt1dXt0tlHbzpd18aTdX3NGnpZWdxZWdxeWdheWdheWd+cLOfGGnKp+PO1oqfT419fnU1OfT0xRXgVpxp6Y+n56+NT19e2ZmbHWV4gKAn1/2bbk9TsUdK5VuTU9/PjV1a3r61tRUkeJKUivu5KR5mktxASCA4wT3+BT3t78dXV29NTPz+cyMngOKK0upuH+anNSv2lNcAAhgnuCqFnf75V79F3esVLo1M3N7ZubW9PSt6WmKK0u1uOa1+7FSieICgCfzBPdYnuOOlUp3ZmZuz8zcmZm5TXHlKV9V1os7NUVxAcCT+V8EHdvirq7enp6+PTNzm+IqUfvvcScnP5+c1M90RykuAHgJX9yXe41S3DszM3dmZr7IZu9ks8WdHYorRelvTt0yTnDNc9w/AACi5ORvfzu+unonm/1iZuaLbPYLiitPubiTk59zjgsAUaUX9242+0U2ezebvUtx5SkVt5zbycnPJyf14h58AACABqIXt5zb2VmKq0D1HPeW8aerKS4ARNDJ3/52Ym3ti9nZu7OzX87O3p2dLVFcSWqfHTQ5eYtzXACIML24d43ifklx5YUorj5RXACIIL24Xxq5pbgK1Io7NXV7akq/tkxxASCCTra2TqytfTU399XsrD5RXFlKxb0zNXV7ako/0x2juAAQPXpx783NmRPFlaVa3HJ0jf8e9+ADAAA0kPI57vz8VxRXlVJxv6C4ABBtJ1tbJ9fX783N3Zufvzc//zXFlReiuHcoLgBElV7cr/Xczs9/PT9PcWUpFffu9PQX09N6dMcpLgBET7m4CwtfLyzcn5+/v7BAcWXJF7ekF3dqSp8o7iEZGBy+/833qU9vMzExMR3xdP+b7wcGh4Ofo8xz3PsLC/fn5x/Mz69SXEmqxdUnint4pmeWFvPFWv/lVABRtJgvZibmgp+jTra2Tq2v319YeGBMFFeWUnG/nJn50oguxT0k0zNLtf6hAxBdksV9sLj4YGHhm8XFh4uLFFeWcnGN6FLcQ0JxAdSQZHG/WVz8ZnHxm4UFiqtAobg7O1/NzHxlFHeC4h4OigughmSKO72xobf2m4WFhwsLq7u7FFeK0jnuPf0cd2bmS4p7aCgugBqSLe7i4sPFxYeLi98uLlJcWUrnuPeyWf0096uZmYnVVenippPNWllzMn3wQatKJ5tr88BhHEJxM10nyof/zF3hnye6Mvv7+3fPaOKdAKJNsrgPl5a+XVr6dnHxz0tLFFeWUnG/npm5NzNzT6m46WSzpsVT1j+TqaDFqycVb5zKiqpf3LtdXRn9xhkjq3fP6L3NdJ0wQ5vp6iK5QORJFvfbpaU/68XlHFeeWnGz2XvZrH6mK1fcdLJZyO2RorhuRmjNG+YMANjf31csrj6tUVxJasWdnf06m9VPc6WKGxBc4UqzsUQqrjUnk3H75WfPmeLq5vbFWam4Jm5dqK/s45q877UeoLyVVFxrTqbKG4+nrMfxHbPPrwTu4t49Y56HCoXMdJ3Q51rXjIXT1ROOOcbs8tpiemkuAItMcWc2NvTWfpfLfZ/LUVxZ8sVd3dm5Pzv7dTarT5OSxfU+z0zFzVRZL7Km4mbArPv9ZlpFbk6mvV6qFYNm3pZ/XNtQA+8VNuK6GTRm6eJayb175sSJcjSNelpXivczXSfMM1eP12TFK8jiuW05z7yKC2Bfurjf5XLf5XLfLS1RXAVKxX0wO/tgdvb+7Ox9+eJ6nuPa56fi7pM+sWSumcJ5qnBG6ddCx4qSjxu4naJ4kus/zuAx+/AorlXXE1139dvGLDGjZmozXSdcZ65Cmfc9riZnuk4QXQDSxf0+l/s+l/tLLvcXiitPqbjfzM2Vo5vNTh3kddwqFNe+1SMurrUd8yxeprhSr2h7vY6r9/XumXJrz9w1rw97FtdYxzxztS+17/n6rWsZAFEkU9zs5ub3udxf8vm/5PN/pbjylIr7cG7u4eysHl254touyhaL5nuVHVd3Xdddg4tbTMWdL7iGu6oc8LiB2zHn2S5NBxbXPWb5q8p6coXryWfOnDnhev+xu5nlLnvk1XznVJd4bZkXdAHIFHd2c/Ovudxfc7m/UlwlSsX9dm7u4dzcw7m5b2Znp9fWZP97XPGCqtkYa2bFUHktIG7Teu+SbUb5377vnAp+XJPnvcZWmuNxyXNc95hVimsLoiOO1tukxAqbb5wS3lhVniX+97jWopzgAtiXLu6jfN6cKK4speL+eX7+2/l5vbsKxYUK/uYUgBqSLO4PhcIPhcIP+fwP+fw6xZUkX9y1nZ3v5ue/m5//8/z8n+fnKe4hobgAakiyuD8WCvr0U6FAcWUpFff7hYXv5+f17s6sr1Pcw0BxAdSQTHHntrZ+KhR+KhR+Wl5+vLxMcWUpFfevCwt/WVjQu5uluIeD4gKoIZnizm9tPV5efry8/GR5+cny8vreHsWVolTcRwsLjxYW9O5S3EMyPbO0mC/W+ocOQBQt5ouSxX2ysvJ0eVmfNiiuJPniru/u/rC4aEZ3luIejlxueWZxhYmJiakmUy5XIYQnW1sXtraeLi93r6x0r6x0U1x5asVdWHhkTBQXACLIKq4xUVxZSsX9cXHxB32iuAAQSXpxf15eNieKK0upuD8tLv60uPjj4uKPi4uzGxsUFwCiplzclZX0ykp6ZeXZygrFlaVU3MdLS48XF/VpjuICQPScbG1d3Np6trKiT88prjz54m7s7j5ZWtKnx0tL8xQXAKLHLO7zYlGfNimuJKXiPs3lyhPFBYBIOtnaurS19Xxl5UWxqE8UV5ZScX/O5bqNaYHiAkD0nGxtzW1v9xSL5kRxZSkVN53PmxPFBYAI0ovbWyz2Fot9pVJfqURxZckXd3N391k+/8wo7uLmJsUFgKjRi6u3Vp+2KK4kpeI+LxSeFwp6dykuAESQWNz+Uqmf4spTKm5PodBTKLwoFF4UCksUFwCi52Rra357u79UGjAmiitLobh7e73Ly73Lyz3Ly72FQo7iAkD06MUdKJUGS6XB1dWh1VWKK0upuH3Ly73GlNvaorgAEDV6cQdLpcFSaYjiKpEv7tbeXv/KSv/KSt/KSt/KCsUFgAg62dpa2N4eKpWGVleHV1eHV1e3Xr2iuFKUijtQLJpTfnv7YMVNxTVNi6fsc2KJ9EH3qNKD+j1EKq6ZDnsYANCo9OLqrR1ZWxtZW9umuJKUiju4sqJPAysr+YOe46biWiwWE5sbnMOqVFDqIdKJ2BE29wh+zwCAqikXt1QaLpVGVldHVlcpriy14haL5WllpVCN4iZSiZiVm3op7tFWkOICaCQnW1uXt7dHSqWRUimzupqhuPKUijtULA4Xi0PF4lCxWKjCVeVYIi0GR7iZTsTKF3jjKfF6bzyVipunxfbl9bnWirbF4vGYsSl9leBr2tZt67HLC4tb8743kSqPIZ6yhmNF1X/XXPc6Hw4Aak4v7nCplCmVMquroxRXnlJxh4tFc1qWLm7/xKw4GbPF+PndKBZT8Vgi7ZhjxigWK58hp8unyqm4mSbr0nAqrjmink7E3AULvqpsS7XrnNQectdNYVyBu+Z9r+3hHAeTiYmJqYqTzFO6eY5LcZXJF3d7b0+/jDBSLI5IF7d/YnbfzrjHHVFjjnCeapzs2U9nyy0yL0obs+wlNdLsTFrM+1Va8Z1T9heXbW+nsl8EDrrX63bFXQu4t1gsFov7AHBoZKKrFzdTKmVKpdHV1TGKK0+puPoh1ieZ4uq59blTbImeSjFLjlNQx8KxRFo/B0wnYvGUEVy54jrfr+X1EAZrg+ZjOALpf69vcf13rcKOA8DhkomuXtxRI7cUV4FqcUdLpdHqF9c8vfO7cmtbOJ2IideT4/G4cLIsXlV2Xcj1ePHYZzyOebZr1K7XnT3v9b4dvGsVdhwADpVkcVf04pZKFFeNUnFHV1fNaaW6xS031+v6qnGian97kbiku9zie5U8y2d7NM/x2DYXi8c9zmKD7/W5XXnXgq4qA8DhUSruWKk0tro6vrq6zd+ckqRU3DHjGsJYFYoLAKgv8sUdK5XGSqXx1dXx1dWXFFeSUnHHKS4AHF+qxdWjS3FlKRT31avxtbXxtTX9l5oixQWA40WpuOP6RHHlyRf35atXk+vrk+vrk2trE2trxZcvKS4AHCeSxS1ub0+srurT5NraS945JYnXcQEAuhBXlcdKJd45JUv1s4P69UnukwwoLgA0EMni5jY3+wqF/uVlfeLzcWXJF7fw8uW/T0z8+8TEv4+P//v4+JB+bSEQxQWABiJZ3IHl5X8ZHv6XkZF/zWT+bXS0sL1NcaXIF3duc/Nib+/Fnp6Onp6Onp7HuRzFBYDjRLK4Py4svP306dtPn77d3X3h55/nNjYorhSl4r7z4oU5/bS0RHFrbmBw+P4336c+vc3ExMQkP93/5vuBwWH3U4pkcX+Yn3/zyZM3nzx58+nTf3j6lOLKorgNbXpmaTHPxxsAULOYL2Ym5txPKfuqxX3y5M2nT2cprqTQxf2R4taB6ZmlWv/kAmhIBynuI7G4T55QXFnhivs2xa0PFBdAOAcs7u/E4q6vU1wpFLehUVwA4RyouAsLv3v6lOIqUyruhZ6ed3p63qa4dYPiAgjn4MX9HcVVpVrctykTQbnWAAAgAElEQVRuPfEq7t0z2omuzEF+Es0tHHxTAOpUVYr7O4qrJMw5bk/PgYubimvNyXTwHFRWr8Ul1UC9q0Jxnz7Vry1TXFlqr+P29LxjRLemxSXPZRQXQDgH+q+DFhbeNIr7O4orj+I2tArFzXSd0MrO3LV+0My5+sy7ZxwL2Yt7t7y4lVCPzYrbtLYnPiqAukJxVR15cXt7zej+eKC/8hhY3HSy2XjGjqeKjlnxVCquiXen4lpzMlmeZ27UWqi8iVRca06mypuJp6wtWuMQH8RzjPUnsLh3z5jJy3SdKM+0bgWuaG3BtTGvzd49Y48r57hAjWlexAWqVlz+AoY85eIa0f3poMV10/uWipuVTCeb9ZmpuNleY3V7W/V7hVVdS6bitkcw1rdWEbaZijcn0w1f3EzXCSGD5SbaZ1r3lbmLa4az4mbFxlJcoPYCcrtfjeLqE8VVEKa4vb3VKK7POW462SxUs5zadLJZPBl1FtfrttV0M7OBqwgn1uLJdZ2rQnGtOZmuE2GLa26pfPpLcYG64Jfb/eoVl7/yqKAxilssFo0mui74+uVTXy+dbJYvboNkVqByVdnMqj2G5uLWPYHF9d6s8TNcjjbFBeqFZ273Ka662hW3t/ewiuu8qmyroNHPSvk055nXpSufFqfimn1MjX5VeV98P5PYP8c7pYyFTpw5I3OO67lZrzdfCf8CUHcOWNx/6O6muMrU/nvcoyiueIHXfYnYeh+U8S/PfBqbaI7HJc9xi/YLy/FUwxYXACqjuKqOvLh9fReqU1xUB8UFEM7Bi2tGl+LKUiju1hbFrTcUF0A4FFdVLYrb13ehr4/i1gmKCyAciqvqqIt7sb//IsWtJxQXQDgHKe6PRnH1ieLKUi5uf79+bZni1gOKCyCcAxb3rZ9/fuvnnymuGvnizm9tdQwMmNGluPVgemZpMV+s9U8ugAazmC9SXFU1KG45uhS3PuRyyzOLK0xMTEyqUy7nETyKG+Coi5sYGjJPcx/n8xQXAI4T2eIuLurF1SeKK0u1uJcGB/UzXYoLAMcMxQ1Qm+Lq0aW4AHDMyBf37XSa4ipTLa4+XRocpLgAcMwoFdeMLsWVpVTc5PAwxQWA40qyuD9R3HDCFTcxNPS4UKC4NffpXwf/7n89+L/Pf8rExMQkP/3d/3rw6V8H3U8pqsXVJ4orS7m4RnQpbj344tn8D+PLR/8f8wFoaD+ML//r4xn3U8q+dHHfefbMLO4cxZWkWlx9SgwNPaG4deCLZ/O1/skF0JAOXlwzuhRXVrjiJoeHnywvU9yacxf3//roECcAx8aBiru0RHHDoLgNjeICCOeAxb3w/Pk7z5+/8+zZ28+eUVxZCsXd3qa49YbiAgjn4MW98Py5fqZLcWWpFXdkhOLWFe/iPtjf39//Q8oq5R+MN1e99ZG1gO67B+VlvjPmmCu65wA4Ng5S3McUN5waFTcV10zNyfTB9yOiXMXN/GF5f398/zshk3+b3t8ft98wY/xgf39//62P9t8a359KG3OW9/9WmPO36fIcigscJ1Uprh5diitLubj6VIXilkObTjZLN9daCzq/q8picf+wbJzIpvanzNPcj6wl3/po/w/LxvKp/anl/b815ju2BuDYOGBxL754ceHFC4qrJmRxR0aqVVyVjlJcJ5ni+t0Wz3rNk93vjOvMYnHNZgM4NqpV3AvPn89tblJcKfVV3HSy2bjWHE9Z98bjzZooniK+Osnius9Wy6/sjvu+1vuHZeE68z7FBRqM5kVc4EDFzeUuvnhhRpfiyqp5cYWryqm4GVprbipuvdIrZJbiFovFA5/jmqe21pVnY45+CXp/f39/3LrmDKCBBOR2v0rFvUhxldSuuOIZa7FY1Ctr3C4WU3H9H+GuP0eF5Ou41mu0Xq/j/iHlvIZsq7KwFoDG4pfb/QMXt6Onh+Iqq/k5roXiqpMprvu9yrZzXON9Un7vrrIuL1NcoAF55na/esW9+OIFxZVVR8V1XlXWb/oUl/gWi0W//zrIZPxXPeWZjn/u7++bcTWvIQvvnNKZuaW4wHFy8OJ29PRc7OmhuArqqbjiO6e8z2vLF6N555SBvzkFIJyqFLeD4iqpUXFRHRQXQDgHLO6l3l6Kq4ziNjSKCyCcahW3o6eH4sqiuA2Nz8cFEM7Bi6tPFFeB2qf1Udw6Q3EBhHOQ4j7J5RJ9feXi9vZSXFkUt6FRXADhVKu4lyiuPIrb0L54Nv/D+HKlnywAsPlhfPngxdWnS7298xRXklJxE/pH9VHcujGSLXw5zMTExKQ8jWQL7qcUihuA4gIAqka2uPl8sr+f4ipTLa4ZXYoLAMdMiOIm+voorqwQxdWjS3EB4JhRKq4ZXYorK1xxExQXAI4d5eL291NcBRQXAKCTLO7TfD45MEBxlVHcRtfV1XX27Nk2AJBz9uzZrq4uz+cT+eJ2Dgzop7nJ/n6KK4viNrRkZ+e1a9cWFhb2AEDOwsLCtWvXkp2d7qcUpeKa0Z3f2qK4UihuQ2tvb19aWtrZ2VkFADk7OztLS0vt7e3upxTV4urRpbiyKG5Da2tr29vbq/XPL4AGs7e319bW5n5KkS1uodA5OGhGl+LKorgNra2tbXd3twQAKnZ3dw9Y3HcHB981oktxZVHchqYXt9ajANBgDljcboobDsVtaHpxVwBARbWKq0eX4spSKu6lqhU3Fdcs8dTB90NOOtmsNSfTR/VwNql4mIeusFZbW9vOzk6h7JM3NE1745OC5ZM3tNil7kKd6r4Uq+fhAcfXzs5OtYr77uAgxZVVu+IeWfmO8rECHvpoihuLxcTm1mFx63BIQOQcvLiXh4YuDw1RXDWqxb1EcUM+9CEWN19287QW67jZEYt1PBHnGP+oD3U4JCByKG4Ix6m4qbjWnEyWLzYL96WTzeLF51Rca47HmzWtublZuBxd3l4qrjUnU+U1mpNp2+XreMr2uNaGze34jUG419h4PGVtwFrSNlivh7aNzW8Y1szmZDJu7odXefXi5spuntZiHY+N/xPm5HK53OOOmPFAp2/mnKx79TtvntZiHR2n9VnGJtzL3TytxU6fjmlaLBYTNisO5GZ5jVjH41zu5mlNHETw8PzGAKAyzYt5b7WKq0eX4soKUdxLVX4dVw9NKm67qd9yv+6aipu5SsXFVBo9Nu62VvU80bQew76kewz2MQsLWsOw1jEeKBV3ddKxuuth7MOw9r9ScTc3N8fKbpzSXnvzod8N7dSNsbGxsbGHb75WnjnmWnFs7Map1958qC9fXsFa1b3mjVOaMefGKeMBzJs3TmnG3daqwmNVGJ7nGADIcuRWvGtzc/NAxV1evjw8bEaX4soKV9xLh3SO6+hiOtnskT1xMaNbVv2szQoZrrDloCWDR+jcpsBxSi0/jHSy2bYTFa4qb25uZsquv641nX9g3Hz9ujXnwfkm7fXrwnLWPzL6vQJxRXGz9o04H9Ha6vXXy/PEe827K285aEkAKswfa8f8gxf3veHh94zoUlxZjVzccpuEQon3misfZXGDfz84rOKOlF1v0ZrO39dv3z/fpLVcN+bo/xKWs/4x4rzXtSnvjbgWG7l/vqnp/H39f33GI7VlY3heSwJQpGmae2Z1i7tAcSWFLu7jIyiu91Vl+4u8zfF4s7iicbcVM5mrygFLBo/QuU3/0SoNQ+Gq8sbGxlDZxy1a07l7xr/unWvSNK085+MWTWv52JxfvimsKK7p2JR5+965poDFhobunWtqamlpElc07rYe1HPLnsPzXBJAFWxsbFSluHp0Ka6s2hXX4vWSp/3lT+v1Xmd57K+3mu+rsl4ftjbh+86p4CiKD1VpSfHCsvXCcuAVZo9hWDst884p3+KWm2vMKQdYc7Z1yHGvnj6/2n3cIi7lekShnOV7W1qahOWFTTgexWN4FBc4LBQ3hMYtbtUIb58q1vQ/BKoNvbgDdeOjX2u//kj8V9P/+KqGwwHgrYrFfW94mOLKauzi2l7yLEazuOvr63114u7ZX/3q7F3r3x/+Z832bwB1Yn19/YDFfX9k5L2REYqrpmGLq1+NDbjwGwl6cXtq787f/0rTtF/9/R1x5j/+J+ccAHWB4oYQ5eKiWCwW29ra1tbWXgCAirW1tYMX14wuxZVFcRtae3v79PR0Pp9/BgBy8vn89PR0e3u7+ylFsrg/G8XVJ4ori+I2tM7OzqtXr2az2TUAkJPNZq9evdrZ2el+SpEv7pVMxiru9jbFlUJxG10ikWhvb28DADnt7e2JRMLz+YTiBqC4AICqUSrulUzm/UyG4iqguAAAnWpxr1BcJRQXAKCTLe7KCsUNg+ICAHQhznGvZDIUVxbFBQDoKG4AigsAqBqKG4DiAgCqRvV13A9GRymuAooLANBR3AAUF65PEK5D6URMiyX0T5jQRxtLpMWZh8d8OLV1HCvYPs7ZvTH7hzQ7lj/8fVR1NEdelvtoNxDX4MMcW9UjkIof5gGTL+4Ho6MfcFVZFcVtbOlEzHyyTycSdZRcz+cRV5sOtDWZtUI8nGdxzTmpuON3m3QiFovHY+Iq1vJ1U7e6DVvdDkxG6ME7vqMobmOguJFXv89XfsU9+DPU0a9lnyP+lqMHN5HW/9dr+Tr5CtXJMNzqdmAyIl9cI7oUVxbFbXCpuPvCZToRs11nTsW1WDwe07RYTGyF+ZPuu7zj/NC5nP+KgnjKeCTrWmsskbY/0XhsyL66/cK5c3HXwOzbEM43HYt57mml4jouLOiptSW34vNpwJG0jS2RiNuvTXvO9DwA4izHARSGJPu4nkdY5mvnP2bxWKXK2wjcI4/l4ylrQftViMoD8Hg1Jm0OI+F1iISvuXsx55c+YK+9vhwKR+BwKRd3dPQDiiuP4ja+8o+m7RnTeH422mbMSsXF5eKpSsvbH8X1xBGwomd1PGcGXHkNXtF4XGGnfFYv2q4wWw/ouacqxbVCKyY3+Kqy55H0HpsQMSFnHjMdX4jAL5btqMo9ru8Rlvzaucds23fXN4J7j7yWF276bFlyAM6jkU7ENN+ReC4W+kHde+T3NT0iFDcAxYUhnSifqQlnLbZfoq0fb+NH2nmC67m8uH37s0blB5IrrnvLRfcJqvdpWflxvZ75nGOwP4rHbxuea3nP8c6s8AjCSYz3OaH7SAaPreIBdB+Q4Kd4jyMf9Lh+R1j1a1fp2JbH4PGtFbgjjtuSA3As5nmVwvPYel/MkPhKye9F0BE4XGGKOzpKcWVR3GOj/OxX4dnW9bpjpeXtWw+cU63iWnPMYfq207aS86npcIprbUosq/jU6LlZ9+rec0IVN9SXRuFxja06jrDq167CsTVW9vkS++6I904FDsC9mG9xXTt4RMWtzX96QHEDUNzISyXEZyvzqpf/FUXzvbXmz3Ol5a3VPK6FSly6LFZ6GnJt2eMe51U4z6DZ377ksZZwBTUgjRWfH22vDwoLmtsNLG7lq8rusQUfQPcBCXdVOeBxre1WeKDKXzv3sTVm2X+V8TmClb7HJAfgvZjnVWXfL1alq8oHKG7QEThcFDcAxYVwmuXxphnPq8TmBeii3PIej+V+v497xfLStvkBTzTils23plj/1Y2wNdfjusYlDNhxbipcRXQv4D6kmvVLjOZc12NlIxnBxQ0+kiF+ZXF/ITwewuvLIf24vkdY5mtXuT3mu+2srXvsUcBhEW9LDsDje8zcFZ93TjnfG1b5nVP+32beX44KX9OjQHEDUFwAqLbaXdStOYob4KiLmxgeTlBcAMdazS7p1gGKG4DiAkBV1Ogybp2huAGOtrjb23pxExQXAI4jihugZsVNUFwAOHYoboCjLm5yZCQ5MkJxAeBYorgBalncJxS3jiwl3urWznRrZ7q1t8bV3vGRGY+d6UlkisVisfhoqLwFcWaVpD7sjn22ZP370ZD2YdZrwWxcf2jvMRj3Bgsz/ir9MT39P/uI6vtu0OgoboCjLm7nyIgZXYpbLzLjsTPd8UfWPxOPghYvFos+3crGxe0okKugPbGpD/0eK3hrAffKDcNXVYor/E0JoAFR3ABHXdx3R0bM6FLc+rCUeCtEJv2KG65Y8uedQ0aMsnHrttLW6r+4nN6igVHcAEda3IXt7XdHRszoUty6YMuY+y79UrO+QDZ+pif+YU/54rM+fZg1QpWNGzNjny3Z62VdstbTnvrQsbr4T/fjmoRfDoTzXfvWisJDC2Mwthn7bNycGTgMj3U16ww+Gz/Tk/hsSNhfT6m45v4YNfNvJNn+wpLjb18Jf7bQ8ceK/NY1Hs7j890CPtrP629suT73zeMPRkl+LB2ih+IGOOriXs5kKG59yYzHvF+4FZLzaMiIqFkXMahehbNuLyXe8mtS8Irm41rSn/Xoc7wuKbu3Jt4oL5/+rEdznsgGD0O4VG69uJuNm4F/NOT6zcCUipvh8v6AP+GM1vooN6+/2Bf8aYbCva7Pd5P5kMTgAbtX9PsDwn6bRYRQ3ABHXdz3MpnLxmkuxa0Lfue4womdx2mffHE9t/9oyNiy78mo/bRVGNVb4+niUuItoZq+WxPGYP1WYSu67zB8xm+U3u9QODj/TLTzUwqCP6/wIPeat6U+JDF4wOJJrrFN9x+Hrt3Hw6GuUNwAtShuJqNfW35KceuCz+u4HqWsUnGtOWY4HcX1O2U0VnkkFDRoa4HFDR5G9Yvr9blAwR+Kd5B7KxRX5pPs3J98p/ixdIgkihvgqIv7fiZjRpfi1otHQ5rHe5XFa8i6UMV1X1V+NFT+D5BsF2nFFQNeGdUvCwsLBG0t8Kpy5WF4XlW2XtKWK67nB8nZXiEN/FC8g9zrd3U4+JPsXAM+0MfScXU5cihugBoUtxxdiltXxGu5ttNHv6vKxtuObPMDkiy+88h4I9VbQ3Hj4rCwNffjuocqFs69Na/xPDLf5TQu/irgPwzPC93Bv3C4eX6QnN8nAHp90GH4ewM+yrDCJ9m5Bhz6Y+kobhRR3ABHXdwrZnEzmW6Ki2Ou4ZKjPmAuJsOO4gaoTXH16FLcemD7T32YDjB5Hd3jX9wofywdPFHcAEde3NFRM7oUF8fdcS0uH0sHXxQ3wFEX94PRUTO6FBcAjhmKG6AGxTWjS3EB4JihuAFqV9zR0Z8pLgAcLxQ3QG2Kq08/r6xQXAA4TihuAIoLAKgaihuA4qLY1dV19uzZNgCQc/bs2a6uLs/nE4obgOJGXbKz89q1awsLC3sAIGdhYeHatWvJzk73UwrFDUBxo669vX1paWlnZ2cVAOTs7OwsLS21t7e7n1IobgCKG3VtbW17e3u1/vkF0GD29vba2trcTykUNwDFjbq2trbd3d0SAKjY3d2luKoobtTpxa31KAA0GIobAsWNOr24KwCgguKG0LjFtT7yU9Oak6H/WHw62eyxeip+kG02lLa2tp2dnYLdJ29o2hufFKrgkze02KVupeUt1prdl2Jq26k69474DFW823YMxeX99qX7UsyxiPG4VT0CEmMzRlLbo446trOzQ3FVNXRxy1H0juaBRLu43ZdisTfeiFXluTZEcc3lP3lDO3j4VQcgv53AoXocQ2t573p2X4qJ2+i+dOmTg4zff0XZsVXr0OF4orghHIfiHkIgI1fcvOBJRyzW8UT/3/xB3TytKW3GvvyTjph2+uaRDkB+O0FD9TqG4vLurfntaujx+64oPbZqHTocTxQ3hGNW3FRca47Hm8uf2ZlONts+wzOdbBY+zLO8krAdY/nmZNI90/gcUOEhjkWX9eLmLI87YrGOx9b/53K5XO7maS3WcbOjfKHRmH3ztHF8T98UVhfnea/oXMpy87SwlL6ctZ3H5RunT8fKK3psR5xlDbB8v3WnuYK5wVgsJozGMRDXv/2HGngMH/tsTVzb+4AIqzj3+uZpLdbRUd7XWMdj8Svj2qr82Ny7jGjRvJj3UtwQjkNxhavKqbj1om4qbn5YtrlEKm4m17gp1rp8ZzrZrAkJN7dnbEJ4tGNR3M3NzTHTwzdfe+3Nh/ZbY2M3Tmmapv/r4ZuvaeZ8816/+4QVb5zStFM3bMuPjd045VpenPHwzdf0dcz5N05pwsrO7XgOwLYX+giEBYUN3jhl3C3e9BxYwFADjqE117kxcUEbcccdN8y9vnFKEw6t+yB7P1DFsflsAVHiyK141+bmJsVV1dDFNZknro4TVtsJrdFX41TVkc10stnKpzBT/HaLp45JZgV6cTOGB+ebms4/MG9rr1/PZDKZzPXXNXN25vrrwuyypvMPbCtkrGXNFY3bD843iUfVtobtgYThmPOFBdzbCR6A/V5jLxwj1Be4/ro4Co+BBQw14Bh677N7bF6PEnD0vA6yx4BVx+a9BUSN+Z3hmE9xQ2jo4ga+x9i7uOWwCnmtWFxrI/6P28D04o6UXW9xXkNquV6e33T+vr7M/fNNWst16/9HRu6fb2o6f1+cMyJs0FzRuO2xmOfy4pLmfGEB93aCB2C/93qL/g/bI+p7YuyP/8AqDLXiMXTzOyiuHZc8yN4PpzS24AEjQjRNc8+kuCEc3+I6ryob4Uwnm5vj8Wb3abHfVWXHw9iuMx+D+La1tW1sbAzpPm7Rms7dGzLdO9ektXys32HcI87TZ9071+S6NeSxRfO2sDUnx/L6IznWtS1g307FARgbNPfCsc/3zjU1tbQ0uUfnPDS+Ww46hj47bW3D3N+hoXvnztnWCjh6fgfZ9XBqY6s0YETbxsYGxVV1jIsrXhMWl0wnmzX3G6jKN8tLe75zynVV+dgV1/0Uazwlf9yiNbW0lC9nGlW4d06fYUvUx+ZZlOupXLhtrCpuzrG6PSs+IfHYjmMAxr/1f1jLe43KXN82JPfA9BW8hxp8DCsETNyd8rJeO+7ca++DbNtx5bGZX1yaC28UN4TGLS6qQy/uQAUf/Vpr+h9fVVrqWPjo19qvP6r1IIC6R3FDoLhR19bWtr6+3lfBh/9Z+9XZu5WWOgbunv1VNHYUOKD19XWKq4riRp1e3J4K/vE/ab/6+zuVlmpsd/7+V5p2/HcTqA6KGwLFjbq2tra1tbUXAKBibW2N4qqiuFHX3t4+PT2dz+efAYCcfD4/PT3d3t7ufkqhuAEobtR1dnZevXo1m82uAYCcbDZ79erVzs5O91MKxQ1AcVFMJBLt7e1tACCnvb09kUh4Pp9Q3AAUFwBQNRQ3AMUFAFQNxQ1w1MW9QnEB4PiiuAFqUNwrFBcAjimKG4DiAgCqhuIGqE1xr1BcADiOKG4Aigugxrq6us6ePVvr/+AFss6ePdvV1eX31aS4AY68uJmMGV2KCyDZ2Xnt2rWFhYU9NIiFhYVr164lvf78RZHiBqK4AGqpvb19aWlpZ2dnFQ1iZ2dnaWnJ8088FiluoFoU14guxQXQ1ta2t7dX64hAzd7eXpvXxxgUKW6gGhU3k6G4AIrFYltb2+7ubgkNZXd3l+KGQHEB1JJe3FqPAmoobji1K24mQ3EB6MVdQUOhuOHUtLjLyxQXiLi2tradnZ2CU/elmFYWu9RdKBQKn7xh3FIUsOInb2ia9sYncgtXS6Xx2He7Pu3s7FDcEI66uO9TXAACj+J2X4qJHey+dOmTwqEVNxaLic2tsHA1Kij1EN2XYkfYXOVdo7jhUFwAtaQXN2950hHTTt/Mu9w8rcU6nrjnVxSw4s3TWqzjZkfMur/SwmEGoDieJ9V9uAMOyRvFDacGxX2f4gIw6MXNmR53xLTTN3NuRh31S64dj4XldeZajlk3T5cXv3laXCpn3WUukRNv2jZz87R5uff0zZunzc3Yl9fnWivaFjt9OmZsqsJ4HLetxy4vLG7N+17zQJ2+aQ3H56DZds3rkNoeTkdxw6lNcd+nuACKxWKx2NbWtrm5OWZ6+OZrr735cMztxilN0/S7bpzStFM3yjONpW+ceu3Nh2NjD998TbNvQF/m4Zuvlddx3RV8w9yybY75+K+9Vh6vMXBrcMJYbpzSxJUrjsdjN+xjc91pv9d9M/CgCXO873U+3ObmJsUNoWbFfT+T6aa4QOTpxc2YHpxv0l6/nnG7/rrWdP6B/faD802a4PXrXqtff11ramqyVvbe5vXXtdevB21ZXPjB+aam8w8ymeuvN52/rt82ZtkHUN6qa/D+47E9pGu2vpK4teB75Q6aY9cC7jVQ3HAoLoBa0os7Yrl/vklruT7icr1Fazp/337bvazH2tdbNK2pyXOj4jb1Nf237Fy46fz96y1N5++P3D/f1HJdn+EawPUW/R+OwcuMx71H5mMIiwXfK3nQvDcYNCqKGw7FBVBLbW1tGxsbQ6KPWzRNa/nY+Oe9c+c+1uc2nbtnLqHf/rhFs+aWl25yzCkvLK7vuEtYVdN8t2xb+N65pqamJv3f9841tbS0GPd93GIO/t65pvJNj8FXHo9jnrVnwmLB98oeNMdiQTuu29jYoLghUFwAteRRXCt+mlVAv5CIS5ZD93GLbYYtSvZ2OFtiW8K15fJ29UcRy+6ovLVicPkqj8e2uaaWliZ3U4PvlT1orl0T76W4VUNxAdSSXtwBNBSKG85RF/c9igtA0NbWtr6+3oeGsr6+TnFDoLgAakkvbg8aCsUNh+ICqKW2tra1tbUXaChra2sUN4QaFPc9igvA0N7ePj09nc/nn6FB5PP56enp9vZ2zy8oxQ1w5MUdGaG4AEydnZ1Xr17NZrNraBDZbPbq1audnZ2eX1CKG6A2xdUnigugWCwmEon29vY2NIj29vZEIuH31aS4AWpxVXlkRO8uxQWAY4biBjjq4l42cktxAeD4obgBalDcyxQXAI4pihvgSIs7v7X17vBwObojIxQXAI4ZihvgqIur5/Yyr+MCwHFEcQPU4Bz33eHhy8PDlznHBYBjh+IGOOridg4NmReWZYq7t7dX8YsHAKgT/ROze3t7wctQ3PAOtbhFI7pMTExMTPU/VcxtkeIexGEXt1gs7gMAGoHMUzrFDU+puMnBQaSAtJIAAAyQSURBVD267w4PyxcXAHBsUNzwKC4AQB7FDY/iAgDkUdzwlIqbGBgwo0txASCCKG54qsVNDA4mBwc7h4efUlwAiB6KG558cee2ti7195unuU8LBYoLAFFDccNTKO7mZkd//6WBAT26MsX94OpVmengewEAOBp6ca+Mjl6huKrUitvXp5/mJgYHn8gVd70SigsADYTihqdU3It9fWZ05Yv72e17jumPd76+c++b+w+/cxU3Fdcs8VS4fUrFteZk2v9Og/9CEtsRpJPNocfayDyPj+RBC1hM9rAfCWMw6WSzOSr9W6h+xtgQxAMop66+DyCiuOGFKK5+bflJPi9f3KfP+s3pee9Q/9BoZmziu7888iqu+LwWrmP+P6qpuPBMWfE5QO5HPp1srsETQz08HR19cY9+r92PGP77MnoO+PWqzY8WKhKLq08UV5Zqcc3T3Mfqxf35xUBP/8hQZnxsYmp6JvvDjz8FFTf8j6vfiq5z0Qonp1IDqNGzAsU9Gp7FrfmRbxQHPlapOL/d1CGKG55ScS/09l7s7b3Y19ehWNyfXww+7xvuG8xkxiampmdm5+YWFha6f/65wjmu7XTUdqXZujZs/kAayzQnk94/5x59NXOZiuvr2a426yOwr+Z8DhGDm4przcmUOQxrI/F4c3mgth3x2bJzZ91jE66Mx1MeR0fYpOuwOTYVvHfSx7niwZdY17a/Hnc59jpgv8XhW1+R8hF3vKBgbUTYisc49VFZY9C3G3DovLZs/2Yoes2s/NX3/8rK7qnrcPkM1fXN7D08c/D2UTm+Xp5fVvvDuXaTs9z6RHHDUytuT49e3It9ffLFvfXlg/6h0ZHRicmpmYWFhXw+XygUCoVCX/9A0Ou4nk9mqbirCOYTovg87FNc52yzN6m4+BzieOoXftF2/c4tzkjFzWcL64q1eCHbtSMeW3bvbODYvMbkYjtKzk0F7Z33FlzHWeLgFwPWde9vxbs87/V+RHHXy4vZDqOxy/Yvmf84vY+81zeG95ZdQw38DvH+6nt/XSrtacAPkfdQvb6ZPYbntUeu5b2+hZwP57GbnOTWo5OtrT8vL1PcMFSLWz7N7e19nMtJFver+9+OTUxlZ2eXlpZWVlZWDaNj477nuOKpl/Abse13a034hdhWU3EjwjoVz3E9nhrMG8ajOp9dHMW1DcJZUI8dcW3Ze5mAsQVWznGUfDflt3fSx9k9063C18i1v8GHwvO7wmP/PV+k8Po2Mw+E9+74VcTn0Hlu2fvgVPwO8f4lQ+IrG3ycFYZqHZmg4cmNqvLDibc5ya1HFDc8peK+09PzTk/Phd7eCyrFffDt9zPZ2cXFxUKhsLq6ur6+vrGxsb6+PjU9HXBV2fpRc5fSmmMsJfWkH/A6boWq6Zv3+un3K6549iw+nzrL4NyyxzKVimtuW/Pbu+BfLPz3TvI4H7S4PvsbfCik3iB+2MWVOXTClqWKK/HVl/7KBh5M+aEaS8h+RQJHpVZcznHrUbm4mcyVTIbiqlEr7osXIYr7/V9/0HNbLBbX19c3DXNzc3LvnHJduTLvqXAl0MV5wcrrap7feWRzPO7x67bjdVwhYt4td42svGXPUQUfE68tVT5KXs9rfnsne5zlDr7/uj77W/FQ+D5S4KFzPoRwhdN5WbPCVeWAQ+e75cDiSn715b+yQQez4lA9v5n9hyc7qopHxvGdySlu3bEVN5OhuAqUivv2ixfmae5P0sV98rS7r68/kxmdnJqam59fyuVy+Xwul19cXAosrvCTK17OEi9viU92xhWtCm/esS58ib88V66aLdYC4TkhFS+/i0TcuOsJ2vnw6WSz+ypf5euK5f2Ii+8ocl8zdxwlv+dlv72TPs7umX5xca8bsL+uw2Xttftej0es2CFxI8LKHuP0/V3H7xvDa8sViyv51Zf/ygYdzIpDdX0zBw/P47tF+HoFH3OfMXOKW5ecxc1kKK4s1eKa0ZUv7vH4m1O+P/tWcj2fTxtD1Z/Zjv6pslZPzsc0CvXwzcwZbp2iuOEpn+MqFveY/F3lwJ9949pYPTxJhVL9Z7bIBPfYRqH238y+Fw9QaxQ3vBDnuHp3ZYp7LOiXwGSefWr/JKVOfu/gcLwPXSN+M+OIUNzwKC4AQB7FDS9ccd9+8eKnpSWKCwBRQ3HDC13cHykuAEQPxQ2P4gIA5FHc8CguAEAexQ1P9a88UlwAiLKTra3dFDcc5eIa0aW4ABBBFDe8EJ9kQHEBILL04r6fybxPcVWFKK4eXYoLABFEccMLWdyeHooLABEkFvd9iqskXHHf6en5kb85BQDRQ3HDC11c/sojAEQQxQ2P4gIA5DmK+z7FlUdxAQDyKG54FBcAII/ihkdxAQDyKG54FBcAII/ihqdU3Au9vRQXAKKM4oZHcQEA8ihueMrFNaJLcQEggihueKrF1SeKCwDRpBf3PYobAsUFAMijuOGFK+6F3l6KCwARRHHDo7gAAHlmcfWJ4iqguAAAeY7ivkdx5VFcAIA8ihsexQUAyKO44VFcAIA8ihue2t9VprgAEG0UNzzlTzKguAAQYRQ3PIoLAJBHccML8TruOz09FBcAoonihkdxAQDyKG54If+uMsUFgEiiuOHxSQYAAHkUNzyKCwCQR3HD4y9gAADkUdzwKC4AQB7FDY/iAgDkUdzwKC4AQB7FDY/iAgDkUdzwlIp7keICQLRR3PAoLgBAHsUNT7W4FykuAEQYxQ2P4gIA5FHc8EIU9yLFBYCoorjhhSvuRYoLAJFEccMLXdzHFBcAoofihkdxAQDy9OJeprghqBW3r+9iXx/FBYDIMot7meKqorgAAHkUN7wwxe3ro7gAEE1icS9TXCUUFwAgz1HcyxRXXsji9vVRXACIIIobnlJxO/r6OiguAEQYxQ2P4gIA5FHc8EIUt4PiAkBUlYs7MkJxlYUrbgfFBYBIorjhUVwAgDyruPpEceVRXACAPGdxR0YoriyKCwCQd7K19SnFDYfiAgDkUdzwFIq7tUVxASDi9OK+S3FDkC/uPMUFgMgrF3d4+F2Kq4riAgDkicXVJ4orS6m4l/r7O/r7KS4ARJZe3M7hYTO6FFeWanEvUVwAiLCTra1PCoXO4WEzuhRXVpji9vdTXACIpnJxh4b06HYOD89TXEkhiqtHl+ICQATpxU1S3BDCFfcSxQWASDKLa0Z3fmuL4kpRKm5iYMAqbj5PcQEgak62tj4uFBKDg2Z0Ka4s1eKa0aW4ABBBJ1tbH+fzlwYG9OhSXAVqxRWvKlNcAIges7iXjNNciitLtbjl09yBAYoLABFkFdc4zaW4skIWl3NcAIgkvbgdAwNmdCmurBCv4ya4qgwAUVUubn9/B8VVFaa4AwOJgYEnFBcAoudka+vjXO5if39Hf79+mktxZVFcAIA8sbgdFFcJxQUAyDvZ2vpTLnexr888zaW4spSKm6S4ABBtenEv9PVd7Ou72NfX0d9PcWWpFXdwMElxASDCzOKWo9vfP0dxJSkX14guxQWACBKLq0eX4sqiuAAAebbi9vZe6Oub29ykuFKUittpFDdJcQEgkvTivtPbe0GfKK481eKWozs4SHEBIIJsxe3ro7gKQhS3k+ICQFQ5i9vbS3FlhS9uoUBxASBqzOLqE8VVoFbcoSEzuhQXACKI4oanXFwjuk8pLgBEj6O471BceWGKOzREcQEgmihueBQXACCP4oanVNx3h4beNaJLcQEggihueBQXACCP4oYXorjvUlwAiCqKG558cRe2ti4PD5vRpbgAEEEUNzyKCwCQR3HDUy3uZYoLABFGccNTLq5xmktxASCCyp/WR3FDCFHcyxQXAKLK+nxciqsqTHGHhy8PD1NcAIggihte6OJ2Ly9TXACIGqu4fX0X+voorgKF4m5vv0dxASDaKG54asUdGaG4ABBljuLyaX0KVIv7HsUFgAhzFrevj+LKUi6uEV2KCwARRHHDUyru+xQXAKKN4oanVtxMxjzNpbgAEEEUN7ww57gjI++NjFBcAIggihueanH1ieICQDRR3PBUryq/n8lQXACILIobnnJxjdNcigsAEURxw6O4AAB5FDe8MFeVMxmKCwDRRHHDo7gAAHkUNzyl4l4xi5vJUFwAiCCKGx7FBQDIo7jhqRb3CsUFgAijuOGFKO4VigsAUUVxw6O4AAB5FDc8teKOjprR/ZniAkD0UNzwlIr7AcUFgGijuOGpFveD0VH9TJfiAkAEUdzwKC4AQB7FDS9EcfWJ4gJABFHc8CguAEAexQ0vfHFXViguAEQNxQ2P4gIA5EW2uP8H8UQo+anzXNUAAAAASUVORK5CYII=&quot; alt=&quot;&quot;/&gt;&lt;br/&gt;&lt;p&gt;Enter the connection details and click next. (Here in my example i run on localhost port 10389.)&lt;/p&gt;&lt;br/&gt;&lt;p&gt;In the next window you will be asked for parameters for authentication details.&lt;/p&gt;&lt;br/&gt;&lt;img alt=&quot;&quot; src=&quot;data:image/png;base64,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&quot; alt=&quot;&quot;/&gt;&lt;br/&gt;&lt;p&gt;Enter the parameters for simple authentication. In the Bind DN or user field, enter the DN of the administrator&amp;#8217;s account on the directory server (for the default instance of the Apache directory server, this is uid=admin,ou=system). In the Bind password field, enter the administrator&amp;#8217;s password (for the default instance of the Apache directory server, the administrator&amp;#8217;s password is secret). Click Finish&lt;/p&gt;&lt;br/&gt;&lt;p&gt;If the connection is successfully established, you should see an outline of the Directory Information Tree (DIT) in the LDAP Browser view. In the LDAP Browser view, drill down to the ou=users node, as shown.&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a id=&quot;d0e4097&quot;&gt;&lt;/a&gt;&lt;img alt=&quot;directory information tree in the LDAP browser&quot; src=&quot;http://fusesource.com/docs/broker/5.3/security/images/ldap_tutorial_04.gif&quot; alt=&quot;&quot;/&gt;&lt;br/&gt;&lt;p&gt;Right-click on the ou=users node and select New Entry. The New Entry wizard appears. Leave the Entry Creation Method by clicking next. In the Object Classes pane, select inetOrgPerson from the list of Available object classes on the left and then click Add to populate the list of Selected object classes. Click Next.&lt;/p&gt;&lt;br/&gt;&lt;img alt=&quot;form for adding a new object&quot; src=&quot;http://fusesource.com/docs/broker/5.3/security/images/ldap_tutorial_05.gif&quot; alt=&quot;&quot;/&gt;&lt;br/&gt;&lt;p&gt;In the Distinguished Name pane, complete the RDN field, putting uid in front and jdoe after the equals sign. Click Next.&lt;/p&gt;&lt;br/&gt;&lt;img alt=&quot;form for adding a DN to an object&quot; src=&quot;http://fusesource.com/docs/broker/5.3/security/images/ldap_tutorial_06.gif&quot; alt=&quot;&quot;/&gt;&lt;br/&gt;&lt;p&gt;Fill in the remaining mandatory attributes in the Attributes pane. Set the cn (common name) attribute to John Doe and the sn (surname) attribute to Doe. Click Finish.&lt;/p&gt;&lt;br/&gt;&lt;img alt=&quot;form for adding attributes to a new object&quot; src=&quot;http://fusesource.com/docs/broker/5.3/security/images/ldap_tutorial_07.gif&quot; alt=&quot;&quot;/&gt;&lt;br/&gt;&lt;p&gt;To add a userPassword attribute to the user entry. In the LDAP Browser view, you should now be able to see a new node, uid=jdoe. Select the uid=jdoe node. Now, right-click in the Entry Editor view and select New Attribute. The New Attribute wizard appears. From the Attribute type drop-down list, select userPassword. Click Finish. The Password Editor dialog appears. In the Enter New Password field, enter the password, secret. Click Ok.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;strong&gt;Point wso2 Identity server to the newly created external LDAP&lt;/strong&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Goto Identity server root folder and browse in to &amp;#8220;wso2esb-{version}\repository\conf&amp;#8221;. Open &amp;#8220;user-mgt.xml&amp;#8221; in the editor.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Un-comment the commented section about external LDAP.&lt;/p&gt;&lt;br/&gt;&lt;img alt=&quot;&quot; src=&quot;data:image/png;base64,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&quot; alt=&quot;&quot;/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Change the password of connection as following line. (since our previously entered default password is &amp;#8220;secret&amp;#8221; we entered that below)&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&amp;lt;Property name=&amp;#8221;ConnectionPassword&amp;#8221;&amp;gt;&lt;strong&gt;secret&lt;/strong&gt;&amp;lt;/Property&amp;gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Run the Identity server and create a new user by signup.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;If all goes correctly you may be able to add new users by Identity server and, in Apache DS you may see the newly added  users.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://sahanlm.blogspot.com/feeds/2896691775610035051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sahanlm.blogspot.com/2013/09/configure-wso2-identity-server-to-use.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/2896691775610035051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/2896691775610035051'/><link rel='alternate' type='text/html' href='http://sahanlm.blogspot.com/2013/09/configure-wso2-identity-server-to-use.html' title='Configure WSO2 Identity server to use Apache DS LDAP'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17507492010731314081</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4664324677113140555.post-6956301620662119020</id><published>2013-08-06T06:30:00.000+05:00</published><updated>2013-11-05T13:54:17.155+05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="regular"/><title type='text'>Gradle how to add &amp;#39;providedCompile&amp;#39; configuration</title><content type='html'>&lt;p&gt;&quot;providedCompile&quot; configuration is used to declare dependencies that will be provided in run time so there is no need to copy the dependencies to resources folder.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;br/&gt;But this configuration has not added in some plugins by default (ex. &amp;#8220;java&amp;#8221; plugin). Thus we have to manually configure our build script for &amp;#8220;providedCompile&amp;#8221; configuration.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;First we add configuration for providedCompile as below,&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;&lt;div&gt;&lt;br/&gt;&lt;pre&gt;configurations { providedCompile }&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;/div&gt;&lt;br/&gt;&lt;p&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Then we have to add the new configuration into classpaths as below.&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;!-- HTML generated using hilite.me --&gt;&lt;/p&gt;&lt;br/&gt;&lt;div&gt;&lt;br/&gt;&lt;pre&gt;sourceSets&lt;span&gt;.&lt;/span&gt;main&lt;span&gt;.&lt;/span&gt;compileClasspath &lt;span&gt;+=&lt;/span&gt; configurations&lt;span&gt;.&lt;/span&gt;providedCompile&lt;br/&gt;sourceSets&lt;span&gt;.&lt;/span&gt;test&lt;span&gt;.&lt;/span&gt;compileClasspath &lt;span&gt;+=&lt;/span&gt; configurations&lt;span&gt;.&lt;/span&gt;providedCompile&lt;br/&gt;sourceSets&lt;span&gt;.&lt;/span&gt;test&lt;span&gt;.&lt;/span&gt;runtimeClasspath &lt;span&gt;+=&lt;/span&gt; configurations&lt;span&gt;.&lt;/span&gt;providedCompile&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sahanlm.blogspot.com/feeds/6956301620662119020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sahanlm.blogspot.com/2013/08/gradle-how-to-add-configuration.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/6956301620662119020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/6956301620662119020'/><link rel='alternate' type='text/html' href='http://sahanlm.blogspot.com/2013/08/gradle-how-to-add-configuration.html' title='Gradle how to add &amp;#39;providedCompile&amp;#39; configuration'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17507492010731314081</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4664324677113140555.post-4910116007535947222</id><published>2013-07-03T09:31:00.000+05:00</published><updated>2013-11-05T13:54:17.161+05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="regular"/><title type='text'>Websphere - increasing wait time when uploading an application via&#xa;admin console</title><content type='html'>&lt;p&gt;Default time for application install (upload) in websphere has been set to 60 seconds.&lt;/p&gt;&lt;br/&gt;&lt;p&gt;To increase this you have to go to&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;strong&gt;Application servers &amp;gt; server1 &amp;gt; Web container &amp;gt; Web container transport chains&lt;/strong&gt;&lt;/p&gt;&lt;br/&gt;&lt;p&gt;&lt;strong&gt;&lt;br/&gt;&lt;/strong&gt;There are several handler chains defined for various purposes. Since in this post i m going to describe the scenario of uploading app via admin console, i l skip the rest. (though the procedure is same)&lt;/p&gt;&lt;br/&gt;&lt;img alt=&quot;image&quot; src=&quot;http://media.tumblr.com/07c806e687a37463763268fb2551e35d/tumblr_inline_mpd24s4duK1qz4rgp.png&quot; alt=&quot;&quot;/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Select &lt;strong&gt;WCInboundAdminSecure &lt;/strong&gt;from the above lists (since admin console use SSL).&lt;/p&gt;&lt;br/&gt;&lt;p&gt;Increase the &amp;#8220;&lt;strong&gt;Read timeout&lt;/strong&gt;&quot; . Click Apply and save.&lt;/p&gt;&lt;br/&gt;&lt;img alt=&quot;image&quot; src=&quot;http://media.tumblr.com/1e794b9e5ea686166695a3467c3d84c5/tumblr_inline_mpd2alwsFb1qz4rgp.png&quot; alt=&quot;&quot;/&gt;</content><link rel='replies' type='application/atom+xml' href='http://sahanlm.blogspot.com/feeds/4910116007535947222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sahanlm.blogspot.com/2013/07/websphere-increasing-wait-time-when.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/4910116007535947222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/4910116007535947222'/><link rel='alternate' type='text/html' href='http://sahanlm.blogspot.com/2013/07/websphere-increasing-wait-time-when.html' title='Websphere - increasing wait time when uploading an application via&#xa;admin console'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17507492010731314081</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4664324677113140555.post-3422944930245802485</id><published>2013-06-03T14:23:00.000+05:00</published><updated>2013-06-03T17:51:52.921+05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="XML"/><category scheme="http://www.blogger.com/atom/ns#" term="xPath"/><category scheme="http://www.blogger.com/atom/ns#" term="xQuery"/><title type='text'>Using XQuery to get values from set of XPaths and return null if node is not presented.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
I have been stuck for few days due to that i can not return anything from querying XPath if that specific XPath is not presented in my XML file. The scenario is that we have nodes in our XML file that may be or may not be present in XML file arbitrarily.&lt;br /&gt;
&lt;br /&gt;
Yes you can do it programmatically if you only use one XPath at a time. But my need is different. I want to get values of several XPaths at once and at the same time i need it to give me something pre-defined ( let&#39;s say &quot;null&quot;), if one of XPaths i am querying for is not presented.&lt;br /&gt;
&lt;br /&gt;
So i basically had two problems to overcome. One is how to get values of several XPaths at once.&lt;br /&gt;
And the other is getting per-defined value if that specific node is not presented in my XML document.&lt;br /&gt;
&lt;br /&gt;
First i tried using purely XPaths. In this way i have been able to overcome my first problem, that is querying several XPaths at once. That is by using &lt;u&gt;XPath Union&lt;/u&gt; operation. XPath union operator can be use as follows &lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI-CB-mnKlb6K4HRQQRV8hiCrprpYOrFNbUQNyCOfPbI2xbp3v5SWdB8n9TfAPiVPXPG6RfqaSnTdrTSN_TNZ4YSwOZDMCpVd7QRZk3a1uHQJNoXIRdXGzyA0xLIuuPmpHPc0AF_Fl3tAT/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt; /A/B/C/text() | /A/D/C/text() | /A/E/C/text()  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI-CB-mnKlb6K4HRQQRV8hiCrprpYOrFNbUQNyCOfPbI2xbp3v5SWdB8n9TfAPiVPXPG6RfqaSnTdrTSN_TNZ4YSwOZDMCpVd7QRZk3a1uHQJNoXIRdXGzyA0xLIuuPmpHPc0AF_Fl3tAT/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt; /A/B/C/text() union /A/D/C/text() union /A/E/C/text()  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
Here by using &quot;|&quot;&amp;nbsp; or &quot;union&quot; you&amp;nbsp; can join as much as XPaths you want. And i have seen that this improves performance since you can use to get several values you want through out the system at one call without calling the same function (which you use to execute your XPaths) several times.&lt;br /&gt;
&lt;br /&gt;
Also order of the values return by using XPath union preserve the order of the elements appear in XML document.&lt;br /&gt;
&lt;br /&gt;
Problem in this method come with this order. If you join an element that will not present in the XML file always, it will destroy the order of the values return. Which is lets say if all the &quot;C&quot; elements present in above example, then the returning order values should be,&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI-CB-mnKlb6K4HRQQRV8hiCrprpYOrFNbUQNyCOfPbI2xbp3v5SWdB8n9TfAPiVPXPG6RfqaSnTdrTSN_TNZ4YSwOZDMCpVd7QRZk3a1uHQJNoXIRdXGzyA0xLIuuPmpHPc0AF_Fl3tAT/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt; 1. value of /A/B/C/text()   
 2. value of /A/D/C/text()   
 3. value of /A/E/C/text()   
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
But, lets say that Node&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt; &lt;span style=&quot;background-color: #eeeeee;&quot;&gt;/A/D/C&lt;/span&gt;&lt;/code&gt; is not presented in XML file.Then the order will be,&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI-CB-mnKlb6K4HRQQRV8hiCrprpYOrFNbUQNyCOfPbI2xbp3v5SWdB8n9TfAPiVPXPG6RfqaSnTdrTSN_TNZ4YSwOZDMCpVd7QRZk3a1uHQJNoXIRdXGzyA0xLIuuPmpHPc0AF_Fl3tAT/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt; 1. value of /A/B/C/text()   
 2. value of /A/E/C/text()   
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
Yes you get it right!!! Nothing in the middle saying that we have no &lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;&lt;span style=&quot;background-color: #eeeeee;&quot;&gt;/A/D/C&lt;/span&gt;&lt;/code&gt; node. So the order of the return values have been changed.&lt;br /&gt;
&lt;br /&gt;
Because of this I have find an alternative and XQuery came to rescue. Yes XPath is to do complicate stuff like querying and modifying results. That is the job of XQuery. XPath is there to show the way to XQuery (&quot;hey dude the node you are looking for is this way&quot;)&lt;br /&gt;
&lt;br /&gt;
So by using XQuery FLOWER statement i have been able to write following query to evaluate set of XPaths and get their values at the same time and also if there is some node missing in the middle to return &quot;null&quot; which help to preserve the order of the return values.&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI-CB-mnKlb6K4HRQQRV8hiCrprpYOrFNbUQNyCOfPbI2xbp3v5SWdB8n9TfAPiVPXPG6RfqaSnTdrTSN_TNZ4YSwOZDMCpVd7QRZk3a1uHQJNoXIRdXGzyA0xLIuuPmpHPc0AF_Fl3tAT/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt; let $i1:=/A/B/C/text()   
 let $i2:=/A/D/C/text()   
 let $i2:=/A/E/C/text()  
 return string-join((if($i1) then ($i1) else (&#39;null&#39;) , if($i2) then ($i2) else (&#39;null&#39;) ) , &#39;;&#39;)  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
Here i have used&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt; string-join&lt;/code&gt;&lt;code&gt;(string1, string2 ... stringN, &#39;delemeter&#39;) &lt;/code&gt;function of XQuery to join the results and &#39;;&#39; as the delimiter.&lt;br /&gt;
&lt;br /&gt;
We can use&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt; if(condition or XPath) then (statement or XPath) else (&lt;/code&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;statement or XPath&lt;/code&gt;)&lt;/code&gt;to check the availability of node and send a per-defined value if node is missing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://sahanlm.blogspot.com/feeds/3422944930245802485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sahanlm.blogspot.com/2013/06/using-xquery-to-get-values-from-set-of.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/3422944930245802485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/3422944930245802485'/><link rel='alternate' type='text/html' href='http://sahanlm.blogspot.com/2013/06/using-xquery-to-get-values-from-set-of.html' title='Using XQuery to get values from set of XPaths and return null if node is not presented.'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17507492010731314081</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4664324677113140555.post-2321722569245662702</id><published>2013-04-29T14:18:00.000+05:00</published><updated>2013-04-29T14:18:13.120+05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="jQuery"/><title type='text'>jQuery - when to use attr() ?? when to use prop() ???</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
with effect from jQuery 1.6 a new method has been introduced to change or retrieve values of attributes (or properties).&lt;br /&gt;
&lt;br /&gt;
So what is the big deal here you might ask. the problem is that new comers doesn&#39;t understand the difference between the &lt;span style=&quot;background-color: #eeeeee;&quot;&gt;attr()&lt;/span&gt; method which has been there and the new method &lt;span style=&quot;background-color: #eeeeee;&quot;&gt;prop()&lt;/span&gt; which introduced lately.&lt;br /&gt;
&lt;br /&gt;
In a HTML element there is two kind of&amp;nbsp; things we can see.&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Attributes&lt;/li&gt;
&lt;li&gt;Properties&lt;/li&gt;
&lt;/ol&gt;
I will explain this by an example. Lets take following HTML input tag for an instance.&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI-CB-mnKlb6K4HRQQRV8hiCrprpYOrFNbUQNyCOfPbI2xbp3v5SWdB8n9TfAPiVPXPG6RfqaSnTdrTSN_TNZ4YSwOZDMCpVd7QRZk3a1uHQJNoXIRdXGzyA0xLIuuPmpHPc0AF_Fl3tAT/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt; &amp;lt;input id=&quot;q&quot; value=&quot;&quot; class=&quot;button-gray&quot; name=&quot;_3_keywords&quot; readonly&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
In the above example&amp;nbsp; id, value, name are belong to Attribute family while readonly is a property. So when to use  &lt;span style=&quot;background-color: #eeeeee;&quot;&gt;attr()&lt;/span&gt; method or when to use &lt;span style=&quot;background-color: #eeeeee;&quot;&gt;prop()&lt;/span&gt; method is depend on whether you are dealing with an attribute or a property.&lt;br /&gt;
&lt;br /&gt;
For example lets say you want to change the class attribute of above INPUT tag. Here you have to use&amp;nbsp; &lt;span style=&quot;background-color: #eeeeee;&quot;&gt;attr() &lt;span style=&quot;background-color: white;&quot;&gt;method like below.&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI-CB-mnKlb6K4HRQQRV8hiCrprpYOrFNbUQNyCOfPbI2xbp3v5SWdB8n9TfAPiVPXPG6RfqaSnTdrTSN_TNZ4YSwOZDMCpVd7QRZk3a1uHQJNoXIRdXGzyA0xLIuuPmpHPc0AF_Fl3tAT/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt; $(&quot;#&lt;/code&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;q&lt;/code&gt;&quot;).attr(&quot;class&quot;, &quot;newclass&quot;)  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
But lets say if you want to make the above INPUT tag readable (it is readonly originally according to the code above). So here you have to use &lt;span style=&quot;background-color: #eeeeee;&quot;&gt;prop()&lt;span style=&quot;background-color: white;&quot;&gt; from&amp;nbsp;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;background-color: #eeeeee;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span class=&quot;st&quot;&gt; &lt;em&gt;jQuery&lt;/em&gt; 1.6 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;background-color: #eeeeee;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span class=&quot;st&quot;&gt;onwards like below.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI-CB-mnKlb6K4HRQQRV8hiCrprpYOrFNbUQNyCOfPbI2xbp3v5SWdB8n9TfAPiVPXPG6RfqaSnTdrTSN_TNZ4YSwOZDMCpVd7QRZk3a1uHQJNoXIRdXGzyA0xLIuuPmpHPc0AF_Fl3tAT/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt; $(&quot;#&lt;/code&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;q&lt;/code&gt;&quot;).prop(&quot;readonly&quot;, false)  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
Yeah you might noticed the change. Before &lt;span style=&quot;background-color: #eeeeee;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;background-color: #eeeeee;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span class=&quot;st&quot;&gt; &lt;em&gt;jQuery&lt;/em&gt; 1.6&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;background-color: #eeeeee;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span class=&quot;st&quot;&gt; you&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #eeeeee;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span class=&quot;st&quot;&gt; have to use &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #eeeeee;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span class=&quot;st&quot;&gt;  &lt;span style=&quot;background-color: #eeeeee;&quot;&gt;attr()&lt;/span&gt; method like below.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI-CB-mnKlb6K4HRQQRV8hiCrprpYOrFNbUQNyCOfPbI2xbp3v5SWdB8n9TfAPiVPXPG6RfqaSnTdrTSN_TNZ4YSwOZDMCpVd7QRZk3a1uHQJNoXIRdXGzyA0xLIuuPmpHPc0AF_Fl3tAT/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt; $(&quot;#&lt;/code&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;q&lt;/code&gt;&quot;).attr(&quot;&lt;/code&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;readonly&lt;/code&gt;&quot;, &quot;&lt;/code&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;readonly&lt;/code&gt;&quot;)  &lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #eeeeee;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span class=&quot;st&quot;&gt;But with new&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #eeeeee;&quot;&gt;prop()&lt;span style=&quot;background-color: white;&quot;&gt; you can save life by just giving a boolean as the second attribute.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #eeeeee;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span class=&quot;st&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://sahanlm.blogspot.com/feeds/2321722569245662702/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sahanlm.blogspot.com/2013/04/jquery-when-to-use-attr-when-to-use-prop.html#comment-form' title='21 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/2321722569245662702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/2321722569245662702'/><link rel='alternate' type='text/html' href='http://sahanlm.blogspot.com/2013/04/jquery-when-to-use-attr-when-to-use-prop.html' title='jQuery - when to use attr() ?? when to use prop() ???'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17507492010731314081</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>21</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4664324677113140555.post-4366693712214079221</id><published>2013-04-29T13:58:00.001+05:00</published><updated>2013-04-29T13:58:50.814+05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ceylon"/><category scheme="http://www.blogger.com/atom/ns#" term="Java 7"/><title type='text'>&quot;ceylon&quot; command throwing &quot;UnsupportedClassVersionError&quot; exception</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
When i was trying to install and configure classpath for &lt;a href=&quot;http://ceylon-lang.org/&quot;&gt;Ceylon&lt;/a&gt; programming language to begin coding i was getting this error which does not describe it self.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI-CB-mnKlb6K4HRQQRV8hiCrprpYOrFNbUQNyCOfPbI2xbp3v5SWdB8n9TfAPiVPXPG6RfqaSnTdrTSN_TNZ4YSwOZDMCpVd7QRZk3a1uHQJNoXIRdXGzyA0xLIuuPmpHPc0AF_Fl3tAT/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt; Exception in thread &quot;main&quot; java.lang.UnsupportedClassVersionError: com/redhat/ce  
 ylon/launcher/CeylonClassLoader : Unsupported major.minor version 51.0  
     at java.lang.ClassLoader.defineClass1(Native Method)  
     at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)  
     at java.lang.ClassLoader.defineClass(ClassLoader.java:615)  
     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14  
 1)  
     at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)  
     at java.net.URLClassLoader.access$000(URLClassLoader.java:58)  
     at java.net.URLClassLoader$1.run(URLClassLoader.java:197)  
     at java.security.AccessController.doPrivileged(Native Method)  
     at java.net.URLClassLoader.findClass(URLClassLoader.java:190)  
     at java.lang.ClassLoader.loadClass(ClassLoader.java:306)  
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)  
     at java.lang.ClassLoader.loadClass(ClassLoader.java:247)  
 Could not find the main class: com.redhat.ceylon.launcher.Launcher. Program will  
  exit.  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
The mistake i did at the beginning seems to be avoid reading the &quot;README.md&quot; file in ceylon package. In there it clearly stated that &quot;Ceylon execute on any &lt;i&gt;&lt;b&gt;Java 7&lt;/b&gt;&lt;/i&gt; compatible JVM ... &quot;&lt;br /&gt;
&lt;br /&gt;
So the above error gives because of the incompatible JVM version. (as it says in the line &quot;Unsupported major.minor version 51.0&quot; ).&lt;br /&gt;
&lt;br /&gt;
So to fix this what you need to do is simply install the JDK 7 and add it to the classpath, JAVA_HOME and JRE_HOME. That will fix this.&lt;br /&gt;
&lt;br /&gt;
HAPPY CEYLON CODING !!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://sahanlm.blogspot.com/feeds/4366693712214079221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sahanlm.blogspot.com/2013/04/ceylon-command-throwing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/4366693712214079221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/4366693712214079221'/><link rel='alternate' type='text/html' href='http://sahanlm.blogspot.com/2013/04/ceylon-command-throwing.html' title='&quot;ceylon&quot; command throwing &quot;UnsupportedClassVersionError&quot; exception'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17507492010731314081</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4664324677113140555.post-3761072158147902908</id><published>2013-04-22T11:23:00.000+05:00</published><updated>2013-04-22T11:23:02.402+05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ant target"/><category scheme="http://www.blogger.com/atom/ns#" term="Java 6"/><title type='text'>tools.jar can not be found in JRE folder</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
I came across this error other day i was trying to configure ant in my new machine. The reason for this is that the relevant jar file is not in the &lt;span style=&quot;background-color: #cccccc;&quot;&gt;&amp;lt;JRE location&amp;gt;lib&lt;/span&gt; folder but in &lt;span style=&quot;background-color: #cccccc;&quot;&gt;&amp;lt;JDK location&amp;gt;lib&lt;/span&gt; folder.&lt;br /&gt;
&lt;br /&gt;
The most simplest fix for this is to just copy the &quot;tools.jar&quot; file from the  &lt;span style=&quot;background-color: #cccccc;&quot;&gt;&amp;lt;JDK location&amp;gt;lib to &lt;/span&gt;&lt;span style=&quot;background-color: #cccccc;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #cccccc;&quot;&gt;&amp;lt;JRE location&amp;gt;lib&lt;span style=&quot;background-color: white;&quot;&gt; folder.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #cccccc;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #cccccc;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;Good luck. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #cccccc;&quot;&gt;:)&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://sahanlm.blogspot.com/feeds/3761072158147902908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sahanlm.blogspot.com/2013/04/toolsjar-can-not-be-found-in-jre-folder.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/3761072158147902908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/3761072158147902908'/><link rel='alternate' type='text/html' href='http://sahanlm.blogspot.com/2013/04/toolsjar-can-not-be-found-in-jre-folder.html' title='tools.jar can not be found in JRE folder'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17507492010731314081</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4664324677113140555.post-3467867461055635170</id><published>2013-03-09T18:31:00.000+05:00</published><updated>2013-03-09T18:31:07.495+05:00</updated><title type='text'>jQuery - checking for &quot;null&quot; objects... </title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
In day to day Object Oriented programming we used to check whether an object is null by comparing it with the null keyword supplied by the programming language. For an example in Java or javascripts we can use&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI-CB-mnKlb6K4HRQQRV8hiCrprpYOrFNbUQNyCOfPbI2xbp3v5SWdB8n9TfAPiVPXPG6RfqaSnTdrTSN_TNZ4YSwOZDMCpVd7QRZk3a1uHQJNoXIRdXGzyA0xLIuuPmpHPc0AF_Fl3tAT/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;1:  object == null  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
So what we use to do with jQuery &amp;nbsp;is like below,&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI-CB-mnKlb6K4HRQQRV8hiCrprpYOrFNbUQNyCOfPbI2xbp3v5SWdB8n9TfAPiVPXPG6RfqaSnTdrTSN_TNZ4YSwOZDMCpVd7QRZk3a1uHQJNoXIRdXGzyA0xLIuuPmpHPc0AF_Fl3tAT/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;1:  $(&quot;#id&quot;) == null  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
This is wrong. The reason is that even there is no any HTML elements that has id of &quot;id&quot;,&amp;nbsp;&lt;span style=&quot;background-color: #f0f0f0; font-family: arial; font-size: 12px; line-height: 20px;&quot;&gt;$(&quot;#id&quot;)&lt;/span&gt;&lt;span style=&quot;font-family: arial; font-size: 12px; line-height: 20px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&amp;nbsp;will return an empty object. (or empty array object,). So this will always make the above expression to evaluate to false.&lt;br /&gt;
&lt;br /&gt;
So how we get to know whether above object (element) exist before using that object in complicate logic ???&lt;br /&gt;
&lt;br /&gt;
You can use the following code.&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI-CB-mnKlb6K4HRQQRV8hiCrprpYOrFNbUQNyCOfPbI2xbp3v5SWdB8n9TfAPiVPXPG6RfqaSnTdrTSN_TNZ4YSwOZDMCpVd7QRZk3a1uHQJNoXIRdXGzyA0xLIuuPmpHPc0AF_Fl3tAT/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;1:  $(&quot;#id&quot;).length &amp;gt; 0  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
Now where does this length property come to HTML element. The reason is jQuery objects wrap around DOM objects and they are having their own methods and attributes. When we accessing HTML elements using jQuery, it will return an array of such elements. So if there is only one object returned we can directly access that object. If there are more than one object we can use normal array indexes to access them. But if there is no object or 0 object for what we asked, what jQuery does is return an empty array object. So what we can do to check if there is no object&amp;nbsp;relevant what we have asked is to check the length of the array return by jQuery. If length of the array is not greater than 0 means there is no object to be return (only the empty array object is there).&lt;br /&gt;
&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;span style=&quot;font-size: 12px; line-height: 20px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;span style=&quot;font-size: 12px; line-height: 20px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;span style=&quot;font-size: 12px; line-height: 20px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://sahanlm.blogspot.com/feeds/3467867461055635170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sahanlm.blogspot.com/2013/03/jquery-checking-for-null-objects.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/3467867461055635170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/3467867461055635170'/><link rel='alternate' type='text/html' href='http://sahanlm.blogspot.com/2013/03/jquery-checking-for-null-objects.html' title='jQuery - checking for &quot;null&quot; objects... '/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17507492010731314081</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4664324677113140555.post-5307655362534926436</id><published>2013-02-19T21:53:00.003+05:00</published><updated>2013-02-20T19:35:04.448+05:00</updated><title type='text'>When jQuery form submission not works , Work arounds.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Let us consider the below form and various ways to do a form submission in client side programming.&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI-CB-mnKlb6K4HRQQRV8hiCrprpYOrFNbUQNyCOfPbI2xbp3v5SWdB8n9TfAPiVPXPG6RfqaSnTdrTSN_TNZ4YSwOZDMCpVd7QRZk3a1uHQJNoXIRdXGzyA0xLIuuPmpHPc0AF_Fl3tAT/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;1:    
2:  &amp;lt;form id=&quot;formId&quot; name=&quot;formName&quot; class=&quot;form-class&quot; action=&quot;&quot; method=&quot;post&quot;&amp;gt;  
3:  &amp;lt;/form&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
Before introducing jquery, the famous but harshful way to access DOM is using the popular getElementByID() method in javascript so accomplish a form submission we can use it like below,&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI-CB-mnKlb6K4HRQQRV8hiCrprpYOrFNbUQNyCOfPbI2xbp3v5SWdB8n9TfAPiVPXPG6RfqaSnTdrTSN_TNZ4YSwOZDMCpVd7QRZk3a1uHQJNoXIRdXGzyA0xLIuuPmpHPc0AF_Fl3tAT/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;1:    
2:  document.getElementById(&quot;formId&quot;).submit();  
3:    
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
Also if there is no id for the form we can still use the form name to do a form submission as below,&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI-CB-mnKlb6K4HRQQRV8hiCrprpYOrFNbUQNyCOfPbI2xbp3v5SWdB8n9TfAPiVPXPG6RfqaSnTdrTSN_TNZ4YSwOZDMCpVd7QRZk3a1uHQJNoXIRdXGzyA0xLIuuPmpHPc0AF_Fl3tAT/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;1:    
2:  document.getElementsByName(&quot;formName&quot;)[0].submit();  
3:    
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
But with jQuery life has become much easier and we can use either form ID in the way we use them to decorate using CSS or either CSS classes to pick elements. Below is how we can do a form submit using form ID&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI-CB-mnKlb6K4HRQQRV8hiCrprpYOrFNbUQNyCOfPbI2xbp3v5SWdB8n9TfAPiVPXPG6RfqaSnTdrTSN_TNZ4YSwOZDMCpVd7QRZk3a1uHQJNoXIRdXGzyA0xLIuuPmpHPc0AF_Fl3tAT/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;1:    
2:  $(&quot;#formID&quot;).submit();  
3:    
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
And we can use the class selectors to access forms as well. This method returns an array of elements which has the same style class. (In our example we have only one element, and it is our form.)&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI-CB-mnKlb6K4HRQQRV8hiCrprpYOrFNbUQNyCOfPbI2xbp3v5SWdB8n9TfAPiVPXPG6RfqaSnTdrTSN_TNZ4YSwOZDMCpVd7QRZk3a1uHQJNoXIRdXGzyA0xLIuuPmpHPc0AF_Fl3tAT/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;1:    
2:  $(&quot;.form-class&quot;)[0].submit();  
3:    
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
Finally we can use elements itself to access themselves. This method will return an array of same elements. (According to our example we only have one element of type &quot;form&quot;.)&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI-CB-mnKlb6K4HRQQRV8hiCrprpYOrFNbUQNyCOfPbI2xbp3v5SWdB8n9TfAPiVPXPG6RfqaSnTdrTSN_TNZ4YSwOZDMCpVd7QRZk3a1uHQJNoXIRdXGzyA0xLIuuPmpHPc0AF_Fl3tAT/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;1:    
2:  $(&quot;form&quot;)[0].submit();  
3:    
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://sahanlm.blogspot.com/feeds/5307655362534926436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sahanlm.blogspot.com/2013/02/when-jequry-form-submit-not-works-work.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/5307655362534926436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4664324677113140555/posts/default/5307655362534926436'/><link rel='alternate' type='text/html' href='http://sahanlm.blogspot.com/2013/02/when-jequry-form-submit-not-works-work.html' title='When jQuery form submission not works , Work arounds.'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/17507492010731314081</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>