[ http://issues.apache.org/jira/browse/XALANJ-997?page=comments#action_62001 ] Brian Minchau commented on XALANJ-997: --------------------------------------
Peter, I know that this issue is very old. Joe K. tried to reproduce it with the given information and couldn't. If this is still an issue please let us know, and please provide some attachements (rather than cut/paste). If there is no response within a month I will assume that this is no longer an issue and close it down as "Cannot Reproduce". Regards, - Brian Minchau > java.lang.OutOfMemoryError when processing large CALS tables - memory leak? > --------------------------------------------------------------------------- > > Key: XALANJ-997 > URL: http://issues.apache.org/jira/browse/XALANJ-997 > Project: XalanJ2 > Type: Bug > Components: transformation, Xalan-interpretive > Versions: 2.3 > Environment: Operating System: Windows 9x > Platform: PC > Reporter: Peter > Assignee: Xalan Developers Mailing List > Priority: Critical > > Our application is an SGML to HTML rendering tool. We validate the SGML, > convert to XML and transform to XML using XSLT. > A significant portion of the data is CALS tables and we have borrowed from > Norm > Walsh's DocBook code to perform these conversions. > When processing large tables, Xalan crashes with a java.lang.OutOfMemoryError > and no further information. > When I isolated which tables were causing the crash, I processed them > individually. By removing some rows and entries I finally got the table to > render but as soon as I add one entry back in, the crash will reoccur. > This data is rendered successfully and properly using other XSLT processors > such as Saxon. In a comparison (admittedly not complete) of Saxon and Xalan, > both seemed to be returning exactly the same values and iterating the same > number of times right up to the point where Xalan crashed. > Our client is already using Xalan for other purposes and wishes to remain > consistent in their toolset but will be unable to unless this problem is > remedied. They don't seem to receptive to the 'If tables crash it, don't use > tables!' solution. :P > Below is the xslt code for processing the tables followed by the XML to be > processed. Simply using the XML as your input with this xslt code will > reproduce our error. > Thanks > ---------------------- cals_table.xsl > <?xml version='1.0'?> > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > version='1.0'> > <xsl:param name="default.table.width" select="'80%'"/> > <!-- ************************************************* --> > <!-- ************************************************* --> > <!-- Most of the following code was borrowed from Norm Walsh --> > <xsl:template name="OUTPUT-ENTRY-ATTRIBUTES"/> > <xsl:template match="table"> > <xsl:apply-templates/> > </xsl:template> > <xsl:template match="tgroup"> > <table> > <xsl:if test="../@pgwide=1"> > <xsl:attribute name="width">100%</xsl:attribute> > </xsl:if> > <xsl:attribute name="cellpadding">6</xsl:attribute> > <xsl:choose> > <xsl:when test="../@frame='all'"> > <xsl:attribute name="border">1</xsl:attribute> > </xsl:when> > <xsl:when test="../@frame='none'"> > <xsl:attribute name="border">0</xsl:attribute> > </xsl:when> > <xsl:when test="../@frame='bottom'"> > <xsl:attribute name="border">1</xsl:attribute> > </xsl:when> > <xsl:when test="../@frame='top'"> > <xsl:attribute name="border">1</xsl:attribute> > </xsl:when> > <xsl:when test="../@frame='sides'"> > <xsl:attribute name="border">border</xsl:attribute> > </xsl:when> > <xsl:when test="../@frame='topbot'"> > <xsl:attribute name="border">1</xsl:attribute> > </xsl:when> > <xsl:otherwise> > <xsl:attribute name="border">1</xsl:attribute> > </xsl:otherwise> > </xsl:choose> > <xsl:variable name="colgroup"> > <colgroup> > <xsl:call-template name="generate.colgroup"> > <xsl:with-param name="cols" select="@cols"/> > </xsl:call-template> > </colgroup> > </xsl:variable> > <xsl:variable name="table.width"> > <xsl:choose> > <xsl:when test="$default.table.width = ''"> > <xsl:text>100%</xsl:text> > </xsl:when> > <xsl:otherwise> > <xsl:value-of select="$default.table.width"/> > </xsl:otherwise> > </xsl:choose> > </xsl:variable> > <xsl:attribute name="width"> > <xsl:value-of select="$table.width"/> > </xsl:attribute> > <xsl:copy-of select="$colgroup"/> > <xsl:apply-templates/> > </table> > <xsl:text disable-output-escaping="yes"><br/></xsl:text> > <xsl:text disable-output-escaping="yes"><br/></xsl:text> > </xsl:template> > <xsl:template match="colspec"></xsl:template> > <xsl:template match="spanspec"></xsl:template> > <xsl:template match="thead|tfoot"> > <xsl:element name="{name(.)}"> > <xsl:if test="@align"> > <xsl:attribute name="align"> > <xsl:value-of select="@align"/> > </xsl:attribute> > </xsl:if> > <xsl:if test="@char"> > <xsl:attribute name="char"> > <xsl:value-of select="@char"/> > </xsl:attribute> > </xsl:if> > <xsl:if test="@charoff"> > <xsl:attribute name="charoff"> > <xsl:value-of select="@charoff"/> > </xsl:attribute> > </xsl:if> > <xsl:if test="@valign"> > <xsl:attribute name="valign"> > <xsl:value-of select="@valign"/> > </xsl:attribute> > </xsl:if> > <xsl:apply-templates/> > </xsl:element> > </xsl:template> > <xsl:template match="tbody"> > <tbody> > <xsl:if test="@align"> > <xsl:attribute name="align"> > <xsl:value-of select="@align"/> > </xsl:attribute> > </xsl:if> > <xsl:if test="@char"> > <xsl:attribute name="char"> > <xsl:value-of select="@char"/> > </xsl:attribute> > </xsl:if> > <xsl:if test="@charoff"> > <xsl:attribute name="charoff"> > <xsl:value-of select="@charoff"/> > </xsl:attribute> > </xsl:if> > <xsl:if test="@valign"> > <xsl:attribute name="valign"> > <xsl:value-of select="@valign"/> > </xsl:attribute> > </xsl:if> > <xsl:apply-templates/> > </tbody> > </xsl:template> > <xsl:template match="row"> > <tr> > <xsl:if test="@align"> > <xsl:attribute name="align"> > <xsl:value-of select="@align"/> > </xsl:attribute> > </xsl:if> > <xsl:if test="@char"> > <xsl:attribute name="char"> > <xsl:value-of select="@char"/> > </xsl:attribute> > </xsl:if> > <xsl:if test="@charoff"> > <xsl:attribute name="charoff"> > <xsl:value-of select="@charoff"/> > </xsl:attribute> > </xsl:if> > <xsl:if test="@valign"> > <xsl:attribute name="valign"> > <xsl:value-of select="@valign"/> > </xsl:attribute> > </xsl:if> > <xsl:apply-templates/> > </tr> > </xsl:template> > <xsl:template match="thead/row/entry"> > <xsl:call-template name="process.cell"> > <xsl:with-param name="cellgi">th</xsl:with-param> > </xsl:call-template> > </xsl:template> > <xsl:template match="tbody/row/entry"> > <xsl:call-template name="process.cell"> > <xsl:with-param name="cellgi">td</xsl:with-param> > </xsl:call-template> > </xsl:template> > <xsl:template match="tfoot/row/entry"> > <xsl:call-template name="process.cell"> > <xsl:with-param name="cellgi">th</xsl:with-param> > </xsl:call-template> > </xsl:template> > <xsl:template name="process.cell"> > <xsl:param name="cellgi">td</xsl:param> > <xsl:variable name="empty.cell" select="count(node()) = 0"/> > <xsl:variable name="entry.colnum"> > <xsl:call-template name="entry.colnum"/> > </xsl:variable> > <xsl:if test="$entry.colnum != ''"> > <xsl:variable name="prev.entry" select="preceding-sibling::*[1]"/> > <xsl:variable name="prev.ending.colnum"> > <xsl:choose> > <xsl:when test="$prev.entry"> > <xsl:call-template name="entry.ending.colnum"> > <xsl:with-param name="entry" select="$prev.entry"/> > </xsl:call-template> > </xsl:when> > <xsl:otherwise>0</xsl:otherwise> > </xsl:choose> > </xsl:variable> > > <xsl:call-template name="add-empty-entries"> > <xsl:with-param name="number"> > <xsl:choose> > <xsl:when test="$prev.ending.colnum = ''">0</xsl:when> > <xsl:otherwise> > <xsl:value-of select="$entry.colnum - $prev.ending.colnum - 1"/> > </xsl:otherwise> > </xsl:choose> > </xsl:with-param> > </xsl:call-template> > </xsl:if> > <xsl:element name="{$cellgi}"> > <xsl:if test="@spanname"> > <xsl:variable name="namest" > select="ancestor::tgroup/[EMAIL PROTECTED]/@spanname]/@namest"/> > <xsl:variable name="nameend" > select="ancestor::tgroup/[EMAIL PROTECTED]/@spanname]/@nameend"/> > <xsl:variable name="colst" > select="ancestor::*[colspec/@colname=$namest]/colspec > [EMAIL PROTECTED]/@colnum"/> > <xsl:variable name="colend" > select="ancestor::*[colspec/@colname=$nameend]/colspec > [EMAIL PROTECTED]/@colnum"/> > <xsl:attribute name="colspan"><xsl:value-of select="number($colend) - > number($colst) + 1"/></xsl:attribute> > </xsl:if> > <xsl:if test="@morerows"> > <xsl:attribute name="rowspan"> > <xsl:value-of select="@morerows+1"/> > </xsl:attribute> > </xsl:if> > <xsl:if test="@namest"> > <xsl:attribute name="colspan"> > <xsl:call-template name="calculate.colspan"/> > </xsl:attribute> > </xsl:if> > <xsl:if test="@align"> > <xsl:attribute name="align"> > <xsl:value-of select="@align"/> > </xsl:attribute> > </xsl:if> > <xsl:if test="@char"> > <xsl:attribute name="char"> > <xsl:value-of select="@char"/> > </xsl:attribute> > </xsl:if> > <xsl:if test="@charoff"> > <xsl:attribute name="charoff"> > <xsl:value-of select="@charoff"/> > </xsl:attribute> > </xsl:if> > <xsl:if test="@valign"> > <xsl:attribute name="valign"> > <xsl:value-of select="@valign"/> > </xsl:attribute> > </xsl:if> > <xsl:if test="@rowsep='1'"> > <xsl:attribute name="style">border-bottom:thin solid > black</xsl:attribute> > </xsl:if> > <xsl:if test="not(preceding-sibling::*) > and ancestor::row/@id"> > <a name="{ancestor::row/@id}"/> > </xsl:if> > <xsl:if test="@id"> > <a name="[EMAIL PROTECTED]"/> > </xsl:if> > <xsl:choose> > <xsl:when test="$empty.cell"> > <xsl:text> </xsl:text> > </xsl:when> > <xsl:otherwise> > <xsl:apply-templates/> > </xsl:otherwise> > </xsl:choose> > </xsl:element> > </xsl:template> > <xsl:template name="add-empty-entries"> > <xsl:param name="number" select="'0'"/> > <xsl:choose> > <xsl:when test="$number <= 0"></xsl:when> > <xsl:otherwise> > <td> </td> > <xsl:call-template name="add-empty-entries"> > <xsl:with-param name="number" select="$number - 1"/> > </xsl:call-template> > </xsl:otherwise> > </xsl:choose> > </xsl:template> > <xsl:template name="entry.colnum"> > <xsl:param name="entry" select="."/> > <xsl:choose> > <xsl:when test="$entry/@colname"> > <xsl:variable name="colname" select="$entry/@colname"/> > <xsl:variable name="colspec" > select="$entry/ancestor::tgroup/[EMAIL PROTECTED]"/> > <xsl:call-template name="colspec.colnum"> > <xsl:with-param name="colspec" select="$colspec"/> > </xsl:call-template> > </xsl:when> > <xsl:when test="$entry/@namest"> > <xsl:variable name="namest" select="$entry/@namest"/> > <xsl:variable name="colspec" > select="$entry/ancestor::tgroup/[EMAIL PROTECTED]"/> > <xsl:call-template name="colspec.colnum"> > <xsl:with-param name="colspec" select="$colspec"/> > </xsl:call-template> > </xsl:when> > <xsl:when test="count($entry/preceding-sibling::*) = 0">1</xsl:when> > <xsl:otherwise> > <xsl:variable name="pcol"> > <xsl:call-template name="entry.ending.colnum"> > <xsl:with-param name="entry" > select="$entry/preceding-sibling::*[1]"/> > </xsl:call-template> > </xsl:variable> > <xsl:value-of select="$pcol + 1"/> > </xsl:otherwise> > </xsl:choose> > </xsl:template> > <xsl:template name="entry.ending.colnum"> > <xsl:param name="entry" select="."/> > <xsl:choose> > <xsl:when test="$entry/@colname"> > <xsl:variable name="colname" select="$entry/@colname"/> > <xsl:variable name="colspec" select="$entry/ancestor::tgroup/colspec > [EMAIL PROTECTED]"/> > <xsl:call-template name="colspec.colnum"> > <xsl:with-param name="colspec" select="$colspec"/> > </xsl:call-template> > </xsl:when> > > <xsl:when test="$entry/@nameend"> > <xsl:variable name="nameend" select="$entry/@nameend"/> > <xsl:variable name="colspec" select="$entry/ancestor::tgroup/colspec > [EMAIL PROTECTED]"/> > <xsl:call-template name="colspec.colnum"> > <xsl:with-param name="colspec" select="$colspec"/> > </xsl:call-template> > </xsl:when> > <xsl:when test="count($entry/preceding-sibling::*) = 0">1</xsl:when> > > <xsl:otherwise> > <xsl:variable name="pcol"> > <xsl:call-template name="entry.ending.colnum"> > <xsl:with-param name="entry" > select="$entry/preceding-sibling::*[1]"/> > </xsl:call-template> > </xsl:variable> > <xsl:value-of select="$pcol + 1"/> > </xsl:otherwise> > </xsl:choose> > </xsl:template> > <xsl:template name="colspec.colnum"> > <xsl:param name="colspec" select="."/> > <xsl:choose> > <xsl:when test="$colspec/@colnum"> > <xsl:value-of select="$colspec/@colnum"/> > </xsl:when> > <xsl:when test="$colspec/preceding-sibling::colspec"> > <!-- > <xsl:variable name="prec.colspec.colnum"> > <xsl:call-template name="colspec.colnum"> > <xsl:with-param name="colspec" select="$colspec/preceding- > sibling::colspec[1]"/> > </xsl:call-template> > </xsl:variable> > --> > > <xsl:value-of select="count($colspec/preceding-sibling::colspec) + 1"/> > </xsl:when> > <xsl:otherwise>1</xsl:otherwise> > </xsl:choose> > </xsl:template> > <xsl:template name="generate.colgroup"> > <xsl:param name="cols" select="1"/> > <xsl:param name="count" select="1"/> > <xsl:choose> > <xsl:when test="$count>$cols"></xsl:when> > <xsl:otherwise> > <xsl:call-template name="generate.col"> > <xsl:with-param name="countcol" select="$count"/> > </xsl:call-template> > <xsl:call-template name="generate.colgroup"> > <xsl:with-param name="cols" select="$cols"/> > <xsl:with-param name="count" select="$count+1"/> > </xsl:call-template> > </xsl:otherwise> > </xsl:choose> > </xsl:template> > <xsl:template name="generate.col"> > <xsl:param name="countcol">1</xsl:param> > <xsl:param name="colspecs" select="./colspec"/> > <xsl:param name="count">1</xsl:param> > <xsl:param name="colnum">1</xsl:param> > <xsl:choose> > <xsl:when test="$count>count($colspecs)"> > <xsl:text disable-output-escaping="yes"><col/></xsl:text> > </xsl:when> > <xsl:otherwise> > <xsl:variable name="colspec" select="$colspecs[$count=position()]"/> > <xsl:variable name="colspec.colnum"> > <xsl:choose> > <xsl:when test="$colspec/@colnum"> > <xsl:value-of select="$colspec/@colnum"/> > </xsl:when> > <xsl:otherwise> > <xsl:value-of select="$colnum"/> > </xsl:otherwise> > </xsl:choose> > </xsl:variable> > <xsl:choose> > <xsl:when test="$colspec.colnum=$countcol"> > <col> > <xsl:if test="$colspec/@align"> > <xsl:attribute name="align"> > <xsl:value-of select="$colspec/@align"/> > </xsl:attribute> > </xsl:if> > <xsl:if test="$colspec/@char"> > <xsl:attribute name="char"> > <xsl:value-of select="$colspec/@char"/> > </xsl:attribute> > </xsl:if> > <xsl:if test="$colspec/@charoff"> > <xsl:attribute name="charoff"> > <xsl:value-of select="$colspec/@charoff"/> > </xsl:attribute> > </xsl:if> > </col> > </xsl:when> > <xsl:otherwise> > <xsl:call-template name="generate.col"> > <xsl:with-param name="countcol" select="$countcol"/> > <xsl:with-param name="colspecs" select="$colspecs"/> > <xsl:with-param name="count" select="$count+1"/> > <xsl:with-param name="colnum"> > <xsl:choose> > <xsl:when test="$colspec/@colnum"> > <xsl:value-of select="$colspec/@colnum + 1"/> > </xsl:when> > <xsl:otherwise> > <xsl:value-of select="$colnum + 1"/> > </xsl:otherwise> > </xsl:choose> > </xsl:with-param> > </xsl:call-template> > </xsl:otherwise> > </xsl:choose> > </xsl:otherwise> > </xsl:choose> > </xsl:template> > <xsl:template name="colspec.colwidth"> > <!-- when this macro is called, the current context must be an entry --> > <xsl:param name="colname"></xsl:param> > <!-- .. = row, ../.. = thead|tbody, ../../.. = tgroup --> > <xsl:param name="colspecs" select="../../../../tgroup/colspec"/> > <xsl:param name="count">1</xsl:param> > <xsl:choose> > <xsl:when test="$count>count($colspecs)"></xsl:when> > <xsl:otherwise> > <xsl:variable name="colspec" select="$colspecs[$count=position()]"/> > <xsl:choose> > <xsl:when test="$colspec/@colname=$colname"> > <xsl:value-of select="$colspec/@colwidth"/> > </xsl:when> > <xsl:otherwise> > <xsl:call-template name="colspec.colwidth"> > <xsl:with-param name="colname" select="$colname"/> > <xsl:with-param name="colspecs" select="$colspecs"/> > <xsl:with-param name="count" select="$count+1"/> > </xsl:call-template> > </xsl:otherwise> > </xsl:choose> > </xsl:otherwise> > </xsl:choose> > </xsl:template> > <xsl:template name="calculate.colspan"> > <xsl:param name="entry" select="."/> > <xsl:variable name="namest" select="$entry/@namest"/> > <xsl:variable name="nameend" select="$entry/@nameend"/> > <xsl:variable name="scol"> > <xsl:call-template name="colspec.colnum"> > <xsl:with-param name="colspec" select="$entry/ancestor::tgroup/colspec > [EMAIL PROTECTED]"/> > </xsl:call-template> > </xsl:variable> > <xsl:variable name="ecol"> > <xsl:call-template name="colspec.colnum"> > <xsl:with-param name="colspec" select="$entry/ancestor::tgroup/colspec > [EMAIL PROTECTED]"/> > </xsl:call-template> > </xsl:variable> > <xsl:value-of select="$ecol - $scol + 1"/> > </xsl:template> > </xsl:stylesheet> > ----------------------- table1.xml > <?xml version="1.0"?> > <!DOCTYPE erf[ > ]> > <table > frame="none" > tabstyle="squeeze5" > ><tgroup > cols="19" > rowsep="0" > align="left" > colsep="0" > ><colspec > colname="1" > colwidth="50pt" > align="left" > ></colspec><colspec > colname="2" > colwidth="50pt" > align="left" > ></colspec><colspec > colname="3" > colwidth="50pt" > align="left" > ></colspec><colspec > colname="4" > colwidth="50pt" > align="left" > ></colspec><colspec > colname="5" > colwidth="50pt" > align="left" > ></colspec><colspec > colname="6" > colwidth="50pt" > align="left" > ></colspec><colspec > colname="7" > colwidth="50pt" > align="left" > ></colspec><colspec > colname="8" > colwidth="50pt" > align="left" > ></colspec><colspec > colname="9" > colwidth="50pt" > align="left" > ></colspec><colspec > colname="10" > colwidth="50pt" > align="left" > ></colspec><colspec > colname="11" > colwidth="50pt" > align="left" > ></colspec><colspec > colname="12" > colwidth="50pt" > align="left" > ></colspec><colspec > colname="13" > colwidth="50pt" > align="left" > ></colspec><colspec > colname="14" > colwidth="50pt" > align="left" > ></colspec><colspec > colname="15" > colwidth="50pt" > align="left" > ></colspec><colspec > colname="16" > colwidth="50pt" > align="left" > ></colspec><colspec > colname="17" > colwidth="50pt" > align="left" > ></colspec><colspec > colname="18" > colwidth="50pt" > align="left" > ></colspec><colspec > colname="19" > colwidth="79pt" > align="left" > ></colspec><tbody > valign="top" > ><row > ><entry > align="right" > ></entry><entry > align="right" > >1989</entry><entry > align="right" > >1990</entry><entry > align="right" > >1991</entry><entry > align="right" > >1992</entry><entry > align="right" > >1993</entry><entry > align="right" > >1994</entry><entry > align="right" > >1995</entry><entry > align="right" > >1996</entry><entry > align="right" > >1997</entry><entry > align="right" > >1998</entry><entry > align="right" > >1999</entry><entry > align="right" > >2000</entry><entry > align="right" > >2001</entry><entry > align="right" > >2002</entry><entry > align="right" > >2003</entry><entry > align="right" > >2004</entry><entry > align="right" > >2005</entry><entry > align="right" > >Total</entry></row><row > ><entry > align="justify" > >January</entry><entry > align="right" > >532</entry><entry > align="right" > >35345</entry><entry > align="right" > >3454</entry><entry > align="right" > >6436</entry><entry > align="right" > >153</entry><entry > align="right" > >63474</entry><entry > align="right" > >23423</entry><entry > align="right" > >84564</entry><entry > align="right" > >3543</entry><entry > align="right" > >3573</entry><entry > align="right" > >534</entry><entry > align="right" > >886</entry><entry > align="right" > >453</entry><entry > align="right" > >899567</entry><entry > align="right" > >6442</entry><entry > align="right" > >6442</entry><entry > align="right" > >234</entry><entry > align="right" > >1139055</entry></row><row > ><entry > align="justify" > >February</entry><entry > align="right" > >54245</entry><entry > align="right" > >3453</entry><entry > align="right" > >345</entry><entry > align="right" > >670</entry><entry > align="right" > >14452</entry><entry > align="right" > >57</entry><entry > align="right" > >2432</entry><entry > align="right" > >234</entry><entry > align="right" > >357</entry><entry > align="right" > >3543</entry><entry > align="right" > >625</entry><entry > align="right" > >864</entry><entry > align="right" > >2432</entry><entry > align="right" > >234</entry><entry > align="right" > >234634</entry><entry > align="right" > >234634</entry><entry > align="right" > >4564</entry><entry > align="right" > >557775</entry></row><row > ><entry > align="justify" > >March</entry><entry > align="right" > >45224</entry><entry > align="right" > >453</entry><entry > align="right" > >34543</entry><entry > align="right" > >470</entry><entry > align="right" > >15232</entry><entry > align="right" > >575</entry><entry > align="right" > >2432</entry><entry > align="right" > >4564</entry><entry > align="right" > >453</entry><entry > align="right" > >357</entry><entry > align="right" > >3534</entry><entry > align="right" > >3543</entry><entry > align="right" > >2465</entry><entry > align="right" > >4564</entry><entry > align="right" > >1234</entry><entry > align="right" > >1234</entry><entry > align="right" > >453</entry><entry > align="right" > >121330</entry></row><row > ><entry > align="justify" > >April</entry><entry > align="right" > >245</entry><entry > align="right" > >770</entry><entry > align="right" > >7652</entry><entry > align="right" > >886</entry><entry > align="right" > >1400</entry><entry > align="right" > >7565</entry><entry > align="right" > >2432</entry><entry > align="right" > >435</entry><entry > align="right" > >2432</entry><entry > align="right" > >453</entry><entry > align="right" > >3543</entry><entry > align="right" > >357</entry><entry > align="right" > >243</entry><entry > align="right" > >453</entry><entry > align="right" > >1452</entry><entry > align="right" > >1452</entry><entry > align="right" > >2432</entry><entry > align="right" > >34202</entry></row><row > ><entry > align="justify" > >May</entry><entry > align="right" > >534</entry><entry > align="right" > >64564</entry><entry > align="right" > >175</entry><entry > align="right" > >864</entry><entry > align="right" > >1234</entry><entry > align="right" > >5645</entry><entry > align="right" > >2465</entry><entry > align="right" > >6442</entry><entry > align="right" > >2465</entry><entry > align="right" > >2432</entry><entry > align="right" > >357</entry><entry > align="right" > >99567</entry><entry > align="right" > >84564</entry><entry > align="right" > >2432</entry><entry > align="right" > >234</entry><entry > align="right" > >234</entry><entry > align="right" > >2465</entry><entry > align="right" > >276673</entry></row><row > ><entry > align="justify" > >June</entry><entry > align="right" > >5498</entry><entry > align="right" > >987</entry><entry > align="right" > >1457</entry><entry > align="right" > >3543</entry><entry > align="right" > >1452</entry><entry > align="right" > >576</entry><entry > align="right" > >243</entry><entry > align="right" > >234634</entry><entry > align="right" > >243</entry><entry > align="right" > >2465</entry><entry > align="right" > >453</entry><entry > align="right" > >3543</entry><entry > align="right" > >34635</entry><entry > align="right" > >2465</entry><entry > align="right" > >4564</entry><entry > align="right" > >4564</entry><entry > align="right" > >243</entry><entry > align="right" > >301565</entry></row><row > ><entry > align="justify" > >July</entry><entry > align="right" > >885</entry><entry > align="right" > >453</entry><entry > align="right" > >6473</entry><entry > align="right" > >357</entry><entry > align="right" > >232</entry><entry > align="right" > >3456</entry><entry > align="right" > >84564</entry><entry > align="right" > >1234</entry><entry > align="right" > >84564</entry><entry > align="right" > >243</entry><entry > align="right" > >3535</entry><entry > align="right" > >357</entry><entry > align="right" > >6442</entry><entry > align="right" > >243</entry><entry > align="right" > >453</entry><entry > align="right" > >234</entry><entry > align="right" > >84564</entry><entry > align="right" > >278289</entry></row><row > ><entry > align="justify" > >August</entry><entry > align="right" > >4543</entry><entry > align="right" > >6546</entry><entry > align="right" > >273</entry><entry > align="right" > >453</entry><entry > align="right" > >3535</entry><entry > align="right" > >5399</entry><entry > align="right" > >234</entry><entry > align="right" > >1452</entry><entry > align="right" > >2432</entry><entry > align="right" > >84564</entry><entry > align="right" > >4564</entry><entry > align="right" > >453</entry><entry > align="right" > >234634</entry><entry > align="right" > >84564</entry><entry > align="right" > >2432</entry><entry > align="right" > >4564</entry><entry > align="right" > >34635</entry><entry > align="right" > >475277</entry></row><row > ><entry > align="justify" > >September</entry><entry > align="right" > >7454</entry><entry > align="right" > >6346</entry><entry > align="right" > >27438</entry><entry > align="right" > >34563</entry><entry > align="right" > >3532</entry><entry > align="right" > >3534</entry><entry > align="right" > >4564</entry><entry > align="right" > >232</entry><entry > align="right" > >2465</entry><entry > align="right" > >34635</entry><entry > align="right" > >3543</entry><entry > align="right" > >2432</entry><entry > align="right" > >1234</entry><entry > align="right" > >34635</entry><entry > align="right" > >2465</entry><entry > align="right" > >6442</entry><entry > align="right" > >6442</entry><entry > align="right" > >181956</entry></row><row > ><entry > align="justify" > >October</entry><entry > align="right" > >858</entry><entry > align="right" > >3453</entry><entry > align="right" > >366</entry><entry > align="right" > >345</entry><entry > align="right" > >23411</entry><entry > align="right" > >3454</entry><entry > align="right" > >435</entry><entry > align="right" > >3543</entry><entry > align="right" > >243</entry><entry > align="right" > >23446</entry><entry > align="right" > >357</entry><entry > align="right" > >2465</entry><entry > align="right" > >1452</entry><entry > align="right" > >234</entry><entry > align="right" > >243</entry><entry > align="right" > >234634</entry><entry > align="right" > >234634</entry><entry > align="right" > >533573</entry></row><row > ><entry > align="justify" > >November</entry><entry > align="right" > >9058</entry><entry > align="right" > >432</entry><entry > align="right" > >46452</entry><entry > align="right" > >367</entry><entry > align="right" > >1352</entry><entry > align="right" > >2432</entry><entry > align="right" > >6442</entry><entry > align="right" > >357</entry><entry > align="right" > >84564</entry><entry > align="right" > >776453</entry><entry > align="right" > >453</entry><entry > align="right" > >243</entry><entry > align="right" > >234</entry><entry > align="right" > >4564</entry><entry > align="right" > >84564</entry><entry > align="right" > >1234</entry><entry > align="right" > >1234</entry><entry > align="right" > >1020435</entry></row><row > ><entry > align="justify" > >December</entry><entry > align="right" > >9585</entry><entry > align="right" > >543</entry><entry > align="right" > >235</entry><entry > align="right" > >867</entry><entry > align="right" > >32444</entry><entry > align="right" > >23423</entry><entry > align="right" > >234634</entry><entry > align="right" > >453</entry><entry > align="right" > >3452</entry><entry > align="right" > >54646</entry><entry > align="right" > >353</entry><entry > align="right" > >84564</entry><entry > align="right" > >4564</entry><entry > align="right" > >99576</entry><entry > align="right" > >34635</entry><entry > align="right" > >1452</entry><entry > align="right" > >1452</entry><entry > align="right" > >586878</entry></row><row > ><entry > align="justify" > >Total</entry><entry > align="right" > >140650</entry><entry > align="right" > >125335</entry><entry > align="right" > >130854</entry><entry > align="right" > >51813</entry><entry > align="right" > >100422</entry><entry > align="right" > >121584</entry><entry > align="right" > >366295</entry><entry > align="right" > >340140</entry><entry > align="right" > >189210</entry><entry > align="right" > >988808</entry><entry > align="right" > >23850</entry><entry > align="right" > >201274</entry><entry > align="right" > >375353</entry><entry > align="right" > >1135533</entry><entry > align="right" > >375355</entry><entry > align="right" > >499124</entry><entry > align="right" > >375357</entry><entry > align="right" > >5507008</entry></row></tbody></tgroup></table> -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - If you want more information on JIRA, or have a bug to report see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
