Sophie

Sophie

distrib > Fedora > 14 > x86_64 > media > updates > by-pkgid > 71d40963b505df4524269198e237b3e3 > files > 672

virtuoso-opensource-doc-6.1.4-2.fc14.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
 <head profile="http://internetalchemy.org/2003/02/profile">
  <link rel="foaf" type="application/rdf+xml" title="FOAF" href="http://www.openlinksw.com/dataspace/uda/about.rdf" />
  <link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" />
  <meta name="dc.title" content="Function: VHOST_DEFINE - Virtuoso Functions Guide" />
  <meta name="dc.subject" content="Function: VHOST_DEFINE - Virtuoso Functions Guide" />
  <meta name="dc.creator" content="OpenLink Software Documentation Team ;&#10;" />
  <meta name="dc.copyright" content="OpenLink Software, 1999 - 2009" />
  <link rel="top" href="index.html" title="OpenLink Virtuoso Universal Server: Documentation" />
  <link rel="search" href="/doc/adv_search.vspx" title="Search OpenLink Virtuoso Universal Server: Documentation" />
  <link rel="parent" href="functions.html" title="Chapter Contents" />
  <link rel="prev" href="appendixa.html" title="Appendix" />
  <link rel="next" href="functions.html#.html" title="" />
  <link rel="shortcut icon" href="../images/misc/favicon.ico" type="image/x-icon" />
  <link rel="stylesheet" type="text/css" href="doc.css" />
  <link rel="stylesheet" type="text/css" href="/doc/translation.css" />
  <title>Function: VHOST_DEFINE - Virtuoso Functions Guide</title>
  <meta http-equiv="Content-Type" content="text/xhtml; charset=UTF-8" />
  <meta name="author" content="OpenLink Software Documentation Team ;&#10;" />
  <meta name="copyright" content="OpenLink Software, 1999 - 2009" />
  <meta name="keywords" content="" />
  <meta name="GENERATOR" content="OpenLink XSLT Team" />
 </head>
 <body>
  <div id="header">
    <a name="fn_vhost_define" />
    <img src="../images/misc/logo.jpg" alt="" />
    <h1>22. Virtuoso Functions Guide - VHOST_DEFINE</h1>
  </div>
  <div id="navbartop">
   <div>
      <a class="link" href="functions.html">Chapter Contents</a> | <a class="link" href="fn_tcpip_gethostbyaddr.html" title="tcpip_gethostbyaddr">Prev</a> | <a class="link" href="fn_vhost_remove.html" title="VHOST_REMOVE">Next</a>
   </div>
  </div>
  <div id="currenttoc">
   <form method="post" action="/doc/adv_search.vspx">
    <div class="search">Keyword Search: <br />
        <input type="text" name="q" /> <input type="submit" name="go" value="Go" />
    </div>
   </form>
   <div>
      <a href="http://www.openlinksw.com/">www.openlinksw.com</a>
   </div>
   <div>
      <a href="http://docs.openlinksw.com/">docs.openlinksw.com</a>
   </div>
    <br />
   <div>
      <a href="index.html">Book Home</a>
   </div>
    <br />
   <div>
      <a href="contents.html">Contents</a>
   </div>
   <div>
      <a href="preface.html">Preface</a>
   </div>
    <br />
   <div>
      <a class="selected" href="functions.html">Virtuoso Functions Guide</a>
   </div>
    <br />
   <div>
      <a href="functions.html#admin">Administration</a>
   </div>
   <div>
      <a href="functions.html#aggr">Aggregate Functions</a>
   </div>
   <div>
      <a href="functions.html#array">Array Manipulation</a>
   </div>
   <div>
      <a href="functions.html#bpel">BPEL APIs</a>
   </div>
   <div>
      <a href="functions.html#backup">Backup</a>
   </div>
   <div>
      <a href="functions.html#compression">Compression</a>
   </div>
   <div>
      <a href="functions.html#cursors">Cursor</a>
   </div>
   <div>
      <a href="functions.html#time">Date &amp; Time Manipulation</a>
   </div>
   <div>
      <a href="functions.html#debug">Debug</a>
   </div>
   <div>
      <a href="functions.html#dict">Dictionary Manipulation</a>
   </div>
   <div>
      <a href="functions.html#encoding">Encoding &amp; Decoding</a>
   </div>
   <div>
      <a href="functions.html#file">File Manipulation</a>
   </div>
   <div>
      <a href="functions.html#ft">Free Text</a>
   </div>
   <div>
      <a href="functions.html#hash">Hashing / Cryptographic</a>
   </div>
   <div>
      <a href="functions.html#ldap">LDAP</a>
   </div>
   <div>
      <a href="functions.html#localization">Locale</a>
   </div>
   <div>
      <a href="functions.html#mail">Mail</a>
   </div>
   <div>
      <a href="functions.html#misc">Miscellaneous</a>
   </div>
   <div>
      <a href="functions.html#number">Number</a>
   </div>
   <div>
      <a href="functions.html#phrz">Phrases</a>
   </div>
   <div>
      <a href="functions.html#rdf">RDF data</a>
   </div>
   <div>
      <a href="functions.html#rmt">Remote SQL Data Source</a>
   </div>
   <div>
      <a href="functions.html#repl">Replication</a>
   </div>
   <div>
      <a href="functions.html#soap">SOAP</a>
   </div>
   <div>
      <a href="functions.html#sql">SQL</a>
   </div>
   <div>
      <a href="functions.html#string">String</a>
   </div>
   <div>
      <a href="functions.html#txn">Transaction</a>
   </div>
   <div>
      <a href="functions.html#type">Type Mapping</a>
   </div>
   <div>
      <a href="functions.html#uddi">UDDI</a>
   </div>
   <div>
      <a href="functions.html#udt">User Defined Types &amp; The CLR</a>
   </div>
   <div>
      <a href="functions.html#vad">VAD</a>
   </div>
   <div>
      <a href="functions.html#jvmpl">Virtuoso Java PL API</a>
   </div>
   <div>
      <a href="functions.html#bif">Virtuoso Server Extension Interface (VSEI)</a>
   </div>
   <div>
      <a class="selected" href="functions.html#ws">Web &amp; Internet</a>
   </div>
   <div class="selected">
    <div>
        <a href="fn_dav_api_add.html">dav add &amp; update fun...</a>
    </div>
    <div>
        <a href="fn_dav_api_lock.html">dav lock manipulatio...</a>
    </div>
    <div>
        <a href="fn_dav_api_change.html">dav manipulation fun...</a>
    </div>
    <div>
        <a href="fn_dav_api_search.html">dav search functions</a>
    </div>
    <div>
        <a href="fn_dav_exp.html">dav_exp</a>
    </div>
    <div>
        <a href="fn_lfs_exp.html">lfs_exp</a>
    </div>
    <div>
        <a href="fn_serv_queue_top.html">serv_queue_top</a>
    </div>
    <div>
        <a href="fn_urlrewrite_create_regex_rule.html">urlrewrite_create_re...</a>
    </div>
    <div>
        <a href="fn_USER_KEY_LOAD.html">user_key_load</a>
    </div>
    <div>
        <a class="selected" href="fn_vhost_define.html">vhost_define</a>
    </div>
    <div>
        <a href="fn_vhost_remove.html">vhost_remove</a>
    </div>
    <div>
        <a href="fn_dav_api_user.html">webdav users &amp; group...</a>
    </div>
    <div>
        <a href="fn_client_attr.html">client_attr</a>
    </div>
    <div>
        <a href="fn_connection_get.html">connection_get</a>
    </div>
    <div>
        <a href="fn_connection_id.html">connection_id</a>
    </div>
    <div>
        <a href="fn_connection_is_dirty.html">connection_is_dirty</a>
    </div>
    <div>
        <a href="fn_connection_set.html">connection_set</a>
    </div>
    <div>
        <a href="fn_connection_vars.html">connection_vars</a>
    </div>
    <div>
        <a href="fn_connection_vars_set.html">connection_vars_set</a>
    </div>
    <div>
        <a href="fn_dbname.html">dbname</a>
    </div>
    <div>
        <a href="fn_ftp_get.html">ftp_get</a>
    </div>
    <div>
        <a href="fn_ftp_ls.html">ftp_ls</a>
    </div>
    <div>
        <a href="fn_ftp_put.html">ftp_put</a>
    </div>
    <div>
        <a href="fn_get_certificate_info.html">get_certificate_info</a>
    </div>
    <div>
        <a href="fn_get_keyword.html">get_keyword</a>
    </div>
    <div>
        <a href="fn_get_keyword_ucase.html">get_keyword_ucase</a>
    </div>
    <div>
        <a href="fn_http.html">http</a>
    </div>
    <div>
        <a href="fn_http_acl_get.html">http_acl_get</a>
    </div>
    <div>
        <a href="fn_http_acl_remove.html">http_acl_remove</a>
    </div>
    <div>
        <a href="fn_http_acl_set.html">http_acl_set</a>
    </div>
    <div>
        <a href="fn_http_body_read.html">http_body_read</a>
    </div>
    <div>
        <a href="fn_http_client.html">http_client</a>
    </div>
    <div>
        <a href="fn_http_client_ext.html">http_client_ext</a>
    </div>
    <div>
        <a href="fn_http_client_ip.html">http_client_ip</a>
    </div>
    <div>
        <a href="fn_http_debug_log.html">http_debug_log</a>
    </div>
    <div>
        <a href="fn_http_enable_gz.html">http_enable_gz</a>
    </div>
    <div>
        <a href="fn_http_file.html">http_file</a>
    </div>
    <div>
        <a href="fn_http_flush.html">http_flush</a>
    </div>
    <div>
        <a href="fn_http_get.html">http_get</a>
    </div>
    <div>
        <a href="fn_http_header.html">http_header</a>
    </div>
    <div>
        <a href="fn_http_header_get.html">http_header_get</a>
    </div>
    <div>
        <a href="fn_http_kill.html">http_kill</a>
    </div>
    <div>
        <a href="fn_http_listen_host.html">http_listen_host</a>
    </div>
    <div>
        <a href="fn_http_lock.html">http_lock</a>
    </div>
    <div>
        <a href="fn_http_map_get.html">http_map_get</a>
    </div>
    <div>
        <a href="fn_http_map_table.html">http_map_table</a>
    </div>
    <div>
        <a href="fn_http_param.html">http_param</a>
    </div>
    <div>
        <a href="fn_http_path.html">http_path</a>
    </div>
    <div>
        <a href="fn_http_pending_req.html">http_pending_req</a>
    </div>
    <div>
        <a href="fn_http_physical_path.html">http_physical_path</a>
    </div>
    <div>
        <a href="fn_http_proxy.html">http_proxy</a>
    </div>
    <div>
        <a href="fn_http_request_get.html">http_request_get</a>
    </div>
    <div>
        <a href="fn_http_request_header.html">http_request_header</a>
    </div>
    <div>
        <a href="fn_http_request_status.html">http_request_status</a>
    </div>
    <div>
        <a href="fn_http_rewrite.html">http_rewrite</a>
    </div>
    <div>
        <a href="fn_http_root.html">http_root</a>
    </div>
    <div>
        <a href="fn_http_unlock.html">http_unlock</a>
    </div>
    <div>
        <a href="fn_http_url.html">http_url</a>
    </div>
    <div>
        <a href="fn_http_value.html">http_value</a>
    </div>
    <div>
        <a href="fn_http_xslt.html">http_xslt</a>
    </div>
    <div>
        <a href="fn_json_parse.html">json_parse</a>
    </div>
    <div>
        <a href="fn_ses_connect.html">ses_connect</a>
    </div>
    <div>
        <a href="fn_ses_disconnect.html">ses_disconnect</a>
    </div>
    <div>
        <a href="fn_ses_read_line.html">ses_read_line</a>
    </div>
    <div>
        <a href="fn_ses_write.html">ses_write</a>
    </div>
    <div>
        <a href="fn_tcpip_gethostbyaddr.html">tcpip_gethostbyaddr</a>
    </div>
    <div>
        <a href="fn_tcpip_gethostbyname.html">tcpip_gethostbyname</a>
    </div>
    <div>
        <a href="fn_vsp_calculate_digest.html">vsp_calculate_digest</a>
    </div>
    <div>
        <a href="fn_wsdl_import_udt.html">wsdl_import_udt</a>
    </div>
   </div>
   <div>
      <a href="functions.html#xml">XML</a>
   </div>
   <div>
      <a href="functions.html#XPATH">XPATH &amp; XQUERY</a>
   </div>
    <br />
   <div>
      <a href="functionidx.html">Functions Index</a>
   </div>
    <br />
  </div>
  <div id="text">
    <h2>VHOST_DEFINE</h2>
    <div class="refpurpose">define a virtual host or virtual directory</div>
    <div class="funcsynopsis">
        <span class="funcdef">Void DB.DBA.<span class="function">VHOST_DEFINE</span>
      </span>
	(<span class="paramdef">in <span class="parameter">vhost</span> varchar</span>, 
	<span class="paramdef">in <span class="parameter">lhost</span> varchar</span>, 
	<span class="paramdef">in <span class="parameter">lpath</span> varchar</span>, 
	<span class="paramdef">in <span class="parameter">ppath</span> varchar</span>, 
	<span class="paramdef">in <span class="parameter">is_dav</span> boolean</span>, 
	<span class="paramdef">in <span class="parameter">is_brws</span> boolean</span>, 
	<span class="paramdef">in <span class="parameter">def_page</span> varchar</span>, 
	<span class="paramdef">in <span class="parameter">auth_fn</span> varchar</span>, 
	<span class="paramdef">in <span class="parameter">realm</span> varchar</span>, 
	<span class="paramdef">in <span class="parameter">ppr_fn</span> varchar</span>, 
	<span class="paramdef">in <span class="parameter">vsp_user</span> varchar</span>, 
	<span class="paramdef">in <span class="parameter">soap_user</span> varchar</span>, 
	<span class="paramdef">in <span class="parameter">sec</span> varchar</span>, 
	<span class="paramdef">in <span class="parameter">ses_vars</span> boolean</span>, 
	<span class="paramdef">in <span class="parameter">soap_opts</span> any</span>, 
	<span class="paramdef">in <span class="parameter">auth_opts</span> any</span>, 
	<span class="paramdef">in <span class="parameter">opts</span> any</span>, 
	<span class="paramdef">in <span class="parameter">is_default_host</span> integer</span>);
      </div>
  
  
  
  <div class="refsect1">
      <div class="refsect1title">Description</div>
    <p>
        <span class="computeroutput">VHOST_DEFINE</span> is used to define virtual hosts 
    and virtual paths on the Virtuoso HTTP server. Effectively this procedure inserts 
    a row in table <span class="computeroutput">DB.DBA.HTTP_PATH</span> Virtuoso 
    supports both flavours of virtual hosting: IP-based and name-based.</p>
    </div>

  <div class="refsect1">
      <div class="refsect1title">Parameters</div>
    <div class="refsect2">
        <span class="refsect2title">vhost – </span>
      A <span class="computeroutput">string</span> containing the virtual host name that the
browser presents as Host: entry in the request headers. i.e. Name-based virtual hosting.
The default value is taken from the Virtuoso INI file.
    </div>
    <div class="refsect2">
        <span class="refsect2title">lhost – </span>
      A <span class="computeroutput">string</span> containing the  address of the network
interface the Virtuoso HTTP server uses to listen and accept connections.
The default value is taken from the Virtuoso INI file.
    </div>
    <div class="refsect2">
        <span class="refsect2title">lpath – </span>
      A <span class="computeroutput">string</span> containing the path component of the
URI for the logical path.
    </div>
    <div class="refsect2">
        <span class="refsect2title">ppath – </span>
      A string containing the physical path that the logical
path points to. i.e. a directory or a path to dav collection on server.
    </div>
    <div class="refsect2">
        <span class="refsect2title">is_dav – </span>
      An <span class="computeroutput">integer</span>. If non-zero, it indicates that
the <span class="computeroutput">physical_path</span> points to a collection in DAV
repository.  Default value is 0.
    </div>
    <div class="refsect2">
        <span class="refsect2title">is_brws – </span>
      An <span class="computeroutput">integer</span>. If non-zero, it indicates that the server will
generate a directory listing in case a default page is absent.  Default value is 0.
    </div>
    <div class="refsect2">
        <span class="refsect2title">def_page – </span>
      A <span class="computeroutput">string</span> containing the file name of
the default page.  Default value is NULL.
    </div>
    <div class="refsect2">
        <span class="refsect2title">auth_fn – </span>
      A <span class="computeroutput">string</span> that contains the fully qualified Virtuoso/PL
procedure name of authentication hook function that will check and perform
authentication for this virtual host or directory. If NULL, Virtuoso will not
attempt authentication.  The default value is NULL.
    </div>
    <div class="refsect2">
        <span class="refsect2title">realm – </span>
      A <span class="computeroutput">string</span> with the realm to be passed to the
authentication function <span class="computeroutput">auth_func</span>.  The
default value is NULL.
    </div>
    <div class="refsect2">
        <span class="refsect2title">ppr_fn – </span>
      A <span class="computeroutput">string</span> containing the fully qualified name of the
Virtuoso/PL stored procedure used for post-processing of the page.
The default values is NULL.
    </div>
    <div class="refsect2">
        <span class="refsect2title">vsp_user – </span>
      A <span class="computeroutput">string</span> containing a valid DB user name.  The VSP pages
contained in the virtual directory shall be run with the grants effective for
this user at time of execution.  The default values is NULL.
    </div>
    <div class="refsect2">
        <span class="refsect2title">soap_user – </span>
      A <span class="computeroutput">string</span> containing a valid SOAP user for SOAP calls.
The default values is NULL.
    </div>
    <div class="refsect2">
        <span class="refsect2title">sec – </span>
      Security restrictions (SSL, Digest).  The default values is NULL.
    </div>
    <div class="refsect2">
        <span class="refsect2title">ses_vars – </span>
      An <span class="computeroutput">integer</span>. If non-zero, indicates that session
variables are persistent.  The default values is 0.
    </div>
    <div class="refsect2">
        <span class="refsect2title">soap_opts – </span>
      Options for SOAP service.  The default values is NULL.
      The SOAP options are name-value pairs contained in a vector:
      i.e. vector (&#39;name1&#39;, &#39;value1&#39;, ....).  The SOAP server accepts the
      optional parameters as described in <a href="soap.html#soapoptions">Optional parameters to the SOAP endpoint</a>.

    </div>
    <div class="refsect2">
        <span class="refsect2title">auth_opts – </span>
      Options for the authentication hook and HTTPS listen hosts.  The default values is NULL.
      If the sec_method (security method) defined as &#39;SSL&#39; the following auth_options must be supplied:
      https_cert - HTTPS server certificate file path, https_key - HTTPS server private key file path.
      In addition to check X509 certificate of clients, the https_cv option with path to the file containing trusted certificate authorities must be supplied and https_cv_depth - integer to set depth of client certificate checking.
      
    </div>
    <div class="refsect2">
        <span class="refsect2title">opts – </span>
      
      Extension options to the virtual directory itself. The default is NULL.
      When it&#39;s used the value MUST be a vector of name and value pairs. 
      The supported extension options are: 
      &quot;noinherit&quot; - denotes that all paths requested and matched this directory will be 
      treated only as physical location (no expansion, no inheritance). It may used with a single page to the directory mapping. 
      &quot;xml_templates&quot; - This denotes that .xml files under that directory and indirect children will be treated as a XML Template files (i.e. they will be executed).
      &quot;executable&quot; - this flag is used to override the execution permissions of the active pages stored within WebDAV repository (i.e. if it&#39;s set the active pages will be executed no matter what are their execution permission flag)
      
    </div>
    <div class="refsect2">
        <span class="refsect2title">is_default_host – </span>
      
      
    </div>
  </div>
  <div class="refsect1">
      <div class="refsect1title">Return Types</div>
      <p>The Return is VOID.</p>
    </div>

  <div class="refsect1">
      <div class="refsect1title">Examples</div>
    <a name="ex_vhost_define" />
      <div class="example">
        <div class="exampletitle">Define Virtual Hosts</div>
    <p>The following command will:</p>
    <ul>
          <li>listen on port 8889 of the interface corresponding with host.foo.com</li>
          <li>maps /appsimple -&gt; /samples/appsimple/</li>
          <li>can get a directory listing</li>
          <li>SQL user which will perform VSP execution is WS</li>
          <li>the persistent session variables flag is on, so can be used in VSPs</li>
        </ul>
<div>
          <pre class="programlisting">
SQL&gt; VHOST_DEFINE (vhost=&gt;&#39;www.foo.com:8889&#39;,
  lhost=&gt;&#39;host.foo.com:8889&#39;,
  lpath=&gt;&#39;/appsimple&#39;,
  ppath=&gt;&#39;/samples/appsimple/&#39;,
  is_brws=&gt;1,
  vsp_user=&gt;&#39;WS&#39;,
  ses_vars=&gt;1);
  </pre>
        </div>
  <ul>
          <li>listen on standard HTTP port (80)</li>
          <li>maps /appurl -&gt; /samples/appurl/</li>
          <li>can get a directory listing</li>
          <li>SQL user which will perform VSP execution is WS</li>
          <li>the persistent session variables flag is on , can be used in VSPs</li>
        </ul>
<div>
          <pre class="programlisting">
SQL&gt; VHOST_DEFINE (vhost=&gt;&#39;www.foo.com&#39;,
  lhost=&gt;&#39;host.foo.com&#39;,
  lpath=&gt;&#39;/appurl&#39;,
  ppath=&gt;&#39;/samples/appurl/&#39;,
  is_brws=&gt;1,
  vsp_user=&gt;&#39;WS&#39;,
  ses_vars=&gt;1);
  </pre>
        </div>
  <ul>
          <li>HTTPS server listen on 443 port (will accept HTTP connections via SSL)</li>
          <li>maps /secure -&gt; /samples/appurl/</li>
          <li>SQL user which will perform VSP execution is DBA</li>
          <li>The server certificate is in the ./server.cert file</li>
          <li>and server private key is in the ./server.key file</li>
        </ul>
<div>
          <pre class="programlisting">
SQL&gt; VHOST_DEFINE (vhost=&gt;&#39;www.foo.com:443&#39;,
  lhost=&gt;&#39;host.foo.com:443&#39;,
  lpath=&gt;&#39;/secure&#39;,
  ppath=&gt;&#39;/samples/appurl/&#39;,
  sec=&gt;&#39;SSL&#39;,
  vsp_user=&gt;&#39;dba&#39;,
  auth_opts=&gt;vector (&#39;https_key&#39;,&#39;./server.key&#39;,&#39;https_cert&#39;,&#39;./server.cert&#39;));
</pre>
        </div>
  <p>
If a browser points to the URL http://www.foo.com/ it will get a directory listing of /samples/appurl/, or
if a browser points to http://www.foo.com:8889/ it will will get a directory listing of /samples/appsimple/.
</p>

<p>The following example demonstrates the use of SOAP options
used in <a href="wsdl.html#soapwsdlinterop">Interop</a> testing.</p>
<div>
          <pre class="programlisting">
  VHOST_DEFINE (lpath=&gt;&#39;/Interop&#39;,
                ppath=&gt;&#39;/SOAP/&#39;,
		soap_user=&gt;&#39;INTEROP&#39;,
		soap_opts=&gt; vector(
			       &#39;SchemaNS&#39;,&#39;http://soapinterop.org/xsd&#39;,
			       &#39;Namespace&#39;,&#39;http://soapinterop.org/&#39;,
			       &#39;MethodInSoapAction&#39;,&#39;no&#39;,
			       &#39;ServiceName&#39;, &#39;InteropTests&#39;,
			       &#39;HeaderNS&#39;, &#39;http://soapinterop.org/echoheader/&#39;,
			       &#39;CR-escape&#39;, &#39;yes&#39;));</pre>
        </div>
    </div>
  </div>
  <div class="refsect1">
      <div class="refsect1title">See Also</div>
    <p>Chapter <a href="webandxml.html">Virtuoso Web and XML Support</a> in the Virtuoso Manual for discussion on this topic. <a href="fn_vhost_remove.html">vhost_remove</a>.</p>
  </div>
</div>
  <div id="footer">
    <div>Copyright© 1999 - 2009 OpenLink Software All rights reserved.</div>
   <div id="validation">
    <a href="http://validator.w3.org/check/referer">
        <img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" />
    </a>
    <a href="http://jigsaw.w3.org/css-validator/">
        <img src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!" height="31" width="88" />
    </a>
   </div>
  </div>
 </body>
</html>