You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by di...@apache.org on 2006/03/01 17:34:35 UTC

svn commit: r382074 - in /webservices/axis/trunk/c/docs: arch/WSDL2Ws.html arch/handler.html arch/handler.pdf arch/mem-management.html build.xml clientuser-guide.html clientuser-guide.pdf install-guide.html install-guide.pdf

Author: dicka
Date: Wed Mar  1 08:34:32 2006
New Revision: 382074

URL: http://svn.apache.org/viewcvs?rev=382074&view=rev
Log:
Update Axis C++ documentation.

Modified:
    webservices/axis/trunk/c/docs/arch/WSDL2Ws.html
    webservices/axis/trunk/c/docs/arch/handler.html
    webservices/axis/trunk/c/docs/arch/handler.pdf
    webservices/axis/trunk/c/docs/arch/mem-management.html
    webservices/axis/trunk/c/docs/build.xml
    webservices/axis/trunk/c/docs/clientuser-guide.html
    webservices/axis/trunk/c/docs/clientuser-guide.pdf
    webservices/axis/trunk/c/docs/install-guide.html
    webservices/axis/trunk/c/docs/install-guide.pdf

Modified: webservices/axis/trunk/c/docs/arch/WSDL2Ws.html
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/docs/arch/WSDL2Ws.html?rev=382074&r1=382073&r2=382074&view=diff
==============================================================================
--- webservices/axis/trunk/c/docs/arch/WSDL2Ws.html (original)
+++ webservices/axis/trunk/c/docs/arch/WSDL2Ws.html Wed Mar  1 08:34:32 2006
@@ -384,7 +384,7 @@
 <ul>
 <li>Wrapper classes for complex types with data members and constructors/destructors</li>
 <li>Helper functions for serializing/deserializing complex types</li>
-<li>Wrapper structs to handle arrays of complex types</li>
+<li>Wrapper classes to handle arrays of complex types</li>
 </ul>
 <p>
 <a name="usage"></a>
@@ -399,7 +399,7 @@
 <h4>2.1 Dependencies on Axis Java tool</h4>
 </div>
 <p>Apache Axis C++ uses WSDL processing tools from Axis Java project and extends those for C/C++ code generation.</p>
-<p>The following jar files that comes with (or used by) Axis Java are required to run Axis C++ WSDL2Ws tool:</p>
+<p>The following jar files that come with (or used by) Axis Java are required to run Axis C++ WSDL2Ws tool:</p>
 <ul>
 <li>axis.jar</li>
 <li>wsdl4j.jar</li>
@@ -409,16 +409,15 @@
 <li>jaxrpc.jar</li>
 <li>saaj.jar</li>
 </ul>
-<p>"SchemaUtils" (SchemaUtils.java) and "ElementDecl" (ElementDecl.java) classes of Axis Java tools have been overridden by Axis C++ WSDL2Ws implementation.</p>
+<p>"SchemaUtils" and "ElementDecl" classes of Axis Java tools have been extended by Axis C++ WSDL2Ws implementation.</p>
 <p>Other than the two classes mentioned above, no other class from Axis Java WSDL tool implementation has been overridden or extended at present by Axis C++ WSDL2Ws tool; hence all other classes in Axis Java tool are used as they are.</p>
-<p>Except for "SchemaUtils" and "ElementDecl" classes, the rest of the classes of Axis C++ WSDL2Ws are unique to Axis C++ and they use functionality form Axis Java jars.</p>
 <p>
 <a name="building"></a>
 </p>
 <div class="h4">
 <h4>2.2 Building the Tool</h4>
 </div>
-<p>If you want to build the WSDL2Ws tool form source, there is an Apache Ant build script to help you. Assuming that you have <a href="http://ant.apache.org/manual/install.html">installed Ant</a> properly, what you have to do is to set the CLASSPATH to include <a href="http://www.apache.org/dyn/closer.cgi/ws/axis/1_2beta/">Axis Java jar files</a> mentioned in the previous section and run ant command in $AXISCPP_HOME/src/wsdl folder. Once you build the tool the generated wsdl2ws.jar file would be placed in $AXISCPP_HOME/lib/axis/ folder.</p>
+<p>If you want to build the WSDL2Ws tool from source, there is an Apache Ant build script to help you. Assuming that you have <a href="http://ant.apache.org/manual/install.html">installed Ant</a> properly, what you have to do is to set the CLASSPATH to include <a href="http://www.apache.org/dyn/closer.cgi/ws/axis/1_2beta/">Axis Java jar files</a> mentioned in the previous section and run ant command in $AXISCPP_HOME/src/wsdl folder. Once you build the tool the generated wsdl2ws.jar file would be placed in $AXISCPP_HOME/lib/axis/ folder.</p>
 <p>
 <a name="synopsis"></a>
 </p>
@@ -431,7 +430,7 @@
 <p>
 <strong>Options</strong>
 </p>
-<pre>-help, -h              print a short help message<br>-o(folder)             target output folder - default is current folder<br>-l(c++|c)              target language (c++|c) - default is c++<br>-s(server|client)      generate server skeletons or client stubs? (serve|client) - default is server<br>-w(wrapped|nonwrapped) wrapping style of the WSDL (wrapped|nonwrapped) - default is wrapped<br>-verbose, -v           be verbose<br>-m(none|gnu)           generate make files (none|gnu) - default is none<br>
+<pre>-help, -h              print a short help message<br>-o(folder)             target output folder - default is current folder<br>-l(c++|c)              target language (c++|c) - default is c++<br>-s(server|client)      generate server skeletons or client stubs? (server|client) - default is server<br>-w(wrapped|nonwrapped) wrapping style of the WSDL (wrapped|nonwrapped) - default is wrapped<br>-verbose, -v           be verbose<br>
 </pre>
 <p>
 <a name="classpath"></a>
@@ -448,8 +447,6 @@
 <pre>set CLASSPATH=%AXISCPP_HOME%\lib\axis\wsdl2ws.jar;%CLASSPATH%
 </pre>
 <p>Alternatively, you can use the -classpath option of java command to specify the CLASSPATH.</p>
-<p>
-<strong>NOTE: It is a MUST that that you have wsdl2ws.jar from Axis C++ appearing before all the jar files form Axis Java on the CLASSPATH.</strong> If not you will run into trouble when generating code. This is a known problem and happens because the two classes, "SchemaUtils" and "ElementDecl", of Axis C++ that overides Axis Java classes with the same name have identical package names to that of Axis Java classes.</p>
 <p>
 <a name="runtool"></a>
 </p>

Modified: webservices/axis/trunk/c/docs/arch/handler.html
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/docs/arch/handler.html?rev=382074&r1=382073&r2=382074&view=diff
==============================================================================
--- webservices/axis/trunk/c/docs/arch/handler.html (original)
+++ webservices/axis/trunk/c/docs/arch/handler.html Wed Mar  1 08:34:32 2006
@@ -304,29 +304,48 @@
 <div class="h2">
 <h2>Linux</h2>
 </div>
-<pre class="code">The build files are available at</pre>
-<pre class="code">&lt;Axis install directory&gt;/samples/server/echoStringHeaderHandler Change your current directory to this directory and then execute the following... makemake install</pre>
-<pre class="code">The handler libeshhandler.so file will be created at &lt;Axis install directory&gt;/lib directory</pre>
+<p>The build files are available at:</p>
+<pre class="code">&lt;Axis install directory&gt;/samples/server/echoStringHeaderHandler</pre>
+<p>Change your current directory to this directory and then execute the following...</p>
+<ul>
+<li>make</li>
+<li>make install</li>
+</ul>
+<p>The handler <strong>libeshhandler.so</strong> file will be created at</p>
+<pre class="code">&lt;Axis install directory&gt;/lib directory</pre>
 <div class="h2">
 <h2>Windows</h2>
 </div>
-<pre class="code">The VC dsw file (ServerHandlers.dsw) is available at</pre>
-<pre class="code">&lt;Axis Install directory&gt;/vc/samples/server/ ServerHandlers.dsw.</pre>
-<pre class="code">Open this file and build the project echoStringHeaderHandler. Once the build is successful you will find the DLL ( echoStringHeaderHandler.dll) at&lt;Axis install directory&gt;/bin</pre>
+<p>The VC dsw file (ServerHandlers.dsw) is available at</p>
+<pre class="code">&lt;Axis Install directory&gt;/vc/samples/server/ServerHandlers.dsw.</pre>
+<p>Open this file and build the project <strong>echoStringHeaderHandler</strong>. Once the build is successful you will find the DLL ( <strong>echoStringHeaderHandler.dll</strong>) at:</p>
+<pre class="code">&lt;Axis install directory&gt;/bin</pre>
 <div class="h4">
 <h4>Configuring the echoStringHeader Handler</h4>
 </div>
-<p>Edit the server.wsdd file <a href="../install-guide.html#Server installation and configuration">(as created when you configured your server</a> <a href="../serveruser-guide.html">)</a> to include the handler for a particular service.<br>In this instance we are using the Calculator server example that we have used in both the client and server setup examples. The example below shows how a linux file would look e.g. libeshhandler.so is used please vary the file according to the libraries you have created. This example shows the handler being deployed on both the incoming and outgoing message.</p>
-<p>&lt;service name="Calculator" provider="CPP:RPC" description="Simple Calculator Axis C++ Service "&gt;<br> 
-<strong> &lt;requestFlow name="CalculatorHandlers"&gt; &lt;handler name="ESHHandler" type="&lt;Axis installation directory&gt;/handlers/custom/echoStringHeaderHandler/libeshhandler.so"&gt; &lt;/handler&gt; &lt;/requestFlow&gt; &lt;responseFlow name="CalculatorHandlers"&gt; &lt;handler name="ESHHandler" type="&lt;Axis installation directory&gt;AXISCPP_DEPLOY/lib/libeshhandler.so"&gt; &lt;/handler&gt; &lt;/responseFlow&gt;</strong>
-<br>
-<br> &lt;parameter name="allowedMethods" value="add sub mul div "/&gt;<br> &lt;parameter name="className" value="&lt;Axis installation directory&gt;/webservices/libcalculator.so" /&gt;<br> &lt;/service&gt;<br> 
-<strong>Note:</strong> Make sure you specify the correct path of the handler so in the server.wsdd file.<br>
-<br> Now you are almost ready to run your server-side handler.<br> You have to restart the Apache server so that it picks up its new configuration and then that's it !</p>
+<p>Edit the server.wsdd file <a href="../serveruser-guide.html#Deploy_the_service">(as created when you configured your server</a> <a href="../serveruser-guide.html">)</a> to include the handler for a particular service.<br>In this instance we are using the Calculator server example that we have used in both the client and server setup examples. The example below shows how a linux file would look e.g. libeshhandler.so is used please vary the file according to the libraries you have created. This example shows the same handler being deployed on both the incoming and outgoing message.</p>
+<pre>&lt;service name="Calculator" provider="CPP:RPC" description="Simple Calculator Axis C++ Service"&gt;
+  <strong>&lt;requestFlow name="CalculatorHandlers"&gt;
+    &lt;handler name="ESHHandler" type="&lt;Axis installation directory&gt;/handlers/custom/echoStringHeaderHandler/libeshhandler.so"&gt;
+    &lt;/handler&gt;
+  &lt;/requestFlow&gt;
+  &lt;responseFlow name="CalculatorHandlers"&gt;
+    &lt;handler name="ESHHandler" type="&lt;Axis installation directory&gt;/handlers/custom/echoStringHeaderHandler/libeshhandler.so"&gt;
+    &lt;/handler&gt;
+  &lt;/responseFlow&gt;</strong>
+  &lt;parameter name="allowedMethods" value="add sub mul div"/&gt;
+  &lt;parameter name="className" value="&lt;Axis installation directory&gt;/webservices/libcalculator.so" /&gt;
+&lt;/service&gt;</pre>
+<strong>Note:</strong>
+<br>
+<br>
+<br>
+<br>
+<br>
 <div class="h4">
 <h4>Running the echoStringHeader Handler</h4>
 </div>
-<p>Since this Handler is configured to the Calculator web service in the above step, this Handler will be executed when a client sends a SOAP request to the Calculator web service. Use the <a href="clientuser-guide.html#Generating and using client stubs">calculator client</a> you created earlier.</p>
+<p>Since this Handler is configured to the Calculator web service in the above step, this Handler will be executed when a client sends a SOAP request to the Calculator web service. Use the <a href="../clientuser-guide.html#Generating and using client stubs">calculator client</a> you created earlier.</p>
 <br>
 <br>
 <br>
@@ -340,38 +359,49 @@
 <div class="h4">
 <h4>Building the testHandler</h4>
 </div>
-<p>The build files are available at <strong>&lt;Axis installation directory&gt;/samples/client/testHandler</strong>. Change your current directory to this direcotory and then you could execute the following.</p>
+<p>The build files are available at <strong>&lt;Axis installation directory&gt;/samples/client/testHandler</strong>. Change your current directory to this directory and then you can execute the following.</p>
 <div class="h2">
-<h2>linux</h2>
+<h2>Linux</h2>
 </div>
-<pre class="code">makemake install</pre>
-<pre class="code">The handler so file will be created at &lt;Axis installation directory&gt;/lib/</pre>
+<ul>
+<li>make</li>
+<li>make install</li>
+</ul>
+<p>The handler so file will be created at</p>
+<pre class="code">&lt;Axis installation directory&gt;/lib/</pre>
 <div class="h2">
-<h2>windows</h2>
+<h2>Windows</h2>
 </div>
-<pre class="code">The VC dsw file (ClientHandlers.dsw) is available at &lt;Axis Installation directory&gt;/vc/samples/client/ClientHandlers.dsw.Open this file and build the project TestHandler.</pre>
-<pre class="code">Once the build is successful you will find the DLL testHandler.dll) at &lt;Axis Installation directory&gt;/bin. If you see this DLL at the above location you are done with the first step.</pre>
-<br>
-<br>
+<p>The VC dsw file (ClientHandlers.dsw) is available at:</p>
+<pre class="code">&lt;Axis Installation directory&gt;/vc/samples/client/ClientHandlers.dsw</pre>
+<p>Open this file and build the project TestHandler.</p>
+<p>Once the build is successful you will find the DLL (<strong>testHandler.dll</strong>) at:</p>
+<pre class="code">&lt;Axis Installation directory&gt;/bin</pre>
+<p>If you see this DLL at the above location you are done with the first step.</p>
 <div class="h4">
 <h4>Configuring the testHandler</h4>
 </div>
 <p>Now edit the <strong>&lt;Axis installation directory&gt;/etc/client.wsdd</strong> to include the handler for a particular service.</p>
 <p>In this example we will continue to use the Calculator service. The sample wsdd file outlined below shows a linux directory system - for other operating systems please use the correct path symbols.<br> 
 <strong>Note:</strong> Up until this point you did not need a client wsdd file the client only requires a wsdd file when it has handlers.</p>
-<p>
-<strong>&lt;service name="Calculator" provider="CPP:RPC" description="Calculator web service"&gt; &lt;requestFlow name="CalculatorHandlers"&gt; &lt;handler name="TestHandler" type="&lt;Axis Installation directory&gt;/lib/libtest_client_handler.so"&gt; &lt;/handler&gt; &lt;/requestFlow&gt; &lt;/service&gt;</strong>
-</p>
+<pre>
+<strong>&lt;service name="Calculator" provider="CPP:RPC" description="Calculator web service"&gt;
+  &lt;requestFlow name="CalculatorHandlers"&gt;
+    &lt;handler name="TestHandler" type="&lt;Axis Installation directory&gt;/lib/libtest_client_handler.so"&gt;
+    &lt;/handler&gt;
+  &lt;/requestFlow&gt;
+&lt;/service&gt;</strong>
+</pre>
 <p>Now you are almost ready to run your client side handler.<br>
 <br> 
-<strong>Note:</strong> If you are using Client side Handlers you need to enter the <strong>ClientWSDDFilePath</strong> entry in your <a href="install-guide#Installing Client">axiscpp.conf</a> configuration file.<br>
+<strong>Note:</strong> If you are using Client side Handlers you need to enter the <strong>ClientWSDDFilePath</strong> entry in your <a href="../install-guide.html#Installing_Client">axiscpp.conf</a> configuration file.<br>
 </p>
 <br>
 <br>
 <div class="h4">
 <h4>Running the testHandler</h4>
 </div>
-<p>Since this Handler is configured to the Calculator web service in the above step, this Handler will be executed when you run the <a href="clientuser-guide.html#Generating and using client stubs">calculator web service client</a>..</p>
+<p>Since this Handler is configured to the Calculator web service in the above step, this Handler will be executed when you run the <a href="../clientuser-guide.html#Generating_and_using_client_stubs">calculator web service client</a>..</p>
 <div class="h3">
 <h3>The Handler API's</h3>
 </div>

Modified: webservices/axis/trunk/c/docs/arch/handler.pdf
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/docs/arch/handler.pdf?rev=382074&r1=382073&r2=382074&view=diff
==============================================================================
Binary files - no diff available.

Modified: webservices/axis/trunk/c/docs/arch/mem-management.html
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/docs/arch/mem-management.html?rev=382074&r1=382073&r2=382074&view=diff
==============================================================================
--- webservices/axis/trunk/c/docs/arch/mem-management.html (original)
+++ webservices/axis/trunk/c/docs/arch/mem-management.html Wed Mar  1 08:34:32 2006
@@ -257,95 +257,108 @@
 <div class="h3">
 <h3>Axis C++ Memory Management Guide</h3>
 </div>
-<br>
+<p>
 <em>1.0 Version</em>
-<br>
+</p>
+<p>
 <em>Feedback: axis-c-dev@ws.apache.org</em>
+</p>
 <div class="h4">
 <h4>Introduction</h4>
 </div>
-<p>This guide records the memory management semantics and some of the rationales of the design decisions on which memory management semantics are based on. Being a C/C++ application, it is a must that all users as well as developers have a clear understanding on how to deal with memory allocation and deallocation.</p>
-<p>The allocation and deallocation mechanisms are centered around the serializer and deserializer operations in Axis C++. At the moment, because Axis C++ support both C and C++ clients and services, the deserializer uses <em>malloc()</em> for memory allocation. Hence C++ users may have to live with <em>free()</em> (instead of <em>delete</em>) for deallocation. Of course one could still use delete from C++ programs, however this may not guarantee the cleanest memory deallocation.</p>
+<p>Memory management is very important and if not handled correctly, will quickly consume resources and slow down your application.&nbsp; The basic rules are;-</p>
+<p>For client applications,</p>
+<ul>
+<li>Any memory object that is created by the client to pass to a web service must be deleted by the client.</li>
+<li>Any memory object that is passed back from the web service must be deleted by the client.</li>
+</ul>
+<p>For server applications,</p>
+<ul>
+<li>Any memory object that is passed to the service from the engine must be deleted by the service.</li>
+<li>Any memory object that is created by the service and handed back to the engine will be deleted by the engine (or generated wrappers).</li>
+</ul>
+<p>Within the client or service applications, all memory object <u>must</u> be created using 'new' and deleted using 'delete' (The C style memory functions 'malloc' and 'free', or any of their variants must not be used).</p>
 <div class="h4">
-<h4>Allocation/De-allocation Semantics</h4>
-</div>
-<div class="h2">
-<h2>Parameters</h2>
+<h4>new/delete Semantics</h4>
 </div>
-<em>malloc()</em><em>new</em>
+<p>If you are using the wrappers produced by WSDL2Ws then a lot of the memory management is handled for you within the generated code.&nbsp; You still have to follow the rules for client or service, but there may be some additional steps that you will have to follow.</p>
 <div class="h2">
-<h2>Other Objects</h2>
+<h2>Input Parameters</h2>
 </div>
-<ol>
-<li>Any outbound objects created, either by a client application or by a handler, must be managed by the creator him(her)self. The Axis C++ engine does not delete any objects (HeaderBlocks, Attributes, BasicNodes etc.).</li>
-<li>Any inbound objects that are created by the Axis C++ Engine as a result of deserialization should be deallocated by a target handler or the client application. Axis C++ Engine deallocates only the headerblocks that will remain in the deserializer (headerblocks with no target handler).</li>
-</ol>
+<p>The following examples rely on the application is using the stubs generated by the WSDL2Ws tool.&nbsp; If the user needs to use the Axis API directly, it is assumed that they know what methods to call and how these methods have been bundled by the generated code.</p>
+<div class="h5">
+<h5>Simple Types</h5>
+</div>
+<p>If the object is not nillable, then use the basic type.&nbsp; For example, if the web service requires an <span class="codefrag">xsd__byte</span> value, then the client/service code would be as follows;-</p>
+<pre class="code">webService-&gt;asNonNillableElement( (xsd__byte) 127)</pre>
+<p>If the object is nillable, then use a pointer to the basic type.&nbsp; For example, if the web service requires a pointer to a <span class="codefrag">xsd__byte</span> value, then the client/service code would be as follows;-</p>
+<pre>xsd__byte * pNillableInput = new xsd__byte();<br>*(pNillableInput) = (xsd__byte) 123;<br>
+<br>webService-&gt;asNillableElement( pNillableInput);<br>
+<br>delete pNillableInput;</pre>
+<p>Notice that once the client/service code no longer requires the pNillableObject object, it is deleted (and must be deleted by the client/service code).</p>
+<div class="h5">
+<h5>Arrays and Complex Types</h5>
+</div>
+<p>Arrays and Complex Types are treated as nillable, even if they are not.&nbsp; For example, if the web service requires an array of&nbsp; <span class="codefrag">xsd__byte</span> values, then the client/service code would be as follows;-</p>
+<pre>// Need an xsd__byte array of 2 elements,<br>// each element is assigned the value 123.<br>int arraySize = 2;<br>xsd__byte ** array = new xsd__byte*[arraySize];<br>for ( int inputIndex = 0 ; inputIndex &lt; arraySize ; inputIndex++ )<br>array[inputIndex] = new xsd__byte( 123);<br>
+<br>// Now copy this array into the xsd__byte_Array<br>// that will be used to pass to the web service.<br>xsd__byte_Array arrayInput;<br>arrayInput.set( array, arraySize);<br>
+<br>// Call the web service.<br>webService-&gt;asArray( &amp;arrayInput);<br>
+<br>// Clear up input array<br>for ( int deleteIndex = 0 ; deleteIndex &lt; arraySize ; deleteIndex++ )<br>{<br>    delete<br>    array[deleteIndex];<br>}<br>delete [] array;</pre>
+<p>Which is exactly the same code as would be used if the array was not nillable.</p>
 <div class="h2">
-<h2>Return Values</h2>
+<h2>Output Parameters</h2>
 </div>
-<p>The values returned by the Axis C++ engine must be memory cleaned by the user written code. The C++ code generated by the WSDL2Ws tool does contain destructors. However, at the moment, it is not gauranteed that the destructor of a generated class would clean all the pointer members (Some members are cleaned while others are not). Hence the users must have a look at the generated code to understand the semantics of memory cleaning. In case of C code, of course the user must take care of memory cleaning.</p>
-<p>Please note that in case of arrays, both for C and C++, the Axis C++ engine returns a struct. Hence it is a must that the memory is cleaned properly.<br> C++ Example:<br>
-</p>
-<pre>        // testing echoIntegerArray
-        xsd__int_Array arrint; // Parameter for method call
-        arrint.m_Array = new int[ARRAYSIZE];
-        arrint.m_Size = ARRAYSIZE;
-        
-    for (x = 0; x &lt; ARRAYSIZE; x++)
-        {
-            arrint.m_Array[x] = x;
-        }
-        
-    printf ("invoking echoIntegerArray...\n");
-        
-    xsd__int_Array arrintResult = ws.echoIntegerArray (arrint);
-        
-    // Deal with the return value
-    if (arrintResult.m_Array != NULL)
-        {
-            printf ("successful\n");
-            // Clean memory of the returned array
-            free(arrintResult.m_Array);
-        }
-        else
-            printf ("failed\n");
-
-        // Clean memory allocated for parameter
-        delete [] arrint.m_Array;
-</pre>
-<br>
+<p>The following examples rely on the application is using the stubs generated by the WSDL2Ws tool.&nbsp; If the user needs to use the Axis API directly, it is assumed that they know what methods to call and how these methods have been bundled by the generated code.</p>
+<div class="h5">
+<h5>Simple Types</h5>
+</div>
+<p>If the returned object is not nillable, then use the basic type.&nbsp; For example, if the web service returns a <span class="codefrag">xsd__byte</span> value, then the client/service code would be as follows;-</p>
+<pre class="code">xsd__byte result = webService-&gt;asNonNillableElement( (xsd__byte) 127);</pre>
+<p>If the object is nillable, then use a pointer to the basic type.&nbsp; For example, if the web service returns a pointer to a <span class="codefrag">xsd__byte</span> value, then the client/service code would be as follows;-</p>
+<pre>xsd__byte * pNillableOutput = webService-&gt;asNonNillableElement( (xsd__byte) 127);<br>delete pNillableOutput;</pre>
+<p>Notice that once the client/service code no longer requires the <span class="codefrag">pNillableOutput</span> object, it is deleted (and must be deleted by the client/service code).</p>
+<div class="h5">
+<h5>Arrays and Complex Types</h5>
+</div>
+<p>Arrays and Complex Types are treated as nillable, even if they are not.&nbsp; For example, if the web service returns an array of&nbsp; <span class="codefrag">xsd__byte</span> values, then the client/service code would be as follows;-</p>
+<pre>// Call the web service.<br>xsd__byte_Array * arrayOutput = webService-&gt;getArray();<br>
+<br>// Retrieve the information within the array.<br>int byteArraySize = 0;<br>const xsd__byte ** byteArray = arrayOutput-&gt;get( byteArraySize);<br>
+<br>// Clear up output array
+delete arrayOutput;</pre>
+<p>Which is exactly the same code as would be used if the array was not nillable.&nbsp; Notice that only the <span class="codefrag">arrayOutput</span> object (that is returned by the web service) needs to be deleted.&nbsp; The <span class="codefrag">byteArray</span> object is a pointer to the contents of the <span class="codefrag">arrayOutput</span> object so <u>must</u> not be deleted.</p>
 <div class="h4">
 <h4>Dealing with SOAP Headers</h4>
 </div>
 <div class="h2">
 <h2>From Stubs</h2>
 </div>
-<p>IHeaderBlock is a virtual class that defines the interface to deal with SOAP headers. You can create an IHeaderBlock at the client side using the API provided with Stub classes.<br>
-</p>
-<pre>IHeaderBlock* Stub::createSOAPHeaderBlock(AxisChar * pachLocalName, AxisChar * pachUri);
-</pre>
+<p>IHeaderBlock is a virtual class that defines the interface to deal with SOAP headers. To create an IHeaderBlock in the client application, use the API provided with Stub classes, i.e. ;-</p>
+<pre>IHeaderBlock * Stub::createSOAPHeaderBlock( AxisChar * pachLocalName, AxisChar * pachUri);</pre>
+<p>The Stub class methods that handle header blocks keeps a list of all the created header blocks.&nbsp; When the destructor is called, it will clean up memory by deleting the header blocks that were created using the cerateSOAPHeaderBlock method.</p>
 <p>
-<strong>Note 1</strong>: It is advisable that if a user wants to delete a Hheader Block, (s)he uses the API provided by the Stub class to do so.<br>
-</p>
-<pre>void deleteCurrentSOAPHeaderBlock();
-</pre>
-<br>
+<strong>Note 1</strong>: The client/service application must use the appropriate Stub method to delete a header block, i.e. ;-</p>
+<pre>void deleteCurrentSOAPHeaderBlock();</pre>
 <p>
-<strong>Note 2</strong>: IHeaderBlock destructor will take care of the Header Block member variables and cleans them; BasicNodes (i.e its children) and the Attributes.<br>
+<strong>Note 2</strong>: The IHeaderBlock destructor will take care of the header block member variables (for example, BasicNodes may have children and attributes.&nbsp; These will be deleted when the parent is deleted.).<br>
 </p>
 <div class="h2">
 <h2>From Handlers</h2>
 </div>
-<p>If the Header Blocks are created within a Handler then it is the responsibility of the Handler writer to clean those. For that the user can write the cleanup code either in the fini() method or in the destructor of the Handler, depending on the following situations</p>
+<p>If header blocks are created within a 'Handler' then it is the responsibility of the 'Handler' writer to delete them. The deletion would occur in the 'clean-up' code either in the fini() method or in the destructor of the Handler, depending on the following rules;-</p>
 <ul>
-<li>If it is a session handler which needs to maintain its state, then the cleanup has to be done in the destructor.</li>
-<li>If it is a request type handler the clean up can be done in the fini() mehtod of the Handler. Here the writer has to explicitly write the clean up code.</li>
+<li>If it is a Session Handler which needs to maintain its state, then the cleanup has to be done in the destructor.</li>
+<li>If it is a request type handler the clean up can be done in the fini() method of the Handler.</li>
 </ul>
-<p>If a target handler access a Header Block created by the deserializer then it is the responsibility of the Handler to delete it.</p>
+<p>If a target handler access a header block created by the de-serializer then it is the responsibility of the Handler to delete it.</p>
 <div class="h4">
-<h4>Open Issues</h4>
+<h4>Windows Issues</h4>
 </div>
-<p>When an array is de-serialized it uses C style memory re-allocation mechanism in the present code. C++ does not support <em>realloc()</em> and if we use <em>new</em> instead we have to allocate fresh memory blocks each time we need to increase the array size. This can be more expensive than using <em>realloc()</em>. Again the price paid for efficiency is that one has to use <em>free()</em> and not <em>delete []</em> from C++ code.</p>
+<p>For Windows platforms, everything must built with the compiler flag '/MD' regardless whether it is a DLL or an EXE.&nbsp; There are still problems however when passing objects over process boundaries.&nbsp; If an object is created in one process (say the Axis engine DLL) and then passed to another (say the client application) then when the client tries to delete that object, it cannot find it on its own process heap and throws an exception.&nbsp; This is because the client process does not own the memory object.&nbsp; To overcome this problem, on the process boundary, the original object is cloned (the clone uses the client heap) and then the original object is freed from the engine heap.&nbsp; Here is an example taken from the wrapper code created by WSDL2Ws from the Arrays unit test (Arrays.cpp);-</p>
+<pre>xsd__int_Array * Arrays::simpleArray( xsd__int_Array* Value0)<br>{<br>   xsd__int_Array * RetArray = new xsd__int_Array();<br>   :<br>   :<br>   if ( AXIS_SUCCESS == m_pCall-&gt;invoke())<br>   {<br>      if ( AXIS_SUCCESS == m_pCall-&gt;checkMessage( "simpleArrayResponse", "http://org.apache.axis/Arrays/"))<br>      {<br>         Axis_Array * RetAxisArray = m_pCall-&gt;getBasicArray( XSD_INT, "simpleType", 0);<br>         RetArray-&gt;clone( *RetAxisArray);<br>         Axis::AxisDelete( (void*) RetAxisArray, XSD_ARRAY);<br>      
+}<br>   }<br>   m_pCall-&gt;unInitialize();
+<br>   return
+RetArray;<br>}</pre>
+<p>The two lines of interest are the cloning of the memory object (RetAxisArray exists within the engine heap) into the RetArray memory object (that exists within the client heap) and then the deletion of the RetAxisArray by calling the AxisDelete method (which exists within the engine process and hence will be able to delete the object from that heap).</p>
 <div id="pdf" align="right">
 <a href="mem-management.pdf"><img alt="PDF" src="../../skin/images/pdfdoc.gif" class="skin"><br>
           PDF</a>

Modified: webservices/axis/trunk/c/docs/build.xml
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/docs/build.xml?rev=382074&r1=382073&r2=382074&view=diff
==============================================================================
--- webservices/axis/trunk/c/docs/build.xml (original)
+++ webservices/axis/trunk/c/docs/build.xml Wed Mar  1 08:34:32 2006
@@ -122,7 +122,7 @@
     	to ws-axis/c/docs
     </echo>
     <copy todir="${dir.root.ws-axis}/c/docs">
-      <fileset dir="${dir.root.ws-site}/targets/axis/cpp">
+      <fileset dir="${dir.root.ws-site}/cpp">
         <different targetdir="${dir.root.ws-axis}/c/docs" ignoreFileTimes="true"/>
       </fileset>
     </copy>

Modified: webservices/axis/trunk/c/docs/clientuser-guide.html
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/docs/clientuser-guide.html?rev=382074&r1=382073&r2=382074&view=diff
==============================================================================
--- webservices/axis/trunk/c/docs/clientuser-guide.html (original)
+++ webservices/axis/trunk/c/docs/clientuser-guide.html Wed Mar  1 08:34:32 2006
@@ -291,8 +291,7 @@
 <strong>cp -f &lt;Axis installation directory&gt;/wsdls/Calculator.wsdl ./</strong>
 </p>
 <p>
-<strong>IMPORTANT:In this example we are showing you how to use the WSDL2Ws tooling to generate the stubs using Calculator.wsdl. However, in the &lt;Axis installation directory&gt;/samples/client/calculator folder you will already find generated files. If you wish to use those without generating new ones you can do so. We recommend that you run the calculator sample with the already generated files firstly and later practice using the tooling with Calculator.wsdl.</strong>
-<br>
+<strong>IMPORTANT:</strong>In this example we are showing you how to use the WSDL2Ws tooling to generate the stubs using Calculator.wsdl. However, in the &lt;Axis installation directory&gt;/samples/client/calculator folder you will already find generated files. If you wish to use those without generating new ones you can do so. We recommend that you run the calculator sample with the already generated files firstly and later practice using the tooling with Calculator.wsdl.<br>
 <br>Next you create the client-side stubs that represent the Calculator service.</p>
 <p>
 <strong>Note:</strong> Don't forget to add all of the <a href="#Pre-requisites">pre-requisite</a> jar files into your classpath</p>

Modified: webservices/axis/trunk/c/docs/clientuser-guide.pdf
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/docs/clientuser-guide.pdf?rev=382074&r1=382073&r2=382074&view=diff
==============================================================================
--- webservices/axis/trunk/c/docs/clientuser-guide.pdf (original)
+++ webservices/axis/trunk/c/docs/clientuser-guide.pdf Wed Mar  1 08:34:32 2006
@@ -82,10 +82,10 @@
 >>
 endobj
 16 0 obj
-<< /Length 2502 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 2508 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gat=,l]9f?&c]#KJoEsLK(Sd3(7?!?*2hu28F/06@2*hrm#`fT.?@I'3;LpN^<:rL$q3`REPOm3j3D.IBBQPWDcV)VM&1ihpGUckn*O/,kKCWUbC,5D8]Xdop,7ug^MZ5`r8G]c;u`,,S&>uXc*=9aTFP73NeIJ+W%67([s_7#YTLji,\#MO5WlM#"6q`Z/jBBa#Z1X\[.([q^FQ+WkQDt1&L[8NgY;XC[biKGZ/%&t*9sQ^6e+)X1C>n'A5O%6NI*icAF)`L?dn_#6>GhF@[hetNk9^$%Wh>Y-En<*W?oTQ$?IE@ZFT$6n:oQ6=S"hL"B!f7<RZ4G\1(*SB\d43&LP6_FSi"A@E;q9m"'K]V*a'!rnYA.nV'1KC&pT3L#;e$#_Y6bo36._Ib8/)D<n4T0sd(Uqm?fV\gp!R^>7?:FqEOjNoYj<#U:,J0kGYim35;G(8U1ug>/$g,D\)laDRd^g2*Er"9Mn1I51H/\cmUJLfueD&:J>E2AbPh_A@n6L)8pgKj[IBJ7[:6V)ZulZe"-VbVq9.;OUO)&hZ47_09*US%Seu[a!!H6:]l@QSiRUAo"ae!%@>rR+\I/0]R&R=DHYec!'Vt3eM7\D/4Qi@2c@0JC=S2CAOVC<EeV.#9*sT;$dG?F'BWd'-[M3@mfH/q%I.?eY8\(a/P5"oL2hE>g[)pap=q@T.hiX/576mX5"e.JP&!b&.CFh0.m7k2k:F95n;aZE9IMYiifNr]YG/?idnBBZktS3]mVaa]O/3CO2"kqL#'m\m'<d!c[1!\s0>f+^="OF?f$+0.65Ki/NEltS0#?d8dJ=A50K+sGP")%rkA5XA%B4B7oGl>6$dbB3Lqr8PKo\PBma7MW<gWh7E>Ur#8bU-[Q7H"lX"\a6b'H'TkLR.bC2:E]/91u4uE,W!KeQ#nnEiPCe%QM'L=GVTLg+/R;+*<*dI4I)-;//V4TKedK99^RrU6fV"7h#dktj=Nfr.*1"G;
 =;Hr18g7%dSMkX1OLfqMY`*:WF:=cpe#M>NPWmI3<^W%@@YBmFZ"^@B,B.9&?6s4M:Fo>-$j4<>]HtM\;p)Nt8?>`31f4JXhWjtEt:K_hG[;.k">Hf,gd,uA$^5QD_Is%lEM5PH/G#snNi"bXkVYK(lD;0rY);j6f'CW<mGPKrhK-u[h(0[O>OE\>8rsb?#gY[S2)>,l!>;SaF/)M37m\c[Ar3CVHIe1fGXW`tW(IbL1"opTO(->EWGEhN,%r.li@_1\(D;/$f[j@he<l$=Z_l/8XW&F?;m"-V_S7T\R4+4^fnQ?R4F^gV=apqsJ*db$-d^)k[kgNnnUQDnKcNpP>Z\iQ1^eu-UVn7b*\>t*13,bQO0`A$<SojE1O?Ok]mB#@K?HXe&I&:qaVBg]bB/s0C9k"6'*R%4S_BuV1?.i`<mo@*IER4]"7QL6[7ne\3e!:jt*O`lM(#VP$$/ILcJouT`Q_OrF&A"[WodqE\-Yf&3^@q(oBP4%[nDR@2JsY'&b;!U@P$(;`d\qR!J@=osp\(I/bfluO`'IKJ&;L:<D,X+N>@t+`B#Z7D'f0nA*LAX2H01!I[EE^d_Hn(-;:-TZq!$VK>X"oBEf&nkpk#N7c$qp&D)kr6mAl=#MC&Wi#5k:DM*iY[**bn8(2"I6/sjd1$sf%,54\S%cXOc_K,I"8=udPg"L\td"h[5LRFeC/iV*ehZc*,19RR\0PPSZZ)3=?DcdqF/!e7#B#8s`Ll.k#gr'"/02(Z/YOfYTe%Ij;8Og!RdBWF5O[2o!<Rs*^g$skq15B(o<2u^aXZaq1;C?f9W]VGXRqA13"L?mu"KVS7:/o^i8gY4pZoWj/gA=r0B+qoEs&KWaOY1:L7=2iSc5nqlCq1;+g>WO+)6>tU["1Q,/A3ld!?t5Se/4i_`DJk[fNWAGAPFuO2K.SL)P9Q[*cC;H6+T%6d>u28ohG5<F\Z1Z.8XZ&$ga!\\A(QhO1)G)__rB?#MNj
 k)P/W5/)P'-fr220CTmKmY<,[Qmj'.2(f)YkbejLTrk!Tbp;#iNC(''`bG(a*ZeN@DO;qm_:2YeSV05Y=8A%m?d@c(`;qoTr`M@4Pl%Y6Q^#Aq[`\cYnEU.F#I]P8k9$2)A>CPr09[?h#bXZ5aL@S[R3e;j<7-YshD!1]IUgq#JZLZ-tK9&3V%80(O*C4#K74-"O<1Y&54=tW0,FXc?H<E%BlY2V*2[b\]#1,[-]7^N#rqOsuo[f:6-@1Au*L%"JP*hRB+9^J.@M(+/#iP4sfl*MRaY']]<iS-f()"JuX71p]^iEPKXnAKTL(:-,!]lbI`De<<Zlqk@?cuXpbgnTFtruq9-QY>pD;'c;!-gXmf@K(SAY$tt1Zo@M9iGE^)E-ECo=I.#pS'1(L92$BE_g^`0!P1V104/eD:*X#a$%>j;NN6kZA4a&hqkcM=GL^Sl[dc@O![QFmrEK(N!GJf0MV[$eTg-!?iFnrd,PUTXPjTF*E9Y69$)Ja>D<`@X-O=hY]Dhp(QhLL~>
+Gat=,D3*F0')q<++lkgtMfuXW\'tTcde#HBiL9BW(Vudo$EceOl=i[W0C(1ck=b>fL6gH1@=a-q&Vi.^%\FX0]?TX'2@H7HKY_94$A7.a$:=8!"_B*d4GucPVSVCYq"<piqsXP*Ii,m*Y-W4N\2lNbl_Hnol`">'W7luKj7UdK!$'#C%SX.h]b;I_7%El^:+e^jTjt0Id`C85)Z4K'RAsnAA8"#4pU=Q%05nNq8Q)m$H8r9+7E:.,68OH*OqgQO$B'6l@UpD0i/ch!_iS+a_:WAWo4b\se**hkhLl!3:-CU`-M3=+chs1oi"^+0WMQBF$"U8iB]f7u#ZI7WfRugd,L/UnBmq^&TuCLtm[a"@Es'-Rpq(U^fk5V\BUJttf)=IsUD)_>lecHNk//5IS@;5%,C1Xp[qhK&GZA0A6F3]$Ht6SgNU0%XMA)/=.9:aNY9M4`''8pmptaQ'7u29>M>`)BPhSsQ)<gS$)6.Bfj=,'3*G]5**262fPP)aPDt$n@PMmDUn3f$BAOHk=JXRT_rhuoO.1(.BE@b$>cBGT+@.;DVbBb`MW-S,b`6aWij3s<ZJ)2"W":%oq7!O1'+F)Vr"]%kFZ!.Tu>SiE;\%G_q)<VT',I^lPDRs9C-V4[JqHu&Z+Hg-&XA=b>'d3X/+$1aojH"h.e$?f2O('=k)lgW_]3n3#Porok5#PPm=IqOaQJA)HOea"_#[/._(RkEeS"`7rTT.QjgN3m@iRaD$>/;):ljg'O0Gl8`]0e@fhX=Fjj6oHO@C;gH>LjPLl!Vfs5<#W=.lB*Wq/rp1a[pHYd"ir-h$6f?+f#Q6;Io+O(qa5SBD(*#B_T+=;4Q&8G'EkS:!^[mZQsO^T!ru+"]c15#QcKN-eu/E>#jMHT(OEsYd8>5K!DU6LWN56Gog5(ldV4^7&8c4#7goQLI_%T!BK4+9cO/$CF;U>B_=ScMkA3KGY0#/J1n:1(DBFEcdjdMPEtJ^3ZSEg4WZn
 s2-m/_=]gb2ad%^I7)VgiRWY\J26P[om+#6;@*FsE_N/f#4kSG>/_rsUS-V<@?...@U5U>4m5:S(,-or-?9g2MhWjqN>9:Stf1%&.T=#nB5N-NHF)[a7.WZ>SfuIidP9BP8=;!2%QM&B(duKau*t*R*2''IJYr^I_m.!l3UT!&P/-*.Y]H,l$[9r5_:Vq[0)mGJUZ./#38glZ@\Lknr@IV7a;OM;"-;KtgXd]E.X/C<>>GPXo"ukH#c!Iach41uYRa&E*`mJF%p6fc0XC.kD=V!\/cl`(QaCPRm1Lo9E&-7if*l,Rs7'*AP>kFVE%60?kM6aib_*C<t(S'+B9X>SPr4n*cYO-X7'#0A'=U%I#EMC6E`'=:HQD*'"dYZG,L:8KUSOJ4*36g3<dhB%i->1mp?b0Nbj%J1HDHMHX?fMrsddH"4Bm@EmKZ&g=uuT,uhmm52)lnWnS-'i/[u.>R%3k'X9f01MgHC4<Dpn@>6*LL)f&YeXQrh!W&LF?*(TfM]]MkCAYY7>c3$f,%D'<nnX;%/L8k#$QY"9j:H[i7j%1<PNU8o8lB1Cd+<6rk8(=P4^jo^u&l#h&L;=,.Q5fq_U/t1G6)`M5ZufN77TTJlpc3U8e'0e`J=e>.=YTpD<QMN%DgD5p%K\<kfkYhT3ccQVtpds,2p?EM[Y8X$Q("<j9'G*_[)gRe:[ZGiEb(6mO5iUndChCJr7=V2pM!LBFTGmGeilM+SA=!`+-e?]<J[S"7`&]-hubbE?C=Ni)E=dY5sIHhtO^gL=YC$pi<_W2S;DXBWb.Eo7KceRJ/la&oc2K-jOdmLpti-Jm8HLdCs<Np7
 g6p2LZ]"mI=*bp$$)R3TlSWqmFa8(UMDJ.Br2"c/jn$XhNg*t32l#hL+*lSf7XkbiZU>]s+3F$Wm<kG]VSJC144pa`5bLG')gl^/L`,a)?(Za#=5J%*cop\,Gb,_QcdNO7q(8<J!iAZ#k8-EPf)njXVn9smIsIYJ)RU7]ts&J"G<P[Rk1g;ia;Ei!Lp9W!gm<L(>g3?I=pk^Qc:?S%O`Qs7`.8(1K*"KV;R^pa,Q9<La\]8%:&(W0?6SF"!r<*6cE8d!E.]H86!m![P:-*pM;qYreY!Vni#F7&SY1W251>,gOTjGOT+:#e/jGk"ApOs22`R0W%KeDEU-_O(`&\c>MH>-JME9)_9O1XEnqf97H]fI-#d.U_5(XKs%7SqZb^U1_;C2$>kId>;M(.(#hLm\7XaM0A55\ms#d%+c4DD:*(9lSO5)DJ;^2o-$_`g##m/nCT\34]o_E3/bSj@2N=/J!kpIHXPL?]5%.)hi:3t[0jJ+;ch^$#-F^/QP-*B&@]32llTK,MqIt3YH@_c~>
 endstream
 endobj
 17 0 obj
@@ -233,36 +233,36 @@
 xref
 0 31
 0000000000 65535 f 
-0000008686 00000 n 
-0000008758 00000 n 
-0000008808 00000 n 
+0000008692 00000 n 
+0000008764 00000 n 
+0000008814 00000 n 
 0000000015 00000 n 
 0000000071 00000 n 
 0000002260 00000 n 
 0000002380 00000 n 
 0000002433 00000 n 
-0000008931 00000 n 
+0000008937 00000 n 
 0000002565 00000 n 
-0000008989 00000 n 
+0000008995 00000 n 
 0000002701 00000 n 
-0000009048 00000 n 
+0000009054 00000 n 
 0000002837 00000 n 
 0000003012 00000 n 
 0000003182 00000 n 
-0000005777 00000 n 
-0000005900 00000 n 
-0000005934 00000 n 
-0000006105 00000 n 
-0000009107 00000 n 
-0000006244 00000 n 
-0000007809 00000 n 
-0000007932 00000 n 
-0000007959 00000 n 
-0000008130 00000 n 
-0000008243 00000 n 
-0000008353 00000 n 
-0000008461 00000 n 
-0000008577 00000 n 
+0000005783 00000 n 
+0000005906 00000 n 
+0000005940 00000 n 
+0000006111 00000 n 
+0000009113 00000 n 
+0000006250 00000 n 
+0000007815 00000 n 
+0000007938 00000 n 
+0000007965 00000 n 
+0000008136 00000 n 
+0000008249 00000 n 
+0000008359 00000 n 
+0000008467 00000 n 
+0000008583 00000 n 
 trailer
 <<
 /Size 31
@@ -270,5 +270,5 @@
 /Info 4 0 R
 >>
 startxref
-9172
+9178
 %%EOF

Modified: webservices/axis/trunk/c/docs/install-guide.html
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/docs/install-guide.html?rev=382074&r1=382073&r2=382074&view=diff
==============================================================================
--- webservices/axis/trunk/c/docs/install-guide.html (original)
+++ webservices/axis/trunk/c/docs/install-guide.html Wed Mar  1 08:34:32 2006
@@ -302,7 +302,7 @@
 </div>
 <p>
 <a href="http://archive.apache.org/dist/xml/xerces-c/Xerces-C_2_2_0/">Xerces C++ (2.2.0)</a> XML parser<br>
-<br> Axis C++ needs an XML parser to parse SOAP messages and WSDD files. It has a parser abstraction layer that helps users to select/switch between parsers. However only one parser library could be used at a time. Currently Xerces parser is supported by Axis C++.</p>
+<br> Axis C++ needs an XML parser to parse SOAP messages and WSDD files. It has a parser abstraction layer that helps users to select/switch between parsers. However only one parser library can be used at a time. Currently Xerces parser is supported by Axis C++.</p>
 <div class="h2">
 <h2>Server only</h2>
 </div>
@@ -324,7 +324,11 @@
 <p>
 <a name="Installing_Client"></a><a href="http://ws.apache.org/axis/cpp/download.html">Download Axis C++</a> binary distribution and extract the package into a directory of your choice.</p>
 <div class="h5">
-<h5>2. Configure environment variables</h5>
+<h5>2. Install Xerces C++ (2.2.0)</h5>
+</div>
+<p>See the Xerces parser's documentation for installation instructions.</p>
+<div class="h5">
+<h5>3. Configure environment variables</h5>
 </div>
 <strong>set AXISCPP_DEPLOY</strong>
 <br>
@@ -333,15 +337,15 @@
 <br>
 <p>Linux:<br>LD_LIBRARY_PATH="&lt;xerces installation directory&gt;/lib:$AXISCPP_DEPLOY/lib:$LD_LIBRARY_PATH"</p>
 <div class="h5">
-<h5>3. Set Engine Wide Settings in Configuration File</h5>
+<h5>4. Set Engine Wide Settings in Configuration File</h5>
 </div>
 <p>Axis C++ uses a configuration file to let the user specify preferences such as log file locations, transport and parser libs to be used and location of deployment descriptor files.<br>A sample configuration file is installed in $AXISCPP_DEPLOY/etc on linux or %AXISCPP_DEPLOY% on windows systems. Edit this file to match your systems settings and copy it to axiscpp.conf<br>
 <br> Configuration file has the following syntax on the client-side:</p>
-<p>The comment character is '#'<br>Transport_http - HTTP transport library: Required<br>Channel_HTTP - Channel transport library: Required<br>XMLParser - The Axis XML parser library that comes with your configuration: Required<br>SecureInfo: SSL configuration information: Optional - only required if you are going to use ssl<br>ClientWSDDFilePath - Path to the client wsdd: Optional - only required if you are using client-side handlers<br>ClientLogPath - Path to the Axis C++ client log: Optional - only required if you want engine trace for debugging purposes</p>
+<p>The comment character is '#'<br>Transport_http - HTTP transport library: Required<br>Channel_HTTP - Channel transport library: Required<br>Channel_HTTP_SSL - SSL channel transport library: Optional - only required is you are going to use ssl<br>XMLParser - The Axis XML parser library that comes with your configuration: Required<br>SecureInfo: SSL configuration information: Optional - only required if you are going to use ssl<br>ClientWSDDFilePath - Path to the client wsdd: Optional - only required if you are using client-side handlers<br>ClientLogPath - Path to the Axis C++ client log: Optional - only required if you want engine trace for debugging purposes</p>
 <p>A sample <strong>axiscpp.conf</strong> file for a client (linux)</p>
-<pre>Transport_http:/usr/local/axiscpp_deploy/lib/libaxis3_transport.so
-Channel_HTTP:/usr/local/axiscpp_deploy/lib/libaxis3_transport_channel.so
-XMLParser:/usr/local/axiscpp_deploy/lib/libaxis_xercesc.so
+<pre>Transport_http:/usr/local/axiscpp_deploy/lib/libhttp_transport.so
+Channel_HTTP:/usr/local/axiscpp_deploy/lib/libhttp_channel.so
+XMLParser:/usr/local/axiscpp_deploy/lib/libaxis_xerces.so
 ClientWSDDFilePath:/usr/local/axiscpp_deploy/etc/client.wsdd
 ClientLogPath:/usr/local/axiscpp_deploy/log/AxisClientLog</pre>
 <p>
@@ -424,7 +428,7 @@
 <strong>LoadModule axis_module libexec/libaxiscpp_mod.so</strong>
 </p>
 <div class="h5">
-<h5>7. Deploying Axis Module to Apache Web Server</h5>
+<h5>8. Deploying Axis Module to Apache Web Server</h5>
 </div>
 <p>Now we need to copy Apache module (libaxiscpp_mod2.so - linux names- for Apache 2.0.x and libaxiscpp_mod.so for Apache 1.3.x) to the correct places and start Apache web server. The steps to follow are:</p>
 <ol>
@@ -440,7 +444,7 @@
 <p>To deploy with Apache 1.3.x</p>
 <strong>sh deploy_apache.sh</strong>
 <div class="h5">
-<h5>8. See Axis C++ in action</h5>
+<h5>9. See Axis C++ in action</h5>
 </div>
 <p>Now the installation is complete. You can verify that the server side is working by accessing the URL <a href="http://localhost/axis">http://localhost/axis</a> using your web browser. You should get the Axis C++ welcome page and this page will show you a list of deployed services as specified by the &lt;Axis Installation directory&gt;/conf/server.wsdd file. Although at this stage you won't have any services deployed yet.</p>
 <p>Now you can <a href="clientuser-guide.html">run a client sample</a> and see if it works.</p>

Modified: webservices/axis/trunk/c/docs/install-guide.pdf
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/docs/install-guide.pdf?rev=382074&r1=382073&r2=382074&view=diff
==============================================================================
--- webservices/axis/trunk/c/docs/install-guide.pdf (original)
+++ webservices/axis/trunk/c/docs/install-guide.pdf Wed Mar  1 08:34:32 2006
@@ -5,10 +5,10 @@
 /Producer (FOP 0.20.5) >>
 endobj
 5 0 obj
-<< /Length 2577 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 2576 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gat=.gMZ%0&:O:SW,GfibY"*j8Sq=40AUf0h@lP6R\Gm\`YK\$?:dmMJ)?qj;+'VXm34e.N\tGZLVk?Cr;(=(jh&m7&b3QHLQsOmCfe?[?Nm#35Co.n)io@Zo#/.%HN2d5qO#kf]JYZ^puLS^bEmY;rMa\?U<&e94S@:o0DSAUnG`+KIY;Bc(Jkjk$GhmU"A,CUI.P='h>=D-htE%lO#1f<!R*M'C[M4c^.d6T5?(;M6T*YJ-u4"[U$'VJ6b^<7c80WNJPn<o.>S;n;+CqVH@K\0Ed-1d<"6abHPWH:UoEe8h4a41k]>`2@HcP6'bb,'b)=+l*(4eT%+"%SC,`!>KVVS,"5+YFK2-0"J@lN<n2WnUa)dC)-_&l,Func`r-14_KZ1LQBs^g*:_IuO3si/*BP?.,li2$+$&bf17s2$bgVe3!e,R$3EcGh@M@)LJMs=/=I9W3_o;Xnn_3nOYq1tr%FhR[KCrBC2V%g`+VZF2rre,9.]>K6-9o0cFh:e.Kb>Iq!>Fkuo<,@Jo63]ik2a1hRSo"g3J)/lYDTbg7NnJL2Gf\Vr))bWM>@M]1@GZcFJ)i:aC0%%U4,B3"DTOXN07jXZ.OuG,RWoD+%iV`0ba*X'JRnD]ngpSISG$WlT:nr>jI0aMP`[rl1kR!s!%DY*\+MV8NI6hY8B]:AV+`suGIRFQ;U9W<I.+0=5A?bP,QX#gH3''u8/#J^4J*lMp7AqOeaKQjG?.j\S8.Nc'rLNZG:.^31)D&Ek62Qs&W%9%&(@c5=.gUi,R*`,/>#F<7Sc)1^K"`KM%>rcc5SL(o-&C([F+*s';%[M4:=^tEb"o=ndqAdH#MfGXhSic:/&c]ca+HTE#0^!fq3pON/]@Iga_AE=U/"tiq&:e&DVi0+XNZ'o[f0^Y))FF0+4X5m,H3ECd-hiK"2FDJLS/Q_n@QEXkmdPC`Qmh`Imt_!slpJ+Q2XV/?+E]'sVW5\I3!iL[#tLFeeCj2,h:
 8iX=ltjmCMOTrR=N"P>$?1?d$9gsd/hilig\&`g#%k$nm6A`,njm%OCe6pE1`=2_NhKs=d;ERh.\NANODD$]D__P/>eN@Q?V(L?&ImQes'aaC<97,gNuM(tsCX*f7q`-4@5eNoI?fR024"EP_/EfquIC0VA$gtF6;ZZZC8a>fOt3Il&gUkY]4ZLp7oj,-r7^JeBBLm6?`8-9.<iTPthY+-8,DsrS)DXFQ<9,l'F<\MHrm"O`DU38DKe4X"06+q6U-0j%$lkF"\k+m=r&=ps;5n)6NZX'51-k`/51oXdcU6QSk*kP%q\0A67<cD6U&@>KA\R;2tAOB"ZU"AQ&Squg9GYosuRuK0Q>o%r)(;><2kD34meLcgA8L^'a2l^$s!/QOqMn73Do0eQ#2%.;Oc'f(uVHGfFX'*i%RdFAmfnGk0d=+l9?*b_^mmuD/P,@#:5!cMo`7t370#W6;])K=4SRbJXaWR!a0SDu%#hTEY.@l2I#r\rBqrB;L:t>8K2U9tK_L[4=>=R/Q;S:\t51Q/'We*HpFm=-4%"-\j/0Jdl&aAQ5k.o,!iG>#-5j/3`5)?NK9T:DDqIX98iBsF"`lO34#j%jXP!X8R1i]rYEQgu6Qm=uI"6"n!2fn/PZYq[S%:[1V,%&)!q@$#kcLRs4+<$9(R-DN(^I5IEPD^/'gp%TS=TW)JjZl4q.5h9Z77t*7^,(Z^#?S(0r:rn$Q'Lf)aPAi^s)kWe'p62EJJBa+mpD$1I_mos*fZeAZAqUo;],367UaIE?U9BC7$954U[B6G)<>M7o1X>5gF=s6FO@?f?%Fu]fV[D1?i=S@NhW\_]bn]FfnM_0hnHKM%s]=5@b]`uG5IB3\Dt7>a^GIte`AL>e4l4m'A0]l(<X:Z,(!?.cu"3\hDODS;2s9GLkOM4>Im[i6>W,El_hDK*ftdpRO97t<(0r4>ap0jT>[KnV*#L=<`9D<7QVX/,j79pjI7X"T$_[SGq"h/iKJ
 `S)nqcW>)#fPo:s+$GH!'R]`LXdeAa([F)-FmX"WXW=Z&2,#!i^dT!$oQ_7GU#&a^k_h](?3=%k*[e!_7q7UfJb.S8\u@P".JaT:QM:%WereN)BQH^lfV`Sl>4-k?N7B`\ABa$K)YTmERZN+s53`:li>-;W!*>T&C+Nm#O*%`_U16_>tRCKqHSlZHtN1+^%HAj7j^ga=3*jFWF;pl%RW<-DKsdRPbWlSqXCjmhDp'L20f_/AS^jkcX_$'AY'Wf&TB;M*?+GN)klcaHPk03<42`j;^"D!OU=Y"TV>=gjIuIe%5AG4`M4Eaq+p;l>NS:IuPDJ2#XS[UVlh,nWk1A^TYZTO;AHqi](gbN'45*YZ;JL-44Ale+3%V8gO%%@-1L\f+!YV:@\=O2<ZFA9Xoq,qg1[dX?DV(lm_G;V5<O/k8D;<m&YI6)c397prMh$Wal9iDD+F^3j!]_L(KGC>u*I%7hC\pO2NTIpp'1&fATAalmMk,70>SL?B;aNF>4`=msDe.fK9MjnhEo6etZVoI]A*rYg6jhK3s,JPAUVqmLlcT%"1sQ?VHPZu`s-o1FFR5rIBkkc6e1BWGa#')+V-H-L%~>
+Gat=.gMZ%0&:O:SW,GfibY"*j8Sq=40AUf0h@lP6R\Gm\`YK\$?:dmMJ)?qj;+'VXm34e.N\tGZLVk?Cr;(=(jh&m7&b3QHLQsOmCfe?[?Nm#35Co.n)io@Zo#/.%HN2d5qO#kf]JYZ^puLS^bEmY;rMa\?U<&e94S@:o0DSAUnG`+KIY;Bc(Jkjk$GhmU"A,CUI.P='h>=D-htE%lO#1f<!R*M'C[M4c^.d6T5?(;M6T*YJ-u4"[U$'VJ6b^<7c80WNJPn<o.>S;n;+CqVH@K\0Ed-1d<"6abHPWH:UoEe8h4a41k]>`2@HcP6'bb,'b)=+l*(4eT%+"%SC,`!>KVVS,"5+YFK2-0"J@lN<n2WnUa)dC)-_&l,Func`r-14_KZ1LQBs^g*:_IuO3si/*BP?.,li2$+$&bf17s2$bgVe3!e,R$3EcGh@M@)LJMs=/=I9W3_o;Xnn_3nOYq1tr%FhR[KCrBC2V%g`+VZF2rre,9.]>K6-9o0cFh:e.Kb>Iq!>Fkuo<,@Jo63]ik2a1hRSo"g3J)/lYDTbg7NnJL2Gf\Vr))bWM>@M]1@GZcFJ)i:aC0%%U4,B3"DTOXN07jXZ.OuG,RWoD+%iV`0ba*X'JRnD]ngpSISG$WlT:nr>jI0aMP`[rl1kR!s!%DY*\+MV8NI6hY8B]:AV+`suGIRFQ;U9W<I.+0=5A?bP,QX#gH3''u8/#J^4J*lMp7AqOeaKQjG?.j\S8.Nc'rLNZG:.^31)D&Ek62Qs&W%9%&(@c5=.gUi,R*`,/>#F<7Sc)1^K"`KM%>rcc5SL(o-&C([F+*s';%[M4:=^tEb"o=ndqAdH#MfGXhSic:/&c]ca+HTE#0^!fq3pON/]@Iga_AE=U/"tiq&:e&DVi0+XNZ'o[f0^Y))FF0+4X5m,H3ECd-hiK"2FDJLS/Q_n@QEXkmdPC`Qmh`Imt_!slpJ+Q2XV/?+E]'sVW5\I3!iL[#tLFeeCj2,h:
 8iX=ltjmCMOTrR=N"P>$?1?d$9gsd/hilig\&`g#%k$nm6A`,njm%OCe6pE1`=2_NhKs=d;ERh.\NANODD$]D__P/>eN@Q?V(L?&ImQes'aaC<97,gNuM(tsCX*f7q`-4@5eNoI?fR024"EP_/EfquIC0VA$gtF6;ZZZC8a>fOt3Il&gUkY]4ZLp7oj,-r7^JeBBLm6?`8-9.<iTPthY+-8,DsrS)DXFQ<9,l'F<\MHrm"O`DU38DKe4X"06+q6U-0j%$lkF"\k+m=r&=ps;5n)6NZX'51-k`/51oXdcU6QSk*kP%q\0A67<cD6U&@>KA\R;2tAOB"ZU"AQ&Squg9GYosuRuK0Q>o%r)(;><2kD34meLcgA8L^'a2l^$s!/QOqMn73Do0eQ#2%.;Oc'f(uVHGfFX'*i%RdFAmfnGk0d=+l9?*b_^mmuD/P,@#:5!cMo`7t370#W6;])K=4SRbJXaWR!a0SDu%#hTEY.@l2I#r\rBqrB;L:t>8K2U9tK_L[4=>=R/Q;S:\t51Q/'We*HpFm=-4%"-\j/0Jdl&aAQ5k.o,!iG>#-5j/3`5)?NK9T:DDqIX98iBsF"`lO34#j%jXP!X8R1i]rYEQgu6Qm=uI"6"n!2fn/PZYq[S%:[1V,%&)!q@$#kcLRs4+<$9(R-DN(^I5IEPD^/'gp%TS=TW)JjZl4q.5h9Z77t*7^,(Z^#?S(0r:rn$Q'Lf)aPAi^s)kWe'p62EJJBa+mpD$1I_mos*fZeAZAqUo;],367UaIE?U9BC7$954U[B6G)<>M7o1X>5gF=s6FO@?f?%Fu]fV[D1?i=S@NhW\_]bn]FfnM_0hnHKM%s]=5@b]`uG5IB3\Dt7>a^GIte`AL>e4l4m'A0]l(<X:Z,(!?.cu"3\hDODS;2s9GLkOM4>Im[i6>W,El_hDK*ftdpRO97t<(0r4>ap0jT>[KnV*#L=<`9D<7QVX/,j79pjI7X"T$_[SL+dDj3C!
 -E?d)n(6YHGp;..Y\<#(3qJabb'E=:RW)55CAbP>CD%?A%d:kP78X7nl`.O0C1H\'2G#.Mk]P=k;N+pXX#(tPKT&:'KWb@`8E^c=t"r>'^%cF2jNB1u'?3$8dTA&2QA^];5k:chLPSS8A)=iM3HI1i$ko5bjP7UiL[EjC_CZ.7+GV[LQa=%(Vcg"LHTMlrH#:J:Z[a[\A!i8Y),j%p\[h3PJ@;+gaINg!Lf4LlTRO1]tHg\PZq2lJ5nAD!76=q$g`SFl3>3#C\_D3Nf!eJt(Klm`FuqGFUMPD*k>XlP&*]GQbO^$gX0=AIu-fj_`q'#u[K%/.F&=Ahmc6ka'5Zun)OR$l[@A9.8s3Q.0&`,DCocZ\5mp<>m;Yq^>fA\+cl7Zg2T2%SB8YRDr5SS</eMoN&E?QChTA%B2c[MPpdd1LtQ1,F2PW_)OhfPAld[4YF'e4Q5ah\;@F*]fRT\0juQP(qe0+2#U#R'2t^7WDilqHDfJ6K<m\Gm3YG(f=Dbqf0)75<i6Frm::6pQPi0Mu(0&L0q#@h&T="P>U/M/K^E/21r9t?$SHtS1ia3;I<[*NA`usi_CfRWnF)ar=>hIb_,~>
 endstream
 endobj
 6 0 obj
@@ -126,10 +126,10 @@
 >>
 endobj
 24 0 obj
-<< /Length 2083 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 1990 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gatm<D/\/e&H;*)+_3+SU5L4XH4AF+Bp5tC1=V3k[)G'CMF?49A5SWQ3<&ZI6rH,s<7:nAO];(:]K72'NI8F0S\5Iaf<ZK5\Xkh4B'*8,qr_.f_m$qo[Yk6'\[29amb492_E(,72tHmXCtb[5noCM0Us'PCL6h.QZ`gbS(CtcnVS%<P_YV;VrkZ!->ROg>(Yc[m.1KOT_j_htAc##rUs3WLKN;PW03f1S8"T*<#RZ5/iV+W]PQadeVmglXS:-rJ+kH$BCW7Y(aMoX4G*\%r4-%^='UE6!IV9b'`U'e]lgBl4_*!<D]s1%a#L$(:S<[!s."<e0WSmT\lbq7%4CU$K^fU`5*JWN0$`U:4$8gnB1M]']bX@0+NahG^ZlL`+/7Qs!n2FGXg($c,[d%O7bd_Z:SCQ/fhW8<H+.62T.'Pin#Qj=;Q8`ZOhsH,mJe@FP!$DehSYW@t[TfI.<Kd?NCdqf=[WKH9X@>q4QB&AJCRmZ;I;KB-k2oc`1YpJA-2(:-lm(+O/rVCc+preB80nTejaCIaEi0*>I8]7M>sXoF1nG9G?ou:NPr,:L&Oq3$I_&juREns$=7_mlT*IR$bf=4COlW8jI<BS=DsFZ\VFbcn0TSu0C6ap]TZ7^?im%/^gPah4X80a*rF-?%:C%A3(7$t"\HN0do"1>PQN4%]h(#EM,Qmk@pBL0$:$r%S(,C<j'p)k[OErH4-d>&.eMnjY3]&D4bI#o7,dU55jnZ&"bAH.tjo45o3"8B$3)$qh6.<P/q<`a_BeRno",s`d=="@aOfqC&&0el]1&]FJf$Bgq,G?J\`;kp$B]04$!="Pp^D@#tqGk)J946V;Gt,0?/ZZ:JFXQLHK\tnqH-6))khB3?6rDo*QK^+#&Od2VqhF;J&rfLRHDlsKY6k8Snf#TD2[(&TP-NqK".G+Cq>.$u<DD&?-=o59ZIu-[?#+l$TGrNhO*q8>C>qiiF_RN'B(IO/O#e_ZMUq/_r#"F
 1,(f:!fsAA)'+C]M$L-$Opu]+Y:T,.FdQ4S!djqNSDe"`(lpZ([GR%Fb3=LpoUF*UQ5>q`FO'dm&j&\M7B7T&?g[>fM)EA:'d\ban87p6q'n(\=csc:qU"nZa?,e\/*[?I5N0r,u/cj=S]ZfT5dD=ttZt.eA';AQ2hWdYDbss:<Q/EX^e%;FC>o>o?IN&t<JO9Jn=9'Mp'l3f6dL+Kr]JVdOW.fD=r^Ql^XE)NQXqH('$5e^0=EW3%.-Nt/Fu77F9ccP*PS7i]r^Ln]Yfpi52COG^Hu#Q<V)pi!dV[DiDD7Gd2>lR6?]5%Q:PI7q-B$E_D(E$f<.2Jf0'D-9/ttco=3)uh\n>"p1Pu]Jjlp]l8Qh3cV98kU`J"7i50G:*T7-S-Aj/hB5e(ESrSkd351RIhT`ZRBG)ido3TRE<&s5"E"b-<])oSD:/kF.]gZrlS]@E9K?f\O[^:43n3+GQCB<1=R+BlW(WX_T-!1e^[=r'Uneq9iWmhuaR^OSrQ?<gAIb!SkN4:qmO'dVi-&L`]7;]+[WTV1cnrl<">A_3p*H$ASZF<0tRaf/$!T"pg$5kD-E!NCH6!8+!eZ?%#fG+BC%X:#SI@"@r/"uJ7p!4\j+Y]"ht5IQjsK@0n.(JL')<fl%&f%F3)E9"C@Tc7E/'F(YD(,72N7mfDX97dDETO^FtP.-:2)N69LemFsM&m3naKs7m/JWV8.>?DNn]TP<$RUdV2C4gL-:m8I`\5m*)*luFYI^@E/::78Ug(:U<4]"Ku5`l]HdcBN+AN(Xl%,-"p@5Tq5aC/cf,CQ\#:phl$j-$A)0>)/unmW0nRdU\<B!"L0/7n".fAu?hebsY>?4HSGDQ(sIDJ2+_Tj7Q#J5s`n:C2'Gg<3<Z^/)n/?U7W0g@Vb&=WjI^Z9m/O-ff!N/b*KsA#LcpDk.kr\*mfK5,2t,@L$?)mp:L":7%bl@]eb`io;9U*Hq;iOVP5&jC?6#5;<II#k#^kWuX
 92*K1Nd`&uB>6RuUZ6J:3qa#`*o_/m[6jL]rIj#Et'O09['m)=$?Q)'LJcuj]n.8q@-l+YA2VR\)^7J-/%BktSGo3ORJ0\cO2qam5:~>
+Gatm<D/\/e&H;*)+_3+WU'i2Cn%gn):!tpeL3g+U[TEc%O_C5O/?4#Qj*s9c'ZHgueJk^q89Bp6]ArGL3Dsd^Z\s%A@6)CcQKsrQChAuAnmBQG9oaLZN@`g?Q94-Q<u,i'CZ?DHc'qdY=]n1-9!aMoU+B0Y29XQm;]"/DX(PUf+`H5M2Z>It^BlQtn3ZlbZB=H6ao`%HE1Kmi<C]5A'kQ&)YIZHjEQt-q362O_1^Hgmk8UkU;ALRVQZp'3I@CNf`l!.5-7jEZg"8*(L1Q,g$uq?(L5>u`2tk7#p;cN:ZUo$VSk`"b0a<Yb4Ar]D/*5K`rLlOFK&\&u%&[Aj;DFQS<Hp^uI=GFSFB;0?*fJC)HTP'J:&,V0U%9A=*DGB@63fOEG?"4kp/?OOC278&=CK:7e^B4:dOZjX4=_E<+ij.9cZk`%Z7>'Jh'FOq,E`cAjLHb7\C/3.96;;;ikM85!2Nc:#24iM'I9j6co\\ejTDQAd8Jq;DTcV2>=N+S:=Z\//VG]X>o6NT4sh*MHmV9UL?0_8YC%t3p[r[tJ32_?Bd-1_b(:2$63MGJ=<82'.:*'$@<'!@oJ9mE2(OnV7gZ.\M`PaknmoNUha41\^kgYd9(5u()d!<dSnPsGSOSf=;*gttPa&juHc!57o@WB=YU$=X5A5oAoA/DP5%!.$cL3uHl1Ns@4V%KBp#o>(3P265iZ_rRP[6bJ"6)FM,pZ:>iCpS&J+rZqlJ]p$I^T*X346j<`[I&s^4cBPd`4\=A&#;!<_4/P$/":HI_+]ZoJDgacb":d.79"--Bm#C1ej+`5XqX!/5GMa,\X8%*Rd?h>kU>*lK??q@<N3\(3b87Jt`/)m,r#LqGuh5pc+7''`'GfV8Ag'I_F\=?iI"m\%i2;cV>4+m<An`*\7A;(4jd>!]'^4gX$@^pCg8W2RMJA'.peZ-NsgkUFA3gIPu@rP3\,2%W;e7s,j[bjLQW5J4Pm`JK*n!](H1+K'dn
 >D'K'fDop@FT`J_"@_+a:=C.(H.7b3bS1NuNX*^t`:YB?ufoacu!n`4,+b>pnIfe.t6s5qaU7/$PO_UAahaapBI-Jb+6Ks.ig3+l9^L\a_:(pOF"jJPgr699*d2Ku4J-),XHpYXGOVtMLNHTTZUC%oW^3\7F^&m">"/73sG*rol`*mMG.b<GeCo.Z:kQ=<#"ZUI`f.HNHDW1hlDI\mZO3Q!W_>o\l1eZK8eA:]P<b0fM';DrBX`UAmd_X-[88o!dj]tinGmkg8g)4m<!;>J.&cdAkFLhHcaVD-%ZlWD1B56$&;7$.plJ8\BQO/uC<o1;<=;.prXBD!t]llgp&,],m%+7A0QlENDYOdoul=c['G0lSaeq7J@djlj'7a2eeehLun07S4,WZO<N,qUE;XL;,oX/Y:In\]B-s":Ks7tXHg4HOJ=mq0\?Fj''6r-B;n)+do@$"1@an3<AN3/omBk#[J[I7(Z;<ZC%@KH!0=H6;mq!>,)4@,N7p5NY]27Ho$`Z7J0&8C9($U7tjAR?sZY7)`gaYl`Hs2b_D.=Bh<k6)p:9W%)0IUsHg5cNc$+m&QH'qW4>F4EVtR<)@EV=:]3Qc[:'HO/O'`og;%Ds4c=K<=;ulQsU]uZ8HDE2r,=_1.e8ulp;>_HrdN</P?qVK7qOdF-d/1"Bj+;>m!CZ^QdHsmj5Nj;ASWU$11KK/Da7KBkmZb7Gm)<e#1109lofnMp$^i)dk)^`ojpX4?sn/J1OH($Ade6/:d-2,e;DJ=CdWXAW\DE(7@MD#QqUf1'NIn"/%:$:f#s>m#[R+(Dsm*YLe?#SUJ*h>^'Nk_XLKp5i:2\!?HUmg5(f$QK]XOjYtUW0UiM(Lp<7Qa/gM8>^dCpI;FT7TA@%6(LK]o>8XN_'XLLJ@,Gt_-QU5nY&=GjJ1j!%IOODl$gsm!Z"jBZVJ2Xn5H]T!T'5UfGn`Vk_:I.C"M@+YYrYM^Tt(f.6A3_>#GE^TVjAcR/**
 u4#?mQQ2#~>
 endstream
 endobj
 25 0 obj
@@ -158,10 +158,10 @@
 >>
 endobj
 28 0 obj
-<< /Length 2052 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 2170 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gat$9CN%rcn@O1((+`"60!n#DYBCeF2GKM]5dSHq>:`-,98kGrQ<ZT...@4mT5TIhm.-GTmo6R>jl4R^>Y%sOsEDblg]P:(QI?EWJ&E:7EH!'?&3VsCtc,9SV@XsEdH@TeZLM#Tk/@2$mfqT&#;)$E<FW%VoL<D+X"Zb)Jbbl^o%/1EQ@Jm`S?dqj/AE.kAIhD;>k21[`1=m_!2a=H\2f7<Mh=UP2ZA3]X1jG/)0r?X!F;62_!Y&.[<=kI*+'\1L;V`%<K%$gNi2Y/gb5m))fA"/0]rF1/h,MnFdr!^Go?3L3$W.kF<&Dc'oqB6NgMYhD@'%f,j*73$*jlT$BbAb
 >f;St/][5>BEYR;H7n?Y.m4MTi%ICg]2X341>4MXbcUF,bLiUU-cU)5*KQR;W.5FnpX":7`;4O;#-qC*b;Eb=Iaf&$.eX8@#2FiXARDai0%%J<QEtRuO4qt:cM%E.J]*P+q7,^PFLf:Qc?W1\i=:XD0W]onQ+kK!t*e]Uu3[$QXrq%ZZ=JZp*i@JH%kL&L]!AV4Maga%*bN%9D%/cOCI9pH&[I909C'F@#'agg3XVbJi.VTl'pl4W,Ka?FE"NCkt526H!C<!]kG2T=p[__R?(bA0S(05S/#2>:4\1_#jUQHsMS.t_$%aB7QFlB!jGfJKOY1rhcr)]$(EB1HKhOiAsKo%A51$3?*/A,k9PL4/7PkY4r.U2Ka_K8]R>a46q27(<b<ELK(K;To0Qpf[`)2]%*h<h8sk]i!V/6t.!H&$e,H!Js+E@=^!$HD>Uiu&>e^:Xs!#;-X#]L(\ipg1cp;="R2_(dZ"YGXk-EfM"@Ef9B!Y8c5%<`Fn/1"Ku;*6nl`i:b_j7Ts5i[$`lD%eK\np>PS[mEMPIH\+pC\5H10R*L).<51,#dcH(R_"OM[_2h_3a[t<`@$]k7;0V-j@!i_65Ld9H3tH\$e_(<nGVi%24LN?=Z;;]e\)LfGURM$?cS,nl?WiDr._*$<p\Eh?[ti^rfq3Hn$QR`"Dm[<DGb3*t]Pmfs%kUcL4$2`6><YL`nTgC-Jb;,CC5d/cCU[/8'%]a%KJcNBUl'=H%Fddor?Y46CfA"";tBT5d'fq!<sSNupZHut;NlF]'5q*c'i7otF]AC._BnF5Z(CD&GPq0E<cWR9MjB.`nKq#3kIo0V`akNS^ifI'$g7FY3G(:&jo1?O%]Wk"(aS7gY62f`gd'aoD_E,Td=VqnT/O<,k5"3PPeccg6Xi8\EAVns>KD!lbCjZ;A$DhD9L9aE(WKtZP[KIi'3HNa]./p:b#XXar@lu-#i`aPF7;>[0`j:J*sfN&Lh,h<4C0R3-0h
 '_Q@c&LRV2,^UJPg>8jKNG'#)O1b>#T:9?^C:V9pD<(NR'J5bfF?'oo?k=R/$S!r"pp9h9X~>
+Gat$9fl#P6n6KD;k/@g.X`tp:o&//Cike.6=?mMKKs7:P&eU#%E(M.$h]\?Ic;LI.`/)2HmMn=_nGQfO]ClZV-Dn'#9MAqXYm_<F/0cnNkBfD_:"NM6NIT:71gsNA(!2oX2Q!oa*B;s(Cn7k:]JfaF(4Z"U?&,pAojpjGbI;OrlmhkI-\5p#:XO7P<P^Do@gKYj8d#2Khn27:<"pKR^3tpT:PU.Q),3W.i*#o8^mt?OPFS`e.bPs&R?n2*Umbh[D3Knf)TORhh&<34BoJ"^iOK$@CfPA(b>t;HAU`Qh%3+,^LtV@4:c*dl%r&)dloO@#hGRQQ8:4dBVdSZ^E$-m]2BAc@6u&24E?&2\h'D7;Q)K".^68!aH(&:*e,AT-S96*[^8DcM`!IAcMk"D=_"2$G.uM7!=XioEb%$mcRN!g0m#^f$=dlFls4+)[d1R&-LFhZn!=;s:QOr?u9:$_:Mtp0>O!VmbGMcEsJ,T7f:348BQW[DBjV,gI-H8#t-'d>pID=QC?!W(IWWYC,JedfL3eTVQom2_1'.C8rS3Ec1hp/6\mEV>[,q6ekM:2[WVl\/Qa7QD4Om1Es48OJ6`OlQJU/'5C-*'K;ckXUA7DTICKX'2"1.?RkLb<=^rJX.O:AAlbq(\"u0Kst?-EcGC5HkUCMMMG&fc)OX7*"j[9PT*U]YJbKmO%s-hCi'tHu!itkdY#a`1TK6`oQih<-!C"L#KPs@hq*+Yc,G3Pj4gR/Lf6eR`(T!4hd2Wi"q[G&HIa9!K?mhb-n*Jft>NIAT9qV_gk!6e;lr?j=("r=uMI"Al(!%NH$qR8PH0+V!;88ZjM<Qp#]"89m`)>D^T:E/^+[bV.sESEJ[C(oc;3t(b3K`R4)a;p9^gteObPUT5;]`3HKR0f<pD@5"#H(,SE=Kn]*3B'QJ%Q3P+H_TL_XT8-0kqCcN)a,.g8`3EVngNfpDN#!<g+Q!T*[Hf@<)l[_Eu;>E]jo^fiu+tj4
 R;$L<-m...@R>pn
 )BG%4o[/_S+t`RGAa<*LWp?PXs]6WnmN`r!hXY%nfS]n'h+[7ZNJSrkg=dr&hD+8-n:6r'N#>`S-0+:$fACmI-qg4ASKotkhX/1;Y]#TDUi_fMDcGD0LKDgRe%Cst5=nDbrsPNEKSdu]7Opni:PAeU$3k%2!hg#YQOC^JV^O^4Xf<7R_4B#&Bc"+6&qir~>
 endstream
 endobj
 29 0 obj
@@ -182,7 +182,7 @@
 31 0 obj
 << /Type /Annot
 /Subtype /Link
-/Rect [ 422.736 633.8 490.704 621.8 ]
+/Rect [ 422.736 528.5 490.704 516.5 ]
 /C [ 0 0 0 ]
 /Border [ 0 0 0 ]
 /A << /URI (user-guide.html)
@@ -193,7 +193,7 @@
 32 0 obj
 << /Type /Annot
 /Subtype /Link
-/Rect [ 90.0 533.456 190.2 521.456 ]
+/Rect [ 90.0 428.156 190.2 416.156 ]
 /C [ 0 0 0 ]
 /Border [ 0 0 0 ]
 /A << /URI (http://ws.apache.org/axis/cpp/download.html)
@@ -202,10 +202,10 @@
 >>
 endobj
 33 0 obj
-<< /Length 2152 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 2012 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gatm<D/\/e&H88.+`o6'U,+CdeLlRWBq&u\dPYeK[)4X%Zp`Y8,uKrg3r\lKp`^bj.9V4u8?+b.GK8b"F*E#>3h*mD*UFs$=`)GhB7#@RQiFtKdcJ+i#Z.m1330plq])@2Gpl),SXC:;DpRD6CK>>YmCoHPF]iUg'%!8V'Mp`qD6n9;(f",'MBcuX!;gW!EtSF3X5CJH@;iYm[-+4*pS?1QSU<Y,TE%KeF+23aS],8de=r-hULcN&UoDi#?/0)$jOZ%k=EHprDmV\C7(#r%CYqrm(9pRP\AGo3#]DsYR768F4l(d1T'\5uU-Lf!)cMY`r3/Q&NJ](9jp3qH9fKGVAYP,ahsHUJ+:3F^ZRqhrU\2euComF=0\`%\9uZB5MC_\>"fZ?+o5"kY.SiTE%2JFCVF.Vd4pdQ1o!D3"N@#.g`]U0+b1X&X@0:dL;J0"QC;]?qhOm_WMZC;9`:=X_(o"P3.Ock+/^5-PK'"S]C/Vu^:R"RHnm(P8n,W"=`TMG(YHP.uhHXAoIJ@SQgB<CGGq(qY)7Se1*f(`f;XC-3hU5>,_,J'/#\)c5dQAVW11c7'p,On@b;<uDeaCAq'W(N)h_F_-OB+cE,*-PI)lbnV/M2LC`W2.\9Z9C:)dl6>FTh47cC*i".0._++>/>4lM1bF(m7i5l43L/W'V!/I:>qoU@No1Fp-a&`%:j-bB([/]^=Z65(QK_$;hL,[bdK`fol6!O.gHI6^'2SW&\:?SK,b3e0J`Wn6#t>IeL[c;.mD18Wlk.Dr,TDi0m2!pEG88ro9NpD"@3#M%"p#aDMh-\S^2s8Q2,-q>I/7qFJBhZ^Ra%)Ut:U-`tY@V8[DfPWUT'#+[=2bg$>>TDC0B/5.ro+RK9.9QOA>p[`3PYJ5XPPXn;7P9YlNP8l*4hfl]@Xc.duGuVCTe8MD<2$dFes,+eS]dEFBV;W80Nu/OU+E@/t9:Fbk3[RQuTDtP7"A=psTAO!]le;$!.K!C
 ;<.e...@-c>O,<(84HJq<&qp<c"CEGUHI7.XMcH6/]?K)io&$t:r?pmU6;+pg[6pFP.`UU@s[A)utAPWr8C+6oj\0.`^\fo+?^Ma]1Ri227&mjJ;>qL-WJF&/XPC^acR&d:9663j`X$^AegE71<VOu'=Z1J*M+bSgs.EZA,CFD+H2+QT@ENWWLQ\cL4Pf4/^<b5btaT\tUC9C:ruN>K7cRI`C[U4&ES^6Qu-84!&F`HXF,:[oI`crSVHGku)2%2XhQZaEWeRn1e5J61&]=/p='26`-973CaI&>h>61;u\5(bgH-9,%!1M3/WF0oF4AKA;t85#(oX63N&d@P(ll[Y7Ej]QpceB@q'_VV)cO:2@3[0SfC^?#0]oc&W*\`l3*e(na^;T^QkAK,bk='@^*BU`)+:o=?iR(bd8lkUPB<B$TsTl1IMdP#(5f_MPP@dmBau#3pF6J6ETS5St
 @+YBt8Q.C<?_cG#1Z@_!5FT5j&t_F1lF<3*")3W&F7eS;J1lgf?>Hd7fSk::VVad*iN!SiYb=1`/)`BacIW,]Tn+$2STgfRpG<(?s>7b"OV@RGFDld#9td'2#"Kd=mQ9DXB[g4K_Haa))'ANFeT7@kHmYLo;@,0a"rI.o:sMnP)~>
+Gatm<HZ.Xs&H=te6Kf1A6"aBNdn[@QDNh.B;Ue>J[)Fd;Z:*G6APq!QNkbN@OqNh]jE/18,itT8Hh$OE42"deNGi))>KAW:lSI#BS70<Gs0+48):*@UjI)%5fGT0G/@OWf(g1bTi$+"ZH&s*^,7DYrU/F=P6BNQolYZ,3a=3h0Vd0?-jorl=)Iiie#&,n:.<p`.P?['(9WEn:kgK7H=T$ilgW%<Kh#8"c&`"7)o#:.$ho;_MK^C4oD+ibFT.Spup?NC66_W*e/RN0Darj9-18\chE]cWg,G^@bn)IE<^-80;IfJn\5$qXRbjR`EWHm[1cYFiiX_$p_AR(rkAVqF`GB$eLSTMlWptPYJlfHt"2tsZU02(`b$fr4KVqCkYa4uN2-G!^R@'4tH36$4aI4op.\IS0W'-WD?*a-QQl@e-m/PXjeVTM2Zgn^E!"n\]P!n7<$b;e<k$$.Xm]%XB,j+KOA(:K2bQ7C\R=Y8NS-cj,qDd;X=?:'Mm;HhIV&sK[B'uJJZpLYWH($"\^<uT<jlT<4L"d(,[MH(BZQPJ^2F[DdnXEcXqPuJtA;B@pIF39f*S0hX/5QmRI]]Cn-1(qUm"5m]M=d,AOTeore=+sjD#4Pb^2h5Y&DB=PfZ/QS8/Fsu917FP+,Y+T[M?^Xq3UmIAP`ZNq$7]Qr7U<8^0en)e2)/f]<-_$dC)rEfTnaX])osPH4O-P+d'\&0kQO=dl6*FX=LQ+k?0'U7%<`VM<l=.`6Go-UD+L7f/KmB3H`_OCke[EN6R\BM&W_%OGeB\p7oYOB',+(YQTDq)cue>.*3$I^EkN9u^uH_=]UL<%'if.^A!3!=2p\F+mt-^8UEgAWaq[nrMN[=VS3d7=j:(+&j7s$a6CNJ+)4iXbNF3!A/d?S%Ds8)2%2rgrWXlKRIN=`LD.*nsU5VEco>?jo?J"N\'?WYS3H6]TSr5__e+GmEdP:gSf`::uQE(?^lXN8mdu,I+#'gcGYk*C
 I`64cZp'.9mgF2jhE.)$L"`r'(fp7Dta*ru*O\Qt4+HQWN!ne;U+LfYN(K$uLlF:3cXF'N?MK9E$1oNB3+-\ga\QT^1CWbq:A'iW3g?b2Zno=$_ksSOHf$\CQQ&lu=T2j'2-Rk.;oG33FEE.!0)Z3oZb;)ut7VXs4g;eDq`>g-UJ:G6M^/>pcm2fbb$PX*B0dXq>f.grrI/X)P`gs-Xq#')ghJ'S,9k!KSf<#"V%?@?dkDjHF]&;h2O%KS"8d0E3"WsS@ilF"`pJd@9Z%epHqdW[%>*.t'O\X=]3TutQ<1MsfCRl4Y%2etm_pJcd$e"R0,sg2<4L(SJQ.A!o])hi[:U]!rYMfWtO]AgBE2[Xb^WJ?9$ktY?T\iarg?,*&j[flA-,,55^8D?lQdgjR^p;YLkY1W^qVCcl#,B43FdM%c]>U`H+l!1m=6$=%a)sJ0N29rU!D7L`1):oT!S5;BZ<0o^i_Bpk94V0dY#"GFDL/.aDP/kmXm/jUi`5q]F-g@C$W2<koS@[-AZ1Wc5:58o[\,LR_D.>K&0_([Jn6?R.n+ls-'Vl*.J;UYl%'EZY2sab<'S$^mVf.,+Q^ZX$*,g`4[1d_WK!e'ZB'CU@RCanDH!!aA7MX,)4SEE`U3_!@Z9)1A.ua-fl6F<8II6s96ufKPs@Ju#9c_J+?#9>gTp%0eMJnKBU]3$8JDqn35*$O^oSZ+l#b\BpOmW)I"aPS%Jd;Zl+]j$)3WY$r%!#XjYS3-E^9$6GQT>2lHGM_L>*^Pc-,<WXaT).6t`6>/haKS-=k/JH0KrdoM9u!Qt8PhOo>HB.ZeW#O\U8G>%MV]pt.uZ,1ST6o-YZ$Jp=JIokCpc<;b2Hf5e2Wqo1iP$?t.hasJp"Rq(#JDGH/`fjAB1(;6+$R[E'JAPCd,G4TE"fFXn&J_lc'2k07ehf6L,9^Fa[oaR3dVVfTKfn$'*'(oqK=AbAuRNqOH<@g-l#XZL2cjt5(mXlKuDJ>
 A*S^>TD6kO8B2)O:D7/L,M`U7(S78a]~>
 endstream
 endobj
 34 0 obj
@@ -217,10 +217,10 @@
 >>
 endobj
 35 0 obj
-<< /Length 2150 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 2133 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-GatU4D/\/e&H;*)Taq6kU'UE]]bNha1i9f6l'Bj@[UL*]7AapqZKOl%*<5nu,&&*0aUU3C89JS$h8=T;hT[D8D;t<knsnBBi]52=ms+c&mpmL&`DMS'%m.,*o@Lt3*A);4de]5M)+<KI$TEPfgUFAV^Ra'(4\6V;X<jctrKPq*MDRe%8.Gu]*XWB(?#<LZEGqTS>[,KLOJh2X.Bmp-abpo(;2CeQo8_u)cZHn'LuD?F%B+G=\(09\%ESX9[r2b4OqC)gLf04GaI[@e\+L>h8+K=\QiA^f0/ad>$>SgeZ_@St3)-4U+(5kV'H(0_G^`FH(#>5L&ic`rJYr;-)""r^d!q-I6VL)C,U.Rr5#E#g3".(^?g(8+B*jHcM]FOu2'I$.8I4mtTUWWg$m8+\01u*"_Y.?`3Dfa%Bc_QD\'Mj=^*YH,Gp*i8fI/t]8?%0E?k6[o<hB(k,S]M->RX##s!1;fia>C+?1pIp1(4@4)18c`9g]8"(n3!.88DlH:Wr<`NLSaHERsT%ECPQc%MBK>"4(AP[#AhTiM9Z(WfhY#b+TuUVYlQ-nhLpVJPPtR8`tH"Gi.[^)VC$ATgPL_,fh]6pM*L58+"7A.LS)DU20>NQ2([qrbqmBP"]K2NtO+k@[(W?6cnm@!;8IG"K:%58?(&Za(^>2mIB,Ia2Rq23hNGE)F<LlD0!(2=j&70SuYj;LOo>)eo'?X;6UC>>A*Ca6#dm6MOX]'F6HRREHroc'_a;;?=(D-QYd,\'hu5I/Nf)>ro*_":Xbg1qetpfgu&),<Lh>o3ZNta:/S%O;KPVh8Oo#9lchE];)7@+DJ0l5=2Jp9<5KO.5"<9+h6%0(C$V7I.PJim3Rf5@_VY;_XifZ\l7g<k5)U>2*a&ie#]iEhSCe^HdVsM.#s`4NlC6D/LGLA4jFVQpF('mAfG_^XXFTrAiW-GFcNRTm.`)HHXKSoL;HOEli3T1`m%LPONEC)K7WG*E3>k;jUWn"
 jdn%J'Y`KZKn?q)u`uQ<34J_![NCU8"3H=Cjr;PeQM0t[brg?;+kK?A.io:%74Qf$q79SuYSKNm'1/s4TnPC,McH_hQI[e!>C"[+_Qp.Kl!!Fgl2K)j0inJ@YU+LH&H47:RJ?RK8N\/qd4<hSEk(-s^3H"'$L@3c5Q33umSY6Q%Y[K*iZfo-`<0eFlQ`(#3pL<*`%fVJf4HI(M,Dct-bn0KC-"$@*C2G[6[d%\"'\\gPATRX?FuDiKE+m??X0Q:pLG!CHp&NOY-^(u=RhnoXUY?5,b!ju"maB`K//e"gOG,)[I_8S(a*\<ejn+aB]o"m)`H"M=rEHb(otj]jh6*<pbtEu#l:P6Bf+m>6YZr&@=1INuKgASkAetP<9&D+-8*_7Ji$s3p4qfU+.+Z!dB]Hn%<hh&#>.,epE'Xr-XP`Qf`qOH.o8@RR@]h'nFglPlKK&<udk<3JK*h^Wfo?uXoF$#n.=9+pOY*0q1$=P>+$aR$K/"H8BWDh*n4=S>$F$WTi6-G4"Qr&l":`MJ.S7lST_9'-9ArH8`sT\T!hA`aG2Ai\cp6]^jea4hc(/L@<!p9FcX@!mKm3Wi_3-B>@Z/P!+bBF4K!Eur6F_<*'&i?N0g/4nj38Q[+qV9J2<Al5j=f1]!e/2]bsr5j#l-S[NUV#gS_0HUg[mI?ZN(uqise@6+%m&OI4aN5'8&810lKu+=F9X'EDEc6Am&M7PPV7pBYEj)(a=7JRkfJpqPU,I]qK"EO:?XqnhX/'b,B`2PRUV90\>s-p#-CVJp<JL'R&F4OUh,.5J\bqAqM_;BdO&#9g`qj%':X$9&5#[80Pkc,7;*4JnJftn0/%Ie;"Z.Qu=".QD<qIm@&pCcII6??W,"CouTT(g'>pJit:Nso2@@21Z1S,b#kjcb4-dZ_0+$1E/V!]f'Za3f!&"*`c2N<@.gd[6B)4NrKf)ahmV,<EiTAN7kNXuW<@4-m$?U/\("fq0-n2go@C*;:#V
 5D0QeJ#6uVZoglL2BY])cW-dj/EJs+3kh,/DuN1>V^$e`Qj5Ds&9b!LgD?LBqu:^#,'8PqYlJcnT:fD?C04tsoD,r&c)RW>rJ7b'j;q1]5=cb&7f,/[<Ng*C)Z[Z[61"l&,Ji7uat4n&4.]%`;]dFebRD+GK-3AQWl(\&3?5Q~>
+GatU4D/\Gm%/ui*i=?%Ai`=$a?W.XBHEXrSgU^%4mB@'*f23/jNg8;?V>9kL,rqb@4"5&k5Tqm,q1th;b-,HQnb^u/-ukg2@cTSnOls7F^ZS9qabrJX+uaIQCZhmZ?asLqQd4L6lmF4s*i)sGO&A;MC't>sl!4%X7mcBj4gSrT(bil8&IVnZI$^0m@+BjGl5tQ5o.:O>F:Ud]fGs-E7T\hUFoWO)JbCISiRsUIq)U2#>#_KZ'kjW<j\...@tP2f>?uo7KV(6f;K3X?m,f"u6nqU/,#"^':#Zn4"s@*+Z"gMmTXrCWiT8C2:(@]=52Un_c;mbOCVVa33d4(PItY8Qlom?JO`*<c1'_'j<)D+K=gT3rbVo[hsVkSC_-!*N#_"EKNIC^Ls$1Z\=R2pEGND\-Fte4B%@GD<"++D6IL26K1_-pecd\:oT&noa1mXjMT6P[<[*Cf<q.;K+m/6WZ);+puE<[I1C$*$E/9i[foCEMPZ,$lg(kXU@'rC8-Yq?bFJVB`$^ps,Y/Pb67rQj#m"=VrK_:-^://_KqP9RkYr-2aQ>]d&MV/Q'S4a'$"B5(5/ieM:1@L+?u67ITelnccM1u^'EHQ<GYuqN(OZVHrd"akU:G*]I_',KqK\bJWSaYce%K/r@m\qVWk*E9Ha/EF2lc7@g6<bRl=sL6Dc7<QL-Un'n'$#VYtP.-;l#h]PD6O8aDtRC@C)i`S%U;s]koG/!ogWnT&E@?'177Il&oqL;n,c_5ShIj(3m2\pf#(kS!a.G$g`jETu0=b8W[GLiu:--S?2'BY5"IAN_Pq\blj@YS]mBA%:7]sUD@cTZ?ubi:?Bq
 )9pn:aB#s#8r7cOf^;/b]]'!"U?3A9gmG.5`P%0Og:O+rqeW*<;3...@.Q_>)=a[_*Ho(dde^!Chp+)X7D7KnTeO@h;+\FVf*Ut^:\mgE<#7ek&fNp^HX?"'U#DS9;[SYS.$f-=.B.2+^qQu<7:hnQfE#ogk7JnjYSr2ERu_VX_iL6;3faQFV_Bt/'7f]D6Cone8untkd.3Bk^fFX`h$-DiJp&e>oKoE%&(%Top]$dqD0SFoRM,=F3Wh_K5&:2^&c@'NC2J>eeqh5$76Sjen9CO&pt]V+aZ_nfOJ-3o^8u3GZM1n5%jg"G.d[lbVYdYKIipeCj^O[5HY:AO3#975T:4Yq::FtaLV*Ee%H?=2]M]WdSeAg&'i6(..Lin;*Q=GjK+W8`&fX[a!F:o4$.(9qJGkNf#h#d#O:A9#9[^:FP#Pm+fF.*`G71tj"^N=5QdX36"J*G0+Yj:q>i9l*s_YAik&CeEl?J$"8X\O")H#37<]bbZ4n-*;1"g/rPi%Krf.^KO4;MgLW#PZ!]dW`b7;RO/\hoJAa?/=/h[R$,7h2g3Td#q/D4Qrf>?[K#:-$d%:C3(9bQW$nj:J\FM2*c^<!q'.ZLRJZ<fbAnnDt=G[m6ca>PT)duX4i2;EK6%#;LLldtsbb]LI#4hT%:jr$jC]ISZZK]NP#lJe8?$%nqI9bdatC>Tq=a33q6+SlRYS]R)5[3)f_1FhG+TiRk"kZP?,U3Alqii$)OL>$kO]as4Q9*2(?B^X\[/nEp9>5C\>rh'=c<80]kQN"m1GfnmJG\E!_ZH]qtnct8Y*+2Hq&DATQ)o5)b`sMlP6'KQWR%=P.&-S5#Og@po5j]t;/GUYF*@pV@$A)A4cMJ7X!NMY@2[/LtmP50X;WRdsNc+n=Ls]k:*"CRq9<?7G3Q,\sZNL<Q+[2J[EfI;Qpm<,6oC6@O-4p[!WAXKl>G]nm6MmIq10QHO)Hpo[:KqH!d6snL)=E
 9^)A[95/4]QXDG9%d50b+a,rB]njt(Ve#+n*nO%aqRj[%KV@jo:YE4)Xg!ZD:eMQ%t1`\K9;JL#tOW;:NDWZGm<!C^;G]omk3@$rCM-=DASoTV#Ic?tQ"SG.D8c9$Kc;k;8Hm?dDHbu>pT'6)`VC0/6k~>
 endstream
 endobj
 36 0 obj
@@ -241,7 +241,7 @@
 38 0 obj
 << /Type /Annot
 /Subtype /Link
-/Rect [ 149.6 328.356 244.28 316.356 ]
+/Rect [ 149.6 245.156 244.28 233.156 ]
 /C [ 0 0 0 ]
 /Border [ 0 0 0 ]
 /A << /URI (http://localhost/axis)
@@ -252,7 +252,7 @@
 39 0 obj
 << /Type /Annot
 /Subtype /Link
-/Rect [ 156.984 267.556 247.968 255.556 ]
+/Rect [ 156.984 184.356 247.968 172.356 ]
 /C [ 0 0 0 ]
 /Border [ 0 0 0 ]
 /A << /URI (clientuser-guide.html)
@@ -261,10 +261,10 @@
 >>
 endobj
 40 0 obj
-<< /Length 741 /Filter [ /ASCII85Decode /FlateDecode ]
+<< /Length 1073 /Filter [ /ASCII85Decode /FlateDecode ]
  >>
 stream
-Gat=(;/b/B&:WeDpgF\%<?9i4EP`Z+0Qig`2NY@]9IM1sZ"@G`-S>8n,pC)7ctusJ6LK7#r7uea]3k3#.0Z)(";YtfJP?XW<;nQW;!ISM#<h."`>8B]R3,>7dm=TBi,4'nkZ&/'d:0_OHkl('?>6"EnEau)p>,+8Q?O.Z-9U>g(b9^[cBGT*QWmGC[9jTP::dT\.aDL&+eq6r#o4W/$K2JfgD3,5?e+Co<\"WE`]+^+>u]rj$D$e<fWh^`f2D)p2g335$a+O[YHf;SP*XABL7.DG8e'f_QH,lAIb>f$5gGUbo^7;T$rIDDNXWk<dC4o,GW&d>T?KJ^IWqAOHArVM!VG.Fd(.jG%:XhhFJ;.+e"P8MX[f)<r1us1bGL9Z`9ga"Qso25d`$Ys]skN]R-B>qMb[qL,8%t-J(pFWKM2,B*@UW?\Gr7T)c3:SFIkg9[6p,?]:n7U[16cBF?Ze%E%7!=^cs47Z@UDJ0"+*$R62>]j+V6U3F8R]8)(Ut/r_>4X#kFZ_Pb\'VW<?QTZiOC5%#3nlo0;]qg(jGk#WtkgKS/MUcK$_%!,9AKuX"`&5eqfAC5b,k?jc-7LV$ZgmSe+KS#/8\G*OX?O]\V_2">#-R]oa./sJ\SQWJ]jt+j("uYEVqLlE/)S4RD+_AGB"5"2sXEK@mCm*R=/IBD9+pamSnjSORO]VjLG2_/`k:4ba_p%[F<KTa`V&;j=N;@q&Zl-&#F9G>*IKNiNI^f~>
+Gat=*D/[lW&H:NnOUlilK]^u[S<nXC@m_@MK2hukd,_U[@a0m"m$@>%j1Nq*[bD@qeE/CH]>sY.kN'm(1;0Ia#n[YZ`<6G?',"^M,sdQn0;0O]E#d)f_9X?XNe<ND+XjXg3&pcQ*k:[dX(KC^8nNIs7]h&.ak"(<\Co,9,CTg&%i0#n76;\&P8#<"n\LfFIt)lqF`mTTip,Re+5>=fDfq<,.*k8126YT*;:Uh24%Rr(&aW9\mS`k(Xi0YE2Pe7KpG^5l4;P>qC$_RU[Wd`I]U!:g+;fK[Op_b/R!.(uUehe5JD59_bn$*d)%+Ei@7P+!,8qPm2k1cRliGOBYt(MNFcGO`.\*sZ'!1:>NRrUWD4gs@3_Dp&XCcNeCYl.<F/$VT31&tt<;.MK&DNSU(E1AD@,I=q4RUtl_UtH2(955W&,F5bpNmlac-3hBVU(agBZ$1Pk/LNYq@F^:749,F7*$tV\uJ""Z)hC0Q3N_km?P"Hp"ZL!8LJ\bn1/uhVKX0%rk.m=;s]8#H;geH$[pb&h^U-j59oOL(@CK),eW#u>cYm>2nkQiBD*EV]1r?QOHjnR02\!Qs!^CW-?'E,'SoU:\N%YQ:#,eBn\CiMpsUd:-cU*WKiJQ>]:Y;'QqQBY!=f(BinA'f&5AD!\\<`2/fpE6U)R=F>!:^^T0=Kd4t2%M"-/_GFlTTbF.bBI4Xc43@ubX.P4[`JSC@,0RH`J's)BS\8l1\*Id[4QMjP-TL<fi0"6[6D$EJ*dW@k`G0CfZEfTH%q4Q,#bLo,Ai"$)Uce>Lcp<-'BZV9N^I`O$q*#^h*];3j8'YJjC1f#Whp6iq9&@G31Lo&^C@Z5,Q*3sfhj5J7L"+6GRP@?LdC_2)X^X2&[\VHKDMr:Oi<]W\\N;R6#<l+HIch1MW+E\X']mbWl5I1i'EPZjY__pUi'L'P]YbN)Cp,";4p:eX]'KpCE-BRk0Cm^]B`^tmr-2%4&))H6,\7cG941rsJ
 ug1NEIoqi>qV/`JP6;!a_@Z4+L%s>$X#mtUC\V#=4$M0$1^iQJUeRGF6B2UdcWt/Cgn8=m8aS"sS.qs7^~>
 endstream
 endobj
 41 0 obj
@@ -377,53 +377,53 @@
 xref
 0 48
 0000000000 65535 f 
-0000016170 00000 n 
-0000016263 00000 n 
-0000016313 00000 n 
+0000016370 00000 n 
+0000016463 00000 n 
+0000016513 00000 n 
 0000000015 00000 n 
 0000000071 00000 n 
-0000002740 00000 n 
-0000002860 00000 n 
-0000002941 00000 n 
-0000016447 00000 n 
-0000003074 00000 n 
-0000016511 00000 n 
-0000003209 00000 n 
-0000016570 00000 n 
-0000003344 00000 n 
-0000016629 00000 n 
-0000003479 00000 n 
-0000016688 00000 n 
-0000003614 00000 n 
-0000016747 00000 n 
-0000003749 00000 n 
-0000003959 00000 n 
-0000004146 00000 n 
-0000016806 00000 n 
-0000004285 00000 n 
-0000006461 00000 n 
-0000006584 00000 n 
-0000006611 00000 n 
-0000006803 00000 n 
-0000008948 00000 n 
-0000009071 00000 n 
-0000009105 00000 n 
-0000009270 00000 n 
-0000009462 00000 n 
-0000011707 00000 n 
-0000011815 00000 n 
-0000014058 00000 n 
-0000014181 00000 n 
-0000014215 00000 n 
-0000014387 00000 n 
-0000014562 00000 n 
-0000015395 00000 n 
-0000015503 00000 n 
-0000015616 00000 n 
-0000015726 00000 n 
-0000015837 00000 n 
-0000015945 00000 n 
-0000016061 00000 n 
+0000002739 00000 n 
+0000002859 00000 n 
+0000002940 00000 n 
+0000016647 00000 n 
+0000003073 00000 n 
+0000016711 00000 n 
+0000003208 00000 n 
+0000016770 00000 n 
+0000003343 00000 n 
+0000016829 00000 n 
+0000003478 00000 n 
+0000016888 00000 n 
+0000003613 00000 n 
+0000016947 00000 n 
+0000003748 00000 n 
+0000003958 00000 n 
+0000004145 00000 n 
+0000017006 00000 n 
+0000004284 00000 n 
+0000006367 00000 n 
+0000006490 00000 n 
+0000006517 00000 n 
+0000006709 00000 n 
+0000008972 00000 n 
+0000009095 00000 n 
+0000009129 00000 n 
+0000009294 00000 n 
+0000009486 00000 n 
+0000011591 00000 n 
+0000011699 00000 n 
+0000013925 00000 n 
+0000014048 00000 n 
+0000014082 00000 n 
+0000014254 00000 n 
+0000014429 00000 n 
+0000015595 00000 n 
+0000015703 00000 n 
+0000015816 00000 n 
+0000015926 00000 n 
+0000016037 00000 n 
+0000016145 00000 n 
+0000016261 00000 n 
 trailer
 <<
 /Size 48
@@ -431,5 +431,5 @@
 /Info 4 0 R
 >>
 startxref
-16865
+17065
 %%EOF