<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- saved from url=(0014)about:internet -->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.5.0_19) on Sun Mar 20 20:56:07 PKT 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>
Class Hierarchy (Click Framework API - v2.3.0)
</TITLE>


<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">

<SCRIPT type="text/javascript">
function windowTitle()
{
    parent.document.title="Class Hierarchy (Click Framework API - v2.3.0)";
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>

</HEAD>

<BODY BGCOLOR="white">


<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html?overview-tree.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="overview-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->

<HR>
<CENTER>
<H2>
Hierarchy For All Packages</H2>
</CENTER>
<DL>
<DT><B>Package Hierarchies:</B><DD><A HREF="org/apache/click/package-tree.html">org.apache.click</A>, <A HREF="org/apache/click/ajax/package-tree.html">org.apache.click.ajax</A>, <A HREF="org/apache/click/control/package-tree.html">org.apache.click.control</A>, <A HREF="org/apache/click/dataprovider/package-tree.html">org.apache.click.dataprovider</A>, <A HREF="org/apache/click/element/package-tree.html">org.apache.click.element</A>, <A HREF="org/apache/click/service/package-tree.html">org.apache.click.service</A>, <A HREF="org/apache/click/util/package-tree.html">org.apache.click.util</A></DL>
<HR>
<H2>
Class Hierarchy
</H2>
<UL>
<LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang"><B>Object</B></A><UL>
<LI TYPE="circle">org.apache.click.control.<A HREF="org/apache/click/control/AbstractControl.html" title="class in org.apache.click.control"><B>AbstractControl</B></A> (implements org.apache.click.<A HREF="org/apache/click/Control.html" title="interface in org.apache.click">Control</A>)
<UL>
<LI TYPE="circle">org.apache.click.control.<A HREF="org/apache/click/control/AbstractContainer.html" title="class in org.apache.click.control"><B>AbstractContainer</B></A> (implements org.apache.click.control.<A HREF="org/apache/click/control/Container.html" title="interface in org.apache.click.control">Container</A>)
<UL>
<LI TYPE="circle">org.apache.click.control.<A HREF="org/apache/click/control/Form.html" title="class in org.apache.click.control"><B>Form</B></A> (implements org.apache.click.<A HREF="org/apache/click/Stateful.html" title="interface in org.apache.click">Stateful</A>)
<LI TYPE="circle">org.apache.click.control.<A HREF="org/apache/click/control/Panel.html" title="class in org.apache.click.control"><B>Panel</B></A></UL>
<LI TYPE="circle">org.apache.click.control.<A HREF="org/apache/click/control/AbstractLink.html" title="class in org.apache.click.control"><B>AbstractLink</B></A> (implements org.apache.click.<A HREF="org/apache/click/Stateful.html" title="interface in org.apache.click">Stateful</A>)
<UL>
<LI TYPE="circle">org.apache.click.control.<A HREF="org/apache/click/control/ActionLink.html" title="class in org.apache.click.control"><B>ActionLink</B></A><LI TYPE="circle">org.apache.click.control.<A HREF="org/apache/click/control/PageLink.html" title="class in org.apache.click.control"><B>PageLink</B></A></UL>
<LI TYPE="circle">org.apache.click.control.<A HREF="org/apache/click/control/Field.html" title="class in org.apache.click.control"><B>Field</B></A> (implements org.apache.click.<A HREF="org/apache/click/Stateful.html" title="interface in org.apache.click">Stateful</A>)
<UL>
<LI TYPE="circle">org.apache.click.control.<A HREF="org/apache/click/control/Button.html" title="class in org.apache.click.control"><B>Button</B></A><UL>
<LI TYPE="circle">org.apache.click.control.<A HREF="org/apache/click/control/ActionButton.html" title="class in org.apache.click.control"><B>ActionButton</B></A><LI TYPE="circle">org.apache.click.control.<A HREF="org/apache/click/control/Reset.html" title="class in org.apache.click.control"><B>Reset</B></A><LI TYPE="circle">org.apache.click.control.<A HREF="org/apache/click/control/Submit.html" title="class in org.apache.click.control"><B>Submit</B></A><UL>
<LI TYPE="circle">org.apache.click.control.<A HREF="org/apache/click/control/ImageSubmit.html" title="class in org.apache.click.control"><B>ImageSubmit</B></A></UL>
</UL>
<LI TYPE="circle">org.apache.click.control.<A HREF="org/apache/click/control/Checkbox.html" title="class in org.apache.click.control"><B>Checkbox</B></A><LI TYPE="circle">org.apache.click.control.<A HREF="org/apache/click/control/FieldSet.html" title="class in org.apache.click.control"><B>FieldSet</B></A> (implements org.apache.click.control.<A HREF="org/apache/click/control/Container.html" title="interface in org.apache.click.control">Container</A>)
<LI TYPE="circle">org.apache.click.control.<A HREF="org/apache/click/control/FileField.html" title="class in org.apache.click.control"><B>FileField</B></A><LI TYPE="circle">org.apache.click.control.<A HREF="org/apache/click/control/HiddenField.html" title="class in org.apache.click.control"><B>HiddenField</B></A><LI TYPE="circle">org.apache.click.control.<A HREF="org/apache/click/control/Label.html" title="class in org.apache.click.control"><B>Label</B></A><LI TYPE="circle">org.apache.click.control.<A HREF="org/apache/click/control/Radio.html" title="class in org.apache.click.control"><B>Radio</B></A><LI TYPE="circle">org.apache.click.control.<A HREF="org/apache/click/control/RadioGroup.html" title="class in org.apache.click.control"><B>RadioGroup</B></A><LI TYPE="circle">org.apache.click.control.<A HREF="org/apache/click/control/Select.html" title="class in org.apache.click.control"><B>Select</B></A><LI TYPE="circle">org.apache.click.control.<A HREF="org/apache/click/control/TextArea.html" title="class in org.apache.click.control"><B>TextArea</B></A><LI TYPE="circle">org.apache.click.control.<A HREF="org/apache/click/control/TextField.html" title="class in org.apache.click.control"><B>TextField</B></A><UL>
<LI TYPE="circle">org.apache.click.control.<A HREF="org/apache/click/control/PasswordField.html" title="class in org.apache.click.control"><B>PasswordField</B></A></UL>
</UL>
<LI TYPE="circle">org.apache.click.control.<A HREF="org/apache/click/control/Table.html" title="class in org.apache.click.control"><B>Table</B></A> (implements org.apache.click.<A HREF="org/apache/click/Stateful.html" title="interface in org.apache.click">Stateful</A>)
</UL>
<LI TYPE="circle">org.apache.click.<A HREF="org/apache/click/ActionEventDispatcher.html" title="class in org.apache.click"><B>ActionEventDispatcher</B></A><LI TYPE="circle">org.apache.click.util.<A HREF="org/apache/click/util/ActionListenerAdaptor.html" title="class in org.apache.click.util"><B>ActionListenerAdaptor</B></A> (implements org.apache.click.<A HREF="org/apache/click/ActionListener.html" title="interface in org.apache.click">ActionListener</A>, java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A>)
<LI TYPE="circle">org.apache.click.<A HREF="org/apache/click/ActionResult.html" title="class in org.apache.click"><B>ActionResult</B></A><LI TYPE="circle">org.apache.click.service.<A HREF="org/apache/click/service/ClickResourceService.html" title="class in org.apache.click.service"><B>ClickResourceService</B></A> (implements org.apache.click.service.<A HREF="org/apache/click/service/ResourceService.html" title="interface in org.apache.click.service">ResourceService</A>)
<LI TYPE="circle">org.apache.click.util.<A HREF="org/apache/click/util/ClickUtils.html" title="class in org.apache.click.util"><B>ClickUtils</B></A><LI TYPE="circle">org.apache.click.control.<A HREF="org/apache/click/control/Column.html" title="class in org.apache.click.control"><B>Column</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A>)
<LI TYPE="circle">org.apache.click.service.<A HREF="org/apache/click/service/CommonsFileUploadService.html" title="class in org.apache.click.service"><B>CommonsFileUploadService</B></A> (implements org.apache.click.service.<A HREF="org/apache/click/service/FileUploadService.html" title="interface in org.apache.click.service">FileUploadService</A>)
<LI TYPE="circle">org.apache.click.service.<A HREF="org/apache/click/service/ConsoleLogService.html" title="class in org.apache.click.service"><B>ConsoleLogService</B></A> (implements org.apache.click.service.<A HREF="org/apache/click/service/LogService.html" title="interface in org.apache.click.service">LogService</A>)
<LI TYPE="circle">org.apache.click.util.<A HREF="org/apache/click/util/ContainerUtils.html" title="class in org.apache.click.util"><B>ContainerUtils</B></A><LI TYPE="circle">org.apache.click.<A HREF="org/apache/click/Context.html" title="class in org.apache.click"><B>Context</B></A><LI TYPE="circle">org.apache.click.<A HREF="org/apache/click/ControlRegistry.html" title="class in org.apache.click"><B>ControlRegistry</B></A><LI TYPE="circle">org.apache.click.ajax.<A HREF="org/apache/click/ajax/DefaultAjaxBehavior.html" title="class in org.apache.click.ajax"><B>DefaultAjaxBehavior</B></A> (implements org.apache.click.ajax.<A HREF="org/apache/click/ajax/AjaxBehavior.html" title="interface in org.apache.click.ajax">AjaxBehavior</A>)
<LI TYPE="circle">org.apache.click.service.<A HREF="org/apache/click/service/DefaultMessagesMapService.html" title="class in org.apache.click.service"><B>DefaultMessagesMapService</B></A> (implements org.apache.click.service.<A HREF="org/apache/click/service/MessagesMapService.html" title="interface in org.apache.click.service">MessagesMapService</A>)
<LI TYPE="circle">org.apache.click.element.<A HREF="org/apache/click/element/Element.html" title="class in org.apache.click.element"><B>Element</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A>)
<UL>
<LI TYPE="circle">org.apache.click.element.<A HREF="org/apache/click/element/ResourceElement.html" title="class in org.apache.click.element"><B>ResourceElement</B></A><UL>
<LI TYPE="circle">org.apache.click.element.<A HREF="org/apache/click/element/CssImport.html" title="class in org.apache.click.element"><B>CssImport</B></A><LI TYPE="circle">org.apache.click.element.<A HREF="org/apache/click/element/CssStyle.html" title="class in org.apache.click.element"><B>CssStyle</B></A><LI TYPE="circle">org.apache.click.element.<A HREF="org/apache/click/element/JsImport.html" title="class in org.apache.click.element"><B>JsImport</B></A><LI TYPE="circle">org.apache.click.element.<A HREF="org/apache/click/element/JsScript.html" title="class in org.apache.click.element"><B>JsScript</B></A></UL>
</UL>
<LI TYPE="circle">org.apache.click.util.<A HREF="org/apache/click/util/ErrorReport.html" title="class in org.apache.click.util"><B>ErrorReport</B></A><LI TYPE="circle">org.apache.click.util.<A HREF="org/apache/click/util/FlashAttribute.html" title="class in org.apache.click.util"><B>FlashAttribute</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A>)
<LI TYPE="circle">org.apache.click.util.<A HREF="org/apache/click/util/Format.html" title="class in org.apache.click.util"><B>Format</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A>)
<LI TYPE="circle">javax.servlet.<A HREF="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/GenericServlet.html" title="class or interface in javax.servlet"><B>GenericServlet</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A>, javax.servlet.<A HREF="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/Servlet.html" title="class or interface in javax.servlet">Servlet</A>, javax.servlet.<A HREF="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/ServletConfig.html" title="class or interface in javax.servlet">ServletConfig</A>)
<UL>
<LI TYPE="circle">javax.servlet.http.<A HREF="http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/http/HttpServlet.html" title="class or interface in javax.servlet.http"><B>HttpServlet</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A>)
<UL>
<LI TYPE="circle">org.apache.click.<A HREF="org/apache/click/ClickServlet.html" title="class in org.apache.click"><B>ClickServlet</B></A></UL>
</UL>
<LI TYPE="circle">org.apache.click.util.<A HREF="org/apache/click/util/HtmlStringBuffer.html" title="class in org.apache.click.util"><B>HtmlStringBuffer</B></A><LI TYPE="circle">org.apache.click.util.<A HREF="org/apache/click/util/MessagesMap.html" title="class in org.apache.click.util"><B>MessagesMap</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A>&lt;K,V&gt;)
<LI TYPE="circle">org.apache.click.control.<A HREF="org/apache/click/control/Option.html" title="class in org.apache.click.control"><B>Option</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A>)
<LI TYPE="circle">org.apache.click.control.<A HREF="org/apache/click/control/OptionGroup.html" title="class in org.apache.click.control"><B>OptionGroup</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A>)
<LI TYPE="circle">org.apache.click.<A HREF="org/apache/click/Page.html" title="class in org.apache.click"><B>Page</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A>)
<UL>
<LI TYPE="circle">org.apache.click.util.<A HREF="org/apache/click/util/ErrorPage.html" title="class in org.apache.click.util"><B>ErrorPage</B></A><LI TYPE="circle">org.apache.click.service.<A HREF="org/apache/click/service/XmlConfigService.ExcludePage.html" title="class in org.apache.click.service"><B>XmlConfigService.ExcludePage</B></A></UL>
<LI TYPE="circle">org.apache.click.util.<A HREF="org/apache/click/util/PageImports.html" title="class in org.apache.click.util"><B>PageImports</B></A><LI TYPE="circle">org.apache.click.util.<A HREF="org/apache/click/util/PropertyUtils.html" title="class in org.apache.click.util"><B>PropertyUtils</B></A><LI TYPE="circle">org.apache.click.util.<A HREF="org/apache/click/util/RequestTypeConverter.html" title="class in org.apache.click.util"><B>RequestTypeConverter</B></A> (implements ognl.TypeConverter)
<LI TYPE="circle">org.apache.click.util.<A HREF="org/apache/click/util/SessionMap.html" title="class in org.apache.click.util"><B>SessionMap</B></A> (implements java.util.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html" title="class or interface in java.util">Map</A>&lt;K,V&gt;)
<LI TYPE="circle">org.apache.click.control.<A HREF="org/apache/click/control/TablePaginator.html" title="class in org.apache.click.control"><B>TablePaginator</B></A> (implements org.apache.click.control.<A HREF="org/apache/click/control/Renderable.html" title="interface in org.apache.click.control">Renderable</A>)
<LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html" title="class or interface in java.lang"><B>Throwable</B></A> (implements java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A>)
<UL>
<LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Exception.html" title="class or interface in java.lang"><B>Exception</B></A><UL>
<LI TYPE="circle">org.apache.click.service.<A HREF="org/apache/click/service/TemplateException.html" title="class in org.apache.click.service"><B>TemplateException</B></A></UL>
</UL>
<LI TYPE="circle">org.apache.click.service.<A HREF="org/apache/click/service/VelocityTemplateService.html" title="class in org.apache.click.service"><B>VelocityTemplateService</B></A> (implements org.apache.click.service.<A HREF="org/apache/click/service/TemplateService.html" title="interface in org.apache.click.service">TemplateService</A>)
<LI TYPE="circle">org.apache.click.service.<A HREF="org/apache/click/service/VelocityTemplateService.LogChuteAdapter.html" title="class in org.apache.click.service"><B>VelocityTemplateService.LogChuteAdapter</B></A> (implements org.apache.velocity.runtime.log.LogChute)
<LI TYPE="circle">org.apache.click.service.<A HREF="org/apache/click/service/XmlConfigService.html" title="class in org.apache.click.service"><B>XmlConfigService</B></A> (implements org.apache.click.service.<A HREF="org/apache/click/service/ConfigService.html" title="interface in org.apache.click.service">ConfigService</A>, org.xml.sax.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/org/xml/sax/EntityResolver.html" title="class or interface in org.xml.sax">EntityResolver</A>)
</UL>
</UL>
<H2>
Interface Hierarchy
</H2>
<UL>
<LI TYPE="circle">org.apache.click.<A HREF="org/apache/click/Behavior.html" title="interface in org.apache.click"><B>Behavior</B></A><UL>
<LI TYPE="circle">org.apache.click.ajax.<A HREF="org/apache/click/ajax/AjaxBehavior.html" title="interface in org.apache.click.ajax"><B>AjaxBehavior</B></A></UL>
<LI TYPE="circle">org.apache.click.service.<A HREF="org/apache/click/service/ConfigService.html" title="interface in org.apache.click.service"><B>ConfigService</B></A><LI TYPE="circle">org.apache.click.control.<A HREF="org/apache/click/control/Decorator.html" title="interface in org.apache.click.control"><B>Decorator</B></A><LI TYPE="circle">org.apache.click.service.<A HREF="org/apache/click/service/FileUploadService.html" title="interface in org.apache.click.service"><B>FileUploadService</B></A><LI TYPE="circle">org.apache.click.service.<A HREF="org/apache/click/service/LogService.html" title="interface in org.apache.click.service"><B>LogService</B></A><LI TYPE="circle">org.apache.click.service.<A HREF="org/apache/click/service/MessagesMapService.html" title="interface in org.apache.click.service"><B>MessagesMapService</B></A><LI TYPE="circle">org.apache.click.<A HREF="org/apache/click/PageInterceptor.html" title="interface in org.apache.click"><B>PageInterceptor</B></A><LI TYPE="circle">org.apache.click.service.<A HREF="org/apache/click/service/ResourceService.html" title="interface in org.apache.click.service"><B>ResourceService</B></A><LI TYPE="circle">java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io"><B>Serializable</B></A><UL>
<LI TYPE="circle">org.apache.click.<A HREF="org/apache/click/ActionListener.html" title="interface in org.apache.click"><B>ActionListener</B></A><LI TYPE="circle">org.apache.click.<A HREF="org/apache/click/Control.html" title="interface in org.apache.click"><B>Control</B></A><UL>
<LI TYPE="circle">org.apache.click.control.<A HREF="org/apache/click/control/Container.html" title="interface in org.apache.click.control"><B>Container</B></A></UL>
<LI TYPE="circle">org.apache.click.dataprovider.<A HREF="org/apache/click/dataprovider/DataProvider.html" title="interface in org.apache.click.dataprovider"><B>DataProvider</B></A>&lt;T&gt;<UL>
<LI TYPE="circle">org.apache.click.dataprovider.<A HREF="org/apache/click/dataprovider/PagingDataProvider.html" title="interface in org.apache.click.dataprovider"><B>PagingDataProvider</B></A>&lt;T&gt;</UL>
<LI TYPE="circle">org.apache.click.control.<A HREF="org/apache/click/control/Renderable.html" title="interface in org.apache.click.control"><B>Renderable</B></A></UL>
<LI TYPE="circle">org.apache.click.<A HREF="org/apache/click/Stateful.html" title="interface in org.apache.click"><B>Stateful</B></A><LI TYPE="circle">org.apache.click.service.<A HREF="org/apache/click/service/TemplateService.html" title="interface in org.apache.click.service"><B>TemplateService</B></A></UL>
<H2>
Annotation Type Hierarchy
</H2>
<UL>
<LI TYPE="circle">org.apache.click.util.<A HREF="org/apache/click/util/Bindable.html" title="annotation in org.apache.click.util"><B>Bindable</B></A> (implements java.lang.annotation.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/annotation/Annotation.html" title="class or interface in java.lang.annotation">Annotation</A>)
</UL>
<H2>
Enum Hierarchy
</H2>
<UL>
<LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang"><B>Object</B></A><UL>
<LI TYPE="circle">java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Enum.html" title="class or interface in java.lang"><B>Enum</B></A>&lt;E&gt; (implements java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Comparable.html" title="class or interface in java.lang">Comparable</A>&lt;T&gt;, java.io.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A>)
<UL>
<LI TYPE="circle">org.apache.click.service.<A HREF="org/apache/click/service/ConfigService.AutoBinding.html" title="enum in org.apache.click.service"><B>ConfigService.AutoBinding</B></A></UL>
</UL>
</UL>
<HR>


<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html?overview-tree.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="overview-tree.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->

<HR>

<style type='text/css'>.str{color:#2A00FF;}.kwd{color:#7F0055;font-weight:bold;}.com{color:#3F7F5F;}.typ{color:#000;}.lit{color:#066;}.pun{color:#660;}.pln{color:#000;}.tag{color:#000099;font-weight:bold;}.atn{color:#009900;}.atv{color:#000;}.dec{color:#606;}pre.prettyprint{padding:1em;border:1px solid #888;overflow:auto;}@media print{.str{color:#2A00FF;}.kwd{color:#7F0055;font-weight:bold;}.com{color:#3F7F5F;font-style:italic;}.typ{color:#000;font-weight:bold;}.lit{color:#044;}.pun{color:#440;}.pln{color:#000;}.tag{color:#000099;font-weight:bold;}.atn{color:#009900;}.atv{color:#000;}}</style><script type='text/javascript'>var PR_keywords={};(function(){var CPP_KEYWORDS='abstract bool break case catch char class const '+'const_cast continue default delete deprecated dllexport dllimport do '+'double dynamic_cast else enum explicit extern false float for friend '+'goto if inline int long mutable naked namespace new noinline noreturn '+'nothrow novtable operator private property protected public register '+'reinterpret_cast return selectany short signed sizeof static '+'static_cast struct switch template this thread throw true try typedef '+'typeid typename union unsigned using declaration, directive uuid '+'virtual void volatile while typeof';var CSHARP_KEYWORDS='as base by byte checked decimal delegate descending '+'event finally fixed foreach from group implicit in interface internal '+'into is lock null object override orderby params readonly ref sbyte '+'sealed stackalloc string select uint ulong unchecked unsafe ushort var';var JAVA_KEYWORDS='package synchronized boolean implements import throws '+'instanceof transient extends final strictfp native super';var JSCRIPT_KEYWORDS='debugger export function with NaN Infinity';var PERL_KEYWORDS='require sub unless until use elsif BEGIN END';var PYTHON_KEYWORDS='and assert def del elif except exec global lambda '+'not or pass print raise yield False True None';var RUBY_KEYWORDS='then end begin rescue ensure module when undef next '+'redo retry alias defined';var SH_KEYWORDS='done fi';var KEYWORDS=[CPP_KEYWORDS,CSHARP_KEYWORDS,JAVA_KEYWORDS,JSCRIPT_KEYWORDS,PERL_KEYWORDS,PYTHON_KEYWORDS,RUBY_KEYWORDS,SH_KEYWORDS];for(var k=0;k<KEYWORDS.length;k++){var kw=KEYWORDS[k].split(' ');for(var i=0;i<kw.length;i++){if(kw[i]){PR_keywords[kw[i]]=true;}}}}).call(this);var PR_STRING='str';var PR_KEYWORD='kwd';var PR_COMMENT='com';var PR_TYPE='typ';var PR_LITERAL='lit';var PR_PUNCTUATION='pun';var PR_PLAIN='pln';var PR_TAG='tag';var PR_DECLARATION='dec';var PR_SOURCE='src';var PR_ATTRIB_NAME='atn';var PR_ATTRIB_VALUE='atv';var PR_TAB_WIDTH=8;function PR_isWordChar(ch){return(ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z');}function PR_spliceArrayInto(inserted,container,containerPosition,countReplaced){inserted.unshift(containerPosition,countReplaced||0);try{container.splice.apply(container,inserted);}finally{inserted.splice(0,2);}}var REGEXP_PRECEDER_PATTERN=(function(){var preceders=['!','!=','!==','#','%','%=','&','&&','&&=','&=','(','*','*=','+=',',','-=','->','/','/=',':','::',';','<','<<','<<=','<=','=','==','===','>','>=','>>','>>=','>>>','>>>=','?','@','[','^','^=','^^','^^=','{','|','|=','||','||=','~','break','case','continue','delete','do','else','finally','instanceof','return','throw','try','typeof'];var pattern='(?:'+'(?:(?:^|[^0-9\.])\\.{1,3})|'+'(?:(?:^|[^\\+])\\+)|'+'(?:(?:^|[^\\-])-)';for(var i=0;i<preceders.length;++i){var preceder=preceders[i];if(PR_isWordChar(preceder.charAt(0))){pattern+='|\\b'+preceder;}else{pattern+='|'+preceder.replace(/([^=<>:&])/g,'\\$1');}}pattern+='|^)\\s*$';return new RegExp(pattern);})();var pr_amp=/&/g;var pr_lt=/</g;var pr_gt=/>/g;var pr_quot=/"/g;function PR_attribToHtml(str){return str.replace(pr_amp,'&amp;').replace(pr_lt,'&lt;').replace(pr_gt,'&gt;').replace(pr_quot,'&quot;');}function PR_textToHtml(str){return str.replace(pr_amp,'&amp;').replace(pr_lt,'&lt;').replace(pr_gt,'&gt;');}var pr_ltEnt=/&lt;/g;var pr_gtEnt=/&gt;/g;var pr_aposEnt=/&apos;/g;var pr_quotEnt=/&quot;/g;var pr_ampEnt=/&amp;/g;function PR_htmlToText(html){var pos=html.indexOf('&');if(pos<0){return html;}for(--pos;(pos=html.indexOf('&#',pos+1))>=0;){var end=html.indexOf(';',pos);if(end>=0){var num=html.substring(pos+3,end);var radix=10;if(num&&num.charAt(0)=='x'){num=num.substring(1);radix=16;}var codePoint=parseInt(num,radix);if(!isNaN(codePoint)){html=(html.substring(0,pos)+String.fromCharCode(codePoint)+html.substring(end+1));}}}return html.replace(pr_ltEnt,'<').replace(pr_gtEnt,'>').replace(pr_aposEnt,"'").replace(pr_quotEnt,'"').replace(pr_ampEnt,'&');}function PR_isRawContent(node){return'XMP'==node.tagName;}var PR_innerHtmlWorks=null;function PR_getInnerHtml(node){if(null===PR_innerHtmlWorks){var testNode=document.createElement('PRE');testNode.appendChild(document.createTextNode('<!DOCTYPE foo PUBLIC "foo bar">\n<foo />'));PR_innerHtmlWorks=!/</.test(testNode.innerHTML);}if(PR_innerHtmlWorks){var content=node.innerHTML;if(PR_isRawContent(node)){content=PR_textToHtml(content);}return content;}var out=[];for(var child=node.firstChild;child;child=child.nextSibling){PR_normalizedHtml(child,out);}return out.join('');}function PR_normalizedHtml(node,out){switch(node.nodeType){case 1:var name=node.tagName.toLowerCase();out.push('\074',name);for(var i=0;i<node.attributes.length;++i){var attr=node.attributes[i];if(!attr.specified){continue;}out.push(' ');PR_normalizedHtml(attr,out);}out.push('>');for(var child=node.firstChild;child;child=child.nextSibling){PR_normalizedHtml(child,out);}if(node.firstChild||!/^(?:br|link|img)$/.test(name)){out.push('<\/',name,'>');}break;case 2:out.push(node.name.toLowerCase(),'="',PR_attribToHtml(node.value),'"');break;case 3:case 4:out.push(PR_textToHtml(node.nodeValue));break;}}function PR_tabExpander(tabWidth){var SPACES='                ';var charInLine=0;return function(plainText){var out=null;var pos=0;for(var i=0,n=plainText.length;i<n;++i){var ch=plainText.charAt(i);switch(ch){case'\t':if(!out){out=[];}out.push(plainText.substring(pos,i));var nSpaces=tabWidth-(charInLine%tabWidth);charInLine+=nSpaces;for(;nSpaces>=0;nSpaces-=SPACES.length){out.push(SPACES.substring(0,nSpaces));}pos=i+1;break;case'\n':charInLine=0;break;default:++charInLine;}}if(!out){return plainText;}out.push(plainText.substring(pos));return out.join('');};}var pr_chunkPattern=/(?:[^<]+|<!--[\s\S]*?-->|<!\[CDATA\[([\s\S]*?)\]\]>|<\/?[a-zA-Z][^>]*>|<)/g;var pr_commentPrefix=/^<!--/;var pr_cdataPrefix=/^<\[CDATA\[/;var pr_brPrefix=/^<br\b/i;function PR_extractTags(s){var matches=s.match(pr_chunkPattern);var sourceBuf=[];var sourceBufLen=0;var extractedTags=[];if(matches){for(var i=0,n=matches.length;i<n;++i){var match=matches[i];if(match.length>1&&match.charAt(0)==='<'){if(pr_commentPrefix.test(match)){continue;}if(pr_cdataPrefix.test(match)){sourceBuf.push(match.substring(9,match.length-3));sourceBufLen+=match.length-12;}else if(pr_brPrefix.test(match)){sourceBuf.push('\n');sourceBufLen+=1;}else{extractedTags.push(sourceBufLen,match);}}else{var literalText=PR_htmlToText(match);sourceBuf.push(literalText);sourceBufLen+=literalText.length;}}}return{source:sourceBuf.join(''),tags:extractedTags};}function PR_createSimpleLexer(shortcutStylePatterns,fallthroughStylePatterns){var shortcuts={};(function(){var allPatterns=shortcutStylePatterns.concat(fallthroughStylePatterns);for(var i=allPatterns.length;--i>=0;){var patternParts=allPatterns[i];var shortcutChars=patternParts[3];if(shortcutChars){for(var c=shortcutChars.length;--c>=0;){shortcuts[shortcutChars.charAt(c)]=patternParts;}}}})();var nPatterns=fallthroughStylePatterns.length;return function(sourceCode,opt_basePos){opt_basePos=opt_basePos||0;var decorations=[opt_basePos,PR_PLAIN];var lastToken='';var pos=0;var tail=sourceCode;while(tail.length){var style;var token=null;var patternParts=shortcuts[tail.charAt(0)];if(patternParts){var match=tail.match(patternParts[1]);token=match[0];style=patternParts[0];}else{for(var i=0;i<nPatterns;++i){patternParts=fallthroughStylePatterns[i];var contextPattern=patternParts[2];if(contextPattern&&!contextPattern.test(lastToken)){continue;}var match=tail.match(patternParts[1]);if(match){token=match[0];style=patternParts[0];break;}}if(!token){style=PR_PLAIN;token=tail.substring(0,1);}}decorations.push(opt_basePos+pos,style);pos+=token.length;tail=tail.substring(token.length);if(style!==PR_COMMENT&&/\S/.test(token)){lastToken=token;}}return decorations;};}var PR_C_STYLE_STRING_AND_COMMENT_LEXER=PR_createSimpleLexer([[PR_STRING,/^\'(?:[^\\\']|\\[\s\S])*(?:\'|$)/,null,"'"],[PR_STRING,/^"(?:[^\\"]|\\[\s\S])*(?:"|$)/,null,'"'],[PR_STRING,/^\`(?:[^\\\`]|\\[\s\S])*(?:\`|$)/,null,'`']],[[PR_PLAIN,/^(?:[^\'"\`\/\#]+)/,null,' \r\n'],[PR_COMMENT,/^#[^\r\n]*/,null,'#'],[PR_COMMENT,/^\/\/[^\r\n]*/,null],[PR_STRING,/^\/(?:[^\\\*\/]|\\[\s\S])+(?:\/|$)/,REGEXP_PRECEDER_PATTERN],[PR_COMMENT,/^\/\*[\s\S]*?(?:\*\/|$)/,null]]);function PR_splitStringAndCommentTokens(sourceCode){return PR_C_STYLE_STRING_AND_COMMENT_LEXER(sourceCode);}var PR_C_STYLE_LITERAL_IDENTIFIER_PUNC_RECOGNIZER=PR_createSimpleLexer([],[[PR_PLAIN,/^\s+/,null,' \r\n'],[PR_PLAIN,/^[a-z_$@][a-z_$@0-9]*/i,null],[PR_LITERAL,/^0x[a-f0-9]+[a-z]/i,null],[PR_LITERAL,/^(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?[a-z]*/i,null,'123456789'],[PR_PUNCTUATION,/^[^\s\w\.$@]+/,null]]);function PR_splitNonStringNonCommentTokens(source,decorations){for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style===PR_PLAIN){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var chunk=source.substring(start,end);var subDecs=PR_C_STYLE_LITERAL_IDENTIFIER_PUNC_RECOGNIZER(chunk,start);for(var j=0,m=subDecs.length;j<m;j+=2){var subStyle=subDecs[j+1];if(subStyle===PR_PLAIN){var subStart=subDecs[j];var subEnd=j+2<m?subDecs[j+2]:chunk.length;var token=source.substring(subStart,subEnd);if(token=='.'){subDecs[j+1]=PR_PUNCTUATION;}else if(token in PR_keywords){subDecs[j+1]=PR_KEYWORD;}else if(/^@?[A-Z][A-Z$]*[a-z][A-Za-z$]*$/.test(token)){subDecs[j+1]=token.charAt(0)=='@'?PR_LITERAL:PR_TYPE;}}}PR_spliceArrayInto(subDecs,decorations,i,2);i+=subDecs.length-2;}}return decorations;}var PR_MARKUP_LEXER=PR_createSimpleLexer([],[[PR_PLAIN,/^[^<]+/,null],[PR_DECLARATION,/^<!\w[^>]*(?:>|$)/,null],[PR_COMMENT,/^<!--[\s\S]*?(?:-->|$)/,null],[PR_SOURCE,/^<\?[\s\S]*?(?:\?>|$)/,null],[PR_SOURCE,/^<%[\s\S]*?(?:%>|$)/,null],[PR_SOURCE,/^<(script|style|xmp)\b[^>]*>[\s\S]*?<\/\1\b[^>]*>/i,null],[PR_TAG,/^<\/?\w[^<>]*>/,null]]);var PR_SOURCE_CHUNK_PARTS=/^(<[^>]*>)([\s\S]*)(<\/[^>]*>)$/;function PR_tokenizeMarkup(source){var decorations=PR_MARKUP_LEXER(source);for(var i=0;i<decorations.length;i+=2){if(decorations[i+1]===PR_SOURCE){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var sourceChunk=source.substring(start,end);var match=(sourceChunk.match(PR_SOURCE_CHUNK_PARTS));if(match){decorations.splice(i,2,start,PR_TAG,start+match[1].length,PR_SOURCE,start+match[1].length+(match[2]||'').length,PR_TAG);}}}return decorations;}var PR_TAG_LEXER=PR_createSimpleLexer([[PR_ATTRIB_VALUE,/^\'[^\']*(?:\'|$)/,null,"'"],[PR_ATTRIB_VALUE,/^"[^"]*(?:"|$)/,null,'"'],[PR_PUNCTUATION,/^[<>\/=]+/,null,'<>/=']],[[PR_TAG,/^[\w-]+/,/^</],[PR_ATTRIB_VALUE,/^[\w-]+/,/^=/],[PR_ATTRIB_NAME,/^[\w-]+/,null],[PR_PLAIN,/^\s+/,null,' \r\n']]);function PR_splitTagAttributes(source,decorations){for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style===PR_TAG){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var chunk=source.substring(start,end);var subDecorations=PR_TAG_LEXER(chunk,start);PR_spliceArrayInto(subDecorations,decorations,i,2);i+=subDecorations.length-2;}}return decorations;}function PR_splitSourceNodes(source,decorations){for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style==PR_SOURCE){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var subDecorations=PR_decorateSource(source.substring(start,end));for(var j=0,m=subDecorations.length;j<m;j+=2){subDecorations[j]+=start;}PR_spliceArrayInto(subDecorations,decorations,i,2);i+=subDecorations.length-2;}}return decorations;}function PR_splitSourceAttributes(source,decorations){var nextValueIsSource=false;for(var i=0;i<decorations.length;i+=2){var style=decorations[i+1];if(style===PR_ATTRIB_NAME){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;nextValueIsSource=/^on|^style$/i.test(source.substring(start,end));}else if(style==PR_ATTRIB_VALUE){if(nextValueIsSource){var start=decorations[i];var end=i+2<decorations.length?decorations[i+2]:source.length;var attribValue=source.substring(start,end);var attribLen=attribValue.length;var quoted=(attribLen>=2&&/^["\']/.test(attribValue)&&attribValue.charAt(0)===attribValue.charAt(attribLen-1));var attribSource;var attribSourceStart;var attribSourceEnd;if(quoted){attribSourceStart=start+1;attribSourceEnd=end-1;attribSource=attribValue;}else{attribSourceStart=start+1;attribSourceEnd=end-1;attribSource=attribValue.substring(1,attribValue.length-1);}var attribSourceDecorations=PR_decorateSource(attribSource);for(var j=0,m=attribSourceDecorations.length;j<m;j+=2){attribSourceDecorations[j]+=attribSourceStart;}if(quoted){attribSourceDecorations.push(attribSourceEnd,PR_ATTRIB_VALUE);PR_spliceArrayInto(attribSourceDecorations,decorations,i+2,0);}else{PR_spliceArrayInto(attribSourceDecorations,decorations,i,2);}}nextValueIsSource=false;}}return decorations;}function PR_decorateSource(sourceCode){var decorations=PR_splitStringAndCommentTokens(sourceCode);decorations=PR_splitNonStringNonCommentTokens(sourceCode,decorations);return decorations;}function PR_decorateMarkup(sourceCode){var decorations=PR_tokenizeMarkup(sourceCode);decorations=PR_splitTagAttributes(sourceCode,decorations);decorations=PR_splitSourceNodes(sourceCode,decorations);decorations=PR_splitSourceAttributes(sourceCode,decorations);return decorations;}function PR_recombineTagsAndDecorations(sourceText,extractedTags,decorations){var html=[];var outputIdx=0;var openDecoration=null;var currentDecoration=null;var tagPos=0;var decPos=0;var tabExpander=PR_tabExpander(PR_TAB_WIDTH);function emitTextUpTo(sourceIdx){if(sourceIdx>outputIdx){if(openDecoration&&openDecoration!==currentDecoration){html.push('</span>');openDecoration=null;}if(!openDecoration&&currentDecoration){openDecoration=currentDecoration;html.push('<span class="',openDecoration,'">');}var htmlChunk=PR_textToHtml(tabExpander(sourceText.substring(outputIdx,sourceIdx))).replace(/(\r\n?|\n| ) /g,'$1&nbsp;').replace(/\r\n?|\n/g,'&nbsp;<br>');html.push(htmlChunk);outputIdx=sourceIdx;}}while(true){var outputTag;if(tagPos<extractedTags.length){if(decPos<decorations.length){outputTag=extractedTags[tagPos]<=decorations[decPos];}else{outputTag=true;}}else{outputTag=false;}if(outputTag){emitTextUpTo(extractedTags[tagPos]);if(openDecoration){html.push('</span>');openDecoration=null;}html.push(extractedTags[tagPos+1]);tagPos+=2;}else if(decPos<decorations.length){emitTextUpTo(decorations[decPos]);currentDecoration=decorations[decPos+1];decPos+=2;}else{break;}}emitTextUpTo(sourceText.length);if(openDecoration){html.push('</span>');}return html.join('');}function prettyPrintOne(sourceCodeHtml){try{var sourceAndExtractedTags=PR_extractTags(sourceCodeHtml);var source=sourceAndExtractedTags.source;var extractedTags=sourceAndExtractedTags.tags;var isMarkup=/^\s*</.test(source)&&/>\s*$/.test(source);var decorations=isMarkup?PR_decorateMarkup(source):PR_decorateSource(source);return PR_recombineTagsAndDecorations(source,extractedTags,decorations);}catch(e){if('console'in window){console.log(e);console.trace();}return sourceCodeHtml;}}var PR_SHOULD_USE_CONTINUATION=true;function prettyPrint(opt_whenDone){var codeSegments=[document.getElementsByTagName('pre'),document.getElementsByTagName('code'),document.getElementsByTagName('xmp')];var elements=[];for(var i=0;i<codeSegments.length;++i){for(var j=0;j<codeSegments[i].length;++j){elements.push(codeSegments[i][j]);}}codeSegments=null;var k=0;function doWork(){var endTime=(PR_SHOULD_USE_CONTINUATION?new Date().getTime()+250:Infinity);for(;k<elements.length&&new Date().getTime()<endTime;k++){var cs=elements[k];if(cs.className&&cs.className.indexOf('prettyprint')>=0){var nested=false;for(var p=cs.parentNode;p!=null;p=p.parentNode){if((p.tagName=='pre'||p.tagName=='code'||p.tagName=='xmp')&&p.className&&p.className.indexOf('prettyprint')>=0){nested=true;break;}}if(!nested){var content=PR_getInnerHtml(cs);content=content.replace(/(?:\r\n?|\n)$/,'');var newContent=prettyPrintOne(content);if(!PR_isRawContent(cs)){cs.innerHTML=newContent;}else{var pre=document.createElement('PRE');for(var i=0;i<cs.attributes.length;++i){var a=cs.attributes[i];if(a.specified){pre.setAttribute(a.name,a.value);}}pre.innerHTML=newContent;cs.parentNode.replaceChild(pre,cs);}}}}if(k<elements.length){setTimeout(doWork,250);}else if(opt_whenDone){opt_whenDone();}}doWork();}</script><script type='text/javascript'>prettyPrint();</script></BODY>
</HTML>
